-
Notifications
You must be signed in to change notification settings - Fork 2
Configuration
TRON's behaviour is data you can re-model, but never edit away: the lint refuses any flow that
drops an invariant (the truth gate, a recorded review, the single landing window). Three things you
touch: the flow (workflow.toml), the operator line (.env), and what a project brings.
The engine walks this file; the diagrams are generated from it. Every name it uses (gates, prompts, personas, words) must already exist in engine code — the lint rejects unknown names and unsound wiring.
[limits] # the operator's bounds
phase_turns = 40 # agent turns per phase, then it escalates
review_cycles = 2 # rejections, then escalate
gate_fails = 2 # bounced claims per gate, then escalate
max_parallel = 2 # independent blocks in flight at onceOne more limit, turn_seconds (default 900), caps the wall-clock of a single agent turn. It isn't in
the default file — it's a code default you can add to [limits] to override.
Each [[phase]] is one seat of work: an actor (a vocabulary role) under a persona, opened by an
assign prompt and closed by ONE word.
-
kind = "work"— the actor delivers; the closing word is verified by an engine gate (facts the engine derives itself), bounced via a bounce prompt on failure. -
kind = "verdict"— the actor judges;pass_wordadvances,reject_wordroutes back. Every verdict is recorded durably in the project'sreviews.md.
An optional note = "…" on a phase is parsed annotation prose (unlike a # comment): the engine
ignores it, and bpmn.py surfaces it in the diagram's annotations panel.
A project may ship its own workflow.toml to override the engine default — it must pass the same
lint bar (invariants intact).
With TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID (in a gitignored .env), the operator line rides
Telegram: milestone notes at run start / block done / run done, and pages that wait for your reply
there. Without it, everything degrades to the terminal. Keys live only in .env.
TRON ships a default persona per role under engine/prompts/persona_*.md (architect · reviewer ·
worker · aide). They're plain prompt files, not code — edit them or bring your own to match how your
team works; the engine composes each worker prompt from the role's persona plus the shared gateway rules.
-
max_parallel(orharness … --parallel N) sets how many independent blocks run at once. -
harness … --ablate ARMruns the engine with ONE invariant disabled (truth_gate·judge_isolation·architect_first) — loud at boot, typed in the events — for causal experiments.
TRON reads a project; it owns none of this. A project's committed core docs:
-
context.md— what it is ·principles.md— conduct ·playbook.md— shared infra memory (agents update it when they learn something durable). - optional
workflow.toml(overrides the default),policy.md(the acceptance bar). -
blocks/*.md— one per block; each may declaretest:andtrunk-test:commands. -
pipeline.md— the permanent register, written only by the engine. -
decisions.md— stays untracked (architect-exclusive by physics). - Operator channels, by filename:
parley.md(a question → the architect answers from artifacts) andreport-request.md(→ the architect writes, the engine records underreports/).
See also: Architecture · Operations.