Skip to content

fix(formula): declare SCOPE_ROOTS as dyn in the strict env so a bare reference behind a root name is judged (#16412) #23300

fix(formula): declare SCOPE_ROOTS as dyn in the strict env so a bare reference behind a root name is judged (#16412)

fix(formula): declare SCOPE_ROOTS as dyn in the strict env so a bare reference behind a root name is judged (#16412) #23300

Triggered via pull request September 9, 2026 14:21
Status Success
Total duration 53s
Artifacts

pr-automation.yml

on: pull_request
Check PR Size
17s
Check PR Size
Check Changeset
49s
Check Changeset
Auto Label
7s
Auto Label
Fit to window
Zoom out
Zoom in

Annotations

1 notice
Check Changeset: .changeset/strict-env-scope-roots-dyn.md#L0
ADR-0087 exemption (no-migration-prescription): Nothing authorable is renamed, retired or re-typed: no `packages/spec` key changes its name, its type or its optionality, no stored shape moves, and every view, form, flow and formula parses byte-identically to before. `objectstack migrate meta` therefore has nothing to rewrite, and this changeset carries no rewrite instructions. What narrows is the ACCEPT SET of published CHECKERS at build time: `validateExpression` and two `@objectstack/lint` rules now report a bare field reference they previously left unjudged, which is the same verdict each of them already returns for that identifier when it is written first in the same predicate. The sources that newly report are already broken at RUN time and were before this change: a bare identifier in a record-scoped site resolves to nothing, the expression evaluates to null and a visibility predicate falls open, which is #1928's class. The remedy is per-source and the diagnostic already names it in full, naming the identifier and the namespace it belongs under; there is no authored artifact and no stored representation for a migration to act on.