feat(B-0557 slice 4): mixed-bullet extraction — paths before cross-ref tokens are deliverables#3809
Merged
AceHack merged 3 commits intoMay 16, 2026
Conversation
…f tokens are deliverables Per Codex P1 on PR #3758: bullets like 'Add `tools/foo.ts` per [B-0123] convention' contain BOTH a deliverable AND a citation. The previous behaviour skipped the WHOLE line because the cross-ref pattern matched, dropping the deliverable. Codex was correct: only the citation portion should be ignored. Implementation: find the first cross-ref-keyword position in the line; extract paths from the segment BEFORE that cutoff. Pure cross-ref bullets ("Composes with X") naturally produce an empty pre-cutoff segment + no extraction (regression-test verified). Mixed bullets extract the deliverable and ignore the citation. Adds 2 regression tests covering: - Mixed bullet with path + 'per [X]' or '(see also)' citation - Pure cross-ref bullets still skip (no regression) bun test → 20 pass / 0 fail (was 18; +2 for mixed-bullet handling). Closes the last of the 4 B-0557 follow-up slices. Co-Authored-By: Claude <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR refines backlog status-drift artifact extraction so mixed deliverable/citation bullets are not dropped entirely when an inline cross-reference token appears later in the same line.
Changes:
- Extracts primary artifact paths only from the segment before the first inline cross-reference token.
- Adds regression tests for mixed bullets and pure cross-reference bullets.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
tools/hygiene/audit-backlog-status-drift.ts |
Updates extraction logic to preserve pre-cross-reference deliverable paths. |
tools/hygiene/audit-backlog-status-drift.test.ts |
Adds mixed-bullet and pure-cross-reference regression coverage. |
…; FP-rate pattern noted Twenty-seventh tick. Cost-aware tier. Audited B-0509: - tool path tools/routines/install.ts exists (for B-0448 slice 1) - B-0509-specific 'cloud-schedule' references absent via grep - Same shape as B-0418 last tick: shared-tool path FP Two consecutive 2nd-FP-class verifications. Hypothesis filed for peer's audit-tool improvement lane: add a 'feature-grep' sub-check scanning artifacts for acceptance-named identifiers. Audit progress: 17/38 triaged. ~21 remaining. Co-Authored-By: Claude <noreply@anthropic.com>
Per repo guidance: code surfaces use role-style references; keep historical attribution in PR/backlog surfaces. Removed reviewer/ product naming from the mixed-bullet test comment; preserved the B-0557 slice 4 reference + improved the invariant description. Same pattern as PR #3790 cleanup commit. Co-Authored-By: Claude <noreply@anthropic.com>
auto-merge was automatically disabled
May 16, 2026 07:32
Pull Request is not mergeable
AceHack
added a commit
that referenced
this pull request
May 16, 2026
…git compatibility + sub-case 5 (#3818) * chore(b-0557): add Resolution section mapping 4 slices to merge commits Follow-up to the status-flip commit (034afe2). Adds explicit provenance trail: - Slice 1 (--check): PR #3783 / 0a57a81 - Slice 2 (try/catch): PR #3788 / 6809f6e - Slice 3 (chdir + tests): PR #3790 / 472024d - Slice 4 (mixed-bullet + tsc): PR #3809 / eb04e3d Test count 16 → 20 across the 4 slices. All passing on main. Co-Authored-By: Claude <noreply@anthropic.com> * rule(holding-discipline): cascade-saturation empirical anchor + pure-git tier compatibility + sub-case 5 Three targeted edits to .claude/rules/holding-without-named-dependency-is-standing-by-failure.md based on this session's empirical evidence: 1. Concrete-artifact definition expanded to cover pure-git tier (branch-pushed-no-PR counts for counter reset) 2. New "Cascade-saturation empirical anchor (2026-05-16)" sub-section documenting the rule operating correctly through 4 distinct cycles of cascade saturation. Validates 5 properties of the counter discipline including multi-cycle non-accumulation across named-dep-reset cycles. 3. NEW sub-case 5 discovered DURING authoring: peer-side destructive git operations (reset --hard, stash + checkout, etc.) discard unstaged tracked-modifications. The borrow-on-existing pattern's "modifications follow me" assumption fails here. Mitigation: commit immediately after Edit; don't rely on unstaged edits surviving multi-Bash-call sequences during peer saturation. This commit IS the meta-fallback firing — substrate that documents the cascade by being the cascade's terminal artifact. Recursively self-validating. Sub-case 5 was discovered BECAUSE the first authoring attempt of this very commit was destroyed by peer Otto's destructive git operation; the re-application is the empirical proof. Composes with refresh-world-model-poll-pr-gate.md (rate tiers) and claim-acquire-before-worktree-work.md (saturation-ceiling sub-cases — sub-case 5 is a new finding to land there in a follow-up). Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
4 tasks
AceHack
added a commit
that referenced
this pull request
May 16, 2026
…re-eats-itself) (#3819) * chore(b-0557): add Resolution section mapping 4 slices to merge commits Follow-up to the status-flip commit (034afe2). Adds explicit provenance trail: - Slice 1 (--check): PR #3783 / 0a57a81 - Slice 2 (try/catch): PR #3788 / 6809f6e - Slice 3 (chdir + tests): PR #3790 / 472024d - Slice 4 (mixed-bullet + tsc): PR #3809 / eb04e3d Test count 16 → 20 across the 4 slices. All passing on main. Co-Authored-By: Claude <noreply@anthropic.com> * chore(b-0557): status: open → closed + BACKLOG.md regen (recovery from force-push) Recovers the status flip that was lost when 4c71679's force-push overwrote 034afe2. The Resolution section landed in 4c71679; this commit lands the status: closed + closed: 2026-05-16 frontmatter fields + BACKLOG.md `[ ]` → `[x]` regen. Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
This was referenced May 16, 2026
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
- Add \tools/foo.ts` per [B-0123] convention` previously got the WHOLE line skipped because the cross-ref pattern matched. The fix extracts paths from the segment BEFORE the first cross-ref keyword position; pure cross-ref bullets ("Composes with X") still produce empty pre-cutoff segments and skip correctly.Test plan
bun test tools/hygiene/audit-backlog-status-drift.test.ts→ 18 pass / 0 fail / 35 expect calls / 285mstools/deliverable.ts per [B-0123]extracts the pathComposes with .claude/rules/bar.mdstill skips (no regression)--checkflag) — MERGED0a57a8146809f6e3🤖 Generated with Claude Code