Price the coveringKey refusal's miss with its exception, not as a flat average - #13535
Merged
os-project-manager merged 1 commit intoAug 30, 2026
Merged
Conversation
…t as a flat average The refusal's COSTS paragraph priced every missed import-edge lead at "one CI round". That is the price of its own named witness, whose family lint.yml runs on every PR — but it is an average over the class, and the next reader quotes it as the price of every individual lead. State the split instead, and let --self-test print the sizes: the large majority of novel pairs sit in a family some unfiltered workflow runs, where one round is the whole price; the rest sit in families no every-PR workflow runs, where nothing on the PR repays the miss and the family next executes on its own cadence. Three assertions re-derive it every run rather than freezing numbers that have already moved three times: the split itself, the concentration on the shared heads, and the half that keeps the exception from being over-read — a deferred pair defers the LEAD, not the load break, because every module carrying one is imported by every-PR families too. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Pk26oZ12t5N1hwGW1m1MgC
This was referenced Aug 30, 2026
os-project-manager
marked this pull request as ready for review
August 30, 2026 18:08
os-project-manager
enabled auto-merge
August 30, 2026 18:08
os-project-manager
deleted the
claude/issue-13467-coveringkey-pricing-exception
branch
August 30, 2026 18:26
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.
Fixes #13467
coveringKey's refusal docblock priced every missed import-edge lead at "the miss costs one CI round." That sentence is its own named witness's price —scripts/pm/bare-root-worklist.mjs --self-test, whose familylint.ymlruns on every PR — and an average over the class. The next reader quotes it as the price of every individual lead. For a minority it is wrong.What changed
One paragraph in the
coveringKeydocblock, plus three--self-testassertions that re-derive it. Nothing else: the refusal itself (fifth key, fan-in threshold) is untouched, and so are the five paths-filtered patrol workflows.The docblock now states the shape and the self-test prints the sizes, because this figure has already been measured at three different values on three different days:
Re-derived, not quoted
The card's numbers are deliberately not carried over. Re-derived on this tree at
90705ffa0, printed live by the new pins:The card said 231/10 of 241; today it derives 235/9 of 244. Two things the re-derivation corrected, both now reflected in the prose rather than the card's wording:
invoked-as.mjsis imported by 122 families, 118 of which run on every PR (import-prerequisite.mjs44,workspace-enumerator.mjs10,check-shard-attestation.mjs2). A module that fails to load reddens the PR through a sibling. What actually defers is the narrower break — one only the deferred consumer would have seen. This is now a pinned assertion, so the docblock cannot drift back into the stronger claim.cut-rc.ymlandrelease.ymlalso carry deferred families. The pin prints the live set rather than freezing a list. ⛔ No workflow was edited.Why pins rather than numbers in prose
The docblock already says its staleness alarms are re-derived every
--self-testrun. Three assertions were added in that same block:A red in any of them re-prices the paragraph; it does not fault the derivation. That is stated in the comment above them.
Verification
node scripts/pm/dispatch-gates.mjs --self-test: 976 cases before, 979 pass after.Reverse-verified by two ablations, each mutating the derivation input, each confirmed on disk by blob hash and restored to the exact HEAD blob:
244 of 244), load-break pin ✗0 of 9)Both restored:
git diff HEADempty, blob back to6d10cec9.Gate family derived from the diff by
dispatch-gates.mjs --changed --repo objectstack-ai/objectstack(14 families), all run at90705ffa0, all EXIT=0 with the exit captured before any pipe:check:pm-dispatch-gates·bare-root-worklist.mjs --self-test(this tool's only real static importer — verified: the two.test.tsfiles mentioning it do so in prose only) ·check-self-test-wired·check:agent-test-spelling·check:bash32-floor·check:cli-command-ids·check:cross-package-test-inputs·check:entry-guard·check:parse-guard·check:pnpm-filter-targets·check:watch-hint-literal·check-ci-filter-parity·check-shard-attestation·check:nul-bytes.check-test-completeness.mjsexits 3 = NOT MEASURED (neither red nor green).Changeset
None owed — the diff is one file under
scripts/pm/**, internal PM tooling that publishes nothing from any package.skip-changesetapplied.Out of scope, deliberately
⛔ The refusal itself is not touched. ⛔ The five paths-filtered patrol workflows are not touched. The card's escalation measurement — whether such a deferred break has ever actually shipped — was not commissioned and was not run; see the report comment for what the fan-in reading above implies about it.
Generated by Claude Code