Repository navigation
Releases: simpletibr/simplicio-loop
Release list
v3.48.1
Changes in 3.48.1
- The
asd-ste100skill is now part of the package (.claude/skills/asd-ste100). - The loop delivery step now requires ASD-STE100 for agent-facing text: PR bodies, release notes, and error messages.
- Install the skill with
npx skills add danyuchn/asd-ste100-skill. - Check text with
.claude/skills/asd-ste100/scripts/ste-lint.py.
PyPI: https://pypi.org/project/simplicio-loop/3.48.1/
See CHANGELOG.md for the full list.
v3.48.0
Changes in 3.48.0
Mapper (v0.26.35, #1395)
- The mapper uses a native SFAST v2 snapshot. The snapshot is memory-mapped.
- The mapper has TurboQuant 4-bit, FWHT, and Pareto scoring.
- The mapper splits a task into a PlanDAG. New commands:
understand,plan,changeset. - The
changesetcommand checks each file againstexpected_sha256. It rejects a changeset that does not match. - The index engine can write an SFAST v2 snapshot.
Dashboard (#1398, #1399)
- A new event contract is available:
simplicio.dashboard-event/v1. - The Simplicio Live component kit is included in the wheel.
Fix
mapper/parse.pynow accepts aprevious_mapwhosefilesvalue is a dict. Before, it failed.
Tests
- Mapper tests: 62 passed, 15 subtests.
- Not run:
hypothesisandbuildare not installed in the test environment. Three tests need them.
Publication
- GitHub Release only. PyPI and npm are not published.
See CHANGELOG.md for the full list.
v3.47.0
[3.47.0] - 2026-10-02
- Full Loop Protocol Restored (Fixes #1392): Restored the v3.43 full loop protocol (intake, task anchor, task backlog, triage/decide/operate/verify/journal loop, 7-dimension adaptive DoD, delivery contract, and PR evidence) adapted to the monorepo structure.
- Bound Operators: Bound operators
simplicio-mapper(survey) andsimplicio-dev-cli(mutation) from the single wheel. State directory is.simplicio-loop/. All instructions depending on Runtime, Hub, remote workers, or Fast stay removed. - Skill Entry Point: Frontmatter description stops saying "Invoking it runs simplicio-loop turbo". Turbo remains available as an operate tool (
simplicio-loop turbo --repo <path> --task "<task>"and short formsimplicio-loop "<task>"), but is no longer the skill entry. - 50 Extension Points: Audited and verified 50 extension points consistent with the manifest table.
- CLI Commands: All 29 protocol scripts and commands answer
--helpwith exit code 0. - Mirrors & Headers: Mirrors regenerated (
sync_plugin.py,sync_bundle.py,refresh_orientation_pins.py). Header lock synchronized withheader-change: .claude/skills/simplicio-loop/SKILL.mdnote. - Validation: Passes all check gates (claims-audit 15/15, mirror-parity, contract-headers, loop-contract, clean-env, token-budget, repo-budget, conformance, package-gates).
Upgrade:
pip install -U simplicio-loop && simplicio-loop install --global
sha256:
β’ simplicio_loop-3.47.0-py3-none-any.whl: 77c0b6676a1761337e04f8226793ec52acb95f1ce28ed91ff02fa4fc3602d389
β’ simplicio_loop-3.47.0.tar.gz: 94614d0774af36b9e7dc0a458f98086f83ef5e40bfa4b6f52f35e470f0caa1f4
v3.46.1
[3.46.1] - 2026-10-02
- Restore simplicio-loop 50 extension points: restored
control_policyandprototype_judgemodules, unit tests, and reference documentation (references/control-policy.md,references/extension-points.md), bringing the audited extension points count from 48 back to 50. - Quality Delivery Flow & Host Mode: full flow contract preserved with two-command hot path (
simplicio-loop "<task>"andsimplicio-loop turbo --apply - <<'PLAN'), 7-dimension adaptive DoD, verification, delivery contract, PR evidence, and GitHub issue drain. - Monorepo structure maintained (
packages/mapper,packages/dev-cli,simplicio-loopat root; no Fast, no Runtime, no MCP force). - Subprocess and Network Guard Isolation: fixed subprocess invocation under
core_network_guardacrossapply.py,lane_verifiers.py,turbo_cli.py, andwave_worktree.pyusingasyncio.create_subprocess_exec/subprocess.runwith system shell executable, preventing network-guard bypass errors. - Hermetic test robustness: made
matplotlibimport optional in benchmark reporting to allow unit tests (test_turbo10_unit.py) to run in lean environments without matplotlib installed. - Increased core gate deadline to ensure full 51-shard test suite passes reliably on cold/loaded environments.
Upgrade:
pip install -U simplicio-loop && simplicio-loop install --globalsha256:
simplicio_loop-3.46.1-py3-none-any.whl:307944b8e012471260be9d3ed708a5a311a3f0dbeac1c44724da24b3b4a63ba8simplicio_loop-3.46.1.tar.gz:daee6244ae19f2439ffb539750441be4b737c95f781117aa6ce254c1f2b84202
v3.46.0
- Harness catalog:
simplicio_loop/_catalog/harnesses.json(simplicio.harnesses/v1, shipped in the wheel) lists the 32 host surfaces ofsimpletibr/simplicio(pinned toplugins/simplicio/host-surfaces.jsonata9c8a480) plus Aider, DeepSeek and OpenClaw: 35 hosts, 34wiredand 1manual(DeepSeek is a model provider, not a host). Existing adapter directory names map onto upstream ids throughaliases(claudetoclaude-code,qwentoqwen-code,orcatoorca-dev,simplicio_agenttohermes). scripts/install.shandscripts/install.ps1(both launchscripts/install_lib.py) gain 21 runtimes:github-copilot mimo-code amp openclaude pi oh-my-pi devin goose auggie autohand charm cline codebuff command-code continue droid kilocode kimi mistral-vibe qwen rovo-dev. Each writes the file its host documents (AGENTS.mdfor most, plus.github/copilot-instructions.md,.continue/rules/simplicio-loop.mdandQWEN.md) and the.claude/skillscopy.adapters/<host>/README.mdexists for every entry andadapters/MATRIX.mdhas one row per entry with its install status. The runtime count (35) is derived from the catalog byscripts/canonical_manifest.py, which also fails when anadapters/directory or a catalog entry has no counterpart.- Fix: a second
install_lib.pyrun changed the entry file (AGENTS.md,GEMINI.md, ...) by prepending two blank lines when the marker block started the file; re-running an install is now byte-identical. - Removed the Runtime/MCP backend integration; execution is standalone only. Deleted
runtime_bridge,runtime_binary,runtime_context,runtime_drivers,runtime_adapter,runtime_effect_adapter,runtime_execution_receipt,plugin_runtime, theruntime-routingcontracts,scripts/runtime_matrix.pyand the Runtime bridge session benchmark.SIMPLICIO_EXECUTION_PROFILEonly acceptsstandalone(or unset/auto),simplicio-loop stack lock --routeonly acceptsstandalone,simplicio-ecosystem-doctorreports onestandaloneprofile over three components (loop, mapper, dev-cli),simplicio-loop preflightchecks Mapper and Dev CLI only, andloop-executionreceipts carry thesimplicio-loop,simplicio-mapper,simplicio-dev-clichain with no runtime component (contracts/ecosystem-doctor/v1andcontracts/loop-execution/v1updated). The Hookwall effect boundary inrunner.py(envelope, pre-decision, ledger, fenced idempotent effects) is unchanged; it now builds its request from a local_EffectRequest.simplicio-routeno longer offers agovernroute to Runtime capabilities and the capability catalog loses its fourruntime.*entries (12 capabilities). The Dev CLI's own Runtime bridge is untouched. - Removed the Hub and remote workers. Console scripts
simplicio-hub,simplicio-remote-queue-server,simplicio-remote-workerandsimplicio-remote-worker-supervisor;simplicio-loop hub-drain-admitandsimplicio-loop doctor resource; the doctor's "remote worker (#286)" check; the Hub daemon, governor, scheduler, queue retry, transport and agent executor; the SQLite and HTTP remote queue, secure transport, trust policy, short-lived credentials, audit log, work-item claims and worker daemon; theremote-worker/v2andhub-agentcontracts;SIMPLICIO_REMOTE_QUEUE_*.simplicio_loop/remote_queue.pykeepsLease,QueueConflictandQueueUnavailable, which the Mapper-backed queue uses.simplicio-loop hub-drain-plan(read-only GitHub drain intake),simplicio-process-supervisorand the economy/token/budget monitors stay. - Removed 16 modules that nothing called:
typed_recovery,slot_lease,resource_fabric,hookwall_rollout,prism_agents,prism_recovery,prism_reducer,capability_negotiation,map_service_protocol,loop_runtime,driver_contract,flow_semantics,control_policy,plan_dag(and its Contract Registry entry: 8 contracts),prototype_judge,prototype_fanout; andcanonical_plan,verified_delivery,execution_board,model_router,model_registry,platform_capabilities, which only the removed subsystems used.mapper_receipt,budgetand the prototype gate stay: they have live callers. With them go their tests, docs, contract entries, skill references and coverage-baseline lines. The loop now lists 48 extension points (was 50). - Tests: the root suite is 4,495 collected tests (5,782 before, gate selection; 4,551 and 5,840 including the external-integration lane). Mapper (1,827) and Dev CLI (2,713) are unchanged. Removed 146 test files (1,229 tests): 99 files for the removed subsystems (730 tests) and 47 old regression files named after an issue number (499 tests); another 60 tests in kept files that only exercised removed code were dropped and 2 were added. 27 issue-numbered files stay under descriptive names (368 tests) because a live module or script would otherwise have no test; five of them cover
scripts/(test_repo_governance_integration.py,test_conformance_benchmark.py,test_delivery_contract_stop_hook_integration.py,test_installed_agent_fabric.py,test_issue_meta_audit_unit.py).tests/test_turbo10_unit.pyreads the kept2026-09-29-790061e2-t10-ind.jsonrun. - Removed old evidence, benchmark results and documentation (git history keeps all of it): 23 evidence files (
docs/evidence/**,docs/audits/**,docs/HANDOFF-2026-09-26.md,.lavish/**,.specs/**, 1.0 MB); 94 benchmark files (bench/llm_abresults before the 3.44 series and the staleREPORT-ablation*,REPORT-t2*andREPORT-t1/t4-batchrenders, thebench/*-baseline.jsonandbench/results/**receipts with the harness scripts that only served removed features, the benchmark write-ups and the two PDF renderers, 6.2 MB); 29 documents (the Hub, remote worker, queue, plan DAG, slot lease and typed recovery runbooks, superseded ADRs 0002, 0003 and 0011, the Rust supervisor runbook for a module that no longer exists,examples/EXAMPLES.md, 0.1 MB). In all this release deletes 388 tracked files (9.3 MB: 61 code, 159 test, 18 contract or policy, 4 mirror, 23 evidence, 94 benchmark and 29 documentation files) and renames 28 test files; the tracked tree goes from 3,565 files and 54.8 MB to 3,177 files and 45.3 MB.bench/llm_abkeepsREPORT.md/.html/.pdf,STANDARD.md, the146a6931and790061e2results,results/runs/and the harness. - Regenerated with their scripts:
quality/coverage-baseline.json(47-file scope, 522 tests, global 16.75%, critical 25.13%; the earlier numbers are kept underprevious_baseline),scripts/repository_budget_baseline.json,contracts/headers.lock.json, thedocs/LLM_ORIENTATION.toonpins,plugin/andsimplicio_loop/_bundle/. - Known failures, unchanged by this release and identical on
origin/main:tests/test_cli_dispatch_unit.py(6 tests write to a read-only/ron macOS) and, in Mapper,test_background_index_reports_pid_and_logandtest_scan_async_returns_before_deep_completes(deep pass did not terminate).
Upgrade: pip install -U simplicio-loop && simplicio-loop install --global
PyPI: https://pypi.org/project/simplicio-loop/3.46.0/
sha256:
- simplicio_loop-3.46.0-py3-none-any.whl
7182660b4acee6c157806810ac897b27ecd0c54cd4d307eb39dcd7799ff88bee - simplicio_loop-3.46.0.tar.gz
cbbacd9f7815bf24f3e163be24d0c882344cb8987fb6b8a7e534762335a982ec
v3.45.2
- The real skill path is two commands. Measured on 3.45.1 (deepseek-v4.1-flash through OpenCode), the direct turbo engine was 88-96% faster and 48-80% cheaper than plain OpenCode, but a host agent invoking
/simplicio-looptook 9-20 turns, and every turn re-sends the whole conversation (120k-540k prompt tokens). It tied with or lost to plain OpenCode: 38-45 s against 30 s for 1 task, and 324-496 s and $0.020 against 112 s and $0.008 for 4 hard tasks. The archived sessions show where the turns went:loop_progress.py render --turn-header, a script the target repository does not have;ls,catandreadof the tree and the tests;--help; a scratchpad and a journal written by hand; the plan written toplan.jsonas a separate tool call; the model's own test run; a re-read of the result. The model also used--provider openrouteron its own, because the docs and the help mention it. simplicio-loop turbo --repo R --apply - [--verify V]reads the JSON plan from stdin, as UTF-8 bytes (a plan in Portuguese survives a cp1252 or C locale). An empty stdin, or a terminal on stdin, isfailedwithturbo_plan_missinginstead of a hang;--apply FILEis the same code path. Theneeds_planrequest now ends with the ONE next command in heredoc form, so the model writes the plan and applies it in a single tool call:simplicio-loop turbo --repo <R> --apply - --verify "<V>" <<'PLAN', the plan,PLAN. Two commands, two tool calls (smoke with the real CLI, network denied: request, then apply,status ok).- The request is compact:
tasks(each task text once),map(the Mapper map cut to the named files, for several tasks too, as JSON instead of an escaped string),files(the current text of the named files, each once; a file past 6000 characters ends with how much was cut),format,rules(one line: write the plan from the file contents above, do not open, list or read other files, do not run tests yourself, run the command below once) andapply.plan_path,prompt, the second copy of the task list and the planner's "reply with JSON only" text are gone, and step 1 writes nothing into the repository (norequest.json, noplan.jsoncleanup). - The skill body (frontmatter unchanged), its
SIMPLICIO-LLM-ORIENTATIONblock,docs/LLM_MAX_SPEED_ORIENTATION.md,llms.txt, theAGENTS.mdquick flow, the host rules,docs/ECOSYSTEM_LLM_GUIDE.md, the OpenCode adapter README,references/full-flow.mdand theorientcommand card say it plainly: exactly two commands; do not explore, list or read files; do not run tests yourself (--verifydoes); no plan file, scratchpad, journal or turn header for a task run. The loop's own Contract, State and Drive sections, Bounded delivery and thereferences/full-flow.mdpointer now say they are for queue goals and re-fed goals, and the turn header is skipped when its script is missing. None of these names--providerorOPENROUTER_API_KEYany more;turbo --helpanddocs/CLI_COMMANDS.mddescribe--provider openrouteras headless automation only that agents invoking the skill must not use, and the engine notes moved tobench/llm_ab/STANDARD.md.SKILL.mdis 1935 tokens (o200k_base), from 1858 before the rewrite. .simplicio-loop/no longer shows up as untracked. Cloud workers reported it: the turbo path (the default skill flow since 3.45) never calledstate_dir.ensure_state_dir, so not even the<git-dir>/info/excludeline was written, while Mapper, the survey marker and dev-cli all write under that directory.ensure_state_dirnow also appends.simplicio-loop/to the repository's.gitignorewhen that file exists and no stripped, non-comment line already covers the directory (.simplicio-loop,/.simplicio-loop/,.simplicio-loop/*,/.simplicio-loop/**and the other variants); it never creates a.gitignore, keeps CRLF line endings, adds a missing final newline first, and leaves a file it cannot read as UTF-8 or write untouched. This repository's own.gitignore(.simplicio-loop/*) is not edited.turbocalls it before anything is written under the directory: after the request validates its tasks, before dev-cli applies a plan, and in provider mode; a blocked call or a missing--repocreates nothing. The skill body and its orientation block say the directory is local run state: keep it in.gitignore(the engine adds it when the file exists) and never commit it.- The turbo hedge only fires on real tails:
SIMPLICIO_TURBO_HEDGE_AFTERdefaults to 10 s, was 2.5 s. The 2.5 s came from a simulation with Together only. On the real provider mix normal calls take 1.6-8.0 s (Relace, the slowest, about 8 s) and the one real tail took 19.6 s. In the final benchmark hedge analysis, at 2.5 s the hedge fired on 23% of calls, the duplicate won only 2 of 21, it saved about 0.08 s in total, and the losing duplicates were 47% of the billed cost (the CLI hedged 5 of 12 calls, and 4-task sets cost 45-57% more than in 3.45.0). 10 s is above the ~8 s slowest normal call and still cuts the 20-45 s tails. A test pins that a 5 s call is not hedged by default. - The repair after a failed
--verify(provider mode) rewrites a file the first plan created. On a create task the model repeated{"find": ""}for a file that now exists and dev-cli refused it ascreate_target_exists, in 5 of 15 repair attempts, so the repair never got a chance. Only on that path, an operation with an emptyfindfor an existing file becomes a whole-file replacement (findis the file's current text, read as bytes so its line endings survive; anything that cannot be a whole-file find is left to dev-cli), and the repair prompt says the listed files already exist. hooks/action_gate.pyreads the heredoc body ofsimplicio-loop turbo ... --apply - <<'PLAN'as data, so a plan that merely contains a destructive statement (a migration, a runbook) is not blocked for what it says; the gate blocked the tool call that wrote its own test while this was built. Only the exact shape is exempt: one plainsimplicio-loop turbo --apply -command with no unquoted operator, and a quoted delimiter that is the last line and appears nowhere earlier. Every other command, and every other reader of a heredoc, is classified in full.python3 scripts/check.pypasses on the release tree again (audit, mirror parity, impact tests, loop contract, clean env, token budget, repo budget, conformance). It failed on 3.45.1: since the immutable contract headers (#1342) line 2 of each shared reference ofsimplicio-loopandsimplicio-tasksnames its own skill, so the skill-pair parity check reported 12 references as drifted. Only that line is normalized; a body difference behind the header is still flagged.
Upgrade: pip install -U simplicio-loop && simplicio-loop install --global
PyPI: https://pypi.org/project/simplicio-loop/3.45.2/
sha256:
- simplicio_loop-3.45.2-py3-none-any.whl
4dab62c6968e8666dcd9c96ac3340f2c53b0cca0065d2fef9bb34d47f92d8984 - simplicio_loop-3.45.2.tar.gz
78f15c5203ad0a2bb23fa826a1d10817b5cd55c1ea3d3001b8adcaaf69f551f6
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.
v3.45.0
simplicio-loop 3.45.0
- New command
simplicio-loop turbo --repo R --task "..." [--task ...] [--verify "cmd"]. Mapper reads the repo once, one OpenRouter call per lane (deepseek/deepseek-v4.1-flash, pinned session, reasoning off) returns a find/replace plan, andsimplicio-dev-cliapplies it. Files named in the task text become the target and context, and tasks on the same file stay in order. It prints onesimplicio.turbo-run/v1JSON document (status, applied, failed, model_calls, retries, tokens, cache_hit_pct, cost_usd, verify, wall_s) and exits 0 ok, 1 failed, 2 blocked. - Invoking the skill now runs
simplicio-loop turboby default. The host no longer writestasks.md, edit plans orsimplicio-dev-cli edit --planoperations.SKILL.mdand the orientation block the stop hook re-feeds every turn,docs/LLM_MAX_SPEED_ORIENTATION.md,docs/ECOSYSTEM_LLM_GUIDE.md,docs/CLI_COMMANDS.md,llms.txt,AGENTS.md,README.md, the host rule files, the OpenCode adapter and the bench docs all name that one command. Done isstatus: "ok"and, when--verifywas given,verify.passed: true. simplicio_loop/turbo_provider.pyis the model client for both the product and the benchmark's turbo arm, so the benchmark measures the code that ships.SIMPLICIO_TURBO_MODELoverrides the model.OPENROUTER_API_KEYis required. Without it the command printsstatus: blockedwithreason_code: turbo_provider_key_missingand exits 2. There is no fallback to hand edits.run_turboreports per-lane outcomes (outcomes: tasks, applied, reason) andapplied_all. A plan that dev-cli rejects twice is afailedresult that names the dev-cli reason.orientpoints at turbo.route["next"]is thesimplicio-loop turbocommand (orient --briefcarries every task and--verifyin one step), the command card and thellm_orientationandhot_pathdata ofeconomy statusname turbo, and no prepare, tick, wave or edit-plan guidance is left in them.- Each
simplicio-loop turboinvocation asks Mapper again. Mapper's own tree-state cache keeps an unchanged tree free and byte-identical; before, every later invocation reused the first map saved in.simplicio-loop/turbo-survey.json. SKILL.mdis 1571 tokens (o200k_base), down from 2118 in 3.44.2, and the token-budget baseline is regenerated. Removed the unuseddelivery_execute_verbandDELIVERY_EXECUTE_RULE.scripts/check.pyno longer crashes withKeyError: 'contract_headers'after claims-audit: the phase had no timeout entry inPHASE_TIMEOUT_SECONDS, so the full local gate never reached the test phase. A test now requires every phasecheck.pynames to have one.- header-change: .claude/skills/simplicio-loop/SKILL.md (frontmatter description: "Host writes the edit plan." became "Invoking it runs simplicio-loop turbo.")
- header-change: .claude/skills/simplicio-loop/references/full-flow.md (purpose no longer lists the fastest-route picker and the wave-flow commands as kept in SKILL.md)
Verification: impact-selected tests, 1,042 passed. The 6 failures are the host physical-pressure gate and reproduce on 3.44.2. A clean-venv install gives a healthy stack and a typed turbo_provider_key_missing block without a key. The live benchmark of the skill path comes with 3.45.1.
v3.44.2
simplicio-loop 3.44.2
bench/llm_ab/run.py --tasks 4 --hardadds a hard Python set with hidden acceptance tests outside the arm repo: coupon logic with a half-up rounding trap, a two-bug fix, a two-file refactor, and a duration parser.--turbo-reasoningkeeps the model's reasoning on for the turbo calls, so on and off can be compared. Turbo also sends a task'scontextfiles to the model. The checker accepts an absolute path.- Hard-set result: with reasoning off, turbo passed 12/12 hidden-test tasks at 5.4 s and $0.0027 per run (mean of 3). The OpenCode arm passed 11/12 at 112.6 s and $0.0122. With reasoning on, turbo passed 7/8, and one call ran away to 131k reasoning tokens. Turbo keeps reasoning off.
- Every benchmark run of 3.44.0 to 3.44.2 is archived under
bench/llm_ab/results/runs/with a summaryREADME.md, outside the release-to-release history.
PR #1374, issue #1373. Every benchmark run is archived in bench/llm_ab/results/runs/ (summary in its README.md).
Hard set, turbo reasoning off vs on (2026-09-29-hard/)
Four Python tasks with hidden tests (--tasks 4 --hard, loop at 5d11aca9).
| task | normal, 3 runs | simplicio reasoning off, 3 runs | simplicio reasoning on, 2 valid runs |
|---|---|---|---|
| 1 pricing (half-up rounding) | β β β | β β β | β β |
| 2 inventory bug fix | β β β | β β β | β β |
| 3 two-file refactor | β β β | β β β | β β |
| 4 duration parser | β β β | β β β | β β |
| passed | 11/12 | 12/12 | 7/8 |
| wall, mean | 112.6 s | 5.4 s | 18.1 s / 302.5 s |
| cost, mean | $0.0122 | $0.0027 | $0.0090 / $0.1621 |
| reasoning tokens, mean | 2,485 | 0 | 5,306 / 132,832 |
normaloff-2, task 1: half-up rounding was wrong (expected 1703 and 1712, got 1704 and 1713).- Reasoning-on
on-2, task 4: one call ran to 131,072 reasoning tokens in 294 s and returned no plan, soduration.pywas never written. on-3-http402/andon-3-rerun-http402/are invalid runs. The key ran out of credits (HTTP 402), so every call failed. They are kept only as a record.
Decision: turbo keeps reasoning off.
v3.44.1
simplicio-loop 3.44.1
The turbo path got faster and cheaper, and two 3.44.0 packaging defects are fixed.
- Turbo calls pin the arm's OpenRouter session (
x-session-id) and switch reasoning off ("reasoning": {"enabled": false}). - The wave no longer sleeps 3 s after the first call.
- Every call records
latency_sandprovider. bench/llm_ab/run.py --tasks 10 --independentmeasures the fan-out without the standard dependency chain.- The bench docs now state that in turbo mode the
simplicioarm is the loop engine calling OpenRouter directly, not OpenCode. simplicio-loop updaterepairs an install that still carries the standalonesimplicio-cli/simplicio-mapper.simplicio-py doctor --upgradeno longer reinstallssimplicio-mapperfrom PyPI.
Benchmark after the change (turbo, deepseek-v4.1-flash, two runs A/B + one independent run)
Every task passed in both arms and every command exited 0. Cost is the summed per-task cost (settled ledger when available, otherwise computed from tokens).
| tasks | run | normal (OpenCode) | simplicio (turbo engine) |
|---|---|---|---|
| 1 | A | 17.6 s Β· $0.00230 Β· cache 60% | 2.3 s Β· $0.00142 Β· cache 0% |
| 1 | B | 17.1 s Β· $0.00068 Β· cache 96% | 2.1 s Β· $0.00142 Β· cache 0% |
| 4 | A | 65.0 s Β· $0.01199 Β· cache 75% | 9.3 s Β· $0.00237 Β· cache 75% |
| 4 | B | 87.3 s Β· $0.00399 Β· cache 84% | 6.1 s Β· $0.00258 Β· cache 75% |
| 10 | A | 161.9 s Β· $0.02636 Β· cache 71% | 11.4 s Β· $0.00455 Β· cache 78% |
| 10 | B | 165.5 s Β· $0.01551 Β· cache 83% | 12.7 s Β· $0.00306 Β· cache 89% |
| 10 independent | C | 201.6 s Β· $0.01947 Β· cache 86% | 5.3 s Β· $0.00308 Β· cache 87% |
Simplicio arm against 3.44.0 (mean of two runs each):
| tasks | wall | cost | reasoning tokens |
|---|---|---|---|
| 1 | 15.5 s β 2.2 s (β86%) | $0.00280 β $0.00142 (β49%) | 1,103 β 0 |
| 4 | 17.0 s β 7.7 s (β55%) | $0.00507 β $0.00247 (β51%) | 820 β 0 |
| 10 | 54.6 s β 12.0 s (β78%) | $0.00467 β $0.00381 (β19%) | 166 β 0 |
- Per-call latency: 0.8β1.4 s, all on one provider (Together). Reasoning was 0 on every call.
- Independent set: the same ten pages without the chain ran in 5.3 s, against 11.4β12.7 s chained.
- One task: the loop is ~8Γ faster. On cost it wins only while the OpenCode prompt is not fully cached ($0.00142 vs $0.00230 at 60% cache; $0.00068 at 96% cache).
Results: bench/llm_ab/results/2026-09-29-790061e2-t{1,4,10,10-ind}.json. The B-run JSON files are attached to the release.