clink-cli 0.2.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. clink/__init__.py +19 -0
  2. clink/agents/__init__.py +30 -0
  3. clink/agents/base.py +70 -0
  4. clink/agents/claude.py +7 -0
  5. clink/agents/codex.py +7 -0
  6. clink/agents/gemini.py +7 -0
  7. clink/allowed_roots.py +356 -0
  8. clink/backend.py +765 -0
  9. clink/cli.py +594 -0
  10. clink/constants.py +78 -0
  11. clink/contracts.py +167 -0
  12. clink/files.py +70 -0
  13. clink/generation.py +274 -0
  14. clink/generation_capabilities.py +207 -0
  15. clink/generation_contracts.py +214 -0
  16. clink/generation_policy.py +174 -0
  17. clink/models.py +243 -0
  18. clink/native.py +409 -0
  19. clink/native_adapters.py +244 -0
  20. clink/native_contracts.py +68 -0
  21. clink/native_generation.py +421 -0
  22. clink/native_generation_claude_policy.py +59 -0
  23. clink/native_generation_contracts.py +264 -0
  24. clink/native_generation_families.py +218 -0
  25. clink/native_generation_family_policy.py +14 -0
  26. clink/native_generation_files.py +153 -0
  27. clink/native_generation_policy.py +82 -0
  28. clink/native_policy.py +86 -0
  29. clink/parsers/__init__.py +34 -0
  30. clink/parsers/agy.py +53 -0
  31. clink/parsers/agy_native.py +161 -0
  32. clink/parsers/agy_native_generation.py +189 -0
  33. clink/parsers/base.py +209 -0
  34. clink/parsers/claude.py +104 -0
  35. clink/parsers/claude_native.py +113 -0
  36. clink/parsers/claude_native_generation.py +346 -0
  37. clink/parsers/codex.py +172 -0
  38. clink/parsers/codex_generation.py +212 -0
  39. clink/parsers/codex_native.py +236 -0
  40. clink/parsers/codex_native_generation.py +367 -0
  41. clink/parsers/gemini.py +110 -0
  42. clink/parsers/grok.py +63 -0
  43. clink/parsers/grok_native.py +91 -0
  44. clink/parsers/grok_native_generation.py +157 -0
  45. clink/policy.py +180 -0
  46. clink/registry.py +544 -0
  47. clink/resources/CODEX-LICENSE +201 -0
  48. clink/resources/CODEX-NOTICE +6 -0
  49. clink/resources/PROVENANCE.md +16 -0
  50. clink/resources/codex-0.166.0-models-direct.json +1284 -0
  51. clink/resources/codex-0.166.0-models-generation.json +1269 -0
  52. clink/resources/native-agy-1.4.12-admission.json +746 -0
  53. clink/resources/native-claude-2.1.304-admission.json +99 -0
  54. clink/resources/native-generation-claude-2.1.304-admission.json +277 -0
  55. clink/resources/native-generation-codex-0.166.0-admission.json +309 -0
  56. clink/resources/native-generation-grok-1.0.70-admission.json +329 -0
  57. clink/resources/native-grok-1.0.70-admission.json +644 -0
  58. clink/runner.py +303 -0
  59. clink/setup.py +399 -0
  60. clink/tasks.py +695 -0
  61. clink_cli-0.2.1.dist-info/METADATA +225 -0
  62. clink_cli-0.2.1.dist-info/RECORD +141 -0
  63. clink_cli-0.2.1.dist-info/WHEEL +5 -0
  64. clink_cli-0.2.1.dist-info/entry_points.txt +3 -0
  65. clink_cli-0.2.1.dist-info/licenses/LICENSE +197 -0
  66. clink_cli-0.2.1.dist-info/licenses/clink/resources/CODEX-LICENSE +201 -0
  67. clink_cli-0.2.1.dist-info/licenses/clink/resources/CODEX-NOTICE +6 -0
  68. clink_cli-0.2.1.dist-info/top_level.txt +7 -0
  69. conf/__init__.py +1 -0
  70. conf/cli_clients/agy.json +40 -0
  71. conf/cli_clients/claude.json +39 -0
  72. conf/cli_clients/codex.json +40 -0
  73. conf/cli_clients/gemini.json +23 -0
  74. conf/cli_clients/grok.json +40 -0
  75. config.py +40 -0
  76. server.py +896 -0
  77. systemprompts/__init__.py +35 -0
  78. systemprompts/analyze_prompt.py +87 -0
  79. systemprompts/chat_prompt.py +57 -0
  80. systemprompts/clink/codex_codereviewer.txt +8 -0
  81. systemprompts/clink/default.txt +8 -0
  82. systemprompts/clink/default_codereviewer.txt +8 -0
  83. systemprompts/clink/default_planner.txt +7 -0
  84. systemprompts/clink/native_codereviewer.txt +1 -0
  85. systemprompts/clink/native_default.txt +1 -0
  86. systemprompts/clink/native_planner.txt +1 -0
  87. systemprompts/codereview_prompt.py +91 -0
  88. systemprompts/consensus_prompt.py +120 -0
  89. systemprompts/debug_prompt.py +150 -0
  90. systemprompts/docgen_prompt.py +252 -0
  91. systemprompts/generate_code_prompt.py +181 -0
  92. systemprompts/planner_prompt.py +127 -0
  93. systemprompts/precommit_prompt.py +179 -0
  94. systemprompts/refactor_prompt.py +323 -0
  95. systemprompts/secaudit_prompt.py +420 -0
  96. systemprompts/testgen_prompt.py +133 -0
  97. systemprompts/thinkdeep_prompt.py +55 -0
  98. systemprompts/tracer_prompt.py +145 -0
  99. tools/__init__.py +43 -0
  100. tools/analyze.py +583 -0
  101. tools/apilookup.py +97 -0
  102. tools/challenge.py +198 -0
  103. tools/chat.py +187 -0
  104. tools/clink.py +130 -0
  105. tools/codereview.py +724 -0
  106. tools/consensus.py +790 -0
  107. tools/debug.py +573 -0
  108. tools/docgen.py +577 -0
  109. tools/listmodels.py +48 -0
  110. tools/models.py +373 -0
  111. tools/planner.py +533 -0
  112. tools/precommit.py +776 -0
  113. tools/refactor.py +645 -0
  114. tools/secaudit.py +685 -0
  115. tools/shared/__init__.py +19 -0
  116. tools/shared/base_models.py +167 -0
  117. tools/shared/base_tool.py +659 -0
  118. tools/shared/exceptions.py +20 -0
  119. tools/shared/schema_builders.py +159 -0
  120. tools/simple/__init__.py +18 -0
  121. tools/simple/base.py +539 -0
  122. tools/testgen.py +513 -0
  123. tools/thinkdeep.py +586 -0
  124. tools/tracer.py +763 -0
  125. tools/version.py +53 -0
  126. tools/workflow/__init__.py +22 -0
  127. tools/workflow/base.py +448 -0
  128. tools/workflow/schema_builders.py +166 -0
  129. tools/workflow/workflow_mixin.py +1195 -0
  130. utils/__init__.py +21 -0
  131. utils/call_state.py +349 -0
  132. utils/client_info.py +293 -0
  133. utils/consensus_manifest.py +131 -0
  134. utils/conversation_memory.py +582 -0
  135. utils/env.py +111 -0
  136. utils/file_types.py +271 -0
  137. utils/file_utils.py +803 -0
  138. utils/image_utils.py +94 -0
  139. utils/security_config.py +163 -0
  140. utils/storage_backend.py +177 -0
  141. utils/token_utils.py +54 -0
