Skip to content

v0.6.0

Choose a tag to compare

@ericjuta ericjuta released this 11 Oct 18:53
· 25 commits to main since this release
v0.6.0
a774b2c

OptChat now has a fast second opinion. Four System One gates ask a small typed judge model, reached through OMP's judge role, to keep your standing instructions, pull relevant history into a turn before the model asks for it, tell the compressor what matters, and stop risky tool calls. All four are on by default, and each can be turned off on its own.

Signed tag v0.6.0 (commit a774b2c, with the planning kit in a56de50). CI is green on the pinned (18.9.1) and latest SDK cohorts, the plugin installed from the tag matches the repository byte for byte, and the installed-artifact smoke passes.

Upgrading: what changes for you

  • Behavior change: judge calls are on by default. With the defaults, each user message costs up to two judge requests (rules, then prefetch once the view has merged lines), each long compacted message one, and each screened tool call one, before it runs.
  • Privacy. Enabled gates send the text they judge to the judge role's provider: user messages, view lines, tool names and inputs, and record text for the value hint. Opt out of any gate you do not want.
  • Pick a judge. Set modelRoles.judge in OMP's config.yml (or assign it in /models), for example judge: openrouter/~typesafe/jev-latest. Tiny and chat models also work through OMP's prompted judge. With no credentialed candidate the gates do not run, and OptChat keeps working as before.
  • Opting out. --no-optchat-rules, --no-optchat-prefetch, --no-optchat-value-score, --no-optchat-tool-gate. An opt-out wins over the gate's own flag. With all four, OptChat resolves no judge, registers no tool hook, and its context and /optchat status are the same as 0.5.0. --no-optchat still gives plain OMP.

The gates

Gate What it does Threshold (default)
Standing rules Judges each user message for a lasting instruction ("from now on…", "never…") and stores it in ledger.jsonl beside the chat log, or replaces the rule it overrides. Active rules follow the view in a <rules> block every turn. /optchat rules lists them; /optchat rules remove r1 removes one. --optchat-rule-add (0.8)
Prefetch Scores the view's merged lines against the new message and opens the best ones into a <prefetch> block, so the model starts the turn with the relevant detail. Bounded to 5 s. --optchat-prefetch-k (8), --optchat-prefetch-min (0.5)
Value hint Rates each long message's importance and adds one fixed sentence to its compaction instruction. The sentence never carries record text or ids, and never changes which summaries are built or when. —
Tool gate Screens every tool call except read-only and OptChat's own tools for destructive, deleting, remote and shared effects. At or above the threshold it asks you in an interactive session, and blocks in print or JSON mode. A judge failure blocks. Bounded to 8 s. --optchat-tool-ask (0.3)

Details:

  • Rules keep only your rule. In a message with several sentences, each sentence is rated and only the ones that reach the threshold are stored. "From now on, answer in British English. Also run the tests." stores the first sentence only. Rule ids are never reused.
  • Frozen per turn. The rules and prefetch blocks are decided when the turn starts and reused unchanged across its tool loop, after the view, so the system prompt, tools and view stay cache-stable.
  • Fail open, except the tool gate. A judge failure, timeout or missing judge changes no rule and adds no prefetch block. /optchat status shows the gates, the judge model, the active rule count and the last failure.
  • Shutdown. Queued rule triage gets up to 1.5 s at session_shutdown, under the host's 2 s cap, then is abandoned without writing. In print mode a value hint still in flight is journaled as aborted; that is expected, and the message is retried on the next append.
  • Harnesses measure memory alone. The integration tests, smoke and evidence:recall runner opt their hosts out of the gates.

Verified

  • 1379 tests pass, including new end-to-end gate tests (tests/system1-e2e.test.ts: prefetch ordering, value-hint equality, tool-gate decline and safe-call paths) and a cache test showing the encoded Anthropic system prompt, tools and view text are unchanged when the rules and prefetch blocks follow the view.
  • A 12-turn conversation produced byte-identical context and status against 0.5.0 with every gate opted out.
  • Live, on OMP 18.9.1 with the plugin installed from this tag and the real judge: rm -rf build in print mode was blocked (build/keep survived, one optchat-tool-gate judgment journaled), and a two-sentence message stored only its rule sentence.

Not verified yet

The judge's accuracy beyond those runs, prefetch on a long live chat with a merged view, and the confirm dialog in an interactive session. These are samples, not quality or savings claims.

Also in this release

The OptChat+Jev planning kit now lives in the repository: AGENTS.md, the ExecPlan plans/optchat-jev.md, the design docs/design/optchat-jev.md, GLOSSARY.md, research and eval references under docs/, the Wayfinder draft under .scratch/, and project skills in .omp/skills/. Documentation only.

Install: omp plugin install 'git+https://github.com/ericjuta/omp-optchat.git#v0.6.0'. Full details in the README's "System One gates (Jev)" section and the CHANGELOG.