Spec, plan, tasks.
The expensive thinking happens once, in writing, and ends at a human.
specs/orders/
spec.md/spec · what and why, with the assertions
plan.md/plan · decisions with exact versions
tasks.md/tasks · files and line ranges
verification.md/verify · later
Ambiguity logged as an explicit assumptionspec.md
Versions pinned exactly, never latestplan.md
Tasks anchored to files and line rangestasks.md
ends at · a human reads it
Extracted,
not invented.
The codebasegraph
A map extracted from your code.
Not invented by another model.
.EDIFY/GRAPH/
SORTED · CHECKSUMMED TEXT
SORTED · CHECKSUMMED TEXT
edify init reads every file and writes the graph.
A rebuild over unchanged source is byte-identical.
Python, parsed with a real syntax treebuilt in
Other languages, parse-gradewith Universal Ctags
Other languages, without Ctagsline scanner, and says so
Any node written by a modelnever
docs/graph.md
Tests first. Then make red go green.
phase 1
Contracts frozenno edits afterphase 2
Suite entirely redthe targetphases 3 to 6
Red to greenin order, each checkedphase 7
/verifyin a fresh agentpytest · an illustration of the method, not a recorded run · docs/verification.md
Evidence, not a claim.
An implementer approving its own work is not verification. A report anyone can reproduce is evidence.
edify checkreal output
edify check
specs/orders/plan.md:70: error: [plan-decision-no-version]
D-2 names no exact version
1 error · 1 warning · 0 notes
# in your CI, owned by your team
- run: pip install edify-agents-cli
- run: edify check --exit-code
- run: edify governance verify --exit-code
.github/workflows/ci.ymla gate you own
Verification in a session that wrote no code/verify
Document rules with file and lineedify check
A gate, when you ask for one--exit-code
Blocking changes on its ownnot claimed
does this today not claimed
Six commands you will actually type.
They run in your terminal, work offline, and print plain text or --json.
edify initDetects the stack, extracts the graph, records every file it put there.
edify doctorGreen, amber, red. Amber means it works, degraded, and names where.
edify graphwhere, dependents, defines, references, overlap. File and line.
edify checkWhat is wrong with the documents. --fix, --json, --exit-code.
edify governanceEvery installed file with its origin, licence and hash.
edify feedbackWrites a file on your machine. Nothing leaves on its own.
docs/cli.md · every command, with real output
what EDIFY does not do
Wrap the agent runtime.
Host a model.
Run a server or a daemon.
Enforce at runtime.
Make a weak model competent.
It makes a competent model efficient.
EDIFY
brief to verify · one graph underneath · every step a file
Readable files. Nothing hidden.
edify-agents-cli 0.2.0 · local-first · no telemetry
Every step a file
Three documents,then red to green.
The slow part ends at three files a person reads. The fast part ends at a suite that was red before any core logic existed, and is green now.
specs/orders/
├─ spec.md /spec
├─ plan.md /plan
├─ tasks.md /tasks
└─ verification.md /verify
pytest
red before the code exists · green after
tests written from the spec's assertions
What lands in your repository
One folder,and fifteen lines.
About fifteen lines in your agent's instruction file, and one folder. Delete it and your repository is exactly what it was.
CLAUDE.md # ~15 lines: the repo, the commands, the graph
AGENTS.md # the same block, for every other runtime
.edify/
graph/ # nodes.tsv, edges.tsv, meta
skills/ # the subset your stack matched
commands/ # the five command files
conventions.md # scraped, no model call
governance.tsv # origin, licence, hash
specs/<feature>/ # spec, plan, tasks, verification
One row of .edify/governance.tsv
path.edify/skills/planner.md
kindskill
originlibrary
licenceFSL-1.1-Apache-2.0
sourceedify-agents-cli@0.2.0
Every file EDIFY installs is recorded at the moment it lands. edify governance verify tells you which ones changed since. A hash and a filename you can check beat a promise you have to trust.
Next