Enforced mode

Enforced mode is opt-in. It guides you to define "done" up front as machine-checkable conditions, then will not let a feature ship until those conditions are met. You get a cleaner, auditable result — at the cost of more up-front definition and a longer, more thorough build. New installs start in À la carte mode, the lighter, run-the-commands-yourself flow; switch to Enforced with /akka:mode enforced (and back with /akka:mode a-la-carte).

Exit conditions and Definition of Done

Enforced mode treats "done" as something the system checks, not a judgment call. It separates "done" into three layers, each with a distinct owner:

Layer What it is Who authors it

Definition of Done

The business statement of done, in the customer’s own terms ("greetings are personalized", "the service survives a node loss").

The project owner and the organization.

Exit condition (EC)

The technical translation of a Definition of Done item into a precise, binary pass predicate over an observable surface.

Derived by the tooling; refined by the developer.

Auditor

The check that evaluates an exit condition and returns a verdict. It is one of three kinds — introspective (runs in the tree), provisioned (verifies a harness asset), or delegated (resolved by an attestation).

Akka ships the built-in introspective set; projects and the organization author the rest.

The layers roll up in the other direction: an auditor produces a verdict, verdicts set each exit condition’s status, and those aggregate into a Definition-of-Done type status. A developer sees progress in business language ("Reliability: covered", "Functional: 2 of 3 met") while the machine works in precise conditions underneath.

Every exit condition resolves to a single boolean pass — there is no "mostly done". A requirement that cannot be expressed as a binary predicate over an observable surface is not yet an exit condition; it is a Definition of Done item still waiting to be made precise.

Every condition also carries a provenance that determines whether a developer can change it: akka-intrinsic (platform-guaranteed; the trivial auditor returns green immediately, always applicable, annotated [akka]), recommended-default (from the default library, may be marked inapplicable), corporate (the organization policy, locked), and developer (added for this feature). Done is layered and additive — the organization defines mandatory controls and developers add to them, tightening but never loosening. See the exit condition schema for the full field set.

Definition-of-Done types

Every exit condition is tagged with a fixed, versioned Definition-of-Done type. Types are the scaffold the tooling walks to infer which conditions a feature needs, and the buckets progress rolls up into. Each is pinned to a distinct Akka observable surface. They are organized into three tiers — the "three P’s".

Product — does the software work? (developer- and customer-led)

Type

Covers

Functional

Endpoint, event, view, and workflow behavior.

Data Integrity

Entity state and its invariants.

Reliability

Cluster behavior and fault injection — recovery, supervision, surviving node loss.

Performance

Timing and throughput.

Security & Compliance

Authorization, audit, and PII handling at runtime.

Operability

Deployment, health, telemetry, and runtime cost.

Experience

Browser-facing behavior — accessibility, responsiveness, page performance. On by default; struck as a group for a headless or API-only service.

Project — is the codebase healthy and standards-compliant? (heavily organization-authored)

Type

Covers

Documentation & Training

Documentation completeness, content standards, training material, changelog history.

Repository Hygiene

Clean git history — rebased, no lingering commits, no orphaned dead code.

Pipeline & Scanning

Prior commits CI-green; code scanning (SAST, SCA, secrets, license) complete.

Code & Test Health

Coverage thresholds, test-pyramid balance, and maintainability budgets.

Environment & Dependencies

Every dependency identified, available, and verified, and the local environment current with the resolved governance. A drift check, not a run-once flag.

Process — did the AI build stay honest and efficient? (organization policy)

Type

Covers

Process Integrity

Meta-guardrails on the build, including source-grounding — API usage cited to official docs, no invented APIs.

Build Efficiency

Token-to-cost budgets and model routing.

The core types are closed and versioned. Organizations extend "done" by adding conditions within a type, not by inventing new types.

Akka ships a browsable exit condition catalog of candidate conditions for every type. Browse it for inspiration, or point your AI coding assistant at it to help identify the conditions that make sense for your project.

The guided flow

