Create a standalone Harness as Code v0.3 document and prove the execution contract with the package compiler and resolver.
Workflow
- Identify the host, the capabilities it must actually expose, and the real
control owner. Use
sessionfor one host session. Usestate-machineorprogramonly when a selected adapter explicitly implements that mode. - Read the DSL contract. Start from the minimal example; open the standard example when callable tools are required.
- Generate one self-contained document unless the user requests a fragment.
Include
language 0.3, every referenced declaration, a concrete runtime, and a named deployment. Standard tools may remain implicit. - Run
scripts/validate.mjs. Fix every compiler or resolution error and rerun. A compile-only state machine is not an executable Qoder or Pi deployment. - Return the DSL or saved file plus the harness id, deployment id, runtime, resolution status, and any execution boundary the selected adapter cannot satisfy.
Authoring Rules
- State only falsifiable requirements. Do not add permission, setting, degradation, binding, input/output-name, or runtime-execution syntax; v0.3 intentionally has none.
- Match the requirement verb to its capability:
use skill,require tool, orconnect mcp. - Only the standard tool ids in the contract may be undeclared. Every custom
tool declares a stable
contractid that the adapter exposure must match. - Qoder and Pi descriptors run
sessionworkflows only. A session workflow names exactly the one agent role declared by each harness that uses it. - State-machine outcomes are typed on agents. Every route emitter, outcome, destination, entry, and stop must exist, and every agent must be reachable.
- A
program <language> <entry>workflow resolves only when the adapter lists the same language inprogrammaticLanguages. - Keep credentials out of source. Prefer
env.VARIABLEfor MCP endpoints, but remember that declaring an endpoint does not connect it; the adapter must do that. - Do not invoke host SDKs, install integrations, or claim native enforcement while generating or validating DSL.
Validate
From this skill directory, run:
node scripts/validate.mjs /path/to/workflow.harness [harness-id ...]
The command prints JSON and exits non-zero when compilation or any selected named deployment fails resolution. A successful exit is required before calling generated DSL executable.
When editing this skill, build the package first so dist/ reflects the current
compiler:
npm run harness:build