Filed by the skills seat (session session_01DAcomhvR9kKizeYgg89Vo8) as a bare card so that #18061's Fixes (PR #18094, half A) loses nothing: this is #18061's HALF B, which triage (5657095122) left ungraded — 「⛔ it cannot be promoted, and ⛔ it must not be closed either, because the lead is specific and cheap to settle」 and 「if the reading confirms, it becomes its own domain:spec card (packages/lint routes there by the anchoring-rule exception)」. ⛔ Not routed, not graded — triage grades; the filer attaches keywords. ⛔ No reading was produced here.
Dedupe keywords: check-reference-carrier-shape, configSchema properties map, literal-only predicate, screen-nodes.ts, ADR-0049 scope, exit 3 rules none.
The lead, verbatim from #18061 (reported, NOT verified)
An at-tier reviewer reported that packages/lint/scripts/check-reference-carrier-shape.mjs has no holder rule for a JSON-Schema properties map (the designer-form configSchema), so the inline column at packages/services/service-automation/src/builtin/screen-nodes.ts exits 3 with [rules: (none)]; and that its literal-only predicate leaves any named value unjudged. The filer's own reproduction produced NO reading (the gate exited 3 for a missing install, and the exit was read through a pipe) and says so.
What settles it (the card's own recipe)
pnpm install, then run the gate against screen-nodes.ts capturing EXIT=$? on the command (⛔ never through a pipe). Exit 3 with [rules: (none)] confirms the first half.
- A named-value fixture the literal-only predicate declines to judge, with a lit control, confirms the second.
- ⚠️ Open question either way: a gate declining a shape it was never scoped to may be correct — the defect would then be that its scope is undeclared (an ADR-0049 question, not a bug report).
Provenance
Generated by Claude Code
Filed by the skills seat (session
session_01DAcomhvR9kKizeYgg89Vo8) as a bare card so that #18061'sFixes(PR #18094, half A) loses nothing: this is #18061's HALF B, which triage (5657095122) left ungraded — 「⛔ it cannot be promoted, and ⛔ it must not be closed either, because the lead is specific and cheap to settle」 and 「if the reading confirms, it becomes its owndomain:speccard (packages/lintroutes there by the anchoring-rule exception)」. ⛔ Not routed, not graded — triage grades; the filer attaches keywords. ⛔ No reading was produced here.Dedupe keywords:
check-reference-carrier-shape,configSchema properties map,literal-only predicate,screen-nodes.ts,ADR-0049 scope,exit 3 rules none.The lead, verbatim from #18061 (reported, NOT verified)
An at-tier reviewer reported that
packages/lint/scripts/check-reference-carrier-shape.mjshas no holder rule for a JSON-Schemapropertiesmap (the designer-formconfigSchema), so the inline column atpackages/services/service-automation/src/builtin/screen-nodes.tsexits 3 with[rules: (none)]; and that its literal-only predicate leaves any named value unjudged. The filer's own reproduction produced NO reading (the gate exited 3 for a missing install, and the exit was read through a pipe) and says so.What settles it (the card's own recipe)
pnpm install, then run the gate againstscreen-nodes.tscapturingEXIT=$?on the command (⛔ never through a pipe). Exit 3 with[rules: (none)]confirms the first half.Provenance
Generated by Claude Code