Skip to content

AGENTS.md tells agents check:react-declaration-parity cannot run locally and "comes not from CI" — a manifest is checked in at the repo root, so agents record NOT MEASURED where a green is one command away #17405

Description

@os-bill

Filed by the domain:spec execution seat, session_01MkQhmuuJAVDjmeWNixwDDH, 2026-09-10T11:2xZ, out of the #16929 round (PR #17401). ⛔ Unclaimed. No domain:* label and no pm:* state: ⛔ both are the triage seat's to produce.

⚠️ AGENTS.md is a governed surface (GOVERNED_SURFACES in scripts/pm/check-governed-merges.mjs). ⇒ Whatever PR fixes this is draft-only, human-merged; ⛔ never ready-flipped, enqueued or auto-merged by a seat. Filed as authoring for a maintainer landing, ⛔ not a drive-by.

What AGENTS.md says

AGENTS.md, the check:react-declaration-parity paragraph, verbatim on origin/main:

It is also the one gate check:generated cannot run at all (EXTERNAL_INPUT_REQUIRED): its right-hand side is objectui's sdui.manifest.json, produced only by pnpm sdui:manifest driving a real browser over objectui built at .objectui-sha, and it exits 1 with no usable manifest — "could not run" is a failure, not a skip … The manifest comes not from CI: it is an on-demand gate whose trigger is the objectui pin bump.

What is measured

sdui.manifest.json is tracked at the repo root. git ls-tree -r --name-only origin/main | grep sdui.manifest returns it. Lit control: packages/spec/react-declaration-parity.baseline.json is tracked (1). Dark control: a fabricated manifest name (0).

And the baseline's own _comment names the invocation:

Regenerate with: MANIFEST=… check:react-declaration-parity --baseline <this> --update.

⇒ A complete local run is one command away, from a copy already in the tree. The #16929 round measured this end-to-end: the gate returned exit 1 on a bare invocation, its own refusal text pointed at the checked-in copy and the complete local invocation, and re-running it as CI runs it — with MANIFEST set — returned exit 0, no new declaration divergence versus baseline.

Why it is a defect and not a wording nit

The paragraph does not merely under-describe the gate — it instructs agents to record a non-measurement.

An agent following AGENTS.md reads "cannot run at all", "comes not from CI", "exits 1 with no usable manifest", and writes EXTERNAL_INPUT_REQUIRED / NOT MEASURED in its report. That is what happened repeatedly:

⇒ This is the shape this repo's gate design most consistently refuses — a reading that never happened, published as if a decision had been made about it. Here the source of the false reading is the instruction document, which is worse than a gate that concludes wrongly: nothing downstream can catch it, because every agent that reads the paragraph makes the same non-measurement independently.

What the paragraph gets right, and must keep

⛔ Do not lose these on the way through — they are correct and load-bearing:

  • It compares two DECLARATIONS, not a declaration against an implementation. A prop both sides declare and no renderer reads is, to this gate, perfect agreement. ⛔ Do not read it as proof anything renders.
  • "Could not run" is a failure, not a skip — the principle stands even though the premise for it no longer does.
  • ⛔ Do not "fix" a red by re-adding a skip, and ⛔ do not wire the gate into a workflow.

The question the fix has to answer

⚠️ ⛔ Do not simply delete the sentences. Establish first what the checked-in sdui.manifest.json is for and how fresh it is — whether it is a committed snapshot intended for exactly this local-run case, or an artifact of something else that happens to be usable. The correct paragraph differs:

  • if it is the intended local input ⇒ the paragraph should name the MANIFEST= invocation and stop saying the gate cannot run;
  • if it is a snapshot that can go stale against .objectui-sha ⇒ the paragraph should say when a local run is trustworthy and when only a real pnpm sdui:manifest is — which preserves the pin-bump trigger it describes.

⚠️ Re-check before acting: git ls-tree -r --name-only origin/main | grep sdui.manifest and the gate's own refusal text. If the manifest is no longer tracked, this card is answered and closes.

Dedup

Complete enumerations read 2026-09-10T11:2xZ: open domain:skills + domain:devx union = 129. Lit control: 23 titles contain "gate"; dark control: 0. Grepped for react / parity / manifest / sdui / AGENTS.

Nearest, judged not a duplicate: #15189"check-ratchet-remedy-authority's corpus note and why for check-i18n-walk-parity.mjs still say its …". ⭐ Same class (a stale note about a gate, shipped where agents read it), different gate and different document. ⚠️ Whoever takes either should read the other: two instances of "the prose about a gate outlived the gate" may be the real card.

Source

#16929 · PR #17401 · the os-dev round report of 2026-09-10, out-of-scope finding 4 · AGENTS.md and packages/spec/react-declaration-parity.baseline.json on origin/main

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions