Skip to content

docs: delete .agent-plan.md + fix AGENTS.md M3a/M8a/#74 mixer-API drift - #96

Merged
shaypal5 merged 4 commits into
mainfrom
docs/agent-plan-sync
May 7, 2026
Merged

shaypal5 merged 4 commits into
mainfrom
docs/agent-plan-sync

Conversation

@shaypal5

@shaypal5 shaypal5 commented May 7, 2026 •

Copy link
Copy Markdown
Member

Summary

Two related cleanups to the same drift class:

  1. 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 from docs/spec.md §3.1. Replaced with deletion in commit d1b733a.

  2. Fix AGENTS.md mixer-API drift — the "TTS" section claimed SceneMixer.mix_sequential took a 4-tuple. The actual API is the Segment dataclass 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:

Section Already in
Milestone status docs/audio_generation_v3_design.md → Implementation Tracker
Open issues / threads GitHub Issues; splendor brief --agent-context
Repo orientation pointers AGENTS.md
Architectural invariants AGENTS.md (FLOAT subtype line 72, MixedScene leading-pad shift line 37, validate_audio() peak rule line 85, full #78 loudness contract line 35, full #87 effective-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 the feedback_use_splendor_first memory 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, MixMode no-audio-deps placement, _peak_limit vs _normalize_peak naming). 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

File Change
.agent-plan.md Deleted (75 lines). Duplicated authoritative state held elsewhere.
.claude/skills/open-feature-pr.md Step 2 updated: drop the .agent-plan.md fallback for milestone-ID inference; point at the design-doc tracker as authoritative.
state/manifests/sources/src-9d9759e5ad…json Deleted by splendor source forget --apply.
wiki/sources/src-9d9759e5ad…md Deleted by splendor source forget --apply.
wiki/index.md One-line entry for the deleted source removed by splendor source forget --apply.
AGENTS.md "TTS" M3a bullet updated: 4-tuple (wav_bytes, pause_s, speaker_id, rms_target_dbfs) → current Segment dataclass (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 --changed triggered 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 — supersedes 4361497 with 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" outside state//wiki//planning/ — only remaining reference is in .claude/settings.local.json (one-shot allowlist for an earlier gh pr create call, not structural).
  • AGENTS.md mixer-API claim cross-checked against synthbanshee/tts/mixer.py:93-117 (Segment dataclass definition).
  • No code changes — nothing functional to test.

🤖 Generated with Claude Code

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>
Copilot AI review requested due to automatic review settings May 7, 2026 06:11
@shaypal5 shaypal5 added the type: docs Documentation only label May 7, 2026
@github-actions

This comment has been minimized.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread .agent-plan.md Outdated
Comment thread .agent-plan.md Outdated
Comment thread .agent-plan.md Outdated
@github-actions

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>
@github-actions

This comment has been minimized.

@shaypal5 shaypal5 changed the title docs: sync .agent-plan.md to current state (M16 done, M17 in flight) docs: delete .agent-plan.md (duplicates the design-doc tracker, AGENTS.md, and GitHub Issues) May 7, 2026
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>
Copilot AI review requested due to automatic review settings May 7, 2026 09:08
@shaypal5 shaypal5 changed the title docs: delete .agent-plan.md (duplicates the design-doc tracker, AGENTS.md, and GitHub Issues) docs: delete .agent-plan.md + fix AGENTS.md M3a/M8a/#74 mixer-API drift May 7, 2026
@github-actions

This comment has been minimized.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.

Comment thread AGENTS.md Outdated
@github-actions

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>
@github-actions

This comment has been minimized.

@github-actions

github-actions Bot commented May 7, 2026

Copy link
Copy Markdown

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:

Tool ref: v4
Tool version: 4.0.21
Trigger: schedule
Workflow run: 25498096473 attempt 1
Comment timestamp: 2026-05-07T13:15:19.833732+00:00
PR head commit: 8df8eb56e13b554624a7b876bfd75a0f71e54af1

@shaypal5
shaypal5 merged commit 1e33808 into main May 7, 2026
11 of 14 checks passed
@shaypal5
shaypal5 deleted the docs/agent-plan-sync branch May 7, 2026 19:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: docs Documentation only

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants