Repository navigation
v3.45.1
simplicio-loop 3.45.1
The skill now works with no API key. 3.45.0 wrongly required OPENROUTER_API_KEY inside the skill, so workers that ran it without the key were blocked. In 3.45.1 the model that invoked the skill controls everything: simplicio-loop "<task>" surveys with Mapper and prints a plan request, the model writes the JSON plan, and simplicio-dev-cli applies it (simplicio-loop turbo --repo . --apply .simplicio-loop/turbo/plan.json). No provider call, no key.
Upgrade: pip install -U simplicio-loop && simplicio-loop install --global
Changes
- Fix: 3.45.0 wrongly required a provider key inside the skill, so a worker that ran it without
OPENROUTER_API_KEYwas blocked.simplicio-loop turbonow defaults to host mode, which needs no key and makes no provider call (even when the key is set): the model that invoked the skill controls everything andsimplicio-dev-climakes every edit. Step 1,simplicio-loop turbo --repo R --task T [--verify V], surveys with Mapper and printssimplicio.turbo-request/v1withstatus: "needs_plan": the map slice (one task gets only its slice), the task, the current file text,plan_path(.simplicio-loop/turbo/plan.json),format,tasks,promptand the exactapplycommand; the request is also saved as.simplicio-loop/turbo/request.json. Step 2,simplicio-loop turbo --repo R --apply .simplicio-loop/turbo/plan.json [--verify V], applies the find/replace plan the model wrote through dev-cli, runs--verifyand printssimplicio.turbo-run/v1withmode: "host",statusok or failed,applied,failed(each with the dev-cli reason and an excerpt of the file around afindthat did not match) andverify. A missing or malformed plan isfailedwithturbo_plan_missingorturbo_plan_malformed. Exit 0 ok or needs_plan, 1 failed, 2 blocked. - The OpenRouter engine is an explicit opt-in,
--provider openrouter, and the only mode that needsOPENROUTER_API_KEY(turbo_provider_key_missing, exit 2, without it). The benchmark's turbo arm is unchanged. simplicio-loop "<task>" [--verify "<tests>"]is the shortest form: a first argument that is not a subcommand runsturbo --repo . --task "<task>". Requests for all issues, tickets or tarefas still go to the GitHub drain intake, and baresimplicio-loopis unchanged. Before, it failed in argparse with "invalid choice".- The skill (body only, frontmatter unchanged), its orientation block,
docs/LLM_MAX_SPEED_ORIENTATION.md,llms.txt,AGENTS.md,README.md,docs/CLI_COMMANDS.md, the host rules and theorientcommand card describe the two-command flow and drop the key requirement. The skill also says how to drain a queue: list the items (gh issue list --state open --json number,title,body), run the two commands per item in order, one CLAIMED issue and one PR per item, done only onstatus: "ok"plus a passing verify. hooks/action_gate.pylets the host write.simplicio-loop/turbo/plan.jsonunderSIMPLICIO_LOOP_STRICTand still blocks every other hand edit.- Turbo provider mode: one pooled
httpxconnection kept alive (about 50 ms per call, measured); a hedged duplicate request on session<id>-hedgeafterSIMPLICIO_TURBO_HEDGE_AFTERseconds (default 2.5, 0 disables) whose losing side is billed; a 1-token warm-up call that caches the header before independent tasks fan out at once; a one-task slice of the Mapper map (SIMPLICIO_TURBO_SLICE=0disables it; 3,294 map tokens down to about 340, measured onfixture_hard); and one repair call with the test output after a failed--verify. Call records carryhedgedandwarm, and the benchmark counts hedge losers in the arm's tokens. python3 scripts/check.pyruns only the tests a change can affect by default.scripts/impact_tests.pydiffs the working tree against--base(defaultorigin/main), keeps the top-level functions, classes and assignments whose source changed, and selects the test files that reach them (bare name,module.symbol, import alias or dotted string), run a changed file by path, or name a changed non-Python file; a changedconftest.pyreaches the tests below it.--fullruns every test file and--base REFchanges the reference; the package gates use the same selection. Selecting the whole 3.45.1 branch takes 9 s.- Test-suite pruning (the suite was 5,735 root tests): removed 141 and added 45 (host mode, the prose default, the impact gate and the safety net below), so 5,639 collected. 119 tests in 23 files test modules that no entry point, script, hook, doc or other module reaches (
engine_router,engine_boundary,engine_dependency_guard,conformance,conformance_cache,hub_agent_store,inference_benchmark,inference_capacity,installed_process_e2e,installed_runtime_e2e,production_integration,model_routing_policy,semantic_convergence,token_control_plane,source_detect,map_service_delivery,map_service_invalidation,map_service_persistence,map_service_repository_watchers,behavior_loop,development_entry,epic_readiness,savings_cli); those modules and the unusedhub_queue_agent_clientcompatibility shim are deleted, and so are the 11 tests intest_source_contract_v1.pythat covered the deletedsource_fan_inandsource_providers. 5 exact duplicate tests and 6 skipped tests of the removed SQLite Hub queue are gone, plus 5 skipped dev-cli tests of removed provider features (dev-cli suite 2,716 to 2,711; mapper unchanged at 1,735). A new import sweep and a--helprun of every console script guard the deleted modules. - The 5 tests blocked by the host's physical-pressure gate no longer depend on it: they pin the documented
SIMPLICIO_LOOP_*_PRESSURE_PERCENTprofile (newadmitting_capacityfixture) and put the suite's interpreter first onPATHfor the verify lanes. The quality provider's monitor honors the same profile throughlocal_capacity.physical_monitor_kwargs, which moved out ofrunner.py.