Repository navigation
Description
Problem
Slice 08 of #327 retires duplicate Bats cases only after replacement coverage executes. The baseline has 13 cases at tests/skills/fix-prose/scripts/fix-prose.bats:1 and four at tests/scripts/codex-fix-prose-state.bats:1.
Acceptance criteria
- AC1: Every one of the 17 original cases has exactly one retained or covered-retirement disposition.
- AC2: Every deleted case names an executing replacement test with matching observable assertions.
- AC3: Every actual test deletion is authorized by its ledger row.
- AC4: Retained cases pass on their promised platforms.
- AC5: Each replacement row has actual successful execution evidence on every promised platform.
- AC6: The one-edit guard case and necessary setup remain unless Replace the Claude guard-hook scripts with standalone guard binaries #328 independently proves covered retirement.
- AC7: The dictionary-error row identifies Apply exact dictionary sanctions in Go #888's replacement coverage and Port the shared skill library (lib.sh, agent.sh, signing.sh, gates.py) to Go #321's deletion ownership.
- AC8: Non-functional: production, frozen originals and generated skill output remain unchanged.
Scope and non-goals
Only covered test retirement and its ledger. Non-goal: implementation changes, fallback removal, writer-permission or optional live-probe deletion, hook-driver edits, shared-suite deletion or treating skips as native execution. No new shell logic. Canonical sources generate the packages and deployments; generated copies are never edited by hand. No edits to shared libraries, guard scripts, merge scripts, ownership rules, workflow files or harness configuration.
Approach
Enumerate baseline names, map assertions to integrated tests and record execution platforms before deleting any case. Retain integration coverage where native Go tests do not replace entry-point or actual-hook behavior. tests/skills/fix-prose/scripts/fix-prose.bats:186 belongs to #328. tests/skills/source/lib/masked-status.bats:205 belongs to #321. The old guard driver's suppression scenarios belong to #328, not this ledger's deletion scope.
The draft's executed oracle records characterize selected behavior; they are not execution of the 17 Bats cases and do not authorize their deletion. This slice waits for the actual replacement-test evidence.
Dependencies
Blocked on: #886
Blocked on: #887
Blocked on: #888
Blocked on: #889
Blocked on: #890
Blocked on: #891
Blocked on: #892
Their merged executing coverage is required. #328 and the warning window are not blockers: retain cases still requiring either event. #321 owns its cross-area retirement.
Size
S. Existing area tests: 158 + 53 = 211 scc code lines across 17 cases. The hook case and its needed setup remain; this is a ceiling on existing test code, not a forecast of deletions. Counts use scc 4.1.0; generated package/deployment output and token metadata are excluded, while source, tests, fixtures and frozen copies count. One PR with fewer than 800 changed code lines and at most 2,000 prose lines. No unbuilt Go size is claimed: measure the actual staged diff before publication and split again if the cap is exceeded.
Verify plan
- AC1:
rg -n '^@test ' tests/skills/fix-prose/scripts/fix-prose.bats tests/scripts/codex-fix-prose-state.batsbefore editing supplies the baseline names; compare all 17 to ledger rows. - AC2, AC5:
go test ./internal/agentrepo -run '^TestProse' -count=1 -von each promised native OS proves named tests execute; inspect each assertion mapping and reject skips as coverage. - AC3:
git diff -- tests/skills/fix-prose/scripts/fix-prose.bats tests/scripts/codex-fix-prose-state.batsmatches deletions to ledger authorization. - AC4, AC6:
mise run test-hooks tests/skills/fix-prose tests/scripts/codex-fix-prose-state.batschecks retained cases and the hook's required setup. If the one-edit guard case or its necessary setup is retired, inspect Replace the Claude guard-hook scripts with standalone guard binaries #328's independent evidence: require named replacement tests with matching observable assertions and successful execution on every promised platform; without that proof of covered retirement, retain the case and its necessary setup. - AC7: Inspect the dictionary-error ledger row: require Apply exact dictionary sanctions in Go #888 and its named replacement test, match that test and its observable assertions to Apply exact dictionary sanctions in Go #888's replacement coverage, and require Port the shared skill library (lib.sh, agent.sh, signing.sh, gates.py) to Go #321 as the deletion owner.
go test ./internal/agentrepo -run '^TestProseSanction' -count=1 -vproves the named handoff replacement test executes successfully whilegit diff --exit-code origin/main -- tests/skills/source/lib/masked-status.batsconfirms this slice did not delete it. - AC8:
git diff --name-status origin/main...HEADconfirms test/ledger-only scope;mise run check-generated-skillsconfirms unchanged generated output.
At the merged head, record each AC command and result, native platform execution and any skips. Required checks must pass without weakening gates. Obtain independent review of the exact head and record findings dispositions; use signed commits with Assisted-by trailers and the provenance:agent-assisted label. Match documentation to behavior, scan issue/PR text before any later publication, and record the final merge commit and closing reference. This draft authorizes no publication.
Risks
Weaker replacement coverage can erase an enforcement boundary; removing shared setup can break the retained hook case. Undo: revert this test-only PR to restore original cases and ledger state.
Operator authority
None
Metadata
Metadata
Assignees
Labels
Type
Fields
Priority
Work type
Projects
- StatusShow more project fieldsBacklog
Activity
tbhb-agent commentedon Oct 27, 2026
Refinement: READY — Retire prose Bats cases covered by Go
Model: gpt-6-astra
Child 08 Retire prose Bats cases covered by Go
Verdict: READY
Checked: The inventory remains 13 fix-prose cases and four Codex state cases. Independent recount confirms 158 and 53 code lines, with 17 code lines in the retained guard case at
tests/skills/fix-prose/scripts/fix-prose.bats:186. The 194-line deletion ceiling and 250-line budget are correct. This child records the shared-suite handoff; 06 now independently enforces its earlier completion.Gaps: None.
Split: None required.
Definition of done
The definition of done for this issue (Chore). Tick each item and give its evidence.
check-leaks.shwith the repository's private-strings list, and the leak review of each post.docs/, CHANGELOG or help text), or the Verification section says "No doc impact" and why.provenance:agent-assistedlabel.Status:comment names the merge commit.mise run checkis green, and so are the coverage floorsmise run cover-go-checkandmise run cover-py-check, whichcheckdoesn't run.packages/agents/source/commits whatmise run generate-skills, thenmise run skill-tokens, thenapm installrewrite, in that order, andcheck-generated-skills(part oflint) passes.docs/agent-skills-migration.mdor the adoption docs, or the PR's Verification says "No consumer impact" and why.Round: 2 of 3
tbhb-agent commentedon Nov 1, 2026
Refinement: READY — Retire prose Bats cases covered by Go
Checked
originidentifiestbhb-dev/devtools. Issue 893 is open and labeledrefinement:ready; the live issue has seven native blocked-by links. The prose blockers Record, read and clean up prose workflow state in Go #886–Route prose report entry points through the shared launcher #892 are all open.tests/skills/fix-prose/scripts/fix-prose.bats:186andtests/skills/source/lib/masked-status.bats:205, are not owner-tier paths; Operator authority is accurate. No unnecessary guard, config knob, or layer is proposed.Gaps
None.
Split
None indicated.
Definition of done
Planning coverage only: checked items mean the ACs and Verify plan cover the requirement, not that work is complete.
Assisted-bytrailer.Status:comment.Round: 2 of 3