Soundscape: neutral read first, human kind subset (provisional) #7

Closed
void wants to merge 1 commit from void/soundscape-human-subset into void/soundscape-audio-socket
Member

Stacked on PR #6 (head c4c00d7, base of this branch). Aligns the consumer to AquaSynth PR #4 docs/soundscape-grammar branch head 5e2eaa9. Cites heimdall-body:follow_up:ratatoskr-creature-projection-v2 (this instance cannot view it; the grammar relays it). Follow-up void-body:follow_up:chat-s998-999. PR only; not merged, not deployed; nothing was heard.

Change (src/app/features/soundscape/)

  • readFrame reads neutral first. A neutral frame yields no kind and no energy (even if the producer sent them), so nothing is drawn or sounded and it is never an Idle. ActivityFrame is now NeutralFrame | LiveFrame; the type no longer has a kind to read on a neutral frame.
  • Non-neutral human: kind outside {Idle, Working, Speaking}, or omitted, becomes Idle; energy Peak becomes High. Minds and personas keep all seven kinds and Peak; an omitted kind is malformed for them.
  • The human subset is provisional (HUMAN_KINDS) until Bifrost's steward cuts the list; grammar section 7 item 1 (reconcile with projection-v2) is still open.

Tests (+9, vitest 81/81)

Reading/Thinking/Waiting/Alert clamp to Idle for humans; neutral frames carry no kind/energy for every estate; neutral human with kind omitted yields no kind and is not drawn or sounded; Peak->High (existing); omitted->Idle only when not neutral; minds/personas keep all seven. eslint and prettier clean on the folder; tsc shows no soundscape errors (repo-wide tsc already fails on main in matrix-js-sdk). Run from a $TMPDIR copy because the workspace parent package.json is /dev/null.

Grammar items that map to no type here

  • Niche table (V1, V2, V4), density ceilings (S3), pan, pulse slots: no type; asset/voice identity is the sink's job.
  • "Never the lead" (V3): no rule says how a lead is chosen; not implemented.
  • at (1 s time bucket) and seq (u32) taken as whole-second number and integer; no u32 bound enforced.
  • Human kind of an unknown string (not one of the seven) is treated as out-of-subset and clamped to Idle rather than rejected (reveals less).
  • Size bucket names S/M/L here vs Small/Medium/Large in the grammar: a spelling mismatch to reconcile with the producer.
  • Weak-phone thresholds are my placeholders.

Not heard / not verified

No audio exists or was produced. No phone measured (voice cap, weak-device thresholds). No frame feed exists (ratatoskr:question:activity-feed-source). Grammar section 7 items 1-5 open.

Stacked on PR #6 (head c4c00d7, base of this branch). Aligns the consumer to AquaSynth PR #4 `docs/soundscape-grammar` **branch head 5e2eaa9**. Cites `heimdall-body:follow_up:ratatoskr-creature-projection-v2` (this instance cannot `view` it; the grammar relays it). Follow-up `void-body:follow_up:chat-s998-999`. **PR only; not merged, not deployed; nothing was heard.** ## Change (`src/app/features/soundscape/`) - `readFrame` reads `neutral` first. A neutral frame yields **no kind and no energy** (even if the producer sent them), so nothing is drawn or sounded and it is never an Idle. `ActivityFrame` is now `NeutralFrame | LiveFrame`; the type no longer has a kind to read on a neutral frame. - Non-neutral human: kind outside {Idle, Working, Speaking}, or omitted, becomes Idle; energy Peak becomes High. Minds and personas keep all seven kinds and Peak; an omitted kind is malformed for them. - **The human subset is provisional** (`HUMAN_KINDS`) until Bifrost's steward cuts the list; grammar section 7 item 1 (reconcile with projection-v2) is still open. ## Tests (+9, vitest 81/81) Reading/Thinking/Waiting/Alert clamp to Idle for humans; neutral frames carry no kind/energy for every estate; neutral human with kind omitted yields no kind and is not drawn or sounded; Peak->High (existing); omitted->Idle only when not neutral; minds/personas keep all seven. eslint and prettier clean on the folder; `tsc` shows no soundscape errors (repo-wide tsc already fails on main in matrix-js-sdk). Run from a `$TMPDIR` copy because the workspace parent `package.json` is `/dev/null`. ## Grammar items that map to no type here - Niche table (V1, V2, V4), density ceilings (S3), pan, pulse slots: no type; asset/voice identity is the sink's job. - "Never the lead" (V3): no rule says how a lead is chosen; not implemented. - `at` (1 s time bucket) and `seq` (u32) taken as whole-second number and integer; no u32 bound enforced. - Human `kind` of an unknown string (not one of the seven) is treated as out-of-subset and clamped to Idle rather than rejected (reveals less). - Size bucket names `S/M/L` here vs `Small/Medium/Large` in the grammar: a spelling mismatch to reconcile with the producer. - Weak-phone thresholds are my placeholders. ## Not heard / not verified No audio exists or was produced. No phone measured (voice cap, weak-device thresholds). No frame feed exists (`ratatoskr:question:activity-feed-source`). Grammar section 7 items 1-5 open.
soundscape: neutral read first; human kind subset (provisional) per grammar 5e2eaa9
Some checks failed
CLA Assistant / CLAssistant (pull_request_target) Has been cancelled
Check PR title / lint (pull_request_target) Has been cancelled
Build pull request / Build pull request (pull_request) Has been cancelled
cc99a3439d
A neutral frame yields no kind and no energy: nothing drawn, nothing sounded, never an
Idle. For a non-neutral human, a kind outside {Idle, Working, Speaking} or omitted becomes
Idle and Peak reads as High. Minds and personas keep all seven kinds. The subset is
provisional until Bifrost's steward cuts the list.
Cites heimdall-body:follow_up:ratatoskr-creature-projection-v2.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Author
Member

Landed by direct merge into ratatoskr/estate-navigator (5e79a185), PR #6 then #7, plus neutral-drops-size. Flag off, muted, no deploy. Closing.

Landed by direct merge into ratatoskr/estate-navigator (5e79a185), PR #6 then #7, plus neutral-drops-size. Flag off, muted, no deploy. Closing.
void closed this pull request 2026-11-02 18:29:44 +00:00
Some checks failed
CLA Assistant / CLAssistant (pull_request_target) Has been cancelled
Check PR title / lint (pull_request_target) Has been cancelled
Build pull request / Build pull request (pull_request) Has been cancelled

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
GameCult/Ratatoskr!7
No description provided.