You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Solver toggle does not actually switch — backend half stranded in stale PR #14 #78
solver-mode.ts and the switch wizard are absent. So the toggle renders but there is no server-side solver-mode contract behind it — PR #14 was the half that makes it do the real switch.
What PR #14 carried that is still missing (+286/-6):
packages/opencode/src/server/amicode/solver-mode.ts — the contract
route registration in httpapi/server.ts
packages/ui/src/amicode/solver-switch-wizard.tsx — the wizard
wiring in packages/app/src/pages/home.tsx and solver-toggle.tsx
Note home.tsx has changed substantially under the branch, so expect conflicts on any rebase — a fresh implementation against current local/amicode is likely cheaper.
→ piccolo: POST /amicode/solver-mode (piccolo-only) → requestPiccoloFlip(), which revokes the issimo entitlement and writes the mode file in one operation. The extension watcher re-preps the session config and restarts the server.
That also closes the split-brain this issue implied but didn't name: a piccolo mode file sitting beside a granted issimo entitlement, which reconcileSolverMode (amicode#259) heals straight back to hp.
Two deliberate deltas from the checklist above:
No standalone server/amicode/solver-mode.ts. The contract landed in connections.ts instead, so the switching writers stay in one file — the single-writer rule ADR 0001 asks for.
No solver-switch-wizard.tsx. Not deferred so much as superseded: connection-banner.tsx already narrates the restart window ("Server connection dropped — reconnecting…" → "Server reconnected", self-healing), and the extension posts a completion toast. The wizard also polled GET /amicode/solver-mode, which does not exist, and its hp stages assume an hp flip from a button — which ADR 0001 now forbids.
The remaining gap is cosmetic: during a deliberate switch the banner reads as a fault rather than an upgrade. Tracked separately if we decide the demo needs it.
Activity
feat(solver): release the HP tier — the piccolo half of the mode cont…
Merge pull request #221 from harmoniqs/kate/solver-mode-piccolo-flip
kateebonner commentedon Aug 21, 2026
Resolved by #221 (
d0b2a1conlocal/amicode).The toggle now does a real switch in both directions:
requestHpFlip, Provider permissions: enforcement hook in permission system #167).POST /amicode/solver-mode(piccolo-only) →requestPiccoloFlip(), which revokes theissimoentitlement and writes the mode file in one operation. The extension watcher re-preps the session config and restarts the server.That also closes the split-brain this issue implied but didn't name: a
piccolomode file sitting beside a grantedissimoentitlement, whichreconcileSolverMode(amicode#259) heals straight back to hp.Two deliberate deltas from the checklist above:
server/amicode/solver-mode.ts. The contract landed inconnections.tsinstead, so theswitchingwriters stay in one file — the single-writer rule ADR 0001 asks for.solver-switch-wizard.tsx. Not deferred so much as superseded:connection-banner.tsxalready narrates the restart window ("Server connection dropped — reconnecting…" → "Server reconnected", self-healing), and the extension posts a completion toast. The wizard also polledGET /amicode/solver-mode, which does not exist, and its hp stages assume an hp flip from a button — which ADR 0001 now forbids.The remaining gap is cosmetic: during a deliberate switch the banner reads as a fault rather than an upgrade. Tracked separately if we decide the demo needs it.