simplicio-loop 3.36.1__tar.gz → 3.38.0__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.
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/LICENSE +21 -21
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/MANIFEST.in +1 -0
- {simplicio_loop-3.36.1/simplicio_loop.egg-info → simplicio_loop-3.38.0}/PKG-INFO +1 -1
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/PYPI.md +53 -53
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/README.md +204 -48
- simplicio_loop-3.38.0/contracts/stage-agents/v1/action-intent.schema.json +37 -0
- simplicio_loop-3.38.0/contracts/stage-agents/v1/agent-instance.schema.json +89 -0
- simplicio_loop-3.38.0/contracts/stage-agents/v1/agent-role.schema.json +41 -0
- simplicio_loop-3.38.0/contracts/stage-agents/v1/review-finding.schema.json +41 -0
- simplicio_loop-3.38.0/contracts/stage-agents/v1/review-receipt.schema.json +60 -0
- simplicio_loop-3.38.0/contracts/stage-agents/v1/run-stage-graph.schema.json +36 -0
- simplicio_loop-3.38.0/contracts/stage-agents/v1/stage-definition.schema.json +162 -0
- simplicio_loop-3.38.0/contracts/stage-agents/v1/stage-input.schema.json +9 -0
- simplicio_loop-3.38.0/contracts/stage-agents/v1/stage-output.schema.json +9 -0
- simplicio_loop-3.38.0/contracts/stage-agents/v1/stage-receipt.schema.json +102 -0
- simplicio_loop-3.38.0/contracts/stage-agents/v1/stages.json +700 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/pyproject.toml +2 -2
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/__init__.py +2 -2
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/hooks/hooks.claude.json +20 -20
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/hooks/hooks.json +11 -11
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/hooks/loop_capture.py +31 -31
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/hooks/loop_stop.py +5 -1
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/hooks/orient_clamp.py +167 -167
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/hooks/orient_rewrite.py +119 -119
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/hooks/pre-commit.py +141 -141
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/hooks/simplicio_dashboard.py +970 -970
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/hooks/simplicio_watch.py +115 -115
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/scripts/cross_agent_wiki.py +615 -615
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/scripts/hierarchical_planner.py +394 -394
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-autoresearch/SKILL.md +165 -165
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-compress/SKILL.md +86 -86
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-learn/SKILL.md +80 -80
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-loop/SKILL.md +21 -2
- {simplicio_loop-3.36.1/simplicio_loop/_bundle/skills/simplicio-tasks → simplicio_loop-3.38.0/simplicio_loop/_bundle/skills/simplicio-loop}/references/agentsview-adapter.md +198 -198
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-loop/references/azure-devops-adapter.md +69 -69
- simplicio_loop-3.38.0/simplicio_loop/_bundle/skills/simplicio-loop/references/background-verification.md +44 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-loop/references/bound-operators.md +108 -108
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-loop/references/claims-gate.md +62 -62
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-loop/references/control-policy.md +79 -79
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-loop/references/cross-agent-wiki.md +40 -40
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-loop/references/cross-repo-integration.md +42 -42
- {simplicio_loop-3.36.1/simplicio_loop/_bundle/skills/simplicio-tasks → simplicio_loop-3.38.0/simplicio_loop/_bundle/skills/simplicio-loop}/references/extension-points.md +101 -101
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-loop/references/hierarchical-planner.md +39 -39
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-loop/references/lmcache-adapter.md +632 -632
- simplicio_loop-3.38.0/simplicio_loop/_bundle/skills/simplicio-loop/references/multi-agent-coordination.md +54 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-loop/references/progress-feedback.md +153 -153
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-loop/references/run-journal-stall-detector.md +47 -47
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-loop/references/spindle-handoff.md +94 -94
- {simplicio_loop-3.36.1/simplicio_loop/_bundle/skills/simplicio-tasks → simplicio_loop-3.38.0/simplicio_loop/_bundle/skills/simplicio-loop}/references/standing-loop-247.md +105 -105
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-loop/references/token-capture.md +124 -124
- {simplicio_loop-3.36.1/simplicio_loop/_bundle/skills/simplicio-tasks → simplicio_loop-3.38.0/simplicio_loop/_bundle/skills/simplicio-loop}/references/token-economy.md +231 -231
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-loop/references/triage-verify-detail.md +70 -70
- {simplicio_loop-3.36.1/simplicio_loop/_bundle/skills/simplicio-tasks → simplicio_loop-3.38.0/simplicio_loop/_bundle/skills/simplicio-loop}/references/understand-anything-adapter.md +591 -591
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-loop/references/video-evidence.md +108 -108
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-loop/references/web-evidence.md +93 -93
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-orient/SKILL.md +189 -189
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-review/SKILL.md +104 -104
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-tasks/SKILL.md +32 -32
- {simplicio_loop-3.36.1/simplicio_loop/_bundle/skills/simplicio-loop → simplicio_loop-3.38.0/simplicio_loop/_bundle/skills/simplicio-tasks}/references/agentsview-adapter.md +198 -198
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-tasks/references/azure-devops-adapter.md +69 -69
- {simplicio_loop-3.36.1/simplicio_loop/_bundle/skills/simplicio-loop → simplicio_loop-3.38.0/simplicio_loop/_bundle/skills/simplicio-tasks}/references/extension-points.md +101 -101
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-tasks/references/lmcache-adapter.md +632 -632
- {simplicio_loop-3.36.1/simplicio_loop/_bundle/skills/simplicio-loop → simplicio_loop-3.38.0/simplicio_loop/_bundle/skills/simplicio-tasks}/references/standing-loop-247.md +105 -105
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-tasks/references/token-capture.md +124 -124
- {simplicio_loop-3.36.1/simplicio_loop/_bundle/skills/simplicio-loop → simplicio_loop-3.38.0/simplicio_loop/_bundle/skills/simplicio-tasks}/references/token-economy.md +231 -231
- {simplicio_loop-3.36.1/simplicio_loop/_bundle/skills/simplicio-loop → simplicio_loop-3.38.0/simplicio_loop/_bundle/skills/simplicio-tasks}/references/understand-anything-adapter.md +591 -591
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-tasks/references/video-evidence.md +108 -108
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-tasks/references/web-evidence.md +93 -93
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/tests/_selfrun.py +46 -46
- simplicio_loop-3.38.0/simplicio_loop/_contracts/stage-agents/v1/action-intent.schema.json +37 -0
- simplicio_loop-3.38.0/simplicio_loop/_contracts/stage-agents/v1/agent-instance.schema.json +89 -0
- simplicio_loop-3.38.0/simplicio_loop/_contracts/stage-agents/v1/agent-role.schema.json +41 -0
- simplicio_loop-3.38.0/simplicio_loop/_contracts/stage-agents/v1/review-finding.schema.json +41 -0
- simplicio_loop-3.38.0/simplicio_loop/_contracts/stage-agents/v1/review-receipt.schema.json +60 -0
- simplicio_loop-3.38.0/simplicio_loop/_contracts/stage-agents/v1/run-stage-graph.schema.json +36 -0
- simplicio_loop-3.38.0/simplicio_loop/_contracts/stage-agents/v1/stage-definition.schema.json +162 -0
- simplicio_loop-3.38.0/simplicio_loop/_contracts/stage-agents/v1/stage-input.schema.json +9 -0
- simplicio_loop-3.38.0/simplicio_loop/_contracts/stage-agents/v1/stage-output.schema.json +9 -0
- simplicio_loop-3.38.0/simplicio_loop/_contracts/stage-agents/v1/stage-receipt.schema.json +102 -0
- simplicio_loop-3.38.0/simplicio_loop/_contracts/stage-agents/v1/stages.json +700 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/agent_contract.py +99 -4
- simplicio_loop-3.38.0/simplicio_loop/agent_identity.py +256 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/attempt_journal.py +251 -251
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/budget.py +236 -236
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/cli.py +173 -4
- simplicio_loop-3.38.0/simplicio_loop/completion_auditor.py +820 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/control_policy.py +242 -242
- simplicio_loop-3.38.0/simplicio_loop/delivery_agent.py +916 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/drain.py +349 -349
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/driver_contract.py +101 -101
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/evidence.py +399 -399
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/execution_board.py +300 -300
- simplicio_loop-3.38.0/simplicio_loop/feedback_recovery_agent.py +709 -0
- simplicio_loop-3.38.0/simplicio_loop/finding_report.py +75 -0
- simplicio_loop-3.38.0/simplicio_loop/finding_router.py +206 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/flow_semantics.py +131 -131
- simplicio_loop-3.38.0/simplicio_loop/implementation_agent.py +743 -0
- simplicio_loop-3.38.0/simplicio_loop/intake_planner.py +467 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/model_registry.py +326 -326
- simplicio_loop-3.38.0/simplicio_loop/multi_tracker_reporting.py +543 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/ops_ledger.py +283 -283
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/phase_events.py +139 -139
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/progress.py +25 -1
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/quality_matrix.py +180 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/recovery.py +393 -393
- simplicio_loop-3.38.0/simplicio_loop/review_panel.py +586 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/runtime_adapter.py +235 -235
- simplicio_loop-3.38.0/simplicio_loop/stage_agent_coordinator.py +918 -0
- simplicio_loop-3.38.0/simplicio_loop/stage_agents.py +975 -0
- simplicio_loop-3.38.0/simplicio_loop/stage_report.py +325 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/verified_delivery.py +158 -158
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0/simplicio_loop.egg-info}/PKG-INFO +1 -1
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop.egg-info/SOURCES.txt +69 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_agent_contract_unit.py +28 -0
- simplicio_loop-3.38.0/tests/test_agent_identity.py +246 -0
- simplicio_loop-3.38.0/tests/test_agent_replication.py +169 -0
- simplicio_loop-3.38.0/tests/test_bound_operators_runtime_required_unit.py +46 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_budget_error_paths_unit.py +116 -116
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_check_loop_contract_regression.py +52 -52
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_claims_manifest_unit.py +63 -63
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_cli_install_unit.py +145 -145
- simplicio_loop-3.38.0/tests/test_cli_preflight_status_json_unit.py +143 -0
- simplicio_loop-3.38.0/tests/test_completion_auditor_431_unit.py +603 -0
- simplicio_loop-3.38.0/tests/test_conformance_suite.py +55 -0
- simplicio_loop-3.38.0/tests/test_contract_parity.py +60 -0
- simplicio_loop-3.38.0/tests/test_coordinator_unit.py +157 -0
- simplicio_loop-3.38.0/tests/test_delivery_agent_429.py +851 -0
- simplicio_loop-3.38.0/tests/test_evolution.py +231 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_fan_out_unit.py +141 -141
- simplicio_loop-3.38.0/tests/test_feedback_recovery_agent_430_unit.py +414 -0
- simplicio_loop-3.38.0/tests/test_finding_collector_unit.py +128 -0
- simplicio_loop-3.38.0/tests/test_finding_report.py +55 -0
- simplicio_loop-3.38.0/tests/test_finding_router.py +68 -0
- simplicio_loop-3.38.0/tests/test_findings_cli.py +102 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_flow_semantics_edge_paths_unit.py +117 -117
- simplicio_loop-3.38.0/tests/test_implementation_agent_426_unit.py +615 -0
- simplicio_loop-3.38.0/tests/test_intake_planner_425_unit.py +408 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_intake_progress.py +165 -165
- simplicio_loop-3.38.0/tests/test_loop_progress_encoding_unit.py +68 -0
- simplicio_loop-3.38.0/tests/test_multi_tracker_reporting.py +202 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_oracle_gates_unit.py +204 -204
- simplicio_loop-3.38.0/tests/test_pr_dod_review_unit.py +113 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_progress_unit.py +59 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_quality_matrix_integration.py +115 -115
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_quality_matrix_regression.py +117 -117
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_quality_matrix_system.py +128 -128
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_quality_matrix_unit.py +39 -0
- simplicio_loop-3.38.0/tests/test_release_check_unit.py +94 -0
- simplicio_loop-3.38.0/tests/test_review_panel.py +449 -0
- simplicio_loop-3.38.0/tests/test_safety_gate_agent.py +205 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_schema_verify_integration.py +103 -103
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_schema_verify_unit.py +78 -78
- simplicio_loop-3.38.0/tests/test_stage_agent_conformance.py +260 -0
- simplicio_loop-3.38.0/tests/test_stage_agent_contract.py +407 -0
- simplicio_loop-3.38.0/tests/test_stage_agent_coordinator.py +474 -0
- simplicio_loop-3.38.0/tests/test_stage_agent_fail_closed.py +72 -0
- simplicio_loop-3.38.0/tests/test_stage_agent_reducer.py +249 -0
- simplicio_loop-3.38.0/tests/test_stage_report_cli_integration.py +68 -0
- simplicio_loop-3.38.0/tests/test_stage_report_unit.py +244 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_task_contract_unit.py +146 -146
- simplicio_loop-3.38.0/tests/test_workflow_topology.py +193 -0
- simplicio_loop-3.38.0/tests/test_worktree_cleanup.py +194 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/setup.cfg +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/hooks/README.md +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/hooks/action_gate.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-loop/references/orchestration.md +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-loop/references/planning-gate.md +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-loop/references/quality-safety-delivery.md +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-tasks/references/orchestration.md +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/_bundle/skills/simplicio-tasks/references/quality-safety-delivery.md +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/delivery.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/external_verifiers.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/freshness.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/github_lifecycle.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/intake_contract.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/merge_executor.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/model_router.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/oracle.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/orca_lifecycle.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/plan_contract.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/planning_gate.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/pr_patrol.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/receipt_verifier.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/remote_queue.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/remote_queue_server_cli.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/remote_worker_cli.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/remote_worker_measurement.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/remote_worker_supervisor_cli.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/runner.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/runtime_drivers.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/runtime_execution_receipt.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/secure_transport.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/source_adapter.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/source_snapshot.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/source_state.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/task_contract.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/traceability_matrix.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/work_item_claims.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop/worker_daemon.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop.egg-info/dependency_links.txt +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop.egg-info/entry_points.txt +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop.egg-info/requires.txt +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/simplicio_loop.egg-info/top_level.txt +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_284_lifecycle_dag_idempotence_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_action_gate_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_agent_identity_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_agentsview_adapter_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_attempt_journal_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_autoresearch_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_az_boards_adapter_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_batch_crash_recovery_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_budget_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_check_e2e_demo_contract_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_check_e2e_installed_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_claims_audit_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_clean_env_contract_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_cli_dispatch_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_cli_oracle_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_completion_oracle_matrix_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_completion_oracle_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_control_policy_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_copilot_global_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_cross_agent_wiki_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_dashboard_hook_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_delivery_concurrency_fault_injection_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_delivery_lifecycle_sandbox_e2e_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_delivery_progress_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_delivery_reconciliation_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_delivery_source_identity_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_delivery_validation_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_dispatch_batch_multi_pr_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_dispatch_merge_wiring_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_distributed_183_dod_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_distributed_183_e2e_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_distributed_183_external_probe_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_distributed_epic_evidence_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_distributed_trust_policy_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_doctor_smoke_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_drain_cli_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_drain_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_driver_contract_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_e2e_demo_audit_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_evidence_chain_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_evidence_receipt_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_execution_board_e2e_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_external_verifiers_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_fan_out_flow_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_fan_out_scheduler_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_flow_audit_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_flow_semantics_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_freshness_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_gen_install_mutations_doc_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_github_lifecycle_concurrency_e2e_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_github_lifecycle_live_e2e.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_github_lifecycle_readside_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_github_lifecycle_runner_wiring_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_github_lifecycle_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_github_status_sync_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_golden_mutation_regression.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_hbp_topics_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_hierarchical_planner_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_hooks_coverage_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_impact_audit_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_independent_watcher_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_install_ci_pinning_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_install_consent_regression.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_install_lib_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_install_plan_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_install_post_smoke_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_install_rollback_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_install_smoke_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_install_transaction_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_install_upgrade_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_intake_impact_matrix_replan_284_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_intake_progress_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_learn_pipeline_removed_regression.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_ledger_cli_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_live_issue_183_identity_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_locked_append_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_loop_driver_run_state_e2e_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_loop_e2e_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_loop_progress_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_maintenance_deferred_docs_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_merge_executor_live_e2e_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_merge_executor_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_merge_queue_live_probe_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_mirror_parity_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_model_registry_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_model_routed_dispatch_wiring_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_model_router_fallback_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_model_router_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_operator_batch_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_operator_worktree_batch_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_ops_ledger_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_oracle_perf_benchmark_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_oracle_source_lifecycle_gate_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_orca_lifecycle_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_orca_preset_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_phase_events_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_plan_contract_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_planes_golden_eval_regression.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_planes_installed_e2e_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_planning_gate_284_enhancements_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_planning_gate_execute_operator_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_planning_gate_github_publish_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_planning_gate_live_e2e_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_planning_gate_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_pr_evidence_comment_publish_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_pr_evidence_lifecycle_delegation_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_pr_patrol_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_precommit_bundle_sync_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_preflight_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_progress_comment_live_e2e_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_progress_comment_ratelimit_cli_e2e_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_progress_e2e_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_progress_failopen_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_progress_snapshots_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_provenance_generate_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_quality_gate_scripts_emit_json_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_quality_matrix_benchmark_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_quality_matrix_reverify_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_quality_matrix_watcher.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_receipt_verifier_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_recovery_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_release_manifest_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_release_rehearsal_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_release_verify_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_remote_queue_cancellation_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_remote_queue_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_remote_queue_live_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_remote_queue_pull_claim_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_remote_queue_short_lived_auth_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_remote_worker_e2e_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_remote_worker_http_e2e_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_remote_worker_measurement_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_remote_worker_supervisor_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_repo_conventions_architecture_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_repo_governance_294_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_repository_budget_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_repository_governance_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_runner_cli_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_runner_progress_events_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_runner_state_machine_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_runtime_adapter_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_runtime_drivers_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_runtime_execution_receipt_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_runtime_matrix_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_sbom_generate_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_secure_transport_fault_injection_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_secure_transport_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_security_audit_log_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_short_lived_credentials_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_simplicio_mcp_runner_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_source_adapter_protocol_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_source_snapshot_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_source_state_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_system_276_e2e_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_system_check_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_system_clean_install_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_task_backlog_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_task_contract_cli_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_task_contract_routing_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_task_to_delivery_golden_corpus_regression.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_test_categories_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_token_budget_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_toon_codec_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_transcript_progress_e2e_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_transcript_progress_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_turn_progress_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_verified_delivery_dispatch_wiring_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_verified_delivery_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_verify_adapters_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_version_sync_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_vscode_global_install.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_watcher_binding_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_watcher_challenge_generation_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_watcher_quality_gate_reverify_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_work_item_claims_chaos_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_work_item_claims_run_guarded_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_work_item_claims_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_worker_cli_contract_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_worker_daemon_unit.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_worker_selftests_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_worker_smoke_system.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_workitem_attempts_integration.py +0 -0
- {simplicio_loop-3.36.1 → simplicio_loop-3.38.0}/tests/test_worktree_queue_integration.py +0 -0
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Wesley Simplicio
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Wesley Simplicio
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: simplicio-loop
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.38.0
|
|
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,53 +1,53 @@
|
|
|
1
|
-
# simplicio-loop
|
|
2
|
-
|
|
3
|
-
**The Universal Looping AI Orchestrator** — a runtime-agnostic **super-plugin** (7 skills) that
|
|
4
|
-
drains any queue of work end-to-end on **any LLM / runtime**:
|
|
5
|
-
`discover → implement → verify → merge → close → watch 24/7`, behind safety gates and evidence
|
|
6
|
-
checks, at up to **96% fewer tokens**. Not a chatbot. A worker.
|
|
7
|
-
|
|
8
|
-

