From 6eb42ab71f17c039e3c01f7f238d6b7a41e239a7 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 16 Aug 2026 01:59:52 +0000 Subject: [PATCH] docs(lint): name what actually guards the unprovisionedAnchors wiring (#8664) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The tail of `checkFieldRefs`' `unprovisionedAnchors` parameter comment named `check-cross-package-test-inputs` as the gate that would notice an in-repo caller dropping the index. That gate is a CI input-scoping gate: it decides which packages CI runs (turbo's affected set) and how the `test` task cache is keyed, from a declared glob list. It scans test source text for filesystem path spellings; it has no symbol table, no call graph, and no view of argument passing, so it structurally cannot notice a dropped argument. Its `@objectstack/lint` entry declares the authoring-rule-wiring radius and says nothing about the anchor index. The claim was false in the dangerous direction: it told the next author the wiring was machine-guarded, which is exactly the belief that stops someone writing the test that guards it. Replaced with what was measured, following #8404's precedent: the two in-repo callers named explicitly, and the behaviour tests that actually go red — found by dropping the argument at each of the seven in-repo threading sites in turn. Both module seams are pinned; the four finer-grained calls inside `checkBlockFieldProps` are threaded by convention only and leave the whole lint suite green when dropped, which the comment now says rather than implies otherwise. That coverage gap is filed as #8943. Comment-only: no behaviour change, no changeset. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_011RB4waLuNbdruCo6X9oobm --- .../lint/src/validate-page-field-bindings.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/lint/src/validate-page-field-bindings.ts b/packages/lint/src/validate-page-field-bindings.ts index f828d87bfb..212d7c46e7 100644 --- a/packages/lint/src/validate-page-field-bindings.ts +++ b/packages/lint/src/validate-page-field-bindings.ts @@ -353,7 +353,21 @@ export function checkFieldRefs( // question goes unasked and only the existence one is answered — the // pre-#8340 behaviour, preserved for out-of-repo callers of this exported // core (cloud graph-lint, the AI authoring path). Every in-repo caller passes - // it; `check-cross-package-test-inputs` is what would notice if one stopped. + // it: `validatePageFieldBindings` below, and `checkBlockFieldProps` in + // `validate-react-page-props`. + // + // [#8664] What NOTICES if one stops is a behaviour test through the + // top-level entry point — nothing else can. No CI gate reads call sites: + // `check-cross-package-test-inputs`, named here until #8664, is an + // input-scoping gate (it decides which packages CI runs and how the `test` + // task cache is keyed, from a declared glob list) and has no view of + // argument passing. Measured by dropping the argument at each site: both + // entry seams go red — "warns on a highlights binding over an unprovisioned + // anchor" in this file's test, and "reaches the FILTER position through the + // shared core" in validate-react-page-props.test.ts, which also covers the + // `queried` call inside `checkBlockFieldProps`. The other four calls inside + // `checkBlockFieldProps` are threaded by convention only — dropping the + // index there leaves the whole lint suite green (#8943). unprovisionedAnchors?: ReadonlyMap>, ): PageFieldFinding[] { const findings: PageFieldFinding[] = [];