remove(messages-cache-breakpoint): superseded by canonical content identity (#272 has landed — your call now) - #281
Conversation
52ea721 to
7eb27a7
Compare
|
Rebased onto #272's new tip (c713d0e, the duplicate-suppression addition) — no changes to this PR's own commit; still stacks on #272, review alongside it. 🤖 Generated with Claude Code |
…ls-less tree skips, not dies The static harvest.mjs import defeated the file's own slice-portability idiom: in trees carrying only the extension (upstream cnighswonger#272/cnighswonger#278/cnighswonger#281) the whole file failed at module load, so the real-pair check never reached the skip it was designed to hit. The reader now loads like replayTools — dynamically, inside the test — and the fixture branch requires it, so tools-less trees skip with COULD NOT VERIFY. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TcivCe2iLnKZxpB4qTXzEb
7eb27a7 to
b07c0dc
Compare
|
Rebased onto the current #272 tip (force-with-lease; the retire commit rides on top unchanged as b07c0dc). Tests at the new base: 67 pass / 1 designed skip / 0 fail. Merge order dependency unchanged: this lands after #272. 🤖 Generated with Claude Code |
…t and verified; cnighswonger#276 scope discovery Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016y33RMV399iYMXFEbAfQCk
b07c0dc to
fb63f61
Compare
…till ours The section recorded what we did and was headed "all READY" while four of those PRs had merged. Adds the current per-PR state read from the API — cnighswonger#275/cnighswonger#279/cnighswonger#280/cnighswonger#282 merged, cnighswonger#272 approved and clean after tonight's rebase, cnighswonger#276 answered and replied to, cnighswonger#295 closed, cnighswonger#306/cnighswonger#307 awaiting review, cnighswonger#273/cnighswonger#281 blocked behind cnighswonger#272. The one thing still on our side is cnighswonger#278: mergeStateStatus DIRTY, nothing owed in the thread, so it needs the same rebase cnighswonger#272 just had. Booked decision-complete, including that its worktree has no node_modules — verified rather than assumed, and that omission is the documented 900s false hang.
fb63f61 to
7b1d464
Compare
|
Rebased onto current Why it was conflicting. #272 merged on 2026-08-05 as a squash ( Safety check before freeing the 4th
Behavioural impact: operators who never opted in see no change. Operators who did set Second commit: the docs cascade, which the original removal missed. The removal deleted code and tests but left the extension documented as live in every user-facing surface — all three READMEs carried a "Cache breakpoints" section with working The impact guide's sections are ordinally numbered, so dropping #10 renumbered the two below it ( One judgment call for you. I left Verification. Full suite green at the pushed commit: 1741 tests, 1740 pass, 0 fail, 1 skipped (the pre-push hook runs it at the pushed SHA, so that's the tested commit, not an earlier one). The earlier CI failure on this branch — 🤖 Generated with Claude Code — Claude Opus 5, agent for @Gunther-Schulz |
cnighswonger#281 sat ten days after its dependency merged, and every reading of it was true about what it looked at: the thread was quiet, so a fresh read graded it "ball with nobody", and pr-rounds agreed — correctly, by its own definition, since nobody had posted. The predicate is the gap, not the reading. A PR becomes actionable without anyone posting when its blocker clears, and the writer has no way to see that. Booked READY here rather than folded into the doorbell RECORD above it: that entry's realizing write is a hook in dotfiles, while this one resolves to tools/pr-rounds.mjs in this repo — folding it there would have made it dispatchable by nobody, which is the exact defect that entry documents about itself. Noticed while booking, not swept: the entry at BACKLOG.md:9850 says cnighswonger#278 is CONFLICTING and needs a rebase. cnighswonger#278 merged 2026-08-06. Same class, one instance older.
|
Reviewed at Verdict: one cascade gap to close before merge, plus two decisions for @cnighswongerEverything Gunther says checks out. Not applying What I verified independentlySafety-check for freeing the 4th
Behavioral impact matches his account: operators who never opted in see no change; operators who did set Docs cascade completeness (Read/Measured):
Extension file removal + test removal + extensions.json entry removal internally consistent. No orphaned imports; grep on Cascade gap that landed BETWEEN Gunther's rebase and now
Small mechanical addition to close: match the removal shape you already applied to Two ways to close it, your pick:
I don't have a strong preference. If you'd rather stay heads-down elsewhere, say the word and I'll push. Judgment-call answer: docs/directives/You asked whether My read: yes, add the marker on the spec file (
Shape suggestion: one-line frontmatter or top-of-file callout: The honest trade-off (your call, @cnighswonger)Gunther's three options for the default-behavior change:
Gunther runs (a)-equivalent in production and measured the two-corpus safety data at that configuration. My read: whether (a) is safe on But that's a soak-data question and you have the data; I don't have opinions strong enough to overrule your call. Anti-bloat-1089 net LOC across 10 files, most concentrated in the extension source (-314) and its test (-647). The removal simplifies the tree materially; the two additions (CHANGELOG entry, impact-guide renumbering) are minimal. Anti-bloat lens says yes to landing this. Load-bearingYes, per NFR — changes a shared abstraction (the extension pipeline) and removes a wire-facing behavior (breakpoint #3 injection). @cnighswonger human-review required, on top of Lead + Codex. Summary of what's owed before merge
— Proxy Builder |
…entity messages-cache-breakpoint pinned index 0 against head mutation (CC#47098). insertion-normalization recognises a message across re-serializations by content identity instead of pinning its position, which covers that rationale without spending the 4th breakpoint slot — CC occupies three of the API's four; this extension took the last. Holding that slot is not free even when the extension behaves: any future consumer of the 4th breakpoint silently starves, and on our fork the starvation MASKED a defective mid-history rung scheme for a full day — removing the breakpoint first, in isolation, armed it (measured: 57 self-inflicted stability violations before the scheme itself was retired). Hence one rule this removal carries: retire any breakpoint-dependent scheme BEFORE freeing the slot. Measured after removal on two full-session corpora, replaying the real pipeline: 0 stability, 0 safety, 0 sequence violations; the 4th slot stays deliberately empty. A stale reference comment in the ttl-tier pipeline test goes with it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…nsion The removal commit deleted the code and its tests but left the extension documented as live in every user-facing surface: all three READMEs carried a "Cache breakpoints" section with working export lines, and monitoring.md plus the extension-impact guide listed both env vars as current. A reader following any of them would have set a variable nothing reads. Live surfaces updated; the impact guide renumbered (its sections are ordinal, so dropping cnighswonger#10 shifts the two below it). Dated records are left as they stand — the six docs/code-reviews/ files and the two docs/directives/ specs are history, not reference, and the design record for the extension remains at docs/directives/proxy-messages-cache-breakpoint.md. CHANGELOG gains a Removed entry under [Unreleased] noting the default-off gate: operators who never opted in see no change. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…uperseded README.fr.md landed (cnighswonger#334) four hours after this branch was last rebased, so it still documented the removed extension while README.md/zh/ko no longer did — a race between two same-day PRs rather than a missed file. Removes the same section from fr, matching the shape already applied to the other three. The design record at docs/directives/proxy-messages-cache-breakpoint.md gains a superseded callout and a Stage change. It is kept as a record, not deleted: directives here are read post-merge by people landing related changes, and an unmarked retired spec reads as current until the reader notices main does not match it. The passing mention in proxy-ttl-tier-detection.md is deliberately left alone — it only names the extension, and marking every file that ever named it spreads the notation without adding information. Dated from the merge, not the review: insertion-normalization (cnighswonger#272) landed 2026-08-05, which is when this directive was superseded in fact. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
7b1d464 to
e248784
Compare
|
Rebased onto Your deferral condition is met. You wrote: land #272, run with it, then One addition beyond the rebase: Still genuinely your call whether to take this at all. If you want the post-#272 Title fixed — it said DRAFT and the PR was not one. 🤖 Generated with Claude Code — Gunther's Claude Code session |
Why remove it
The honest trade-off
messages-cache-breakpointships enabled; #272's replacement is gated off by default. Merging this as-is changes default behavior for users who don't enable the new extensions. Options, in our order of preference: (a) flip #272's gates to default-on at the same time, (b) take this removal only with a release note, (c) keep the extension but default it off. We run (a)-equivalent in production; the corpora above measured exactly that configuration.🤖 Generated with Claude Code