0.52.0
Changed
-
aep --helpoffers four words and a preflight instead of twenty-three verbs. The first level of the command line is nowgovern,plan,drive,observeanddoctor— the four area directoriescrates/was divided into in 0.51.0, plus the one verb that belongs to no area — so which command do I want? and which crate decides this? have the same answer.Every spelling that worked before still works, and prints the same bytes. The older top-level verbs are hidden top-level aliases: identical standard output, identical standard error, identical exit status, and no notice on either stream. Nothing is deprecated and nothing is scheduled for removal; the aliases are hidden from
--helpbecause they are compatibility rather than a choice being offered.aepandprotocolboth carry the whole change, so invariant 10 holds by construction.One exception, and it is clap's rather than a gap in this change: a usage error or
--helpnames the path it was invoked by.Usage: protocol validateandUsage: protocol govern validateare two different lines because they are two different invocations — theUsage:line says how this call was spelled, not what the command decided. Everything below it, and every byte of an accepted call, is identical between the two spellings; only that one line is allowed to differ, and it is expected to.was is aep validateaep govern validateaep resolveaep govern resolveaep inspectaep govern inspectaep evaluateaep govern evaluateaep explainaep govern explainaep describeaep govern describeaep schema …aep govern schema …aep workflow {render,instruct,flow}aep govern workflow {render,instruct,flow}aep artifact …aep plan artifact …aep serveaep plan serveaep entity …aep plan entity …aep auditaep plan auditaep workspace …aep plan workspace …aep conformanceaep plan conformanceaep reverse …aep plan reverse …aep drive {run,status,resume,transition}unchanged — driveis an area and was already the verbaep eval {matrix,run}aep drive eval {matrix,run}aep trace …aep observe trace …aep contract …aep observe contract …aep property …aep observe property …aep specification …aep observe specification …aep evidence …aep observe evidence …aep doctorunchanged — it reports on the installation, not on any area evalis the only verb that changed area rather than gaining a prefix, andaep eval matrixstill reaches it. -
The driven shell surface admits both spellings. A driven
llmstep'sBashgrant is one simpleprotocol plan artifact …orprotocol observe trace …invocation, by either spelling. The step maps underdrivers/development/now ask for the grouped one, and a surface that matched on the second word would have refused every call it asked for. -
The step maps, the driver prompts, the guides, the CLI reference,
README.md,AGENTS.mdand this repository's own tests use the grouped spellings. Recorded transcripts, themetaharness.event/1fixtures, the trace-specification rows judged against them and the eval case text handed to an agent keep the flat spellings, marked# recorded-under-this-name: a predicate matched against a finished run is a claim about that run's bytes.
Fixed
aep eval run --streamexits with the verdict it prints. The ingest printednot conformant: the run contradicted 2 expectation(s) … (exit 1)— orundecided: … (exit 3)— and exited 0, so a caller reading the status took a contradicted replay as a replayed transcript, which is what the agentplugins gate did on 2026-09-03. The three codes are nowaep trace check's own, read off the same record:0conformant,1contradicted,3undecided. A spawn is unchanged and still exits0whenever it launched anything: its last line is a ledger over several runs rather than one verdict, and a paid run whose records were written is not a run that failed to happen.aep eval run's preflight reports every fault of the child'sPATH, not the first. A staleaepin~/.local/bin(EVAL-RUN-017) masked a missingessbeside it (EVAL-RUN-018), so an operator with both paid two live round trips to learn about the second. Both are found before anything is spawned and refused together, one line each, each naming what to go and fix (AGENTS.mdinvariant 3).trace evidence'sprovenance.commandis documented as the canonical spelling, and guarded. The record names the toolprotocolwhichever of the two binaries was invoked, which is what invariant 10 requires of an output — acommandthat followed the caller's binary would make the same check through the two names produce two different documents, and every committed evidence record would diff against a rerun of the command that wrote it. Nothing in the gate said so and nothing tested it; the contract is now stated at the site, on the evidence page, and asserted by running both binaries and comparing the records they write byte for byte.