INTAKE

Wrong? Fix it from where you found it.

Every claim and every node carries a report link. It opens an issue with a fenced vibex block naming exactly what the reader was looking at. The request arrives with its coordinates attached, instead of “the auth docs seem wrong”.

# in any spec
"meta": { "repository": { "url": "https://github.com/acme/shop" } }

What the issue carries

```vibex
intent: doc-problem
document: relay.docs
claim: session.ttl
confidence: verified
spec: relay.c4#bff
commit: 42d3ee6c27fdc16a1933a96ec9e2d7293161d251
```

The block sits under the reader's own words. It names the document, the claim and what the build thought of it, the node, and the commit the page was built from. A person skims past it; an agent reads it first.

Four intents, each matching an issue template: doc-request, doc-problem, spec-gap and proposal.

An issue body is public input, and anyone can type a fenced block. Triage treats the block as a hint and checks every ID against what the build actually contains.

What happens next

vibeX runs this loop on its own repository with .github/workflows/intake.yml and .github/scripts/triage-issue.mjs. Copy both into yours and point the triage step at your specs folder.

1 · triage
Runs on any issue labelled intake. It resolves the block against the build and replies either way: ready when it can be acted on, needs-info with a precise question when it cannot, such as which claim does not exist or which diagram was never named.
2 · authoring
Only for ready issues, and only if ANTHROPIC_API_KEY is set. An agent follows the same SKILL.md you do, edits the spec, and runs validate and docs --check.
3 · pull request
The change arrives as a pull request that closes the issue. It never merges on its own. A person reviews it, and the drift check has to pass.
no key
Triage still runs, still replies and still labels. For a ready issue it says that nothing will be written automatically and leaves it for a person.

The lines it holds

It answers either way

Actionable or not, the issue gets a reply and a label. An intake queue that answers nothing is worse than none.

It asks rather than guesses

An unresolvable claim ID or an unnamed diagram gets a question, not a pull request. A confident wrong change costs a reviewer more than an unanswered issue.

It cannot assert its way out

If the agent could not establish something from the code, it goes in coverage.out_of_scope, never into an asserted claim under somebody's name.

What it connects to

DOCS

Where most reports start

A claim that reads wrong is the most common report, and the block names it exactly.

Docs →
DIAGRAMS

“This table is missing”

A spec-gap from a node names the spec and the node the reader was on.

ERD →
PROPOSALS

Argue before building

A proposal issue becomes specs marked meta.proposed, so everyone can see they describe something that does not exist yet.

Proposals →