Agent rules
This page answers what an agent must do in a repository that uses the method. ot-init installs these rules as a managed block in the project's AGENTS.md. The list below restates the block in numbered form, with links to the pages that detail each rule.
- Read
on-track/INDEX.mdbefore looking for a track or supporting artifact. Never scan the wholeon-track/tree for discovery. See Artifacts. - Classify each request before allocating anything. Split a compound request into parts and handle each part in its own lane. See Request classes.
- The user's explicit choice wins in both directions. Naming
ot-intent, or asking for a track or an intent, selects the Highway for an edit. Asking to do it directly, or without a track, selects the Express lane. - An operational request (running, building, installing, inspecting, or reporting without editing a versioned file) is executed directly, with no track or artifact, and is never recorded inside a track, not even as an
assets/note. - An edit takes the Express lane only when all five Express criteria hold. Announce the lane in one sentence, implement, run the check, write a crumb, and report. Create no track or other file under
on-track/and do not regenerate the index. There is no signal at the end. - If an Express criterion stops holding, stop before the edit that breaks it, name the failed criterion, and start the Highway with
ot-intent. - Every other edit, and every edit with an uncertain Express criterion, takes the Highway: intent, spec, implement, ship. It starts as
intent.mdinon-track/tracks/NNN-slug/. - Route research-only requests to
ot-researchand assessment-only requests toot-assess, without a track. - Do not implement on the Highway until
spec.mdandtasks.mdboth havestatus: approved. Intent approval is not required before the spec. - On the Highway, intent, spec, and implement end with a four-bullet summary and a next-step line, then stop for the user's signal, read as plain text. Green (
.or a message that only means proceed) chains the next skill for the same track and never changes intentstatus. Red (xor a message that only means stop) stops, changes nostatus, deletes nothing, and undoes no code. Any other message is yellow: an instruction to the current skill, followed by the summary again. Keep the host's question tool for questions, not signals. See Signals. - Ask only what is not already settled by the request, the context you hold, a lookup tool the project names, or one targeted read, and serve the request as stated. Blocking questions are asked on every route: at most four per round, one theme per round, each naming the decision it unlocks, with options and your recommendation first. On the Highway ask only blocking questions: one round in intent, up to three in spec; suggest Off Road when the request is too vague to draft or blocking questions outlast the third spec round. "You decide" delegates; record the delegated decision and list it in the summary for veto.
- Off Road is on from the moment the user asks for it until that track's spec is approved. While it is on, rounds also carry the design choices you would otherwise settle alone, as many rounds as the open points need; survey the established options before each round and suggest research when the terrain needs study beyond the track. A spec returned to
draftafter approval does not turn it back on unless the user asks again. - File an ADR only when the decision meets the ADR threshold, in every lane. In the Express lane, a qualifying ADR is the sole artifact exception: file only that ADR and regenerate the index. See Thresholds.
- Keep the track root to
intent.md,spec.md,tasks.md, andassets/. Loose files are forbidden; auxiliary outputs go underassets/. - The intent stays
draftuntilshipped,dropped, orsuperseded.droppedabandons the work without implementation.supersededrequiressuperseded_by; never invent it. Implement ownsshippedand asks before writing it. - Write supporting artifacts only at their locations:
on-track/refs/<slug>.md,on-track/research/<slug>.md,on-track/assessments/<YYYY-MM-DD>-<slug>.md,on-track/decisions/<NNN-slug>.md(superseded ones inon-track/decisions/archive/),on-track/handoffs/<timestamp>-<slug>.md. - Write the crumb after the Express check, pass or fail, at
on-track/crumbs/<YYYY-MM-DD-HHMMSSZ>-<slug>.mdin UTC. Whenon-track/crumbs/.gitignoreis missing, create it with the single line*. See Artifacts. - To undo an Express change, reverse only your own edits, hunk by hunk, so the user's uncommitted work in the same files survives, and delete the crumb.
- The method never commits on its own. When preparing commits, read the crumbs oldest first, group the diff by each crumb's
filesandChanges, write the message from itsRequestandCause, then delete every crumb you consumed and every crumb whose files no longer differ fromHEAD. See Committing.