algo-cli-runtime 0.19.2__tar.gz → 0.20.1__tar.gz

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 (351) hide show
  1. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/CHANGELOG.md +188 -0
  2. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/PKG-INFO +4 -2
  3. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/README.md +3 -1
  4. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/__init__.py +1 -2
  5. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/action_registry.py +27 -8
  6. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/ada_task_ledger.py +94 -5
  7. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/agent_blocks.py +1 -1
  8. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/agent_pipeline.py +364 -241
  9. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/arthur_outcomes.py +31 -0
  10. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/cli_config.py +76 -2
  11. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/code_rag.py +131 -14
  12. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/config.py +330 -114
  13. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/context_budget.py +57 -118
  14. algo_cli_runtime-0.20.1/algo_cli/continuum_memory.py +475 -0
  15. algo_cli_runtime-0.20.1/algo_cli/continuum_tools.py +514 -0
  16. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/display.py +251 -210
  17. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/embedding_binding.py +2 -2
  18. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/evals/grounded_retrieval.py +5 -5
  19. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/evals/grounded_retrieval_validation.py +3 -3
  20. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/evals/nathan_agent_runtime_hardening.py +26 -16
  21. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/evals/pattern_comparison.py +2 -1
  22. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/git_evidence.py +48 -13
  23. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/grace_memory_receipts.py +51 -29
  24. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/harness.py +36 -38
  25. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/identity.py +68 -22
  26. algo_cli_runtime-0.20.1/algo_cli/intelligence/__init__.py +511 -0
  27. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/permission_modes.py +7 -7
  28. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/irene_memory_path_policy.py +117 -16
  29. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/irene_search.py +37 -1
  30. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/james_dispatch.py +8 -6
  31. algo_cli_runtime-0.20.1/algo_cli/jev_kernel.py +274 -0
  32. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/julia_memory_candidates.py +23 -1
  33. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/julia_memory_runtime.py +115 -187
  34. algo_cli_runtime-0.20.1/algo_cli/kernels/__init__.py +5 -0
  35. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/kernels/manifest.py +146 -20
  36. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/main.py +771 -221
  37. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/marcus_authority.py +54 -80
  38. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/model_info.py +90 -11
  39. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/model_profile.py +40 -3
  40. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/model_routing.py +11 -1
  41. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/nathan_program_runtime.py +118 -12
  42. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/nathan_runtime.py +348 -25
  43. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/oliver_oneshot.py +18 -11
  44. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/oliver_slash_dispatch.py +166 -67
  45. algo_cli_runtime-0.19.2/algo_cli/elsie_echo_preflight.py → algo_cli_runtime-0.20.1/algo_cli/protected_memory_preflight.py +24 -24
  46. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/resources/boron_browser/boron_public_browser.Dockerfile +8 -8
  47. algo_cli_runtime-0.20.1/algo_cli/resources/prompts/yolo_mode.md +54 -0
  48. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/run_contract.py +30 -16
  49. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/samuel_policy_engine.py +58 -1
  50. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/search_execution.py +94 -6
  51. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/session_commands.py +5 -3
  52. algo_cli_runtime-0.20.1/algo_cli/session_mode.py +319 -0
  53. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/small_context.py +2 -2
  54. algo_cli_runtime-0.20.1/algo_cli/sticky_status.py +346 -0
  55. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/theodore_runtime_services.py +19 -5
  56. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/tool_context.py +47 -19
  57. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/tools.py +422 -527
  58. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/url_scheme.py +1 -1
  59. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/worktree_runtime.py +10 -4
  60. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/xai_auth.py +12 -2
  61. algo_cli_runtime-0.20.1/docs/ALGO.md +44 -0
  62. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/docs/ada-algo-cli-memory-lifecycle-contract.md +14 -15
  63. algo_cli_runtime-0.20.1/docs/continuum-memory.md +87 -0
  64. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/docs/index-compute-lab-integration.md +1 -1
  65. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/docs/privacy-and-context.md +11 -11
  66. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/docs/provider-auth-recovery.md +8 -11
  67. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/pyproject.toml +2 -7
  68. algo_cli_runtime-0.20.1/skills/session-yolo-mode.md +69 -0
  69. algo_cli_runtime-0.19.2/algo_cli/ada_echo_veil_identity.py +0 -837
  70. algo_cli_runtime-0.19.2/algo_cli/ada_memory_echo_veil.py +0 -1368
  71. algo_cli_runtime-0.19.2/algo_cli/intelligence/__init__.py +0 -1108
  72. algo_cli_runtime-0.19.2/algo_cli/intelligence/acrobat_config.py +0 -307
  73. algo_cli_runtime-0.19.2/algo_cli/intelligence/acrobat_manifests.py +0 -338
  74. algo_cli_runtime-0.19.2/algo_cli/intelligence/acrobat_models.py +0 -195
  75. algo_cli_runtime-0.19.2/algo_cli/intelligence/acrobat_pipeline.py +0 -295
  76. algo_cli_runtime-0.19.2/algo_cli/intelligence/acrobat_runtime.py +0 -302
  77. algo_cli_runtime-0.19.2/algo_cli/intelligence/acrobat_security.py +0 -261
  78. algo_cli_runtime-0.19.2/algo_cli/intelligence/acrobat_workflows.py +0 -226
  79. algo_cli_runtime-0.19.2/algo_cli/intelligence/construction/__init__.py +0 -241
  80. algo_cli_runtime-0.19.2/algo_cli/intelligence/construction/common.py +0 -273
  81. algo_cli_runtime-0.19.2/algo_cli/intelligence/construction/documents.py +0 -496
  82. algo_cli_runtime-0.19.2/algo_cli/intelligence/construction/labor_units.py +0 -1397
  83. algo_cli_runtime-0.19.2/algo_cli/intelligence/construction/payments.py +0 -470
  84. algo_cli_runtime-0.19.2/algo_cli/intelligence/construction/risk.py +0 -784
  85. algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/__init__.py +0 -169
  86. algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/anomalies.py +0 -133
  87. algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/ap_ar.py +0 -357
  88. algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/cash.py +0 -166
  89. algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/close.py +0 -334
  90. algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/common.py +0 -270
  91. algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/construction.py +0 -135
  92. algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/controls.py +0 -172
  93. algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/evidence.py +0 -119
  94. algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/exceptions.py +0 -164
  95. algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/reconciliations.py +0 -253
  96. algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/revenue.py +0 -109
  97. algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/tax.py +0 -74
  98. algo_cli_runtime-0.19.2/algo_cli/intelligence/finance/workpapers.py +0 -111
  99. algo_cli_runtime-0.19.2/algo_cli/kernels/__init__.py +0 -5
  100. algo_cli_runtime-0.19.2/algo_cli/session_mode.py +0 -113
  101. algo_cli_runtime-0.19.2/docs/ALGO.md +0 -15457
  102. algo_cli_runtime-0.19.2/docs/echo-veil-security-status.md +0 -249
  103. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/.gitignore +0 -0
  104. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/CONTRIBUTING.md +0 -0
  105. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/LICENSE +0 -0
  106. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/SECURITY.md +0 -0
  107. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo-cli.cmd +0 -0
  108. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo-cli.ps1 +0 -0
  109. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/__main__.py +0 -0
  110. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/_internal/__init__.py +0 -0
  111. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/_internal/policy_chain.py +0 -0
  112. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/ada_control_journal.py +0 -0
  113. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/ada_credential_registry.py +0 -0
  114. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/ada_private_event_store.py +0 -0
  115. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/ada_supply_chain_manifest.py +0 -0
  116. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/ada_uninstall_recovery.py +0 -0
  117. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/agent_context.py +0 -0
  118. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/agent_run_journal.py +0 -0
  119. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/agent_threads.py +0 -0
  120. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/alice_artifact_store.py +0 -0
  121. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/animations.py +0 -0
  122. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/argon_extensions_manifest.py +0 -0
  123. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/arthur_control_doctor.py +0 -0
  124. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/arthur_control_readiness.py +0 -0
  125. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/austin_desktop_simulator.py +0 -0
  126. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/austin_install_finalizer.py +0 -0
  127. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/austin_release_packager.py +0 -0
  128. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/austin_thomas_binding.py +0 -0
  129. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/boron_browser_entry.py +0 -0
  130. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/boron_browser_isolation.py +0 -0
  131. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/boron_browser_wrapper.py +0 -0
  132. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/cache_admission.py +0 -0
  133. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/capability_mask.py +0 -0
  134. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/carbon_browser_binding.py +0 -0
  135. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/chat_protocol.py +0 -0
  136. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/chatgpt_auth.py +0 -0
  137. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/chatgpt_client.py +0 -0
  138. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/clara_effect_ledger.py +0 -0
  139. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/cobalt_browser_service.py +0 -0
  140. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/credential_helpers.py +0 -0
  141. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/daemon.py +0 -0
  142. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/daemon_rpc.py +0 -0
  143. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/david_control_kernel.py +0 -0
  144. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/david_control_runtime.py +0 -0
  145. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/deliberation.py +0 -0
  146. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/dorothy_perf_telemetry.py +0 -0
  147. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/elsie_keyring_anchors.py +0 -0
  148. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/evals/__init__.py +0 -0
  149. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/evals/algorithm_effectiveness.py +0 -0
  150. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/evals/competitive_harness_rating.py +0 -0
  151. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/evals/cot_quality.py +0 -0
  152. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/evals/diagnostic_graph.py +0 -0
  153. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/evals/grounded_answers.py +0 -0
  154. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/evals/harness_retrieval_benchmark.py +0 -0
  155. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/evals/pattern_evidence.py +0 -0
  156. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/evals/performance_regression.py +0 -0
  157. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/evals/scorecard_grading.py +0 -0
  158. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/evals/session_distribution.py +0 -0
  159. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/evals/tool_context_efficiency.py +0 -0
  160. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/evelyn_context_supersession.py +0 -0
  161. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/execution_guardrails.py +0 -0
  162. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/git_publish.py +0 -0
  163. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/google_workspace.py +0 -0
  164. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/google_workspace_auth.py +0 -0
  165. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/grace_key_store.py +0 -0
  166. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/henry_effect_control.py +0 -0
  167. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/henry_hardening_qualification.py +0 -0
  168. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/index_compute_lab.py +0 -0
  169. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/inference_harness.py +0 -0
  170. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/actionability.py +0 -0
  171. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/adversarial_audit.py +0 -0
  172. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/agent_arena.py +0 -0
  173. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/agent_benchmark.py +0 -0
  174. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/agent_runtime.py +0 -0
  175. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/agents_as_tools.py +0 -0
  176. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/artifact_binding.py +0 -0
  177. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/autonomous_engineer.py +0 -0
  178. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/backpressure.py +0 -0
  179. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/bloom_filter.py +0 -0
  180. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/bonferroni.py +0 -0
  181. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/boundary_compaction.py +0 -0
  182. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/catalog_verifier.py +0 -0
  183. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/cavecrew.py +0 -0
  184. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/changelog.py +0 -0
  185. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/checkpoint_resume.py +0 -0
  186. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/circuit_breaker.py +0 -0
  187. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/clarification_gate.py +0 -0
  188. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/code_graph.py +0 -0
  189. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/coderank.py +0 -0
  190. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/consistent_hash.py +0 -0
  191. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/consortium_synthesis.py +0 -0
  192. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/content_extractor.py +0 -0
  193. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/context_adaptive.py +0 -0
  194. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/context_ops.py +0 -0
  195. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/count_min.py +0 -0
  196. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/cow_state.py +0 -0
  197. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/critic_loop.py +0 -0
  198. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/cross_source.py +0 -0
  199. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/daemon_mode.py +0 -0
  200. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/dag_orchestration.py +0 -0
  201. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/deep_research.py +0 -0
  202. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/degenerate_detector.py +0 -0
  203. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/delta_report.py +0 -0
  204. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/discovery_event_log.py +0 -0
  205. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/document_ingest.py +0 -0
  206. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/dual_layer_validate.py +0 -0
  207. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/echo_fidelity.py +0 -0
  208. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/ema_tuning.py +0 -0
  209. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/event_log.py +0 -0
  210. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/evidence_graph.py +0 -0
  211. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/extension_host.py +0 -0
  212. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/extension_manifest.py +0 -0
  213. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/falsification_suite.py +0 -0
  214. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/finding_record.py +0 -0
  215. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/flow_dag.py +0 -0
  216. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/gatherer.py +0 -0
  217. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/golden_master.py +0 -0
  218. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/graph_rag.py +0 -0
  219. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/group_chat.py +0 -0
  220. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/hash_dedup.py +0 -0
  221. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/hyperloglog.py +0 -0
  222. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/incremental_index.py +0 -0
  223. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/index_store.py +0 -0
  224. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/iteration_plan.py +0 -0
  225. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/kernel_plugins.py +0 -0
  226. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/lesson_catalog.py +0 -0
  227. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/llm_fallback.py +0 -0
  228. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/log2_histogram.py +0 -0
  229. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/lsp_integration.py +0 -0
  230. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/memory_evolution.py +0 -0
  231. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/minhash_lsh.py +0 -0
  232. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/multi_model_score.py +0 -0
  233. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/multi_tier_grade.py +0 -0
  234. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/negative_controls.py +0 -0
  235. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/numeric_clamp.py +0 -0
  236. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/occ_editor.py +0 -0
  237. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/output_normalize.py +0 -0
  238. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/parallel_delegation.py +0 -0
  239. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/parallel_fanout.py +0 -0
  240. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/pre_push_gate.py +0 -0
  241. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/prefetch.py +0 -0
  242. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/process_framework.py +0 -0
  243. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/project_graph.py +0 -0
  244. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/query_expansion.py +0 -0
  245. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/ralph_loop.py +0 -0
  246. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/rate_limiter.py +0 -0
  247. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/refactor_transaction.py +0 -0
  248. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/repo_map.py +0 -0
  249. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/research_workspace.py +0 -0
  250. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/retraction_ledger.py +0 -0
  251. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/saga_pattern.py +0 -0
  252. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/session_fork.py +0 -0
  253. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/shadow_editor.py +0 -0
  254. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/shell_session.py +0 -0
  255. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/source_registry.py +0 -0
  256. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/spawn_scales.py +0 -0
  257. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/stat_stability.py +0 -0
  258. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/structural_validator.py +0 -0
  259. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/subagent_spawner.py +0 -0
  260. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/symmetric_verify.py +0 -0
  261. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/task_classifier.py +0 -0
  262. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/team_execution.py +0 -0
  263. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/tiered_access.py +0 -0
  264. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intelligence/utility_registry.py +0 -0
  265. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intuition_engine.py +0 -0
  266. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/intuition_injector.py +0 -0
  267. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/irene_privacy_views.py +0 -0
  268. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/model_aliases.py +0 -0
  269. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/nathan_approval_channel.py +0 -0
  270. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/nathan_approval_reviewer.py +0 -0
  271. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/nathan_provider_protocol.py +0 -0
  272. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/neon_browser_native_host.py +0 -0
  273. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/neon_browser_simulator.py +0 -0
  274. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/oliver_authority_rotation.py +0 -0
  275. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/oliver_control_installation.py +0 -0
  276. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/oliver_control_installer.py +0 -0
  277. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/oliver_control_uninstall.py +0 -0
  278. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/pattern_catalog.py +0 -0
  279. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/pattern_runtime.py +0 -0
  280. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/quantization/__init__.py +0 -0
  281. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/quantization/lloyd_max.py +0 -0
  282. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/quantization/turbo_quant.py +0 -0
  283. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/reasoning/__init__.py +0 -0
  284. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/reasoning/combinatorial.py +0 -0
  285. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/reasoning/graph_of_thought.py +0 -0
  286. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/reasoning/mcts.py +0 -0
  287. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/reasoning/neuro_symbolic.py +0 -0
  288. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/reasoning/react.py +0 -0
  289. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/reasoning/reflexion.py +0 -0
  290. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/reasoning/tree_of_thought.py +0 -0
  291. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/reasoning_bridge.py +0 -0
  292. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/reconciliation.py +0 -0
  293. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/reflex.py +0 -0
  294. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/resources/boron_browser/boron_browser_wrapper.sh +0 -0
  295. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/resources/boron_browser/boron_managed_policy.json +0 -0
  296. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/resources/boron_browser/boron_public_browser.Dockerfile.dockerignore +0 -0
  297. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/resources/boron_browser/boron_seccomp_profile.json +0 -0
  298. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/resources/boron_browser/carbon_native_browser.Dockerfile +0 -0
  299. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/resources/boron_browser/carbon_native_browser.Dockerfile.dockerignore +0 -0
  300. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/resources/boron_browser/xenon_egress_broker.Dockerfile +0 -0
  301. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/resources/boron_browser/xenon_egress_broker.Dockerfile.dockerignore +0 -0
  302. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/resources/boron_browser/xenon_egress_broker.sh +0 -0
  303. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/resources/neon_extension/neon_manifest_template.json +0 -0
  304. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/resources/neon_extension/neon_popup.html +0 -0
  305. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/resources/neon_extension/neon_popup.js +0 -0
  306. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/resources/neon_extension/neon_service_worker.js +0 -0
  307. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/retrieval_algorithms.py +0 -0
  308. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/samuel_policy.py +0 -0
  309. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/skills.py +0 -0
  310. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/spawn_budget.py +0 -0
  311. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/task_router.py +0 -0
  312. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/theodore_runtime_qos.py +0 -0
  313. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/tool_contract.py +0 -0
  314. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/tool_schema.py +0 -0
  315. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/updater.py +0 -0
  316. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/verify.py +0 -0
  317. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/version_manifest.py +0 -0
  318. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/vision_screenshot_verify.py +0 -0
  319. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/william_plugins.py +0 -0
  320. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/workspace_resolver.py +0 -0
  321. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/x_account.py +0 -0
  322. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/xai_client.py +0 -0
  323. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/xenon_browser_broker.py +0 -0
  324. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/xenon_browser_egress.py +0 -0
  325. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/algo_cli/xenon_browser_entry.py +0 -0
  326. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/docs/algo-cli-algorithm-evidence-contract.md +0 -0
  327. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/docs/algo-cli-execution-verification-contract.md +0 -0
  328. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/docs/external-agent-store-operations.md +0 -0
  329. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/docs/harness-extension-cleanup-recommendation.md +0 -0
  330. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/docs/inference-harness-loop-blueprint-2026-06.md +0 -0
  331. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/docs/main-split-map.md +0 -0
  332. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/docs/reflex-loop-v0.2.md +0 -0
  333. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/docs/runtime-capability-catalog.md +0 -0
  334. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/docs/supervised-action-review.md +0 -0
  335. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/docs/t3-code-parity-2026-07.md +0 -0
  336. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/harness-gateway/go.mod +0 -0
  337. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/harness-gateway/main.go +0 -0
  338. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/harness-indexer/Cargo.lock +0 -0
  339. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/harness-indexer/Cargo.toml +0 -0
  340. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/harness-indexer/src/main.rs +0 -0
  341. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/ollama_cli/__init__.py +0 -0
  342. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/skills/README.md +0 -0
  343. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/skills/algo-cli.md +0 -0
  344. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/skills/edit-file-precision.md +0 -0
  345. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/skills/harness-search-first.md +0 -0
  346. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/skills/homebrew-helper-catalog.md +0 -0
  347. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/skills/memory-recall-ritual.md +0 -0
  348. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/skills/qol-algorithms.md +0 -0
  349. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/skills/sleeper-agent-model-review.md +0 -0
  350. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/skills/smart-error-recovery.md +0 -0
  351. {algo_cli_runtime-0.19.2 → algo_cli_runtime-0.20.1}/skills/tool-selection-cheatsheet.md +0 -0
