diff --git a/README.md b/README.md index d2ecf2e..e81f426 100644 --- a/README.md +++ b/README.md @@ -47,11 +47,11 @@ The stable `scripts/core-contract.sh` wrapper and inactive resolver select this generation together. This is a repo-only compatibility switch. It does not install the resolver, select a live profile, or qualify a real forge. -The v2 registry also carries one complete, unselected evidence-identity correction. -It requires every passed evidence item to come from the exact selected execution; -incident mismatches remain valid only when all evidence is non-passing. The stable -wrapper still selects the prior v2 generation until a separate atomic cutover binds -the corrective generation's reviewed merge and publisher receipt. +The v2 registry also carries the selected evidence-identity correction. It requires +every passed evidence item to come from the exact selected execution; incident +mismatches remain valid only when all evidence is non-passing. The stable wrapper, +inactive resolver, Control closure, and scanner select it together. The prior +generation remains immutable and restorable. ## Inactive fake adapter contract matrix diff --git a/RESTORE.md b/RESTORE.md index 6b1a5f8..0191f3f 100644 --- a/RESTORE.md +++ b/RESTORE.md @@ -295,9 +295,10 @@ descriptor-3 receipt, ordinary-call compatibility, cleanup, and byte-for-byte co of the unchanged exports. It performs no install, activation, networked validation, or target use. -`core/v2/` is the append-only inactive fake-forge generation selected by the stable -wrapper and inactive profile resolver. Restore its registry and complete generation -from one commit, then run: +`core/v2/` contains append-only inactive generations, including the unchanged +fake-forge generation. The stable wrapper and inactive profile resolver select the +evidence-identity correction. Restore the registry and both complete generations from +one commit, then run: ```sh bash scripts/test/portable-core-v2-fake-forge.test.sh @@ -308,8 +309,8 @@ materialization in a caller-disposable repository. The package is not qualified It grants no credential, network, publish, push, merge, or remote branch-write capability. The switch does not install the resolver or select a live profile. -Restore the complete unselected v2 evidence-identity generation, its dedicated -ledger, and its focused test from the manifest, then run: +Restore the complete selected v2 evidence-identity generation, its dedicated ledger, +and its focused test from the manifest, then run: ```sh bash scripts/test/portable-core-v2-evidence-identity.test.sh @@ -317,9 +318,9 @@ bash scripts/test/portable-core-v2-evidence-identity.test.sh This proof requires passed evidence to retain the exact selected performer, binding, environment, capability, and metadata projection. It also proves that -all-non-passing incident mismatches remain preservable. The stable wrapper remains -on the prior generation until the separate atomic cutover; this step grants no -authority, qualification, credential, network, activation, or external effect. +all-non-passing incident mismatches remain preservable. Its selection is bound to +the reviewed generation merge and publisher receipt and grants no authority, +qualification, credential, network, activation, or external effect. Restore every path in the manifest's inactive fake adapter matrix block, then run: diff --git a/control/v1/control-policy-set.json b/control/v1/control-policy-set.json index 2de2550..79242d5 100644 --- a/control/v1/control-policy-set.json +++ b/control/v1/control-policy-set.json @@ -1 +1 @@ -{"body":{"activation_state":"inactive","core_contract":{"generation_id":"g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e","package_ref":{"content_id":"core-contract-package.v2","media_type":"application/vnd.ystack.core-contract+json","sha256":"2742f9c097943bb140cc0f19feda1e3b653ce95e699c570f9e9fc48825137c6c"},"semantic_identity":"core.contracts.v2"},"fail_mode":"closed","policy_version":"v1","sections":[{"decision_ref":{"content_id":"control-decision.credential-policy","media_type":"application/vnd.ystack.control-decision+json","sha256":"3ced3c3795d81d92f87358c8098663011e30589391dd6383179d2bfcfd722a0e"},"policy_ref":{"content_id":"control-policy.credential-policy","media_type":"application/vnd.ystack.control-policy+json","sha256":"62a71718f965ca37d83c6a5cf88c3f2d953092b4c33a1b8c30e2feb2d8ab9a1e"},"section_id":"credential-policy"},{"decision_ref":{"content_id":"control-decision.duty-separation","media_type":"application/vnd.ystack.control-decision+json","sha256":"25a513104dc08de8e22727901555d0a3fb6008dd8b222f7a604ed50734d4e23e"},"policy_ref":{"content_id":"control-policy.duty-separation","media_type":"application/vnd.ystack.control-policy+json","sha256":"6a86ddbe4432dae9e6e3748295b4b1da7280aa7ca410515531d0059ba2e1d566"},"section_id":"duty-separation"},{"decision_ref":{"content_id":"control-decision.evidence-integrity","media_type":"application/vnd.ystack.control-decision+json","sha256":"109d5061bafc4b5e9fa0ef49ec00a9d806e8c085272b8b92f9fc48676226dc94"},"policy_ref":{"content_id":"control-policy.evidence-integrity","media_type":"application/vnd.ystack.control-policy+json","sha256":"e14bf8ccc36d391d4ccab5b64b931cda02e3369cf0bda4e34a4cd4c3b19da662"},"section_id":"evidence-integrity"},{"decision_ref":{"content_id":"control-decision.kill-switch","media_type":"application/vnd.ystack.control-decision+json","sha256":"61cf6af051efe6438bbf58e1db61aca916bb79c9eb54ff1896e3a7a48143a36a"},"policy_ref":{"content_id":"control-policy.kill-switch","media_type":"application/vnd.ystack.control-policy+json","sha256":"6cc216935f62d1a705c8fa4d7ec6fc076d71313b24b2b0fce5ba63243f1ffad2"},"section_id":"kill-switch"},{"decision_ref":{"content_id":"control-decision.risk-gates","media_type":"application/vnd.ystack.control-decision+json","sha256":"be42e1b8387ba51297e60d40043339886606faecaaf134a4fd1ea0fa15db30b3"},"policy_ref":{"content_id":"control-policy.risk-gates","media_type":"application/vnd.ystack.control-policy+json","sha256":"130c4fc32ddabbddc25b12df7c03ec1ad5bb4925915b4bd90375a0a573c7ef0b"},"section_id":"risk-gates"},{"decision_ref":{"content_id":"control-decision.sandbox","media_type":"application/vnd.ystack.control-decision+json","sha256":"c3e89800147d55f7c726ec66c82031915a4220d3eb7867e143f60d7026223bbd"},"policy_ref":{"content_id":"control-policy.sandbox","media_type":"application/vnd.ystack.control-policy+json","sha256":"4afb62e44fd3ad055d157ee23bfcf2917811b9ec05e4923eaa989d95d53c0a5e"},"section_id":"sandbox"}]},"id":"control-policy-set.v1","kind":"control_policy_set","schema_version":1} +{"body":{"activation_state":"inactive","core_contract":{"generation_id":"g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43","package_ref":{"content_id":"core-contract-package.v2","media_type":"application/vnd.ystack.core-contract+json","sha256":"eff044bdd6de0de71d5f8c5a58d889a122cd9efdf717b9f68713b47842fb0963"},"semantic_identity":"core.contracts.v2"},"fail_mode":"closed","policy_version":"v1","sections":[{"decision_ref":{"content_id":"control-decision.credential-policy","media_type":"application/vnd.ystack.control-decision+json","sha256":"73877276c868eae2da9dcedf8eb465b0526ce26a66506691b9cedbba15f00615"},"policy_ref":{"content_id":"control-policy.credential-policy","media_type":"application/vnd.ystack.control-policy+json","sha256":"2ba0ec54d11ab4e9d02993e9283c5f820c662a20cf33d2bff25b1393a5ee403d"},"section_id":"credential-policy"},{"decision_ref":{"content_id":"control-decision.duty-separation","media_type":"application/vnd.ystack.control-decision+json","sha256":"4c2297341d1d389f21ace62b58b83e27a6ed248f9bf13a10fa385c4f8474af99"},"policy_ref":{"content_id":"control-policy.duty-separation","media_type":"application/vnd.ystack.control-policy+json","sha256":"b2663c0c0ae3d1d2e95b2e5d5ade7e00b2893f242a1143e90fad74659f6a41f9"},"section_id":"duty-separation"},{"decision_ref":{"content_id":"control-decision.evidence-integrity","media_type":"application/vnd.ystack.control-decision+json","sha256":"03e9225face347f1a4990beb6812f0e839d777cfbc6b95997d8031c4ad85e879"},"policy_ref":{"content_id":"control-policy.evidence-integrity","media_type":"application/vnd.ystack.control-policy+json","sha256":"8e630c4aaee1cf1d97b3c04e96da6bb8408a0a46a2ce42bca2583767ee42f604"},"section_id":"evidence-integrity"},{"decision_ref":{"content_id":"control-decision.kill-switch","media_type":"application/vnd.ystack.control-decision+json","sha256":"f0e88e03633c28d4916fa3480c4a4d27bc815da05891dc3efd8bc9c08b544941"},"policy_ref":{"content_id":"control-policy.kill-switch","media_type":"application/vnd.ystack.control-policy+json","sha256":"b46eebfeb9de37eb0ebdb8fb297e0e200b537d0ca08dcf28eab7f91ef603e799"},"section_id":"kill-switch"},{"decision_ref":{"content_id":"control-decision.risk-gates","media_type":"application/vnd.ystack.control-decision+json","sha256":"8e13f844fad5280aedc21a7d4c9b4bcf43f8eb0b0dd41a32a5989ce1473e28d5"},"policy_ref":{"content_id":"control-policy.risk-gates","media_type":"application/vnd.ystack.control-policy+json","sha256":"3d8f0802777b4d7a63ded72643aca5cc8afd7613b76b5463291ca0ea63607a7e"},"section_id":"risk-gates"},{"decision_ref":{"content_id":"control-decision.sandbox","media_type":"application/vnd.ystack.control-decision+json","sha256":"c3e89800147d55f7c726ec66c82031915a4220d3eb7867e143f60d7026223bbd"},"policy_ref":{"content_id":"control-policy.sandbox","media_type":"application/vnd.ystack.control-policy+json","sha256":"4afb62e44fd3ad055d157ee23bfcf2917811b9ec05e4923eaa989d95d53c0a5e"},"section_id":"sandbox"}]},"id":"control-policy-set.v1","kind":"control_policy_set","schema_version":1} diff --git a/control/v1/credential-policy-decision.json b/control/v1/credential-policy-decision.json index b31673f..b4affcd 100644 --- a/control/v1/credential-policy-decision.json +++ b/control/v1/credential-policy-decision.json @@ -1 +1 @@ -{"body":{"activation_state":"inactive","decision":"allow-observation-only-evaluation","dependencies":{"duty_separation":{"decision_ref":{"content_id":"control-decision.duty-separation","media_type":"application/vnd.ystack.control-decision+json","sha256":"25a513104dc08de8e22727901555d0a3fb6008dd8b222f7a604ed50734d4e23e"},"policy_ref":{"content_id":"control-policy.duty-separation","media_type":"application/vnd.ystack.control-policy+json","sha256":"6a86ddbe4432dae9e6e3748295b4b1da7280aa7ca410515531d0059ba2e1d566"}}},"evaluator":{"driver_ref":{"content_id":"control-evaluator-driver.credential-policy.v1","media_type":"text/x-shellscript","sha256":"5c9bab9d00754d63e4ead770489564db8122c53ab1bc8b6e92c27719265c18f7"},"program_ref":{"content_id":"control-evaluator-program.credential-policy.v1","media_type":"text/x-jq","sha256":"e91ff0b189ea1962baf4d83bfb4da9accbb48e74487c3d3d92417c313a89c8b8"}},"fail_mode":"closed","policy_ref":{"content_id":"control-policy.credential-policy","media_type":"application/vnd.ystack.control-policy+json","sha256":"62a71718f965ca37d83c6a5cf88c3f2d953092b4c33a1b8c30e2feb2d8ab9a1e"},"semantics":{"authority_effect":"none","claim_provenance":"unqualified-input-claim","input_contract":"control-policy-set+public-core-stage-run+duty-evaluation+credential-boundary-claim.v1","output_kind":"credential_policy_evaluation","output_schema_version":1,"qualification_effect":"none","reference_semantics":"identity-only","verdicts":["inconclusive","violated"]}},"id":"control-decision.credential-policy","kind":"credential_policy_decision","schema_version":1} +{"body":{"activation_state":"inactive","decision":"allow-observation-only-evaluation","dependencies":{"duty_separation":{"decision_ref":{"content_id":"control-decision.duty-separation","media_type":"application/vnd.ystack.control-decision+json","sha256":"4c2297341d1d389f21ace62b58b83e27a6ed248f9bf13a10fa385c4f8474af99"},"policy_ref":{"content_id":"control-policy.duty-separation","media_type":"application/vnd.ystack.control-policy+json","sha256":"b2663c0c0ae3d1d2e95b2e5d5ade7e00b2893f242a1143e90fad74659f6a41f9"}}},"evaluator":{"driver_ref":{"content_id":"control-evaluator-driver.credential-policy.v1","media_type":"text/x-shellscript","sha256":"5c9bab9d00754d63e4ead770489564db8122c53ab1bc8b6e92c27719265c18f7"},"program_ref":{"content_id":"control-evaluator-program.credential-policy.v1","media_type":"text/x-jq","sha256":"428ea96f23a18c6938421b9cc709d36ba83b34e2441347d5891a971f92d5ec77"}},"fail_mode":"closed","policy_ref":{"content_id":"control-policy.credential-policy","media_type":"application/vnd.ystack.control-policy+json","sha256":"2ba0ec54d11ab4e9d02993e9283c5f820c662a20cf33d2bff25b1393a5ee403d"},"semantics":{"authority_effect":"none","claim_provenance":"unqualified-input-claim","input_contract":"control-policy-set+public-core-stage-run+duty-evaluation+credential-boundary-claim.v1","output_kind":"credential_policy_evaluation","output_schema_version":1,"qualification_effect":"none","reference_semantics":"identity-only","verdicts":["inconclusive","violated"]}},"id":"control-decision.credential-policy","kind":"credential_policy_decision","schema_version":1} diff --git a/control/v1/credential-policy.jq b/control/v1/credential-policy.jq index 611d1e8..61407db 100644 --- a/control/v1/credential-policy.jq +++ b/control/v1/credential-policy.jq @@ -54,10 +54,10 @@ def claim_ok: def expected_core: {semantic_identity:"core.contracts.v2", generation_id_sha256: - "6f6acbbd0cf40ab3c913328d6c0070635424ffe920bcdb900fbd0718345d7137", + "84a153ba1d60f1763d5424c872256fc3337209678f4105cb0802958798bd19f5", package_ref:{content_id:"core-contract-package.v2", media_type:"application/vnd.ystack.core-contract+json", - sha256:"2742f9c097943bb140cc0f19feda1e3b653ce95e699c570f9e9fc48825137c6c"}}; + sha256:"eff044bdd6de0de71d5f8c5a58d889a122cd9efdf717b9f68713b47842fb0963"}}; def expected_credential_classes: [{credential_class:"model-inference",delivery:"brokered", @@ -81,10 +81,10 @@ def policy_ok: .duty_separation == { decision_ref:{content_id:"control-decision.duty-separation", media_type:"application/vnd.ystack.control-decision+json", - sha256:"25a513104dc08de8e22727901555d0a3fb6008dd8b222f7a604ed50734d4e23e"}, + sha256:"4c2297341d1d389f21ace62b58b83e27a6ed248f9bf13a10fa385c4f8474af99"}, policy_ref:{content_id:"control-policy.duty-separation", media_type:"application/vnd.ystack.control-policy+json", - sha256:"6a86ddbe4432dae9e6e3748295b4b1da7280aa7ca410515531d0059ba2e1d566"}} and + sha256:"b2663c0c0ae3d1d2e95b2e5d5ade7e00b2893f242a1143e90fad74659f6a41f9"}} and .evaluation_mode == "observation-only" and .fail_mode == "closed" and .policy_version == "v1" and .protected_roles == diff --git a/control/v1/credential-policy.json b/control/v1/credential-policy.json index d5db93d..5ef8254 100644 --- a/control/v1/credential-policy.json +++ b/control/v1/credential-policy.json @@ -1 +1 @@ -{"body":{"activation_state":"inactive","claim_provenance":"unqualified-input-claim","core_contract":{"generation_id_sha256":"6f6acbbd0cf40ab3c913328d6c0070635424ffe920bcdb900fbd0718345d7137","package_ref":{"content_id":"core-contract-package.v2","media_type":"application/vnd.ystack.core-contract+json","sha256":"2742f9c097943bb140cc0f19feda1e3b653ce95e699c570f9e9fc48825137c6c"},"semantic_identity":"core.contracts.v2"},"credential_classes":[{"credential_class":"model-inference","delivery":"brokered","execution_kinds":["model"],"exposure":"none","roles":["producer","reviewer"],"scope":"single-stage"}],"credential_incompatible_permissions":["core.perm.candidate-repository.write.v2","core.perm.candidate.execute.v1"],"duty_separation":{"decision_ref":{"content_id":"control-decision.duty-separation","media_type":"application/vnd.ystack.control-decision+json","sha256":"25a513104dc08de8e22727901555d0a3fb6008dd8b222f7a604ed50734d4e23e"},"policy_ref":{"content_id":"control-policy.duty-separation","media_type":"application/vnd.ystack.control-policy+json","sha256":"6a86ddbe4432dae9e6e3748295b4b1da7280aa7ca410515531d0059ba2e1d566"}},"evaluation_mode":"observation-only","fail_mode":"closed","policy_version":"v1","protected_roles":["ci","execution","forge","identity","producer","publisher","reviewer","verifier"],"reference_semantics":"identity-only"},"id":"control-policy.credential-policy","kind":"credential_policy","schema_version":1} +{"body":{"activation_state":"inactive","claim_provenance":"unqualified-input-claim","core_contract":{"generation_id_sha256":"84a153ba1d60f1763d5424c872256fc3337209678f4105cb0802958798bd19f5","package_ref":{"content_id":"core-contract-package.v2","media_type":"application/vnd.ystack.core-contract+json","sha256":"eff044bdd6de0de71d5f8c5a58d889a122cd9efdf717b9f68713b47842fb0963"},"semantic_identity":"core.contracts.v2"},"credential_classes":[{"credential_class":"model-inference","delivery":"brokered","execution_kinds":["model"],"exposure":"none","roles":["producer","reviewer"],"scope":"single-stage"}],"credential_incompatible_permissions":["core.perm.candidate-repository.write.v2","core.perm.candidate.execute.v1"],"duty_separation":{"decision_ref":{"content_id":"control-decision.duty-separation","media_type":"application/vnd.ystack.control-decision+json","sha256":"4c2297341d1d389f21ace62b58b83e27a6ed248f9bf13a10fa385c4f8474af99"},"policy_ref":{"content_id":"control-policy.duty-separation","media_type":"application/vnd.ystack.control-policy+json","sha256":"b2663c0c0ae3d1d2e95b2e5d5ade7e00b2893f242a1143e90fad74659f6a41f9"}},"evaluation_mode":"observation-only","fail_mode":"closed","policy_version":"v1","protected_roles":["ci","execution","forge","identity","producer","publisher","reviewer","verifier"],"reference_semantics":"identity-only"},"id":"control-policy.credential-policy","kind":"credential_policy","schema_version":1} diff --git a/control/v1/duty-separation-decision.json b/control/v1/duty-separation-decision.json index 88e87f6..59fedc2 100644 --- a/control/v1/duty-separation-decision.json +++ b/control/v1/duty-separation-decision.json @@ -1 +1 @@ -{"body":{"activation_state":"inactive","decision":"allow-observation-only-evaluation","evaluator":{"driver_ref":{"content_id":"control-evaluator-driver.duty-separation.v1","media_type":"text/x-shellscript","sha256":"146e73dc880d363e889f32140ac375997fb709e3101de32b8d9603f1f38ca0fa"},"policy_set_validator":{"driver_ref":{"content_id":"control-policy-set-validator-driver.v1","media_type":"text/x-shellscript","sha256":"cf173ad0eaa08244bf636e3937845e894b21f14291fc5e66753e8673bdd2bd2a"},"program_ref":{"content_id":"control-policy-set-validator-program.v1","media_type":"text/x-jq","sha256":"2be97550574ee4522fc0bd14780c92dee3c1b455f2c04b7763b0e437665a8d58"}},"program_ref":{"content_id":"control-evaluator-program.duty-separation.v1","media_type":"text/x-jq","sha256":"755b51ba0ed7d463309d9ab5d30243f60d2847f2370140c2bf3b3b45a63b2611"}},"fail_mode":"closed","policy_ref":{"content_id":"control-policy.duty-separation","media_type":"application/vnd.ystack.control-policy+json","sha256":"6a86ddbe4432dae9e6e3748295b4b1da7280aa7ca410515531d0059ba2e1d566"},"semantics":{"authority_effect":"none","input_contract":"control-policy-set+public-core-stage-run.v1","output_kind":"duty_separation_evaluation","output_schema_version":1,"reference_semantics":"identity-only","verdicts":["inconclusive","satisfied","violated"]}},"id":"control-decision.duty-separation","kind":"duty_separation_decision","schema_version":1} +{"body":{"activation_state":"inactive","decision":"allow-observation-only-evaluation","evaluator":{"driver_ref":{"content_id":"control-evaluator-driver.duty-separation.v1","media_type":"text/x-shellscript","sha256":"146e73dc880d363e889f32140ac375997fb709e3101de32b8d9603f1f38ca0fa"},"policy_set_validator":{"driver_ref":{"content_id":"control-policy-set-validator-driver.v1","media_type":"text/x-shellscript","sha256":"cf173ad0eaa08244bf636e3937845e894b21f14291fc5e66753e8673bdd2bd2a"},"program_ref":{"content_id":"control-policy-set-validator-program.v1","media_type":"text/x-jq","sha256":"2be97550574ee4522fc0bd14780c92dee3c1b455f2c04b7763b0e437665a8d58"}},"program_ref":{"content_id":"control-evaluator-program.duty-separation.v1","media_type":"text/x-jq","sha256":"b4e480748dd4fb7dec769b25f0f7649b0e5dc31f9de438bba690e9eab6ac236c"}},"fail_mode":"closed","policy_ref":{"content_id":"control-policy.duty-separation","media_type":"application/vnd.ystack.control-policy+json","sha256":"b2663c0c0ae3d1d2e95b2e5d5ade7e00b2893f242a1143e90fad74659f6a41f9"},"semantics":{"authority_effect":"none","input_contract":"control-policy-set+public-core-stage-run.v1","output_kind":"duty_separation_evaluation","output_schema_version":1,"reference_semantics":"identity-only","verdicts":["inconclusive","satisfied","violated"]}},"id":"control-decision.duty-separation","kind":"duty_separation_decision","schema_version":1} diff --git a/control/v1/duty-separation-policy.json b/control/v1/duty-separation-policy.json index b649372..6bd404d 100644 --- a/control/v1/duty-separation-policy.json +++ b/control/v1/duty-separation-policy.json @@ -1 +1 @@ -{"body":{"activation_state":"inactive","core_contract":{"generation_id_sha256":"6f6acbbd0cf40ab3c913328d6c0070635424ffe920bcdb900fbd0718345d7137","package_ref":{"content_id":"core-contract-package.v2","media_type":"application/vnd.ystack.core-contract+json","sha256":"2742f9c097943bb140cc0f19feda1e3b653ce95e699c570f9e9fc48825137c6c"},"semantic_identity":"core.contracts.v2"},"dormant_roles":["ci","execution","identity","publisher"],"evaluation_mode":"observation-only","fail_mode":"closed","identity_dimensions":["adapter_instance_id","execution_boundary_id","principal_id"],"operation_ceilings":[{"capabilities":["core.forge.materialize-candidate.v2"],"execution_kind":"deterministic","permissions":["core.perm.candidate-repository.write.v2","core.perm.evidence.write.v1","core.perm.scratch.write.v1","core.perm.target.read.v1"],"role":"forge"},{"capabilities":["core.harness.produce.v1"],"execution_kind":"deterministic","permissions":["core.perm.evidence.write.v1","core.perm.scratch.write.v1","core.perm.target.read.v1"],"role":"producer"},{"capabilities":["core.harness.produce.v1"],"execution_kind":"model","permissions":["core.perm.evidence.write.v1","core.perm.model.invoke.v1","core.perm.scratch.write.v1","core.perm.target.read.v1"],"role":"producer"},{"capabilities":["core.review.change.v1"],"execution_kind":"deterministic","permissions":["core.perm.evidence.write.v1","core.perm.target.read.v1"],"role":"reviewer"},{"capabilities":["core.review.change.v1"],"execution_kind":"model","permissions":["core.perm.evidence.write.v1","core.perm.model.invoke.v1","core.perm.target.read.v1"],"role":"reviewer"},{"capabilities":["core.verify.run.v1"],"execution_kind":"deterministic","permissions":["core.perm.candidate.execute.v1","core.perm.evidence.write.v1","core.perm.target.read.v1"],"role":"verifier"}],"policy_version":"v1","protected_roles":["forge","producer","publisher","reviewer","verifier"],"reporter_relation":"performer-else-selected","requester_roles":["manager","operator","orchestrator"]},"id":"control-policy.duty-separation","kind":"duty_separation_policy","schema_version":1} +{"body":{"activation_state":"inactive","core_contract":{"generation_id_sha256":"84a153ba1d60f1763d5424c872256fc3337209678f4105cb0802958798bd19f5","package_ref":{"content_id":"core-contract-package.v2","media_type":"application/vnd.ystack.core-contract+json","sha256":"eff044bdd6de0de71d5f8c5a58d889a122cd9efdf717b9f68713b47842fb0963"},"semantic_identity":"core.contracts.v2"},"dormant_roles":["ci","execution","identity","publisher"],"evaluation_mode":"observation-only","fail_mode":"closed","identity_dimensions":["adapter_instance_id","execution_boundary_id","principal_id"],"operation_ceilings":[{"capabilities":["core.forge.materialize-candidate.v2"],"execution_kind":"deterministic","permissions":["core.perm.candidate-repository.write.v2","core.perm.evidence.write.v1","core.perm.scratch.write.v1","core.perm.target.read.v1"],"role":"forge"},{"capabilities":["core.harness.produce.v1"],"execution_kind":"deterministic","permissions":["core.perm.evidence.write.v1","core.perm.scratch.write.v1","core.perm.target.read.v1"],"role":"producer"},{"capabilities":["core.harness.produce.v1"],"execution_kind":"model","permissions":["core.perm.evidence.write.v1","core.perm.model.invoke.v1","core.perm.scratch.write.v1","core.perm.target.read.v1"],"role":"producer"},{"capabilities":["core.review.change.v1"],"execution_kind":"deterministic","permissions":["core.perm.evidence.write.v1","core.perm.target.read.v1"],"role":"reviewer"},{"capabilities":["core.review.change.v1"],"execution_kind":"model","permissions":["core.perm.evidence.write.v1","core.perm.model.invoke.v1","core.perm.target.read.v1"],"role":"reviewer"},{"capabilities":["core.verify.run.v1"],"execution_kind":"deterministic","permissions":["core.perm.candidate.execute.v1","core.perm.evidence.write.v1","core.perm.target.read.v1"],"role":"verifier"}],"policy_version":"v1","protected_roles":["forge","producer","publisher","reviewer","verifier"],"reporter_relation":"performer-else-selected","requester_roles":["manager","operator","orchestrator"]},"id":"control-policy.duty-separation","kind":"duty_separation_policy","schema_version":1} diff --git a/control/v1/duty-separation.jq b/control/v1/duty-separation.jq index 5467976..1d2f6d1 100644 --- a/control/v1/duty-separation.jq +++ b/control/v1/duty-separation.jq @@ -45,10 +45,10 @@ def policy_ok: .fail_mode == "closed" and .policy_version == "v1" and .core_contract == { semantic_identity:"core.contracts.v2", - generation_id_sha256:"6f6acbbd0cf40ab3c913328d6c0070635424ffe920bcdb900fbd0718345d7137", + generation_id_sha256:"84a153ba1d60f1763d5424c872256fc3337209678f4105cb0802958798bd19f5", package_ref:{content_id:"core-contract-package.v2", media_type:"application/vnd.ystack.core-contract+json", - sha256:"2742f9c097943bb140cc0f19feda1e3b653ce95e699c570f9e9fc48825137c6c"} + sha256:"eff044bdd6de0de71d5f8c5a58d889a122cd9efdf717b9f68713b47842fb0963"} } and .protected_roles == expected_roles and .dormant_roles == expected_dormant and .identity_dimensions == expected_dimensions and diff --git a/control/v1/evidence-integrity-decision.json b/control/v1/evidence-integrity-decision.json index 70f4929..bc39f59 100644 --- a/control/v1/evidence-integrity-decision.json +++ b/control/v1/evidence-integrity-decision.json @@ -1 +1 @@ -{"body":{"activation_state":"inactive","decision":"allow-observation-only-evaluation","evaluator":{"evaluation_payload_ref":{"content_id":"control-evaluator-payload.evidence-integrity.v1","media_type":"text/x-shellscript-fragment","sha256":"79e2a3c8817e19f1e3fc9d5571b68cb1eb15d55b69eb10f5090bb943220d1afc"},"policy_set_validator":{"driver_ref":{"content_id":"control-policy-set-validator-driver.v1","media_type":"text/x-shellscript","sha256":"cf173ad0eaa08244bf636e3937845e894b21f14291fc5e66753e8673bdd2bd2a"},"program_ref":{"content_id":"control-policy-set-validator-program.v1","media_type":"text/x-jq","sha256":"2be97550574ee4522fc0bd14780c92dee3c1b455f2c04b7763b0e437665a8d58"}},"program_ref":{"content_id":"control-evaluator-program.evidence-integrity.v1","media_type":"text/x-jq","sha256":"4280ecc9410b17b898a773aedb7ac7d955ca3b9c6ce8420f15ba255cb55f18df"},"trusted_launcher_ref":{"content_id":"control-evaluator-launcher.evidence-integrity.v1","media_type":"text/x-shellscript","sha256":"f0ecbe036601102db082d0a94c860ea868614ff79d06f2b37ec8dcd672c367a2"}},"fail_mode":"closed","policy_ref":{"content_id":"control-policy.evidence-integrity","media_type":"application/vnd.ystack.control-policy+json","sha256":"e14bf8ccc36d391d4ccab5b64b931cda02e3369cf0bda4e34a4cd4c3b19da662"},"semantics":{"authority_effect":"none","candidate_execution":"none","credential_access":"none","input_contract":"control-policy-set+public-core-stage-run+evidence-integrity-presentation.v1","launcher_attestation":"trusted-boundary-not-self-attested","network_access":"none","output_kind":"evidence_integrity_evaluation","output_schema_version":1,"qualification_effect":"none","reference_semantics":"identity-only","storage_effect":"none","verdicts":["satisfied","violated"]}},"id":"control-decision.evidence-integrity","kind":"evidence_integrity_decision","schema_version":1} +{"body":{"activation_state":"inactive","decision":"allow-observation-only-evaluation","evaluator":{"evaluation_payload_ref":{"content_id":"control-evaluator-payload.evidence-integrity.v1","media_type":"text/x-shellscript-fragment","sha256":"79e2a3c8817e19f1e3fc9d5571b68cb1eb15d55b69eb10f5090bb943220d1afc"},"policy_set_validator":{"driver_ref":{"content_id":"control-policy-set-validator-driver.v1","media_type":"text/x-shellscript","sha256":"cf173ad0eaa08244bf636e3937845e894b21f14291fc5e66753e8673bdd2bd2a"},"program_ref":{"content_id":"control-policy-set-validator-program.v1","media_type":"text/x-jq","sha256":"2be97550574ee4522fc0bd14780c92dee3c1b455f2c04b7763b0e437665a8d58"}},"program_ref":{"content_id":"control-evaluator-program.evidence-integrity.v1","media_type":"text/x-jq","sha256":"3b57277a3eab151da66801254af65196fb6a71800486fe781232135169f68619"},"trusted_launcher_ref":{"content_id":"control-evaluator-launcher.evidence-integrity.v1","media_type":"text/x-shellscript","sha256":"f0ecbe036601102db082d0a94c860ea868614ff79d06f2b37ec8dcd672c367a2"}},"fail_mode":"closed","policy_ref":{"content_id":"control-policy.evidence-integrity","media_type":"application/vnd.ystack.control-policy+json","sha256":"8e630c4aaee1cf1d97b3c04e96da6bb8408a0a46a2ce42bca2583767ee42f604"},"semantics":{"authority_effect":"none","candidate_execution":"none","credential_access":"none","input_contract":"control-policy-set+public-core-stage-run+evidence-integrity-presentation.v1","launcher_attestation":"trusted-boundary-not-self-attested","network_access":"none","output_kind":"evidence_integrity_evaluation","output_schema_version":1,"qualification_effect":"none","reference_semantics":"identity-only","storage_effect":"none","verdicts":["satisfied","violated"]}},"id":"control-decision.evidence-integrity","kind":"evidence_integrity_decision","schema_version":1} diff --git a/control/v1/evidence-integrity-policy.json b/control/v1/evidence-integrity-policy.json index de69e63..2a80dd1 100644 --- a/control/v1/evidence-integrity-policy.json +++ b/control/v1/evidence-integrity-policy.json @@ -1 +1 @@ -{"body":{"activation_state":"inactive","core_contract":{"generation_id_sha256":"6f6acbbd0cf40ab3c913328d6c0070635424ffe920bcdb900fbd0718345d7137","package_ref":{"content_id":"core-contract-package.v2","media_type":"application/vnd.ystack.core-contract+json","sha256":"2742f9c097943bb140cc0f19feda1e3b653ce95e699c570f9e9fc48825137c6c"},"semantic_identity":"core.contracts.v2"},"evaluation_mode":"observation-only","evidence_contract":{"current_result_binding":"exact-document-digest","presentation_kind":"evidence_integrity_presentation","prior_evidence_binding":"exact-stage-result-digest-and-evidence-id","proof_binding":"content-ref-sha256","qualification_binding":"exact-scope-ref-or-absent"},"fail_mode":"closed","policy_version":"v1","qualification_semantics":"identity-only-unqualified","storage_effect":"none"},"id":"control-policy.evidence-integrity","kind":"evidence_integrity_policy","schema_version":1} +{"body":{"activation_state":"inactive","core_contract":{"generation_id_sha256":"84a153ba1d60f1763d5424c872256fc3337209678f4105cb0802958798bd19f5","package_ref":{"content_id":"core-contract-package.v2","media_type":"application/vnd.ystack.core-contract+json","sha256":"eff044bdd6de0de71d5f8c5a58d889a122cd9efdf717b9f68713b47842fb0963"},"semantic_identity":"core.contracts.v2"},"evaluation_mode":"observation-only","evidence_contract":{"current_result_binding":"exact-document-digest","presentation_kind":"evidence_integrity_presentation","prior_evidence_binding":"exact-stage-result-digest-and-evidence-id","proof_binding":"content-ref-sha256","qualification_binding":"exact-scope-ref-or-absent"},"fail_mode":"closed","policy_version":"v1","qualification_semantics":"identity-only-unqualified","storage_effect":"none"},"id":"control-policy.evidence-integrity","kind":"evidence_integrity_policy","schema_version":1} diff --git a/control/v1/evidence-integrity.jq b/control/v1/evidence-integrity.jq index bdd9818..fe9292e 100644 --- a/control/v1/evidence-integrity.jq +++ b/control/v1/evidence-integrity.jq @@ -96,10 +96,10 @@ def evidence_ref_ok: def expected_core: {semantic_identity:"core.contracts.v2", generation_id_sha256: - "6f6acbbd0cf40ab3c913328d6c0070635424ffe920bcdb900fbd0718345d7137", + "84a153ba1d60f1763d5424c872256fc3337209678f4105cb0802958798bd19f5", package_ref:{content_id:"core-contract-package.v2", media_type:"application/vnd.ystack.core-contract+json", - sha256:"2742f9c097943bb140cc0f19feda1e3b653ce95e699c570f9e9fc48825137c6c"}}; + sha256:"eff044bdd6de0de71d5f8c5a58d889a122cd9efdf717b9f68713b47842fb0963"}}; def policy_ok: exact(["body","id","kind","schema_version"]) and .schema_version == 1 and diff --git a/control/v1/kill-switch-decision.json b/control/v1/kill-switch-decision.json index c8c445a..005bd5b 100644 --- a/control/v1/kill-switch-decision.json +++ b/control/v1/kill-switch-decision.json @@ -1 +1 @@ -{"body":{"activation_state":"inactive","decision":"allow-observation-only-evaluation","duty_decision_ref":{"content_id":"control-decision.duty-separation","media_type":"application/vnd.ystack.control-decision+json","sha256":"25a513104dc08de8e22727901555d0a3fb6008dd8b222f7a604ed50734d4e23e"},"evaluator":{"driver_ref":{"content_id":"control-evaluator-driver.kill-switch.v1","media_type":"text/x-shellscript","sha256":"ea1d40c50de706fa52198dc09e783ee613933aa0dbea72bfff8072becd79bb3b"},"policy_set_validator":{"driver_ref":{"content_id":"control-policy-set-validator-driver.v1","media_type":"text/x-shellscript","sha256":"cf173ad0eaa08244bf636e3937845e894b21f14291fc5e66753e8673bdd2bd2a"},"program_ref":{"content_id":"control-policy-set-validator-program.v1","media_type":"text/x-jq","sha256":"2be97550574ee4522fc0bd14780c92dee3c1b455f2c04b7763b0e437665a8d58"}},"program_ref":{"content_id":"control-evaluator-program.kill-switch.v1","media_type":"text/x-jq","sha256":"e660454c6addc426913b4dbc910c3c25a7333cbb84090d917ea65258ddd0968c"}},"fail_mode":"closed","policy_ref":{"content_id":"control-policy.kill-switch","media_type":"application/vnd.ystack.control-policy+json","sha256":"6cc216935f62d1a705c8fa4d7ec6fc076d71313b24b2b0fce5ba63243f1ffad2"},"semantics":{"authority_effect":"none","input_contract":"control-policy-set+kill-state+attempt+duty-evaluation.v1","output_kind":"kill_switch_evaluation","output_schema_version":1,"reference_semantics":"identity-only","verdicts":["inconclusive","satisfied","violated"]}},"id":"control-decision.kill-switch","kind":"kill_switch_decision","schema_version":1} +{"body":{"activation_state":"inactive","decision":"allow-observation-only-evaluation","duty_decision_ref":{"content_id":"control-decision.duty-separation","media_type":"application/vnd.ystack.control-decision+json","sha256":"4c2297341d1d389f21ace62b58b83e27a6ed248f9bf13a10fa385c4f8474af99"},"evaluator":{"driver_ref":{"content_id":"control-evaluator-driver.kill-switch.v1","media_type":"text/x-shellscript","sha256":"ea1d40c50de706fa52198dc09e783ee613933aa0dbea72bfff8072becd79bb3b"},"policy_set_validator":{"driver_ref":{"content_id":"control-policy-set-validator-driver.v1","media_type":"text/x-shellscript","sha256":"cf173ad0eaa08244bf636e3937845e894b21f14291fc5e66753e8673bdd2bd2a"},"program_ref":{"content_id":"control-policy-set-validator-program.v1","media_type":"text/x-jq","sha256":"2be97550574ee4522fc0bd14780c92dee3c1b455f2c04b7763b0e437665a8d58"}},"program_ref":{"content_id":"control-evaluator-program.kill-switch.v1","media_type":"text/x-jq","sha256":"e660454c6addc426913b4dbc910c3c25a7333cbb84090d917ea65258ddd0968c"}},"fail_mode":"closed","policy_ref":{"content_id":"control-policy.kill-switch","media_type":"application/vnd.ystack.control-policy+json","sha256":"b46eebfeb9de37eb0ebdb8fb297e0e200b537d0ca08dcf28eab7f91ef603e799"},"semantics":{"authority_effect":"none","input_contract":"control-policy-set+kill-state+attempt+duty-evaluation.v1","output_kind":"kill_switch_evaluation","output_schema_version":1,"reference_semantics":"identity-only","verdicts":["inconclusive","satisfied","violated"]}},"id":"control-decision.kill-switch","kind":"kill_switch_decision","schema_version":1} diff --git a/control/v1/kill-switch-policy.json b/control/v1/kill-switch-policy.json index 4446b88..7fa389c 100644 --- a/control/v1/kill-switch-policy.json +++ b/control/v1/kill-switch-policy.json @@ -1 +1 @@ -{"body":{"activation_state":"inactive","duty_decision_ref":{"content_id":"control-decision.duty-separation","media_type":"application/vnd.ystack.control-decision+json","sha256":"25a513104dc08de8e22727901555d0a3fb6008dd8b222f7a604ed50734d4e23e"},"evaluation_mode":"observation-only","fail_mode":"closed","policy_version":"v1","scope_order":["global","repository","workflow","stage","attempt"],"states":["cleared","stop"]},"id":"control-policy.kill-switch","kind":"kill_switch_policy","schema_version":1} +{"body":{"activation_state":"inactive","duty_decision_ref":{"content_id":"control-decision.duty-separation","media_type":"application/vnd.ystack.control-decision+json","sha256":"4c2297341d1d389f21ace62b58b83e27a6ed248f9bf13a10fa385c4f8474af99"},"evaluation_mode":"observation-only","fail_mode":"closed","policy_version":"v1","scope_order":["global","repository","workflow","stage","attempt"],"states":["cleared","stop"]},"id":"control-policy.kill-switch","kind":"kill_switch_policy","schema_version":1} diff --git a/control/v1/risk-gates-decision.json b/control/v1/risk-gates-decision.json index a78e68d..0860ae8 100644 --- a/control/v1/risk-gates-decision.json +++ b/control/v1/risk-gates-decision.json @@ -1 +1 @@ -{"body":{"activation_state":"inactive","decision":"allow-observation-only-evaluation","dependencies":{"duty_separation":{"decision_ref":{"content_id":"control-decision.duty-separation","media_type":"application/vnd.ystack.control-decision+json","sha256":"25a513104dc08de8e22727901555d0a3fb6008dd8b222f7a604ed50734d4e23e"},"policy_ref":{"content_id":"control-policy.duty-separation","media_type":"application/vnd.ystack.control-policy+json","sha256":"6a86ddbe4432dae9e6e3748295b4b1da7280aa7ca410515531d0059ba2e1d566"}}},"evaluator":{"driver_ref":{"content_id":"control-evaluator-driver.risk-gates.v1","media_type":"text/x-shellscript","sha256":"0df2094a1a86901d5db8bd463cdeb295f455585b345096719bdc6dcd0b8852e8"},"program_ref":{"content_id":"control-evaluator-program.risk-gates.v1","media_type":"text/x-jq","sha256":"bfc6d6d9c967bae8c55e006a3db62e6d7aabd6ca6274d69b6d3caf653f7a64bb"}},"fail_mode":"closed","policy_ref":{"content_id":"control-policy.risk-gates","media_type":"application/vnd.ystack.control-policy+json","sha256":"130c4fc32ddabbddc25b12df7c03ec1ad5bb4925915b4bd90375a0a573c7ef0b"},"semantics":{"authority_effect":"none","decision_claim_semantics":"immutable-input-claim-only","decision_provenance":"unqualified-input-claim","input_contract":"control-policy-set+public-core-stage-run+duty-evaluation+risk-decision-claim.v1","output_kind":"risk_gate_evaluation","output_schema_version":1,"reference_semantics":"identity-only","verdicts":["inconclusive","violated"]}},"id":"control-decision.risk-gates","kind":"risk_gates_decision","schema_version":1} +{"body":{"activation_state":"inactive","decision":"allow-observation-only-evaluation","dependencies":{"duty_separation":{"decision_ref":{"content_id":"control-decision.duty-separation","media_type":"application/vnd.ystack.control-decision+json","sha256":"4c2297341d1d389f21ace62b58b83e27a6ed248f9bf13a10fa385c4f8474af99"},"policy_ref":{"content_id":"control-policy.duty-separation","media_type":"application/vnd.ystack.control-policy+json","sha256":"b2663c0c0ae3d1d2e95b2e5d5ade7e00b2893f242a1143e90fad74659f6a41f9"}}},"evaluator":{"driver_ref":{"content_id":"control-evaluator-driver.risk-gates.v1","media_type":"text/x-shellscript","sha256":"0df2094a1a86901d5db8bd463cdeb295f455585b345096719bdc6dcd0b8852e8"},"program_ref":{"content_id":"control-evaluator-program.risk-gates.v1","media_type":"text/x-jq","sha256":"d00fccd8e31b770c6df01fba17e3cc315d58edfbbf0a8055d66d537dc6ad21ff"}},"fail_mode":"closed","policy_ref":{"content_id":"control-policy.risk-gates","media_type":"application/vnd.ystack.control-policy+json","sha256":"3d8f0802777b4d7a63ded72643aca5cc8afd7613b76b5463291ca0ea63607a7e"},"semantics":{"authority_effect":"none","decision_claim_semantics":"immutable-input-claim-only","decision_provenance":"unqualified-input-claim","input_contract":"control-policy-set+public-core-stage-run+duty-evaluation+risk-decision-claim.v1","output_kind":"risk_gate_evaluation","output_schema_version":1,"reference_semantics":"identity-only","verdicts":["inconclusive","violated"]}},"id":"control-decision.risk-gates","kind":"risk_gates_decision","schema_version":1} diff --git a/control/v1/risk-gates-policy.json b/control/v1/risk-gates-policy.json index cf030ba..b8b0086 100644 --- a/control/v1/risk-gates-policy.json +++ b/control/v1/risk-gates-policy.json @@ -1 +1 @@ -{"body":{"activation_state":"inactive","core_contract":{"generation_id_sha256":"6f6acbbd0cf40ab3c913328d6c0070635424ffe920bcdb900fbd0718345d7137","package_ref":{"content_id":"core-contract-package.v2","media_type":"application/vnd.ystack.core-contract+json","sha256":"2742f9c097943bb140cc0f19feda1e3b653ce95e699c570f9e9fc48825137c6c"},"semantic_identity":"core.contracts.v2"},"decision_claim_semantics":"immutable-input-claim-only","decision_provenance":"unqualified-input-claim","duty_separation":{"decision_ref":{"content_id":"control-decision.duty-separation","media_type":"application/vnd.ystack.control-decision+json","sha256":"25a513104dc08de8e22727901555d0a3fb6008dd8b222f7a604ed50734d4e23e"},"evaluation_kind":"duty_separation_evaluation","policy_ref":{"content_id":"control-policy.duty-separation","media_type":"application/vnd.ystack.control-policy+json","sha256":"6a86ddbe4432dae9e6e3748295b4b1da7280aa7ca410515531d0059ba2e1d566"},"required_verdict":"satisfied"},"evaluation_mode":"observation-only","fail_mode":"closed","forced_high_reason_ids":["risk.broad-architecture","risk.constitution","risk.deployment","risk.identity-auth","risk.migration","risk.production-infrastructure","risk.security-control","risk.workflow"],"policy_version":"v1","tier_rules":[{"classification":"bootstrap","decision_kind":"operator-bootstrap-approval","decision_role":"operator","declared_tier":"bootstrap"},{"classification":"high","decision_kind":"operator-plan-approval","decision_role":"operator","declared_tier":"high"},{"classification":"routine","decision_kind":"operator-plan-approval","decision_role":"operator","declared_tier":"high"},{"classification":"routine","decision_kind":"independent-plan-check","decision_role":"reviewer","declared_tier":"routine"}]},"id":"control-policy.risk-gates","kind":"risk_gates_policy","schema_version":1} +{"body":{"activation_state":"inactive","core_contract":{"generation_id_sha256":"84a153ba1d60f1763d5424c872256fc3337209678f4105cb0802958798bd19f5","package_ref":{"content_id":"core-contract-package.v2","media_type":"application/vnd.ystack.core-contract+json","sha256":"eff044bdd6de0de71d5f8c5a58d889a122cd9efdf717b9f68713b47842fb0963"},"semantic_identity":"core.contracts.v2"},"decision_claim_semantics":"immutable-input-claim-only","decision_provenance":"unqualified-input-claim","duty_separation":{"decision_ref":{"content_id":"control-decision.duty-separation","media_type":"application/vnd.ystack.control-decision+json","sha256":"4c2297341d1d389f21ace62b58b83e27a6ed248f9bf13a10fa385c4f8474af99"},"evaluation_kind":"duty_separation_evaluation","policy_ref":{"content_id":"control-policy.duty-separation","media_type":"application/vnd.ystack.control-policy+json","sha256":"b2663c0c0ae3d1d2e95b2e5d5ade7e00b2893f242a1143e90fad74659f6a41f9"},"required_verdict":"satisfied"},"evaluation_mode":"observation-only","fail_mode":"closed","forced_high_reason_ids":["risk.broad-architecture","risk.constitution","risk.deployment","risk.identity-auth","risk.migration","risk.production-infrastructure","risk.security-control","risk.workflow"],"policy_version":"v1","tier_rules":[{"classification":"bootstrap","decision_kind":"operator-bootstrap-approval","decision_role":"operator","declared_tier":"bootstrap"},{"classification":"high","decision_kind":"operator-plan-approval","decision_role":"operator","declared_tier":"high"},{"classification":"routine","decision_kind":"operator-plan-approval","decision_role":"operator","declared_tier":"high"},{"classification":"routine","decision_kind":"independent-plan-check","decision_role":"reviewer","declared_tier":"routine"}]},"id":"control-policy.risk-gates","kind":"risk_gates_policy","schema_version":1} diff --git a/control/v1/risk-gates.jq b/control/v1/risk-gates.jq index b51a87d..6d9d52d 100644 --- a/control/v1/risk-gates.jq +++ b/control/v1/risk-gates.jq @@ -62,10 +62,10 @@ def decision_actor_bound($rule;$request_doc;$resolved_doc;$actor): def expected_core: {semantic_identity:"core.contracts.v2", generation_id_sha256: - "6f6acbbd0cf40ab3c913328d6c0070635424ffe920bcdb900fbd0718345d7137", + "84a153ba1d60f1763d5424c872256fc3337209678f4105cb0802958798bd19f5", package_ref:{content_id:"core-contract-package.v2", media_type:"application/vnd.ystack.core-contract+json", - sha256:"2742f9c097943bb140cc0f19feda1e3b653ce95e699c570f9e9fc48825137c6c"}}; + sha256:"eff044bdd6de0de71d5f8c5a58d889a122cd9efdf717b9f68713b47842fb0963"}}; def expected_tier_rules: [ @@ -101,11 +101,11 @@ def policy_ok: .duty_separation == { decision_ref:{content_id:"control-decision.duty-separation", media_type:"application/vnd.ystack.control-decision+json", - sha256:"25a513104dc08de8e22727901555d0a3fb6008dd8b222f7a604ed50734d4e23e"}, + sha256:"4c2297341d1d389f21ace62b58b83e27a6ed248f9bf13a10fa385c4f8474af99"}, evaluation_kind:"duty_separation_evaluation", policy_ref:{content_id:"control-policy.duty-separation", media_type:"application/vnd.ystack.control-policy+json", - sha256:"6a86ddbe4432dae9e6e3748295b4b1da7280aa7ca410515531d0059ba2e1d566"}, + sha256:"b2663c0c0ae3d1d2e95b2e5d5ade7e00b2893f242a1143e90fad74659f6a41f9"}, required_verdict:"satisfied"}); def claim_shape_ok: diff --git a/orchestrator/v1/state-scanner-driver.sh b/orchestrator/v1/state-scanner-driver.sh index 5680749..8e47fe4 100755 --- a/orchestrator/v1/state-scanner-driver.sh +++ b/orchestrator/v1/state-scanner-driver.sh @@ -48,31 +48,31 @@ runtime_parent=${runtime%/*} case "$input" in "$runtime_parent"/input.json) ;; *) emit_error E_RUNTIME ;; esac case "$evaluator" in "$runtime"/evaluator.json) ;; *) emit_error E_RUNTIME ;; esac -generation=g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e +generation=g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43 modules="$runtime/core/v2/generations/$generation/modules" program="$runtime/program.jq" jq_bin="$runtime/jq" work="$runtime_parent/work" verify_runtime() { - verify_hash 43f6e3fabe1bec7025fb6068ccbe3b034d3c16a0ac33d1a9d7de5757e1b92fa7 \ + verify_hash 722afbf8a20ecf6f1d61b045186dc97b22fea1457f167ec87ac5b31b317e34ae \ "$program" && verify_hash 3950ce43c3073b97759db23fb7e4ce533cbc1d8a8fe4917db6ee1ee0a8e78f94 \ "$runtime/core/v2/generation-registry.json" && verify_hash 65eb40b9afb9b4f1d809ed66d0f2ca625f656c34e856cedcde9cbbde857f0f0a \ "$runtime/core/v2/generations/$generation/contracts.jq" && - verify_hash db87c6e97e93dc2a6eebd83087878c04f5528badc620d57fc9d883694e2ac28b \ + verify_hash dfdd273ea98f8737188a2a347151b3ffc0e631e222abfaac55391d58dd2618e8 \ "$runtime/core/v2/generations/$generation/core-ingress.sh" && verify_hash c00f9cfbe88df5cb1dbcfbead61288ff7d68684d43d095e74f26e7820f0d7207 \ "$modules/profile_graph.jq" && verify_hash 8e49c2c091f1bbe525f7499e3fca072f6916a14d5bb34adbf121439e8ca2d281 \ "$modules/result_facts.jq" && - verify_hash ed992f26761d08e3c3f5ab57eda9bcd771ad59e3aebeb02643de88844184d2d3 \ + verify_hash ed4a9946a95ad0c701f74d6bd64c3b45264126927c2a53511d31c52241c7fd46 \ "$modules/result_truth.jq" && verify_hash 8d1d02d36ac7ada778f05248f9413062b3fc251499914c15d79f003bbd009ade \ "$modules/schema.jq" && verify_hash 6572a6ecbac332dc9c4a8ef35acd1feebdc2e8aab04941fc0b756f3a5cbcf29e \ "$modules/stage_request.jq" && - verify_hash bdb5def832e8e611bba8a7b30a2aae95ea4f2701c44b198cf51cd3dfd9ff88f3 \ + verify_hash b081c7de1707a21bd948b998491caa7171084b15d9d95bceaae550cc7893fec9 \ "$runtime/scripts/core-contract.sh" && [ -f "$jq_bin" ] && [ -x "$jq_bin" ] && [ ! -L "$jq_bin" ] && { [ "$(sha256_path "$jq_bin")" = \ diff --git a/orchestrator/v1/state-scanner-launcher.sh b/orchestrator/v1/state-scanner-launcher.sh index 523901c..723aca9 100755 --- a/orchestrator/v1/state-scanner-launcher.sh +++ b/orchestrator/v1/state-scanner-launcher.sh @@ -119,7 +119,7 @@ runtime="$scratch/runtime" /bin/mkdir -m 0700 "$runtime" "$runtime/core" "$runtime/core/v2" \ "$runtime/core/v2/generations" "$runtime/scripts" "$scratch/work" || emit_error E_RUNTIME -generation=g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e +generation=g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43 generation_runtime="$runtime/core/v2/generations/$generation" /bin/mkdir -m 0700 "$generation_runtime" "$generation_runtime/modules" || emit_error E_RUNTIME @@ -129,10 +129,10 @@ snapshot_file "$source_dir/scan-state.sh" "$runtime/bootstrap.sh" 1048576 0400 | bootstrap_sha=$(sha256_path "$runtime/bootstrap.sh") || emit_error E_RUNTIME snapshot_file "$self" "$runtime/launcher.sh" 1048576 0400 || emit_error E_RUNTIME launcher_sha=$(sha256_path "$runtime/launcher.sh") || emit_error E_RUNTIME -snapshot_expected 10d3ad263f5757fc403ae6eb758fef630570e594b029cf2e314cda08dfb37de3 \ +snapshot_expected 5972a0a6ab7858815963717995d3d09561e76e2b7412ad1887252d83ad0db19b \ "$source_dir/state-scanner-driver.sh" "$runtime/driver.sh" 0400 || emit_error E_STALE -snapshot_expected 43f6e3fabe1bec7025fb6068ccbe3b034d3c16a0ac33d1a9d7de5757e1b92fa7 \ +snapshot_expected 722afbf8a20ecf6f1d61b045186dc97b22fea1457f167ec87ac5b31b317e34ae \ "$source_dir/state-scanner.jq" "$runtime/program.jq" 0400 || emit_error E_STALE snapshot_expected 3950ce43c3073b97759db23fb7e4ce533cbc1d8a8fe4917db6ee1ee0a8e78f94 \ "$repo/core/v2/generation-registry.json" \ @@ -140,13 +140,13 @@ snapshot_expected 3950ce43c3073b97759db23fb7e4ce533cbc1d8a8fe4917db6ee1ee0a8e78f snapshot_expected 65eb40b9afb9b4f1d809ed66d0f2ca625f656c34e856cedcde9cbbde857f0f0a \ "$repo/core/v2/generations/$generation/contracts.jq" \ "$generation_runtime/contracts.jq" 0400 || emit_error E_STALE -snapshot_expected db87c6e97e93dc2a6eebd83087878c04f5528badc620d57fc9d883694e2ac28b \ +snapshot_expected dfdd273ea98f8737188a2a347151b3ffc0e631e222abfaac55391d58dd2618e8 \ "$repo/core/v2/generations/$generation/core-ingress.sh" \ "$generation_runtime/core-ingress.sh" 0400 || emit_error E_STALE for member in \ 'profile_graph.jq c00f9cfbe88df5cb1dbcfbead61288ff7d68684d43d095e74f26e7820f0d7207' \ 'result_facts.jq 8e49c2c091f1bbe525f7499e3fca072f6916a14d5bb34adbf121439e8ca2d281' \ - 'result_truth.jq ed992f26761d08e3c3f5ab57eda9bcd771ad59e3aebeb02643de88844184d2d3' \ + 'result_truth.jq ed4a9946a95ad0c701f74d6bd64c3b45264126927c2a53511d31c52241c7fd46' \ 'schema.jq 8d1d02d36ac7ada778f05248f9413062b3fc251499914c15d79f003bbd009ade' \ 'stage_request.jq 6572a6ecbac332dc9c4a8ef35acd1feebdc2e8aab04941fc0b756f3a5cbcf29e'; do read -r name digest <<<"$member" @@ -154,7 +154,7 @@ for member in \ "$repo/core/v2/generations/$generation/modules/$name" \ "$generation_runtime/modules/$name" 0400 || emit_error E_STALE done -snapshot_expected bdb5def832e8e611bba8a7b30a2aae95ea4f2701c44b198cf51cd3dfd9ff88f3 \ +snapshot_expected b081c7de1707a21bd948b998491caa7171084b15d9d95bceaae550cc7893fec9 \ "$repo/scripts/core-contract.sh" "$runtime/scripts/core-contract.sh" 0400 || emit_error E_STALE snapshot_expected "$jq_sha" "$jq_source" "$runtime/jq" 0500 || emit_error E_RUNTIME @@ -168,8 +168,8 @@ snapshot_sha=$(sha256_path "$scratch/input.json") || emit_error E_RUNTIME "$runtime/jq" -S -c -n \ --arg bootstrap_sha "$bootstrap_sha" --arg launcher_sha "$launcher_sha" \ - --arg driver_sha 10d3ad263f5757fc403ae6eb758fef630570e594b029cf2e314cda08dfb37de3 \ - --arg program_sha 43f6e3fabe1bec7025fb6068ccbe3b034d3c16a0ac33d1a9d7de5757e1b92fa7 \ + --arg driver_sha 5972a0a6ab7858815963717995d3d09561e76e2b7412ad1887252d83ad0db19b \ + --arg program_sha 722afbf8a20ecf6f1d61b045186dc97b22fea1457f167ec87ac5b31b317e34ae \ --arg jq_sha "$jq_sha" --arg bash_sha "$bash_sha" \ --arg host_os "$host_os" --arg host_arch "$host_arch" \ --arg jq_arch "$jq_arch" --arg execution_mode "$execution_mode" ' @@ -179,22 +179,22 @@ snapshot_sha=$(sha256_path "$scratch/input.json") || emit_error E_RUNTIME id:"orchestrator.state-scanner.v1", body:{ core_contract:{ - generation_id_sha256:"6f6acbbd0cf40ab3c913328d6c0070635424ffe920bcdb900fbd0718345d7137", + generation_id_sha256:"84a153ba1d60f1763d5424c872256fc3337209678f4105cb0802958798bd19f5", package_ref:ref("core-contract-package.v2"; "application/vnd.ystack.core-contract+json"; - "2742f9c097943bb140cc0f19feda1e3b653ce95e699c570f9e9fc48825137c6c"), + "eff044bdd6de0de71d5f8c5a58d889a122cd9efdf717b9f68713b47842fb0963"), semantic_identity:"core.contracts.v2" }, core_closure:[ {path:"core/v2/generation-registry.json",sha256:"3950ce43c3073b97759db23fb7e4ce533cbc1d8a8fe4917db6ee1ee0a8e78f94"}, - {path:"core/v2/generations/g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e/contracts.jq",sha256:"65eb40b9afb9b4f1d809ed66d0f2ca625f656c34e856cedcde9cbbde857f0f0a"}, - {path:"core/v2/generations/g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e/core-ingress.sh",sha256:"db87c6e97e93dc2a6eebd83087878c04f5528badc620d57fc9d883694e2ac28b"}, - {path:"core/v2/generations/g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e/modules/profile_graph.jq",sha256:"c00f9cfbe88df5cb1dbcfbead61288ff7d68684d43d095e74f26e7820f0d7207"}, - {path:"core/v2/generations/g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e/modules/result_facts.jq",sha256:"8e49c2c091f1bbe525f7499e3fca072f6916a14d5bb34adbf121439e8ca2d281"}, - {path:"core/v2/generations/g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e/modules/result_truth.jq",sha256:"ed992f26761d08e3c3f5ab57eda9bcd771ad59e3aebeb02643de88844184d2d3"}, - {path:"core/v2/generations/g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e/modules/schema.jq",sha256:"8d1d02d36ac7ada778f05248f9413062b3fc251499914c15d79f003bbd009ade"}, - {path:"core/v2/generations/g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e/modules/stage_request.jq",sha256:"6572a6ecbac332dc9c4a8ef35acd1feebdc2e8aab04941fc0b756f3a5cbcf29e"}, - {path:"scripts/core-contract.sh",sha256:"bdb5def832e8e611bba8a7b30a2aae95ea4f2701c44b198cf51cd3dfd9ff88f3"} + {path:"core/v2/generations/g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43/contracts.jq",sha256:"65eb40b9afb9b4f1d809ed66d0f2ca625f656c34e856cedcde9cbbde857f0f0a"}, + {path:"core/v2/generations/g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43/core-ingress.sh",sha256:"dfdd273ea98f8737188a2a347151b3ffc0e631e222abfaac55391d58dd2618e8"}, + {path:"core/v2/generations/g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43/modules/profile_graph.jq",sha256:"c00f9cfbe88df5cb1dbcfbead61288ff7d68684d43d095e74f26e7820f0d7207"}, + {path:"core/v2/generations/g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43/modules/result_facts.jq",sha256:"8e49c2c091f1bbe525f7499e3fca072f6916a14d5bb34adbf121439e8ca2d281"}, + {path:"core/v2/generations/g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43/modules/result_truth.jq",sha256:"ed4a9946a95ad0c701f74d6bd64c3b45264126927c2a53511d31c52241c7fd46"}, + {path:"core/v2/generations/g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43/modules/schema.jq",sha256:"8d1d02d36ac7ada778f05248f9413062b3fc251499914c15d79f003bbd009ade"}, + {path:"core/v2/generations/g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43/modules/stage_request.jq",sha256:"6572a6ecbac332dc9c4a8ef35acd1feebdc2e8aab04941fc0b756f3a5cbcf29e"}, + {path:"scripts/core-contract.sh",sha256:"b081c7de1707a21bd948b998491caa7171084b15d9d95bceaae550cc7893fec9"} ], bootstrap_ref:ref("orchestrator-state-scanner-bootstrap.v1";"text/x-shellscript";$bootstrap_sha), launcher_ref:ref("orchestrator-state-scanner-launcher.v1";"text/x-shellscript";$launcher_sha), @@ -217,19 +217,19 @@ verify_private_core() { [ "$(sha256_path "$generation_runtime/contracts.jq")" = \ 65eb40b9afb9b4f1d809ed66d0f2ca625f656c34e856cedcde9cbbde857f0f0a ] && [ "$(sha256_path "$generation_runtime/core-ingress.sh")" = \ - db87c6e97e93dc2a6eebd83087878c04f5528badc620d57fc9d883694e2ac28b ] && + dfdd273ea98f8737188a2a347151b3ffc0e631e222abfaac55391d58dd2618e8 ] && [ "$(sha256_path "$generation_runtime/modules/profile_graph.jq")" = \ c00f9cfbe88df5cb1dbcfbead61288ff7d68684d43d095e74f26e7820f0d7207 ] && [ "$(sha256_path "$generation_runtime/modules/result_facts.jq")" = \ 8e49c2c091f1bbe525f7499e3fca072f6916a14d5bb34adbf121439e8ca2d281 ] && [ "$(sha256_path "$generation_runtime/modules/result_truth.jq")" = \ - ed992f26761d08e3c3f5ab57eda9bcd771ad59e3aebeb02643de88844184d2d3 ] && + ed4a9946a95ad0c701f74d6bd64c3b45264126927c2a53511d31c52241c7fd46 ] && [ "$(sha256_path "$generation_runtime/modules/schema.jq")" = \ 8d1d02d36ac7ada778f05248f9413062b3fc251499914c15d79f003bbd009ade ] && [ "$(sha256_path "$generation_runtime/modules/stage_request.jq")" = \ 6572a6ecbac332dc9c4a8ef35acd1feebdc2e8aab04941fc0b756f3a5cbcf29e ] && [ "$(sha256_path "$runtime/scripts/core-contract.sh")" = \ - bdb5def832e8e611bba8a7b30a2aae95ea4f2701c44b198cf51cd3dfd9ff88f3 ] + b081c7de1707a21bd948b998491caa7171084b15d9d95bceaae550cc7893fec9 ] } output="$scratch/output.json" @@ -280,9 +280,9 @@ verify_private_core || emit_error E_STALE [ "$(sha256_path "$runtime/bootstrap.sh")" = "$bootstrap_sha" ] && [ "$(sha256_path "$runtime/launcher.sh")" = "$launcher_sha" ] && [ "$(sha256_path "$runtime/driver.sh")" = \ - 10d3ad263f5757fc403ae6eb758fef630570e594b029cf2e314cda08dfb37de3 ] && + 5972a0a6ab7858815963717995d3d09561e76e2b7412ad1887252d83ad0db19b ] && [ "$(sha256_path "$runtime/program.jq")" = \ - 43f6e3fabe1bec7025fb6068ccbe3b034d3c16a0ac33d1a9d7de5757e1b92fa7 ] && + 722afbf8a20ecf6f1d61b045186dc97b22fea1457f167ec87ac5b31b317e34ae ] && [ "$(sha256_path "$runtime/jq")" = "$jq_sha" ] && [ "$(sha256_path /bin/bash)" = "$bash_sha" ] && [ "$(sha256_path "$scratch/input.json")" = "$snapshot_sha" ] && diff --git a/orchestrator/v1/state-scanner.jq b/orchestrator/v1/state-scanner.jq index 22772e5..7706f6c 100644 --- a/orchestrator/v1/state-scanner.jq +++ b/orchestrator/v1/state-scanner.jq @@ -16,11 +16,11 @@ def present_shape(value_ok): def expected_core: { generation_id_sha256: - "6f6acbbd0cf40ab3c913328d6c0070635424ffe920bcdb900fbd0718345d7137", + "84a153ba1d60f1763d5424c872256fc3337209678f4105cb0802958798bd19f5", package_ref:{ content_id:"core-contract-package.v2", media_type:"application/vnd.ystack.core-contract+json", - sha256:"2742f9c097943bb140cc0f19feda1e3b653ce95e699c570f9e9fc48825137c6c" + sha256:"eff044bdd6de0de71d5f8c5a58d889a122cd9efdf717b9f68713b47842fb0963" }, semantic_identity:"core.contracts.v2" }; @@ -29,22 +29,22 @@ def expected_core_closure: [ {path:"core/v2/generation-registry.json", sha256:"3950ce43c3073b97759db23fb7e4ce533cbc1d8a8fe4917db6ee1ee0a8e78f94"}, - {path:"core/v2/generations/g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e/contracts.jq", + {path:"core/v2/generations/g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43/contracts.jq", sha256:"65eb40b9afb9b4f1d809ed66d0f2ca625f656c34e856cedcde9cbbde857f0f0a"}, - {path:"core/v2/generations/g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e/core-ingress.sh", - sha256:"db87c6e97e93dc2a6eebd83087878c04f5528badc620d57fc9d883694e2ac28b"}, - {path:"core/v2/generations/g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e/modules/profile_graph.jq", + {path:"core/v2/generations/g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43/core-ingress.sh", + sha256:"dfdd273ea98f8737188a2a347151b3ffc0e631e222abfaac55391d58dd2618e8"}, + {path:"core/v2/generations/g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43/modules/profile_graph.jq", sha256:"c00f9cfbe88df5cb1dbcfbead61288ff7d68684d43d095e74f26e7820f0d7207"}, - {path:"core/v2/generations/g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e/modules/result_facts.jq", + {path:"core/v2/generations/g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43/modules/result_facts.jq", sha256:"8e49c2c091f1bbe525f7499e3fca072f6916a14d5bb34adbf121439e8ca2d281"}, - {path:"core/v2/generations/g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e/modules/result_truth.jq", - sha256:"ed992f26761d08e3c3f5ab57eda9bcd771ad59e3aebeb02643de88844184d2d3"}, - {path:"core/v2/generations/g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e/modules/schema.jq", + {path:"core/v2/generations/g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43/modules/result_truth.jq", + sha256:"ed4a9946a95ad0c701f74d6bd64c3b45264126927c2a53511d31c52241c7fd46"}, + {path:"core/v2/generations/g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43/modules/schema.jq", sha256:"8d1d02d36ac7ada778f05248f9413062b3fc251499914c15d79f003bbd009ade"}, - {path:"core/v2/generations/g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e/modules/stage_request.jq", + {path:"core/v2/generations/g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43/modules/stage_request.jq", sha256:"6572a6ecbac332dc9c4a8ef35acd1feebdc2e8aab04941fc0b756f3a5cbcf29e"}, {path:"scripts/core-contract.sh", - sha256:"bdb5def832e8e611bba8a7b30a2aae95ea4f2701c44b198cf51cd3dfd9ff88f3"} + sha256:"b081c7de1707a21bd948b998491caa7171084b15d9d95bceaae550cc7893fec9"} ]; def ref_shape($content_id; $media_type): diff --git a/scripts/core-contract.sh b/scripts/core-contract.sh index dcb0e85..1874812 100755 --- a/scripts/core-contract.sh +++ b/scripts/core-contract.sh @@ -204,7 +204,7 @@ shift assembly_inputs=("$@") PORTABLE_CORE_SCHEMA_MAJOR='2' -PORTABLE_CORE_GENERATION='g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e' +PORTABLE_CORE_GENERATION='g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43' assembly_source="${BASH_SOURCE[0]}" case "$assembly_source" in /*) ;; diff --git a/scripts/lib/profile-resolution.sh b/scripts/lib/profile-resolution.sh index 8154f06..966c0ae 100755 --- a/scripts/lib/profile-resolution.sh +++ b/scripts/lib/profile-resolution.sh @@ -1,13 +1,13 @@ #!/usr/bin/env bash # shellcheck disable=SC2016 -PROFILE_RESOLUTION_CORE_MERGE='3b7ceecb7fe6e94bee10404abdcc73ad0f0722f9' -PROFILE_RESOLUTION_CORE_GENERATION='g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e' -PROFILE_RESOLUTION_CORE_PUBLISHER_RECEIPT_SHA256='25772b9054b433a2c2a5e689aa2364700e2872f514d1e4319aa26c9bb1803d47' +PROFILE_RESOLUTION_CORE_MERGE='6a9904e6fc3eb70b76e92f3c2f5a37d5a4bf3edf' +PROFILE_RESOLUTION_CORE_GENERATION='g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43' +PROFILE_RESOLUTION_CORE_PUBLISHER_RECEIPT_SHA256='00bd57c0dc3aa6e29bd123c14a18850ffd3432b4a32a6177a86eff6532792d78' PROFILE_RESOLUTION_CONTRACTS_BLOB='8efe7582480d179463e0e88aac9a7874689786d1' -PROFILE_RESOLUTION_WRAPPER_BLOB='dcb0e8500e52dd129c6aae9451049d563720b2ee' +PROFILE_RESOLUTION_WRAPPER_BLOB='18748127ead49a22717723e9860210940010d84e' PROFILE_RESOLUTION_REGISTRY_BLOB='0bc09fa56047b2e3fdecf22559f68468f0528797' -PROFILE_RESOLUTION_INGRESS_BLOB='9ddaf700594266d67aeb17c881dea04236d5015f' +PROFILE_RESOLUTION_INGRESS_BLOB='973f5c3808ffbbda23471b2dbdd7b221cb4d0599' PROFILE_RESOLUTION_SCHEMA_MAJOR='2' PROFILE_RESOLUTION_GLOBAL_LIMIT=536870912 PROFILE_RESOLUTION_DIAGNOSTIC_RESERVE=256 @@ -700,9 +700,9 @@ profile_resolution_main() { profile_resolution_error E_RUNTIME binding return 1 } - [ "$PROFILE_RESOLUTION_CORE_MERGE" = 3b7ceecb7fe6e94bee10404abdcc73ad0f0722f9 ] && - [ "$PROFILE_RESOLUTION_CORE_GENERATION" = g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e ] && - [ "$PROFILE_RESOLUTION_CORE_PUBLISHER_RECEIPT_SHA256" = 25772b9054b433a2c2a5e689aa2364700e2872f514d1e4319aa26c9bb1803d47 ] && + [ "$PROFILE_RESOLUTION_CORE_MERGE" = 6a9904e6fc3eb70b76e92f3c2f5a37d5a4bf3edf ] && + [ "$PROFILE_RESOLUTION_CORE_GENERATION" = g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43 ] && + [ "$PROFILE_RESOLUTION_CORE_PUBLISHER_RECEIPT_SHA256" = 00bd57c0dc3aa6e29bd123c14a18850ffd3432b4a32a6177a86eff6532792d78 ] && [ "$PROFILE_RESOLUTION_SCHEMA_MAJOR" = 2 ] || { profile_resolution_error E_RUNTIME binding return 1 diff --git a/scripts/test/orchestrator-state-scanner.test.sh b/scripts/test/orchestrator-state-scanner.test.sh index 3d4a1f9..a876238 100755 --- a/scripts/test/orchestrator-state-scanner.test.sh +++ b/scripts/test/orchestrator-state-scanner.test.sh @@ -92,9 +92,9 @@ expect_class() { (.body.evaluator.content.body.bootstrap_ref.sha256 | test("^[0-9a-f]{64}$")) and .body.evaluator.content.body.program_ref.sha256 == - "43f6e3fabe1bec7025fb6068ccbe3b034d3c16a0ac33d1a9d7de5757e1b92fa7" and + "722afbf8a20ecf6f1d61b045186dc97b22fea1457f167ec87ac5b31b317e34ae" and .body.evaluator.content.body.driver_ref.sha256 == - "10d3ad263f5757fc403ae6eb758fef630570e594b029cf2e314cda08dfb37de3" and + "5972a0a6ab7858815963717995d3d09561e76e2b7412ad1887252d83ad0db19b" and .body.evaluator.content.body.runtime.host_architecture == $host_arch and .body.evaluator.content.body.runtime.execution_mode == $execution_mode and (.body.evaluator.content.body.core_closure | length) == 9 and @@ -229,10 +229,10 @@ make_snapshot() { id:"snapshot.example", body:{ core_contract:{ - generation_id_sha256:"6f6acbbd0cf40ab3c913328d6c0070635424ffe920bcdb900fbd0718345d7137", + generation_id_sha256:"84a153ba1d60f1763d5424c872256fc3337209678f4105cb0802958798bd19f5", package_ref:{content_id:"core-contract-package.v2", media_type:"application/vnd.ystack.core-contract+json", - sha256:"2742f9c097943bb140cc0f19feda1e3b653ce95e699c570f9e9fc48825137c6c"}, + sha256:"eff044bdd6de0de71d5f8c5a58d889a122cd9efdf717b9f68713b47842fb0963"}, semantic_identity:"core.contracts.v2" }, items:[{ @@ -535,17 +535,17 @@ link="$tmp/input-link.json" expect_error symlink-input E_RUNTIME "$link" copy_root="$tmp/scanner-copy" -copy_modules="$copy_root/core/v2/generations/g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e/modules" +copy_modules="$copy_root/core/v2/generations/g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43/modules" /bin/mkdir -p "$copy_root/orchestrator/v1" "$copy_modules" "$copy_root/scripts" /bin/cp "$root/orchestrator/v1/scan-state.sh" \ "$root/orchestrator/v1/state-scanner-launcher.sh" \ "$root/orchestrator/v1/state-scanner-driver.sh" \ "$root/orchestrator/v1/state-scanner.jq" "$copy_root/orchestrator/v1/" /bin/cp "$root/core/v2/generation-registry.json" "$copy_root/core/v2/" -/bin/cp "$root/core/v2/generations/g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e/contracts.jq" \ - "$root/core/v2/generations/g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e/core-ingress.sh" \ - "$copy_root/core/v2/generations/g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e/" -/bin/cp "$root/core/v2/generations/g-392d20099dfa99872764009b268c8871914b4dbc0da467ec346baa921818ae3e/modules/"*.jq \ +/bin/cp "$root/core/v2/generations/g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43/contracts.jq" \ + "$root/core/v2/generations/g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43/core-ingress.sh" \ + "$copy_root/core/v2/generations/g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43/" +/bin/cp "$root/core/v2/generations/g-c83c940afd16550a4f8a4dbee2b9a6f37e429063d277962ba81c141ba5303b43/modules/"*.jq \ "$copy_modules/" /bin/cp "$root/scripts/core-contract.sh" "$copy_root/scripts/" /bin/chmod 0500 "$copy_root/orchestrator/v1/scan-state.sh" diff --git a/scripts/test/portable-core-schema.test.sh b/scripts/test/portable-core-schema.test.sh index 8e39cc6..e62d309 100755 --- a/scripts/test/portable-core-schema.test.sh +++ b/scripts/test/portable-core-schema.test.sh @@ -632,7 +632,7 @@ schema_activation_state_ok() { [ "$(grep -Ec "^PORTABLE_CORE_SCHEMA_MAJOR='[12]'$" "$wrapper")" -eq 1 ] && [ "$(grep -Ec "^PORTABLE_CORE_GENERATION='g-[0-9a-f]{64}'$" "$wrapper")" -eq 1 ] && [ "$selected_major" = 2 ] && - [ "$selected_generation" = "$schema_v2_generation" ] && + [ "$selected_generation" = "$schema_v2_corrective_generation" ] && grep -Fq "\"generation_id\":\"$selected_generation\"" "$selected_registry" && [ -d "$selected_root/modules" ] && [ ! -L "$selected_root/modules" ] && [ -f "$selected_root/contracts.jq" ] && [ ! -L "$selected_root/contracts.jq" ] && @@ -895,15 +895,8 @@ fi schema_v2_expected_live_hits="$schema_test_tmp/v2-expected-live-hits" printf '%s\n' \ ci/required-files.txt \ - control/v1/control-policy-set.json \ core/v2/generation-registry.json \ "core/v2/generations/$schema_v2_generation/core-ingress.sh" \ - orchestrator/v1/state-scanner-driver.sh \ - orchestrator/v1/state-scanner-launcher.sh \ - orchestrator/v1/state-scanner.jq \ - scripts/core-contract.sh \ - scripts/lib/profile-resolution.sh \ - scripts/test/orchestrator-state-scanner.test.sh \ scripts/test/portable-core-schema.test.sh \ scripts/test/portable-core-v2-evidence-identity.test.sh \ scripts/test/portable-core-v2-fake-forge.test.sh > \ @@ -925,8 +918,15 @@ done < <(git -C "$schema_root" ls-files -z) schema_v2_corrective_expected_hits="$schema_test_tmp/v2-corrective-expected-hits" printf '%s\n' \ ci/required-files.txt \ + control/v1/control-policy-set.json \ core/v2/generation-registry.json \ "core/v2/generations/$schema_v2_corrective_generation/core-ingress.sh" \ + orchestrator/v1/state-scanner-driver.sh \ + orchestrator/v1/state-scanner-launcher.sh \ + orchestrator/v1/state-scanner.jq \ + scripts/core-contract.sh \ + scripts/lib/profile-resolution.sh \ + scripts/test/orchestrator-state-scanner.test.sh \ scripts/test/portable-core-schema.test.sh \ scripts/test/portable-core-v2-evidence-identity.test.sh > \ "$schema_v2_corrective_expected_hits" diff --git a/scripts/test/portable-core-v2-fake-forge.test.sh b/scripts/test/portable-core-v2-fake-forge.test.sh index 3760758..f173bdb 100755 --- a/scripts/test/portable-core-v2-fake-forge.test.sh +++ b/scripts/test/portable-core-v2-fake-forge.test.sh @@ -470,11 +470,13 @@ check v1-tree-unchanged test \ 4af76e02fc8b86ead009156bf165ee700aabe7f8 check wrapper-known test \ "$(git -C "$test_root" hash-object scripts/core-contract.sh)" = \ - dcb0e8500e52dd129c6aae9451049d563720b2ee + 18748127ead49a22717723e9860210940010d84e check schema-major-selected grep -Fxq \ "PORTABLE_CORE_SCHEMA_MAJOR='2'" "$wrapper" -check generation-selected grep -Fxq \ - "PORTABLE_CORE_GENERATION='${generation_id}'" "$wrapper" +selected_generation_id="$(sed -n \ + "s/^PORTABLE_CORE_GENERATION='\(g-[0-9a-f]\{64\}\)'$/\1/p" "$wrapper")" +check generation-selected "${jq_command[@]}" -e \ + --arg selected "$selected_generation_id" '.[1].generation_id == $selected' "$registry" check wrapper-document "$wrapper" validate-document "$forge_manifest" check wrapper-profile-set "$wrapper" validate-profile-set \ "$profile_file" "$resolved_file" "${manifest_files[@]}" @@ -533,7 +535,7 @@ done check readme-inactive grep -Fq \ 'Inactive portable core v2 fake-forge contract' "$test_root/README.md" check restore-inactive grep -Eq \ - 'core/v2/.*inactive.*fake-forge|inactive.*fake-forge.*core/v2/' \ + 'core/v2/.*append-only inactive generations' \ "$test_root/RESTORE.md" check readme-no-real-qualification grep -Fq \ 'not qualified for a real forge' "$test_root/README.md"