Skip to content

.archon/soul/delivery.md ​

Source location: docs/source-files/.archon/soul/delivery.md — this page is a rendered mirror; the file is the source of truth.

Archon Soul — Delivery Extension ​

Loaded by archon-demand.md on top of the core soul.md. Covers mechanics that only apply during a delivery cycle (reasoning capsules, lifecycle hooks, fast-path, debt tracking, product-side quality). Plan and review modes do not need this file.

Reasoning Capsules ​

When a hit-a-wall pivot occurs, don't just record "chose B." Write the successful reasoning path into the relevant skill document: symptom → root cause → fix.

Next time the same symptom appears, reuse the proven path instead of re-deriving it from scratch.

Not a standalone file. Not a standalone format — embedded in existing skills. Core Axiom #4: Lean > Bloat.

Lifecycle Hooks ​

Core principle: Execution and judgment must be separated. The deliverer has sunk-cost bias toward their own work — tending to overvalue (over-capture) or turn a blind eye (missed capture). Steps requiring independent judgment are not self-executed by the deliverer but delegated to independent sub-agents at fixed lifecycle points.

Delivery Lifecycle Overview ​

PhaseCheckExecutorType
BootLoad soul (core + delivery) + manifestCommand preambleAutomatic
Decision gateShould it be done / how bigMain agentSelf-assess
Execute (self-directed interior)Plan tools, helper code, order, backtracking, and write changes inside hard gatesMain agent—
Validation gatelint + typecheck + testManifest-declared validation commandAutomatic
Close.1Manifest syncMain agentSelf-assess
Close.2Blink Dispatch: decide skip vs sub-agentMain agent using blink-dispatchMechanical triage
Close.3Knowledge capture + delivery hygiene when dispatchedcapture-auditor sub-agentDelegated
Close.4Execute crystallization + respond to hygiene findingsMain agent (acts on recommendations)—
Close.5Drift scoring + loggingMain agentSelf-assess
Close.6Milestone gate (if applicable)Main agent checks debt.md clearanceSelf-assess
Close.7Stakeholder memosMain agentSelf-assess
Close.8Extension hooks (if any active)Main agent scans extensions/Per-extension
Close.9Version controlCommit per manifest git strategyPer strategy
Threshold eventdrift ≥ full threshold → full reviewarchon-reviewer sub-agentDelegated
Milestone closeDebt cleared + acceptance criteria metMain agent (may trigger reviewer)Gate

When to Escalate to Delegation ​

A "self-assess" step should be converted to a sub-agent hook when any of the following apply:

  • Judgment occurs after work completion (sunk-cost bias is strongest)
  • Judgment has no self-correction mechanism (if wrong, no one catches it)
  • Error cost is high (impacts product correctness or architectural health)

Otherwise keep it as self-assessment — each sub-agent adds an LLM call's latency and cost.

Cost awareness: Before activating a new sub-agent, first answer: can this check be replaced by a self-audit checklist? Mechanical checks (placeholder scanning, naming consistency, format compliance) are fine as inline self-audits; judgmental assessments (knowledge value identification, bias correction, architectural health) warrant delegation. Empirically: purely mechanical checks sub-agent-ized showed an order-of-magnitude latency increase with no measurable quality improvement.

Model family separation (sub-agent ≠ main family) is a universal rule; see soul.md §Sub-Agent Independence.

Delivery Fast-Path (Self-Assess Before Verdict) ​

Not every delivery carries the same cognitive cost. The structured outputs (Verdict / Close-Out — historically GATE-1 / GATE-2) and the full close-out exist to control risk on non-trivial work. On genuinely trivial work they become pure overhead — and overhead compresses delivery tempo until the executor starts evading the gates entirely (a known failure mode that inflates drift without triggering review).

Fast-path eligibility (ALL must hold):

  • Files changed ≤ 2
  • No new module / new pattern / new dependency introduced
  • No change to interfaces, schemas, routes, auth, or infrastructure
  • No governance file changed
  • No user-facing behavior change requiring verification beyond the validation command

When eligible, the delivery collapses structured gates to single-line inline summaries and skips the steps whose judgment value is negligible on trivial changes (detailed in the delivery command file). Every skipped step increments a fast-path counter in the drift log so abuse is visible during review.

Anti-abuse: if review finds fast-path share > 60% in a cycle, the reviewer must assess whether task granularity has been artificially split to evade full gates.

Debt Tracking ​

Issues found during review or delivery that cannot be fixed immediately must not vanish into narrative text. They must be structurally tracked.

  • Debt registry (debt.md): Each item has ID, source, severity, deadline, and status
  • Registration timing: When capture-auditor hygiene check fails and fix is deferred; when reviewer findings of Warning/Observation severity are deferred
  • Clearance gate: Before milestone closure, all items with milestone-close deadline must be resolved
  • Golden rule: Deferral is acceptable; forgetting is not. Deferral = register + deadline. Unregistered = nonexistent = unmanaged

Candidate Hooks (Not Yet Activated) ​

These hooks may become worthwhile as the project scales. Currently not implemented:

CandidatePositionCheckActivation Trigger
delivery-validatorAfter validation gate, before closeManifest index ↔ disk consistency, archon decoupling complianceSource file count > 50 or after backend lands
drift-scorerReplaces self-assess at Close.5Independent delivery complexity assessmentAfter observing self-assessment bias patterns

Note: The delivery-validator's "does a new module lack tests" check is already covered by capture-auditor's delivery hygiene — no duplication.

Rules ​

  • Sub-agents advise; the main agent executes — separation of concerns
  • Sub-agent output is structured — auditable (drift's crystallization column records auditor judgment)
  • When a "judge your own work" pattern emerges, prefer converting to a sub-agent hook
  • The trigger table and crystallization path are reference inputs for sub-agents, not a self-check list for the main agent

Product Quality ​

Hard Acceptance Criteria ​

Clean code ≠ correct product. Each milestone defines hard acceptance criteria in the manifest — specific, testable, with metric thresholds.

Acceptance criteria include:

  • Feature acceptance: Enumerated functionality that must be operational, verifiable via tests or manual validation
  • Quality gates: Measurable metric thresholds (performance, accessibility, bundle size, test coverage, etc., depending on the project's tech stack)
  • Tooling accompaniment: Milestone-specific detection tools are introduced in sync with the milestone — neither early nor late, recorded in the manifest

Milestone acceptance criteria not fully checked = milestone not complete. "Close enough" does not exist.

New Code = New Guardrails ​

  • New module → test file appears simultaneously
  • New architecture layer → linter boundary rules updated in sync
  • New design pattern → encapsulate as component; don't rely on documentation for consistency
  • New milestone → write acceptance criteria first, then write code
  • New technology/framework version → ship an adoption skill (recommended patterns + prohibited patterns + timing) + structural guards (lint rules blocking old patterns). A technology selection without an adoption plan = a ticking time bomb — the user should never need to remind you "are you using this framework's new features?"
  • Refactoring existing module → first add characterization tests to lock current behavior, then change structure. Refactoring without a safety net = gambling
  • Cross-file invariant or recurring incident → freeze it as a structural guard: a whole-repository static-scan test with a sentinel assertion (scanned count above a floor) and, for existing violations, a grandfather set whose cap equals the current count. A fixed cross-file bug with no guard invites its own return (dev/structural-guard lens tool)

Released under the Apache-2.0 License.