Skip to content

Releases: simpletibr/simplicio-loop

v3.48.1

Choose a tag to compare

@wesleysimplicio wesleysimplicio released this 03 Oct 00:54
44a80ef

Changes in 3.48.1

  • The asd-ste100 skill 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

Choose a tag to compare

@wesleysimplicio wesleysimplicio released this 02 Oct 23:38
41261cf

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 changeset command checks each file against expected_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.py now accepts a previous_map whose files value is a dict. Before, it failed.

Tests

  • Mapper tests: 62 passed, 15 subtests.
  • Not run: hypothesis and build are 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

Choose a tag to compare

@wesleysimplicio wesleysimplicio released this 02 Oct 09:47
e6f0f33

[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) and simplicio-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 form simplicio-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 --help with exit code 0.
  • Mirrors & Headers: Mirrors regenerated (sync_plugin.py, sync_bundle.py, refresh_orientation_pins.py). Header lock synchronized with header-change: .claude/skills/simplicio-loop/SKILL.md note.
  • 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

Choose a tag to compare

@wesleysimplicio wesleysimplicio released this 02 Oct 08:44
afa5f61

[3.46.1] - 2026-10-02

  • Restore simplicio-loop 50 extension points: restored control_policy and prototype_judge modules, 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>" and simplicio-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-loop at root; no Fast, no Runtime, no MCP force).
  • Subprocess and Network Guard Isolation: fixed subprocess invocation under core_network_guard across apply.py, lane_verifiers.py, turbo_cli.py, and wave_worktree.py using asyncio.create_subprocess_exec / subprocess.run with system shell executable, preventing network-guard bypass errors.
  • Hermetic test robustness: made matplotlib import 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 --global

sha256:

  • simplicio_loop-3.46.1-py3-none-any.whl: 307944b8e012471260be9d3ed708a5a311a3f0dbeac1c44724da24b3b4a63ba8
  • simplicio_loop-3.46.1.tar.gz: daee6244ae19f2439ffb539750441be4b737c95f781117aa6ce254c1f2b84202

v3.46.0

Choose a tag to compare

