You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Browse filesBrowse the repository at this point in the historyBrowse files
authored
test(objectql,runtime): widen the deleted-member absence pin from one file to the tree (#15085)
* test(objectql,runtime): widen the deleted-member absence pin from one file to the tree
PR #14667 deleted the private `ObjectQLPlugin.actionObjectKey` and wrote a
guard for it: `expect(plugin!.text).not.toContain('actionObjectKey')`. The kind
of guard was right; its SCOPE was the defect. A pin written by the deleting PR
can only look where its author thought to look, and the whole failure mode is
references the author did not know about — five files in three other packages
went on naming the dead member as a live reader, and one deletion produced two
separate follow-up cards.
Both `action-owner-key-single-source.test.ts` pins now assert the absence
tree-wide instead: one `git grep` over `.ts` under `packages/` and `examples/`,
tracked plus untracked, with three exclusion rules carried in the pin beside
their reasons (published CHANGELOGs, `.changeset/`, and the two pins
themselves, which name the member because naming it is how they hunt for it).
Widening also covers the half no removal-time check can see. Three of the five
references existed when the member died; the other two were written 1 h 41 min
AFTER it, by a later PR, into a file that was clean at deletion time. A pin that
runs on every PR reddens on that second kind at the moment it is written.
Also in this change:
- `packages/spec/src/stack.zod.ts` — two comments naming the dead member as the
registration-key reader TODAY now name `standaloneActionOwnerKey`, the live
helper. Only that one word rots; `collectBundleActions` beside it is alive.
- `packages/objectql/src/action-governance.ts` — accurate history, reworded so
it no longer carries the dead name.
- `scripts/cross-package-test-inputs.mjs` and `turbo.json` — the declaration a
tree-scoped test owes. Without it neither the affected-subset filter nor the
turbo cache re-runs these suites for the files they now judge, which is the
blind spot `check:cross-package-test-inputs` exists to close.
⛔ An assertion of absence is not a stale mention. The pins name the member on
purpose; "repairing" those lines deletes the guard.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012zGPuVVX3deAx9LdjK8jCk
* fix(objectql,runtime): scope the absence pin to packages/, which the gate farm owns
`pnpm check:pm-dispatch-gates` went red on the previous commit — reproduced
locally, 1 of 1291 self-test cases failed, exit 1:
✗ but no hint of this gate reaches a test file outside packages/**
Root cause, measured rather than guessed. `scripts/cross-package-test-inputs.mjs`
is a declaration table that `check-cross-package-test-inputs.mjs` imports, and
`dispatch-gates.mjs` appends a followed module's globs to every importer as watch
hints. So the `examples/**/*.ts` glob the previous commit added became an
inherited hint on that gate — and the self-test pins that no hint of it reaches a
test file outside `packages/**`, which is the whole reason the gate is listed as
a change-KIND rather than a path derivation.
That case is not a count to bump. All 41 tracked test files outside `packages/`
are under `examples/`, so one examples-wide glob does not shrink the residue
class it guards, it EMPTIES it — and the case's own instruction ("re-point at
another member of its class") cannot be followed because no other member exists.
Editing it would be weakening a gate to fit a declaration, in a `scripts/pm/`
file this change does not own.
So the pin narrows instead: `SCANNED_ROOTS` is `packages/` alone, and the
declared glob drops to `packages/**/*.ts`, which the table already carried for
`@objectstack/core` and `@objectstack/types` — the hint population is now
byte-identical to `origin/main`'s and the census does not move at all.
⚠️ What that costs is written into both pins rather than left to be rediscovered:
of this symbol's five surviving references, four were under `packages/**` and one
was a test under the showcase example, which this pin no longer sees. Widening
needs the residue measurement behind that self-test case redone first; the
headers say so, and say that editing the case is not the repair.
The reach control moves with the scope — from the showcase test to
`packages/cli/src/commands/lint.ts`, which is also one of the files that carried
the dead name until it was repaired, so it still proves the scan leaves its home
package.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012zGPuVVX3deAx9LdjK8jCk
---------
Co-authored-by: Claude <trymqms@gmail.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
0 commit comments