Theme
Architecture Non-Negotiables
“Non-negotiable” means do not violate casually. Evidence can still change a rule through an explicit architecture update and ADR.
- Task ≠ Agent Run ≠ Agent Turn ≠ OS process.
- Agent Adapter ≠ Execution Environment.
- Provider Driver ≠ Agent Instance ≠ Adapter Strategy; capabilities belong to Strategy.
- Domain transitions do not perform Git/process/network/SQLite side effects.
- Important external side effects are preceded by durable Operation intent.
- Command accepted ≠ side effect complete.
- Process exit ≠ provider semantic completion ≠ Task ready for Review.
- Raw provider input is persisted before parsing once provider ingestion exists.
- Normalized events that come from raw input carry a RawRef.
- Fact and Claim provenance is never omitted/merged.
- Review and Verification are valid only for the revision they evaluated.
- Use the real Git executable and real temporary repos in Git tests.
- Worktree path identity uses immutable IDs.
- Never automatically destroy dirty/unrecoverable work.
- Worktree creation/cleanup are lifecycles, not fire-and-forget commands.
- Live streaming ≠ historical storage; histories are bounded/paged.
- Realtime replay is bounded; large gaps use snapshots.
- Transport connected ≠ state fresh.
- Unsupported capability never silently degrades to weaker semantics.
- Provider probe ≠ provider Start.
- Host safety gating ≠ conversational Involvement Mode.
- Managed processes go through one argv-based ProcessRunner boundary.
- Renderer does not own filesystem/Git/provider/process execution.
- TanStack Query owns authoritative client-side server data; Zustand is ephemeral UI only.
- Canonical docs remain current; ADRs explain reasons rather than patch stale specs.