Filed by the PM from #1429's report. Found and reported by the dev, correctly not fixed there (different file, different card). Filed unassigned.
The claim
AGENTS.md:147:
- Flows: Use
FlowSchema.parse() from @objectstack/spec/automation (defineFlow() is that call)
The measurement
Verified by the PM on origin/main, with a control term because the finding is a zero:
grep -rn "defineFlow" src/ → 0
grep -rln "Automation.Flow" src/ → 22 files ← control, same command family, same session
defineFlow occurs nowhere in src/. The 22 flow files are plain typed object literals. The zero is real, not a broken search.
📌 Correction to the source report, which said CLAUDE.md: the line is in AGENTS.md. CLAUDE.md does not carry it.
Why it matters more here than in a normal repo
AGENTS.md is the instruction surface for the agents that write this app — its own Prime Directives say so, and this repo's stated purpose is being the reference an agent reads before authoring metadata. An instruction naming an API that does not exist in the codebase is not a cosmetic error: an agent following it writes a call that has no in-repo precedent to pattern-match against, and then either invents an import or silently diverges from all 22 existing files.
This is the same class as #1229 (filter vs where), where agent-facing prose confidently stated the opposite of the shipped behaviour and was passed verbatim into a dispatch brief. Confidently wrong instruction is worse than absent instruction because it gets copied forward.
What to establish before writing anything
The card is not "delete the line". Three possibilities, and they need distinguishing:
FlowSchema.parse() / defineFlow() exists in @objectstack/spec/automation and this repo simply doesn't use it — then the instruction is aspirational, and the honest fix is to say what the repo actually does, or to say why the wrapper is preferred and file the migration.
- It existed and was removed/renamed — then the line is stale and should describe the current spelling.
- It never existed — then it is invented prose and should go.
Check the installed @objectstack/spec tarball directly, not the docs. This lane has been bitten four times this round by claims inherited rather than measured.
⚠️ Whatever the answer, the replacement must match what the 22 files actually do, and should be checked against one of them rather than written from the type signature.
⛔ Landing path
AGENTS.md is a governed surface (2026-08-18 cross-repo ruling): draft-only + human merge. The PR opens as a draft and stays draft.
⚠️ Serialised behind #1229, which already has an AGENTS.md draft PR in flight for its §2 correction. ⛔ Do not dispatch these two into the same round — two drafts editing one governed file is a merge conflict a human has to resolve by hand, which is the worst place to create one.
Refs #1429 · #1229
Generated by Claude Code
Filed by the PM from #1429's report. Found and reported by the dev, correctly not fixed there (different file, different card). Filed unassigned.
The claim
AGENTS.md:147:The measurement
Verified by the PM on
origin/main, with a control term because the finding is a zero:defineFlowoccurs nowhere insrc/. The 22 flow files are plain typed object literals. The zero is real, not a broken search.📌 Correction to the source report, which said
CLAUDE.md: the line is inAGENTS.md.CLAUDE.mddoes not carry it.Why it matters more here than in a normal repo
AGENTS.mdis the instruction surface for the agents that write this app — its own Prime Directives say so, and this repo's stated purpose is being the reference an agent reads before authoring metadata. An instruction naming an API that does not exist in the codebase is not a cosmetic error: an agent following it writes a call that has no in-repo precedent to pattern-match against, and then either invents an import or silently diverges from all 22 existing files.This is the same class as #1229 (
filtervswhere), where agent-facing prose confidently stated the opposite of the shipped behaviour and was passed verbatim into a dispatch brief. Confidently wrong instruction is worse than absent instruction because it gets copied forward.What to establish before writing anything
The card is not "delete the line". Three possibilities, and they need distinguishing:
FlowSchema.parse()/defineFlow()exists in@objectstack/spec/automationand this repo simply doesn't use it — then the instruction is aspirational, and the honest fix is to say what the repo actually does, or to say why the wrapper is preferred and file the migration.Check the installed
@objectstack/spectarball directly, not the docs. This lane has been bitten four times this round by claims inherited rather than measured.⛔ Landing path
AGENTS.mdis a governed surface (2026-08-18 cross-repo ruling): draft-only + human merge. The PR opens as a draft and stays draft.AGENTS.mddraft PR in flight for its §2 correction. ⛔ Do not dispatch these two into the same round — two drafts editing one governed file is a merge conflict a human has to resolve by hand, which is the worst place to create one.Refs #1429 · #1229
Generated by Claude Code