diff --git a/.pdd/sync-ownership.json b/.pdd/sync-ownership.json index ca1075838..f47f9508f 100644 --- a/.pdd/sync-ownership.json +++ b/.pdd/sync-ownership.json @@ -13059,31 +13059,31 @@ { "inventory": "HUMAN_OWNED", "owner": "pdd-maintainers", - "pattern": "tests/test_sync_core_certificate.py", + "pattern": "tests/test_sync_core_descriptor_store.py", "role": "human-maintained" }, { "inventory": "HUMAN_OWNED", "owner": "pdd-maintainers", - "pattern": "tests/test_sync_core_certificate_verifier.py", + "pattern": "tests/test_sync_core_certificate.py", "role": "human-maintained" }, { "inventory": "HUMAN_OWNED", "owner": "pdd-maintainers", - "pattern": "tests/test_sync_core_classifier.py", + "pattern": "tests/test_sync_core_certificate_verifier.py", "role": "human-maintained" }, { "inventory": "HUMAN_OWNED", "owner": "pdd-maintainers", - "pattern": "tests/test_sync_core_cli.py", + "pattern": "tests/test_sync_core_classifier.py", "role": "human-maintained" }, { "inventory": "HUMAN_OWNED", "owner": "pdd-maintainers", - "pattern": "tests/test_sync_core_descriptor_store.py", + "pattern": "tests/test_sync_core_cli.py", "role": "human-maintained" }, { diff --git a/.pdd/verification-profile-rotations.json b/.pdd/verification-profile-rotations.json new file mode 100644 index 000000000..58cf86749 --- /dev/null +++ b/.pdd/verification-profile-rotations.json @@ -0,0 +1,11 @@ +{ + "schema_version": 1, + "rotations": [ + { + "obligation_id": "threshold-human-attestation", + "validator_id": "threshold-ed25519", + "from_config_digest": "threshold-ed25519-v1", + "policy_path": ".pdd/attestation-trust.json" + } + ] +} diff --git a/.pdd/verification-profiles.json b/.pdd/verification-profiles.json new file mode 100644 index 000000000..b9b9c0c93 --- /dev/null +++ b/.pdd/verification-profiles.json @@ -0,0 +1,10309 @@ +{ + "schema_version": 1, + "profiles": [ + { + "prompt_path": "pdd/prompts/Makefile_makefile.prompt", + "language_id": "makefile", + "required_requirement_ids": [ + "CONTRACT-SHA256:659d488f7a9f0ac63d36eb606970c22a4b328125090603a1c24b9d75a2c18a83" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:659d488f7a9f0ac63d36eb606970c22a4b328125090603a1c24b9d75a2c18a83" + ], + "artifact_paths": [ + "pdd/prompts/Makefile_makefile.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/_keyring_timeout_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:c1d6ad5bd2738d409477c01e5a7f9bad9a1c58d62ca6fb7d021f9b94c30d7bbb" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:c1d6ad5bd2738d409477c01e5a7f9bad9a1c58d62ca6fb7d021f9b94c30d7bbb" + ], + "artifact_paths": [ + "pdd/prompts/_keyring_timeout_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_arch_step10_completeness_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:d22a0fc46c7a18c0b2a5f47e29c197543078c7d7c287cfe2a691236d8f7c563e" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:d22a0fc46c7a18c0b2a5f47e29c197543078c7d7c287cfe2a691236d8f7c563e" + ], + "artifact_paths": [ + "pdd/prompts/agentic_arch_step10_completeness_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_arch_step11_sync_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:f62e774fddadef85383f50e9440f7321424a0a1e3567a76150e73ba3a6cef38e" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:f62e774fddadef85383f50e9440f7321424a0a1e3567a76150e73ba3a6cef38e" + ], + "artifact_paths": [ + "pdd/prompts/agentic_arch_step11_sync_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_arch_step12_deps_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:1e05d05c0a5e2228d399b467b09af26259d24edb9c10582d26512ba8c09741f6" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:1e05d05c0a5e2228d399b467b09af26259d24edb9c10582d26512ba8c09741f6" + ], + "artifact_paths": [ + "pdd/prompts/agentic_arch_step12_deps_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_arch_step13_fix_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:59f757132da8cb6037b74e009b6ce8e539e1c45eb28887d0ffbc55483052f8fd" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:59f757132da8cb6037b74e009b6ce8e539e1c45eb28887d0ffbc55483052f8fd" + ], + "artifact_paths": [ + "pdd/prompts/agentic_arch_step13_fix_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_arch_step1_analyze_prd_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:11c1350711a4440db226dbd05661afbf6e08d1a2cc000f46fff28cec89e82d51" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:11c1350711a4440db226dbd05661afbf6e08d1a2cc000f46fff28cec89e82d51" + ], + "artifact_paths": [ + "pdd/prompts/agentic_arch_step1_analyze_prd_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_arch_step1b_complexity_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:777dcc4c7e7f1574ce53580f99c9008515a7032c5db013c39a653106c1cf7c88" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:777dcc4c7e7f1574ce53580f99c9008515a7032c5db013c39a653106c1cf7c88" + ], + "artifact_paths": [ + "pdd/prompts/agentic_arch_step1b_complexity_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_arch_step2_analyze_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:1a1fedda138d0620ab7b847eed26d03904df74f1b5232e33d72853b865e6f529" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:1a1fedda138d0620ab7b847eed26d03904df74f1b5232e33d72853b865e6f529" + ], + "artifact_paths": [ + "pdd/prompts/agentic_arch_step2_analyze_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_arch_step2b_codebase_scan_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:d5f087187ef89aa1e5ced0ea1d6070399bef71129ac10b4cdb6ebe37b3496ea0" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:d5f087187ef89aa1e5ced0ea1d6070399bef71129ac10b4cdb6ebe37b3496ea0" + ], + "artifact_paths": [ + "pdd/prompts/agentic_arch_step2b_codebase_scan_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_arch_step3_research_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:34d9274ef2cb43295a27bd4cd2b6e055fdef1b368c03ed879e86e1261ea5bc9c" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:34d9274ef2cb43295a27bd4cd2b6e055fdef1b368c03ed879e86e1261ea5bc9c" + ], + "artifact_paths": [ + "pdd/prompts/agentic_arch_step3_research_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_arch_step4_data_model_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:ea429441cb0fad2ea225dbe722ae26830c3eec0c89b53effa85d3b289ece15af" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:ea429441cb0fad2ea225dbe722ae26830c3eec0c89b53effa85d3b289ece15af" + ], + "artifact_paths": [ + "pdd/prompts/agentic_arch_step4_data_model_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_arch_step5_design_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:85775cafc9a1eb3388c9457354498c9e2e577f897be1483520e225338080b83a" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:85775cafc9a1eb3388c9457354498c9e2e577f897be1483520e225338080b83a" + ], + "artifact_paths": [ + "pdd/prompts/agentic_arch_step5_design_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_arch_step5b_completeness_gate_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:d974417304ea26e5e2ed43ae966120fe8b7917c8d2104b26be6d67158a2dee83" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:d974417304ea26e5e2ed43ae966120fe8b7917c8d2104b26be6d67158a2dee83" + ], + "artifact_paths": [ + "pdd/prompts/agentic_arch_step5b_completeness_gate_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_arch_step5b_fix_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:48db27212624feff103d9eaac3c2c32dfd1e49e6a0e7e7fa32395ef106ad31dd" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:48db27212624feff103d9eaac3c2c32dfd1e49e6a0e7e7fa32395ef106ad31dd" + ], + "artifact_paths": [ + "pdd/prompts/agentic_arch_step5b_fix_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_arch_step6_research_deps_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:773090265e2ed525bec6e74bf6b04004ef654b70495a7db6eaba18d3c3bb8206" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:773090265e2ed525bec6e74bf6b04004ef654b70495a7db6eaba18d3c3bb8206" + ], + "artifact_paths": [ + "pdd/prompts/agentic_arch_step6_research_deps_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_arch_step7_generate_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:2182fe9a2dd18081ea334b9b3a3062972b92ea5ee6fea234c27917e17f4a24a5" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:2182fe9a2dd18081ea334b9b3a3062972b92ea5ee6fea234c27917e17f4a24a5" + ], + "artifact_paths": [ + "pdd/prompts/agentic_arch_step7_generate_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_arch_step7b_review_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:05bc154afebad99888e4d5babc0e413688777d02bb8d396009080f3a6eae1524" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:05bc154afebad99888e4d5babc0e413688777d02bb8d396009080f3a6eae1524" + ], + "artifact_paths": [ + "pdd/prompts/agentic_arch_step7b_review_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_arch_step8_5_context_docs_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:265bc42672251e48cf25f28101f9de61e8cb122285e01d5752a8eea329ab19db" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:265bc42672251e48cf25f28101f9de61e8cb122285e01d5752a8eea329ab19db" + ], + "artifact_paths": [ + "pdd/prompts/agentic_arch_step8_5_context_docs_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_arch_step8_pddrc_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:f32a627703faf114608eead0aaa5bb66bf7f770376978c04a0273d5851852441" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:f32a627703faf114608eead0aaa5bb66bf7f770376978c04a0273d5851852441" + ], + "artifact_paths": [ + "pdd/prompts/agentic_arch_step8_pddrc_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_arch_step9_prompts_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:ca20e9f608e52ba1786733748ebe773246fa29122ee60c4ee7489707763821bf" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:ca20e9f608e52ba1786733748ebe773246fa29122ee60c4ee7489707763821bf" + ], + "artifact_paths": [ + "pdd/prompts/agentic_arch_step9_prompts_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_arch_step9b_cross_audit_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:e7509c8187b3672a1564fd2e476111bb45e3005376c5d8463d77f5e37b214b76" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:e7509c8187b3672a1564fd2e476111bb45e3005376c5d8463d77f5e37b214b76" + ], + "artifact_paths": [ + "pdd/prompts/agentic_arch_step9b_cross_audit_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_architecture_orchestrator_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:970bd3a10391c1ed87995920e3c25ee3a67844db4796c3e6104573774f47dee4" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:970bd3a10391c1ed87995920e3c25ee3a67844db4796c3e6104573774f47dee4" + ], + "artifact_paths": [ + "pdd/prompts/agentic_architecture_orchestrator_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_architecture_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:2c9c70c851e1af7c0af70a9c9ce960f96a6c3bcce7edadef570457bed96987d4" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:2c9c70c851e1af7c0af70a9c9ce960f96a6c3bcce7edadef570457bed96987d4" + ], + "artifact_paths": [ + "pdd/prompts/agentic_architecture_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_bug_orchestrator_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:80577f381e7185bd9a77f32b8be81079166b5881e5ca148cdab020dcb7069e11" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:80577f381e7185bd9a77f32b8be81079166b5881e5ca148cdab020dcb7069e11" + ], + "artifact_paths": [ + "pdd/prompts/agentic_bug_orchestrator_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_bug_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:69d4ed5414308b798e15c33f41cb762ede36fe648bd646a5980068fa115f2f5a" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:69d4ed5414308b798e15c33f41cb762ede36fe648bd646a5980068fa115f2f5a" + ], + "artifact_paths": [ + "pdd/prompts/agentic_bug_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_bug_step10_verify_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:0a4e41083239191a5896e181ad1e18c2ff5d96b88bfb2936c3fa5a57341166e1" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:0a4e41083239191a5896e181ad1e18c2ff5d96b88bfb2936c3fa5a57341166e1" + ], + "artifact_paths": [ + "pdd/prompts/agentic_bug_step10_verify_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_bug_step11_e2e_test_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:25d5bb9072b88dde1246a3be0e6decc73e5af40d20dfbcb945a516580c732322" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:25d5bb9072b88dde1246a3be0e6decc73e5af40d20dfbcb945a516580c732322" + ], + "artifact_paths": [ + "pdd/prompts/agentic_bug_step11_e2e_test_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_bug_step12_pr_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:4ca9105e58d29ea17f6f17370e1f009dcf2e58e2ece6feca7a1584a06122c55a" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:4ca9105e58d29ea17f6f17370e1f009dcf2e58e2ece6feca7a1584a06122c55a" + ], + "artifact_paths": [ + "pdd/prompts/agentic_bug_step12_pr_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_bug_step1_duplicate_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:5b78c56560fbda95c2be8b3016f8da7126b612bec645ff30889c3226947287de" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:5b78c56560fbda95c2be8b3016f8da7126b612bec645ff30889c3226947287de" + ], + "artifact_paths": [ + "pdd/prompts/agentic_bug_step1_duplicate_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_bug_step2_docs_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:ac39af350300051717202c96016570db68a3f494a0cafb784ab8f4f8ca5f184c" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:ac39af350300051717202c96016570db68a3f494a0cafb784ab8f4f8ca5f184c" + ], + "artifact_paths": [ + "pdd/prompts/agentic_bug_step2_docs_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_bug_step3_triage_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:819d9952d70a60315d4bd0c719702b87418190c06d1413600bc5aa15b6d2e262" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:819d9952d70a60315d4bd0c719702b87418190c06d1413600bc5aa15b6d2e262" + ], + "artifact_paths": [ + "pdd/prompts/agentic_bug_step3_triage_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_bug_step4_api_research_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:c991bdbb13b2506b4a41aef55bfcd8eebc113bc05eadd2634bbce4ffd79b4944" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:c991bdbb13b2506b4a41aef55bfcd8eebc113bc05eadd2634bbce4ffd79b4944" + ], + "artifact_paths": [ + "pdd/prompts/agentic_bug_step4_api_research_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_bug_step5_reproduce_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:ee2c4496f9c5d045f2e1b3b8f1b6f95d3b68c09963291b43770ad7fb3ac55f82" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:ee2c4496f9c5d045f2e1b3b8f1b6f95d3b68c09963291b43770ad7fb3ac55f82" + ], + "artifact_paths": [ + "pdd/prompts/agentic_bug_step5_reproduce_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_bug_step6_root_cause_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:cb9608214aeee96b2371968c3175f1e56ff376de6b46d58c347a4297ed02cb7a" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:cb9608214aeee96b2371968c3175f1e56ff376de6b46d58c347a4297ed02cb7a" + ], + "artifact_paths": [ + "pdd/prompts/agentic_bug_step6_root_cause_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_bug_step7_prompt_classification_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:add1344ec140f8a736a74cdcfc4e35a9ba0223691dcc74b1c76479799c5050ed" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:add1344ec140f8a736a74cdcfc4e35a9ba0223691dcc74b1c76479799c5050ed" + ], + "artifact_paths": [ + "pdd/prompts/agentic_bug_step7_prompt_classification_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_bug_step8_test_plan_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:60ecaa869b1e8963d009917ba05c45da67a4f65d767234532b6e14a48f1c8779" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:60ecaa869b1e8963d009917ba05c45da67a4f65d767234532b6e14a48f1c8779" + ], + "artifact_paths": [ + "pdd/prompts/agentic_bug_step8_test_plan_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_bug_step9_generate_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:35a2b4a32db851c35882c976968258350c6e4d7598bd883038b8353eda56e4be" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:35a2b4a32db851c35882c976968258350c6e4d7598bd883038b8353eda56e4be" + ], + "artifact_paths": [ + "pdd/prompts/agentic_bug_step9_generate_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_change_orchestrator_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:868b316bb60d886ebf0be7f52fb940296abd11804606bde83b841f812bf660d8" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:868b316bb60d886ebf0be7f52fb940296abd11804606bde83b841f812bf660d8" + ], + "artifact_paths": [ + "pdd/prompts/agentic_change_orchestrator_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_change_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:6d2f1c979d2c808521976746e33ca092f18df393a03fb7c3b15981e322b8fafd" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:6d2f1c979d2c808521976746e33ca092f18df393a03fb7c3b15981e322b8fafd" + ], + "artifact_paths": [ + "pdd/prompts/agentic_change_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_change_step10_architecture_update_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:5b63542d0345094c26fd233a6fcd8c2179fb9eb10d0666a28f9e2fb29be221de" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:5b63542d0345094c26fd233a6fcd8c2179fb9eb10d0666a28f9e2fb29be221de" + ], + "artifact_paths": [ + "pdd/prompts/agentic_change_step10_architecture_update_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_change_step11_identify_issues_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:d990c314472dc2a48aa41ef4f6d43a3f707a2bdb10dfe84264d468026b29034e" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:d990c314472dc2a48aa41ef4f6d43a3f707a2bdb10dfe84264d468026b29034e" + ], + "artifact_paths": [ + "pdd/prompts/agentic_change_step11_identify_issues_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_change_step12_fix_issues_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:6923d780c499ee7bb8e65faf22277e0f3f2b177c1364d9bdcd2f243908676dbd" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:6923d780c499ee7bb8e65faf22277e0f3f2b177c1364d9bdcd2f243908676dbd" + ], + "artifact_paths": [ + "pdd/prompts/agentic_change_step12_fix_issues_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_change_step13_create_pr_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:8ceec218d091e4a288d20adbdb362e4355749b549018afc30285f26c5b2798d3" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:8ceec218d091e4a288d20adbdb362e4355749b549018afc30285f26c5b2798d3" + ], + "artifact_paths": [ + "pdd/prompts/agentic_change_step13_create_pr_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_change_step1_duplicate_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:4a503526daa64ccf325bda9a7c4b47cef12a251fc121af0779e4b31f0726488e" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:4a503526daa64ccf325bda9a7c4b47cef12a251fc121af0779e4b31f0726488e" + ], + "artifact_paths": [ + "pdd/prompts/agentic_change_step1_duplicate_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_change_step2_docs_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:93b88dcd41164821de0408c1b5f4b01074e345520598c547464b7ac85ebe6667" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:93b88dcd41164821de0408c1b5f4b01074e345520598c547464b7ac85ebe6667" + ], + "artifact_paths": [ + "pdd/prompts/agentic_change_step2_docs_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_change_step3_research_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:1287b708c97ca711d26a06d60829c0319bacd18178c7a6f7c45ca7fb8280d760" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:1287b708c97ca711d26a06d60829c0319bacd18178c7a6f7c45ca7fb8280d760" + ], + "artifact_paths": [ + "pdd/prompts/agentic_change_step3_research_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_change_step4_clarify_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:86e03d760b9b81c1cce25d8b779e01843e8ac1baa878c453b1719487438c722f" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:86e03d760b9b81c1cce25d8b779e01843e8ac1baa878c453b1719487438c722f" + ], + "artifact_paths": [ + "pdd/prompts/agentic_change_step4_clarify_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_change_step5_docs_change_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:e0e9fed691aaeafde95a2da60919001d10139284369995a736286f733b7df757" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:e0e9fed691aaeafde95a2da60919001d10139284369995a736286f733b7df757" + ], + "artifact_paths": [ + "pdd/prompts/agentic_change_step5_docs_change_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_change_step6_devunits_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:406e0a91158f443228a7864f30c91d7eb3f383654160286842e1ed1b1df67094" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:406e0a91158f443228a7864f30c91d7eb3f383654160286842e1ed1b1df67094" + ], + "artifact_paths": [ + "pdd/prompts/agentic_change_step6_devunits_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_change_step7_architecture_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:c3f8a286af0b078b7f358744f9c8115fb4c1d2d5f9e206ec491b4ded9df1ba59" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:c3f8a286af0b078b7f358744f9c8115fb4c1d2d5f9e206ec491b4ded9df1ba59" + ], + "artifact_paths": [ + "pdd/prompts/agentic_change_step7_architecture_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_change_step8_analyze_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:ecf7b2b895bdcff901f3bbc629114d3aafe7679b377870c1aa31a68ce56293bb" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:ecf7b2b895bdcff901f3bbc629114d3aafe7679b377870c1aa31a68ce56293bb" + ], + "artifact_paths": [ + "pdd/prompts/agentic_change_step8_analyze_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_change_step9_implement_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:002d8b4b97c8744bf471eca946e635df84513eaf535833f4a2b8e028e6667440" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:002d8b4b97c8744bf471eca946e635df84513eaf535833f4a2b8e028e6667440" + ], + "artifact_paths": [ + "pdd/prompts/agentic_change_step9_implement_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_checkup_orchestrator_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:fc372c0369c895e42b4bb8f9277560facf086d999233d88bef8401766bccdf34" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:fc372c0369c895e42b4bb8f9277560facf086d999233d88bef8401766bccdf34" + ], + "artifact_paths": [ + "pdd/prompts/agentic_checkup_orchestrator_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_checkup_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:fef53dad8950c06cc11e41265956a2ee174a90ff9e4985d7f30610f18c47b08b" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:fef53dad8950c06cc11e41265956a2ee174a90ff9e4985d7f30610f18c47b08b" + ], + "artifact_paths": [ + "pdd/prompts/agentic_checkup_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_checkup_step1_discover_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:b1e764771328c89fd63c8fa4b1bbb86debb9cd34586991f2b108b9b164335e7f" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:b1e764771328c89fd63c8fa4b1bbb86debb9cd34586991f2b108b9b164335e7f" + ], + "artifact_paths": [ + "pdd/prompts/agentic_checkup_step1_discover_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_checkup_step2_deps_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:1815a69c872c5bd68e908ddee859145d24ac5415aefa4b37f5a968c1abd5c084" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:1815a69c872c5bd68e908ddee859145d24ac5415aefa4b37f5a968c1abd5c084" + ], + "artifact_paths": [ + "pdd/prompts/agentic_checkup_step2_deps_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_checkup_step3_build_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:563d810b42a7f72db6751ae8b1ea401f660ebdbd7c0e327f808cc6dcb04939f2" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:563d810b42a7f72db6751ae8b1ea401f660ebdbd7c0e327f808cc6dcb04939f2" + ], + "artifact_paths": [ + "pdd/prompts/agentic_checkup_step3_build_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_checkup_step4_interfaces_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:428685b7f4e5e384617c4548075a8ded7dc3c3a5ded288444d0b6038d75cf704" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:428685b7f4e5e384617c4548075a8ded7dc3c3a5ded288444d0b6038d75cf704" + ], + "artifact_paths": [ + "pdd/prompts/agentic_checkup_step4_interfaces_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_checkup_step5_test_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:59992de8cffe040274e45ccc6ea1bea48772b75d9efd9ba744e117d79f3d50f9" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:59992de8cffe040274e45ccc6ea1bea48772b75d9efd9ba744e117d79f3d50f9" + ], + "artifact_paths": [ + "pdd/prompts/agentic_checkup_step5_test_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_checkup_step6_1_fix_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:06f45aca3883f78f46fa9bdf37140b63aa3a41db27086aedba60abc9f480ade2" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:06f45aca3883f78f46fa9bdf37140b63aa3a41db27086aedba60abc9f480ade2" + ], + "artifact_paths": [ + "pdd/prompts/agentic_checkup_step6_1_fix_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_checkup_step6_2_regression_tests_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:b2253412164e803a93e6dd73abf8c4a0342af68f1ef94149096112252654b93d" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:b2253412164e803a93e6dd73abf8c4a0342af68f1ef94149096112252654b93d" + ], + "artifact_paths": [ + "pdd/prompts/agentic_checkup_step6_2_regression_tests_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_checkup_step6_3_e2e_tests_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:7f686093bfe73ab67b4e27fc878bc48706276732feb5670f34f7aa463e65e355" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:7f686093bfe73ab67b4e27fc878bc48706276732feb5670f34f7aa463e65e355" + ], + "artifact_paths": [ + "pdd/prompts/agentic_checkup_step6_3_e2e_tests_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_checkup_step7_verify_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:8f9c67d88bc40a597a6b4cf6bbbbfb489277c50190a5a477b827cd3a6ef7246d" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:8f9c67d88bc40a597a6b4cf6bbbbfb489277c50190a5a477b827cd3a6ef7246d" + ], + "artifact_paths": [ + "pdd/prompts/agentic_checkup_step7_verify_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_checkup_step8_create_pr_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:29325d4d375de76bf8d3dbdb1477520210a2ce0fceafd396919ce4d7398c6fe4" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:29325d4d375de76bf8d3dbdb1477520210a2ce0fceafd396919ce4d7398c6fe4" + ], + "artifact_paths": [ + "pdd/prompts/agentic_checkup_step8_create_pr_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_common_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:8e725cd33c219ba93c8021e0787decbb31e71bc9d40b14dd512f10aba4a2f6b1" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:8e725cd33c219ba93c8021e0787decbb31e71bc9d40b14dd512f10aba4a2f6b1" + ], + "artifact_paths": [ + "pdd/prompts/agentic_common_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_common_worktree_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:ab3ac790e831f5b8f562f87e0440c79cba76013c5a3c66af1be8c188b1e3c540" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:ab3ac790e831f5b8f562f87e0440c79cba76013c5a3c66af1be8c188b1e3c540" + ], + "artifact_paths": [ + "pdd/prompts/agentic_common_worktree_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_crash_explore_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:1a63eddbf271c5976841de535dcc518db58a5b4b5a61b7a6c08472458ad9ed3c" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:1a63eddbf271c5976841de535dcc518db58a5b4b5a61b7a6c08472458ad9ed3c" + ], + "artifact_paths": [ + "pdd/prompts/agentic_crash_explore_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_crash_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:add86ea3aa8731787e3a4e8d224a25605e7bcb8dcf4705d977b6b1f460f9dde1" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:add86ea3aa8731787e3a4e8d224a25605e7bcb8dcf4705d977b6b1f460f9dde1" + ], + "artifact_paths": [ + "pdd/prompts/agentic_crash_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_e2e_fix_orchestrator_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:179b3c8cba5ce703f943a0ebcf6f7c540d34d23e50506e7456d0aebec640726c" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:179b3c8cba5ce703f943a0ebcf6f7c540d34d23e50506e7456d0aebec640726c" + ], + "artifact_paths": [ + "pdd/prompts/agentic_e2e_fix_orchestrator_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_e2e_fix_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:c1c16462e1a3c561c89c2cccfc514d1aa21a71dcdcccd238f514f8f0e33fc55f" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:c1c16462e1a3c561c89c2cccfc514d1aa21a71dcdcccd238f514f8f0e33fc55f" + ], + "artifact_paths": [ + "pdd/prompts/agentic_e2e_fix_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_e2e_fix_step10_ci_validation_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:7ef7478c88c23f5a7ffc7cc3165936a67c65fd92fad1fc8ed3c3c0cef786cb79" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:7ef7478c88c23f5a7ffc7cc3165936a67c65fd92fad1fc8ed3c3c0cef786cb79" + ], + "artifact_paths": [ + "pdd/prompts/agentic_e2e_fix_step10_ci_validation_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_e2e_fix_step11_code_cleanup_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:50722bfa4a3d75f3fc559f851254744be7c3e912977bf35a606b696ef2e19480" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:50722bfa4a3d75f3fc559f851254744be7c3e912977bf35a606b696ef2e19480" + ], + "artifact_paths": [ + "pdd/prompts/agentic_e2e_fix_step11_code_cleanup_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_e2e_fix_step1_unit_tests_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:c033c5abac4bd905b228eff1caf9e091af8e719361f3d68ecc17b3d4d0bfa4bd" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:c033c5abac4bd905b228eff1caf9e091af8e719361f3d68ecc17b3d4d0bfa4bd" + ], + "artifact_paths": [ + "pdd/prompts/agentic_e2e_fix_step1_unit_tests_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_e2e_fix_step2_e2e_tests_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:47b90ce2c5290d87b8df124724e29881911c8f9314ae8a3e22c69bdd32a02798" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:47b90ce2c5290d87b8df124724e29881911c8f9314ae8a3e22c69bdd32a02798" + ], + "artifact_paths": [ + "pdd/prompts/agentic_e2e_fix_step2_e2e_tests_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_e2e_fix_step3_root_cause_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:661addc96ecb55c7b35e47fcc00817486c887aa35abdacb03101fe3f009ce16f" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:661addc96ecb55c7b35e47fcc00817486c887aa35abdacb03101fe3f009ce16f" + ], + "artifact_paths": [ + "pdd/prompts/agentic_e2e_fix_step3_root_cause_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_e2e_fix_step4_fix_e2e_tests_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:d55275b56952348088c6e2f3a153de06d53b461ec096721c32a686703c07716b" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:d55275b56952348088c6e2f3a153de06d53b461ec096721c32a686703c07716b" + ], + "artifact_paths": [ + "pdd/prompts/agentic_e2e_fix_step4_fix_e2e_tests_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_e2e_fix_step5_identify_devunits_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:f8d017cf14007ea8be205dd120ccd778f6997f8b697f6718ae53d9fbdbb800a3" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:f8d017cf14007ea8be205dd120ccd778f6997f8b697f6718ae53d9fbdbb800a3" + ], + "artifact_paths": [ + "pdd/prompts/agentic_e2e_fix_step5_identify_devunits_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_e2e_fix_step6_create_unit_tests_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:8b198bfaa4ac278cc0715ec36061165b000aac12d24de3d736cccd4c22b825e1" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:8b198bfaa4ac278cc0715ec36061165b000aac12d24de3d736cccd4c22b825e1" + ], + "artifact_paths": [ + "pdd/prompts/agentic_e2e_fix_step6_create_unit_tests_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_e2e_fix_step7_verify_tests_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:e1fb1342266cecaeb1d54ad313197c3638738b662687eacb345104eec5a557f5" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:e1fb1342266cecaeb1d54ad313197c3638738b662687eacb345104eec5a557f5" + ], + "artifact_paths": [ + "pdd/prompts/agentic_e2e_fix_step7_verify_tests_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_e2e_fix_step8_run_pdd_fix_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:0bfd230e3523e247cc41a2fafae432a9727c3929a995f0497135dbae5d0fc8f8" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:0bfd230e3523e247cc41a2fafae432a9727c3929a995f0497135dbae5d0fc8f8" + ], + "artifact_paths": [ + "pdd/prompts/agentic_e2e_fix_step8_run_pdd_fix_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_e2e_fix_step9_verify_all_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:228b06c686e6e8c416e2ab753791b4d4d63ae23fb14c810e9433870e34d0ed0e" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:228b06c686e6e8c416e2ab753791b4d4d63ae23fb14c810e9433870e34d0ed0e" + ], + "artifact_paths": [ + "pdd/prompts/agentic_e2e_fix_step9_verify_all_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_fix_explore_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:d8ae37060e094c21705ee86a159a91f614647cf7a0b63016b0b38de35e2e2d43" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:d8ae37060e094c21705ee86a159a91f614647cf7a0b63016b0b38de35e2e2d43" + ], + "artifact_paths": [ + "pdd/prompts/agentic_fix_explore_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_fix_nonpython_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:df4729fcc971b203779438c4a2af708c78936ce59a6348cf92a3cf1a06299dfd" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:df4729fcc971b203779438c4a2af708c78936ce59a6348cf92a3cf1a06299dfd" + ], + "artifact_paths": [ + "pdd/prompts/agentic_fix_nonpython_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_fix_primary_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:f2b841ca4a07b8350d6144851898af495280369f954ce80bb0af2a71e0f7072d" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:f2b841ca4a07b8350d6144851898af495280369f954ce80bb0af2a71e0f7072d" + ], + "artifact_paths": [ + "pdd/prompts/agentic_fix_primary_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_fix_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:04356924ac0c4dc03a76aedb1bc165d72d4bb85a040da93d5d1251ad215dbb11" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:04356924ac0c4dc03a76aedb1bc165d72d4bb85a040da93d5d1251ad215dbb11" + ], + "artifact_paths": [ + "pdd/prompts/agentic_fix_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_issue_route_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:e4b76e479bdb7012e272a59e9bb8d90503456c0f80d901e16082907516263a9e" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:e4b76e479bdb7012e272a59e9bb8d90503456c0f80d901e16082907516263a9e" + ], + "artifact_paths": [ + "pdd/prompts/agentic_issue_route_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_langtest_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:84ff51a86adeffa37ba3a860315933037e7edf9029303166a5fe3a76caaca252" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:84ff51a86adeffa37ba3a860315933037e7edf9029303166a5fe3a76caaca252" + ], + "artifact_paths": [ + "pdd/prompts/agentic_langtest_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_multishot_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:71a93494bb01f0f830b319b96656d41f9991248ef9d0aab040a2672b939832c5" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:71a93494bb01f0f830b319b96656d41f9991248ef9d0aab040a2672b939832c5" + ], + "artifact_paths": [ + "pdd/prompts/agentic_multishot_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_split_orchestrator_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:9c24971f6866c8432a6ae7102eb5777e1c7a36952c3321c577c520f7c8088d39" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:9c24971f6866c8432a6ae7102eb5777e1c7a36952c3321c577c520f7c8088d39" + ], + "artifact_paths": [ + "pdd/prompts/agentic_split_orchestrator_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_split_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:a446966cbbf8bf09bb2c43f83f25fdd76c218f54c8fe4e3d3251693ab826b680" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:a446966cbbf8bf09bb2c43f83f25fdd76c218f54c8fe4e3d3251693ab826b680" + ], + "artifact_paths": [ + "pdd/prompts/agentic_split_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_split_step0_intent_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:eacb1f91004ef2274aa7d656a71dd708c55859ebb2ea121ed071241fcd6301a1" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:eacb1f91004ef2274aa7d656a71dd708c55859ebb2ea121ed071241fcd6301a1" + ], + "artifact_paths": [ + "pdd/prompts/agentic_split_step0_intent_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_split_step1_survey_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:08de7f70c226f7115b342878fa851a8124412fd6691b46950ff8fd2e7a2a08e0" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:08de7f70c226f7115b342878fa851a8124412fd6691b46950ff8fd2e7a2a08e0" + ], + "artifact_paths": [ + "pdd/prompts/agentic_split_step1_survey_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_split_step2_diagnose_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:c6ccea9cff4e0c11bdddc360b2aa59e200e7bf9df6bc1185de4b21f4371d2a25" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:c6ccea9cff4e0c11bdddc360b2aa59e200e7bf9df6bc1185de4b21f4371d2a25" + ], + "artifact_paths": [ + "pdd/prompts/agentic_split_step2_diagnose_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_split_step3_investigate_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:fb21d2bfe87fe7d5b7401ce75355720ac493017e4b151bb3fa088cad38f1a7ad" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:fb21d2bfe87fe7d5b7401ce75355720ac493017e4b151bb3fa088cad38f1a7ad" + ], + "artifact_paths": [ + "pdd/prompts/agentic_split_step3_investigate_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_split_step4_propose_options_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:a260f29cb5c9a316a3119d7ddfb4ca426b43bb7d31fe8975032d74e1f5771b1e" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:a260f29cb5c9a316a3119d7ddfb4ca426b43bb7d31fe8975032d74e1f5771b1e" + ], + "artifact_paths": [ + "pdd/prompts/agentic_split_step4_propose_options_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_split_step6_extract_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:8f6f9ca75d18f15685be22ac8e53f6591cb96d4c836435bc2a19ff7f92dbb4d5" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:8f6f9ca75d18f15685be22ac8e53f6591cb96d4c836435bc2a19ff7f92dbb4d5" + ], + "artifact_paths": [ + "pdd/prompts/agentic_split_step6_extract_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_split_step6a_phase_extract_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:b38befb28f7ff9efd159024512e2823e34a6254d2a7393e413f657867acf1e34" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:b38befb28f7ff9efd159024512e2823e34a6254d2a7393e413f657867acf1e34" + ], + "artifact_paths": [ + "pdd/prompts/agentic_split_step6a_phase_extract_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_split_step7_assess_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:5b2879fd6a5316dd5dcd345266748b3b8fc8f65cf76df772d4c4ee33d43861ac" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:5b2879fd6a5316dd5dcd345266748b3b8fc8f65cf76df772d4c4ee33d43861ac" + ], + "artifact_paths": [ + "pdd/prompts/agentic_split_step7_assess_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_split_step8_repair_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:d70479c475a5b0f805508bd3e3e20217ca48d626f3635b405b97109217ac1ffa" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:d70479c475a5b0f805508bd3e3e20217ca48d626f3635b405b97109217ac1ffa" + ], + "artifact_paths": [ + "pdd/prompts/agentic_split_step8_repair_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_split_step9_refine_check_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:315cf0438ffdecbbbce60d82811593ecaf73ce1d398191d5936a329e7ecd7cb7" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:315cf0438ffdecbbbce60d82811593ecaf73ce1d398191d5936a329e7ecd7cb7" + ], + "artifact_paths": [ + "pdd/prompts/agentic_split_step9_refine_check_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_sync_fix_dry_run_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:8a64d0d467429528405d075344ebfcf10726da2dda06283b703793aaa88101e8" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:8a64d0d467429528405d075344ebfcf10726da2dda06283b703793aaa88101e8" + ], + "artifact_paths": [ + "pdd/prompts/agentic_sync_fix_dry_run_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_sync_identify_modules_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:ddabd24036750d277301baa71f1a33b034a338e886907a4d246cca0ec434fe1f" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:ddabd24036750d277301baa71f1a33b034a338e886907a4d246cca0ec434fe1f" + ], + "artifact_paths": [ + "pdd/prompts/agentic_sync_identify_modules_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_sync_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:42499f7e8b407ee013366aae925f9ce9ec48b9feb81a1158ba2ddb858f01b7be" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:42499f7e8b407ee013366aae925f9ce9ec48b9feb81a1158ba2ddb858f01b7be" + ], + "artifact_paths": [ + "pdd/prompts/agentic_sync_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_sync_runner_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:99010afb8c3a52d2f1a1af15b8fa2c786d5fdcaaddb04b61e8c0ae719f7f23a1" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:99010afb8c3a52d2f1a1af15b8fa2c786d5fdcaaddb04b61e8c0ae719f7f23a1" + ], + "artifact_paths": [ + "pdd/prompts/agentic_sync_runner_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_test_generate_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:c3057c45c4bf183ac02791e6c3e0511d17372160cd6eee725dbf51f827b248dd" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:c3057c45c4bf183ac02791e6c3e0511d17372160cd6eee725dbf51f827b248dd" + ], + "artifact_paths": [ + "pdd/prompts/agentic_test_generate_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_test_generate_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:5708b9e4869d46e84b2d4a70ab3c75e38ec5370550b54c9c53f240d57932adde" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:5708b9e4869d46e84b2d4a70ab3c75e38ec5370550b54c9c53f240d57932adde" + ], + "artifact_paths": [ + "pdd/prompts/agentic_test_generate_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_test_orchestrator_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:068328249e60cfca625096866a6886de55c344e68539b5489e0b57ffdddb9593" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:068328249e60cfca625096866a6886de55c344e68539b5489e0b57ffdddb9593" + ], + "artifact_paths": [ + "pdd/prompts/agentic_test_orchestrator_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_test_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:26e2f716fb03b84d5fb71efeb1efdfb4377c0e84183794b988c42dd01d4bcd5c" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:26e2f716fb03b84d5fb71efeb1efdfb4377c0e84183794b988c42dd01d4bcd5c" + ], + "artifact_paths": [ + "pdd/prompts/agentic_test_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_test_step10_validate_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:b07cc6a6c72c84484916eb357f0b48cd76a542320dd3fd81738c34fe8744ae13" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:b07cc6a6c72c84484916eb357f0b48cd76a542320dd3fd81738c34fe8744ae13" + ], + "artifact_paths": [ + "pdd/prompts/agentic_test_step10_validate_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_test_step11_loop_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:fc32b8ec239060eb35de90ec624e547c994978684f6f330b41046a78a7270efe" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:fc32b8ec239060eb35de90ec624e547c994978684f6f330b41046a78a7270efe" + ], + "artifact_paths": [ + "pdd/prompts/agentic_test_step11_loop_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_test_step15_plan_validation_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:423a849c718b8e1ac8625aae7a2d133d3fa6f1ca951322bcd54b43386ebb388f" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:423a849c718b8e1ac8625aae7a2d133d3fa6f1ca951322bcd54b43386ebb388f" + ], + "artifact_paths": [ + "pdd/prompts/agentic_test_step15_plan_validation_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_test_step16_run_tests_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:19474fa925261e190dd3c2d3875f270f54b29c23abf220221736b7ff8d73809f" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:19474fa925261e190dd3c2d3875f270f54b29c23abf220221736b7ff8d73809f" + ], + "artifact_paths": [ + "pdd/prompts/agentic_test_step16_run_tests_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_test_step1_duplicate_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:7b0ae407200edee4b28d82defef074553acd5f7c8c4cebe57cff43c43fde39f4" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:7b0ae407200edee4b28d82defef074553acd5f7c8c4cebe57cff43c43fde39f4" + ], + "artifact_paths": [ + "pdd/prompts/agentic_test_step1_duplicate_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_test_step2_docs_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:740700597122814673150d4fc2f4634db7a03d45e066f668cc9018d00f3b44bf" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:740700597122814673150d4fc2f4634db7a03d45e066f668cc9018d00f3b44bf" + ], + "artifact_paths": [ + "pdd/prompts/agentic_test_step2_docs_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_test_step3_clarify_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:07e10a8a7241e76ac14abf92393d49f508cce994f6bc508a82b15fe3c964e641" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:07e10a8a7241e76ac14abf92393d49f508cce994f6bc508a82b15fe3c964e641" + ], + "artifact_paths": [ + "pdd/prompts/agentic_test_step3_clarify_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_test_step4_detect_frontend_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:c0ae1c9ba9d232ab75dd8f9b7c864e7590724406e17439b265f405ef38e31f1d" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:c0ae1c9ba9d232ab75dd8f9b7c864e7590724406e17439b265f405ef38e31f1d" + ], + "artifact_paths": [ + "pdd/prompts/agentic_test_step4_detect_frontend_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_test_step5_test_plan_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:649aa278f8379f58fd6932ffb80a5a4a34c560dc9c8a4fb8be2e6f5c8d6f402b" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:649aa278f8379f58fd6932ffb80a5a4a34c560dc9c8a4fb8be2e6f5c8d6f402b" + ], + "artifact_paths": [ + "pdd/prompts/agentic_test_step5_test_plan_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_test_step5b_enhance_plan_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:7fe3c1a629b2751aba39a209ecc1b4d48e40065f7ec72f8e3ac54ead05186de7" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:7fe3c1a629b2751aba39a209ecc1b4d48e40065f7ec72f8e3ac54ead05186de7" + ], + "artifact_paths": [ + "pdd/prompts/agentic_test_step5b_enhance_plan_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_test_step6_coverage_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:e833a195d9b72cf905d6c262db3044b5468b20a67cfd9a856ff3bf701b7ff439" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:e833a195d9b72cf905d6c262db3044b5468b20a67cfd9a856ff3bf701b7ff439" + ], + "artifact_paths": [ + "pdd/prompts/agentic_test_step6_coverage_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_test_step6_generate_tests_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:f8914ff7b5141ff12d0a858502d46a58736db6bb0ff3211590907dd8bf8a0412" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:f8914ff7b5141ff12d0a858502d46a58736db6bb0ff3211590907dd8bf8a0412" + ], + "artifact_paths": [ + "pdd/prompts/agentic_test_step6_generate_tests_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_test_step7_checklist_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:7c32d6abaa8d9058f677f845acd5b0e9829c29320f1bf898e5a78eec8d214ace" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:7c32d6abaa8d9058f677f845acd5b0e9829c29320f1bf898e5a78eec8d214ace" + ], + "artifact_paths": [ + "pdd/prompts/agentic_test_step7_checklist_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_test_step7_run_tests_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:b9e534dad40c924ffb8ea0b9d16a297e7f3e243d541a55e305f8e5a561987bef" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:b9e534dad40c924ffb8ea0b9d16a297e7f3e243d541a55e305f8e5a561987bef" + ], + "artifact_paths": [ + "pdd/prompts/agentic_test_step7_run_tests_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_test_step8_fix_iterate_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:7ededa8172f6b2f0c006b75e62e68291f69f043a2a17d68879973302d7746b96" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:7ededa8172f6b2f0c006b75e62e68291f69f043a2a17d68879973302d7746b96" + ], + "artifact_paths": [ + "pdd/prompts/agentic_test_step8_fix_iterate_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_test_step8_manual_test_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:ff57354a4c56db37c285f9dc2b5877f606f43adfc31939796a270a0654d74e05" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:ff57354a4c56db37c285f9dc2b5877f606f43adfc31939796a270a0654d74e05" + ], + "artifact_paths": [ + "pdd/prompts/agentic_test_step8_manual_test_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_test_step9_regression_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:50bae9203a2099fd396a8fac5d0be75ef91d093bde05fc5941ce9fd9c1a1b788" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:50bae9203a2099fd396a8fac5d0be75ef91d093bde05fc5941ce9fd9c1a1b788" + ], + "artifact_paths": [ + "pdd/prompts/agentic_test_step9_regression_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_test_step9_submit_pr_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:34d4a14145f0c70270b176eda4ac7bf53c052a46208908e04a198acb4a789fac" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:34d4a14145f0c70270b176eda4ac7bf53c052a46208908e04a198acb4a789fac" + ], + "artifact_paths": [ + "pdd/prompts/agentic_test_step9_submit_pr_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_update_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:0fe3ff3c55d39cd68d3f4d1105e156a608c8668a27c3d81efea5289b2430ba17" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:0fe3ff3c55d39cd68d3f4d1105e156a608c8668a27c3d81efea5289b2430ba17" + ], + "artifact_paths": [ + "pdd/prompts/agentic_update_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_update_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:c1abcf455e639af9b21a1377aebf34f85d13a2ac70deebdc8c0cb1f5cd390a43" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:c1abcf455e639af9b21a1377aebf34f85d13a2ac70deebdc8c0cb1f5cd390a43" + ], + "artifact_paths": [ + "pdd/prompts/agentic_update_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_verify_explore_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:c02f53aa9b003f4acd9f2cff09cccf166993e0ffe21a012caa0fdf52ac8d105c" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:c02f53aa9b003f4acd9f2cff09cccf166993e0ffe21a012caa0fdf52ac8d105c" + ], + "artifact_paths": [ + "pdd/prompts/agentic_verify_explore_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/agentic_verify_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:cbd185bebd2d5515a872a83c30178282cc22dd9b16ad487164607c4efe3cc2af" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:cbd185bebd2d5515a872a83c30178282cc22dd9b16ad487164607c4efe3cc2af" + ], + "artifact_paths": [ + "pdd/prompts/agentic_verify_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/api_contract_slicer_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:ef3698a692ddcf5229de7ac99a01a4fd5e07edb5fa91b6ed29c730c7e49e8932" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:ef3698a692ddcf5229de7ac99a01a4fd5e07edb5fa91b6ed29c730c7e49e8932" + ], + "artifact_paths": [ + "pdd/prompts/api_contract_slicer_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/api_key_scanner_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:4d93f1716d60a12ac6a6730482c96f1a7242ecdc57b9d3c28dafada9c137c4b9" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:4d93f1716d60a12ac6a6730482c96f1a7242ecdc57b9d3c28dafada9c137c4b9" + ], + "artifact_paths": [ + "pdd/prompts/api_key_scanner_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/architecture_include_validation_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:fe8ce6cdcde2f7dc0ad49f1dfb90f81b505812a87afcdca57a27e12848d9d59c" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:fe8ce6cdcde2f7dc0ad49f1dfb90f81b505812a87afcdca57a27e12848d9d59c" + ], + "artifact_paths": [ + "pdd/prompts/architecture_include_validation_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/architecture_registry_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:3e890005c8255f692d7d46a3ce312e0d15a75b436337db8fcb0e8c25dd984dd7" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:3e890005c8255f692d7d46a3ce312e0d15a75b436337db8fcb0e8c25dd984dd7" + ], + "artifact_paths": [ + "pdd/prompts/architecture_registry_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/architecture_sync_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:754f44ef1cab69a0a1fc70b321333ec68476e2b5432e5b5e6be3a3e382c32e29" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:754f44ef1cab69a0a1fc70b321333ec68476e2b5432e5b5e6be3a3e382c32e29" + ], + "artifact_paths": [ + "pdd/prompts/architecture_sync_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/arrange_graph_layout_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:6cf8c5f56895d7f3fedab11e328c37fbeb68821316686ae76fd82a577356a1ab" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:6cf8c5f56895d7f3fedab11e328c37fbeb68821316686ae76fd82a577356a1ab" + ], + "artifact_paths": [ + "pdd/prompts/arrange_graph_layout_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/auth_service_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:cdf6b3e14da46a4dbe4f9b211c3934038d11013c820e56a8b981120efae13459" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:cdf6b3e14da46a4dbe4f9b211c3934038d11013c820e56a8b981120efae13459" + ], + "artifact_paths": [ + "pdd/prompts/auth_service_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/auto_deps_architecture_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:844d1d0dbade0f0294a9e4c70e7dfe6471e1707cc3b483417bfc110a73960926" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:844d1d0dbade0f0294a9e4c70e7dfe6471e1707cc3b483417bfc110a73960926" + ], + "artifact_paths": [ + "pdd/prompts/auto_deps_architecture_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/auto_deps_main_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:a40eca375371f505c237157552228b1c4c9dc7b30f7849abc164f5b9a94bedf9" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:a40eca375371f505c237157552228b1c4c9dc7b30f7849abc164f5b9a94bedf9" + ], + "artifact_paths": [ + "pdd/prompts/auto_deps_main_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/auto_include_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:43587a066f8d5468c08dfb265290878ab5936141c81029ebf336c00bfd548240" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:43587a066f8d5468c08dfb265290878ab5936141c81029ebf336c00bfd548240" + ], + "artifact_paths": [ + "pdd/prompts/auto_include_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/auto_include_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:d70104ae305dcc1446f0feb9e5c78ecad7be4377a0f8954aa045e8d8d23f1a9a" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:d70104ae305dcc1446f0feb9e5c78ecad7be4377a0f8954aa045e8d8d23f1a9a" + ], + "artifact_paths": [ + "pdd/prompts/auto_include_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/auto_update_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:072c1e4211367cc131c7aef9b844c8590e3a0642afafda817bfbf19179227e80" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:072c1e4211367cc131c7aef9b844c8590e3a0642afafda817bfbf19179227e80" + ], + "artifact_paths": [ + "pdd/prompts/auto_update_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/bug_main_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:eabf97dfdc7dea85ca75102ed5729f54999d22f8c934ac2ba9c84f0689001d77" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:eabf97dfdc7dea85ca75102ed5729f54999d22f8c934ac2ba9c84f0689001d77" + ], + "artifact_paths": [ + "pdd/prompts/bug_main_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/bug_to_unit_test_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:29d324bd15678d549fd0d4d821a0d720c4fddf13edb5713090ca635b1e6578bb" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:29d324bd15678d549fd0d4d821a0d720c4fddf13edb5713090ca635b1e6578bb" + ], + "artifact_paths": [ + "pdd/prompts/bug_to_unit_test_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/bug_to_unit_test_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:12c7f16057230070aea0b0c62f2e747441227f9e192a10deaead7de5e54624f3" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:12c7f16057230070aea0b0c62f2e747441227f9e192a10deaead7de5e54624f3" + ], + "artifact_paths": [ + "pdd/prompts/bug_to_unit_test_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/change_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:6f2cc013b2e226e17a8fa4110df0636b7a6f6d0a94effc8ed20f4e375dc5a35e" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:6f2cc013b2e226e17a8fa4110df0636b7a6f6d0a94effc8ed20f4e375dc5a35e" + ], + "artifact_paths": [ + "pdd/prompts/change_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/change_main_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:328714f8f0d47d61b57e4956d59eb0c10f6653fc863be22e125b91ca7a7232c4" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:328714f8f0d47d61b57e4956d59eb0c10f6653fc863be22e125b91ca7a7232c4" + ], + "artifact_paths": [ + "pdd/prompts/change_main_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/change_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:8331f4e41fc12936c2623922e12713cea89248b5bec4b4eb1234d2914df66605" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:8331f4e41fc12936c2623922e12713cea89248b5bec4b4eb1234d2914df66605" + ], + "artifact_paths": [ + "pdd/prompts/change_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/checkup_agent_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:653a638d7dbede994e83a15482b572c27f5d5a27df3e8f20ad244544a5a9318e" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:653a638d7dbede994e83a15482b572c27f5d5a27df3e8f20ad244544a5a9318e" + ], + "artifact_paths": [ + "pdd/prompts/checkup_agent_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/checkup_file_selection_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:ff32906e238c7d40fef249b97de8d790322649835481b72f3b89bb4ec12d63aa" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:ff32906e238c7d40fef249b97de8d790322649835481b72f3b89bb4ec12d63aa" + ], + "artifact_paths": [ + "pdd/prompts/checkup_file_selection_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/checkup_gates_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:a05a5b5fe2fa70e98435f19306b95faab47231e1eae5b2a43936cc9bac30445c" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:a05a5b5fe2fa70e98435f19306b95faab47231e1eae5b2a43936cc9bac30445c" + ], + "artifact_paths": [ + "pdd/prompts/checkup_gates_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/checkup_interactive_main_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:5abaf9a3e2e5ff24c024ff03f07ccc9c7686a13cd389f0e98870a78fd97cb1cb" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:5abaf9a3e2e5ff24c024ff03f07ccc9c7686a13cd389f0e98870a78fd97cb1cb" + ], + "artifact_paths": [ + "pdd/prompts/checkup_interactive_main_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/checkup_interactive_session_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:98b7a870666685719d830722d1065d72255d66eda181b102c233d8b319278dc4" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:98b7a870666685719d830722d1065d72255d66eda181b102c233d8b319278dc4" + ], + "artifact_paths": [ + "pdd/prompts/checkup_interactive_session_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/checkup_planner_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:6d3d2dc712729d789b6293c33c411fb8cff975dcb17ebbd38ea7138b876ce241" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:6d3d2dc712729d789b6293c33c411fb8cff975dcb17ebbd38ea7138b876ce241" + ], + "artifact_paths": [ + "pdd/prompts/checkup_planner_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/checkup_prompt_apply_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:95685575e722bfed5574086d8e01f31ec743e6f4046b101032748e7848efb14c" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:95685575e722bfed5574086d8e01f31ec743e6f4046b101032748e7848efb14c" + ], + "artifact_paths": [ + "pdd/prompts/checkup_prompt_apply_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/checkup_prompt_main_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:4ba9377ee66ac8ac42d542ee713a94e465dee81da51011aaf46337344598c937" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:4ba9377ee66ac8ac42d542ee713a94e465dee81da51011aaf46337344598c937" + ], + "artifact_paths": [ + "pdd/prompts/checkup_prompt_main_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/checkup_report_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:2b1ffbc310805ac63bcd051f10ce03159534752ea729a6b11e91bf8e27400188" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:2b1ffbc310805ac63bcd051f10ce03159534752ea729a6b11e91bf8e27400188" + ], + "artifact_paths": [ + "pdd/prompts/checkup_report_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/checkup_review_loop_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:c44fbaf6b0c1ceb5c52cf514684a72e866bdc08d4bf0b948d978dec65afb0719" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:c44fbaf6b0c1ceb5c52cf514684a72e866bdc08d4bf0b948d978dec65afb0719" + ], + "artifact_paths": [ + "pdd/prompts/checkup_review_loop_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/checkup_simplify_claude_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:5f8615f8c3bdb8bc272e7a7a74a2cbe265a8bd70199afac655029ecfc64ed857" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:5f8615f8c3bdb8bc272e7a7a74a2cbe265a8bd70199afac655029ecfc64ed857" + ], + "artifact_paths": [ + "pdd/prompts/checkup_simplify_claude_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/checkup_simplify_engines_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:5161d882ecc9c5af821b2003cbfed3dec6c3e951f509c052812f933a9ce54db1" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:5161d882ecc9c5af821b2003cbfed3dec6c3e951f509c052812f933a9ce54db1" + ], + "artifact_paths": [ + "pdd/prompts/checkup_simplify_engines_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/checkup_simplify_invoke_claude_code_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:464e33be0a75cc2fdce82d5820521115763ab4921cea56b859b73bf0fcd9c473" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:464e33be0a75cc2fdce82d5820521115763ab4921cea56b859b73bf0fcd9c473" + ], + "artifact_paths": [ + "pdd/prompts/checkup_simplify_invoke_claude_code_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/checkup_simplify_invoke_codex_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:4cd539d8ff47b3f263d13b2e5ad267265ac364b38f91f2d7b52804ae30a7dc7a" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:4cd539d8ff47b3f263d13b2e5ad267265ac364b38f91f2d7b52804ae30a7dc7a" + ], + "artifact_paths": [ + "pdd/prompts/checkup_simplify_invoke_codex_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/checkup_simplify_invoke_gemini_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:b6340b0962894e09839d3dc5369e4c224855ab6f1f2acee43416c6a670ad5185" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:b6340b0962894e09839d3dc5369e4c224855ab6f1f2acee43416c6a670ad5185" + ], + "artifact_paths": [ + "pdd/prompts/checkup_simplify_invoke_gemini_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/checkup_simplify_invoke_opencode_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:e4d7220a631960ef9609693a1c2319e56eeec1820b7a8860d0ae841a71c4a8ae" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:e4d7220a631960ef9609693a1c2319e56eeec1820b7a8860d0ae841a71c4a8ae" + ], + "artifact_paths": [ + "pdd/prompts/checkup_simplify_invoke_opencode_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/checkup_simplify_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:1d1f01b4a0aeab8f05b2efe36b5e6464ecee21596a9565122cc64a1351911b46" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:1d1f01b4a0aeab8f05b2efe36b5e6464ecee21596a9565122cc64a1351911b46" + ], + "artifact_paths": [ + "pdd/prompts/checkup_simplify_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/checkup_simplify_workflow_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:7755724be5d2a04b32b9c7b7efb5bdfac27f4ec3ee3b3d94e95a5c1db4bb915e" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:7755724be5d2a04b32b9c7b7efb5bdfac27f4ec3ee3b3d94e95a5c1db4bb915e" + ], + "artifact_paths": [ + "pdd/prompts/checkup_simplify_workflow_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/checkup_tools_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:df087676e5581e2e05a7d6daa036b5e1113cccd5c837a1b4a3508b890e1da118" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:df087676e5581e2e05a7d6daa036b5e1113cccd5c837a1b4a3508b890e1da118" + ], + "artifact_paths": [ + "pdd/prompts/checkup_tools_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/ci_detect_changed_modules_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:ef30764861a3080d2fb093ca747f86a3f46bba733a0cdc6a5634efc1b36a73a2" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:ef30764861a3080d2fb093ca747f86a3f46bba733a0cdc6a5634efc1b36a73a2" + ], + "artifact_paths": [ + "pdd/prompts/ci_detect_changed_modules_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/ci_drift_heal_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:93a67c25264e04e4c84cc15d2ad23a90c9f982f0778a8de79fa4954b963e8601" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:93a67c25264e04e4c84cc15d2ad23a90c9f982f0778a8de79fa4954b963e8601" + ], + "artifact_paths": [ + "pdd/prompts/ci_drift_heal_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/ci_validation_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:9e2e7d49234d6edebc86bc0701de53df732c7c5b52621a4be0d25d69e6f9635f" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:9e2e7d49234d6edebc86bc0701de53df732c7c5b52621a4be0d25d69e6f9635f" + ], + "artifact_paths": [ + "pdd/prompts/ci_validation_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/cli_branding_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:2b1c46c67c15235c43a7aacbaba313a0a98dc21383d3b91507173eabfd588fba" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:2b1c46c67c15235c43a7aacbaba313a0a98dc21383d3b91507173eabfd588fba" + ], + "artifact_paths": [ + "pdd/prompts/cli_branding_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/cli_detector_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:4bcecc483a368af1d6dc9d9f0b12e608e760b179c5b03c2c4d866a06cbdbe59b" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:4bcecc483a368af1d6dc9d9f0b12e608e760b179c5b03c2c4d866a06cbdbe59b" + ], + "artifact_paths": [ + "pdd/prompts/cli_detector_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/cli_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:bf8ae474436cc4a8466d596b1da3b67b7316bb50f1380b5edd852f1c208147ac" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:bf8ae474436cc4a8466d596b1da3b67b7316bb50f1380b5edd852f1c208147ac" + ], + "artifact_paths": [ + "pdd/prompts/cli_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/cli_status_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:121ff116fa307d8034c8f8826f0e1382fd6467fe4eb9d5ef480030901d114e57" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:121ff116fa307d8034c8f8826f0e1382fd6467fe4eb9d5ef480030901d114e57" + ], + "artifact_paths": [ + "pdd/prompts/cli_status_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/cli_theme_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:92ea1f8c1b4039771ee67668a380f44dffc6d976751dd1ec78a498f2c55defb5" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:92ea1f8c1b4039771ee67668a380f44dffc6d976751dd1ec78a498f2c55defb5" + ], + "artifact_paths": [ + "pdd/prompts/cli_theme_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/cmd_test_main_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:9a96654683807432182c978b529ad6804db23591a602cab866fe592364e012e4" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:9a96654683807432182c978b529ad6804db23591a602cab866fe592364e012e4" + ], + "artifact_paths": [ + "pdd/prompts/cmd_test_main_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/code_generator_main_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:8d0a51822aaa2c64e1b71579d0cb6e41460b90734441e0b6ec3ec146402495fe" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:8d0a51822aaa2c64e1b71579d0cb6e41460b90734441e0b6ec3ec146402495fe" + ], + "artifact_paths": [ + "pdd/prompts/code_generator_main_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/code_generator_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:2db9dd103925fef2b56138d3fa0056d86d30d1026e60ea17477d892d6df1357e" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:2db9dd103925fef2b56138d3fa0056d86d30d1026e60ea17477d892d6df1357e" + ], + "artifact_paths": [ + "pdd/prompts/code_generator_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/code_patcher_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:00067f40fa4f83bfad5e13dac81cfe3a86d1bb8e52bb1a3e8e59bdafd1bf894f" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:00067f40fa4f83bfad5e13dac81cfe3a86d1bb8e52bb1a3e8e59bdafd1bf894f" + ], + "artifact_paths": [ + "pdd/prompts/code_patcher_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/codex_subscription_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:17eedbc09a256171e39540fdd62097d30a4d66fba0fb20843b994315e2d5fc3c" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:17eedbc09a256171e39540fdd62097d30a4d66fba0fb20843b994315e2d5fc3c" + ], + "artifact_paths": [ + "pdd/prompts/codex_subscription_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/commands/__init___python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:ff594ffbd96b40ff59b3d16a2c326b9a2c53abc4b29adaa1588cb57ab80278b9" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:ff594ffbd96b40ff59b3d16a2c326b9a2c53abc4b29adaa1588cb57ab80278b9" + ], + "artifact_paths": [ + "pdd/prompts/commands/__init___python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/commands/analysis_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:0e6824053f24a2230d51000fd998ff01ebeb56a4784660757a811dc86894c1a4" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:0e6824053f24a2230d51000fd998ff01ebeb56a4784660757a811dc86894c1a4" + ], + "artifact_paths": [ + "pdd/prompts/commands/analysis_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/commands/auth_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:b4c1ac81709096413153612326f009adba9db405b804307c6f6d35712afb9a56" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:b4c1ac81709096413153612326f009adba9db405b804307c6f6d35712afb9a56" + ], + "artifact_paths": [ + "pdd/prompts/commands/auth_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/commands/checkup_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:62750858a2961ec33a0ed0ca64f37389c370d764fd53823065e7386c30f6faa8" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:62750858a2961ec33a0ed0ca64f37389c370d764fd53823065e7386c30f6faa8" + ], + "artifact_paths": [ + "pdd/prompts/commands/checkup_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/commands/checkup_simplify_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:447958d813ced26a11a0900fa769b71cbd2b20e1acdc48fc6f6505745de7d1c6" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:447958d813ced26a11a0900fa769b71cbd2b20e1acdc48fc6f6505745de7d1c6" + ], + "artifact_paths": [ + "pdd/prompts/commands/checkup_simplify_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/commands/connect_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:faa6e3ca169994390f04b4b1e311acda14c1945024eaa82f0e65c2340f791589" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:faa6e3ca169994390f04b4b1e311acda14c1945024eaa82f0e65c2340f791589" + ], + "artifact_paths": [ + "pdd/prompts/commands/connect_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/commands/context_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:069cc11b057f1ba93ebf839dd06e8cdcaaca6aba301386c66d92ac488c58d7ca" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:069cc11b057f1ba93ebf839dd06e8cdcaaca6aba301386c66d92ac488c58d7ca" + ], + "artifact_paths": [ + "pdd/prompts/commands/context_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/commands/contracts_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:d9bcc6645765c737ab7f8cd97b337921b6439ec7289f59f99df4c46e5fce7284" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:d9bcc6645765c737ab7f8cd97b337921b6439ec7289f59f99df4c46e5fce7284" + ], + "artifact_paths": [ + "pdd/prompts/commands/contracts_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/commands/firecrawl_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:bf378efb1e3b66d402642b5e77c2296fabeb0d097bd87e3ecb4cf2762db55151" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:bf378efb1e3b66d402642b5e77c2296fabeb0d097bd87e3ecb4cf2762db55151" + ], + "artifact_paths": [ + "pdd/prompts/commands/firecrawl_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/commands/fix_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:3e180110a579e905ed0e7eeead2f5b8145a5cbbeed781942b6aaad1e713c3ec6" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:3e180110a579e905ed0e7eeead2f5b8145a5cbbeed781942b6aaad1e713c3ec6" + ], + "artifact_paths": [ + "pdd/prompts/commands/fix_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/commands/gate_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:78eac8e368d85eeb7c1788e27c424e7b246f664fc8bedba65a7fb150f4c27d49" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:78eac8e368d85eeb7c1788e27c424e7b246f664fc8bedba65a7fb150f4c27d49" + ], + "artifact_paths": [ + "pdd/prompts/commands/gate_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/commands/generate_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:83b45ad928a9bac3567dea786c4b48819400247e63c7210d8cb5d26e4750a52f" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:83b45ad928a9bac3567dea786c4b48819400247e63c7210d8cb5d26e4750a52f" + ], + "artifact_paths": [ + "pdd/prompts/commands/generate_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/commands/maintenance_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:5f50939cf7cd9dd3cf1269d20cef4ba1e3bbe8c242bd33ccfc4fdeef51d0cda6" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:5f50939cf7cd9dd3cf1269d20cef4ba1e3bbe8c242bd33ccfc4fdeef51d0cda6" + ], + "artifact_paths": [ + "pdd/prompts/commands/maintenance_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/commands/misc_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:bcef049110e1a2a0c97eba965957f600a9c34b52f675cc8c361490c238ca4174" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:bcef049110e1a2a0c97eba965957f600a9c34b52f675cc8c361490c238ca4174" + ], + "artifact_paths": [ + "pdd/prompts/commands/misc_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/commands/modify_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:8d103ee748926ef9683ba4e0ab70ecfd32b91e9437eaf435767bb42d0beda647" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:8d103ee748926ef9683ba4e0ab70ecfd32b91e9437eaf435767bb42d0beda647" + ], + "artifact_paths": [ + "pdd/prompts/commands/modify_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/commands/prompt_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:aa1cf415e3c15af6587cb671714ff5cd7b83a4b5d0171002232c1184532daa75" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:aa1cf415e3c15af6587cb671714ff5cd7b83a4b5d0171002232c1184532daa75" + ], + "artifact_paths": [ + "pdd/prompts/commands/prompt_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/commands/replay_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:58cdc1775f5b2777fa766261fd6bb46385c1bd079630046fe4b67abee0c88778" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:58cdc1775f5b2777fa766261fd6bb46385c1bd079630046fe4b67abee0c88778" + ], + "artifact_paths": [ + "pdd/prompts/commands/replay_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/commands/report_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:85590df635dd0b7b0aeae20375119fa51c7fdc7e96c1b25dd1386fc730a8bae9" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:85590df635dd0b7b0aeae20375119fa51c7fdc7e96c1b25dd1386fc730a8bae9" + ], + "artifact_paths": [ + "pdd/prompts/commands/report_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/commands/sessions_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:9020bc7e738912e1f283f5aa7cc6d956304a775ebe5a4a0dbf3bcf44c47cde76" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:9020bc7e738912e1f283f5aa7cc6d956304a775ebe5a4a0dbf3bcf44c47cde76" + ], + "artifact_paths": [ + "pdd/prompts/commands/sessions_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/commands/story_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:266a6aa1386b7cb5eb366992705f61292d397baaa7acdee0b7c3627cd78e765c" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:266a6aa1386b7cb5eb366992705f61292d397baaa7acdee0b7c3627cd78e765c" + ], + "artifact_paths": [ + "pdd/prompts/commands/story_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/commands/templates_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:ca5d20add4e93bbe86243bfd6d723a9993175aa5445513f5237174f313789721" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:ca5d20add4e93bbe86243bfd6d723a9993175aa5445513f5237174f313789721" + ], + "artifact_paths": [ + "pdd/prompts/commands/templates_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/commands/utility_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:14b0f95087b6b74ab8d96aa3d17d8555554e7b318eb6b47ded9d5f2e09303aa1" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:14b0f95087b6b74ab8d96aa3d17d8555554e7b318eb6b47ded9d5f2e09303aa1" + ], + "artifact_paths": [ + "pdd/prompts/commands/utility_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/commands/which_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:2028a8d894f8668636ae056487f2bb3fd86a045818f9961fc37e16e559c96318" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:2028a8d894f8668636ae056487f2bb3fd86a045818f9961fc37e16e559c96318" + ], + "artifact_paths": [ + "pdd/prompts/commands/which_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/comment_line_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:c213fc91ee2b09bc2d1a606025da833c94af1affe4f07505830e311b291abd35" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:c213fc91ee2b09bc2d1a606025da833c94af1affe4f07505830e311b291abd35" + ], + "artifact_paths": [ + "pdd/prompts/comment_line_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/compressed_sync_context_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:1377b43132bef170d04868b6a07c0d2a0b74bc9357a8861afae9d0f66f9e429b" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:1377b43132bef170d04868b6a07c0d2a0b74bc9357a8861afae9d0f66f9e429b" + ], + "artifact_paths": [ + "pdd/prompts/compressed_sync_context_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/config_resolution_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:db5e5f890e9e22fcd43c77c4ea227235abf622300fd319603f0ab996da159166" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:db5e5f890e9e22fcd43c77c4ea227235abf622300fd319603f0ab996da159166" + ], + "artifact_paths": [ + "pdd/prompts/config_resolution_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/conflict_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:e3a0c1fea382b6c7d5b23eb2f04f20ac8d22cf1024ffe8b1a043545074009077" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:e3a0c1fea382b6c7d5b23eb2f04f20ac8d22cf1024ffe8b1a043545074009077" + ], + "artifact_paths": [ + "pdd/prompts/conflict_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/conflicts_in_prompts_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:2d6f50af468530f597564c96d1fb7b9f1a29cac4d56521079ebe7afdc0bc8f26" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:2d6f50af468530f597564c96d1fb7b9f1a29cac4d56521079ebe7afdc0bc8f26" + ], + "artifact_paths": [ + "pdd/prompts/conflicts_in_prompts_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/conflicts_main_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:99ea70c8398784b8fd7b03ab80e6a18bd67885b5751ffe2f35894f05a8805c8e" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:99ea70c8398784b8fd7b03ab80e6a18bd67885b5751ffe2f35894f05a8805c8e" + ], + "artifact_paths": [ + "pdd/prompts/conflicts_main_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/construct_paths_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:169e88817228f79ec1f1d69daff0ba1e26f4f05c46117decab22226ff9b45c71" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:169e88817228f79ec1f1d69daff0ba1e26f4f05c46117decab22226ff9b45c71" + ], + "artifact_paths": [ + "pdd/prompts/construct_paths_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/content_selector_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:df9a157338364189552d43732ed4a565eb5368d4a460a7b249962ff2a2b3a8ad" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:df9a157338364189552d43732ed4a565eb5368d4a460a7b249962ff2a2b3a8ad" + ], + "artifact_paths": [ + "pdd/prompts/content_selector_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/context_audit_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:92423173479abf948a5a6475ac0f4ce4b42f0e3d2f21b23e2c43521cf5a0640d" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:92423173479abf948a5a6475ac0f4ce4b42f0e3d2f21b23e2c43521cf5a0640d" + ], + "artifact_paths": [ + "pdd/prompts/context_audit_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/context_generator_main_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:1ec7aa53ba541be9a377477e19e4a1b58e040893632baa3cc53d1312757968be" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:1ec7aa53ba541be9a377477e19e4a1b58e040893632baa3cc53d1312757968be" + ], + "artifact_paths": [ + "pdd/prompts/context_generator_main_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/context_generator_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:c6f77faf729d36a2d8548f11dff819b3fd1030ef1f923de1a9c430377270cf5f" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:c6f77faf729d36a2d8548f11dff819b3fd1030ef1f923de1a9c430377270cf5f" + ], + "artifact_paths": [ + "pdd/prompts/context_generator_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/context_snapshot_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:05f46fa9adba7ed3c9c6088d150ad821c723e9d0a3efed9db2fe8a461386da9d" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:05f46fa9adba7ed3c9c6088d150ad821c723e9d0a3efed9db2fe8a461386da9d" + ], + "artifact_paths": [ + "pdd/prompts/context_snapshot_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/continue_generation_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:26c77779ebb6de17aac367eb7ce2f367973d767d1066b7d61ab6ad7f2595f9a7" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:26c77779ebb6de17aac367eb7ce2f367973d767d1066b7d61ab6ad7f2595f9a7" + ], + "artifact_paths": [ + "pdd/prompts/continue_generation_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/continue_generation_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:28c8cbbcae23ee2d98a0c7cd37da0cd3e3ff0979a25aaaafa179d851aff0678e" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:28c8cbbcae23ee2d98a0c7cd37da0cd3e3ff0979a25aaaafa179d851aff0678e" + ], + "artifact_paths": [ + "pdd/prompts/continue_generation_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/contract_check_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:b35d0ad61b3f299ae6b5e51b03496ee7f186bd3a73a8bace9a099c8639ccbe68" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:b35d0ad61b3f299ae6b5e51b03496ee7f186bd3a73a8bace9a099c8639ccbe68" + ], + "artifact_paths": [ + "pdd/prompts/contract_check_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/contract_ir_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:30e7209a545d82522ff5b57bbf459bcde658435c03bcaf07782a2d34ce2c0cfe" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:30e7209a545d82522ff5b57bbf459bcde658435c03bcaf07782a2d34ce2c0cfe" + ], + "artifact_paths": [ + "pdd/prompts/contract_ir_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/core/cli_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:f1d49d5906b0a00226a0b33cf74be34ca4970efccc9531dbcd1b96c4b57e3724" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:f1d49d5906b0a00226a0b33cf74be34ca4970efccc9531dbcd1b96c4b57e3724" + ], + "artifact_paths": [ + "pdd/prompts/core/cli_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/core/cloud_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:565f81380607551771e87da37bf291f553141513a7f8bad618d3344ee9dc15c8" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:565f81380607551771e87da37bf291f553141513a7f8bad618d3344ee9dc15c8" + ], + "artifact_paths": [ + "pdd/prompts/core/cloud_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/core/dump_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:83f4fd64fef89dda10e3bd780549cf9c7017b0d8becd4064566504f734330b4c" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:83f4fd64fef89dda10e3bd780549cf9c7017b0d8becd4064566504f734330b4c" + ], + "artifact_paths": [ + "pdd/prompts/core/dump_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/core/duplicate_cli_guard_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:5112b6b9c77a77a256b4b97e793297675206913f870f6ef32be2aca5e9d0eb9a" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:5112b6b9c77a77a256b4b97e793297675206913f870f6ef32be2aca5e9d0eb9a" + ], + "artifact_paths": [ + "pdd/prompts/core/duplicate_cli_guard_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/core/errors_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:b3d845b31167c1424e1f80dba0035c7094ed20bce6d5fb2414155474567c1e26" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:b3d845b31167c1424e1f80dba0035c7094ed20bce6d5fb2414155474567c1e26" + ], + "artifact_paths": [ + "pdd/prompts/core/errors_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/core/remote_session_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:5fbbcbefe8ff3a72e548fbe83fd77f59893e11bc6e037c114a722f94cffc9199" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:5fbbcbefe8ff3a72e548fbe83fd77f59893e11bc6e037c114a722f94cffc9199" + ], + "artifact_paths": [ + "pdd/prompts/core/remote_session_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/core/utils_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:23f2422a136e5c553edcd87d11bef0fa7dd2daefe63e07b6c029ca3ebe95a601" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:23f2422a136e5c553edcd87d11bef0fa7dd2daefe63e07b6c029ca3ebe95a601" + ], + "artifact_paths": [ + "pdd/prompts/core/utils_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/core_dump_requirements_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:3b441414ffb1b7e6fd40725d8c8753f73dc3e112e20095431ae8634a2e9bc118" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:3b441414ffb1b7e6fd40725d8c8753f73dc3e112e20095431ae8634a2e9bc118" + ], + "artifact_paths": [ + "pdd/prompts/core_dump_requirements_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/core_dump_smoke_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:1e201f51688394ae757d51a90151b12f8e3806177d3e54dfac80bb63b94dd7c5" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:1e201f51688394ae757d51a90151b12f8e3806177d3e54dfac80bb63b94dd7c5" + ], + "artifact_paths": [ + "pdd/prompts/core_dump_smoke_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/coverage_contracts_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:044980f2b8fe2bd1c0a3c294322b4e8767d9f12f8bb24410ba6e4ed818465dd8" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:044980f2b8fe2bd1c0a3c294322b4e8767d9f12f8bb24410ba6e4ed818465dd8" + ], + "artifact_paths": [ + "pdd/prompts/coverage_contracts_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/crash_main_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:c1672aa84aade370bbc57a4159c3eab82ba04b1cfce067b0f91f2837887c1046" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:c1672aa84aade370bbc57a4159c3eab82ba04b1cfce067b0f91f2837887c1046" + ], + "artifact_paths": [ + "pdd/prompts/crash_main_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/cross_issue_reconcile_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:72df6ac58fbd5964d799dd8292cade81e4be035baf32356f390b4535056646ce" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:72df6ac58fbd5964d799dd8292cade81e4be035baf32356f390b4535056646ce" + ], + "artifact_paths": [ + "pdd/prompts/cross_issue_reconcile_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/detect_change_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:faaf15a9702feae7c4135f770cd6d3720a5bc62288491e7ee63dccd134ea6bcb" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:faaf15a9702feae7c4135f770cd6d3720a5bc62288491e7ee63dccd134ea6bcb" + ], + "artifact_paths": [ + "pdd/prompts/detect_change_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/detect_change_main_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:e15d6a23754bfbe5215de58588b215ac5092f18c61958f96261c2827b4508e7b" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:e15d6a23754bfbe5215de58588b215ac5092f18c61958f96261c2827b4508e7b" + ], + "artifact_paths": [ + "pdd/prompts/detect_change_main_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/detect_change_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:2987422f58c48f279289d5b739e46bd1346d596dce1ec14b67a1ac840ee33e60" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:2987422f58c48f279289d5b739e46bd1346d596dce1ec14b67a1ac840ee33e60" + ], + "artifact_paths": [ + "pdd/prompts/detect_change_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/diff_analyzer_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:da5648e20e033bd37030f9f15495bbd7b7461b92d0b815ea81e22361fa6511d5" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:da5648e20e033bd37030f9f15495bbd7b7461b92d0b815ea81e22361fa6511d5" + ], + "artifact_paths": [ + "pdd/prompts/diff_analyzer_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/durable_sync_runner_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:fb45ad84ba8adb320baadeb47cac7917626dfd0e44916e8ffd6709cd13ccb72e" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:fb45ad84ba8adb320baadeb47cac7917626dfd0e44916e8ffd6709cd13ccb72e" + ], + "artifact_paths": [ + "pdd/prompts/durable_sync_runner_python.prompt" + ], + "required": true + }, + { + "obligation_id": "pytest-descriptor-store", + "kind": "test", + "validator_id": "pytest", + "validator_config_digest": "7c29aa937a70b7db28c9353bbad309654e12d3fb4d317edf75b475bbc1880963", + "requirement_ids": [ + "CONTRACT-SHA256:fb45ad84ba8adb320baadeb47cac7917626dfd0e44916e8ffd6709cd13ccb72e" + ], + "artifact_paths": [ + "tests/test_sync_core_candidate_artifact_provenance.py", + "tests/test_sync_core_descriptor_store.py", + "tests/test_sync_core_trust.py" + ], + "code_under_test_paths": [ + "pdd/sync_core/descriptor_store.py" + ], + "required": true + }, + { + "obligation_id": "pytest-supervisor", + "kind": "test", + "validator_id": "pytest", + "validator_config_digest": "7c29aa937a70b7db28c9353bbad309654e12d3fb4d317edf75b475bbc1880963", + "requirement_ids": [ + "CONTRACT-SHA256:fb45ad84ba8adb320baadeb47cac7917626dfd0e44916e8ffd6709cd13ccb72e" + ], + "artifact_paths": [ + "tests/test_sync_core_lifecycle_scenarios.py", + "tests/test_sync_core_runner.py", + "tests/test_sync_core_supervisor.py" + ], + "code_under_test_paths": [ + "pdd/sync_core/supervisor.py" + ], + "required": true + }, + { + "obligation_id": "pytest-signer-process", + "kind": "test", + "validator_id": "pytest", + "validator_config_digest": "7c29aa937a70b7db28c9353bbad309654e12d3fb4d317edf75b475bbc1880963", + "requirement_ids": [ + "CONTRACT-SHA256:fb45ad84ba8adb320baadeb47cac7917626dfd0e44916e8ffd6709cd13ccb72e" + ], + "artifact_paths": [ + "tests/test_sync_core_trust.py" + ], + "code_under_test_paths": [ + "pdd/sync_core/signer_process.py" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/edit_file_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:7617636b78e26e2ff2ab2840a087435689a14dda5e8a5e6304ff75af2c7a6364" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:7617636b78e26e2ff2ab2840a087435689a14dda5e8a5e6304ff75af2c7a6364" + ], + "artifact_paths": [ + "pdd/prompts/edit_file_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/embed_retrieve_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:3a1233318214d2d0cf781db317d65f27a719d0cc6e4651690b26994a989e6d1a" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:3a1233318214d2d0cf781db317d65f27a719d0cc6e4651690b26994a989e6d1a" + ], + "artifact_paths": [ + "pdd/prompts/embed_retrieve_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/evidence_manifest_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:3b50a00e8deca49c70b127540a2e589aa3715a498b775ab4ddb482adb65eac6f" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:3b50a00e8deca49c70b127540a2e589aa3715a498b775ab4ddb482adb65eac6f" + ], + "artifact_paths": [ + "pdd/prompts/evidence_manifest_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/evidence_store_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:4d66066b39dbcaa6e7b17b36f0ba3a9bab4ccdd07979c48eaf271ddaab6a076d" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:4d66066b39dbcaa6e7b17b36f0ba3a9bab4ccdd07979c48eaf271ddaab6a076d" + ], + "artifact_paths": [ + "pdd/prompts/evidence_store_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/example_generator_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:649ca9c5ba0a99cf697bf70e61170baa0d474133465cc02e36a2c83aa12f9c64" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:649ca9c5ba0a99cf697bf70e61170baa0d474133465cc02e36a2c83aa12f9c64" + ], + "artifact_paths": [ + "pdd/prompts/example_generator_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/extract_code_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:ed36f99461137e018381bd2114d9f9fb5d0adcc971d85295834948a897b54432" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:ed36f99461137e018381bd2114d9f9fb5d0adcc971d85295834948a897b54432" + ], + "artifact_paths": [ + "pdd/prompts/extract_code_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/extract_conflict_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:57fc57754ed5e0864af52545c49b572919ffc0590fdf3a78149af178d33d5d87" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:57fc57754ed5e0864af52545c49b572919ffc0590fdf3a78149af178d33d5d87" + ], + "artifact_paths": [ + "pdd/prompts/extract_conflict_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/extract_detect_change_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:d875d26fd6c68c766c2ab506bdf05d04001c1810ab4360310bcbd425101f0755" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:d875d26fd6c68c766c2ab506bdf05d04001c1810ab4360310bcbd425101f0755" + ], + "artifact_paths": [ + "pdd/prompts/extract_detect_change_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/extract_program_code_fix_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:cfc46cb917cf55ac4cac078acf3110801b74ec3cac211d830dac6681f153f2c9" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:cfc46cb917cf55ac4cac078acf3110801b74ec3cac211d830dac6681f153f2c9" + ], + "artifact_paths": [ + "pdd/prompts/extract_program_code_fix_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/extract_prompt_change_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:7d0118688685d2aabae6ac690e2c383d038fec5086fa3a0e44fca612c722d62c" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:7d0118688685d2aabae6ac690e2c383d038fec5086fa3a0e44fca612c722d62c" + ], + "artifact_paths": [ + "pdd/prompts/extract_prompt_change_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/extract_prompt_split_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:ae14ad0eba15c436117028d8abb5c20ae6fc07e2a67c2163e7fecfc6180c9b3d" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:ae14ad0eba15c436117028d8abb5c20ae6fc07e2a67c2163e7fecfc6180c9b3d" + ], + "artifact_paths": [ + "pdd/prompts/extract_prompt_split_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/extract_prompt_update_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:dd2cb1179eff67a459f1e8f7cede403b50199f6833d9ee352f5b83ae403b3e3b" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:dd2cb1179eff67a459f1e8f7cede403b50199f6833d9ee352f5b83ae403b3e3b" + ], + "artifact_paths": [ + "pdd/prompts/extract_prompt_update_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/extract_promptline_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:98f7938d569826d833db280ed1355e3b7be09a806f58e5854abc1dd7029727be" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:98f7938d569826d833db280ed1355e3b7be09a806f58e5854abc1dd7029727be" + ], + "artifact_paths": [ + "pdd/prompts/extract_promptline_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/extract_unit_code_fix_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:73897ab7030b0b662a0c3bce8ff0dc68a989405f2422ea5eaaf92e78afce4278" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:73897ab7030b0b662a0c3bce8ff0dc68a989405f2422ea5eaaf92e78afce4278" + ], + "artifact_paths": [ + "pdd/prompts/extract_unit_code_fix_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/extract_xml_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:79170768bfa48528696fb0b5fdbef09812477e8d8a8755af8e8fda39c599a2f5" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:79170768bfa48528696fb0b5fdbef09812477e8d8a8755af8e8fda39c599a2f5" + ], + "artifact_paths": [ + "pdd/prompts/extract_xml_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/extracts_prune_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:0d1a8c1898082922f942695d8c0d4f78d1b3c276ccb7d590818b3488921d7a3a" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:0d1a8c1898082922f942695d8c0d4f78d1b3c276ccb7d590818b3488921d7a3a" + ], + "artifact_paths": [ + "pdd/prompts/extracts_prune_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/failure_classification_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:89642166772d38c35f9d6f071a929753a2df1f35f361d6580ad01ea0acf57e5b" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:89642166772d38c35f9d6f071a929753a2df1f35f361d6580ad01ea0acf57e5b" + ], + "artifact_paths": [ + "pdd/prompts/failure_classification_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/find_section_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:30b22c834c4a659be69878bef0d3cea6f7cf75c93e6dc9f3e585a7a4cbb564b5" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:30b22c834c4a659be69878bef0d3cea6f7cf75c93e6dc9f3e585a7a4cbb564b5" + ], + "artifact_paths": [ + "pdd/prompts/find_section_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/find_verification_errors_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:4c0bf0a6c8fc458bfaa669b124adf7d2b1b1092d533e6873b46c723d4b714f92" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:4c0bf0a6c8fc458bfaa669b124adf7d2b1b1092d533e6873b46c723d4b714f92" + ], + "artifact_paths": [ + "pdd/prompts/find_verification_errors_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/firecrawl_cache_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:7d4c96e51a2b06ee479e3c526bb774b63d474a5f3a0f96ac4c2ec74e11d4190e" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:7d4c96e51a2b06ee479e3c526bb774b63d474a5f3a0f96ac4c2ec74e11d4190e" + ], + "artifact_paths": [ + "pdd/prompts/firecrawl_cache_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/fix_code_loop_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:7dda5bb8d5c17c1bfe398b2f250c3751322257d16b5fb3ea3faac80de71505ed" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:7dda5bb8d5c17c1bfe398b2f250c3751322257d16b5fb3ea3faac80de71505ed" + ], + "artifact_paths": [ + "pdd/prompts/fix_code_loop_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/fix_code_module_errors_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:d26f73c3e180b1223806ee77be07874c7cac76fe08fa58c4801bab20aefd1449" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:d26f73c3e180b1223806ee77be07874c7cac76fe08fa58c4801bab20aefd1449" + ], + "artifact_paths": [ + "pdd/prompts/fix_code_module_errors_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/fix_code_module_errors_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:814270221f2f701bf7d841fab37cb95e3f1bffc1256f8c8c9250dde4a8ec8e17" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:814270221f2f701bf7d841fab37cb95e3f1bffc1256f8c8c9250dde4a8ec8e17" + ], + "artifact_paths": [ + "pdd/prompts/fix_code_module_errors_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/fix_error_loop_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:afffd825b4495819b853fec9a86b0be7644f6fe0468d40548d8b9b2803d183ce" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:afffd825b4495819b853fec9a86b0be7644f6fe0468d40548d8b9b2803d183ce" + ], + "artifact_paths": [ + "pdd/prompts/fix_error_loop_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/fix_errors_from_unit_tests_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:07f7f22daea14a26aa0532351306c2993bd54fd4f363250dd6589ebfe8e490e2" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:07f7f22daea14a26aa0532351306c2993bd54fd4f363250dd6589ebfe8e490e2" + ], + "artifact_paths": [ + "pdd/prompts/fix_errors_from_unit_tests_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/fix_errors_from_unit_tests_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:eaece577770c9247f0b90667ec00d28dd1f374330c0f8d661d21c318129cfb0f" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:eaece577770c9247f0b90667ec00d28dd1f374330c0f8d661d21c318129cfb0f" + ], + "artifact_paths": [ + "pdd/prompts/fix_errors_from_unit_tests_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/fix_focus_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:dc1d47797c7a788871183285e00971e4753836d81a2830f3c8c7f2088d105da7" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:dc1d47797c7a788871183285e00971e4753836d81a2830f3c8c7f2088d105da7" + ], + "artifact_paths": [ + "pdd/prompts/fix_focus_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/fix_main_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:f4b5f47aaeda04805ddf44d2ea465dace78206ef18bca05141156ff15de3d3ac" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:f4b5f47aaeda04805ddf44d2ea465dace78206ef18bca05141156ff15de3d3ac" + ], + "artifact_paths": [ + "pdd/prompts/fix_main_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/fix_verification_errors_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:00ed7287135f33bb3ef77663b9f1ab254711bd2974e0299997f5846e74d415b6" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:00ed7287135f33bb3ef77663b9f1ab254711bd2974e0299997f5846e74d415b6" + ], + "artifact_paths": [ + "pdd/prompts/fix_verification_errors_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/fix_verification_errors_loop_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:a008ce37aecb7804bc73a3645fade40048a6da426bd5d3efff4f9db49eb66882" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:a008ce37aecb7804bc73a3645fade40048a6da426bd5d3efff4f9db49eb66882" + ], + "artifact_paths": [ + "pdd/prompts/fix_verification_errors_loop_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/fix_verification_errors_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:c8c9d553fff5b8efa95e959816e22600a1453915c566eabfbecd9ff2a6307b48" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:c8c9d553fff5b8efa95e959816e22600a1453915c566eabfbecd9ff2a6307b48" + ], + "artifact_paths": [ + "pdd/prompts/fix_verification_errors_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/fix_verification_main_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:20dd14227c0a550477823fd5a52ef5639207658db0b5abccd036a9a008225c80" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:20dd14227c0a550477823fd5a52ef5639207658db0b5abccd036a9a008225c80" + ], + "artifact_paths": [ + "pdd/prompts/fix_verification_main_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/App_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:8eef4f0548b1b7d8d5d30c46ce672ae318d9f02c4187b1920d8fdcacefd6c611" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:8eef4f0548b1b7d8d5d30c46ce672ae318d9f02c4187b1920d8fdcacefd6c611" + ], + "artifact_paths": [ + "pdd/prompts/frontend/App_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/api_typescript.prompt", + "language_id": "typescript", + "required_requirement_ids": [ + "CONTRACT-SHA256:5e564e4c033a2fa5564dd8e95a6bcec004faf5109fc0ac369e36d8756f561a43" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:5e564e4c033a2fa5564dd8e95a6bcec004faf5109fc0ac369e36d8756f561a43" + ], + "artifact_paths": [ + "pdd/prompts/frontend/api_typescript.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/AddModuleModal_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:faaacb6295478fe905e284fb42824a17129d57e984fc879357fb07324175aed3" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:faaacb6295478fe905e284fb42824a17129d57e984fc879357fb07324175aed3" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/AddModuleModal_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/AddToQueueModal_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:03b90ee0736b119b65dbcb3844e49ab3c440cd51786eca1e2da68f0566467cfb" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:03b90ee0736b119b65dbcb3844e49ab3c440cd51786eca1e2da68f0566467cfb" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/AddToQueueModal_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/ArchitectureView_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:f9c9d402623004bb55c1748508a24e78264d97e3449d6b84639396553bc8c97b" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:f9c9d402623004bb55c1748508a24e78264d97e3449d6b84639396553bc8c97b" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/ArchitectureView_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/AuthStatusIndicator_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:b73dbf865d28a02ecc83b4ffec95bd629476ddc08fc71c8071645cb367b25aa6" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:b73dbf865d28a02ecc83b4ffec95bd629476ddc08fc71c8071645cb367b25aa6" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/AuthStatusIndicator_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/BatchFilterDropdown_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:19f76d4cec3f76906df8308aeeb459ec50b2ab491fd691e492eb69e0f7d29a6c" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:19f76d4cec3f76906df8308aeeb459ec50b2ab491fd691e492eb69e0f7d29a6c" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/BatchFilterDropdown_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/BugModal_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:18d90d1662ba0f3bea0d1db9d9f32a2c9284581731109dd393f5e268f2ae728e" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:18d90d1662ba0f3bea0d1db9d9f32a2c9284581731109dd393f5e268f2ae728e" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/BugModal_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/ChangeModal_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:50a75e9628dbc385cb493df8a2955f228538fa26b205dd336aa22a07ad5819b3" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:50a75e9628dbc385cb493df8a2955f228538fa26b205dd336aa22a07ad5819b3" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/ChangeModal_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/CommandForm_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:5b95ff5a7d88f87dc3604a68f6b9fa44b200078bee11f185ce0f1089f7a20ad2" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:5b95ff5a7d88f87dc3604a68f6b9fa44b200078bee11f185ce0f1089f7a20ad2" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/CommandForm_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/CommandOutput_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:9d88562ae13dbc52a7f6e228a68b8f798ea26b5ec1ec4739b7878364557e4474" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:9d88562ae13dbc52a7f6e228a68b8f798ea26b5ec1ec4739b7878364557e4474" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/CommandOutput_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/CreatePromptModal_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:d5c669061232a60e78c5203a90dd1ddf93b90bcb539697ecb66023d11fe2be84" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:d5c669061232a60e78c5203a90dd1ddf93b90bcb539697ecb66023d11fe2be84" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/CreatePromptModal_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/DependencyViewer_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:4a03dae0ee0ad7dfec8fc0d46536e2f49c6b8d5ebdcccba637c2e469d67c9088" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:4a03dae0ee0ad7dfec8fc0d46536e2f49c6b8d5ebdcccba637c2e469d67c9088" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/DependencyViewer_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/DeviceIndicator_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:80f2de7503d4a3d06b52ca90801a1fc335b08d594ca03e1a2949ac7411f6ebad" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:80f2de7503d4a3d06b52ca90801a1fc335b08d594ca03e1a2949ac7411f6ebad" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/DeviceIndicator_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/ErrorBoundary_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:0ead9e53969f85d5c092ee64f68515f68abf77d1c4d485b3d382a28d17a3899c" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:0ead9e53969f85d5c092ee64f68515f68abf77d1c4d485b3d382a28d17a3899c" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/ErrorBoundary_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/ExecutionModeToggle_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:03d28013774680e8196453020347fdd78a611046a5c59a69492617d8bb6fe98c" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:03d28013774680e8196453020347fdd78a611046a5c59a69492617d8bb6fe98c" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/ExecutionModeToggle_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/FileBrowser_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:400fd5d9b8103c2dd7adeb1508c80e8bb64832bedb684cc87a70a5743498b6fa" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:400fd5d9b8103c2dd7adeb1508c80e8bb64832bedb684cc87a70a5743498b6fa" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/FileBrowser_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/FilePickerInput_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:208625c2bbdd715d599f1d9577a4d4a4437bbb006f783a7d9ff865d862878ef3" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:208625c2bbdd715d599f1d9577a4d4a4437bbb006f783a7d9ff865d862878ef3" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/FilePickerInput_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/GeneratedCommand_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:a22e700e7fca4dd6a757c2678617a65091889a4d4435cb1c409aff3e30e970dc" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:a22e700e7fca4dd6a757c2678617a65091889a4d4435cb1c409aff3e30e970dc" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/GeneratedCommand_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/GenerationProgressModal_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:99daad7053b5e761f9816c63bd706a6c5bc8db1a9acb4be208e9a95fcd555005" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:99daad7053b5e761f9816c63bd706a6c5bc8db1a9acb4be208e9a95fcd555005" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/GenerationProgressModal_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/GraphToolbar_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:4cba4182ea766b0f215bb9ec3368d1e5dd386892d4bc6ee35ceecd956bfac96d" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:4cba4182ea766b0f215bb9ec3368d1e5dd386892d4bc6ee35ceecd956bfac96d" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/GraphToolbar_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/GuidanceSidebar_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:a9968eb9399549e5f9d0f8f811a86c6b6b5b8dd6b92eb71157e81031b6588d5a" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:a9968eb9399549e5f9d0f8f811a86c6b6b5b8dd6b92eb71157e81031b6588d5a" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/GuidanceSidebar_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/Header_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:d5a5db131ba26dc76883887d65ae3df7cdf13ea78afb52a8608f9057af4f2500" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:d5a5db131ba26dc76883887d65ae3df7cdf13ea78afb52a8608f9057af4f2500" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/Header_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/Icon_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:5a348bfb891b2426ec4eeffa0958a3cfd6c9aab769ab39e08b7b7fe43af5d281" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:5a348bfb891b2426ec4eeffa0958a3cfd6c9aab769ab39e08b7b7fe43af5d281" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/Icon_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/InputField_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:ff8f5277eb743aecbd40910c864fc37a07175ca11426c0bd2dade08876f5c75d" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:ff8f5277eb743aecbd40910c864fc37a07175ca11426c0bd2dade08876f5c75d" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/InputField_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/JobCard_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:34faba64fe1f9f187dd54f5a3a398bc50e93cfddcd1b7a25439ade7236bc64f3" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:34faba64fe1f9f187dd54f5a3a398bc50e93cfddcd1b7a25439ade7236bc64f3" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/JobCard_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/JobDashboard_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:f34588435491334dde68bf4926a64f20ce82aeb66ebcdac4563cb4436ed36e5c" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:f34588435491334dde68bf4926a64f20ce82aeb66ebcdac4563cb4436ed36e5c" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/JobDashboard_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/JobOutputPanel_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:d2e70681d1351655f65630878d78608476f9d5029b5a431e1fbe8c38964310f3" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:d2e70681d1351655f65630878d78608476f9d5029b5a431e1fbe8c38964310f3" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/JobOutputPanel_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/ModelSelector_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:0c35aedf7711d4e9fe7fc85049ba791b06f7100f5d63334f2c030fd399f5e4f8" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:0c35aedf7711d4e9fe7fc85049ba791b06f7100f5d63334f2c030fd399f5e4f8" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/ModelSelector_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/ModelSliders_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:150055b3d8ca7a876fbafc7f8dc000c2879822f53653ac435c27a161e70f9cde" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:150055b3d8ca7a876fbafc7f8dc000c2879822f53653ac435c27a161e70f9cde" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/ModelSliders_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/ModuleEditModal_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:8ffda3d42b1cd56bd928427bf48d907de135478c8539f8d66193166c0f757692" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:8ffda3d42b1cd56bd928427bf48d907de135478c8539f8d66193166c0f757692" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/ModuleEditModal_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/ModuleNode_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:30a74dac7afc7d081f672f807ddb1ba07b9582d6c0b34d6089bbd1b84ccec9f9" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:30a74dac7afc7d081f672f807ddb1ba07b9582d6c0b34d6089bbd1b84ccec9f9" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/ModuleNode_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/ProjectSettings_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:1578128d42b6c9b1870ce9ee63ac05473164b77990efc1bfbf723978e59e0b12" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:1578128d42b6c9b1870ce9ee63ac05473164b77990efc1bfbf723978e59e0b12" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/ProjectSettings_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/PromptCodeDiffModal_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:21da99a6f39225587f05af1d828735aa6ef501f88b28b8356cec95a0aebcdb5a" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:21da99a6f39225587f05af1d828735aa6ef501f88b28b8356cec95a0aebcdb5a" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/PromptCodeDiffModal_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/PromptEditor_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:5b3003dfc5a585063083c37dc7fa8c3867184940c196f1d46e0c1b0eee98db40" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:5b3003dfc5a585063083c37dc7fa8c3867184940c196f1d46e0c1b0eee98db40" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/PromptEditor_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/PromptMetricsBar_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:e16d71746fcc664c163c96b5b843deea8079ce5c75cc09dda66ea35540fc1c15" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:e16d71746fcc664c163c96b5b843deea8079ce5c75cc09dda66ea35540fc1c15" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/PromptMetricsBar_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/PromptOrderModal_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:bf2e75162091fb3e5f3c8a47ae220fb2141beca6b35faf3ebd1999ad44619efc" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:bf2e75162091fb3e5f3c8a47ae220fb2141beca6b35faf3ebd1999ad44619efc" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/PromptOrderModal_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/PromptSelector_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:8e689d76b56554eb9fb86a39b5cd6d040884703fbbe6e7eac88c5383e6a7dc40" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:8e689d76b56554eb9fb86a39b5cd6d040884703fbbe6e7eac88c5383e6a7dc40" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/PromptSelector_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/PromptSpace_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:b60580359e928b1e661916e0e9f54e23999674783191220bbe940695a2d42846" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:b60580359e928b1e661916e0e9f54e23999674783191220bbe940695a2d42846" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/PromptSpace_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/ReauthModal_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:c8477db5ba580de7ec8fcddd4dcc0aa44a8c9444ecee997ea64c37e5f3e723b4" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:c8477db5ba580de7ec8fcddd4dcc0aa44a8c9444ecee997ea64c37e5f3e723b4" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/ReauthModal_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/RemoteSessionSelector_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:934c41fbe76db07360e47d125714d557663fa4142cc31c470d83cff12ace73c7" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:934c41fbe76db07360e47d125714d557663fa4142cc31c470d83cff12ace73c7" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/RemoteSessionSelector_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/SyncFromPromptModal_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:ea72b99618be9f81bc3374d2a681c0932bfa31e9ad2ee9bee8e9af9133ef1730" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:ea72b99618be9f81bc3374d2a681c0932bfa31e9ad2ee9bee8e9af9133ef1730" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/SyncFromPromptModal_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/SyncOptionsModal_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:3559b324bbf6009779e2034ac549210e500a86ab5ead9c866649e40b4901ff70" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:3559b324bbf6009779e2034ac549210e500a86ab5ead9c866649e40b4901ff70" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/SyncOptionsModal_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/SyncStatusBadge_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:c32474f9c8bfc61ccd11eaa22db5ef02ab8ca9282ae7e3a40b36639efb8b35b3" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:c32474f9c8bfc61ccd11eaa22db5ef02ab8ca9282ae7e3a40b36639efb8b35b3" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/SyncStatusBadge_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/Tabs_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:0c69039f5501663c1ed8f0585c2be8664bad18d246fa0272b65791b5c788a082" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:0c69039f5501663c1ed8f0585c2be8664bad18d246fa0272b65791b5c788a082" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/Tabs_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/TaskQueueControls_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:83fbdc1836136239f82e036d5d05416dedc188f7d3fc5ee996b56e4577e0663b" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:83fbdc1836136239f82e036d5d05416dedc188f7d3fc5ee996b56e4577e0663b" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/TaskQueueControls_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/TaskQueueItem_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:c0a91ee8df30607b34e0e4e65d31782477d0dce3c65d5fe2866866bf6dcbfb72" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:c0a91ee8df30607b34e0e4e65d31782477d0dce3c65d5fe2866866bf6dcbfb72" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/TaskQueueItem_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/TaskQueuePanel_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:a2b8de4537f2931bd681db51fc8e1796af21b064518d8812d996cde5a107feac" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:a2b8de4537f2931bd681db51fc8e1796af21b064518d8812d996cde5a107feac" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/TaskQueuePanel_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/TextAreaField_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:74990a9ec70aadeacf4123e2b65356db63eb32b2b8654b97151968726fe539ce" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:74990a9ec70aadeacf4123e2b65356db63eb32b2b8654b97151968726fe539ce" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/TextAreaField_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/Toast_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:c4e135e123c4ed38525d21bcdbea149716d44b1e454cf10140c67db0a06f8817" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:c4e135e123c4ed38525d21bcdbea149716d44b1e454cf10140c67db0a06f8817" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/Toast_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/components/Tooltip_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:bd0e7442a60123124e0e7d288cb2c5514f9af169143ae9e41ee9f9bfc9307b91" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:bd0e7442a60123124e0e7d288cb2c5514f9af169143ae9e41ee9f9bfc9307b91" + ], + "artifact_paths": [ + "pdd/prompts/frontend/components/Tooltip_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/constants_typescript.prompt", + "language_id": "typescript", + "required_requirement_ids": [ + "CONTRACT-SHA256:754009ea370890c885db2f5c6f960ac5554e53d04217587559ffa52964724702" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:754009ea370890c885db2f5c6f960ac5554e53d04217587559ffa52964724702" + ], + "artifact_paths": [ + "pdd/prompts/frontend/constants_typescript.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/hooks/useArchitectureHistory_typescript.prompt", + "language_id": "typescript", + "required_requirement_ids": [ + "CONTRACT-SHA256:5ff2ee422a3aab02e1ec02051507ca9e2c9aed1c9b67247be70ce1038b26d056" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:5ff2ee422a3aab02e1ec02051507ca9e2c9aed1c9b67247be70ce1038b26d056" + ], + "artifact_paths": [ + "pdd/prompts/frontend/hooks/useArchitectureHistory_typescript.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/hooks/useAudioNotification_typescript.prompt", + "language_id": "typescript", + "required_requirement_ids": [ + "CONTRACT-SHA256:40f92bf435ba19de4f60796e4319faa19a500412bc74e130e919ebedf0440082" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:40f92bf435ba19de4f60796e4319faa19a500412bc74e130e919ebedf0440082" + ], + "artifact_paths": [ + "pdd/prompts/frontend/hooks/useAudioNotification_typescript.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/hooks/useJobs_typescript.prompt", + "language_id": "typescript", + "required_requirement_ids": [ + "CONTRACT-SHA256:482f0c447b1427dc79160dc77e0dccb6adccc7fb5c1f7602c3e0dbf689610ce2" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:482f0c447b1427dc79160dc77e0dccb6adccc7fb5c1f7602c3e0dbf689610ce2" + ], + "artifact_paths": [ + "pdd/prompts/frontend/hooks/useJobs_typescript.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/hooks/useTaskQueue_typescript.prompt", + "language_id": "typescript", + "required_requirement_ids": [ + "CONTRACT-SHA256:1ca2ba8f0aaae3d159a040d5c524e77fe741c4a695dca54f3cb23cae5573f3b7" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:1ca2ba8f0aaae3d159a040d5c524e77fe741c4a695dca54f3cb23cae5573f3b7" + ], + "artifact_paths": [ + "pdd/prompts/frontend/hooks/useTaskQueue_typescript.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/index_typescriptreact.prompt", + "language_id": "typescriptreact", + "required_requirement_ids": [ + "CONTRACT-SHA256:d8e6a1754bb61a7bdd1810043512c5b62962d6c4735517b79b71151c1414882d" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:d8e6a1754bb61a7bdd1810043512c5b62962d6c4735517b79b71151c1414882d" + ], + "artifact_paths": [ + "pdd/prompts/frontend/index_typescriptreact.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/frontend/types_typescript.prompt", + "language_id": "typescript", + "required_requirement_ids": [ + "CONTRACT-SHA256:8aa54b4ffbed680dc28a686a4a21f496f5bd7fe70f8fa6fa278cf5f1090ead80" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:8aa54b4ffbed680dc28a686a4a21f496f5bd7fe70f8fa6fa278cf5f1090ead80" + ], + "artifact_paths": [ + "pdd/prompts/frontend/types_typescript.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/gate_policy_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:b46b9a6c79002af4e8e992471f57bcfb7251132d6aa9d42d957ea60cd21b73f6" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:b46b9a6c79002af4e8e992471f57bcfb7251132d6aa9d42d957ea60cd21b73f6" + ], + "artifact_paths": [ + "pdd/prompts/gate_policy_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/gate_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:3a3deda156f1df5851ed794108f20700a8ace5991a22acfdfeb9deb28670c432" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:3a3deda156f1df5851ed794108f20700a8ace5991a22acfdfeb9deb28670c432" + ], + "artifact_paths": [ + "pdd/prompts/gate_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/generate_model_catalog_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:1e0ffc1fb8e8172bb396b8050c67bfbf750e28bd4191ffb63f7d664d0530827e" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:1e0ffc1fb8e8172bb396b8050c67bfbf750e28bd4191ffb63f7d664d0530827e" + ], + "artifact_paths": [ + "pdd/prompts/generate_model_catalog_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/generate_output_paths_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:bb4e7390838431116825bfd16724169a4e145f84cc8570a99e2ade420748da98" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:bb4e7390838431116825bfd16724169a4e145f84cc8570a99e2ade420748da98" + ], + "artifact_paths": [ + "pdd/prompts/generate_output_paths_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/generate_story_contract_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:415e054e596f1b103e999a1f7dca848143c2d8be09b8b1723cd01ead1fe66fc6" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:415e054e596f1b103e999a1f7dca848143c2d8be09b8b1723cd01ead1fe66fc6" + ], + "artifact_paths": [ + "pdd/prompts/generate_story_contract_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/generate_test_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:f82525045a841741a111e2e1203e462f371c2aa57de304ce9392cbc9fa8c0697" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:f82525045a841741a111e2e1203e462f371c2aa57de304ce9392cbc9fa8c0697" + ], + "artifact_paths": [ + "pdd/prompts/generate_test_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/generate_test_from_example_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:eeea7afac259b3f9f789b2cbe1b9dbcc1577298dd6a68e47863443bfff2467b9" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:eeea7afac259b3f9f789b2cbe1b9dbcc1577298dd6a68e47863443bfff2467b9" + ], + "artifact_paths": [ + "pdd/prompts/generate_test_from_example_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/generate_test_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:888960950f740a4b792cc9980343ddee5e40c8e3c5ebd4ff4c33ef7d66d5ea05" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:888960950f740a4b792cc9980343ddee5e40c8e3c5ebd4ff4c33ef7d66d5ea05" + ], + "artifact_paths": [ + "pdd/prompts/generate_test_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/generate_user_story_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:24b67a215cbb49b7aba5ef9d38b70be7df7acc712ef4c781a1e0bbe82179102d" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:24b67a215cbb49b7aba5ef9d38b70be7df7acc712ef4c781a1e0bbe82179102d" + ], + "artifact_paths": [ + "pdd/prompts/generate_user_story_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/generation_completion_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:dde7e344d8f08e298359f9ef72e7b38c0badc58c47d5d1162d51a60601808fcf" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:dde7e344d8f08e298359f9ef72e7b38c0badc58c47d5d1162d51a60601808fcf" + ], + "artifact_paths": [ + "pdd/prompts/generation_completion_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/get_comment_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:98f3705bf042b32274565c49122b020ce6e50c5d4d9bdd429050c1631fe3eca7" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:98f3705bf042b32274565c49122b020ce6e50c5d4d9bdd429050c1631fe3eca7" + ], + "artifact_paths": [ + "pdd/prompts/get_comment_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/get_extension_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:283fb54f334ab0d72d7100a51ff44c837152cc917c05df7d5aeeb02c867eea42" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:283fb54f334ab0d72d7100a51ff44c837152cc917c05df7d5aeeb02c867eea42" + ], + "artifact_paths": [ + "pdd/prompts/get_extension_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/get_jwt_token_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:f1fe2cab01019fd81d683c40511bfd09e698bd44458a4a4dd0b2158c82369ca3" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:f1fe2cab01019fd81d683c40511bfd09e698bd44458a4a4dd0b2158c82369ca3" + ], + "artifact_paths": [ + "pdd/prompts/get_jwt_token_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/get_language_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:4281ae64cabba8a37d3748589c3fa07e6a50cd5ee7c4f460ff2347a869caff10" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:4281ae64cabba8a37d3748589c3fa07e6a50cd5ee7c4f460ff2347a869caff10" + ], + "artifact_paths": [ + "pdd/prompts/get_language_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/get_lint_commands_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:d8c47a583973f8fd15353b01a4744b6ac7d31949beff51af7c917c9aac7736b7" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:d8c47a583973f8fd15353b01a4744b6ac7d31949beff51af7c917c9aac7736b7" + ], + "artifact_paths": [ + "pdd/prompts/get_lint_commands_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/get_run_command_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:3f79d0e73ad298c71002614e953cd9b4749a72cbf28842c5dc90f988742b6ce9" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:3f79d0e73ad298c71002614e953cd9b4749a72cbf28842c5dc90f988742b6ce9" + ], + "artifact_paths": [ + "pdd/prompts/get_run_command_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/get_test_command_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:ef559f5558fb627aa53f078cba0eaae221a7af9a2c6bdadf580a4cb12bf217b7" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:ef559f5558fb627aa53f078cba0eaae221a7af9a2c6bdadf580a4cb12bf217b7" + ], + "artifact_paths": [ + "pdd/prompts/get_test_command_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/git_porcelain_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:224e48e6a420dd776e880c4c8d9dc9714be9cbb74ce039d13069e55b180eb4db" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:224e48e6a420dd776e880c4c8d9dc9714be9cbb74ce039d13069e55b180eb4db" + ], + "artifact_paths": [ + "pdd/prompts/git_porcelain_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/git_update_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:b30f12d488013603dd33788991981021ef617fbe9ea4d5ea7417315810b31b6c" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:b30f12d488013603dd33788991981021ef617fbe9ea4d5ea7417315810b31b6c" + ], + "artifact_paths": [ + "pdd/prompts/git_update_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/grounding_policy_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:8fac6dc274c11d64167b072acfee30d78b65f639e83e01fac275a0ce9853f0c8" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:8fac6dc274c11d64167b072acfee30d78b65f639e83e01fac275a0ce9853f0c8" + ], + "artifact_paths": [ + "pdd/prompts/grounding_policy_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/include_query_extractor_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:2bda3ccd8512c5ff53b76b878935e1f740e6bff576d924c2c616317e7ad7cfbc" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:2bda3ccd8512c5ff53b76b878935e1f740e6bff576d924c2c616317e7ad7cfbc" + ], + "artifact_paths": [ + "pdd/prompts/include_query_extractor_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/include_query_extractor_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:012758329252f1542130270dc354db9f5c8c2fee75d7c9b6978a4ffc6dd2a142" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:012758329252f1542130270dc354db9f5c8c2fee75d7c9b6978a4ffc6dd2a142" + ], + "artifact_paths": [ + "pdd/prompts/include_query_extractor_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/increase_tests_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:8e8bc35752439e30dc7f5a990d09bcd2d7f01cc781414d37bce52e2440f5e5ea" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:8e8bc35752439e30dc7f5a990d09bcd2d7f01cc781414d37bce52e2440f5e5ea" + ], + "artifact_paths": [ + "pdd/prompts/increase_tests_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/increase_tests_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:3947e1d2f2ccd055d616e5bd39d8d93ee2f49519e4593e71ece1027c30beb7ba" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:3947e1d2f2ccd055d616e5bd39d8d93ee2f49519e4593e71ece1027c30beb7ba" + ], + "artifact_paths": [ + "pdd/prompts/increase_tests_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/incremental_code_generator_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:785e0086f99eea2d7b288a5bc7581e496e253215813bece54034c78fdbaf14b3" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:785e0086f99eea2d7b288a5bc7581e496e253215813bece54034c78fdbaf14b3" + ], + "artifact_paths": [ + "pdd/prompts/incremental_code_generator_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/incremental_prd_architecture_patch_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:2fd57482d90d47430e282e62b22b64d52d708e6b211fdfff712e0641b8171293" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:2fd57482d90d47430e282e62b22b64d52d708e6b211fdfff712e0641b8171293" + ], + "artifact_paths": [ + "pdd/prompts/incremental_prd_architecture_patch_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/incremental_prd_architecture_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:dcb9ce235a82ecb5b96a0ad1de2c4bc888c3e62fbb59ea5703ba335f77ddec8d" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:dcb9ce235a82ecb5b96a0ad1de2c4bc888c3e62fbb59ea5703ba335f77ddec8d" + ], + "artifact_paths": [ + "pdd/prompts/incremental_prd_architecture_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/insert_includes_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:c8a853834351bba7c89323ddb14cf1a689232fae78429ecec7d0547cb6b698b9" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:c8a853834351bba7c89323ddb14cf1a689232fae78429ecec7d0547cb6b698b9" + ], + "artifact_paths": [ + "pdd/prompts/insert_includes_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/insert_includes_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:a08a37cb877c6ac77278e6f0a628f5caffc61176f3b58189d09fef90eba8d78b" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:a08a37cb877c6ac77278e6f0a628f5caffc61176f3b58189d09fef90eba8d78b" + ], + "artifact_paths": [ + "pdd/prompts/insert_includes_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/install_completion_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:2594759e31dff4c0d43ca790282d350d135c237f456e0961d39bc78516f4bc32" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:2594759e31dff4c0d43ca790282d350d135c237f456e0961d39bc78516f4bc32" + ], + "artifact_paths": [ + "pdd/prompts/install_completion_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/language_format_csv.prompt", + "language_id": "csv", + "required_requirement_ids": [ + "CONTRACT-SHA256:58748d47cf0f8f6db83a00927139537e2d89f58d6e5dcc26b483e1803057d850" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:58748d47cf0f8f6db83a00927139537e2d89f58d6e5dcc26b483e1803057d850" + ], + "artifact_paths": [ + "pdd/prompts/language_format_csv.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/llm_invoke_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:88face96e298219fba7448186eb71f1586a676888a827a04d326882df8e4f41e" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:88face96e298219fba7448186eb71f1586a676888a827a04d326882df8e4f41e" + ], + "artifact_paths": [ + "pdd/prompts/llm_invoke_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/llm_model_csv.prompt", + "language_id": "csv", + "required_requirement_ids": [ + "CONTRACT-SHA256:41a01d33fe3bd072fea0fd616b0d0c3d003f1e2121e24ae723c19809dfd07abf" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:41a01d33fe3bd072fea0fd616b0d0c3d003f1e2121e24ae723c19809dfd07abf" + ], + "artifact_paths": [ + "pdd/prompts/llm_model_csv.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/load_prompt_template_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:498f7891ea61ba977ac55cde1cc699735f226035686cc2b588eca0f98bd7faa9" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:498f7891ea61ba977ac55cde1cc699735f226035686cc2b588eca0f98bd7faa9" + ], + "artifact_paths": [ + "pdd/prompts/load_prompt_template_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/logo_animation_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:c5a2ab1b028750a0c3e899f490dfd1d81e5d1020985eda5f1d94d5587b52acec" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:c5a2ab1b028750a0c3e899f490dfd1d81e5d1020985eda5f1d94d5587b52acec" + ], + "artifact_paths": [ + "pdd/prompts/logo_animation_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/main_gen_prompt.prompt", + "language_id": "prompt", + "required_requirement_ids": [ + "CONTRACT-SHA256:30afae98b341b692ff98dabd11fb0be3dcfa9384fdc804e1cf80dfe6ebe86ac4" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:30afae98b341b692ff98dabd11fb0be3dcfa9384fdc804e1cf80dfe6ebe86ac4" + ], + "artifact_paths": [ + "pdd/prompts/main_gen_prompt.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/metadata_sync_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:c9dee496de479efe665cc44767871a5530bb09cdbcc797d8603fd6e3191d5561" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:c9dee496de479efe665cc44767871a5530bb09cdbcc797d8603fd6e3191d5561" + ], + "artifact_paths": [ + "pdd/prompts/metadata_sync_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/model_tester_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:86a943e00bd962213378d2e61fb130b5fb7a0dada1a5d865b505737e5f85b229" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:86a943e00bd962213378d2e61fb130b5fb7a0dada1a5d865b505737e5f85b229" + ], + "artifact_paths": [ + "pdd/prompts/model_tester_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/one_session_agent_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:99989b71341d1970f5ca76db8cf2a855ce2442f1ac9caadc0d43079b3a6bf691" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:99989b71341d1970f5ca76db8cf2a855ce2442f1ac9caadc0d43079b3a6bf691" + ], + "artifact_paths": [ + "pdd/prompts/one_session_agent_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/one_session_sync_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:907be3fbc932baf1b2373e831e9784a69fc91fd98bde925139bd89487a5ec419" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:907be3fbc932baf1b2373e831e9784a69fc91fd98bde925139bd89487a5ec419" + ], + "artifact_paths": [ + "pdd/prompts/one_session_sync_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/operation_log_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:e9314dff3064004dafe75821e7aec984cbbec76e4745f6c49e73c50105ecb9c8" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:e9314dff3064004dafe75821e7aec984cbbec76e4745f6c49e73c50105ecb9c8" + ], + "artifact_paths": [ + "pdd/prompts/operation_log_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/path_resolution_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:a5881c33dd1cb13e01412dbccf4a4cffd80070ea3d965b4bf3f7c70741d0cf8a" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:a5881c33dd1cb13e01412dbccf4a4cffd80070ea3d965b4bf3f7c70741d0cf8a" + ], + "artifact_paths": [ + "pdd/prompts/path_resolution_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/pdd_completion_bash.prompt", + "language_id": "bash", + "required_requirement_ids": [ + "CONTRACT-SHA256:8ff68a8b73b323eaa876e51d15411c649ab4bd7aa1d90e23adcdbf4a08b5aa45" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:8ff68a8b73b323eaa876e51d15411c649ab4bd7aa1d90e23adcdbf4a08b5aa45" + ], + "artifact_paths": [ + "pdd/prompts/pdd_completion_bash.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/pdd_completion_fish.prompt", + "language_id": "fish", + "required_requirement_ids": [ + "CONTRACT-SHA256:ff9102336506e75466d9dc36af6a3afc93b0d07161df4ae76d7aa21267517675" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:ff9102336506e75466d9dc36af6a3afc93b0d07161df4ae76d7aa21267517675" + ], + "artifact_paths": [ + "pdd/prompts/pdd_completion_fish.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/pdd_completion_zsh.prompt", + "language_id": "zsh", + "required_requirement_ids": [ + "CONTRACT-SHA256:8a808a26292b9d46d515e8e12de6a8877fb5fdae8e4365c7285067fa216466cf" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:8a808a26292b9d46d515e8e12de6a8877fb5fdae8e4365c7285067fa216466cf" + ], + "artifact_paths": [ + "pdd/prompts/pdd_completion_zsh.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/pdd_theme_json.prompt", + "language_id": "json", + "required_requirement_ids": [ + "CONTRACT-SHA256:f96ac3293b480c610610e8eef990927ada7ab3f0d3a04e16aeb9200ae7349894" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:f96ac3293b480c610610e8eef990927ada7ab3f0d3a04e16aeb9200ae7349894" + ], + "artifact_paths": [ + "pdd/prompts/pdd_theme_json.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/pddrc_initializer_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:9399d4347fee000bf46bb4a9414f384bbcd158a8e44f6ba35dc5ef4560c0c6a9" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:9399d4347fee000bf46bb4a9414f384bbcd158a8e44f6ba35dc5ef4560c0c6a9" + ], + "artifact_paths": [ + "pdd/prompts/pddrc_initializer_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/pin_example_hack_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:7efec65cda40e8357cd08c974abc4b1aebb450d2fe75401e5cc5629e0696feb9" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:7efec65cda40e8357cd08c974abc4b1aebb450d2fe75401e5cc5629e0696feb9" + ], + "artifact_paths": [ + "pdd/prompts/pin_example_hack_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/post_gen_verify_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:0dab757af98082d82107b3be940b28283a9c33f1fad698559b231c0e804aae6a" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:0dab757af98082d82107b3be940b28283a9c33f1fad698559b231c0e804aae6a" + ], + "artifact_paths": [ + "pdd/prompts/post_gen_verify_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/postprocess_0_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:d4b5f1fbaf89403769c267840eb0164bd85ce8acc5a6dfb22bb39698b201846b" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:d4b5f1fbaf89403769c267840eb0164bd85ce8acc5a6dfb22bb39698b201846b" + ], + "artifact_paths": [ + "pdd/prompts/postprocess_0_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/postprocess_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:14901b09067362350ebe72062c59177aa49b113f91dbaf1cbb610797f67dfec8" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:14901b09067362350ebe72062c59177aa49b113f91dbaf1cbb610797f67dfec8" + ], + "artifact_paths": [ + "pdd/prompts/postprocess_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/pre_checkup_gate_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:190dcd9271753c7c77886996312b46d43f400c63a0efc8b98bc11c659063c865" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:190dcd9271753c7c77886996312b46d43f400c63a0efc8b98bc11c659063c865" + ], + "artifact_paths": [ + "pdd/prompts/pre_checkup_gate_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/preprocess_main_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:61aa0ea1ed9f0b279e2ad9e7a4fec797f2365c4565f648785771acdabb5544bf" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:61aa0ea1ed9f0b279e2ad9e7a4fec797f2365c4565f648785771acdabb5544bf" + ], + "artifact_paths": [ + "pdd/prompts/preprocess_main_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/preprocess_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:32900b88e1fcd61e137b6aeadf2f1a39f61381d743ad315d39825e2ceff40191" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:32900b88e1fcd61e137b6aeadf2f1a39f61381d743ad315d39825e2ceff40191" + ], + "artifact_paths": [ + "pdd/prompts/preprocess_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/process_csv_change_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:7d1b4b7a4d2b9041186189a6226f407e6b7210b5f5e1d0c67da2fc4d3d4bdde1" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:7d1b4b7a4d2b9041186189a6226f407e6b7210b5f5e1d0c67da2fc4d3d4bdde1" + ], + "artifact_paths": [ + "pdd/prompts/process_csv_change_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/prompt_code_diff_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:ff2ba5916b2d8e40548418cfa685dc5de59725fa1b25fb11fdf46b1826c73453" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:ff2ba5916b2d8e40548418cfa685dc5de59725fa1b25fb11fdf46b1826c73453" + ], + "artifact_paths": [ + "pdd/prompts/prompt_code_diff_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/prompt_diff_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:a9823dea6648ffc7ea7fb22ec3f88ec62f4717b5de90ced4b15d9c503aadb70b" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:a9823dea6648ffc7ea7fb22ec3f88ec62f4717b5de90ced4b15d9c503aadb70b" + ], + "artifact_paths": [ + "pdd/prompts/prompt_diff_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/prompt_lint_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:03c882b7ad1ec775bcff9da6211558589e29b1a4e2663cb4d898f5b9544ace93" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:03c882b7ad1ec775bcff9da6211558589e29b1a4e2663cb4d898f5b9544ace93" + ], + "artifact_paths": [ + "pdd/prompts/prompt_lint_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/prompt_lint_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:389a63c2f7c893b47b088ecb2e76fa5790c2e791b08c3b9cfac872a16440f099" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:389a63c2f7c893b47b088ecb2e76fa5790c2e791b08c3b9cfac872a16440f099" + ], + "artifact_paths": [ + "pdd/prompts/prompt_lint_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/prompt_repair_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:915a3f4e69e31010f156cc381d873ba75c6777365780ffc6d69020e914b0c846" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:915a3f4e69e31010f156cc381d873ba75c6777365780ffc6d69020e914b0c846" + ], + "artifact_paths": [ + "pdd/prompts/prompt_repair_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/prompt_tester_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:77fb98a82eee4a2fd8d5f95091c1a1676b270507431503dd35b90c538a279025" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:77fb98a82eee4a2fd8d5f95091c1a1676b270507431503dd35b90c538a279025" + ], + "artifact_paths": [ + "pdd/prompts/prompt_tester_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/provider_manager_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:47b3f7a1cdecac48fa42942e640be85b68a40908bbb2c4cacab726cedc20c689" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:47b3f7a1cdecac48fa42942e640be85b68a40908bbb2c4cacab726cedc20c689" + ], + "artifact_paths": [ + "pdd/prompts/provider_manager_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/pypi_description_restructuredtext.prompt", + "language_id": "restructuredtext", + "required_requirement_ids": [ + "CONTRACT-SHA256:8fe2659e2e6dd5898e005eb2a29a6de9c954660623193889f8fdb914eb20a83a" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:8fe2659e2e6dd5898e005eb2a29a6de9c954660623193889f8fdb914eb20a83a" + ], + "artifact_paths": [ + "pdd/prompts/pypi_description_restructuredtext.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/pyproject_toml.prompt", + "language_id": "toml", + "required_requirement_ids": [ + "CONTRACT-SHA256:19490f79cd95b92743aad3aa2d12405370f63e9e0594389f67dc354d458ac570" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:19490f79cd95b92743aad3aa2d12405370f63e9e0594389f67dc354d458ac570" + ], + "artifact_paths": [ + "pdd/prompts/pyproject_toml.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/pytest_output_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:688c0c6e1a62dace95b5163039ffe086f80dd855c4aae5c0e1a0bd13c371cba0" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:688c0c6e1a62dace95b5163039ffe086f80dd855c4aae5c0e1a0bd13c371cba0" + ], + "artifact_paths": [ + "pdd/prompts/pytest_output_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/pytest_slicer_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:61cb71fd966c05ed2b4640742c43ca994b74f87045fa0566c25fb01400e64947" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:61cb71fd966c05ed2b4640742c43ca994b74f87045fa0566c25fb01400e64947" + ], + "artifact_paths": [ + "pdd/prompts/pytest_slicer_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/python_env_detector_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:1b64ffda4f6c8800c6b83a89e64a1a37b8276af4dc0635b0bec78a9a20464c96" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:1b64ffda4f6c8800c6b83a89e64a1a37b8276af4dc0635b0bec78a9a20464c96" + ], + "artifact_paths": [ + "pdd/prompts/python_env_detector_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/reasoning_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:8c85242e5ca00f29a3f6d2dc47702a15a317dd6dfa303609f70e9555cfdf4722" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:8c85242e5ca00f29a3f6d2dc47702a15a317dd6dfa303609f70e9555cfdf4722" + ], + "artifact_paths": [ + "pdd/prompts/reasoning_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/regression_analysis_log.prompt", + "language_id": "log", + "required_requirement_ids": [ + "CONTRACT-SHA256:fddf6c79bb77796482012d99e47cff0fb64f2e15cc1e302ca6960c942f640350" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:fddf6c79bb77796482012d99e47cff0fb64f2e15cc1e302ca6960c942f640350" + ], + "artifact_paths": [ + "pdd/prompts/regression_analysis_log.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/regression_bash.prompt", + "language_id": "bash", + "required_requirement_ids": [ + "CONTRACT-SHA256:7f42eb80307c230081f68f02ce3d8247c2ac8668f78e797f930d3ee580bbf92e" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:7f42eb80307c230081f68f02ce3d8247c2ac8668f78e797f930d3ee580bbf92e" + ], + "artifact_paths": [ + "pdd/prompts/regression_bash.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/release_video_script_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:5bdc61011a619d3252b97c6f14c418b12a2c779400450c814c3d3220b8ef6d3a" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:5bdc61011a619d3252b97c6f14c418b12a2c779400450c814c3d3220b8ef6d3a" + ], + "artifact_paths": [ + "pdd/prompts/release_video_script_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/remote_session_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:2932c009d6fc88f4a4c1433c69f0094279815906cfb38b18c1b94c982de03a8d" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:2932c009d6fc88f4a4c1433c69f0094279815906cfb38b18c1b94c982de03a8d" + ], + "artifact_paths": [ + "pdd/prompts/remote_session_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/render_mermaid_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:42ea0f2c0870cd0542cdc8804b0ab3814e6e6e811382f31fbc7f8e692413bf0b" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:42ea0f2c0870cd0542cdc8804b0ab3814e6e6e811382f31fbc7f8e692413bf0b" + ], + "artifact_paths": [ + "pdd/prompts/render_mermaid_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/resolved_sync_unit_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:73c3f0159fd6f4e5c22bbc4d3c339b96ae6e7035f81020f6da20ffb053e02fa3" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:73c3f0159fd6f4e5c22bbc4d3c339b96ae6e7035f81020f6da20ffb053e02fa3" + ], + "artifact_paths": [ + "pdd/prompts/resolved_sync_unit_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/resurface_check_Python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:bc68021e48e240fb6d20ac34992dfc5f4467d5a3e9c65f1f521f819557f9e658" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:bc68021e48e240fb6d20ac34992dfc5f4467d5a3e9c65f1f521f819557f9e658" + ], + "artifact_paths": [ + "pdd/prompts/resurface_check_Python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/routing_policy_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:bd348ce36f1b63ddc9b12bc36e1a14b3206cb35491d278f9735375f1f39d9dc6" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:bd348ce36f1b63ddc9b12bc36e1a14b3206cb35491d278f9735375f1f39d9dc6" + ], + "artifact_paths": [ + "pdd/prompts/routing_policy_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/run_generated_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:96731fed482942f0acaaf72323a8b588499f8beafab4c6fa739236b1bd941221" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:96731fed482942f0acaaf72323a8b588499f8beafab4c6fa739236b1bd941221" + ], + "artifact_paths": [ + "pdd/prompts/run_generated_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/server/__init___python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:926bae21b375a791588e8df9595901100b2c04049ae2201f0adc91df424e793b" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:926bae21b375a791588e8df9595901100b2c04049ae2201f0adc91df424e793b" + ], + "artifact_paths": [ + "pdd/prompts/server/__init___python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/server/app_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:fbfb22ecca682ed6d0fcdd6663cad1abb4257e78b1ac0c68a55d7fc17a37c491" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:fbfb22ecca682ed6d0fcdd6663cad1abb4257e78b1ac0c68a55d7fc17a37c491" + ], + "artifact_paths": [ + "pdd/prompts/server/app_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/server/click_executor_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:9b3bb3f96dba14be7f55e60fc96175463c5ed1b5f74ad4a189078c592a592ed8" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:9b3bb3f96dba14be7f55e60fc96175463c5ed1b5f74ad4a189078c592a592ed8" + ], + "artifact_paths": [ + "pdd/prompts/server/click_executor_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/server/executor_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:13e1b7817258e918b5d7837e0a001b44fbba064bdf8ecd7265bcf257a8a85e8d" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:13e1b7817258e918b5d7837e0a001b44fbba064bdf8ecd7265bcf257a8a85e8d" + ], + "artifact_paths": [ + "pdd/prompts/server/executor_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/server/jobs_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:185a3cdafd34c99acf3983f1b42b024464b3688c3ee191fe037809639679914e" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:185a3cdafd34c99acf3983f1b42b024464b3688c3ee191fe037809639679914e" + ], + "artifact_paths": [ + "pdd/prompts/server/jobs_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/server/models_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:3c4310ba651684d7db3eea0defc8708d9b71a5c658f5cce3499ff311b7c44b81" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:3c4310ba651684d7db3eea0defc8708d9b71a5c658f5cce3499ff311b7c44b81" + ], + "artifact_paths": [ + "pdd/prompts/server/models_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/server/routes/__init___python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:b7627aa3d8dfc062d4592590cbd5ecc4633721c71dfefce0e65980b56f8f0416" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:b7627aa3d8dfc062d4592590cbd5ecc4633721c71dfefce0e65980b56f8f0416" + ], + "artifact_paths": [ + "pdd/prompts/server/routes/__init___python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/server/routes/architecture_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:b7cbfcf967a8c10c8059dd8280a6c2559d40ba57437b03721e8c5eb59b144fca" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:b7cbfcf967a8c10c8059dd8280a6c2559d40ba57437b03721e8c5eb59b144fca" + ], + "artifact_paths": [ + "pdd/prompts/server/routes/architecture_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/server/routes/auth_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:9327a2cadf1bdb46a53f8c4644dc226713053f88bcf0d82adc3084a6685a4d6e" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:9327a2cadf1bdb46a53f8c4644dc226713053f88bcf0d82adc3084a6685a4d6e" + ], + "artifact_paths": [ + "pdd/prompts/server/routes/auth_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/server/routes/commands_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:97e72397bfb15e81c7ad22d0671decfb6971810bdb76201c30c3e68cb62a7464" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:97e72397bfb15e81c7ad22d0671decfb6971810bdb76201c30c3e68cb62a7464" + ], + "artifact_paths": [ + "pdd/prompts/server/routes/commands_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/server/routes/config_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:58fe0bfcdae2182a4b2ee48e1997d36a4a0ae8b69a4ba88e62a1f10882b8dd23" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:58fe0bfcdae2182a4b2ee48e1997d36a4a0ae8b69a4ba88e62a1f10882b8dd23" + ], + "artifact_paths": [ + "pdd/prompts/server/routes/config_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/server/routes/extracts_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:9f04dd0fdcdf5a2aa930810ea5a2073a58f6fda48f19b8c5cdb14f79f72891fe" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:9f04dd0fdcdf5a2aa930810ea5a2073a58f6fda48f19b8c5cdb14f79f72891fe" + ], + "artifact_paths": [ + "pdd/prompts/server/routes/extracts_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/server/routes/files_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:9a4528f830755c93eefe9c291855d8192f264a8d0beaa1b21769767bdce26a0f" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:9a4528f830755c93eefe9c291855d8192f264a8d0beaa1b21769767bdce26a0f" + ], + "artifact_paths": [ + "pdd/prompts/server/routes/files_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/server/routes/prompts_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:8a88807f83d1d4bd5cfa9ccbd465a619a2d00fef9f81c53b84047470c8399293" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:8a88807f83d1d4bd5cfa9ccbd465a619a2d00fef9f81c53b84047470c8399293" + ], + "artifact_paths": [ + "pdd/prompts/server/routes/prompts_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/server/routes/session_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:483f0f50793b465400d10dbb968a4cf38064139f81f34c69b275cf600a6e6ba6" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:483f0f50793b465400d10dbb968a4cf38064139f81f34c69b275cf600a6e6ba6" + ], + "artifact_paths": [ + "pdd/prompts/server/routes/session_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/server/routes/websocket_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:97c5d8686f33a15aa21169d62cc100624a48d28141ebf5c5caecff806e35c0de" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:97c5d8686f33a15aa21169d62cc100624a48d28141ebf5c5caecff806e35c0de" + ], + "artifact_paths": [ + "pdd/prompts/server/routes/websocket_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/server/security_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:af1d4a18d9101d7a6a683213bdd5303783f2f4baedb38dcec58869962b23c1b8" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:af1d4a18d9101d7a6a683213bdd5303783f2f4baedb38dcec58869962b23c1b8" + ], + "artifact_paths": [ + "pdd/prompts/server/security_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/server/terminal_spawner_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:a3288bd2938a54bd728f972ea57dada4a940417943681d73c15b2cffa4cf1def" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:a3288bd2938a54bd728f972ea57dada4a940417943681d73c15b2cffa4cf1def" + ], + "artifact_paths": [ + "pdd/prompts/server/terminal_spawner_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/server/token_counter_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:5da0210df7ec8ce37743d7f09f99daae8b8c7659f202368d9914ec0493487e9e" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:5da0210df7ec8ce37743d7f09f99daae8b8c7659f202368d9914ec0493487e9e" + ], + "artifact_paths": [ + "pdd/prompts/server/token_counter_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/setup_tool_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:bb4e712d004c8c5afccc584629266eb7df00520483aacfd78aa27c2ef0cd2232" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:bb4e712d004c8c5afccc584629266eb7df00520483aacfd78aa27c2ef0cd2232" + ], + "artifact_paths": [ + "pdd/prompts/setup_tool_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/split_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:70c5726b3b2e7ba79eace3d87ae7aaa523518884f2d61b741e01b2b4f1624089" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:70c5726b3b2e7ba79eace3d87ae7aaa523518884f2d61b741e01b2b4f1624089" + ], + "artifact_paths": [ + "pdd/prompts/split_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/split_main_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:813bffecfff260542dbf33217199016a11870428d67cc73557674e40fe9cd1c9" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:813bffecfff260542dbf33217199016a11870428d67cc73557674e40fe9cd1c9" + ], + "artifact_paths": [ + "pdd/prompts/split_main_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/split_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:02331722a6115ebd80122f1fb8012b5cf62d9e7d143e54dfc3681bbf0b3e8513" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:02331722a6115ebd80122f1fb8012b5cf62d9e7d143e54dfc3681bbf0b3e8513" + ], + "artifact_paths": [ + "pdd/prompts/split_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/split_validation_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:330adfab1d9b3648db0a4b1937dc9a973a469d9c5fe233ccc146b5685c63f0ab" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:330adfab1d9b3648db0a4b1937dc9a973a469d9c5fe233ccc146b5685c63f0ab" + ], + "artifact_paths": [ + "pdd/prompts/split_validation_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/src/clients/github_client_Python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:5e40f3ad8747f52e2fe9b9a4bb87eaf6c6e960594c6c0015a6ce8c353857625c" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:5e40f3ad8747f52e2fe9b9a4bb87eaf6c6e960594c6c0015a6ce8c353857625c" + ], + "artifact_paths": [ + "pdd/prompts/src/clients/github_client_Python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/src/pdd_issue_runner_job_Python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:bc14a06790a61c6a5a4fac594a458c98d332100d83f0af8487a63b494534647e" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:bc14a06790a61c6a5a4fac594a458c98d332100d83f0af8487a63b494534647e" + ], + "artifact_paths": [ + "pdd/prompts/src/pdd_issue_runner_job_Python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/src/services/pdd_issue_completion_evidence_Python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:dad571d6af3a98c029dbab0e0c43422b07340bcf748a49a83c644535028c8226" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:dad571d6af3a98c029dbab0e0c43422b07340bcf748a49a83c644535028c8226" + ], + "artifact_paths": [ + "pdd/prompts/src/services/pdd_issue_completion_evidence_Python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/story_coverage_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:48e97e326f3f1eaf529d345c19104d8b761e28c893fe5e4bbd8805a8c1a485db" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:48e97e326f3f1eaf529d345c19104d8b761e28c893fe5e4bbd8805a8c1a485db" + ], + "artifact_paths": [ + "pdd/prompts/story_coverage_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/story_regression_gate_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:0183c53a5f421d94206845a88f78181deda8966732a2d34e761b4efeb85187eb" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:0183c53a5f421d94206845a88f78181deda8966732a2d34e761b4efeb85187eb" + ], + "artifact_paths": [ + "pdd/prompts/story_regression_gate_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/story_regression_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:e5cc19e846c9fefe9608658c6186b911420c0fe4a769ed28a6be267d070909e4" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:e5cc19e846c9fefe9608658c6186b911420c0fe4a769ed28a6be267d070909e4" + ], + "artifact_paths": [ + "pdd/prompts/story_regression_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/story_test_generator_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:08ebc4332fc8aace6e07544ef82bba07e1a1a9eb00ee78086633d510a7c70e35" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:08ebc4332fc8aace6e07544ef82bba07e1a1a9eb00ee78086633d510a7c70e35" + ], + "artifact_paths": [ + "pdd/prompts/story_test_generator_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/summarize_directory_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:d7490ddfd87e25958e9db6b1130cd2b9ce88c7e83ad059c77fd51e3779d6b131" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:d7490ddfd87e25958e9db6b1130cd2b9ce88c7e83ad059c77fd51e3779d6b131" + ], + "artifact_paths": [ + "pdd/prompts/summarize_directory_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/summarize_file_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:eed545dab03c9429dbea25a55fe54a2e8e76f935f1db16eec92b9ce8c7e24a89" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:eed545dab03c9429dbea25a55fe54a2e8e76f935f1db16eec92b9ce8c7e24a89" + ], + "artifact_paths": [ + "pdd/prompts/summarize_file_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/sync_analysis_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:b54ff4325be64b9393db33026a576468bfa45f6c7aa736526b7bae2872f0520d" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:b54ff4325be64b9393db33026a576468bfa45f6c7aa736526b7bae2872f0520d" + ], + "artifact_paths": [ + "pdd/prompts/sync_analysis_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/sync_animation_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:660f34c1938da7d7c0cbd489cd8b6992289fba3a2f8cb6ab455eacdda65dfad6" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:660f34c1938da7d7c0cbd489cd8b6992289fba3a2f8cb6ab455eacdda65dfad6" + ], + "artifact_paths": [ + "pdd/prompts/sync_animation_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/sync_determine_operation_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:1dcdbb492c9bdd543fd6d07fcd712b4d9b939a26caf60c53e447514472c5c956" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:1dcdbb492c9bdd543fd6d07fcd712b4d9b939a26caf60c53e447514472c5c956" + ], + "artifact_paths": [ + "pdd/prompts/sync_determine_operation_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/sync_main_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:f112de7cfda339c31245f82a1670cf75ff1a1afddac0d8bbcd176f1929bfa7ba" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:f112de7cfda339c31245f82a1670cf75ff1a1afddac0d8bbcd176f1929bfa7ba" + ], + "artifact_paths": [ + "pdd/prompts/sync_main_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/sync_orchestration_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:ca4ad5eff6774715d7a65c73e17a12f79da66cb409c69fe90bf41ae097181266" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:ca4ad5eff6774715d7a65c73e17a12f79da66cb409c69fe90bf41ae097181266" + ], + "artifact_paths": [ + "pdd/prompts/sync_orchestration_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/sync_order_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:4f3169caa3f9ef7429adfad3aea0514d4b7cba7ef581f7cd254064446d591df6" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:4f3169caa3f9ef7429adfad3aea0514d4b7cba7ef581f7cd254064446d591df6" + ], + "artifact_paths": [ + "pdd/prompts/sync_order_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/sync_tui_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:a610a1cc0c82bde12f6e133b7e505c343ded9e8eb6fcd39a657263257d254515" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:a610a1cc0c82bde12f6e133b7e505c343ded9e8eb6fcd39a657263257d254515" + ], + "artifact_paths": [ + "pdd/prompts/sync_tui_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/task_routing_csv.prompt", + "language_id": "csv", + "required_requirement_ids": [ + "CONTRACT-SHA256:7229b26f7e4efeaf34fe38659bd51de7764a12f6241a2ea27aceb02bb4327973" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:7229b26f7e4efeaf34fe38659bd51de7764a12f6241a2ea27aceb02bb4327973" + ], + "artifact_paths": [ + "pdd/prompts/task_routing_csv.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/template_expander_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:01e06438f9de410d757af77247e9ba997d98a81db0a19fbfd542a61ea6aeb900" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:01e06438f9de410d757af77247e9ba997d98a81db0a19fbfd542a61ea6aeb900" + ], + "artifact_paths": [ + "pdd/prompts/template_expander_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/template_registry_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:1beb9a595a85505cebee570cc086d6655601d238275de0d5099312900c98143a" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:1beb9a595a85505cebee570cc086d6655601d238275de0d5099312900c98143a" + ], + "artifact_paths": [ + "pdd/prompts/template_registry_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/test_context_packer_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:8df592d86eb298cc0be2d173a2029b27edd30a83e4b92cca4973430d8c8d64cb" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:8df592d86eb298cc0be2d173a2029b27edd30a83e4b92cca4973430d8c8d64cb" + ], + "artifact_paths": [ + "pdd/prompts/test_context_packer_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/trace_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:d1f1d25d06d402a43b00145cc98c5eb00d5254f6c3416083c1c5b854b3ee4c10" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:d1f1d25d06d402a43b00145cc98c5eb00d5254f6c3416083c1c5b854b3ee4c10" + ], + "artifact_paths": [ + "pdd/prompts/trace_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/trace_main_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:325351ddbedf4273694149da91433036d5ad578062251105fb0f87d25a7d55d4" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:325351ddbedf4273694149da91433036d5ad578062251105fb0f87d25a7d55d4" + ], + "artifact_paths": [ + "pdd/prompts/trace_main_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/trace_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:603ca2c60735af3340bfad54f54bc94ac0b8cf5f703c0710de5e29722cd5c284" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:603ca2c60735af3340bfad54f54bc94ac0b8cf5f703c0710de5e29722cd5c284" + ], + "artifact_paths": [ + "pdd/prompts/trace_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/track_cost_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:caff809a3e28802d4aa83f89a1b9b4c183e484713d91f8324444093817c272ad" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:caff809a3e28802d4aa83f89a1b9b4c183e484713d91f8324444093817c272ad" + ], + "artifact_paths": [ + "pdd/prompts/track_cost_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/trim_results_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:c3868bd12eefedf3d28b72fd5de411de650e80dbf78694c3aa2e2b3adbbb2fb2" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:c3868bd12eefedf3d28b72fd5de411de650e80dbf78694c3aa2e2b3adbbb2fb2" + ], + "artifact_paths": [ + "pdd/prompts/trim_results_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/trim_results_start_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:38acfc7c07f571858a5a0b2514e1c4914a5f6940c0461dc30fd2fbb9df453951" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:38acfc7c07f571858a5a0b2514e1c4914a5f6940c0461dc30fd2fbb9df453951" + ], + "artifact_paths": [ + "pdd/prompts/trim_results_start_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/unfinished_prompt_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:bee77f1bd3e556ff4883ae2e042fa13c4545464e65c2973ca56ead388c493382" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:bee77f1bd3e556ff4883ae2e042fa13c4545464e65c2973ca56ead388c493382" + ], + "artifact_paths": [ + "pdd/prompts/unfinished_prompt_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/unfinished_prompt_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:1902ceff4daac647ce82c6f16acd262a0ab2e19cd13912f6ca2404d6856c5034" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:1902ceff4daac647ce82c6f16acd262a0ab2e19cd13912f6ca2404d6856c5034" + ], + "artifact_paths": [ + "pdd/prompts/unfinished_prompt_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/update_main_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:b1042be0dd594c9bbb197a4afe7e5c5a12aaad1574feadf7cb5b26f9bf85bccd" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:b1042be0dd594c9bbb197a4afe7e5c5a12aaad1574feadf7cb5b26f9bf85bccd" + ], + "artifact_paths": [ + "pdd/prompts/update_main_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/update_model_costs_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:908d577d85c0b6ebd5170fd1c69f0a68fca892da3ef372843276198c2318e8cc" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:908d577d85c0b6ebd5170fd1c69f0a68fca892da3ef372843276198c2318e8cc" + ], + "artifact_paths": [ + "pdd/prompts/update_model_costs_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/update_prompt_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:e726ac6b0c19957f81fd7f1123e3fc8bd28528c901a7d25c4f7c60723d64e446" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:e726ac6b0c19957f81fd7f1123e3fc8bd28528c901a7d25c4f7c60723d64e446" + ], + "artifact_paths": [ + "pdd/prompts/update_prompt_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/update_prompt_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:19d57cea15718a85266dc7c2d865fad223be6d0fed1d663046ca28b1116375f9" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:19d57cea15718a85266dc7c2d865fad223be6d0fed1d663046ca28b1116375f9" + ], + "artifact_paths": [ + "pdd/prompts/update_prompt_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/user_story_tests_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:81256961dd9cfbfbc998e3b34720a9cb7915cd81484a1857898f45b1585e63b2" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:81256961dd9cfbfbc998e3b34720a9cb7915cd81484a1857898f45b1585e63b2" + ], + "artifact_paths": [ + "pdd/prompts/user_story_tests_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/validate_prompt_includes_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:48fa9f01203ce3ed0a239c99da1e7a8e99cc6ffbd3372cd16a75e99d7a87c0b3" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:48fa9f01203ce3ed0a239c99da1e7a8e99cc6ffbd3372cd16a75e99d7a87c0b3" + ], + "artifact_paths": [ + "pdd/prompts/validate_prompt_includes_python.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/xml/change_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:80234d524d0f63d01c02e69319a53947c7e45d4249e640b394b31276c322939e" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:80234d524d0f63d01c02e69319a53947c7e45d4249e640b394b31276c322939e" + ], + "artifact_paths": [ + "pdd/prompts/xml/change_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/xml/split_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:b022a71408b344807acab5950ef88c4a688c65dae59a49d49c2976e98c0e8320" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:b022a71408b344807acab5950ef88c4a688c65dae59a49d49c2976e98c0e8320" + ], + "artifact_paths": [ + "pdd/prompts/xml/split_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/xml_convertor_LLM.prompt", + "language_id": "llm", + "required_requirement_ids": [ + "CONTRACT-SHA256:6064465c97a0e8484cf7af747fe48aa90acaa922632c50f9d54acf3a53b416b8" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:6064465c97a0e8484cf7af747fe48aa90acaa922632c50f9d54acf3a53b416b8" + ], + "artifact_paths": [ + "pdd/prompts/xml_convertor_LLM.prompt" + ], + "required": true + } + ] + }, + { + "prompt_path": "pdd/prompts/xml_tagger_python.prompt", + "language_id": "python", + "required_requirement_ids": [ + "CONTRACT-SHA256:d064d45cd4f4bee6731d2276ac973b0c7e3a8da8c961f12405a2074a189ed94c" + ], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": "threshold-ed25519-v1", + "requirement_ids": [ + "CONTRACT-SHA256:d064d45cd4f4bee6731d2276ac973b0c7e3a8da8c961f12405a2074a189ed94c" + ], + "artifact_paths": [ + "pdd/prompts/xml_tagger_python.prompt" + ], + "required": true + } + ] + } + ] +} diff --git a/pdd/sync_core/manifest.py b/pdd/sync_core/manifest.py index b6499f459..24ce93577 100644 --- a/pdd/sync_core/manifest.py +++ b/pdd/sync_core/manifest.py @@ -715,6 +715,7 @@ def _is_protected_control(path: PurePosixPath) -> bool: PurePosixPath(".pdd/expected-managed.json"), PurePosixPath(".pdd/sync-policy.json"), PurePosixPath(".pdd/verification-profiles.json"), + PurePosixPath(".pdd/verification-profile-rotations.json"), PurePosixPath(".pdd/attestation-trust.json"), PurePosixPath(".pdd/sync-ownership.json"), PurePosixPath(".pdd/sync-tombstones.json"), @@ -758,6 +759,7 @@ def _ownership_rules(root: Path, protected_base_ref: str) -> tuple[OwnershipRule if not isinstance(rows, list): raise ManifestError("protected sync ownership rules must be a list") rules: list[OwnershipRule] = [] + patterns: set[str] = set() for item in rows: if not isinstance(item, dict): raise ManifestError("protected ownership rule must be an object") @@ -771,6 +773,9 @@ def _ownership_rules(root: Path, protected_base_ref: str) -> tuple[OwnershipRule rule = OwnershipRule(pattern, inventory, role, owner) if not _valid_ownership_rule(rule): raise ManifestError("protected ownership rule is overly broad or invalid") + if pattern in patterns: + raise ManifestError(f"protected ownership rule has duplicate pattern: {pattern}") + patterns.add(pattern) rules.append(rule) return tuple(sorted(rules)) diff --git a/pdd/sync_core/verification.py b/pdd/sync_core/verification.py index e8d04a2bd..1cd25de7f 100644 --- a/pdd/sync_core/verification.py +++ b/pdd/sync_core/verification.py @@ -5,7 +5,7 @@ import hashlib import json import re -from dataclasses import dataclass +from dataclasses import dataclass, replace from pathlib import Path, PurePosixPath from typing import Any, Mapping @@ -15,6 +15,11 @@ PROFILE_PATH = PurePosixPath(".pdd/verification-profiles.json") +ROTATION_POLICY_PATH = PurePosixPath(".pdd/verification-profile-rotations.json") +TRUST_POLICY_PATH = PurePosixPath(".pdd/attestation-trust.json") +_HUMAN_OBLIGATION_ID = "threshold-human-attestation" +_HUMAN_VALIDATOR_ID = "threshold-ed25519" +_PLACEHOLDER_POLICY_DIGEST = "threshold-ed25519-v1" class VerificationProfileError(ValueError): @@ -49,6 +54,16 @@ class _ProfileInput: obligations: tuple[VerificationObligation, ...] +@dataclass(frozen=True) +class _PolicyRotationAuthorization: + """One protected, one-way authorization for a future trust-policy install.""" + + obligation_id: str + validator_id: str + from_config_digest: str + policy_path: PurePosixPath + + _REQUIREMENT_ID = re.compile(r"\bREQ-[A-Za-z0-9_.:-]+\b") @@ -194,10 +209,126 @@ def _profile_digest( return hashlib.sha256(encoded).hexdigest() +def _load_rotation_authorizations( + root: Path, protected_base_ref: str +) -> tuple[_PolicyRotationAuthorization, ...]: + """Load narrowly-scoped profile rotation authority from the protected base.""" + raw = read_git_blob(root, protected_base_ref, ROTATION_POLICY_PATH) + if raw is None: + return () + try: + payload = json.loads(raw) + rows = payload["rotations"] + if payload.get("schema_version") != 1 or not isinstance(rows, list): + raise TypeError + except (json.JSONDecodeError, TypeError, UnicodeDecodeError) as exc: + raise VerificationProfileError("protected profile rotation policy is malformed") from exc + + authorizations: list[_PolicyRotationAuthorization] = [] + for row in rows: + if not isinstance(row, dict) or set(row) != { + "obligation_id", + "validator_id", + "from_config_digest", + "policy_path", + }: + raise VerificationProfileError("protected profile rotation rule is malformed") + authorization = _PolicyRotationAuthorization( + str(row["obligation_id"]), + str(row["validator_id"]), + str(row["from_config_digest"]), + PurePosixPath(str(row["policy_path"])), + ) + if authorization != _PolicyRotationAuthorization( + _HUMAN_OBLIGATION_ID, + _HUMAN_VALIDATOR_ID, + _PLACEHOLDER_POLICY_DIGEST, + TRUST_POLICY_PATH, + ): + raise VerificationProfileError("protected profile rotation rule is not authorized") + authorizations.append(authorization) + if len(authorizations) != len(set(authorizations)): + raise VerificationProfileError("protected profile rotation rules are duplicated") + return tuple(authorizations) + + +def _rotation_updates( + head: dict[UnitId, _ProfileInput], + protected: list[tuple[UnitId, VerificationObligation]], + target_digest: str, +) -> dict[tuple[UnitId, str], VerificationObligation] | None: + """Return complete policy-bound updates, or reject a partial remap.""" + updates: dict[tuple[UnitId, str], VerificationObligation] = {} + for unit_id, obligation in protected: + candidate = next( + ( + item + for item in head.get(unit_id, _ProfileInput((), ())).obligations + if item.obligation_id == obligation.obligation_id + ), + None, + ) + rotated = candidate and replace( + candidate, validator_config_digest=obligation.validator_config_digest + ) + if ( + candidate is None + or candidate.validator_config_digest != target_digest + or rotated != obligation + ): + return None + updates[(unit_id, obligation.obligation_id)] = candidate + return updates + + +def _authorized_rotation_updates( + root: Path, + manifest: UnitManifest, + base: dict[UnitId, _ProfileInput], + head: dict[UnitId, _ProfileInput], + authorizations: tuple[_PolicyRotationAuthorization, ...], +) -> tuple[dict[tuple[UnitId, str], VerificationObligation], list[str]]: + """Authorize only complete, policy-byte-bound protected obligation rotations.""" + updates: dict[tuple[UnitId, str], VerificationObligation] = {} + invalid: list[str] = [] + for authorization in authorizations: + protected = [ + (unit_id, obligation) + for unit_id, profile in base.items() + if unit_id in set(manifest.expected_managed) + for obligation in profile.obligations + if obligation.obligation_id == authorization.obligation_id + and obligation.validator_id == authorization.validator_id + and obligation.validator_config_digest == authorization.from_config_digest + ] + if not protected: + continue + unchanged = _rotation_updates( + head, protected, authorization.from_config_digest + ) + if unchanged is not None: + continue + policy = read_git_blob(root, manifest.head_ref, authorization.policy_path) + if policy is None: + invalid.append("authorized profile rotation policy is absent from candidate") + continue + target_digest = hashlib.sha256(policy).hexdigest() + candidate_updates = _rotation_updates(head, protected, target_digest) + if candidate_updates is None: + invalid.append( + "authorized profile rotation must restamp every protected " + "human-attestation obligation" + ) + continue + updates.update(candidate_updates) + return updates, invalid + + def _effective_profile( unit_id: UnitId, base: _ProfileInput | None, head: _ProfileInput | None, + authorized_updates: dict[tuple[UnitId, str], VerificationObligation], ) -> tuple[VerificationProfile, list[str]]: invalid: list[str] = [] if base is None and head is not None: @@ -206,16 +337,18 @@ def _effective_profile( ) head = None base_requirements = set(base.requirements if base else ()) - head_requirements = set(head.requirements if head else ()) - if base_requirements - head_requirements: + if base_requirements - set(head.requirements if head else ()): invalid.append(f"{unit_id.prompt_relpath}: candidate removed protected requirements") - requirements = tuple(sorted(base_requirements | head_requirements)) + requirements = tuple(sorted(base_requirements | set(head.requirements if head else ()))) base_obligations = {item.obligation_id: item for item in (base.obligations if base else ())} head_obligations = {item.obligation_id: item for item in (head.obligations if head else ())} effective = dict(base_obligations) for obligation_id, obligation in head_obligations.items(): protected = base_obligations.get(obligation_id) if protected is not None and protected != obligation: + if authorized_updates.get((unit_id, obligation_id)) == obligation: + effective[obligation_id] = obligation + continue invalid.append( f"{unit_id.prompt_relpath}: candidate changed protected obligation " f"{obligation_id}" @@ -243,6 +376,14 @@ def load_verification_profiles(root: Path, manifest: UnitManifest) -> ProfileSet base, base_invalid = _load_inputs(root, manifest.base_ref, manifest.repository_id) head, head_invalid = _load_inputs(root, manifest.head_ref, manifest.repository_id) invalid = base_invalid + head_invalid + authorized_updates, rotation_invalid = _authorized_rotation_updates( + root, + manifest, + base, + head, + _load_rotation_authorizations(root, manifest.base_ref), + ) + invalid.extend(rotation_invalid) profiles: list[VerificationProfile] = [] expected = set(manifest.expected_managed) unknown = (set(base) | set(head)) - expected @@ -254,7 +395,7 @@ def load_verification_profiles(root: Path, manifest: UnitManifest) -> ProfileSet if unit_id not in base and unit_id not in head: invalid.append(f"{unit_id.prompt_relpath}: verification profile is missing") profile, profile_invalid = _effective_profile( - unit_id, base.get(unit_id), head.get(unit_id) + unit_id, base.get(unit_id), head.get(unit_id), authorized_updates ) profiles.append(profile) invalid.extend(profile_invalid) diff --git a/tests/test_sync_core_manifest.py b/tests/test_sync_core_manifest.py index dbdfd08f0..433696ba8 100644 --- a/tests/test_sync_core_manifest.py +++ b/tests/test_sync_core_manifest.py @@ -4,9 +4,12 @@ import subprocess from pathlib import Path, PurePosixPath +import pytest + from pdd.sync_core import InventoryStatus, build_unit_manifest from pdd.sync_core.identity import initialize_repository_identity from pdd.sync_core.language import LanguageRegistry, LanguageSpec +from pdd.sync_core.manifest import ManifestError def _git(root: Path, *args: str) -> str: @@ -224,6 +227,19 @@ def test_unmatched_tracked_path_is_unaccounted_not_default_human(tmp_path) -> No assert orphan.inventory is InventoryStatus.INVALID +def test_duplicate_protected_ownership_pattern_is_rejected(tmp_path) -> None: + """Exact ownership policy patterns remain a deterministic partition.""" + root = _repository(tmp_path) + policy_path = root / ".pdd/sync-ownership.json" + policy = json.loads(policy_path.read_text()) + policy["rules"].append(dict(policy["rules"][0])) + policy_path.write_text(json.dumps(policy)) + commit = _commit(root, "duplicate ownership pattern") + + with pytest.raises(ManifestError, match="duplicate pattern: README.md"): + build_unit_manifest(root, base_ref=commit, head_ref=commit) + + def test_protected_human_rule_precedes_prompt_filename_inference(tmp_path) -> None: root = _repository(tmp_path) policy = json.loads((root / ".pdd/sync-ownership.json").read_text()) diff --git a/tests/test_sync_core_pdd_rollout_policy.py b/tests/test_sync_core_pdd_rollout_policy.py index e1ecdf8b8..8212a0471 100644 --- a/tests/test_sync_core_pdd_rollout_policy.py +++ b/tests/test_sync_core_pdd_rollout_policy.py @@ -2,23 +2,58 @@ from __future__ import annotations +import hashlib import json +import re import subprocess -from pathlib import Path +from dataclasses import replace +from pathlib import Path, PurePosixPath -from pdd.sync_core.manifest import build_unit_manifest +from pdd.sync_core import build_unit_manifest, load_verification_profiles, verification +from pdd.sync_core.manifest import ManifestRefs +from pdd.sync_core.verification import PROFILE_PATH as PROFILE_REL_PATH ROOT = Path(__file__).resolve().parents[1] EXPECTED_PATH = ROOT / ".pdd" / "expected-managed.json" OWNERSHIP_PATH = ROOT / ".pdd" / "sync-ownership.json" +PROFILE_FILE = ROOT / PROFILE_REL_PATH REPOSITORY_ID = "3b4d7b1c-d6cc-4752-ba93-6b98d1a710e0" EXPECTED_MANAGED_UNITS = 466 FOUNDATION_PROFILE_PATHS = { "pdd/sync_core/descriptor_store.py", "pdd/sync_core/signer_process.py", "pdd/sync_core/supervisor.py", - "tests/test_sync_core_descriptor_store.py", +} +REQUIREMENT_ID = re.compile(r"\bREQ-[A-Za-z0-9_.:-]+\b") +PYTEST_VALIDATOR_CONFIG_DIGEST = ( + "7c29aa937a70b7db28c9353bbad309654e12d3fb4d317edf75b475bbc1880963" +) +FOUNDATION_PROFILE = "pdd/prompts/durable_sync_runner_python.prompt" +FOUNDATION_PROFILE_DIGEST = ( + "3fb63c651345467be6b2cb445b34edf979b35ffba1bb1ebb44a81f1313beb244" +) +FOUNDATION_OBLIGATIONS = { + "pytest-descriptor-store": { + "tests": ( + "tests/test_sync_core_candidate_artifact_provenance.py", + "tests/test_sync_core_descriptor_store.py", + "tests/test_sync_core_trust.py", + ), + "code": ("pdd/sync_core/descriptor_store.py",), + }, + "pytest-supervisor": { + "tests": ( + "tests/test_sync_core_lifecycle_scenarios.py", + "tests/test_sync_core_runner.py", + "tests/test_sync_core_supervisor.py", + ), + "code": ("pdd/sync_core/supervisor.py",), + }, + "pytest-signer-process": { + "tests": ("tests/test_sync_core_trust.py",), + "code": ("pdd/sync_core/signer_process.py",), + }, } @@ -41,6 +76,22 @@ def _commit(root: Path, message: str) -> str: return subprocess.check_output(["git", "rev-parse", "HEAD"], cwd=root, text=True).strip() +def _requirements(prompt_path: PurePosixPath) -> list[str]: + raw = (ROOT / prompt_path).read_bytes() + explicit = sorted(set(REQUIREMENT_ID.findall(raw.decode("utf-8")))) + return explicit or [f"CONTRACT-SHA256:{hashlib.sha256(raw).hexdigest()}"] + + +def _profile_bytes_as_protected_base(monkeypatch, profile_bytes: bytes) -> None: + def protected_read(_root: Path, _ref: str, path: PurePosixPath) -> bytes | None: + if path == PROFILE_REL_PATH: + return profile_bytes + resolved = ROOT / path + return resolved.read_bytes() if resolved.is_file() else None + + monkeypatch.setattr(verification, "read_git_blob", protected_read) + + def test_pdd_protected_inventory_is_complete_and_exact() -> None: """The committed PDD tree has a non-waived protected inventory partition.""" assert EXPECTED_PATH.is_file(), "missing protected expected-managed registry" @@ -67,7 +118,7 @@ def test_pdd_protected_inventory_is_complete_and_exact() -> None: ) assert not (ROOT / ".pdd" / "sync-waivers.json").exists() - assert not (ROOT / ".pdd" / "verification-profiles.json").exists() + assert PROFILE_FILE.is_file() assert not (ROOT / ".pdd" / "attestation-trust.json").exists() manifest = build_unit_manifest(ROOT, base_ref="HEAD", head_ref="HEAD") @@ -80,6 +131,25 @@ def test_pdd_protected_inventory_is_complete_and_exact() -> None: } == identities assert len(manifest.expected_managed) == EXPECTED_MANAGED_UNITS + foundation_paths = { + PurePosixPath(path) + for obligation in FOUNDATION_OBLIGATIONS.values() + for path in obligation["code"] + } + foundation_candidates = { + item.candidate_id.artifact_relpath: item + for item in manifest.candidates + if item.candidate_id.artifact_relpath in foundation_paths + } + assert set(foundation_candidates) == foundation_paths + assert all( + item.inventory.value == "HUMAN_OWNED" + and item.candidate_id.role == "human-maintained" + and item.ownership_provenance + == f"protected-ownership:pdd-maintainers:{path.as_posix()}" + for path, item in foundation_candidates.items() + ) + managed_prompt_paths = { unit.unit_id.prompt_relpath.as_posix() for unit in manifest.managed_units } @@ -93,6 +163,126 @@ def test_pdd_protected_inventory_is_complete_and_exact() -> None: } == set(tracked) +def test_rollout_profiles_cover_the_protected_pdd_denominator(monkeypatch) -> None: + # pylint: disable=too-many-locals + """Require one complete, reviewable profile for every protected PDD unit.""" + payload = json.loads(PROFILE_FILE.read_text(encoding="utf-8")) + rows = payload["profiles"] + manifest = build_unit_manifest(ROOT, base_ref="HEAD", head_ref="HEAD") + assert not manifest.invalid_reasons + assert not manifest.unaccounted_tracked_paths + expected = { + (unit.prompt_relpath.as_posix(), unit.language_id) + for unit in manifest.expected_managed + } + actual = {(row["prompt_path"], row["language_id"]) for row in rows} + + assert len(expected) == EXPECTED_MANAGED_UNITS + assert len(rows) == EXPECTED_MANAGED_UNITS + assert len(actual) == len(rows) + assert actual == expected + + for row in rows: + prompt_path = PurePosixPath(row["prompt_path"]) + requirements = _requirements(prompt_path) + assert row["required_requirement_ids"] == requirements + human_obligations = [ + item + for item in row["obligations"] + if item["validator_id"] == "threshold-ed25519" + ] + assert len(human_obligations) == 1 + obligation = human_obligations[0] + assert obligation["obligation_id"] == "threshold-human-attestation" + assert obligation["kind"] == "human-attestation" + assert obligation["validator_id"] == "threshold-ed25519" + assert obligation["validator_config_digest"] == "threshold-ed25519-v1" + assert obligation["required"] is True + assert obligation["requirement_ids"] == requirements + assert obligation["artifact_paths"] == [prompt_path.as_posix()] + assert (ROOT / prompt_path).is_file() + + profile_bytes = PROFILE_FILE.read_bytes() + protected_manifest = replace( + manifest, refs=ManifestRefs("protected-base", "candidate-head") + ) + _profile_bytes_as_protected_base(monkeypatch, profile_bytes) + profiles = load_verification_profiles(ROOT, protected_manifest) + assert not profiles.invalid_reasons + assert profiles.coverage == 1.0 + assert len(profiles.profiles) == EXPECTED_MANAGED_UNITS + + pytest_obligations = [ + obligation + for profile in profiles.profiles + for obligation in profile.obligations + if obligation.validator_id == "pytest" + ] + for obligation in pytest_obligations: + assert obligation.validator_config_digest == PYTEST_VALIDATOR_CONFIG_DIGEST + foundation_profile = next( + profile + for profile in profiles.profiles + if profile.unit_id.prompt_relpath.as_posix() == FOUNDATION_PROFILE + ) + assert foundation_profile.profile_digest == FOUNDATION_PROFILE_DIGEST + foundation_pytest = { + obligation.obligation_id: obligation + for obligation in foundation_profile.obligations + if obligation.validator_id == "pytest" + } + assert set(foundation_pytest) == set(FOUNDATION_OBLIGATIONS) + for obligation_id, expected_obligation in FOUNDATION_OBLIGATIONS.items(): + obligation = foundation_pytest[obligation_id] + assert obligation.kind == "test" + assert obligation.required is True + assert obligation.requirement_ids == foundation_profile.required_requirement_ids + assert tuple(path.as_posix() for path in obligation.artifact_paths) == ( + expected_obligation["tests"] + ) + assert tuple(path.as_posix() for path in obligation.code_under_test_paths) == ( + expected_obligation["code"] + ) + assert { + path.as_posix() + for obligation in foundation_pytest.values() + for path in obligation.code_under_test_paths + } == FOUNDATION_PROFILE_PATHS + + +def test_rollout_profiles_cannot_self_authorize(monkeypatch) -> None: + """A candidate copy is rejected until this rollout has merged as protected base.""" + manifest = build_unit_manifest(ROOT, base_ref="HEAD", head_ref="HEAD") + candidate_manifest = replace( + manifest, refs=ManifestRefs("protected-base", "candidate-head") + ) + profile_bytes = PROFILE_FILE.read_bytes() + + def candidate_only_read(_root: Path, ref: str, path: PurePosixPath) -> bytes | None: + if path == PROFILE_REL_PATH: + return profile_bytes if ref == "candidate-head" else None + resolved = ROOT / path + return resolved.read_bytes() if resolved.is_file() else None + + monkeypatch.setattr(verification, "read_git_blob", candidate_only_read) + profiles = load_verification_profiles(ROOT, candidate_manifest) + + assert profiles.coverage == 0.0 + assert len(profiles.invalid_reasons) == EXPECTED_MANAGED_UNITS * 2 + candidate_only = [ + reason + for reason in profiles.invalid_reasons + if "candidate-only profile lacks protected approval" in reason + ] + incomplete = [ + reason + for reason in profiles.invalid_reasons + if "verification profile is incomplete" in reason + ] + assert len(candidate_only) == EXPECTED_MANAGED_UNITS + assert len(incomplete) == EXPECTED_MANAGED_UNITS + + def test_pdd_registry_prevents_candidate_denominator_reduction(tmp_path: Path) -> None: """Candidate additions must persist the denominator; removals remain debt.""" root = tmp_path / "inventory" diff --git a/tests/test_sync_core_verification_profiles.py b/tests/test_sync_core_verification_profiles.py index 4ad7f1930..f40d18114 100644 --- a/tests/test_sync_core_verification_profiles.py +++ b/tests/test_sync_core_verification_profiles.py @@ -53,6 +53,47 @@ def _profile(requirements=None, obligations=None): } +def _human_profile(root: Path, config_digest: str) -> dict: + """Build an opaque-contract profile protected by human attestation.""" + prompt_path = root / "prompts/widget_python.prompt" + requirement = f"CONTRACT-SHA256:{hashlib.sha256(prompt_path.read_bytes()).hexdigest()}" + return { + "profiles": [ + { + "prompt_path": "prompts/widget_python.prompt", + "language_id": "python", + "required_requirement_ids": [requirement], + "obligations": [ + { + "obligation_id": "threshold-human-attestation", + "kind": "human-attestation", + "validator_id": "threshold-ed25519", + "validator_config_digest": config_digest, + "requirement_ids": [requirement], + "artifact_paths": ["prompts/widget_python.prompt"], + "required": True, + } + ], + } + ] + } + + +def _rotation_authorization() -> dict: + """Authorize the one future protected trust-policy transition.""" + return { + "schema_version": 1, + "rotations": [ + { + "obligation_id": "threshold-human-attestation", + "validator_id": "threshold-ed25519", + "from_config_digest": "threshold-ed25519-v1", + "policy_path": ".pdd/attestation-trust.json", + } + ], + } + + def _repository(tmp_path: Path) -> Path: root = tmp_path / "repo" root.mkdir() @@ -75,7 +116,7 @@ def test_complete_protected_profile_has_full_coverage(tmp_path) -> None: commit = _commit(root, "profile") profiles = load_verification_profiles(root, _manifest(root, commit, commit)) assert profiles.coverage == 1.0 - assert profiles.invalid_reasons == () + assert not profiles.invalid_reasons def test_missing_profile_is_explicit_and_incomplete(tmp_path) -> None: @@ -114,6 +155,83 @@ def test_candidate_cannot_remap_protected_validator(tmp_path) -> None: assert any("changed protected obligation" in item for item in profiles.invalid_reasons) +def test_protected_authorization_rotates_human_policy_digest(tmp_path) -> None: + """A protected rule can atomically bind the future trust-policy bytes.""" + root = _repository(tmp_path) + prompt = root / "prompts/widget_python.prompt" + prompt.write_text("Opaque contract\n") + profile_path = root / ".pdd/verification-profiles.json" + profile_path.write_text(json.dumps(_human_profile(root, "threshold-ed25519-v1"))) + rotation_path = root / ".pdd/verification-profile-rotations.json" + rotation_path.write_text(json.dumps(_rotation_authorization())) + base = _commit(root, "authorize policy rotation") + + trust_policy = ( + b'{"issuers":[{"issuer_id":"trusted-ci","public_key":"' + b"YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWE=" + b'"}]}' + ) + # The rotation binds profile configuration to exact candidate policy bytes. + (root / ".pdd/attestation-trust.json").write_bytes(trust_policy) + final_digest = hashlib.sha256(trust_policy).hexdigest() + profile_path.write_text(json.dumps(_human_profile(root, final_digest))) + head = _commit(root, "install policy and restamp profile") + + profiles = load_verification_profiles(root, _manifest(root, base, head)) + assert not profiles.invalid_reasons + obligation = profiles.profiles[0].obligations[0] + assert obligation.validator_config_digest == final_digest + + +def test_policy_rotation_rejects_arbitrary_human_config_digest(tmp_path) -> None: + """Protected rotation authority cannot be used to restamp arbitrary bytes.""" + root = _repository(tmp_path) + prompt = root / "prompts/widget_python.prompt" + prompt.write_text("Opaque contract\n") + profile_path = root / ".pdd/verification-profiles.json" + profile_path.write_text(json.dumps(_human_profile(root, "threshold-ed25519-v1"))) + rotation_path = root / ".pdd/verification-profile-rotations.json" + rotation_path.write_text(json.dumps(_rotation_authorization())) + base = _commit(root, "authorize policy rotation") + + (root / ".pdd/attestation-trust.json").write_text('{"issuers":[]}') + profile_path.write_text(json.dumps(_human_profile(root, "arbitrary-config-digest"))) + head = _commit(root, "attempt arbitrary restamp") + + profiles = load_verification_profiles(root, _manifest(root, base, head)) + assert profiles.profiles[0].obligations[0].validator_config_digest == ( + "threshold-ed25519-v1" + ) + assert any("changed protected obligation" in item for item in profiles.invalid_reasons) + + +def test_profile_digest_binds_declared_code_under_test(tmp_path) -> None: + """The profile identity must bind its explicit product-code assignment.""" + root = _repository(tmp_path) + first = _profile() + first["profiles"][0]["obligations"][0]["code_under_test_paths"] = [ + "pdd/sync_core/descriptor_store.py" + ] + profile_path = root / ".pdd/verification-profiles.json" + profile_path.write_text(json.dumps(first)) + first_commit = _commit(root, "first protected code assignment") + first_digest = load_verification_profiles( + root, _manifest(root, first_commit, first_commit) + ).profiles[0].profile_digest + + second = _profile() + second["profiles"][0]["obligations"][0]["code_under_test_paths"] = [ + "pdd/sync_core/supervisor.py" + ] + profile_path.write_text(json.dumps(second)) + second_commit = _commit(root, "second protected code assignment") + second_digest = load_verification_profiles( + root, _manifest(root, second_commit, second_commit) + ).profiles[0].profile_digest + + assert first_digest != second_digest + + def test_new_requirement_without_mapping_is_incomplete(tmp_path) -> None: root = _repository(tmp_path) profile_path = root / ".pdd/verification-profiles.json"