This document defines the estate-level meaning of the canonical contractiles/
templates and the k9 Kennel/Yard/Hunt tiers. Use it when auditing whether a
repository’s declared invariants, trust boundaries, rollback story, and future
intent are real rather than template residue.
The role names are stable even when file formats vary. The audit question is the same in every repo: does this file encode a real project-specific contract, or is it still inherited scaffolding?
Mustfile is not a checklist of nice-to-haves. It is the release-blocking
surface for invariants that are meant to be machine-checked.
Typical examples:
-
schema/version alignment
-
parser or ABI integrity checks
-
repository-specific placeholder bans
-
required proof/test/coverage surfaces
Trustfile.a2ml is where a repo states who or what is trusted, what actions are
permitted, and what integrity checks define the boundary. It should be specific
about trust actions and deny lists, not generic reassurance.
Dustfile is not generic hygiene text. It is the rollback and deprecation
surface. Estate audits should read it as the place where recovery paths,
reversible state changes, and trace-preserving undo semantics are documented.
If a repo claims recovery or staged retirement, Dustfile should say how that
happens and what evidence remains behind after the rollback.
Adjustfile defines the drift tolerances the repo accepts and the corrective
actions it takes when observed state deviates from declared state. Each
tolerance should have a concrete action ("drift ≤ X triggers action Y"),
not a vague aspiration to "monitor" something.
Bustfile is the hard-stop surface. Where Mustfile says "this must hold"
and fails the run when it doesn’t, Bustfile says "this is broken / expired
/ must-not-run" — declaring brokenness explicitly so downstream consumers
can see it rather than encountering it at runtime. Useful for deprecated
paths that still exist but must not be called.
Intentfile.a2ml holds both the commitment axis and the aspiration axis
in one file, in two sections:
-
— concrete tracked next-actions. Each entry has a description, optionally a probe (shell command indicating done-ness), and status declared → in_progress → done / deferred / retired. The estate treats these as the repo’s public commitment list. -
— horizon-level aspirations grouped by near / mid / far. Entries have no probes; they are desires the project can see but has not yet committed to. Keeping them here prevents confusion between "we will do X" and "we would like X to be true some day", while consolidating both axes on the single north-star file.
Intent is guidance, not evidence of completion. Intentfile content may
not be presented elsewhere as already-shipped work.
| Tier | Canonical Template | Capability | Audit Expectation |
|---|---|---|---|
Kennel |
|
Pure data. No subprocesses, no filesystem writes, no network access. |
Safe for metadata, declarative settings, and other read-only structured outputs. |
Yard |
|
Nickel evaluation with contracts and validation, but no side effects. |
Use for validated configuration, schemas, and policies that need machine-checked structure. |
Hunt |
|
Full execution surface with recipes and side effects. |
Must declare side effects clearly, support dry-run review, and be signed before the estate treats it as trustworthy automation. |
The plain contractiles describe what must be true, what is trusted, how to
roll back, and what the project intends to become. k9 components are the
automation surface that can validate or enforce those declarations.
Estate-level interpretation:
-
Mustfileprovides the invariant claims (gating). -
Trustfile.a2mlstates who may exercise authority (gating). -
Adjustfiledefines drift tolerances and corrective actions. -
Dustfiledefines rollback and deprecation semantics. -
Bustfiledeclares hard-stop / expiry conditions (gating). -
Intentfilerecords committed next-actions () and horizon aspirations (). -
k9provides graded automation to validate or enact those contracts.
If a repo claims k9 enforcement, the automation must correspond to the stated
contractiles rather than floating as an unrelated demo component.
A repo should be marked as incomplete if any of the following remain true:
-
the contractile files are still template text with generic sample commands
-
Dustfiledoes not describe real rollback or deprecation behavior -
the intent file and roadmap contradict each other
-
Hunt-level
k9components are unsigned or their side effects are undocumented -
the repo claims enforced invariants, but the
Mustfileandk9surfaces do not encode those invariants
Conversely, a repo is in better shape when the contractiles make the actual project boundaries legible to a reviewer without requiring guesswork.