@@ -4,6 +4,194 @@ All notable changes to Algo CLI are documented here. The format follows [Keep a
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.20.1] - 2026-09-23
8
+
9
+ A patch release from a whole-codebase bug hunt. Candidate issues were
10
+ confirmed by reading or running the code, independently challenged, and fixed
11
+ with a regression test each.
12
+
13
+ ### Fixed
14
+
15
+ - Tool-call and tool-result lines no longer parse tool arguments or output as
16
+ Rich markup. Text such as `ls [/tmp]` used to crash the turn and leave an
17
+ unanswered tool call in history, and code previews silently dropped
18
+ bracketed text (`d[key]` showed as `d`). Recalled-context and info lines
19
+ get the same treatment.
20
+ - Tool failures reported as `Error reading/writing/listing ...` are now
21
+ classified as failures instead of "worked".
22
+ - `search_files` keeps ripgrep matches when ripgrep also reports errors (for
23
+ example one unreadable folder) and marks the result as partial. Long
24
+ stderr no longer stops the search early. The Python fallback now honors
25
+ path globs such as `**/*.py`, `dir/*.py` and `!*.md`, case-insensitively on
26
+ Windows.
27
+ - `run_shell` keeps leading whitespace on the first output line, so formats
28
+ such as `git status --short` stay intact.
29
+ - A schemeless `OLLAMA_HOST` (for example `127.0.0.1:11434`) no longer fails
30
+ the readiness check and blocks every prompt, and the supplemental gateway
31
+ receives a normalized host.
32
+ - Agent-block models are routed to Ollama Cloud or local Ollama by the block's
33
+ own model instead of the active model.
34
+ - `--oneshot --json` always ends with a `done` event, reporting `partial` when
35
+ saving the configuration fails.
36
+ - `/agent` fixes: a model error marks the block as failed; tasks that begin
37
+ with `show`, `switch`, `resume` or `fork` are only treated as thread
38
+ commands when followed by a thread reference; apostrophes and quotes in the
39
+ task no longer drop `--pipeline` or `--roles`; Ctrl+C on a team run stops
40
+ waiting for running specialists.
41
+ - Saving a memory never overwrites a `memory.json` that exists but cannot be
42
+ read safely; an empty file still counts as no memories. One invalid legacy
43
+ fact no longer breaks `/remember` or turns off recall, and the load error
44
+ clears after a successful repair.
45
+ - Lessons written as paragraphs (the template format) are indexed, not only
46
+ `## ` sections.
47
+ - Automatic memory capture rejects complaints and reported speech such as
48
+ "You always forget to run the tests".
49
+ - When the context summarizer fails, the lossy fallback summary is reported
50
+ instead of being used silently.
51
+ - Code-RAG re-embeds chunks after an embedding-width or embedder change
52
+ instead of failing on every turn, keeps older indexes usable after upgrade,
53
+ and drops deleted files from the repository map.
54
+ - A source file with a future modification time no longer forces a full
55
+ harness re-index on every load.
56
+ - Ctrl+C during a streamed answer keeps the partial answer in the
57
+ conversation and says so.
58
+ - `/agent resume` and `/agent fork` no longer treat English words made of hex
59
+ letters (`add`, `beef`, `decade`) as thread references; a reference followed
60
+ by a task must contain a digit or match a full thread id.
61
+ - A schemeless `OLLAMA_HOST` now also works for embedding identity and the
62
+ gateway upstream, so code, lesson and memory retrieval stay semantic.
63
+ - File contents that happen to begin like a tool error are no longer recorded
64
+ as failed tool calls, in the chat loop, `/agent`, one-shot and program runs.
65
+ - Partial search results are recorded as not fully successful.
66
+ - Malformed search globs such as `*[^]` no longer crash the Python fallback.
67
+ - `/agent team` cancellation stops `write_file` before it writes and
68
+ terminates a running `run_shell` command.
69
+ - Ctrl+C during a parallel tool batch returns within a bounded wait and keeps
70
+ every tool call paired with a result.
71
+ - `/diff`, `/changes`, agent-block panels, `/help`, the memory table and the
72
+ runtime overview show bracketed text literally instead of treating it as
73
+ Rich markup.
74
+ - Existing lesson indexes are rebuilt with the new chunker, and lesson text
75
+ containing comment markers is kept intact.
76
+ - Memory capture: `needed`/`embedded` standing rules are accepted, and
77
+ first-person complaints (`I always forget ...`) are rejected.
78
+ - Files created after the last code-RAG scan are found on the next scan.
79
+ - The settled thinking panel shows both the opening and the ending of long
80
+ reasoning, and the live panel keeps indentation.
81
+
82
+ ### Changed
83
+
84
+ - Ctrl+C at the prompt clears a half-typed line; on an empty line it asks for
85
+ a second Ctrl+C (or Ctrl+D) before exiting.
86
+ - The footer reflects `/safe`, `/auto`, `/theme` and `/cd` changes
87
+ immediately.
88
+ - The model-wait spinner shows the elapsed time, and switches to "loading" for
89
+ slow local model loads.
90
+ - The live thinking panel follows the newest reasoning instead of freezing
91
+ after the first 1,200 characters.
92
+ - Errors show their class and, for connection, timeout and missing-model
93
+ failures, a short hint about what to check.
94
+
95
+ ### Security
96
+
97
+ - The public-release scan also rejects local keychain item names used for
98
+ companion credentials, in source and in built artifacts.
99
+
100
+ ### Release Limits
101
+
102
+ - Native signing, M8 external-browser metrics and other blocked hardening
103
+ work remain blocked and are not claimed.
104
+
105
+ ## [0.20.0] - 2026-09-20
106
+
107
+ ### Added
108
+
109
+ - Add explicit, session-only `/mode yolo` activation with an owner, process,
110
+ and workspace binding. YOLO is never saved, inherited by child agents, or
111
+ enabled by a prompt, copied configuration, or harness refresh.
112
+ - Route memory through native Continuum when it is explicitly selected, with
113
+ fail-closed scoped context, revision-bound writes, and no fallback backend.
114
+ `algo-cli config memory repair` removes retired memory selectors from an
115
+ existing configuration while preserving every other setting.
116
+ - Add the optional Jev kernel: `jev_question_contract` sends bounded,
117
+ advisory question contracts to the separately installed `jev-workflows`
118
+ companion. Lint runs locally; inference requires `algo-cli config jev enable`
119
+ and session approval, and validated answers never authorize actions.
120
+ - Keep the normal model, context, tool, reflection, and safety status visible
121
+ during generation and tool execution on supported interactive terminals.
122
+
123
+ ### Changed
124
+
125
+ - Let user-activated YOLO preapprove registered in-scope actions while retaining
126
+ safe-mode denials, credential and direct-send restrictions, protected memory
127
+ boundaries, target checks, child isolation, and post-mutation verification.
128
+ - Allow curated owner-bound read-only observation outside the active workspace
129
+ in YOLO without extending cross-workspace mutation authority.
130
+ - Normalize an empty typed-program output list to the final step and ignore only
131
+ redundant active-workspace `cwd` fields owned by the runtime. Conflicting
132
+ workspaces and invalid plans remain rejected.
133
+ - Remove the ordinary tool-round and verification-recovery ceilings while YOLO
134
+ is active; saved `/toolmax` behavior is unchanged after leaving YOLO.
135
+ - Preserve live YOLO activation through `/reload` without persisting it, and use
136
+ native cloud-model context limits instead of stale catalog stamps.
137
+ - Show a short `/` menu of common commands, group `/help` by category, and
138
+ reveal subcommands after their parent command. Existing command names and
139
+ aliases still work.
140
+ - Render the in-progress footer with the same content, colors, and spacing as
141
+ the prompt footer, so submitting a question no longer restyles it.
142
+
143
+ ### Removed
144
+
145
+ - Ship `docs/ALGO.md` as an empty template instead of a populated pattern
146
+ catalog. Each user keeps their own catalog at `~/.algo_cli/ALGO.md`, which
147
+ Algo indexes in place of the template; `/intelligence init` creates it.
148
+ - Remove the Acrobat, finance, and construction kernels and their modules from
149
+ the package. Personal kernels are declared in
150
+ `~/.algo_cli/kernels/kernels.json` and load on that machine only; `/kernel`
151
+ lists them separately from built-in kernels.
152
+
153
+ ### Fixed
154
+
155
+ - Stop a startup crash when Continuum's required shared context exceeds the
156
+ default packet size: Algo retries once with the backend-reported size, up to
157
+ a hard cap, without dropping required records.
158
+ - Check protected-memory Git paths with their exact bytes, so a hard link with a
159
+ non-UTF-8 name cannot bypass the link check, and never launch a
160
+ `continuum-memory` command found inside the current repository.
161
+ - Stream Continuum replies under a fixed size limit, keep `/memory help`
162
+ available when the backend is down, and bound the personal kernel file.
163
+ - Keep a context window set with `/ctx` even when it equals a common model
164
+ default; only unrecorded automatic values are promoted to the native window.
165
+ - Refresh the Boron managed-browser pin to Chrome `153.0.8010.52` with its
166
+ Debian package checksum, release timestamp, regenerated dpkg lock, and
167
+ coupled fixtures, so hosted browser qualification is within the 72-hour
168
+ security-update limit.
169
+ - Distinguish compiler-format failures from missing runtime authority so valid
170
+ YOLO programs are not reported as approval failures.
171
+ - Classify slash-command inspection by each handler's real argument contract.
172
+ Mutating `/host`, `/model`, `/system`, `/goal`, `/google`, and related forms
173
+ no longer inherit read-only output capture or inspection treatment.
174
+ - Preserve `/memories` output capture and keep mutating command output on the
175
+ normal non-captured policy path.
176
+ - Restore terminal scroll margins on normal completion, resize, suspension,
177
+ termination, and hangup; suppress terminal controls for JSON output and
178
+ terminals without VT support.
179
+ - Accept both current owned Swift test-bundle identities without weakening path
180
+ or process-ancestry checks, and update the dependency lock past known `anyio`
181
+ advisories.
182
+ - Pin release upgrade qualification to the actual published `0.19.2`
183
+ predecessor and its exact public wheel bytes instead of the obsolete
184
+ `0.18.0` baseline, including the real published updater for pipless
185
+ `uv-pip` installations instead of a manual bootstrap bypass.
186
+
187
+ ### Release Limits
188
+
189
+ - Retired memory backends (Echo Veil and D-57) are removed, not supported as
190
+ options or fallbacks. Their historical records are left unchanged.
191
+ - M8 retains five blocked external-browser metrics and M9 retains thirteen
192
+ blocked requirements. This release does not claim external-browser or model-
193
+ quality qualification from local deterministic evidence.
194
+
7
195
  ## [0.19.2] - 2026-09-13
