From b90f370fe1974f1824e9c7c98da2524dfdbe2a6c Mon Sep 17 00:00:00 2001 From: KimGLee <05_bolster_inkling@icloud.com> Date: Sat, 22 Aug 2026 02:02:12 +0800 Subject: [PATCH] Replay completed metadata events by producer era --- Tools/README.md | 2 +- Tools/check_queue.py | 272 +++++++++--------- Tools/compiled/cli-contract.yaml | 4 +- .../host-configs/claude-code.mcp.json | 2 +- Tools/compiled/host-configs/codex.config.toml | 4 +- .../host-configs/dsh-profile-patch.yaml | 2 +- Tools/compiled/host-configs/dsh.env | 4 +- .../compiled/host-configs/kimi-code.mcp.json | 2 +- Tools/compiled/mcp-tools.json | 2 +- .../compiled/metadata-execution-contract.json | 2 +- Tools/schemas/receipt.template.jsonl | 4 +- Tools/tests/test_check_queue.py | 126 ++++++-- .../Cards/R02 Single Note Authoring Card.md | 4 +- kernel/Cards/R05 Expression Layer Card.md | 4 +- kernel/Cards/R09 Standards Governance Card.md | 4 +- kernel/Cards/R10 Maintenance Run Card.md | 4 +- .../12 Control Registry.md | 12 +- ...tmatter Writer and Projection Authority.md | 9 +- 18 files changed, 282 insertions(+), 181 deletions(-) diff --git a/Tools/README.md b/Tools/README.md index 3926db4..d064223 100644 --- a/Tools/README.md +++ b/Tools/README.md @@ -87,7 +87,7 @@ returned Addendum is bound to the parent Bundle and refuses source drift. | `init_state.py` | Create an adopter's empty task runtime (producer 1.4.0), including `work_specs/` and the three task Ledgers. Dry-run by default. A new adopter already has `.cambium/governance/standards_state.yaml` and may have adoption receipts; the writer preserves both and publishes the task directories beside them under the shared lock. Existing `.cambium/state/`, an unsafe namespace, Profile/state drift, or partial publication fails closed and rolls back; no Required work is invented | `python3 Tools/init_state.py . --task-id TASK --objective "Concrete outcome" --exclude "Out-of-scope boundary" --completion-semantics build --scope-version s1 --standards-version VERSION --profile-manifest profiles/my-profile/profile.md --apply` | | `apply_task_plan.py` | Sole writer of the initial planning transaction 1.2.0 (K13/18). `init_state.py` leaves the Task Contract's five selection fields, Coverage, and the Queue empty because it infers nothing; this tool fills the first two from one operator-confirmed restricted-YAML plan under `.cambium/deltas/task-plans/`, so those first values are never hand-edited. Dry-run by default. The plan names routes, not paths: `selected_card_paths`, `selected_read_sets`, and `loaded_module_paths` are resolved from `selected_route_ids` through the same canonical Card/Read Set indexes `check_proof` binds at Terminal, then transitively closed over loading boundaries, because selecting R01 alone reaches every other route and well over a hundred modules and a hand-typed list would be a declaration nobody checked; a path the plan does list is kept and closed over, which is how a profile supplemental Read Set is selected. The derived declaration must then satisfy `check_queue`'s own closure findings, which K00/15 makes an admission judgment rather than a live error precisely because a plan is still writable. It fails closed on an unknown or missing plan field, a `before` SHA-256 that does not match current Coverage/Queue/Progress bytes, a disagreeing task ID, a `task_state` other than `planned`, an already populated Coverage or Queue, an unfilled `TODO(plan)` sentinel, a current runtime that does not validate, a route absent from the registry, a Card whose route is not selected, a Read Set closure that does not resolve, Coverage the Queue compiler rejects, or a proposed after-image that fails `check_queue`. It compiles the Queue in memory only to prove one is derivable and to report its size; it writes no Queue bytes, because before first materialization Coverage and the Contract are adopter inputs while the Queue crossing that line is materialization itself, which `compile_queue --apply` owns. The state it leaves is the unmaterialized runtime that `check_queue`'s own `allow_unmaterialized_queue` names and that `compile_queue` sets to read it; both the dry run and the commit print the exact compiler command with the untouched Queue revision and fingerprint filled in. At founding it derives legacy machine-managed values from the exact page snapshots, records them as `legacy-unverified` Coverage observations, and removes the unauthoritative page copies in the same guarded transaction. Writes Coverage and Progress under the shared state-writer lock after re-verifying the before images, appends one commit receipt, and restores the before images plus an abort receipt on any failure after the first replacement. Re-applying the same plan bytes resumes an interruption; a different plan over an already-planned runtime is refused. The initial contract may carry the closed `amendment_authority` block; absent or `user-only` is the safe default, and delegated mode names only registered bounded change classes. The receipt carries no Gate ID: the state it writes is consumed by gates that already exist | `python3 Tools/apply_task_plan.py . --plan .cambium/deltas/task-plans/TP-001.yaml --apply` | | `apply_contract_amendment.py` | Guarded writer 1.1.0 for the two closed non-scope Task Contract fields the runtime supports (K13/06 Contract Amendment; field shape owner K13/02): `policy_exceptions` and `amendment_authority`. Consumes one confirmed restricted-YAML plan under `.cambium/deltas/contract-amendments/`; no pending phase -- it validates the complete after-image (including the K13/02 exception shape and the proposed runtime under `check_queue` with its own commit receipt as the anchor event) and commits Queue + Progress under the shared writer lock, or writes nothing. Advances `contract_version` and the Queue revision exactly once; changes no scope, batch structure, or lifecycle; integrator-only on apply. A schema-2 plan supplies both complete after-images; `changed_contract_fields` records which actually moved. The verified `contract-amendment` row it appends binds plan path/SHA and the commit receipt, and the contract anchor chain follows the fingerprint change instead of failing closed. Every exception for a registered policy must carry the CURRENT effective-policy fingerprint (`kblib.effective_priority_policy`; the refusal prints the expected value -- it is not computable by hand), and the effective ceilings -- exception where granted, standing quota where not -- must jointly stay strictly below 100 (K00/07). Refuses while any batch is `merge-ready` (the Queue-revision bump would strand its `delta_apply` binding); re-resolves the policy and re-verifies the plan bytes inside the commit lock; participates in the generic writer recovery protocol (`receipt_id`/`receipt_path`/`transaction_phase` in the lock metadata), and an uncertain receipt append retains the lock. Re-applying needs a fresh plan against the moved runtime; an exception is removed by confirming a plan whose after list no longer carries it | `python3 Tools/apply_contract_amendment.py . --plan .cambium/deltas/contract-amendments/CA-001.yaml --actor-role integrator --apply` | -| `check_queue.py` | Required Queue Gate producer 1.23.0 (K13/08): validates schema, manifests, Coverage projection, dependencies, lifecycle/task receipts, holds, confirmations, hash-bound complex-batch Work Specs, deltas, concurrency, Progress revisions/fingerprint, paths, readiness, and terminal count. For current Standards revalidation it validates K00/12's closed capability registry, projects semantic leaves to their owner Gates, accepts raw receipts only for the due immediate-owner set, and records native owners as deferred to the transition that already owns them; historical plans and consumed aggregates keep producer-era semantics, including both the raw affected-gate union and boundary-level required gates recorded by pre-1.6 adoption producers. It also derives the live Task Contract's transitive Read Set closure: every referenced Read Set must be declared, kernel/profile types and namespaces must agree with the selected Profile and route IDs, and every ordinary boundary target must occur in `loaded_module_paths`; Profile-owned contract dependencies are authorized by `profile-load` and are not added to that kernel load list. Both the public R01 Queue admission and the lower-level runtime validator require the complete selected-Profile closure by default, so ordinary writers cannot bypass `profile-load`. The sole smaller identity/sentinel escape is an explicit `adopt_standards.py` option for its persisted current/before read; it is rejected for state overrides or pending receipts, and every candidate after-image remains under full `profile-load`. Unsafe or non-UTF-8 inputs fail closed. The hot receipt catalog never deserializes `.cambium/receipts/cold/` (K12/07): the cold manifest and index load instead. What sealing retires is that deserialization, not integrity -- every run re-hashes every sealed segment against the manifest, proves every projection against the exact sealed line it names, proves both cold registers against the seal receipt that wrote them, and fails closed on an unreferenced segment, an unfinished seal transaction, or a sealed row that still has a hot twin. Rows of a seal whose binding does not hold -- including one produced by an unsupported sealing protocol, or whose segment hash failed -- never enter the catalog at all. Cold paths may not traverse a symlink or carry a second hard link, and a close attestation's born-cold candidate evidence is compared against the hash it bound, not just its length. A sealed receipt then satisfies existence and the closed-bundle identity branch through its thin projection, and a consumer needing live field revalidation of a sealed body fails closed unless it has an explicit sealed branch. The Standards-revalidation consumption replay is such a branch: it resolves the aggregate a Queue transition consumed from the segment that receipt's verified projection names, re-proving the record's own hash at the read, because the consumed keys live in `revalidation_bindings` and the retraction test reads `invalidated_by` and no projection carries either. An aggregate a recorded transition consumed but that resolves in neither namespace fails the run closed rather than reopening a discharged obligation. `--require-complete` is the build-closure Queue gate, so a Terminal Proof cannot authorize an under-declared live load set. `--require-maintenance-complete` additionally consumes current budget-manifest-closed, Coverage-ledger-advanced, and watermark-advanced receipts; reconciles the manifest's complete selected/deferred candidate partition with Coverage and the Queue manifest union; enforces consecutive-deferral disposition; and binds the maintenance pass to all three current state objects. `--resume-status` reports objective/exclusions, completion semantics, three live SHAs, checkpoint/task history, Work Spec bindings, maintenance candidate SHA/partition/prior gate, controls, the applicable completion block, locks, and an exact `next_action`. Valid interrupted delta phases become `admit-delta:` or `apply-delta:`; an applied batch without a current close bundle becomes `run-batch-close-gate:`, while a recovered current bundle becomes `close-applied-batch::::` plus an exact copyable close command. Current close attestations also validate the `exact-carry-v1` baseline plus carried/fresh partitions and their born-cold evidence; historical Queue transitions replay producer-era protocols while new ones require update_queue/1.5.0 receipts, and historical closed deltas replay producer-era protocols while new applies require apply_delta/1.6.0. A writer lock always takes recovery priority; inconsistent evidence becomes `repair-runtime` only when no interrupted writer must first be reconciled | `python3 Tools/check_queue.py . --resume-status` | +| `check_queue.py` | Required Queue Gate producer 1.24.0 (K13/08): validates schema, manifests, Coverage projection, dependencies, lifecycle/task receipts, holds, confirmations, hash-bound complex-batch Work Specs, deltas, concurrency, Progress revisions/fingerprint, paths, readiness, and terminal count. For current Standards revalidation it validates K00/12's closed capability registry, projects semantic leaves to their owner Gates, accepts raw receipts only for the due immediate-owner set, and records native owners as deferred to the transition that already owns them; historical plans and consumed aggregates keep producer-era semantics, including both the raw affected-gate union and boundary-level required gates recorded by pre-1.6 adoption producers. It also derives the live Task Contract's transitive Read Set closure: every referenced Read Set must be declared, kernel/profile types and namespaces must agree with the selected Profile and route IDs, and every ordinary boundary target must occur in `loaded_module_paths`; Profile-owned contract dependencies are authorized by `profile-load` and are not added to that kernel load list. Both the public R01 Queue admission and the lower-level runtime validator require the complete selected-Profile closure by default, so ordinary writers cannot bypass `profile-load`. The sole smaller identity/sentinel escape is an explicit `adopt_standards.py` option for its persisted current/before read; it is rejected for state overrides or pending receipts, and every candidate after-image remains under full `profile-load`. Unsafe or non-UTF-8 inputs fail closed. The hot receipt catalog never deserializes `.cambium/receipts/cold/` (K12/07): the cold manifest and index load instead. What sealing retires is that deserialization, not integrity -- every run re-hashes every sealed segment against the manifest, proves every projection against the exact sealed line it names, proves both cold registers against the seal receipt that wrote them, and fails closed on an unreferenced segment, an unfinished seal transaction, or a sealed row that still has a hot twin. Rows of a seal whose binding does not hold -- including one produced by an unsupported sealing protocol, or whose segment hash failed -- never enter the catalog at all. Cold paths may not traverse a symlink or carry a second hard link, and a close attestation's born-cold candidate evidence is compared against the hash it bound, not just its length. A sealed receipt then satisfies existence and the closed-bundle identity branch through its thin projection, and a consumer needing live field revalidation of a sealed body fails closed unless it has an explicit sealed branch. The Standards-revalidation consumption replay is such a branch: it resolves the aggregate a Queue transition consumed from the segment that receipt's verified projection names, re-proving the record's own hash at the read, because the consumed keys live in `revalidation_bindings` and the retraction test reads `invalidated_by` and no projection carries either. An aggregate a recorded transition consumed but that resolves in neither namespace fails the run closed rather than reopening a discharged obligation. `--require-complete` is the build-closure Queue gate, so a Terminal Proof cannot authorize an under-declared live load set. `--require-maintenance-complete` additionally consumes current budget-manifest-closed, Coverage-ledger-advanced, and watermark-advanced receipts; reconciles the manifest's complete selected/deferred candidate partition with Coverage and the Queue manifest union; enforces consecutive-deferral disposition; and binds the maintenance pass to all three current state objects. `--resume-status` reports objective/exclusions, completion semantics, three live SHAs, checkpoint/task history, Work Spec bindings, maintenance candidate SHA/partition/prior gate, controls, the applicable completion block, locks, and an exact `next_action`. Valid interrupted delta phases become `admit-delta:` or `apply-delta:`; an applied batch without a current close bundle becomes `run-batch-close-gate:`, while a recovered current bundle becomes `close-applied-batch::::` plus an exact copyable close command. Current close attestations also validate the `exact-carry-v1` baseline plus carried/fresh partitions and their born-cold evidence; historical Queue transitions replay producer-era protocols while new ones require update_queue/1.5.0 receipts, and historical closed deltas replay producer-era protocols while new applies require apply_delta/1.6.0. A writer lock always takes recovery priority; inconsistent evidence becomes `repair-runtime` only when no interrupted writer must first be reconciled | `python3 Tools/check_queue.py . --resume-status` | | `check_batch_close.py` | Sole supported producer contract 1.12.0 for the K12/09 merged-snapshot close bundle. Under the shared runtime lock it first runs the complete `profile-load` producer for the selected manifest—identity, all 14 slots, package snapshot, and typed secondary closure—and compiles the required Registered Scan from that exact authorized in-memory contract. A valid Audit/Scan subgraph cannot execute when any other Profile slot is broken. Scan identity, verifier, optional explicit config, predicate, semantics, and Judgment Item bindings therefore share the same authority as admission; the Cambium residual scanner requires its Profile-owned config, while a registered custom verifier may validly declare no `--config`. For one `merge-ready` batch with a current `apply_delta` receipt, it recomputes real repository bytes before/after the Closed List checks and receipt publication; runs `check_links`, Cambium-owned YAML/Markdown structure, a deterministic in-memory Markdown/Wiki-link graph JSON projection plus basename candidates, Coverage file-count, guidance/contract continuity, the selected profile's registered verifier, and `check_vocab` (excluding `kernel/Cards` and `profiles/` — profile directories are control plane, and shipped example instances carry their own vocabularies); invokes the same registered verifier first with the additional standard `--positive-controls-only` flag and then as its unchanged production command, requiring both final pass summaries to bind exactly the same producer, check, scan/config identity, positive-control result/mode/count, and canonical control fingerprint. It also compares each self-report to the admitted contract: `scan_id` must equal the Registered Scan ID, and an explicit config fingerprint must equal the SHA-256 of the admitted config bytes. It records an explicit reviewer attestation with a reviewer label different from the integrator label, then emits one exact-content `page_review_acceptance` child per manifest page. Each child binds the semantic page hash, its own checked-at UTC date, the selected Profile identity, and the Metadata Execution Contract; a final inode-and-byte CAS precedes append. It creates the canonical `check_queue` consistency receipt through that checker's shared producer and emits the exact three IDs consumed by close. Candidate detail is written once per attempt as a born-cold evidence file under `.cambium/receipts/cold/close-evidence/`; the attestation binds it by path/hash/bytes/records and carries counts, per-type counts, the accepted-set fingerprint, and only the policy-exception dispositions inline, while member and failure receipts bind the same evidence instead of repeating rows (K12/09). Version 1.12.0 is the only producer protocol a current close action or recovery may consume. Versions 1.4.0 through 1.11.0 remain recognized only while replaying already-sealed closed history; 1.4.0 keeps its seven-member Closed List shape, and no historical version can authorize a new close. Labels and attestations remain assertions under the Evidence trust boundary. Item 3 does not scan ordinary repository JSON or fenced JSON examples; item 1 alone owns missing/ambiguous/heading verdicts. Every run still performs the complete scan. An ordinary finding may carry from only the immediately preceding verified close when its prior disposition was `accept-while-unchanged`, its stable ID, exact observation hash, and producer version still match, and it is not manifest-local page-contract debt; legacy evidence grants no carry, a disappearance breaks continuity, and a type selector expands only the exact fresh rows present now. Fresh findings use the current-only selectors or `--accept-while-unchanged-id/type`. Candidate prose alone is insufficient. A priority-quota candidate cannot use those generic selectors: it is consumed only through a currently valid bounded contract policy exception (K00/07), compared with exact rational arithmetic over the candidate's structured share, judged against the effective-policy fingerprint from one resolver call shared with the quotas handed to `check_vocab`, and sealed into the disposition as decision facts so the receipt replays after revocation. A failed run emits only a failed attempt, while an uncertain append retains the lock | `python3 Tools/check_batch_close.py . --batch B1 --integrator alice --reviewer bob --review-attestation "Reviewed the exact listed candidates and merged snapshot."` | | `seal_receipts.py` | Receipt cold-chain writer 1.4.0 (K12/07 Receipt Sealing). **`--apply` is a maintenance-window operation**: run it only in a declared quiet window, after confirming no other Cambium or adopter writer, checker or receipt appender is active against the repository. Moves verified frozen rows of closed batches -- each batch's close-bundle trio as one unit, whole per-batch registers, page-contract snapshots -- verbatim into `.cambium/receipts/cold/segments/`, appends one manifest entry per segment and one thin projection per receipt, rewrites the hot registers without the sealed rows, and adopts into the manifest only those born-cold close-evidence files a current attestation binds by hash. Refuses to run unless the complete runtime validation passes with zero errors, no writer lock is active, and no delta application is pending; every byte the plan was computed from is re-compared inside the locks. The shared receipt append mutex (`.cambium/tmp/receipt-append.free`/`.held`, a rename because mounts that refuse `unlink` cannot release a lock directory) is a guard against the accident of running a writer beside a seal, not a proof of mutual exclusion under arbitrary concurrency -- it is re-entrant per process and binds only appenders using the shared primitive. Publication is journalled -- a `begin` row and a hash-bound pending record before the first segment byte, a `complete` row only after every postcondition is re-proved -- so an interrupted seal fails every later run closed; `--reconcile --apply` automatically finishes the publication paths this tool implements and refuses a live writer's lock or a drifted pending record, while any other interruption is resolved by the runbook below. What sealing retires is deserialization, not integrity: `check_queue` re-hashes every segment, re-proves every projection against the sealed line it names, and re-proves both cold registers against this tool's receipt on every run. Never seals: transition history, Standards adoptions, amendments, its own register, activation/confirmation gates, batch-review wrappers, the Standards-revalidation aggregate a recorded Queue transition consumed (its replay reads `revalidation_bindings` and `invalidated_by`, which no projection carries), anything bound to a non-closed batch, or a receipt currently named by Coverage `property_state`. A live page review keeps its reviewer attestation hot; a live Delta pointer keeps its close trio and the full body-level replay closure hot until a later owner transition supersedes it | `python3 Tools/seal_receipts.py . --apply` | | `compile_queue.py` | Queue compiler 1.5.0 deterministically compiles Queue structure from explicit Required Coverage assignments plus top-level `batch_specs`; never infers semantic dependencies or backlinks. Every spec explicitly declares both Work Spec fields: null/null for a simple batch, or one exact `.cambium/work_specs/*.yaml` path/SHA pair for a complex batch. Initial `--apply` is integrator-only and writes the unique origin receipt into Progress. A same-scope replan consumes a complete `.cambium/deltas/replans/*.coverage.yaml` proposal—never pre-edited canonical Coverage—and a matching current registration written by `register_amendment.py`; it commits Coverage/Queue/Progress under one shared lock after exact three-file CAS, registration/Amendment/diff binding, and conflict checks. Registration binds either explicit-user authority or the Task Contract's exact delegated change classes, which are re-derived before write. Terminal history remains immutable; interrupted/incompletely rolled-back writes retain the lock | `python3 Tools/compile_queue.py . --coverage-proposal .cambium/deltas/replans/A1.coverage.yaml --output .cambium/tmp/queue-replan.yaml` | diff --git a/Tools/check_queue.py b/Tools/check_queue.py index 86cd71f..2f24623 100644 --- a/Tools/check_queue.py +++ b/Tools/check_queue.py @@ -46,12 +46,12 @@ import standards_state TOOL = "check_queue" -TOOL_VERSION = "1.23.0" +TOOL_VERSION = "1.24.0" # 1.20.1 remains a producer-era identity for already-consumed maintenance -# gates. Current gate production and all live gate admission use 1.23.0; +# gates. Current gate production and all live gate admission use 1.24.0; # historical consumption replays the older receipt's own promised shape. SUPPORTED_CHECK_QUEUE_TOOL_VERSIONS = frozenset(( - "1.20.1", "1.21.0", "1.22.0", "1.23.0", + "1.20.1", "1.21.0", "1.22.0", "1.23.0", "1.24.0", )) # The `Check` cell K00/12 registers for every Gate this tool produces; each # such Gate is distinguished by `Mode`, not by a second check name. @@ -389,6 +389,20 @@ "work_spec_sha256", )) LEGACY_PROPERTY_STATE_FIELD = "legacy_property_state" +EVIDENCE_USE_CURRENT_AUTHORIZATION = "current-authorization" +EVIDENCE_USE_ACTIVE_TRANSACTION = "active-transaction" +EVIDENCE_USE_COMPLETED_EVENT = "completed-event" +EVIDENCE_USE_TERMINAL_HISTORY = "terminal-history" +EVIDENCE_IDENTITY_USES = frozenset(( + EVIDENCE_USE_CURRENT_AUTHORIZATION, + EVIDENCE_USE_ACTIVE_TRANSACTION, + EVIDENCE_USE_COMPLETED_EVENT, + EVIDENCE_USE_TERMINAL_HISTORY, +)) +LIVE_IDENTITY_USES = frozenset(( + EVIDENCE_USE_CURRENT_AUTHORIZATION, + EVIDENCE_USE_ACTIVE_TRANSACTION, +)) LEGACY_PROPERTY_RECORD_FIELDS = frozenset(("status", "value")) LEGACY_PROPERTY_STATUS = "legacy-unverified" LEGACY_PROPERTY_ADOPTION_OPERATION = "legacy-property-adoption-v1" @@ -6471,44 +6485,25 @@ def _page_review_acceptance_errors( "%s page_review_receipt_set_sha256 does not bind the exact " "sorted receipt-ID set" % label) - profile_bindings = {} + profile_bindings = { + field: aggregate.get(field) + for field in ( + "selected_profile_manifest", "profile_snapshot_sha256", + "profile_contract_fingerprint", "profile_load_inputs_sha256") + } expected_profile = { "selected_profile_manifest": selected_profile_manifest, "profile_snapshot_sha256": profile_snapshot_sha256, "profile_contract_fingerprint": profile_contract_fingerprint, "profile_load_inputs_sha256": profile_load_inputs_sha256, } - for field in ( - "selected_profile_manifest", "profile_snapshot_sha256", - "profile_contract_fingerprint", "profile_load_inputs_sha256"): - value = aggregate.get(field) - if field == "selected_profile_manifest": - if not _nonempty_string(value): - errors.append("%s %s must be a non-empty path" % - (label, field)) - elif not isinstance(value, str) or not SHA256_RE.fullmatch(value): - errors.append("%s %s must be a sha256 fingerprint" % - (label, field)) - expected = expected_profile[field] - if expected is not None and value != expected: - errors.append("%s has %s=%r, expected %r" % - (label, field, value, expected)) - profile_bindings[field] = value - + live_profile_view = dict(profile_bindings) + live_profile_view.update({ + field: value for field, value in expected_profile.items() + if value is not None + }) metadata_fingerprint = aggregate.get( "metadata_execution_contract_fingerprint") - if (not isinstance(metadata_fingerprint, str) or - not SHA256_RE.fullmatch(metadata_fingerprint)): - errors.append( - "%s metadata_execution_contract_fingerprint must be a sha256 " - "fingerprint" % label) - if (metadata_execution_contract_fingerprint is not None and - metadata_fingerprint != - metadata_execution_contract_fingerprint): - errors.append( - "%s metadata_execution_contract_fingerprint=%r, expected %r" % - (label, metadata_fingerprint, - metadata_execution_contract_fingerprint)) projection_rules = None live_metadata_fingerprint = None @@ -6558,11 +6553,12 @@ def _page_review_acceptance_errors( "%s cannot authorize current metadata/Profile execution " "context: %s" % (label, exc)) - if (live_metadata_fingerprint is not None and - metadata_fingerprint != live_metadata_fingerprint): - errors.append( - "%s metadata execution contract is stale relative to " - "the current repository" % label) + errors.extend(_evidence_identity_errors( + aggregate, label, + use=(EVIDENCE_USE_TERMINAL_HISTORY if historical else + EVIDENCE_USE_CURRENT_AUTHORIZATION), + profile_view=live_profile_view, + metadata_contract_fingerprint=live_metadata_fingerprint)) targets = [] for index, page_receipt_id in enumerate(ids): @@ -11333,11 +11329,69 @@ def _delta_opening_semantic_binding( return errors, before +def _evidence_identity_errors( + receipt, label, *, use, profile_view=None, + metadata_contract_fingerprint=None, profile_bound=True): + """Apply the one Profile/metadata identity policy for evidence use. + + Current authorization and an active transaction must match the live + Profile and metadata implementation. A completed event and terminal + history keep the canonical identity their producer observed and are never + reinterpreted through today's bytes. Every caller must choose one of + these four lifecycle meanings explicitly; adding another ad-hoc + live-fingerprint comparison would recreate the upgrade deadlock this + boundary exists to prevent. + """ + errors = [] + if use not in EVIDENCE_IDENTITY_USES: + return ["%s has unsupported evidence identity use %r" % (label, use)] + if profile_bound: + if not _nonempty_string(receipt.get("selected_profile_manifest")): + errors.append( + "%s has no producer-era selected_profile_manifest" % label) + for field in ( + "profile_snapshot_sha256", "profile_contract_fingerprint", + "profile_load_inputs_sha256"): + value = receipt.get(field) + if not isinstance(value, str) or not SHA256_RE.fullmatch(value): + errors.append( + "%s has invalid producer-era %s" % (label, field)) + fingerprint = receipt.get("metadata_execution_contract_fingerprint") + if (not isinstance(fingerprint, str) or + not SHA256_RE.fullmatch(fingerprint)): + errors.append( + "%s has invalid producer-era metadata execution fingerprint" % + label) + if use in LIVE_IDENTITY_USES: + if profile_bound: + if not isinstance(profile_view, dict): + errors.append("%s has no authorized live Profile view" % label) + profile_view = {} + for field in ( + "selected_profile_manifest", "profile_snapshot_sha256", + "profile_contract_fingerprint", + "profile_load_inputs_sha256"): + expected = profile_view.get(field) + if receipt.get(field) != expected: + errors.append( + "%s has %s=%r, expected authorized Profile value %r" % + (label, field, receipt.get(field), expected)) + if (not isinstance(metadata_contract_fingerprint, str) or + not SHA256_RE.fullmatch(metadata_contract_fingerprint)): + errors.append( + "%s has no authorized live metadata execution fingerprint" % + label) + elif fingerprint != metadata_contract_fingerprint: + errors.append( + "%s metadata execution fingerprint is stale relative to " + "the live contract" % label) + return errors + + def _content_change_property_evidence_errors( receipt, *, receipt_id, path, field, value, semantic_fingerprint, - metadata_contract_fingerprint, metadata_rule_fingerprint, task_id, - profile_view, include_shape, current_catalog): - """Bind a live content property to one exact current delta event.""" + task_id, include_shape, current_catalog): + """Bind a live content property to one completed producer-era event.""" label = "Coverage property_state.%s for %s" % (field, path) errors = [] expected = { @@ -11348,25 +11402,16 @@ def _content_change_property_evidence_errors( "invalidated_by": None, "actor_role": "integrator", "task_id": task_id, - "metadata_execution_contract_fingerprint": - metadata_contract_fingerprint, - "metadata_execution_rule_fingerprint": metadata_rule_fingerprint, "semantic_content_protocol": project_page_state.SEMANTIC_FINGERPRINT_PROTOCOL, - "selected_profile_manifest": - profile_view.get("selected_profile_manifest"), - "profile_snapshot_sha256": - profile_view.get("profile_snapshot_sha256"), - "profile_contract_fingerprint": - profile_view.get("profile_contract_fingerprint"), - "profile_load_inputs_sha256": - profile_view.get("profile_load_inputs_sha256"), } for name, expected_value in expected.items(): if receipt.get(name) != expected_value: errors.append( "%s evidence receipt %s has %s=%r, expected %r" % (label, receipt_id, name, receipt.get(name), expected_value)) + errors.extend(_evidence_identity_errors( + receipt, label, use=EVIDENCE_USE_COMPLETED_EVENT)) if include_shape: errors.extend(_delta_property_event_errors( receipt, "content-change evidence receipt %s" % receipt_id)) @@ -11418,9 +11463,8 @@ def _content_change_property_evidence_errors( def _review_property_evidence_errors( receipt, *, receipt_id, path, value, semantic_fingerprint, - metadata_contract_fingerprint, task_id, profile_view, - current_catalog): - """Bind ``last_reviewed`` to one current Profile-bound page receipt.""" + task_id, current_catalog): + """Bind ``last_reviewed`` to one completed producer-era review.""" label = "Coverage property_state.last_reviewed for %s" % path errors = [] expected = { @@ -11433,22 +11477,14 @@ def _review_property_evidence_errors( "task_id": task_id, "reviewed_on": value, "semantic_content_sha256": semantic_fingerprint, - "selected_profile_manifest": - profile_view.get("selected_profile_manifest"), - "profile_snapshot_sha256": - profile_view.get("profile_snapshot_sha256"), - "profile_contract_fingerprint": - profile_view.get("profile_contract_fingerprint"), - "profile_load_inputs_sha256": - profile_view.get("profile_load_inputs_sha256"), - "metadata_execution_contract_fingerprint": - metadata_contract_fingerprint, } for name, expected_value in expected.items(): if receipt.get(name) != expected_value: errors.append( "%s evidence receipt %s has %s=%r, expected %r" % (label, receipt_id, name, receipt.get(name), expected_value)) + errors.extend(_evidence_identity_errors( + receipt, label, use=EVIDENCE_USE_COMPLETED_EVENT)) accepted_date = _property_receipt_utc_date(receipt, label, errors) if value != accepted_date: errors.append( @@ -11549,25 +11585,19 @@ def _gate_property_evidence_errors( "receipt_schema": gate.receipt_schema, "consumer_capability": gate.consumer_capability, "semantic_content_fingerprint": semantic_fingerprint, - "selected_profile_manifest": - profile_view.get("selected_profile_manifest"), "selected_profile_manifest_sha256": manifest_sha256, - "profile_snapshot_sha256": - profile_view.get("profile_snapshot_sha256"), - "profile_contract_fingerprint": - profile_view.get("profile_contract_fingerprint"), - "profile_load_inputs_sha256": - profile_view.get("profile_load_inputs_sha256"), "active_standards_sha256": (active_standards_view or {}).get("active_standards_sha256"), - "metadata_execution_contract_fingerprint": - metadata_contract_fingerprint, } for name, expected_value in expected.items(): if receipt.get(name) != expected_value: errors.append( "%s evidence receipt %s has %s=%r, expected %r" % (label, receipt_id, name, receipt.get(name), expected_value)) + errors.extend(_evidence_identity_errors( + receipt, label, use=EVIDENCE_USE_CURRENT_AUTHORIZATION, + profile_view=profile_view, + metadata_contract_fingerprint=metadata_contract_fingerprint)) if (not isinstance(receipt.get("page_sha256"), str) or not SHA256_RE.fullmatch(receipt["page_sha256"])): errors.append("%s evidence receipt has invalid page_sha256" % label) @@ -11695,7 +11725,6 @@ def _coverage_property_state_errors( metadata_fingerprint = metadata_contract.contract_fingerprint coverage_sha256 = kblib.sha256_bytes( kblib.canonical_yaml(coverage).encode("utf-8")) - metadata_rule_fingerprint = project_page_state._rules_fingerprint(rules) gates_by_id = {gate.gate_id: gate for gate in extension_gates} property_rules = { rule.get("field"): rule for rule in rules @@ -11898,18 +11927,14 @@ def _coverage_property_state_errors( receipt, receipt_id=receipt_id, path=path, field=field, value=value, semantic_fingerprint=evidence_fingerprint, - metadata_contract_fingerprint=metadata_fingerprint, - metadata_rule_fingerprint=metadata_rule_fingerprint, task_id=queue.get("task_id"), - profile_view=profile_view, include_shape=include_shape, current_catalog=current_catalog)) elif field == metadata_property_state.LAST_REVIEWED: errors.extend(_review_property_evidence_errors( receipt, receipt_id=receipt_id, path=path, value=value, semantic_fingerprint=evidence_fingerprint, - metadata_contract_fingerprint=metadata_fingerprint, - task_id=queue.get("task_id"), profile_view=profile_view, + task_id=queue.get("task_id"), current_catalog=current_catalog)) else: errors.extend(_gate_property_evidence_errors( @@ -12725,14 +12750,18 @@ def _closed_gate_errors(item, transition, catalog, queue, def _current_open_semantic_baseline_errors( - root, transition, item, profile_view): + root, transition, item, profile_view, *, require_live_authority=True): """Validate the current opening receipt's exact semantic before-set. Producer version 1.5 is the adoption boundary. Its before-set lets ``apply_delta`` distinguish a real semantic edit from a first observation or a machine-projection-only rewrite. Versions 1.2--1.4 remain immutable history: they never claimed these fields and are not reinterpreted through - today's Profile or metadata contract. + today's Profile or metadata contract. While the batch remains open or + merge-ready, ``require_live_authority`` additionally binds that active + execution baseline to the live Profile and metadata implementation. A + terminal batch keeps the exact same closed shape but replays the binding + as producer-era history. """ if not isinstance(transition, dict) or not ( transition.get("tool") == "update_queue" and @@ -12783,38 +12812,24 @@ def _current_open_semantic_baseline_errors( if transition.get("semantic_content_protocol") != \ project_page_state.SEMANTIC_FINGERPRINT_PROTOCOL: errors.append("%s has the wrong semantic content protocol" % label) - if not isinstance(profile_view, dict): - errors.append("%s has no authorized Profile view" % label) - profile_view = {} - for field in ( - "selected_profile_manifest", "profile_snapshot_sha256", - "profile_contract_fingerprint", "profile_load_inputs_sha256"): - expected = profile_view.get(field) - if transition.get(field) != expected: - errors.append( - "%s has %s=%r, expected authorized Profile value %r" % - (label, field, transition.get(field), expected)) - - fingerprint = transition.get( - "metadata_execution_contract_fingerprint") - if not isinstance(fingerprint, str) or not SHA256_RE.fullmatch(fingerprint): - errors.append( - "%s metadata_execution_contract_fingerprint must be canonical" % - label) - try: - live_fingerprint = \ - metadata_execution_contract.load_metadata_execution_contract( - root).contract_fingerprint - except (OSError, UnicodeError, ValueError, - metadata_execution_contract.MetadataExecutionContractError) as exc: - errors.append( - "%s cannot load the live metadata execution contract: %s" % - (label, exc)) - else: - if fingerprint != live_fingerprint: + live_metadata_fingerprint = None + if require_live_authority: + try: + live_metadata_fingerprint = \ + metadata_execution_contract.load_metadata_execution_contract( + root).contract_fingerprint + except (OSError, UnicodeError, ValueError, + metadata_execution_contract. + MetadataExecutionContractError) as exc: errors.append( - "%s metadata execution fingerprint is stale relative to " - "the live contract" % label) + "%s cannot load the live metadata execution contract: %s" % + (label, exc)) + errors.extend(_evidence_identity_errors( + transition, label, + use=(EVIDENCE_USE_ACTIVE_TRANSACTION if require_live_authority + else EVIDENCE_USE_TERMINAL_HISTORY), + profile_view=profile_view, + metadata_contract_fingerprint=live_metadata_fingerprint)) return errors @@ -12883,8 +12898,10 @@ def _current_close_transition_metadata_errors( transitions remain frozen history and are not reinterpreted through the live metadata/Profile protocol. A current 1.5 close, however, is the durable bridge from the exact batch-close page-review children to the - Coverage owner state it published, so its child set and metadata-contract - identity must be closed and exact. + Coverage owner state it published, so its child set and producer-era + metadata-contract identity must be closed and exact. The transition and + its close Gate must agree with each other; a terminal edge is not + reinterpreted through today's implementation bytes. """ if not isinstance(transition, dict) or not ( transition.get("tool") == "update_queue" and @@ -12940,27 +12957,13 @@ def _current_close_transition_metadata_errors( "metadata_execution_contract_fingerprint") aggregate_fingerprint = aggregate.get( "metadata_execution_contract_fingerprint") - if not isinstance(fingerprint, str) or not SHA256_RE.fullmatch(fingerprint): - errors.append( - "%s metadata_execution_contract_fingerprint must be canonical" % - label) + errors.extend(_evidence_identity_errors( + transition, label, use=EVIDENCE_USE_TERMINAL_HISTORY, + profile_bound=False)) if fingerprint != aggregate_fingerprint: errors.append( "%s metadata execution fingerprint differs from its close Gate" % label) - try: - live = metadata_execution_contract.load_metadata_execution_contract( - root).contract_fingerprint - except (OSError, UnicodeError, ValueError, - metadata_execution_contract.MetadataExecutionContractError) as exc: - errors.append( - "%s cannot load the live metadata execution contract: %s" % - (label, exc)) - else: - if fingerprint != live: - errors.append( - "%s metadata execution fingerprint is stale relative to " - "the live contract" % label) return errors @@ -13254,7 +13257,8 @@ def _item_evidence_errors(item, progress, records, catalog, current_catalog, (item_id, receipt_id, field)) errors.extend(_current_open_semantic_baseline_errors( records["root"], current, item, - records.get("profile_view"))) + records.get("profile_view"), + require_live_authority=state in ("open", "merge-ready"))) errors.extend(_current_close_transition_metadata_errors( records["root"], current, catalog, item_id)) if (current.get("before_state") not in STATES or diff --git a/Tools/compiled/cli-contract.yaml b/Tools/compiled/cli-contract.yaml index 28e89d3..7f4ed32 100644 --- a/Tools/compiled/cli-contract.yaml +++ b/Tools/compiled/cli-contract.yaml @@ -66,7 +66,7 @@ source_files: - Tools/stamp_cards.py - Tools/update_queue.py - Tools/update_task.py -source_hash: sha256:f99b88729f8c7b24b5ee04c4204503c7cf09de788254e10d7510b6c5c0fe5e2f +source_hash: sha256:817a50981c3a7a36947af4811ab753c2791e691e5c3f474c9f62185fca5ba4de receipt_shape: base_fields: - receipt_id @@ -1752,7 +1752,7 @@ tools: receipt_extensions_extraction: partial - tool: check_queue module: Tools/check_queue.py - source_hash: sha256:08012b152ee7d993b45bbad09e1c28fff223425590551bccd632c7373e1c5f08 + source_hash: sha256:1ecaec9019b013358f2afda142585d3ca48360eebf90633da7b6d149ebc5c523 description: Validate canonical Required Queue state arguments: - dest: root diff --git a/Tools/compiled/host-configs/claude-code.mcp.json b/Tools/compiled/host-configs/claude-code.mcp.json index 2c2362d..587cb69 100644 --- a/Tools/compiled/host-configs/claude-code.mcp.json +++ b/Tools/compiled/host-configs/claude-code.mcp.json @@ -1 +1 @@ -{"mcpServers":{"cambium":{"args":["/Tools/mcp_server.py"],"command":"python3","cwd":"","env":{"CAMBIUM_INTERFACE_SOURCE_HASH":"sha256:c59bd2a610a9c70aa95d5debcce209bc4a2446f955f6c49b287aa7bc11139e65","CAMBIUM_WORKSPACE_ROOT":""}}}} +{"mcpServers":{"cambium":{"args":["/Tools/mcp_server.py"],"command":"python3","cwd":"","env":{"CAMBIUM_INTERFACE_SOURCE_HASH":"sha256:4b49c621cfe358c02a341735bdfb2f2773d0803ebdb9a54ecf944066af696725","CAMBIUM_WORKSPACE_ROOT":""}}}} diff --git a/Tools/compiled/host-configs/codex.config.toml b/Tools/compiled/host-configs/codex.config.toml index a9717ec..985d366 100644 --- a/Tools/compiled/host-configs/codex.config.toml +++ b/Tools/compiled/host-configs/codex.config.toml @@ -5,7 +5,7 @@ # server name: cambium # server entry point: Tools/mcp_server.py (under the distribution root) # source: Tools/compiled/mcp-tools.json -# source_hash: sha256:c59bd2a610a9c70aa95d5debcce209bc4a2446f955f6c49b287aa7bc11139e65 +# source_hash: sha256:4b49c621cfe358c02a341735bdfb2f2773d0803ebdb9a54ecf944066af696725 # regenerate: python3 Tools/render_host_configs.py . # verify: python3 Tools/render_host_configs.py . --check # @@ -35,5 +35,5 @@ command = "python3" cwd = "" [mcp_servers.cambium.env] -CAMBIUM_INTERFACE_SOURCE_HASH = "sha256:c59bd2a610a9c70aa95d5debcce209bc4a2446f955f6c49b287aa7bc11139e65" +CAMBIUM_INTERFACE_SOURCE_HASH = "sha256:4b49c621cfe358c02a341735bdfb2f2773d0803ebdb9a54ecf944066af696725" CAMBIUM_WORKSPACE_ROOT = "" diff --git a/Tools/compiled/host-configs/dsh-profile-patch.yaml b/Tools/compiled/host-configs/dsh-profile-patch.yaml index 345b52d..75fbe88 100644 --- a/Tools/compiled/host-configs/dsh-profile-patch.yaml +++ b/Tools/compiled/host-configs/dsh-profile-patch.yaml @@ -5,7 +5,7 @@ # server name: cambium # server entry point: Tools/mcp_server.py (under the distribution root) # source: Tools/compiled/mcp-tools.json -# source_hash: sha256:c59bd2a610a9c70aa95d5debcce209bc4a2446f955f6c49b287aa7bc11139e65 +# source_hash: sha256:4b49c621cfe358c02a341735bdfb2f2773d0803ebdb9a54ecf944066af696725 # regenerate: python3 Tools/render_host_configs.py . # verify: python3 Tools/render_host_configs.py . --check # diff --git a/Tools/compiled/host-configs/dsh.env b/Tools/compiled/host-configs/dsh.env index 3651562..ab153b1 100644 --- a/Tools/compiled/host-configs/dsh.env +++ b/Tools/compiled/host-configs/dsh.env @@ -4,7 +4,7 @@ # carries: binding # server name: cambium # source: Tools/compiled/mcp-tools.json -# source_hash: sha256:c59bd2a610a9c70aa95d5debcce209bc4a2446f955f6c49b287aa7bc11139e65 +# source_hash: sha256:4b49c621cfe358c02a341735bdfb2f2773d0803ebdb9a54ecf944066af696725 # regenerate: python3 Tools/render_host_configs.py . # verify: python3 Tools/render_host_configs.py . --check # @@ -21,5 +21,5 @@ # valid absolute path on any of these hosts, so an un-substituted copy # fails at launch instead of resolving to something. -CAMBIUM_INTERFACE_SOURCE_HASH="sha256:c59bd2a610a9c70aa95d5debcce209bc4a2446f955f6c49b287aa7bc11139e65" +CAMBIUM_INTERFACE_SOURCE_HASH="sha256:4b49c621cfe358c02a341735bdfb2f2773d0803ebdb9a54ecf944066af696725" CAMBIUM_WORKSPACE_ROOT="" diff --git a/Tools/compiled/host-configs/kimi-code.mcp.json b/Tools/compiled/host-configs/kimi-code.mcp.json index 2c2362d..587cb69 100644 --- a/Tools/compiled/host-configs/kimi-code.mcp.json +++ b/Tools/compiled/host-configs/kimi-code.mcp.json @@ -1 +1 @@ -{"mcpServers":{"cambium":{"args":["/Tools/mcp_server.py"],"command":"python3","cwd":"","env":{"CAMBIUM_INTERFACE_SOURCE_HASH":"sha256:c59bd2a610a9c70aa95d5debcce209bc4a2446f955f6c49b287aa7bc11139e65","CAMBIUM_WORKSPACE_ROOT":""}}}} +{"mcpServers":{"cambium":{"args":["/Tools/mcp_server.py"],"command":"python3","cwd":"","env":{"CAMBIUM_INTERFACE_SOURCE_HASH":"sha256:4b49c621cfe358c02a341735bdfb2f2773d0803ebdb9a54ecf944066af696725","CAMBIUM_WORKSPACE_ROOT":""}}}} diff --git a/Tools/compiled/mcp-tools.json b/Tools/compiled/mcp-tools.json index bc9d9b3..fb898b4 100644 --- a/Tools/compiled/mcp-tools.json +++ b/Tools/compiled/mcp-tools.json @@ -1 +1 @@ -{"artifact":"agent-interface-projection","form":"mcp","generated":{"not_a_revision_basis":"This file is downstream of each tool's own argparse declaration and is never the basis for revising one. To change what an agent may call, change the tool's argparse block, recompile Tools/compiled/cli-contract.yaml, then regenerate this file.","notice":"Generated artifact -- do not edit. Every value here is projected from Tools/compiled/cli-contract.yaml by Tools/render_interface_projection.py; a hand edit is reported by --check as a HOLD.","regenerate":"python3 Tools/render_interface_projection.py .","verify":"python3 Tools/render_interface_projection.py . --check"},"generator":"Tools/render_interface_projection.py","generator_version":"1.0.0","schema_version":1,"source":"Tools/compiled/cli-contract.yaml","source_artifact":"cli-invocation-contract","source_hash":"sha256:b18a3e1bf7ea155a5e6990f3b98c687063593a7e65eefe3be82b3cc8c6a3e57f","source_manifest_hash":"sha256:f99b88729f8c7b24b5ee04c4204503c7cf09de788254e10d7510b6c5c0fe5e2f","source_schema_version":1,"tool_count":46,"tools":[{"description":"Adopt one approved Standards/Profile revision","inputSchema":{"additionalProperties":false,"properties":{"actor_role":{"default":"worker","description":"declared caller role; only integrator may apply a Standards adoption","enum":["integrator","worker"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--actor-role"]}},"apply":{"default":false,"description":"write the transaction; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"json":{"default":false,"description":"write this run's receipt objects to stdout as one canonical JSON array and move the human-readable report to stderr; receipt writing, verdicts, and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"plan":{"description":".cambium/deltas/standards-adoptions/*.yaml","type":"string","x-cambium-cli":{"action":"store","option_strings":["--plan"]}},"receipts":{"default":".cambium/receipts/standards-adoptions.jsonl","description":"receipt JSONL path under .cambium/receipts","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root","plan"],"type":"object"},"name":"adopt_standards"},{"description":"Apply one approved cross-Ledger Amendment transaction","inputSchema":{"additionalProperties":false,"properties":{"actor_role":{"default":"worker","description":"declared caller role; only integrator may apply an Amendment transaction","enum":["integrator","worker"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--actor-role"]}},"apply":{"default":false,"description":"write the transaction; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"expected_coverage_sha256":{"description":"compare-and-swap guard: sha256: the caller read from the current Coverage; planning is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-coverage-sha256"]}},"expected_progress_sha256":{"description":"compare-and-swap guard: sha256: the caller read from the current Progress; planning is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-progress-sha256"]}},"expected_queue_sha256":{"description":"compare-and-swap guard: sha256: the caller read from the current Queue; planning is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-queue-sha256"]}},"json":{"default":false,"description":"write this run's receipt objects to stdout as one canonical JSON array and move the human-readable report to stderr; receipt writing, verdicts, and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"plan":{"description":".cambium/deltas/amendments/*.yaml plan","type":"string","x-cambium-cli":{"action":"store","option_strings":["--plan"]}},"receipts":{"default":".cambium/receipts/amendments.jsonl","description":"receipt JSONL path under .cambium/receipts","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root","plan","expected_coverage_sha256","expected_progress_sha256","expected_queue_sha256"],"type":"object"},"name":"apply_amendment"},{"description":"Amend the frozen Task Contract from one confirmed plan.","inputSchema":{"additionalProperties":false,"properties":{"actor_role":{"default":"worker","description":"declared caller role; only integrator may apply a contract amendment","enum":["integrator","worker"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--actor-role"]}},"apply":{"default":false,"description":"write the transaction; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"json":{"default":false,"description":"write this run's receipt objects to stdout as one canonical JSON array and move the human-readable report to stderr; receipt writing, verdicts, and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"plan":{"description":"repository-relative path under .cambium/deltas/contract-amendments","type":"string","x-cambium-cli":{"action":"store","option_strings":["--plan"]}},"receipts":{"default":".cambium/receipts/contract-amendments.jsonl","description":"receipt JSONL path under .cambium/receipts","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root","plan"],"type":"object"},"name":"apply_contract_amendment"},{"description":"Deterministic Coverage Delta application","inputSchema":{"additionalProperties":false,"properties":{"actor_role":{"default":"worker","description":"declared caller role; only integrator may apply canonical Coverage","enum":["integrator","worker"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--actor-role"]}},"apply":{"default":false,"description":"write the merged Coverage; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"delta":{"description":"batch Coverage delta to apply; canonical mode requires exactly .cambium/deltas/.yaml","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"expected_coverage_sha256":{"description":"compare-and-swap guard for canonical --apply: sha256: the caller read from the current Coverage; the write is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-coverage-sha256"]}},"expected_queue_sha256":{"description":"compare-and-swap guard for canonical --apply: sha256: the caller read from the current Queue; the write is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-queue-sha256"]}},"force":{"default":false,"description":"legacy mode only: keep pages whose ledger batch/next_batch does not match the delta batch","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--force"]}},"json":{"default":false,"description":"write this run's receipt objects to stdout as one canonical JSON array and move the human-readable report to stderr; receipt writing, verdicts, and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"ledger":{"description":"Coverage ledger to merge into; canonical mode requires exactly .cambium/state/coverage_ledger.yaml","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"preflight":{"default":false,"description":"plan canonical Coverage and routed-gap settlement without writes; allows an open batch","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--preflight"]}},"receipts":{"description":"receipt JSONL destination; canonical mode defaults to a new .cambium/receipts/.jsonl and refuses an existing path","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root (canonical mode)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--root"]}}},"required":["ledger","delta"],"type":"object"},"name":"apply_delta","x-cambium-mutually-exclusive":[{"dests":["apply","preflight"],"required":false}]},{"description":"Apply one receipt-backed Profile metadata transition","inputSchema":{"additionalProperties":false,"properties":{"actor_role":{"default":"worker","description":"declared caller role; only integrator may write","enum":["integrator","worker"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--actor-role"]}},"apply":{"default":false,"description":"commit owner state and page projection","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"expected_coverage_sha256":{"description":"Coverage fingerprint observed by the caller","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-coverage-sha256"]}},"expected_page_sha256":{"description":"target page fingerprint observed by the caller","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-page-sha256"]}},"gate_id":{"description":"exact typed Profile Extension Gate ID","type":"string","x-cambium-cli":{"action":"store","option_strings":["--gate-id"]}},"gate_receipt":{"description":"current producer receipt ID for this Gate","type":"string","x-cambium-cli":{"action":"store","option_strings":["--gate-receipt"]}},"json":{"default":false,"description":"write the applied receipt as one JSON array","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"page":{"description":"repository-relative Markdown target","type":"string","x-cambium-cli":{"action":"store","option_strings":["--page"]}},"receipts":{"description":"fresh JSONL path under .cambium/receipts; default is .jsonl","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"value":{"description":"requested registered completion value","type":"string","x-cambium-cli":{"action":"store","option_strings":["--value"]}}},"required":["root","gate_id","page","value","gate_receipt"],"type":"object"},"name":"apply_metadata_transition"},{"description":"Apply one no-runtime R09 Profile adoption (initial adoption or pre-runtime profile revision) from a restricted-YAML plan","inputSchema":{"additionalProperties":false,"properties":{"apply":{"default":false,"description":"perform the transaction; without it the complete planned change is reported and nothing is written","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"json":{"default":false,"description":"emit the plan/result as one JSON document","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"plan":{"description":"root-relative adoption plan (schemas/profile_adoption_plan.template.yaml)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--plan"]}},"receipts":{"description":"must be the canonical Standards history stream .cambium/receipts/standards-adoptions.jsonl","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"repository root (no task runtime may exist; governance state may exist)","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root","plan"],"type":"object"},"name":"apply_profile_adoption"},{"description":"Materialize a task runtime from one confirmed plan.","inputSchema":{"additionalProperties":false,"properties":{"apply":{"default":false,"description":"write the transaction; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"json":{"default":false,"description":"write this run's receipt objects to stdout as one canonical JSON array and move the human-readable report to stderr; receipt writing, verdicts, and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"plan":{"description":"repository-relative path under .cambium/deltas/task-plans","type":"string","x-cambium-cli":{"action":"store","option_strings":["--plan"]}},"receipts":{"default":".cambium/receipts/task-plans.jsonl","description":"receipt JSONL path under .cambium/receipts","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root","plan"],"type":"object"},"name":"apply_task_plan"},{"description":"Run and publish the K12/09 batch-close evidence bundle","inputSchema":{"additionalProperties":false,"properties":{"accept_candidate_id":{"default":[],"description":"accept this exact current candidate for this close only","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--accept-candidate-id"]}},"accept_candidate_type":{"default":[],"description":"accept every current candidate of this exact tool:check type for this close only","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--accept-candidate-type"]}},"accept_while_unchanged_id":{"default":[],"description":"accept this exact current candidate and permit reuse while its observation is unchanged","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--accept-while-unchanged-id"]}},"accept_while_unchanged_type":{"default":[],"description":"expand this current exact type set and permit those rows to be reused while unchanged","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--accept-while-unchanged-type"]}},"batch":{"description":"merge-ready batch ID","type":"string","x-cambium-cli":{"action":"store","option_strings":["--batch"]}},"integrator":{"description":"declared integrator label recorded in the evidence","type":"string","x-cambium-cli":{"action":"store","option_strings":["--integrator"]}},"json":{"default":false,"description":"write the receipts this run produced to stdout as one canonical JSON array and move the human-readable summary to stderr; receipts written and the exit code are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"receipts":{"default":".cambium/receipts/batch-close.jsonl","description":"repository-relative close evidence JSONL","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"review_attestation":{"description":"reviewer's explicit global-review statement","type":"string","x-cambium-cli":{"action":"store","option_strings":["--review-attestation"]}},"reviewer":{"description":"declared reviewer label (must differ from integrator)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--reviewer"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root","batch","integrator","reviewer","review_attestation"],"type":"object"},"name":"check_batch_close"},{"description":"Validate page boundary blocks against the K08/09 page boundary contract (gate: boundary-contract; advisory by default).","inputSchema":{"additionalProperties":false,"properties":{"contract":{"default":"Tools/page_contract.yaml","description":"compiled contract path (default Tools/page_contract.yaml)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--contract"]}},"exclude":{"default":[],"description":"subpath to exclude; repeatable","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--exclude"]}},"json":{"default":false,"description":"write the receipts this run produced to stdout as one canonical JSON array and move the human-readable summary to stderr; receipts written and the exit code are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"profile":{"description":"profile directory override; default is the selected_profile_manifest of the active Standards state","type":"string","x-cambium-cli":{"action":"store","option_strings":["--profile"]}},"receipts":{"description":"JSONL path to append machine-readable receipts to","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"scope":{"description":"only scan .md files under this subpath (directory or single page)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--scope"]}},"strict":{"default":false,"description":"treat violations as failures except the B4 migration-tolerated case; the mode a governance decision promotes to a gate","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--strict"]}},"vault_root":{"description":"vault root directory","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["vault_root"],"type":"object"},"name":"check_boundary_contract"},{"description":"Validate explicit Corpus Planning artifacts","inputSchema":{"additionalProperties":false,"properties":{"json":{"default":false,"description":"write only the deterministic normalized result JSON to stdout","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"profile":{"description":"repository-relative Profile manifest or Profile directory; default: selected Profile in Progress Ledger","type":"string","x-cambium-cli":{"action":"store","option_strings":["--profile"]}},"receipts":{"description":"append JSONL receipts here","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root"],"type":"object"},"name":"check_corpus_plan"},{"description":"Closed-world freshness / review_by candidate check","inputSchema":{"additionalProperties":false,"properties":{"as_of":{"description":"reference date YYYY-MM-DD for overdue computation (default: today)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--as-of"]}},"defaults":{"description":"optional domain -> volatility mapping file (restricted YAML subset); an active page with no explicit or defaulted volatility is a candidate","type":"string","x-cambium-cli":{"action":"store","option_strings":["--defaults"]}},"exclude":{"default":[],"description":"skip files whose path contains this component (repeatable; default: none)","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--exclude"]}},"json":{"default":false,"description":"write the receipts this run produced to stdout as one canonical JSON array and move the human-readable report to stderr; receipts written, verdicts, and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"receipts":{"description":"JSONL path to append machine-readable receipts to","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"scope":{"description":"only scan .md files under this subpath","type":"string","x-cambium-cli":{"action":"store","option_strings":["--scope"]}},"vault_root":{"description":"vault root directory","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["vault_root"],"type":"object"},"name":"check_freshness"},{"description":"Wiki link missing/ambiguous/heading check","inputSchema":{"additionalProperties":false,"properties":{"exclude":{"default":[],"description":"path component to exclude (repeatable); files whose path contains the component are neither scanned for outgoing links nor used in basename disambiguation, but exact full-path links into them still resolve (excluded means not audited, not nonexistent)","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--exclude"]}},"json":{"default":false,"description":"write the receipts this run produced to stdout as one canonical JSON array and move the human-readable summary to stderr; receipts written and the exit code are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"receipts":{"description":"JSONL path to append machine-readable receipts to","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"scope":{"description":"only scan .md files under this subpath (the index still covers the whole vault)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--scope"]}},"vault_root":{"description":"vault root directory","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["vault_root"],"type":"object"},"name":"check_links"},{"description":"MOC Module Index consistency candidate detection","inputSchema":{"additionalProperties":false,"properties":{"exclude":{"default":[],"description":"path component to exclude (repeatable); no semantic directory name is excluded by default","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--exclude"]}},"json":{"default":false,"description":"write the receipts this run produced to stdout as one canonical JSON array and move the human-readable report to stderr; receipts written, verdicts, and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"receipts":{"description":"JSONL path to append a machine-readable receipt to","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"scan root directory","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root"],"type":"object"},"name":"check_moc"},{"description":"Validate pages against the compiled frontmatter page contract (gate: page-contract; advisory by default).","inputSchema":{"additionalProperties":false,"properties":{"contract":{"default":"Tools/page_contract.yaml","description":"compiled contract path (default Tools/page_contract.yaml)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--contract"]}},"exclude":{"default":[],"description":"subpath to exclude; repeatable","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--exclude"]}},"json":{"default":false,"description":"write the receipts this run produced to stdout as one canonical JSON array and move the human-readable summary to stderr; receipts written and the exit code are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"profile":{"description":"profile directory override; default is the selected_profile_manifest of the active Standards state","type":"string","x-cambium-cli":{"action":"store","option_strings":["--profile"]}},"receipts":{"description":"JSONL path to append machine-readable receipts to","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"scope":{"description":"only scan .md files under this subpath (directory or single page)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--scope"]}},"strict":{"default":false,"description":"treat violations as failures; the mode a governance decision promotes to a gate","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--strict"]}},"vault_root":{"description":"vault root directory","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["vault_root"],"type":"object"},"name":"check_page_contract"},{"description":"Profile manifest completeness and unfilled-template check","inputSchema":{"additionalProperties":false,"properties":{"defaults":{"description":"machine-readable profile-form placeholder registry (default: Tools/schemas/execution_defaults.template.yaml under --root)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--defaults"]}},"execution_defaults":{"description":"kernel execution-default override registry (default: kernel/K00 Standards Control/execution-defaults-base.yaml under --root)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--execution-defaults"]}},"interface":{"description":"normative slot interface file (default: profiles/README.md under --root)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--interface"]}},"json":{"default":false,"description":"write one deterministic JSON object (tool, root, result, findings each carrying a closed mechanical/semantic-unresolved category) to stdout instead of the human summary; receipts and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"profile_dir":{"description":"the profile directory to check (e.g. profiles/)","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"receipts":{"description":"JSONL path to append machine-readable receipts to","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"default":".","description":"vault root that vault-relative bindings resolve against (default: this script's repository root)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--root"]}}},"required":["profile_dir"],"type":"object"},"name":"check_profile"},{"description":"Terminal Proof completeness and zero-condition check","inputSchema":{"additionalProperties":false,"properties":{"json":{"default":false,"description":"write the receipts this run produced to stdout as one canonical JSON array and move the human-readable summary to stderr; receipts written and the exit code are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"ledger":{"description":"Coverage Ledger YAML; with --root this must be exactly .cambium/state/coverage_ledger.yaml","type":"string","x-cambium-cli":{"action":"store","option_strings":["--ledger"]}},"progress_ledger":{"description":"Progress Ledger YAML; required with --root and must be exactly .cambium/state/progress_ledger.yaml","type":"string","x-cambium-cli":{"action":"store","option_strings":["--progress-ledger"]}},"proof":{"description":"path to the terminal proof YAML file","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"receipts":{"description":"JSONL path to append machine-readable receipts to","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"vault root; when given, path-valued proof fields must exist and selected routes, Cards, and kernel Read Sets must agree with the canonical route indexes","type":"string","x-cambium-cli":{"action":"store","option_strings":["--root"]}},"template":{"default":"Tools/schemas/terminal_proof.template.yaml","description":"field-list template (default Tools/schemas/terminal_proof.template.yaml)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--template"]}}},"required":["proof"],"type":"object"},"name":"check_proof"},{"description":"Validate canonical Required Queue state","inputSchema":{"additionalProperties":false,"properties":{"boundary_gate_receipt":{"default":[],"description":"current gate evidence supplied to --require-revalidation","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--boundary-gate-receipt"]}},"budget_manifest_receipt":{"description":"closed budget-manifest receipt ID supplied to --require-maintenance-complete","type":"string","x-cambium-cli":{"action":"store","option_strings":["--budget-manifest-receipt"]}},"confirmation_receipt":{"description":"confirmation evidence supplied to --require-ready","type":"string","x-cambium-cli":{"action":"store","option_strings":["--confirmation-receipt"]}},"deliver_readback":{"description":"deliver one registered conditional Card read-back source for an already-open batch","type":"string","x-cambium-cli":{"action":"store","option_strings":["--deliver-readback"]}},"json":{"default":false,"description":"write this run's receipt object to stdout as one canonical JSON array and move the human report to stderr; receipt writing and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"ledger_advance_receipt":{"description":"Coverage Ledger advance receipt ID supplied to --require-maintenance-complete","type":"string","x-cambium-cli":{"action":"store","option_strings":["--ledger-advance-receipt"]}},"readback_rule":{"description":"registered rule selected with --deliver-readback","type":"string","x-cambium-cli":{"action":"store","option_strings":["--readback-rule"]}},"receipts":{"description":"repository-relative JSONL receipt path","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"require_complete":{"default":false,"description":"build completion gate: prove no Required work remains","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--require-complete"]}},"require_maintenance_complete":{"default":false,"description":"maintenance completion gate: prove one bounded maintenance run is complete","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--require-maintenance-complete"]}},"require_ready":{"description":"prove BATCH_ID is queued and ready to activate","type":"string","x-cambium-cli":{"action":"store","option_strings":["--require-ready"]}},"require_revalidation":{"description":"prove BATCH_ID may produce its Standards revalidation aggregate","type":"string","x-cambium-cli":{"action":"store","option_strings":["--require-revalidation"]}},"resume_status":{"default":false,"description":"show interruption-safe task and batch resume state","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--resume-status"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"watermark_advance_receipt":{"description":"watermark advance receipt ID supplied to --require-maintenance-complete","type":"string","x-cambium-cli":{"action":"store","option_strings":["--watermark-advance-receipt"]}}},"required":["root"],"type":"object"},"name":"check_queue","x-cambium-mutually-exclusive":[{"dests":["require_ready","require_revalidation","require_complete","require_maintenance_complete","resume_status","deliver_readback"],"required":false}]},{"description":"Find profile-configured residual content outside accepted roots.","inputSchema":{"additionalProperties":false,"properties":{"config":{"description":"profile-owned restricted YAML scan configuration","type":"string","x-cambium-cli":{"action":"store","option_strings":["--config"]}},"json":{"default":false,"description":"write this run's receipt objects to stdout as one canonical JSON array and move the human summary to stderr; receipt writing and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"positive_controls_only":{"default":false,"description":"execute the registered controls through the production classifier without scanning repository content","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--positive-controls-only"]}},"receipts":{"description":"optional JSONL receipt path","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"scan_id":{"description":"stable ID from the selected profile's scan registry","type":"string","x-cambium-cli":{"action":"store","option_strings":["--scan-id"]}},"time_limit":{"default":55.0,"description":"hard evidence-production budget in seconds (greater than 0 and at most 55)","type":"number","x-cambium-cli":{"action":"store","option_strings":["--time-limit"],"type":"float"}},"vault_root":{"description":"knowledge-vault root to scan","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["vault_root","scan_id","config"],"type":"object"},"name":"check_residual_content"},{"description":"Validate the selected profile's Structure Registry against the vault (gate: structure-registry).","inputSchema":{"additionalProperties":false,"properties":{"json":{"default":false,"description":"write the receipts this run produced to stdout as one canonical JSON array and move the human-readable summary to stderr; receipts written and the exit code are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"profile":{"description":"profile directory override; default is the selected_profile_manifest of the active Standards state","type":"string","x-cambium-cli":{"action":"store","option_strings":["--profile"]}},"receipts":{"description":"JSONL path to append machine-readable receipts to","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"vault_root":{"description":"vault root directory","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["vault_root"],"type":"object"},"name":"check_structure"},{"description":"Frontmatter controlled-vocabulary check","inputSchema":{"additionalProperties":false,"properties":{"exclude":{"default":[],"description":"subpath to exclude (repeatable; e.g. the compiled kernel/Cards artifacts, whose frontmatter is not governed by the K08 module's knowledge-page schema)","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--exclude"]}},"json":{"default":false,"description":"write this run's receipt objects to stdout as one canonical JSON array and move the human summary to stderr; receipt writing and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"policy_fingerprint":{"description":"effective-policy fingerprint (kblib.effective_priority_policy) the quotas were resolved from; recorded on the priority-quota-compliance receipt so its consumers can bind the policy identity, never re-derive it","type":"string","x-cambium-cli":{"action":"store","option_strings":["--policy-fingerprint"]}},"quota_p0":{"default":15.0,"description":"P0 priority quota in percent (default 15; kernel default; the selected profile manifest or task contract may override)","type":"number","x-cambium-cli":{"action":"store","option_strings":["--quota-p0"],"type":"float"}},"quota_p1":{"default":35.0,"description":"P1 priority quota in percent (default 35; kernel default; the selected profile manifest or task contract may override)","type":"number","x-cambium-cli":{"action":"store","option_strings":["--quota-p1"],"type":"float"}},"receipts":{"description":"JSONL path to append machine-readable receipts to","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"scope":{"description":"only scan .md files under this subpath","type":"string","x-cambium-cli":{"action":"store","option_strings":["--scope"]}},"vault_root":{"description":"vault root directory","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"vocab":{"description":"path to vocab.yaml (defaults to vocab.yaml next to this script)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--vocab"]}}},"required":["vault_root"],"type":"object"},"name":"check_vocab"},{"description":"Compile the machine-readable CLI invocation contract from every Tools/*.py argparse declaration.","inputSchema":{"additionalProperties":false,"properties":{"check":{"default":false,"description":"recompute and compare against the existing output; exit 0 when byte-identical, 2 when it is stale or hand-edited","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--check"]}},"output":{"description":"artifact path to write or verify (default: /Tools/compiled/cli-contract.yaml)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--output"]}},"root":{"description":"repository root whose Tools/ directory is compiled","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root"],"type":"object"},"name":"compile_cli_contract"},{"description":"Compile Required Queue from explicit Coverage assignments","inputSchema":{"additionalProperties":false,"properties":{"actor_role":{"default":"worker","description":"declared caller role; only integrator may apply a Queue write or replan","enum":["integrator","worker"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--actor-role"]}},"amendment_id":{"description":"registered Amendment id authorizing the replan; required with --apply-replan","type":"string","x-cambium-cli":{"action":"store","option_strings":["--amendment-id"]}},"apply":{"default":false,"description":"materialize an initially empty Queue","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"apply_replan":{"default":false,"description":"apply a controlled structural diff to a non-empty Queue","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply-replan"]}},"coverage_proposal":{"description":"repository-contained .cambium/deltas/replans/*.coverage.yaml input","type":"string","x-cambium-cli":{"action":"store","option_strings":["--coverage-proposal"]}},"expected_coverage_sha256":{"description":"compare-and-swap guard: sha256: the caller read from the current Coverage; the replan is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-coverage-sha256"]}},"expected_progress_sha256":{"description":"compare-and-swap guard: sha256: the caller read from the current Progress; the replan is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-progress-sha256"]}},"expected_queue_revision":{"description":"compare-and-swap guard: the queue_revision the caller read from the current Queue; the write is refused when the live value differs","type":"integer","x-cambium-cli":{"action":"store","option_strings":["--expected-queue-revision"],"type":"int"}},"expected_sha256":{"description":"compare-and-swap guard: sha256: the caller read from the current Queue; the write is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-sha256"]}},"expected_state_revision":{"description":"compare-and-swap guard: the state_revision the caller read from the current Queue; the replan is refused when the live value differs","type":"integer","x-cambium-cli":{"action":"store","option_strings":["--expected-state-revision"],"type":"int"}},"json":{"default":false,"description":"write this run's receipt objects to stdout as one canonical JSON array and move the human-readable report to stderr; receipt writing, verdicts, and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"output":{"description":"repository-relative proposal path","type":"string","x-cambium-cli":{"action":"store","option_strings":["--output"]}},"receipts":{"default":".cambium/receipts/queue-structure.jsonl","description":"receipt JSONL path under .cambium/receipts","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"replan_diff":{"description":"existing .cambium/tmp/*.yaml diff to consume","type":"string","x-cambium-cli":{"action":"store","option_strings":["--replan-diff"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root"],"type":"object"},"name":"compile_queue","x-cambium-mutually-exclusive":[{"dests":["apply","apply_replan"],"required":false}]},{"description":"Compose the effective frontmatter page contract from the kernel bases and the selected profile's Metadata Contract.","inputSchema":{"additionalProperties":false,"properties":{"base":{"description":"applicability base to compile from (default: kernel/K08 Metadata and Status/applicability-base.yaml under --root)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--base"]}},"check":{"default":false,"description":"recompute and compare against the existing output; exit 0 when byte-identical, 2 otherwise","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--check"]}},"output":{"description":"compiled page contract to write, or to compare against under --check (default: Tools/page_contract.yaml under --root)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--output"]}},"profile":{"description":"profile directory for a validation run; the vault selection stays with K00/03","type":"string","x-cambium-cli":{"action":"store","option_strings":["--profile"]}},"relationships":{"description":"relationship base to compile from (default: kernel/K08 Metadata and Status/relationship-base.yaml under --root)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--relationships"]}},"root":{"default":".","description":"vault root (default: this repository)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--root"]}},"sources_role":{"description":"sources-role base to compile from (default: kernel/K07 Sources and Accuracy/sources-role-base.yaml under --root)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--sources-role"]}}},"type":"object"},"name":"compose_page_contract"},{"description":"Deterministically compose the vocabulary artifact from the kernel base and the selected profile's extensions.","inputSchema":{"additionalProperties":false,"properties":{"base":{"default":"kernel/K08 Metadata and Status/vocabulary-base.yaml","description":"the kernel vocabulary base the extensions are appended to (default: kernel/K08 Metadata and Status/vocabulary-base.yaml)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--base"]}},"check":{"default":false,"description":"recompute and compare against the existing output; exit 0 when values and provenance are identical, 2 otherwise","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--check"]}},"extensions":{"description":"the active profile's vocabulary-extensions.yaml. Canonical adopter Standards state selects the path; when this flag is present it must name that same path","type":"string","x-cambium-cli":{"action":"store","option_strings":["--extensions"]}},"output":{"default":"Tools/vocab.yaml","description":"composed vocabulary artifact to write, or to compare against under --check (default: Tools/vocab.yaml)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--output"]}}},"type":"object"},"name":"compose_vocab"},{"description":"Cross-file duplicate paragraph candidate detection (for maintenance runs and governance tasks)","inputSchema":{"additionalProperties":false,"properties":{"exclude":{"description":"skip files whose path contains this component (repeatable; default: legacy)","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--exclude"]}},"json":{"default":false,"description":"write the receipts this run produced to stdout as one canonical JSON array and move the human-readable report to stderr; receipts written, verdicts, and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"receipts":{"description":"JSONL path to append machine-readable receipts to (shared convention, Tools/schemas/receipt.template.jsonl)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"scope":{"description":"subpath (relative to vault, or absolute): only report similar pairs with at least one side under it","type":"string","x-cambium-cli":{"action":"store","option_strings":["--scope"]}},"vault":{"default":".","description":"vault root directory (default: current directory)","type":"string","x-cambium-cli":{"action":"store","nargs":"?","option_strings":[]}}},"type":"object"},"name":"duplicate_check"},{"description":"Initialize empty Cambium runtime state","inputSchema":{"additionalProperties":false,"properties":{"apply":{"default":false,"description":"materialize .cambium/; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"at":{"description":"initial Coverage timestamp (default: current UTC)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--at"]}},"completion_semantics":{"description":"build requires completion-candidate plus Terminal Proof; maintenance closes directly through the bounded maintenance completion gate","enum":["build","maintenance"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--completion-semantics"]}},"concurrency_cap":{"description":"explicit task-contract override of K13/10's concurrency cap; omit it to take the selected profile manifest's registered override, or the kernel default 3 when the manifest registers none","type":"integer","x-cambium-cli":{"action":"store","option_strings":["--concurrency-cap"],"type":"int"}},"contract_version":{"default":"c1","description":"non-empty task-contract version recorded on the Progress Ledger contract","type":"string","x-cambium-cli":{"action":"store","option_strings":["--contract-version"]}},"exclusions":{"default":[],"description":"explicit out-of-scope item; repeatable","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--exclude"]}},"objective":{"description":"non-empty statement of the task outcome","type":"string","x-cambium-cli":{"action":"store","option_strings":["--objective"]}},"profile_manifest":{"description":"repository-relative selected profile manifest; must equal the selected_profile_manifest of the canonical adopter Standards state","type":"string","x-cambium-cli":{"action":"store","option_strings":["--profile-manifest"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"scope_version":{"description":"non-empty scope identity stamped on the Queue, Coverage Ledger and task contract","type":"string","x-cambium-cli":{"action":"store","option_strings":["--scope-version"]}},"standards_version":{"description":"Standards version this runtime adopts; must equal the approved standards_version of the canonical adopter Standards state","type":"string","x-cambium-cli":{"action":"store","option_strings":["--standards-version"]}},"task_id":{"description":"non-empty task identity stamped on the Queue, Coverage Ledger and Progress Ledger","type":"string","x-cambium-cli":{"action":"store","option_strings":["--task-id"]}}},"required":["root","task_id","objective","scope_version","standards_version","profile_manifest","completion_semantics"],"type":"object"},"name":"init_state"},{"description":"Compile and load Cambium's closed metadata-execution authority contract. This module is deliberately the single authority boundary between metadata declarations and executable writers. A field rule is executable only when an installed writer capability declares the same ``(field, transition, adapter)`` operation, and every installed writer operation must be authorized by exactly one rule. Unknown keys, unknown adapters, orphan implementations, and partial evidence bindings fail closed.","inputSchema":{"additionalProperties":false,"properties":{"authority":{"default":"kernel/K08 Metadata and Status/metadata-authority-base.yaml","type":"string","x-cambium-cli":{"action":"store","option_strings":["--authority"]}},"capabilities":{"default":"Tools/operation-capabilities.yaml","type":"string","x-cambium-cli":{"action":"store","option_strings":["--capabilities"]}},"check":{"default":false,"type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--check"]}},"output":{"default":"Tools/compiled/metadata-execution-contract.json","type":"string","x-cambium-cli":{"action":"store","option_strings":["--output"]}},"root":{"default":".","type":"string","x-cambium-cli":{"action":"store","option_strings":["--root"]}}},"type":"object"},"name":"metadata_execution_contract"},{"description":"Migrate existing runtime identity to Standards state","inputSchema":{"additionalProperties":false,"properties":{"apply":{"default":false,"description":"write state; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root"],"type":"object"},"name":"migrate_standards_state"},{"description":"Read-only onboarding status projector: derives the adoption/onboarding state of one root and exactly one next_action token; writes nothing and owns no ledger","inputSchema":{"additionalProperties":false,"properties":{"json":{"default":false,"description":"emit the status view as one deterministic JSON object instead of the human summary","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"profile_id":{"description":"target one candidate profile directory name under profiles/ for the full profile-load evaluation (defaults to the single candidate when exactly one exists)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--profile-id"]}},"root":{"description":"the adopting repository root to project","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root"],"type":"object"},"name":"profile_onboarding_status"},{"description":"Project metadata-contract owner state onto page frontmatter","inputSchema":{"additionalProperties":false,"properties":{"apply":{"default":false,"description":"take the runtime writer lock and publish the projection; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"page":{"description":"limit to these repository-relative pages (repeatable); default is every Ledger page","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--page"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root"],"type":"object"},"name":"project_page_state"},{"description":"Record one snapshot-bound Batch Review judgment","inputSchema":{"additionalProperties":false,"properties":{"apply":{"default":false,"description":"append the evidence; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"batch":{"description":"exact open Queue batch ID","type":"string","x-cambium-cli":{"action":"store","option_strings":["--batch"]}},"json":{"default":false,"description":"write the applied receipt as one JSON array","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"judgment_item":{"description":"registered Batch Review Requirement Judgment Item ID","type":"string","x-cambium-cli":{"action":"store","option_strings":["--judgment-item"]}},"receipts":{"default":".cambium/receipts/batch-judgments.jsonl","description":"receipt JSONL path under .cambium/receipts","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"reviewer_role":{"description":"declared pass-authority Profile role ID","type":"string","x-cambium-cli":{"action":"store","option_strings":["--reviewer-role"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"statement":{"description":"bounded judgment statement (the concrete verdict, not \"reviewed\")","type":"string","x-cambium-cli":{"action":"store","option_strings":["--statement"]}},"target":{"description":"manifest page path, or the batch ID for a batch-selector requirement","type":"string","x-cambium-cli":{"action":"store","option_strings":["--target"]}}},"required":["root","batch","judgment_item","target","reviewer_role","statement"],"type":"object"},"name":"record_batch_judgment"},{"description":"Record a Profile-authorized Corpus Planning semantic decision as machine-readable JSONL","inputSchema":{"additionalProperties":false,"properties":{"actor_role":{"description":"declared authority Role ID; required with --apply and must equal the Profile/plan binding","type":"string","x-cambium-cli":{"action":"store","option_strings":["--actor-role"]}},"apply":{"default":false,"description":"append the structural and semantic receipts; default is dry-run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"plan":{"description":"closed restricted-YAML acceptance decision plan; one .yaml file directly under .cambium/deltas/corpus-plan-acceptances/","type":"string","x-cambium-cli":{"action":"store","option_strings":["--plan"]}},"receipts":{"default":".cambium/receipts/corpus-plan-acceptance.jsonl","description":"repository-relative JSONL path the receipts are appended to (default: .cambium/receipts/corpus-plan-acceptance.jsonl)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root","plan"],"type":"object"},"name":"record_corpus_acceptance"},{"description":"Record snapshot-bound manual Extension Gate evidence","inputSchema":{"additionalProperties":false,"properties":{"actor_role":{"description":"declared pass-authority Profile role ID","type":"string","x-cambium-cli":{"action":"store","option_strings":["--actor-role"]}},"apply":{"default":false,"description":"append the evidence; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"gate_id":{"description":"exact typed Profile Extension Gate ID","type":"string","x-cambium-cli":{"action":"store","option_strings":["--gate-id"]}},"json":{"default":false,"description":"write the applied receipt as one JSON array","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"page":{"description":"repository-relative Markdown target","type":"string","x-cambium-cli":{"action":"store","option_strings":["--page"]}},"receipts":{"default":".cambium/receipts/gate-attestations.jsonl","description":"receipt JSONL path under .cambium/receipts","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"statement":{"description":"bounded manual attestation statement","type":"string","x-cambium-cli":{"action":"store","option_strings":["--statement"]}},"value":{"description":"requested registered completion value","type":"string","x-cambium-cli":{"action":"store","option_strings":["--value"]}}},"required":["root","gate_id","page","value","actor_role","statement"],"type":"object"},"name":"record_gate_attestation"},{"description":"Run a registered scan and record a deterministic Extension Gate result","inputSchema":{"additionalProperties":false,"properties":{"apply":{"default":false,"description":"run and append the bound Gate result","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"gate_id":{"description":"exact deterministic typed Profile Gate ID","type":"string","x-cambium-cli":{"action":"store","option_strings":["--gate-id"]}},"json":{"default":false,"description":"write the applied receipt as one JSON array","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"page":{"description":"repository-relative Markdown target","type":"string","x-cambium-cli":{"action":"store","option_strings":["--page"]}},"receipts":{"default":".cambium/receipts/gate-results.jsonl","description":"receipt JSONL path under .cambium/receipts","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root","gate_id","page"],"type":"object"},"name":"record_gate_result"},{"description":"Register one approved current-protocol Amendment","inputSchema":{"additionalProperties":false,"properties":{"actor_role":{"default":"worker","description":"declared caller role; only integrator may register or withdraw an Amendment","enum":["integrator","worker"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--actor-role"]}},"amendment_id":{"description":"id for a queue-replan registration; cross-Ledger operations derive it from --plan instead","type":"string","x-cambium-cli":{"action":"store","option_strings":["--amendment-id"]}},"apply":{"default":false,"description":"write the registration; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"approval_reference":{"description":"explicit-user approval reference; required when --decision-mode is explicit-user","type":"string","x-cambium-cli":{"action":"store","option_strings":["--approval-reference"]}},"coverage_proposal":{"description":".cambium/deltas/replans/*.coverage.yaml proposal","type":"string","x-cambium-cli":{"action":"store","option_strings":["--coverage-proposal"]}},"date":{"description":"YYYY-MM-DD; must equal the UTC registration date","type":"string","x-cambium-cli":{"action":"store","option_strings":["--date"]}},"decision_mode":{"default":"auto","description":"derive delegated authority by default; explicit-user requires --approval-reference","enum":["auto","contract-delegated","explicit-user"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--decision-mode"]}},"expected_coverage_sha256":{"description":"compare-and-swap guard: sha256: the caller read from the current Coverage; registration is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-coverage-sha256"]}},"expected_progress_sha256":{"description":"compare-and-swap guard: sha256: the caller read from the current Progress; registration is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-progress-sha256"]}},"expected_queue_sha256":{"description":"compare-and-swap guard: sha256: the caller read from the current Queue; registration is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-queue-sha256"]}},"json":{"default":false,"description":"write the published receipt to stdout as one canonical JSON array and move the human report to stderr; a dry run publishes no receipt and so writes nothing there; receipt writing and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"operation":{"description":"Amendment operation being registered","enum":["cancel-batch","gap-routing-reconciliation","property-state-migration","queue-replan","scope-replan"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--operation"]}},"plan":{"description":".cambium/deltas/amendments/*.yaml plan","type":"string","x-cambium-cli":{"action":"store","option_strings":["--plan"]}},"reason":{"description":"nonempty withdrawal reason recorded on the row and its receipt","type":"string","x-cambium-cli":{"action":"store","option_strings":["--reason"]}},"receipts":{"default":".cambium/receipts/amendments.jsonl","description":"receipt JSONL path under .cambium/receipts","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"summary":{"description":"non-empty one-line rationale recorded on the row","type":"string","x-cambium-cli":{"action":"store","option_strings":["--summary"]}},"withdraw":{"description":"retire the named pending registration instead of registering one (K13/06 withdrawal); requires --reason","type":"string","x-cambium-cli":{"action":"store","option_strings":["--withdraw"]}}},"required":["root","expected_coverage_sha256","expected_progress_sha256","expected_queue_sha256"],"type":"object"},"name":"register_amendment"},{"description":"Render the K08/09 boundary projection blocks from page `boundary` frontmatter.","inputSchema":{"additionalProperties":false,"properties":{"apply":{"default":false,"description":"rewrite the stale owned blocks atomically; omit to only report what would render","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"check":{"default":false,"description":"exit 2 when any owned block is stale; the default report never fails on staleness","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--check"]}},"contract":{"default":"Tools/page_contract.yaml","description":"compiled contract path (default Tools/page_contract.yaml)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--contract"]}},"profile":{"description":"profile directory override; default is the selected_profile_manifest of the active Standards state","type":"string","x-cambium-cli":{"action":"store","option_strings":["--profile"]}},"scope":{"description":"only scan .md files under this subpath","type":"string","x-cambium-cli":{"action":"store","option_strings":["--scope"]}},"vault_root":{"description":"vault root directory","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["vault_root"],"type":"object"},"name":"render_boundary_projection"},{"description":"Render the Cambium MCP server's registration and corpus binding into the configuration file each supported host reads.","inputSchema":{"additionalProperties":false,"properties":{"check":{"default":false,"description":"re-render and compare against the existing products; exit 0 when byte-identical, 2 when one is stale or hand-edited","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--check"]}},"distribution_root":{"description":"absolute path of the Cambium checkout the server is launched from; substituted for (default: leave the placeholder)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--distribution-root"]}},"host":{"description":"render only this host's product (default: every host)","enum":["claude-code","codex","dsh-env","dsh-profile-patch","kimi-code"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--host"]}},"output_dir":{"description":"directory to write or verify the products in (default: /Tools/compiled/host-configs)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--output-dir"]}},"projection":{"description":"compiled interface projection to bind to (default: /Tools/compiled/mcp-tools.json)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--projection"]}},"root":{"description":"repository root holding the compiled interface projection","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"sources":{"default":false,"description":"print the declaration source of every rendered field and exit without reading or writing any product","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--sources"]}},"workspace_root":{"description":"absolute path of the corpus repository this registration is bound to; substituted for (default: leave the placeholder)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--workspace-root"]}}},"required":["root"],"type":"object"},"name":"render_host_configs","x-cambium-mutually-exclusive":[{"dests":["check","sources"],"required":false}]},{"description":"Project the compiled CLI invocation contract into the agent-facing interface forms registered in this tool.","inputSchema":{"additionalProperties":false,"properties":{"check":{"default":false,"description":"recompute and compare against the existing artifacts; exit 0 when byte-identical, 2 when one is stale or hand-edited","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--check"]}},"contract":{"description":"compiled CLI contract to project (default: /Tools/compiled/cli-contract.yaml)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--contract"]}},"form":{"description":"project only this form (default: every registered form)","enum":["mcp"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--form"]}},"output":{"description":"artifact path to write or verify; requires --form, because one path cannot hold two forms","type":"string","x-cambium-cli":{"action":"store","option_strings":["--output"]}},"root":{"description":"repository root holding the compiled CLI contract","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"sources":{"default":false,"description":"print the declaration source of every projected field and exit without reading or writing any artifact","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--sources"]}}},"required":["root"],"type":"object"},"name":"render_interface_projection","x-cambium-mutually-exclusive":[{"dests":["check","sources"],"required":false}]},{"description":"Render Required Queue human report","inputSchema":{"additionalProperties":false,"properties":{"check":{"default":false,"description":"compare existing report instead of writing","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--check"]}},"output":{"default":".cambium/reports/required_queue.md","description":"repository-relative report path","type":"string","x-cambium-cli":{"action":"store","option_strings":["--output"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"stdout":{"default":false,"description":"print the report to stdout and write nothing","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--stdout"]}}},"required":["root"],"type":"object"},"name":"render_queue"},{"description":"Render derived Structure Registry coverage projections (K01/05 derived roles).","inputSchema":{"additionalProperties":false,"properties":{"apply":{"default":false,"description":"rewrite the stale owned blocks atomically; omit to only report what would render","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"check":{"default":false,"description":"exit 2 when any owned block is stale or missing; the default report never fails on staleness","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--check"]}},"profile":{"description":"profile directory override; default is the selected_profile_manifest of the active Standards state","type":"string","x-cambium-cli":{"action":"store","option_strings":["--profile"]}},"vault_root":{"description":"vault root directory","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["vault_root"],"type":"object"},"name":"render_structure_projection"},{"description":"Run the adopter verification set derived from the K00/12 Stable Gate ID Registry (deterministic, not-batch-scoped producers).","inputSchema":{"additionalProperties":false,"properties":{"exclude":{"default":[],"description":"path prefix passed through to scanners that accept it (repeatable)","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--exclude"]}},"list":{"default":false,"description":"print the derived set and each command without running anything","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--list"]}},"profile":{"description":"profile directory override; default is the live runtime's selected_profile_manifest","type":"string","x-cambium-cli":{"action":"store","option_strings":["--profile"]}},"root":{"description":"repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root"],"type":"object"},"name":"run_gates"},{"description":"Scaffold a candidate profile from profiles/_template using the exact-copy whitelist in profiles/template-files.yaml","inputSchema":{"additionalProperties":false,"properties":{"apply":{"default":false,"description":"create the candidate; without it the plan is reported and nothing is written","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"json":{"default":false,"description":"emit the plan/result as one JSON document","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"profile_id":{"description":"candidate profile slug matching [a-z0-9][a-z0-9_-]* (equals the directory name)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--profile-id"]}},"root":{"description":"repository root containing profiles/","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root","profile_id"],"type":"object"},"name":"scaffold_profile"},{"description":"Seal verified frozen receipt history (K12/07). --apply is a maintenance-window operation: run it only with no other Cambium or adopter writer, checker or receipt appender active against this repository.","inputSchema":{"additionalProperties":false,"properties":{"apply":{"default":false,"description":"write the seal, or with --reconcile finish the interrupted one; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"json":{"default":false,"description":"write the receipts this run produced to stdout as one canonical JSON array and move the human-readable report to stderr; receipts written, verdicts, and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"receipts":{"default":".cambium/receipts/seal-receipts.jsonl","description":"repository-relative JSONL path for this tool's own seal receipts, which never seal (default: .cambium/receipts/seal-receipts.jsonl)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"reconcile":{"default":false,"description":"finish an interrupted seal over the publication paths this tool implements; other interruptions fail closed and are resolved by the runbook in Tools/README.md","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--reconcile"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"verify":{"default":false,"description":"re-prove every sealed segment, projection and seal-receipt binding, then exit","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--verify"]}}},"required":["root"],"type":"object"},"name":"seal_receipts"},{"description":"Stamp kernel Runtime Cards","inputSchema":{"additionalProperties":false,"properties":{"acknowledge_compiled":{"default":false,"description":"after semantic regeneration/review, advance compiled_source_hash to the exact current source digest","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--acknowledge-compiled"]}},"cards_dir":{"default":"kernel/Cards","description":"Card directory relative to (default: kernel/Cards)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--cards-dir"]}},"check":{"default":false,"description":"verify only; never write","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--check"]}},"root":{"description":"repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"set_version":{"description":"also set every card's compiled_from value","type":"string","x-cambium-cli":{"action":"store","option_strings":["--set-version"]}}},"required":["root"],"type":"object"},"name":"stamp_cards"},{"description":"Apply one Required Queue transition","inputSchema":{"additionalProperties":false,"properties":{"actor_role":{"default":"worker","description":"declared caller role; Queue transition planning and apply both require integrator","enum":["integrator","worker"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--actor-role"]}},"apply":{"default":false,"description":"write the transition; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"at":{"description":"transition timestamp; defaults to now in UTC","type":"string","x-cambium-cli":{"action":"store","option_strings":["--at"]}},"batch_receipt":{"default":[],"description":"batch-review gate receipt id for open -> merge-ready; exactly one is accepted","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--batch-receipt"]}},"close_gate_receipt":{"description":"check_batch_close receipt id required by the closed transition","type":"string","x-cambium-cli":{"action":"store","option_strings":["--close-gate-receipt"]}},"confirmation_receipt":{"description":"confirmation receipt id required by queued -> open when the batch is confirmation_required","type":"string","x-cambium-cli":{"action":"store","option_strings":["--confirmation-receipt"]}},"delta_apply_receipt":{"description":"apply_delta receipt id required by the closed transition and by merge-ready -> open reopen","type":"string","x-cambium-cli":{"action":"store","option_strings":["--delta-apply-receipt"]}},"delta_path":{"description":"repository-relative .cambium/deltas/.yaml batch delta required by open -> merge-ready","type":"string","x-cambium-cli":{"action":"store","option_strings":["--delta-path"]}},"expected_sha256":{"description":"compare-and-swap guard: sha256: the caller read from the current Queue; the write is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-sha256"]}},"expected_state_revision":{"description":"compare-and-swap guard: the state_revision the caller read from the current Queue; the write is refused when the live value differs","type":"integer","x-cambium-cli":{"action":"store","option_strings":["--expected-state-revision"],"type":"int"}},"gate_receipt":{"description":"gate receipt id: activation gate for queued -> open, Queue consistency gate for closed and for clearing revalidation-required","type":"string","x-cambium-cli":{"action":"store","option_strings":["--gate-receipt"]}},"hold_state":{"description":"target hold state; exclusive with --transition","enum":["blocked","confirmation-required","none","paused","revalidation-required"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--hold-state"]}},"id":{"description":"Required Queue batch id to transition","type":"string","x-cambium-cli":{"action":"store","option_strings":["--id"]}},"json":{"default":false,"description":"write the applied transition receipt(s) to stdout as one canonical JSON array and move the human report to stderr; a dry run publishes no receipt and so writes nothing there; receipt writing and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"reason":{"description":"non-empty rationale required by merge-ready -> open and by any non-none hold","type":"string","x-cambium-cli":{"action":"store","option_strings":["--reason"]}},"receipts":{"default":".cambium/receipts/queue-transitions.jsonl","description":"receipt JSONL path under .cambium/receipts","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"standards_revalidation_receipt":{"description":"check_queue --require-revalidation receipt discharging an outstanding Standards revalidation; queued -> open or revalidation-required -> none only","type":"string","x-cambium-cli":{"action":"store","option_strings":["--standards-revalidation-receipt"]}},"transition":{"description":"target lifecycle state; exclusive with --hold-state","enum":["closed","merge-ready","open"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--transition"]}}},"required":["root","id"],"type":"object"},"name":"update_queue","x-cambium-mutually-exclusive":[{"dests":["transition","hold_state"],"required":true}]},{"description":"Apply one canonical task-state transition","inputSchema":{"additionalProperties":false,"properties":{"actor_role":{"default":"worker","description":"declared caller role; only integrator may apply a task-state write","enum":["integrator","worker"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--actor-role"]}},"apply":{"default":false,"description":"write the transition; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"at":{"description":"transition timestamp; defaults to now in UTC","type":"string","x-cambium-cli":{"action":"store","option_strings":["--at"]}},"checkpoint_summary":{"description":"non-empty reason required by paused, blocked and cancelled, and when leaving completion-candidate for anything but complete","type":"string","x-cambium-cli":{"action":"store","option_strings":["--checkpoint-summary"]}},"expected_progress_sha256":{"description":"compare-and-swap guard: sha256: the caller read from the current Progress; --apply is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-progress-sha256"]}},"expected_queue_sha256":{"description":"compare-and-swap guard: sha256: the caller read from the current Queue; --apply is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-queue-sha256"]}},"json":{"default":false,"description":"write the applied transition receipt to stdout as one canonical JSON array and move the human report to stderr; a dry run publishes no receipt and so writes nothing there; receipt writing and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"maintenance_completion_receipt":{"description":"maintenance completion gate receipt id required by complete under maintenance completion_semantics","type":"string","x-cambium-cli":{"action":"store","option_strings":["--maintenance-completion-receipt"]}},"queue_check_receipt":{"description":"Queue completion gate receipt id required by the completion-candidate transition","type":"string","x-cambium-cli":{"action":"store","option_strings":["--queue-check-receipt"]}},"receipts":{"default":".cambium/receipts/task-transitions.jsonl","description":"receipt JSONL path under .cambium/receipts","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"terminal_proof_receipt":{"description":"Terminal Proof receipt id required by complete under build completion_semantics","type":"string","x-cambium-cli":{"action":"store","option_strings":["--terminal-proof-receipt"]}},"transition":{"description":"target task state in the Progress Ledger","enum":["active","blocked","cancelled","complete","completion-candidate","paused"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--transition"]}}},"required":["root","transition"],"type":"object"},"name":"update_task"}],"transports":["stdio","streamable-http"]} +{"artifact":"agent-interface-projection","form":"mcp","generated":{"not_a_revision_basis":"This file is downstream of each tool's own argparse declaration and is never the basis for revising one. To change what an agent may call, change the tool's argparse block, recompile Tools/compiled/cli-contract.yaml, then regenerate this file.","notice":"Generated artifact -- do not edit. Every value here is projected from Tools/compiled/cli-contract.yaml by Tools/render_interface_projection.py; a hand edit is reported by --check as a HOLD.","regenerate":"python3 Tools/render_interface_projection.py .","verify":"python3 Tools/render_interface_projection.py . --check"},"generator":"Tools/render_interface_projection.py","generator_version":"1.0.0","schema_version":1,"source":"Tools/compiled/cli-contract.yaml","source_artifact":"cli-invocation-contract","source_hash":"sha256:8508cfd49f529a59b9710ba3ed9f23eece3e336e68543931da9b6c8d138c7729","source_manifest_hash":"sha256:817a50981c3a7a36947af4811ab753c2791e691e5c3f474c9f62185fca5ba4de","source_schema_version":1,"tool_count":46,"tools":[{"description":"Adopt one approved Standards/Profile revision","inputSchema":{"additionalProperties":false,"properties":{"actor_role":{"default":"worker","description":"declared caller role; only integrator may apply a Standards adoption","enum":["integrator","worker"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--actor-role"]}},"apply":{"default":false,"description":"write the transaction; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"json":{"default":false,"description":"write this run's receipt objects to stdout as one canonical JSON array and move the human-readable report to stderr; receipt writing, verdicts, and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"plan":{"description":".cambium/deltas/standards-adoptions/*.yaml","type":"string","x-cambium-cli":{"action":"store","option_strings":["--plan"]}},"receipts":{"default":".cambium/receipts/standards-adoptions.jsonl","description":"receipt JSONL path under .cambium/receipts","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root","plan"],"type":"object"},"name":"adopt_standards"},{"description":"Apply one approved cross-Ledger Amendment transaction","inputSchema":{"additionalProperties":false,"properties":{"actor_role":{"default":"worker","description":"declared caller role; only integrator may apply an Amendment transaction","enum":["integrator","worker"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--actor-role"]}},"apply":{"default":false,"description":"write the transaction; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"expected_coverage_sha256":{"description":"compare-and-swap guard: sha256: the caller read from the current Coverage; planning is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-coverage-sha256"]}},"expected_progress_sha256":{"description":"compare-and-swap guard: sha256: the caller read from the current Progress; planning is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-progress-sha256"]}},"expected_queue_sha256":{"description":"compare-and-swap guard: sha256: the caller read from the current Queue; planning is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-queue-sha256"]}},"json":{"default":false,"description":"write this run's receipt objects to stdout as one canonical JSON array and move the human-readable report to stderr; receipt writing, verdicts, and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"plan":{"description":".cambium/deltas/amendments/*.yaml plan","type":"string","x-cambium-cli":{"action":"store","option_strings":["--plan"]}},"receipts":{"default":".cambium/receipts/amendments.jsonl","description":"receipt JSONL path under .cambium/receipts","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root","plan","expected_coverage_sha256","expected_progress_sha256","expected_queue_sha256"],"type":"object"},"name":"apply_amendment"},{"description":"Amend the frozen Task Contract from one confirmed plan.","inputSchema":{"additionalProperties":false,"properties":{"actor_role":{"default":"worker","description":"declared caller role; only integrator may apply a contract amendment","enum":["integrator","worker"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--actor-role"]}},"apply":{"default":false,"description":"write the transaction; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"json":{"default":false,"description":"write this run's receipt objects to stdout as one canonical JSON array and move the human-readable report to stderr; receipt writing, verdicts, and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"plan":{"description":"repository-relative path under .cambium/deltas/contract-amendments","type":"string","x-cambium-cli":{"action":"store","option_strings":["--plan"]}},"receipts":{"default":".cambium/receipts/contract-amendments.jsonl","description":"receipt JSONL path under .cambium/receipts","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root","plan"],"type":"object"},"name":"apply_contract_amendment"},{"description":"Deterministic Coverage Delta application","inputSchema":{"additionalProperties":false,"properties":{"actor_role":{"default":"worker","description":"declared caller role; only integrator may apply canonical Coverage","enum":["integrator","worker"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--actor-role"]}},"apply":{"default":false,"description":"write the merged Coverage; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"delta":{"description":"batch Coverage delta to apply; canonical mode requires exactly .cambium/deltas/.yaml","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"expected_coverage_sha256":{"description":"compare-and-swap guard for canonical --apply: sha256: the caller read from the current Coverage; the write is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-coverage-sha256"]}},"expected_queue_sha256":{"description":"compare-and-swap guard for canonical --apply: sha256: the caller read from the current Queue; the write is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-queue-sha256"]}},"force":{"default":false,"description":"legacy mode only: keep pages whose ledger batch/next_batch does not match the delta batch","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--force"]}},"json":{"default":false,"description":"write this run's receipt objects to stdout as one canonical JSON array and move the human-readable report to stderr; receipt writing, verdicts, and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"ledger":{"description":"Coverage ledger to merge into; canonical mode requires exactly .cambium/state/coverage_ledger.yaml","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"preflight":{"default":false,"description":"plan canonical Coverage and routed-gap settlement without writes; allows an open batch","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--preflight"]}},"receipts":{"description":"receipt JSONL destination; canonical mode defaults to a new .cambium/receipts/.jsonl and refuses an existing path","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root (canonical mode)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--root"]}}},"required":["ledger","delta"],"type":"object"},"name":"apply_delta","x-cambium-mutually-exclusive":[{"dests":["apply","preflight"],"required":false}]},{"description":"Apply one receipt-backed Profile metadata transition","inputSchema":{"additionalProperties":false,"properties":{"actor_role":{"default":"worker","description":"declared caller role; only integrator may write","enum":["integrator","worker"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--actor-role"]}},"apply":{"default":false,"description":"commit owner state and page projection","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"expected_coverage_sha256":{"description":"Coverage fingerprint observed by the caller","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-coverage-sha256"]}},"expected_page_sha256":{"description":"target page fingerprint observed by the caller","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-page-sha256"]}},"gate_id":{"description":"exact typed Profile Extension Gate ID","type":"string","x-cambium-cli":{"action":"store","option_strings":["--gate-id"]}},"gate_receipt":{"description":"current producer receipt ID for this Gate","type":"string","x-cambium-cli":{"action":"store","option_strings":["--gate-receipt"]}},"json":{"default":false,"description":"write the applied receipt as one JSON array","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"page":{"description":"repository-relative Markdown target","type":"string","x-cambium-cli":{"action":"store","option_strings":["--page"]}},"receipts":{"description":"fresh JSONL path under .cambium/receipts; default is .jsonl","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"value":{"description":"requested registered completion value","type":"string","x-cambium-cli":{"action":"store","option_strings":["--value"]}}},"required":["root","gate_id","page","value","gate_receipt"],"type":"object"},"name":"apply_metadata_transition"},{"description":"Apply one no-runtime R09 Profile adoption (initial adoption or pre-runtime profile revision) from a restricted-YAML plan","inputSchema":{"additionalProperties":false,"properties":{"apply":{"default":false,"description":"perform the transaction; without it the complete planned change is reported and nothing is written","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"json":{"default":false,"description":"emit the plan/result as one JSON document","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"plan":{"description":"root-relative adoption plan (schemas/profile_adoption_plan.template.yaml)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--plan"]}},"receipts":{"description":"must be the canonical Standards history stream .cambium/receipts/standards-adoptions.jsonl","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"repository root (no task runtime may exist; governance state may exist)","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root","plan"],"type":"object"},"name":"apply_profile_adoption"},{"description":"Materialize a task runtime from one confirmed plan.","inputSchema":{"additionalProperties":false,"properties":{"apply":{"default":false,"description":"write the transaction; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"json":{"default":false,"description":"write this run's receipt objects to stdout as one canonical JSON array and move the human-readable report to stderr; receipt writing, verdicts, and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"plan":{"description":"repository-relative path under .cambium/deltas/task-plans","type":"string","x-cambium-cli":{"action":"store","option_strings":["--plan"]}},"receipts":{"default":".cambium/receipts/task-plans.jsonl","description":"receipt JSONL path under .cambium/receipts","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root","plan"],"type":"object"},"name":"apply_task_plan"},{"description":"Run and publish the K12/09 batch-close evidence bundle","inputSchema":{"additionalProperties":false,"properties":{"accept_candidate_id":{"default":[],"description":"accept this exact current candidate for this close only","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--accept-candidate-id"]}},"accept_candidate_type":{"default":[],"description":"accept every current candidate of this exact tool:check type for this close only","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--accept-candidate-type"]}},"accept_while_unchanged_id":{"default":[],"description":"accept this exact current candidate and permit reuse while its observation is unchanged","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--accept-while-unchanged-id"]}},"accept_while_unchanged_type":{"default":[],"description":"expand this current exact type set and permit those rows to be reused while unchanged","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--accept-while-unchanged-type"]}},"batch":{"description":"merge-ready batch ID","type":"string","x-cambium-cli":{"action":"store","option_strings":["--batch"]}},"integrator":{"description":"declared integrator label recorded in the evidence","type":"string","x-cambium-cli":{"action":"store","option_strings":["--integrator"]}},"json":{"default":false,"description":"write the receipts this run produced to stdout as one canonical JSON array and move the human-readable summary to stderr; receipts written and the exit code are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"receipts":{"default":".cambium/receipts/batch-close.jsonl","description":"repository-relative close evidence JSONL","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"review_attestation":{"description":"reviewer's explicit global-review statement","type":"string","x-cambium-cli":{"action":"store","option_strings":["--review-attestation"]}},"reviewer":{"description":"declared reviewer label (must differ from integrator)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--reviewer"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root","batch","integrator","reviewer","review_attestation"],"type":"object"},"name":"check_batch_close"},{"description":"Validate page boundary blocks against the K08/09 page boundary contract (gate: boundary-contract; advisory by default).","inputSchema":{"additionalProperties":false,"properties":{"contract":{"default":"Tools/page_contract.yaml","description":"compiled contract path (default Tools/page_contract.yaml)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--contract"]}},"exclude":{"default":[],"description":"subpath to exclude; repeatable","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--exclude"]}},"json":{"default":false,"description":"write the receipts this run produced to stdout as one canonical JSON array and move the human-readable summary to stderr; receipts written and the exit code are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"profile":{"description":"profile directory override; default is the selected_profile_manifest of the active Standards state","type":"string","x-cambium-cli":{"action":"store","option_strings":["--profile"]}},"receipts":{"description":"JSONL path to append machine-readable receipts to","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"scope":{"description":"only scan .md files under this subpath (directory or single page)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--scope"]}},"strict":{"default":false,"description":"treat violations as failures except the B4 migration-tolerated case; the mode a governance decision promotes to a gate","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--strict"]}},"vault_root":{"description":"vault root directory","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["vault_root"],"type":"object"},"name":"check_boundary_contract"},{"description":"Validate explicit Corpus Planning artifacts","inputSchema":{"additionalProperties":false,"properties":{"json":{"default":false,"description":"write only the deterministic normalized result JSON to stdout","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"profile":{"description":"repository-relative Profile manifest or Profile directory; default: selected Profile in Progress Ledger","type":"string","x-cambium-cli":{"action":"store","option_strings":["--profile"]}},"receipts":{"description":"append JSONL receipts here","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root"],"type":"object"},"name":"check_corpus_plan"},{"description":"Closed-world freshness / review_by candidate check","inputSchema":{"additionalProperties":false,"properties":{"as_of":{"description":"reference date YYYY-MM-DD for overdue computation (default: today)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--as-of"]}},"defaults":{"description":"optional domain -> volatility mapping file (restricted YAML subset); an active page with no explicit or defaulted volatility is a candidate","type":"string","x-cambium-cli":{"action":"store","option_strings":["--defaults"]}},"exclude":{"default":[],"description":"skip files whose path contains this component (repeatable; default: none)","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--exclude"]}},"json":{"default":false,"description":"write the receipts this run produced to stdout as one canonical JSON array and move the human-readable report to stderr; receipts written, verdicts, and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"receipts":{"description":"JSONL path to append machine-readable receipts to","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"scope":{"description":"only scan .md files under this subpath","type":"string","x-cambium-cli":{"action":"store","option_strings":["--scope"]}},"vault_root":{"description":"vault root directory","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["vault_root"],"type":"object"},"name":"check_freshness"},{"description":"Wiki link missing/ambiguous/heading check","inputSchema":{"additionalProperties":false,"properties":{"exclude":{"default":[],"description":"path component to exclude (repeatable); files whose path contains the component are neither scanned for outgoing links nor used in basename disambiguation, but exact full-path links into them still resolve (excluded means not audited, not nonexistent)","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--exclude"]}},"json":{"default":false,"description":"write the receipts this run produced to stdout as one canonical JSON array and move the human-readable summary to stderr; receipts written and the exit code are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"receipts":{"description":"JSONL path to append machine-readable receipts to","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"scope":{"description":"only scan .md files under this subpath (the index still covers the whole vault)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--scope"]}},"vault_root":{"description":"vault root directory","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["vault_root"],"type":"object"},"name":"check_links"},{"description":"MOC Module Index consistency candidate detection","inputSchema":{"additionalProperties":false,"properties":{"exclude":{"default":[],"description":"path component to exclude (repeatable); no semantic directory name is excluded by default","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--exclude"]}},"json":{"default":false,"description":"write the receipts this run produced to stdout as one canonical JSON array and move the human-readable report to stderr; receipts written, verdicts, and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"receipts":{"description":"JSONL path to append a machine-readable receipt to","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"scan root directory","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root"],"type":"object"},"name":"check_moc"},{"description":"Validate pages against the compiled frontmatter page contract (gate: page-contract; advisory by default).","inputSchema":{"additionalProperties":false,"properties":{"contract":{"default":"Tools/page_contract.yaml","description":"compiled contract path (default Tools/page_contract.yaml)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--contract"]}},"exclude":{"default":[],"description":"subpath to exclude; repeatable","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--exclude"]}},"json":{"default":false,"description":"write the receipts this run produced to stdout as one canonical JSON array and move the human-readable summary to stderr; receipts written and the exit code are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"profile":{"description":"profile directory override; default is the selected_profile_manifest of the active Standards state","type":"string","x-cambium-cli":{"action":"store","option_strings":["--profile"]}},"receipts":{"description":"JSONL path to append machine-readable receipts to","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"scope":{"description":"only scan .md files under this subpath (directory or single page)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--scope"]}},"strict":{"default":false,"description":"treat violations as failures; the mode a governance decision promotes to a gate","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--strict"]}},"vault_root":{"description":"vault root directory","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["vault_root"],"type":"object"},"name":"check_page_contract"},{"description":"Profile manifest completeness and unfilled-template check","inputSchema":{"additionalProperties":false,"properties":{"defaults":{"description":"machine-readable profile-form placeholder registry (default: Tools/schemas/execution_defaults.template.yaml under --root)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--defaults"]}},"execution_defaults":{"description":"kernel execution-default override registry (default: kernel/K00 Standards Control/execution-defaults-base.yaml under --root)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--execution-defaults"]}},"interface":{"description":"normative slot interface file (default: profiles/README.md under --root)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--interface"]}},"json":{"default":false,"description":"write one deterministic JSON object (tool, root, result, findings each carrying a closed mechanical/semantic-unresolved category) to stdout instead of the human summary; receipts and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"profile_dir":{"description":"the profile directory to check (e.g. profiles/)","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"receipts":{"description":"JSONL path to append machine-readable receipts to","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"default":".","description":"vault root that vault-relative bindings resolve against (default: this script's repository root)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--root"]}}},"required":["profile_dir"],"type":"object"},"name":"check_profile"},{"description":"Terminal Proof completeness and zero-condition check","inputSchema":{"additionalProperties":false,"properties":{"json":{"default":false,"description":"write the receipts this run produced to stdout as one canonical JSON array and move the human-readable summary to stderr; receipts written and the exit code are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"ledger":{"description":"Coverage Ledger YAML; with --root this must be exactly .cambium/state/coverage_ledger.yaml","type":"string","x-cambium-cli":{"action":"store","option_strings":["--ledger"]}},"progress_ledger":{"description":"Progress Ledger YAML; required with --root and must be exactly .cambium/state/progress_ledger.yaml","type":"string","x-cambium-cli":{"action":"store","option_strings":["--progress-ledger"]}},"proof":{"description":"path to the terminal proof YAML file","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"receipts":{"description":"JSONL path to append machine-readable receipts to","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"vault root; when given, path-valued proof fields must exist and selected routes, Cards, and kernel Read Sets must agree with the canonical route indexes","type":"string","x-cambium-cli":{"action":"store","option_strings":["--root"]}},"template":{"default":"Tools/schemas/terminal_proof.template.yaml","description":"field-list template (default Tools/schemas/terminal_proof.template.yaml)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--template"]}}},"required":["proof"],"type":"object"},"name":"check_proof"},{"description":"Validate canonical Required Queue state","inputSchema":{"additionalProperties":false,"properties":{"boundary_gate_receipt":{"default":[],"description":"current gate evidence supplied to --require-revalidation","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--boundary-gate-receipt"]}},"budget_manifest_receipt":{"description":"closed budget-manifest receipt ID supplied to --require-maintenance-complete","type":"string","x-cambium-cli":{"action":"store","option_strings":["--budget-manifest-receipt"]}},"confirmation_receipt":{"description":"confirmation evidence supplied to --require-ready","type":"string","x-cambium-cli":{"action":"store","option_strings":["--confirmation-receipt"]}},"deliver_readback":{"description":"deliver one registered conditional Card read-back source for an already-open batch","type":"string","x-cambium-cli":{"action":"store","option_strings":["--deliver-readback"]}},"json":{"default":false,"description":"write this run's receipt object to stdout as one canonical JSON array and move the human report to stderr; receipt writing and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"ledger_advance_receipt":{"description":"Coverage Ledger advance receipt ID supplied to --require-maintenance-complete","type":"string","x-cambium-cli":{"action":"store","option_strings":["--ledger-advance-receipt"]}},"readback_rule":{"description":"registered rule selected with --deliver-readback","type":"string","x-cambium-cli":{"action":"store","option_strings":["--readback-rule"]}},"receipts":{"description":"repository-relative JSONL receipt path","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"require_complete":{"default":false,"description":"build completion gate: prove no Required work remains","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--require-complete"]}},"require_maintenance_complete":{"default":false,"description":"maintenance completion gate: prove one bounded maintenance run is complete","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--require-maintenance-complete"]}},"require_ready":{"description":"prove BATCH_ID is queued and ready to activate","type":"string","x-cambium-cli":{"action":"store","option_strings":["--require-ready"]}},"require_revalidation":{"description":"prove BATCH_ID may produce its Standards revalidation aggregate","type":"string","x-cambium-cli":{"action":"store","option_strings":["--require-revalidation"]}},"resume_status":{"default":false,"description":"show interruption-safe task and batch resume state","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--resume-status"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"watermark_advance_receipt":{"description":"watermark advance receipt ID supplied to --require-maintenance-complete","type":"string","x-cambium-cli":{"action":"store","option_strings":["--watermark-advance-receipt"]}}},"required":["root"],"type":"object"},"name":"check_queue","x-cambium-mutually-exclusive":[{"dests":["require_ready","require_revalidation","require_complete","require_maintenance_complete","resume_status","deliver_readback"],"required":false}]},{"description":"Find profile-configured residual content outside accepted roots.","inputSchema":{"additionalProperties":false,"properties":{"config":{"description":"profile-owned restricted YAML scan configuration","type":"string","x-cambium-cli":{"action":"store","option_strings":["--config"]}},"json":{"default":false,"description":"write this run's receipt objects to stdout as one canonical JSON array and move the human summary to stderr; receipt writing and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"positive_controls_only":{"default":false,"description":"execute the registered controls through the production classifier without scanning repository content","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--positive-controls-only"]}},"receipts":{"description":"optional JSONL receipt path","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"scan_id":{"description":"stable ID from the selected profile's scan registry","type":"string","x-cambium-cli":{"action":"store","option_strings":["--scan-id"]}},"time_limit":{"default":55.0,"description":"hard evidence-production budget in seconds (greater than 0 and at most 55)","type":"number","x-cambium-cli":{"action":"store","option_strings":["--time-limit"],"type":"float"}},"vault_root":{"description":"knowledge-vault root to scan","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["vault_root","scan_id","config"],"type":"object"},"name":"check_residual_content"},{"description":"Validate the selected profile's Structure Registry against the vault (gate: structure-registry).","inputSchema":{"additionalProperties":false,"properties":{"json":{"default":false,"description":"write the receipts this run produced to stdout as one canonical JSON array and move the human-readable summary to stderr; receipts written and the exit code are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"profile":{"description":"profile directory override; default is the selected_profile_manifest of the active Standards state","type":"string","x-cambium-cli":{"action":"store","option_strings":["--profile"]}},"receipts":{"description":"JSONL path to append machine-readable receipts to","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"vault_root":{"description":"vault root directory","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["vault_root"],"type":"object"},"name":"check_structure"},{"description":"Frontmatter controlled-vocabulary check","inputSchema":{"additionalProperties":false,"properties":{"exclude":{"default":[],"description":"subpath to exclude (repeatable; e.g. the compiled kernel/Cards artifacts, whose frontmatter is not governed by the K08 module's knowledge-page schema)","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--exclude"]}},"json":{"default":false,"description":"write this run's receipt objects to stdout as one canonical JSON array and move the human summary to stderr; receipt writing and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"policy_fingerprint":{"description":"effective-policy fingerprint (kblib.effective_priority_policy) the quotas were resolved from; recorded on the priority-quota-compliance receipt so its consumers can bind the policy identity, never re-derive it","type":"string","x-cambium-cli":{"action":"store","option_strings":["--policy-fingerprint"]}},"quota_p0":{"default":15.0,"description":"P0 priority quota in percent (default 15; kernel default; the selected profile manifest or task contract may override)","type":"number","x-cambium-cli":{"action":"store","option_strings":["--quota-p0"],"type":"float"}},"quota_p1":{"default":35.0,"description":"P1 priority quota in percent (default 35; kernel default; the selected profile manifest or task contract may override)","type":"number","x-cambium-cli":{"action":"store","option_strings":["--quota-p1"],"type":"float"}},"receipts":{"description":"JSONL path to append machine-readable receipts to","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"scope":{"description":"only scan .md files under this subpath","type":"string","x-cambium-cli":{"action":"store","option_strings":["--scope"]}},"vault_root":{"description":"vault root directory","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"vocab":{"description":"path to vocab.yaml (defaults to vocab.yaml next to this script)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--vocab"]}}},"required":["vault_root"],"type":"object"},"name":"check_vocab"},{"description":"Compile the machine-readable CLI invocation contract from every Tools/*.py argparse declaration.","inputSchema":{"additionalProperties":false,"properties":{"check":{"default":false,"description":"recompute and compare against the existing output; exit 0 when byte-identical, 2 when it is stale or hand-edited","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--check"]}},"output":{"description":"artifact path to write or verify (default: /Tools/compiled/cli-contract.yaml)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--output"]}},"root":{"description":"repository root whose Tools/ directory is compiled","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root"],"type":"object"},"name":"compile_cli_contract"},{"description":"Compile Required Queue from explicit Coverage assignments","inputSchema":{"additionalProperties":false,"properties":{"actor_role":{"default":"worker","description":"declared caller role; only integrator may apply a Queue write or replan","enum":["integrator","worker"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--actor-role"]}},"amendment_id":{"description":"registered Amendment id authorizing the replan; required with --apply-replan","type":"string","x-cambium-cli":{"action":"store","option_strings":["--amendment-id"]}},"apply":{"default":false,"description":"materialize an initially empty Queue","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"apply_replan":{"default":false,"description":"apply a controlled structural diff to a non-empty Queue","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply-replan"]}},"coverage_proposal":{"description":"repository-contained .cambium/deltas/replans/*.coverage.yaml input","type":"string","x-cambium-cli":{"action":"store","option_strings":["--coverage-proposal"]}},"expected_coverage_sha256":{"description":"compare-and-swap guard: sha256: the caller read from the current Coverage; the replan is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-coverage-sha256"]}},"expected_progress_sha256":{"description":"compare-and-swap guard: sha256: the caller read from the current Progress; the replan is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-progress-sha256"]}},"expected_queue_revision":{"description":"compare-and-swap guard: the queue_revision the caller read from the current Queue; the write is refused when the live value differs","type":"integer","x-cambium-cli":{"action":"store","option_strings":["--expected-queue-revision"],"type":"int"}},"expected_sha256":{"description":"compare-and-swap guard: sha256: the caller read from the current Queue; the write is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-sha256"]}},"expected_state_revision":{"description":"compare-and-swap guard: the state_revision the caller read from the current Queue; the replan is refused when the live value differs","type":"integer","x-cambium-cli":{"action":"store","option_strings":["--expected-state-revision"],"type":"int"}},"json":{"default":false,"description":"write this run's receipt objects to stdout as one canonical JSON array and move the human-readable report to stderr; receipt writing, verdicts, and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"output":{"description":"repository-relative proposal path","type":"string","x-cambium-cli":{"action":"store","option_strings":["--output"]}},"receipts":{"default":".cambium/receipts/queue-structure.jsonl","description":"receipt JSONL path under .cambium/receipts","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"replan_diff":{"description":"existing .cambium/tmp/*.yaml diff to consume","type":"string","x-cambium-cli":{"action":"store","option_strings":["--replan-diff"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root"],"type":"object"},"name":"compile_queue","x-cambium-mutually-exclusive":[{"dests":["apply","apply_replan"],"required":false}]},{"description":"Compose the effective frontmatter page contract from the kernel bases and the selected profile's Metadata Contract.","inputSchema":{"additionalProperties":false,"properties":{"base":{"description":"applicability base to compile from (default: kernel/K08 Metadata and Status/applicability-base.yaml under --root)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--base"]}},"check":{"default":false,"description":"recompute and compare against the existing output; exit 0 when byte-identical, 2 otherwise","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--check"]}},"output":{"description":"compiled page contract to write, or to compare against under --check (default: Tools/page_contract.yaml under --root)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--output"]}},"profile":{"description":"profile directory for a validation run; the vault selection stays with K00/03","type":"string","x-cambium-cli":{"action":"store","option_strings":["--profile"]}},"relationships":{"description":"relationship base to compile from (default: kernel/K08 Metadata and Status/relationship-base.yaml under --root)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--relationships"]}},"root":{"default":".","description":"vault root (default: this repository)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--root"]}},"sources_role":{"description":"sources-role base to compile from (default: kernel/K07 Sources and Accuracy/sources-role-base.yaml under --root)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--sources-role"]}}},"type":"object"},"name":"compose_page_contract"},{"description":"Deterministically compose the vocabulary artifact from the kernel base and the selected profile's extensions.","inputSchema":{"additionalProperties":false,"properties":{"base":{"default":"kernel/K08 Metadata and Status/vocabulary-base.yaml","description":"the kernel vocabulary base the extensions are appended to (default: kernel/K08 Metadata and Status/vocabulary-base.yaml)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--base"]}},"check":{"default":false,"description":"recompute and compare against the existing output; exit 0 when values and provenance are identical, 2 otherwise","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--check"]}},"extensions":{"description":"the active profile's vocabulary-extensions.yaml. Canonical adopter Standards state selects the path; when this flag is present it must name that same path","type":"string","x-cambium-cli":{"action":"store","option_strings":["--extensions"]}},"output":{"default":"Tools/vocab.yaml","description":"composed vocabulary artifact to write, or to compare against under --check (default: Tools/vocab.yaml)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--output"]}}},"type":"object"},"name":"compose_vocab"},{"description":"Cross-file duplicate paragraph candidate detection (for maintenance runs and governance tasks)","inputSchema":{"additionalProperties":false,"properties":{"exclude":{"description":"skip files whose path contains this component (repeatable; default: legacy)","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--exclude"]}},"json":{"default":false,"description":"write the receipts this run produced to stdout as one canonical JSON array and move the human-readable report to stderr; receipts written, verdicts, and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"receipts":{"description":"JSONL path to append machine-readable receipts to (shared convention, Tools/schemas/receipt.template.jsonl)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"scope":{"description":"subpath (relative to vault, or absolute): only report similar pairs with at least one side under it","type":"string","x-cambium-cli":{"action":"store","option_strings":["--scope"]}},"vault":{"default":".","description":"vault root directory (default: current directory)","type":"string","x-cambium-cli":{"action":"store","nargs":"?","option_strings":[]}}},"type":"object"},"name":"duplicate_check"},{"description":"Initialize empty Cambium runtime state","inputSchema":{"additionalProperties":false,"properties":{"apply":{"default":false,"description":"materialize .cambium/; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"at":{"description":"initial Coverage timestamp (default: current UTC)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--at"]}},"completion_semantics":{"description":"build requires completion-candidate plus Terminal Proof; maintenance closes directly through the bounded maintenance completion gate","enum":["build","maintenance"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--completion-semantics"]}},"concurrency_cap":{"description":"explicit task-contract override of K13/10's concurrency cap; omit it to take the selected profile manifest's registered override, or the kernel default 3 when the manifest registers none","type":"integer","x-cambium-cli":{"action":"store","option_strings":["--concurrency-cap"],"type":"int"}},"contract_version":{"default":"c1","description":"non-empty task-contract version recorded on the Progress Ledger contract","type":"string","x-cambium-cli":{"action":"store","option_strings":["--contract-version"]}},"exclusions":{"default":[],"description":"explicit out-of-scope item; repeatable","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--exclude"]}},"objective":{"description":"non-empty statement of the task outcome","type":"string","x-cambium-cli":{"action":"store","option_strings":["--objective"]}},"profile_manifest":{"description":"repository-relative selected profile manifest; must equal the selected_profile_manifest of the canonical adopter Standards state","type":"string","x-cambium-cli":{"action":"store","option_strings":["--profile-manifest"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"scope_version":{"description":"non-empty scope identity stamped on the Queue, Coverage Ledger and task contract","type":"string","x-cambium-cli":{"action":"store","option_strings":["--scope-version"]}},"standards_version":{"description":"Standards version this runtime adopts; must equal the approved standards_version of the canonical adopter Standards state","type":"string","x-cambium-cli":{"action":"store","option_strings":["--standards-version"]}},"task_id":{"description":"non-empty task identity stamped on the Queue, Coverage Ledger and Progress Ledger","type":"string","x-cambium-cli":{"action":"store","option_strings":["--task-id"]}}},"required":["root","task_id","objective","scope_version","standards_version","profile_manifest","completion_semantics"],"type":"object"},"name":"init_state"},{"description":"Compile and load Cambium's closed metadata-execution authority contract. This module is deliberately the single authority boundary between metadata declarations and executable writers. A field rule is executable only when an installed writer capability declares the same ``(field, transition, adapter)`` operation, and every installed writer operation must be authorized by exactly one rule. Unknown keys, unknown adapters, orphan implementations, and partial evidence bindings fail closed.","inputSchema":{"additionalProperties":false,"properties":{"authority":{"default":"kernel/K08 Metadata and Status/metadata-authority-base.yaml","type":"string","x-cambium-cli":{"action":"store","option_strings":["--authority"]}},"capabilities":{"default":"Tools/operation-capabilities.yaml","type":"string","x-cambium-cli":{"action":"store","option_strings":["--capabilities"]}},"check":{"default":false,"type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--check"]}},"output":{"default":"Tools/compiled/metadata-execution-contract.json","type":"string","x-cambium-cli":{"action":"store","option_strings":["--output"]}},"root":{"default":".","type":"string","x-cambium-cli":{"action":"store","option_strings":["--root"]}}},"type":"object"},"name":"metadata_execution_contract"},{"description":"Migrate existing runtime identity to Standards state","inputSchema":{"additionalProperties":false,"properties":{"apply":{"default":false,"description":"write state; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root"],"type":"object"},"name":"migrate_standards_state"},{"description":"Read-only onboarding status projector: derives the adoption/onboarding state of one root and exactly one next_action token; writes nothing and owns no ledger","inputSchema":{"additionalProperties":false,"properties":{"json":{"default":false,"description":"emit the status view as one deterministic JSON object instead of the human summary","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"profile_id":{"description":"target one candidate profile directory name under profiles/ for the full profile-load evaluation (defaults to the single candidate when exactly one exists)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--profile-id"]}},"root":{"description":"the adopting repository root to project","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root"],"type":"object"},"name":"profile_onboarding_status"},{"description":"Project metadata-contract owner state onto page frontmatter","inputSchema":{"additionalProperties":false,"properties":{"apply":{"default":false,"description":"take the runtime writer lock and publish the projection; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"page":{"description":"limit to these repository-relative pages (repeatable); default is every Ledger page","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--page"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root"],"type":"object"},"name":"project_page_state"},{"description":"Record one snapshot-bound Batch Review judgment","inputSchema":{"additionalProperties":false,"properties":{"apply":{"default":false,"description":"append the evidence; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"batch":{"description":"exact open Queue batch ID","type":"string","x-cambium-cli":{"action":"store","option_strings":["--batch"]}},"json":{"default":false,"description":"write the applied receipt as one JSON array","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"judgment_item":{"description":"registered Batch Review Requirement Judgment Item ID","type":"string","x-cambium-cli":{"action":"store","option_strings":["--judgment-item"]}},"receipts":{"default":".cambium/receipts/batch-judgments.jsonl","description":"receipt JSONL path under .cambium/receipts","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"reviewer_role":{"description":"declared pass-authority Profile role ID","type":"string","x-cambium-cli":{"action":"store","option_strings":["--reviewer-role"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"statement":{"description":"bounded judgment statement (the concrete verdict, not \"reviewed\")","type":"string","x-cambium-cli":{"action":"store","option_strings":["--statement"]}},"target":{"description":"manifest page path, or the batch ID for a batch-selector requirement","type":"string","x-cambium-cli":{"action":"store","option_strings":["--target"]}}},"required":["root","batch","judgment_item","target","reviewer_role","statement"],"type":"object"},"name":"record_batch_judgment"},{"description":"Record a Profile-authorized Corpus Planning semantic decision as machine-readable JSONL","inputSchema":{"additionalProperties":false,"properties":{"actor_role":{"description":"declared authority Role ID; required with --apply and must equal the Profile/plan binding","type":"string","x-cambium-cli":{"action":"store","option_strings":["--actor-role"]}},"apply":{"default":false,"description":"append the structural and semantic receipts; default is dry-run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"plan":{"description":"closed restricted-YAML acceptance decision plan; one .yaml file directly under .cambium/deltas/corpus-plan-acceptances/","type":"string","x-cambium-cli":{"action":"store","option_strings":["--plan"]}},"receipts":{"default":".cambium/receipts/corpus-plan-acceptance.jsonl","description":"repository-relative JSONL path the receipts are appended to (default: .cambium/receipts/corpus-plan-acceptance.jsonl)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root","plan"],"type":"object"},"name":"record_corpus_acceptance"},{"description":"Record snapshot-bound manual Extension Gate evidence","inputSchema":{"additionalProperties":false,"properties":{"actor_role":{"description":"declared pass-authority Profile role ID","type":"string","x-cambium-cli":{"action":"store","option_strings":["--actor-role"]}},"apply":{"default":false,"description":"append the evidence; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"gate_id":{"description":"exact typed Profile Extension Gate ID","type":"string","x-cambium-cli":{"action":"store","option_strings":["--gate-id"]}},"json":{"default":false,"description":"write the applied receipt as one JSON array","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"page":{"description":"repository-relative Markdown target","type":"string","x-cambium-cli":{"action":"store","option_strings":["--page"]}},"receipts":{"default":".cambium/receipts/gate-attestations.jsonl","description":"receipt JSONL path under .cambium/receipts","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"statement":{"description":"bounded manual attestation statement","type":"string","x-cambium-cli":{"action":"store","option_strings":["--statement"]}},"value":{"description":"requested registered completion value","type":"string","x-cambium-cli":{"action":"store","option_strings":["--value"]}}},"required":["root","gate_id","page","value","actor_role","statement"],"type":"object"},"name":"record_gate_attestation"},{"description":"Run a registered scan and record a deterministic Extension Gate result","inputSchema":{"additionalProperties":false,"properties":{"apply":{"default":false,"description":"run and append the bound Gate result","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"gate_id":{"description":"exact deterministic typed Profile Gate ID","type":"string","x-cambium-cli":{"action":"store","option_strings":["--gate-id"]}},"json":{"default":false,"description":"write the applied receipt as one JSON array","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"page":{"description":"repository-relative Markdown target","type":"string","x-cambium-cli":{"action":"store","option_strings":["--page"]}},"receipts":{"default":".cambium/receipts/gate-results.jsonl","description":"receipt JSONL path under .cambium/receipts","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root","gate_id","page"],"type":"object"},"name":"record_gate_result"},{"description":"Register one approved current-protocol Amendment","inputSchema":{"additionalProperties":false,"properties":{"actor_role":{"default":"worker","description":"declared caller role; only integrator may register or withdraw an Amendment","enum":["integrator","worker"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--actor-role"]}},"amendment_id":{"description":"id for a queue-replan registration; cross-Ledger operations derive it from --plan instead","type":"string","x-cambium-cli":{"action":"store","option_strings":["--amendment-id"]}},"apply":{"default":false,"description":"write the registration; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"approval_reference":{"description":"explicit-user approval reference; required when --decision-mode is explicit-user","type":"string","x-cambium-cli":{"action":"store","option_strings":["--approval-reference"]}},"coverage_proposal":{"description":".cambium/deltas/replans/*.coverage.yaml proposal","type":"string","x-cambium-cli":{"action":"store","option_strings":["--coverage-proposal"]}},"date":{"description":"YYYY-MM-DD; must equal the UTC registration date","type":"string","x-cambium-cli":{"action":"store","option_strings":["--date"]}},"decision_mode":{"default":"auto","description":"derive delegated authority by default; explicit-user requires --approval-reference","enum":["auto","contract-delegated","explicit-user"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--decision-mode"]}},"expected_coverage_sha256":{"description":"compare-and-swap guard: sha256: the caller read from the current Coverage; registration is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-coverage-sha256"]}},"expected_progress_sha256":{"description":"compare-and-swap guard: sha256: the caller read from the current Progress; registration is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-progress-sha256"]}},"expected_queue_sha256":{"description":"compare-and-swap guard: sha256: the caller read from the current Queue; registration is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-queue-sha256"]}},"json":{"default":false,"description":"write the published receipt to stdout as one canonical JSON array and move the human report to stderr; a dry run publishes no receipt and so writes nothing there; receipt writing and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"operation":{"description":"Amendment operation being registered","enum":["cancel-batch","gap-routing-reconciliation","property-state-migration","queue-replan","scope-replan"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--operation"]}},"plan":{"description":".cambium/deltas/amendments/*.yaml plan","type":"string","x-cambium-cli":{"action":"store","option_strings":["--plan"]}},"reason":{"description":"nonempty withdrawal reason recorded on the row and its receipt","type":"string","x-cambium-cli":{"action":"store","option_strings":["--reason"]}},"receipts":{"default":".cambium/receipts/amendments.jsonl","description":"receipt JSONL path under .cambium/receipts","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"summary":{"description":"non-empty one-line rationale recorded on the row","type":"string","x-cambium-cli":{"action":"store","option_strings":["--summary"]}},"withdraw":{"description":"retire the named pending registration instead of registering one (K13/06 withdrawal); requires --reason","type":"string","x-cambium-cli":{"action":"store","option_strings":["--withdraw"]}}},"required":["root","expected_coverage_sha256","expected_progress_sha256","expected_queue_sha256"],"type":"object"},"name":"register_amendment"},{"description":"Render the K08/09 boundary projection blocks from page `boundary` frontmatter.","inputSchema":{"additionalProperties":false,"properties":{"apply":{"default":false,"description":"rewrite the stale owned blocks atomically; omit to only report what would render","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"check":{"default":false,"description":"exit 2 when any owned block is stale; the default report never fails on staleness","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--check"]}},"contract":{"default":"Tools/page_contract.yaml","description":"compiled contract path (default Tools/page_contract.yaml)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--contract"]}},"profile":{"description":"profile directory override; default is the selected_profile_manifest of the active Standards state","type":"string","x-cambium-cli":{"action":"store","option_strings":["--profile"]}},"scope":{"description":"only scan .md files under this subpath","type":"string","x-cambium-cli":{"action":"store","option_strings":["--scope"]}},"vault_root":{"description":"vault root directory","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["vault_root"],"type":"object"},"name":"render_boundary_projection"},{"description":"Render the Cambium MCP server's registration and corpus binding into the configuration file each supported host reads.","inputSchema":{"additionalProperties":false,"properties":{"check":{"default":false,"description":"re-render and compare against the existing products; exit 0 when byte-identical, 2 when one is stale or hand-edited","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--check"]}},"distribution_root":{"description":"absolute path of the Cambium checkout the server is launched from; substituted for (default: leave the placeholder)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--distribution-root"]}},"host":{"description":"render only this host's product (default: every host)","enum":["claude-code","codex","dsh-env","dsh-profile-patch","kimi-code"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--host"]}},"output_dir":{"description":"directory to write or verify the products in (default: /Tools/compiled/host-configs)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--output-dir"]}},"projection":{"description":"compiled interface projection to bind to (default: /Tools/compiled/mcp-tools.json)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--projection"]}},"root":{"description":"repository root holding the compiled interface projection","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"sources":{"default":false,"description":"print the declaration source of every rendered field and exit without reading or writing any product","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--sources"]}},"workspace_root":{"description":"absolute path of the corpus repository this registration is bound to; substituted for (default: leave the placeholder)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--workspace-root"]}}},"required":["root"],"type":"object"},"name":"render_host_configs","x-cambium-mutually-exclusive":[{"dests":["check","sources"],"required":false}]},{"description":"Project the compiled CLI invocation contract into the agent-facing interface forms registered in this tool.","inputSchema":{"additionalProperties":false,"properties":{"check":{"default":false,"description":"recompute and compare against the existing artifacts; exit 0 when byte-identical, 2 when one is stale or hand-edited","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--check"]}},"contract":{"description":"compiled CLI contract to project (default: /Tools/compiled/cli-contract.yaml)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--contract"]}},"form":{"description":"project only this form (default: every registered form)","enum":["mcp"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--form"]}},"output":{"description":"artifact path to write or verify; requires --form, because one path cannot hold two forms","type":"string","x-cambium-cli":{"action":"store","option_strings":["--output"]}},"root":{"description":"repository root holding the compiled CLI contract","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"sources":{"default":false,"description":"print the declaration source of every projected field and exit without reading or writing any artifact","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--sources"]}}},"required":["root"],"type":"object"},"name":"render_interface_projection","x-cambium-mutually-exclusive":[{"dests":["check","sources"],"required":false}]},{"description":"Render Required Queue human report","inputSchema":{"additionalProperties":false,"properties":{"check":{"default":false,"description":"compare existing report instead of writing","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--check"]}},"output":{"default":".cambium/reports/required_queue.md","description":"repository-relative report path","type":"string","x-cambium-cli":{"action":"store","option_strings":["--output"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"stdout":{"default":false,"description":"print the report to stdout and write nothing","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--stdout"]}}},"required":["root"],"type":"object"},"name":"render_queue"},{"description":"Render derived Structure Registry coverage projections (K01/05 derived roles).","inputSchema":{"additionalProperties":false,"properties":{"apply":{"default":false,"description":"rewrite the stale owned blocks atomically; omit to only report what would render","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"check":{"default":false,"description":"exit 2 when any owned block is stale or missing; the default report never fails on staleness","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--check"]}},"profile":{"description":"profile directory override; default is the selected_profile_manifest of the active Standards state","type":"string","x-cambium-cli":{"action":"store","option_strings":["--profile"]}},"vault_root":{"description":"vault root directory","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["vault_root"],"type":"object"},"name":"render_structure_projection"},{"description":"Run the adopter verification set derived from the K00/12 Stable Gate ID Registry (deterministic, not-batch-scoped producers).","inputSchema":{"additionalProperties":false,"properties":{"exclude":{"default":[],"description":"path prefix passed through to scanners that accept it (repeatable)","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--exclude"]}},"list":{"default":false,"description":"print the derived set and each command without running anything","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--list"]}},"profile":{"description":"profile directory override; default is the live runtime's selected_profile_manifest","type":"string","x-cambium-cli":{"action":"store","option_strings":["--profile"]}},"root":{"description":"repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root"],"type":"object"},"name":"run_gates"},{"description":"Scaffold a candidate profile from profiles/_template using the exact-copy whitelist in profiles/template-files.yaml","inputSchema":{"additionalProperties":false,"properties":{"apply":{"default":false,"description":"create the candidate; without it the plan is reported and nothing is written","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"json":{"default":false,"description":"emit the plan/result as one JSON document","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"profile_id":{"description":"candidate profile slug matching [a-z0-9][a-z0-9_-]* (equals the directory name)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--profile-id"]}},"root":{"description":"repository root containing profiles/","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}}},"required":["root","profile_id"],"type":"object"},"name":"scaffold_profile"},{"description":"Seal verified frozen receipt history (K12/07). --apply is a maintenance-window operation: run it only with no other Cambium or adopter writer, checker or receipt appender active against this repository.","inputSchema":{"additionalProperties":false,"properties":{"apply":{"default":false,"description":"write the seal, or with --reconcile finish the interrupted one; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"json":{"default":false,"description":"write the receipts this run produced to stdout as one canonical JSON array and move the human-readable report to stderr; receipts written, verdicts, and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"receipts":{"default":".cambium/receipts/seal-receipts.jsonl","description":"repository-relative JSONL path for this tool's own seal receipts, which never seal (default: .cambium/receipts/seal-receipts.jsonl)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"reconcile":{"default":false,"description":"finish an interrupted seal over the publication paths this tool implements; other interruptions fail closed and are resolved by the runbook in Tools/README.md","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--reconcile"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"verify":{"default":false,"description":"re-prove every sealed segment, projection and seal-receipt binding, then exit","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--verify"]}}},"required":["root"],"type":"object"},"name":"seal_receipts"},{"description":"Stamp kernel Runtime Cards","inputSchema":{"additionalProperties":false,"properties":{"acknowledge_compiled":{"default":false,"description":"after semantic regeneration/review, advance compiled_source_hash to the exact current source digest","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--acknowledge-compiled"]}},"cards_dir":{"default":"kernel/Cards","description":"Card directory relative to (default: kernel/Cards)","type":"string","x-cambium-cli":{"action":"store","option_strings":["--cards-dir"]}},"check":{"default":false,"description":"verify only; never write","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--check"]}},"root":{"description":"repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"set_version":{"description":"also set every card's compiled_from value","type":"string","x-cambium-cli":{"action":"store","option_strings":["--set-version"]}}},"required":["root"],"type":"object"},"name":"stamp_cards"},{"description":"Apply one Required Queue transition","inputSchema":{"additionalProperties":false,"properties":{"actor_role":{"default":"worker","description":"declared caller role; Queue transition planning and apply both require integrator","enum":["integrator","worker"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--actor-role"]}},"apply":{"default":false,"description":"write the transition; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"at":{"description":"transition timestamp; defaults to now in UTC","type":"string","x-cambium-cli":{"action":"store","option_strings":["--at"]}},"batch_receipt":{"default":[],"description":"batch-review gate receipt id for open -> merge-ready; exactly one is accepted","items":{"type":"string"},"type":"array","x-cambium-cli":{"action":"append","option_strings":["--batch-receipt"]}},"close_gate_receipt":{"description":"check_batch_close receipt id required by the closed transition","type":"string","x-cambium-cli":{"action":"store","option_strings":["--close-gate-receipt"]}},"confirmation_receipt":{"description":"confirmation receipt id required by queued -> open when the batch is confirmation_required","type":"string","x-cambium-cli":{"action":"store","option_strings":["--confirmation-receipt"]}},"delta_apply_receipt":{"description":"apply_delta receipt id required by the closed transition and by merge-ready -> open reopen","type":"string","x-cambium-cli":{"action":"store","option_strings":["--delta-apply-receipt"]}},"delta_path":{"description":"repository-relative .cambium/deltas/.yaml batch delta required by open -> merge-ready","type":"string","x-cambium-cli":{"action":"store","option_strings":["--delta-path"]}},"expected_sha256":{"description":"compare-and-swap guard: sha256: the caller read from the current Queue; the write is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-sha256"]}},"expected_state_revision":{"description":"compare-and-swap guard: the state_revision the caller read from the current Queue; the write is refused when the live value differs","type":"integer","x-cambium-cli":{"action":"store","option_strings":["--expected-state-revision"],"type":"int"}},"gate_receipt":{"description":"gate receipt id: activation gate for queued -> open, Queue consistency gate for closed and for clearing revalidation-required","type":"string","x-cambium-cli":{"action":"store","option_strings":["--gate-receipt"]}},"hold_state":{"description":"target hold state; exclusive with --transition","enum":["blocked","confirmation-required","none","paused","revalidation-required"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--hold-state"]}},"id":{"description":"Required Queue batch id to transition","type":"string","x-cambium-cli":{"action":"store","option_strings":["--id"]}},"json":{"default":false,"description":"write the applied transition receipt(s) to stdout as one canonical JSON array and move the human report to stderr; a dry run publishes no receipt and so writes nothing there; receipt writing and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"reason":{"description":"non-empty rationale required by merge-ready -> open and by any non-none hold","type":"string","x-cambium-cli":{"action":"store","option_strings":["--reason"]}},"receipts":{"default":".cambium/receipts/queue-transitions.jsonl","description":"receipt JSONL path under .cambium/receipts","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"standards_revalidation_receipt":{"description":"check_queue --require-revalidation receipt discharging an outstanding Standards revalidation; queued -> open or revalidation-required -> none only","type":"string","x-cambium-cli":{"action":"store","option_strings":["--standards-revalidation-receipt"]}},"transition":{"description":"target lifecycle state; exclusive with --hold-state","enum":["closed","merge-ready","open"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--transition"]}}},"required":["root","id"],"type":"object"},"name":"update_queue","x-cambium-mutually-exclusive":[{"dests":["transition","hold_state"],"required":true}]},{"description":"Apply one canonical task-state transition","inputSchema":{"additionalProperties":false,"properties":{"actor_role":{"default":"worker","description":"declared caller role; only integrator may apply a task-state write","enum":["integrator","worker"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--actor-role"]}},"apply":{"default":false,"description":"write the transition; omit for a dry run","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--apply"]}},"at":{"description":"transition timestamp; defaults to now in UTC","type":"string","x-cambium-cli":{"action":"store","option_strings":["--at"]}},"checkpoint_summary":{"description":"non-empty reason required by paused, blocked and cancelled, and when leaving completion-candidate for anything but complete","type":"string","x-cambium-cli":{"action":"store","option_strings":["--checkpoint-summary"]}},"expected_progress_sha256":{"description":"compare-and-swap guard: sha256: the caller read from the current Progress; --apply is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-progress-sha256"]}},"expected_queue_sha256":{"description":"compare-and-swap guard: sha256: the caller read from the current Queue; --apply is refused when the live bytes differ","type":"string","x-cambium-cli":{"action":"store","option_strings":["--expected-queue-sha256"]}},"json":{"default":false,"description":"write the applied transition receipt to stdout as one canonical JSON array and move the human report to stderr; a dry run publishes no receipt and so writes nothing there; receipt writing and exit codes are unchanged","type":"boolean","x-cambium-cli":{"action":"store_true","nargs":0,"option_strings":["--json"]}},"maintenance_completion_receipt":{"description":"maintenance completion gate receipt id required by complete under maintenance completion_semantics","type":"string","x-cambium-cli":{"action":"store","option_strings":["--maintenance-completion-receipt"]}},"queue_check_receipt":{"description":"Queue completion gate receipt id required by the completion-candidate transition","type":"string","x-cambium-cli":{"action":"store","option_strings":["--queue-check-receipt"]}},"receipts":{"default":".cambium/receipts/task-transitions.jsonl","description":"receipt JSONL path under .cambium/receipts","type":"string","x-cambium-cli":{"action":"store","option_strings":["--receipts"]}},"root":{"description":"adopting repository root","type":"string","x-cambium-cli":{"action":"store","option_strings":[]}},"terminal_proof_receipt":{"description":"Terminal Proof receipt id required by complete under build completion_semantics","type":"string","x-cambium-cli":{"action":"store","option_strings":["--terminal-proof-receipt"]}},"transition":{"description":"target task state in the Progress Ledger","enum":["active","blocked","cancelled","complete","completion-candidate","paused"],"type":"string","x-cambium-cli":{"action":"store","option_strings":["--transition"]}}},"required":["root","transition"],"type":"object"},"name":"update_task"}],"transports":["stdio","streamable-http"]} diff --git a/Tools/compiled/metadata-execution-contract.json b/Tools/compiled/metadata-execution-contract.json index 89a40ce..b9d501c 100644 --- a/Tools/compiled/metadata-execution-contract.json +++ b/Tools/compiled/metadata-execution-contract.json @@ -1 +1 @@ -{"artifact":"metadata-execution-contract","capability_implementations":[{"path":"Tools/apply_amendment.py","sha256":"sha256:d541f4de5caa0b55c68817c406c820de856a675b030a716eaab10e47f3fad4d8"},{"path":"Tools/apply_delta.py","sha256":"sha256:3749db54ecc0d713c657eb32d1fe52011d65eb64e3a4c4938430344bcfe957d2"},{"path":"Tools/apply_metadata_transition.py","sha256":"sha256:71d687f1a2afb4006dc19b90bcb27e886ca46ce6e577d294802925523e7ae0cd"},{"path":"Tools/apply_task_plan.py","sha256":"sha256:99b47d8dfc2366098ebb3f7d285dec2bc84c0c834c39efea3b846a06b0a36f5d"},{"path":"Tools/card_activation.py","sha256":"sha256:a5106bf4db90eccfd078ffbd436846c753de5c1a01eb4fb3842ed934b5cecf97"},{"path":"Tools/check_batch_close.py","sha256":"sha256:bc2326400a6dde7863fd1384382475ea98fa78592cd0b67d84e3c817b5bf4d16"},{"path":"Tools/check_queue.py","sha256":"sha256:08012b152ee7d993b45bbad09e1c28fff223425590551bccd632c7373e1c5f08"},{"path":"Tools/mcp_server.py","sha256":"sha256:9242ac64abe3baf24d8e6e9586c9bf8bd08ac708e802ee6bd12de00a267db270"},{"path":"Tools/metadata_gate_runtime.py","sha256":"sha256:da4aebb718dcbb37f31116c25e6cee3e374fa1e0a3edb87ab96eac6106ab22a3"},{"path":"Tools/metadata_property_state.py","sha256":"sha256:9fa07bf32b366a0bc1797006485b78f4d614b60c97f8b05c0e3dfa1c16ba2d43"},{"path":"Tools/project_page_state.py","sha256":"sha256:77c500cfbb0435f78908f8ab680f3fa4858c2c4d54cb90ce53e5870ddcfa3de4"},{"path":"Tools/record_gate_attestation.py","sha256":"sha256:73e8ad584a4c8e77f3510c09666496c2c7f2a2dd4b24b8394d6f41f9b9a81e3e"},{"path":"Tools/record_gate_result.py","sha256":"sha256:6111c6ff8bd5bf28fdb659cc891db318c314bd878cc9b75d86c6e2b9a97ed8d0"},{"path":"Tools/register_amendment.py","sha256":"sha256:917e0df2c028908b752e58894b61237807778e169e8e452d96d70458d0317fdc"},{"path":"Tools/update_queue.py","sha256":"sha256:3680ae8592ea307542de1b86bb808cc99e1153b1b244c8aeed8680bf0f7a77ae"}],"contract_fingerprint":"sha256:cedd864b623b51237341f3ee115599c4bc19eced78b45847d8fbe094b20a35bf","contract_id":"kernel-metadata-execution","field_rules":[{"authority_class":"ledger-projection","canonical_owner":"coverage-ledger.pages[].authoring_status","evidence_requirement":null,"field":"authoring_status","invalidation_rule":"owner-value-change-v1","reconcile_policy":"existing-copy-exact-or-remove-v1","source_adapter":"coverage-row-value-v1","transition":"owner-to-page-projection","value_shape":"scalar-string-or-null","write_timing":"batch-close-after-owner-update","writer_capability":"project-page-state-v2"},{"authority_class":"ledger-projection","canonical_owner":"coverage-ledger.pages[].coverage_disposition","evidence_requirement":null,"field":"coverage_disposition","invalidation_rule":"owner-value-change-v1","reconcile_policy":"existing-copy-exact-or-remove-v1","source_adapter":"coverage-row-value-v1","transition":"owner-to-page-projection","value_shape":"scalar-string-or-null","write_timing":"batch-close-after-owner-update","writer_capability":"project-page-state-v2"},{"authority_class":"ledger-projection","canonical_owner":"coverage-ledger.pages[].property_state.last_content_modified","evidence_requirement":null,"field":"last_content_modified","invalidation_rule":"owner-property-state-change-v1","reconcile_policy":"upsert-exact-or-remove-v1","source_adapter":"coverage-property-state-v1","transition":"owner-to-page-projection","value_shape":"date","write_timing":"after-owner-state-transition","writer_capability":"project-page-state-v2"},{"authority_class":"evidence-projection","canonical_owner":"coverage-ledger.pages[].property_state.last_content_modified","evidence_requirement":{"change_scope":"semantic-content","content_binding":"after-page-content-sha256","excluded_change_classes":["projection-only","tool-controlled-metadata-only"],"invalidation":"current-content-fingerprint","protocol":"semantic-content-change-v1","result":"pass","target_binding":"exact-page-path","value_selector":"accepted-at-utc-date"},"field":"last_content_modified","invalidation_rule":"superseded-by-later-semantic-content-change-v1","reconcile_policy":"upsert-owner-property-state-v1","source_adapter":"content-change-event-v1","transition":"semantic-content-change","value_shape":"date","write_timing":"semantic-content-acceptance","writer_capability":"metadata-transition-integrator-v1"},{"authority_class":"ledger-projection","canonical_owner":"coverage-ledger.pages[].property_state.last_reviewed","evidence_requirement":null,"field":"last_reviewed","invalidation_rule":"semantic-content-change-tombstone-v1","reconcile_policy":"upsert-exact-or-remove-v1","source_adapter":"coverage-property-state-v1","transition":"owner-to-page-projection","value_shape":"date","write_timing":"after-owner-state-transition","writer_capability":"project-page-state-v2"},{"authority_class":"evidence-projection","canonical_owner":"coverage-ledger.pages[].property_state.last_reviewed","evidence_requirement":{"change_scope":"reviewed-content","content_binding":"exact-page-content-sha256","excluded_change_classes":[],"invalidation":"invalidated-by-null","protocol":"current-page-review-v1","result":"pass","target_binding":"exact-page-path","value_selector":"checked-at-utc-date"},"field":"last_reviewed","invalidation_rule":"superseded-by-review-or-semantic-content-change-v1","reconcile_policy":"upsert-owner-property-state-v1","source_adapter":"current-review-receipt-value-v1","transition":"review-completed","value_shape":"date","write_timing":"review-evidence-acceptance","writer_capability":"metadata-transition-integrator-v1"},{"authority_class":"evidence-projection","canonical_owner":"coverage-ledger.pages[].property_state.last_reviewed","evidence_requirement":{"change_scope":"semantic-content","content_binding":"after-page-content-sha256","excluded_change_classes":["projection-only","tool-controlled-metadata-only"],"invalidation":"current-content-fingerprint","protocol":"semantic-content-change-v1","result":"pass","target_binding":"exact-page-path","value_selector":"tombstone-null"},"field":"last_reviewed","invalidation_rule":"semantic-content-change-tombstone-v1","reconcile_policy":"tombstone-owner-property-state-v1","source_adapter":"content-change-event-v1","transition":"semantic-content-change","value_shape":"date","write_timing":"semantic-content-acceptance","writer_capability":"metadata-transition-integrator-v1"},{"authority_class":"ledger-projection","canonical_owner":"coverage-ledger.pages[].next_batch","evidence_requirement":null,"field":"next_batch","invalidation_rule":"owner-value-change-v1","reconcile_policy":"existing-copy-exact-or-remove-v1","source_adapter":"coverage-row-value-v1","transition":"owner-to-page-projection","value_shape":"scalar-string-or-null","write_timing":"batch-close-after-owner-update","writer_capability":"project-page-state-v2"}],"operation_capabilities":[{"capability_id":"metadata-transition-integrator-v1","capability_version":"1.0.0","implementation_paths":["Tools/apply_metadata_transition.py","Tools/metadata_property_state.py"],"kind":"consumer","operations":[{"operation":"typed-field-metadata-transition"}]},{"capability_id":"card-context-delivery-v1","capability_version":"1.0.2","implementation_paths":["Tools/card_activation.py","Tools/check_queue.py","Tools/mcp_server.py","Tools/update_queue.py"],"kind":"producer","operations":[]},{"capability_id":"manual-attestation-v1","capability_version":"1.0.0","implementation_paths":["Tools/record_gate_attestation.py"],"kind":"producer","operations":[]},{"capability_id":"registered-scan-v1","capability_version":"1.0.0","implementation_paths":["Tools/record_gate_result.py"],"kind":"producer","operations":[]},{"capability_id":"deterministic-gate-result-v1","capability_version":"1.0.0","implementation_paths":["Tools/metadata_gate_runtime.py"],"kind":"receipt-schema","operations":[]},{"capability_id":"manual-gate-attestation-v1","capability_version":"1.0.0","implementation_paths":["Tools/metadata_gate_runtime.py"],"kind":"receipt-schema","operations":[]},{"capability_id":"legacy-property-adoption-v1","capability_version":"1.0.0","implementation_paths":["Tools/apply_amendment.py","Tools/apply_task_plan.py","Tools/metadata_property_state.py","Tools/project_page_state.py","Tools/register_amendment.py"],"kind":"writer","operations":[{"operation":"legacy-property-adoption-v1"}]},{"capability_id":"metadata-transition-integrator-v1","capability_version":"1.0.0","implementation_paths":["Tools/apply_delta.py","Tools/apply_metadata_transition.py","Tools/check_batch_close.py","Tools/metadata_property_state.py","Tools/update_queue.py"],"kind":"writer","operations":[{"field":"last_content_modified","source_adapter":"content-change-event-v1","transition":"semantic-content-change"},{"field":"last_reviewed","source_adapter":"content-change-event-v1","transition":"semantic-content-change"},{"field":"last_reviewed","source_adapter":"current-review-receipt-value-v1","transition":"review-completed"}]},{"capability_id":"project-page-state-v2","capability_version":"2.0.0","implementation_paths":["Tools/metadata_property_state.py","Tools/project_page_state.py"],"kind":"writer","operations":[{"field":"authoring_status","source_adapter":"coverage-row-value-v1","transition":"owner-to-page-projection"},{"field":"coverage_disposition","source_adapter":"coverage-row-value-v1","transition":"owner-to-page-projection"},{"field":"last_content_modified","source_adapter":"coverage-property-state-v1","transition":"owner-to-page-projection"},{"field":"last_reviewed","source_adapter":"coverage-property-state-v1","transition":"owner-to-page-projection"},{"field":"next_batch","source_adapter":"coverage-row-value-v1","transition":"owner-to-page-projection"},{"operation":"profile-extension-enum-owner-projection-v1"}]}],"schema_version":1,"source_adapters":[{"adapter_id":"content-change-event-v1","authority_class":"evidence-projection","evidence_required":true,"owner_record_keys":[]},{"adapter_id":"coverage-property-state-v1","authority_class":"ledger-projection","evidence_required":false,"owner_record_keys":["content_fingerprint","evidence_receipt","value"]},{"adapter_id":"coverage-row-value-v1","authority_class":"ledger-projection","evidence_required":false,"owner_record_keys":[]},{"adapter_id":"current-review-receipt-value-v1","authority_class":"evidence-projection","evidence_required":true,"owner_record_keys":[]}],"temporal_order":["first_seen","last_content_modified","last_reviewed","last_verified"],"writer_capabilities":[{"capability_id":"legacy-property-adoption-v1","capability_version":"1.0.0","implementation_paths":["Tools/apply_amendment.py","Tools/apply_task_plan.py","Tools/metadata_property_state.py","Tools/project_page_state.py","Tools/register_amendment.py"],"kind":"writer","operations":[{"operation":"legacy-property-adoption-v1"}]},{"capability_id":"metadata-transition-integrator-v1","capability_version":"1.0.0","implementation_paths":["Tools/apply_delta.py","Tools/apply_metadata_transition.py","Tools/check_batch_close.py","Tools/metadata_property_state.py","Tools/update_queue.py"],"kind":"writer","operations":[{"field":"last_content_modified","source_adapter":"content-change-event-v1","transition":"semantic-content-change"},{"field":"last_reviewed","source_adapter":"content-change-event-v1","transition":"semantic-content-change"},{"field":"last_reviewed","source_adapter":"current-review-receipt-value-v1","transition":"review-completed"}]},{"capability_id":"project-page-state-v2","capability_version":"2.0.0","implementation_paths":["Tools/metadata_property_state.py","Tools/project_page_state.py"],"kind":"writer","operations":[{"field":"authoring_status","source_adapter":"coverage-row-value-v1","transition":"owner-to-page-projection"},{"field":"coverage_disposition","source_adapter":"coverage-row-value-v1","transition":"owner-to-page-projection"},{"field":"last_content_modified","source_adapter":"coverage-property-state-v1","transition":"owner-to-page-projection"},{"field":"last_reviewed","source_adapter":"coverage-property-state-v1","transition":"owner-to-page-projection"},{"field":"next_batch","source_adapter":"coverage-row-value-v1","transition":"owner-to-page-projection"},{"operation":"profile-extension-enum-owner-projection-v1"}]}]} +{"artifact":"metadata-execution-contract","capability_implementations":[{"path":"Tools/apply_amendment.py","sha256":"sha256:d541f4de5caa0b55c68817c406c820de856a675b030a716eaab10e47f3fad4d8"},{"path":"Tools/apply_delta.py","sha256":"sha256:3749db54ecc0d713c657eb32d1fe52011d65eb64e3a4c4938430344bcfe957d2"},{"path":"Tools/apply_metadata_transition.py","sha256":"sha256:71d687f1a2afb4006dc19b90bcb27e886ca46ce6e577d294802925523e7ae0cd"},{"path":"Tools/apply_task_plan.py","sha256":"sha256:99b47d8dfc2366098ebb3f7d285dec2bc84c0c834c39efea3b846a06b0a36f5d"},{"path":"Tools/card_activation.py","sha256":"sha256:a5106bf4db90eccfd078ffbd436846c753de5c1a01eb4fb3842ed934b5cecf97"},{"path":"Tools/check_batch_close.py","sha256":"sha256:bc2326400a6dde7863fd1384382475ea98fa78592cd0b67d84e3c817b5bf4d16"},{"path":"Tools/check_queue.py","sha256":"sha256:1ecaec9019b013358f2afda142585d3ca48360eebf90633da7b6d149ebc5c523"},{"path":"Tools/mcp_server.py","sha256":"sha256:9242ac64abe3baf24d8e6e9586c9bf8bd08ac708e802ee6bd12de00a267db270"},{"path":"Tools/metadata_gate_runtime.py","sha256":"sha256:da4aebb718dcbb37f31116c25e6cee3e374fa1e0a3edb87ab96eac6106ab22a3"},{"path":"Tools/metadata_property_state.py","sha256":"sha256:9fa07bf32b366a0bc1797006485b78f4d614b60c97f8b05c0e3dfa1c16ba2d43"},{"path":"Tools/project_page_state.py","sha256":"sha256:77c500cfbb0435f78908f8ab680f3fa4858c2c4d54cb90ce53e5870ddcfa3de4"},{"path":"Tools/record_gate_attestation.py","sha256":"sha256:73e8ad584a4c8e77f3510c09666496c2c7f2a2dd4b24b8394d6f41f9b9a81e3e"},{"path":"Tools/record_gate_result.py","sha256":"sha256:6111c6ff8bd5bf28fdb659cc891db318c314bd878cc9b75d86c6e2b9a97ed8d0"},{"path":"Tools/register_amendment.py","sha256":"sha256:917e0df2c028908b752e58894b61237807778e169e8e452d96d70458d0317fdc"},{"path":"Tools/update_queue.py","sha256":"sha256:3680ae8592ea307542de1b86bb808cc99e1153b1b244c8aeed8680bf0f7a77ae"}],"contract_fingerprint":"sha256:0be1a3e5168299090c72f25f39eb57bacf855a1fb3cd5491e2380aaadccedba4","contract_id":"kernel-metadata-execution","field_rules":[{"authority_class":"ledger-projection","canonical_owner":"coverage-ledger.pages[].authoring_status","evidence_requirement":null,"field":"authoring_status","invalidation_rule":"owner-value-change-v1","reconcile_policy":"existing-copy-exact-or-remove-v1","source_adapter":"coverage-row-value-v1","transition":"owner-to-page-projection","value_shape":"scalar-string-or-null","write_timing":"batch-close-after-owner-update","writer_capability":"project-page-state-v2"},{"authority_class":"ledger-projection","canonical_owner":"coverage-ledger.pages[].coverage_disposition","evidence_requirement":null,"field":"coverage_disposition","invalidation_rule":"owner-value-change-v1","reconcile_policy":"existing-copy-exact-or-remove-v1","source_adapter":"coverage-row-value-v1","transition":"owner-to-page-projection","value_shape":"scalar-string-or-null","write_timing":"batch-close-after-owner-update","writer_capability":"project-page-state-v2"},{"authority_class":"ledger-projection","canonical_owner":"coverage-ledger.pages[].property_state.last_content_modified","evidence_requirement":null,"field":"last_content_modified","invalidation_rule":"owner-property-state-change-v1","reconcile_policy":"upsert-exact-or-remove-v1","source_adapter":"coverage-property-state-v1","transition":"owner-to-page-projection","value_shape":"date","write_timing":"after-owner-state-transition","writer_capability":"project-page-state-v2"},{"authority_class":"evidence-projection","canonical_owner":"coverage-ledger.pages[].property_state.last_content_modified","evidence_requirement":{"change_scope":"semantic-content","content_binding":"after-page-content-sha256","excluded_change_classes":["projection-only","tool-controlled-metadata-only"],"invalidation":"current-content-fingerprint","protocol":"semantic-content-change-v1","result":"pass","target_binding":"exact-page-path","value_selector":"accepted-at-utc-date"},"field":"last_content_modified","invalidation_rule":"superseded-by-later-semantic-content-change-v1","reconcile_policy":"upsert-owner-property-state-v1","source_adapter":"content-change-event-v1","transition":"semantic-content-change","value_shape":"date","write_timing":"semantic-content-acceptance","writer_capability":"metadata-transition-integrator-v1"},{"authority_class":"ledger-projection","canonical_owner":"coverage-ledger.pages[].property_state.last_reviewed","evidence_requirement":null,"field":"last_reviewed","invalidation_rule":"semantic-content-change-tombstone-v1","reconcile_policy":"upsert-exact-or-remove-v1","source_adapter":"coverage-property-state-v1","transition":"owner-to-page-projection","value_shape":"date","write_timing":"after-owner-state-transition","writer_capability":"project-page-state-v2"},{"authority_class":"evidence-projection","canonical_owner":"coverage-ledger.pages[].property_state.last_reviewed","evidence_requirement":{"change_scope":"reviewed-content","content_binding":"exact-page-content-sha256","excluded_change_classes":[],"invalidation":"invalidated-by-null","protocol":"current-page-review-v1","result":"pass","target_binding":"exact-page-path","value_selector":"checked-at-utc-date"},"field":"last_reviewed","invalidation_rule":"superseded-by-review-or-semantic-content-change-v1","reconcile_policy":"upsert-owner-property-state-v1","source_adapter":"current-review-receipt-value-v1","transition":"review-completed","value_shape":"date","write_timing":"review-evidence-acceptance","writer_capability":"metadata-transition-integrator-v1"},{"authority_class":"evidence-projection","canonical_owner":"coverage-ledger.pages[].property_state.last_reviewed","evidence_requirement":{"change_scope":"semantic-content","content_binding":"after-page-content-sha256","excluded_change_classes":["projection-only","tool-controlled-metadata-only"],"invalidation":"current-content-fingerprint","protocol":"semantic-content-change-v1","result":"pass","target_binding":"exact-page-path","value_selector":"tombstone-null"},"field":"last_reviewed","invalidation_rule":"semantic-content-change-tombstone-v1","reconcile_policy":"tombstone-owner-property-state-v1","source_adapter":"content-change-event-v1","transition":"semantic-content-change","value_shape":"date","write_timing":"semantic-content-acceptance","writer_capability":"metadata-transition-integrator-v1"},{"authority_class":"ledger-projection","canonical_owner":"coverage-ledger.pages[].next_batch","evidence_requirement":null,"field":"next_batch","invalidation_rule":"owner-value-change-v1","reconcile_policy":"existing-copy-exact-or-remove-v1","source_adapter":"coverage-row-value-v1","transition":"owner-to-page-projection","value_shape":"scalar-string-or-null","write_timing":"batch-close-after-owner-update","writer_capability":"project-page-state-v2"}],"operation_capabilities":[{"capability_id":"metadata-transition-integrator-v1","capability_version":"1.0.0","implementation_paths":["Tools/apply_metadata_transition.py","Tools/metadata_property_state.py"],"kind":"consumer","operations":[{"operation":"typed-field-metadata-transition"}]},{"capability_id":"card-context-delivery-v1","capability_version":"1.0.2","implementation_paths":["Tools/card_activation.py","Tools/check_queue.py","Tools/mcp_server.py","Tools/update_queue.py"],"kind":"producer","operations":[]},{"capability_id":"manual-attestation-v1","capability_version":"1.0.0","implementation_paths":["Tools/record_gate_attestation.py"],"kind":"producer","operations":[]},{"capability_id":"registered-scan-v1","capability_version":"1.0.0","implementation_paths":["Tools/record_gate_result.py"],"kind":"producer","operations":[]},{"capability_id":"deterministic-gate-result-v1","capability_version":"1.0.0","implementation_paths":["Tools/metadata_gate_runtime.py"],"kind":"receipt-schema","operations":[]},{"capability_id":"manual-gate-attestation-v1","capability_version":"1.0.0","implementation_paths":["Tools/metadata_gate_runtime.py"],"kind":"receipt-schema","operations":[]},{"capability_id":"legacy-property-adoption-v1","capability_version":"1.0.0","implementation_paths":["Tools/apply_amendment.py","Tools/apply_task_plan.py","Tools/metadata_property_state.py","Tools/project_page_state.py","Tools/register_amendment.py"],"kind":"writer","operations":[{"operation":"legacy-property-adoption-v1"}]},{"capability_id":"metadata-transition-integrator-v1","capability_version":"1.0.0","implementation_paths":["Tools/apply_delta.py","Tools/apply_metadata_transition.py","Tools/check_batch_close.py","Tools/metadata_property_state.py","Tools/update_queue.py"],"kind":"writer","operations":[{"field":"last_content_modified","source_adapter":"content-change-event-v1","transition":"semantic-content-change"},{"field":"last_reviewed","source_adapter":"content-change-event-v1","transition":"semantic-content-change"},{"field":"last_reviewed","source_adapter":"current-review-receipt-value-v1","transition":"review-completed"}]},{"capability_id":"project-page-state-v2","capability_version":"2.0.0","implementation_paths":["Tools/metadata_property_state.py","Tools/project_page_state.py"],"kind":"writer","operations":[{"field":"authoring_status","source_adapter":"coverage-row-value-v1","transition":"owner-to-page-projection"},{"field":"coverage_disposition","source_adapter":"coverage-row-value-v1","transition":"owner-to-page-projection"},{"field":"last_content_modified","source_adapter":"coverage-property-state-v1","transition":"owner-to-page-projection"},{"field":"last_reviewed","source_adapter":"coverage-property-state-v1","transition":"owner-to-page-projection"},{"field":"next_batch","source_adapter":"coverage-row-value-v1","transition":"owner-to-page-projection"},{"operation":"profile-extension-enum-owner-projection-v1"}]}],"schema_version":1,"source_adapters":[{"adapter_id":"content-change-event-v1","authority_class":"evidence-projection","evidence_required":true,"owner_record_keys":[]},{"adapter_id":"coverage-property-state-v1","authority_class":"ledger-projection","evidence_required":false,"owner_record_keys":["content_fingerprint","evidence_receipt","value"]},{"adapter_id":"coverage-row-value-v1","authority_class":"ledger-projection","evidence_required":false,"owner_record_keys":[]},{"adapter_id":"current-review-receipt-value-v1","authority_class":"evidence-projection","evidence_required":true,"owner_record_keys":[]}],"temporal_order":["first_seen","last_content_modified","last_reviewed","last_verified"],"writer_capabilities":[{"capability_id":"legacy-property-adoption-v1","capability_version":"1.0.0","implementation_paths":["Tools/apply_amendment.py","Tools/apply_task_plan.py","Tools/metadata_property_state.py","Tools/project_page_state.py","Tools/register_amendment.py"],"kind":"writer","operations":[{"operation":"legacy-property-adoption-v1"}]},{"capability_id":"metadata-transition-integrator-v1","capability_version":"1.0.0","implementation_paths":["Tools/apply_delta.py","Tools/apply_metadata_transition.py","Tools/check_batch_close.py","Tools/metadata_property_state.py","Tools/update_queue.py"],"kind":"writer","operations":[{"field":"last_content_modified","source_adapter":"content-change-event-v1","transition":"semantic-content-change"},{"field":"last_reviewed","source_adapter":"content-change-event-v1","transition":"semantic-content-change"},{"field":"last_reviewed","source_adapter":"current-review-receipt-value-v1","transition":"review-completed"}]},{"capability_id":"project-page-state-v2","capability_version":"2.0.0","implementation_paths":["Tools/metadata_property_state.py","Tools/project_page_state.py"],"kind":"writer","operations":[{"field":"authoring_status","source_adapter":"coverage-row-value-v1","transition":"owner-to-page-projection"},{"field":"coverage_disposition","source_adapter":"coverage-row-value-v1","transition":"owner-to-page-projection"},{"field":"last_content_modified","source_adapter":"coverage-property-state-v1","transition":"owner-to-page-projection"},{"field":"last_reviewed","source_adapter":"coverage-property-state-v1","transition":"owner-to-page-projection"},{"field":"next_batch","source_adapter":"coverage-row-value-v1","transition":"owner-to-page-projection"},{"operation":"profile-extension-enum-owner-projection-v1"}]}]} diff --git a/Tools/schemas/receipt.template.jsonl b/Tools/schemas/receipt.template.jsonl index 6e973a3..99b2ba7 100644 --- a/Tools/schemas/receipt.template.jsonl +++ b/Tools/schemas/receipt.template.jsonl @@ -130,7 +130,7 @@ # check_links 1.6.0 / wiki-link-integrity; check_vocab 1.8.0 / # frontmatter-vocabulary and priority-quota-distribution; # check_residual_content 1.2.0 / -# registered-residual-content; check_queue 1.23.0 / its registered +# registered-residual-content; check_queue 1.24.0 / its registered # Required-Queue modes; check_batch_close 1.12.0 / batch-close; check_proof # 1.17.0 / terminal-proof; and adopt_standards 1.7.0 / # standards-adoption. Deterministic producers not shown above -- among them @@ -149,7 +149,7 @@ # after it. A run outside any Cambium runtime (no `.cambium/state/`) omits the # three fields rather than writing null: an omitted field claims nothing, while # an explicit null would satisfy consumers that only test field presence. -# Public R01 `check_queue.py` 1.23.0 admission reruns the complete +# Public R01 `check_queue.py` 1.24.0 admission reruns the complete # `profile-load` closure. The lower-level runtime view used to construct a # corrective Standards adoption retains only the selected Profile's # identity/sentinel guard, so an invalid current Profile does not prevent a diff --git a/Tools/tests/test_check_queue.py b/Tools/tests/test_check_queue.py index fd53ff8..3cf6989 100644 --- a/Tools/tests/test_check_queue.py +++ b/Tools/tests/test_check_queue.py @@ -461,6 +461,67 @@ def test_every_supported_close_era_resolves_a_child_protocol(self): "every consistency run" % version) +class EvidenceIdentityLifecycleTests(unittest.TestCase): + """One policy separates live authority from producer-era facts.""" + + def setUp(self): + self.receipt = { + "selected_profile_manifest": "profiles/old/profile.md", + "profile_snapshot_sha256": "sha256:" + "1" * 64, + "profile_contract_fingerprint": "sha256:" + "2" * 64, + "profile_load_inputs_sha256": "sha256:" + "3" * 64, + "metadata_execution_contract_fingerprint": + "sha256:" + "4" * 64, + } + self.live_profile = { + "selected_profile_manifest": "profiles/new/profile.md", + "profile_snapshot_sha256": "sha256:" + "5" * 64, + "profile_contract_fingerprint": "sha256:" + "6" * 64, + "profile_load_inputs_sha256": "sha256:" + "7" * 64, + } + self.live_metadata = "sha256:" + "8" * 64 + + def errors(self, use, receipt=None): + return check_queue._evidence_identity_errors( + receipt or self.receipt, "fixture evidence", use=use, + profile_view=self.live_profile, + metadata_contract_fingerprint=self.live_metadata) + + def test_current_authority_and_active_transaction_require_live_identity(self): + for use in ( + check_queue.EVIDENCE_USE_CURRENT_AUTHORIZATION, + check_queue.EVIDENCE_USE_ACTIVE_TRANSACTION): + with self.subTest(use=use): + errors = self.errors(use) + self.assertTrue(any( + "expected authorized Profile" in error + for error in errors), errors) + self.assertTrue(any( + "stale relative to the live contract" in error + for error in errors), errors) + + def test_completed_event_and_terminal_history_replay_producer_identity(self): + for use in ( + check_queue.EVIDENCE_USE_COMPLETED_EVENT, + check_queue.EVIDENCE_USE_TERMINAL_HISTORY): + with self.subTest(use=use): + self.assertEqual([], self.errors(use)) + + def test_every_lifecycle_rejects_malformed_producer_identity(self): + malformed = dict(self.receipt) + malformed["profile_snapshot_sha256"] = "not-a-sha" + malformed["metadata_execution_contract_fingerprint"] = "not-a-sha" + for use in check_queue.EVIDENCE_IDENTITY_USES: + with self.subTest(use=use): + errors = self.errors(use, malformed) + self.assertTrue(any( + "invalid producer-era profile_snapshot_sha256" in error + for error in errors), errors) + self.assertTrue(any( + "invalid producer-era metadata execution fingerprint" in + error for error in errors), errors) + + class CurrentPropertyStateTests(unittest.TestCase): """Current owner state is strict without reinterpreting absent history.""" @@ -722,7 +783,7 @@ def test_content_event_closes_owner_evidence_and_machine_fields(self): self.assertEqual([], self.errors_with_projection( row, catalog, text)) - def test_current_content_pointer_rejects_closed_shape_and_stale_evidence(self): + def test_content_pointer_replays_canonical_producer_era_bindings(self): text = ( "---\ntitle: A\nlast_content_modified: 2026-08-20\n" "---\nBody\n") @@ -747,18 +808,20 @@ def test_current_content_pointer_rejects_closed_shape_and_stale_evidence(self): self.assertTrue(any("not closed" in error for error in closed), closed) row["property_state"]["last_content_modified"] = dict(record) - receipt["metadata_execution_contract_fingerprint"] = ( - "sha256:" + "9" * 64) + receipt["metadata_execution_contract_fingerprint"] = "not-a-sha" stale = self.errors(row, self.content_catalog(receipt)) self.assertTrue(any( - "metadata_execution_contract_fingerprint" in error + "metadata execution fingerprint" in error for error in stale), stale) - receipt["metadata_execution_contract_fingerprint"] = self.META_SHA - receipt["profile_snapshot_sha256"] = "sha256:" + "0" * 64 - stale_profile = self.errors(row, self.content_catalog(receipt)) - self.assertTrue(any( - "profile_snapshot_sha256" in error - for error in stale_profile), stale_profile) + old_meta = "sha256:" + "9" * 64 + old_profile = "sha256:" + "0" * 64 + receipt["metadata_execution_contract_fingerprint"] = old_meta + receipt["profile_snapshot_sha256"] = old_profile + catalog = self.content_catalog(receipt) + opening = catalog[receipt["opening_transition_receipt"]][1] + opening["metadata_execution_contract_fingerprint"] = old_meta + opening["profile_snapshot_sha256"] = old_profile + self.assertEqual([], self.errors(row, catalog)) def test_content_event_must_bind_exact_opening_before_image(self): text = ( @@ -827,7 +890,7 @@ def test_property_fields_values_and_tombstones_are_closed(self): "tombstone without the content-change state" in error for error in orphan), orphan) - def test_review_and_profile_gate_receipts_bind_current_profile(self): + def test_review_replays_producer_era_while_profile_gate_stays_live(self): text = ( "---\ntitle: A\nlast_reviewed: 2026-08-20\n" "readiness_state: accepted\n---\nBody\n") @@ -980,11 +1043,13 @@ def test_review_and_profile_gate_receipts_bind_current_profile(self): self.assertEqual([], self.errors(row, catalog)) review["profile_contract_fingerprint"] = "sha256:" + "7" * 64 + self.assertEqual([], self.errors(row, catalog)) + gate["profile_contract_fingerprint"] = "sha256:" + "7" * 64 stale = self.errors(row, catalog) self.assertTrue(any( "profile_contract_fingerprint" in error for error in stale), stale) - review["profile_contract_fingerprint"] = self.PROFILE_CONTRACT_SHA + gate["profile_contract_fingerprint"] = self.PROFILE_CONTRACT_SHA gate["requested_completion_value"] = "rejected" wrong_value = self.errors(row, catalog) self.assertTrue(any( @@ -1195,7 +1260,7 @@ def transition(self, version=None): "metadata_execution_contract_fingerprint": self.META_SHA, } - def errors(self, transition): + def errors(self, transition, *, require_live_authority=True): contract = SimpleNamespace(contract_fingerprint=self.META_SHA) with mock.patch.object( check_queue.metadata_execution_contract, @@ -1204,7 +1269,8 @@ def errors(self, transition): "/fixture", transition, {"id": "B1", "manifest": [ "Topics/A.md", "Topics/B.md"]}, - self.profile_view()) + self.profile_view(), + require_live_authority=require_live_authority) def test_current_open_binds_exact_manifest_before_set(self): self.assertEqual([], self.errors(self.transition())) @@ -1248,6 +1314,18 @@ def test_legacy_open_is_not_reinterpreted(self): self.profile_view())) loader.assert_not_called() + def test_terminal_current_era_open_replays_producer_bindings(self): + transition = self.transition() + transition["profile_snapshot_sha256"] = "sha256:" + "8" * 64 + transition["metadata_execution_contract_fingerprint"] = ( + "sha256:" + "7" * 64) + with mock.patch.object( + check_queue.metadata_execution_contract, + "load_metadata_execution_contract") as loader: + self.assertEqual([], self.errors( + transition, require_live_authority=False)) + loader.assert_not_called() + def test_public_resolver_returns_only_current_latest_opening(self): current = self.transition() result = { @@ -1314,7 +1392,7 @@ def errors(self, transition, catalog=None): return check_queue._current_close_transition_metadata_errors( "/fixture", transition, catalog or self.catalog(), "B1") - def test_current_close_binds_exact_children_and_live_metadata(self): + def test_current_close_binds_exact_children_and_producer_metadata(self): self.assertEqual([], self.errors(self.transition())) malformed = self.transition() @@ -1334,8 +1412,22 @@ def test_current_close_binds_exact_children_and_live_metadata(self): errors) self.assertTrue(any("differs from its close Gate" in error for error in errors), errors) - self.assertTrue(any("stale relative" in error for error in errors), - errors) + + def test_terminal_current_era_close_survives_metadata_upgrade(self): + transition = self.transition() + catalog = self.catalog() + old_fingerprint = "sha256:" + "b" * 64 + transition["metadata_execution_contract_fingerprint"] = \ + old_fingerprint + catalog["audit-close-gate"][1][ + "metadata_execution_contract_fingerprint"] = old_fingerprint + with mock.patch.object( + check_queue.metadata_execution_contract, + "load_metadata_execution_contract") as loader: + self.assertEqual([], check_queue. + _current_close_transition_metadata_errors( + "/fixture", transition, catalog, "B1")) + loader.assert_not_called() def test_historical_close_is_not_reinterpreted(self): for version in ("1.2.0", "1.3.0", "1.4.0"): diff --git a/kernel/Cards/R02 Single Note Authoring Card.md b/kernel/Cards/R02 Single Note Authoring Card.md index d0f392e..38b14d3 100644 --- a/kernel/Cards/R02 Single Note Authoring Card.md +++ b/kernel/Cards/R02 Single Note Authoring Card.md @@ -43,8 +43,8 @@ readback_sources: - kernel/K12 Quality Assurance/11 Content-level Propagation.md - kernel/K12 Quality Assurance/13 Visual Verification Escalation.md readback_policy: declared -source_hash: '2c50b6abf23c' -compiled_source_hash: '2c50b6abf23c' +source_hash: '5f0f7919a9ed' +compiled_source_hash: '5f0f7919a9ed' --- # R02 Single Note Authoring Card diff --git a/kernel/Cards/R05 Expression Layer Card.md b/kernel/Cards/R05 Expression Layer Card.md index 1736d33..b41f708 100644 --- a/kernel/Cards/R05 Expression Layer Card.md +++ b/kernel/Cards/R05 Expression Layer Card.md @@ -29,8 +29,8 @@ readback_sources: - kernel/K12 Quality Assurance/02 Rendering Verification.md - kernel/K12 Quality Assurance/13 Visual Verification Escalation.md readback_policy: declared -source_hash: '40bc9ac959a8' -compiled_source_hash: '40bc9ac959a8' +source_hash: '903f5e26fda4' +compiled_source_hash: '903f5e26fda4' --- # R05 Expression Layer Card diff --git a/kernel/Cards/R09 Standards Governance Card.md b/kernel/Cards/R09 Standards Governance Card.md index 3e7f726..593e806 100644 --- a/kernel/Cards/R09 Standards Governance Card.md +++ b/kernel/Cards/R09 Standards Governance Card.md @@ -38,8 +38,8 @@ readback_sources: - kernel/K12 Quality Assurance/02 Rendering Verification.md - kernel/K12 Quality Assurance/05 Automated and Manual Checks.md readback_policy: activation -source_hash: 'cc47b6b15432' -compiled_source_hash: 'cc47b6b15432' +source_hash: '547d2dc76216' +compiled_source_hash: '547d2dc76216' --- # R09 Standards Governance Card diff --git a/kernel/Cards/R10 Maintenance Run Card.md b/kernel/Cards/R10 Maintenance Run Card.md index 2ee23e1..0980776 100644 --- a/kernel/Cards/R10 Maintenance Run Card.md +++ b/kernel/Cards/R10 Maintenance Run Card.md @@ -26,8 +26,8 @@ readback_sources: - kernel/K12 Quality Assurance/11 Content-level Propagation.md - kernel/K12 Quality Assurance/12 Substantive Correctness Review.md readback_policy: declared -source_hash: 'ef73059497be' -compiled_source_hash: 'ef73059497be' +source_hash: '1b513ada03a8' +compiled_source_hash: '1b513ada03a8' --- # R10 Maintenance Run Card diff --git a/kernel/K00 Standards Control/12 Control Registry.md b/kernel/K00 Standards Control/12 Control Registry.md index 70d68ab..f376d46 100644 --- a/kernel/K00 Standards Control/12 Control Registry.md +++ b/kernel/K00 Standards Control/12 Control Registry.md @@ -125,15 +125,15 @@ moves its own cell. |---|---|---|---|---|---|---| | `runtime-card-synchronization` | `manual-attestation` | `1.0.0` | `runtime-card-synchronization` | `*` | `guidance_and_contract` | `not-batch-scoped` | | `profile-load` | `check_profile` | `2.0.0` | `profile-check-summary` | `*` | `guidance_and_contract` | `not-batch-scoped` | -| `runtime-startup-recovery` | `check_queue` | `1.23.0` | `required_queue` | `resume-status` | `*` | `not-batch-scoped` | +| `runtime-startup-recovery` | `check_queue` | `1.24.0` | `required_queue` | `resume-status` | `*` | `not-batch-scoped` | | `large-scale-execution-admission` | `manual-attestation` | `1.0.0` | `large-scale-execution-admission` | `*` | `guidance_and_contract` | `not-batch-scoped` | | `wiki-link-integrity` | `check_links` | `1.6.0` | `link-check-summary` | `*` | `*` | `not-batch-scoped` | | `frontmatter-vocabulary` | `check_vocab` | `1.8.0` | `vocab-check-summary` | `*` | `*` | `not-batch-scoped` | | `priority-quota-distribution` | `check_vocab` | `1.8.0` | `priority-quota-distribution` | `*` | `*` | `not-batch-scoped` | -| `required-queue-consistency` | `check_queue` | `1.23.0` | `required_queue` | `consistency` | `*` | `not-batch-scoped` | -| `required-queue-admission` | `check_queue` | `1.23.0` | `required_queue` | `require-ready:*` | `*` | `queued` | -| `required-queue-completion` | `check_queue` | `1.23.0` | `required_queue` | `require-complete` | `*` | `queue-exhausted` | -| `maintenance-completion` | `check_queue` | `1.23.0` | `required_queue` | `require-maintenance-complete` | `*` | `queue-exhausted` | +| `required-queue-consistency` | `check_queue` | `1.24.0` | `required_queue` | `consistency` | `*` | `not-batch-scoped` | +| `required-queue-admission` | `check_queue` | `1.24.0` | `required_queue` | `require-ready:*` | `*` | `queued` | +| `required-queue-completion` | `check_queue` | `1.24.0` | `required_queue` | `require-complete` | `*` | `queue-exhausted` | +| `maintenance-completion` | `check_queue` | `1.24.0` | `required_queue` | `require-maintenance-complete` | `*` | `queue-exhausted` | | `batch-review` | `manual-attestation` | `1.0.0` | `batch_gate` | `*` | `none` | `open` | | `batch-close` | `check_batch_close` | `1.12.0` | `batch_close_gate` | `*` | `*` | `merge-ready` | | `structure-registry` | `check_structure` | `1.1.0` | `structure-registry-summary` | `*` | `*` | `not-batch-scoped` | @@ -146,7 +146,7 @@ moves its own cell. | `expression-layer-acceptance` | `manual-attestation` | `1.0.0` | `expression-layer-acceptance` | `*` | `content_and_depth`, `coverage_and_integration`, `guidance_and_contract`, `source_and_currentness`, `structure_and_links` | `not-batch-scoped` | | `coverage-reconciliation` | `manual-attestation` | `1.0.0` | `coverage-reconciliation` | `*` | `coverage_and_integration` | `not-batch-scoped` | | `standards-adoption` | `adopt_standards` | `1.7.0` | `standards_adoption` | `*` | `*` | `not-batch-scoped` | -| `standards-revalidation` | `check_queue` | `1.23.0` | `required_queue` | `require-revalidation:*` | `*` | `queued`, `open` | +| `standards-revalidation` | `check_queue` | `1.24.0` | `required_queue` | `require-revalidation:*` | `*` | `queued`, `open` | | `guidance-disposition` | `manual-attestation` | `1.0.0` | `guidance-disposition` | `*` | `guidance_and_contract` | `not-batch-scoped` | | `receipt-validity` | `manual-attestation` | `1.0.0` | `receipt-validity` | `*` | `guidance_and_contract` | `not-batch-scoped` | | `rendering` | `manual-attestation` | `1.0.0` | `rendering` | `*` | `rendering`, `structure_and_links` | `not-batch-scoped` | diff --git a/kernel/K08 Metadata and Status/07 Frontmatter Writer and Projection Authority.md b/kernel/K08 Metadata and Status/07 Frontmatter Writer and Projection Authority.md index 65dfa95..ffb5b19 100644 --- a/kernel/K08 Metadata and Status/07 Frontmatter Writer and Projection Authority.md +++ b/kernel/K08 Metadata and Status/07 Frontmatter Writer and Projection Authority.md @@ -16,8 +16,13 @@ Fields sharing one YAML block does not mean they share one writer. This leaf own state. `last_content_modified` is advanced only by a guarded Integrator content-change event bound to the new semantic content fingerprint. `last_reviewed` is advanced only by consumed review evidence bound to that - same fingerprint. A content change invalidates the prior review authority - instead of fabricating a review date. `last_verified` remains a separate + same fingerprint. These completed core events replay under their producer + era: a later Profile or tool implementation revision does not erase the + fact, while target, value, receipt graph, and current semantic fingerprint + still bind exactly. Profile-owned readiness state is different and remains + subject to the currently selected typed Profile. A content change + invalidates the prior review authority instead of fabricating a review + date. `last_verified` remains a separate external-verification event and is never advanced by a close without its own evidence. The compiled metadata execution contract names each owner, source adapter, writer capability, timing, and invalidation rule; the generic