@@ -0,0 +1,99 @@
1
+ {
2
+ "actual_models": [
3
+ "claude-opus-5-5"
4
+ ],
5
+ "adapter": "claude",
6
+ "attempt_history": [
7
+ {
8
+ "outcome": "Standalone partial: hooks, native followup and permission denial observed; native preapproval ineffective, no edit/MCP/subagent or cancellation mutation; explicit invalid-flag failure retained.",
9
+ "path": "docs/verification/native-claude-2.1.304-attempt1.json"
10
+ },
11
+ {
12
+ "outcome": "Production partial: edit, hook, subagent, MCP/environment, followup and permission denial passed; bare python unavailable caused actual shell tests and mutation/cancellation to fail. This receipt is not standalone admission.",
13
+ "path": "docs/verification/native-claude-2.1.304-attempt2.json"
14
+ },
15
+ {
16
+ "outcome": "Production repair: offline exact shell/interpreter diagnosis before calls, native failing-then-passing tests, edit and cancellation after mutation with descendant/group cleanup passed; prior successful capability evidence reused because binary and recipe were unchanged.",
17
+ "path": "docs/verification/native-claude-2.1.304-attempt3.json"
18
+ }
19
+ ],
20
+ "budget": {
21
+ "automatic_retries": 0,
22
+ "maximum_seconds_per_native_invocation": 180,
23
+ "native_agent_tool_invocations_observed": 1,
24
+ "native_subagent_api_requests": "not separately observed or counted; internal model requests and native turns may exceed top-level invocations",
25
+ "non_inference_invalid_flag_launches": 1,
26
+ "top_level_native_model_invocations": 10
27
+ },
28
+ "documentation_sources": [
29
+ "https://code.claude.com/docs/en/headless",
30
+ "https://code.claude.com/docs/en/permissions",
31
+ "https://code.claude.com/docs/en/settings",
32
+ "https://code.claude.com/docs/en/hooks",
33
+ "https://code.claude.com/docs/en/sub-agents",
34
+ "https://code.claude.com/docs/en/mcp",
35
+ "https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md"
36
+ ],
37
+ "executable_sha256": "b9ac5374839f14abf3f1f45610637c332b5daee5ce0d1634726cef87aab78e6a",
38
+ "fixture_protective_controls": "Project PreToolUse hook permits only exact synthetic file/tool/foreground-agent/MCP operations, asks for the synthetic permission target, and denies unrelated operations. No host configuration was edited and no bypass or configuration-disabling flags were used.",
39
+ "gates": {
40
+ "actual_native_edit_and_failing_then_passing_test": true,
41
+ "cancel_cleanup_released_processes_and_ownership": true,
42
+ "exact_installed_version_and_binary": true,
43
+ "explicit_cli_error_no_retry": true,
44
+ "native_followup_preserved_session_and_context": true,
45
+ "native_mcp_executed_with_inherited_environment": true,
46
+ "native_project_hook_executed": true,
47
+ "native_subagent_executed": true,
48
+ "no_automatic_retry_in_any_attempt": true,
49
+ "permission_needed_without_write_or_retry": true,
50
+ "production_cancel_after_mutation": true,
51
+ "production_recipe_matches_current": true
52
+ },
53
+ "limitations": [
54
+ "Checks cover this installed macOS Claude binary and synthetic operations; normal native permissions and configuration remain authoritative for other projects.",
55
+ "Normal HOME/configuration and subscription authentication were preserved. The native CLI may retain its ordinary private session/cache files; those files were not read or exported by the verifier.",
56
+ "Configured discovery was preserved and synthetic project hooks/subagent/MCP were exercised. This does not assert that every installed user plugin or integration was independently exercised.",
57
+ "Cancellation preserved the known mutation and stopped the observed synthetic descendant/process groups. It does not roll back file/external effects or prove cleanup of detached descendants or remote MCP work.",
58
+ "Completed execution does not establish task fulfillment; agent-reported claims remain unverified unless independently checked.",
59
+ "Native image transport and headless approval relays were not verified. Missing/expired server records do not establish execution outcome.",
60
+ "Admission remains pending genuine independent review; earlier failed/partial attempts and consumed invocations were preserved."
61
+ ],
62
+ "model_selection": "No explicit --model was passed; native CLI configuration selected the observed model.",
63
+ "native_arguments": [
64
+ "--print",
65
+ "--output-format",
66
+ "stream-json",
67
+ "--verbose",
68
+ "--permission-prompts",
69
+ "none"
70
+ ],
71
+ "observed_version": "2.1.304 (Claude Code)",
72
+ "privacy": {
73
+ "credential_material_read_or_copied": false,
74
+ "environment_values_recorded": false,
75
+ "host_configuration_edited": false,
76
+ "known_synthetic_sentinel_checks": "booleans and bounded counts only",
77
+ "raw_sessions_prompts_tool_inputs_results_retained_in_evidence": false,
78
+ "session_identifiers": "sha256 only"
79
+ },
80
+ "profile": "native_task_v1",
81
+ "recipe_sha256": "de885baaadfdf5810321e32992c7e961f3a360dda90b903ab98ffc243564885e",
82
+ "schema_version": 1,
83
+ "source_evidence": [
84
+ {
85
+ "path": "docs/verification/native-claude-2.1.304-attempt1.json",
86
+ "sha256": "6096bb4b0a473826e87d6159d4759bf384979cd51a873a5df4b1d663b1561e5e"
87
+ },
88
+ {
89
+ "path": "docs/verification/native-claude-2.1.304-attempt2.json",
90
+ "sha256": "e1ae1184b60ade8f0eced4b7dd01faab46adec89f9345b67b836b56f010522fe"
91
+ },
92
+ {
93
+ "path": "docs/verification/native-claude-2.1.304-attempt3.json",
94
+ "sha256": "7fde0a7b620454dacac05413abf397e11db0402f463b2ea8484f44e65b47f68f"
95
+ }
96
+ ],
97
+ "status": "runtime_checks_passed_pending_independent_review",
98
+ "verification_path": "Actual ClinkRegistry, CLIBackend, NativeRuntime.run, ProcessPool and NativeTaskManager start/status/followup/cancel; harness-only candidate _policy override; global production policy was not changed."
99
+ }
@@ -0,0 +1,277 @@
1
+ {
2
+ "adapter": "claude",
3
+ "budget": {
4
+ "automatic_retries": 0,
5
+ "consumed": 5,
6
+ "max_per_gate": {
7
+ "cancel": 1,
8
+ "read": 1,
9
+ "text": 3
10
+ },
11
+ "max_replacements": 2,
12
+ "max_total": 5,
13
+ "policy": "claude_text_third_attempt_v1",
14
+ "replacements_used": 2
15
+ },
16
+ "executable_sha256": "b9ac5374839f14abf3f1f45610637c332b5daee5ce0d1634726cef87aab78e6a",
17
+ "gates": [
18
+ {
19
+ "check": "text",
20
+ "observation": {
21
+ "actual_model": "claude-opus-5-5",
22
+ "assistant_activity_before_cancellation": null,
23
+ "dispatch_count": 1,
24
+ "error_code": null,
25
+ "fixture_hook_observations": {
26
+ "controls_unchanged": true,
27
+ "session_start_observed": true,
28
+ "token_read_observations": 0,
29
+ "tool_denials": 0
30
+ },
31
+ "native_terminal_observed": true,
32
+ "output_bytes": 969,
33
+ "output_sha256": "5ef075412b4fb6c29d5b68a5ff3d7ac8b8b09c2996ea0bc6e499170cb7ac243b",
34
+ "passed": true,
35
+ "pool_children_after_shutdown": 0,
36
+ "pool_running_after_shutdown": 0,
37
+ "process_groups_absent_after_cleanup": true,
38
+ "production_service_used": true,
39
+ "raw_output_retained": false,
40
+ "read_tool_uses": 0,
41
+ "spawn_count": 1,
42
+ "terminal_status": "completed",
43
+ "unprovided_file_token_matches": null,
44
+ "useful_transformation": true
45
+ },
46
+ "ordinal": 3
47
+ },
48
+ {
49
+ "check": "read",
50
+ "observation": {
51
+ "actual_model": "claude-opus-5-5",
52
+ "assistant_activity_before_cancellation": null,
53
+ "dispatch_count": 1,
54
+ "error_code": null,
55
+ "fixture_hook_observations": {
56
+ "controls_unchanged": true,
57
+ "session_start_observed": true,
58
+ "token_read_observations": 1,
59
+ "tool_denials": 0
60
+ },
61
+ "native_terminal_observed": true,
62
+ "output_bytes": 55,
63
+ "output_sha256": "e0968184d06da07a3d0cffef64c6975a9ccda2079b0a9e61246ab19d62ce6e09",
64
+ "passed": true,
65
+ "pool_children_after_shutdown": 0,
66
+ "pool_running_after_shutdown": 0,
67
+ "process_groups_absent_after_cleanup": true,
68
+ "production_service_used": true,
69
+ "raw_output_retained": false,
70
+ "read_tool_uses": 1,
71
+ "spawn_count": 1,
72
+ "terminal_status": "completed",
73
+ "unprovided_file_token_matches": true,
74
+ "useful_transformation": null
75
+ },
76
+ "ordinal": 4
77
+ },
78
+ {
79
+ "check": "cancel",
80
+ "observation": {
81
+ "actual_model": null,
82
+ "assistant_activity_before_cancellation": true,
83
+ "dispatch_count": 1,
84
+ "error_code": "cancelled",
85
+ "fixture_hook_observations": {
86
+ "controls_unchanged": true,
87
+ "session_start_observed": true,
88
+ "token_read_observations": 1,
89
+ "tool_denials": 0
90
+ },
91
+ "native_terminal_observed": false,
92
+ "output_bytes": 0,
93
+ "output_sha256": null,
94
+ "passed": true,
95
+ "pool_children_after_shutdown": 0,
96
+ "pool_running_after_shutdown": 0,
97
+ "process_groups_absent_after_cleanup": true,
98
+ "production_service_used": true,
99
+ "raw_output_retained": false,
100
+ "read_tool_uses": 1,
101
+ "spawn_count": 1,
102
+ "terminal_status": "cancelled",
103
+ "unprovided_file_token_matches": null,
104
+ "useful_transformation": null
105
+ },
106
+ "ordinal": 5
107
+ }
108
+ ],
109
+ "limitations": {
110
+ "cancellation_rolls_back_effects": false,
111
+ "candidate_only_live_coverage": true,
112
+ "detached_or_remote_cleanup_verified": false,
113
+ "fulfillment_verified": false,
114
+ "historical_failure_cause": "unproven",
115
+ "native_authentication_independently_verified": false,
116
+ "native_internal_work_bounded_by_top_level_budget": false,
117
+ "native_task_admission_reused": false,
118
+ "permission_observability": "limited",
119
+ "side_effects_possible": true
120
+ },
121
+ "observed_version": "2.1.304 (Claude Code)",
122
+ "parser_sha256": "59371a7a5e34629047fbea0d8706778f9f0516828ce8a5943ef9a4412f12f5c9",
123
+ "profile": "generation_native_v1",
124
+ "recipe_sha256": "fb8515efb95d9cbf64c03d53d740a25f5ae0a0d1d2c04441b81110681332403f",
125
+ "replacement_authorizations": [
126
+ {
127
+ "completion_attestation": {
128
+ "path": ".flow/claude-generation-review-attestations/b9af8b7d298142f0bfbcbcb00d9577e9.json",
129
+ "sha256": "7e45b5e701476a8f9a2947d52d34b9d4cf20a363f28b77cd17975832ea4ceabb"
130
+ },
131
+ "failed_ordinal": 1,
132
+ "independent_review": {
133
+ "path": "test_output/bundled-generation/review-task1-r1/receipt.json",
134
+ "sha256": "3426fcf87e5f1de848c160b8cedea50210e59840fd534352e4173d816ac23227"
135
+ },
136
+ "kind": "legacy_replacement",
137
+ "packet": {
138
+ "path": "test_output/bundled-generation/claude-text-replacement/packet.json",
139
+ "sha256": "d059e0a7faccb72307d3116d4e8ed49d1b92c8e0f44314be504c6427f589e690"
140
+ },
141
+ "replacement_ordinal": 2,
142
+ "reviewed_input": {
143
+ "path": "test_output/bundled-generation/review-input-task1-r4/replacement-input.json",
144
+ "sha256": "925104a62ae1aa26a6fce24e26245a6c21bc3f03885393ddae60da71b1909b15"
145
+ }
146
+ },
147
+ {
148
+ "completion_attestation": {
149
+ "path": ".flow/claude-generation-review-attestations/8ccdef6e1a524f74887e2cad53223f43.json",
150
+ "sha256": "e9dc73e2b4d052fa3581abaa892f8c81966eb5b54bee68d5e374478fac1401eb"
151
+ },
152
+ "failed_ordinal": 2,
153
+ "independent_review": {
154
+ "path": "test_output/bundled-generation/review-task6-r1/receipt.json",
155
+ "sha256": "9274d227179de2fa17f6d9ecadd7636eaa0c8eb08a2355210b679405a1e5ca9f"
156
+ },
157
+ "kind": "bounded_exception",
158
+ "packet": {
159
+ "path": "test_output/bundled-generation/claude-text-bounded-exception/packet.json",
160
+ "sha256": "dbf451cf606e30408b4ab2b978f4a61d373657d235af163876fcb9c0f152431c"
161
+ },
162
+ "replacement_ordinal": 3,
163
+ "reviewed_input": {
164
+ "path": "test_output/bundled-generation/review-input-task6-r1/bounded-exception-input.json",
165
+ "sha256": "effdf553b0f90e210f5da05038732df64efcf8cce6b598dfcdec5c33c96df903"
166
+ }
167
+ }
168
+ ],
169
+ "schema_version": 2,
170
+ "scope": "claude_native_generation_observations",
171
+ "submissions": [
172
+ {
173
+ "candidate_sha256": "2238049839d65e924562e5ffada4ad544fc43fee42651b40f53362eb6db3f044",
174
+ "check": "text",
175
+ "ordinal": 1,
176
+ "passed": false,
177
+ "preflight": {
178
+ "path": "docs/verification/claude-generation/release-020-text-1/preflight.json",
179
+ "sha256": "2b15ae2b97b7fac7fb93703b918b891a2fbe9b222bf70e169c00ac09e14a23c8"
180
+ },
181
+ "receipt": {
182
+ "path": "docs/verification/claude-generation/release-020-text-1/receipt.json",
183
+ "sha256": "7740aa1611d5fa2fddee51478bb73acd0bc4019ad4aea84cd2fe8f184d5f5194"
184
+ },
185
+ "replacement": false,
186
+ "reservation": {
187
+ "path": "docs/verification/claude-generation/release-020-text-1/submitted.json",
188
+ "sha256": "56eb6010050c9d18722501d029ff58fa758f552b22935ad575648937aeab713b"
189
+ }
190
+ },
191
+ {
192
+ "candidate_sha256": "2c12ca19b5f92205a30ed20157a4cfffbd0c65225bdfffb27efefd9f6c7d040d",
193
+ "check": "text",
194
+ "ordinal": 2,
195
+ "passed": false,
196
+ "preflight": {
197
+ "path": "docs/verification/claude-generation/release-020-text-2/preflight.json",
198
+ "sha256": "65e64ba1c62bd26c47e4096113463275cbd97948ce27172991b0cc605e06e751"
199
+ },
200
+ "receipt": {
201
+ "path": "docs/verification/claude-generation/release-020-text-2/receipt.json",
202
+ "sha256": "f71634f96aac29ca7481c041fbde93bb69ab38c66323608d5ca45b71993b7929"
203
+ },
204
+ "replacement": true,
205
+ "reservation": {
206
+ "path": "docs/verification/claude-generation/release-020-text-2/submitted.json",
207
+ "sha256": "7a5e4dfc7ce767983522fd064667a5f6c43cfeb7b37f72b9a1f62ebb72c6c95d"
208
+ }
209
+ },
210
+ {
211
+ "candidate_sha256": "0a73c562814ffb3787986c64eb33b406aef6cbca0b02af8689eec2a513301812",
212
+ "check": "text",
213
+ "ordinal": 3,
214
+ "passed": true,
215
+ "preflight": {
216
+ "path": "docs/verification/claude-generation/release-020-text-3/preflight.json",
217
+ "sha256": "7c97e93b614e276ce3bd693354ea8298839c3f1cad6cfecf889c99e8e9e31918"
218
+ },
219
+ "receipt": {
220
+ "path": "docs/verification/claude-generation/release-020-text-3/receipt.json",
221
+ "sha256": "cff33ff7bb3d3ab7e66ba25a5f66a38bb5379dfa715b5e6144c2a27b610b983c"
222
+ },
223
+ "replacement": true,
224
+ "reservation": {
225
+ "path": "docs/verification/claude-generation/release-020-text-3/submitted.json",
226
+ "sha256": "daefb30bf7ce8e3f3060bb187473457761893173e6ecf7ba39e70ac2f54c7046"
227
+ }
228
+ },
229
+ {
230
+ "candidate_sha256": "0a73c562814ffb3787986c64eb33b406aef6cbca0b02af8689eec2a513301812",
231
+ "check": "read",
232
+ "ordinal": 4,
233
+ "passed": true,
234
+ "preflight": {
235
+ "path": "docs/verification/claude-generation/release-020-read-4/preflight.json",
236
+ "sha256": "882bef8e231f60984141926a0432c9053785a4716dc2d74f99112879545a4c2b"
237
+ },
238
+ "receipt": {
239
+ "path": "docs/verification/claude-generation/release-020-read-4/receipt.json",
240
+ "sha256": "d16409fd7ad94fce20e7d880c3c30a8f16635cd72aee671da74ca640d1fcb216"
241
+ },
242
+ "replacement": false,
243
+ "reservation": {
244
+ "path": "docs/verification/claude-generation/release-020-read-4/submitted.json",
245
+ "sha256": "eb1b148f239312752b0790fa2eb4a8165ffec1c03970525617cec6eae38928fe"
246
+ }
247
+ },
248
+ {
249
+ "candidate_sha256": "0a73c562814ffb3787986c64eb33b406aef6cbca0b02af8689eec2a513301812",
250
+ "check": "cancel",
251
+ "ordinal": 5,
252
+ "passed": true,
253
+ "preflight": {
254
+ "path": "docs/verification/claude-generation/release-020-cancel-5/preflight.json",
255
+ "sha256": "dd38226603d1e7d06f75a97d1247d8c18584e0a8b87a59b36c19abe50cb3f602"
256
+ },
257
+ "receipt": {
258
+ "path": "docs/verification/claude-generation/release-020-cancel-5/receipt.json",
259
+ "sha256": "bd714325fdff1773dfac9a8c9e20002a5364ba17ed254973b07798c7b489b5a1"
260
+ },
261
+ "replacement": false,
262
+ "reservation": {
263
+ "path": "docs/verification/claude-generation/release-020-cancel-5/submitted.json",
264
+ "sha256": "fc396c695256ecb4683a67599adf17ebf4ab471135c1b40e1e131a13464ef1a4"
265
+ }
266
+ }
267
+ ],
268
+ "tested_candidate": {
269
+ "candidate_sha256": "0a73c562814ffb3787986c64eb33b406aef6cbca0b02af8689eec2a513301812",
270
+ "implementation_source_sha256": "bf3f99eff928f3be4bf7ad87ed8ae34a40075b6f9288d63cc7799e5ddc3f1b6c",
271
+ "package_source_sha256": "8a36109fb275709b3bf91f3e9e86098c33753b51845b836d7d2914b24063e5bd",
272
+ "python_executable_sha256": "c172d5d4e4c0a03d30c7c3cb04d638f667a31fe1f494157f11861c5fd40c8a28",
273
+ "python_version": "3.12.16",
274
+ "requested_model": "claude-opus-5-5",
275
+ "verifier_sha256": "0d03ec124f82b3abc24116246ac3fa69446ca27be017450f0192cdbc87fd3a91"
276
+ }
277
+ }