Repository navigation
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