loopx 1.0.0__tar.gz → 1.0.2__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 (1520) hide show
  1. loopx-1.0.2/PKG-INFO +800 -0
  2. loopx-1.0.2/README.md +770 -0
  3. loopx-1.0.2/loopx/__init__.py +5 -0
  4. loopx-1.0.2/loopx/authority.py +797 -0
  5. loopx-1.0.2/loopx/bootstrap.py +1253 -0
  6. loopx-1.0.2/loopx/boundary_authority.py +190 -0
  7. loopx-1.0.2/loopx/capabilities/benchmark_toolkit/README.md +1365 -0
  8. loopx-1.0.2/loopx/capabilities/benchmark_toolkit/__init__.py +381 -0
  9. loopx-1.0.2/loopx/capabilities/benchmark_toolkit/behavior_finding.py +258 -0
  10. loopx-1.0.2/loopx/capabilities/benchmark_toolkit/catalog_entry.py +1036 -0
  11. loopx-1.0.2/loopx/capabilities/benchmark_toolkit/continuation.py +168 -0
  12. loopx-1.0.2/loopx/capabilities/benchmark_toolkit/native_codex_profile.py +658 -0
  13. loopx-1.0.2/loopx/capabilities/benchmark_toolkit/study_projection.py +1382 -0
  14. loopx-1.0.2/loopx/capabilities/configuration_ui.py +405 -0
  15. loopx-1.0.2/loopx/capabilities/context_providers/openviking.py +730 -0
  16. loopx-1.0.2/loopx/capabilities/periodic_report/README.md +582 -0
  17. loopx-1.0.2/loopx/capabilities/periodic_report/cli.py +599 -0
  18. loopx-1.0.2/loopx/capabilities/periodic_report/machine_defaults.py +564 -0
  19. loopx-1.0.2/loopx/capabilities/periodic_report/pending_intent.py +1336 -0
  20. loopx-1.0.2/loopx/capabilities/periodic_report/post_writeback_hook.py +566 -0
  21. loopx-1.0.2/loopx/capabilities/periodic_report/request_action.py +651 -0
  22. loopx-1.0.2/loopx/capabilities/pr_review_queue/README.md +664 -0
  23. loopx-1.0.2/loopx/capabilities/pr_review_queue/catalog_entry.py +136 -0
  24. loopx-1.0.2/loopx/capabilities/pr_review_queue/result_check.py +99 -0
  25. loopx-1.0.2/loopx/capabilities/pr_review_queue/review_contract.py +984 -0
  26. loopx-1.0.2/loopx/capabilities/reward_memory/README.md +674 -0
  27. loopx-1.0.2/loopx/capabilities/reward_memory/application.py +821 -0
  28. loopx-1.0.2/loopx/capabilities/reward_memory/experiment.py +623 -0
  29. loopx-1.0.2/loopx/capabilities/reward_memory/feedback_hint.py +107 -0
  30. loopx-1.0.2/loopx/capabilities/reward_memory/outbound.py +246 -0
  31. loopx-1.0.2/loopx/chat_goal_configuration_api.py +638 -0
  32. loopx-1.0.2/loopx/chat_lark_api.py +554 -0
  33. loopx-1.0.2/loopx/chat_runtime.py +1143 -0
  34. loopx-1.0.2/loopx/chat_server.py +1507 -0
  35. loopx-1.0.2/loopx/chat_store.py +1408 -0
  36. loopx-1.0.2/loopx/cli.py +922 -0
  37. loopx-1.0.2/loopx/cli_commands/__init__.py +294 -0
  38. loopx-1.0.2/loopx/cli_commands/benchmark_continuation.py +117 -0
  39. loopx-1.0.2/loopx/cli_commands/benchmark_dispatch.py +160 -0
  40. loopx-1.0.2/loopx/cli_commands/benchmark_study.py +216 -0
  41. loopx-1.0.2/loopx/cli_commands/bootstrap_connect.py +263 -0
  42. loopx-1.0.2/loopx/cli_commands/coordination_shadow.py +332 -0
  43. loopx-1.0.2/loopx/cli_commands/doctor.py +56 -0
  44. loopx-1.0.2/loopx/cli_commands/goal_amendment_proposal.py +331 -0
  45. loopx-1.0.2/loopx/cli_commands/handoff_mode.py +163 -0
  46. loopx-1.0.2/loopx/cli_commands/lark_inbox.py +787 -0
  47. loopx-1.0.2/loopx/cli_commands/post_writeback.py +260 -0
  48. loopx-1.0.2/loopx/cli_commands/pr_review.py +331 -0
  49. loopx-1.0.2/loopx/cli_commands/project.py +154 -0
  50. loopx-1.0.2/loopx/cli_commands/project_lifecycle.py +1000 -0
  51. loopx-1.0.2/loopx/cli_commands/quota.py +949 -0
  52. loopx-1.0.2/loopx/cli_commands/quota_context.py +292 -0
  53. loopx-1.0.2/loopx/cli_commands/registry_admin.py +702 -0
  54. loopx-1.0.2/loopx/cli_commands/registry_admin_configure.py +377 -0
  55. loopx-1.0.2/loopx/cli_commands/registry_admin_lifecycle.py +355 -0
  56. loopx-1.0.2/loopx/cli_commands/status.py +880 -0
  57. loopx-1.0.2/loopx/cli_commands/task_lease.py +242 -0
  58. loopx-1.0.2/loopx/cli_commands/todo.py +685 -0
  59. loopx-1.0.2/loopx/cli_commands/todo_argument_validation.py +634 -0
  60. loopx-1.0.2/loopx/cli_commands/todo_event.py +182 -0
  61. loopx-1.0.2/loopx/cli_commands/todo_registration.py +481 -0
  62. loopx-1.0.2/loopx/cli_commands/turn.py +998 -0
  63. loopx-1.0.2/loopx/cli_rollout.py +93 -0
  64. loopx-1.0.2/loopx/configuration_catalog.py +768 -0
  65. loopx-1.0.2/loopx/configure_goal.py +1500 -0
  66. loopx-1.0.2/loopx/control_plane/capability_hooks.py +843 -0
  67. loopx-1.0.2/loopx/control_plane/capability_hooks.ts +839 -0
  68. loopx-1.0.2/loopx/control_plane/coordination/authority_core.py +909 -0
  69. loopx-1.0.2/loopx/control_plane/coordination/coordination_state_contract.generated.ts +333 -0
  70. loopx-1.0.2/loopx/control_plane/coordination/coordination_state_contract_generated.py +289 -0
  71. loopx-1.0.2/loopx/control_plane/coordination/coordination_state_contract_v0.json +214 -0
  72. loopx-1.0.2/loopx/control_plane/coordination/executor.py +1207 -0
  73. loopx-1.0.2/loopx/control_plane/coordination/file_authority_store.ts +624 -0
  74. loopx-1.0.2/loopx/control_plane/coordination/legacy_writer_fence.py +323 -0
  75. loopx-1.0.2/loopx/control_plane/coordination/legacy_writer_fence.ts +266 -0
  76. loopx-1.0.2/loopx/control_plane/coordination/legacy_writer_lock_paths.ts +19 -0
  77. loopx-1.0.2/loopx/control_plane/coordination/local_authority.py +307 -0
  78. loopx-1.0.2/loopx/control_plane/coordination/local_authority_runtime.ts +1032 -0
  79. loopx-1.0.2/loopx/control_plane/coordination/local_authority_shadow.ts +1435 -0
  80. loopx-1.0.2/loopx/control_plane/coordination/local_authority_shadow_adapter.py +1279 -0
  81. loopx-1.0.2/loopx/control_plane/coordination/local_authority_shadow_identity.ts +16 -0
  82. loopx-1.0.2/loopx/control_plane/coordination/local_authority_shadow_observation.py +479 -0
  83. loopx-1.0.2/loopx/control_plane/coordination/local_authority_shadow_outbox.py +1102 -0
  84. loopx-1.0.2/loopx/control_plane/coordination/local_authority_shadow_outbox.ts +336 -0
  85. loopx-1.0.2/loopx/control_plane/coordination/runtime_shadow.py +555 -0
  86. loopx-1.0.2/loopx/control_plane/coordination/runtime_shadow.ts +334 -0
  87. loopx-1.0.2/loopx/control_plane/coordination/runtime_shadow_writer_adapter.py +221 -0
  88. loopx-1.0.2/loopx/control_plane/coordination/shadow_management.py +194 -0
  89. loopx-1.0.2/loopx/control_plane/coordination/shadow_management.ts +601 -0
  90. loopx-1.0.2/loopx/control_plane/coordination/todo_agents.ts +62 -0
  91. loopx-1.0.2/loopx/control_plane/coordination/todo_archive_selection.ts +132 -0
  92. loopx-1.0.2/loopx/control_plane/coordination/todo_claim.ts +686 -0
  93. loopx-1.0.2/loopx/control_plane/coordination/todo_create.ts +269 -0
  94. loopx-1.0.2/loopx/control_plane/coordination/todo_lifecycle_decision.ts +565 -0
  95. loopx-1.0.2/loopx/control_plane/coordination/todo_successor_derivation.ts +412 -0
  96. loopx-1.0.2/loopx/control_plane/coordination/todo_terminal_lifecycle.ts +1256 -0
  97. loopx-1.0.2/loopx/control_plane/coordination/todo_update.ts +256 -0
  98. loopx-1.0.2/loopx/control_plane/effect_runtime.py +686 -0
  99. loopx-1.0.2/loopx/control_plane/effect_runtime_handlers.ts +649 -0
  100. loopx-1.0.2/loopx/control_plane/goals/goal_amendment_proposal.py +566 -0
  101. loopx-1.0.2/loopx/control_plane/goals/goal_amendment_proposal.ts +791 -0
  102. loopx-1.0.2/loopx/control_plane/goals/goal_frontier/__init__.py +1837 -0
  103. loopx-1.0.2/loopx/control_plane/goals/goal_frontier/ack_policy.py +194 -0
  104. loopx-1.0.2/loopx/control_plane/goals/goal_frontier/fallback_disposition.py +269 -0
  105. loopx-1.0.2/loopx/control_plane/goals/goal_frontier/long_todo_chain.py +246 -0
  106. loopx-1.0.2/loopx/control_plane/goals/goal_frontier/semantic_history.py +272 -0
  107. loopx-1.0.2/loopx/control_plane/goals/goal_vision.py +218 -0
  108. loopx-1.0.2/loopx/control_plane/goals/goal_vision_policy.py +50 -0
  109. loopx-1.0.2/loopx/control_plane/goals/goal_vision_read_model.py +176 -0
  110. loopx-1.0.2/loopx/control_plane/goals/goal_vision_wait.py +319 -0
  111. loopx-1.0.2/loopx/control_plane/goals/goal_vision_wait_projection.py +57 -0
  112. loopx-1.0.2/loopx/control_plane/goals/vision_checkpoint.ts +790 -0
  113. loopx-1.0.2/loopx/control_plane/goals/vision_wait_coverage.ts +46 -0
  114. loopx-1.0.2/loopx/control_plane/post_writeback_composition_retry.py +472 -0
  115. loopx-1.0.2/loopx/control_plane/post_writeback_hook_transaction.ts +1463 -0
  116. loopx-1.0.2/loopx/control_plane/projects/registry.py +656 -0
  117. loopx-1.0.2/loopx/control_plane/quota/codex_session_usage.py +350 -0
  118. loopx-1.0.2/loopx/control_plane/quota/settlement.py +322 -0
  119. loopx-1.0.2/loopx/control_plane/quota/should_run_prepare.py +862 -0
  120. loopx-1.0.2/loopx/control_plane/todos/active_state_editing.py +330 -0
  121. loopx-1.0.2/loopx/control_plane/todos/active_state_todo_parser.py +162 -0
  122. loopx-1.0.2/loopx/control_plane/todos/active_state_todos.py +196 -0
  123. loopx-1.0.2/loopx/control_plane/todos/completed_archive.py +172 -0
  124. loopx-1.0.2/loopx/control_plane/todos/completion_policy.py +198 -0
  125. loopx-1.0.2/loopx/control_plane/todos/completion_policy.ts +293 -0
  126. loopx-1.0.2/loopx/control_plane/todos/completion_transaction.py +533 -0
  127. loopx-1.0.2/loopx/control_plane/todos/completion_transaction.ts +491 -0
  128. loopx-1.0.2/loopx/control_plane/todos/completion_validation.py +574 -0
  129. loopx-1.0.2/loopx/control_plane/todos/completion_validation_projection.py +137 -0
  130. loopx-1.0.2/loopx/control_plane/todos/completion_validation_store.py +129 -0
  131. loopx-1.0.2/loopx/control_plane/todos/contract.py +1494 -0
  132. loopx-1.0.2/loopx/control_plane/todos/durable_completion.py +352 -0
  133. loopx-1.0.2/loopx/control_plane/todos/event_writeback.py +721 -0
  134. loopx-1.0.2/loopx/control_plane/todos/frontier_revision.py +208 -0
  135. loopx-1.0.2/loopx/control_plane/todos/handoff_mode.py +552 -0
  136. loopx-1.0.2/loopx/control_plane/todos/machine_region.py +117 -0
  137. loopx-1.0.2/loopx/control_plane/todos/machine_section_projection.py +539 -0
  138. loopx-1.0.2/loopx/control_plane/todos/mutation_authority.py +397 -0
  139. loopx-1.0.2/loopx/control_plane/todos/path_resolution.py +29 -0
  140. loopx-1.0.2/loopx/control_plane/todos/projection.py +813 -0
  141. loopx-1.0.2/loopx/control_plane/todos/provider_compatibility_edit.py +84 -0
  142. loopx-1.0.2/loopx/control_plane/todos/provider_create.py +165 -0
  143. loopx-1.0.2/loopx/control_plane/todos/provider_projection.py +258 -0
  144. loopx-1.0.2/loopx/control_plane/todos/provider_terminal_lifecycle.py +564 -0
  145. loopx-1.0.2/loopx/control_plane/todos/quota_summary.py +1202 -0
  146. loopx-1.0.2/loopx/control_plane/todos/successor_derivation.py +135 -0
  147. loopx-1.0.2/loopx/control_plane/todos/todo_summary.py +1309 -0
  148. loopx-1.0.2/loopx/control_plane/work_items/semantic_replan_writeback.py +484 -0
  149. loopx-1.0.2/loopx/control_plane/work_items/task_lease_acquire.ts +1479 -0
  150. loopx-1.0.2/loopx/control_plane/work_items/task_lease_acquire_adapter.py +725 -0
  151. loopx-1.0.2/loopx/control_plane/work_items/task_lease_lifecycle.ts +2783 -0
  152. loopx-1.0.2/loopx/doctor.py +1500 -0
  153. loopx-1.0.2/loopx/dsh_goal_mode/turn_host_adapter.py +735 -0
  154. loopx-1.0.2/loopx/event_sourced_state.py +1021 -0
  155. loopx-1.0.2/loopx/execution_profile.py +314 -0
  156. loopx-1.0.2/loopx/extensions/hook_adapters.py +168 -0
  157. loopx-1.0.2/loopx/extensions/lark/README.md +279 -0
  158. loopx-1.0.2/loopx/extensions/lark/docs/lark-event-inbox.md +633 -0
  159. loopx-1.0.2/loopx/extensions/lark/event_inbox.py +925 -0
  160. loopx-1.0.2/loopx/extensions/lark/extension.toml +120 -0
  161. loopx-1.0.2/loopx/extensions/lark/goal_channel_contracts.py +811 -0
  162. loopx-1.0.2/loopx/extensions/lark/goal_channel_setup.py +794 -0
  163. loopx-1.0.2/loopx/extensions/lark/goal_channel_transport.py +485 -0
  164. loopx-1.0.2/loopx/extensions/lark/goal_topic_batch.py +169 -0
  165. loopx-1.0.2/loopx/extensions/lark/goal_topic_connections.py +1433 -0
  166. loopx-1.0.2/loopx/extensions/lark/goal_topic_routing.py +137 -0
  167. loopx-1.0.2/loopx/extensions/lark/goal_topic_runtime.py +1052 -0
  168. loopx-1.0.2/loopx/extensions/lark/group_history.py +610 -0
  169. loopx-1.0.2/loopx/extensions/lark/group_history_cursor.py +308 -0
  170. loopx-1.0.2/loopx/extensions/lark/inbox_reply.py +609 -0
  171. loopx-1.0.2/loopx/extensions/lark/outbound.py +269 -0
  172. loopx-1.0.2/loopx/extensions/lark/periodic_report_request.py +438 -0
  173. loopx-1.0.2/loopx/extensions/lark/provider.py +96 -0
  174. loopx-1.0.2/loopx/extensions/lark/turn_start_sync.py +897 -0
  175. loopx-1.0.2/loopx/extensions/manifest.py +830 -0
  176. loopx-1.0.2/loopx/feedback.py +611 -0
  177. loopx-1.0.2/loopx/file_lock.py +976 -0
  178. loopx-1.0.2/loopx/help_surface.py +576 -0
  179. loopx-1.0.2/loopx/history.py +766 -0
  180. loopx-1.0.2/loopx/orchestration.py +131 -0
  181. loopx-1.0.2/loopx/public_safe_text.py +64 -0
  182. loopx-1.0.2/loopx/release_candidate.py +320 -0
  183. loopx-1.0.2/loopx/skill_install_readback.py +681 -0
  184. loopx-1.0.2/loopx/slash_command_install.py +1434 -0
  185. loopx-1.0.2/loopx/state_migration.py +512 -0
  186. loopx-1.0.2/loopx/state_refresh.py +1488 -0
  187. loopx-1.0.2/loopx/status_server.py +1174 -0
  188. loopx-1.0.2/loopx/todo_followups.py +203 -0
  189. loopx-1.0.2/loopx/todos.py +2172 -0
  190. loopx-1.0.2/loopx/web/chat/assets/index-Bbl2q4GJ.css +1 -0
  191. loopx-1.0.2/loopx/web/chat/assets/index-BtQNwJj6.js +129 -0
  192. loopx-1.0.2/loopx/web/chat/assets/index-C4xwmI7d.js +129 -0
  193. loopx-1.0.2/loopx/web/chat/assets/index-CreWNyY-.js +129 -0
  194. loopx-1.0.2/loopx/web/chat/assets/index-D-ZLwkDk.js +129 -0
  195. loopx-1.0.2/loopx/web/chat/assets/index-DSyBT6Kt.js +129 -0
  196. loopx-1.0.2/loopx/web/chat/assets/index-DiCXWPfR.css +1 -0
  197. loopx-1.0.2/loopx/web/chat/assets/index-m_MgoO2m.js +129 -0
  198. loopx-1.0.2/loopx/web/chat/index.html +39 -0
  199. loopx-1.0.2/loopx/workflow_skill_install.py +461 -0
  200. loopx-1.0.2/loopx.egg-info/PKG-INFO +800 -0
  201. loopx-1.0.2/loopx.egg-info/SOURCES.txt +1340 -0
  202. loopx-1.0.2/loopx.egg-info/requires.txt +14 -0
  203. loopx-1.0.2/pyproject.toml +152 -0
  204. loopx-1.0.2/skills/loopx-benchmark/SKILL.md +212 -0
  205. loopx-1.0.2/skills/loopx-pr-review/SKILL.md +180 -0
  206. loopx-1.0.2/skills/loopx-self-repair/references/repair-patterns.md +238 -0
  207. loopx-1.0.2/tests/test_chat_lark_api_contract.py +653 -0
  208. loopx-1.0.2/tests/test_chat_session_active_turn.py +1257 -0
  209. loopx-1.0.2/tests/test_chat_startup_isolation.py +283 -0
  210. loopx-1.0.2/tests/test_cli_argument_diagnostics.py +1159 -0
  211. loopx-1.0.2/tests/test_doctor_installation_scope.py +71 -0
  212. loopx-1.0.2/tests/test_dsh_goal_mode.py +696 -0
  213. loopx-1.0.2/tests/test_event_sourced_state_store.py +50 -0
  214. loopx-1.0.2/tests/test_history_chronology.py +287 -0
  215. loopx-1.0.2/tests/test_loopx_turn_driver.py +2822 -0
  216. loopx-1.0.2/tests/test_python_ci_workflow.py +204 -0
  217. loopx-1.0.2/tests/test_skill_delivery_parity.py +413 -0
  218. loopx-1.0.2/tests/test_slash_command_install.py +997 -0
  219. loopx-1.0.2/tests/test_sonarcloud_workflow.py +76 -0
  220. loopx-1.0.2/tests/test_state_refresh_projections.py +161 -0
  221. loopx-1.0.2/tests/test_status_server_fast_path.py +318 -0
  222. loopx-1.0.2/tests/test_todo_write_serialization.py +152 -0
  223. loopx-1.0.2/tests/test_workflow_skill_install.py +445 -0
  224. loopx-1.0.0/PKG-INFO +0 -788
  225. loopx-1.0.0/README.md +0 -758
  226. loopx-1.0.0/loopx/__init__.py +0 -5
  227. loopx-1.0.0/loopx/authority.py +0 -805
  228. loopx-1.0.0/loopx/bootstrap.py +0 -1213
  229. loopx-1.0.0/loopx/boundary_authority.py +0 -199
  230. loopx-1.0.0/loopx/capabilities/benchmark_toolkit/README.md +0 -1320
  231. loopx-1.0.0/loopx/capabilities/benchmark_toolkit/__init__.py +0 -373
  232. loopx-1.0.0/loopx/capabilities/benchmark_toolkit/catalog_entry.py +0 -977
  233. loopx-1.0.0/loopx/capabilities/benchmark_toolkit/external_agent.py +0 -499
  234. loopx-1.0.0/loopx/capabilities/benchmark_toolkit/native_codex_profile.py +0 -643
  235. loopx-1.0.0/loopx/capabilities/benchmark_toolkit/study_projection.py +0 -1363
  236. loopx-1.0.0/loopx/capabilities/configuration_ui.py +0 -387
  237. loopx-1.0.0/loopx/capabilities/context_providers/openviking.py +0 -702
  238. loopx-1.0.0/loopx/capabilities/periodic_report/README.md +0 -532
  239. loopx-1.0.0/loopx/capabilities/periodic_report/cli.py +0 -483
  240. loopx-1.0.0/loopx/capabilities/periodic_report/machine_defaults.py +0 -504
  241. loopx-1.0.0/loopx/capabilities/periodic_report/pending_intent.py +0 -1230
  242. loopx-1.0.0/loopx/capabilities/periodic_report/post_writeback_hook.py +0 -498
  243. loopx-1.0.0/loopx/capabilities/pr_review_queue/README.md +0 -579
  244. loopx-1.0.0/loopx/capabilities/pr_review_queue/catalog_entry.py +0 -126
  245. loopx-1.0.0/loopx/capabilities/pr_review_queue/review_contract.py +0 -740
  246. loopx-1.0.0/loopx/capabilities/reward_memory/README.md +0 -627
  247. loopx-1.0.0/loopx/capabilities/reward_memory/application.py +0 -819
  248. loopx-1.0.0/loopx/capabilities/reward_memory/experiment.py +0 -567
  249. loopx-1.0.0/loopx/capabilities/reward_memory/outbound.py +0 -153
  250. loopx-1.0.0/loopx/chat_goal_configuration_api.py +0 -629
  251. loopx-1.0.0/loopx/chat_lark_api.py +0 -486
  252. loopx-1.0.0/loopx/chat_runtime.py +0 -1142
  253. loopx-1.0.0/loopx/chat_server.py +0 -1507
  254. loopx-1.0.0/loopx/chat_store.py +0 -1407
  255. loopx-1.0.0/loopx/cli.py +0 -907
  256. loopx-1.0.0/loopx/cli_commands/__init__.py +0 -294
  257. loopx-1.0.0/loopx/cli_commands/benchmark_dispatch.py +0 -160
  258. loopx-1.0.0/loopx/cli_commands/benchmark_external_agent.py +0 -186
  259. loopx-1.0.0/loopx/cli_commands/benchmark_study.py +0 -195
  260. loopx-1.0.0/loopx/cli_commands/bootstrap_connect.py +0 -262
  261. loopx-1.0.0/loopx/cli_commands/coordination_shadow.py +0 -329
  262. loopx-1.0.0/loopx/cli_commands/doctor.py +0 -49
  263. loopx-1.0.0/loopx/cli_commands/handoff_mode.py +0 -160
  264. loopx-1.0.0/loopx/cli_commands/lark_inbox.py +0 -757
  265. loopx-1.0.0/loopx/cli_commands/post_writeback.py +0 -98
  266. loopx-1.0.0/loopx/cli_commands/pr_review.py +0 -290
  267. loopx-1.0.0/loopx/cli_commands/project.py +0 -150
  268. loopx-1.0.0/loopx/cli_commands/project_lifecycle.py +0 -995
  269. loopx-1.0.0/loopx/cli_commands/quota.py +0 -938
  270. loopx-1.0.0/loopx/cli_commands/quota_context.py +0 -281
  271. loopx-1.0.0/loopx/cli_commands/registry_admin.py +0 -701
  272. loopx-1.0.0/loopx/cli_commands/registry_admin_configure.py +0 -367
  273. loopx-1.0.0/loopx/cli_commands/registry_admin_lifecycle.py +0 -350
  274. loopx-1.0.0/loopx/cli_commands/status.py +0 -870
  275. loopx-1.0.0/loopx/cli_commands/task_lease.py +0 -325
  276. loopx-1.0.0/loopx/cli_commands/todo.py +0 -860
  277. loopx-1.0.0/loopx/cli_commands/todo_argument_validation.py +0 -625
  278. loopx-1.0.0/loopx/cli_commands/todo_event.py +0 -162
  279. loopx-1.0.0/loopx/cli_commands/todo_registration.py +0 -481
  280. loopx-1.0.0/loopx/cli_commands/turn.py +0 -993
  281. loopx-1.0.0/loopx/cli_rollout.py +0 -93
  282. loopx-1.0.0/loopx/configuration_catalog.py +0 -724
  283. loopx-1.0.0/loopx/configure_goal.py +0 -1499
  284. loopx-1.0.0/loopx/control_plane/capability_hooks.py +0 -780
  285. loopx-1.0.0/loopx/control_plane/capability_hooks.ts +0 -833
  286. loopx-1.0.0/loopx/control_plane/coordination/authority_core.py +0 -1019
  287. loopx-1.0.0/loopx/control_plane/coordination/coordination_state_contract.generated.ts +0 -323
  288. loopx-1.0.0/loopx/control_plane/coordination/coordination_state_contract_generated.py +0 -281
  289. loopx-1.0.0/loopx/control_plane/coordination/coordination_state_contract_v0.json +0 -208
  290. loopx-1.0.0/loopx/control_plane/coordination/executor.py +0 -1203
  291. loopx-1.0.0/loopx/control_plane/coordination/file_authority_store.ts +0 -608
  292. loopx-1.0.0/loopx/control_plane/coordination/legacy_writer_fence.py +0 -157
  293. loopx-1.0.0/loopx/control_plane/coordination/legacy_writer_fence.ts +0 -195
  294. loopx-1.0.0/loopx/control_plane/coordination/local_authority.py +0 -240
  295. loopx-1.0.0/loopx/control_plane/coordination/local_authority_runtime.ts +0 -814
  296. loopx-1.0.0/loopx/control_plane/coordination/local_authority_shadow.ts +0 -1095
  297. loopx-1.0.0/loopx/control_plane/coordination/local_authority_shadow_adapter.py +0 -1497
  298. loopx-1.0.0/loopx/control_plane/coordination/local_authority_shadow_outbox.py +0 -947
  299. loopx-1.0.0/loopx/control_plane/coordination/local_authority_shadow_outbox.ts +0 -276
  300. loopx-1.0.0/loopx/control_plane/coordination/runtime_shadow.py +0 -488
  301. loopx-1.0.0/loopx/control_plane/coordination/runtime_shadow.ts +0 -1223
  302. loopx-1.0.0/loopx/control_plane/coordination/runtime_shadow_writer_adapter.py +0 -147
  303. loopx-1.0.0/loopx/control_plane/coordination/todo_agents.ts +0 -27
  304. loopx-1.0.0/loopx/control_plane/coordination/todo_claim.ts +0 -431
  305. loopx-1.0.0/loopx/control_plane/coordination/todo_create.ts +0 -267
  306. loopx-1.0.0/loopx/control_plane/coordination/todo_update.ts +0 -248
  307. loopx-1.0.0/loopx/control_plane/effect_runtime.py +0 -727
  308. loopx-1.0.0/loopx/control_plane/effect_runtime_handlers.ts +0 -627
  309. loopx-1.0.0/loopx/control_plane/goals/goal_frontier/__init__.py +0 -1892
  310. loopx-1.0.0/loopx/control_plane/goals/goal_frontier/ack_policy.py +0 -191
  311. loopx-1.0.0/loopx/control_plane/goals/goal_frontier/long_todo_chain.py +0 -304
  312. loopx-1.0.0/loopx/control_plane/goals/goal_frontier/semantic_history.py +0 -314
  313. loopx-1.0.0/loopx/control_plane/goals/goal_vision.py +0 -174
  314. loopx-1.0.0/loopx/control_plane/goals/goal_vision_policy.py +0 -36
  315. loopx-1.0.0/loopx/control_plane/goals/goal_vision_wait.py +0 -290
  316. loopx-1.0.0/loopx/control_plane/goals/vision_checkpoint.ts +0 -708
  317. loopx-1.0.0/loopx/control_plane/post_writeback_hook_transaction.ts +0 -1421
  318. loopx-1.0.0/loopx/control_plane/projects/registry.py +0 -664
  319. loopx-1.0.0/loopx/control_plane/quota/codex_session_usage.py +0 -278
  320. loopx-1.0.0/loopx/control_plane/quota/settlement.py +0 -256
  321. loopx-1.0.0/loopx/control_plane/quota/should_run_prepare.py +0 -858
  322. loopx-1.0.0/loopx/control_plane/todos/active_state_editing.py +0 -300
  323. loopx-1.0.0/loopx/control_plane/todos/active_state_todo_parser.py +0 -161
  324. loopx-1.0.0/loopx/control_plane/todos/active_state_todos.py +0 -175
  325. loopx-1.0.0/loopx/control_plane/todos/completed_archive.py +0 -164
  326. loopx-1.0.0/loopx/control_plane/todos/completion_policy.py +0 -188
  327. loopx-1.0.0/loopx/control_plane/todos/completion_transaction.py +0 -405
  328. loopx-1.0.0/loopx/control_plane/todos/completion_transaction.ts +0 -413
  329. loopx-1.0.0/loopx/control_plane/todos/completion_validation.py +0 -372
  330. loopx-1.0.0/loopx/control_plane/todos/completion_validation_projection.py +0 -59
  331. loopx-1.0.0/loopx/control_plane/todos/contract.py +0 -1483
  332. loopx-1.0.0/loopx/control_plane/todos/durable_completion.py +0 -315
  333. loopx-1.0.0/loopx/control_plane/todos/event_writeback.py +0 -712
  334. loopx-1.0.0/loopx/control_plane/todos/handoff_mode.py +0 -535
  335. loopx-1.0.0/loopx/control_plane/todos/machine_region.py +0 -116
  336. loopx-1.0.0/loopx/control_plane/todos/machine_section_projection.py +0 -321
  337. loopx-1.0.0/loopx/control_plane/todos/mutation_authority.py +0 -364
  338. loopx-1.0.0/loopx/control_plane/todos/projection.py +0 -736
  339. loopx-1.0.0/loopx/control_plane/todos/provider_compatibility_edit.py +0 -78
  340. loopx-1.0.0/loopx/control_plane/todos/provider_create.py +0 -93
  341. loopx-1.0.0/loopx/control_plane/todos/quota_summary.py +0 -1187
  342. loopx-1.0.0/loopx/control_plane/todos/todo_summary.py +0 -1301
  343. loopx-1.0.0/loopx/control_plane/work_items/semantic_replan_writeback.py +0 -480
  344. loopx-1.0.0/loopx/control_plane/work_items/task_lease_acquire.ts +0 -1430
  345. loopx-1.0.0/loopx/control_plane/work_items/task_lease_acquire_adapter.py +0 -727
  346. loopx-1.0.0/loopx/control_plane/work_items/task_lease_lifecycle.ts +0 -2782
  347. loopx-1.0.0/loopx/doctor.py +0 -1500
  348. loopx-1.0.0/loopx/dsh_goal_mode/turn_host_adapter.py +0 -731
  349. loopx-1.0.0/loopx/event_sourced_state.py +0 -1031
  350. loopx-1.0.0/loopx/execution_profile.py +0 -286
  351. loopx-1.0.0/loopx/extensions/lark/README.md +0 -258
  352. loopx-1.0.0/loopx/extensions/lark/docs/lark-event-inbox.md +0 -611
  353. loopx-1.0.0/loopx/extensions/lark/event_inbox.py +0 -812
  354. loopx-1.0.0/loopx/extensions/lark/extension.toml +0 -108
  355. loopx-1.0.0/loopx/extensions/lark/goal_channel_contracts.py +0 -784
  356. loopx-1.0.0/loopx/extensions/lark/goal_channel_setup.py +0 -826
  357. loopx-1.0.0/loopx/extensions/lark/goal_channel_transport.py +0 -363
  358. loopx-1.0.0/loopx/extensions/lark/goal_topic_connections.py +0 -1500
  359. loopx-1.0.0/loopx/extensions/lark/goal_topic_runtime.py +0 -976
  360. loopx-1.0.0/loopx/extensions/lark/group_history.py +0 -607
  361. loopx-1.0.0/loopx/extensions/lark/group_history_cursor.py +0 -305
  362. loopx-1.0.0/loopx/extensions/lark/inbox_reply.py +0 -579
  363. loopx-1.0.0/loopx/extensions/lark/outbound.py +0 -260
  364. loopx-1.0.0/loopx/extensions/lark/provider.py +0 -91
  365. loopx-1.0.0/loopx/extensions/lark/turn_start_sync.py +0 -792
  366. loopx-1.0.0/loopx/extensions/manifest.py +0 -730
  367. loopx-1.0.0/loopx/feedback.py +0 -587
  368. loopx-1.0.0/loopx/file_lock.py +0 -969
  369. loopx-1.0.0/loopx/help_surface.py +0 -574
  370. loopx-1.0.0/loopx/history.py +0 -754
  371. loopx-1.0.0/loopx/orchestration.py +0 -127
  372. loopx-1.0.0/loopx/release_candidate.py +0 -277
  373. loopx-1.0.0/loopx/skill_install_readback.py +0 -552
  374. loopx-1.0.0/loopx/slash_command_install.py +0 -1434
  375. loopx-1.0.0/loopx/state_migration.py +0 -478
  376. loopx-1.0.0/loopx/state_refresh.py +0 -1479
  377. loopx-1.0.0/loopx/status_server.py +0 -1115
  378. loopx-1.0.0/loopx/todo_followups.py +0 -186
  379. loopx-1.0.0/loopx/todos.py +0 -2265
  380. loopx-1.0.0/loopx/web/chat/index.html +0 -39
  381. loopx-1.0.0/loopx/workflow_skill_install.py +0 -403
  382. loopx-1.0.0/loopx.egg-info/PKG-INFO +0 -788
  383. loopx-1.0.0/loopx.egg-info/SOURCES.txt +0 -1295
  384. loopx-1.0.0/loopx.egg-info/requires.txt +0 -14
  385. loopx-1.0.0/pyproject.toml +0 -151
  386. loopx-1.0.0/skills/loopx-benchmark/SKILL.md +0 -196
  387. loopx-1.0.0/skills/loopx-pr-review/SKILL.md +0 -179
  388. loopx-1.0.0/skills/loopx-self-repair/references/repair-patterns.md +0 -216
  389. loopx-1.0.0/tests/test_chat_lark_api_contract.py +0 -529
  390. loopx-1.0.0/tests/test_chat_session_active_turn.py +0 -1211
  391. loopx-1.0.0/tests/test_cli_argument_diagnostics.py +0 -1158
  392. loopx-1.0.0/tests/test_dsh_goal_mode.py +0 -606
  393. loopx-1.0.0/tests/test_history_chronology.py +0 -251
  394. loopx-1.0.0/tests/test_loopx_turn_driver.py +0 -2695
  395. loopx-1.0.0/tests/test_python_ci_workflow.py +0 -119
  396. loopx-1.0.0/tests/test_skill_delivery_parity.py +0 -316
  397. loopx-1.0.0/tests/test_slash_command_install.py +0 -993
  398. loopx-1.0.0/tests/test_sonarcloud_workflow.py +0 -40
  399. loopx-1.0.0/tests/test_state_refresh_projections.py +0 -97
  400. loopx-1.0.0/tests/test_status_server_fast_path.py +0 -155
  401. loopx-1.0.0/tests/test_workflow_skill_install.py +0 -229
  402. {loopx-1.0.0 → loopx-1.0.2}/LICENSE +0 -0
  403. {loopx-1.0.0 → loopx-1.0.2}/LICENSE-MIT +0 -0
  404. {loopx-1.0.0 → loopx-1.0.2}/NOTICE +0 -0
  405. {loopx-1.0.0 → loopx-1.0.2}/loopx/agent_onboarding.py +0 -0
  406. {loopx-1.0.0 → loopx-1.0.2}/loopx/agent_registry.py +0 -0
  407. {loopx-1.0.0 → loopx-1.0.2}/loopx/agy_goal_mode/README.md +0 -0
  408. {loopx-1.0.0 → loopx-1.0.2}/loopx/agy_goal_mode/__init__.py +0 -0
  409. {loopx-1.0.0 → loopx-1.0.2}/loopx/ark_managed_agent_host.py +0 -0
  410. {loopx-1.0.0 → loopx-1.0.2}/loopx/attached_session.py +0 -0
  411. {loopx-1.0.0 → loopx-1.0.2}/loopx/attached_session_api.py +0 -0
  412. {loopx-1.0.0 → loopx-1.0.2}/loopx/bootstrap_command_pack.py +0 -0
  413. {loopx-1.0.0 → loopx-1.0.2}/loopx/canary/__init__.py +0 -0
  414. {loopx-1.0.0 → loopx-1.0.2}/loopx/canary/maintainability_ratchet.py +0 -0
  415. {loopx-1.0.0 → loopx-1.0.2}/loopx/canary/package_profiles.py +0 -0
  416. {loopx-1.0.0 → loopx-1.0.2}/loopx/canary/planner.py +0 -0
  417. {loopx-1.0.0 → loopx-1.0.2}/loopx/canary/premerge.py +0 -0
  418. {loopx-1.0.0 → loopx-1.0.2}/loopx/canary/qualification_profiles.py +0 -0
  419. {loopx-1.0.0 → loopx-1.0.2}/loopx/canary/quality_surface_catalog.py +0 -0
  420. {loopx-1.0.0 → loopx-1.0.2}/loopx/canary/release_profiles.py +0 -0
  421. {loopx-1.0.0 → loopx-1.0.2}/loopx/canary/runner.py +0 -0
  422. {loopx-1.0.0 → loopx-1.0.2}/loopx/canary/smoke_health.py +0 -0
  423. {loopx-1.0.0 → loopx-1.0.2}/loopx/canary/smoke_profiles.py +0 -0
  424. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/README.md +0 -0
  425. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/__init__.py +0 -0
  426. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/agent_turn_recall/README.md +0 -0
  427. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/agent_turn_recall/__init__.py +0 -0
  428. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/agent_turn_recall/catalog_entry.py +0 -0
  429. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/agent_turn_recall/cli.py +0 -0
  430. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/agent_turn_recall/core.py +0 -0
  431. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/benchmark_toolkit/adaptive_concurrency.py +0 -0
  432. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/benchmark_toolkit/artifacts.py +0 -0
  433. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/benchmark_toolkit/concurrency_envelope.py +0 -0
  434. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/benchmark_toolkit/container_binding.py +0 -0
  435. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/benchmark_toolkit/environment_access.py +0 -0
  436. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/benchmark_toolkit/experiment_board.py +0 -0
  437. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/benchmark_toolkit/factorial_contrast.py +0 -0
  438. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/benchmark_toolkit/four_arm_contract.py +0 -0
  439. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/benchmark_toolkit/integrity.py +0 -0
  440. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/benchmark_toolkit/native_codex_goal.py +0 -0
  441. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/benchmark_toolkit/native_codex_isolation.py +0 -0
  442. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/benchmark_toolkit/provider_gateway.py +0 -0
  443. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/benchmark_toolkit/public_trajectory.py +0 -0
  444. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/benchmark_toolkit/reward_contract.py +0 -0
  445. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/benchmark_toolkit/run_permissions.py +0 -0
  446. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/benchmark_toolkit/runtime_continuity.py +0 -0
  447. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/benchmark_toolkit/runtime_observation.py +0 -0
  448. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/benchmark_toolkit/source_revision_fence.py +0 -0
  449. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/benchmark_toolkit/traex_evidence.py +0 -0
  450. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/benchmark_toolkit/treatment_continuation.py +0 -0
  451. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/catalog.py +0 -0
  452. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/change_quality/README.md +0 -0
  453. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/change_quality/__init__.py +0 -0
  454. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/change_quality/catalog_entry.py +0 -0
  455. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/change_quality/cli.py +0 -0
  456. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/change_quality/context.py +0 -0
  457. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/change_quality/oracles.py +0 -0
  458. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/change_quality/policy.py +0 -0
  459. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/change_quality/receipt.py +0 -0
  460. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/change_quality/result.py +0 -0
  461. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/change_quality/scope.py +0 -0
  462. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/change_quality/shadow.py +0 -0
  463. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/connector_registry/README.md +0 -0
  464. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/connector_registry/__init__.py +0 -0
  465. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/connector_registry/catalog_entry.py +0 -0
  466. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/connector_registry/cli.py +0 -0
  467. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/connector_registry/core.py +0 -0
  468. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/connector_registry/tests/test_connector_registry.py +0 -0
  469. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/content_ops/README.md +0 -0
  470. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/content_ops/__init__.py +0 -0
  471. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/content_ops/catalog_entry.py +0 -0
  472. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/content_ops/cli.py +0 -0
  473. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/content_ops/connector_packets.py +0 -0
  474. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/content_ops/item_lifecycle.py +0 -0
  475. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/content_ops/layout.py +0 -0
  476. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/content_ops/markdown.py +0 -0
  477. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/content_ops/schemas.py +0 -0
  478. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/content_ops/social_browser_x.py +0 -0
  479. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/content_ops/surface.py +0 -0
  480. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/content_ops/templates/layout-catalog-v0.json +0 -0
  481. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/context_providers/__init__.py +0 -0
  482. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/context_providers/base.py +0 -0
  483. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/context_providers/factory.py +0 -0
  484. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/context_providers/service_ownership.py +0 -0
  485. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/decision_context/README.md +0 -0
  486. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/decision_context/README.zh-CN.md +0 -0
  487. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/decision_context/__init__.py +0 -0
  488. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/decision_context/architecture.py +0 -0
  489. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/decision_context/assembler.py +0 -0
  490. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/decision_context/capture.py +0 -0
  491. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/decision_context/catalog_entry.py +0 -0
  492. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/decision_context/cli.py +0 -0
  493. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/decision_context/cursor_commit.py +0 -0
  494. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/decision_context/extension_provider.py +0 -0
  495. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/decision_context/outcome_feedback.py +0 -0
  496. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/decision_context/packets.py +0 -0
  497. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/decision_context/private_state.py +0 -0
  498. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/decision_context/profile.py +0 -0
  499. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/decision_context/providers.py +0 -0
  500. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/decision_context/review_settlement.py +0 -0
  501. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/decision_context/runtime.py +0 -0
  502. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/decision_context/sources.py +0 -0
  503. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/deep_research/README.md +0 -0
  504. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/deep_research/__init__.py +0 -0
  505. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/deep_research/catalog_entry.py +0 -0
  506. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/deep_research/runtime.py +0 -0
  507. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/documentation.py +0 -0
  508. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/explore/README.md +0 -0
  509. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/explore/README.zh-CN.md +0 -0
  510. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/explore/__init__.py +0 -0
  511. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/explore/activation.py +0 -0
  512. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/explore/adaptive_replay_planner.py +0 -0
  513. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/explore/catalog_entry.py +0 -0
  514. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/explore/child_replay_runtime.py +0 -0
  515. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/explore/composition_frontier.py +0 -0
  516. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/explore/counterfactual_runtime.py +0 -0
  517. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/explore/episode_runtime.py +0 -0
  518. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/explore/harness_checkpoint.py +0 -0
  519. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/explore/harness_gate.py +0 -0
  520. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/explore/harness_runtime.py +0 -0
  521. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/explore/replay_metrics.py +0 -0
  522. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/explore/replay_runtime.py +0 -0
  523. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/explore/resource_portfolio.py +0 -0
  524. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/explore/result_log.py +0 -0
  525. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/explore/router_state.py +0 -0
  526. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/explore/source_history_reconcile.py +0 -0
  527. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/explore/speculative_scheduler.py +0 -0
  528. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/explore/todo_branch_plan.py +0 -0
  529. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/explore/todo_evidence.py +0 -0
  530. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/explore/trace_runtime.py +0 -0
  531. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/explore/worker_branch_plan.py +0 -0
  532. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/integration_branch/README.md +0 -0
  533. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/integration_branch/__init__.py +0 -0
  534. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/integration_branch/catalog_entry.py +0 -0
  535. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/integration_branch/cli.py +0 -0
  536. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/integration_branch/core.py +0 -0
  537. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/README.md +0 -0
  538. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/README.zh-CN.md +0 -0
  539. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/__init__.py +0 -0
  540. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/acceptance_loop.py +0 -0
  541. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/candidate_evidence.py +0 -0
  542. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/candidate_preflight.py +0 -0
  543. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/catalog_entry.py +0 -0
  544. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/cli.py +0 -0
  545. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/cli_input.py +0 -0
  546. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/content_ops_cli.py +0 -0
  547. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/discovered_issue_promotion.py +0 -0
  548. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/docs/openviking-pilot-handoff.md +0 -0
  549. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/docs/protocols/issue-fix-acceptance-loop-v0.md +0 -0
  550. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/docs/protocols/issue-fix-discovered-issue-promotion-v0.md +0 -0
  551. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/docs/protocols/issue-fix-metrics-projection-v0.md +0 -0
  552. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/docs/protocols/issue-fix-reviewer-notification-sinks-v0.md +0 -0
  553. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/docs/protocols/issue-fix-reviewer-recommendation-v0.md +0 -0
  554. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/docs/protocols/issue-fix-reviewer-request-v0.md +0 -0
  555. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/docs/protocols/issue-fix-workflow-contract-v0.md +0 -0
  556. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/docs/state-kernel-domain-state-case-study.zh-CN.md +0 -0
  557. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/explore_projection.py +0 -0
  558. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/feasibility.py +0 -0
  559. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/github_public.py +0 -0
  560. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/intake_surface.py +0 -0
  561. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/metadata_preview.py +0 -0
  562. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/metrics_projection.py +0 -0
  563. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/metrics_supplement.py +0 -0
  564. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/metrics_supplement_cli.py +0 -0
  565. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/outcome_projection.py +0 -0
  566. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/periodic_report.py +0 -0
  567. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/pr_description.py +0 -0
  568. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/pr_gate_reconcile.py +0 -0
  569. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/pr_gate_reconcile_cli.py +0 -0
  570. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/pr_lifecycle.py +0 -0
  571. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/pr_lifecycle_rollout.py +0 -0
  572. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/pr_monitor_materialization.py +0 -0
  573. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/pr_review_ack.py +0 -0
  574. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/provider_hooks.py +0 -0
  575. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/repository_commit_evidence.py +0 -0
  576. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/repository_context.py +0 -0
  577. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/repository_memory.py +0 -0
  578. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/repository_memory_provider.py +0 -0
  579. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/repository_snapshot.py +0 -0
  580. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/reviewer_cli.py +0 -0
  581. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/reviewer_notification.py +0 -0
  582. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/reviewer_notification_drain.py +0 -0
  583. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/reviewer_recommendation.py +0 -0
  584. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/reviewer_request.py +0 -0
  585. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/reward_memory.py +0 -0
  586. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/issue_fix/workflow_plan.py +0 -0
  587. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/machine_configuration/__init__.py +0 -0
  588. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/machine_configuration/builtins.py +0 -0
  589. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/machine_configuration/cli.py +0 -0
  590. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/machine_configuration/contract.py +0 -0
  591. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/machine_configuration/store.py +0 -0
  592. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/material_lifecycle/README.md +0 -0
  593. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/material_lifecycle/README.zh-CN.md +0 -0
  594. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/material_lifecycle/__init__.py +0 -0
  595. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/material_lifecycle/_validation.py +0 -0
  596. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/material_lifecycle/apply.py +0 -0
  597. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/material_lifecycle/architecture.py +0 -0
  598. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/material_lifecycle/catalog_entry.py +0 -0
  599. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/material_lifecycle/cli.py +0 -0
  600. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/material_lifecycle/decision_planning.py +0 -0
  601. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/material_lifecycle/explore_execution.py +0 -0
  602. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/material_lifecycle/intake.py +0 -0
  603. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/material_lifecycle/inventory.py +0 -0
  604. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/material_lifecycle/lifecycle.py +0 -0
  605. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/material_lifecycle/preparation.py +0 -0
  606. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/material_lifecycle/project_skill.py +0 -0
  607. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/material_lifecycle/ranking.py +0 -0
  608. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/material_lifecycle/readable_projection.py +0 -0
  609. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/material_lifecycle/rebuild.py +0 -0
  610. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/material_lifecycle/settlement.py +0 -0
  611. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/periodic_report/__init__.py +0 -0
  612. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/periodic_report/adapters.py +0 -0
  613. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/periodic_report/archive.py +0 -0
  614. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/periodic_report/audience.py +0 -0
  615. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/periodic_report/bindings.py +0 -0
  616. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/periodic_report/catalog_entry.py +0 -0
  617. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/periodic_report/core.py +0 -0
  618. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/periodic_report/extension_envelope.py +0 -0
  619. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/periodic_report/goal_configuration.py +0 -0
  620. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/periodic_report/incremental.py +0 -0
  621. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/periodic_report/machine_store.py +0 -0
  622. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/periodic_report/presets.py +0 -0
  623. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/periodic_report/profile.py +0 -0
  624. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/periodic_report/project_progress.py +0 -0
  625. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/periodic_report/project_progress_snapshot.py +0 -0
  626. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/periodic_report/runtime_producer.py +0 -0
  627. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/periodic_report/stage_completion.py +0 -0
  628. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/periodic_report/triggers.py +0 -0
  629. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/periodic_report/workspace.py +0 -0
  630. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/pr_review_queue/__init__.py +0 -0
  631. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/pr_review_queue/core.py +0 -0
  632. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/project_skill_delivery/README.md +0 -0
  633. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/project_skill_delivery/__init__.py +0 -0
  634. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/project_skill_delivery/catalog_entry.py +0 -0
  635. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/project_skill_delivery/cli.py +0 -0
  636. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/project_skill_delivery/core.py +0 -0
  637. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/public_safe_outbound/README.md +0 -0
  638. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/public_safe_outbound/__init__.py +0 -0
  639. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/public_safe_outbound/catalog_entry.py +0 -0
  640. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/public_safe_outbound/scan_cli.py +0 -0
  641. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/public_safe_outbound/scanner.py +0 -0
  642. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/public_safe_outbound/tests/test_scanner.py +0 -0
  643. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/registry.py +0 -0
  644. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reliability_diagnostics/README.md +0 -0
  645. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reliability_diagnostics/README.zh-CN.md +0 -0
  646. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reliability_diagnostics/__init__.py +0 -0
  647. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reliability_diagnostics/catalog_entry.py +0 -0
  648. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reliability_diagnostics/envelope.py +0 -0
  649. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reliability_diagnostics/fixture.py +0 -0
  650. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reliability_diagnostics/intake.py +0 -0
  651. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reliability_diagnostics/ledger.py +0 -0
  652. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reliability_diagnostics/projection.py +0 -0
  653. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reliability_diagnostics/receipt.py +0 -0
  654. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/repository_change_window/README.md +0 -0
  655. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/repository_change_window/__init__.py +0 -0
  656. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/repository_change_window/catalog_entry.py +0 -0
  657. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/repository_change_window/cli.py +0 -0
  658. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/repository_change_window/git_hook.py +0 -0
  659. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/repository_change_window/interaction_hook.py +0 -0
  660. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/repository_change_window/ledger.py +0 -0
  661. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/repository_change_window/policy.py +0 -0
  662. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/repository_change_window/repository.py +0 -0
  663. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reward_memory/README.zh-CN.md +0 -0
  664. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reward_memory/__init__.py +0 -0
  665. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reward_memory/architecture.py +0 -0
  666. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reward_memory/candidate_review.py +0 -0
  667. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reward_memory/catalog_entry.py +0 -0
  668. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reward_memory/cli.py +0 -0
  669. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reward_memory/dogfood.py +0 -0
  670. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reward_memory/evaluation.py +0 -0
  671. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reward_memory/evaluation_fixtures.py +0 -0
  672. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reward_memory/health.py +0 -0
  673. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reward_memory/ingestion.py +0 -0
  674. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reward_memory/memory_utility.py +0 -0
  675. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reward_memory/registry.py +0 -0
  676. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reward_memory/runtime_hooks.py +0 -0
  677. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/reward_memory/scoped_feedback.py +0 -0
  678. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/semantic_preference/README.md +0 -0
  679. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/semantic_preference/__init__.py +0 -0
  680. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/semantic_preference/catalog_entry.py +0 -0
  681. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/semantic_preference/cli.py +0 -0
  682. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/semantic_preference/contract.py +0 -0
  683. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/semantic_preference/docs/openviking-project-peer.md +0 -0
  684. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/semantic_preference/reward_memory.py +0 -0
  685. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/value_connectors/README.md +0 -0
  686. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/value_connectors/__init__.py +0 -0
  687. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/value_connectors/catalog_entry.py +0 -0
  688. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/value_connectors/cli.py +0 -0
  689. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/value_connectors/docs/agent-reach-ops-source-map.md +0 -0
  690. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/value_connectors/docs/finance-market-snapshot-probe.md +0 -0
  691. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/value_connectors/finance_extension_migration.py +0 -0
  692. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/value_connectors/install_check.py +0 -0
  693. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/value_connectors/planner.py +0 -0
  694. {loopx-1.0.0 → loopx-1.0.2}/loopx/capabilities/value_connectors/source_map.py +0 -0
  695. {loopx-1.0.0 → loopx-1.0.2}/loopx/chat.py +0 -0
  696. {loopx-1.0.0 → loopx-1.0.2}/loopx/chat_acp.py +0 -0
  697. {loopx-1.0.0 → loopx-1.0.2}/loopx/chat_action_store.py +0 -0
  698. {loopx-1.0.0 → loopx-1.0.2}/loopx/chat_actions.py +0 -0
  699. {loopx-1.0.0 → loopx-1.0.2}/loopx/chat_agent.py +0 -0
  700. {loopx-1.0.0 → loopx-1.0.2}/loopx/chat_attachments.py +0 -0
  701. {loopx-1.0.0 → loopx-1.0.2}/loopx/chat_completed_todos.py +0 -0
  702. {loopx-1.0.0 → loopx-1.0.2}/loopx/chat_configuration_api.py +0 -0
  703. {loopx-1.0.0 → loopx-1.0.2}/loopx/chat_endpoints.py +0 -0
  704. {loopx-1.0.0 → loopx-1.0.2}/loopx/chat_goal_lifecycle_actions.py +0 -0
  705. {loopx-1.0.0 → loopx-1.0.2}/loopx/chat_goal_subagent_api.py +0 -0
  706. {loopx-1.0.0 → loopx-1.0.2}/loopx/chat_machine_configuration_api.py +0 -0
  707. {loopx-1.0.0 → loopx-1.0.2}/loopx/chat_monitor_actions.py +0 -0
  708. {loopx-1.0.0 → loopx-1.0.2}/loopx/chat_providers.py +0 -0
  709. {loopx-1.0.0 → loopx-1.0.2}/loopx/chat_ssh_source_api.py +0 -0
  710. {loopx-1.0.0 → loopx-1.0.2}/loopx/chat_status_api.py +0 -0
  711. {loopx-1.0.0 → loopx-1.0.2}/loopx/chat_todo_actions.py +0 -0
  712. {loopx-1.0.0 → loopx-1.0.2}/loopx/chat_workspace_directory.py +0 -0
  713. {loopx-1.0.0 → loopx-1.0.2}/loopx/claude_goal_mode/README.md +0 -0
  714. {loopx-1.0.0 → loopx-1.0.2}/loopx/claude_goal_mode/__init__.py +0 -0
  715. {loopx-1.0.0 → loopx-1.0.2}/loopx/claude_goal_mode/hooks/goal_policy.py +0 -0
  716. {loopx-1.0.0 → loopx-1.0.2}/loopx/claude_goal_mode/hooks/goal_state.py +0 -0
  717. {loopx-1.0.0 → loopx-1.0.2}/loopx/claude_goal_mode/mcp/loopx_mcp.py +0 -0
  718. {loopx-1.0.0 → loopx-1.0.2}/loopx/claude_goal_mode/scripts/connect.py +0 -0
  719. {loopx-1.0.0 → loopx-1.0.2}/loopx/claude_goal_mode/scripts/goalmode_cmd.py +0 -0
  720. {loopx-1.0.0 → loopx-1.0.2}/loopx/claude_goal_mode/scripts/install.py +0 -0
  721. {loopx-1.0.0 → loopx-1.0.2}/loopx/claude_goal_mode/statusline/goal_status.py +0 -0
  722. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/_host_thread.py +0 -0
  723. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/authority_shadow.py +0 -0
  724. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/benchmark_boundary.py +0 -0
  725. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/benchmark_concurrency.py +0 -0
  726. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/benchmark_experiment_board.py +0 -0
  727. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/canary.py +0 -0
  728. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/canary_release_qualification.py +0 -0
  729. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/capability.py +0 -0
  730. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/dash.py +0 -0
  731. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/deepresearch.py +0 -0
  732. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/dreaming.py +0 -0
  733. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/evidence_log.py +0 -0
  734. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/explore.py +0 -0
  735. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/explore_feishu_commands.py +0 -0
  736. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/explore_planning_commands.py +0 -0
  737. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/extension.py +0 -0
  738. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/first_run_report.py +0 -0
  739. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/goal_channel.py +0 -0
  740. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/goal_lifecycle.py +0 -0
  741. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/history.py +0 -0
  742. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/host_mode_plan.py +0 -0
  743. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/lark_kanban.py +0 -0
  744. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/ml_experiment.py +0 -0
  745. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/opencode2_goal_worker.py +0 -0
  746. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/presentation.py +0 -0
  747. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/preset.py +0 -0
  748. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/project_lifecycle_sinks.py +0 -0
  749. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/quota_host_poll.py +0 -0
  750. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/quota_monitor_poll.py +0 -0
  751. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/quota_registration.py +0 -0
  752. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/quota_request.py +0 -0
  753. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/quota_scheduler_followup.py +0 -0
  754. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/ready_score.py +0 -0
  755. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/registry_admin_peer.py +0 -0
  756. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/registry_admin_thread_resolution.py +0 -0
  757. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/registry_authority.py +0 -0
  758. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/reliability_diagnostics.py +0 -0
  759. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/review_batch.py +0 -0
  760. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/shared_goal_alignment.py +0 -0
  761. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/slash_commands.py +0 -0
  762. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/start_goal.py +0 -0
  763. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/starter.py +0 -0
  764. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/starter_bootstrap.py +0 -0
  765. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/starter_bootstrap_registration.py +0 -0
  766. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/starter_runtime_idle.py +0 -0
  767. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/starter_scheduler.py +0 -0
  768. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/starter_session_runtime.py +0 -0
  769. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/starter_visible_common.py +0 -0
  770. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/starter_visible_driver.py +0 -0
  771. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/starter_visible_pilot.py +0 -0
  772. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/status_registration.py +0 -0
  773. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/summary_all.py +0 -0
  774. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/support_control.py +0 -0
  775. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/support_control_backup.py +0 -0
  776. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/support_control_chat_endpoint.py +0 -0
  777. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/support_control_heartbeat_registration.py +0 -0
  778. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/support_control_registry.py +0 -0
  779. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/support_control_supervisor.py +0 -0
  780. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/turn_dsh_host.py +0 -0
  781. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/turn_inspection.py +0 -0
  782. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/turn_registration.py +0 -0
  783. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/turn_rendering.py +0 -0
  784. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/turn_selection.py +0 -0
  785. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/turn_todo_writeback.py +0 -0
  786. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/version.py +0 -0
  787. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/worker_bridge.py +0 -0
  788. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_commands/workflow_skills.py +0 -0
  789. {loopx-1.0.0 → loopx-1.0.2}/loopx/cli_runtime.py +0 -0
  790. {loopx-1.0.0 → loopx-1.0.2}/loopx/codex_cli_probe.py +0 -0
  791. {loopx-1.0.0 → loopx-1.0.2}/loopx/codex_cli_probe_markdown.py +0 -0
  792. {loopx-1.0.0 → loopx-1.0.2}/loopx/codex_cli_runtime_probe.py +0 -0
  793. {loopx-1.0.0 → loopx-1.0.2}/loopx/codex_cli_scheduler.py +0 -0
  794. {loopx-1.0.0 → loopx-1.0.2}/loopx/command_invocation.py +0 -0
  795. {loopx-1.0.0 → loopx-1.0.2}/loopx/configuration_transaction.py +0 -0
  796. {loopx-1.0.0 → loopx-1.0.2}/loopx/contract.py +0 -0
  797. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/__init__.py +0 -0
  798. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/agents/__init__.py +0 -0
  799. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/agents/agent_lane_recommendation.py +0 -0
  800. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/agents/agent_scope.py +0 -0
  801. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/agents/agent_scope_frontier.py +0 -0
  802. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/agents/capability_gate.py +0 -0
  803. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/agents/delivery_workspace.py +0 -0
  804. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/agents/delivery_workspace.ts +0 -0
  805. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/agents/identity.py +0 -0
  806. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/agents/legacy_migration.py +0 -0
  807. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/agents/management_projection.py +0 -0
  808. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/agents/material_frontier.py +0 -0
  809. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/agents/material_handoff.py +0 -0
  810. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/agents/profile.py +0 -0
  811. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/agents/runtime_model.py +0 -0
  812. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/agents/subagent_activity.py +0 -0
  813. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/agents/supervisor.py +0 -0
  814. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/agents/supervisor_events.py +0 -0
  815. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/agents/supervisor_inject.py +0 -0
  816. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/agents/work_mode.py +0 -0
  817. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/agents/workspace_guard.py +0 -0
  818. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/coordination/__init__.py +0 -0
  819. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/coordination/authority_store.ts +0 -0
  820. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/coordination/authority_store_codec.ts +0 -0
  821. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/coordination/configuration.py +0 -0
  822. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/coordination/coordination_projection.ts +0 -0
  823. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/coordination/coordination_state_contract.py +0 -0
  824. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/coordination/coordination_state_contract.ts +0 -0
  825. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/coordination/file_provider.py +0 -0
  826. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/coordination/goal_state_shadow.py +0 -0
  827. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/coordination/head.py +0 -0
  828. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/coordination/local_authority_shadow_projection.py +0 -0
  829. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/coordination/local_snapshot.py +0 -0
  830. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/coordination/nokv_authority_store.ts +0 -0
  831. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/coordination/nokv_jsonl_helper.py +0 -0
  832. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/coordination/nokv_jsonl_transport.ts +0 -0
  833. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/coordination/postgresql_authority_store.ts +0 -0
  834. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/coordination/todo_compatibility_edit.ts +0 -0
  835. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/effect_program.py +0 -0
  836. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/effect_program.ts +0 -0
  837. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/effect_runtime_errors.ts +0 -0
  838. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/effect_runtime_io.ts +0 -0
  839. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/effect_runtime_server.ts +0 -0
  840. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/__init__.py +0 -0
  841. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/activation.py +0 -0
  842. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/activation_service.py +0 -0
  843. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/active_state_event_projection.py +0 -0
  844. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/active_state_metadata.py +0 -0
  845. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/active_state_sections.py +0 -0
  846. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/botmux_runtime.py +0 -0
  847. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/configure_goal_service.py +0 -0
  848. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/contract_health.py +0 -0
  849. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/deletion_service.py +0 -0
  850. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/dreaming.py +0 -0
  851. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/global_registry_health.py +0 -0
  852. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/global_registry_shadow.py +0 -0
  853. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/goal_channel.py +0 -0
  854. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/goal_channel_projection.py +0 -0
  855. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/goal_frontier/outcome_continuity.py +0 -0
  856. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/goal_frontier/replan_rules.py +0 -0
  857. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/goal_frontier/terminal.py +0 -0
  858. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/goal_vision_state.py +0 -0
  859. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/path_resolution.py +0 -0
  860. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/shared_goal_alignment.py +0 -0
  861. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/shared_goal_alignment.ts +0 -0
  862. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/start_contract.py +0 -0
  863. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/start_goal_todo_delta.py +0 -0
  864. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/goals/vision_checkpoint.py +0 -0
  865. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/governed_capability.ts +0 -0
  866. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/handoff/__init__.py +0 -0
  867. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/handoff/cross_runtime_impl_review.py +0 -0
  868. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/handoff/delivery_contract.py +0 -0
  869. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/handoff/handoff_runs.py +0 -0
  870. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/handoff/project_handoff.py +0 -0
  871. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/handoff/review_batch.py +0 -0
  872. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/handoff/review_packet_context.py +0 -0
  873. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/heartbeat/agent.py +0 -0
  874. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/heartbeat/budget.py +0 -0
  875. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/heartbeat/builder.py +0 -0
  876. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/heartbeat/host.py +0 -0
  877. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/heartbeat/rules.py +0 -0
  878. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/heartbeat/task_body.py +0 -0
  879. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/heartbeat/visible_goal.py +0 -0
  880. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/host_adapter_settlement.py +0 -0
  881. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/operator_inbox_binding.py +0 -0
  882. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/projects/__init__.py +0 -0
  883. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/projects/contract.py +0 -0
  884. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/__init__.py +0 -0
  885. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/accounting_artifact_transaction.ts +0 -0
  886. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/cli_projection.py +0 -0
  887. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/decision_summary.py +0 -0
  888. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/effect_program.py +0 -0
  889. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/error_codes.py +0 -0
  890. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/goal_boundary.py +0 -0
  891. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/heartbeat_receipt.py +0 -0
  892. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/heartbeat_recommendation.py +0 -0
  893. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/host_poll_receipts.py +0 -0
  894. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/live_decision.py +0 -0
  895. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/monitor_poll.py +0 -0
  896. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/monitor_poll_commit.ts +0 -0
  897. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/policy_constants.py +0 -0
  898. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/projection_repair.py +0 -0
  899. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/recent_runs.py +0 -0
  900. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/refresh_recovery.ts +0 -0
  901. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/scheduler_ack.py +0 -0
  902. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/selected_todo_projection.py +0 -0
  903. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/settlement_cli.py +0 -0
  904. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/settlement_phase.ts +0 -0
  905. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/settlement_precedence.py +0 -0
  906. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/settlement_readback.ts +0 -0
  907. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/settlement_validation.py +0 -0
  908. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/settlement_workspace_causality.py +0 -0
  909. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/settlement_workspace_causality.ts +0 -0
  910. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/should_run.py +0 -0
  911. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/should_run_packet.py +0 -0
  912. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/slot_accounting.py +0 -0
  913. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/spend_commit.py +0 -0
  914. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/spend_commit.ts +0 -0
  915. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/spend_sources.py +0 -0
  916. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/stall_repair.py +0 -0
  917. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/states.py +0 -0
  918. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/task_orchestration.py +0 -0
  919. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/task_orchestration_admission.py +0 -0
  920. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/turn_envelope.py +0 -0
  921. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/turn_envelope.ts +0 -0
  922. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/usage_collector.py +0 -0
  923. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/usage_summary.py +0 -0
  924. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/void_commit.py +0 -0
  925. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/quota/void_commit.ts +0 -0
  926. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/reward_memory.py +0 -0
  927. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/__init__.py +0 -0
  928. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/agent_scoped_evidence_log.py +0 -0
  929. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/decision_freshness.py +0 -0
  930. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/event_ledger.py +0 -0
  931. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/event_store_migration_bridge.py +0 -0
  932. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/goal_project_route.py +0 -0
  933. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/local_state_write_correctness.py +0 -0
  934. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/promotion_readiness.py +0 -0
  935. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/public_safety.py +0 -0
  936. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/run_artifacts.py +0 -0
  937. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/run_compaction.py +0 -0
  938. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/run_context_retention.py +0 -0
  939. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/run_history.py +0 -0
  940. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/run_index_duplicates.py +0 -0
  941. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/run_index_rebuild.py +0 -0
  942. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/runtime_projection_route.py +0 -0
  943. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/runtime_projection_writer.py +0 -0
  944. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/session_runtime.py +0 -0
  945. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/shared_runtime_material_projection.py +0 -0
  946. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/shared_runtime_refresh_projection.py +0 -0
  947. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/stale_latest_run.py +0 -0
  948. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/status_classifications.py +0 -0
  949. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/status_projection_cache.py +0 -0
  950. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/stride_observation.py +0 -0
  951. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/time.py +0 -0
  952. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/trajectory_hygiene.py +0 -0
  953. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime/validation_command.py +0 -0
  954. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/runtime_decode.ts +0 -0
  955. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/scheduler/__init__.py +0 -0
  956. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/scheduler/arbitration.py +0 -0
  957. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/scheduler/automation_liveness.py +0 -0
  958. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/scheduler/execution_context.py +0 -0
  959. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/scheduler/external_evidence_observation.py +0 -0
  960. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/scheduler/heartbeat_commit.ts +0 -0
  961. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/scheduler/heartbeat_commit_cli.ts +0 -0
  962. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/scheduler/heartbeat_followup.ts +0 -0
  963. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/scheduler/heartbeat_followup_cli.ts +0 -0
  964. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/scheduler/monitor_display.py +0 -0
  965. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/scheduler/monitor_poll_writeback.py +0 -0
  966. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/scheduler/monitor_todo.py +0 -0
  967. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/scheduler/monitor_wait.py +0 -0
  968. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/scheduler/scheduler_hint.py +0 -0
  969. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/scheduler/state.py +0 -0
  970. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/scheduler/state_store.ts +0 -0
  971. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/scheduler/state_transition_rules.py +0 -0
  972. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/scheduler/state_transition_rules.ts +0 -0
  973. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/scheduler/time.py +0 -0
  974. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/settlement_driver.py +0 -0
  975. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/status/__init__.py +0 -0
  976. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/status/active_state_projection.py +0 -0
  977. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/status/agent_lane_projection.py +0 -0
  978. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/status/attention_projection.py +0 -0
  979. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/status/autonomous_replan_projection.py +0 -0
  980. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/status/collection.py +0 -0
  981. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/status/contract_projection.py +0 -0
  982. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/status/dreaming_projection.py +0 -0
  983. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/status/goal_attention_projection.py +0 -0
  984. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/status/lifecycle_projection.py +0 -0
  985. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/status/monitor_display_projection.py +0 -0
  986. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/status/registry_health_projection.py +0 -0
  987. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/status/run_projection.py +0 -0
  988. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/status/runtime_summaries.py +0 -0
  989. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/status/ssh_host_catalog.py +0 -0
  990. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/status/ssh_tunnel.py +0 -0
  991. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/__init__.py +0 -0
  992. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/action_portfolio_scenarios.py +0 -0
  993. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/actual_default_model_behavior_portfolio.py +0 -0
  994. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/authority_e2e_fixtures.py +0 -0
  995. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/authority_e2e_ladder.py +0 -0
  996. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/authority_e2e_row_support.py +0 -0
  997. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/authority_e2e_rows_stage2c.py +0 -0
  998. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/canary_harness.py +0 -0
  999. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/capability_monitor_repair_tool_behavior.py +0 -0
  1000. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/cli_output_budget.py +0 -0
  1001. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/cli_output_differential.py +0 -0
  1002. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/cli_output_semantics.py +0 -0
  1003. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/control_plane_composition_scenarios.py +0 -0
  1004. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/decision_replay.py +0 -0
  1005. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/doubao_model_behavior_actor.py +0 -0
  1006. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/model_behavior_action_oracles.py +0 -0
  1007. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/model_behavior_corpus.py +0 -0
  1008. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/model_behavior_qualification.py +0 -0
  1009. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/model_behavior_retained_cases.py +0 -0
  1010. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/model_tool_behavior.py +0 -0
  1011. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/onboarding_model_behavior_qualification.py +0 -0
  1012. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/quota_fixtures.py +0 -0
  1013. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/quota_should_run_parity.py +0 -0
  1014. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/release_commit_qualification.py +0 -0
  1015. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/replan_semantic_action_behavior.py +0 -0
  1016. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/scoped_gate_successor_tool_behavior.py +0 -0
  1017. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/selected_todo_tool_behavior.py +0 -0
  1018. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/terminal_settlement_tool_behavior.py +0 -0
  1019. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/testing/turn_journal_characterization.py +0 -0
  1020. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/__init__.py +0 -0
  1021. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/addition.py +0 -0
  1022. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/claim_visibility.py +0 -0
  1023. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/completion_fence.py +0 -0
  1024. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/completion_fence.ts +0 -0
  1025. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/completion_state.py +0 -0
  1026. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/completion_state.ts +0 -0
  1027. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/completion_validation_accountability.py +0 -0
  1028. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/completion_validation_plan.ts +0 -0
  1029. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/decision_scope.py +0 -0
  1030. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/deferred_resume.py +0 -0
  1031. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/external_wait_contract.py +0 -0
  1032. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/external_wait_writeback.py +0 -0
  1033. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/frontier_deadline.py +0 -0
  1034. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/goal_todo_projection.py +0 -0
  1035. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/handoff_gate.py +0 -0
  1036. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/handoff_note.py +0 -0
  1037. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/line_update.py +0 -0
  1038. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/list_projection.py +0 -0
  1039. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/markdown.py +0 -0
  1040. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/monitor_metadata.py +0 -0
  1041. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/next_action.ts +0 -0
  1042. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/next_action_runtime.py +0 -0
  1043. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/resume_condition.py +0 -0
  1044. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/resume_condition.ts +0 -0
  1045. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/route_continuation.py +0 -0
  1046. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/succession_warning.py +0 -0
  1047. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/summary_item.py +0 -0
  1048. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/text.py +0 -0
  1049. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/todo_index.py +0 -0
  1050. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/unblock_resume.py +0 -0
  1051. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/user_gate.py +0 -0
  1052. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/write_correctness.py +0 -0
  1053. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/write_hint.py +0 -0
  1054. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/todos/write_policy.py +0 -0
  1055. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/turn_driver/__init__.py +0 -0
  1056. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/turn_driver/codex_cli.py +0 -0
  1057. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/turn_driver/delivery_continuity.py +0 -0
  1058. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/turn_driver/delivery_continuity.ts +0 -0
  1059. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/turn_driver/driver.py +0 -0
  1060. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/turn_driver/executor.py +0 -0
  1061. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/turn_driver/host_failure.py +0 -0
  1062. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/turn_driver/host_todo_completion.ts +0 -0
  1063. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/turn_driver/journal_store.py +0 -0
  1064. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/turn_driver/loop_controller.py +0 -0
  1065. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/turn_driver/recovery.py +0 -0
  1066. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/turn_driver/session_recovery.py +0 -0
  1067. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/turn_driver/settlement.py +0 -0
  1068. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/turn_driver/settlement.ts +0 -0
  1069. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/turn_driver/subagent_execution_topology.py +0 -0
  1070. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/turn_driver/subagent_host_adapter.py +0 -0
  1071. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/turn_driver/transaction.py +0 -0
  1072. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/turn_driver/turn_journal.ts +0 -0
  1073. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/turn_driver/turn_journal_effects.ts +0 -0
  1074. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/turn_driver/turn_journal_runtime.py +0 -0
  1075. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/turn_transaction_contract.json +0 -0
  1076. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/__init__.py +0 -0
  1077. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/accountable_settlement.py +0 -0
  1078. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/action_portfolio.py +0 -0
  1079. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/action_portfolio.ts +0 -0
  1080. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/action_selection_contract.py +0 -0
  1081. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/attention_fields.py +0 -0
  1082. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/attention_item.py +0 -0
  1083. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/attention_queue.py +0 -0
  1084. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/attention_routing.py +0 -0
  1085. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/autonomous_candidates.py +0 -0
  1086. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/autonomous_replan_ack.py +0 -0
  1087. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/autonomous_replan_obligation.py +0 -0
  1088. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/backlog_hygiene.py +0 -0
  1089. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/capability_monitor_fallback.py +0 -0
  1090. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/delivery_batch_scale.py +0 -0
  1091. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/delivery_outcome.py +0 -0
  1092. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/delivery_outcome.ts +0 -0
  1093. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/delivery_signals.py +0 -0
  1094. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/execution_obligation.py +0 -0
  1095. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/goal_route_hint.py +0 -0
  1096. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/governed_transition_proposal.py +0 -0
  1097. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/interaction_contract.py +0 -0
  1098. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/interaction_contract.ts +0 -0
  1099. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/issue_meta_surface.py +0 -0
  1100. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/lifecycle.py +0 -0
  1101. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/local_lease_record.py +0 -0
  1102. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/operator_inbox.py +0 -0
  1103. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/outcome_followthrough.py +0 -0
  1104. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/pending_capability_intent.ts +0 -0
  1105. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/planning_horizon.ts +0 -0
  1106. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/planning_inventory.py +0 -0
  1107. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/planning_inventory.ts +0 -0
  1108. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/primary_action.py +0 -0
  1109. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/progress_observation.py +0 -0
  1110. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/progress_result.py +0 -0
  1111. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/project_asset.py +0 -0
  1112. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/refresh_recommendation.py +0 -0
  1113. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/refresh_recommendation.ts +0 -0
  1114. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/repair_delta.py +0 -0
  1115. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/replan_settlement.py +0 -0
  1116. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/replan_settlement.ts +0 -0
  1117. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/repository_delivery.ts +0 -0
  1118. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/runtime_capability_reentry.py +0 -0
  1119. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/status_contract.py +0 -0
  1120. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/task_graph.py +0 -0
  1121. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/task_lease.py +0 -0
  1122. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/task_lease_acquire_cli.ts +0 -0
  1123. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/task_lease_lifecycle_decision.ts +0 -0
  1124. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/user_action_frontier.py +0 -0
  1125. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/work_lane.py +0 -0
  1126. {loopx-1.0.0 → loopx-1.0.2}/loopx/control_plane/work_items/work_lane_context.py +0 -0
  1127. {loopx-1.0.0 → loopx-1.0.2}/loopx/dash_server.py +0 -0
  1128. {loopx-1.0.0 → loopx-1.0.2}/loopx/dashboard_launcher.py +0 -0
  1129. {loopx-1.0.0 → loopx-1.0.2}/loopx/demo.py +0 -0
  1130. {loopx-1.0.0 → loopx-1.0.2}/loopx/diagnose.py +0 -0
  1131. {loopx-1.0.0 → loopx-1.0.2}/loopx/domain_packs/__init__.py +0 -0
  1132. {loopx-1.0.0 → loopx-1.0.2}/loopx/domain_packs/issue_fix.py +0 -0
  1133. {loopx-1.0.0 → loopx-1.0.2}/loopx/domain_packs/ml_experiment.py +0 -0
  1134. {loopx-1.0.0 → loopx-1.0.2}/loopx/domain_state.py +0 -0
  1135. {loopx-1.0.0 → loopx-1.0.2}/loopx/dreaming.py +0 -0
  1136. {loopx-1.0.0 → loopx-1.0.2}/loopx/dsh_goal_mode/README.md +0 -0
  1137. {loopx-1.0.0 → loopx-1.0.2}/loopx/dsh_goal_mode/__init__.py +0 -0
  1138. {loopx-1.0.0 → loopx-1.0.2}/loopx/dsh_goal_mode/__main__.py +0 -0
  1139. {loopx-1.0.0 → loopx-1.0.2}/loopx/dsh_goal_mode/host_failure_map.py +0 -0
  1140. {loopx-1.0.0 → loopx-1.0.2}/loopx/entrypoint.py +0 -0
  1141. {loopx-1.0.0 → loopx-1.0.2}/loopx/experiments/README.md +0 -0
  1142. {loopx-1.0.0 → loopx-1.0.2}/loopx/experiments/__init__.py +0 -0
  1143. {loopx-1.0.0 → loopx-1.0.2}/loopx/experiments/planner_worker/__init__.py +0 -0
  1144. {loopx-1.0.0 → loopx-1.0.2}/loopx/experiments/planner_worker/contract.py +0 -0
  1145. {loopx-1.0.0 → loopx-1.0.2}/loopx/experiments/planner_worker/runtime.py +0 -0
  1146. {loopx-1.0.0 → loopx-1.0.2}/loopx/experiments/planner_worker/traex.py +0 -0
  1147. {loopx-1.0.0 → loopx-1.0.2}/loopx/explore_graph.py +0 -0
  1148. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/__init__.py +0 -0
  1149. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/bundled.py +0 -0
  1150. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/capability_admission.py +0 -0
  1151. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/execution_envelope.py +0 -0
  1152. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/external_connector_provider.py +0 -0
  1153. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/external_connector_runtime.py +0 -0
  1154. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/governed_capability_execution.py +0 -0
  1155. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/__init__.py +0 -0
  1156. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/app_setup.py +0 -0
  1157. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/bot_scopes.py +0 -0
  1158. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/cli_resolution.py +0 -0
  1159. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/document_comment_provider.py +0 -0
  1160. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/event_collector.py +0 -0
  1161. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/event_collector_routes.py +0 -0
  1162. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/event_collector_runtime.py +0 -0
  1163. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/goal_channel.py +0 -0
  1164. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/goal_channel_lifecycle.py +0 -0
  1165. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/goal_channel_notification.py +0 -0
  1166. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/goal_channel_runtime.py +0 -0
  1167. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/goal_channel_targets.py +0 -0
  1168. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/inbox_reactions.py +0 -0
  1169. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/miaoda_report.py +0 -0
  1170. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/periodic_report_cli.py +0 -0
  1171. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/periodic_report_delivery.py +0 -0
  1172. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/presentation/__init__.py +0 -0
  1173. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/presentation/explore_results.py +0 -0
  1174. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/presentation/explore_singleflight.py +0 -0
  1175. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/presentation/explore_source_guard.py +0 -0
  1176. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/presentation/explore_stage_document.py +0 -0
  1177. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/presentation/explore_visual_integrity.py +0 -0
  1178. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/presentation/explore_visual_readback.py +0 -0
  1179. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/presentation/explore_visual_styles.py +0 -0
  1180. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/presentation/issue_fix_surface.py +0 -0
  1181. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/presentation/kanban.py +0 -0
  1182. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/presentation/message_card.py +0 -0
  1183. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/presentation/periodic_report.py +0 -0
  1184. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/presentation/projection_rows.py +0 -0
  1185. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/presentation/record_io.py +0 -0
  1186. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/presentation/sync_receipt.py +0 -0
  1187. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/private_json.py +0 -0
  1188. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/reviewer_notification.py +0 -0
  1189. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/lark/routed_inbox.py +0 -0
  1190. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/openviking_periodic_report/__init__.py +0 -0
  1191. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/openviking_periodic_report/activation.py +0 -0
  1192. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/openviking_periodic_report/extension.toml +0 -0
  1193. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/openviking_periodic_report/provider.py +0 -0
  1194. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/openviking_periodic_report/sink.py +0 -0
  1195. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/openviking_semantic_preference/__init__.py +0 -0
  1196. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/openviking_semantic_preference/extension.toml +0 -0
  1197. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/openviking_semantic_preference/history_export.py +0 -0
  1198. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/openviking_semantic_preference/project_peer.py +0 -0
  1199. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/openviking_semantic_preference/provider.py +0 -0
  1200. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/presentation.py +0 -0
  1201. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/process_runtime.py +0 -0
  1202. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/readiness.py +0 -0
  1203. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/runtime.py +0 -0
  1204. {loopx-1.0.0 → loopx-1.0.2}/loopx/extensions/scaffold.py +0 -0
  1205. {loopx-1.0.0 → loopx-1.0.2}/loopx/global_registry.py +0 -0
  1206. {loopx-1.0.0 → loopx-1.0.2}/loopx/global_risks.py +0 -0
  1207. {loopx-1.0.0 → loopx-1.0.2}/loopx/global_todos.py +0 -0
  1208. {loopx-1.0.0 → loopx-1.0.2}/loopx/goal_mode_context.py +0 -0
  1209. {loopx-1.0.0 → loopx-1.0.2}/loopx/goal_mode_mcp.py +0 -0
  1210. {loopx-1.0.0 → loopx-1.0.2}/loopx/handoff_budget.py +0 -0
  1211. {loopx-1.0.0 → loopx-1.0.2}/loopx/heartbeat_prequota.py +0 -0
  1212. {loopx-1.0.0 → loopx-1.0.2}/loopx/heartbeat_prompt.py +0 -0
  1213. {loopx-1.0.0 → loopx-1.0.2}/loopx/host_loop_activation.py +0 -0
  1214. {loopx-1.0.0 → loopx-1.0.2}/loopx/host_mode_planner.py +0 -0
  1215. {loopx-1.0.0 → loopx-1.0.2}/loopx/install_contract.py +0 -0
  1216. {loopx-1.0.0 → loopx-1.0.2}/loopx/interface_budget.py +0 -0
  1217. {loopx-1.0.0 → loopx-1.0.2}/loopx/kunluncode_goal_mode/README.md +0 -0
  1218. {loopx-1.0.0 → loopx-1.0.2}/loopx/kunluncode_goal_mode/__init__.py +0 -0
  1219. {loopx-1.0.0 → loopx-1.0.2}/loopx/kunluncode_goal_mode/app_server.py +0 -0
  1220. {loopx-1.0.0 → loopx-1.0.2}/loopx/kunluncode_goal_mode/cli.py +0 -0
  1221. {loopx-1.0.0 → loopx-1.0.2}/loopx/kunluncode_goal_mode/context.py +0 -0
  1222. {loopx-1.0.0 → loopx-1.0.2}/loopx/kunluncode_goal_mode/control_plane.py +0 -0
  1223. {loopx-1.0.0 → loopx-1.0.2}/loopx/kunluncode_goal_mode/guards.py +0 -0
  1224. {loopx-1.0.0 → loopx-1.0.2}/loopx/kunluncode_goal_mode/runtime.py +0 -0
  1225. {loopx-1.0.0 → loopx-1.0.2}/loopx/kunluncode_goal_mode/server.py +0 -0
  1226. {loopx-1.0.0 → loopx-1.0.2}/loopx/long_task_cadence.py +0 -0
  1227. {loopx-1.0.0 → loopx-1.0.2}/loopx/materials.py +0 -0
  1228. {loopx-1.0.0 → loopx-1.0.2}/loopx/ml_experiment.py +0 -0
  1229. {loopx-1.0.0 → loopx-1.0.2}/loopx/onboarding.py +0 -0
  1230. {loopx-1.0.0 → loopx-1.0.2}/loopx/opencode2_goal_mode/README.md +0 -0
  1231. {loopx-1.0.0 → loopx-1.0.2}/loopx/opencode2_goal_mode/__init__.py +0 -0
  1232. {loopx-1.0.0 → loopx-1.0.2}/loopx/opencode2_goal_mode/opencode2-goal-worker.mjs +0 -0
  1233. {loopx-1.0.0 → loopx-1.0.2}/loopx/opencode_goal_mode/README.md +0 -0
  1234. {loopx-1.0.0 → loopx-1.0.2}/loopx/opencode_goal_mode/__init__.py +0 -0
  1235. {loopx-1.0.0 → loopx-1.0.2}/loopx/opencode_goal_mode/goal-bridge-runtime.mjs +0 -0
  1236. {loopx-1.0.0 → loopx-1.0.2}/loopx/opencode_goal_mode/loopx-goal.js +0 -0
  1237. {loopx-1.0.0 → loopx-1.0.2}/loopx/operator_gate.py +0 -0
  1238. {loopx-1.0.0 → loopx-1.0.2}/loopx/paths.py +0 -0
  1239. {loopx-1.0.0 → loopx-1.0.2}/loopx/pi_goal_mode/README.md +0 -0
  1240. {loopx-1.0.0 → loopx-1.0.2}/loopx/pi_goal_mode/__init__.py +0 -0
  1241. {loopx-1.0.0 → loopx-1.0.2}/loopx/pi_goal_mode/loopx-goal.ts +0 -0
  1242. {loopx-1.0.0 → loopx-1.0.2}/loopx/pi_goal_mode/pi-goal-loop-runtime.mjs +0 -0
  1243. {loopx-1.0.0 → loopx-1.0.2}/loopx/pr_review.py +0 -0
  1244. {loopx-1.0.0 → loopx-1.0.2}/loopx/presentation/README.md +0 -0
  1245. {loopx-1.0.0 → loopx-1.0.2}/loopx/presentation/__init__.py +0 -0
  1246. {loopx-1.0.0 → loopx-1.0.2}/loopx/presentation/explore_views.py +0 -0
  1247. {loopx-1.0.0 → loopx-1.0.2}/loopx/presentation/markdown.py +0 -0
  1248. {loopx-1.0.0 → loopx-1.0.2}/loopx/presentation/projection_source_reconcile.py +0 -0
  1249. {loopx-1.0.0 → loopx-1.0.2}/loopx/presentation/projections/__init__.py +0 -0
  1250. {loopx-1.0.0 → loopx-1.0.2}/loopx/presentation/projections/session_dash.py +0 -0
  1251. {loopx-1.0.0 → loopx-1.0.2}/loopx/presentation/public_safety.py +0 -0
  1252. {loopx-1.0.0 → loopx-1.0.2}/loopx/presentation/renderers/__init__.py +0 -0
  1253. {loopx-1.0.0 → loopx-1.0.2}/loopx/presentation/renderers/goal_channel_html.py +0 -0
  1254. {loopx-1.0.0 → loopx-1.0.2}/loopx/presentation/renderers/periodic_report_html.py +0 -0
  1255. {loopx-1.0.0 → loopx-1.0.2}/loopx/presentation/renderers/periodic_report_markdown.py +0 -0
  1256. {loopx-1.0.0 → loopx-1.0.2}/loopx/presentation/renderers/quota_event_markdown.py +0 -0
  1257. {loopx-1.0.0 → loopx-1.0.2}/loopx/presentation/renderers/quota_markdown.py +0 -0
  1258. {loopx-1.0.0 → loopx-1.0.2}/loopx/presentation/renderers/session_dash_html.py +0 -0
  1259. {loopx-1.0.0 → loopx-1.0.2}/loopx/presentation/renderers/status_markdown.py +0 -0
  1260. {loopx-1.0.0 → loopx-1.0.2}/loopx/presentation/renderers/trajectory_hygiene_markdown.py +0 -0
  1261. {loopx-1.0.0 → loopx-1.0.2}/loopx/presentation/renderers/turn_envelope_markdown.py +0 -0
  1262. {loopx-1.0.0 → loopx-1.0.2}/loopx/presentation/sinks/__init__.py +0 -0
  1263. {loopx-1.0.0 → loopx-1.0.2}/loopx/presentation/sinks/openviking_periodic_report.py +0 -0
  1264. {loopx-1.0.0 → loopx-1.0.2}/loopx/presentation/static_site.py +0 -0
  1265. {loopx-1.0.0 → loopx-1.0.2}/loopx/presets.py +0 -0
  1266. {loopx-1.0.0 → loopx-1.0.2}/loopx/project_alias.py +0 -0
  1267. {loopx-1.0.0 → loopx-1.0.2}/loopx/project_map.py +0 -0
  1268. {loopx-1.0.0 → loopx-1.0.2}/loopx/project_prompt.py +0 -0
  1269. {loopx-1.0.0 → loopx-1.0.2}/loopx/project_uninstall.py +0 -0
  1270. {loopx-1.0.0 → loopx-1.0.2}/loopx/promotion_gate.py +0 -0
  1271. {loopx-1.0.0 → loopx-1.0.2}/loopx/python_install_owner.py +0 -0
  1272. {loopx-1.0.0 → loopx-1.0.2}/loopx/quota.py +0 -0
  1273. {loopx-1.0.0 → loopx-1.0.2}/loopx/ready_score.py +0 -0
  1274. {loopx-1.0.0 → loopx-1.0.2}/loopx/registry.py +0 -0
  1275. {loopx-1.0.0 → loopx-1.0.2}/loopx/registry_writability.py +0 -0
  1276. {loopx-1.0.0 → loopx-1.0.2}/loopx/release_manifest.py +0 -0
  1277. {loopx-1.0.0 → loopx-1.0.2}/loopx/repository_identity.py +0 -0
  1278. {loopx-1.0.0 → loopx-1.0.2}/loopx/review_packet.py +0 -0
  1279. {loopx-1.0.0 → loopx-1.0.2}/loopx/rollout_event_log.py +0 -0
  1280. {loopx-1.0.0 → loopx-1.0.2}/loopx/runtime.py +0 -0
  1281. {loopx-1.0.0 → loopx-1.0.2}/loopx/self_update.py +0 -0
  1282. {loopx-1.0.0 → loopx-1.0.2}/loopx/self_update_download.py +0 -0
  1283. {loopx-1.0.0 → loopx-1.0.2}/loopx/session_runtime.py +0 -0
  1284. {loopx-1.0.0 → loopx-1.0.2}/loopx/slash_command_files.py +0 -0
  1285. {loopx-1.0.0 → loopx-1.0.2}/loopx/slash_commands.py +0 -0
  1286. {loopx-1.0.0 → loopx-1.0.2}/loopx/state_backup.py +0 -0
  1287. {loopx-1.0.0 → loopx-1.0.2}/loopx/state_projection.py +0 -0
  1288. {loopx-1.0.0 → loopx-1.0.2}/loopx/status.py +0 -0
  1289. {loopx-1.0.0 → loopx-1.0.2}/loopx/summary_all.py +0 -0
  1290. {loopx-1.0.0 → loopx-1.0.2}/loopx/thread_agent_binding.py +0 -0
  1291. {loopx-1.0.0 → loopx-1.0.2}/loopx/todo_suggestion_prompt.py +0 -0
  1292. {loopx-1.0.0 → loopx-1.0.2}/loopx/turn_identity.py +0 -0
  1293. {loopx-1.0.0 → loopx-1.0.2}/loopx/upgrade.py +0 -0
  1294. {loopx-1.0.0 → loopx-1.0.2}/loopx/visible_governance.py +0 -0
  1295. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
  1296. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
  1297. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
  1298. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
  1299. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2 +0 -0
  1300. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2 +0 -0
  1301. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2 +0 -0
  1302. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2 +0 -0
  1303. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2 +0 -0
  1304. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2 +0 -0
  1305. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
  1306. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-0bhIx5_M.css +0 -0
  1307. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-4FpkdPZm.css +0 -0
  1308. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-5XHJEBmR.css +0 -0
  1309. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-6lOUUHx7.js +0 -0
  1310. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-87n1zlNJ.css +0 -0
  1311. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-9IiDicAv.js +0 -0
  1312. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-9d1S9bUM.css +0 -0
  1313. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-9wD_r5Rp.js +0 -0
  1314. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-B1C2FwbO.js +0 -0
  1315. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-B8L75LO_.js +0 -0
  1316. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-BEQmjl7v.js +0 -0
  1317. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-BGO6BJCs.js +0 -0
  1318. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-BGlIOe4t.js +0 -0
  1319. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-BP0RmPHX.css +0 -0
  1320. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-BP1QffUh.js +0 -0
  1321. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-BQbV8tqm.js +0 -0
  1322. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-BSxkq-RJ.css +0 -0
  1323. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-BUErjEJT.js +0 -0
  1324. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-BX4BmVJP.js +0 -0
  1325. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-BZ6v5kqr.js +0 -0
  1326. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-BZAVdCU1.js +0 -0
  1327. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-BbFX7OqK.js +0 -0
  1328. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-Bh5uiZqS.js +0 -0
  1329. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-Bmspg3Jw.css +0 -0
  1330. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-Bx6T9PIc.js +0 -0
  1331. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-C1OHhOOV.css +0 -0
  1332. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-C2CmDc5R.js +0 -0
  1333. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-C2EQGEVq.css +0 -0
  1334. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-C7_1lK3X.js +0 -0
  1335. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-CKyCniT-.js +0 -0
  1336. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-CLqMm9A9.js +0 -0
  1337. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-CSu-RA-2.css +0 -0
  1338. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-CThe5lVk.css +0 -0
  1339. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-CWBLcLBj.js +0 -0
  1340. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-CWu9Zb0m.css +0 -0
  1341. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-CYIgLUGs.js +0 -0
  1342. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-CaWp_NBN.css +0 -0
  1343. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-CbyH4L9F.js +0 -0
  1344. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-Ci7Bb-Hg.js +0 -0
  1345. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-CiiYGC4Q.js +0 -0
  1346. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-CnN4AJQ2.js +0 -0
  1347. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-Co9vSS-Z.css +0 -0
  1348. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-CuaTN_p4.js +0 -0
  1349. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-CxRl9_vT.js +0 -0
  1350. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-CyzsRtSq.js +0 -0
  1351. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-D2CGbqTd.css +0 -0
  1352. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-D9laKLBQ.css +0 -0
  1353. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-DC5HFDv1.js +0 -0
  1354. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-DI6Nc7FE.js +0 -0
  1355. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-DKJ5p2QF.css +0 -0
  1356. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-DKKSJxDm.css +0 -0
  1357. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-DLmo9pnP.css +0 -0
  1358. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-DODAzFAe.js +0 -0
  1359. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-DOLQXkmn.js +0 -0
  1360. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-DaU9YYwh.js +0 -0
  1361. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-Db3HU1A2.css +0 -0
  1362. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-DfZWJsx8.js +0 -0
  1363. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-DgCU_eGn.js +0 -0
  1364. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-DlWGFd3A.css +0 -0
  1365. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-Do79u7RP.css +0 -0
  1366. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-DpJpoD0M.js +0 -0
  1367. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-DqUh5BjW.js +0 -0
  1368. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-Dqp1Ys3x.js +0 -0
  1369. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-DuhTDceN.js +0 -0
  1370. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-Dv3QRK2m.js +0 -0
  1371. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-HvFwA8w4.css +0 -0
  1372. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-KX57MZ3S.js +0 -0
  1373. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-O0nPVPnM.js +0 -0
  1374. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-Q7kkcYrR.js +0 -0
  1375. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-RBq2pqOr.js +0 -0
  1376. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-RaDXclvH.css +0 -0
  1377. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-Z33f5-Wp.js +0 -0
  1378. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-ceDA-lHU.css +0 -0
  1379. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-czeYrGNG.css +0 -0
  1380. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-hcH65Zv0.js +0 -0
  1381. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-hmItHWz2.css +0 -0
  1382. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-k0HHvCOH.css +0 -0
  1383. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-kPzCW1DS.css +0 -0
  1384. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-mnVpUNXZ.css +0 -0
  1385. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-qs7RHoKv.js +0 -0
  1386. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-wKzSBw1w.js +0 -0
  1387. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/assets/index-yQOik-72.js +0 -0
  1388. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/manifest.webmanifest +0 -0
  1389. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/pwa/icon-192.png +0 -0
  1390. {loopx-1.0.0 → loopx-1.0.2}/loopx/web/chat/pwa/icon-512.png +0 -0
  1391. {loopx-1.0.0 → loopx-1.0.2}/loopx/windows_install.py +0 -0
  1392. {loopx-1.0.0 → loopx-1.0.2}/loopx/worker_bridge.py +0 -0
  1393. {loopx-1.0.0 → loopx-1.0.2}/loopx/zcode_goal_mode/README.md +0 -0
  1394. {loopx-1.0.0 → loopx-1.0.2}/loopx/zcode_goal_mode/__init__.py +0 -0
  1395. {loopx-1.0.0 → loopx-1.0.2}/loopx.egg-info/dependency_links.txt +0 -0
  1396. {loopx-1.0.0 → loopx-1.0.2}/loopx.egg-info/entry_points.txt +0 -0
  1397. {loopx-1.0.0 → loopx-1.0.2}/loopx.egg-info/top_level.txt +0 -0
  1398. {loopx-1.0.0 → loopx-1.0.2}/setup.cfg +0 -0
  1399. {loopx-1.0.0 → loopx-1.0.2}/skills/loopx-benchmark/agents/openai.yaml +0 -0
  1400. {loopx-1.0.0 → loopx-1.0.2}/skills/loopx-doc-registry/SKILL.md +0 -0
  1401. {loopx-1.0.0 → loopx-1.0.2}/skills/loopx-doc-registry/agents/openai.yaml +0 -0
  1402. {loopx-1.0.0 → loopx-1.0.2}/skills/loopx-pr-program/SKILL.md +0 -0
  1403. {loopx-1.0.0 → loopx-1.0.2}/skills/loopx-pr-program/agents/openai.yaml +0 -0
  1404. {loopx-1.0.0 → loopx-1.0.2}/skills/loopx-pr-program/references/snapshot-contract.md +0 -0
  1405. {loopx-1.0.0 → loopx-1.0.2}/skills/loopx-pr-program/scripts/diff_snapshot.py +0 -0
  1406. {loopx-1.0.0 → loopx-1.0.2}/skills/loopx-pr-review/agents/openai.yaml +0 -0
  1407. {loopx-1.0.0 → loopx-1.0.2}/skills/loopx-project/SKILL.md +0 -0
  1408. {loopx-1.0.0 → loopx-1.0.2}/skills/loopx-project/agents/openai.yaml +0 -0
  1409. {loopx-1.0.0 → loopx-1.0.2}/skills/loopx-self-repair/SKILL.md +0 -0
  1410. {loopx-1.0.0 → loopx-1.0.2}/skills/loopx-self-repair/agents/openai.yaml +0 -0
  1411. {loopx-1.0.0 → loopx-1.0.2}/skills/loopx-self-repair/references/upstream-issue-escalation.md +0 -0
  1412. {loopx-1.0.0 → loopx-1.0.2}/tests/test_agent_onboarding_pi_host.py +0 -0
  1413. {loopx-1.0.0 → loopx-1.0.2}/tests/test_agent_onboarding_unconnected_project.py +0 -0
  1414. {loopx-1.0.0 → loopx-1.0.2}/tests/test_agy_host_surface.py +0 -0
  1415. {loopx-1.0.0 → loopx-1.0.2}/tests/test_ark_managed_agent_host.py +0 -0
  1416. {loopx-1.0.0 → loopx-1.0.2}/tests/test_ark_managed_agent_issue_fix_matrix.py +0 -0
  1417. {loopx-1.0.0 → loopx-1.0.2}/tests/test_attached_session_broker.py +0 -0
  1418. {loopx-1.0.0 → loopx-1.0.2}/tests/test_attached_session_cli.py +0 -0
  1419. {loopx-1.0.0 → loopx-1.0.2}/tests/test_auto_research_artifact_receipt.py +0 -0
  1420. {loopx-1.0.0 → loopx-1.0.2}/tests/test_auto_research_control.py +0 -0
  1421. {loopx-1.0.0 → loopx-1.0.2}/tests/test_chat_agent.py +0 -0
  1422. {loopx-1.0.0 → loopx-1.0.2}/tests/test_chat_completed_todos.py +0 -0
  1423. {loopx-1.0.0 → loopx-1.0.2}/tests/test_chat_goal_configuration_api.py +0 -0
  1424. {loopx-1.0.0 → loopx-1.0.2}/tests/test_chat_image_attachments.py +0 -0
  1425. {loopx-1.0.0 → loopx-1.0.2}/tests/test_chat_machine_configuration_api.py +0 -0
  1426. {loopx-1.0.0 → loopx-1.0.2}/tests/test_chat_server_cors.py +0 -0
  1427. {loopx-1.0.0 → loopx-1.0.2}/tests/test_chat_store_input_validation.py +0 -0
  1428. {loopx-1.0.0 → loopx-1.0.2}/tests/test_cli_entrypoint.py +0 -0
  1429. {loopx-1.0.0 → loopx-1.0.2}/tests/test_codex_app_apply_rrule.py +0 -0
  1430. {loopx-1.0.0 → loopx-1.0.2}/tests/test_command_invocation.py +0 -0
  1431. {loopx-1.0.0 → loopx-1.0.2}/tests/test_content_ops_item_lifecycle.py +0 -0
  1432. {loopx-1.0.0 → loopx-1.0.2}/tests/test_content_ops_lifecycle.py +0 -0
  1433. {loopx-1.0.0 → loopx-1.0.2}/tests/test_content_ops_queue_status.py +0 -0
  1434. {loopx-1.0.0 → loopx-1.0.2}/tests/test_contract_credential_pattern_precision.py +0 -0
  1435. {loopx-1.0.0 → loopx-1.0.2}/tests/test_contract_scan_unreadable_files.py +0 -0
  1436. {loopx-1.0.0 → loopx-1.0.2}/tests/test_dashboard_command.py +0 -0
  1437. {loopx-1.0.0 → loopx-1.0.2}/tests/test_decision_context_material.py +0 -0
  1438. {loopx-1.0.0 → loopx-1.0.2}/tests/test_deepresearch_command.py +0 -0
  1439. {loopx-1.0.0 → loopx-1.0.2}/tests/test_default_public_scan_root.py +0 -0
  1440. {loopx-1.0.0 → loopx-1.0.2}/tests/test_dependency_security_boundaries.py +0 -0
  1441. {loopx-1.0.0 → loopx-1.0.2}/tests/test_doctor_install_freshness.py +0 -0
  1442. {loopx-1.0.0 → loopx-1.0.2}/tests/test_explore_counterfactual_runtime.py +0 -0
  1443. {loopx-1.0.0 → loopx-1.0.2}/tests/test_explore_episode_runtime.py +0 -0
  1444. {loopx-1.0.0 → loopx-1.0.2}/tests/test_explore_monitor_lane_budget.py +0 -0
  1445. {loopx-1.0.0 → loopx-1.0.2}/tests/test_explore_owner_board_views.py +0 -0
  1446. {loopx-1.0.0 → loopx-1.0.2}/tests/test_explore_presentation_views.py +0 -0
  1447. {loopx-1.0.0 → loopx-1.0.2}/tests/test_explore_replay_compatibility.py +0 -0
  1448. {loopx-1.0.0 → loopx-1.0.2}/tests/test_explore_replay_runtime.py +0 -0
  1449. {loopx-1.0.0 → loopx-1.0.2}/tests/test_explore_resource_portfolio.py +0 -0
  1450. {loopx-1.0.0 → loopx-1.0.2}/tests/test_explore_router_acceptance.py +0 -0
  1451. {loopx-1.0.0 → loopx-1.0.2}/tests/test_explore_source_history_reconcile.py +0 -0
  1452. {loopx-1.0.0 → loopx-1.0.2}/tests/test_explore_worker_topic_affinity.py +0 -0
  1453. {loopx-1.0.0 → loopx-1.0.2}/tests/test_external_scheduler_worker.py +0 -0
  1454. {loopx-1.0.0 → loopx-1.0.2}/tests/test_feedback_goal_id_validation.py +0 -0
  1455. {loopx-1.0.0 → loopx-1.0.2}/tests/test_feedback_run_selection.py +0 -0
  1456. {loopx-1.0.0 → loopx-1.0.2}/tests/test_file_lock.py +0 -0
  1457. {loopx-1.0.0 → loopx-1.0.2}/tests/test_file_lock_cross_process.py +0 -0
  1458. {loopx-1.0.0 → loopx-1.0.2}/tests/test_gemini_cursor_host_surfaces.py +0 -0
  1459. {loopx-1.0.0 → loopx-1.0.2}/tests/test_global_registry_write_serialization.py +0 -0
  1460. {loopx-1.0.0 → loopx-1.0.2}/tests/test_global_risks.py +0 -0
  1461. {loopx-1.0.0 → loopx-1.0.2}/tests/test_global_todos.py +0 -0
  1462. {loopx-1.0.0 → loopx-1.0.2}/tests/test_goal_mode_mcp_completion_validation.py +0 -0
  1463. {loopx-1.0.0 → loopx-1.0.2}/tests/test_goal_mode_mcp_settlement.py +0 -0
  1464. {loopx-1.0.0 → loopx-1.0.2}/tests/test_host_loop_activation.py +0 -0
  1465. {loopx-1.0.0 → loopx-1.0.2}/tests/test_host_loop_runtime_parity.py +0 -0
  1466. {loopx-1.0.0 → loopx-1.0.2}/tests/test_host_mode_planner.py +0 -0
  1467. {loopx-1.0.0 → loopx-1.0.2}/tests/test_host_parity_smoke.py +0 -0
  1468. {loopx-1.0.0 → loopx-1.0.2}/tests/test_host_poll_receipts.py +0 -0
  1469. {loopx-1.0.0 → loopx-1.0.2}/tests/test_kunluncode_goal_mode.py +0 -0
  1470. {loopx-1.0.0 → loopx-1.0.2}/tests/test_license_metadata.py +0 -0
  1471. {loopx-1.0.0 → loopx-1.0.2}/tests/test_loop_turn_loop_controller.py +0 -0
  1472. {loopx-1.0.0 → loopx-1.0.2}/tests/test_loopx_turn_codex_cli.py +0 -0
  1473. {loopx-1.0.0 → loopx-1.0.2}/tests/test_loopx_turn_executor.py +0 -0
  1474. {loopx-1.0.0 → loopx-1.0.2}/tests/test_loopx_turn_host_failure.py +0 -0
  1475. {loopx-1.0.0 → loopx-1.0.2}/tests/test_loopx_turn_journal_inspection.py +0 -0
  1476. {loopx-1.0.0 → loopx-1.0.2}/tests/test_loopx_turn_settlement_parity.py +0 -0
  1477. {loopx-1.0.0 → loopx-1.0.2}/tests/test_loopx_turn_transaction.py +0 -0
  1478. {loopx-1.0.0 → loopx-1.0.2}/tests/test_ml_experiment_volc_packet.py +0 -0
  1479. {loopx-1.0.0 → loopx-1.0.2}/tests/test_nokv_jsonl_helper.py +0 -0
  1480. {loopx-1.0.0 → loopx-1.0.2}/tests/test_nokv_shadow_provider_probes.py +0 -0
  1481. {loopx-1.0.0 → loopx-1.0.2}/tests/test_opencode2_goal_worker.py +0 -0
  1482. {loopx-1.0.0 → loopx-1.0.2}/tests/test_opencode2_goal_worker_cli.py +0 -0
  1483. {loopx-1.0.0 → loopx-1.0.2}/tests/test_opencode_goal_bridge.py +0 -0
  1484. {loopx-1.0.0 → loopx-1.0.2}/tests/test_operator_markdown_renderers.py +0 -0
  1485. {loopx-1.0.0 → loopx-1.0.2}/tests/test_packaged_skill_metadata.py +0 -0
  1486. {loopx-1.0.0 → loopx-1.0.2}/tests/test_pi_goal_mode.py +0 -0
  1487. {loopx-1.0.0 → loopx-1.0.2}/tests/test_pr_program_snapshot.py +0 -0
  1488. {loopx-1.0.0 → loopx-1.0.2}/tests/test_pr_program_snapshot_diff.py +0 -0
  1489. {loopx-1.0.0 → loopx-1.0.2}/tests/test_pr_review_github_scan.py +0 -0
  1490. {loopx-1.0.0 → loopx-1.0.2}/tests/test_project_skill_cli.py +0 -0
  1491. {loopx-1.0.0 → loopx-1.0.2}/tests/test_public_package_lock_boundary.py +0 -0
  1492. {loopx-1.0.0 → loopx-1.0.2}/tests/test_register_agent_fresh_identity.py +0 -0
  1493. {loopx-1.0.0 → loopx-1.0.2}/tests/test_registry_git_probe.py +0 -0
  1494. {loopx-1.0.0 → loopx-1.0.2}/tests/test_release_candidate.py +0 -0
  1495. {loopx-1.0.0 → loopx-1.0.2}/tests/test_release_smoke_archive_helpers.py +0 -0
  1496. {loopx-1.0.0 → loopx-1.0.2}/tests/test_reward_memory_pipeline.py +0 -0
  1497. {loopx-1.0.0 → loopx-1.0.2}/tests/test_scheduler_native_launcher.py +0 -0
  1498. {loopx-1.0.0 → loopx-1.0.2}/tests/test_self_update_download.py +0 -0
  1499. {loopx-1.0.0 → loopx-1.0.2}/tests/test_self_update_runtime_activation.py +0 -0
  1500. {loopx-1.0.0 → loopx-1.0.2}/tests/test_session_runtime_key_classification.py +0 -0
  1501. {loopx-1.0.0 → loopx-1.0.2}/tests/test_smoke_suite.py +0 -0
  1502. {loopx-1.0.0 → loopx-1.0.2}/tests/test_ssh_tunnel_source.py +0 -0
  1503. {loopx-1.0.0 → loopx-1.0.2}/tests/test_state_file_containment.py +0 -0
  1504. {loopx-1.0.0 → loopx-1.0.2}/tests/test_state_refresh_agent_lane_action.py +0 -0
  1505. {loopx-1.0.0 → loopx-1.0.2}/tests/test_static_site_presentation.py +0 -0
  1506. {loopx-1.0.0 → loopx-1.0.2}/tests/test_status_server_cors.py +0 -0
  1507. {loopx-1.0.0 → loopx-1.0.2}/tests/test_status_server_extension_projection.py +0 -0
  1508. {loopx-1.0.0 → loopx-1.0.2}/tests/test_status_server_periodic_report_workspace.py +0 -0
  1509. {loopx-1.0.0 → loopx-1.0.2}/tests/test_status_server_ssh_hosts.py +0 -0
  1510. {loopx-1.0.0 → loopx-1.0.2}/tests/test_subagent_host_adapter.py +0 -0
  1511. {loopx-1.0.0 → loopx-1.0.2}/tests/test_summary_all.py +0 -0
  1512. {loopx-1.0.0 → loopx-1.0.2}/tests/test_thread_agent_binding.py +0 -0
  1513. {loopx-1.0.0 → loopx-1.0.2}/tests/test_trajectory_hygiene.py +0 -0
  1514. {loopx-1.0.0 → loopx-1.0.2}/tests/test_turn_envelope.py +0 -0
  1515. {loopx-1.0.0 → loopx-1.0.2}/tests/test_turn_loop_disposition.py +0 -0
  1516. {loopx-1.0.0 → loopx-1.0.2}/tests/test_visible_goal_terminal_settlement.py +0 -0
  1517. {loopx-1.0.0 → loopx-1.0.2}/tests/test_windows_install.py +0 -0
  1518. {loopx-1.0.0 → loopx-1.0.2}/tests/test_worker_command_validation.py +0 -0
  1519. {loopx-1.0.0 → loopx-1.0.2}/tests/test_workspace_story_demo.py +0 -0
  1520. {loopx-1.0.0 → loopx-1.0.2}/tests/test_zcode_host_surface.py +0 -0