|
|
9
|
-
|
|
10
|
-
## Install
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
pip install simplicio-loop
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
Then drop the skills + hooks into your project (or globally):
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
simplicio-loop install # into ./.claude of the current project
|
|
20
|
-
simplicio-loop install --global # into ~/.claude (all projects)
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
Now invoke it from your agent runtime (Claude Code, Cursor, Codex, Gemini, …):
|
|
24
|
-
|
|
25
|
-
```
|
|
26
|
-
/simplicio-loop finish all the open issues
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## What you get — 7 skills
|
|
30
|
-
|
|
31
|
-
| Skill | What it does |
|
|
32
|
-
|---|---|
|
|
33
|
-
| `simplicio-loop` | Unified public entrypoint: orchestrator core + hardened loop behind one command. |
|
|
34
|
-
| `simplicio-tasks` | Legacy alias kept only for compatibility with older installs and saved prompts. |
|
|
35
|
-
| `simplicio-orient` | Terminal-first token economy — output-reduction catalog, tee-cache, signatures-read. |
|
|
36
|
-
| `simplicio-review` | Adversarial review — parallel subagents on distinct rubrics, deduped into one verdict. |
|
|
37
|
-
| `simplicio-compress` | Output + memory compression, byte-preserving identifiers. |
|
|
38
|
-
| `simplicio-autoresearch` | Evolutionary mutate/eval/keep-revert optimizer — yool-guardrailed caps, git-isolated branch, anti-Goodhart gate-first eval. |
|
|
39
|
-
| `simplicio-learn` | Retrospective — durable, deduped lessons written back to memory. |
|
|
40
|
-
|
|
41
|
-
## Highlights
|
|
42
|
-
|
|
43
|
-
- **12 runtimes, one protocol** — Claude Code, Codex, VS Code/Copilot, Cursor, Antigravity, Kiro,
|
|
44
|
-
OpenCode, Gemini, Aider, Simplicio Agent (formerly Hermes), OpenClaw, Orca.
|
|
45
|
-
- **Evidence-gated completion** — never a false "done"; exits only on a verified `<promise>`,
|
|
46
|
-
cap, spindle handoff, or STOP.
|
|
47
|
-
- **Token economy** — honest "answer concisely" baseline; savings credited only on verified-correct
|
|
48
|
-
outcomes.
|
|
49
|
-
|
|
50
|
-
Requires Python 3.8+. The skills, hooks, and installer are pure cross-platform Python.
|
|
51
|
-
|
|
52
|
-
MIT — part of the [Simplicio](https://github.com/wesleysimplicio) ecosystem.
|
|
53
|
-
Full docs: <https://github.com/wesleysimplicio/simplicio-loop>
|
|
1
|
+
# simplicio-loop
|
|
2
|
+
|
|
3
|
+
**The Universal Looping AI Orchestrator** — a runtime-agnostic **super-plugin** (7 skills) that
|
|
4
|
+
drains any queue of work end-to-end on **any LLM / runtime**:
|
|
5
|
+
`discover → implement → verify → merge → close → watch 24/7`, behind safety gates and evidence
|
|
6
|
+
checks, at up to **96% fewer tokens**. Not a chatbot. A worker.
|
|
7
|
+
|
|
8
|
+

|
|
9
|
+
|
|
10
|
+
## Install
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
pip install simplicio-loop
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Then drop the skills + hooks into your project (or globally):
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
simplicio-loop install # into ./.claude of the current project
|
|
20
|
+
simplicio-loop install --global # into ~/.claude (all projects)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Now invoke it from your agent runtime (Claude Code, Cursor, Codex, Gemini, …):
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
/simplicio-loop finish all the open issues
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## What you get — 7 skills
|
|
30
|
+
|
|
31
|
+
| Skill | What it does |
|
|
32
|
+
|---|---|
|
|
33
|
+
| `simplicio-loop` | Unified public entrypoint: orchestrator core + hardened loop behind one command. |
|
|
34
|
+
| `simplicio-tasks` | Legacy alias kept only for compatibility with older installs and saved prompts. |
|
|
35
|
+
| `simplicio-orient` | Terminal-first token economy — output-reduction catalog, tee-cache, signatures-read. |
|
|
36
|
+
| `simplicio-review` | Adversarial review — parallel subagents on distinct rubrics, deduped into one verdict. |
|
|
37
|
+
| `simplicio-compress` | Output + memory compression, byte-preserving identifiers. |
|
|
38
|
+
| `simplicio-autoresearch` | Evolutionary mutate/eval/keep-revert optimizer — yool-guardrailed caps, git-isolated branch, anti-Goodhart gate-first eval. |
|
|
39
|
+
| `simplicio-learn` | Retrospective — durable, deduped lessons written back to memory. |
|
|
40
|
+
|
|
41
|
+
## Highlights
|
|
42
|
+
|
|
43
|
+
- **12 runtimes, one protocol** — Claude Code, Codex, VS Code/Copilot, Cursor, Antigravity, Kiro,
|
|
44
|
+
OpenCode, Gemini, Aider, Simplicio Agent (formerly Hermes), OpenClaw, Orca.
|
|
45
|
+
- **Evidence-gated completion** — never a false "done"; exits only on a verified `<promise>`,
|
|
46
|
+
cap, spindle handoff, or STOP.
|
|
47
|
+
- **Token economy** — honest "answer concisely" baseline; savings credited only on verified-correct
|
|
48
|
+
outcomes.
|
|
49
|
+
|
|
50
|
+
Requires Python 3.8+. The skills, hooks, and installer are pure cross-platform Python.
|
|
51
|
+
|
|
52
|
+
MIT — part of the [Simplicio](https://github.com/wesleysimplicio) ecosystem.
|
|
53
|
+
Full docs: <https://github.com/wesleysimplicio/simplicio-loop>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# 🔁 simplicio-loop — The Universal Looping AI Orchestrator
|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
|
-
<img src="assets/simplicio-loop-hero-2026.
|
|
4
|
+
<img src="assets/simplicio-loop-hero-stage-agents-2026.webp" alt="simplicio-loop portable stage agents, evidence gates, durable memory, and connected work-item reporting" width="920" />
|
|
5
5
|
</p>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<a href="https://github.com/wesleysimplicio/simplicio-loop/stargazers"><img src="https://img.shields.io/github/stars/wesleysimplicio/simplicio-loop?style=social" alt="Stars"></a>
|
|
10
10
|
<a href="#-the-7-skills--5-accelerators"><img src="https://img.shields.io/badge/skills-7-7C3AED" alt="7 skills"></a>
|
|
11
11
|
<a href="#-source-adapters"><img src="https://img.shields.io/badge/source%20adapters-5-00E08A" alt="5 source adapters"></a>
|
|
12
|
-
<a href="#-
|
|
12
|
+
<a href="#-15-runtimes-one-protocol"><img src="https://img.shields.io/badge/runtimes-15%20(3%20garantidos%2B12%20best--effort)-2563EB" alt="15 runtimes (3 guaranteed + 12 best-effort)"></a>
|
|
13
13
|
<a href="#-the-49-extension-points"><img src="https://img.shields.io/badge/extension%20points-49-00E08A" alt="49 extension points"></a>
|
|
14
14
|
<a href="#-token-economy"><img src="https://img.shields.io/badge/savings-unverified-888888" alt="Savings — unverified"></a>
|
|
15
15
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="License"></a>
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
<a href="#-tldr">TL;DR</a> ·
|
|
21
21
|
<a href="#-the-7-skills--5-accelerators">7 Skills</a> ·
|
|
22
22
|
<a href="#-source-adapters">Source Adapters</a> ·
|
|
23
|
-
<a href="#-
|
|
23
|
+
<a href="#-15-runtimes-one-protocol">15 Runtimes</a> ·
|
|
24
24
|
<a href="#-the-loop">The Loop</a> ·
|
|
25
25
|
<a href="#-token-economy">Token Economy</a> ·
|
|
26
26
|
<a href="#-token-economy">Capture Engine</a> ·
|
|
@@ -86,24 +86,141 @@ That architecture lets one goal become a governed delivery system: from a single
|
|
|
86
86
|
</p>
|
|
87
87
|
<!-- visual-story:end -->
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
<!-- stage-agents-roadmap:start -->
|
|
90
|
+
## 🤖 Shipped: a concrete agent behind every stage
|
|
90
91
|
|
|
91
|
-
|
|
92
|
-
- **Real multi-LLM routing** — a deterministic model registry/router with fallback and circuit-breaker, task-contract-driven routing fields, and a genuine, verified `codex exec` run producing an auditable `runtime-execution-receipt` (Claude-side execution is implemented too, gated only by org policy in this environment — never faked).
|
|
93
|
-
- **Evidence-gated delivery, wired for real** — fail-closed receipt verification (content/hash/schema/freshness), heartbeat-guarded dispatch, a merge executor that reconciles *after* merging (not just after opening the PR), chaos-tested crash recovery, and a cross-receipt commit-binding gate that closes a real "two green receipts, two different commits" gap.
|
|
94
|
-
- **Security hardening** — an enumerated environment allow-list, short-lived HMAC credentials with `jti` revocation and per-operation scoping, DNS/TLS-pinned transport proven against live redirect/rebinding/proxy-injection attempts, structured audit logging, and CODEOWNERS coverage of every security-critical module.
|
|
95
|
-
- **Delivery truth** — no more presumed proof: paginated live GraphQL queries, byte-level release-artifact verification (real SHA-256 + `gh attestation verify`), branch-reachability/issue-state/freshness checks, and a real concurrency + crash + fault-injection test matrix (including crashes *during* the external call itself).
|
|
96
|
-
- **Quality gate, for real** — an independent watcher that re-derives every quality-matrix lane (including coverage drift) instead of trusting a self-reported receipt, all 192 test files sorted into a real unit/integration/system/regression convention, and measured coverage raised from 16.6% / 9.4% to 28.45% / 24.02% (global / critical) on the widened scope.
|
|
97
|
-
- **A local, CI-less determinism story** — since GitHub Actions isn't available on this repo, a fail-closed local pre-push gate now stands in as the mandatory, impossible-to-bypass check, and the release pipeline (version bump → build → checksum → SBOM → local provenance → install-smoke) runs end-to-end against the real checkout with `scripts/release_rehearsal.py`.
|
|
98
|
-
- **A transactional installer** — backup-before-mutate, real rollback, N-1→N upgrade tests, explicit consent gating before installing a service/proxy, and a machine-readable mutation manifest.
|
|
99
|
-
- **Repository governance** — LFS-scoped media, a budget gate blocking accidental build-artifact commits, a canonical version/skill/claims manifest, and a dry-run-only history-migration plan (the actual rewrite stays a separate, explicit maintainer action, by design).
|
|
92
|
+
> **Implementation status:** [#422](https://github.com/wesleysimplicio/simplicio-loop/issues/422)–[#436](https://github.com/wesleysimplicio/simplicio-loop/issues/436) — the whole EPIC — is **closed and shipped** as of v3.37.0, including the full mandatory stage-reporting gate ([#433](https://github.com/wesleysimplicio/simplicio-loop/issues/433)) and the multi-tracker interface ([#436](https://github.com/wesleysimplicio/simplicio-loop/issues/436)). v3.38.0 adds the multi-agent coordination layer on top (`scripts/coordinator.py`, `scripts/pr_dod_review.py`) — see [§ What's new](#-whats-new-in-v3380--the-multi-agent-coordination-release).
|
|
100
93
|
|
|
101
|
-
|
|
94
|
+
The portable driver assigns one accountable agent to intake/planning, implementation, safety,
|
|
95
|
+
delivery, feedback/recovery, and final completion audit. Review fans out to four independent agents
|
|
96
|
+
— security/correctness, code quality, runtime reproduction, and blast radius — before it can
|
|
97
|
+
reconverge. Every transition emits an event and receipt; the completion auditor accepts evidence,
|
|
98
|
+
never self-reported confidence.
|
|
99
|
+
|
|
100
|
+
<p align="center">
|
|
101
|
+
<img src="assets/simplicio-loop-stage-agents-reporting-2026.webp" alt="simplicio-loop stage agents with four-way review, evidence ledger, recovery, completion audit, and work-item comments" width="920" />
|
|
102
|
+
</p>
|
|
103
|
+
|
|
104
|
+
### Work-item comment policy
|
|
105
|
+
|
|
106
|
+
| Work tracker | Reporting policy | Completion meaning |
|
|
107
|
+
|---|---|---|
|
|
108
|
+
| **GitHub Issues / PRs** | **Required** for GitHub-bound runs | `COMPLETE` waits for a remotely observed comment receipt |
|
|
109
|
+
| **Azure DevOps** | Only when its connector is detected, authenticated, authorized, and target-resolved | Connected providers report; `NOT_CONNECTED` is an explicit, non-blocking skip |
|
|
110
|
+
| **Jira** | Only when connected | Same canonical timeline, provider-specific confirmation |
|
|
111
|
+
| **Asana** | Only when connected | Same canonical timeline, provider-specific confirmation |
|
|
112
|
+
| **Trello** | Only when connected | Same canonical timeline, provider-specific confirmation |
|
|
113
|
+
|
|
114
|
+
```mermaid
|
|
115
|
+
flowchart LR
|
|
116
|
+
SOURCE["Issue · task · queue"] --> COORD["Portable coordinator"]
|
|
117
|
+
COORD --> PLAN["Intake + Planner agent"]
|
|
118
|
+
PLAN --> BUILD["Implementation agent"]
|
|
119
|
+
BUILD --> SAFE["Safety agent"]
|
|
120
|
+
SAFE --> R1["Review agent · security"]
|
|
121
|
+
SAFE --> R2["Review agent · quality"]
|
|
122
|
+
SAFE --> R3["Review agent · runtime/E2E"]
|
|
123
|
+
SAFE --> R4["Review agent · blast radius"]
|
|
124
|
+
R1 --> DELIVER["Delivery agent"]
|
|
125
|
+
R2 --> DELIVER
|
|
126
|
+
R3 --> DELIVER
|
|
127
|
+
R4 --> DELIVER
|
|
128
|
+
DELIVER --> RECOVER["Feedback + Recovery agent"]
|
|
129
|
+
RECOVER --> BUILD
|
|
130
|
+
DELIVER --> AUDIT["Completion auditor"]
|
|
131
|
+
AUDIT --> VERDICT{"COMPLETE · PARTIAL · BLOCKED · REGRESSED"}
|
|
132
|
+
PLAN -. "events + receipts" .-> LEDGER["Append-only stage ledger"]
|
|
133
|
+
BUILD -.-> LEDGER
|
|
134
|
+
SAFE -.-> LEDGER
|
|
135
|
+
DELIVER -.-> LEDGER
|
|
136
|
+
AUDIT -.-> LEDGER
|
|
137
|
+
LEDGER --> GH["GitHub comments · REQUIRED"]
|
|
138
|
+
LEDGER -. "only if connected" .-> AZ["Azure DevOps comments"]
|
|
139
|
+
LEDGER -. "only if connected" .-> JIRA["Jira comments"]
|
|
140
|
+
LEDGER -. "only if connected" .-> ASANA["Asana comments"]
|
|
141
|
+
LEDGER -. "only if connected" .-> TRELLO["Trello comments"]
|
|
142
|
+
GH --> AUDIT
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
The provider-neutral contract, capability probes, idempotent markers, durable outboxes, recovery
|
|
146
|
+
rules, sandbox E2E matrix, and acceptance criteria are specified in
|
|
147
|
+
[#436](https://github.com/wesleysimplicio/simplicio-loop/issues/436). An optional provider is never
|
|
148
|
+
treated as connected merely because a CLI exists, and no remote acknowledgment is ever invented.
|
|
149
|
+
<!-- stage-agents-roadmap:end -->
|
|
150
|
+
|
|
151
|
+
## 🆕 What's new in v3.38.0 — the multi-agent coordination release
|
|
152
|
+
|
|
153
|
+
This release is about one hard problem that only shows up once **several agent sessions work the
|
|
154
|
+
same repo at once**: how does a session know what's already claimed, what's already merged-but-
|
|
155
|
+
incomplete, and what to do with its own idle time instead of duplicating a sibling's work? Every
|
|
156
|
+
item below was built, tested, and shipped against the **live, multi-session state of this very
|
|
157
|
+
repo** — not a synthetic scenario.
|
|
158
|
+
|
|
159
|
+
- **`scripts/coordinator.py` — the decision core.** Given today's GitHub state (open-issue claim
|
|
160
|
+
comments + merged PRs), it returns one deterministic action per issue: `OWN` (nothing claimed
|
|
161
|
+
yet), `CONTINUE_OWN` (you're already the latest claimant), `DEFER_ACTIVE_CLAIM` (a sibling
|
|
162
|
+
session claimed it recently — don't duplicate), `RECLAIM_STALE` (that claim went cold, safe to
|
|
163
|
+
pick up), or `VERIFY_PARTIAL` (a PR already merged for this issue, but it's still open — check
|
|
164
|
+
what's actually done before assuming either "nothing happened" or "it's finished"). It also
|
|
165
|
+
raises a `duplicate_risk` flag the instant two sessions claim the same issue close together.
|
|
166
|
+
Caught, live, on day one: two sessions independently building a findings collector for the same
|
|
167
|
+
issue under two different filenames.
|
|
168
|
+
- **`scripts/pr_dod_review.py` — the reviewer for idle time.** When every open issue is already
|
|
169
|
+
claimed, a session's highest-leverage move isn't to wait — it's to check the open PRs against
|
|
170
|
+
this repo's own bar: the 7-dimension Definition of Done (implementation, unit/integration/
|
|
171
|
+
system/regression tests, a performance benchmark, ≥85% coverage) and the underlying issue's
|
|
172
|
+
frozen acceptance-criteria checklist. `check --post` posts a mechanical, line-by-line verdict as
|
|
173
|
+
a PR comment instead of a vibe-based approval. Proven against a real, already-merged "MVP slice"
|
|
174
|
+
PR: it correctly flagged **17 of 17** acceptance criteria on the parent epic as still unresolved.
|
|
175
|
+
- **`scripts/finding_collector.py` — durable, deduplicated defect memory (issue #466, phase 1).**
|
|
176
|
+
A `simplicio.finding/v1` record per distinct defect, fingerprinted so the *same* underlying bug —
|
|
177
|
+
seen by any agent, any run, any timestamp — collapses into one record with an occurrence count
|
|
178
|
+
instead of spawning duplicate noise. No GitHub calls yet; that's the next phase.
|
|
179
|
+
`scripts/evolution.py` (taxonomy + priority + dedup) and `scripts/workflow_topology.py` (DAG
|
|
180
|
+
diff + validator) shipped as the first MVP slices of the companion Continuous Evolution (#467)
|
|
181
|
+
and Adaptive Architecture (#468) epics; `scripts/agent_replication.py` did the same for Elastic
|
|
182
|
+
Replication (#469) — admission control and winner-selection for speculative duplicate execution.
|
|
183
|
+
- **`references/multi-agent-coordination.md` + `references/background-verification.md`** — two new
|
|
184
|
+
documented conventions wired straight into `SKILL.md`'s triage step: check coordinator ownership
|
|
185
|
+
before touching an issue, review PRs instead of idling once everything's claimed, and launch
|
|
186
|
+
slow verification commands (tests/`claims_audit.py`) in the background so a turn keeps making
|
|
187
|
+
progress instead of watching a progress bar.
|
|
188
|
+
- **Mandatory post-merge cleanup (`scripts/worktree_cleanup.py`, #484)** — a merged branch's local
|
|
189
|
+
worktree and branch ref are now removed automatically instead of accumulating across sessions.
|
|
190
|
+
- **CLI contract additions (WI-471)** — a `preflight` subcommand and a `--json` flag on `status`,
|
|
191
|
+
so an external supervisor can machine-check readiness before arming a run.
|
|
192
|
+
- **Continuous Findings wiring (WI-466)** — the completion gate now genuinely consults the finding
|
|
193
|
+
store, and a store/repo consistency bug was found and fixed in the same pass.
|
|
194
|
+
- **Two real regressions caught and fixed on `main` itself, live, this release cycle** — a PR that
|
|
195
|
+
silently deleted a function definition (breaking `loop_progress.py`'s own selftest) merged once,
|
|
196
|
+
and a squash-merge race then reintroduced the exact same broken code onto `main` a second time.
|
|
197
|
+
Both were found by actually running the affected script, not by trusting a green PR description —
|
|
198
|
+
the whole reason `coordinator.py` and `pr_dod_review.py` exist now.
|
|
199
|
+
- **Carried forward from v3.37.0's Portable Stage Agents epic (#422–#436)** — a concrete,
|
|
200
|
+
independently verifiable agent behind every stage (intake/planner, implementation, four-way
|
|
201
|
+
review panel, safety gate, delivery, feedback/recovery, completion auditor), a conformance suite
|
|
202
|
+
proving contract/receipt parity across all 15 runtimes, human-readable agent identities, and
|
|
203
|
+
`simplicio-runtime` promoted to a required bound operator exactly like `simplicio-mapper`/
|
|
204
|
+
`simplicio-dev-cli`.
|
|
205
|
+
- **Test suite grew to 231 files** (from 192), all still sorted into the unit/integration/system/
|
|
206
|
+
regression convention `docs/SCRIPTS_INVENTORY.md` tracks; `scripts/claims_audit.py` stayed at
|
|
207
|
+
14/14 through every merge this cycle.
|
|
208
|
+
|
|
209
|
+
**What this means for you, concretely:** if you run `simplicio-loop` across more than one session
|
|
210
|
+
or machine against the same repo, it now actively protects you from the two failure modes that
|
|
211
|
+
actually happen in practice — two agents quietly redoing the same work, and a "done" PR that
|
|
212
|
+
merged but left the real issue only partially solved. Neither used to be visible; both now are,
|
|
213
|
+
mechanically, every triage pass.
|
|
214
|
+
|
|
215
|
+
See [`CHANGELOG.md`](CHANGELOG.md) for the full list and the
|
|
216
|
+
[v3.38.0 release](https://github.com/wesleysimplicio/simplicio-loop/releases/tag/v3.38.0) for
|
|
217
|
+
signed artifacts (wheel, sdist, SBOM, provenance).
|
|
102
218
|
|
|
103
219
|
## ⚡ TL;DR
|
|
104
220
|
|
|
105
221
|
**simplicio-loop** is a runtime-agnostic **super-plugin** — one autonomous looping
|
|
106
|
-
orchestrator (invoked as **`/simplicio-loop`**) plus **
|
|
222
|
+
orchestrator (invoked as **`/simplicio-loop`**) plus **six satellite skills and five
|
|
223
|
+
accelerators** — that turns any
|
|
107
224
|
strong LLM (Claude, Codex, Copilot, Gemini, Cursor, local models) into a self-driving worker. You
|
|
108
225
|
point it at a body of work — *"finish all the open issues"*, *"clear the CI queue"*, *"drain the Jira board"* — and it
|
|
109
226
|
runs the whole lifecycle on its own:
|
|
@@ -126,14 +243,14 @@ and keeps watching **24/7** for new work — all behind safety gates and evidenc
|
|
|
126
243
|
```
|
|
127
244
|
|
|
128
245
|
Three things make it different: it is a **super-plugin of focused skills**, it runs the **same
|
|
129
|
-
protocol on
|
|
246
|
+
protocol on 15 runtimes**, and it does all of this with **aggressive, honest token economy**.
|
|
130
247
|
|
|
131
248
|
The skill installs **standalone** too: you do **not** need `simplicio-runtime` or any mandatory
|
|
132
249
|
runtime-native component just to use `simplicio-loop`. Native binds, operators, capture services,
|
|
133
250
|
and the wider Simplicio runtime stack are optional accelerators on top of the core skill bundle.
|
|
134
251
|
|
|
135
252
|
<p align="center">
|
|
136
|
-
<img src="assets/simplicio-loop-infographic.png" alt="simplicio-loop detailed infographic: standalone install,
|
|
253
|
+
<img src="assets/simplicio-loop-infographic.png" alt="simplicio-loop detailed infographic: standalone install, required native binds, 7 skills, 5 accelerators, 15 runtimes, 5 source adapters, and proof gates" width="920" />
|
|
137
254
|
</p>
|
|
138
255
|
|
|
139
256
|
Within the Simplicio product line, this repo is also the **current reference task flow** for
|
|
@@ -169,8 +286,8 @@ If you are an agent/runtime entering this repo cold, read `llms.txt` first for t
|
|
|
169
286
|
## 📘 Official capability record
|
|
170
287
|
|
|
171
288
|
The complete, official roster of what `simplicio-loop` ships — every capability below is **real,
|
|
172
|
-
runnable, and tested** (`python3 scripts/check.py`: claims-audit
|
|
173
|
-
deep section and its worker.
|
|
289
|
+
runnable, and tested** (`python3 scripts/check.py`: claims-audit 14/14 + 2,544 tests collected
|
|
290
|
+
across 231 files). Each links to its deep section and its worker.
|
|
174
291
|
|
|
175
292
|
| Capability | What it does | Proof / worker | Details |
|
|
176
293
|
|---|---|---|---|
|
|
@@ -182,6 +299,10 @@ deep section and its worker.
|
|
|
182
299
|
| 🔒 **Fail-closed safety gate** (`action_gate`) | A `PreToolUse`/git-pre-push hook that **mechanically blocks** force-push, history rewrite, mass-delete, destructive DDL, infra teardown, and secret-laden commits/pushes — Step 5 made executable, not prose | `hooks/action_gate.py` · `selftest` 15/15 | [§ Safety](#-safety-non-negotiable) |
|
|
183
300
|
| 🔬 **Local verification** | A test suite (worker selftests + an **e2e of the loop driver** proving evidence-gated exit) + a **claims-audit** (referenced scripts exist · counts consistent · `_bundle ≡ source`) — all local, **no paid CI** | `scripts/check.py` · `scripts/claims_audit.py` · `tests/` | [§ Tests & local checks](#-tests--local-checks-no-paid-ci) |
|
|
184
301
|
| ✅ **Honest savings** | The savings line is now **evidence-gated, not mandatory** — a number is shown only with a measured receipt (clamp/signatures/cache/`deterministic_edit`/ledger); never fabricated | token-economy contract | [§ Token economy](#-token-economy) |
|
|
302
|
+
| 🤝 **Multi-agent coordinator** (`coordinator.py`) | Decides `OWN` / `CONTINUE_OWN` / `DEFER_ACTIVE_CLAIM` / `RECLAIM_STALE` / `VERIFY_PARTIAL` per issue from live claim comments + merged PRs, so two sessions never duplicate the same work | `scripts/coordinator.py` · `selftest` 10/10 | [§ The full flow](#️-the-full-flow--from-demand-to-delivery) |
|
|
303
|
+
| 🕵️ **PR DoD/AC reviewer** (`pr_dod_review`) | When every issue is claimed, reviews open PRs against the 7-dimension Definition of Done + the issue's own acceptance-criteria checklist — a mechanical verdict, not a vibe-based approval | `scripts/pr_dod_review.py` · `selftest` 13/13 | [§ The full flow](#️-the-full-flow--from-demand-to-delivery) |
|
|
304
|
+
| 🐞 **Finding collector** (`finding_collector`) | Fingerprinted, deduplicated defect memory — the same underlying bug collapses into one record with an occurrence count, no matter how many agents/runs observe it | `scripts/finding_collector.py` · `selftest` 9/9 | [§ Official capability record](#-official-capability-record) |
|
|
305
|
+
| 🔔 **Release check** (`release_check`) | Compares the local canonical version against the latest GitHub release and tells the driving LLM to update instead of quietly working on a stale checkout — fail-open when offline | `scripts/release_check.py` · `selftest` 8/8 | [§ Install & use](#-install--use) |
|
|
185
306
|
|
|
186
307
|
Two loop **modes** make termination explicit: **converge** (a single hard task — ends on the
|
|
187
308
|
evidence-gated `<promise>` or a stall escalation) vs **drain** (a queue — ends when the source
|
|
@@ -230,9 +351,12 @@ The orchestrator discovers work from any source via pluggable adapters. Each exp
|
|
|
230
351
|
|
|
231
352
|
| Source | Adapter | Purpose |
|
|
232
353
|
|---|---|---|
|
|
233
|
-
| GitHub Issues/PRs | `gh` CLI (native) | Primary work-item source |
|
|
234
|
-
|
|
|
235
|
-
|
|
|
354
|
+
| GitHub Issues/PRs | `gh` CLI (native) | Primary work-item source; canonical lifecycle comments ship today |
|
|
355
|
+
| Azure DevOps | `az boards` / host connector | Azure Boards discovery; stage comments only after a real connected-capability probe |
|
|
356
|
+
| Jira | host connector | Jira discovery; stage comments only when connected |
|
|
357
|
+
| Asana | host connector | Asana discovery; stage comments only when connected |
|
|
358
|
+
| Trello | host connector | Trello discovery; stage comments only when connected |
|
|
359
|
+
| ClickUp / Linear / Notion | host connector | Board/project discovery; no stage-comment claim without a certified adapter |
|
|
236
360
|
| **agentsview sessions** | `scripts/agentsview_adapter.py` | Stalled session recovery + cost observability |
|
|
237
361
|
| Local files / CI queue | filesystem / CI API | Internal work tracking |
|
|
238
362
|
|
|
@@ -240,33 +364,38 @@ See each adapter's reference doc under `.claude/skills/simplicio-loop/references
|
|
|
240
364
|
|
|
241
365
|
---
|
|
242
366
|
|
|
243
|
-
## 🌐
|
|
367
|
+
## 🌐 15 runtimes, one protocol — 3 guaranteed + 12 best-effort
|
|
244
368
|
|
|
245
369
|
One universal skill core + one set of hooks drives every runtime. An adapter is thin: it tells a
|
|
246
370
|
runtime *where to load the skills*, *how to arm the loop*, and *how to bind native speed*. **The
|
|
247
|
-
skill names no runtime; the runtime detects the skill.**
|
|
371
|
+
skill names no runtime; the runtime detects the skill.** The native `simplicio-runtime` MCP bind
|
|
372
|
+
is **REQUIRED** on every runtime (loop BLOCKS if it's missing/unreachable) — see
|
|
373
|
+
[`docs/MCP_SETUP.md`](docs/MCP_SETUP.md) for the per-host config table.
|
|
248
374
|
|
|
249
375
|
### Tier 1 — Guaranteed (gated on every commit)
|
|
250
376
|
|
|
251
|
-
| Runtime | Skill load | Loop drive | Native bind |
|
|
377
|
+
| Runtime | Skill load | Loop drive | Native bind (MCP) |
|
|
252
378
|
|---|---|---|---|
|
|
253
|
-
| **Claude Code** | `.claude/skills/` + plugin | `Stop` hook |
|
|
254
|
-
| **Codex** | `AGENTS.md` | self-paced |
|
|
255
|
-
| **Cursor** | `.cursor-plugin/` | `stop`+`afterAgentResponse` |
|
|
379
|
+
| **Claude Code** | `.claude/skills/` + plugin | `Stop` hook | REQUIRED — `~/.claude.json` |
|
|
380
|
+
| **Codex** | `AGENTS.md` | self-paced | REQUIRED — `~/.codex/config.toml` |
|
|
381
|
+
| **Cursor** | `.cursor-plugin/` | `stop`+`afterAgentResponse` | REQUIRED — `.cursor/mcp.json` |
|
|
256
382
|
|
|
257
383
|
### Tier 2 — Best-effort (contributions welcome, no gate)
|
|
258
384
|
|
|
259
|
-
| Runtime | Skill load | Loop drive | Native bind |
|
|
385
|
+
| Runtime | Skill load | Loop drive | Native bind (MCP) |
|
|
260
386
|
|---|---|---|---|
|
|
261
|
-
| **VS Code (Copilot)** | `copilot-instructions.md` | tasks |
|
|
262
|
-
| **Antigravity** | rules / `AGENTS.md` | self-paced |
|
|
263
|
-
| **Kiro** | `.kiro/steering/` | specs |
|
|
264
|
-
| **OpenCode** | `AGENTS.md` | self-paced |
|
|
265
|
-
| **Gemini** | `GEMINI.md` | self-paced |
|
|
266
|
-
| **
|
|
267
|
-
| **
|
|
268
|
-
| **
|
|
269
|
-
| **
|
|
387
|
+
| **VS Code (Copilot)** | `copilot-instructions.md` | tasks | REQUIRED — `.vscode/mcp.json` |
|
|
388
|
+
| **Antigravity** | rules / `AGENTS.md` | self-paced | REQUIRED — best-effort path |
|
|
389
|
+
| **Kiro** | `.kiro/steering/` | specs | REQUIRED — `.kiro/settings/mcp.json` |
|
|
390
|
+
| **OpenCode** | `AGENTS.md` | self-paced | REQUIRED — `opencode.json` |
|
|
391
|
+
| **Gemini** (CLI/Code Assist) | `GEMINI.md` | self-paced | REQUIRED — `.gemini/settings.json` (CLI) |
|
|
392
|
+
| **Kimi** | inlined conventions | self-paced | REQUIRED — best-effort, no verified client |
|
|
393
|
+
| **Qwen** (Code/CLI) | `AGENTS.md`-equivalent | self-paced | REQUIRED — `.qwen/settings.json` (best-effort) |
|
|
394
|
+
| **DeepSeek** | inlined conventions | self-paced | REQUIRED — no first-party client, best-effort |
|
|
395
|
+
| **Aider** | `CONVENTIONS.md` | self-paced | REQUIRED — no MCP client (LLM fallback for exec) |
|
|
396
|
+
| **Simplicio Agent** *(formerly Hermes)* | native recall | native loop | REQUIRED — **native** |
|
|
397
|
+
| **OpenClaw** | plugin SDK | native scheduler | REQUIRED — **native** |
|
|
398
|
+
| **Orca** | via inner agent + skills registry | inner hook / scheduled automations | REQUIRED — registry/inner-agent config |
|
|
270
399
|
|
|
271
400
|
The promise: **same protocol, same gates, same safety on all 12 — Tier 1 verified mechanically,
|
|
272
401
|
Tier 2 best-effort.** `orient_clamp.py` (token economy) works on every runtime with zero wiring. See
|
|
@@ -283,27 +412,39 @@ to delivering merged, evidenced work, then looping 24/7 for more.
|
|
|
283
412
|
flowchart LR
|
|
284
413
|
IN["Intent: issue · task · queue"] --> CONTRACT["1 · Freeze task contract"]
|
|
285
414
|
CONTRACT --> MAP["2 · Map source + normalize"]
|
|
286
|
-
MAP -->
|
|
287
|
-
|
|
415
|
+
MAP --> COORD{"3 · Coordinator decide (multi-session)"}
|
|
416
|
+
COORD -->|"OWN / CONTINUE_OWN / RECLAIM_STALE"| PLAN["4 · Dependency DAG + acceptance criteria"]
|
|
417
|
+
COORD -->|"DEFER_ACTIVE_CLAIM (all issues)"| REVIEW["PR DoD/AC review — never idle"]
|
|
418
|
+
COORD -->|"VERIFY_PARTIAL"| RECHECK["Verify what's actually merged before continuing"]
|
|
419
|
+
RECHECK --> PLAN
|
|
420
|
+
REVIEW --> IN
|
|
421
|
+
PLAN --> ROUTE{"5 · Ready task?"}
|
|
288
422
|
ROUTE -->|"solo / small"| SOLO["Targeted lane"]
|
|
289
423
|
ROUTE -->|"parallel / medium+"| FAN["Bounded fan-out"]
|
|
290
424
|
FAN --> A["Isolated worktree A"]
|
|
291
425
|
FAN --> B["Isolated worktree B"]
|
|
292
426
|
FAN --> C["Isolated worktree C"]
|
|
293
|
-
SOLO --> VERIFY["
|
|
427
|
+
SOLO --> VERIFY["6 · Test + impact/flow evidence"]
|
|
294
428
|
A --> VERIFY
|
|
295
429
|
B --> VERIFY
|
|
296
430
|
C --> VERIFY
|
|
297
431
|
VERIFY --> RECEIPT["Watcher challenge + evidence receipt"]
|
|
298
|
-
RECEIPT --> ORACLE{"
|
|
432
|
+
RECEIPT --> ORACLE{"7 · Completion oracle"}
|
|
299
433
|
ORACLE -->|"pending / blocked"| RECOVER["Journal · checkpoint · rollback · backlog-only maintenance"]
|
|
300
434
|
RECOVER --> PLAN
|
|
301
|
-
ORACLE -->|"verified / measured"| DELIVER["
|
|
302
|
-
DELIVER -->
|
|
303
|
-
|
|
435
|
+
ORACLE -->|"verified / measured"| DELIVER["8 · Source sync · PR · merge"]
|
|
436
|
+
DELIVER --> CLEANUP["Post-merge worktree/branch cleanup"]
|
|
437
|
+
CLEANUP --> MEMORY["9 · Ledger · wiki · durable attempt memory"]
|
|
438
|
+
MEMORY --> WATCH["10 · Re-feed · watcher · STOP path"]
|
|
304
439
|
WATCH -->|"new work"| IN
|
|
305
440
|
```
|
|
306
441
|
|
|
442
|
+
**Multi-agent coordination (new in v3.38.0).** Step 3 is the mechanical answer to "is a sibling
|
|
443
|
+
session already on this?" — `scripts/coordinator.py` decides from live GitHub state, never a guess.
|
|
444
|
+
When every candidate issue comes back deferred, the loop doesn't idle: it reviews open PRs against
|
|
445
|
+
the DoD + acceptance criteria (`scripts/pr_dod_review.py`) instead. Full detail:
|
|
446
|
+
[`references/multi-agent-coordination.md`](.claude/skills/simplicio-loop/references/multi-agent-coordination.md).
|
|
447
|
+
|
|
307
448
|
**Planning gate (issue #284).** Steps 1–3 above are not just guidance — `simplicio_loop/planning_gate.py`
|
|
308
449
|
makes them a fail-closed mechanical barrier between "claimed" and "mutating": every real
|
|
309
450
|
`arm_run()` self-builds a `planning-receipt.json` binding run/attempt/contract/plan/lease/fence
|
|
@@ -572,9 +713,18 @@ Pass **`--minimal`** only for headless/CI to skip the heavy deps + the machine s
|
|
|
572
713
|
### Update
|
|
573
714
|
|
|
574
715
|
```bash
|
|
575
|
-
|
|
716
|
+
python3 scripts/release_check.py check # is a newer release published? — never auto-updates
|
|
717
|
+
bash scripts/update.sh [<runtime>] # git pull → reinstall skills/hooks/operators → restart services
|
|
576
718
|
```
|
|
577
719
|
|
|
720
|
+
`release_check.py` compares the local canonical version (`pyproject.toml`) against the latest
|
|
721
|
+
GitHub release tag and prints an explicit `MEASURED|release-check: a newer release is available …`
|
|
722
|
+
line (exit 10) when you're behind — the agent/LLM driving `simplicio-loop` is meant to read that
|
|
723
|
+
line and run the update itself, not silently keep working on a stale checkout. It never applies the
|
|
724
|
+
update — a detected-but-declined update is never auto-installed — and it fails open (`UNVERIFIED|`,
|
|
725
|
+
exit 0) when `gh`/network is unavailable, so an offline dev environment never looks broken. `doctor`
|
|
726
|
+
(below) runs the same check as one OPTIONAL line in its report.
|
|
727
|
+
|
|
578
728
|
`update.sh` stashes local edits, fast-forwards `main`, reinstalls from the fresh source, restarts the
|
|
579
729
|
launchd/systemd services so they run the new code, and prints the live stack + savings.
|
|
580
730
|
|
|
@@ -675,12 +825,18 @@ opt-in capabilities you reach for when the task calls for them.
|
|
|
675
825
|
|
|
676
826
|
---
|
|
677
827
|
|
|
828
|
+
## ⭐ Star History
|
|
829
|
+
|
|
830
|
+
[](https://star-history.com/#wesleysimplicio/simplicio-loop&Date)
|
|
831
|
+
|
|
832
|
+
---
|
|
833
|
+
|
|
678
834
|
## 📄 License
|
|
679
835
|
|
|
680
836
|
MIT
|
|
681
837
|
|
|
682
838
|
<!-- simplicio-loop:github-comment-coordination:v1 -->
|
|
683
|
-
## 🌐
|
|
839
|
+
## 🌐 Work-item comment coordination across runtimes
|
|
684
840
|
|
|
685
841
|
`simplicio-loop` can run at the same time in Claude Code, Codex, Cursor, Gemini, and Hermes. When a run is bound to a GitHub issue, it publishes idempotent lifecycle updates to that issue's canonical comment: claim, plan, progress, evidence, PR, and close. Agents on different machines can coordinate through the same GitHub thread without a shared local filesystem.
|
|
686
842
|
|
|
@@ -692,7 +848,7 @@ pwsh scripts/install.ps1 gemini -Global
|
|
|
692
848
|
pwsh scripts/install.ps1 hermes -Global # legacy alias for simplicio_agent
|
|
693
849
|
```
|
|
694
850
|
|
|
695
|
-
Local queues, leases, worktrees, heartbeats, and evidence remain active on every machine; GitHub comments are the shared coordination projection.
|
|
851
|
+
Local queues, leases, worktrees, heartbeats, and evidence remain active on every machine; GitHub comments are the shipped shared coordination projection. Today, an unavailable or unauthenticated GitHub records a sync failure without inventing a remote acknowledgment. The stage-agent roadmap tightens this for GitHub-bound runs: [#433](https://github.com/wesleysimplicio/simplicio-loop/issues/433) makes the comment confirmation mandatory before `COMPLETE`. [#436](https://github.com/wesleysimplicio/simplicio-loop/issues/436) adds the same projection to Azure DevOps, Jira, Asana, and Trello only when each connector is proven connected; disconnected optional trackers are explicitly skipped.
|
|
696
852
|
|
|
697
853
|
The repository workflow `.github/workflows/simplicio-status-sync.yml` turns the canonical lifecycle
|
|
698
854
|
state into a managed `simplicio:status:<state>` label and, when configured, moves the issue in a
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "simplicio.action-intent/v1",
|
|
4
|
+
"title": "Stage Agent Action Intent",
|
|
5
|
+
"description": "Typed intent emitted before any mutation-boundary action. Classifies the action surface so the safety gate can apply the right policy. Fail-closed: unknown action classes are rejected by the reducer.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": ["schema", "intent_id", "action_class", "command", "actor", "scope"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"schema": { "const": "simplicio.action-intent/v1" },
|
|
11
|
+
"intent_id": { "type": "string", "minLength": 1 },
|
|
12
|
+
"action_class": {
|
|
13
|
+
"type": "string",
|
|
14
|
+
"enum": [
|
|
15
|
+
"write_edit",
|
|
16
|
+
"compound_shell",
|
|
17
|
+
"dependency_install",
|
|
18
|
+
"commit",
|
|
19
|
+
"push",
|
|
20
|
+
"pull_request",
|
|
21
|
+
"issue_board_op",
|
|
22
|
+
"migration_data",
|
|
23
|
+
"deploy_release",
|
|
24
|
+
"cancel_cleanup",
|
|
25
|
+
"secret_network_access",
|
|
26
|
+
"artifact_fetch_execute"
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
"command": { "type": "string", "minLength": 1 },
|
|
30
|
+
"actor": { "type": "string", "minLength": 1 },
|
|
31
|
+
"scope": { "type": "string", "minLength": 1 },
|
|
32
|
+
"idempotency_key": { "type": "string" },
|
|
33
|
+
"policy_hash": { "type": "string" },
|
|
34
|
+
"segments": { "type": "array", "items": { "type": "string" } },
|
|
35
|
+
"created_at": { "type": "string", "format": "date-time" }
|
|
36
|
+
}
|
|
37
|
+
}
|