brief: row 65 adds a Console routing table for harness, model, thinking and fallback (mos-0840), and refuses thinking a harness can't apply

This commit is contained in:
2026-10-19 08:32:07 -05:00
parent b65e6d5fe9
commit d3af6db973
@@ -139,6 +139,15 @@ what is still missing: no execution fallback, a fallback route, thinking
applied on both harnesses, and the harness plug-in kind. The first
version of this section is blob 8872802c in git.
Mos's reading of Q83 option A (mos-0840, 2026-10-19) keeps this
amendment on one condition, which keeps A apart from the rejected option
C: the Console shows every instance's harness, model, thinking and
fallback together in one table, and the human edits them there. No view
does that at 54786df03. The Agent limits form edits only the model key,
and the Role instances table shows vars as raw JSON. So this row adds
that table. If Jason overrules Mos's reading, this section is redone
before review.
### Problem
At 54786df03:
@@ -196,6 +205,9 @@ At 54786df03:
`packages/plugins/harness/pi/` and `packages/plugins/harness/claude-code/`,
their tests, and the harness section of `packages/plugins/README.md`
- test business fixtures that set `harness`, `model` or `thinking`
- `packages/webui/src/public/bus.js` (the launch settings section only),
`packages/webui/src/reads.mjs` and `serve.mjs` if the settings read or
post needs a field, and the webui tests for them
- `agents/sage/work/queue-65/`
A change outside this list is named in the packet with its reason.
@@ -250,7 +262,24 @@ A change outside this list is named in the packet with its reason.
Code gets its effort or thinking setting. Probe the exact flag or
setting on the pinned versions first and record it in the packet and
`adapters/README.md`. The README line saying thinking isn't applied
goes.
goes. Probed 2026-10-19: Pi 0.85.1 takes `--thinking` with off,
minimal, low, medium, high, xhigh or max. Claude Code 2.1.302 takes
`--effort` with low, medium, high, xhigh or max, and has no off or
minimal. Each module exports the levels it applies. A launch or a
write that gives a harness a level it can't apply refuses with
`thinking-unsupported` and names the harness. Nothing is remapped.
Every live instance uses high or medium on claude-code.
- One table in the Console (mos-0840). The launch settings section gets a
routing table with one row per instance and these columns: harness,
model, thinking, and the fallback's harness, model and thinking. Each
cell is a select drawn from the switched-on harnesses, the
`launch.models` keys and the levels that harness applies. A fallback is
set as a whole or cleared as a whole. Save goes through the existing
settings post with its revision check, identity and receipt, and
replaces the "Role models" fieldset, which edited only the model key.
The server checks the same rules as the CLI: `harness-off`,
`thinking-unsupported`, unknown model, partial fallback. The Role
instances section stays as it is.
- No new table. The live file already sets the three vars on every
instance, and this row changes none of them. Every fallback starts
unset. The first table in the old version of this section is void.
@@ -261,7 +290,15 @@ A change outside this list is named in the packet with its reason.
preflight fails, an unstated one never is, and a primary that passes
never uses it; the manifest records the route and the reason; the
limit check sees the fallback's provider and model; thinking reaches
the Pi and Claude Code fake adapters as the recorded flag.
the Pi and Claude Code fake adapters as the recorded flag; a level the
harness can't apply refuses with `thinking-unsupported` at a write and
at launch.
- Console tests: the routing table lists every instance with its six
values; a browser test edits a harness, a model, a thinking level and
a fallback, saves, and reads each back from the file; a partial
fallback, a switched-off harness and an unsupported level each refuse
with the draft kept; a stale revision refuses as the other settings
saves do.
- Harness tests: a launch on a harness that isn't switched on refuses
with `harness-off`, primary or fallback, and so does a write that
sets one; a business file with harness vars and no `plugins.harness`
@@ -272,7 +309,9 @@ A change outside this list is named in the packet with its reason.
with the exceptions under Out of scope listed in the test. One mutant
per refusal (`no-route`, `harness-off` at launch, `harness-off` at a
write, a partial fallback, a fallback taken when the primary passes),
and one that puts a harness name back in core.
and one that puts a harness name back in core, plus one for
`thinking-unsupported` and one that drops the fallback columns from the
table.
- Gate suites: `node --test 'packages/plugins/tests/*.test.mjs'`,
`node --test 'packages/bus/tests/*.test.mjs'`,
`node --test 'packages/business/tests/*.test.mjs'`,
@@ -322,6 +361,10 @@ showing the module loaded, the route used, the provider and model
counted, and the thinking flag passed. The modules go live only through
a re-pin on Mos's go (decision 109).
The table changes `packages/webui/src/public/`, so its diff goes to Mos
under decision 123 before the in-review move. The landing report names
the view that meets mos-0840.
## Managed sessions run the unslop check on both harnesses
### Problem