8
196
 
9
197
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: algo-cli-runtime
3
- Version: 0.19.2
3
+ Version: 0.20.1
4
4
  Summary: Agent runtime for tools, durable context, and verified work
5
5
  Project-URL: Homepage, https://algo-cli.com
6
6
  Project-URL: Documentation, https://algo-cli.com/docs
@@ -119,7 +119,7 @@ inside the running launcher does not release that Windows file lock.
119
119
  To install a reviewed source checkout instead, clone the repository and run
120
120
  `pipx install .` from its root.
121
121
 
122
- Optional extras are available for PDF rendering (`algo-cli-runtime[pdf]`) and experimental vector quantization (`algo-cli-runtime[quantization]`). Echo Veil is not a public package extra because its qualified 0.8 revision is not published on PyPI. Source development uses the exact commit-pinned `echo-veil` dependency group; operators who require Echo must install that same reviewed source revision into Algo's Python environment. The distribution installs the `algo-cli` command. Run `algo-cli doctor` for a side-effect-free readiness report.
122
+ Optional extras are available for PDF rendering (`algo-cli-runtime[pdf]`) and experimental vector quantization (`algo-cli-runtime[quantization]`). Governed memory uses the separately installed native Continuum service; see [Continuum Memory](docs/continuum-memory.md) for configuration and recovery. The distribution installs the `algo-cli` command. Run `algo-cli doctor` for a side-effect-free readiness report.
123
123
 
