Skip to content

AGENTS.md:147 tells authors to build flows with FlowSchema.parse() / defineFlow() — neither appears anywhere in src/; all 22 flow files are plain typed object literals #1436

Description

@os-trump

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:

  1. 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:

  1. 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.
  2. It existed and was removed/renamed — then the line is stale and should describe the current spelling.
  3. 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

Activity

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

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentationpm:dispatchedDispatched to a dev agent by /pm-dispatch

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions