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(lint): reject a validation rule whose regex or JSON Schema does not compile (#4762)
A `format` rule's `regex` that `new RegExp(...)` throws on, and a `json_schema`
rule's `schema` ajv cannot compile, are both logged and SKIPPED on the write
path, so the rule is declared, listed and enforces nothing on every record.
Both faults are STATIC — decidable from the metadata alone — so they are
rejected at authoring/publish time by a new gating rule,
`validateRuleCompilability`, wired into AUTHORING_RULES (all three commands).
Detection uses the real compilers: `new RegExp(source)` for the regex, and ajv
constructed with the SAME options the runtime's shared instance uses
(`{ allErrors: true, strict: false }`), pinned against `rule-validator.ts`'s
own source so the two cannot drift.
`packages/objectql` is deliberately untouched: the `#4649 — unchanged
neighbours` pins and the module header stand as the honest record that the
RUNTIME half is still fail-open.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NrmBxj8rK2uGCnh9aipjwX
* fix(lint): cap `conditional` nesting depth in the rule-compilability walk (#4762)
`os lint` never parses, so the walker is handed whatever object the author's
own module built — and `const r = {…}; r.then = r` is a two-line accident that
would hang the lint. Same promise `flow-walk.ts`'s `MAX_REGION_DEPTH` makes,
with a non-vacuous test: a broken regex parked at the bottom of a legal nest is
still reported, one level past the cap is where the walker stops looking.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NrmBxj8rK2uGCnh9aipjwX
---------
Co-authored-by: Claude <noreply@anthropic.com>
0 commit comments