feat: establish Amnion projection-first terminal slice - #2
Merged
Conversation
This was referenced Jul 21, 2026
Contributor
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Amnion needs to establish its role as the calm human-facing projection surface for governed work. A generic TUI would risk making Amnion a second execution or governance authority.
What this PR proves
readyremainsWaitingForEvidence; only explicit Decapod validation and proof evidence can produceReadyForReview.Ownership boundary
Amnion projects and routes attention. Pincher owns agent/provider/tool execution and runtime events. Decapod owns sessions, todos, workspaces, approvals, validation, proofs, and promotion truth. The current adapter is fixture/replay only because Pincher’s current open event payloads are not yet a published host protocol.
Implementation
src/events.rs: provisional transport-neutral event envelope with strict parse checks.src/projection.rs: deterministic timestamp/event-ID ordering, duplicate idempotency, custody/evidence projection, stale/unavailable/conflict handling, unknown-event preservation.src/sources.rsandsrc/fixtures.rs: replaceable adapter boundary and twelve representative scenarios.src/app.rsandsrc/ui.rs: calm intent navigator, custody spine, meaningful activity, progressive detail, Quiet/Summary/Detailed/Debug.docs/adr/001-projection-first.md: architecture decision record.README.md: role, controls, fixture run path, limitations, and authority semantics.Fixture scenarios
Active healthy; awaiting approval; blocked; validation failure; proof pending; authoritative ready; failed with cause; handed-off; stale; unavailable; unknown future event; conflicting/incomplete evidence.
Verification
Passed locally:
Decapod orientation, session, todo claim, isolated workspace, context resolution, generated-spec refresh, and proof recording were run. The committed branch includes the 0.72.17 generated entrypoint/spec refresh. Local
decapod validate --format jsonreaches 159 passing gates but remains blocked by the installed validator resolving root entrypoints/.decapod/README.mdfrom the canonical checkout rather than this recognized isolated worktree, plus the expected host-side container proof gate.decapod agent.initanddecapod workspace statusconfirm the branch/worktree and no local modifications. CI runsdecapod init --proofanddecapod validatefrom a clean checkout.The final post-reconciliation workflow run passed both jobs: Rust checks and Decapod validation. The workflow uses
decapod init --prooffollowed bydecapod validate.Explicit non-goals
No provider integration, agent loop, shell/tool execution, patch application, daemon, HTTP/WebSocket service, persistent Amnion governance store, local approval/promotion authority, chat product, editor, remote multi-user mode, plugin system, or speculative Pincher protocol.
Follow-on issues
Commits
3275f98feat: establish projection-first terminal slice514ed47chore: record Decapod workspace proof0fb2f78docs: clarify provisional projection adapterd1072cfci: validate Rust and Decapod surfacesa030f1bchore: keep Decapod runtime state out of source treecd8ab70chore: exclude generated Decapod bookkeeping03f6e15chore: refresh Decapod generated specs6250e36chore: reconcile main into projection slice