Skip to content

lampOS: Music sway, a core skill held out of the product, sways the head once when music has played 20 s (#1669) - #1927

Merged
deehw merged 1 commit into
first/voice-cascade-geminifrom
sixth/music-sway
Oct 19, 2026
Merged

deehw merged 1 commit into
first/voice-cascade-geminifrom
sixth/music-sway

Conversation

@leo-super-dev

@leo-super-dev leo-super-dev commented Oct 19, 2026 •

Copy link
Copy Markdown
Collaborator

Part (c) of #1669's joys plan, into #1712, on its head now that #1920 (dotted trigger fields) is in. Its bar waits for scores on a lamp (#1923, tools/joys-scores.sh music).

The owner asked (19 Oct, #1669): "a small sway while music plays ... rare and small, and never while the lamp is speaking or someone is talking to it."

skills/music-sway: a kind = "core" skill, held out of the product (install::NOT_PRODUCT_SKILLS) until its scores are measured in an empty room and a busy one.

  • Trigger: ears/classes scores.music above 0.6 (provisional) for 20 s, with a 5 s gap allowed.
  • Rearm: only after 5 minutes under 0.3, so it sways once a piece of music.
  • Cooldown: 30 minutes. While voice/state is resting only. Quiet 23:00 to 06:00. It asks the Policy (nudge).
  • The move is its own moves/sway.json, checked by the body: head roll ±35 counts with the base following ±10, twice, over 6 s. It is small, slow and wordless, and it never speaks or lights.

Cases (lamp-skills test skills/music-sway): 5 pass.

  • sways once after 20 s of music
  • a quiet bar does not end it
  • not for a 10 s clip
  • never while the lamp speaks
  • never at night

creature.md's Music row and sound-events.md say it is built and off.

Gates (RUSTC_WRAPPER=, CARGO_INCREMENTAL=0):

  • fmt --check
  • strict clippy -p lamp-skills -p lamp-update --all-targets -D warnings
  • test -p lamp-skills -p lamp-update: 260 passed, 1 ignored. The core list test now names it. package::an_install_waits_while_another_run_holds_the_skills_folder timed out once under load and passes alone.
  • build --workspace

Not done: how the sway looks on a lamp, and the threshold, which needs measured scores.

@leo-super-dev

Copy link
Copy Markdown
Collaborator Author

Sixth: rebased onto #1712's head now that #1920 and #1929 are in, one commit at cdf69f029. The only conflict was NOT_PRODUCT_SKILLS, where Laugh glance and Music sway are now both held out.

@deehw

deehw commented Oct 19, 2026

Copy link
Copy Markdown
Collaborator

Reviewer, 05:16, head cdf69f029 (the same patch as 07881bd3c, which a second pass of mine read): no P1 or P2, three P3s, and sorry it waited. It moves the body, so it's the first builder's to merge into #1712.

On your choice (no own_voice skip): fine under rule 8. A lamp laughing at its own laugh clip reads as a machine. Swaying once to a song in the room is what a person who put the record on does. And the mechanical cases are already blocked: its own speech fails the voice/state resting check, its own sounds are short, and nothing on #1712 plays long music. Worth a second look only if a skill that plays music comes.

P3s:

  1. No hand guard. Watch you leave has [[while]] body/hand pushed == false; Music sway doesn't, so a sway can start while someone is adjusting the head. The same [[while]] closes it.
  2. creature.md's Music row says "a slight sway in time while it plays". moves/sway.json is a fixed swing, about 4 s a cycle and 6 s in all, played once: "once, a slight sway" is what it does.
  3. The body still says "draft until there are scores" and "stacked on lampOS: a skill's trigger field steps into an object with a dot (scores.music, #1669) #1920"; both are past.

Checked and fine:

  • Held out of the product (NOT_PRODUCT_SKILLS), and it does nothing without LAMP_EARS_CLASSES=on.
  • Rule 8: once per piece (20 s over 0.6, rearmed only after 5 min under 0.3), at most twice an hour, only while the voice rests, never 23:00–06:00, and it asks the Policy. It never speaks or lights.
  • Within the body's bounds: head roll ±35 (limit 200) at about 40/s (limit 1,300), base yaw ±10 (limit 150) at about 12/s (limit 1,000), 6 s, starting and ending at zero.
  • It reads only ears/classes scores and voice/state, and changes no runtime code.
  • Gate: fmt and clippy (-p lamp-skills -p lamp-update --all-targets -D warnings) ok; 262 passed, 0 failed, over the whole log. lamp-skills test skills/music-sway 5/5. The for = "20s" → "5s" and no-voice/state mutations are both caught.

@deehw

deehw commented Oct 19, 2026

Copy link
Copy Markdown
Collaborator

First builder, 05:18, for Sixth (the reviewer's 05:16): P3 1 before I merge. The [[while]] body/hand pushed == false that Watch you leave has, so a sway never starts while someone is adjusting the head. Add a case for it, failing without the line. P3 2 (creature.md: "once, a slight sway") and P3 3 (the body's stale notes) in the same commit. Then I merge it into #1712 on green. It stays held out of the product and does nothing without LAMP_EARS_CLASSES, which waits for the owner's word.

@leo-super-dev

Copy link
Copy Markdown
Collaborator Author

Sixth: the three P3s are in at 16bfc57dc, still one commit.

  1. Hand guard: [[while]] body/hand pushed == false (with unknown = "holds", as in Watch you leave), and body/hand is added to its topics. New case never-with-a-hand-on-it: five minutes of music with a hand on the lamp from 5 s gives nothing. With the line removed, the case fails (made 1 calls, 0 expected: … sway).
  2. creature.md's Music row now reads "Once, a slight sway when music has played a while". SKILL.md says it never sways with a hand on it.
  3. The body's stale notes are replaced: it's on lampOS: the second voice route asks DeepSeek, OpenRouter or Gemini directly, searches with DeepSeek or Exa, speaks with Gemini, records each request's times and is timed by probe-cascade, each off unless set (#1686's P3s) #1712's head, and its bar waits for scores on a lamp.

Music sway's cases pass 6/6. lamp-skills and lamp-update tests: the only failure is the known load-only package::an_install_waits_while_another_run_holds_the_skills_folder, which passes alone.

…ead a little once when music has played 20 s (#1669)
@leo-super-dev

Copy link
Copy Markdown
Collaborator Author

Sixth: rebased onto #1712's head with #2056 in, now 7a0a2057a with no conflicts, for its fresh ARM64 run. The cases pass 6/6.

@deehw
deehw merged commit 3c417e4 into first/voice-cascade-gemini Oct 19, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

builder:sixth Tasks for the sixth lampOS builder

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants