{"_id":"@agent-chassis/controlled-contract","_rev":"2-e9c69ece060758fe292b6ae54249f0f8","name":"@agent-chassis/controlled-contract","dist-tags":{"latest":"0.7.0"},"versions":{"0.1.0":{"name":"@agent-chassis/controlled-contract","version":"0.1.0","license":"Elastic-2.0","_id":"@agent-chassis/controlled-contract@0.1.0","maintainers":[{"name":"bdownie","email":"info@node-bio.com"}],"homepage":"https://github.com/agent-chassis/agent-chassis#readme","bugs":{"url":"https://github.com/agent-chassis/agent-chassis/issues"},"bin":{"controlled-contract":"bin/assess-contract.mjs","controlled-contract-build-proof-plan":"bin/build-proof-plan.mjs","controlled-contract-select-proof-packs":"bin/select-proof-packs.mjs","controlled-contract-describe-proof-pack":"bin/describe-proof-pack.mjs","controlled-contract-discover-proof-intents":"bin/discover-proof-intents.mjs","controlled-contract-inspect-proof-pack-bindings":"bin/inspect-proof-pack-bindings.mjs"},"dist":{"shasum":"947407ce49e5d37f6b3c1e779c7cf8fa04cff6b9","tarball":"https://registry.npmjs.org/@agent-chassis/controlled-contract/-/controlled-contract-0.1.0.tgz","fileCount":152,"integrity":"sha512-j007kkti6XcQo6Rc4l1o1RpovSggh3BgFgGe58pH4Zr0dpFj9cP+G3q2qsnBozCAHyyXxxTQoP/c+f+Xe+5M6g==","signatures":[{"sig":"MEUCIE2W22ZJxEOj48dmey2ymoVl5GhawpxbezPIrHo2apmVAiEAs0eQFlVIMCoOC788pxh98uPJFWxw9ypjP7PRiE7YkqY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1674148},"type":"module","engines":{"node":">=22"},"exports":{".":{"types":"./current.d.mts","default":"./current.mjs"},"./schema/*":"./schema/*","./assessment":{"types":"./lib/contract-assessment.d.mts","default":"./lib/contract-assessment.mjs"},"./examples/*":"./examples/*","./profiles/*":"./profiles/*","./current.mjs":{"types":"./current.d.mts","default":"./current.mjs"},"./proof-packs":"./lib/admitted-proof-packs.mjs","./package.json":"./package.json","./vocabulary/*":"./vocabulary/*","./proof-intents":{"types":"./lib/proof-intent-selection.d.mts","default":"./lib/proof-intent-selection.mjs"},"./proof-plan-compiler":{"types":"./lib/proof-plan-compiler.d.mts","default":"./lib/proof-plan-compiler.mjs"},"./multi-pack-assessment":{"types":"./lib/multi-pack-assessment.d.mts","default":"./lib/multi-pack-assessment.mjs"},"./proof-intent-discovery":{"types":"./lib/proof-intent-discovery.d.mts","default":"./lib/proof-intent-discovery.mjs"},"./proof-intents/catalog.json":"./proof-intents/catalog.json","./proof-pack-binding-assistance":{"types":"./lib/proof-pack-binding-assistance.d.mts","default":"./lib/proof-pack-binding-assistance.mjs"}},"scripts":{"test":"node --test test/*.test.mjs test/runtime/*.test.mjs test/proof-packs/*.test.mjs test/development/*.test.mjs test/legacy/versions/*.test.mjs","build:admissions":"node test/support/build-admitted-proof-pack-catalog.mjs"},"_npmUser":{"name":"bdownie","email":"info@node-bio.com"},"repository":{"url":"git+https://github.com/agent-chassis/agent-chassis.git","type":"git","directory":"packages/controlled-contract"},"_npmVersion":"11.16.0","description":"Deterministic controlled-contract validation and proof-plan assessment.","directories":{},"_nodeVersion":"24.18.1","dependencies":{"ajv":"8.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/controlled-contract_0.1.0_1786392228535_0.12045355461128593","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@agent-chassis/controlled-contract","version":"0.7.0","type":"module","license":"Elastic-2.0","repository":{"type":"git","url":"git+https://github.com/agent-chassis/agent-chassis.git","directory":"packages/controlled-contract"},"publishConfig":{"access":"public"},"exports":{".":{"types":"./current.d.mts","default":"./current.mjs"},"./current.mjs":{"types":"./current.d.mts","default":"./current.mjs"},"./assessment":{"types":"./lib/contract-assessment.d.mts","default":"./lib/contract-assessment.mjs"},"./assessment-recovery":{"types":"./lib/assessment-recovery.d.mts","default":"./lib/assessment-recovery.mjs"},"./validator-cache":"./lib/compiled-validator-cache.mjs","./multi-pack-assessment":{"types":"./lib/multi-pack-assessment.d.mts","default":"./lib/multi-pack-assessment.mjs"},"./proof-intents":{"types":"./lib/proof-intent-selection.d.mts","default":"./lib/proof-intent-selection.mjs"},"./proof-intent-discovery":{"types":"./lib/proof-intent-discovery.d.mts","default":"./lib/proof-intent-discovery.mjs"},"./proof-pack-binding-assistance":{"types":"./lib/proof-pack-binding-assistance.d.mts","default":"./lib/proof-pack-binding-assistance.mjs"},"./proof-plan-compiler":{"types":"./lib/proof-plan-compiler.d.mts","default":"./lib/proof-plan-compiler.mjs"},"./verification-profile":"./lib/verification-profile-v1.mjs","./test-proof":"./lib/test-proof-contract-v1.mjs","./runtime-evidence":"./lib/test-proof-runtime-evidence-v2.mjs","./bounded-diagnostics":"./lib/bounded-diagnostic-projection.mjs","./artifact-set-provenance":{"types":"./lib/artifact-set-provenance.d.mts","default":"./lib/artifact-set-provenance.mjs"},"./vocabulary":"./vocabulary/controlled-contract-vocabulary.v1.mjs","./proof-intents/catalog.json":"./proof-intents/catalog.json","./proof-packs":"./lib/admitted-proof-packs.mjs","./profiles/catalog.json":"./profiles/catalog.json","./schema/controlled-acceptance-contract.v1.schema.json":"./schema/controlled-acceptance-contract.v1.schema.json","./schema/controlled-contract-verification-profile.v1.schema.json":"./schema/controlled-contract-verification-profile.v1.schema.json","./schema/controlled-contract-verification-profile-input.v1.schema.json":"./schema/controlled-contract-verification-profile-input.v1.schema.json","./schema/controlled-contract-verification-profile-result.v1.schema.json":"./schema/controlled-contract-verification-profile-result.v1.schema.json","./schema/controlled-contract-test-proof-runtime-evidence.v2.schema.json":"./schema/controlled-contract-test-proof-runtime-evidence.v2.schema.json","./schema/controlled-contract-proof-intent-catalog.v1.schema.json":"./schema/controlled-contract-proof-intent-catalog.v1.schema.json","./schema/controlled-contract-proof-pack-catalog.v1.schema.json":"./schema/controlled-contract-proof-pack-catalog.v1.schema.json","./schema/controlled-contract-admitted-proof-pack.v1.schema.json":"./schema/controlled-contract-admitted-proof-pack.v1.schema.json","./schema/controlled-contract-admitted-proof-pack.v2.schema.json":"./schema/controlled-contract-admitted-proof-pack.v2.schema.json","./schema/controlled-contract-proof-pack-selection.v1.schema.json":"./schema/controlled-contract-proof-pack-selection.v1.schema.json","./schema/controlled-contract-proof-pack-authoring.v1.schema.json":"./schema/controlled-contract-proof-pack-authoring.v1.schema.json","./schema/controlled-contract-proof-pack-binding-assistance.v1.schema.json":"./schema/controlled-contract-proof-pack-binding-assistance.v1.schema.json","./schema/controlled-contract-proof-plan-request.v1.schema.json":"./schema/controlled-contract-proof-plan-request.v1.schema.json","./schema/controlled-contract-proof-plan.v1.schema.json":"./schema/controlled-contract-proof-plan.v1.schema.json","./schema/controlled-contract-proof-verification-result.v1.schema.json":"./schema/controlled-contract-proof-verification-result.v1.schema.json","./schema/controlled-contract-multi-pack-assessment.v1.schema.json":"./schema/controlled-contract-multi-pack-assessment.v1.schema.json","./schema/controlled-contract-assessment.v1.schema.json":"./schema/controlled-contract-assessment.v1.schema.json","./schema/controlled-contract-assessment.v2.schema.json":"./schema/controlled-contract-assessment.v2.schema.json","./schema/controlled-contract-assessment.v3.schema.json":"./schema/controlled-contract-assessment.v3.schema.json","./schema/controlled-contract-component-exclusion-applicability.v1.schema.json":"./schema/controlled-contract-component-exclusion-applicability.v1.schema.json","./schema/controlled-contract-exact-binding-declaration.v1.schema.json":"./schema/controlled-contract-exact-binding-declaration.v1.schema.json","./schema/controlled-contract-exact-binding-sources.v1.schema.json":"./schema/controlled-contract-exact-binding-sources.v1.schema.json","./schema/controlled-contract-exact-binding-assessment-request.v1.schema.json":"./schema/controlled-contract-exact-binding-assessment-request.v1.schema.json","./schema/controlled-contract-exact-binding-result.v1.schema.json":"./schema/controlled-contract-exact-binding-result.v1.schema.json","./schema/controlled-contract-exact-binding-certification-result.v1.schema.json":"./schema/controlled-contract-exact-binding-certification-result.v1.schema.json","./schema/controlled-contract-artifact-set-provenance.v1.schema.json":"./schema/controlled-contract-artifact-set-provenance.v1.schema.json","./schema/integration-test-design-assessment-input.experimental.v0.1.schema.json":"./schema/integration-test-design-assessment-input.experimental.v0.1.schema.json","./schema/integration-test-design-assessment-result.experimental.v0.1.schema.json":"./schema/integration-test-design-assessment-result.experimental.v0.1.schema.json","./package.json":"./package.json"},"bin":{"controlled-contract":"bin/assess-contract.mjs","controlled-contract-build-proof-plan":"bin/build-proof-plan.mjs","controlled-contract-describe-proof-pack":"bin/describe-proof-pack.mjs","controlled-contract-derive-lexicographic-conformance":"bin/derive-lexicographic-conformance.mjs","controlled-contract-derive-declared-boundary-record-consistency":"bin/derive-declared-boundary-record-consistency.mjs","controlled-contract-derive-declared-limit-guidance-propagation":"bin/derive-declared-limit-guidance-propagation.mjs","controlled-contract-discover-proof-intents":"bin/discover-proof-intents.mjs","controlled-contract-inspect-proof-pack-bindings":"bin/inspect-proof-pack-bindings.mjs","controlled-contract-select-proof-packs":"bin/select-proof-packs.mjs"},"scripts":{"test":"node --test test/*.test.mjs test/runtime/*.test.mjs test/proof-packs/*.test.mjs test/development/*.test.mjs test/legacy/versions/*.test.mjs","build:admissions":"node test/support/build-admitted-proof-pack-catalog.mjs","prepare:validators":"node bin/prepare-validator-cache.mjs","verify:validators":"node bin/prepare-validator-cache.mjs --verify"},"dependencies":{"ajv":"8.18.0"},"engines":{"node":">=22"},"_id":"@agent-chassis/controlled-contract@0.7.0","description":"Deterministic controlled-contract validation and proof-plan assessment.","bugs":{"url":"https://github.com/agent-chassis/agent-chassis/issues"},"homepage":"https://github.com/agent-chassis/agent-chassis#readme","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-YC2HdND+EBl2FKZC+VSIroIl7joZxsEBBXVeQSdABe4WrH9emghkKIMzb5WaB0Io5/DpmZ8Kov3A8Os/SlV27Q==","shasum":"50fb8eae32cf9be9c589ac09d6e44d5b0e135464","tarball":"https://registry.npmjs.org/@agent-chassis/controlled-contract/-/controlled-contract-0.7.0.tgz","fileCount":329,"unpackedSize":4286498,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDo0gJNoH8GHJ2cZO+mRw1X+rorsdiTM3HZejg38STXvAiEAqTycTWeL36p2efV/vhuxpl6hn7KKBbIMLfmfd7YF2Do="}]},"_npmUser":{"name":"bdownie","email":"info@node-bio.com"},"directories":{},"maintainers":[{"name":"bdownie","email":"info@node-bio.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/controlled-contract_0.7.0_1788460259255_0.23312028794898043"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-10T20:03:48.376Z","modified":"2026-09-03T18:30:59.660Z","0.1.0":"2026-08-10T20:03:48.669Z","0.7.0":"2026-09-03T18:30:59.476Z"},"bugs":{"url":"https://github.com/agent-chassis/agent-chassis/issues"},"license":"Elastic-2.0","homepage":"https://github.com/agent-chassis/agent-chassis#readme","repository":{"type":"git","url":"git+https://github.com/agent-chassis/agent-chassis.git","directory":"packages/controlled-contract"},"description":"Deterministic controlled-contract validation and proof-plan assessment.","maintainers":[{"name":"bdownie","email":"info@node-bio.com"}],"readme":"# @agent-chassis/controlled-contract\n\nDeterministic controlled-contract validation and proof-plan assessment.\n\nThe package has bounded proof-intent discovery, selection, authoring, and\nassessment commands:\n\n```sh\ncontrolled-contract --input contract.json\n\ncontrolled-contract-discover-proof-intents\n\ncontrolled-contract-discover-proof-intents \\\n  --query \"compact result omissions\"\n\ncontrolled-contract-select-proof-packs \\\n  --input contract.json \\\n  --intent controlled-proof-intent.lossless-projection\n\ncontrolled-contract-describe-proof-pack \\\n  --profile-id proof.completeness.lossless-projection \\\n  --profile-version 1.0.0 \\\n  --intent controlled-proof-intent.lossless-projection\n\ncontrolled-contract-inspect-proof-pack-bindings \\\n  --input contract.json \\\n  --profile-id proof.completeness.lossless-projection \\\n  --profile-version 1.0.0 \\\n  --intent controlled-proof-intent.lossless-projection\n\ncontrolled-contract-build-proof-plan \\\n  --input contract.json \\\n  --request proof-plan-request.json\n\ncontrolled-contract \\\n  --input contract.json \\\n  --proof-plan proof-plan.json\n```\n\nIt checks the v0.34 controlled graph and writes a bounded assessment to stdout.\nThe lossless reports are stored beneath\n`.cache/controlled-contract/assessments/sha256/<assessment-digest>/`.\n\n## What the result means\n\nThe planning assessment keeps four questions separate when an exact-bound pack is selected:\n\n- `structure`: is the authored controlled graph internally valid?\n- `profile_discrimination`: does it satisfy a release-certified proof pack?\n- `exact_binding`: do the complete captured inputs satisfy that pack's exact\n  binding declaration?\n- `residue_status`: what meaning remains explicitly outside the controlled graph?\n\nThe command is non-authoritative. It never turns authored claims into runtime\ntruth, and honest residue does not make a structurally valid contract invalid.\nThere is no unqualified `pass` result.\n\nThe checker cannot discover an obligation omitted from the authored contract.\nRepository grounding is only a structural anchor; it does not prove that a path\nor symbol exists or is honest. Delivered runtime behavior is outside this\nplanning assessment, and a clean structural assessment alone does not prove that\na WK is implementation-ready.\n\n## Discover controlled proof intents\n\n`controlled-contract-discover-proof-intents` is the preceding discovery step.\nWith no arguments it returns all 36 controlled intents exactly once. Each compact\nsummary contains the exact intent ID, its one-sentence definition, controlled\ndiscovery terms, exact capable pack IDs and versions, and authored distinctions\nfrom commonly confused intents. It reads only the intrinsic\n`proof-intents/catalog.json`; complete profiles, adequacy controls, certification\ncorpora, and the raw catalog do not appear in the result.\n\nSearch mode accepts ordinary local text:\n\n```sh\ncontrolled-contract-discover-proof-intents \\\n  --query \"refusal before effects\"\n```\n\nSearch normalizes case, punctuation, Unicode compatibility forms, repetition,\nand query-term order. Exact all-token matches are the strongest result class.\nWhen none exists, any catalog entries sharing at least one term are returned as\nexplicit `partial_match` candidates with matched and unmatched terms. A true\nzero-overlap query remains `no_match`; both outcomes include bounded remediation\nguidance rather than dumping the catalog. Exact IDs are mechanically matched\nwithout suppressing another entry in the same strongest class. All catalog\nentries are evaluated before the optional `--limit` is applied. Every result\nincludes exact source values and match coverage plus `evaluated_intent_count`,\n`total_match_count`, `returned_count`, `omitted_count`, and `truncated`; zero\nmatches reports `no_match`. Candidate order is stable intent-ID order, not a\nranking, and partial discovery never calls any candidate best or authoritative.\n\nThe pure `discoverProofIntents` API accepts only `query` and, in search mode,\n`limit`. The CLI and API accept no path, root, catalog, executable, module, or\nenvironment override. They never select, combine, invoke, or admit a pack. The\ncanonical UTF-8 JSON result is bounded to 65,536 bytes and fails closed rather\nthan omitting fields required to interpret the result.\n\n## Select proof packs mechanically\n\n`proof-intents/catalog.json` is the single intrinsic mapping from stable\ncontrolled proof-intent IDs to exact admitted pack IDs and versions. It records\nthe intent definition, mechanically checkable compatibility, required inputs,\nexact-binding requirement, and distinctions from commonly confused intents.\n\nAfter discovery, explicitly choose controlled intent IDs. The pure\n`selectProofPacks` API accepts only a controlled contract and those explicitly\nrequested controlled intents. It never infers an intent from prose or graph\nomission. A missing obligation therefore leaves the requested candidate visible\nas `requires_bindings`; unknown or stale-digest requests fail closed; multiple\nmechanically valid candidates remain an explicit ambiguity with no ranking.\nThe compact selector command returns only relevant intent definitions and\ndistinctions, pack guarantees and exclusions, required inputs, remediation\ncodes, an exact authoring-projection digest and pattern counts, and\nsubstrate/source digests. It does not return the 36 profile definitions or\ncertification corpora.\n\n## Author one selected proof pack\n\nAfter choosing an exact candidate, use\n`controlled-contract-describe-proof-pack` with its exact profile ID and version.\nThe command accepts no path, catalog, root, module, executable, or environment\noverride. An optional repeated `--intent` narrows the projection and fails when\nthe intent does not map to that exact pack.\n\nThe result is a typed `controlled-contract-proof-pack-authoring.v1` projection.\nIt contains the selected guarantee, every explicit exclusion, relevant intent\ndistinctions, every reference and number binding requirement, distinctness and\npopulation/count constraints, compact claim propositions, falsifiers,\nverification relations, collections, resolver/evidence requirements, and the\nexact satisfaction expression. Its evaluation-input skeleton names where the\ncaller must supply contract reference IDs and numbers without copying the\npack's example identities into a new contract.\n\nClaim propositions use a display notation only: `$role` is a profile role,\n`number($role)` is a number-role operand, brackets contain the operand list, and\n`@mode($role)` is the applicability context. The profile remains the enforcing\nartifact; the projection is a digest-bound authoring view, not a second grammar.\nEvery shipped pack must project within 65,536 UTF-8 bytes. An oversized\nprojection fails closed instead of truncating. Certification controls,\nmutation corpora, profile source paths, and executable modules never appear.\n\n### Generic v0.34 profile controls\n\nThe v0.34 profile grammar has three opt-in controls; profiles that omit them\nretain their existing evaluation behavior.\n\n- A `for_each` over a `zero_or_more` role may select\n  `quantifier: \"universal\"` and `empty_behavior: \"vacuously_satisfied\"` only\n  when it names the dominating `complete_population` pattern through\n  `complete_population_pattern_id`. An explicitly bound, mechanically closed\n  empty population then satisfies the iteration and is reported as vacuous.\n  Missing, incomplete, invented, existential, or witness-producing input does\n  not. Iterated relations and collections expand by member; only a relation\n  whose two endpoints share the same empty iteration, or a collection whose\n  complete membership is wholly vacuous, can be vacuous. A nonempty iterated\n  relation requires exactly one same-member edge per member and rejects\n  duplicate, cross-member, or other edges incident to the selected endpoint\n  populations.\n- `binding_constraint_patterns` are satisfaction leaves that refine a role's\n  global cardinality on a selected branch. An `any_of` may request\n  `branch_cardinality: \"exactly_one\"`; every route then carries one exact guard\n  for each branch-local optional role, including an exact-zero guard on sibling\n  routes. Selection comes from those satisfaction leaves, not from caller\n  labels; a role used only by constraint leaves is invalid. The selected route\n  still has to satisfy its claims, bindings,\n  relations, resolver facts, and delivered-evidence leaves; unused routes do\n  not make their inputs globally mandatory.\n- `falsifier_occurrence_bindings` attach to a `verifies` relation pattern and\n  name reference-role positions, number roles, and applicability joining for\n  the target proposition, verification proposition, and controlled falsifier.\n  `exact_scope` joins the complete applicability context;\n  `shared_operands` permits mode differences but requires every applicability\n  operand on each surface to be explicitly covered by the occurrence joins.\n  Reference joins\n  compare equality-normalized identities while retaining the exact raw role ID,\n  so an equality alias cannot substitute a different occurrence. Missing or\n  mismatched occurrence, target, source, population, version, condition,\n  temporal operand, or other named role is a non-pass.\n\nThe authoring projection exposes these controls and their counts, and binding\nassistance reports their role usage. Admission adequacy treats their deletion\nor weakening as guarantee-relevant. They are domain-neutral profile grammar:\nthey do not define pagination, authentication, tri-state status, or negative\nobservation vocabulary.\n\nAn iterated claim may participate in a `closed_set` collection. It may not\nparticipate in an `ordered_sequence`: the v0.34 grammar has no semantic ordering\nsource for a set-valued population, and deriving order from reference IDs would\nmake identifier renaming observable.\n\n## Inspect evaluation-input bindings\n\nAfter describing an exact admitted pack, run\n`controlled-contract-inspect-proof-pack-bindings` with the contract, exact\nprofile ID/version, optional repeated controlled intents, and optionally an\nexisting `--evaluation-input`. The pure `inspectProofPackBindings` API accepts\nthe corresponding in-memory JSON values.\n\nFor every reference and number role, the result reports allowed types, identity\nkinds, cardinality or numeric constraints, every mechanically compatible\ncontract candidate, exact compatibility facts, any supplied binding, and a\ntyped `unbound`, `one_compatible_candidate`, `ambiguous`, `incompatible`, or\n`validly_bound` status. It also identifies profile patterns, population uses,\ndistinctness sets, and count constraints that consume the role. A single\ncandidate remains unselected: neither the API nor CLI writes an evaluation\ninput, interprets identity names, or treats compatibility as semantic truth.\n\nProfiles, admissions, catalogs, and intent mappings are package-owned. Stale\nidentity, incompatible intent, malformed contract, and malformed evaluation\ninput fail closed. Semantically invalid supplied bindings remain explicit as\n`incompatible` and make the CLI exit 2. Canonical output binds contract,\nevaluation-input, profile, admission, catalog, vocabulary, profile-population,\nintent-artifact, and authoring-projection digests; it fails instead of\ntruncating beyond 65,536 UTF-8 bytes.\n\nPopulation remediation reports name both accepted membership declarations,\n`reference:contains` and `reference:member_of`, together with the affected\npopulation, applicability scope, declared members, membership claims, declared\ncardinality, and observed member count. Empty populations still require an\nexplicit exact cardinality of zero, and enforcement is unchanged.\n\n## Build a canonical proof plan\n\nAfter authoring every required evaluation input, put only the remaining caller\nchoices in a schema-valid `controlled-contract-proof-plan-request.v1` document:\n\n```json\n{\n  \"schema_version\": \"controlled-contract-proof-plan-request.v1\",\n  \"requested_intents\": [\n    \"controlled-proof-intent.lossless-projection\"\n  ],\n  \"selected_packs\": [\n    {\n      \"profile_id\": \"proof.completeness.lossless-projection\",\n      \"profile_version\": \"1.0.0\",\n      \"evaluation_input_path\": \"lossless-projection.evaluation-input.json\"\n    }\n  ]\n}\n```\n\nThen compile it mechanically:\n\n```sh\ncontrolled-contract-build-proof-plan \\\n  --input contract.json \\\n  --request proof-plan-request.json > proof-plan.json\n```\n\nThe compiler reruns intrinsic selection, loads only exact admitted package-owned\npacks, verifies that each requested intent is assigned to exactly one explicitly\nselected capable pack, validates supplied evaluation-input bindings, and computes\nthe contract, catalog, vocabulary, profile-population, intent-artifact, profile,\nadmission, guarantee, adequacy, evaluation-input, and exact-binding digests. For\nexact-bound packs, the selected-pack request must also declare `exact_capture`\nwith its capture root, normalized relative contract and evaluation-input paths,\nand exact sources. Paths in the request are resolved relative to the request\nfile; the emitted plan binds resolved evaluation-input and capture-root paths.\n\nMissing inputs are returned together as stable typed diagnostics. Omitted or\nunknown intents, ambiguous assignments, uncovered or incompatible intents,\nduplicate or stale packs, malformed or incompatible evaluation inputs,\nunexpected exact capture, unsafe exact paths, and conflicting exact file\nidentities fail closed. The request cannot contain digests, placeholders,\ncaller catalogs, profile paths, modules, executables, environment overrides,\nalternate package roots, or an output path. The compiler never infers an intent,\nselects a pack, or binds a role. Its canonical JSON is deterministic under\nproperty, intent, and selected-pack reordering and is bounded to 131,072 UTF-8\nbytes.\n\nThe complete authoring workflow is:\n\n```text\ndiscover-proof-intents\n→ select-proof-packs\n→ describe-proof-pack\n→ inspect-proof-pack-bindings\n→ author evaluation input\n→ build-proof-plan\n→ assess-contract\n```\n\n## Assess proof packs\n\nThe package contains only each pack's compact runtime carriers. Ordinary packs\nship a profile, evaluation-input template, and release admission. Exact-bound\npacks also ship an exact-binding declaration and its release certification.\nAssessment verifies those digest bindings; it does not ship or rerun the large\nmutation, negative-fixture, and coverage-witness corpora used to certify a pack\nrelease.\n\nEvery admitted assessment, including a one-pack assessment, requires a\nschema-valid `controlled-contract-proof-plan.v1` document. The CLI has no\nsingle-pack flags and never assigns proof intent implicitly. Exact-bound pack\nentries carry their capture root, relative contract and evaluation paths, and\nsource declaration inside that plan.\n\n`proof.compatibility.behavioral-preservation` binds complete baseline and\ncandidate behavior-report artifacts to the same contract/evaluation snapshot.\nIt requires equal captured bytes and distinct caller-selected source\ndescriptors. Different paths are not proof of different filesystem objects,\nproducers, or honest baseline/candidate provenance; byte-identical copies and\nhard links remain inside that explicit grounding boundary.\n\n## Projected-evaluation binding\n\nExact binding v1 proves that the captured artifacts are exactly the declared\nones and that the declared role bindings are exactly the projected populations\nand references. On its own it does not require the contract nodes a profile\nselects to be the nodes the deterministic projection derived, so a caller could\nauthor additional graph material that satisfies the profile beside a satisfied\nexact binding.\n\nAn exact-bound declaration may close that gap with the optional versioned opt-in\n`projected_evaluation_binding`, naming the deterministic projection's result\nrequirement and one package-owned graph projection of that transformer. The\nfield is optional: a declaration without it keeps its unchanged v1 meaning, and\nno admitted pack currently declares it.\n\nWhen it is declared, the assessment additionally requires that every\ncaptured-contract claim, relation, and collection the internally computed\nprofile evaluation actually selected is a node of the projected contract graph\nderived from the captured projection-result bytes in the same capture cycle, and\nthat every node of that graph — claims, propositions, references, relations,\ncollections — appears exactly once in the captured contract with byte-equal\ncanonical content. Contract material the profile did not select and the\nprojection did not emit stays permitted. Equality normalization may not merge a\nprojected reference with any other captured reference.\n\nThe check binds the contract, profile, evaluation-input, admission,\ndeclaration, certification, vocabulary, projection-result, and opt-in\nidentities, and refuses a declared opt-in with no derived graph, a derived graph\nwith no declared opt-in, and any pattern kind whose selected contract nodes the\nevaluator does not name. Its failures appear as `assessment_binding` diagnostics\nunder `exact_binding.projected_evaluation`, prevent `exact_binding: proven`, and\nare reported on `verification_scope.projected_evaluation_binding`. They are\nnever structural or runtime-evidence findings.\n\nTwo selection points consume contract claims the pattern results do not name:\na `complete_population` reference binding, and a `for_each` claim pattern's\n`association_bindings`. Both are reported by a write-only evaluator trace that\ncallers cannot supply or alter, and both fail closed without it.\n\nFor association bindings the trace is per member. The evaluator announces the\nexact member population it is about to iterate and the number of associations\nthe pattern declares, then emits one record per (member, declared association)\npair carrying the member, the association index, its local role and cardinality,\nits outcome, and the complete population of claims it selected. The binding\naccepts only a trace that exactly accounts for that announced iteration: a\nmissing record, a surplus record, a record for an unannounced member, a record\nwhose role or cardinality disagrees with the profile, a record left unsatisfied\nby a failed or ambiguous association, a selection whose size contradicts its\ncardinality, and one claim attributed to two members are each refused with a\nstable typed diagnostic. A universal iteration over a mechanically complete\nempty population announces itself as vacuous and is accepted only when it\nselected nothing at all, which is what separates legitimate vacuity from a trace\nwhose records went missing. Every claim the trace reports is then subject to the\nsame projected-node and transitive-closure comparison as any other selected\nnode.\n\nA `same_reference` comparison over distinct references remains unsupported: the\nevaluator does not name the equality claims it relied on, so a profile declaring\nthe comparison is refused up front.\n\n## Assess a proof plan\n\nUse a schema-valid `controlled-contract-proof-plan.v1` document for zero, one,\nor several packs:\n\n```sh\ncontrolled-contract \\\n  --input contract.json \\\n  --proof-plan proof-plan.json\n```\n\nEach pack entry independently binds its profile ID and version, requested\ncontrolled intents, evaluation-input location and digest, admission/profile\ndigests, and—when required—its capture root, relative contract and evaluation\npaths, exact source declaration, and exact-binding digests. Plan-level digests\nbind the contract, admitted catalog, vocabulary, profile population, and intent\nartifact. Duplicate identities, conflicting inputs, unknown intents, stale\ndigests, and pack/intent mismatches fail closed.\n\nThe aggregate result proves profile discrimination only when every selected\npack proves its own guarantee. Every v2 pack runs its own deterministic exact\ncapture. Per-pack guarantees are not collapsed, and all diagnostics, exclusions,\nand missing inputs retain their pack ID/version provenance. Zero packs leaves\nprofile discrimination and exact binding `not_assessed`; authority is always\n`non_authoritative`. Delivered runtime behavior is outside the assessment rather\nthan an incomplete proof intent or axis.\n\nThe complete machine-readable list is `profiles/catalog.json`. A missing pack is\nreported as not assessed; a different proof pack cannot silently substitute.\n\n## Compact output\n\nThe multi-pack terminal result is intentionally small:\n\n```json\n{\n  \"requested_proof_intents\": [\"controlled-proof-intent.lossless-projection\"],\n  \"selected_pack_count\": 1,\n  \"evaluated_pack_count\": 1,\n  \"structure\": \"proven\",\n  \"profile_discrimination\": \"proven\",\n  \"exact_binding\": \"not_assessed\",\n  \"assessment_scope\": \"planning\",\n  \"authority\": \"non_authoritative\",\n  \"per_pack\": [{\n    \"profile_id\": \"proof.completeness.lossless-projection\",\n    \"profile_version\": \"1.0.0\",\n    \"profile_discrimination\": \"proven\",\n    \"exact_binding\": \"not_applicable\"\n  }],\n  \"diagnostic_count\": 0,\n  \"exclusion_count\": 0,\n  \"missing_input_count\": 0,\n  \"artifact\": \"controlled-contract-assessment://sha256/.../manifest.json\"\n}\n```\n\nThe bundle uses the fixed files `assessment.json`, `assessment.md`,\n`structural.full.json`, `proof-packs.full.json`, and `manifest.json`.\n`proof-packs.full.json` losslessly preserves every independently evaluated pack,\nits admission, diagnostics, exclusions, missing inputs, source digests, and exact\ncapture result without filename collisions. Caller plan paths and capture-root\npaths do not participate in the content identity.\n\n## Library API\n\n```js\nimport {\n  assessContractFiles,\n  assessExactBoundContractFiles,\n  assessProofPlanFiles,\n  assessStructuralContractFile,\n  buildProofPlan,\n  buildProofPlanFiles,\n  canonicalProofPlanJson,\n  canonicalProofIntentDiscoveryJson,\n  discoverProofIntents,\n  inspectProofPackBindings,\n  selectProofPacks,\n  loadAdmittedProofPack,\n  readProofPackCatalog,\n  describeProofPackAuthoring,\n  searchVocabulary\n} from \"@agent-chassis/controlled-contract\";\n```\n\nVocabulary queries return advisory slices for authoring convenience. Validation\nalways uses the complete intrinsic v0.34 vocabulary and its declared algebra.\n\n## Deterministic projection bounds\n\n### Declared bounded-policy proofs\n\nTwo independent exact-binding packs cover different bounded-policy obligations:\n\n- `proof.policy.declared-boundary-record-consistency@1.0.0` checks an exact\n  `caller_asserted` observation record against an exact declared policy and\n  captured UTF-8 subjects. Its `declared-boundary-record-consistency.v1`\n  transformer applies the closed character/byte/UTF-16 unit and measurement\n  classes, derives every nonzero N-1/N/N+1 census (N/N+1 for a zero maximum),\n  validates the complete direction/inclusivity/refuse-or-truncate disposition\n  table, and emits complete populations and counts bound to the source-set\n  digest. `captured_execution_transcript` is a recognized but refused\n  provenance value because this package has no mechanism that can establish it.\n- `proof.policy.declared-limit-propagation@1.0.0` checks one exact raw UTF-8\n  guidance artifact against the exact declared policy. Its\n  `declared-limit-guidance-propagation.v1` transformer requires exactly one\n  plain-decimal value and exact unit token per policy key and refuses missing,\n  duplicate, stale, conflicting, substituted, wrong-unit, and unrelated-number\n  guidance.\n\nBoth profiles use projected-evaluation binding for transformer-derived\ncase/association-to-limit and limit-to-unit edges. They are independently\nselectable and neither entails the other. Neither proves that a captured unit is\nthe unit enforced by production code, runtime truth, authority, applicability,\nCCE consequence, or shared policy identity across separate assessments. The\nguidance pack covers one captured surface only, and the boundary pack does not\nprove execution provenance for caller-asserted observations.\n\n```sh\ncontrolled-contract-derive-declared-boundary-record-consistency \\\n  --policy policy.json --observations observations.json --subjects subjects.json\n\ncontrolled-contract-derive-declared-limit-guidance-propagation \\\n  --policy policy.json --guidance guidance.md\n```\n\n### Exact caller-input authority confinement\n\n`proof.input.caller-authority-confinement@1.0.0` implements\n`controlled-proof-intent.caller-input-authority-confinement` with the\npackage-owned `caller-input-surface-capture.v1` transformer. It consumes exactly\nfive positionally bound canonical artifacts: the closed accepted-input policy,\naccepted request bytes, forbidden request bytes, authenticated sound-negative\nobservation evidence, and its matching capture proof. It emits one combined\nresult and one `caller-input-authority-contract` graph; the profile's sole\nprojected-evaluation binding names that result and graph.\n\nThe transformer exhaustively traverses both request payloads with typed structural\ntoken vectors for object keys and array carrier/index positions. It applies the\ncaptured NFC, decode-once, and closed alias rules; rejects unknown, colliding,\ncyclic, parser-ignored, or ambiguous supply; derives classification only from the\ncaptured policy; and closes every forbidden member through its exact nonempty\ncoordinate, operation, and protected-effect associations. The accepted request\nmust contain the exact path-looking opaque control, contain only declared allowed\nmembers, select no coordinate, and be accepted. The forbidden request must contain\nan exact authority-bearing member and be refused.\n\nThe same graph exactly joins request, attempt, disposition, acceptance, refusal,\nobservation cut, source census, operation, effect, and trace occurrence identities.\nThe policy-derived mandatory source census must equal the sound-negative declared\nand observed source populations. Before the exact refusal cut, the forbidden\nattempt may have no resolver, loader, filesystem, environment, module, catalog,\nsubprocess, return, or success occurrence. The transformer reuses the internal\nsound-negative validator without changing or widening\n`proof.observation.sound-negative`; that separate pack supplies no identity or\nevidence to this pack.\n\nThe pack excludes canonical-policy or adapter fidelity outside the capture,\ninstrumentation completeness outside the policy-derived source census,\npost-refusal behavior and later requests, runtime truth beyond the exact capture,\nCCE consequences or publication authority, and cross-pack occurrence joins. It\ndoes not exclude any member, source, operation, effect, or classification inside\nthe captured policy, exact requests, and required source census.\n\n### Exact absence-only sound-negative observation\n\n`proof.observation.sound-negative@1.0.0` implements\n`controlled-proof-intent.sound-negative-observation` with the package-owned\n`sound-negative-observation-capture.v1` transformer and its\n`observation-contract` projection. The pack is exact-binding-only. Its profile\ncontains one conjunctive `all_of` and no `present` or `unavailable` branch.\n\nFor one exact captured target, attempt, interval, declared source population,\nand raw observation population, the transformer validates complete declared and\nobserved source coverage, one stable endpoint pair per source outcome, and every\nvalid observation's authentication and exact target, source-of-record, attempt,\nposition, and raw-observation grounding. The profile universally requires every\nvalid observation not to match the selected target, exactly binds the empty\ninvalidating-condition population, and selects the sole projected `absent`\nconclusion from the same exact capture cycle. A `present` or `unavailable`\nprojection cannot satisfy this pack.\n\nA complete captured source population may be empty. In that case its exact\nsource, source-outcome, endpoint, raw-observation, valid-observation, and position\npopulations and their declared count signals are all bound at zero. The\nper-member obligations are therefore vacuously satisfied relative to that exact\ndeclared captured population, while the empty invalidating-condition population\nand exact projected `absent` conclusion remain affirmative requirements. This\ndoes not claim that pre-capture source discovery was correct or complete.\n\nThe pack excludes runtime or post-capture truth, pre-capture source-discovery\nauthority, evidence or applicability authority and CCE consequences, external\nPKI or legal identity, undeclared sources or mutations, derived provenance,\ncross-pack occurrence joins, authenticated-presence proof, and\nevidenced-unavailability proof.\n\n### Exact supplementary-failure isolation\n\n`proof.failure.supplementary-isolation@1.0.0` implements\n`controlled-proof-intent.supplementary-failure-isolation` with the package-owned\n`supplementary-isolation-attempt-record.v1` transformer. It consumes the exact\nattempt, core-settlement, supplementary-failure, and final-result records and\nprojects one self-contained controlled contract for that attempt.\n\nThe transformer derives the selected operation and attempt, the sole settlement,\nfailure, and final-result occurrences, both complete core-member populations, the\ncomplete final membership, the observed supplementary-result population, and the\nclosed reason and disclosure populations. It emits core-preservation claims only\nwhen the exact captured value and complete core population are preserved, and it\nderives supplementary absence from the captured result population rather than a\ncaller-authored empty set. Projected-evaluation binding pins every selected profile\nnode to that transformer output. The profile uses one overall conjunctive `all_of`;\nits present-unavailable and omitted-disclosed alternatives are one expression-local\n`any_of` with `branch_cardinality: exactly_one`.\n\nThe pack excludes runtime truth outside the capture, acquisition completeness\nbefore capture, successful supplementary computation, core-computation failure,\nconcurrency outside the attempt, retries and later attempts, undeclared effects or\ncomponents, semantic reason quality beyond closed-population membership, and\napplicability, evidence authority, or CCE consequence.\n\n### Exact lexicographic-ordering conformance\n\n`proof.ordering.lexicographic-conformance@1.0.0` is an exact-capture planning\nproof pack for\n`controlled-proof-intent.deterministic-lexicographic-ordering`. It binds four\ncanonical artifacts—the declared input, complete ordered result, closed ordering\npolicy, and complete item-key/comparator evidence—to one package-derived\n`deterministic-lexicographic-conformance.v1` report. The exact-binding runner\nderives that report from the captured bytes, repeats the derivation, compares the\ncanonical bytes, and projects the declared-item, result-item, and policy-key\npopulations from the derived report. The profile accepts no caller-authored\nresolver facts.\n\nThe policy contains at least two keys. Each key declares its extractor, type,\ncontiguous precedence, direction, exact equality, Unicode collation and\nnormalization, and punctuation behavior. The tie-breaker is a separately declared\nUnicode-scalar comparison of `item_id`. Evidence contains every item/key value,\nevery unordered distinguishable item pair, and nonidentity input, declaration,\nand equivalent-serialization observations. The transformer checks complete\nmutually inclusive populations and exact counts, the first unequal key,\nfallthrough only across equal higher-priority keys, tie-breaking only after all\npolicy keys are equal, non-equality of distinct identities, the complete result,\nand invariant results for all supplied permutation observations.\n\nThe public derivation command is:\n\n```sh\ncontrolled-contract-derive-lexicographic-conformance \\\n  --comparator-evidence comparator-evidence.json \\\n  --input input.json \\\n  --policy policy.json \\\n  --result result.json\n```\n\nThis guarantees only conformance of the four exact captured artifacts. It does\nnot establish source authority, acquisition completeness before capture,\nbehavior after capture, runtime deployment behavior, pack applicability, or\nundeclared coercion, null, NaN, locale, collation, normalization, or punctuation\nsemantics. Empty and singleton populations and policies with fewer than two keys\nare intentionally excluded.\n\nThe package-owned `integration-prefix-census.v1` transformer is a bounded local\nmaterialization mechanism. It deterministically expands an exact captured slice\nDAG, its exact integration-unit partition, and its exact execution-path and\nrequired-branch population into the complete supplied prefix-case census. It is\nnot an unbounded symbolic proof engine.\n\nThe transformer accepts at most 20 integration units and materializes at most\n100,000 prefix/path/branch cases. Inputs at either bound are accepted. An input\nthat would exceed either bound fails closed with the stable\n`projection_population_limit_exceeded` diagnostic; the transformer never\ntruncates or samples the census. A larger population therefore needs a different\npackage-owned derivation strategy rather than an author-selected cap.\n\nThe registry is transformer-owned: each registered deterministic transformer\nvalidates its source count, parses canonical sources, validates its result\nschema/version, performs its derivation, and exposes its named set and singleton\nprojections. `mutation-pagination-trace.v1` consumes one closed canonical event\ntrace plus its exact captured states. It retains ordered member occurrences in\nthe captured result while projecting normalized identity sets, and gives every\noccurrence a content-derived identity so repeated semantic member values remain\nobservable. Singleton projections bind the exact selected traversal, page\nattempt, cursor, mutation, versions, snapshot, refusal, page-return,\ncursor-advancement, and protected-effect population used by the pagination\npacks; callers do not choose plausible identities.\n\n`controlled-proof-intent.mutation-consistent-pagination` has two alternative\npacks, selected explicitly according to policy. It is not an `any_of` profile\nand selection never turns the two policies into simultaneous obligations:\n\n- `proof.pagination.snapshot-consistency@1.0.0` binds every declared page\n  attempt and returned page to one immutable exact snapshot across a relevant\n  live-source mutation, and compares the complete stable and interleaved ordered\n  member-occurrence sequences.\n- `proof.pagination.versioned-cursor-refusal@1.0.0` binds cursors and successful\n  pages to their traversal version, then proves that the exact stale next-page\n  attempt is refused before any page artifact, return event, cursor advancement,\n  protected write, or protected mutation. An unrelated-source control remains\n  accepted.\n\nBoth packs require exact binding and use content digests, including\n`distinct_content_sha256` when two captured states or versions must differ.\nThey establish planning-time discrimination over exact captured evidence only.\nThey exclude capture provenance, evidence authority, runtime truth, undeclared\nmutations and effects, retention/isolation semantics, and standalone complete\npagination. Completeness of one stable traversal remains a separate proof\nobligation.\n\n## Direct-source authentication and provenance\n\n`proof.authentication.direct-source-provenance@1.0.0` binds one exact captured\nevidence occurrence, target, singular provenance/source-of-record source, and\nobservation attempt. Its four mandatory behaviors are `authenticates`,\n`originates_from`, `has_source_of_record`, and `observed_in`; each has an\nindependent verification claim, its positive controlled-complement falsifier,\nand a same-occurrence `verifies` edge.\n\nThe package-owned\n`authentication-provenance-occurrence-capture.v1` transformer consumes exactly\nsix sources: raw evidence bytes plus target-resolution, source-authentication,\nsource-of-record, attempt-binding, and aggregate-authentication witnesses. It\nrequires each witness to embed its exact Ed25519 proof, grounds every proof\nsigner in the captured public-key bytes, verifies the signature over closed\ntyped mechanism-specific claims, and checks the retained proof digest. The\nsource-authentication signer must be the exact grounded `S`; target resolution\nand source-of-record assignment must share one registry authority; aggregate\nauthentication and attempt binding must share the capture authority. It derives the occurrence\nidentity from the capture authority, bound attempt, evidence digest, and\nattempt-binding proof; validates every witness join; emits one canonical\nE/T/S/A record with all witness and proof digests; and exposes four singleton\nprojections for exact binding. Local labels, source descriptors, paths, opaque\ndigest strings, and equal bytes do not select those projections.\n\nThe pack establishes only planning-time discrimination for the exact direct\ncapture and its selected singleton target/source populations. It does not\nestablish authorship, issuance, authorization, ownership, containment, decision\nauthority, generic integrity, runtime truth, caller honesty, source-discovery\ncompleteness, freshness beyond attempt membership, or derived/copy provenance.\nThe grounded provenance source is the exact captured key identity, so an\nunrelated self-authored key cannot attest a different `S`. The pack does not\nestablish external PKI trust, legal identity, or honesty beyond that exact\ncryptographic identity. The derived/copy relation remains outside the active\nvocabulary.\n\n## Compiled-validator startup cache\n\nEvery JSON-Schema validator this package compiles is owned by\n`lib/compiled-validator-cache.mjs`. No other module in the package, and no\nwiki-core controlled-contract surface, constructs Ajv or calls `compile`. Modules\ndeclare a compilation group and receive the named validators back:\n\n```js\nimport { compiledValidators } from \"./compiled-validator-cache.mjs\";\n\nconst { validateSchema } = await compiledValidators(\n  \"controlled-contract.obligation-coverage-carrier.v1\",\n  { validators: { validateSchema: OBLIGATION_COVERAGE_SCHEMA } }\n);\n```\n\nReuse is decided per group. On an exact hit that group's validators are loaded\nfrom generated code and Ajv is never imported, let alone constructed. On a miss\none generation pass runs in a worker over the declared population -- enumerated\nby `lib/validator-population.mjs` -- reusing every group whose published artifact\nis already valid and compiling only the groups whose artifacts are absent or\ninvalid. Each is published atomically and then loaded from that exact artifact.\nThere is no fallback to repeated per-module compilation: an artifact that cannot\nbe obtained is a typed `CompiledValidatorCacheError`.\n\nArtifacts live under the fixed `.cache/controlled-contract/validators` suffix of\nthe writing repository root. Ordinary package execution resolves the enclosing\n`.git` root once from its working context. The package installation is read-only\ninput: its schema and runtime bytes determine cache identity but never anchor\nmutable storage. Caller input, prompt text, `HOME`, `XDG_*`, `TMPDIR`, `PATH`, and\nenvironment-selected policy take no part in root selection, and caches at the\nretired package-installation location are neither read nor migrated.\n\nCache identity is split in two, and a group is reused only when both halves\nmatch. *Toolchain identity* is shared by every group: the Ajv package and version\nand its runtime helper bytes, the effective `strict`, `allErrors`, and\ncode-generation options, the definition bytes of the custom formats and keywords,\nthe module format, and a package-owned cache-format version. *Schema identity* is\nper group: the canonical digest of that group's own resolved schemas and named\nvalidators, computed from the schemas themselves rather than from the files that\nproduced them. Nothing else participates -- in particular no source-tree digest\nand not the package's own version, neither of which can change a generated byte.\nEditing a `lib/` module that declares no schemas therefore invalidates nothing,\nand editing one group's schema recompiles that group alone.\n\nBefore any cached code runs, the loader validates that identity, the artifact's\ncontainment in its cache root, the file type of every entry, and the sha256 of\nevery byte it is about to execute. On the read path an invalid artifact is a loud\ntyped refusal; a generation pass replaces one that is invalid for a content\nreason through private temporary output and atomic publication, and never\nself-heals a containment violation.\n\nValidators behave exactly as their `ajv.compile` equivalents, including the\ncomplete diagnostic surface: the boolean result and `errors` entries carrying\n`instancePath`, `schemaPath`, `keyword`, `params`, and `message`.\n\nWarming and diagnostics are optional and use the same cache:\n\n```\nnode bin/prepare-validator-cache.mjs            # generate and publish on a miss\nnode bin/prepare-validator-cache.mjs --verify   # fail unless an exact artifact exists\nnode bin/prepare-validator-cache.mjs --json     # emit the status record\n```\n\nNeither form is a startup prerequisite and neither keeps a second cache. Runtime\nbehaviour, recovery, and operator procedure are in\n`the project documentation`.\n\n## Supported public surface\n\nThe published artifact contains the current v0.34 runtime, bounded discovery,\nselection, authoring, binding-inspection, proof-plan compilation, and assessment\ncommands, current schemas, the intrinsic\nvocabulary, and compact admitted packs. Historical carriers, prototype policy\ntools, pack fixtures, mutation corpora, coverage witnesses, and\nrelease-certification executables are development sources and are not\npublished.\n# Supported native-v1 surface\n\nThe published root and explicit subpaths support only the native\n`controlled-acceptance-contract.v1` family. Stable entrypoints reject\nexperimental, mixed, partial, and unknown identities before semantic work or\neffects. The package owns validation, provider compatibility, pack semantics,\nselection, binding, authoring skeletons, compilation, assessment, generation\nvalidation, profile digests, resource policy, and diagnostic meaning.\n\n## Stable-v1 refactor graph\n\nThe `@agent-chassis/controlled-contract` root exports\n`buildControlledContractRefactorClosure` and\n`planControlledContractRefactor` from the stable\n`./refactor-graph-v1` subpath. One invocation accepts a complete current live\ncarrier population and exactly one `rename_identity` or `replace_subgraph`\nmode. It returns one deeply immutable, content-addressed closure and semantic\nclassification used unchanged by repository planning, apply, and current-state\nassessment.\n\nThe closure covers identity declarations and references across contract nodes,\nrelations, collections, verification bundles, stable test proofs, obligation\nand acceptance coverage, proof-plan bindings, and assessment bindings.\n`rename_identity` performs a bijective identity rewrite and admits no semantic\ndifference. `replace_subgraph` requires explicit old-to-new correspondence,\nnonempty reason, and complete package carrier-patch treatment; it records\ncoverage-rebase inputs for the existing coverage owners, invalidates derived\nplans and assessments, and emits explicit `proof_credit:\"not_transferred\"`\ngaps for new identities.\n\nThe result is non-authoritative and writes nothing. Package failures are the\n`mechanical_failure` limb with the package owner, stable code, deciding facts,\nwould-break invariant, and supported recovery. The primitive does not create a\npolicy decision, continuation, receipt, persistence owner, coverage classifier,\ngeneric diff, migration, rollback, or audit API. Repository and MCP behavior is\ndocumented in\n[`docs/mcp-controlled-contract-operations.md`](../../docs/mcp-controlled-contract-operations.md#generation-bound-controlled-contract-refactoring).\n","readmeFilename":"README.md"}