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
{{ message }}
Repository navigation
lint: view-filter / page-binding field checks resolve against the blanket SYSTEM_FIELDS union, so the #8116 unprovisioned-anchor warning cannot reach filter surfaces #8340
Residual measured while implementing #8116 (PR pending on claude/issue-8116-provenance-predicate-to-spec).
The gap
#8116 sank the #7865 provenance derivation into @objectstack/spec/data and taught the per-object resolution sites in @objectstack/lint to warn when a reference resolves to an injected anchor with no storage behind it on an ADR-0015 external object. That covers the two rules that resolve fields per object today:
validate-expressions.ts (buildFieldIndex / the object-bound expression surfaces),
The filter-position field checks are structurally different: they judge a field name against the object-independent blanket union SYSTEM_FIELDS (packages/lint/src/system-fields.ts), which by design answers "could this name be a system column anywhere" and therefore never flags a system name. Measured read sites:
So filter: [["owner_id", "=", "..."]] on a view/widget/page bound to a federated object lints clean while the runtime degrades exactly as #8116's warning describes (on SQLite: constant-false, HTTP 200, zero rows, no error).
Attaching the marker at these sites first requires converting each rule from the blanket union to the per-object derivation (injectedColumnsFor / unprovisionedInjectedColumnsFor) — #5378-shaped work with its own false-positive analysis per surface (each rule's tolerance for names it cannot resolve differs). The #8116 ruling scoped that card to the provenance predicate move only. The spec-side prerequisite now exists, so this is pure lint wiring.
Triage: lands in domain:devx (packages/lint). pm:queue, type: Bug — the #8116 unprovisioned-anchor warning was scoped to the two per-object resolution rules; the four filter-position sites judge against the object-independent SYSTEM_FIELDS blanket union by construction and so structurally cannot flag the same degradation class the warning exists to catch. Pure lint wiring per the filer, reusing an already-shipped marker (unprovisionedInjectedColumnsFor) and warning shape (warnUnprovisionedAnchors) — no new decision surface.
Size/model suggestion: M, mode:subagent, model: opus (four call sites, each with its own false-positive tolerance per the filer's note — needs care, not just mechanical copy-paste).
Activity
hotlong commentedon Aug 13, 2026
Triage: lands in
domain:devx(packages/lint).pm:queue,type: Bug— the #8116 unprovisioned-anchor warning was scoped to the two per-object resolution rules; the four filter-position sites judge against the object-independentSYSTEM_FIELDSblanket union by construction and so structurally cannot flag the same degradation class the warning exists to catch. Pure lint wiring per the filer, reusing an already-shipped marker (unprovisionedInjectedColumnsFor) and warning shape (warnUnprovisionedAnchors) — no new decision surface.Size/model suggestion: M,
mode:subagent,model: opus(four call sites, each with its own false-positive tolerance per the filer's note — needs care, not just mechanical copy-paste).Generated by Claude Code
feat(lint): the objectstack-ai#8116 unprovisioned-anchor warning reac…
fix(lint): warn when `searchableFields` declares an unprovisioned inj…
test(lint): pin the four unprovisionedAnchors threading sites in vali…
fix(lint): resolve flow-variable template roots, and gate the record …
docs(lint): re-anchor the dead tracker citations in packages/lint/src…