@wesleysimplicio wesleysimplicio released this 29 Sep 17:31
6d176a2
  • Harness catalog: simplicio_loop/_catalog/harnesses.json (simplicio.harnesses/v1, shipped in the wheel) lists the 32 host surfaces of simpletibr/simplicio (pinned to plugins/simplicio/host-surfaces.json at a9c8a480) plus Aider, DeepSeek and OpenClaw: 35 hosts, 34 wired and 1 manual (DeepSeek is a model provider, not a host). Existing adapter directory names map onto upstream ids through aliases (claude to claude-code, qwen to qwen-code, orca to orca-dev, simplicio_agent to hermes).
  • scripts/install.sh and scripts/install.ps1 (both launch scripts/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.md for most, plus .github/copilot-instructions.md, .continue/rules/simplicio-loop.md and QWEN.md) and the .claude/skills copy. adapters/<host>/README.md exists for every entry and adapters/MATRIX.md has one row per entry with its install status. The runtime count (35) is derived from the catalog by scripts/canonical_manifest.py, which also fails when an adapters/ directory or a catalog entry has no counterpart.
  • Fix: a second install_lib.py run 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, the runtime-routing contracts, scripts/runtime_matrix.py and the Runtime bridge session benchmark. SIMPLICIO_EXECUTION_PROFILE only accepts standalone (or unset/auto), simplicio-loop stack lock --route only accepts standalone, simplicio-ecosystem-doctor reports one standalone profile over three components (loop, mapper, dev-cli), simplicio-loop preflight checks Mapper and Dev CLI only, and loop-execution receipts carry the simplicio-loop, simplicio-mapper, simplicio-dev-cli chain with no runtime component (contracts/ecosystem-doctor/v1 and contracts/loop-execution/v1 updated). The Hookwall effect boundary in runner.py (envelope, pre-decision, ledger, fenced idempotent effects) is unchanged; it now builds its request from a local _EffectRequest. simplicio-route no longer offers a govern route to Runtime capabilities and the capability catalog loses its four runtime.* 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-worker and simplicio-remote-worker-supervisor; simplicio-loop hub-drain-admit and simplicio-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; the remote-worker/v2 and hub-agent contracts; SIMPLICIO_REMOTE_QUEUE_*. simplicio_loop/remote_queue.py keeps Lease, QueueConflict and QueueUnavailable, which the Mapper-backed queue uses. simplicio-loop hub-drain-plan (read-only GitHub drain intake), simplicio-process-supervisor and 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; and canonical_plan, verified_delivery, execution_board, model_router, model_registry, platform_capabilities, which only the removed subsystems used. mapper_receipt, budget and 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.py reads the kept 2026-09-29-790061e2-t10-ind.json run.
  • 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_ab results before the 3.44 series and the stale REPORT-ablation*, REPORT-t2* and REPORT-t1/t4-batch renders, the bench/*-baseline.json and bench/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_ab keeps REPORT.md/.html/.pdf, STANDARD.md, the 146a6931 and 790061e2 results, 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 under previous_baseline), scripts/repository_budget_baseline.json, contracts/headers.lock.json, the docs/LLM_ORIENTATION.toon pins, plugin/ and simplicio_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 /r on macOS) and, in Mapper, test_background_index_reports_pid_and_log and test_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

Choose a tag to compare

@wesleysimplicio wesleysimplicio released this 29 Sep 16:58
e68d609
  • 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-loop took 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, cat and read of the tree and the tests; --help; a scratchpad and a journal written by hand; the plan written to plan.json as a separate tool call; the model's own test run; a re-read of the result. The model also used --provider openrouter on 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, is failed with turbo_plan_missing instead of a hang; --apply FILE is the same code path. The needs_plan request 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) and apply. 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 (no request.json, no plan.json cleanup).
  • The skill body (frontmatter unchanged), its SIMPLICIO-LLM-ORIENTATION block, docs/LLM_MAX_SPEED_ORIENTATION.md, llms.txt, the AGENTS.md quick flow, the host rules, docs/ECOSYSTEM_LLM_GUIDE.md, the OpenCode adapter README, references/full-flow.md and the orient command card say it plainly: exactly two commands; do not explore, list or read files; do not run tests yourself (--verify does); no plan file, scratchpad, journal or turn header for a task run. The loop's own Contract, State and Drive sections, Bounded delivery and the references/full-flow.md pointer 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 --provider or OPENROUTER_API_KEY any more; turbo --help and docs/CLI_COMMANDS.md describe --provider openrouter as headless automation only that agents invoking the skill must not use, and the engine notes moved to bench/llm_ab/STANDARD.md. SKILL.md is 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 called state_dir.ensure_state_dir, so not even the <git-dir>/info/exclude line was written, while Mapper, the survey marker and dev-cli all write under that directory. ensure_state_dir now also appends .simplicio-loop/ to the repository's .gitignore when 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. turbo calls 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 --repo creates 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_AFTER defaults 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 as create_target_exists, in 5 of 15 repair attempts, so the repair never got a chance. Only on that path, an operation with an empty find for an existing file becomes a whole-file replacement (find is 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.py reads the heredoc body of simplicio-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 plain simplicio-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.py passes 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 of simplicio-loop and simplicio-tasks names 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

Choose a tag to compare

@wesleysimplicio wesleysimplicio released this 29 Sep 14:46
b3aa7df

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_KEY was blocked. simplicio-loop turbo now 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 and simplicio-dev-cli makes every edit. Step 1, simplicio-loop turbo --repo R --task T [--verify V], surveys with Mapper and prints simplicio.turbo-request/v1 with status: "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, prompt and the exact apply command; 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 --verify and prints simplicio.turbo-run/v1 with mode: "host", status ok or failed, applied, failed (each with the dev-cli reason and an excerpt of the file around a find that did not match) and verify. A missing or malformed plan is failed with turbo_plan_missing or turbo_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 needs OPENROUTER_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 runs turbo --repo . --task "<task>". Requests for all issues, tickets or tarefas still go to the GitHub drain intake, and bare simplicio-loop is 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 the orient command 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 on status: "ok" plus a passing verify.
  • hooks/action_gate.py lets the host write .simplicio-loop/turbo/plan.json under SIMPLICIO_LOOP_STRICT and still blocks every other hand edit.
  • Turbo provider mode: one pooled httpx connection kept alive (about 50 ms per call, measured); a hedged duplicate request on session <id>-hedge after SIMPLICIO_TURBO_HEDGE_AFTER seconds (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=0 disables it; 3,294 map tokens down to about 340, measured on fixture_hard); and one repair call with the test output after a failed --verify. Call records carry hedged and warm, and the benchmark counts hedge losers in the arm's tokens.
  • python3 scripts/check.py runs only the tests a change can affect by default. scripts/impact_tests.py diffs the working tree against --base (default origin/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 changed conftest.py reaches the tests below it. --full runs every test file and --base REF changes 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 unused hub_queue_agent_client compatibility shim are deleted, and so are the 11 tests in test_source_contract_v1.py that covered the deleted source_fan_in and source_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 --help run 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_PERCENT profile (new admitting_capacity fixture) and put the suite's interpreter first on PATH for the verify lanes. The quality provider's monitor honors the same profile through local_capacity.physical_monitor_kwargs, which moved out of runner.py.

v3.45.0

Choose a tag to compare

@wesleysimplicio wesleysimplicio released this 29 Sep 12:56
ceefd0c

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, and simplicio-dev-cli applies it. Files named in the task text become the target and context, and tasks on the same file stay in order. It prints one simplicio.turbo-run/v1 JSON 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 turbo by default. The host no longer writes tasks.md, edit plans or simplicio-dev-cli edit --plan operations. SKILL.md and 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 is status: "ok" and, when --verify was given, verify.passed: true.
  • simplicio_loop/turbo_provider.py is the model client for both the product and the benchmark's turbo arm, so the benchmark measures the code that ships. SIMPLICIO_TURBO_MODEL overrides the model.
  • OPENROUTER_API_KEY is required. Without it the command prints status: blocked with reason_code: turbo_provider_key_missing and exits 2. There is no fallback to hand edits.
  • run_turbo reports per-lane outcomes (outcomes: tasks, applied, reason) and applied_all. A plan that dev-cli rejects twice is a failed result that names the dev-cli reason.
  • orient points at turbo. route["next"] is the simplicio-loop turbo command (orient --brief carries every task and --verify in one step), the command card and the llm_orientation and hot_path data of economy status name turbo, and no prepare, tick, wave or edit-plan guidance is left in them.
  • Each simplicio-loop turbo invocation 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.md is 1571 tokens (o200k_base), down from 2118 in 3.44.2, and the token-budget baseline is regenerated. Removed the unused delivery_execute_verb and DELIVERY_EXECUTE_RULE.
  • scripts/check.py no longer crashes with KeyError: 'contract_headers' after claims-audit: the phase had no timeout entry in PHASE_TIMEOUT_SECONDS, so the full local gate never reached the test phase. A test now requires every phase check.py names 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)

PR #1376, issue #1375.

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

Choose a tag to compare

@wesleysimplicio wesleysimplicio released this 29 Sep 11:43
ca6c1d7

simplicio-loop 3.44.2

  • bench/llm_ab/run.py --tasks 4 --hard adds 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-reasoning keeps the model's reasoning on for the turbo calls, so on and off can be compared. Turbo also sends a task's context files 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 summary README.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
  • normal off-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, so duration.py was never written.
  • on-3-http402/ and on-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

Choose a tag to compare

@wesleysimplicio wesleysimplicio released this 29 Sep 10:12
c021887

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_s and provider.
  • bench/llm_ab/run.py --tasks 10 --independent measures the fan-out without the standard dependency chain.
  • The bench docs now state that in turbo mode the simplicio arm is the loop engine calling OpenRouter directly, not OpenCode.
  • simplicio-loop update repairs an install that still carries the standalone simplicio-cli / simplicio-mapper.
  • simplicio-py doctor --upgrade no longer reinstalls simplicio-mapper from PyPI.

PR #1372, issue #1371.

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.