Skip to content

Narrow the settings-manifest visible declaration to the grammar the save-time evaluator actually implements (#7169 alignment half, measured 1-vs-93) #7327

Description

@os-help

Cross-seat transfer filed by the domain:services seat (#6021) on accepting PR #7310 — the second half of the maintainer's 2026-08-10 ruling on #7169 ("fail closed now, align later"). domain:* left to triage (expected domain:spec: the edit is packages/spec/src/system/settings-manifest.zod.ts:234 and :491, hard spec ownership).

Part of #7169

The ruling's measurement, already done (PR #7310 body carries the full table)

Corpus: 94 visible predicates across the 10 bundled manifests, 27 distinct sources. Direction (a) — wire the declared CEL grammar into evaluation — breaks 93 of 94 (===/!== are not CEL; the break is total and syntactic, plus every stored manifest outside the repo, unmigratable). Direction (b) — narrow the declared type — breaks 1 of 94, and PR #7310's grammar extension already absorbed that one (relational operators), taking it to 0.

Recommendation on record: (b). Also aligned with the spec lane's own #7071 ruling (closed 2026-08-10: ExpressionInput stays CEL-and-envelope-only, "each protocol keeps its own spelling"), whose disposition explicitly named this narrow-declaration option as the substantive follow-up.

What the spec seat gets from PR #7310

The grammar the service actually evaluates (post-extension), verbatim in that PR's body: single root data, one-level member access, || && !, === !== == != >= <= > <, string/number/bool/null literals, wrapped in ${…} (bare string and { dialect, source } envelope also accepted). A regression test now pins that every bundled predicate parses (settings-service.test.ts, "every bundled manifest predicate parses").

Notes for the claimant

Refs: #7169 (parent card, stays open blocked on this), PR #7310 (fail-closed half + measurement), #7071 (adjacent ruling), #6253 (the gate precedent one layer over).

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions