loopx 0.4.9__tar.gz → 0.5.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 (961) hide show
  1. {loopx-0.4.9/loopx.egg-info → loopx-0.5.1}/PKG-INFO +52 -4
  2. {loopx-0.4.9 → loopx-0.5.1}/README.md +50 -2
  3. {loopx-0.4.9 → loopx-0.5.1}/loopx/__init__.py +1 -1
  4. {loopx-0.4.9 → loopx-0.5.1}/loopx/agent_onboarding.py +3 -1
  5. {loopx-0.4.9 → loopx-0.5.1}/loopx/bootstrap.py +21 -2
  6. {loopx-0.4.9 → loopx-0.5.1}/loopx/bootstrap_command_pack.py +1 -1
  7. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/benchmark_toolkit/README.md +90 -8
  8. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/benchmark_toolkit/__init__.py +40 -4
  9. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/benchmark_toolkit/catalog_entry.py +100 -4
  10. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/benchmark_toolkit/environment_access.py +62 -0
  11. loopx-0.5.1/loopx/capabilities/benchmark_toolkit/experiment_board.py +826 -0
  12. loopx-0.5.1/loopx/capabilities/benchmark_toolkit/source_revision_fence.py +154 -0
  13. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/catalog.py +18 -0
  14. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/repository_context.py +5 -2
  15. loopx-0.5.1/loopx/capabilities/repository_change_window/README.md +199 -0
  16. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/repository_change_window/__init__.py +6 -0
  17. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/repository_change_window/catalog_entry.py +10 -5
  18. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/repository_change_window/cli.py +68 -2
  19. loopx-0.5.1/loopx/capabilities/repository_change_window/git_hook.py +976 -0
  20. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/repository_change_window/ledger.py +240 -27
  21. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/repository_change_window/repository.py +82 -6
  22. loopx-0.5.1/loopx/chat.py +402 -0
  23. loopx-0.5.1/loopx/chat_acp.py +451 -0
  24. loopx-0.5.1/loopx/chat_action_store.py +535 -0
  25. loopx-0.5.1/loopx/chat_actions.py +1541 -0
  26. loopx-0.5.1/loopx/chat_agent.py +586 -0
  27. loopx-0.5.1/loopx/chat_attachments.py +74 -0
  28. loopx-0.5.1/loopx/chat_endpoints.py +265 -0
  29. loopx-0.5.1/loopx/chat_goal_lifecycle_actions.py +98 -0
  30. loopx-0.5.1/loopx/chat_lark_api.py +444 -0
  31. loopx-0.5.1/loopx/chat_monitor_actions.py +220 -0
  32. loopx-0.5.1/loopx/chat_providers.py +420 -0
  33. loopx-0.5.1/loopx/chat_runtime.py +992 -0
  34. loopx-0.5.1/loopx/chat_server.py +1477 -0
  35. loopx-0.5.1/loopx/chat_store.py +719 -0
  36. loopx-0.5.1/loopx/chat_todo_actions.py +82 -0
  37. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli.py +15 -0
  38. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/__init__.py +3 -0
  39. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/benchmark_boundary.py +65 -2
  40. loopx-0.5.1/loopx/cli_commands/benchmark_dispatch.py +109 -0
  41. loopx-0.5.1/loopx/cli_commands/benchmark_experiment_board.py +150 -0
  42. loopx-0.5.1/loopx/cli_commands/capability.py +288 -0
  43. loopx-0.5.1/loopx/cli_commands/dash.py +282 -0
  44. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/goal_channel.py +154 -0
  45. loopx-0.5.1/loopx/cli_commands/goal_lifecycle.py +72 -0
  46. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/lark_inbox.py +22 -5
  47. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/quota.py +26 -63
  48. loopx-0.5.1/loopx/cli_commands/quota_host_poll.py +67 -0
  49. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/registry_admin.py +11 -0
  50. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/registry_admin_configure.py +7 -0
  51. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/support_control.py +230 -76
  52. loopx-0.5.1/loopx/cli_commands/support_control_backup.py +107 -0
  53. loopx-0.5.1/loopx/cli_commands/support_control_chat_endpoint.py +94 -0
  54. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/todo.py +28 -13
  55. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/todo_argument_validation.py +12 -10
  56. {loopx-0.4.9 → loopx-0.5.1}/loopx/configure_goal.py +55 -4
  57. {loopx-0.4.9 → loopx-0.5.1}/loopx/contract.py +39 -24
  58. loopx-0.5.1/loopx/control_plane/goals/activation.py +66 -0
  59. loopx-0.5.1/loopx/control_plane/goals/activation_service.py +372 -0
  60. loopx-0.5.1/loopx/control_plane/goals/botmux_runtime.py +1475 -0
  61. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/goals/goal_frontier/__init__.py +30 -11
  62. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/goal_boundary.py +11 -1
  63. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/heartbeat_receipt.py +11 -0
  64. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/live_decision.py +2 -0
  65. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/settlement.py +2 -1
  66. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/settlement_cli.py +5 -2
  67. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/should_run.py +31 -10
  68. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/should_run_packet.py +23 -4
  69. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/should_run_prepare.py +30 -1
  70. loopx-0.5.1/loopx/control_plane/quota/states.py +53 -0
  71. loopx-0.5.1/loopx/control_plane/quota/usage_collector.py +83 -0
  72. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/usage_summary.py +83 -1
  73. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/public_safety.py +97 -5
  74. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/run_history.py +2 -0
  75. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/time.py +1 -1
  76. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/scheduler/automation_liveness.py +14 -0
  77. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/scheduler/scheduler_hint.py +27 -8
  78. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/scheduler/state_transition_rules.py +4 -1
  79. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/status/collection.py +30 -1
  80. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/testing/cli_output_budget.py +37 -1
  81. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/testing/cli_output_differential.py +17 -1
  82. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/list_projection.py +75 -10
  83. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/monitor_metadata.py +15 -12
  84. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/succession_warning.py +1 -0
  85. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/attention_queue.py +5 -0
  86. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/autonomous_replan_ack.py +19 -0
  87. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/autonomous_replan_obligation.py +79 -7
  88. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/interaction_contract.py +8 -1
  89. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/primary_action.py +10 -0
  90. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/progress_observation.py +6 -1
  91. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/semantic_replan_writeback.py +65 -10
  92. loopx-0.5.1/loopx/dash_server.py +215 -0
  93. loopx-0.5.1/loopx/dashboard_launcher.py +136 -0
  94. loopx-0.5.1/loopx/dsh_goal_mode/README.md +65 -0
  95. loopx-0.5.1/loopx/dsh_goal_mode/__init__.py +55 -0
  96. loopx-0.5.1/loopx/dsh_goal_mode/__main__.py +8 -0
  97. loopx-0.5.1/loopx/dsh_goal_mode/turn_host_adapter.py +465 -0
  98. {loopx-0.4.9 → loopx-0.5.1}/loopx/event_sourced_state.py +1 -0
  99. loopx-0.5.1/loopx/extensions/capability_admission.py +613 -0
  100. loopx-0.5.1/loopx/extensions/lark/app_setup.py +185 -0
  101. loopx-0.5.1/loopx/extensions/lark/cli_resolution.py +286 -0
  102. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/docs/lark-event-inbox.md +6 -5
  103. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/event_collector.py +2 -1
  104. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/event_collector_runtime.py +89 -3
  105. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/event_inbox.py +26 -0
  106. loopx-0.5.1/loopx/extensions/lark/goal_channel_notification.py +176 -0
  107. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/goal_channel_transport.py +58 -4
  108. loopx-0.5.1/loopx/extensions/lark/goal_topic_connections.py +1086 -0
  109. loopx-0.5.1/loopx/extensions/lark/goal_topic_runtime.py +838 -0
  110. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/inbox_reply.py +36 -6
  111. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/manifest.py +172 -3
  112. {loopx-0.4.9 → loopx-0.5.1}/loopx/help_surface.py +14 -0
  113. {loopx-0.4.9 → loopx-0.5.1}/loopx/history.py +32 -3
  114. {loopx-0.4.9 → loopx-0.5.1}/loopx/host_loop_activation.py +8 -4
  115. {loopx-0.4.9 → loopx-0.5.1}/loopx/kunluncode_goal_mode/README.md +2 -2
  116. {loopx-0.4.9 → loopx-0.5.1}/loopx/kunluncode_goal_mode/cli.py +3 -3
  117. {loopx-0.4.9 → loopx-0.5.1}/loopx/pi_goal_mode/README.md +13 -5
  118. {loopx-0.4.9 → loopx-0.5.1}/loopx/pi_goal_mode/loopx-goal.ts +17 -2
  119. {loopx-0.4.9 → loopx-0.5.1}/loopx/pi_goal_mode/pi-goal-loop-runtime.mjs +36 -1
  120. loopx-0.5.1/loopx/presentation/projections/__init__.py +11 -0
  121. loopx-0.5.1/loopx/presentation/projections/session_dash.py +360 -0
  122. {loopx-0.4.9 → loopx-0.5.1}/loopx/presentation/public_safety.py +31 -0
  123. loopx-0.5.1/loopx/presentation/renderers/session_dash_html.py +405 -0
  124. {loopx-0.4.9 → loopx-0.5.1}/loopx/presentation/static_site.py +5 -14
  125. {loopx-0.4.9 → loopx-0.5.1}/loopx/quota.py +32 -5
  126. {loopx-0.4.9 → loopx-0.5.1}/loopx/state_refresh.py +62 -24
  127. {loopx-0.4.9 → loopx-0.5.1}/loopx/status.py +6 -0
  128. {loopx-0.4.9 → loopx-0.5.1}/loopx/status_server.py +1 -0
  129. {loopx-0.4.9 → loopx-0.5.1}/loopx/todos.py +47 -11
  130. loopx-0.5.1/loopx/web/chat/assets/index-Cx2exrQv.css +1 -0
  131. loopx-0.5.1/loopx/web/chat/assets/index-DlTni1Yi.js +107 -0
  132. loopx-0.5.1/loopx/web/chat/index.html +27 -0
  133. loopx-0.5.1/loopx/web/chat/manifest.webmanifest +22 -0
  134. loopx-0.5.1/loopx/web/chat/pwa/icon-192.png +0 -0
  135. loopx-0.5.1/loopx/web/chat/pwa/icon-512.png +0 -0
  136. {loopx-0.4.9 → loopx-0.5.1/loopx.egg-info}/PKG-INFO +52 -4
  137. {loopx-0.4.9 → loopx-0.5.1}/loopx.egg-info/SOURCES.txt +55 -0
  138. {loopx-0.4.9 → loopx-0.5.1}/loopx.egg-info/requires.txt +1 -1
  139. {loopx-0.4.9 → loopx-0.5.1}/pyproject.toml +4 -2
  140. {loopx-0.4.9 → loopx-0.5.1}/skills/loopx-self-repair/references/repair-patterns.md +6 -1
  141. loopx-0.5.1/tests/test_chat_image_attachments.py +72 -0
  142. loopx-0.5.1/tests/test_chat_lark_api_contract.py +500 -0
  143. loopx-0.5.1/tests/test_chat_server_cors.py +103 -0
  144. {loopx-0.4.9 → loopx-0.5.1}/tests/test_cli_argument_diagnostics.py +4 -2
  145. loopx-0.5.1/tests/test_dashboard_command.py +481 -0
  146. loopx-0.5.1/tests/test_dsh_goal_mode.py +239 -0
  147. loopx-0.5.1/tests/test_history_chronology.py +148 -0
  148. {loopx-0.4.9 → loopx-0.5.1}/tests/test_host_loop_activation.py +2 -0
  149. {loopx-0.4.9 → loopx-0.5.1}/tests/test_license_metadata.py +2 -2
  150. {loopx-0.4.9 → loopx-0.5.1}/tests/test_pi_goal_mode.py +12 -0
  151. {loopx-0.4.9 → loopx-0.5.1}/tests/test_slash_command_install.py +2 -0
  152. {loopx-0.4.9 → loopx-0.5.1}/tests/test_state_file_containment.py +17 -0
  153. {loopx-0.4.9 → loopx-0.5.1}/tests/test_status_server_cors.py +48 -0
  154. loopx-0.5.1/tests/test_status_server_fast_path.py +69 -0
  155. {loopx-0.4.9 → loopx-0.5.1}/tests/test_worker_command_validation.py +17 -0
  156. loopx-0.4.9/loopx/capabilities/repository_change_window/README.md +0 -133
  157. loopx-0.4.9/loopx/capabilities/repository_change_window/git_hook.py +0 -458
  158. loopx-0.4.9/loopx/cli_commands/benchmark_dispatch.py +0 -43
  159. loopx-0.4.9/loopx/cli_commands/capability.py +0 -96
  160. loopx-0.4.9/loopx/control_plane/quota/states.py +0 -29
  161. {loopx-0.4.9 → loopx-0.5.1}/LICENSE +0 -0
  162. {loopx-0.4.9 → loopx-0.5.1}/LICENSE-MIT +0 -0
  163. {loopx-0.4.9 → loopx-0.5.1}/NOTICE +0 -0
  164. {loopx-0.4.9 → loopx-0.5.1}/loopx/agent_registry.py +0 -0
  165. {loopx-0.4.9 → loopx-0.5.1}/loopx/ark_managed_agent_host.py +0 -0
  166. {loopx-0.4.9 → loopx-0.5.1}/loopx/authority.py +0 -0
  167. {loopx-0.4.9 → loopx-0.5.1}/loopx/boundary_authority.py +0 -0
  168. {loopx-0.4.9 → loopx-0.5.1}/loopx/canary/__init__.py +0 -0
  169. {loopx-0.4.9 → loopx-0.5.1}/loopx/canary/maintainability_ratchet.py +0 -0
  170. {loopx-0.4.9 → loopx-0.5.1}/loopx/canary/planner.py +0 -0
  171. {loopx-0.4.9 → loopx-0.5.1}/loopx/canary/premerge.py +0 -0
  172. {loopx-0.4.9 → loopx-0.5.1}/loopx/canary/qualification_profiles.py +0 -0
  173. {loopx-0.4.9 → loopx-0.5.1}/loopx/canary/quality_surface_catalog.py +0 -0
  174. {loopx-0.4.9 → loopx-0.5.1}/loopx/canary/release_profiles.py +0 -0
  175. {loopx-0.4.9 → loopx-0.5.1}/loopx/canary/runner.py +0 -0
  176. {loopx-0.4.9 → loopx-0.5.1}/loopx/canary/smoke_health.py +0 -0
  177. {loopx-0.4.9 → loopx-0.5.1}/loopx/canary/smoke_profiles.py +0 -0
  178. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/README.md +0 -0
  179. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/__init__.py +0 -0
  180. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/agent_turn_recall/README.md +0 -0
  181. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/agent_turn_recall/__init__.py +0 -0
  182. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/agent_turn_recall/catalog_entry.py +0 -0
  183. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/agent_turn_recall/cli.py +0 -0
  184. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/agent_turn_recall/core.py +0 -0
  185. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/README.md +0 -0
  186. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/__init__.py +0 -0
  187. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/bootstrap_contract.py +0 -0
  188. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/catalog_entry.py +0 -0
  189. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/cli.py +0 -0
  190. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/core.py +0 -0
  191. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/defaults.py +0 -0
  192. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/demo_e2e.py +0 -0
  193. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/demo_supervisor.py +0 -0
  194. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/evidence_packet.py +0 -0
  195. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/human_view.py +0 -0
  196. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/kernel.py +0 -0
  197. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/knn_demo_workspace.py +0 -0
  198. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/live_evidence.py +0 -0
  199. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/preset.py +0 -0
  200. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/research_state.py +0 -0
  201. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/role_profiles.py +0 -0
  202. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/rollout_append.py +0 -0
  203. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/terminal_result_contract.py +0 -0
  204. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/terminal_result_projection.py +0 -0
  205. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/terminal_result_query.py +0 -0
  206. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/terminal_results.py +0 -0
  207. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/user_contract.py +0 -0
  208. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/worker_loop.py +0 -0
  209. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/worker_runtime.py +0 -0
  210. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/auto_research/worker_skill/SKILL.md +0 -0
  211. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/benchmark_toolkit/artifacts.py +0 -0
  212. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/benchmark_toolkit/container_binding.py +0 -0
  213. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/benchmark_toolkit/integrity.py +0 -0
  214. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/benchmark_toolkit/native_codex_goal.py +0 -0
  215. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/benchmark_toolkit/native_codex_isolation.py +0 -0
  216. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/benchmark_toolkit/native_codex_profile.py +0 -0
  217. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/benchmark_toolkit/public_trajectory.py +0 -0
  218. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/benchmark_toolkit/run_permissions.py +0 -0
  219. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/change_quality/README.md +0 -0
  220. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/change_quality/__init__.py +0 -0
  221. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/change_quality/catalog_entry.py +0 -0
  222. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/change_quality/cli.py +0 -0
  223. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/change_quality/context.py +0 -0
  224. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/change_quality/oracles.py +0 -0
  225. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/change_quality/policy.py +0 -0
  226. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/change_quality/receipt.py +0 -0
  227. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/change_quality/result.py +0 -0
  228. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/change_quality/scope.py +0 -0
  229. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/change_quality/shadow.py +0 -0
  230. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/content_ops/README.md +0 -0
  231. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/content_ops/__init__.py +0 -0
  232. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/content_ops/catalog_entry.py +0 -0
  233. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/content_ops/cli.py +0 -0
  234. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/content_ops/connector_packets.py +0 -0
  235. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/content_ops/item_lifecycle.py +0 -0
  236. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/content_ops/layout.py +0 -0
  237. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/content_ops/markdown.py +0 -0
  238. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/content_ops/schemas.py +0 -0
  239. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/content_ops/social_browser_x.py +0 -0
  240. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/content_ops/surface.py +0 -0
  241. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/content_ops/templates/layout-catalog-v0.json +0 -0
  242. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/context_providers/__init__.py +0 -0
  243. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/context_providers/base.py +0 -0
  244. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/context_providers/factory.py +0 -0
  245. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/context_providers/openviking.py +0 -0
  246. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/context_providers/service_ownership.py +0 -0
  247. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/decision_context/README.md +0 -0
  248. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/decision_context/README.zh-CN.md +0 -0
  249. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/decision_context/__init__.py +0 -0
  250. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/decision_context/architecture.py +0 -0
  251. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/decision_context/assembler.py +0 -0
  252. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/decision_context/catalog_entry.py +0 -0
  253. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/decision_context/cli.py +0 -0
  254. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/decision_context/cursor_commit.py +0 -0
  255. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/decision_context/outcome_feedback.py +0 -0
  256. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/decision_context/packets.py +0 -0
  257. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/decision_context/private_state.py +0 -0
  258. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/decision_context/profile.py +0 -0
  259. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/decision_context/providers.py +0 -0
  260. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/decision_context/review_settlement.py +0 -0
  261. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/decision_context/runtime.py +0 -0
  262. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/decision_context/sources.py +0 -0
  263. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/documentation.py +0 -0
  264. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/explore/README.md +0 -0
  265. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/explore/README.zh-CN.md +0 -0
  266. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/explore/__init__.py +0 -0
  267. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/explore/activation.py +0 -0
  268. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/explore/adaptive_replay_planner.py +0 -0
  269. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/explore/catalog_entry.py +0 -0
  270. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/explore/child_replay_runtime.py +0 -0
  271. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/explore/composition_frontier.py +0 -0
  272. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/explore/counterfactual_runtime.py +0 -0
  273. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/explore/episode_runtime.py +0 -0
  274. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/explore/harness_checkpoint.py +0 -0
  275. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/explore/harness_gate.py +0 -0
  276. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/explore/harness_runtime.py +0 -0
  277. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/explore/replay_metrics.py +0 -0
  278. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/explore/replay_runtime.py +0 -0
  279. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/explore/resource_portfolio.py +0 -0
  280. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/explore/result_log.py +0 -0
  281. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/explore/router_state.py +0 -0
  282. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/explore/source_history_reconcile.py +0 -0
  283. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/explore/speculative_scheduler.py +0 -0
  284. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/explore/todo_branch_plan.py +0 -0
  285. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/explore/todo_evidence.py +0 -0
  286. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/explore/trace_runtime.py +0 -0
  287. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/explore/worker_branch_plan.py +0 -0
  288. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/integration_branch/README.md +0 -0
  289. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/integration_branch/__init__.py +0 -0
  290. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/integration_branch/catalog_entry.py +0 -0
  291. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/integration_branch/cli.py +0 -0
  292. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/integration_branch/core.py +0 -0
  293. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/README.md +0 -0
  294. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/README.zh-CN.md +0 -0
  295. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/__init__.py +0 -0
  296. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/acceptance_loop.py +0 -0
  297. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/candidate_evidence.py +0 -0
  298. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/candidate_preflight.py +0 -0
  299. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/catalog_entry.py +0 -0
  300. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/cli.py +0 -0
  301. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/cli_input.py +0 -0
  302. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/content_ops_cli.py +0 -0
  303. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/discovered_issue_promotion.py +0 -0
  304. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/docs/openviking-pilot-handoff.md +0 -0
  305. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/docs/protocols/issue-fix-acceptance-loop-v0.md +0 -0
  306. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/docs/protocols/issue-fix-discovered-issue-promotion-v0.md +0 -0
  307. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/docs/protocols/issue-fix-metrics-projection-v0.md +0 -0
  308. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/docs/protocols/issue-fix-reviewer-notification-sinks-v0.md +0 -0
  309. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/docs/protocols/issue-fix-reviewer-recommendation-v0.md +0 -0
  310. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/docs/protocols/issue-fix-reviewer-request-v0.md +0 -0
  311. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/docs/protocols/issue-fix-workflow-contract-v0.md +0 -0
  312. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/docs/state-kernel-domain-state-case-study.zh-CN.md +0 -0
  313. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/explore_projection.py +0 -0
  314. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/feasibility.py +0 -0
  315. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/github_public.py +0 -0
  316. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/intake_surface.py +0 -0
  317. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/metadata_preview.py +0 -0
  318. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/metrics_projection.py +0 -0
  319. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/metrics_supplement.py +0 -0
  320. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/metrics_supplement_cli.py +0 -0
  321. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/outcome_projection.py +0 -0
  322. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/periodic_report.py +0 -0
  323. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/pr_description.py +0 -0
  324. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/pr_gate_reconcile.py +0 -0
  325. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/pr_gate_reconcile_cli.py +0 -0
  326. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/pr_lifecycle.py +0 -0
  327. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/pr_lifecycle_rollout.py +0 -0
  328. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/pr_monitor_materialization.py +0 -0
  329. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/pr_review_ack.py +0 -0
  330. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/provider_hooks.py +0 -0
  331. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/repository_commit_evidence.py +0 -0
  332. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/repository_memory.py +0 -0
  333. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/repository_memory_provider.py +0 -0
  334. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/repository_snapshot.py +0 -0
  335. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/reviewer_cli.py +0 -0
  336. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/reviewer_notification.py +0 -0
  337. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/reviewer_notification_drain.py +0 -0
  338. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/reviewer_recommendation.py +0 -0
  339. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/reviewer_request.py +0 -0
  340. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/reward_memory.py +0 -0
  341. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/issue_fix/workflow_plan.py +0 -0
  342. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/material_lifecycle/README.md +0 -0
  343. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/material_lifecycle/README.zh-CN.md +0 -0
  344. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/material_lifecycle/__init__.py +0 -0
  345. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/material_lifecycle/_validation.py +0 -0
  346. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/material_lifecycle/apply.py +0 -0
  347. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/material_lifecycle/architecture.py +0 -0
  348. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/material_lifecycle/catalog_entry.py +0 -0
  349. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/material_lifecycle/cli.py +0 -0
  350. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/material_lifecycle/decision_planning.py +0 -0
  351. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/material_lifecycle/explore_execution.py +0 -0
  352. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/material_lifecycle/intake.py +0 -0
  353. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/material_lifecycle/inventory.py +0 -0
  354. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/material_lifecycle/lifecycle.py +0 -0
  355. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/material_lifecycle/preparation.py +0 -0
  356. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/material_lifecycle/project_skill.py +0 -0
  357. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/material_lifecycle/ranking.py +0 -0
  358. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/material_lifecycle/readable_projection.py +0 -0
  359. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/material_lifecycle/rebuild.py +0 -0
  360. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/material_lifecycle/settlement.py +0 -0
  361. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/periodic_report/README.md +0 -0
  362. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/periodic_report/__init__.py +0 -0
  363. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/periodic_report/adapters.py +0 -0
  364. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/periodic_report/archive.py +0 -0
  365. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/periodic_report/bindings.py +0 -0
  366. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/periodic_report/catalog_entry.py +0 -0
  367. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/periodic_report/cli.py +0 -0
  368. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/periodic_report/core.py +0 -0
  369. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/periodic_report/extension_envelope.py +0 -0
  370. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/periodic_report/presets.py +0 -0
  371. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/periodic_report/profile.py +0 -0
  372. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/periodic_report/project_progress.py +0 -0
  373. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/periodic_report/triggers.py +0 -0
  374. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/pr_review_queue/README.md +0 -0
  375. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/pr_review_queue/__init__.py +0 -0
  376. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/pr_review_queue/catalog_entry.py +0 -0
  377. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/pr_review_queue/core.py +0 -0
  378. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/pr_review_queue/review_contract.py +0 -0
  379. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/project_skill_delivery/README.md +0 -0
  380. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/project_skill_delivery/__init__.py +0 -0
  381. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/project_skill_delivery/catalog_entry.py +0 -0
  382. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/project_skill_delivery/cli.py +0 -0
  383. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/project_skill_delivery/core.py +0 -0
  384. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/registry.py +0 -0
  385. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/repository_change_window/policy.py +0 -0
  386. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/reward_memory/README.md +0 -0
  387. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/reward_memory/README.zh-CN.md +0 -0
  388. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/reward_memory/__init__.py +0 -0
  389. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/reward_memory/application.py +0 -0
  390. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/reward_memory/architecture.py +0 -0
  391. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/reward_memory/candidate_review.py +0 -0
  392. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/reward_memory/catalog_entry.py +0 -0
  393. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/reward_memory/cli.py +0 -0
  394. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/reward_memory/dogfood.py +0 -0
  395. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/reward_memory/evaluation.py +0 -0
  396. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/reward_memory/evaluation_fixtures.py +0 -0
  397. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/reward_memory/experiment.py +0 -0
  398. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/reward_memory/health.py +0 -0
  399. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/reward_memory/ingestion.py +0 -0
  400. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/reward_memory/memory_utility.py +0 -0
  401. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/reward_memory/registry.py +0 -0
  402. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/reward_memory/runtime_hooks.py +0 -0
  403. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/reward_memory/scoped_feedback.py +0 -0
  404. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/semantic_preference/README.md +0 -0
  405. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/semantic_preference/__init__.py +0 -0
  406. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/semantic_preference/catalog_entry.py +0 -0
  407. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/semantic_preference/cli.py +0 -0
  408. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/semantic_preference/contract.py +0 -0
  409. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/semantic_preference/docs/openviking-project-peer.md +0 -0
  410. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/semantic_preference/reward_memory.py +0 -0
  411. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/value_connectors/README.md +0 -0
  412. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/value_connectors/__init__.py +0 -0
  413. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/value_connectors/catalog_entry.py +0 -0
  414. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/value_connectors/cli.py +0 -0
  415. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/value_connectors/docs/agent-reach-ops-source-map.md +0 -0
  416. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/value_connectors/docs/finance-market-snapshot-probe.md +0 -0
  417. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/value_connectors/finance_extension_migration.py +0 -0
  418. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/value_connectors/install_check.py +0 -0
  419. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/value_connectors/planner.py +0 -0
  420. {loopx-0.4.9 → loopx-0.5.1}/loopx/capabilities/value_connectors/source_map.py +0 -0
  421. {loopx-0.4.9 → loopx-0.5.1}/loopx/claude_goal_mode/README.md +0 -0
  422. {loopx-0.4.9 → loopx-0.5.1}/loopx/claude_goal_mode/__init__.py +0 -0
  423. {loopx-0.4.9 → loopx-0.5.1}/loopx/claude_goal_mode/hooks/goal_policy.py +0 -0
  424. {loopx-0.4.9 → loopx-0.5.1}/loopx/claude_goal_mode/hooks/goal_state.py +0 -0
  425. {loopx-0.4.9 → loopx-0.5.1}/loopx/claude_goal_mode/mcp/loopx_mcp.py +0 -0
  426. {loopx-0.4.9 → loopx-0.5.1}/loopx/claude_goal_mode/scripts/connect.py +0 -0
  427. {loopx-0.4.9 → loopx-0.5.1}/loopx/claude_goal_mode/scripts/goalmode_cmd.py +0 -0
  428. {loopx-0.4.9 → loopx-0.5.1}/loopx/claude_goal_mode/scripts/install.py +0 -0
  429. {loopx-0.4.9 → loopx-0.5.1}/loopx/claude_goal_mode/statusline/goal_status.py +0 -0
  430. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/_host_thread.py +0 -0
  431. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/bootstrap_connect.py +0 -0
  432. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/canary.py +0 -0
  433. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/canary_release_qualification.py +0 -0
  434. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/doctor.py +0 -0
  435. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/dreaming.py +0 -0
  436. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/evidence_log.py +0 -0
  437. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/explore.py +0 -0
  438. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/explore_feishu_commands.py +0 -0
  439. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/explore_planning_commands.py +0 -0
  440. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/extension.py +0 -0
  441. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/first_run_report.py +0 -0
  442. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/handoff_mode.py +0 -0
  443. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/history.py +0 -0
  444. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/host_mode_plan.py +0 -0
  445. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/lark_kanban.py +0 -0
  446. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/ml_experiment.py +0 -0
  447. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/multi_agent.py +0 -0
  448. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/opencode2_goal_worker.py +0 -0
  449. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/pr_review.py +0 -0
  450. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/presentation.py +0 -0
  451. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/preset.py +0 -0
  452. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/project.py +0 -0
  453. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/project_lifecycle.py +0 -0
  454. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/quota_monitor_poll.py +0 -0
  455. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/quota_registration.py +0 -0
  456. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/quota_request.py +0 -0
  457. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/ready_score.py +0 -0
  458. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/registry_admin_peer.py +0 -0
  459. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/registry_authority.py +0 -0
  460. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/review_batch.py +0 -0
  461. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/slash_commands.py +0 -0
  462. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/start_goal.py +0 -0
  463. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/starter.py +0 -0
  464. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/starter_bootstrap.py +0 -0
  465. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/starter_bootstrap_registration.py +0 -0
  466. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/starter_runtime_idle.py +0 -0
  467. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/starter_scheduler.py +0 -0
  468. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/starter_session_runtime.py +0 -0
  469. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/starter_visible_common.py +0 -0
  470. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/starter_visible_driver.py +0 -0
  471. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/starter_visible_pilot.py +0 -0
  472. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/status.py +0 -0
  473. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/status_registration.py +0 -0
  474. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/summary_all.py +0 -0
  475. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/support_control_registry.py +0 -0
  476. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/support_control_supervisor.py +0 -0
  477. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/task_lease.py +0 -0
  478. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/todo_event.py +0 -0
  479. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/turn.py +0 -0
  480. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/version.py +0 -0
  481. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/worker_bridge.py +0 -0
  482. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_commands/workflow_skills.py +0 -0
  483. {loopx-0.4.9 → loopx-0.5.1}/loopx/cli_rollout.py +0 -0
  484. {loopx-0.4.9 → loopx-0.5.1}/loopx/codex_cli_probe.py +0 -0
  485. {loopx-0.4.9 → loopx-0.5.1}/loopx/codex_cli_probe_markdown.py +0 -0
  486. {loopx-0.4.9 → loopx-0.5.1}/loopx/codex_cli_runtime_probe.py +0 -0
  487. {loopx-0.4.9 → loopx-0.5.1}/loopx/codex_cli_scheduler.py +0 -0
  488. {loopx-0.4.9 → loopx-0.5.1}/loopx/command_invocation.py +0 -0
  489. {loopx-0.4.9 → loopx-0.5.1}/loopx/configuration_catalog.py +0 -0
  490. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/__init__.py +0 -0
  491. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/__init__.py +0 -0
  492. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/agent_lane_recommendation.py +0 -0
  493. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/agent_scope.py +0 -0
  494. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/agent_scope_frontier.py +0 -0
  495. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/capability_gate.py +0 -0
  496. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/identity.py +0 -0
  497. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/legacy_migration.py +0 -0
  498. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/management_projection.py +0 -0
  499. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/material_frontier.py +0 -0
  500. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/material_handoff.py +0 -0
  501. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/multi_agent/__init__.py +0 -0
  502. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/multi_agent/codex_executable.py +0 -0
  503. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/multi_agent/collective_round_ledger.py +0 -0
  504. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/multi_agent/contract.py +0 -0
  505. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/multi_agent/recipe.py +0 -0
  506. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/multi_agent/role_successor.py +0 -0
  507. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/multi_agent/runtime_scripts.py +0 -0
  508. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/multi_agent/visible_launch_policy.py +0 -0
  509. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/multi_agent/visible_wake_scheduler.py +0 -0
  510. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/profile.py +0 -0
  511. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/runtime_model.py +0 -0
  512. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/subagent_activity.py +0 -0
  513. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/supervisor.py +0 -0
  514. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/supervisor_events.py +0 -0
  515. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/supervisor_inject.py +0 -0
  516. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/work_mode.py +0 -0
  517. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/agents/workspace_guard.py +0 -0
  518. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/effect_program.py +0 -0
  519. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/goals/__init__.py +0 -0
  520. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/goals/active_state_event_projection.py +0 -0
  521. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/goals/active_state_metadata.py +0 -0
  522. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/goals/active_state_sections.py +0 -0
  523. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/goals/configure_goal_service.py +0 -0
  524. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/goals/contract_health.py +0 -0
  525. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/goals/dreaming.py +0 -0
  526. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/goals/global_registry_health.py +0 -0
  527. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/goals/global_registry_shadow.py +0 -0
  528. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/goals/goal_channel.py +0 -0
  529. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/goals/goal_channel_projection.py +0 -0
  530. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/goals/goal_frontier/ack_policy.py +0 -0
  531. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/goals/goal_frontier/outcome_continuity.py +0 -0
  532. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/goals/goal_frontier/replan_rules.py +0 -0
  533. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/goals/goal_frontier/semantic_history.py +0 -0
  534. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/goals/goal_frontier/terminal.py +0 -0
  535. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/goals/goal_vision.py +0 -0
  536. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/goals/goal_vision_policy.py +0 -0
  537. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/goals/goal_vision_state.py +0 -0
  538. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/goals/goal_vision_wait.py +0 -0
  539. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/goals/path_resolution.py +0 -0
  540. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/goals/start_contract.py +0 -0
  541. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/goals/vision_checkpoint.py +0 -0
  542. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/handoff/__init__.py +0 -0
  543. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/handoff/cross_runtime_impl_review.py +0 -0
  544. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/handoff/delivery_contract.py +0 -0
  545. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/handoff/handoff_runs.py +0 -0
  546. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/handoff/project_handoff.py +0 -0
  547. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/handoff/review_batch.py +0 -0
  548. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/handoff/review_packet_context.py +0 -0
  549. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/heartbeat/agent.py +0 -0
  550. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/heartbeat/budget.py +0 -0
  551. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/heartbeat/builder.py +0 -0
  552. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/heartbeat/host.py +0 -0
  553. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/heartbeat/rules.py +0 -0
  554. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/heartbeat/task_body.py +0 -0
  555. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/heartbeat/visible_goal.py +0 -0
  556. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/projects/__init__.py +0 -0
  557. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/projects/contract.py +0 -0
  558. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/projects/registry.py +0 -0
  559. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/__init__.py +0 -0
  560. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/cli_projection.py +0 -0
  561. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/decision_summary.py +0 -0
  562. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/effect_program.py +0 -0
  563. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/error_codes.py +0 -0
  564. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/heartbeat_recommendation.py +0 -0
  565. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/host_poll_receipts.py +0 -0
  566. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/monitor_poll.py +0 -0
  567. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/policy_constants.py +0 -0
  568. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/projection_repair.py +0 -0
  569. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/recent_runs.py +0 -0
  570. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/scheduler_ack.py +0 -0
  571. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/selected_todo_projection.py +0 -0
  572. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/settlement_validation.py +0 -0
  573. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/settlement_workspace_causality.py +0 -0
  574. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/slot_accounting.py +0 -0
  575. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/spend_sources.py +0 -0
  576. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/stall_repair.py +0 -0
  577. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/task_orchestration.py +0 -0
  578. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/task_orchestration_admission.py +0 -0
  579. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/quota/turn_envelope.py +0 -0
  580. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/reward_memory.py +0 -0
  581. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/__init__.py +0 -0
  582. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/agent_scoped_evidence_log.py +0 -0
  583. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/decision_freshness.py +0 -0
  584. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/event_ledger.py +0 -0
  585. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/event_store_migration_bridge.py +0 -0
  586. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/goal_project_route.py +0 -0
  587. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/local_state_write_correctness.py +0 -0
  588. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/promotion_readiness.py +0 -0
  589. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/run_artifacts.py +0 -0
  590. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/run_compaction.py +0 -0
  591. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/run_context_retention.py +0 -0
  592. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/run_index_duplicates.py +0 -0
  593. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/run_index_rebuild.py +0 -0
  594. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/runtime_projection_route.py +0 -0
  595. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/runtime_projection_writer.py +0 -0
  596. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/session_runtime.py +0 -0
  597. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/shared_runtime_material_projection.py +0 -0
  598. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/shared_runtime_refresh_projection.py +0 -0
  599. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/stale_latest_run.py +0 -0
  600. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/status_classifications.py +0 -0
  601. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/status_projection_cache.py +0 -0
  602. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/stride_observation.py +0 -0
  603. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/trajectory_hygiene.py +0 -0
  604. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/runtime/validation_command.py +0 -0
  605. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/scheduler/__init__.py +0 -0
  606. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/scheduler/ack.py +0 -0
  607. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/scheduler/arbitration.py +0 -0
  608. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/scheduler/execution_context.py +0 -0
  609. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/scheduler/external_evidence_observation.py +0 -0
  610. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/scheduler/monitor_display.py +0 -0
  611. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/scheduler/monitor_poll_policy.py +0 -0
  612. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/scheduler/monitor_poll_writeback.py +0 -0
  613. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/scheduler/monitor_target.py +0 -0
  614. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/scheduler/monitor_todo.py +0 -0
  615. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/scheduler/monitor_wait.py +0 -0
  616. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/scheduler/state.py +0 -0
  617. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/scheduler/time.py +0 -0
  618. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/settlement_driver.py +0 -0
  619. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/status/__init__.py +0 -0
  620. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/status/active_state_projection.py +0 -0
  621. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/status/agent_lane_projection.py +0 -0
  622. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/status/attention_projection.py +0 -0
  623. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/status/autonomous_replan_projection.py +0 -0
  624. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/status/contract_projection.py +0 -0
  625. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/status/dreaming_projection.py +0 -0
  626. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/status/goal_attention_projection.py +0 -0
  627. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/status/lifecycle_projection.py +0 -0
  628. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/status/monitor_display_projection.py +0 -0
  629. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/status/registry_health_projection.py +0 -0
  630. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/status/run_projection.py +0 -0
  631. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/status/runtime_summaries.py +0 -0
  632. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/testing/__init__.py +0 -0
  633. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/testing/actual_default_model_behavior_portfolio.py +0 -0
  634. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/testing/canary_harness.py +0 -0
  635. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/testing/capability_monitor_repair_tool_behavior.py +0 -0
  636. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/testing/cli_output_semantics.py +0 -0
  637. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/testing/control_plane_composition_scenarios.py +0 -0
  638. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/testing/decision_replay.py +0 -0
  639. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/testing/doubao_model_behavior_actor.py +0 -0
  640. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/testing/model_behavior_corpus.py +0 -0
  641. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/testing/model_behavior_qualification.py +0 -0
  642. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/testing/model_behavior_retained_cases.py +0 -0
  643. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/testing/model_tool_behavior.py +0 -0
  644. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/testing/onboarding_model_behavior_qualification.py +0 -0
  645. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/testing/quota_fixtures.py +0 -0
  646. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/testing/quota_should_run_parity.py +0 -0
  647. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/testing/release_commit_qualification.py +0 -0
  648. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/testing/replan_semantic_action_behavior.py +0 -0
  649. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/testing/scoped_gate_successor_tool_behavior.py +0 -0
  650. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/testing/selected_todo_tool_behavior.py +0 -0
  651. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/testing/terminal_settlement_tool_behavior.py +0 -0
  652. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/__init__.py +0 -0
  653. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/active_state_editing.py +0 -0
  654. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/active_state_todo_parser.py +0 -0
  655. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/active_state_todos.py +0 -0
  656. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/addition.py +0 -0
  657. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/claim_visibility.py +0 -0
  658. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/completed_archive.py +0 -0
  659. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/completion_fence.py +0 -0
  660. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/completion_policy.py +0 -0
  661. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/completion_state.py +0 -0
  662. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/completion_validation.py +0 -0
  663. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/completion_validation_accountability.py +0 -0
  664. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/completion_validation_projection.py +0 -0
  665. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/contract.py +0 -0
  666. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/decision_scope.py +0 -0
  667. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/deferred_resume.py +0 -0
  668. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/durable_completion.py +0 -0
  669. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/event_writeback.py +0 -0
  670. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/frontier_deadline.py +0 -0
  671. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/handoff_gate.py +0 -0
  672. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/handoff_mode.py +0 -0
  673. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/handoff_note.py +0 -0
  674. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/line_update.py +0 -0
  675. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/markdown.py +0 -0
  676. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/mutation_authority.py +0 -0
  677. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/projection.py +0 -0
  678. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/quota_summary.py +0 -0
  679. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/route_continuation.py +0 -0
  680. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/summary_item.py +0 -0
  681. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/text.py +0 -0
  682. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/todo_index.py +0 -0
  683. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/todo_summary.py +0 -0
  684. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/unblock_resume.py +0 -0
  685. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/user_gate.py +0 -0
  686. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/write_hint.py +0 -0
  687. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/todos/write_policy.py +0 -0
  688. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/turn_driver/__init__.py +0 -0
  689. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/turn_driver/codex_cli.py +0 -0
  690. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/turn_driver/driver.py +0 -0
  691. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/turn_driver/executor.py +0 -0
  692. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/turn_driver/loop_controller.py +0 -0
  693. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/turn_driver/session_recovery.py +0 -0
  694. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/turn_driver/settlement.py +0 -0
  695. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/turn_driver/transaction.py +0 -0
  696. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/__init__.py +0 -0
  697. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/attention_fields.py +0 -0
  698. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/attention_item.py +0 -0
  699. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/attention_routing.py +0 -0
  700. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/autonomous_candidates.py +0 -0
  701. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/backlog_hygiene.py +0 -0
  702. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/capability_monitor_fallback.py +0 -0
  703. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/delivery_batch_scale.py +0 -0
  704. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/delivery_outcome.py +0 -0
  705. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/delivery_signals.py +0 -0
  706. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/execution_obligation.py +0 -0
  707. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/goal_route_hint.py +0 -0
  708. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/issue_meta_surface.py +0 -0
  709. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/lifecycle.py +0 -0
  710. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/operator_inbox.py +0 -0
  711. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/outcome_followthrough.py +0 -0
  712. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/project_asset.py +0 -0
  713. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/repair_delta.py +0 -0
  714. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/runtime_capability_reentry.py +0 -0
  715. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/status_contract.py +0 -0
  716. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/task_graph.py +0 -0
  717. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/task_lease.py +0 -0
  718. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/task_lease_settlement.py +0 -0
  719. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/work_lane.py +0 -0
  720. {loopx-0.4.9 → loopx-0.5.1}/loopx/control_plane/work_items/work_lane_context.py +0 -0
  721. {loopx-0.4.9 → loopx-0.5.1}/loopx/demo.py +0 -0
  722. {loopx-0.4.9 → loopx-0.5.1}/loopx/diagnose.py +0 -0
  723. {loopx-0.4.9 → loopx-0.5.1}/loopx/doctor.py +0 -0
  724. {loopx-0.4.9 → loopx-0.5.1}/loopx/domain_packs/__init__.py +0 -0
  725. {loopx-0.4.9 → loopx-0.5.1}/loopx/domain_packs/issue_fix.py +0 -0
  726. {loopx-0.4.9 → loopx-0.5.1}/loopx/domain_packs/ml_experiment.py +0 -0
  727. {loopx-0.4.9 → loopx-0.5.1}/loopx/domain_state.py +0 -0
  728. {loopx-0.4.9 → loopx-0.5.1}/loopx/dreaming.py +0 -0
  729. {loopx-0.4.9 → loopx-0.5.1}/loopx/entrypoint.py +0 -0
  730. {loopx-0.4.9 → loopx-0.5.1}/loopx/execution_profile.py +0 -0
  731. {loopx-0.4.9 → loopx-0.5.1}/loopx/experiments/README.md +0 -0
  732. {loopx-0.4.9 → loopx-0.5.1}/loopx/experiments/__init__.py +0 -0
  733. {loopx-0.4.9 → loopx-0.5.1}/loopx/experiments/planner_worker/__init__.py +0 -0
  734. {loopx-0.4.9 → loopx-0.5.1}/loopx/experiments/planner_worker/contract.py +0 -0
  735. {loopx-0.4.9 → loopx-0.5.1}/loopx/experiments/planner_worker/runtime.py +0 -0
  736. {loopx-0.4.9 → loopx-0.5.1}/loopx/experiments/planner_worker/traex.py +0 -0
  737. {loopx-0.4.9 → loopx-0.5.1}/loopx/explore_graph.py +0 -0
  738. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/__init__.py +0 -0
  739. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/bundled.py +0 -0
  740. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/execution_envelope.py +0 -0
  741. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/README.md +0 -0
  742. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/__init__.py +0 -0
  743. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/extension.toml +0 -0
  744. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/goal_channel.py +0 -0
  745. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/goal_channel_contracts.py +0 -0
  746. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/goal_channel_lifecycle.py +0 -0
  747. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/goal_channel_runtime.py +0 -0
  748. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/goal_channel_setup.py +0 -0
  749. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/goal_channel_targets.py +0 -0
  750. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/inbox_reactions.py +0 -0
  751. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/presentation/__init__.py +0 -0
  752. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/presentation/explore_results.py +0 -0
  753. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/presentation/explore_singleflight.py +0 -0
  754. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/presentation/explore_source_guard.py +0 -0
  755. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/presentation/explore_stage_document.py +0 -0
  756. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/presentation/explore_visual_integrity.py +0 -0
  757. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/presentation/explore_visual_readback.py +0 -0
  758. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/presentation/explore_visual_styles.py +0 -0
  759. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/presentation/issue_fix_surface.py +0 -0
  760. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/presentation/kanban.py +0 -0
  761. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/presentation/message_card.py +0 -0
  762. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/presentation/periodic_report.py +0 -0
  763. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/presentation/projection_rows.py +0 -0
  764. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/presentation/record_io.py +0 -0
  765. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/presentation/sync_receipt.py +0 -0
  766. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/private_json.py +0 -0
  767. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/provider.py +0 -0
  768. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/lark/reviewer_notification.py +0 -0
  769. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/openviking_periodic_report/__init__.py +0 -0
  770. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/openviking_periodic_report/activation.py +0 -0
  771. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/openviking_periodic_report/extension.toml +0 -0
  772. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/openviking_periodic_report/provider.py +0 -0
  773. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/openviking_periodic_report/sink.py +0 -0
  774. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/openviking_semantic_preference/__init__.py +0 -0
  775. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/openviking_semantic_preference/extension.toml +0 -0
  776. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/openviking_semantic_preference/history_export.py +0 -0
  777. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/openviking_semantic_preference/project_peer.py +0 -0
  778. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/openviking_semantic_preference/provider.py +0 -0
  779. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/presentation.py +0 -0
  780. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/process_runtime.py +0 -0
  781. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/readiness.py +0 -0
  782. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/runtime.py +0 -0
  783. {loopx-0.4.9 → loopx-0.5.1}/loopx/extensions/scaffold.py +0 -0
  784. {loopx-0.4.9 → loopx-0.5.1}/loopx/feedback.py +0 -0
  785. {loopx-0.4.9 → loopx-0.5.1}/loopx/file_lock.py +0 -0
  786. {loopx-0.4.9 → loopx-0.5.1}/loopx/global_registry.py +0 -0
  787. {loopx-0.4.9 → loopx-0.5.1}/loopx/global_risks.py +0 -0
  788. {loopx-0.4.9 → loopx-0.5.1}/loopx/global_todos.py +0 -0
  789. {loopx-0.4.9 → loopx-0.5.1}/loopx/goal_mode_context.py +0 -0
  790. {loopx-0.4.9 → loopx-0.5.1}/loopx/goal_mode_mcp.py +0 -0
  791. {loopx-0.4.9 → loopx-0.5.1}/loopx/handoff_budget.py +0 -0
  792. {loopx-0.4.9 → loopx-0.5.1}/loopx/heartbeat_prequota.py +0 -0
  793. {loopx-0.4.9 → loopx-0.5.1}/loopx/heartbeat_prompt.py +0 -0
  794. {loopx-0.4.9 → loopx-0.5.1}/loopx/host_mode_planner.py +0 -0
  795. {loopx-0.4.9 → loopx-0.5.1}/loopx/install_contract.py +0 -0
  796. {loopx-0.4.9 → loopx-0.5.1}/loopx/interface_budget.py +0 -0
  797. {loopx-0.4.9 → loopx-0.5.1}/loopx/kunluncode_goal_mode/__init__.py +0 -0
  798. {loopx-0.4.9 → loopx-0.5.1}/loopx/kunluncode_goal_mode/app_server.py +0 -0
  799. {loopx-0.4.9 → loopx-0.5.1}/loopx/kunluncode_goal_mode/context.py +0 -0
  800. {loopx-0.4.9 → loopx-0.5.1}/loopx/kunluncode_goal_mode/control_plane.py +0 -0
  801. {loopx-0.4.9 → loopx-0.5.1}/loopx/kunluncode_goal_mode/guards.py +0 -0
  802. {loopx-0.4.9 → loopx-0.5.1}/loopx/kunluncode_goal_mode/runtime.py +0 -0
  803. {loopx-0.4.9 → loopx-0.5.1}/loopx/kunluncode_goal_mode/server.py +0 -0
  804. {loopx-0.4.9 → loopx-0.5.1}/loopx/long_task_cadence.py +0 -0
  805. {loopx-0.4.9 → loopx-0.5.1}/loopx/materials.py +0 -0
  806. {loopx-0.4.9 → loopx-0.5.1}/loopx/ml_experiment.py +0 -0
  807. {loopx-0.4.9 → loopx-0.5.1}/loopx/onboarding.py +0 -0
  808. {loopx-0.4.9 → loopx-0.5.1}/loopx/opencode2_goal_mode/README.md +0 -0
  809. {loopx-0.4.9 → loopx-0.5.1}/loopx/opencode2_goal_mode/__init__.py +0 -0
  810. {loopx-0.4.9 → loopx-0.5.1}/loopx/opencode2_goal_mode/opencode2-goal-worker.mjs +0 -0
  811. {loopx-0.4.9 → loopx-0.5.1}/loopx/opencode_goal_mode/README.md +0 -0
  812. {loopx-0.4.9 → loopx-0.5.1}/loopx/opencode_goal_mode/__init__.py +0 -0
  813. {loopx-0.4.9 → loopx-0.5.1}/loopx/opencode_goal_mode/goal-bridge-runtime.mjs +0 -0
  814. {loopx-0.4.9 → loopx-0.5.1}/loopx/opencode_goal_mode/loopx-goal.js +0 -0
  815. {loopx-0.4.9 → loopx-0.5.1}/loopx/operator_gate.py +0 -0
  816. {loopx-0.4.9 → loopx-0.5.1}/loopx/orchestration.py +0 -0
  817. {loopx-0.4.9 → loopx-0.5.1}/loopx/paths.py +0 -0
  818. {loopx-0.4.9 → loopx-0.5.1}/loopx/pi_goal_mode/__init__.py +0 -0
  819. {loopx-0.4.9 → loopx-0.5.1}/loopx/pr_review.py +0 -0
  820. {loopx-0.4.9 → loopx-0.5.1}/loopx/presentation/README.md +0 -0
  821. {loopx-0.4.9 → loopx-0.5.1}/loopx/presentation/__init__.py +0 -0
  822. {loopx-0.4.9 → loopx-0.5.1}/loopx/presentation/explore_views.py +0 -0
  823. {loopx-0.4.9 → loopx-0.5.1}/loopx/presentation/markdown.py +0 -0
  824. {loopx-0.4.9 → loopx-0.5.1}/loopx/presentation/projection_source_reconcile.py +0 -0
  825. {loopx-0.4.9 → loopx-0.5.1}/loopx/presentation/renderers/__init__.py +0 -0
  826. {loopx-0.4.9 → loopx-0.5.1}/loopx/presentation/renderers/goal_channel_html.py +0 -0
  827. {loopx-0.4.9 → loopx-0.5.1}/loopx/presentation/renderers/periodic_report_html.py +0 -0
  828. {loopx-0.4.9 → loopx-0.5.1}/loopx/presentation/renderers/periodic_report_markdown.py +0 -0
  829. {loopx-0.4.9 → loopx-0.5.1}/loopx/presentation/renderers/quota_event_markdown.py +0 -0
  830. {loopx-0.4.9 → loopx-0.5.1}/loopx/presentation/renderers/quota_markdown.py +0 -0
  831. {loopx-0.4.9 → loopx-0.5.1}/loopx/presentation/renderers/status_markdown.py +0 -0
  832. {loopx-0.4.9 → loopx-0.5.1}/loopx/presentation/renderers/trajectory_hygiene_markdown.py +0 -0
  833. {loopx-0.4.9 → loopx-0.5.1}/loopx/presentation/renderers/turn_envelope_markdown.py +0 -0
  834. {loopx-0.4.9 → loopx-0.5.1}/loopx/presentation/sinks/__init__.py +0 -0
  835. {loopx-0.4.9 → loopx-0.5.1}/loopx/presentation/sinks/openviking_periodic_report.py +0 -0
  836. {loopx-0.4.9 → loopx-0.5.1}/loopx/presets.py +0 -0
  837. {loopx-0.4.9 → loopx-0.5.1}/loopx/project_alias.py +0 -0
  838. {loopx-0.4.9 → loopx-0.5.1}/loopx/project_map.py +0 -0
  839. {loopx-0.4.9 → loopx-0.5.1}/loopx/project_prompt.py +0 -0
  840. {loopx-0.4.9 → loopx-0.5.1}/loopx/project_uninstall.py +0 -0
  841. {loopx-0.4.9 → loopx-0.5.1}/loopx/promotion_gate.py +0 -0
  842. {loopx-0.4.9 → loopx-0.5.1}/loopx/ready_score.py +0 -0
  843. {loopx-0.4.9 → loopx-0.5.1}/loopx/registry.py +0 -0
  844. {loopx-0.4.9 → loopx-0.5.1}/loopx/registry_writability.py +0 -0
  845. {loopx-0.4.9 → loopx-0.5.1}/loopx/release_candidate.py +0 -0
  846. {loopx-0.4.9 → loopx-0.5.1}/loopx/release_manifest.py +0 -0
  847. {loopx-0.4.9 → loopx-0.5.1}/loopx/repository_identity.py +0 -0
  848. {loopx-0.4.9 → loopx-0.5.1}/loopx/review_packet.py +0 -0
  849. {loopx-0.4.9 → loopx-0.5.1}/loopx/rollout_event_log.py +0 -0
  850. {loopx-0.4.9 → loopx-0.5.1}/loopx/runtime.py +0 -0
  851. {loopx-0.4.9 → loopx-0.5.1}/loopx/self_update.py +0 -0
  852. {loopx-0.4.9 → loopx-0.5.1}/loopx/session_runtime.py +0 -0
  853. {loopx-0.4.9 → loopx-0.5.1}/loopx/skill_install_readback.py +0 -0
  854. {loopx-0.4.9 → loopx-0.5.1}/loopx/slash_command_install.py +0 -0
  855. {loopx-0.4.9 → loopx-0.5.1}/loopx/slash_commands.py +0 -0
  856. {loopx-0.4.9 → loopx-0.5.1}/loopx/state_backup.py +0 -0
  857. {loopx-0.4.9 → loopx-0.5.1}/loopx/state_migration.py +0 -0
  858. {loopx-0.4.9 → loopx-0.5.1}/loopx/state_projection.py +0 -0
  859. {loopx-0.4.9 → loopx-0.5.1}/loopx/summary_all.py +0 -0
  860. {loopx-0.4.9 → loopx-0.5.1}/loopx/thread_agent_binding.py +0 -0
  861. {loopx-0.4.9 → loopx-0.5.1}/loopx/todo_followups.py +0 -0
  862. {loopx-0.4.9 → loopx-0.5.1}/loopx/todo_suggestion_prompt.py +0 -0
  863. {loopx-0.4.9 → loopx-0.5.1}/loopx/turn_identity.py +0 -0
  864. {loopx-0.4.9 → loopx-0.5.1}/loopx/upgrade.py +0 -0
  865. {loopx-0.4.9 → loopx-0.5.1}/loopx/visible_governance.py +0 -0
  866. {loopx-0.4.9 → loopx-0.5.1}/loopx/visible_multi_agent_launcher.py +0 -0
  867. {loopx-0.4.9 → loopx-0.5.1}/loopx/visible_multi_agent_tmux.py +0 -0
  868. {loopx-0.4.9 → loopx-0.5.1}/loopx/windows_install.py +0 -0
  869. {loopx-0.4.9 → loopx-0.5.1}/loopx/worker_bridge.py +0 -0
  870. {loopx-0.4.9 → loopx-0.5.1}/loopx/workflow_skill_install.py +0 -0
  871. {loopx-0.4.9 → loopx-0.5.1}/loopx.egg-info/dependency_links.txt +0 -0
  872. {loopx-0.4.9 → loopx-0.5.1}/loopx.egg-info/entry_points.txt +0 -0
  873. {loopx-0.4.9 → loopx-0.5.1}/loopx.egg-info/top_level.txt +0 -0
  874. {loopx-0.4.9 → loopx-0.5.1}/setup.cfg +0 -0
  875. {loopx-0.4.9 → loopx-0.5.1}/skills/loopx-doc-registry/SKILL.md +0 -0
  876. {loopx-0.4.9 → loopx-0.5.1}/skills/loopx-doc-registry/agents/openai.yaml +0 -0
  877. {loopx-0.4.9 → loopx-0.5.1}/skills/loopx-pr-program/SKILL.md +0 -0
  878. {loopx-0.4.9 → loopx-0.5.1}/skills/loopx-pr-program/agents/openai.yaml +0 -0
  879. {loopx-0.4.9 → loopx-0.5.1}/skills/loopx-pr-program/references/snapshot-contract.md +0 -0
  880. {loopx-0.4.9 → loopx-0.5.1}/skills/loopx-pr-program/scripts/diff_snapshot.py +0 -0
  881. {loopx-0.4.9 → loopx-0.5.1}/skills/loopx-pr-review/SKILL.md +0 -0
  882. {loopx-0.4.9 → loopx-0.5.1}/skills/loopx-pr-review/agents/openai.yaml +0 -0
  883. {loopx-0.4.9 → loopx-0.5.1}/skills/loopx-project/SKILL.md +0 -0
  884. {loopx-0.4.9 → loopx-0.5.1}/skills/loopx-project/agents/openai.yaml +0 -0
  885. {loopx-0.4.9 → loopx-0.5.1}/skills/loopx-self-repair/SKILL.md +0 -0
  886. {loopx-0.4.9 → loopx-0.5.1}/skills/loopx-self-repair/agents/openai.yaml +0 -0
  887. {loopx-0.4.9 → loopx-0.5.1}/skills/loopx-self-repair/references/upstream-issue-escalation.md +0 -0
  888. {loopx-0.4.9 → loopx-0.5.1}/tests/test_agent_onboarding_pi_host.py +0 -0
  889. {loopx-0.4.9 → loopx-0.5.1}/tests/test_agent_onboarding_unconnected_project.py +0 -0
  890. {loopx-0.4.9 → loopx-0.5.1}/tests/test_ark_managed_agent_host.py +0 -0
  891. {loopx-0.4.9 → loopx-0.5.1}/tests/test_ark_managed_agent_issue_fix_matrix.py +0 -0
  892. {loopx-0.4.9 → loopx-0.5.1}/tests/test_auto_research_control.py +0 -0
  893. {loopx-0.4.9 → loopx-0.5.1}/tests/test_cli_entrypoint.py +0 -0
  894. {loopx-0.4.9 → loopx-0.5.1}/tests/test_codex_app_apply_rrule.py +0 -0
  895. {loopx-0.4.9 → loopx-0.5.1}/tests/test_command_invocation.py +0 -0
  896. {loopx-0.4.9 → loopx-0.5.1}/tests/test_content_ops_item_lifecycle.py +0 -0
  897. {loopx-0.4.9 → loopx-0.5.1}/tests/test_content_ops_lifecycle.py +0 -0
  898. {loopx-0.4.9 → loopx-0.5.1}/tests/test_content_ops_queue_status.py +0 -0
  899. {loopx-0.4.9 → loopx-0.5.1}/tests/test_contract_credential_pattern_precision.py +0 -0
  900. {loopx-0.4.9 → loopx-0.5.1}/tests/test_contract_scan_unreadable_files.py +0 -0
  901. {loopx-0.4.9 → loopx-0.5.1}/tests/test_decision_context_material.py +0 -0
  902. {loopx-0.4.9 → loopx-0.5.1}/tests/test_dependency_security_boundaries.py +0 -0
  903. {loopx-0.4.9 → loopx-0.5.1}/tests/test_doctor_install_freshness.py +0 -0
  904. {loopx-0.4.9 → loopx-0.5.1}/tests/test_explore_counterfactual_runtime.py +0 -0
  905. {loopx-0.4.9 → loopx-0.5.1}/tests/test_explore_episode_runtime.py +0 -0
  906. {loopx-0.4.9 → loopx-0.5.1}/tests/test_explore_monitor_lane_budget.py +0 -0
  907. {loopx-0.4.9 → loopx-0.5.1}/tests/test_explore_owner_board_views.py +0 -0
  908. {loopx-0.4.9 → loopx-0.5.1}/tests/test_explore_presentation_views.py +0 -0
  909. {loopx-0.4.9 → loopx-0.5.1}/tests/test_explore_replay_compatibility.py +0 -0
  910. {loopx-0.4.9 → loopx-0.5.1}/tests/test_explore_replay_runtime.py +0 -0
  911. {loopx-0.4.9 → loopx-0.5.1}/tests/test_explore_resource_portfolio.py +0 -0
  912. {loopx-0.4.9 → loopx-0.5.1}/tests/test_explore_router_acceptance.py +0 -0
  913. {loopx-0.4.9 → loopx-0.5.1}/tests/test_explore_source_history_reconcile.py +0 -0
  914. {loopx-0.4.9 → loopx-0.5.1}/tests/test_explore_worker_topic_affinity.py +0 -0
  915. {loopx-0.4.9 → loopx-0.5.1}/tests/test_external_scheduler_worker.py +0 -0
  916. {loopx-0.4.9 → loopx-0.5.1}/tests/test_feedback_goal_id_validation.py +0 -0
  917. {loopx-0.4.9 → loopx-0.5.1}/tests/test_file_lock.py +0 -0
  918. {loopx-0.4.9 → loopx-0.5.1}/tests/test_file_lock_cross_process.py +0 -0
  919. {loopx-0.4.9 → loopx-0.5.1}/tests/test_gemini_cursor_host_surfaces.py +0 -0
  920. {loopx-0.4.9 → loopx-0.5.1}/tests/test_global_registry_write_serialization.py +0 -0
  921. {loopx-0.4.9 → loopx-0.5.1}/tests/test_global_risks.py +0 -0
  922. {loopx-0.4.9 → loopx-0.5.1}/tests/test_global_todos.py +0 -0
  923. {loopx-0.4.9 → loopx-0.5.1}/tests/test_host_mode_planner.py +0 -0
  924. {loopx-0.4.9 → loopx-0.5.1}/tests/test_host_parity_smoke.py +0 -0
  925. {loopx-0.4.9 → loopx-0.5.1}/tests/test_host_poll_receipts.py +0 -0
  926. {loopx-0.4.9 → loopx-0.5.1}/tests/test_kunluncode_goal_mode.py +0 -0
  927. {loopx-0.4.9 → loopx-0.5.1}/tests/test_loop_turn_loop_controller.py +0 -0
  928. {loopx-0.4.9 → loopx-0.5.1}/tests/test_loopx_turn_codex_cli.py +0 -0
  929. {loopx-0.4.9 → loopx-0.5.1}/tests/test_loopx_turn_driver.py +0 -0
  930. {loopx-0.4.9 → loopx-0.5.1}/tests/test_loopx_turn_executor.py +0 -0
  931. {loopx-0.4.9 → loopx-0.5.1}/tests/test_loopx_turn_journal_inspection.py +0 -0
  932. {loopx-0.4.9 → loopx-0.5.1}/tests/test_loopx_turn_settlement_parity.py +0 -0
  933. {loopx-0.4.9 → loopx-0.5.1}/tests/test_loopx_turn_transaction.py +0 -0
  934. {loopx-0.4.9 → loopx-0.5.1}/tests/test_ml_experiment_volc_packet.py +0 -0
  935. {loopx-0.4.9 → loopx-0.5.1}/tests/test_nokv_shadow_provider_probes.py +0 -0
  936. {loopx-0.4.9 → loopx-0.5.1}/tests/test_opencode2_goal_worker.py +0 -0
  937. {loopx-0.4.9 → loopx-0.5.1}/tests/test_opencode2_goal_worker_cli.py +0 -0
  938. {loopx-0.4.9 → loopx-0.5.1}/tests/test_opencode_goal_bridge.py +0 -0
  939. {loopx-0.4.9 → loopx-0.5.1}/tests/test_operator_markdown_renderers.py +0 -0
  940. {loopx-0.4.9 → loopx-0.5.1}/tests/test_packaged_skill_metadata.py +0 -0
  941. {loopx-0.4.9 → loopx-0.5.1}/tests/test_pr_program_snapshot.py +0 -0
  942. {loopx-0.4.9 → loopx-0.5.1}/tests/test_pr_program_snapshot_diff.py +0 -0
  943. {loopx-0.4.9 → loopx-0.5.1}/tests/test_pr_review_github_scan.py +0 -0
  944. {loopx-0.4.9 → loopx-0.5.1}/tests/test_project_skill_cli.py +0 -0
  945. {loopx-0.4.9 → loopx-0.5.1}/tests/test_register_agent_fresh_identity.py +0 -0
  946. {loopx-0.4.9 → loopx-0.5.1}/tests/test_release_smoke_archive_helpers.py +0 -0
  947. {loopx-0.4.9 → loopx-0.5.1}/tests/test_reward_memory_pipeline.py +0 -0
  948. {loopx-0.4.9 → loopx-0.5.1}/tests/test_self_update_runtime_activation.py +0 -0
  949. {loopx-0.4.9 → loopx-0.5.1}/tests/test_skill_delivery_parity.py +0 -0
  950. {loopx-0.4.9 → loopx-0.5.1}/tests/test_smoke_suite.py +0 -0
  951. {loopx-0.4.9 → loopx-0.5.1}/tests/test_state_refresh_projections.py +0 -0
  952. {loopx-0.4.9 → loopx-0.5.1}/tests/test_static_site_presentation.py +0 -0
  953. {loopx-0.4.9 → loopx-0.5.1}/tests/test_status_server_extension_projection.py +0 -0
  954. {loopx-0.4.9 → loopx-0.5.1}/tests/test_summary_all.py +0 -0
  955. {loopx-0.4.9 → loopx-0.5.1}/tests/test_thread_agent_binding.py +0 -0
  956. {loopx-0.4.9 → loopx-0.5.1}/tests/test_trajectory_hygiene.py +0 -0
  957. {loopx-0.4.9 → loopx-0.5.1}/tests/test_turn_envelope.py +0 -0
  958. {loopx-0.4.9 → loopx-0.5.1}/tests/test_turn_loop_disposition.py +0 -0
  959. {loopx-0.4.9 → loopx-0.5.1}/tests/test_visible_goal_terminal_settlement.py +0 -0
  960. {loopx-0.4.9 → loopx-0.5.1}/tests/test_windows_install.py +0 -0
  961. {loopx-0.4.9 → loopx-0.5.1}/tests/test_workflow_skill_install.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: loopx