124
124
  ## Quick Start
125
125
 
@@ -311,6 +311,8 @@ The model can call these tools during a conversation:
311
311
 
312
312
  **Programmatic actions:** `action_search` retrieves a small set of exact deferred action schemas; discovery does not bypass the active capability ceiling, runtime policy, or approval. `action_program` compiles a bounded typed dataflow plan—never arbitrary Python or JavaScript—and routes every nested action through its existing ActionSpec policy, guardrails, approval, attempt ledger, and telemetry. Its wall-clock budget is cooperative: the remaining budget is propagated into timeout-aware actions and checked around every step, while actions without a timeout contract can only be marked over-budget after they return. Large intermediate values are content-addressed in the private runtime store; compact results retain hash-chained mutation and verification receipts. Successful program verifiers reconcile into the outer completion ledger, so the latest passing post-mutation check supersedes earlier failures without relying on model phrasing.
313
313
 
314
+ **Jev (optional):** `jev_question_contract` asks Jev, a small TypeSafe decision model, bounded advisory questions (classification, review, routing, claim checks) and `jev_kernel_status` checks readiness. It needs the separately installed `jev-workflows` companion: run `algo-cli config jev enable --cli /absolute/path/to/jev-workflows`. The companion holds its own credentials. `lint` mode is local; `review`, `run`, and `followup` send only the supplied question packet to TypeSafe and require session approval. Answers are advisory and never authorize or execute actions. `algo-cli config jev disable` turns inference off again.
315
+
314
316
  **Models:** `model_show`, `model_pull`, `model_copy`, `model_create`, `model_delete`
