Repository navigation
test(core, runtime): the retracted verb survived in two case titles — sweep it repo-wide instead of reading one file - #17769
Merged
Conversation
… sweep it repo-wide instead of reading one file The #17147 pin asserted the retracted sentence was absent from `plugin-permission-enforcer.ts`. A post-merge sweep found what a single-file read cannot: `artifact-granted-permissions.test.ts` carried it as a CASE TITLE — "a CONSENTED entry enforces exactly the consented surface" — next to a sibling titled "registered, and denies". Neither case asserts a refusal, and neither could: both read a permission bag through `getPluginPermissions` and check what it ANSWERS. But a case title is read as evidence (ADR-0033), and those two told a reader the platform confines plugins while nothing on the tree queries that registry — `SecurePluginContext` has no production construction site and the fs/network gates have no caller at all. • both titles now name what they assert (`bag ANSWERS yes to` / `its bag answers NO to everything`); • the file's header states the verb discipline: `answers` / `registered` / `bound`, never `enforces` / `denies` / `gates` / `refuses` / `blocks` until the seam exists, and points at the pin that decides when it does; • the pin's negative assertion becomes a repo-wide `git grep` over the same pathspecs as its other sweeps, excluding only its own specimen, with an anti-vacuity limb asserting the raw result still contains that specimen — so a broken scan cannot read as a clean repo. The needle is held once as `RETRACTED` so sweep and single-file read cannot drift apart. Ablated: restoring the old case title turns the sweep red and names the file. No behaviour, no assertion semantics, no accept/reject change. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
hotlong
enabled auto-merge
September 12, 2026 03:45
Contributor
📓 Docs Drift CheckNothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 0 changed package(s)), so this run has no opinion about the docs. What this run could not see
Coarse fallback — 0 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
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.
Follow-up to #17753, found by a post-merge sweep rather than by the pin that PR added. ⛔ #17147 stays OPEN — this PR is not its closer.
Clause-②: no — no new key lands on any published payload. Two test-case titles, one test header note, one widened assertion in a test file, one changeset.
What the single-file pin missed
#17753's negative assertion read
plugin-permission-enforcer.tsand checked the retracted sentence was gone from it. It was. Butpackages/runtime/src/security/artifact-granted-permissions.test.ts— the file #13457 added — carried the same phrasing as a case title:next to a sibling titled
… — registered, and denies.Neither case asserts a refusal, and neither could. Both read a permission bag through
getPluginPermissionsand check what it answers; nothing on the tree queries that registry, becauseSecurePluginContexthas no production construction site and the fs/network gates have no caller at all. A case title is read as evidence (ADR-0033) — those two told a reader the platform confines plugins, which is exactly the defect #17147 exists to remove, in the one place agrepfor the docblock would never look.The fix, and why the pin changes shape
bag ANSWERS yes to …/its bag answers NO to everything.answers/registered/bound, ⛔ neverenforces/denies/gates/refuses/blocksuntil the seam exists — and points at the pin that decides when it does.granted-permissions-not-enforced.pin.test.ts's negative assertion becomes a repo-widegit grepover the same pathspecs as its other sweeps, excluding only its own specimen. The needle is held once asRETRACTEDso the sweep and the single-file read cannot drift apart..filteralone would hide both.Ablated: restoring the old case title turns the sweep red and names the offending file.
check:cross-package-test-inputsstill OK (28 packages);@objectstack/coretest:repoand@objectstack/runtimesrc/securityboth green (6 and 141 tests).The general lesson, recorded
A text pin that reads one file proves that file. This claim lived in six carriers across three repos, and the cheap correct shape was a sweep with an anti-vacuity control from the start.
Refs: #17147 · #13457 · PR #17753
🤖 Generated with Claude Code