Skip to content

Operations

Ânderson Q. edited this page Jul 21, 2026 · 5 revisions

Operations

Running TRON day to day.

The heartbeat (WAKE)

TRON is autonomous between your inputs. ./tron --watch idles and wakes on register work, doing one bounded tick each time — filling free slots, clearing ahead, advancing — and idles again when there's nothing to do. It exits cleanly when a STOP file appears. A live tron start console keeps the same engine ticking while you watch.

Walls and your decisions

Anything no worker can clear routes architect-first. Only what the architect genuinely can't resolve — an operator-only task (deploys, secrets, production), an external blocker, human eyes, a true impasse — reaches you as a page (>>ESCALATE), in the terminal and, if configured, on Telegram. The block parks and its slot frees until you decide. A parked block holds the session open — TRON won't end with an unresolved wall on the board.

Telegram (optional)

With TELEGRAM_BOT_TOKEN + TELEGRAM_CHAT_ID in a gitignored .env, milestone notes (run start / block done / run done) and pages ride Telegram, and a page waits for your reply there. Missing keys degrade gracefully to the terminal. Keys live only in .env.

Recovery after a crash

Crash-safety is built into every tick — decisions are recorded as they happen (events.jsonl), so a restart resumes from the truth. At boot the engine sweeps: stray agent processes are killed, unverified branches are preserved as orphan/*, and their blocks are re-dispatched fresh. Nothing is double-spawned and no landed work is lost. (Stale worktree arenas from a killed run are also swept at boot.)

Session end

TRON ends only when the whole pipeline is settled — nothing building, nothing waiting on a wall, the architect idle. Ending releases the whole fleet (workers never close themselves). stop in the console does the same on demand.

Validate the instance

Every module ships selftests (no agents, no tokens). Run the suite before trusting a change:

python3 engine/tron.py --selftest && python3 engine/gate.py && \
python3 engine/glossary.py && python3 engine/events.py && \
python3 engine/workflow.py && python3 engine/bpmn.py && \
python3 evaluation/harness.py --selftest

The same suite runs in CI on every push. A generated doc that has drifted from its source fails the matching module's doc-sync selftest — regenerate with --write.

Troubleshooting

  • A worker looks stuck. It isn't killed on silence alone — the engine probes, re-issues once, then pages (talk-first). Watch events.jsonl (or the run transcript) for the sequence.
  • Blocks aren't dispatching. A block is dispatchable only once its file is ready and every dependency has landed on trunk; the architect authors ahead. Raise max_parallel if slots sit free with ready work.
  • A >>DONE won't stand. The truth gate bounced it — commits missing, trunk touched, tests red, or the >>CONFIRMED per-criterion evidence was incomplete. After gate_fails bounces it escalates.
  • The session won't end. Something is still live — most often a parked wall awaiting your decision. pipeline shows it.
  • A generated doc looks wrong. It's generated — edit the source (glossary.py / workflow.toml / events.py) and run the module's --write, never the .md by hand.

See also: Concepts · Architecture.

Clone this wiki locally