loopx-1.0.2/PKG-INFO ADDED
@@ -0,0 +1,800 @@
1
+ Metadata-Version: 2.4
2
+ Name: loopx
3
+ Version: 1.0.2
4
+ Summary: A lightweight Loop Engineering control plane for long-running agent goals.
5
+ Author: LoopX contributors
6
+ License-Expression: Apache-2.0
7
+ Project-URL: Homepage, https://huangruiteng.github.io/loopx/
8
+ Project-URL: Documentation, https://huangruiteng.github.io/loopx/docs/
9
+ Project-URL: Repository, https://github.com/huangruiteng/loopx
10
+ Project-URL: Issues, https://github.com/huangruiteng/loopx/issues
11
+ Project-URL: Changelog, https://github.com/huangruiteng/loopx/releases
12
+ Requires-Python: >=3.11
13
+ Description-Content-Type: text/markdown
14
+ License-File: LICENSE
15
+ License-File: NOTICE
16
+ License-File: LICENSE-MIT
17
+ Provides-Extra: deepseek-harness
18
+ Requires-Dist: deepseek-harness-sdk==0.1.2a3; extra == "deepseek-harness"
19
+ Provides-Extra: test
20
+ Requires-Dist: jsonschema<5,>=4.23; extra == "test"
21
+ Requires-Dist: mcp==1.28.1; extra == "test"
22
+ Requires-Dist: types-jsonschema<5,>=4.23; extra == "test"
23
+ Requires-Dist: pytest<10,>=9.0.3; extra == "test"
24
+ Requires-Dist: pytest-cov<7,>=5; extra == "test"
25
+ Requires-Dist: pytest-xdist<4,>=3; extra == "test"
26
+ Requires-Dist: pytest-split<0.12,>=0.11; extra == "test"
27
+ Requires-Dist: ruff<0.16,>=0.12; extra == "test"
28
+ Requires-Dist: mypy<2,>=1.18; extra == "test"
29
+ Dynamic: license-file
30
+
31
+ <div align="center">
32
+
33
+ <h1 align="center">LoopX</h1>
34
+
35
+ <img src="docs/assets/loopx-social-preview.png" alt="LoopX loop engineering social preview banner" width="420">
36
+
37
+ **The open, provider-neutral, stateful control plane for long-horizon agents.**
38
+
39
+ <sub>Runs on top of Codex, Claude Code, Cursor, and other agent harnesses. LoopX preserves objectives, gates, todos, evidence, quota, and handoffs across turns; the harness executes bounded work.</sub>
40
+
41
+ <a href="https://trendshift.io/repositories/102379?utm_source=repository-badge&amp;utm_medium=badge&amp;utm_campaign=badge-repository-102379"><img src="https://trendshift.io/api/badge/repositories/102379" alt="huangruiteng/loopx on Trendshift" width="220" height="48"></a>
42
+
43
+ [![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE) [![Release](https://img.shields.io/github/v/release/huangruiteng/loopx?filter=v*&display_name=tag)](https://github.com/huangruiteng/loopx/releases/latest) [![Discord](https://img.shields.io/badge/Discord-Join-5865F2?logo=discord&logoColor=white)](https://discord.gg/XmGgQyCFZd) [![Python](https://img.shields.io/badge/python-3.11%2B-blue.svg)](pyproject.toml) [![Local first](https://img.shields.io/badge/control--plane-local--first-brightgreen.svg)](docs/public-private-boundary.md) [![Loop Agents](https://img.shields.io/badge/status-loop%20agents%20active-brightgreen.svg)](docs/product/release-readiness.md)
44
+
45
+ [Public website](https://huangruiteng.github.io/loopx/) · [Blog](https://huangruiteng.github.io/loopx/blog/) · [Docs](https://huangruiteng.github.io/loopx/docs/) · [Developer Book](https://huangruiteng.github.io/loopx/docs/book/en/) · [Try LoopX](#try-loopx) · [See real loops](#evidence) · [How it works](#why-loopx) · [简体中文](README.zh-CN.md)
46
+
47
+ </div>
48
+
49
+ ---
50
+
51
+ Open and provider-neutral, LoopX is a lightweight state kernel and local-first
52
+ control plane for loop engineering. It runs on top of different agent harnesses
53
+ rather than replacing them, providing the long-horizon state, semantic
54
+ decisions about what happens next, governance, recovery, and human-agent
55
+ collaboration that keep long-running work reviewable, restartable, and easier
56
+ to hand off across turns, tools, and agents.
57
+
58
+ **Loop engineering for long-horizon AI agents and peer agent teams.**
59
+
60
+ > Keep the loop moving. Keep the judgment human.
61
+
62
+ ## Learn LoopX
63
+
64
+ - **Developer Book** - the curated bilingual path from control-plane foundations to project onboarding and developer contributions. [中文版](https://huangruiteng.github.io/loopx/docs/book/) · [English](https://huangruiteng.github.io/loopx/docs/book/en/)
65
+ - **Getting started** - install, connect a project, and run your first governed loop. [Guide](docs/guides/getting-started.md)
66
+ - **Docs** - the full reference and operations site. [LoopX Docs](https://huangruiteng.github.io/loopx/docs/)
67
+
68
+ ## Meet the Personal Agent Workspace
69
+
70
+ Keep long-horizon goals in one local-first workspace. Goals, attention,
71
+ conversations, tasks, files, schedules, and recovery stay durable across days,
72
+ restarts, and harnesses. Reopen a project, inspect the previous turn’s state
73
+ and evidence, and continue the next permitted action.
74
+
75
+ <a href="docs/assets/personal-workspace/loopx-dashboard-launch.mp4">
76
+ <img src="docs/assets/personal-workspace/workspace-1.0.webp" alt="LoopX Workspace: owner decisions, Agent tasks, scheduled watches and completed work" width="960">
77
+ </a>
78
+
79
+ LoopX 1.0 brings these long-horizon control states into the Personal Workspace. It gives you one place to:
80
+
81
+ - see what needs you, what is running, what is being watched, and what is
82
+ scheduled or stopped;
83
+ - configure Goal capabilities, distinguish machine defaults from Goal overrides,
84
+ and preview changes before applying them;
85
+ - steer a live turn, queue a message, or use the async inbox from a connected
86
+ Lark conversation with explicit Goal/Agent/session routing;
87
+ - inspect deliverable files, periodic reports, and their supporting evidence;
88
+ - continue across Codex, Claude Code, direct-model, and other registered Agent
89
+ sessions without losing Goal state or evidence;
90
+ - review protected changes through typed preview, explicit confirmation, and
91
+ receipts while LoopX state—not the browser—remains authoritative.
92
+
93
+ ```bash
94
+ loopx dashboard
95
+ ```
96
+
97
+ `loopx dashboard` is the supported browser/PWA launch path. You can also download
98
+ native desktop previews from the [1.0 release](https://github.com/huangruiteng/loopx/releases/tag/v1.0.0);
99
+ they reuse the same loopback services and Goal state. Apple Silicon macOS supports
100
+ signed App updates that pair the shell with its bundled runtime, plus repair and
101
+ recovery. Python 3.11+ is required; the App is ad-hoc signed, not notarized.
102
+ Windows preview installers currently use manual updates and a separately installed CLI.
103
+ [Desktop installation, updates, and source development](apps/desktop/loopx-control-plane/README.md).
104
+
105
+ <img src="docs/assets/personal-workspace/capability-1.0.webp" alt="Real Workspace recording: configure child-task capacity and allowed responsibility domains" width="960">
106
+
107
+ From a source checkout, run `python -m demo.workspace serve` to explore a community
108
+ event, a home-energy comparison, and a neighborhood website release. Each has four
109
+ work roles, 18 tasks, two decisions, and two watches. The screenshot above comes
110
+ from this reproducible workspace. [Scenarios and replay instructions](demo/workspace/README.md).
111
+
112
+ [Watch the full 32-second walkthrough](docs/assets/personal-workspace/loopx-dashboard-launch.mp4)
113
+ · [Read the workspace guide](docs/guides/personal-workspace-user-guide.md)
114
+ · [Try the five-minute tour](docs/guides/personal-workspace-trial-guide.md)
115
+
116
+ <a id="how-it-works"></a>
117
+
118
+ ## Why LoopX
119
+
120
+ An agent can finish a task in one session. Long-running work is harder:
121
+ objectives change, owner decisions appear, evidence goes stale, agents hand work
122
+ to peers, and a scheduler can keep spending after no useful transition remains.
123
+ Chat memory and a timer are not enough to govern that.
124
+
125
+ LoopX keeps the durable control state in one compact layer:
126
+
127
+ ```text
128
+ objective / issue / project
129
+ │
130
+ ▼
131
+ LoopX state: objective + gates + todos + scope + evidence + quota
132
+ │
133
+ ├─ human judgment needed? ── yes ─▶ ask a concrete question and wait
134
+ │
135
+ ├─ safe fallback available? ──────▶ run one bounded agent slice
136
+ │
137
+ ▼
138
+ Codex / Claude Code / Cursor / shell agent executes one turn
139
+ │
140
+ ▼
141
+ write evidence + handoff + next todo ─▶ quota decides the next tick
142
+ ```
143
+
144
+ Agent runtimes execute the work. LoopX governs the state that lets engineering,
145
+ research, discovery, and operations loops continue across runs. It is not
146
+ another agent framework or a provider-specific orchestration runtime.
147
+
148
+ ![LoopX control-plane board](docs/assets/control-plane-board.svg)
149
+
150
+ A useful mental model is an
151
+ **[agent-native Kanban for long-running work](docs/development/control-plane-course/00-concept-primer.md)**.
152
+ Cards carry identity, authority, evidence, and continuation. Moves are validated
153
+ operators such as claim, gate, monitor, and writeback. The board is a
154
+ projection; LoopX state remains the source of truth.
155
+
156
+ Registered agents are peers. Claims, leases, task boundaries, capabilities, and
157
+ typed continuation decide who acts next; no durable leader identity is
158
+ required.
159
+
160
+ LoopX is useful when you run:
161
+
162
+ - multi-day engineering, research, benchmark, or experiment objectives;
163
+ - issue and PR loops that must preserve scope, evidence, and review state;
164
+ - recurring heartbeat or monitor work;
165
+ - projects with owner, safety, publication, or private-data gates;
166
+ - peer-agent teams where ownership, leases, and handoff matter;
167
+ - creator, research, or operations workflows whose progress must remain
168
+ legible to a non-engineering operator.
169
+
170
+ LoopX is not an autonomous production controller. Dangerous permissions,
171
+ publishing, production writes, and final ownership stay with the human.
172
+
173
+ <a id="see-it-in-action"></a>
174
+
175
+ ## Evidence
176
+
177
+ The public OpenViking contribution sequence and the redacted, owner-run
178
+ Auto ML showcase each span **200+ hours of elapsed loop lifetime**, preserving
179
+ bounded turns, decisions, and evidence updates. This measures wall-clock project
180
+ time, not continuous model execution or unattended production autonomy. Open
181
+ each visual to inspect the public-safe task graph, evidence branches, and
182
+ cross-turn decisions; each case states its source and reproducibility boundary.
183
+
184
+ ### Open-Source Issue Fix
185
+
186
+ **200+ hour public contribution arc: PR delivery and reusable fix knowledge
187
+ evolve together.**
188
+
189
+ <a href="docs/assets/long-running-loop-openviking-trajectory.png">
190
+ <img src="docs/assets/long-running-loop-openviking-trajectory.png" alt="Open-source issue-fix trajectory linking focused PR delivery with reusable LoopX capabilities" width="760">
191
+ </a>
192
+
193
+ LoopX's creator uses this path as an
194
+ [OpenViking contributor](https://github.com/volcengine/OpenViking/pulls?q=is%3Apr+author%3Ahuangruiteng).
195
+ The represented public contribution sequence spans more than 200 elapsed hours
196
+ from its first PR creation to the latest represented review or update. The
197
+ [Issue-Fix capability](loopx/capabilities/issue_fix/README.md) keeps rolling
198
+ repository context, revision-stamped fix knowledge, and reviewer-facing
199
+ preferences separate; linked PRs plus current checkout source and tests remain
200
+ authoritative.
201
+
202
+ ### Auto ML Experiment
203
+
204
+ **Redacted owner-run showcase: a 200+ hour experiment arc keeps hypotheses,
205
+ matched evidence, invalid lineages, running replicates, and promote/stop gates
206
+ visible in one graph.**
207
+
208
+ <a href="docs/assets/long-running-loop-ml-experiment-trajectory.png">
209
+ <img src="docs/assets/long-running-loop-ml-experiment-trajectory.png" alt="Auto ML Experiment trajectory with experiment lineages, evidence gates, and promotion decisions" width="760">
210
+ </a>
211
+
212
+ The redacted public-safe graph preserves decision lineage across that 200+ hour
213
+ elapsed window. It is an owner-run showcase, not a claim of continuous compute,
214
+ independent reproduction, a production result, or company or employer
215
+ endorsement. The redacted image is not sufficient to reproduce the underlying
216
+ experiment independently.
217
+
218
+ ### Auto Research
219
+
220
+ **Reproducible public KNN demo: proposer, executor, and evaluator/promoter agents
221
+ iterate in parallel while todo, quota, evidence, and targeted wake remain
222
+ visible.**
223
+
224
+ <a href="docs/assets/auto-research-multi-agent-showcase.png">
225
+ <img src="docs/assets/auto-research-multi-agent-showcase.png" alt="Auto Research multi-agent workspace with proposer, executor, evaluator/promoter, todo, quota, evidence, and targeted wake activity">
226
+ </a>
227
+
228
+ This screenshot comes from LoopX's built-in exact-KNN demo. The public task,
229
+ editable and protected files, deterministic CPU evaluator, and dev/held-out
230
+ commands all live in this repository. Follow the
231
+ [showcase walkthrough](docs/product/use-cases/auto-research/decentralized-auto-research-showcase.md)
232
+ or the [demo command path](demo/auto_research/README.md) to reproduce the
233
+ workflow; it is a demo result, not a production research claim.
234
+
235
+ ### Used In Real Projects
236
+
237
+ - **Independent user · `>13h` C++ accuracy run.** The user reported that a
238
+ multi-stage task stayed aligned, triggered public research, adopted a
239
+ [public code-memory tool](https://github.com/DeusData/codebase-memory-mcp),
240
+ and improved final precision. [Read the evidence boundary](docs/showcases/cases/independent-cpp-accuracy-long-run.md).
241
+ - **Independent user · `4d` unattended run.** The user reported four days
242
+ without human intervention, useful ongoing work, and a periodic report
243
+ surface. [Read the redacted case](docs/showcases/cases/independent-four-day-unattended-agent.md).
244
+ - **Independent user · `7` merged PRs.** A LoopX-attributed Engine refactor is
245
+ visible in a [public issue](https://github.com/zilliztech/mfs/issues/166) and
246
+ seven merged PRs; attribution and the reported `1B+` token scale remain user
247
+ reports. [Inspect the case](docs/showcases/cases/independent-public-engine-refactor.md).
248
+
249
+ These are the three strongest current cases, not the full inventory. Browse the
250
+ [complete Showcase catalog](docs/showcases/README.md) for contributor cases,
251
+ creator dogfooding, reproducible demos, and explicit evidence-strength labels.
252
+
253
+ ### Exploratory Benchmark Studies
254
+
255
+ - **[SWE-Marathon](https://huangruiteng.github.io/loopx/benchmarks/swe-marathon/):**
256
+ Five execution modes on 15 matched tasks compare self-verification, scores,
257
+ and cost. More self-verification did not consistently yield higher scores.
258
+ - **[DeepSWE behavior analysis](https://huangruiteng.github.io/loopx/benchmarks/deepswe/behavior-discovery/)** (Chinese):
259
+ Selected cases examine how domain hints relate to requirement retention and
260
+ verification choices, offering mechanism hypotheses for further testing.
261
+
262
+ SWE-Marathon has one trial per task and mode; DeepSWE uses selected cases and
263
+ post-hoc analysis. Neither establishes a general performance gain.
264
+
265
+ More inspectable surfaces:
266
+
267
+ - the [public homepage](https://huangruiteng.github.io/loopx/) for the product
268
+ narrative, quick start, and long-running evidence;
269
+ - the [complete Showcase catalog](docs/showcases/README.md) and its
270
+ [bilingual hosted index](docs/showcases/index.html);
271
+ - the [cross-runtime implementation review demo](docs/product/use-cases/cross-runtime/cross-runtime-impl-review-demo.md);
272
+ - the public [user manual](https://my.feishu.cn/wiki/CaL5wMk9ui17ngkWzeUcMlAYnZg).
273
+
274
+ <a id="quick-start"></a>
275
+
276
+ ## Try LoopX
277
+
278
+ Requirements: Python 3.11+ and Node.js 22.6+. Use an active Python environment
279
+ whose console scripts are on `PATH`; macOS and Linux use a POSIX shell, while
280
+ native Windows uses PowerShell 7. Node.js runs the managed, idle-exiting
281
+ TypeScript Effect core; LoopX starts it automatically. Git is only needed for
282
+ contributor clone/canary workflows.
283
+
284
+ Install from PyPI without cloning:
285
+
286
+ ```bash
287
+ python3 -m pip install --upgrade loopx
288
+ loopx workflow-skills --install
289
+ loopx doctor
290
+ ```
291
+
292
+ Existing installs can use `loopx update plan` and `loopx update apply`; LoopX
293
+ keeps the detected pip, pipx, or archive owner instead of switching channels.
294
+
295
+ On native Windows PowerShell 7, use the same PyPI release without a POSIX
296
+ compatibility layer:
297
+
298
+ ```powershell
299
+ py -3.11 -m pip install --upgrade loopx
300
+ loopx workflow-skills --install
301
+ loopx doctor
302
+ ```
303
+
304
+ Restart your agent host after first install so it reloads the workflow skills.
305
+ See [Installing LoopX](docs/guides/installing-loopx.md) for `pipx`, host
306
+ command surfaces, native Windows checkout installation, upgrade, rollback,
307
+ uninstall, and the archive fallback.
308
+
309
+ Then connect from your project root:
310
+
311
+ ```bash
312
+ cd /path/to/your-project
313
+ loopx connect
314
+ loopx status
315
+ ```
316
+
317
+ If the project has not been initialized and `connect` tells you state is
318
+ missing, use the guided path:
319
+
320
+ ```bash
321
+ loopx start-goal --guided --project . --goal-text "Your long-running objective"
322
+ ```
323
+
324
+ LoopX should reuse existing state rather than overwrite it. Keep `.loopx/`,
325
+ `.codex/goals/`, and `.local/` ignored.
326
+
327
+ ### Start From Your Agent
328
+
329
+ | Host | Recommended start | Loop driver |
330
+ | --- | --- | --- |
331
+ | Codex App | Ask the agent to connect this project to LoopX, run `loopx doctor`, preserve existing state, and report the current gate and next todo. Then use `$loopx <complex task>` or choose `loopx` from `/skills`. | Codex App heartbeat automation, refreshed from `quota should-run.scheduler_hint` |
332
+ | Codex App over SSH | `loopx agent-onboard --agent-type codex-app-ssh --project .` | The returned visible `/goal <task_body>` |
333
+ | Codex CLI | Start `codex` in the project, ask it to connect and diagnose LoopX, then use `$loopx <complex task>` or `/skills`. | Visible `/goal <task_body>`; no hidden headless execution by default |
334
+ | Claude Code | Install the opt-in adapter, then run `/loopx <task>` followed by `/loop`. | Native Claude Code `/loop` gated by LoopX |
335
+ | 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 |
336
+ | OpenCode | Install the static command facade; opt in to `--with-goal-bridge` for recurring goals. | OpenCode command facade and explicit goal bridge |
337
+ | 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) |
338
+ | ZCode | Install the skill facade with `loopx slash-commands --install --surface zcode`, then invoke the `$loopx` skill (or `/loopx <complex task>`) from a ZCode session in the project. | The ZCode session's own turn loop; every continuation enters through `quota should-run` |
339
+ | Antigravity CLI (agy) | Install the skill facade with `loopx slash-commands --install --surface agy`, then invoke the `loopx` skill (or `/loopx <complex task>`) from an `agy` session in the project. | The session's native `/goal` loop (audited until `<!-- GOAL_COMPLETE -->`) with `schedule` self-wakes while the session lives; the facade instructs every turn/wake to re-enter through `quota should-run` — advisory pacing, not a host-enforced gate |
340
+ | DeepSeek Harness (dsh) | Install the [native DSH plugin](packages/dsh-loopx-plugin/README.md), select the `loopx` skill, and describe the task. The [dsh goal-mode adapter](loopx/dsh_goal_mode/README.md) remains available for headless turns. | Native same-session continuation and GoalBar, or headless dsh segments; both remain gated by LoopX authority |
341
+ | Cursor, shell, or custom runner | Use the installer and `loopx doctor`; connect manually or call LoopX from your runner. | Your shell, scheduler, or runner |
342
+
343
+ The exact, copy-ready setup messages and host recovery paths live in
344
+ [Getting Started](docs/guides/getting-started.md). Host integrations can inspect
345
+ the [Codex App host command registry contract](docs/reference/protocols/codex-app-host-command-registry-v0.md),
346
+ the [Codex CLI packaged install path](docs/product/runtimes/codex-cli/codex-cli-packaged-install.md),
347
+ the [Claude Code adapter](loopx/claude_goal_mode/README.md), the
348
+ [KunlunCode native Goal adapter](loopx/kunluncode_goal_mode/README.md), or the
349
+ [DeepSeek Harness turn adapter](loopx/dsh_goal_mode/README.md).
350
+
351
+ See the [60-second DSH × LoopX Replan recording and reproducible
352
+ fixture](docs/showcases/cases/dsh-loopx-replan-demo.md) for the native path:
353
+ install the plugin, select one skill, change a material constraint, and inspect
354
+ the preserved decision trail.
355
+
356
+ For custom runners, start with the
357
+ [minimal custom runtime example](docs/guides/minimal-custom-runtime-example.md)
358
+ (`python3 examples/custom-runtime-minimal-cli-turn-smoke.py`), then the full
359
+ [Embed LoopX in Your Agent Runner](docs/guides/custom-agent-runner-integration.md)
360
+ guide and the [worker bridge install contract](docs/integrations/worker-bridge-install-contract.md).
361
+ The core tick is deliberately small:
362
+
363
+ ```text
364
+ loopx quota should-run # should this registered agent act now?
365
+ loopx todo claim # who owns this slice?
366
+ loopx todo update # what changed?
367
+ loopx refresh-state # what should the next turn see?
368
+ loopx quota spend-slot # account for a completed, validated slice
369
+ ```
370
+
371
+ ### First-Run Feedback
372
+
373
+ If LoopX works for you, a one-minute public issue helps us learn what a real
374
+ first run looks like. It is optional, contains no telemetry, and should not
375
+ include logs, paths, credentials, internal project names, or goal contents:
376
+
377
+ - [First-run feedback](https://github.com/huangruiteng/loopx/issues/new?template=first_run.yml)
378
+ - [Usage story for longer runs](https://github.com/huangruiteng/loopx/issues/new?template=usage_story.yml)
379
+
380
+ `loopx first-run-report` prints the same prefilled link locally without
381
+ sending anything.
382
+
383
+ A successful connection has:
384
+
385
+ - `loopx doctor` passing;
386
+ - `.loopx/registry.json` and a projected active goal state;
387
+ - `loopx status` showing the current objective, concrete user gate, and next
388
+ agent todo;
389
+ - a visible loop driver or an exact activation instruction;
390
+ - local runtime state ignored rather than committed.
391
+
392
+ Clone-based install is only for contributors who want the live canary wrapper:
393
+
394
+ ```bash
395
+ git clone https://github.com/huangruiteng/loopx ~/loopx
396
+ ~/loopx/scripts/install-local.sh
397
+ loopx doctor
398
+ ```
399
+
400
+ <a id="capability-surface"></a>
401
+
402
+ ## Capabilities
403
+
404
+ LoopX keeps the architecture explicit so the same governed outcome can survive
405
+ a change of agent harness or external provider. The terms describe different
406
+ boundaries rather than interchangeable kinds of plugin:
407
+
408
+ | Boundary | Meaning | Go deeper |
409
+ | --- | --- | --- |
410
+ | **Kernel** | Owns durable goal, todo, gate, evidence, quota, recovery, and scheduling truth. | [Architecture](docs/architecture.md) |
411
+ | **Capability** | Defines a stable, provider-neutral contract for producing one bounded, verifiable caller outcome from LoopX state. | [Capability catalog](loopx/capabilities/README.md) |
412
+ | **Provider** | Calls an external system or local implementation and returns bounded observations, effect results, and readback. | [Provider responsibilities](docs/reference/extensions.md#runtime-responsibilities) |
413
+ | **Extension** | Packages and operates an optional provider through explicit install, readiness, enable, upgrade, disable, and rollback lifecycle. | [Extension lifecycle](docs/reference/extensions.md#runtime-lifecycle) |
414
+
415
+ Host declarations such as `--available-capability shell` describe observed
416
+ execution support. They are runtime capacities in this product map, not product
417
+ capabilities and not permission grants. The effective capability still applies
418
+ its own policy and authority checks before proposing a transition.
419
+
420
+ ### Core Control-Plane Promises
421
+
422
+ The Kernel folds its mechanics into five questions. Each question delivers one
423
+ product promise on top of any agent harness: objective → long-horizon state;
424
+ next → semantic decisions; human judgment → human-agent collaboration;
425
+ evidence → recovery; continuation → governance.
426
+
427
+ | Question | What LoopX keeps visible |
428
+ | --- | --- |
429
+ | What is the objective? | The active goal, explicit scope, and current authority. |
430
+ | What happens next? | Ordered user and agent todos, ownership, claims, and leases. |
431
+ | What needs human judgment? | Concrete user gates instead of a vague "waiting for owner." |
432
+ | What evidence changed? | Compact run history, validation, blockers, and accepted writeback. |
433
+ | May the loop continue? | Quota, capabilities, safe fallback, scheduler hints, and stop conditions. |
434
+
435
+ ### Control-Plane Surface
436
+
437
+ | Surface | What it does | Start with |
438
+ | --- | --- | --- |
439
+ | Goal state and status | Tracks active state, todos, claims, gates, evidence, run history, and first-screen attention. | `loopx status`, `loopx diagnose`, `loopx review-packet` |
440
+ | 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) |
441
+ | 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` |
442
+ | Operator surfaces | Renders compact status without making the browser the state authority. | `loopx serve-status`, [dashboard](apps/presentation/dashboard/README.md) |
443
+ | 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) |
444
+ | 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) |
445
+ | 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) |
446
+ | 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) |
447
+ | Governance patterns | Captures reusable routing, gate, evidence, projection, and planning shapes. | [interaction patterns](docs/concepts/interaction-pattern-catalog.md), [state model](docs/state-interaction-model.md) |
448
+
449
+ The shipped primitives include lifetime goals, concrete user gates, audited safe
450
+ fallbacks, peer todo ownership, quota and steering, compact run history,
451
+ evidence-backed handoff, a read-first management surface, project-level value
452
+ signals, and public/private boundary checks.
453
+
454
+ ### Product Capability Paths
455
+
456
+ Capabilities turn those generic primitives into outcome-owned work lanes. Start
457
+ from the outcome, then inspect the current registered implementation and its
458
+ write boundary:
459
+
460
+ | You need to... | Capability | Start with |
461
+ | --- | --- | --- |
462
+ | Turn a public issue into a reviewable, evidence-backed change | [Issue Fix](loopx/capabilities/issue_fix/README.md) | `loopx capability show issue-fix --format json` |
463
+ | Qualify the exact final diff before delivery | [Change Quality](loopx/capabilities/change_quality/README.md) | `loopx capability show change-quality-qualification --format json` |
464
+ | Preserve a changing stack of already reviewed branches | [Integration Branch](loopx/capabilities/integration_branch/README.md) | `loopx capability show integration-branch-reconcile --format json` |
465
+ | Explore uncertain research without losing hypotheses and findings | [Explore](loopx/capabilities/explore/README.md) | `loopx capability show explore --format json` |
466
+ | Rebase decisions on current evidence and verified outcomes | [Decision Context](loopx/capabilities/decision_context/README.md) | `loopx capability show decision-context --format json` |
467
+ | Produce scheduled or progress-triggered reports with receipts | [Periodic Report](loopx/capabilities/periodic_report/README.md) | `loopx capability show periodic-report --format json` |
468
+
469
+ Run `loopx capability list --format json` for the authoritative catalog in the
470
+ installed release. A capability detail reports its user value, maturity,
471
+ provider readiness, entry commands, write boundaries, protocols, and durable
472
+ validation. Browse the [human-readable capability index](loopx/capabilities/README.md)
473
+ to choose by outcome; use [Extensions and Capabilities](docs/reference/extensions.md)
474
+ when installing or building a provider.
475
+
476
+ ### Runtime Responsibilities
477
+
478
+ | Role | Responsibility |
479
+ | --- | --- |
480
+ | **Agent** | Plans, analyzes, uses tools, and performs one bounded action through a host/runtime. |
481
+ | **Provider** | Calls external systems and returns observations, effect results, and readback. |
482
+ | **Capability** | Defines the caller outcome, normalizes provider output, validates it, and proposes a typed transition. |
483
+ | **Kernel** | Owns durable todos, gates, monitors, accepted writeback, quota, recovery, and scheduling. |
484
+
485
+ The execution path is `Agent -> Capability -> Provider`; the control path
486
+ returns `Provider readback -> Capability transition -> Kernel`. An extension is
487
+ how an optional provider is packaged and managed, not another control-plane
488
+ owner. See [Architecture](docs/architecture.md) and
489
+ [Extensions and Capabilities](docs/reference/extensions.md).
490
+
491
+ ## Advanced Paths
492
+
493
+ The first useful loop does not require every optional surface. Add these only
494
+ when the work needs them.
495
+
496
+ Inspect the current goal's read-only capability catalog before enabling an
497
+ advanced path:
498
+
499
+ ```bash
500
+ loopx configure-goal --goal-id <goal-id>
501
+ ```
502
+
503
+ Without `--execute`, this reports current/default state, fit, boundaries, and
504
+ copyable commands without changing project state.
505
+
506
+ ### Presets and Auto Research
507
+
508
+ Safe presets cover daily triage, changelog drafts, and PR watching. The
509
+ one-command research path coordinates proposer, executor, and
510
+ evaluator/promoter roles while keeping quota and evidence visible. See the
511
+ [beginner preset guide](docs/product/foundations/beginner-loop-presets.md) and
512
+ [Auto Research demo path](demo/auto_research/README.md).
513
+
514
+ ```bash
515
+ loopx preset list
516
+ loopx preset show daily-triage
517
+ ```
518
+
519
+ Preset inspection is read-only. For a connected recurring goal,
520
+ `loopx ready-score --goal-id <goal-id> --agent-id <agent-id>` reports whether
521
+ the loop is ready to run repeatedly.
522
+
523
+ ### Governed Turns
524
+
525
+ LoopX can generate one pure, bounded turn decision from a validated receipt,
526
+ fresh quota state, and a provider-neutral budget. The current Codex CLI
527
+ quickstart and activation contract are documented in
528
+ [LoopX Turn for Codex CLI](docs/product/runtimes/codex-cli/loopx-turn-codex-cli-quickstart.md).
529
+
530
+ ### Explore Graph and Harness
531
+
532
+ Explore is supported, optional, and default-off. It works best when a task has
533
+ a measurable offline evaluation, baseline, treatment, and guardrails; it is not
534
+ a substitute for production approval. Start with the
535
+ [Explore capability](loopx/capabilities/explore/README.md) and its
536
+ [Lark presentation mapping](loopx/capabilities/explore/README.md#presentation-sink-lark-mapping).
537
+
538
+ ### Review Agent Work
539
+
540
+ Use `loopx review-packet` for a compact owner-facing view of decisions,
541
+ evidence, validation, and unresolved gates. The
542
+ [intelligent management surface](docs/product/surfaces/intelligent-management-surface.md)
543
+ describes the operator model; the
544
+ [project-level reward model](docs/product/foundations/project-level-reward-model.md)
545
+ describes conservative value signals across output quantity, quality, token
546
+ cost, and user attention cost.
547
+
548
+ For one concrete peer workflow, see the
549
+ [cross-runtime implementation review demo](docs/product/use-cases/cross-runtime/cross-runtime-impl-review-demo.md):
550
+ Claude implements and Codex reviews while LoopX keeps ownership, evidence,
551
+ quota, and handoff explicit.
552
+
553
+ ### App and Projection Paths
554
+
555
+ - Local read-first UI: [dashboard guide](apps/presentation/dashboard/README.md)
556
+ - Public product overview: [public homepage](https://huangruiteng.github.io/loopx/)
557
+ - Documentation portal: [hosted docs](https://huangruiteng.github.io/loopx/docs/)
558
+ - Feishu/Lark projection: [Lark Kanban adapter](docs/integrations/lark-kanban-control-plane-adapter.md)
559
+ - Generic host integration: [integration guide](docs/integration.md)
560
+ - Custom multi-agent runner:
561
+ [minimal custom runtime example](docs/guides/minimal-custom-runtime-example.md),
562
+ then [custom runner integration](docs/guides/custom-agent-runner-integration.md)
563
+
564
+ Optional projections make state easier to inspect; they do not become the
565
+ source of truth.
566
+
567
+ ### Operating and Recovery
568
+
569
+ Start daily inspection with:
570
+
571
+ ```bash
572
+ loopx status
573
+ loopx history --goal-id your-project-goal
574
+ loopx quota should-run --goal-id your-project-goal
575
+ ```
576
+
577
+ Automatic turns must check quota first and append spend only after validated
578
+ writeback. Quiet skips, preflight failures, and dry-run previews do not spend.
579
+ When a user gate blocks one lane, a separately audited safe fallback may
580
+ continue, but it must not bypass the gate.
581
+
582
+ Peer agents use `loopx todo claim` before delivery and `loopx todo update`
583
+ after validation so ownership and evidence remain visible.
584
+
585
+ Scheduler cadence follows `quota should-run.scheduler_hint`; installed Codex
586
+ App automations acknowledge the current hint through the returned
587
+ `ack_hint.cli_args`. Collision recovery, monitor semantics, self-repair, and
588
+ the exact operator commands are maintained in
589
+ [Getting Started](docs/guides/getting-started.md),
590
+ [Quota Allocation](docs/quota-allocation.md), and
591
+ [Long-Task Cadence Policy](docs/operations/long-task-cadence-policy.md).
592
+
593
+ Before publishing public docs or examples:
594
+
595
+ ```bash
596
+ loopx check \
597
+ --scan-path README.md \
598
+ --scan-path docs/ \
599
+ --scan-path examples/
600
+ ```
601
+
602
+ ## Current Technical Directions
603
+
604
+ LoopX has three active strategic programs plus an architecture and research
605
+ incubator. These are direction signals, not delivery promises; `main`, released
606
+ artifacts, and stable reference contracts remain the source of shipped truth.
607
+
608
+ - **Long-Horizon Benchmarks and Evidence:** reproducible capability evidence
609
+ and controlled mechanism research across complementary benchmark
610
+ environments. [Direction tracker](https://github.com/huangruiteng/loopx/issues/3243)
611
+ - **Operator Surface and IM Integration:** an operator workspace, session
612
+ records, and bounded collaboration surfaces, currently incubating on a
613
+ dedicated integration branch with `@maxliux5` as implementation lead.
614
+ [Direction tracker](https://github.com/huangruiteng/loopx/issues/3244)
615
+ - **Shared Goal Authority and Cross-host Coordination:** provider-neutral
616
+ coordination for explicitly shared goals, with NoKV as an unpromoted
617
+ provider candidate rather than a new control-plane authority.
618
+ [Direction tracker](https://github.com/huangruiteng/loopx/issues/3245)
619
+ - **Architecture and Research Incubator:** Effect Program hardening,
620
+ TypeScript parity migration, hierarchical stride, research exploration,
621
+ human attention, artifact lifecycle, and memory utility work at explicitly
622
+ different maturity levels.
623
+ [Direction tracker](https://github.com/huangruiteng/loopx/issues/3246)
624
+
625
+ Read the canonical
626
+ [Technical Directions map](docs/project/technical-directions.md) for stages,
627
+ promotion gates, contributor-safe cuts, and ownership boundaries. Use the
628
+ pinned [GitHub Discussion](https://github.com/huangruiteng/loopx/discussions/2851)
629
+ for community discussion. Core control-plane reliability continues as the
630
+ shared foundation beneath these programs.
631
+
632
+ ## Advanced Documentation
633
+
634
+ Start with the path that matches your current task. Use the hosted
635
+ [documentation portal](https://huangruiteng.github.io/loopx/docs/) for the
636
+ published docs site; the [documentation index](docs/README.md) remains the
637
+ complete source map. This list stays selective; each category index owns its
638
+ deeper documents and versioned protocols.
639
+
640
+ ### Use and Operate
641
+
642
+ - [Getting Started](docs/guides/getting-started.md): install, connect,
643
+ diagnose, daily workflow, heartbeats, dashboard, development, and commands.
644
+ - [User Manual](https://my.feishu.cn/wiki/CaL5wMk9ui17ngkWzeUcMlAYnZg):
645
+ public onboarding, concepts, FAQ, and selected cases.
646
+ - [Operations](docs/operations/README.md): goal continuation, todo, cadence,
647
+ attention, and authority workflows.
648
+ - [Quota Allocation](docs/quota-allocation.md) and
649
+ [Heartbeat Automation Prompt](docs/heartbeat-automation-prompt.md): scheduler
650
+ eligibility, spend, and scheduled continuation.
651
+ - [Dashboard](apps/presentation/dashboard/README.md) and
652
+ [Status Data Contract](docs/status-data-contract.md): operator-facing state
653
+ and projection contracts.
654
+ - [Release Readiness](docs/product/release-readiness.md): install/update paths,
655
+ compatibility gates, release notes, and safe-to-depend-on surfaces.
656
+
657
+ ### Understand the Control Plane
658
+
659
+ - [Architecture](docs/architecture.md): lifetime-goal invariant and kernel.
660
+ - [State Interaction Model](docs/state-interaction-model.md): actors, stores,
661
+ interaction contract, and writeback.
662
+ - [Concepts](docs/concepts/README.md): reusable routing, gate, evidence,
663
+ projection, and planning patterns.
664
+ - [Product Foundations](docs/product/foundations/README.md): Loop Engineering
665
+ principles, project-level reward, and reward-style replanning.
666
+ - [Product Vision](docs/product/vision.md): the broader Loop Agent direction.
667
+
668
+ ### Integrate and Extend
669
+
670
+ - [Integration Guide](docs/integration.md)
671
+ - [Minimal Custom Runtime Example](docs/guides/minimal-custom-runtime-example.md)
672
+ - [Custom Agent Runner Integration](docs/guides/custom-agent-runner-integration.md)
673
+ - [Integrations](docs/integrations/README.md): runtime, host, collaboration, and
674
+ external-system adapters, including worker bridge and Lark.
675
+ - [Extensions and Capabilities](docs/reference/extensions.md)
676
+
677
+ ### Build and Review LoopX
678
+
679
+ - [Developer Guide](docs/development/README.md): contributor workflows,
680
+ benchmark development, documentation layout, and quality gates.
681
+ - [Reference and Protocols](docs/reference/README.md): stable contracts and
682
+ versioned implementation protocols, including host command and reward memory
683
+ architecture.
684
+ - [Control-Plane Developer Course](docs/development/control-plane-course/README.md):
685
+ nine Chinese, code-led lectures.
686
+ - [Testing and Quality](docs/development/testing-and-quality.md): validation
687
+ layers and risk-based checks.
688
+ - [Public/Private Boundary](docs/public-private-boundary.md): safe fixtures,
689
+ examples, evidence, and publication.
690
+
691
+ ### Inspect Outcomes
692
+
693
+ - [Showcase Catalog](docs/showcases/README.md): public-safe cases and evidence
694
+ labels.
695
+ - [Research and Evidence](docs/research/README.md): benchmark investigations
696
+ and source-backed findings.
697
+ - [Update Notes](docs/update-notes/README.md): public-safe progress notes.
698
+
699
+ ### Project and Community
700
+
701
+ - [Current Technical Directions](docs/project/technical-directions.md)
702
+ - [Project Governance](.github/GOVERNANCE.md)
703
+ - [Contributing](CONTRIBUTING.md) and [Contributor Tasks](docs/development/contributor-tasks.md)
704
+ - [Authors and Contributors](docs/project/authors.md)
705
+ - [Project History](docs/project/history.md)
706
+ - [Name and Marks](docs/project/trademarks.md)
707
+ - [Brand Guide for External Use](docs/project/brand-guide.md): how projects and companies may reference LoopX, its integrations, and its artwork
708
+ - [ADOPTERS](ADOPTERS.md): voluntary self-attested adoption directory
709
+ - [Ecosystem Adoption](docs/community/ecosystem-adoption.md) - integrations,
710
+ sampling, and derivatives we observe and track
711
+
712
+ ## Partner Projects
713
+
714
+ LoopX welcomes collaboration with other open-source projects to build the
715
+ long-running agent ecosystem. Our confirmed partners include:
716
+
717
+ - [OpenViking](https://github.com/volcengine/OpenViking) - Self-evolving
718
+ context database for AI agents
719
+ - [NoKV](https://github.com/NoKV-Lab/NoKV) - AI native distributed file system
720
+
721
+ <a id="community--feedback"></a>
722
+
723
+ ## Community and Feedback
724
+
725
+ LoopX is already running real long-running agent goals and is under active
726
+ development. The most useful feedback comes from real long-running agent
727
+ projects: where the control plane helped, where it felt heavy, and which gates
728
+ or handoffs disappeared from view.
729
+
730
+ - Use [GitHub Issues](https://github.com/huangruiteng/loopx/issues) for
731
+ reproducible bugs, install problems, and feature requests.
732
+ - Open PRs for docs fixes, showcase writeups, and small public-safe examples.
733
+ - Join the [Discord community](https://discord.gg/XmGgQyCFZd), or use Lark or
734
+ WeChat below.
735
+
736
+ See [Support](.github/SUPPORT.md) for channel routing, service boundaries, and
737
+ official publication sources.
738
+
739
+ <p align="center">
740
+ <a href="docs/assets/loopx-lark-developer-group.png"><img src="docs/assets/loopx-lark-developer-group.png" alt="LoopX Lark developer group QR code" width="280"></a>
741
+ <a href="docs/assets/loopx-wechat-contact.png"><img src="docs/assets/loopx-wechat-contact.png" alt="LoopX WeChat contact QR code" width="220"></a>
742
+ </p>
743
+ <p align="center">
744
+ <sub><strong>Lark:</strong> scan to join directly<br><strong>WeChat: <code>huangrt00</code></strong> · mention LoopX in the friend request</sub>
745
+ </p>
746
+
747
+ ## Contributing
748
+
749
+ External contributors should start with
750
+ [Contributor Tasks](docs/development/contributor-tasks.md) for public, claimable work and
751
+ [Contributing](CONTRIBUTING.md) for setup, validation, and boundary rules.
752
+ Project roles and public history are recorded in
753
+ [Governance](.github/GOVERNANCE.md),
754
+ [Authors and Contributors](docs/project/authors.md), and
755
+ [Project History](docs/project/history.md).
756
+
757
+ LoopX keeps local active state separate from the public repository. Do not
758
+ commit `.loopx/`, `.codex/goals/`, live `ACTIVE_GOAL_STATE.md`, raw benchmark
759
+ traces, credentials, private logs, or operator artifacts.
760
+
761
+ ## Current Status
762
+
763
+ LoopX 1.0 is a usable local control plane for long-running agent work and is
764
+ entering broader adoption. It is not a full agent platform, an agent runtime, or
765
+ an autonomous production controller.
766
+
767
+ Today LoopX ships a durable state kernel for goals, typed todos and decision
768
+ scopes, peer claims and leases, evidence and writeback, quota-aware scheduling,
769
+ and cross-turn continuation. Guided start, recurring heartbeat, isolated Codex
770
+ CLI turns, evidence-backed Issue-Fix admission, optional Explore and auto
771
+ research paths, public validation canaries, and the multi-project Personal
772
+ Workspace all build on that shared control state.
773
+
774
+ Support levels remain explicit. The state and CLI contracts are the stable
775
+ center; several host integrations and advanced paths are optional, default-off,
776
+ or experimental. LoopX does not grant credentials, approve destructive or
777
+ production actions, publish on a user's behalf without authorization, or turn
778
+ an unverified run into evidence of success.
779
+
780
+ Current investment is organized through the
781
+ [Technical Directions map](docs/project/technical-directions.md): long-horizon
782
+ benchmark evidence, operator surface and IM integration, shared-goal cross-host
783
+ coordination, and an explicitly staged architecture and research incubator.
784
+
785
+ ## Star History
786
+
787
+ <p align="center">
788
+ <a href="https://github.com/huangruiteng/loopx/stargazers"><img src="https://huangruiteng.github.io/loopx/site-assets/star-history.svg" alt="LoopX GitHub star history from verified snapshots" width="800"></a><br>
789
+ <sub>Generated every six hours from GitHub's official stargazer timestamps using a repository-authorized workflow. A snapshot is published only when the fetched rows match GitHub's current star count; GitHub's image cache may delay refreshes.</sub>
790
+ </p>
791
+
792
+ ## License
793
+
794
+ Apache License 2.0 beginning with `v0.4.8`. See [LICENSE](LICENSE) and
795
+ [NOTICE](NOTICE). Releases through `v0.4.7` remain under their original MIT
796
+ terms; the historical text and notice are preserved in
797
+ [LICENSE-MIT](LICENSE-MIT). The [licensing policy](docs/project/licensing.md)
798
+ explains the version, contribution, patent-grant, and open-core boundaries.
799
+
800
+ [osai-verify: eb42dd9cf910399988f0]: #