simplicio-loop 3.38.0__tar.gz → 3.38.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.
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/LICENSE +21 -21
- {simplicio_loop-3.38.0/simplicio_loop.egg-info → simplicio_loop-3.38.1}/PKG-INFO +87 -83
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/PYPI.md +53 -53
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/README.md +1 -1
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/pyproject.toml +16 -5
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/setup.cfg +4 -4
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/__init__.py +2 -2
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/hooks/action_gate.py +126 -27
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/hooks/hooks.claude.json +20 -20
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/hooks/hooks.json +11 -11
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/hooks/loop_capture.py +31 -31
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/hooks/loop_stop.py +165 -4
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/hooks/orient_clamp.py +167 -167
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/hooks/orient_rewrite.py +119 -119
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/hooks/pre-commit.py +141 -141
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/hooks/simplicio_dashboard.py +970 -970
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/hooks/simplicio_watch.py +115 -115
- simplicio_loop-3.38.1/simplicio_loop/_bundle/scripts/_locked_append.py +205 -0
- simplicio_loop-3.38.1/simplicio_loop/_bundle/scripts/agent_identity.py +119 -0
- simplicio_loop-3.38.1/simplicio_loop/_bundle/scripts/coordinator.py +388 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/scripts/cross_agent_wiki.py +615 -615
- simplicio_loop-3.38.1/simplicio_loop/_bundle/scripts/delivery_contract.py +552 -0
- simplicio_loop-3.38.1/simplicio_loop/_bundle/scripts/diff_escalation.py +307 -0
- simplicio_loop-3.38.1/simplicio_loop/_bundle/scripts/flow_audit.py +629 -0
- simplicio_loop-3.38.1/simplicio_loop/_bundle/scripts/handoff.py +461 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/scripts/hierarchical_planner.py +394 -394
- simplicio_loop-3.38.1/simplicio_loop/_bundle/scripts/impact_audit.py +472 -0
- simplicio_loop-3.38.1/simplicio_loop/_bundle/scripts/loop_journal.py +1026 -0
- simplicio_loop-3.38.1/simplicio_loop/_bundle/scripts/loop_progress.py +770 -0
- simplicio_loop-3.38.1/simplicio_loop/_bundle/scripts/operator_check.py +389 -0
- simplicio_loop-3.38.1/simplicio_loop/_bundle/scripts/operator_preflight.py +147 -0
- simplicio_loop-3.38.1/simplicio_loop/_bundle/scripts/pr_dod_review.py +230 -0
- simplicio_loop-3.38.1/simplicio_loop/_bundle/scripts/route_mode.py +77 -0
- simplicio_loop-3.38.1/simplicio_loop/_bundle/scripts/task_anchor.py +872 -0
- simplicio_loop-3.38.1/simplicio_loop/_bundle/scripts/task_backlog.py +1458 -0
- simplicio_loop-3.38.1/simplicio_loop/_bundle/scripts/test_infra_probe.py +378 -0
- simplicio_loop-3.38.1/simplicio_loop/_bundle/scripts/toon_codec.py +521 -0
- simplicio_loop-3.38.1/simplicio_loop/_bundle/scripts/video_evidence.py +465 -0
- simplicio_loop-3.38.1/simplicio_loop/_bundle/scripts/watcher_verify.py +607 -0
- simplicio_loop-3.38.1/simplicio_loop/_bundle/scripts/web_verify.py +280 -0
- simplicio_loop-3.38.1/simplicio_loop/_bundle/scripts/worktree_cleanup.py +443 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-autoresearch/SKILL.md +165 -165
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-compress/SKILL.md +86 -86
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-learn/SKILL.md +80 -80
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-loop/SKILL.md +186 -23
- {simplicio_loop-3.38.0/simplicio_loop/_bundle/skills/simplicio-tasks → simplicio_loop-3.38.1/simplicio_loop/_bundle/skills/simplicio-loop}/references/agentsview-adapter.md +198 -198
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/azure-devops-adapter.md +69 -69
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/background-verification.md +5 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/bound-operators.md +108 -108
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/claims-gate.md +62 -62
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/control-policy.md +79 -79
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/cross-agent-wiki.md +40 -40
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/cross-repo-integration.md +42 -42
- simplicio_loop-3.38.1/simplicio_loop/_bundle/skills/simplicio-loop/references/delivery-contract.md +133 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/extension-points.md +102 -101
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/hierarchical-planner.md +39 -39
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/lmcache-adapter.md +632 -632
- simplicio_loop-3.38.1/simplicio_loop/_bundle/skills/simplicio-loop/references/multi-agent-coordination.md +21 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/progress-feedback.md +153 -153
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/run-journal-stall-detector.md +47 -47
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/spindle-handoff.md +94 -94
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/standing-loop-247.md +105 -105
- simplicio_loop-3.38.1/simplicio_loop/_bundle/skills/simplicio-loop/references/test-infra-probe.md +139 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/token-capture.md +124 -124
- {simplicio_loop-3.38.0/simplicio_loop/_bundle/skills/simplicio-tasks → simplicio_loop-3.38.1/simplicio_loop/_bundle/skills/simplicio-loop}/references/token-economy.md +231 -231
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/triage-verify-detail.md +70 -70
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/understand-anything-adapter.md +591 -591
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/video-evidence.md +108 -108
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/web-evidence.md +93 -93
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-orient/SKILL.md +189 -189
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-review/SKILL.md +104 -104
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-tasks/SKILL.md +32 -32
- {simplicio_loop-3.38.0/simplicio_loop/_bundle/skills/simplicio-loop → simplicio_loop-3.38.1/simplicio_loop/_bundle/skills/simplicio-tasks}/references/agentsview-adapter.md +198 -198
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-tasks/references/azure-devops-adapter.md +69 -69
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-tasks/references/extension-points.md +102 -101
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-tasks/references/lmcache-adapter.md +632 -632
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-tasks/references/standing-loop-247.md +105 -105
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-tasks/references/token-capture.md +124 -124
- {simplicio_loop-3.38.0/simplicio_loop/_bundle/skills/simplicio-loop → simplicio_loop-3.38.1/simplicio_loop/_bundle/skills/simplicio-tasks}/references/token-economy.md +231 -231
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-tasks/references/understand-anything-adapter.md +591 -591
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-tasks/references/video-evidence.md +108 -108
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-tasks/references/web-evidence.md +93 -93
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/tests/_selfrun.py +46 -46
- simplicio_loop-3.38.1/simplicio_loop/async_bounded_queue.py +208 -0
- simplicio_loop-3.38.1/simplicio_loop/async_io_supervisor.py +175 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/attempt_journal.py +251 -251
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/budget.py +236 -236
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/cli.py +119 -219
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/control_policy.py +242 -242
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/delivery.py +18 -1
- simplicio_loop-3.38.1/simplicio_loop/delivery_contract.py +59 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/drain.py +349 -349
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/driver_contract.py +101 -101
- simplicio_loop-3.38.1/simplicio_loop/event_loop.py +80 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/evidence.py +399 -399
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/execution_board.py +300 -300
- simplicio_loop-3.38.1/simplicio_loop/execution_route.py +273 -0
- simplicio_loop-3.38.1/simplicio_loop/extension_manifest.py +457 -0
- simplicio_loop-3.38.1/simplicio_loop/extension_registry.py +140 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/flow_semantics.py +131 -131
- simplicio_loop-3.38.1/simplicio_loop/github_drain_admission.py +521 -0
- simplicio_loop-3.38.1/simplicio_loop/github_drain_intake.py +820 -0
- simplicio_loop-3.38.1/simplicio_loop/github_drain_intake_cli.py +109 -0
- simplicio_loop-3.38.1/simplicio_loop/hub_daemon.py +934 -0
- simplicio_loop-3.38.1/simplicio_loop/hub_drain_admission_cli.py +79 -0
- simplicio_loop-3.38.1/simplicio_loop/hub_governor.py +568 -0
- simplicio_loop-3.38.1/simplicio_loop/hub_queue_retry.py +860 -0
- simplicio_loop-3.38.1/simplicio_loop/hub_scheduler.py +250 -0
- simplicio_loop-3.38.1/simplicio_loop/hub_service.py +242 -0
- simplicio_loop-3.38.1/simplicio_loop/inspection_cli.py +262 -0
- simplicio_loop-3.38.1/simplicio_loop/loop_runtime.py +118 -0
- simplicio_loop-3.38.1/simplicio_loop/map_service.py +353 -0
- simplicio_loop-3.38.1/simplicio_loop/map_service_cli.py +174 -0
- simplicio_loop-3.38.1/simplicio_loop/map_service_delivery.py +160 -0
- simplicio_loop-3.38.1/simplicio_loop/map_service_git.py +235 -0
- simplicio_loop-3.38.1/simplicio_loop/map_service_invalidation.py +94 -0
- simplicio_loop-3.38.1/simplicio_loop/map_service_leases.py +67 -0
- simplicio_loop-3.38.1/simplicio_loop/map_service_mapper.py +88 -0
- simplicio_loop-3.38.1/simplicio_loop/map_service_persistence.py +91 -0
- simplicio_loop-3.38.1/simplicio_loop/map_service_protocol.py +98 -0
- simplicio_loop-3.38.1/simplicio_loop/map_service_repository_watchers.py +131 -0
- simplicio_loop-3.38.1/simplicio_loop/map_service_single_flight.py +165 -0
- simplicio_loop-3.38.1/simplicio_loop/map_service_status.py +120 -0
- simplicio_loop-3.38.1/simplicio_loop/map_service_watchers.py +179 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/model_registry.py +326 -326
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/ops_ledger.py +283 -283
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/orca_lifecycle.py +47 -3
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/phase_events.py +139 -139
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/plan_contract.py +15 -2
- simplicio_loop-3.38.1/simplicio_loop/process_enforcement.py +513 -0
- simplicio_loop-3.38.1/simplicio_loop/process_enforcement_cli.py +229 -0
- simplicio_loop-3.38.1/simplicio_loop/process_supervisor.py +297 -0
- simplicio_loop-3.38.1/simplicio_loop/process_supervisor_rust.py +132 -0
- simplicio_loop-3.38.1/simplicio_loop/prototype_cli.py +211 -0
- simplicio_loop-3.38.1/simplicio_loop/prototype_fanout.py +447 -0
- simplicio_loop-3.38.1/simplicio_loop/prototype_gate.py +608 -0
- simplicio_loop-3.38.1/simplicio_loop/prototype_judge.py +421 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/recovery.py +393 -393
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/remote_queue.py +64 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/remote_worker_cli.py +156 -1
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/runner.py +26 -2
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/runtime_adapter.py +235 -235
- simplicio_loop-3.38.1/simplicio_loop/source_detect.py +155 -0
- simplicio_loop-3.38.1/simplicio_loop/token_control_plane.py +265 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/verified_delivery.py +158 -158
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1/simplicio_loop.egg-info}/PKG-INFO +87 -83
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop.egg-info/SOURCES.txt +166 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop.egg-info/entry_points.txt +2 -0
- simplicio_loop-3.38.1/simplicio_loop.egg-info/requires.txt +16 -0
- simplicio_loop-3.38.1/tests/test_action_gate_issue526.py +127 -0
- simplicio_loop-3.38.1/tests/test_async_bounded_queue.py +305 -0
- simplicio_loop-3.38.1/tests/test_async_bounded_queue_integration.py +280 -0
- simplicio_loop-3.38.1/tests/test_async_bounded_queue_restart.py +309 -0
- simplicio_loop-3.38.1/tests/test_async_bounded_queue_system.py +39 -0
- simplicio_loop-3.38.1/tests/test_async_core_composed_integration.py +251 -0
- simplicio_loop-3.38.1/tests/test_async_io_supervisor.py +255 -0
- simplicio_loop-3.38.1/tests/test_async_io_supervisor_system.py +62 -0
- simplicio_loop-3.38.1/tests/test_benchmark_async_process_supervisor.py +19 -0
- simplicio_loop-3.38.1/tests/test_benchmark_async_queue.py +38 -0
- simplicio_loop-3.38.1/tests/test_benchmark_event_loop.py +51 -0
- simplicio_loop-3.38.1/tests/test_benchmark_hub_governor.py +34 -0
- simplicio_loop-3.38.1/tests/test_benchmark_hub_queue_retry.py +21 -0
- simplicio_loop-3.38.1/tests/test_benchmark_hub_scheduler.py +36 -0
- simplicio_loop-3.38.1/tests/test_benchmark_map_git_worktrees.py +33 -0
- simplicio_loop-3.38.1/tests/test_benchmark_map_service.py +8 -0
- simplicio_loop-3.38.1/tests/test_benchmark_map_single_flight.py +28 -0
- simplicio_loop-3.38.1/tests/test_benchmark_map_watchers.py +26 -0
- simplicio_loop-3.38.1/tests/test_benchmark_process_supervisor.py +35 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_bound_operators_runtime_required_unit.py +18 -13
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_budget_error_paths_unit.py +116 -116
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_check_loop_contract_regression.py +52 -52
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_claims_manifest_unit.py +63 -63
- simplicio_loop-3.38.1/tests/test_cli_delivery.py +90 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_cli_dispatch_unit.py +31 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_cli_install_unit.py +145 -145
- simplicio_loop-3.38.1/tests/test_cli_preflight_runtime_optional_unit.py +33 -0
- simplicio_loop-3.38.1/tests/test_cli_run_delivery_choices_559_unit.py +49 -0
- simplicio_loop-3.38.1/tests/test_component_release_unit.py +207 -0
- simplicio_loop-3.38.1/tests/test_cross_repo_conformance_prototype.py +266 -0
- simplicio_loop-3.38.1/tests/test_deep_correctness_gate_unit.py +330 -0
- simplicio_loop-3.38.1/tests/test_delivery_contract.py +33 -0
- simplicio_loop-3.38.1/tests/test_delivery_contract_526_unit.py +335 -0
- simplicio_loop-3.38.1/tests/test_delivery_contract_cli_526_integration.py +251 -0
- simplicio_loop-3.38.1/tests/test_delivery_contract_stop_hook_526_integration.py +186 -0
- simplicio_loop-3.38.1/tests/test_diff_escalation.py +209 -0
- simplicio_loop-3.38.1/tests/test_event_loop.py +104 -0
- simplicio_loop-3.38.1/tests/test_execution_route_unit.py +113 -0
- simplicio_loop-3.38.1/tests/test_extension_manifest_unit.py +182 -0
- simplicio_loop-3.38.1/tests/test_extension_registry.py +143 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_fan_out_unit.py +141 -141
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_finding_collector_unit.py +57 -0
- simplicio_loop-3.38.1/tests/test_finding_router.py +198 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_findings_cli.py +42 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_flow_semantics_edge_paths_unit.py +117 -117
- simplicio_loop-3.38.1/tests/test_github_drain_admission_projection.py +150 -0
- simplicio_loop-3.38.1/tests/test_github_drain_intake_cli.py +73 -0
- simplicio_loop-3.38.1/tests/test_github_drain_intake_integration.py +540 -0
- simplicio_loop-3.38.1/tests/test_github_drain_intake_map_system.py +41 -0
- simplicio_loop-3.38.1/tests/test_github_drain_intake_unit.py +125 -0
- simplicio_loop-3.38.1/tests/test_hub_daemon.py +361 -0
- simplicio_loop-3.38.1/tests/test_hub_daemon_map_ipc.py +190 -0
- simplicio_loop-3.38.1/tests/test_hub_daemon_scheduler_integration.py +189 -0
- simplicio_loop-3.38.1/tests/test_hub_daemon_service_ipc.py +216 -0
- simplicio_loop-3.38.1/tests/test_hub_drain_admission_ipc.py +477 -0
- simplicio_loop-3.38.1/tests/test_hub_epic496_e2e_system.py +173 -0
- simplicio_loop-3.38.1/tests/test_hub_governor.py +310 -0
- simplicio_loop-3.38.1/tests/test_hub_held_admission_queue.py +435 -0
- simplicio_loop-3.38.1/tests/test_hub_queue_retry.py +684 -0
- simplicio_loop-3.38.1/tests/test_hub_queue_retry_fair_scheduler.py +65 -0
- simplicio_loop-3.38.1/tests/test_hub_scheduler.py +67 -0
- simplicio_loop-3.38.1/tests/test_hub_scheduler_concurrency_system.py +75 -0
- simplicio_loop-3.38.1/tests/test_hub_scheduler_fairness.py +175 -0
- simplicio_loop-3.38.1/tests/test_hub_service.py +188 -0
- simplicio_loop-3.38.1/tests/test_hub_supervisor_epic_e2e.py +217 -0
- simplicio_loop-3.38.1/tests/test_hub_transport.py +571 -0
- simplicio_loop-3.38.0/tests/test_intake_progress.py → simplicio_loop-3.38.1/tests/test_intake_progress_integration.py +165 -165
- simplicio_loop-3.38.1/tests/test_issue_cron_driver_unit.py +190 -0
- simplicio_loop-3.38.1/tests/test_loop_runtime.py +113 -0
- simplicio_loop-3.38.1/tests/test_loop_stop_delivery_contract.py +75 -0
- simplicio_loop-3.38.1/tests/test_map_service.py +172 -0
- simplicio_loop-3.38.1/tests/test_map_service_cli.py +21 -0
- simplicio_loop-3.38.1/tests/test_map_service_delivery.py +26 -0
- simplicio_loop-3.38.1/tests/test_map_service_git.py +54 -0
- simplicio_loop-3.38.1/tests/test_map_service_git_integration.py +234 -0
- simplicio_loop-3.38.1/tests/test_map_service_git_mapper_system.py +45 -0
- simplicio_loop-3.38.1/tests/test_map_service_invalidation.py +32 -0
- simplicio_loop-3.38.1/tests/test_map_service_leases.py +39 -0
- simplicio_loop-3.38.1/tests/test_map_service_mapper_integration.py +175 -0
- simplicio_loop-3.38.1/tests/test_map_service_persistence.py +84 -0
- simplicio_loop-3.38.1/tests/test_map_service_protocol.py +43 -0
- simplicio_loop-3.38.1/tests/test_map_service_repository_watchers.py +38 -0
- simplicio_loop-3.38.1/tests/test_map_service_session_system.py +195 -0
- simplicio_loop-3.38.1/tests/test_map_service_single_flight.py +281 -0
- simplicio_loop-3.38.1/tests/test_map_service_watchers.py +224 -0
- simplicio_loop-3.38.1/tests/test_map_service_watchers_git_integration.py +155 -0
- simplicio_loop-3.38.1/tests/test_operator_check.py +289 -0
- simplicio_loop-3.38.1/tests/test_operator_preflight.py +79 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_oracle_gates_unit.py +204 -204
- simplicio_loop-3.38.1/tests/test_orca_lifecycle_unit.py +158 -0
- simplicio_loop-3.38.1/tests/test_planning_gate_string_scenarios_regression.py +32 -0
- simplicio_loop-3.38.1/tests/test_pr_dod_review.py +114 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_preflight_unit.py +20 -0
- simplicio_loop-3.38.1/tests/test_process_enforcement.py +332 -0
- simplicio_loop-3.38.1/tests/test_process_supervisor_hardening.py +108 -0
- simplicio_loop-3.38.1/tests/test_process_supervisor_rust.py +125 -0
- simplicio_loop-3.38.1/tests/test_process_supervisor_spec.py +138 -0
- simplicio_loop-3.38.1/tests/test_prototype_cli_unit.py +114 -0
- simplicio_loop-3.38.1/tests/test_prototype_fanout.py +341 -0
- simplicio_loop-3.38.1/tests/test_prototype_gate.py +361 -0
- simplicio_loop-3.38.1/tests/test_prototype_gate_adversarial.py +443 -0
- simplicio_loop-3.38.1/tests/test_prototype_judge.py +319 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_quality_matrix_integration.py +115 -115
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_quality_matrix_regression.py +117 -117
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_quality_matrix_system.py +128 -128
- simplicio_loop-3.38.1/tests/test_release_manifest_unit.py +250 -0
- simplicio_loop-3.38.1/tests/test_release_train_system.py +91 -0
- simplicio_loop-3.38.1/tests/test_remote_queue_async.py +260 -0
- simplicio_loop-3.38.1/tests/test_remote_worker_cli_serve_async.py +168 -0
- simplicio_loop-3.38.1/tests/test_route_mode.py +60 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_runner_state_machine_unit.py +38 -6
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_schema_verify_integration.py +103 -103
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_schema_verify_unit.py +78 -78
- simplicio_loop-3.38.1/tests/test_skill_scripts_present.py +65 -0
- simplicio_loop-3.38.1/tests/test_source_detect.py +110 -0
- simplicio_loop-3.38.1/tests/test_supervisor_enforcement.py +493 -0
- simplicio_loop-3.38.1/tests/test_task_anchor_delivery_contract.py +44 -0
- simplicio_loop-3.38.1/tests/test_task_anchor_infra_gate_unit.py +254 -0
- simplicio_loop-3.38.1/tests/test_task_anchor_prototype_gate_integration.py +129 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_task_contract_unit.py +146 -146
- simplicio_loop-3.38.1/tests/test_test_infra_probe_unit.py +204 -0
- simplicio_loop-3.38.1/tests/test_token_control_plane.py +150 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_watcher_binding_unit.py +3 -3
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_watcher_quality_gate_reverify_unit.py +1 -1
- simplicio_loop-3.38.1/tests/test_watcher_verify_drain.py +41 -0
- simplicio_loop-3.38.1/tests/test_watcher_verify_wi_isolation.py +215 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_worker_selftests_system.py +7 -0
- simplicio_loop-3.38.0/simplicio_loop/_bundle/skills/simplicio-loop/references/multi-agent-coordination.md +0 -54
- simplicio_loop-3.38.0/simplicio_loop.egg-info/requires.txt +0 -9
- simplicio_loop-3.38.0/tests/test_finding_router.py +0 -68
- simplicio_loop-3.38.0/tests/test_orca_lifecycle_unit.py +0 -44
- simplicio_loop-3.38.0/tests/test_release_manifest_unit.py +0 -45
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/MANIFEST.in +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/contracts/stage-agents/v1/action-intent.schema.json +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/contracts/stage-agents/v1/agent-instance.schema.json +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/contracts/stage-agents/v1/agent-role.schema.json +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/contracts/stage-agents/v1/review-finding.schema.json +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/contracts/stage-agents/v1/review-receipt.schema.json +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/contracts/stage-agents/v1/run-stage-graph.schema.json +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/contracts/stage-agents/v1/stage-definition.schema.json +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/contracts/stage-agents/v1/stage-input.schema.json +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/contracts/stage-agents/v1/stage-output.schema.json +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/contracts/stage-agents/v1/stage-receipt.schema.json +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/contracts/stage-agents/v1/stages.json +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/hooks/README.md +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/orchestration.md +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/planning-gate.md +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-loop/references/quality-safety-delivery.md +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-tasks/references/orchestration.md +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_bundle/skills/simplicio-tasks/references/quality-safety-delivery.md +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_contracts/stage-agents/v1/action-intent.schema.json +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_contracts/stage-agents/v1/agent-instance.schema.json +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_contracts/stage-agents/v1/agent-role.schema.json +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_contracts/stage-agents/v1/review-finding.schema.json +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_contracts/stage-agents/v1/review-receipt.schema.json +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_contracts/stage-agents/v1/run-stage-graph.schema.json +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_contracts/stage-agents/v1/stage-definition.schema.json +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_contracts/stage-agents/v1/stage-input.schema.json +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_contracts/stage-agents/v1/stage-output.schema.json +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_contracts/stage-agents/v1/stage-receipt.schema.json +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/_contracts/stage-agents/v1/stages.json +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/agent_contract.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/agent_identity.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/completion_auditor.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/delivery_agent.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/external_verifiers.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/feedback_recovery_agent.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/finding_report.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/finding_router.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/freshness.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/github_lifecycle.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/implementation_agent.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/intake_contract.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/intake_planner.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/merge_executor.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/model_router.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/multi_tracker_reporting.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/oracle.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/planning_gate.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/pr_patrol.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/progress.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/quality_matrix.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/receipt_verifier.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/remote_queue_server_cli.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/remote_worker_measurement.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/remote_worker_supervisor_cli.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/review_panel.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/runtime_drivers.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/runtime_execution_receipt.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/secure_transport.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/source_adapter.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/source_snapshot.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/source_state.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/stage_agent_coordinator.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/stage_agents.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/stage_report.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/task_contract.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/traceability_matrix.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/work_item_claims.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop/worker_daemon.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop.egg-info/dependency_links.txt +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/simplicio_loop.egg-info/top_level.txt +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_284_lifecycle_dag_idempotence_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_action_gate_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_agent_contract_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_agent_identity.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_agent_identity_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_agent_replication.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_agentsview_adapter_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_attempt_journal_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_autoresearch_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_az_boards_adapter_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_batch_crash_recovery_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_budget_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_check_e2e_demo_contract_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_check_e2e_installed_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_claims_audit_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_clean_env_contract_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_cli_oracle_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_cli_preflight_status_json_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_completion_auditor_431_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_completion_oracle_matrix_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_completion_oracle_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_conformance_suite.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_contract_parity.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_control_policy_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_coordinator_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_copilot_global_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_cross_agent_wiki_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_dashboard_hook_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_delivery_agent_429.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_delivery_concurrency_fault_injection_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_delivery_lifecycle_sandbox_e2e_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_delivery_progress_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_delivery_reconciliation_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_delivery_source_identity_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_delivery_validation_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_dispatch_batch_multi_pr_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_dispatch_merge_wiring_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_distributed_183_dod_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_distributed_183_e2e_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_distributed_183_external_probe_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_distributed_epic_evidence_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_distributed_trust_policy_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_doctor_smoke_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_drain_cli_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_drain_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_driver_contract_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_e2e_demo_audit_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_evidence_chain_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_evidence_receipt_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_evolution.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_execution_board_e2e_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_external_verifiers_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_fan_out_flow_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_fan_out_scheduler_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_feedback_recovery_agent_430_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_finding_report.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_flow_audit_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_flow_semantics_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_freshness_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_gen_install_mutations_doc_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_github_lifecycle_concurrency_e2e_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_github_lifecycle_live_e2e.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_github_lifecycle_readside_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_github_lifecycle_runner_wiring_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_github_lifecycle_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_github_status_sync_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_golden_mutation_regression.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_hbp_topics_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_hierarchical_planner_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_hooks_coverage_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_impact_audit_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_implementation_agent_426_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_independent_watcher_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_install_ci_pinning_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_install_consent_regression.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_install_lib_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_install_plan_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_install_post_smoke_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_install_rollback_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_install_smoke_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_install_transaction_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_install_upgrade_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_intake_impact_matrix_replan_284_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_intake_planner_425_unit.py +0 -0
- /simplicio_loop-3.38.0/tests/test_intake_progress_integration.py → /simplicio_loop-3.38.1/tests/test_intake_progress.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_learn_pipeline_removed_regression.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_ledger_cli_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_live_issue_183_identity_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_locked_append_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_loop_driver_run_state_e2e_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_loop_e2e_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_loop_progress_encoding_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_loop_progress_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_maintenance_deferred_docs_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_merge_executor_live_e2e_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_merge_executor_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_merge_queue_live_probe_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_mirror_parity_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_model_registry_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_model_routed_dispatch_wiring_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_model_router_fallback_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_model_router_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_multi_tracker_reporting.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_operator_batch_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_operator_worktree_batch_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_ops_ledger_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_oracle_perf_benchmark_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_oracle_source_lifecycle_gate_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_orca_preset_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_phase_events_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_plan_contract_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_planes_golden_eval_regression.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_planes_installed_e2e_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_planning_gate_284_enhancements_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_planning_gate_execute_operator_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_planning_gate_github_publish_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_planning_gate_live_e2e_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_planning_gate_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_pr_dod_review_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_pr_evidence_comment_publish_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_pr_evidence_lifecycle_delegation_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_pr_patrol_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_precommit_bundle_sync_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_progress_comment_live_e2e_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_progress_comment_ratelimit_cli_e2e_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_progress_e2e_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_progress_failopen_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_progress_snapshots_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_progress_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_provenance_generate_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_quality_gate_scripts_emit_json_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_quality_matrix_benchmark_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_quality_matrix_reverify_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_quality_matrix_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_quality_matrix_watcher.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_receipt_verifier_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_recovery_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_release_check_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_release_rehearsal_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_release_verify_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_remote_queue_cancellation_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_remote_queue_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_remote_queue_live_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_remote_queue_pull_claim_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_remote_queue_short_lived_auth_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_remote_worker_e2e_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_remote_worker_http_e2e_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_remote_worker_measurement_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_remote_worker_supervisor_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_repo_conventions_architecture_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_repo_governance_294_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_repository_budget_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_repository_governance_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_review_panel.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_runner_cli_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_runner_progress_events_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_runtime_adapter_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_runtime_drivers_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_runtime_execution_receipt_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_runtime_matrix_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_safety_gate_agent.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_sbom_generate_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_secure_transport_fault_injection_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_secure_transport_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_security_audit_log_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_short_lived_credentials_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_simplicio_mcp_runner_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_source_adapter_protocol_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_source_snapshot_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_source_state_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_stage_agent_conformance.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_stage_agent_contract.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_stage_agent_coordinator.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_stage_agent_fail_closed.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_stage_agent_reducer.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_stage_report_cli_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_stage_report_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_system_276_e2e_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_system_check_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_system_clean_install_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_task_backlog_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_task_contract_cli_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_task_contract_routing_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_task_to_delivery_golden_corpus_regression.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_test_categories_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_token_budget_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_toon_codec_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_transcript_progress_e2e_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_transcript_progress_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_turn_progress_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_verified_delivery_dispatch_wiring_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_verified_delivery_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_verify_adapters_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_version_sync_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_vscode_global_install.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_watcher_challenge_generation_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_work_item_claims_chaos_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_work_item_claims_run_guarded_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_work_item_claims_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_worker_cli_contract_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_worker_daemon_unit.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_worker_smoke_system.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_workflow_topology.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_workitem_attempts_integration.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/tests/test_worktree_cleanup.py +0 -0
- {simplicio_loop-3.38.0 → simplicio_loop-3.38.1}/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,83 +1,87 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: simplicio-loop
|
|
3
|
-
Version: 3.38.
|
|
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
|
-
Author-email: Wesley Simplicio <wesleybob4@gmail.com>
|
|
6
|
-
License: MIT
|
|
7
|
-
Project-URL: Homepage, https://github.com/wesleysimplicio/simplicio-loop
|
|
8
|
-
Project-URL: Repository, https://github.com/wesleysimplicio/simplicio-loop
|
|
9
|
-
Project-URL: Issues, https://github.com/wesleysimplicio/simplicio-loop/issues
|
|
10
|
-
Keywords: ai,agent,orchestrator,llm,claude,cursor,automation,ralph-loop,token-economy,cli
|
|
11
|
-
Classifier: Development Status :: 4 - Beta
|
|
12
|
-
Classifier: Intended Audience :: Developers
|
|
13
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
-
Classifier: Programming Language :: Python :: 3
|
|
15
|
-
Classifier: Programming Language :: Python :: 3 :: Only
|
|
16
|
-
Classifier: Topic :: Software Development :: Build Tools
|
|
17
|
-
Classifier: Topic :: Utilities
|
|
18
|
-
Classifier: Operating System :: OS Independent
|
|
19
|
-
Requires-Python: >=3.8
|
|
20
|
-
Description-Content-Type: text/markdown
|
|
21
|
-
License-File: LICENSE
|
|
22
|
-
Requires-Dist: simplicio-cli>=0.16.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
Requires-Dist: pytest
|
|
26
|
-
|
|
27
|
-
Requires-Dist:
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
|
66
|
-
|
|
67
|
-
| `simplicio-
|
|
68
|
-
| `simplicio-
|
|
69
|
-
| `simplicio-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
- **
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: simplicio-loop
|
|
3
|
+
Version: 3.38.1
|
|
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
|
+
Author-email: Wesley Simplicio <wesleybob4@gmail.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/wesleysimplicio/simplicio-loop
|
|
8
|
+
Project-URL: Repository, https://github.com/wesleysimplicio/simplicio-loop
|
|
9
|
+
Project-URL: Issues, https://github.com/wesleysimplicio/simplicio-loop/issues
|
|
10
|
+
Keywords: ai,agent,orchestrator,llm,claude,cursor,automation,ralph-loop,token-economy,cli
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
16
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
17
|
+
Classifier: Topic :: Utilities
|
|
18
|
+
Classifier: Operating System :: OS Independent
|
|
19
|
+
Requires-Python: >=3.8
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
License-File: LICENSE
|
|
22
|
+
Requires-Dist: simplicio-cli>=0.16.2
|
|
23
|
+
Requires-Dist: tiktoken<1,>=0.12.0
|
|
24
|
+
Provides-Extra: dev
|
|
25
|
+
Requires-Dist: pytest>=7; extra == "dev"
|
|
26
|
+
Requires-Dist: pytest-cov>=4; extra == "dev"
|
|
27
|
+
Requires-Dist: cryptography<50,>=42; extra == "dev"
|
|
28
|
+
Provides-Extra: ml
|
|
29
|
+
Requires-Dist: model2vec>=0.3; extra == "ml"
|
|
30
|
+
Requires-Dist: numpy>=1.21; extra == "ml"
|
|
31
|
+
Provides-Extra: uvloop
|
|
32
|
+
Requires-Dist: uvloop>=0.19; platform_system != "Windows" and extra == "uvloop"
|
|
33
|
+
Dynamic: license-file
|
|
34
|
+
|
|
35
|
+
# simplicio-loop
|
|
36
|
+
|
|
37
|
+
**The Universal Looping AI Orchestrator** — a runtime-agnostic **super-plugin** (7 skills) that
|
|
38
|
+
drains any queue of work end-to-end on **any LLM / runtime**:
|
|
39
|
+
`discover → implement → verify → merge → close → watch 24/7`, behind safety gates and evidence
|
|
40
|
+
checks, at up to **96% fewer tokens**. Not a chatbot. A worker.
|
|
41
|
+
|
|
42
|
+

|
|
43
|
+
|
|
44
|
+
## Install
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
pip install simplicio-loop
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Then drop the skills + hooks into your project (or globally):
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
simplicio-loop install # into ./.claude of the current project
|
|
54
|
+
simplicio-loop install --global # into ~/.claude (all projects)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Now invoke it from your agent runtime (Claude Code, Cursor, Codex, Gemini, …):
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
/simplicio-loop finish all the open issues
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## What you get — 7 skills
|
|
64
|
+
|
|
65
|
+
| Skill | What it does |
|
|
66
|
+
|---|---|
|
|
67
|
+
| `simplicio-loop` | Unified public entrypoint: orchestrator core + hardened loop behind one command. |
|
|
68
|
+
| `simplicio-tasks` | Legacy alias kept only for compatibility with older installs and saved prompts. |
|
|
69
|
+
| `simplicio-orient` | Terminal-first token economy — output-reduction catalog, tee-cache, signatures-read. |
|
|
70
|
+
| `simplicio-review` | Adversarial review — parallel subagents on distinct rubrics, deduped into one verdict. |
|
|
71
|
+
| `simplicio-compress` | Output + memory compression, byte-preserving identifiers. |
|
|
72
|
+
| `simplicio-autoresearch` | Evolutionary mutate/eval/keep-revert optimizer — yool-guardrailed caps, git-isolated branch, anti-Goodhart gate-first eval. |
|
|
73
|
+
| `simplicio-learn` | Retrospective — durable, deduped lessons written back to memory. |
|
|
74
|
+
|
|
75
|
+
## Highlights
|
|
76
|
+
|
|
77
|
+
- **12 runtimes, one protocol** — Claude Code, Codex, VS Code/Copilot, Cursor, Antigravity, Kiro,
|
|
78
|
+
OpenCode, Gemini, Aider, Simplicio Agent (formerly Hermes), OpenClaw, Orca.
|
|
79
|
+
- **Evidence-gated completion** — never a false "done"; exits only on a verified `<promise>`,
|
|
80
|
+
cap, spindle handoff, or STOP.
|
|
81
|
+
- **Token economy** — honest "answer concisely" baseline; savings credited only on verified-correct
|
|
82
|
+
outcomes.
|
|
83
|
+
|
|
84
|
+
Requires Python 3.8+. The skills, hooks, and installer are pure cross-platform Python.
|
|
85
|
+
|
|
86
|
+
MIT — part of the [Simplicio](https://github.com/wesleysimplicio) ecosystem.
|
|
87
|
+
Full docs: <https://github.com/wesleysimplicio/simplicio-loop>
|
|
@@ -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>
|
|
@@ -10,7 +10,7 @@
|
|
|
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
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
|
-
<a href="#-the-49-extension-points"><img src="https://img.shields.io/badge/extension%20points-
|
|
13
|
+
<a href="#-the-49-extension-points"><img src="https://img.shields.io/badge/extension%20points-50-00E08A" alt="50 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>
|
|
16
16
|
<a href="https://discord.gg/wM6tr7xVb"><img src="https://img.shields.io/badge/Discord-Join%20Simplicio-5865F2?logo=discord&logoColor=white" alt="Join the Simplicio Discord"></a>
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "simplicio-loop"
|
|
7
|
-
version = "3.38.
|
|
7
|
+
version = "3.38.1"
|
|
8
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
9
|
readme = "PYPI.md"
|
|
10
10
|
requires-python = ">=3.8"
|
|
@@ -24,17 +24,18 @@ classifiers = [
|
|
|
24
24
|
# The simplicio-loop drive requires the operator package (`simplicio-cli`), which exposes
|
|
25
25
|
# `simplicio-dev-cli` and also brings the survey binary `simplicio-mapper` transitively.
|
|
26
26
|
dependencies = [
|
|
27
|
-
"simplicio-cli>=0.16.
|
|
27
|
+
"simplicio-cli>=0.16.2",
|
|
28
|
+
"tiktoken>=0.12.0,<1",
|
|
28
29
|
]
|
|
29
30
|
|
|
30
31
|
# Optional: the real embedding backend for `simplicio-cli semantic --ml` / `simplicio-cli rag --ml`.
|
|
31
32
|
# The native engine itself is stdlib-only; this only enables embedding-based semantic dedup +
|
|
32
33
|
# meaning retrieval. `pip install "simplicio-loop[ml]"`.
|
|
33
34
|
[project.optional-dependencies]
|
|
34
|
-
# Dev/test
|
|
35
|
-
|
|
36
|
-
dev = ["pytest>=7", "pytest-cov>=4"]
|
|
35
|
+
# Dev/test dependencies used by the local quality gate and secure-transport fixtures.
|
|
36
|
+
dev = ["pytest>=7", "pytest-cov>=4", "cryptography>=42,<50"]
|
|
37
37
|
ml = ["model2vec>=0.3", "numpy>=1.21"]
|
|
38
|
+
uvloop = ["uvloop>=0.19; platform_system != 'Windows'"]
|
|
38
39
|
|
|
39
40
|
[project.urls]
|
|
40
41
|
Homepage = "https://github.com/wesleysimplicio/simplicio-loop"
|
|
@@ -43,11 +44,15 @@ Issues = "https://github.com/wesleysimplicio/simplicio-loop/issues"
|
|
|
43
44
|
|
|
44
45
|
[project.scripts]
|
|
45
46
|
simplicio-loop = "simplicio_loop.cli:main"
|
|
47
|
+
simplicio-hub = "simplicio_loop.hub_daemon:main"
|
|
46
48
|
# issue #286 step 11: the multi-device remote-worker protocol's server + worker + supervisor
|
|
47
49
|
# are genuinely installable binaries, not source that only runs from a git checkout.
|
|
48
50
|
simplicio-remote-queue-server = "simplicio_loop.remote_queue_server_cli:main"
|
|
49
51
|
simplicio-remote-worker = "simplicio_loop.remote_worker_cli:main"
|
|
50
52
|
simplicio-remote-worker-supervisor = "simplicio_loop.remote_worker_supervisor_cli:main"
|
|
53
|
+
# issue #516: observability/enforcement CLI for the #498 process-supervisor contract
|
|
54
|
+
# (status/top/queue/cancel/drain/reports over the #514 ProcessSpec/Lease/Result adapter).
|
|
55
|
+
simplicio-process-supervisor = "simplicio_loop.process_enforcement_cli:main"
|
|
51
56
|
|
|
52
57
|
[tool.setuptools]
|
|
53
58
|
packages = ["simplicio_loop"]
|
|
@@ -67,3 +72,9 @@ exclude_lines = [
|
|
|
67
72
|
"pragma: no cover",
|
|
68
73
|
"if __name__ == .__main__.:",
|
|
69
74
|
]
|
|
75
|
+
|
|
76
|
+
[tool.pytest.ini_options]
|
|
77
|
+
addopts = ["--import-mode=importlib"]
|
|
78
|
+
# The bundle/plugin trees mirror source files and are validated by mirror-parity.
|
|
79
|
+
# Collect the canonical tests once instead of executing mirrored probes repeatedly.
|
|
80
|
+
testpaths = ["tests"]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[egg_info]
|
|
2
|
-
tag_build =
|
|
3
|
-
tag_date = 0
|
|
4
|
-
|
|
1
|
+
[egg_info]
|
|
2
|
+
tag_build =
|
|
3
|
+
tag_date = 0
|
|
4
|
+
|
|
@@ -149,25 +149,36 @@ def scan_secret_text(text):
|
|
|
149
149
|
return hits
|
|
150
150
|
|
|
151
151
|
|
|
152
|
-
def
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
152
|
+
def _effective_command_cwd(cmd):
|
|
153
|
+
"""Resolve an explicit leading cd or git -C target for PreToolUse scans."""
|
|
154
|
+
base = os.getcwd()
|
|
155
|
+
candidate = None
|
|
156
|
+
leading = re.match(
|
|
157
|
+
r"""^\s*(?:cd|Set-Location)\s+(?:"([^"]+)"|'([^']+)'|([^&;\n]+))\s*(?:&&|;)""",
|
|
158
|
+
cmd or "",
|
|
159
|
+
)
|
|
160
|
+
if leading:
|
|
161
|
+
candidate = next((value for value in leading.groups() if value), "").strip()
|
|
162
|
+
else:
|
|
163
|
+
git_c = re.search(r"""\bgit\s+-C\s+(?:"([^"]+)"|'([^']+)'|(\S+))""", cmd or "")
|
|
164
|
+
if git_c:
|
|
165
|
+
candidate = next((value for value in git_c.groups() if value), "").strip()
|
|
166
|
+
if not candidate:
|
|
167
|
+
return os.path.abspath(base)
|
|
168
|
+
candidate = os.path.expandvars(os.path.expanduser(candidate))
|
|
169
|
+
if not os.path.isabs(candidate):
|
|
170
|
+
candidate = os.path.join(base, candidate)
|
|
171
|
+
return os.path.normpath(os.path.abspath(candidate))
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
def _staged_diff(cwd=None):
|
|
175
|
+
r = _run(["git", "diff", "--cached", "--unified=0"], cwd=cwd or os.getcwd())
|
|
156
176
|
return (r.stdout if r and r.returncode == 0 else None)
|
|
157
177
|
|
|
158
178
|
|
|
159
|
-
def _push_diff():
|
|
160
|
-
"""
|
|
161
|
-
|
|
162
|
-
The previously documented pre-push wiring (`action_gate.py check --staged`) scans the
|
|
163
|
-
STAGED diff — at push time that's almost always empty, since everything being pushed is
|
|
164
|
-
already committed. This scans the real push range instead: HEAD vs. the upstream tracking
|
|
165
|
-
branch when one is configured, falling back to the last commit (or the empty tree, for a
|
|
166
|
-
brand-new single-commit repo) when there is no upstream yet. Returns None only when no
|
|
167
|
-
range can be resolved at all — the caller treats that as fail-closed, same as an unreadable
|
|
168
|
-
staged diff.
|
|
169
|
-
"""
|
|
170
|
-
cwd = os.getcwd()
|
|
179
|
+
def _push_diff(cwd=None):
|
|
180
|
+
"""Return the commits actually leaving the selected repository on git push."""
|
|
181
|
+
cwd = cwd or os.getcwd()
|
|
171
182
|
r = _run(["git", "rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{u}"], cwd=cwd)
|
|
172
183
|
upstream = r.stdout.strip() if r and r.returncode == 0 and r.stdout.strip() else None
|
|
173
184
|
if upstream:
|
|
@@ -177,16 +188,93 @@ def _push_diff():
|
|
|
177
188
|
d = _run(["git", "diff", "HEAD~1..HEAD", "--unified=0"], cwd=cwd)
|
|
178
189
|
if d and d.returncode == 0:
|
|
179
190
|
return d.stdout
|
|
180
|
-
# No HEAD~1 (single-commit repo) — diff against git's well-known empty-tree hash.
|
|
181
191
|
d = _run(["git", "diff", "4b825dc642cb6eb9a060e54bf8d69288fbee4904", "HEAD", "--unified=0"],
|
|
182
192
|
cwd=cwd)
|
|
183
193
|
return (d.stdout if d and d.returncode == 0 else None)
|
|
184
194
|
|
|
185
195
|
|
|
196
|
+
def _delivery_contract(cwd):
|
|
197
|
+
"""Load the optional frozen delivery contract for the effective repository."""
|
|
198
|
+
local_anchor = os.path.join(cwd, ".orchestrator", "loop", "anchor.json")
|
|
199
|
+
anchor_path = local_anchor if os.path.exists(local_anchor) else (
|
|
200
|
+
os.environ.get("SIMPLICIO_ANCHOR_FILE") or local_anchor
|
|
201
|
+
)
|
|
202
|
+
try:
|
|
203
|
+
with open(anchor_path, encoding="utf-8") as handle:
|
|
204
|
+
anchor = json.load(handle)
|
|
205
|
+
contract = anchor.get("delivery")
|
|
206
|
+
if not contract:
|
|
207
|
+
return None, None
|
|
208
|
+
if REPO not in sys.path:
|
|
209
|
+
sys.path.insert(0, REPO)
|
|
210
|
+
from simplicio_loop.delivery_contract import normalize_contract
|
|
211
|
+
return normalize_contract(contract), None
|
|
212
|
+
except FileNotFoundError:
|
|
213
|
+
return None, None
|
|
214
|
+
except (OSError, ValueError, TypeError, json.JSONDecodeError) as exc:
|
|
215
|
+
return None, "invalid frozen delivery contract: %s" % exc
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
def _diff_new_paths(cwd, push):
|
|
219
|
+
"""Return added paths from the same range that will be secret-scanned."""
|
|
220
|
+
if push:
|
|
221
|
+
upstream = _run(["git", "rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{u}"], cwd=cwd)
|
|
222
|
+
ref = upstream.stdout.strip() if upstream and upstream.returncode == 0 else ""
|
|
223
|
+
ranges = (["%s...HEAD" % ref] if ref else ["HEAD~1..HEAD", "4b825dc642cb6eb9a060e54bf8d69288fbee4904", "HEAD"])
|
|
224
|
+
for item in ranges:
|
|
225
|
+
args = ["git", "diff", item, "--name-status"] if "..." in item or ".." in item else ["git", "diff", item, "HEAD", "--name-status"]
|
|
226
|
+
result = _run(args, cwd=cwd)
|
|
227
|
+
if result and result.returncode == 0:
|
|
228
|
+
return [line.split("\t", 1)[-1] for line in result.stdout.splitlines()
|
|
229
|
+
if line and line[0] in {"A", "C"} and "\t" in line]
|
|
230
|
+
return []
|
|
231
|
+
result = _run(["git", "diff", "--cached", "--name-status"], cwd=cwd)
|
|
232
|
+
if not result or result.returncode != 0:
|
|
233
|
+
return []
|
|
234
|
+
return [line.split("\t", 1)[-1] for line in result.stdout.splitlines()
|
|
235
|
+
if line and line[0] in {"A", "C"} and "\t" in line]
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
def _delivery_guard(cwd, diff, push):
|
|
239
|
+
contract, error = _delivery_contract(cwd)
|
|
240
|
+
if error:
|
|
241
|
+
return error
|
|
242
|
+
if contract is None:
|
|
243
|
+
return None
|
|
244
|
+
new_paths = _diff_new_paths(cwd, push)
|
|
245
|
+
if not contract["allow_new_files_in_repo"] and new_paths:
|
|
246
|
+
return "delivery contract forbids new files (cwd=%s): %s" % (cwd, ", ".join(sorted(new_paths)))
|
|
247
|
+
if not contract["allow_comments_in_code"]:
|
|
248
|
+
code_paths = {
|
|
249
|
+
line[6:].strip()
|
|
250
|
+
for line in diff.splitlines()
|
|
251
|
+
if line.startswith("+++ b/")
|
|
252
|
+
}
|
|
253
|
+
code_suffixes = (".cs", ".js", ".jsx", ".ts", ".tsx", ".py")
|
|
254
|
+
if not any(path.lower().endswith(code_suffixes) for path in code_paths):
|
|
255
|
+
return None
|
|
256
|
+
comments = []
|
|
257
|
+
for line in diff.splitlines():
|
|
258
|
+
if not line.startswith("+") or line.startswith("+++"):
|
|
259
|
+
continue
|
|
260
|
+
added = line[1:].lstrip()
|
|
261
|
+
if added.startswith(("#", "//", "/*", "*", '"""')):
|
|
262
|
+
comments.append(added[:80])
|
|
263
|
+
if comments:
|
|
264
|
+
return "delivery contract forbids new code comments (cwd=%s; lines=%d)" % (cwd, len(comments))
|
|
265
|
+
return None
|
|
266
|
+
|
|
267
|
+
|
|
186
268
|
def _is_commit_or_push(cmd):
|
|
187
269
|
return bool(re.search(r"\bgit\s+(commit|push)\b", cmd or ""))
|
|
188
270
|
|
|
189
271
|
|
|
272
|
+
def _is_push(cmd):
|
|
273
|
+
return bool(re.search(r"\bgit\s+.*\bpush\b", cmd or ""))
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
|
|
190
278
|
def _verdict(allow, reason=""):
|
|
191
279
|
return {"action": "allow" if allow else "block", "reason": reason}
|
|
192
280
|
|
|
@@ -243,24 +331,35 @@ def _runtime_gate_escalation(cmd):
|
|
|
243
331
|
|
|
244
332
|
|
|
245
333
|
def gate_command(cmd, staged=False):
|
|
246
|
-
"""The core decision.
|
|
247
|
-
# 1) irreversible op → block
|
|
334
|
+
"""The core decision. Secret scans use the command's effective repository."""
|
|
248
335
|
reason = classify_command(cmd)
|
|
249
336
|
if reason:
|
|
250
337
|
return _verdict(False, "irreversible op: " + reason)
|
|
251
|
-
# 2) a commit/push → secret-scan the staged diff (fail-closed if it can't be read)
|
|
252
338
|
if staged or _is_commit_or_push(cmd):
|
|
253
|
-
|
|
339
|
+
cwd = _effective_command_cwd(cmd)
|
|
340
|
+
push = _is_push(cmd)
|
|
341
|
+
diff = _push_diff(cwd) if push else _staged_diff(cwd)
|
|
254
342
|
if diff is None:
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
return _verdict(True)
|
|
343
|
+
target = "push" if push else "staged"
|
|
344
|
+
return _verdict(
|
|
345
|
+
False,
|
|
346
|
+
"cannot read %s diff to secret-scan (cwd=%s) - fail-closed" % (target, cwd), )
|
|
260
347
|
hits = scan_secret_text(diff)
|
|
261
348
|
if hits:
|
|
262
349
|
labels = ", ".join(sorted({h[0] for h in hits}))
|
|
263
|
-
|
|
350
|
+
target = "push" if push else "staged"
|
|
351
|
+
return _verdict(
|
|
352
|
+
False,
|
|
353
|
+
"secret in %s diff (%s; cwd=%s) - remove it before mutation" % (target, labels, cwd), )
|
|
354
|
+
delivery_reason = _delivery_guard(cwd, diff, push)
|
|
355
|
+
if delivery_reason:
|
|
356
|
+
return _verdict(False, delivery_reason)
|
|
357
|
+
runtime_reason = _runtime_gate_escalation(cmd)
|
|
358
|
+
if runtime_reason:
|
|
359
|
+
return _verdict(False, "simplicio runtime gate: " + runtime_reason)
|
|
360
|
+
return _verdict(True)
|
|
361
|
+
|
|
362
|
+
|
|
264
363
|
# 3) additional signal from the simplicio runtime's own risk classifier, when installed
|
|
265
364
|
# (best-effort, additive-only — see _runtime_gate_escalation).
|
|
266
365
|
runtime_reason = _runtime_gate_escalation(cmd)
|