Harness Specification v0alpha1

The source format is YAML 1.2. The Rust scaffold uses noyalib as the parser and immediately deserializes into typed structs. Unknown-field rejection is a future compatibility decision; the current alpha favors explicit schema evolution over clever extension semantics.

Minimal manifest

apiVersion: prismoid.dev/v0alpha1
kind: Harness
metadata:
  name: hello-prime
  version: 0.1.0

contexts:
  - workspace.directory
capabilities:
  - fs.write_text
policies: []
verifiers:
  - math.prime_file

protocol:
  instructions:
    - Produce a durable artifact.

limits:
  max_steps: 8

Fields

apiVersion

Must be prismoid.dev/v0alpha1 for this scaffold.

kind

Must be Harness.

metadata

  • name: stable package-local name.
  • version: semantic version string. Package resolution is not implemented yet.

contexts

Names of ContextProvider ports that the application/environment must bind before execution.

capabilities

Names of capabilities the model may propose. The runtime refuses unbound or undeclared capabilities.

policies

Policies evaluated for every proposed action. The most restrictive result wins.

verifiers

Required verifiers. At least one verifier is mandatory. Completion requires every verifier to return pass; fail becomes feedback for another inference step while budget remains. uncertain and requires_human stop automatic completion.

protocol.instructions

Ordered method guidance passed to the model. Protocol composition will become a compiler concern; it is intentionally not a workflow graph in v0alpha1.

limits.max_steps

Maximum model turns. It is a safety boundary, not merely a cost setting.

Future compilation pipeline

source manifests
    -> package resolution
    -> inheritance/composition
    -> conflict checking
    -> capability requirement solving
    -> policy lattice merge
    -> verifier union
    -> protocol composition
    -> normalized Harness IR
    -> lockfile + digest

The runtime must never own these source-level merge rules.