Enforced mode is two human touchpoints book-ending a silent machine phase — not a gate at every step.

  1. Define (you). Frame the feature and define done in business terms. The engine infers a full draft of the definition of done from your intent and Akka’s fixed surfaces, then asks only about the residue it cannot safely infer — a threshold, a genuine fork, a type toggle — each anchored to a proposed default. Inferred conditions are marked and do not become the contract until you confirm them. The organization’s mandatory conditions are merged in, locked. Enforced mode will not build while a required decision is open.

  2. Build (the machine). The engine derives exit conditions, wires auditors, plans, and implements, looping until every locally runnable auditor is green. It stops only for a short, closed list of reasons: a condition it cannot reach after repeated tries, an ambiguity Define did not resolve, or a conflict between your definition and the organization’s.

  3. Review (you). Validate the definition, not the code. A review miss becomes a new condition and loops back to Build. Close any conditions that need your sign-off, then ship.

  4. Ship. /akka:ship <review|release> runs the auditors for every applicable exit condition in scope for the target and, on pass, runs the ship steps the organization declared for that target.

The /akka:specify engine

You drive the whole flow through one re-entrant command. You always run /akka:specify <input> — a spec, a clarification answer, review feedback, or a decision — and it always ends with a definitive status line and the exact next command. Every call resolves to exactly one of two states:

State

Meaning and next step

READY_TO_SHIP

Every applicable condition in scope for the ship target is green and not stale, or waiver-covered. Next: /akka:ship <review|release>.

NOT_READY

Something still blocks the ship. Next: whatever the status line names.

NOT_READY says why, and the reason determines whose turn it is. A condition that is open with reason needs-user-action is waiting on you, for a clarification, a threshold, a decision, or review feedback. A condition that is open with reason blocked-outside-project needs a tool installed or a policy changed beyond this project. A condition that is red, or green but stale, is the machine’s to resolve, and the build loop continues autonomously. See Exit condition states.

Because every call ends in one of these two states with one explicit next command, the workflow is predictable enough to follow by eye and to parse in CI.

READY_TO_SHIP does not mean every condition in the manifest is green. It means every condition that is both applicable and in scope for the requested ship target is green and not stale, or covered by an effective waiver. Conditions struck as inapplicable stay visible on the manifest but do not count. Conditions declared at a tier above the requested target are not evaluated for that ship at all.

Auditors

An auditor is the check bound to an exit condition. The engine resolves each condition’s auditor into one of three kinds, set by where the check can run:

Kind What it is

Introspective

A check that inspects the working tree directly and returns green or red. This covers both the built-in set Akka ships (mvn compile/test, git-clean, git-secrets, no-build-output, deps-pinned, vale, ci-green, and so on) and an inline authored command auditor {run, pass, applies_to} that a project or the assistant adds for an ecosystem it introduces. An inline auditor that is not corporate-authored stays OPEN until you approve its exact command on first run.

Provisioned

A condition whose check is harness:<capability>, satisfied by a /harnesses asset recorded in .akka/harnesses.lock and checked for currency against the policy version. Green when the asset is present and enforcing; red when the lock is stale or the asset is missing. See /akka:harnesses.

Delegated

A condition with autonomy: attested, satisfied by a recorded attestation. It stays open with reason needs-user-action until the attestation is recorded, then goes green.

The built-in introspective set is small, and there is no large closed catalogue of checks you pick from by id. Beyond the built-ins, auditors are authored per ecosystem (inline commands), provisioned as harness assets, or delegated via attestation. Each auditor declares what it needs to run (a git tree, Maven, a live service); the tooling checks availability and resolves the condition accordingly rather than blindly failing. See Auditor kinds for the full model.

Every condition carries a state and a set of properties. See Exit condition states for the full model. The three states:

State Meaning

open

The auditor has not decided the condition. It carries a reason: needs-user-action (a person on this project can move it forward) or blocked-outside-project (a required tool is missing, or the policy has no auditor mapped to the condition).

green

The auditor ran and the condition passed. An intrinsic condition goes directly to green with reason platform-guaranteed.

red

The auditor ran and the condition failed. A prohibition with no auditor is also red.

Alongside the state, three properties describe the condition itself: provenance (who guarantees it — akka-intrinsic, recommended-default, corporate, or developer), waiver (a time-bound record permitting shipping despite red or open), and applicable (whether the condition applies to this project). All three appear as annotations on the manifest and are described in the states page.

The two locked gates

Two Process-integrity conditions are always on and cannot be struck — they make the verification apparatus police itself:

  • Coverage (PROC-AUDITOR-COVERAGE) — every material build surface (a pom.xml, package.json, go.mod, Dockerfile, and so on) must have a covering auditor. Add a React app and the gate goes red until a web check is authored; a folder that genuinely needs no check can be waived.

  • Adequacy review (PROC-ADEQUACY-REVIEWED) — before the build advances, each check is reviewed adversarially: could it pass while its invariant is false? A fresh review, keyed to the current checks, must cover every auditor. Feedback that changes a check stales the review and forces it to re-run — so an auditor can never quietly drift out of adequacy.

