{"_id":"@agent-delivery-harness/conformance","_rev":"3-211b384fc8d006dcbf3d4f3f826c57be","name":"@agent-delivery-harness/conformance","dist-tags":{"latest":"0.5.0"},"versions":{"0.1.0":{"name":"@agent-delivery-harness/conformance","version":"0.1.0","license":"Apache-2.0","_id":"@agent-delivery-harness/conformance@0.1.0","maintainers":[{"name":"kwamina","email":"kwamina.0x00@gmail.com"}],"dist":{"shasum":"e0a36403c2e3b000cd0138171f84bb782da9139c","tarball":"https://registry.npmjs.org/@agent-delivery-harness/conformance/-/conformance-0.1.0.tgz","fileCount":101,"integrity":"sha512-KvZd1LJ4XzCX0Od39GE9/OemLemst3iXDx/26qUoSxIbk2pYcEzjsXr/ZMOndlBs+cYMABDFi4PEtqmw2d33cw==","signatures":[{"sig":"MEUCIH2FA3Tj1Br1tEeRA7v0Rek6EBEU9JrixAAM1kGJ83b7AiEA+7Nph+79wScTFC04h1wTGUknQiPfO1EfPUsE6BHEumo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":606134},"type":"module","engines":{"node":">=22"},"exports":{".":"./src/index.ts"},"gitHead":"d8f948a6a08da52e05a19dd3a3c05ff88fba8602","_npmUser":{"name":"kwamina","email":"kwamina.0x00@gmail.com"},"_npmVersion":"11.2.0","description":"delivery-evidence/1 conformance kit (89 golden vectors) and its generator","directories":{},"_nodeVersion":"23.5.0","dependencies":{"@agent-delivery-harness/kernel":"0.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/conformance_0.1.0_1787814185388_0.7085186754890684","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@agent-delivery-harness/conformance","version":"0.2.0","license":"Apache-2.0","_id":"@agent-delivery-harness/conformance@0.2.0","maintainers":[{"name":"kwamina","email":"kwamina.0x00@gmail.com"}],"homepage":"https://github.com/kwam1na/agent-delivery-harness#readme","bugs":{"url":"https://github.com/kwam1na/agent-delivery-harness/issues"},"dist":{"shasum":"ed75f0fa7d84ad47efd8c13e0b9575bf4d03b0f0","tarball":"https://registry.npmjs.org/@agent-delivery-harness/conformance/-/conformance-0.2.0.tgz","fileCount":101,"integrity":"sha512-GhzHMKh7/mLlvN1t30DDghJJ0u4j4fOZWY21CVV1SEAA4benNav4Lsg6iLnJX+IUS46fpjSN3wD9KDOgiOYatQ==","signatures":[{"sig":"MEQCIBmzuACqxHf+aUPqHeqsdXnp3pPrpO3OU52WPk3S7QWSAiBy4cogznqYsECuppE1JEjQY1vIp2CWdbsXeBagUjC7Jg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-delivery-harness%2fconformance@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":606292},"type":"module","engines":{"node":">=22.6.0"},"exports":{".":"./src/index.ts"},"gitHead":"7c32b2c98194b93856295bb0cf256bfef5782487","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca41002b-fb6b-482d-8b82-439b286c8c9a"}},"repository":{"url":"git+https://github.com/kwam1na/agent-delivery-harness.git","type":"git","directory":"packages/conformance"},"_npmVersion":"11.19.1","description":"delivery-evidence/1 conformance kit (89 golden vectors) and its generator","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@agent-delivery-harness/kernel":"0.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/conformance_0.2.0_1788401835522_0.17275074484015263","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@agent-delivery-harness/conformance","version":"0.5.0","type":"module","description":"delivery-evidence/1 conformance kit (89 golden vectors) and its generator","license":"FSL-1.1-ALv2","repository":{"type":"git","url":"git+https://github.com/kwam1na/agent-delivery-harness.git","directory":"packages/conformance"},"engines":{"node":">=22.6.0"},"dependencies":{"@agent-delivery-harness/kernel":"0.5.0"},"exports":{".":"./src/index.ts"},"gitHead":"17e841f5c9973bfd3d49835ed26f9b03bf5779ff","_id":"@agent-delivery-harness/conformance@0.5.0","bugs":{"url":"https://github.com/kwam1na/agent-delivery-harness/issues"},"homepage":"https://github.com/kwam1na/agent-delivery-harness#readme","_nodeVersion":"22.23.2","_npmVersion":"11.19.1","dist":{"integrity":"sha512-51ZmMBiHG1fj6ZN779s0pRaZIUXTf8oKy3j0wyFHi8oHv2AqDffQdBBfu/Nxm1tcuxRPL/BnLjBESjE27Ov5nw==","shasum":"cac7742422c4373faffc0ac818c593d216c903c5","tarball":"https://registry.npmjs.org/@agent-delivery-harness/conformance/-/conformance-0.5.0.tgz","fileCount":101,"unpackedSize":598682,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-delivery-harness%2fconformance@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDNjgLC00uha04xorhLA9Uhgin8lZ8UbNipVNaRiq8CqgIgMNkzWk+32i/kmp9T6oiVUXpIZOy6SidC0pr00IQuRRU="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca41002b-fb6b-482d-8b82-439b286c8c9a"}},"directories":{},"maintainers":[{"name":"kwamina","email":"kwamina.0x00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/conformance_0.5.0_1789055777484_0.5173985551990559"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-27T07:03:05.205Z","modified":"2026-09-10T15:56:18.010Z","0.1.0":"2026-08-27T07:03:05.533Z","0.2.0":"2026-09-03T02:17:15.723Z","0.5.0":"2026-09-10T15:56:17.630Z"},"bugs":{"url":"https://github.com/kwam1na/agent-delivery-harness/issues"},"license":"FSL-1.1-ALv2","homepage":"https://github.com/kwam1na/agent-delivery-harness#readme","repository":{"type":"git","url":"git+https://github.com/kwam1na/agent-delivery-harness.git","directory":"packages/conformance"},"description":"delivery-evidence/1 conformance kit (89 golden vectors) and its generator","maintainers":[{"name":"kwamina","email":"kwamina.0x00@gmail.com"}],"readme":"# Delivery Evidence Conformance Kit\n\nGolden vectors for validators of the **delivery-evidence/1** specification\n(envelope) and the **review.green/1** payload. A validator implementation that\nproduces the expected outcome for every vector conforms to the machine-checkable\ncore of the spec.\n\nThe corpus is derived from a production recorder's test suite\n(`athena:scripts/harness-review-evidence.test.ts`, ~1,000 lines) that has gated\nagent-delivered merges since mid-2026, restated against the generalized\nenvelope. Provenance is recorded per vector.\n\n## Layout\n\n```\nkit.json                    index: every vector with id, file, rules, expectation\ncontext/repo-config.json    the repository gate configuration vectors assume\ncontext/environment.json    the submission-time state the harness must establish\nvectors/accept/*.json       manifests a conforming validator MUST accept\nvectors/reject/*.json       manifests a conforming validator MUST reject\ngenerate.ts                 regenerates everything above (bun generate.ts <outDir>)\n```\n\n## Vector format\n\nEach vector is self-contained:\n\n```jsonc\n{\n  \"vectorVersion\": 1,\n  \"id\": \"rg-7-defer-p0\",\n  \"title\": \"Illegal deferral: p0\",\n  \"rules\": [\"RG-7\"],                    // spec rule ids this vector exercises\n  \"provenance\": \"athena:… | new in spec | spec-tightened\",\n  \"expect\": { \"result\": \"rejected\", \"codes\": [\"illegal_deferral\"] },\n  \"environment\": { … },                 // optional overrides of context/environment.json\n  \"extra\": { … },                       // optional protocol notes (multi-step vectors)\n  \"artifacts\": { \"reviewers/correctness.json\": \"<exact file bytes>\" },\n  \"manifest\": { … }                     // the delivery-evidence/1 manifest to submit\n}\n```\n\n## Running a vector\n\nFor each vector, the harness under test:\n\n1. Loads `context/repo-config.json` as the repository's gate configuration.\n2. Establishes the submission environment from `context/environment.json`,\n   merged with the vector's `environment` overrides:\n   - `currentCandidate` is what the recorder's candidate capture returns at\n     submission time.\n   - `prepared: false` means preparation is absent/failed (the capture reports\n     an unprepared state).\n   - `manifestLocation: \"outside-run-root\"` means the harness places the\n     manifest file somewhere other than the allocated run root.\n3. Allocates a run root for `manifest.provider.runId` and materializes each\n   entry of `artifacts` at its path (exact bytes) relative to that root. An\n   artifact path that is itself invalid (e.g. `../outside.json`) is part of the\n   vector's point; materialize it where the path indicates, or skip\n   materialization if the validator rejects on path shape before file access.\n4. Submits the manifest through the recorder.\n5. Compares the outcome to `expect`.\n\n### Multi-step vectors\n\n- `a-idempotent-resubmission` (`extra.submitTwice`): submit the same manifest\n  twice. Both submissions succeed and the record ids are identical.\n- `sub-4-record-conflict` (`extra.submitFirst`): submit `extra.submitFirst`\n  (accepted), then the vector's `manifest`. Same record identity, different\n  content — the second submission is rejected with `record_conflict`.\n\n## Expectation semantics\n\n- `result: \"accepted\"` — the submission MUST be accepted and one evidence\n  record written per claim. No rejection codes.\n- `result: \"rejected\"` — the submission MUST be rejected, no record written,\n  and the response MUST include **every** code listed in `expect.codes`.\n  Additional codes are permitted: several vectors violate more than one rule by\n  construction (SUB-5 requires reporting all violations), and the kit does not\n  over-specify cascade behavior. The listed codes are the floor, not the\n  ceiling.\n\n## Provenance markers\n\n- `athena:…` — restates a case from the production test corpus.\n- `new in spec; no Athena antecedent` — covers spec surface the production\n  contract did not have (claims array, artifact digests, attestation levels,\n  strict unknown-member parsing, repository requirement).\n- `spec-tightened; Athena accepted a looser form` — the spec is deliberately\n  stricter here; the production recorder accepted this shape. Two cases:\n  - `env-9-empty-run-history` — Athena accepted an empty mutation sequence;\n    the spec requires a non-empty `runHistory` whose final entry names the\n    candidate tree and final pass.\n  - `rg-9-iteration-count-mismatch` — Athena accepted an explicit\n    `iterationCount` that disagreed with the mutation sequence; the spec\n    requires `iterationCount == runHistory.length`.\n\n## Known divergences from the production contract\n\nBeyond the two tightenings above, the spec-shaped manifest differs from the\nproduction manifest in ways the kit reflects:\n\n1. **Claims array.** Production bound one manifest to one obligation; the\n   envelope carries `claims[]` and the recorder writes one record per claim.\n2. **Artifact digests.** Production validated artifacts at record time but did\n   not hash them into the manifest; the envelope requires per-artifact\n   `sha256` (`env-11-artifact-digest-mismatch` is new surface).\n3. **Strict parsing.** Production tolerated some unknown members; the spec\n   rejects any (`gen-1-*`). Production's summary-count fields\n   (`unresolvedActionableCount`, `blockingCount`) were removed as pure\n   derivations — their presence now trips `unknown_member`\n   (`gen-1-legacy-count-field`).\n4. **40-hex object ids.** Production fixtures used symbolic ids\n   (`\"tree-a\"`); the spec requires real git object-id shapes, so all kit ids\n   are deterministic hex derived in `generate.ts`.\n5. **Approval stamp shape.** Production stamps carried flat\n   `providerId`/`runId` fields; the spec nests them under `provider` and\n   renames `worktreeId` to `workspaceId` (§9.2).\n\n## Coverage\n\n89 vectors: 8 accept, 81 reject. Every rule in spec §8 (GEN, ENV, SUB) and §9.3\n(RG) is exercised by at least one vector except: GEN-3 and SUB-5 (meta rules\nabout validator behavior, observable through the multi-code vectors), GEN-5\n(prohibition on time-based decisions — not observable from a single\nsubmission), and ENV-3/ENV-7 (subsumed by schema-shape vectors). The signing\nprofile, additional payload specs, and gate-policy behavior (freshness at gate\ntime, waivers, delegation) are out of the kit's scope, as they are out of the\nspec's.\n\n## Regenerating\n\n```\nbun generate.ts <outDir>\n```\n\nThe generator is table-driven — one entry per vector, mirroring the structure\nof the source test corpus. Accept-vector artifact digests are computed from the\nemitted bytes, so edits to artifact content stay internally consistent\nautomatically.\n\n---\n\n## Vendored layout in this repo\n\nThis README is the kit's own, carried verbatim. Two paths differ from the layout\nabove because the kit is vendored into an npm workspace:\n\n| Kit path | Path here |\n|---|---|\n| kit root (`kit.json`, `context/`, `vectors/`) | `packages/conformance/vectors/` |\n| `generate.ts` | `packages/conformance/src/generate.ts` |\n\nRegenerate with `npm run kit:generate` (the generator is also runnable directly\nunder either runtime: `node --import tsx packages/conformance/src/generate.ts <outDir>`\nor `bun packages/conformance/src/generate.ts <outDir>`). The vendored tree is\nguarded against drift by `packages/conformance/src/generate.test.ts`, which\nregenerates into a temp directory and requires byte-identical output — so the\nvectors are never hand-edited, only regenerated.\n","readmeFilename":"README.md"}