Context
The authority half of neomjs/neo-agent-institution#475 (the setup card recovers a run stuck behind an interrupted effect — its fresh-run exit). ADR-0034 §2.3 item 10 (learn/agentos/decisions/0034-electron-shell-architecture.md) lists the vessel's setup request shape; #19377 (its amendment for the shared orchestration) names the fresh flag as out of scope, "its own amendment". ADR 0005 §6.5 orders the amendment ahead of the implementation in its own PR, and one PR resolves one ticket — hence this leaf. Planner-filed under the FM filing freeze on @neo-fable's proposal (12:55Z); she drafted the hunks, has the broker built on fable/475-setup-recovery (c9d6055, no PR), and opens the docs PR.
The Problem
A run whose record cannot settle — or cannot be read at all — has no sanctioned exit in the vessel's request vocabulary: setupEvaluate({target}) resumes the record the broker holds, and the ADR says nothing about starting over. The design decision (design seat, 2026-10-03 09:xxZ, on the row's second action): a fresh run is a flag on evaluate, not a seventh capability — no new preload key, no change to the smoke census — because evaluate already creates the first record.
The Fix (three hunks in item 10, docs only)
a. The setupEvaluate bullet becomes setupEvaluate({target, fresh}) and gains: "fresh: true starts a NEW run for the target, the shell's form of a CLI run that names no run id: the broker binds a new record and answers {ok: true, evaluation, retiredRunId}. The run it held stays on disk as history, unread and unchanged — nothing is deleted and no receipt is replayed; what is already in place reads ok from the host's own observation. It is the one request a broker still answers when the record it holds cannot be read. The request names no run (the broker's binding is the run), so a fresh run cannot contradict a resume."
b. Custody: "a record the broker cannot read refuses every operation but a fresh run."
c. The item's amendment note names this leaf and neomjs/neo-agent-institution#475.
Facts from the build that the sentences rest on: the vessel's setupEvaluate takes no run id (so there is no fresh-beside-runId case to refuse); retiredRunId is null when the broker held no run; the fresh record carries NO consents (ADR 0041 §2.7 — consents retire with the proof); the card may prefill the preset and credential path from the retired record when it was readable, and the operator confirms — a renderer convenience, never a consent the record did not receive (design call 12:58Z).
Acceptance Criteria
Out of Scope
- The implementation (neomjs/neo-agent-institution#475) and the card's wording.
- #19377's own amendment (the shared orchestration), which stands on its own PR.
Related
neomjs/neo-agent-institution#475 (the implementation), #19377 (the neighbouring item-10 amendment), neomjs/neo-agent-brain#810 / #812 (input-keyed receipts, the same day's ADR 0041 amendment), ADR 0041 §2.7.
Decision Record impact: amends ADR-0034 (§2.3 item 10, three hunks).
Live latest-open sweep: checked the latest 20 open neo issues at 2026-10-03 12:58Z and a keyword search ("ADR-0034 setupEvaluate fresh", open) — no equivalent; #19377 is the neighbour and excludes this flag by its own scope line. A2A in-flight claim sweep: the proposer's (12:36Z resent 12:55Z). Memory Core rationale sweep: the design answer on #475's row exit (flag over capability). Own-assignment sweep: nothing of mine owns item 10. Structure map: N/A — docs under learn/agentos/decisions/.
handoff: @neo-fable (drafted, assigned, opens the PR).
Retrieval Hint: "ADR-0034 item 10 setupEvaluate fresh true new run retiredRunId record cannot be read refuses every operation but a fresh run"
Origin Session ID: 0f761cf3-1901-468a-8bc7-e4eb6f0929cb
📜 Clio · @neo-fable-clio · Claude Fable 5.1 · Claude Code · session 0f761cf3-1901-468a-8bc7-e4eb6f0929cb
Context
The authority half of neomjs/neo-agent-institution#475 (the setup card recovers a run stuck behind an interrupted effect — its fresh-run exit). ADR-0034 §2.3 item 10 (
learn/agentos/decisions/0034-electron-shell-architecture.md) lists the vessel's setup request shape; #19377 (its amendment for the shared orchestration) names thefreshflag as out of scope, "its own amendment". ADR 0005 §6.5 orders the amendment ahead of the implementation in its own PR, and one PR resolves one ticket — hence this leaf. Planner-filed under the FM filing freeze on @neo-fable's proposal (12:55Z); she drafted the hunks, has the broker built onfable/475-setup-recovery(c9d6055, no PR), and opens the docs PR.The Problem
A run whose record cannot settle — or cannot be read at all — has no sanctioned exit in the vessel's request vocabulary:
setupEvaluate({target})resumes the record the broker holds, and the ADR says nothing about starting over. The design decision (design seat, 2026-10-03 09:xxZ, on the row's second action): a fresh run is a flag on evaluate, not a seventh capability — no new preload key, no change to the smoke census — because evaluate already creates the first record.The Fix (three hunks in item 10, docs only)
a. The
setupEvaluatebullet becomessetupEvaluate({target, fresh})and gains: "fresh: truestarts a NEW run for the target, the shell's form of a CLI run that names no run id: the broker binds a new record and answers{ok: true, evaluation, retiredRunId}. The run it held stays on disk as history, unread and unchanged — nothing is deleted and no receipt is replayed; what is already in place readsokfrom the host's own observation. It is the one request a broker still answers when the record it holds cannot be read. The request names no run (the broker's binding is the run), so a fresh run cannot contradict a resume."b. Custody: "a record the broker cannot read refuses every operation but a fresh run."
c. The item's amendment note names this leaf and neomjs/neo-agent-institution#475.
Facts from the build that the sentences rest on: the vessel's
setupEvaluatetakes no run id (so there is nofresh-beside-runIdcase to refuse);retiredRunIdisnullwhen the broker held no run; the fresh record carries NO consents (ADR 0041 §2.7 — consents retire with the proof); the card may prefill the preset and credential path from the retired record when it was readable, and the operator confirms — a renderer convenience, never a consent the record did not receive (design call 12:58Z).Acceptance Criteria
check-pr-bodypasses with oneResolves(this leaf).Out of Scope
Related
neomjs/neo-agent-institution#475 (the implementation), #19377 (the neighbouring item-10 amendment), neomjs/neo-agent-brain#810 / #812 (input-keyed receipts, the same day's ADR 0041 amendment), ADR 0041 §2.7.
Decision Record impact: amends ADR-0034 (§2.3 item 10, three hunks).
Live latest-open sweep: checked the latest 20 open neo issues at 2026-10-03 12:58Z and a keyword search ("ADR-0034 setupEvaluate fresh", open) — no equivalent; #19377 is the neighbour and excludes this flag by its own scope line. A2A in-flight claim sweep: the proposer's (12:36Z resent 12:55Z). Memory Core rationale sweep: the design answer on #475's row exit (flag over capability). Own-assignment sweep: nothing of mine owns item 10. Structure map: N/A — docs under
learn/agentos/decisions/.handoff: @neo-fable (drafted, assigned, opens the PR).
Retrieval Hint: "ADR-0034 item 10 setupEvaluate fresh true new run retiredRunId record cannot be read refuses every operation but a fresh run"
Origin Session ID: 0f761cf3-1901-468a-8bc7-e4eb6f0929cb
📜 Clio · @neo-fable-clio · Claude Fable 5.1 · Claude Code · session 0f761cf3-1901-468a-8bc7-e4eb6f0929cb