3
- Version: 0.4.9
3
+ Version: 0.5.1
4
4
  Summary: A lightweight Loop Engineering control plane for long-running agent goals.
5
5
  Author: LoopX contributors
6
6
  License-Expression: Apache-2.0
@@ -18,7 +18,7 @@ Provides-Extra: deepseek-harness
18
18
  Requires-Dist: deepseek-harness-sdk>=0.1.0rc5; extra == "deepseek-harness"
19
19
  Provides-Extra: test
20
20
  Requires-Dist: jsonschema<5,>=4.23; extra == "test"
21
- Requires-Dist: mcp==1.27.2; extra == "test"
21
+ Requires-Dist: mcp==1.28.1; extra == "test"
22
22
  Requires-Dist: types-jsonschema<5,>=4.23; extra == "test"
23
23
  Requires-Dist: pytest<9,>=8; extra == "test"
24
24
  Requires-Dist: pytest-cov<7,>=5; extra == "test"
@@ -66,6 +66,51 @@ to hand off across turns, tools, and agents.
66
66
  - **Getting started** - install, connect a project, and run your first governed loop. [Guide](docs/guides/getting-started.md)
67
67
  - **Docs** - the full reference and operations site. [LoopX Docs](https://huangruiteng.github.io/loopx/docs/)
68
68
 
69
+ ## Meet the Personal Agent Workspace
70
+
71
+ Keep long-horizon goals in one local-first workspace. Goals, attention,
72
+ conversations, tasks, files, schedules, and recovery stay durable across days,
73
+ restarts, and harnesses, so work that began last week resumes exactly where
74
+ the last bounded turn stopped instead of living in chat memory.
75
+
76
+ <a href="docs/assets/personal-workspace/loopx-dashboard-launch.mp4">
77
+ <img src="docs/assets/personal-workspace/loopx-dashboard-tour.webp" alt="Animated tour of the LoopX personal Agent workspace, from one-command launch to Manager overview, Goal task board, protected action preview, and Goal details" width="960">
78
+ </a>
79
+
80
+ The workspace gives you one place to:
81
+
82
+ - see what needs you, what is running, what is being watched, and what is
83
+ scheduled or stopped;
84
+ - continue across Codex, Claude Code, direct-model, and other registered Agent
85
+ sessions without losing Goal state or evidence;
86
+ - review protected changes through typed preview, explicit confirmation, and
87
+ receipts while LoopX state—not the browser—remains authoritative.
88
+
89
+ ```bash
90
+ loopx dashboard
91
+ ```
92
+
93
+ `loopx dashboard` is the supported browser/PWA launch path. For a native
94
+ window, the experimental source-built Tauri shell reuses the same loopback
95
+ status and Chat services without becoming another state authority:
96
+
97
+ ```bash
98
+ cd apps/desktop/loopx-control-plane
99
+ npm install
100
+ npm run dev
101
+ ```
102
+
103
+ [Read the desktop shell guide](apps/desktop/loopx-control-plane/README.md).
104
+ Closing the window stops only the service processes that the shell started;
105
+ existing LoopX services and durable Goal state remain intact. Both entry
106
+ points share the same loopback services and can be started in either order:
107
+ `loopx dashboard` reuses an already-running LoopX Chat service instead of
108
+ starting a second one.
109
+
110
+ [Watch the full 32-second walkthrough](docs/assets/personal-workspace/loopx-dashboard-launch.mp4)
111
+ · [Read the workspace guide](docs/guides/personal-workspace-user-guide.md)
112
+ · [Try the five-minute tour](docs/guides/personal-workspace-trial-guide.md)
113
+
69
114
  <a id="how-it-works"></a>
70
115
 
71
116
  ## Why LoopX
@@ -274,14 +319,16 @@ LoopX should reuse existing state rather than overwrite it. Keep `.loopx/`,
274
319
  | KunlunCode | Run `loopx-kunluncode connect --project . --goal-id <goal-id> --agent-id <registered-agent-id>`, add a bounded todo, then run `loopx-kunluncode run --project .`. | Native Goal Pro through app-server; LoopX writes completion and quota only after strict verification |
275
320
  | OpenCode | Install the static command facade; opt in to `--with-goal-bridge` for recurring goals. | OpenCode command facade and explicit goal bridge |
276
321
  | Pi | Install the opt-in goal extension with `loopx slash-commands --install --surface pi`, then use `/loopx <task>` from a trusted Pi session. | Visible Pi goal extension gated by LoopX quota (`loopx_goal_activate` + `agent_settled` continuation) |
322
+ | DeepSeek Harness (dsh) | Install `loopx[deepseek-harness]`, prepare a dsh `cordis.yml`, then use the [dsh goal-mode adapter](loopx/dsh_goal_mode/README.md) with `loopx turn run-once`. | Headless dsh segments through LoopX Turn, each tick gated by `quota should-run` |
277
323
  | Cursor, shell, or custom runner | Use the installer and `loopx doctor`; connect manually or call LoopX from your runner. | Your shell, scheduler, or runner |
278
324
 
279
325
  The exact, copy-ready setup messages and host recovery paths live in
280
326
  [Getting Started](docs/guides/getting-started.md). Host integrations can inspect
281
327
  the [Codex App host command registry contract](docs/reference/protocols/codex-app-host-command-registry-v0.md),
282
328
  the [Codex CLI packaged install path](docs/product/runtimes/codex-cli/codex-cli-packaged-install.md),
283
- the [Claude Code adapter](loopx/claude_goal_mode/README.md), or the
284
- [KunlunCode native Goal adapter](loopx/kunluncode_goal_mode/README.md).
329
+ the [Claude Code adapter](loopx/claude_goal_mode/README.md), the
330
+ [KunlunCode native Goal adapter](loopx/kunluncode_goal_mode/README.md), or the
331
+ [DeepSeek Harness turn adapter](loopx/dsh_goal_mode/README.md).
285
332
 
286
333
  For custom runners, start with the
287
334
  [minimal custom runtime example](docs/guides/minimal-custom-runtime-example.md)
@@ -370,6 +417,7 @@ evidence → recovery; continuation → governance.
370
417
  | Quota and interaction contract | Decides whether a turn should deliver, ask, wait, self-repair, or stay quiet. | `loopx quota should-run`, [quota allocation](docs/quota-allocation.md) |
371
418
  | Agent runtime bridges | Keeps Codex App, Codex CLI, Claude Code, and generic workers aligned with the same guard. | `loopx heartbeat-prompt`, `loopx codex-cli-bootstrap-message`, `loopx worker-bridge` |
372
419
  | Operator surfaces | Renders compact status without making the browser the state authority. | `loopx serve-status`, [dashboard](apps/presentation/dashboard/README.md) |
420
+ | Session dash | Starts a live single-page panel that tracks fleet progress: sessions, their goals, and each goal's status/todo progress, with result statistics; auto-refreshes in place. | `loopx dash`, [session dash design](docs/product/surfaces/session-dash-panel-design.md) |
373
421
  | External projections | Projects todos and gates into collaboration surfaces while LoopX remains authoritative. | `loopx lark-kanban`, [Lark Kanban adapter](docs/integrations/lark-kanban-control-plane-adapter.md) |
374
422
  | Domain capabilities | Packages repeatable work lanes such as issue fixing, content operations, value connector planning, ML experiment advice, benchmark evidence, and Explore. | `loopx issue-fix`, `loopx content-ops`, `loopx value-connectors`, `loopx ml-experiment`, `loopx benchmark`, [Explore](loopx/capabilities/explore/README.md) |
375
423
  | Experimental context learning | Lets named registered agents trial provider-neutral Reward Memory through ignored, default-off project configuration. OpenViking is one provider option, not a global dependency. | `loopx reward-memory experiment-status`, [Reward Memory architecture](loopx/capabilities/reward_memory/README.md) |
@@ -37,6 +37,51 @@ to hand off across turns, tools, and agents.
37
37
  - **Getting started** - install, connect a project, and run your first governed loop. [Guide](docs/guides/getting-started.md)
38
38
  - **Docs** - the full reference and operations site. [LoopX Docs](https://huangruiteng.github.io/loopx/docs/)
39
39
 
40
+ ## Meet the Personal Agent Workspace
41
+
42
+ Keep long-horizon goals in one local-first workspace. Goals, attention,
43
+ conversations, tasks, files, schedules, and recovery stay durable across days,
44
+ restarts, and harnesses, so work that began last week resumes exactly where
45
+ the last bounded turn stopped instead of living in chat memory.
46
+
47
+ <a href="docs/assets/personal-workspace/loopx-dashboard-launch.mp4">
48
+ <img src="docs/assets/personal-workspace/loopx-dashboard-tour.webp" alt="Animated tour of the LoopX personal Agent workspace, from one-command launch to Manager overview, Goal task board, protected action preview, and Goal details" width="960">
49
+ </a>
50
+
51
+ The workspace gives you one place to:
52
+
53
+ - see what needs you, what is running, what is being watched, and what is
54
+ scheduled or stopped;
55
+ - continue across Codex, Claude Code, direct-model, and other registered Agent
56
+ sessions without losing Goal state or evidence;
57
+ - review protected changes through typed preview, explicit confirmation, and
58
+ receipts while LoopX state—not the browser—remains authoritative.
59
+
60
+ ```bash
61
+ loopx dashboard
62
+ ```
63
+
64
+ `loopx dashboard` is the supported browser/PWA launch path. For a native
65
+ window, the experimental source-built Tauri shell reuses the same loopback
66
+ status and Chat services without becoming another state authority:
67
+
68
+ ```bash
69
+ cd apps/desktop/loopx-control-plane
70
+ npm install
71
+ npm run dev
72
+ ```
73
+
74
+ [Read the desktop shell guide](apps/desktop/loopx-control-plane/README.md).
75
+ Closing the window stops only the service processes that the shell started;
76
+ existing LoopX services and durable Goal state remain intact. Both entry
77
+ points share the same loopback services and can be started in either order:
78
+ `loopx dashboard` reuses an already-running LoopX Chat service instead of
79
+ starting a second one.
80
+
81
+ [Watch the full 32-second walkthrough](docs/assets/personal-workspace/loopx-dashboard-launch.mp4)
82
+ · [Read the workspace guide](docs/guides/personal-workspace-user-guide.md)
83
+ · [Try the five-minute tour](docs/guides/personal-workspace-trial-guide.md)
84
+
40
85
  <a id="how-it-works"></a>
41
86
 
42
87
  ## Why LoopX
@@ -245,14 +290,16 @@ LoopX should reuse existing state rather than overwrite it. Keep `.loopx/`,
245
290
  | KunlunCode | Run `loopx-kunluncode connect --project . --goal-id <goal-id> --agent-id <registered-agent-id>`, add a bounded todo, then run `loopx-kunluncode run --project .`. | Native Goal Pro through app-server; LoopX writes completion and quota only after strict verification |
246
291
  | OpenCode | Install the static command facade; opt in to `--with-goal-bridge` for recurring goals. | OpenCode command facade and explicit goal bridge |
247
292
  | Pi | Install the opt-in goal extension with `loopx slash-commands --install --surface pi`, then use `/loopx <task>` from a trusted Pi session. | Visible Pi goal extension gated by LoopX quota (`loopx_goal_activate` + `agent_settled` continuation) |
293
+ | DeepSeek Harness (dsh) | Install `loopx[deepseek-harness]`, prepare a dsh `cordis.yml`, then use the [dsh goal-mode adapter](loopx/dsh_goal_mode/README.md) with `loopx turn run-once`. | Headless dsh segments through LoopX Turn, each tick gated by `quota should-run` |
248
294
  | Cursor, shell, or custom runner | Use the installer and `loopx doctor`; connect manually or call LoopX from your runner. | Your shell, scheduler, or runner |
249
295
 
250
296
  The exact, copy-ready setup messages and host recovery paths live in
251
297
  [Getting Started](docs/guides/getting-started.md). Host integrations can inspect
252
298
  the [Codex App host command registry contract](docs/reference/protocols/codex-app-host-command-registry-v0.md),
253
299
  the [Codex CLI packaged install path](docs/product/runtimes/codex-cli/codex-cli-packaged-install.md),
254
- the [Claude Code adapter](loopx/claude_goal_mode/README.md), or the
255
- [KunlunCode native Goal adapter](loopx/kunluncode_goal_mode/README.md).
300
+ the [Claude Code adapter](loopx/claude_goal_mode/README.md), the
301
+ [KunlunCode native Goal adapter](loopx/kunluncode_goal_mode/README.md), or the
302
+ [DeepSeek Harness turn adapter](loopx/dsh_goal_mode/README.md).
256
303
 
257
304
  For custom runners, start with the
258
305
  [minimal custom runtime example](docs/guides/minimal-custom-runtime-example.md)
@@ -341,6 +388,7 @@ evidence → recovery; continuation → governance.
341
388
  | Quota and interaction contract | Decides whether a turn should deliver, ask, wait, self-repair, or stay quiet. | `loopx quota should-run`, [quota allocation](docs/quota-allocation.md) |
342
389
  | Agent runtime bridges | Keeps Codex App, Codex CLI, Claude Code, and generic workers aligned with the same guard. | `loopx heartbeat-prompt`, `loopx codex-cli-bootstrap-message`, `loopx worker-bridge` |
343
390
  | Operator surfaces | Renders compact status without making the browser the state authority. | `loopx serve-status`, [dashboard](apps/presentation/dashboard/README.md) |
391
+ | Session dash | Starts a live single-page panel that tracks fleet progress: sessions, their goals, and each goal's status/todo progress, with result statistics; auto-refreshes in place. | `loopx dash`, [session dash design](docs/product/surfaces/session-dash-panel-design.md) |
344
392
  | External projections | Projects todos and gates into collaboration surfaces while LoopX remains authoritative. | `loopx lark-kanban`, [Lark Kanban adapter](docs/integrations/lark-kanban-control-plane-adapter.md) |
345
393
  | Domain capabilities | Packages repeatable work lanes such as issue fixing, content operations, value connector planning, ML experiment advice, benchmark evidence, and Explore. | `loopx issue-fix`, `loopx content-ops`, `loopx value-connectors`, `loopx ml-experiment`, `loopx benchmark`, [Explore](loopx/capabilities/explore/README.md) |
346
394
  | Experimental context learning | Lets named registered agents trial provider-neutral Reward Memory through ignored, default-off project configuration. OpenViking is one provider option, not a global dependency. | `loopx reward-memory experiment-status`, [Reward Memory architecture](loopx/capabilities/reward_memory/README.md) |
@@ -2,4 +2,4 @@
2
2
 
3
3
  __all__ = ["__version__"]
4
4
 
5
- __version__ = "0.4.9"
5
+ __version__ = "0.5.1"
@@ -314,7 +314,9 @@ def _start_instruction(agent_type: str) -> str:
314
314
  if agent_type == "deepseek-harness":
315
315
  return (
316
316
  "Install `loopx[deepseek-harness]`, prepare a dsh cordis.yml, and run "
317
- "`loopx turn run-once` with `scripts/dsh_turn_host_adapter.py` as the "
317
+ "`loopx turn run-once` with the `loopx.dsh_goal_mode` adapter "
318
+ "(`python -m loopx.dsh_goal_mode`; the legacy "
319
+ "`scripts/dsh_turn_host_adapter.py` launcher still works) as the "
318
320
  "generic-cli host adapter; every tick starts from `quota should-run`."
319
321
  )
320
322
  if agent_type == "ark-managed-agent":
@@ -307,9 +307,14 @@ def onboarding_next_action(
307
307
  accept_onboarding_agent_todos: bool,
308
308
  begin_autonomous_advance: bool,
309
309
  codex_app_heartbeat: str,
310
+ include_connection_validation: bool = True,
310
311
  ) -> str:
311
312
  if not onboarding_scan:
312
- validation_action = onboarding_connection_validation_action(adapter_kind)
313
+ validation_action = (
314
+ onboarding_connection_validation_action(adapter_kind)
315
+ if include_connection_validation
316
+ else None
317
+ )
313
318
  if validation_action:
314
319
  return validation_action["text"]
315
320
  return "Initial routing is owned by the connected domain adapter."
@@ -361,10 +366,15 @@ def apply_onboarding_todos_to_state(
361
366
  accept_onboarding_agent_todos: bool,
362
367
  begin_autonomous_advance: bool,
363
368
  codex_app_heartbeat: str,
369
+ include_connection_validation: bool = True,
364
370
  ) -> str:
365
371
  if not onboarding_scan:
366
372
  lines = text.splitlines()
367
- action = onboarding_connection_validation_action(adapter_kind)
373
+ action = (
374
+ onboarding_connection_validation_action(adapter_kind)
375
+ if include_connection_validation
376
+ else None
377
+ )
368
378
  if action:
369
379
  add_todo_to_lines(
370
380
  lines,
@@ -437,6 +447,7 @@ def render_state_markdown(
437
447
  accept_onboarding_agent_todos: bool = False,
438
448
  begin_autonomous_advance: bool = False,
439
449
  codex_app_heartbeat: str = "ask",
450
+ include_connection_validation: bool = True,
440
451
  handoff_mode: str = HANDOFF_MODE_LEGACY,
441
452
  ) -> str:
442
453
  safe_objective = objective.replace('"', '\\"')
@@ -454,6 +465,7 @@ def render_state_markdown(
454
465
  accept_onboarding_agent_todos=accept_onboarding_agent_todos,
455
466
  begin_autonomous_advance=begin_autonomous_advance,
456
467
  codex_app_heartbeat=codex_app_heartbeat,
468
+ include_connection_validation=include_connection_validation,
457
469
  )
458
470
  # ``handoff_mode`` travels in the state front matter (RFC shared-goal
459
471
  # authority, Appendix B). Legacy is the absent default and is never
@@ -524,6 +536,7 @@ adapter_id: {goal_id}
524
536
  accept_onboarding_agent_todos=accept_onboarding_agent_todos,
525
537
  begin_autonomous_advance=begin_autonomous_advance,
526
538
  codex_app_heartbeat=codex_app_heartbeat,
539
+ include_connection_validation=include_connection_validation,
527
540
  )
528
541
 
529
542
 
@@ -565,6 +578,7 @@ def build_goal_entry(
565
578
  allowed_domains: list[str],
566
579
  write_scope: list[str],
567
580
  execution_profile: dict[str, Any] | None,
581
+ display_name: str | None = None,
568
582
  ) -> dict[str, Any]:
569
583
  authority_sources = []
570
584
  if goal_doc:
@@ -577,6 +591,7 @@ def build_goal_entry(
577
591
  )
578
592
  return {
579
593
  "id": goal_id,
594
+ **({"display_name": display_name} if display_name else {}),
580
595
  "domain": domain,
581
596
  "status": "active",
582
597
  "role": role,
@@ -676,6 +691,8 @@ def bootstrap_project(
676
691
  onboarding_max_status_paths: int = 12,
677
692
  onboarding_max_top_level_files: int = 24,
678
693
  preserve_todos: bool = False,
694
+ display_name: str | None = None,
695
+ include_connection_validation: bool = True,
679
696
  force: bool,
680
697
  dry_run: bool,
681
698
  sync_global: bool,
@@ -738,6 +755,7 @@ def bootstrap_project(
738
755
  allowed_domains=allowed_domains or [],
739
756
  write_scope=write_scope or [],
740
757
  execution_profile=execution_profile,
758
+ display_name=display_name,
741
759
  )
742
760
  registry, registry_goal_action = merge_goal(registry, goal_entry, force=force)
743
761
 
@@ -914,6 +932,7 @@ def bootstrap_project(
914
932
  accept_onboarding_agent_todos=accept_onboarding_agent_todos,
915
933
  begin_autonomous_advance=begin_autonomous_advance,
916
934
  codex_app_heartbeat=codex_app_heartbeat,
935
+ include_connection_validation=include_connection_validation,
917
936
  handoff_mode=declared_handoff_mode,
918
937
  ),
919
938
  encoding="utf-8",
@@ -323,7 +323,7 @@ def build_start_goal_host_surface_selection_packet(
323
323
  "pi": "Pi LoopX goal extension",
324
324
  "gemini-cli": "Gemini CLI driving its own loop through the LoopX skill facade",
325
325
  "cursor-agent": "cursor-agent driving its own loop through the LoopX skill facade and MCP server",
326
- "deepseek-harness": "DeepSeek Harness automation loop through scripts/dsh_turn_host_adapter.py",
326
+ "deepseek-harness": "DeepSeek Harness automation loop through loopx.dsh_goal_mode (compat: scripts/dsh_turn_host_adapter.py)",
327
327
  "ark-managed-agent": "Ark Managed Agent with one-shot Goal submission",
328
328
  "shell": "manual shell or an explicitly configured external scheduler",
329
329
  "other-agent": "custom agent host using the returned activation contract",
@@ -5,6 +5,35 @@ artifact, integrity, and reusable agent-runtime boundaries around benchmark
5
5
  experiments. It does not own benchmark-family runners, result ledgers, or scoring
6
6
  adapters.
7
7
 
8
+ ## Source revision admission
9
+
10
+ A long-running campaign can keep launching from an old installed checkout after
11
+ the tracked branch advances. Pinning the source once at controller startup does
12
+ not prevent that drift. Immediately before each new benchmark admission, obtain
13
+ the current reference head through the runner's provider or network boundary,
14
+ then compare it with the clean local checkout and intended pin:
15
+
16
+ ```bash
17
+ loopx benchmark source-revision-fence \
18
+ --source-checkout /path/to/pinned-source \
19
+ --expected-revision "$PINNED_REVISION" \
20
+ --observed-reference-revision "$OBSERVED_REFERENCE_REVISION" \
21
+ --require-admitted \
22
+ --format json
23
+ ```
24
+
25
+ The command succeeds only when all three identities match and the source root has
26
+ no tracked or untracked changes. Its compact receipt records equality, cleanliness,
27
+ and a stable reason code without recording the checkout path or any revision value.
28
+ Invalid input is also reduced to a path-free fail-closed receipt.
29
+
30
+ The fence is an admission boundary, not a live-run mutation mechanism. A run that
31
+ already passed the fence keeps its immutable revision even if the reference moves
32
+ later; the new head blocks only subsequent admissions until the runner installs and
33
+ pins an updated source. The caller owns the freshness and authority of the observed
34
+ reference value. This capability performs no fetch, provider API call, checkout,
35
+ install, process launch, score write, or submission.
36
+
8
37
  ## Native Codex Goal runtime
9
38
 
10
39
  Benchmark adapters that use the Codex app-server Goal API should import
@@ -309,14 +338,18 @@ receipt.
309
338
 
310
339
  A countable experiment uses the toolkit in this order:
311
340
 
312
- 1. Declare a `run_permission_policy_v0` and preflight the runner boundary.
313
- 2. Launch one frozen case/arm; do not expose evaluator sources or official feedback.
314
- 3. Capture ATIF tool evidence and a runner-owned runtime attestation.
315
- 4. Run `integrity-qualification`; stop on any blocker.
316
- 5. Run the independent verifier only after the agent phase.
317
- 6. Reduce the official result through the benchmark-owned scoring path.
318
- 7. Apply attempt-countability, treatment-fidelity, and matched-pair gates before any
319
- comparison claim or ledger update.
341
+ 1. Read the project experiment board before selecting or launching another case.
342
+ 2. Declare a `run_permission_policy_v0` and preflight the runner boundary.
343
+ 3. Upsert the planned or running row, then launch one frozen case/arm; do not expose
344
+ evaluator sources or official feedback.
345
+ 4. Capture ATIF tool evidence and a runner-owned runtime attestation.
346
+ 5. Run `integrity-qualification`; stop on any blocker.
347
+ 6. Run the independent verifier only after the agent phase.
348
+ 7. Reduce the official result through the benchmark-owned scoring path.
349
+ 8. Upsert terminal score, countability, effort, treatment fidelity, and insight
350
+ status, then read the matched-comparison projection.
351
+ 9. Apply attempt-countability, treatment-fidelity, and matched-pair gates before any
352
+ comparison claim.
320
353
 
321
354
  Integrity qualification is necessary but not sufficient for a score claim. It does
322
355
  not establish task correctness, official score authority, experiment parity, or a
@@ -324,6 +357,55 @@ LoopX advantage. `score_claim_eligible=true` only permits the official score and
324
357
  matched-pair gates to run; `score_claim_countable` and `matched_pair_countable` stay
325
358
  false in this receipt. Those remain separate verifier and comparison contracts.
326
359
 
360
+ ## Experiment board
361
+
362
+ The project-local experiment board keeps baseline, standard control or treatment,
363
+ and diagnostic explore runs in one compact projection. It is not a second score
364
+ authority and never stores raw task text, trajectories, logs, hidden evaluation,
365
+ verifier output, credentials, or local paths.
366
+
367
+ An agent using this capability should start or resume a study by reading the board:
368
+
369
+ ```bash
370
+ loopx benchmark experiment-board-show \
371
+ --goal-id <goal-id> \
372
+ --format json
373
+ ```
374
+
375
+ Preview and then execute an idempotent row update when a run starts or reaches a
376
+ terminal state:
377
+
378
+ ```bash
379
+ loopx benchmark experiment-board-upsert \
380
+ --goal-id <goal-id> \
381
+ --row-json <compact-row.json> \
382
+ --format json
383
+
384
+ loopx benchmark experiment-board-upsert \
385
+ --goal-id <goal-id> \
386
+ --row-json <compact-row.json> \
387
+ --execute \
388
+ --format json
389
+ ```
390
+
391
+ The default ledger is locked, atomically updated, and keyed by benchmark, study,
392
+ case, and run identity. A compact row carries arm role, exact and comparison
393
+ protocol ids, model, score metrics, countability, treatment fidelity, bounded
394
+ effort, and an optional insight status or public-safe handle. Unknown fields and
395
+ path-like references fail closed.
396
+
397
+ Every non-baseline row names an exact `comparison_anchor_run_id`. Standard control
398
+ or treatment rows anchor to a baseline. Explore rows use `diagnostic_only` claim
399
+ scope and may anchor to the baseline or fixed standard arm they are examining.
400
+ Matched comparisons require compatible benchmark, study, case, model, primary
401
+ metric, comparison protocol, score countability, and treatment fidelity. Exact
402
+ protocol revisions remain visible as a warning even when a declared comparison
403
+ protocol says an older credible score remains semantically comparable.
404
+
405
+ Full post-run analysis stays in private `benchmark_case_insight_v0` storage. The
406
+ board records only its compact status or handle, so reading the board cannot widen
407
+ the solving agent's evidence boundary.
408
+
327
409
  ## Post-run case insight monitor
328
410
 
329
411
  Benchmark startup should create one `continuous_monitor` todo. Whenever a case
@@ -15,6 +15,19 @@ from .container_binding import (
15
15
  compact_docker_container_binding_receipt,
16
16
  select_exact_docker_container,
17
17
  )
18
+ from .experiment_board import (
19
+ BENCHMARK_EXPERIMENT_BOARD_LEDGER_FILENAME,
20
+ BENCHMARK_EXPERIMENT_BOARD_ROW_SCHEMA_VERSION,
21
+ BENCHMARK_EXPERIMENT_BOARD_SCHEMA_VERSION,
22
+ benchmark_experiment_board_row_key,
23
+ build_benchmark_experiment_board,
24
+ default_benchmark_experiment_board_path,
25
+ normalize_benchmark_experiment_board_row,
26
+ preview_benchmark_experiment_board_upsert,
27
+ read_benchmark_experiment_board_rows,
28
+ render_benchmark_experiment_board_markdown,
29
+ upsert_benchmark_experiment_board_row,
30
+ )
18
31
  from .integrity import (
19
32
  BENCHMARK_INTEGRITY_POLICY_SCHEMA_VERSION,
20
33
  BENCHMARK_INTEGRITY_QUALIFICATION_SCHEMA_VERSION,
@@ -82,23 +95,37 @@ from .run_permissions import (
82
95
  compact_run_permission_policy_for_quota,
83
96
  validate_run_permission_policy,
84
97
  )
98
+ from .source_revision_fence import (
99
+ BENCHMARK_SOURCE_REVISION_FENCE_SCHEMA_VERSION,
100
+ BenchmarkSourceRevisionFence,
101
+ BenchmarkSourceRevisionFenceError,
102
+ compact_benchmark_source_revision_fence_receipt,
103
+ inspect_benchmark_source_revision_fence,
104
+ )
85
105
 
86
106
  __all__ = [
87
107
  "BENCHMARK_CANDIDATE_SOURCE_BOUNDARY_SCHEMA_VERSION",
88
108
  "BENCHMARK_EXACT_CONTAINER_BINDING_SCHEMA_VERSION",
109
+ "BENCHMARK_EXPERIMENT_BOARD_LEDGER_FILENAME",
110
+ "BENCHMARK_EXPERIMENT_BOARD_ROW_SCHEMA_VERSION",
111
+ "BENCHMARK_EXPERIMENT_BOARD_SCHEMA_VERSION",
89
112
  "BENCHMARK_INTEGRITY_POLICY_SCHEMA_VERSION",
90
113
  "BENCHMARK_INTEGRITY_QUALIFICATION_SCHEMA_VERSION",
91
114
  "BENCHMARK_RUNTIME_INTEGRITY_ATTESTATION_SCHEMA_VERSION",
115
+ "BENCHMARK_SOURCE_REVISION_FENCE_SCHEMA_VERSION",
92
116
  "DEFAULT_RUN_PERMISSION_ALLOWED_ACTIONS",
93
117
  "DEFAULT_RUN_PERMISSION_FORBIDDEN_ACTIONS",
94
118
  "INTEGRITY_EVIDENCE_CATEGORIES",
95
119
  "NATIVE_CODEX_GOAL_PROMPT_SCHEMA_VERSION",
96
- "NATIVE_GOAL_LIFECYCLE_SCHEMA_VERSION",
97
120
  "NATIVE_CODEX_PROFILE_REQUIRED_SKILL_IDS",
98
121
  "NATIVE_CODEX_PROFILE_SCHEMA_VERSION",
122
+ "NATIVE_GOAL_LIFECYCLE_SCHEMA_VERSION",
123
+ "PUBLIC_TRAJECTORY_SUMMARY_SCHEMA_VERSION",
99
124
  "REQUIRED_RUNTIME_ATTESTATIONS",
100
125
  "RUN_PERMISSION_POLICY_SCHEMA_VERSION",
101
126
  "RUN_PERMISSION_QUOTA_PROJECTION_SCHEMA_VERSION",
127
+ "BenchmarkSourceRevisionFence",
128
+ "BenchmarkSourceRevisionFenceError",
102
129
  "DockerContainerBinding",
103
130
  "DockerContainerBindingError",
104
131
  "NativeCodexGoalPrompt",
@@ -108,39 +135,47 @@ __all__ = [
108
135
  "NativeCodexProfile",
109
136
  "NativeCodexProfileError",
110
137
  "NativeGoalConfig",
111
- "NativeGoalLifecycleFacts",
112
138
  "NativeGoalEventTransport",
139
+ "NativeGoalLifecycleFacts",
113
140
  "NativeGoalProtocolError",
114
141
  "NativeGoalTransport",
115
142
  "NativeGoalTurn",
116
- "RunPermissionAction",
117
- "PUBLIC_TRAJECTORY_SUMMARY_SCHEMA_VERSION",
118
143
  "PublicTrajectoryLifecycleState",
119
144
  "PublicTrajectorySummaryError",
145
+ "RunPermissionAction",
120
146
  "StdioNativeGoalTransport",
121
147
  "attach_native_goal",
148
+ "benchmark_experiment_board_row_key",
122
149
  "build_benchmark_candidate_source_boundary",
150
+ "build_benchmark_experiment_board",
123
151
  "build_benchmark_integrity_qualification",
124
152
  "build_native_codex_isolation_envelope",
125
153
  "build_native_goal_public_trajectory_summary",
126
154
  "build_run_permission_policy",
127
155
  "classify_benchmark_artifact_path",
128
156
  "classify_benchmark_candidate_source_path",
157
+ "compact_benchmark_source_revision_fence_receipt",
129
158
  "compact_docker_container_binding_receipt",
130
159
  "compact_native_codex_goal_prompt_receipt",
131
160
  "compact_native_codex_profile_receipt",
132
161
  "compact_native_goal_receipt",
133
162
  "compact_run_permission_policy_for_quota",
163
+ "default_benchmark_experiment_board_path",
134
164
  "filter_public_benchmark_artifact_paths",
165
+ "inspect_benchmark_source_revision_fence",
135
166
  "inspect_native_codex_profile",
136
167
  "install_native_codex_profile",
137
168
  "materialize_public_benchmark_artifacts",
138
169
  "native_codex_app_server_environment",
139
170
  "native_codex_profile_environment",
171
+ "normalize_benchmark_experiment_board_row",
140
172
  "observe_native_goal_event",
173
+ "preview_benchmark_experiment_board_upsert",
141
174
  "probe_native_goal_process",
175
+ "read_benchmark_experiment_board_rows",
142
176
  "rebase_native_codex_loopx_workspace_state",
143
177
  "refresh_native_goal_status",
178
+ "render_benchmark_experiment_board_markdown",
144
179
  "render_native_codex_goal_prompt",
145
180
  "run_native_goal_process",
146
181
  "run_native_goal_process_until_terminal",
@@ -148,6 +183,7 @@ __all__ = [
148
183
  "run_native_goal_until_terminal",
149
184
  "select_exact_docker_container",
150
185
  "start_native_goal_turn",
186
+ "upsert_benchmark_experiment_board_row",
151
187
  "validate_run_permission_policy",
152
188
  "wait_native_goal_turn",
153
189
  ]