Trail Framework
Documentation
Always up to date — pulled directly from the trail-framework docs on GitHub.
07 - Decisions & Invariants
This page lists the current non-negotiables and major decisions that define Trail.
Invariants (do not violate)
- Artifacts are authoritative.
- Conversations are not the source of truth.
- Intent is human-owned and defines scope.
- Executors (AI or human) do not decide "what" is being built.
- Multi-intent is the current model.
- Products evolve through multiple immutable intents.
- Intents are immutable once execution begins.
- New work → new intent. - Old intents are preserved. - The only exception is if the initial intent cannot be used by the Manager (INTENT_UNUSABLE).
- Runs are execution-only.
- Runs answer "how," never "what." - Manager decides number and sequence of runs.
- Role separation is enforced.
- Architect/Product Owner defines scope. Human only. - Manager produces run artifacts. Human or AI. - Developer executes run artifacts. Human or AI. - Reviewer verifies outputs. Human only. - Architect/Product Owner and Reviewer may be the same person. No other role merging is permitted.
- Ambiguity must be documented, not inferred.
- If something is unclear, choose the simplest interpretation consistent with stated intent, document it in results.md, and stop if unable to proceed.
- Executors must not rely on context outside declared inputs.
- Separate chats are optional; file-bounded context is mandatory.
- The Developer reads run files only.
- The Developer's permitted inputs are: run artifacts (operating-instructions.md, tasks.md, dev-prompt.md) and any input files explicitly listed in those artifacts (trail/intents/<intent>/files/ and trail/meta/files/). - The Developer does not read intent.md, trail.md, global-operating-instructions.md, or any other intent-level or meta-level file. - The Manager is responsible for distilling all context the Developer needs into the run artifacts. Nothing relevant to execution may remain only in intent or meta files.
- Intent packages include three files:
- `intent.md` (authoritative scope document)
- `manager-instructions.md` (how Manager operates)
- `operating-instructions-override.md` (intent-level policy overrides)
Strong recommendations (high leverage)
- When using AI: use different models or different chats for Manager and Developer (reduces same-model drift).
- Keep
trail/meta/global-operating-instructions.mdstable; prefer intent-level overrides over frequent run-specific changes. - Run-level
operating-instructions.mdis a composite (global + intent override + run-specific); keep run-specific policy minimal.
Predictable input locations: Always store inputs in one of two places:
trail/intents/<intent>/files/— for intent-scoped inputs (recommended default)trail/meta/files/— for shared project inputs
Executors follow this lookup order: intent files first, meta files second. No run-level files/ folder.
Missing input policy:
- If a missing input is non-critical (placeholder icons, copy, help text): create a reasonable placeholder, store it under the appropriate
files/folder, and record it inresults.md. - If a missing input is critical (requirements, legal text, customer data): do not invent it. Stop and report the missing dependency.
Naming conventions
- Intent folders:
- intent-0001 style, or - intent-YYYY-MM-DD-mm-ss style
- Run folders:
- run-YYYY-MM-DD-HH-MM-SS (required — timestamp provides ordering, human readability, and collision avoidance)
Versioning
Versioning is a human responsibility. Trail does not enforce it, automate it, or have an opinion on how you do it.
If your project needs a version reference point for executors, a version.md file in trail/meta/ is a reasonable convention. That is the extent of Trail's recommendation.
To be explicit:
- Trail does not ship a
version.mdtemplate. - Trail does not specify a version file format.
version.mdis a recommendation, not a requirement.
If you don't need it, don't create it. If you do, build it however makes sense for your project.