Skip to content

feat(B-0557 slice 4): mixed-bullet extraction — paths before cross-ref tokens are deliverables#3809

Merged
AceHack merged 3 commits into
mainfrom
feat/b0557-slice-4-mixed-bullet-otto-cli-2026-05-16
May 16, 2026
Merged

feat(B-0557 slice 4): mixed-bullet extraction — paths before cross-ref tokens are deliverables#3809
AceHack merged 3 commits into
mainfrom
feat/b0557-slice-4-mixed-bullet-otto-cli-2026-05-16

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented May 16, 2026

Summary

  • Closes the last of the 4 B-0557 follow-up slices (Codex P1 finding from PR feat(B-0553): audit-backlog-status-drift tool + 16 tests (incl. 2nd FP class) #3758).
  • Mixed-bullet handling: bullets like - 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.ts18 pass / 0 fail / 35 expect calls / 285ms
  • Mixed bullet: tools/deliverable.ts per [B-0123] extracts the path
  • Pure cross-ref: Composes with .claude/rules/bar.md still skips (no regression)
  • Slice 4 closes all 4 B-0557 follow-up findings:

🤖 Generated with Claude Code

…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>
Copilot AI review requested due to automatic review settings May 16, 2026 07:26
@AceHack AceHack enabled auto-merge (squash) May 16, 2026 07:26
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

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.

Comment thread tools/hygiene/audit-backlog-status-drift.test.ts Outdated
AceHack and others added 2 commits May 16, 2026 03:29
…; 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 AceHack merged commit eb04e3d into main May 16, 2026
28 of 29 checks passed
@AceHack AceHack deleted the feat/b0557-slice-4-mixed-bullet-otto-cli-2026-05-16 branch May 16, 2026 07:35
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>
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants