Exit condition schema
An exit condition is the technical unit of "done" in spec-driven development. Each condition carries the fields below. See Exit conditions and Definition of Done for the conceptual model.
Fields
Most fields describe the condition; a few determine its auditor. An exit condition’s auditor is expressed in one of four ways: a built-in introspective check id; an inline introspective auditor block; a provisioned check: harness:<capability>; or a delegated autonomy: attested. The three auditor kinds follow from that choice.
id-
A stable identifier for the condition (for example,
OPS-COMPILES,SEC-SECRETS). Used in status output, receipts, and waivers. summary-
A short human-readable statement of what the condition requires.
dod_type-
The Definition-of-Done type the condition belongs to (for example,
Functional,Reliability,Repository Hygiene). Required on every condition. Determines the tier (Product, Project, or Process) the condition rolls up into. kind-
Whether the condition is a
completionor aprohibition(defaultcompletion). A completion condition must become true and startsopen. A prohibition condition must never become true; an unaudited prohibition resolvesred("unenforced prohibition — needs a check"), and it cannot be closed by a human sign-off, because sign-offs only turnopengreen. See Prohibition conditions. provenance-
Where the condition comes from, which determines whether a developer can change it:
Value Meaning akka-intrinsicGuaranteed by the platform; always on, asserted green, never authored by a developer.
recommended-defaultFrom the default library; on by default, may be struck.
corporateInherited from the organization policy; locked according to its governance level.
developerAdded by the developer for this feature.
governance_level-
For
corporateconditions, the level that controls developer configurability (see Policies):always-apply,never-apply,on-but-dev-configurable, oroff-but-dev-configurable. pass-
The binary predicate that defines success — a check over an observable surface that evaluates to true or false. A condition whose success cannot be expressed as a binary predicate is not yet an exit condition.
check-
Names the auditor when it is not written inline. A built-in introspective check is named by id (
maven-compile,git-secrets,content-vale, and so on). A provisioned harness auditor is namedharness:<capability>and is satisfied by the matching/harnessesasset recorded in.akka/harnesses.lock. See Auditor kinds. auditor-
An inline introspective auditor, used when a project introduces an ecosystem the built-in checks do not cover. It delegates to a tool the ecosystem already provides and is green when that tool exits zero, red otherwise. The sub-schema has two fields:
Field Meaning runThe command that decides the invariant, given as an argument array (for example
["npm", "run", "-s", "typecheck"]or["mvn", "-q", "compile"]). A zero exit code is green.applies_toWhere the command runs.
requirementnames the environment it needs (node,maven,git, and so on);modulenames the sub-project it runs in, relative to the repository root (for exampleweb).The
passpredicate states the invariant; theauditorblock is the check that decides it:pass: "tsc == 0" # the invariant, on the condition auditor: # the inline introspective check that decides it run: ["npm", "run", "-s", "typecheck"] applies_to: requirement: node module: webA
developercondition can be materialized from/akka:specifyfeedback and carry its own inlineauditor. A non-corporate inline auditor staysopenuntil you approve its exact command on first run. See Auditors. autonomy-
How the condition closes:
auto(the auditor closes it),human-signoff(a person closes it), orattested(a delegated check, closed by a recorded attestation). Anattestedcondition resolvesdeferreduntil its attestation exists, thengreen. state-
The condition’s current status:
green(passed),red(failed, or an unaudited prohibition),open(active but not yet resolved — not yet evaluated, or awaiting an approval or sign-off),deferred(not verifiable locally — a delegated check before attestation, or a requirement unavailable here),waived(unmet but under a time-bound waiver),asserted(anakka-intrinsiccondition, trusted green), oroff(not applied). waiver-
An optional modifier attached to a still-active condition. It does not disable or remove the condition — the unmet state stays visible — but annotates who waived it, why, and an expiration. On expiry the condition reverts to blocking. Waivers are policy-gated; the organization may forbid them or require approval.
struck-
Whether a
recommended-defaultcondition has been struck as inapplicable. Strikes are bounded (an organization-locked condition cannot be struck) and recorded in the conformance receipt.