simplicio-loop 3.36.0__tar.gz → 3.36.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. {simplicio_loop-3.36.0/simplicio_loop.egg-info → simplicio_loop-3.36.1}/PKG-INFO +1 -1
  2. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/pyproject.toml +69 -69
  3. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/__init__.py +18 -18
  4. simplicio_loop-3.36.1/simplicio_loop/orca_lifecycle.py +87 -0
  5. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/runner.py +31 -0
  6. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1/simplicio_loop.egg-info}/PKG-INFO +1 -1
  7. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop.egg-info/SOURCES.txt +2 -0
  8. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_github_status_sync_unit.py +33 -2
  9. simplicio_loop-3.36.1/tests/test_orca_lifecycle_unit.py +44 -0
  10. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/LICENSE +0 -0
  11. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/MANIFEST.in +0 -0
  12. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/PYPI.md +0 -0
  13. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/README.md +0 -0
  14. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/setup.cfg +0 -0
  15. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/hooks/README.md +0 -0
  16. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/hooks/action_gate.py +0 -0
  17. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/hooks/hooks.claude.json +0 -0
  18. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/hooks/hooks.json +0 -0
  19. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/hooks/loop_capture.py +0 -0
  20. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/hooks/loop_stop.py +0 -0
  21. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/hooks/orient_clamp.py +0 -0
  22. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/hooks/orient_rewrite.py +0 -0
  23. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/hooks/pre-commit.py +0 -0
  24. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/hooks/simplicio_dashboard.py +0 -0
  25. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/hooks/simplicio_watch.py +0 -0
  26. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/scripts/cross_agent_wiki.py +0 -0
  27. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/scripts/hierarchical_planner.py +0 -0
  28. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-autoresearch/SKILL.md +0 -0
  29. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-compress/SKILL.md +0 -0
  30. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-learn/SKILL.md +0 -0
  31. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-loop/SKILL.md +0 -0
  32. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/agentsview-adapter.md +0 -0
  33. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/azure-devops-adapter.md +0 -0
  34. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/bound-operators.md +0 -0
  35. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/claims-gate.md +0 -0
  36. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/control-policy.md +0 -0
  37. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/cross-agent-wiki.md +0 -0
  38. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/cross-repo-integration.md +0 -0
  39. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/extension-points.md +0 -0
  40. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/hierarchical-planner.md +0 -0
  41. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/lmcache-adapter.md +0 -0
  42. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/orchestration.md +0 -0
  43. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/planning-gate.md +0 -0
  44. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/progress-feedback.md +0 -0
  45. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/quality-safety-delivery.md +0 -0
  46. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/run-journal-stall-detector.md +0 -0
  47. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/spindle-handoff.md +0 -0
  48. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/standing-loop-247.md +0 -0
  49. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/token-capture.md +0 -0
  50. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/token-economy.md +0 -0
  51. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/triage-verify-detail.md +0 -0
  52. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/understand-anything-adapter.md +0 -0
  53. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/video-evidence.md +0 -0
  54. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/web-evidence.md +0 -0
  55. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-orient/SKILL.md +0 -0
  56. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-review/SKILL.md +0 -0
  57. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-tasks/SKILL.md +0 -0
  58. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-tasks/references/agentsview-adapter.md +0 -0
  59. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-tasks/references/azure-devops-adapter.md +0 -0
  60. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-tasks/references/extension-points.md +0 -0
  61. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-tasks/references/lmcache-adapter.md +0 -0
  62. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-tasks/references/orchestration.md +0 -0
  63. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-tasks/references/quality-safety-delivery.md +0 -0
  64. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-tasks/references/standing-loop-247.md +0 -0
  65. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-tasks/references/token-capture.md +0 -0
  66. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-tasks/references/token-economy.md +0 -0
  67. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-tasks/references/understand-anything-adapter.md +0 -0
  68. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-tasks/references/video-evidence.md +0 -0
  69. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/skills/simplicio-tasks/references/web-evidence.md +0 -0
  70. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/_bundle/tests/_selfrun.py +0 -0
  71. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/agent_contract.py +0 -0
  72. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/attempt_journal.py +0 -0
  73. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/budget.py +0 -0
  74. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/cli.py +0 -0
  75. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/control_policy.py +0 -0
  76. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/delivery.py +0 -0
  77. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/drain.py +0 -0
  78. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/driver_contract.py +0 -0
  79. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/evidence.py +0 -0
  80. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/execution_board.py +0 -0
  81. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/external_verifiers.py +0 -0
  82. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/flow_semantics.py +0 -0
  83. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/freshness.py +0 -0
  84. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/github_lifecycle.py +0 -0
  85. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/intake_contract.py +0 -0
  86. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/merge_executor.py +0 -0
  87. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/model_registry.py +0 -0
  88. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/model_router.py +0 -0
  89. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/ops_ledger.py +0 -0
  90. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/oracle.py +0 -0
  91. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/phase_events.py +0 -0
  92. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/plan_contract.py +0 -0
  93. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/planning_gate.py +0 -0
  94. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/pr_patrol.py +0 -0
  95. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/progress.py +0 -0
  96. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/quality_matrix.py +0 -0
  97. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/receipt_verifier.py +0 -0
  98. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/recovery.py +0 -0
  99. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/remote_queue.py +0 -0
  100. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/remote_queue_server_cli.py +0 -0
  101. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/remote_worker_cli.py +0 -0
  102. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/remote_worker_measurement.py +0 -0
  103. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/remote_worker_supervisor_cli.py +0 -0
  104. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/runtime_adapter.py +0 -0
  105. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/runtime_drivers.py +0 -0
  106. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/runtime_execution_receipt.py +0 -0
  107. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/secure_transport.py +0 -0
  108. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/source_adapter.py +0 -0
  109. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/source_snapshot.py +0 -0
  110. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/source_state.py +0 -0
  111. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/task_contract.py +0 -0
  112. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/traceability_matrix.py +0 -0
  113. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/verified_delivery.py +0 -0
  114. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/work_item_claims.py +0 -0
  115. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop/worker_daemon.py +0 -0
  116. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop.egg-info/dependency_links.txt +0 -0
  117. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop.egg-info/entry_points.txt +0 -0
  118. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop.egg-info/requires.txt +0 -0
  119. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/simplicio_loop.egg-info/top_level.txt +0 -0
  120. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_284_lifecycle_dag_idempotence_integration.py +0 -0
  121. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_action_gate_system.py +0 -0
  122. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_agent_contract_unit.py +0 -0
  123. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_agent_identity_integration.py +0 -0
  124. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_agentsview_adapter_integration.py +0 -0
  125. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_attempt_journal_unit.py +0 -0
  126. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_autoresearch_system.py +0 -0
  127. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_az_boards_adapter_integration.py +0 -0
  128. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_batch_crash_recovery_system.py +0 -0
  129. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_budget_error_paths_unit.py +0 -0
  130. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_budget_unit.py +0 -0
  131. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_check_e2e_demo_contract_system.py +0 -0
  132. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_check_e2e_installed_system.py +0 -0
  133. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_check_loop_contract_regression.py +0 -0
  134. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_claims_audit_unit.py +0 -0
  135. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_claims_manifest_unit.py +0 -0
  136. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_clean_env_contract_integration.py +0 -0
  137. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_cli_dispatch_unit.py +0 -0
  138. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_cli_install_unit.py +0 -0
  139. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_cli_oracle_unit.py +0 -0
  140. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_completion_oracle_matrix_unit.py +0 -0
  141. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_completion_oracle_system.py +0 -0
  142. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_control_policy_unit.py +0 -0
  143. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_copilot_global_unit.py +0 -0
  144. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_cross_agent_wiki_integration.py +0 -0
  145. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_dashboard_hook_integration.py +0 -0
  146. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_delivery_concurrency_fault_injection_system.py +0 -0
  147. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_delivery_lifecycle_sandbox_e2e_system.py +0 -0
  148. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_delivery_progress_integration.py +0 -0
  149. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_delivery_reconciliation_unit.py +0 -0
  150. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_delivery_source_identity_unit.py +0 -0
  151. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_delivery_validation_unit.py +0 -0
  152. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_dispatch_batch_multi_pr_integration.py +0 -0
  153. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_dispatch_merge_wiring_integration.py +0 -0
  154. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_distributed_183_dod_system.py +0 -0
  155. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_distributed_183_e2e_system.py +0 -0
  156. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_distributed_183_external_probe_integration.py +0 -0
  157. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_distributed_epic_evidence_system.py +0 -0
  158. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_distributed_trust_policy_unit.py +0 -0
  159. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_doctor_smoke_system.py +0 -0
  160. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_drain_cli_integration.py +0 -0
  161. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_drain_integration.py +0 -0
  162. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_driver_contract_unit.py +0 -0
  163. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_e2e_demo_audit_system.py +0 -0
  164. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_evidence_chain_integration.py +0 -0
  165. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_evidence_receipt_unit.py +0 -0
  166. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_execution_board_e2e_integration.py +0 -0
  167. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_external_verifiers_integration.py +0 -0
  168. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_fan_out_flow_system.py +0 -0
  169. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_fan_out_scheduler_integration.py +0 -0
  170. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_fan_out_unit.py +0 -0
  171. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_flow_audit_integration.py +0 -0
  172. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_flow_semantics_edge_paths_unit.py +0 -0
  173. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_flow_semantics_unit.py +0 -0
  174. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_freshness_unit.py +0 -0
  175. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_gen_install_mutations_doc_unit.py +0 -0
  176. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_github_lifecycle_concurrency_e2e_system.py +0 -0
  177. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_github_lifecycle_live_e2e.py +0 -0
  178. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_github_lifecycle_readside_integration.py +0 -0
  179. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_github_lifecycle_runner_wiring_integration.py +0 -0
  180. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_github_lifecycle_unit.py +0 -0
  181. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_golden_mutation_regression.py +0 -0
  182. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_hbp_topics_integration.py +0 -0
  183. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_hierarchical_planner_unit.py +0 -0
  184. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_hooks_coverage_integration.py +0 -0
  185. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_impact_audit_integration.py +0 -0
  186. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_independent_watcher_integration.py +0 -0
  187. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_install_ci_pinning_unit.py +0 -0
  188. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_install_consent_regression.py +0 -0
  189. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_install_lib_integration.py +0 -0
  190. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_install_plan_unit.py +0 -0
  191. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_install_post_smoke_integration.py +0 -0
  192. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_install_rollback_integration.py +0 -0
  193. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_install_smoke_unit.py +0 -0
  194. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_install_transaction_unit.py +0 -0
  195. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_install_upgrade_integration.py +0 -0
  196. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_intake_impact_matrix_replan_284_unit.py +0 -0
  197. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_intake_progress.py +0 -0
  198. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_intake_progress_integration.py +0 -0
  199. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_learn_pipeline_removed_regression.py +0 -0
  200. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_ledger_cli_unit.py +0 -0
  201. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_live_issue_183_identity_system.py +0 -0
  202. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_locked_append_integration.py +0 -0
  203. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_loop_driver_run_state_e2e_system.py +0 -0
  204. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_loop_e2e_system.py +0 -0
  205. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_loop_progress_integration.py +0 -0
  206. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_maintenance_deferred_docs_integration.py +0 -0
  207. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_merge_executor_live_e2e_system.py +0 -0
  208. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_merge_executor_unit.py +0 -0
  209. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_merge_queue_live_probe_integration.py +0 -0
  210. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_mirror_parity_integration.py +0 -0
  211. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_model_registry_unit.py +0 -0
  212. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_model_routed_dispatch_wiring_integration.py +0 -0
  213. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_model_router_fallback_unit.py +0 -0
  214. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_model_router_unit.py +0 -0
  215. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_operator_batch_integration.py +0 -0
  216. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_operator_worktree_batch_unit.py +0 -0
  217. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_ops_ledger_integration.py +0 -0
  218. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_oracle_gates_unit.py +0 -0
  219. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_oracle_perf_benchmark_unit.py +0 -0
  220. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_oracle_source_lifecycle_gate_integration.py +0 -0
  221. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_orca_preset_integration.py +0 -0
  222. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_phase_events_unit.py +0 -0
  223. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_plan_contract_unit.py +0 -0
  224. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_planes_golden_eval_regression.py +0 -0
  225. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_planes_installed_e2e_system.py +0 -0
  226. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_planning_gate_284_enhancements_unit.py +0 -0
  227. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_planning_gate_execute_operator_integration.py +0 -0
  228. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_planning_gate_github_publish_unit.py +0 -0
  229. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_planning_gate_live_e2e_system.py +0 -0
  230. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_planning_gate_unit.py +0 -0
  231. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_pr_evidence_comment_publish_integration.py +0 -0
  232. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_pr_evidence_lifecycle_delegation_integration.py +0 -0
  233. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_pr_patrol_unit.py +0 -0
  234. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_precommit_bundle_sync_integration.py +0 -0
  235. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_preflight_unit.py +0 -0
  236. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_progress_comment_live_e2e_system.py +0 -0
  237. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_progress_comment_ratelimit_cli_e2e_integration.py +0 -0
  238. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_progress_e2e_system.py +0 -0
  239. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_progress_failopen_integration.py +0 -0
  240. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_progress_snapshots_unit.py +0 -0
  241. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_progress_unit.py +0 -0
  242. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_provenance_generate_integration.py +0 -0
  243. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_quality_gate_scripts_emit_json_unit.py +0 -0
  244. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_quality_matrix_benchmark_integration.py +0 -0
  245. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_quality_matrix_integration.py +0 -0
  246. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_quality_matrix_regression.py +0 -0
  247. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_quality_matrix_reverify_integration.py +0 -0
  248. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_quality_matrix_system.py +0 -0
  249. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_quality_matrix_unit.py +0 -0
  250. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_quality_matrix_watcher.py +0 -0
  251. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_receipt_verifier_integration.py +0 -0
  252. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_recovery_unit.py +0 -0
  253. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_release_manifest_unit.py +0 -0
  254. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_release_rehearsal_integration.py +0 -0
  255. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_release_verify_unit.py +0 -0
  256. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_remote_queue_cancellation_integration.py +0 -0
  257. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_remote_queue_integration.py +0 -0
  258. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_remote_queue_live_system.py +0 -0
  259. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_remote_queue_pull_claim_system.py +0 -0
  260. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_remote_queue_short_lived_auth_integration.py +0 -0
  261. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_remote_worker_e2e_system.py +0 -0
  262. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_remote_worker_http_e2e_system.py +0 -0
  263. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_remote_worker_measurement_unit.py +0 -0
  264. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_remote_worker_supervisor_system.py +0 -0
  265. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_repo_conventions_architecture_unit.py +0 -0
  266. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_repo_governance_294_integration.py +0 -0
  267. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_repository_budget_unit.py +0 -0
  268. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_repository_governance_unit.py +0 -0
  269. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_runner_cli_integration.py +0 -0
  270. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_runner_progress_events_unit.py +0 -0
  271. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_runner_state_machine_unit.py +0 -0
  272. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_runtime_adapter_unit.py +0 -0
  273. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_runtime_drivers_integration.py +0 -0
  274. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_runtime_execution_receipt_unit.py +0 -0
  275. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_runtime_matrix_integration.py +0 -0
  276. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_sbom_generate_integration.py +0 -0
  277. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_schema_verify_integration.py +0 -0
  278. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_schema_verify_unit.py +0 -0
  279. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_secure_transport_fault_injection_system.py +0 -0
  280. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_secure_transport_integration.py +0 -0
  281. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_security_audit_log_unit.py +0 -0
  282. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_short_lived_credentials_unit.py +0 -0
  283. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_simplicio_mcp_runner_unit.py +0 -0
  284. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_source_adapter_protocol_unit.py +0 -0
  285. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_source_snapshot_unit.py +0 -0
  286. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_source_state_unit.py +0 -0
  287. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_system_276_e2e_system.py +0 -0
  288. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_system_check_system.py +0 -0
  289. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_system_clean_install_system.py +0 -0
  290. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_task_backlog_unit.py +0 -0
  291. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_task_contract_cli_integration.py +0 -0
  292. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_task_contract_routing_unit.py +0 -0
  293. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_task_contract_unit.py +0 -0
  294. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_task_to_delivery_golden_corpus_regression.py +0 -0
  295. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_test_categories_unit.py +0 -0
  296. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_token_budget_unit.py +0 -0
  297. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_toon_codec_unit.py +0 -0
  298. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_transcript_progress_e2e_system.py +0 -0
  299. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_transcript_progress_unit.py +0 -0
  300. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_turn_progress_integration.py +0 -0
  301. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_verified_delivery_dispatch_wiring_integration.py +0 -0
  302. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_verified_delivery_unit.py +0 -0
  303. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_verify_adapters_integration.py +0 -0
  304. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_version_sync_unit.py +0 -0
  305. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_vscode_global_install.py +0 -0
  306. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_watcher_binding_unit.py +0 -0
  307. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_watcher_challenge_generation_integration.py +0 -0
  308. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_watcher_quality_gate_reverify_unit.py +0 -0
  309. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_work_item_claims_chaos_system.py +0 -0
  310. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_work_item_claims_run_guarded_integration.py +0 -0
  311. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_work_item_claims_unit.py +0 -0
  312. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_worker_cli_contract_integration.py +0 -0
  313. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_worker_daemon_unit.py +0 -0
  314. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_worker_selftests_system.py +0 -0
  315. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_worker_smoke_system.py +0 -0
  316. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_workitem_attempts_integration.py +0 -0
  317. {simplicio_loop-3.36.0 → simplicio_loop-3.36.1}/tests/test_worktree_queue_integration.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: simplicio-loop