315
317
 
316
318
  **Files and Git:** `read_file`, `read_pdf`, `render_pdf_pages`, `edit_file`, `write_file`, `list_directory`, `search_files`, `find_unique_anchor`, `batch_edit`, `git_status`, `git_diff`
@@ -51,7 +51,7 @@ inside the running launcher does not release that Windows file lock.
51
51
  To install a reviewed source checkout instead, clone the repository and run
52
52
  `pipx install .` from its root.
53
53
 
54
- Optional extras are available for PDF rendering (`algo-cli-runtime[pdf]`) and experimental vector quantization (`algo-cli-runtime[quantization]`). Echo Veil is not a public package extra because its qualified 0.8 revision is not published on PyPI. Source development uses the exact commit-pinned `echo-veil` dependency group; operators who require Echo must install that same reviewed source revision into Algo's Python environment. The distribution installs the `algo-cli` command. Run `algo-cli doctor` for a side-effect-free readiness report.
54
+ Optional extras are available for PDF rendering (`algo-cli-runtime[pdf]`) and experimental vector quantization (`algo-cli-runtime[quantization]`). Governed memory uses the separately installed native Continuum service; see [Continuum Memory](docs/continuum-memory.md) for configuration and recovery. The distribution installs the `algo-cli` command. Run `algo-cli doctor` for a side-effect-free readiness report.
55
55
 
56
56
  ## Quick Start
57
57
 
@@ -243,6 +243,8 @@ The model can call these tools during a conversation:
243
243
 
244
244
  **Programmatic actions:** `action_search` retrieves a small set of exact deferred action schemas; discovery does not bypass the active capability ceiling, runtime policy, or approval. `action_program` compiles a bounded typed dataflow plan—never arbitrary Python or JavaScript—and routes every nested action through its existing ActionSpec policy, guardrails, approval, attempt ledger, and telemetry. Its wall-clock budget is cooperative: the remaining budget is propagated into timeout-aware actions and checked around every step, while actions without a timeout contract can only be marked over-budget after they return. Large intermediate values are content-addressed in the private runtime store; compact results retain hash-chained mutation and verification receipts. Successful program verifiers reconcile into the outer completion ledger, so the latest passing post-mutation check supersedes earlier failures without relying on model phrasing.
245
245
 
246
+ **Jev (optional):** `jev_question_contract` asks Jev, a small TypeSafe decision model, bounded advisory questions (classification, review, routing, claim checks) and `jev_kernel_status` checks readiness. It needs the separately installed `jev-workflows` companion: run `algo-cli config jev enable --cli /absolute/path/to/jev-workflows`. The companion holds its own credentials. `lint` mode is local; `review`, `run`, and `followup` send only the supplied question packet to TypeSafe and require session approval. Answers are advisory and never authorize or execute actions. `algo-cli config jev disable` turns inference off again.
247
+
246
248
  **Models:** `model_show`, `model_pull`, `model_copy`, `model_create`, `model_delete`
