§14 Conformance
What it means to conform to HCP/1.1 as a pack, a runtime, or a host, and the executable vectors that back the claims.
14.1 Conformance targets#
| Target | Claims | Sections |
|---|---|---|
| Pack | Directory is a valid Harness Pack | §2, §3, §4, §5 |
| Runtime | Loads packs and executes both loops per this specification | §6 to §11 |
| Host | Projects packs through a conforming runtime | §12 |
An implementation MAY conform as more than one target.
14.2 Pack conformance#
A pack conforms when all of the following hold:
- The three required files are present (§2.1).
surface.jsonvalidates against the manifest schema (§3).- Every command and trigger has a Policy entry (§4.4).
confirmappears only onwriteentries (§4.5).- The Skill contains no credentials or host paths and teaches only declared commands (§5.2).
- Binding declares at most one mode (§8.1).
- Lint from a conforming runtime returns zero issues.
Informative. The reference implementation also runs a pack's commands live
and runs its eval cases (hcpx check --probe). A catalog entry carries that
result as evidence; a claim in the Skill or a README is not evidence.
14.3 Runtime conformance#
A runtime conforms when it:
- Fails lint on any of §14.2 violations.
- Executes the pipeline of §6.3 in order and fails closed at each step.
- Enforces the five capabilities (§9.4) and the evaluation order (§9.5).
- Enforces
confirm(§4.5) and resolves project scope for landbrain(§9.2). - Mints Binding at exec time and never falls back (§8.4).
- Defaults to sandbox with allow-list and jail (§10.2).
- Isolates Sense from Execute and gates delivery on
sense.enable(§7.2 and §7.3). - Reports the four availability flags (§11.2).
- Returns the result envelope of §6.2 for success and denial.
- Accepts any
1.xpack (§13.2).
14.4 Host conformance#
A host conforms when it:
- Routes every projected tool call through a conforming runtime (§12.2.5).
- Filters the projected tool set by grants (§12.2.6).
- Preserves
confirmmarkers (§12.6). - Does not merge Sense into a callable tool (§12.5.5).
14.5 Vectors#
The reference implementation ships executable vectors in
packages/sdk/src/conformance.test.ts and pack fixtures under
examples/packs/. Each vector names the section it checks.
| Vector | Section |
|---|---|
pack.lint.transit | §2, §3, §4 |
pack.lint.ledger | §4.5 |
pack.lint.echo | §3 (composite) |
exec.transit.plan | §6.3, §6.4, §6.5 |
exec.ledger.transfer.confirm-required | §4.5, §6.3 step 6 |
exec.denied.missing-write-grant | §9.4, §9.7 |
exec.sandbox.bin-not-allowlisted | §10.2 |
exec.brain.requires-project | §9.2 |
availability.flags | §11.2 |
cd hcp && bun test packages/sdk/src/conformance.test.tsA runtime that passes every vector against the gold packs MAY claim "HCP/1.1 runtime, reference vectors passing". Passing the vectors is necessary but not sufficient; the text of this specification governs.
14.6 Claiming conformance#
An implementation claiming conformance SHOULD publish:
- Target(s) and protocol version.
- Which optional behaviours are implemented (
native-local,openapi,composite, Sense sinks). - A link to its vector run or its own test suite.
- Its runtime profile: hub implementation, store, sink, isolation.
14.7 Non-conformance#
Informative. Common ways to fail: executing an unactivated pack; a write without
confirm; env-token fallback on mint failure; a single admin boolean instead of
five capabilities; polling exposed as Sense; a host spawning wrap.bin directly.