Architecture decisions
One file per decision: what was decided, why, and what it binds later work to. Read before re-proposing something that looks like a gap β it may already have been decided against, on purpose.
- 0001 β Orion owns orchestration; a toolkit supplies methodology inside a stage, never control flow across stages
- 0002 β Superpowers declined as a dependency; three of five ideas adopted natively
- 0003 β Ponytail kept, scoped to development only
- 0004 β No SQLite; config, event logs and the audit trail stay as files
- 0005 β Agent roster is global, not per-repo
- 0006 β
orion newand the plan stage are sequential phases, not two front doors - 0007 β Auto effort is a standing preference, not per-ticket
- 0008 β Parallelism ships level 3, then level 1, then level 2
- 0009 β One canonical slug names the Jira project, workspace and git repo
- 0010 β The routing vocabulary is a published contract, and five actors are routable
- 0011 β Orion owns the landing queue; GitHub's merge queue is not adopted
- 0012 β A tracker project gets one workspace; a second
orion planrefuses - 0013 β
orion newcreates the tracker project and no workspace - 0014 β a supervised run gets a config directory Orion curates, and no MCP servers
- 0015 β under a merge ref Orion is the gate on landing, and
developkeeps a post-merge check as the backstop - 0016 β implementation fans out by Go package, the implementer proposes and a deterministic check disposes, and only the parent verifies
- 0017 β the integration state machine carries the sophistication; the queue is Go channels and JSON, with a git SHA recorded at every transition
- 0018 β the fan-out unit is per stage: the Go package for implementation, the case group for test authoring, where 0016's two hazards do not apply
- 0019 β Orion is toolkit-agnostic; nj-agents ships as the default, not a hardcoded dependency
- 0020 β A toolkit must ship a
skills/directory, and vendoring is global to the machine - 0021 β spec-kit runs inside Orion's stages; its workflow engine, extension hooks and bundles are declined
- 0022 β spec-kit is installed per project by
specify initat provisioning, and Orion pins the feature directory - 0023 β One tracker project is one
.specify/; features accrue asspecs/NNN-*/; the spec is a living document - 0024 β the local web surface is authenticated by a per-process token in a custom header; Origin and Host checks are additive layers, not alternatives
- 0025 β the web front end moves to React + TypeScript + Fluent UI 2, built at dev time and committed like the current UI
- 0026 β the web surface writes configuration from an allowlist, through the CLI's own validation; agents first
- 0027 β a person's answer reaches the ticket through an inbox the watcher drains; the web process holds no tracker credential
- 0028 β a person clears a gate from the browser through four CLI commands, argument lists built server-side; local approval is off unless turned on
- 0029 β a person starts work from the browser through three planned commands; children belong to the web server and stop with it
- 0030 β a project is the web surface's unit, held in the registry;
orion newandorion planrun from the browser, the remote is never edited there - 0031 β failed tickets retry when the work branch moves, at most twice; evictions are a record, and a ticket evicted twice goes to a person
- 0032 β the label is the lock; a PID and a heartbeat together decide whether anyone still holds it
- 0033 β merge approval is a Slack reaction from a named approver, read by polling; any rejection wins
- 0034 β the watch draws a full-screen view on the alternate screen and keeps every line in a log file
- 0035 β watch events export over OTLP, never block the watch, and never carry a secret
- 0036 β a release is promoted by a person through five named checks that block only what would ship something wrong
- 0037 β QA's tests run against the pre-change commit, and fix mode keeps a failing test from being weakened
- 0038 β the web surface sets Jira and Slack credentials write-only, into Orion's own 0600 file; never sent back, Linear not offered
- 0039 β an answered question continues the run that asked, on its own branch; a retry still gets a fresh one; the agent session is not resumed
Ticket references
Some decisions mention keys such as OR-149. They point into Orion's own tracker, which is not public; each decision is written to stand without them.