247
249
 
248
250
  **Files and Git:** `read_file`, `read_pdf`, `render_pdf_pages`, `edit_file`, `write_file`, `list_directory`, `search_files`, `find_unique_anchor`, `batch_edit`, `git_status`, `git_diff`
@@ -5,13 +5,12 @@ from __future__ import annotations
5
5
  from importlib import import_module
6
6
  from types import ModuleType
7
7
 
8
- __version__ = "0.19.2"
8
+ __version__ = "0.20.1"
9
9
 
10
10
  _RENAMED_INTERNAL_MODULES = {
11
11
  "elsie_memory_path_policy": "irene_memory_path_policy",
12
12
  "elsie_memory_receipts": "grace_memory_receipts",
13
13
  "memory_candidates": "julia_memory_candidates",
14
- "memory_echo_veil": "ada_memory_echo_veil",
15
14
  "oneshot": "oliver_oneshot",
16
15
  "program_runtime": "nathan_program_runtime",
17
16
  "tool_policy": "samuel_policy",
@@ -190,6 +190,18 @@ def _spec(
190
190
 
191
191
 
192
192
  ACTION_SPECS: tuple[ActionSpec, ...] = (
193
+ _spec(
194
+ "jev.status", "kernel", "Inspect Jev question-contract companion readiness.",
195
+ "kernel", ("jev", "read-only", "local"), "Checks compatibility without contacting TypeSafe.",
196
+ "low", False, False, True,
197
+ known_limitations=("Execute through jev_kernel_status; readiness does not verify provider connectivity.",),
198
+ ),
199
+ _spec(
200
+ "jev.question_contract", "kernel", "Lint or submit a bounded advisory Jev question contract.",
201
+ "kernel", ("jev", "advisory", "network"), "Typed judgments never authorize or execute actions.",
202
+ "medium", False, True, False, requires_network=True,
203
+ known_limitations=("Execute through jev_question_contract; lint is local, inference requires explicit setup.",),
204
+ ),
193
205
  _spec(
194
206
  "read_file",
195
207
  "tool",
@@ -860,10 +872,10 @@ ACTION_SPECS: tuple[ActionSpec, ...] = (
860
872
  _spec(
861
873
  "capability.tier",
862
874
  "kernel",
863
- "Assign the least-privileged runtime capability tier.",
875
+ "Describe the compatibility capability tier; runtime authority uses scoped grants.",
864
876
  "kernel",
865
877
  ("policy", "capability", "tier", "least-privilege"),
866
- "Ensures each tool's capability mask fits its structural permission tier.",
878
+ "Capability tiers describe masks but cannot authorize actions or expand scoped grants.",
867
879
  "low",
868
880
  False,
869
881
  False,
@@ -1390,6 +1402,7 @@ def _first_doc_line(obj: Any, fallback: str) -> str:
1390
1402
 
1391
1403
  def _generated_tool_spec(name: str, fn: Any) -> ActionSpec:
1392
1404
  policy = policy_for_action(name)
1405
+ memory_tool = name.startswith("memory_")
1393
1406
  network = (
1394
1407
  name.startswith("web_")
1395
1408
  or name.startswith("x_")
@@ -1412,17 +1425,23 @@ def _generated_tool_spec(name: str, fn: Any) -> ActionSpec:
1412
1425
  name,
1413
1426
  "tool",
1414
1427
  _first_doc_line(fn, f"Runtime callable tool: {name}."),
1415
- "runtime",
1416
- (("curated-runtime", "runtime", "tool") if policy.curated else ("unclassified", "runtime", "tool")),
1428
+ "memory" if memory_tool else "runtime",
1429
+ (
1430
+ ("continuum", "memory", "curated-runtime", "tool")
1431
+ if memory_tool
1432
+ else ("curated-runtime", "runtime", "tool")
1433
+ if policy.curated
1434
+ else ("unclassified", "runtime", "tool")
1435
+ ),
1417
1436
  (
1418
1437
  "Curated runtime policy covers this callable even though it has no long-form registry entry."
1419
1438
  if policy.curated
1420
1439
  else "Unclassified runtime callable is denied until an explicit authority policy is added."
1421
1440
  ),
1422
- "high",
1423
- True,
1424
- True,
1425
- False,
1441
+ cast(RiskLevel, policy.maximum_risk),
1442
+ policy.mutates_state,
1443
+ policy.requires_approval,
1444
+ policy.safe_retry,
1426
1445
  requires_network=network,
1427
1446
  requires_provider=provider,
1428
1447
  )
@@ -13,8 +13,9 @@ Writes are atomic (tmp + os.replace) via config._atomic_write_text.
13
13
 
14
14
  from __future__ import annotations
15
15
 
16
- import json
16
+ import hashlib
17
17
  import hmac
18
+ import json
18
19
  import os
19
20
  import stat
20
21
  import time
@@ -46,6 +47,7 @@ LEGACY_PROTECTED_LEDGER_SCHEMA_VERSION = 2
46
47
  PROTECTED_LEDGER_SCHEMA_VERSION = 3
47
48
  MAX_LEDGER_BYTES = 1_048_576
48
49
  _LEDGER_MISSING = object()
50
+ GOAL_STORE_CONFLICT_REASON = "goal_store_conflict_requires_repair"
49
51
 
50
52
  STATUS_RUNNING = "running"
51
53
  STATUS_COMPLETE = "complete"
@@ -57,7 +59,7 @@ STATUS_STOPPED = "stopped" # user-interrupted or round cap reached
57
59
  class GoalRecord:
58
60
  # The goal is explicit user-authored operational state and intentionally
59
61
  # remains readable. Model-derived reasons/history are projected below when
60
- # Echo is the selected memory authority.
62
+ # Continuum is the selected memory authority.
61
63
  goal: str
62
64
  status: str = STATUS_RUNNING
63
65
  rounds_done: int = 0
@@ -408,7 +410,7 @@ def prepare_protected_goal_store(
408
410
  anchor_store=anchor_store,
409
411
  )
410
412
  if existing_head is not None:
411
- raise ElsieReceiptError("legacy goal ledger conflicts with protected anchor")
413
+ raise ElsieReceiptError(GOAL_STORE_CONFLICT_REASON)
412
414
  payload = _protected_ledger_payload(
413
415
  _protected_goal_payload(legacy, authority),
414
416
  authority,
@@ -429,6 +431,93 @@ def prepare_protected_goal_store(
429
431
  return recovered
430
432
 
431
433
 
434
+ def repair_protected_goal_store_conflict(
435
+ *,
436
+ receipt_authority: ElsieReceiptAuthority | None = None,
437
+ anchor_store: Any | None = None,
438
+ ) -> dict[str, object]:
439
+ """Archive a conflicting legacy ledger and publish a blocked successor.
440
+
441
+ The existing external anchor is retained and advanced. Legacy progress is
442
+ never made resumable: only the user-authored goal and cwd survive, in a
443
+ blocked record that requires an explicit fresh goal before more work.
444
+ """
445
+
446
+ authority = receipt_authority or ElsieReceiptAuthority.from_existing_key_store()
447
+ with _exclusive_state_lock(LEDGER_PATH):
448
+ if _pending_goal_exists():
449
+ raise ElsieReceiptError("protected goal recovery is pending")
450
+ try:
451
+ raw = _state_descriptor_payload(LEDGER_PATH, max_bytes=MAX_LEDGER_BYTES)
452
+ except FileNotFoundError as exc:
453
+ raise ElsieReceiptError("protected goal ledger is missing") from exc
454
+ except OSError as exc:
455
+ raise ElsieReceiptError("protected goal ledger path is unsafe") from exc
456
+ try:
457
+ current = json.loads(raw.decode("utf-8", errors="strict"))
458
+ except (json.JSONDecodeError, UnicodeDecodeError) as exc:
459
+ raise ElsieReceiptError("protected goal ledger is malformed") from exc
460
+ if not isinstance(current, dict):
461
+ raise ElsieReceiptError("protected goal ledger is malformed")
462
+ if current.get("schema_version") == PROTECTED_LEDGER_SCHEMA_VERSION:
463
+ _validate_protected_ledger(
464
+ current,
465
+ authority,
466
+ anchor_store=anchor_store,
467
+ )
468
+ return {"changed": False, "backup_path": None, "source_sha256": ""}
469
+
470
+ legacy = _legacy_goal_for_protected_migration(current, authority)
471
+ head = load_elsie_store_anchor(
472
+ authority,
473
+ ReceiptNamespace.GOAL_STORE,
474
+ subject=_ledger_subject(),
475
+ anchor_store=anchor_store,
476
+ )
477
+ if head is None:
478
+ raise ElsieReceiptError("protected goal conflict is absent")
479
+
480
+ digest = hashlib.sha256(raw).hexdigest()
481
+ backup_path = (
482
+ CONFIG_DIR
483
+ / "recovery-backups"
484
+ / f"goal-ledger-conflict-{digest[:16]}"
485
+ / LEDGER_PATH.name
486
+ )
487
+ try:
488
+ backup = _state_descriptor_payload(backup_path, max_bytes=MAX_LEDGER_BYTES)
489
+ except FileNotFoundError:
490
+ _atomic_write_text(backup_path, raw.decode("utf-8", errors="strict"))
491
+ else:
492
+ if backup != raw:
493
+ raise ElsieReceiptError("protected goal recovery backup is inconsistent")
494
+
495
+ try:
496
+ pinned = _state_descriptor_payload(LEDGER_PATH, max_bytes=MAX_LEDGER_BYTES)
497
+ except OSError as exc:
498
+ raise ElsieReceiptError("protected goal ledger changed during repair") from exc
499
+ if not hmac.compare_digest(pinned, raw):
500
+ raise ElsieReceiptError("protected goal ledger changed during repair")
501
+
502
+ previous = "hmac-sha256:" + head.head_digest
503
+ payload = _protected_ledger_payload(
504
+ _protected_goal_payload(legacy, authority),
505
+ authority,
506
+ sequence=head.sequence + 1,
507
+ previous_store_receipt=previous,
508
+ )
509
+ _publish_protected_goal_payload_unlocked(
510
+ payload,
511
+ authority,
512
+ anchor_store=anchor_store,
513
+ )
514
+ return {
515
+ "changed": True,
516
+ "backup_path": backup_path,
517
+ "source_sha256": digest,
518
+ }
519
+
520
+
432
521
  def _publish_protected_goal_payload_unlocked(
433
522
  payload: dict[str, Any],
434
523
  authority: ElsieReceiptAuthority,
@@ -522,7 +611,7 @@ def save_goal(
522
611
  )
523
612
  is not None
524
613
  ):
525
- raise ElsieReceiptError("legacy goal ledger conflicts with protected anchor")
614
+ raise ElsieReceiptError(GOAL_STORE_CONFLICT_REASON)
526
615
  else:
527
616
  raise ElsieReceiptError("unsupported protected goal ledger schema")
528
617
  else:
@@ -709,7 +798,7 @@ def load_goal(
709
798
  LEGACY_PROTECTED_LEDGER_SCHEMA_VERSION,
710
799
  PROTECTED_LEDGER_SCHEMA_VERSION,
711
800
  }:
712
- # Protected records are safe to inspect structurally even after Echo is
801
+ # Protected records are safe to inspect structurally after Continuum is
713
802
  # disabled, but their content receipts are deliberately not reversed.
714
803
  if goal_data is None:
715
804
  return None
@@ -13,7 +13,7 @@ try:
13
13
  import tomllib # type: ignore[import-not-found]
14
14
  except ImportError: # Python 3.10: fall back to the tomli backport.
15
15
  try:
16
- import tomli as tomllib # type: ignore[no-redef]
16
+ import tomli as tomllib
17
17
  except ImportError: # pragma: no cover - tomli is a declared 3.10 dependency.
18
18
  tomllib = None # type: ignore[assignment]
19
19