fix(skills): address PR #2110 review feedback

- SSOT: the three assemble-index.mjs BGM fallbacks now import
  bgmDefaultVolume() from media-use's bgm.mjs instead of duplicating the
  0.12/0.9 literals (both reviewers). The cross-skill relative import
  matches the existing dependency (each workflow's audio.mjs adapter
  already resolves ../../media-use/audio/scripts/audio.mjs).
- STATUS_ROLE_KEY: extended with info|neutral|alert|caution|critical —
  same hue-carries-meaning class as the original set (all 3 copies).
- bgm.md: phrase the default as bgmDefaultVolume()/BGM_BED_VOLUME with
  "currently 0.12" so the prose survives future tuning.
- fetch-pr.mjs: drop dead mergeCommit field from the gh pr view FIELDS
  list (version resolution uses mergedAt only).
- music-to-video assemble-index.mjs: comment documenting why its BGM
  stays at 0.8 under VO — music is the content there, not a narration
  bed, so the explainer pipelines' 0.12 default deliberately does not
  apply.

Not changed: pickAccent's chroma fallback — both call sites pass keyless
capture palettes (tokens.json hex lists), so no status-role keys exist
to filter on; the keyed preset path goes through semanticColors and the
build-frame remix, which this PR already fixed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Vance Ingalls
2026-07-09 22:12:59 -07:00
co-authored by Claude Fable 5
parent c992a136bf
commit 23c9d15b69
10 changed files with 24 additions and 20 deletions
@@ -55,6 +55,7 @@ import { parseStoryboard } from "./lib/storyboard.mjs";
import { parseFormat } from "./lib/dimensions.mjs";
import { stageAssets } from "./lib/assets.mjs";
import { parseColors, semanticColors } from "./lib/tokens.mjs";
import { bgmDefaultVolume } from "../../media-use/audio/scripts/lib/bgm.mjs";
// ---------- argv ----------
const argv = process.argv.slice(2);
@@ -388,9 +389,9 @@ if (audio.bgm?.path) {
`bgm is ${cov.dur?.toFixed?.(1) ?? "?"}s (< ${TOTAL}s) and could not be extended (${cov.reason}) — the tail will be silent; install ffmpeg`,
);
}
// An explicit volume from audio_meta always wins. Otherwise BGM under
// narration is a bed (0.12 ≈ -18 dB); a silent film sits it forward at 0.9.
const vol = audio.bgm.volume != null ? audio.bgm.volume : voiceCount > 0 ? 0.12 : 0.9;
// An explicit volume from audio_meta always wins; otherwise the shared
// media-use default (bed ~ -18 dB under narration, forward for a silent film).
const vol = audio.bgm.volume != null ? audio.bgm.volume : bgmDefaultVolume(voiceCount > 0);
body.push(
` <!-- BGM -->`,
` <audio`,