/akka:harnesses
Generate the enterprise-configuration assets the project’s policy requires, wired to this project’s surfaces.
Description
A harness is a generated configuration asset that connects the project to an external enterprise system: a CI workflow, a scanner configuration, a supply-chain step, or a content-governance package. /akka:harnesses reads the required surfaces declared in the governance policy, detects which are already present, and generates the project-adapted asset for each gap into /harnesses/<surface>/. It records what it generated in .akka/harnesses.lock and surfaces each asset at the exit-condition level for you to approve, adjust, or skip.
The command produces the asset. A family of exit conditions verifies it, and those conditions gate ship in enforced mode and stay advisory in a-la-carte mode. This is the same generator-plus-exit-condition pattern that governs /akka:implement and /akka:build.
Folder layout
One directory per surface, plus the lock file:
/harnesses
/ci github-actions.yml wires to Actions
/scanning semgrep.yml, gitleaks.toml wires to a central SAST or secret service
/supply-chain cosign.yml, sbom-step.yml wires to Sigstore or a registry
/content .vale.ini, styles/ wires to content governance
.akka/harnesses.lock policy version, surface signature, per-asset record
The three-way responsibility split
A harness has three owners, and each owns a distinct part:
| Owner | Owns |
|---|---|
Enterprise |
The requirement, the target values, the mandated vendors, and the privileged endpoints. Optionally a reference fragment the generator adapts. |
Akka Specify Plugin |
Generating the project-adapted asset into |
Developer |
The last-mile connection into systems only the developer can reach: adding the secret, enabling the workflow, linking the account. |
The plugin generates and verifies. It does not hold the developer’s credentials, and it does not decide the enterprise requirement.
Verification and currency
Three exit conditions verify a harness. It is configured when the asset is present and correct, activated when the developer’s last-mile wiring is in place, and attested when a delegated receipt resolves a check the plugin cannot run in this tree. The configured and activated conditions are checked by a provisioned auditor; the attested condition is a delegated one, resolved by a recorded attestation.
The provisioned auditor checks currency, not only presence. It reads .akka/harnesses.lock — which records the policy version and a per-asset signature — and reds when the policy version has moved (the asset is stale) or the recorded asset is missing, so an asset that passed on the day it was generated cannot fall behind the policy without the gate noticing. When it holds, the auditor resolves green: <capability> harness active.
Verification is adversarial. A generated CI job that contains the mandated step but sets continue-on-error: true, or runs a scanner without gating the merge, fails its check: the asset is present but its invariant is false. The auditor confirms that the workflow exists, references the required steps, and blocks the merge on their failure.