Repository navigation
v0.6.0
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.judgein OMP'sconfig.yml(or assign it in/models), for examplejudge: 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 statusare the same as 0.5.0.--no-optchatstill 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 statusshows 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 asaborted; that is expected, and the message is retried on the next append. - Harnesses measure memory alone. The integration tests, smoke and
evidence:recallrunner 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 buildin print mode was blocked (build/keepsurvived, oneoptchat-tool-gatejudgment 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.