Skip to content

Configuration

Ânderson Q. edited this page Jul 22, 2026 · 4 revisions

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.

engine/workflow.toml — the process, as data

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 once

One 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_word advances, reject_word routes back. Every verdict is recorded durably in the project's reviews.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).

.env — the Telegram line (optional)

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.

Worker personas

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.

Parallelism & experiments

  • max_parallel (or harness … --parallel N) sets how many independent blocks run at once.
  • harness … --ablate ARM runs the engine with ONE invariant disabled (truth_gate · judge_isolation · architect_first) — loud at boot, typed in the events — for causal experiments.

What a project brings

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 declare test: and trunk-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) and report-request.md (→ the architect writes, the engine records under reports/).

See also: Architecture · Operations.

Clone this wiki locally