docs(skills): teach /hyperframes-audio the submix bus

`<hf-audio-group>` appeared in no skill, doc or registry file. The audio
skill did cover groups, but only as membership tags to carve against — and
its example groups three clips with no group ELEMENT at all. So an agent
following the skill could never emit a group chain, fader or automation:
it was never told the element exists.

Adds "One bus for many tracks": the element, the five attributes it
carries, and when to reach for it — the same compressor wanted on four
narration clips is four chains that drift, and a compressor on the bus
hears the whole voice instead of a third of it.

Two things the skill has to say because they are the ways to get this
wrong:

- **Group automation is composition time.** A bus has no `data-start`, so
  `t: 0` in a group lane is the composition's start, not a clip's. Moving
  an envelope from a clip up onto its bus changes what its numbers mean.
- **A carve stays on the clip.** `data-fx-carve` is not a group attribute.
  The one thing the skill already said about groups was about carve, which
  invites exactly that wrong inference; the bed carries the carve, pointed
  AT a group.

Also corrects two framings that the bus makes false: the SKILL and
attributes.md both said all three attributes go "on the audio/video
element itself", when two of them also go on a bus.

No flag needed, and the skill says so: the `audio-groups` canary gates the
Studio UI for building groups, while a hand-authored bus parses, plays and
renders for everyone.

Verified rather than asserted: the documented example was run through
`resolveAudioGroups` and `parseAudioFxChain` (group resolves, volume 0.9,
both members found, compressor+peaking validate), its parameters checked
against fx-registry.md ranges, and the whole pattern linted — the only
findings were the throwaway fixture's own missing `data-start` and
timeline registration, nothing about the bus.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Vance Ingalls
2026-08-20 02:21:40 -07:00
co-authored by Claude Opus 5
parent f8b6f35171
commit 9b1cc64422
5 changed files with 74 additions and 16 deletions
@@ -2,6 +2,10 @@
All three go on the `<audio>` / `<video>` element itself, JSON-encoded, so a
composition carries its whole mix in the HTML with nothing to load beside it.
`data-fx-chain` and `data-automation` also go on an `<hf-audio-group>` bus,
where they mean the same thing over the summed members — with one difference
worth knowing: a group's automation runs on COMPOSITION time, since a bus has no
`data-start` of its own. `data-fx-carve` is clip-only; a bus has no carve.
Nothing static validates them: preview plays an unreadable chain dry to stay
workable, and the render refuses the whole mix rather than shipping a dry track
that sounds plausible and is wrong.