New or changed checks are surfaced to you for approval at the exit-condition level — "here are the checks and how I’ll check them" — never as a low-level "approve running a command". See Auditors for the full model.

Shipping and receipts

/akka:ship <review|release> runs the auditors for every applicable exit condition in scope for the target and, if they pass, runs the ship steps the organization declared for that target. Akka provides the mechanism; the organization writes what its ship steps do — push a branch, open a pull request, deploy and activate, publish an artifact, or a sequence of these. There is no fixed menu of ship profiles.

/akka:ship requires an explicit target — review or release — and refuses when called without one. The target names which set of auditors runs:

  • /akka:ship review runs the auditors for every applicable exit condition tagged author or review, then runs the review ship steps declared in the organization’s policy (typically pushing the branch and opening a pull request).

  • /akka:ship release runs the auditors for every applicable exit condition at any tier, then runs the release ship steps declared in the organization’s policy (typically deploying to production).

Author-time is a precondition, not a ship target. Every ship, review or release, requires every applicable author-tier condition to be green or waiver-covered. See Ship tiers.

The author tier is evaluated first, on its own. In Enforced mode a ship that fails it stops there. The review-tier and release-tier auditors do not run, so you do not wait on a scan whose result cannot change the outcome. The verdict you get back covers the author tier only. The higher tiers were skipped rather than failed, so the output does not report a status for them.

One rule holds regardless of target: the ship steps run only when every in-scope condition is green and not stale, or covered by an effective waiver.

When ship completes, Akka writes a conformance receipt — which conditions were green, which auditors ran, which stayed open and why, and any waivers in effect. The receipt is what makes an AI-built handoff auditable: the downstream owner sees exactly what was verified and what remains. In Enforced mode, a successful ship also offers to shut down the local services the build started, closing the lifecycle that /akka:setup opened.

Enterprise governance

In Enforced mode an organization defines a mandatory baseline of exit conditions and definitions of done — security, compliance, repository hygiene, its "way of working" — that Akka enforces and developers can tighten but never loosen. Each condition is assigned a governance level (always-apply, never-apply, on-but-dev-configurable, off-but-dev-configurable).

Author the governance policy

The policy is a single policy.yaml, versioned somewhere your organization owns and controls. Set it up once:

  1. Store policy.yaml under version control. Keep it in a dedicated git repository — name it whatever you like (github.com/<org>/akka-specify-governance is a common example) — governed by your own access controls: private repository, SSO, RBAC, and branch protection. Akka does not host it, and the CLI does not require any particular provider or name; it fetches the file from the URL you configure.

  2. Define the policy in policy.yaml — the single source of truth. It declares the allowed mode, the ship definition, the toolchain version, the exit conditions and their governance levels, and the completion, waiver, and rollout policies. See Policies for the full schema and an annotated example.

  3. Add a CI workflow that runs the Akka conformance check against the policy. The organization’s own CI is the enforcement backstop: local tooling is advisory and guided; CI is the gate a change must pass to merge or ship.

For the policy to reach developers, IT points each machine’s Akka CLI at this repository one time, through a managed setting named governance-policy-url — a configuration file the developer cannot edit. From then on, whenever a developer runs /akka:setup, the CLI downloads policy.yaml, applies it on top of the developer’s own choices (which may only make the rules stricter, never looser), and enforces it automatically in status, conform, and ship — with no flag required and no way to opt out. When the organization changes the policy, developers pick up the new version by running /akka:setup again. See Applying the policy in every project for how IT sets this up.

Beyond the organization policy, the default library provides a rich, curated set of best-practice conditions on by default; you strike what does not apply, and strikes are recorded. For inspiration on what else to require, browse the exit condition catalog, organized by type and project flavor.

Working in Enforced mode

Every Specify command remains available — Enforced mode changes the ship gate, not the command set (see /akka:mode). In practice you drive an Enforced build through /akka:specify as the re-entrant engine, and use the governance commands to inspect progress and release:

Command

Role

/akka:specify

The re-entrant engine that drives the whole flow.

/akka:status

Read-only rollup of the definition of done by business category.

/akka:ship

Run the auditors for the requested ship target and, on pass, run the organization’s ship steps.

/akka:mode

Switch mode within the organization-allowed set.

/akka:setup

Install and repair the local environment and source the governance policy.