Releases: Agent-Pattern-Labs/iso
Release list
iso-trace-v0.3.0
Full Changelog: iso-harness-v0.6.1...iso-trace-v0.3.0
iso-eval-v0.3.0
Full Changelog: iso-harness-v0.6.1...iso-eval-v0.3.0
@razroo/iso v0.2.5
Chore
- Bumps the
@razroo/isowrapper's pinned@razroo/iso-routedep from^0.3.0to^0.5.0.
This is required so consumers whose models.yaml does extends: openrouter-free can run iso build without hitting a "preset not found" error from the nested node_modules/@razroo/iso/node_modules/@razroo/iso-route copy. No user-facing behavior change beyond the new preset being reachable through the wrapper.
@razroo/iso-trace v0.2.0
`export-fixture` — lift a session into an iso-eval regression fixture
Closes INTEGRATIONS.md #4.
New command:
```bash
iso-trace export-fixture --out fixtures/my-task/
iso-trace export-fixture --source path/to/sample.jsonl --out fixtures/my-task/
```
Produces an iso-eval-compatible directory:
```
fixtures/my-task/
├── task.md — first user message from the session, verbatim
├── workspace/ — empty placeholders for every file the agent read
└── checks.yml — file_exists per write, file_exists + file_contains
(value: REPLACE_ME) per edit, wrapped in a
`suite: fixture- / runner: fake` scaffold
```
The output is a seed, not a replay. Maintainers edit `checks.yml`
(replace REPLACE_ME placeholders) and fill in any baseline workspace
files, then drop the fixture into an `iso-eval` suite. Since the
default placeholder would fail `file_contains`, silent success-by-
default is avoided.
Library export `exportFixture(session, { out })` for programmatic
callers (batch fixture generation across a transcript root, etc).
Seven new tests cover the fixture layout, message extraction, workspace
seeding, absolute-path fallthrough, and no-op sessions.
@razroo/iso-route v0.5.1 — retune openrouter-free after contention data
Real-world usage showed qwen/qwen3-coder:free is the most contended free model on OpenRouter's shared provider pool (Venice, Chutes rate-limit frequently). We keep it as the orchestrator default (still the strongest free agentic model) but spread subagent load across less-contended providers.
Changes to the openrouter-free preset:
fast:minimax/minimax-m2.5:free→z-ai/glm-4.5-air:free(more reliable tool-call schema compliance on Geometra flows)minimal:google/gemma-4-26b-a4b-it:free→openai/gpt-oss-20b:free(less contended, better structured-output adherence)quality:openai/gpt-oss-120b:free→qwen/qwen3-next-80b-a3b-instruct:free(actually the best free writing model; matches what JobForge was already overriding to)
No breaking changes. Existing consumers get better defaults on next install.
@razroo/iso-route v0.5.0 — openrouter-free preset + catalog command
Minor
-
New
openrouter-freepreset. Keeps thestandardClaude Code / Codex picks, but routes OpenCode through explicit free OpenRouter model IDs:default:qwen/qwen3-coder:freequality:openai/gpt-oss-120b:freefast:minimax/minimax-m2.5:freeminimal:google/gemma-4-26b-a4b-it:free
Scaffold with
iso-route init --preset openrouter-freeor extend with a one-linerextends: openrouter-free. -
New advisory
iso-route catalog openroutercommand. Fetches the live OpenRouter/api/v1/modelsresponse, filters to free + tool-capable models by default, and ranks a shortlist for OpenCode with suggested picks per role. Advisory only —iso-route buildstill does not validate model IDs at compile time.
listPresets() now returns ["standard", "budget", "openrouter-free"].
@razroo/iso-route v0.4.0
New `budget` preset + README docs for the preset system
Cost-optimized variant of `standard` that pushes every tier one step
cheaper:
| tier | standard | budget |
|---|---|---|
| default | sonnet | haiku |
| fast | haiku | haiku (unchanged) |
| quality | opus + high reas. | sonnet |
| minimal | haiku | haiku (unchanged) |
Codex picks drop from `gpt-5.4` to `gpt-5.4-mini` / `gpt-5.4-nano`;
OpenCode uses free-tier and pay-once models (`minimax-m2.5-free`,
`big-pickle`).
Scaffold it with:
```bash
iso-route init --preset budget
```
Users override only what they want to upgrade:
```yaml
extends: budget
roles:
quality:
targets:
claude:
provider: anthropic
model: claude-opus-4-7 # upgrade quality back to opus
```
Docs
The package README now documents the preset system end-to-end:
`extends:` mechanic (deep merge, user-wins, atomic per-harness
targets), `iso-route init --preset `, and per-harness overrides
via `targets.`. These features shipped in 0.2.0 and 0.3.0
but were previously undocumented at the package level.
Two new tests cover the budget shape and selective-override semantics.
`listPresets()` now returns `["standard", "budget"]`.
@razroo/iso-harness v0.6.1 — opencodeModelFallback file emit
Optional top-level opencodeModelFallback in iso/config.json is now written to .opencode/opencode-model-fallback.json during the OpenCode emit, so @razroo/opencode-model-fallback can load global fallback_models, retryable_error_patterns (e.g. Venice / Diem balance copy), and cooldown settings from the same iso/ source tree as everything else — no hand-maintained generated file outside the harness pipeline.
See packages/iso-harness/README.md for the full example.
@razroo/iso-eval v0.2.0
`agentmd_adherence` check type
Closes INTEGRATIONS.md #3.
New check type scores per-rule adherence of an agentmd-dialect prompt
against a fixture file:
```yaml
- type: agentmd_adherence
promptFile: ../agent.md
fixtures: ../fixtures.yml
ruleId: H3 # optional — filter to one rule
minPassRate: 0.9
via: claude-code # optional (api | claude-code | fake)
model: claude-haiku-4-5 # optional
timeoutMs: 180000 # optional
```
Shells out to `agentmd test --format json`, computes the pass rate
for the named rule (or overall when `ruleId` is omitted), and fails
the check when the rate is below `minPassRate`. The default spawn
resolves `@razroo/agentmd`'s CLI via Node module resolution so PATH
setup doesn't matter. Tests can inject a fake `AgentmdSpawnFn` via
the library `RunOptions` so CI runs offline without an API key.
New runtime dep
Adds `@razroo/agentmd` as a dependency so installing iso-eval also
installs the agentmd CLI — no separate install step needed.
Eight new tests cover happy-path, rule filtering, missing promptFile,
non-zero exit, invalid JSON, empty cases, unknown rule, and flag
forwarding.
isolint v1.4.1
Resolve cross-references against the repo root when linting a subdirectory
Running isolint lint modes/ rooted both the repo-file scan and ctx.file at the lint target, not the actual repo root. Two visible failure modes:
stale-link-referenceflagged every[..](../X.md)link pointing to a project-root file, because those files were never added torepo_files.- Every rule that gates on
ctx.file.match(/modes\/|prompts\/|skills\//)silently skipped, becausectx.filewas target-relative (README.md) instead of repo-relative (modes/README.md).
Fix: discoverRepoFiles now scans from the git root (or process.cwd() outside a git checkout); discovered file rel_path values are re-based to the repo root before reaching rules. Linting the project root (isolint lint .) is byte-identical to before.
Adds a new CLI-spawn regression test covering the lint modes/ case against a temp git repo.