3
- Version: 3.36.0
3
+ Version: 3.36.1
4
4
  Summary: The Universal Looping AI Orchestrator — a runtime-agnostic super-plugin (7 skills) that drains any queue of work end-to-end on any LLM/runtime.
5
5
  Author-email: Wesley Simplicio <wesleybob4@gmail.com>
6
6
  License: MIT
@@ -1,69 +1,69 @@
1
- [build-system]
2
- requires = ["setuptools>=68", "wheel"]
3
- build-backend = "setuptools.build_meta"
4
-
5
- [project]
6
- name = "simplicio-loop"
7
- version = "3.36.0"
8
- description = "The Universal Looping AI Orchestrator — a runtime-agnostic super-plugin (7 skills) that drains any queue of work end-to-end on any LLM/runtime."
9
- readme = "PYPI.md"
10
- requires-python = ">=3.8"
11
- license = { text = "MIT" }
12
- authors = [{ name = "Wesley Simplicio", email = "wesleybob4@gmail.com" }]
13
- keywords = ["ai", "agent", "orchestrator", "llm", "claude", "cursor", "automation", "ralph-loop", "token-economy", "cli"]
14
- classifiers = [
15
- "Development Status :: 4 - Beta",
16
- "Intended Audience :: Developers",
17
- "License :: OSI Approved :: MIT License",
18
- "Programming Language :: Python :: 3",
19
- "Programming Language :: Python :: 3 :: Only",
20
- "Topic :: Software Development :: Build Tools",
21
- "Topic :: Utilities",
22
- "Operating System :: OS Independent",
23
- ]
24
- # The simplicio-loop drive requires the operator package (`simplicio-cli`), which exposes
25
- # `simplicio-dev-cli` and also brings the survey binary `simplicio-mapper` transitively.
26
- dependencies = [
27
- "simplicio-cli>=0.16.1",
28
- ]
29
-
30
- # Optional: the real embedding backend for `simplicio-cli semantic --ml` / `simplicio-cli rag --ml`.
31
- # The native engine itself is stdlib-only; this only enables embedding-based semantic dedup +
32
- # meaning retrieval. `pip install "simplicio-loop[ml]"`.
33
- [project.optional-dependencies]
34
- # Dev/test: the suite ALSO self-runs on bare python3 (`python3 scripts/check.py`), so pytest is
35
- # only a convenience for nicer output / IDE integration — never required.
36
- dev = ["pytest>=7", "pytest-cov>=4"]
37
- ml = ["model2vec>=0.3", "numpy>=1.21"]
38
-
39
- [project.urls]
40
- Homepage = "https://github.com/wesleysimplicio/simplicio-loop"
41
- Repository = "https://github.com/wesleysimplicio/simplicio-loop"
42
- Issues = "https://github.com/wesleysimplicio/simplicio-loop/issues"
43
-
44
- [project.scripts]
45
- simplicio-loop = "simplicio_loop.cli:main"
46
- # issue #286 step 11: the multi-device remote-worker protocol's server + worker + supervisor
47
- # are genuinely installable binaries, not source that only runs from a git checkout.
48
- simplicio-remote-queue-server = "simplicio_loop.remote_queue_server_cli:main"
49
- simplicio-remote-worker = "simplicio_loop.remote_worker_cli:main"
50
- simplicio-remote-worker-supervisor = "simplicio_loop.remote_worker_supervisor_cli:main"
51
-
52
- [tool.setuptools]
53
- packages = ["simplicio_loop"]
54
- include-package-data = true
55
-
56
- [tool.setuptools.package-data]
57
- simplicio_loop = ["_bundle/**/*"]
58
-
59
- [tool.coverage.run]
60
- source = ["simplicio_loop"]
61
- omit = [
62
- "simplicio_loop/_bundle/*",
63
- ]
64
-
65
- [tool.coverage.report]
66
- exclude_lines = [
67
- "pragma: no cover",
68
- "if __name__ == .__main__.:",
69
- ]
1
+ [build-system]
2
+ requires = ["setuptools>=68", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "simplicio-loop"
7
+ version = "3.36.1"
8
+ description = "The Universal Looping AI Orchestrator — a runtime-agnostic super-plugin (7 skills) that drains any queue of work end-to-end on any LLM/runtime."
9
+ readme = "PYPI.md"
10
+ requires-python = ">=3.8"
11
+ license = { text = "MIT" }
12
+ authors = [{ name = "Wesley Simplicio", email = "wesleybob4@gmail.com" }]
13
+ keywords = ["ai", "agent", "orchestrator", "llm", "claude", "cursor", "automation", "ralph-loop", "token-economy", "cli"]
14
+ classifiers = [
15
+ "Development Status :: 4 - Beta",
16
+ "Intended Audience :: Developers",
17
+ "License :: OSI Approved :: MIT License",
18
+ "Programming Language :: Python :: 3",
19
+ "Programming Language :: Python :: 3 :: Only",
20
+ "Topic :: Software Development :: Build Tools",
21
+ "Topic :: Utilities",
22
+ "Operating System :: OS Independent",
23
+ ]
24
+ # The simplicio-loop drive requires the operator package (`simplicio-cli`), which exposes
25
+ # `simplicio-dev-cli` and also brings the survey binary `simplicio-mapper` transitively.
26
+ dependencies = [
27
+ "simplicio-cli>=0.16.1",
28
+ ]
29
+
30
+ # Optional: the real embedding backend for `simplicio-cli semantic --ml` / `simplicio-cli rag --ml`.
31
+ # The native engine itself is stdlib-only; this only enables embedding-based semantic dedup +
32
+ # meaning retrieval. `pip install "simplicio-loop[ml]"`.
33
+ [project.optional-dependencies]
34
+ # Dev/test: the suite ALSO self-runs on bare python3 (`python3 scripts/check.py`), so pytest is
35
+ # only a convenience for nicer output / IDE integration — never required.
36
+ dev = ["pytest>=7", "pytest-cov>=4"]
37
+ ml = ["model2vec>=0.3", "numpy>=1.21"]
38
+
39
+ [project.urls]
40
+ Homepage = "https://github.com/wesleysimplicio/simplicio-loop"
41
+ Repository = "https://github.com/wesleysimplicio/simplicio-loop"
42
+ Issues = "https://github.com/wesleysimplicio/simplicio-loop/issues"
43
+
44
+ [project.scripts]
45
+ simplicio-loop = "simplicio_loop.cli:main"
46
+ # issue #286 step 11: the multi-device remote-worker protocol's server + worker + supervisor
47
+ # are genuinely installable binaries, not source that only runs from a git checkout.
48
+ simplicio-remote-queue-server = "simplicio_loop.remote_queue_server_cli:main"
49
+ simplicio-remote-worker = "simplicio_loop.remote_worker_cli:main"
50
+ simplicio-remote-worker-supervisor = "simplicio_loop.remote_worker_supervisor_cli:main"
51
+
52
+ [tool.setuptools]
53
+ packages = ["simplicio_loop"]
54
+ include-package-data = true
55
+
56
+ [tool.setuptools.package-data]
57
+ simplicio_loop = ["_bundle/**/*"]
58
+
59
+ [tool.coverage.run]
60
+ source = ["simplicio_loop"]
61
+ omit = [
62
+ "simplicio_loop/_bundle/*",
63
+ ]
64
+
65
+ [tool.coverage.report]
66
+ exclude_lines = [
67
+ "pragma: no cover",
68
+ "if __name__ == .__main__.:",
69
+ ]
@@ -1,18 +1,18 @@
1
- """simplicio-loop — The Universal Looping AI Orchestrator.
2
-
3
- A runtime-agnostic super-plugin (7 skills + loop/token hooks) that drains any
4
- queue of work end-to-end on any LLM/runtime. This package ships the skills and
5
- hooks and installs them into a runtime's skills location.
6
- """
7
-
8
- # Single source of truth = the package metadata (pyproject `version`); the literal is only a
9
- # fallback for an editable/source checkout that was never installed. No more version drift.
10
- try:
11
- from importlib.metadata import version as _v, PackageNotFoundError
12
-
13
- try:
14
- __version__ = _v("simplicio-loop")
15
- except PackageNotFoundError:
16
- __version__ = "3.36.0"
17
- except Exception: # pragma: no cover
18
- __version__ = "3.36.0"
1
+ """simplicio-loop — The Universal Looping AI Orchestrator.
2
+
3
+ A runtime-agnostic super-plugin (7 skills + loop/token hooks) that drains any
4
+ queue of work end-to-end on any LLM/runtime. This package ships the skills and
5
+ hooks and installs them into a runtime's skills location.
6
+ """
7
+
8
+ # Single source of truth = the package metadata (pyproject `version`); the literal is only a
9
+ # fallback for an editable/source checkout that was never installed. No more version drift.
10
+ try:
11
+ from importlib.metadata import version as _v, PackageNotFoundError
12
+
13
+ try:
14
+ __version__ = _v("simplicio-loop")
15
+ except PackageNotFoundError:
16
+ __version__ = "3.36.1"
17
+ except Exception: # pragma: no cover
18
+ __version__ = "3.36.1"
@@ -0,0 +1,87 @@
1
+ """Best-effort Orca Dev worktree-card lifecycle projection.
2
+
3
+ Orca is a host rather than a second source-of-truth API. The adapter therefore
4
+ uses the public ``orca worktree`` CLI and scopes every write to the active
5
+ worktree only after ``worktree current`` proves that an Orca context exists.
6
+ Outside Orca this is an explicit no-op, so a local or GitHub-only run cannot
7
+ touch another workspace's card.
8
+ """
9
+ from __future__ import annotations
10
+
11
+ import json
12
+ import os
13
+ import subprocess
14
+ from typing import Any, Callable, Dict, Mapping, Sequence
15
+
16
+
17
+ ORCA_STATUS_BY_LIFECYCLE = {
18
+ "DISCOVERED": "todo",
19
+ "CLAIMED": "in-progress",
20
+ "PLANNED": "in-progress",
21
+ "IN_PROGRESS": "in-progress",
22
+ "VERIFYING": "in-progress",
23
+ "BLOCKED": "in-progress",
24
+ "PAUSED_NETWORK": "in-progress",
25
+ "AWAITING_DECISION": "in-progress",
26
+ "PR_OPEN": "in-review",
27
+ "MERGE_READY": "in-review",
28
+ "MERGED": "completed",
29
+ "CLOSING": "completed",
30
+ "CLOSE_PENDING_RECONCILIATION": "in-progress",
31
+ "CLOSED": "completed",
32
+ "RELEASED": "completed",
33
+ }
34
+
35
+
36
+ def lifecycle_to_orca_status(state: str) -> str:
37
+ return ORCA_STATUS_BY_LIFECYCLE.get(str(state or "").upper(), "in-progress")
38
+
39
+
40
+ def _disabled() -> bool:
41
+ return str(os.environ.get("SIMPLICIO_LOOP_ORCA_LIFECYCLE_SYNC") or "").strip().lower() in {
42
+ "0", "false", "no", "off", "legacy",
43
+ }
44
+
45
+
46
+ def _command() -> str:
47
+ return str(os.environ.get("SIMPLICIO_LOOP_ORCA_COMMAND") or "orca").strip() or "orca"
48
+
49
+
50
+ def _run_default(args: Sequence[str]) -> subprocess.CompletedProcess[str]:
51
+ return subprocess.run([_command(), *args], capture_output=True, text=True, timeout=20)
52
+
53
+
54
+ def sync_orca_status(state: Mapping[str, Any], event: Mapping[str, Any], *,
55
+ runner: Callable[..., subprocess.CompletedProcess[str]] = _run_default) -> Dict[str, Any]:
56
+ """Update only the current Orca worktree card, or return an explicit skip."""
57
+ if _disabled():
58
+ return {"status": "skipped", "reason": "disabled"}
59
+ current = runner(["worktree", "current", "--json"])
60
+ if current.returncode != 0:
61
+ return {"status": "skipped", "reason": "not_in_orca", "detail": (current.stderr or "").strip()[:240]}
62
+ try:
63
+ context = json.loads(current.stdout or "{}")
64
+ except (TypeError, ValueError):
65
+ return {"status": "skipped", "reason": "invalid_orca_context"}
66
+ if not isinstance(context, dict) or not context.get("id"):
67
+ return {"status": "skipped", "reason": "no_active_worktree"}
68
+
69
+ lifecycle = str(event.get("lifecycle_state") or event.get("state") or state.get("phase") or "IN_PROGRESS").upper()
70
+ status = lifecycle_to_orca_status(lifecycle)
71
+ run_id = str(state.get("run_id") or "")
72
+ message = str(event.get("message") or event.get("reason") or "").strip().replace("\n", " ")
73
+ comment = f"Simplicio Loop — {lifecycle}"
74
+ if run_id:
75
+ comment += f" · run {run_id}"
76
+ if message:
77
+ comment += f" · {message[:180]}"
78
+ updated = runner([
79
+ "worktree", "set", "--worktree", "active", "--comment", comment,
80
+ "--workspace-status", status, "--json",
81
+ ])
82
+ if updated.returncode != 0:
83
+ return {"status": "failed", "reason": "orca_update_failed", "detail": (updated.stderr or "").strip()[:240]}
84
+ return {
85
+ "status": "synced", "worktree_id": str(context.get("id")),
86
+ "lifecycle_state": lifecycle, "workspace_status": status, "comment": comment,
87
+ }
@@ -20,6 +20,7 @@ from .delivery import (build_delivery_receipt, normalize_delivery_target,
20
20
  from .evidence import build_evidence_receipt, redact_sensitive_text
21
21
  from .source_state import github_delivery_payload, infer_github_delivery_state
22
22
  from . import github_lifecycle as _github_lifecycle
23
+ from .orca_lifecycle import sync_orca_status
23
24
  from .source_adapter import GitHubSourceAdapter
24
25
  from .task_contract import compile_many, validate_contract
25
26
  from .plan_contract import PLAN_SCHEMA, validate_plan
@@ -1155,9 +1156,39 @@ def _record_event(run_dir: Path, state: Dict[str, Any], event: Dict[str, Any],
1155
1156
  _write_json(run_dir / "state.json", state)
1156
1157
  _append_jsonl(run_dir / "events.jsonl", event)
1157
1158
  _sync_github_lifecycle(run_dir, state, event)
1159
+ _sync_orca_lifecycle(run_dir, state, event)
1158
1160
  return state
1159
1161
 
1160
1162
 
1163
+ def _sync_orca_lifecycle(run_dir: Path, state: Dict[str, Any], event: Dict[str, Any]) -> None:
1164
+ """Project the same lifecycle event onto the active Orca Dev card.
1165
+
1166
+ Orca is optional and host-local: a missing Orca context is recorded as a
1167
+ typed skip rather than treated as a failed delivery or a reason to touch a
1168
+ different worktree.
1169
+ """
1170
+ lifecycle_state = _github_lifecycle.lifecycle_state_for_phase_event(
1171
+ str(event.get("kind") or event.get("phase") or ""))
1172
+ if not lifecycle_state:
1173
+ return
1174
+ try:
1175
+ receipt = sync_orca_status(
1176
+ state, {**event, "lifecycle_state": lifecycle_state},
1177
+ )
1178
+ _append_jsonl(run_dir / "orca-sync.jsonl", {
1179
+ "run_id": str(state.get("run_id") or ""),
1180
+ "event": str(event.get("kind") or event.get("phase") or ""),
1181
+ **receipt,
1182
+ })
1183
+ except Exception as exc: # noqa: BLE001 -- optional host integration is fail-open
1184
+ try:
1185
+ _append_jsonl(run_dir / "orca-sync-errors.jsonl", {
1186
+ "run_id": str(state.get("run_id") or ""), "error": str(exc),
1187
+ })
1188
+ except Exception:
1189
+ pass
1190
+
1191
+
1161
1192
  def _github_source_adapter(owner: str, repo: str, *, publish_comment_fn: Callable,
1162
1193
  outbox_dir: Optional[str | Path] = None) -> GitHubSourceAdapter:
1163
1194
  """One construction point for the #285 `GitHubSourceAdapter` binding runner.py uses,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: simplicio-loop
3
- Version: 3.36.0
3
+ Version: 3.36.1
4
4
  Summary: The Universal Looping AI Orchestrator — a runtime-agnostic super-plugin (7 skills) that drains any queue of work end-to-end on any LLM/runtime.
5
5
  Author-email: Wesley Simplicio <wesleybob4@gmail.com>
6
6
  License: MIT
@@ -24,6 +24,7 @@ simplicio_loop/model_registry.py
24
24
  simplicio_loop/model_router.py
25
25
  simplicio_loop/ops_ledger.py
26
26
  simplicio_loop/oracle.py
27
+ simplicio_loop/orca_lifecycle.py
27
28
  simplicio_loop/phase_events.py
28
29
  simplicio_loop/plan_contract.py
29
30
  simplicio_loop/planning_gate.py
@@ -214,6 +215,7 @@ tests/test_ops_ledger_integration.py
214
215
  tests/test_oracle_gates_unit.py
215
216
  tests/test_oracle_perf_benchmark_unit.py
216
217
  tests/test_oracle_source_lifecycle_gate_integration.py
218
+ tests/test_orca_lifecycle_unit.py
217
219
  tests/test_orca_preset_integration.py
218
220
  tests/test_phase_events_unit.py
219
221
  tests/test_plan_contract_unit.py
@@ -25,7 +25,7 @@ class FakeApi:
25
25
  self.calls.append(("GRAPHQL", query, variables))
26
26
  if query.lstrip().startswith("mutation"):
27
27
  return {"updateProjectV2ItemFieldValue": {"projectV2Item": {"id": "item-1"}}}
28
- return {"organization": {"projectV2": {
28
+ return {"repository": {"projectV2": {
29
29
  "id": "project-1",
30
30
  "fields": {"nodes": [{"id": "status-1", "name": "Status",
31
31
  "options": [{"id": "todo", "name": "Todo"},
@@ -49,7 +49,8 @@ def test_sync_event_updates_label_and_project_for_any_runtime():
49
49
  "action": "created", "issue": {"number": 415}, "comment": {"body": body},
50
50
  }, project_number=7, project_owner="acme")
51
51
  assert result == {"status": "synced", "issue": 415, "state": "IN_PROGRESS",
52
- "label": "simplicio:status:in_progress", "project_moved": True}
52
+ "label": "simplicio:status:in_progress", "project_moved": True,
53
+ "project_number": 7, "project_reason": "moved"}
53
54
  assert any(call[0] == "GRAPHQL" and str(call[2].get("option")) == "progress"
54
55
  for call in api.calls)
55
56
 
@@ -72,6 +73,36 @@ def test_issue_close_and_reopen_are_reconciled_without_comments():
72
73
  assert reopened["state"] == "IN_PROGRESS"
73
74
 
74
75
 
76
+ class AutoProjectApi(FakeApi):
77
+ def graphql(self, query, variables):
78
+ self.calls.append(("GRAPHQL", query, variables))
79
+ if "projectsV2" in query:
80
+ return {"repository": {"projectsV2": {"nodes": [{"number": 9, "title": "repo"}]}}}
81
+ if "addProjectV2ItemById" in query:
82
+ return {"addProjectV2ItemById": {"item": {"id": "item-added"}}}
83
+ if "issue(number" in query:
84
+ return {"repository": {"issue": {"id": "issue-1"}}}
85
+ if query.lstrip().startswith("mutation"):
86
+ return {"updateProjectV2ItemFieldValue": {"projectV2Item": {"id": "item-added"}}}
87
+ return {"repository": {"projectV2": {
88
+ "id": "project-1",
89
+ "fields": {"nodes": [{"id": "status-1", "name": "Status",
90
+ "options": [{"id": "progress", "name": "In Progress"}]}]},
91
+ "items": {"nodes": []},
92
+ }}}
93
+
94
+
95
+ def test_sync_event_discovers_repo_project_and_adds_missing_issue():
96
+ api = AutoProjectApi()
97
+ body = "| Estado | IN_PROGRESS |\n" + LIFECYCLE_MARKER
98
+ result = sync_event(api, "acme/repo", "issue_comment", {
99
+ "action": "created", "issue": {"number": 415}, "comment": {"body": body},
100
+ })
101
+ assert result["project_number"] == 9
102
+ assert result["project_moved"] is True
103
+ assert any("addProjectV2ItemById" in call[1] for call in api.calls if call[0] == "GRAPHQL")
104
+
105
+
75
106
  if __name__ == "__main__":
76
107
  import pytest
77
108
  raise SystemExit(pytest.main([__file__, "-q"]))
@@ -0,0 +1,44 @@
1
+ from __future__ import annotations
2
+
3
+ import json
4
+ import subprocess
5
+
6
+ from simplicio_loop.orca_lifecycle import lifecycle_to_orca_status, sync_orca_status
7
+
8
+
9
+ def _completed(returncode=0, stdout="", stderr=""):
10
+ return subprocess.CompletedProcess(["orca"], returncode, stdout, stderr)
11
+
12
+
13
+ def test_lifecycle_status_mapping_is_stable():
14
+ assert lifecycle_to_orca_status("PR_OPEN") == "in-review"
15
+ assert lifecycle_to_orca_status("MERGED") == "completed"
16
+ assert lifecycle_to_orca_status("BLOCKED") == "in-progress"
17
+
18
+
19
+ def test_sync_updates_only_active_orca_worktree():
20
+ calls = []
21
+
22
+ def runner(args):
23
+ calls.append(args)
24
+ if args[:3] == ["worktree", "current", "--json"]:
25
+ return _completed(stdout=json.dumps({"id": "wt-1"}))
26
+ return _completed(stdout="{}")
27
+
28
+ result = sync_orca_status(
29
+ {"run_id": "run-1", "phase": "in_progress"},
30
+ {"lifecycle_state": "PR_OPEN", "message": "PR criada"},
31
+ runner=runner,
32
+ )
33
+ assert result["status"] == "synced"
34
+ assert result["workspace_status"] == "in-review"
35
+ assert calls[-1][0:4] == ["worktree", "set", "--worktree", "active"]
36
+ assert any("PR_OPEN" in value for value in calls[-1])
37
+
38
+
39
+ def test_sync_is_a_typed_noop_outside_orca():
40
+ result = sync_orca_status(
41
+ {"run_id": "run-1"}, {"lifecycle_state": "IN_PROGRESS"},
42
+ runner=lambda args: _completed(returncode=1, stderr="no active worktree"),
43
+ )
44
+ assert result == {"status": "skipped", "reason": "not_in_orca", "detail": "no active worktree"}
File without changes
File without changes