Repository navigation
docs: delete .agent-plan.md + fix AGENTS.md M3a/M8a/#74 mixer-API drift - #96
Merged
Merged
Conversation
The state tracker was last updated 2026-04-22 and claimed the active task was M8b. Since then M8b, M9a, M9b, M10a, M10b, M11, M13, M14, M15, M16 have all merged, and M17 (automated evaluation) has had its design (#73), Phase A spike (#77, #79), and a wave of bug-fix PRs (#82, #85, #86, #90) land — anyone reading this file got an 8-milestone-stale picture. Rewrote: - Current system state — list every merged V3 milestone with one-line summaries; promoted the loudness contract (#78) and effective-prosody cap (#87) to the architectural-invariants list since both are load-bearing for any agent editing TTS or preprocessing code. - Active / next task — replaced "M8b" with the M17 ASR regression thread, noted PR #90 as the partial fix and #91 (rate-floor lift R) as the queued next experiment, including the WER ≤ 0.10 + listening-test pass criterion. - Open threads table — new section listing the threads agents most often need to know about (M12 gate, M17 full automation, #62 word merging, #72 SSML parse, #88 CI ASR deferral). - Context pointers — added splendor-brief as the orientation entrypoint and the .venv-vs-~/.local PATH trap. - CI / Workflow notes — added the Tier-3 ASR local-only policy summary so PRs touching audio-rendering files don't merge without it. This file is a quick-orientation summary — added a header line marking the design-doc tracker as authoritative when details disagree, so the next drift gets caught in a tracker diff rather than a stale summary. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
Pull request overview
Updates .agent-plan.md to reflect the current Audio Generation V3 milestone status through M16 and re-orient active work around the ongoing M17 automated evaluation / ASR regression thread.
Changes:
- Refreshes milestone completion list and “headline capabilities” to match the current merged state (M1–M16, with M12 gated; M17 in flight).
- Replaces the previously-stale “Active / next task” section with the current #87/#91 rate-floor-lift thread and related follow-ups.
- Adds/updates “Open threads”, context pointers, and CI/workflow notes (including Tier-3 ASR local-only guidance).
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This comment has been minimized.
This comment has been minimized.
Self-review of commit 4361497 (the .agent-plan.md rewrite) caught that the file fundamentally fails the duplication test: milestone status duplicates docs/audio_generation_v3_design.md → Implementation Tracker; open-thread state duplicates GitHub Issues + splendor brief; pointers duplicate AGENTS.md; and the only non-duplicate section (architectural invariants) is already covered in AGENTS.md (FLOAT subtype line 72, MixedScene shift line 37, validate_audio peak line 85, full #78 loudness contract line 35, full #87 effective-prosody cap line 73). The rewrite also reproduced the "if details disagree, the tracker wins" disclaimer antipattern — the same one PR #94's review removed from docs/spec.md §3.1 just one PR ago. A docs file whose explicit charter is "I am allowed to be wrong relative to the canonical source" is structured drift bait. The original .agent-plan.md got 15 days stale; "rewrite more carefully" was the wrong response. Changes: - Delete .agent-plan.md (75-line summary that duplicated load-bearing state held authoritatively elsewhere). - Update .claude/skills/open-feature-pr.md step 2 to drop the ".agent-plan.md" fallback for milestone-ID inference; the branch name + parent issue's milestone field already cover it, and pointing at the design-doc tracker as authoritative is more durable than pointing at a manually-maintained summary. - Splendor maintenance: source forget src-9d9759e5ad... --apply. Removes the orphan source manifest, wiki summary page, and wiki index entry. Residual cross-references in 5 planning tasks and 5 wiki pages remain — splendor surfaces them but doesn't auto-clean; they'll regenerate on next ingest of those sources. Nothing added to AGENTS.md: the cross-cutting rules from .agent-plan.md are already there. The remaining "invariants" (5-tuple mixer API post-M8a, audible_* timeline use, MixMode no-audio-deps, _peak_limit vs _normalize_peak naming) are mixer-internal details that belong in module docstrings, not global agent rules — and AGENTS.md has its own M8a drift bug (line 71 still says "4-tuple") that's better fixed in a dedicated PR. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This comment has been minimized.
This comment has been minimized.
AGENTS.md "TTS" section claimed `SceneMixer.mix_sequential` took a 4-tuple `(wav_bytes, pause_s, speaker_id, rms_target_dbfs)`. The actual current API is the `Segment` dataclass in `synthbanshee/tts/mixer.py` with six named fields (`wav_bytes`, `amount_s`, `speaker_id`, `rms_target_dbfs`, `mix_mode`, `intensity`). The doc has been wrong since at least M8a (added `mix_mode`); #74's Lombard tilt then added `intensity`. Per the dataclass docstring, the named-fields move from positional tuple was deliberate so call sites and reviewers can't transpose args silently. Surfaced during PR #96 review (delete-.agent-plan.md) — the original .agent-plan.md and AGENTS.md disagreed about the segment API; turns out they were both stale, and the design-doc tracker (#74 row line 219) shows the dataclass move that neither AGENTS.md nor .agent-plan.md caught. Splendor re-ingest of AGENTS.md (and the opportunistic re-ingest of docs/spec.md that ingest --changed picked up) is intentionally NOT in this commit — it's 16 state/wiki/planning files of churn, scoped for a dedicated splendor maintenance follow-up rather than mixed into a doc fix. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Copilot's review of commit b20eaac caught a cross-reference convention break: the codebase consistently uses #65 (the issue) when referencing the Lombard high-shelf — see synthbanshee/tts/mixer.py lines 6, 80, 84, 88, 108, 183, 322, and docs/audio_generation_v3_design.md §4.2c (line 215). PR #74 is the implementation that closed the issue, but the cross-link convention is to point at the issue. One-character fix: #74 → #65 in the M3a TTS bullet. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This comment has been minimized.
This comment has been minimized.
|
pr-agent-context report: This is a refreshed snapshot of the current PR state.
This run includes unresolved review comments on PR #96 in repository https://github.com/DataHackIL/SynthBanshee
For each unresolved review comment, recommend one of: resolve as irrelevant, accept and implement
the recommended solution, open a separate issue and resolve as out-of-scope for this PR, accept and
implement a different solution, or resolve as already treated by the code.
After I reply with my decision per item, implement the accepted actions, resolve the corresponding
PR comments, and push all of these changes in a single commit.
# Copilot Comments
## COPILOT-1
Location: .agent-plan.md
URL: https://github.com/DataHackIL/SynthBanshee/pull/96#discussion_r3199242302
Status: outdated
Root author: copilot-pull-request-reviewer
Comment:
This line references an evaluation harness in `synthbanshee/eval/`, but that package does not exist in the repo right now. The Phase A work appears to live in `scripts/m17_phase_a_validation.py`, and the productionized Whisper check is in `synthbanshee/package/asr_sanity.py` (via `qa-report --asr`). Please update this pointer so new readers don’t go looking for a non-existent module.
## COPILOT-2
Location: .agent-plan.md
URL: https://github.com/DataHackIL/SynthBanshee/pull/96#discussion_r3199242348
Status: outdated
Root author: copilot-pull-request-reviewer
Comment:
`SceneMixer.mix_sequential()` is documented here as taking 5-tuples, but the current API takes `segments: list[Segment]` (see `synthbanshee/tts/mixer.py`). Please update this invariant to match the current Segment-based API so agents don’t build against the old signature.
## COPILOT-3
Location: .agent-plan.md
URL: https://github.com/DataHackIL/SynthBanshee/pull/96#discussion_r3199242368
Status: outdated
Root author: copilot-pull-request-reviewer
Comment:
This pointer is incorrect: there is no `configs/taxonomy.yaml` in the repo, and the documented source of truth is `synthbanshee/data/taxonomy.yaml` (also referenced in `AGENTS.md`). Please update the path so the context link works.
## COPILOT-4
Location: AGENTS.md
URL: https://github.com/DataHackIL/SynthBanshee/pull/96#discussion_r3200243377
Status: outdated
Root author: copilot-pull-request-reviewer
Comment:
AGENTS.md now says “#74 added `intensity` for the I4/I5 Lombard high-shelf”, but the Lombard spectral tilt is consistently tracked as #65 in both the design doc (`docs/audio_generation_v3_design.md` §4.2c) and the mixer implementation/docstrings (`synthbanshee/tts/mixer.py`). Consider updating the reference here to #65 as well, so issue/PR cross-links stay consistent across the repo.Run metadata: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two related cleanups to the same drift class:
Delete
.agent-plan.md— the file fundamentally failed the duplication test (milestone status, open issues, repo pointers, and architectural invariants are all already authoritative elsewhere). The first commit on this branch tried to fix the file by rewriting it; self-review caught that the rewrite reproduced the "if details disagree, the canonical source wins" disclaimer antipattern that PR docs(spec): #84 sync §3.1 steps 1–4 with post-M14 preprocessing #94's review just removed fromdocs/spec.md§3.1. Replaced with deletion in commitd1b733a.Fix AGENTS.md mixer-API drift — the "TTS" section claimed
SceneMixer.mix_sequentialtook a 4-tuple. The actual API is theSegmentdataclass with six named fields. AGENTS.md was at least 2 milestones (M8a, then fix(mixer): #65 Lombard spectral tilt at I4–I5 #74) stale on this rule. Surfaced during the PR docs: delete .agent-plan.md + fix AGENTS.md M3a/M8a/#74 mixer-API drift #96 review when the original.agent-plan.md(5-tuple claim) and AGENTS.md (4-tuple claim) disagreed — turns out they were both wrong; the design-doc tracker (fix(mixer): #65 Lombard spectral tilt at I4–I5 #74 row, line 219) shows the dataclass move neither caught.Why delete
.agent-plan.md(not rewrite)The file was a duplicate of state held authoritatively elsewhere:
docs/audio_generation_v3_design.md→ Implementation Trackersplendor brief --agent-contextAGENTS.mdAGENTS.md(FLOAT subtype line 72,MixedSceneleading-pad shift line 37,validate_audio()peak rule line 85, full#78loudness contract line 35, full#87effective-prosody cap line 73)The original got 15 days stale before being noticed; the rewrite would have rotted faster (more state, more surface area).
splendor brief --agent-context "<goal>"is the right orientation entrypoint per thefeedback_use_splendor_firstmemory rule established 2026-05-06; the design-doc tracker is the right milestone source; AGENTS.md is the right load-bearing-rules source.Why nothing was added to AGENTS.md beyond the M8a fix
The "additional invariants" I'd planned to fold in are mixer-internal details (
audible_*timeline label use,MixModeno-audio-deps placement,_peak_limitvs_normalize_peaknaming). These don't pass the cross-cutting-agent-rules bar — they belong in mixer/label-writer module docstrings if anywhere, not in AGENTS.md.Changes
.agent-plan.md.claude/skills/open-feature-pr.md.agent-plan.mdfallback for milestone-ID inference; point at the design-doc tracker as authoritative.state/manifests/sources/src-9d9759e5ad…jsonsplendor source forget --apply.wiki/sources/src-9d9759e5ad…mdsplendor source forget --apply.wiki/index.mdsplendor source forget --apply.AGENTS.md4-tuple (wav_bytes, pause_s, speaker_id, rms_target_dbfs)→ currentSegmentdataclass (six named fields, with the M8a + #74 history that produced it).Net diff: 2 insertions / 396 deletions.
What's NOT in this PR (and why)
splendor ingest --changedtriggered AGENTS.md and docs/spec.md re-ingest (16 state/wiki/planning files of churn). Reverted from this PR — splendor maintenance after this AGENTS.md edit is real follow-up work, but mixing it into a doc fix muddies the diff. Drift will surface on the next splendor brief and get cleaned in a dedicated maintenance pass (per the operation-delegation memory rule).Self-review trail visible in branch history
4361497— initial rewrite of.agent-plan.md(Option B-shaped attempt; deferred to canonical sources via the antipattern disclaimer).d1b733a— supersedes4361497with deletion (Option A); includes splendor source forget cleanup.b20eaac— adds the AGENTS.md M3a/M8a/fix(mixer): #65 Lombard spectral tilt at I4–I5 #74 fix surfaced during the same review.The three commits are kept (not amended) so the review trail is visible.
Test plan
pre-commit— all hooks pass.grep -rn "\.agent-plan\.md"outsidestate//wiki//planning/— only remaining reference is in.claude/settings.local.json(one-shot allowlist for an earliergh pr createcall, not structural).synthbanshee/tts/mixer.py:93-117(Segmentdataclass definition).🤖 Generated with Claude Code