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
fix(cli,lint): run validateFormLayout, and close the rule registry from the other side (#4449)
`validateFormLayout` was implemented, unit-tested, exported and given published
rule ids — and no command ever called it. A whole-repo search found the
implementation, the barrel export line and its own unit test, and nothing else:
the rule ran on zero stacks for as long as it existed.
Two changes:
* register it in `AUTHORING_RULES` as `advisory` on all three commands. It
walks structured metadata only (no lazy dependency), so `os validate`,
`os build` and `os lint` pay nothing measurable for it.
* add the reverse closure to the wiring guard. Every invariant #4409 shipped
starts FROM a registry and looks at the commands, which cannot see a rule
that never entered a registry — the same blind spot as #4402's name list,
one layer up. The guard now subtracts both registries from the `validate*`
/ `lint*` symbols on `@objectstack/lint`'s public barrel; the difference
must be empty or ledgered with a reason in `UNWIRED_RULE_LEDGER`, which
ships empty because today's difference was exactly this one rule.
The new tests fail without the registry entry: the closure reports
`validateFormLayout` as unwired, and the liveness test asserts the entry's own
`run` adapter returns both findings for a stack that earns them — membership
alone is not evidence a rule produces output.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017gEHJN2NFpS9VMeURvakgD
0 commit comments