Files
hyperframes/packages
Vance Ingalls 4f89082caa feat(lint): flag an audio group no clip joins, and timing attrs on a bus
Two silent failures groups can carry that nothing reported.

**audio_group_no_members (error).** `resolveAudioGroups` builds groups from the
MEMBERS (`audio[data-audio-group]`) and only then looks for a matching
`<hf-audio-group>`, so a bus whose id no clip names is dropped whole — its
fader, effect chain and automation never reach preview or render. One typo does
it: with `id="voiceover"` and `data-audio-group="voiceovr"`, resolveAudioGroups
returns `[{id:"voiceovr", members:["vo-1"], hasChain:false}]` — the authored bus
is gone AND a phantom group is invented at unity gain, which is what the
timeline then draws. The message names the ids clips DID use, because the fix is
almost always a typo on a member while the author is looking at the bus.

Found a real one on its first run: the audio-playground fixture declares a
`#narration` bus that no clip joins (only `sfx` is referenced), so its whole
chain has been dead. That fixture is gitignored, so nothing to fix in-tree.

**audio_group_timing_attrs (warning).** `data-start` / `data-duration` /
`data-track-index` on a bus mean nothing: the render reads a group's `fxChain`,
`automation` and `volume` only, members carry the timing, and a group's
automation clock is composition time. It is also the file-level footprint of the
phantom clip row just fixed in core (0e86e64d2) — if a drag ever persists onto
such a row, this is the shape it leaves behind.

Deliberately NOT rules, both checked:
- `data-audio-group` naming a group with no element — blessed by design ("still
  resolves, label = id, so a hand-authored composition degrades gracefully").
- `data-fx-carve` on a group — works end to end. The studio compiles it into the
  group's `data-fx-chain` and the render applies group fxChain; audio-real's
  `sfx` group carries both and behaves correctly.

audio-real, fx-test-bench and automation-test stay clean, as does the example in
skills/hyperframes-audio. lint: 14 files, 535 tests.

Note for anyone verifying by hand: `hyperframes lint` on PATH is the GLOBAL
install (~/.bun/install/global), not the worktree — it reported nothing until I
ran `bun packages/cli/src/cli.ts lint` instead.
2026-08-20 16:41:12 -07:00
..
2026-08-20 19:03:09 -04:00
2026-08-20 19:03:09 -04:00
2026-08-20 19:03:09 -04:00
2026-08-20 19:03:09 -04:00
2026-08-20 19:03:09 -04:00