Commit Graph
133 Commits
Author SHA1 Message Date
ciregenzandClaude Fable 5.1 9bdd45f791 [eric] policy: a block on Opus 5 finishes the ask on Opus 4.8 on the same lane before touching the user's key, one failover per ask; fleet 14 days: 78 blocks on opus-5, 0 on opus-4-8
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 18:32:56 -07:00
ciregenzandClaude Fable 5.1 5d5a58fc29 [eric] pro: a pool with nothing to serve with ends the turn with a card that names OpenSwarm Pro and the way around it, instead of parking the chat 21 minutes as a transient; the probe reports it too (ENG-462)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 10:23:59 -07:00
ciregenzandClaude Fable 5.1 053cac99bb [eric] health: a chat resumes on a healed login only if it died in this run of the app; the fault kit takes a fire budget so a drill can watch a lane come back; the exp.9 notes carry the week
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-06 21:01:51 -07:00
ciregenzandClaude Fable 5.1 a6ab863724 [eric] health: a dead-login verdict owns its second look; the lane answering again closes the pill and resumes its chats, capped at two resumes per chat so a flapping login cannot loop
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-06 20:58:03 -07:00
ciregenzandClaude Fable 5.1 da56b2cd1a [eric] auth: a dead login heals itself: renewed before expiry, a turn's 401 advances the verdict, the retry pushes the pill, a reconnect resumes the chats; preflight never restarts the router
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-06 15:55:26 -07:00
ciregenzandClaude Fable 5.1 377c5f3a69 [eric] agents: a CLI that died between turns is respawned and resumed instead of carded on every send; a crash signal is named on the exhausted card
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C9zwUaHucUgrdxvK8FvjYT
2026-09-03 17:45:29 -07:00
ciregenzandClaude Fable 5.1 5b7c8ee2ba [eric] streaming: a finished reply no longer hands a still-thinking bubble to the next socket; the live thought is dropped when the answer starts and at every turn end, and a snapshot is only built for a turn in flight
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C9zwUaHucUgrdxvK8FvjYT
2026-09-03 16:14:53 -07:00
ciregenzandClaude Fable 5.1 48886e4746 [eric] providers: an Anthropic key that spans workspaces sends anthropic-workspace-id on every lane, with a Workspace ID field beside the key and a card that names the fix
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C9zwUaHucUgrdxvK8FvjYT
2026-09-03 12:44:30 -07:00
ciregenzandClaude Fable 5.1 b43faecdac [eric] chat: a streamed reply lands whole instead of re-typing from zero, the action bar waits for a reveal to settle, and a socket that connects mid-thought gets the thinking so far
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C9zwUaHucUgrdxvK8FvjYT
2026-09-03 10:40:05 -07:00
ciregenzandClaude Fable 5.1 2afbdc5b05 [eric] streaming: a session socket that connects mid-reply is handed the text so far after its resume ack, instead of a static Thinking then the whole reply at once
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C9zwUaHucUgrdxvK8FvjYT
2026-09-03 00:18:22 -07:00
ciregenzandClaude Fable 5.1 8acfe2c15e [eric] frontend: the self-heal pill's flag lives beside the sessions, so a server refresh cannot wipe it before it shows
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012G8kyALnPjsA7aJFmMBq3R
2026-09-02 01:41:31 -07:00
ciregenzandClaude Fable 5.1 5cc9754709 [eric] agents: OSW_FAULT=unclassified_error makes the generic error card drillable, pinned as owned by no classifier
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012G8kyALnPjsA7aJFmMBq3R
2026-09-02 00:06:45 -07:00
ciregenzandClaude Fable 5.1 f38016efb2 [eric] agents: self-heals stop being invisible: a stuck tool's restart and the CLI's own compaction reach the card, any signal death resumes, previews never quote the harness, spent retries are not "Done", one copy of the token-rotation notice
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012G8kyALnPjsA7aJFmMBq3R
2026-09-01 23:52:59 -07:00
ciregenzandClaude Fable 5.1 d2f1523004 [eric] agents: a SIGKILLed CLI (-9) is an external kill too, and the shutdown line is stamped before the shutdown stops the turn
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012G8kyALnPjsA7aJFmMBq3R
2026-09-01 20:38:56 -07:00
ciregenzandClaude Fable 5.1 1ca4d0c5a3 [eric] agents: a CLI killed from outside resumes on a fresh process once, instead of carding the turn and forcing the recap rebuild
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012G8kyALnPjsA7aJFmMBq3R
2026-09-01 19:49:29 -07:00
ciregenz b9a63b3b80 [eric] windows: the antivirus exclusion is a real Settings toggle now, and the quarantine card offers it 2026-08-31 15:54:13 -07:00
ciregenz b9e8c8633f [eric] agents: OSW_FAULT=stale_tool_schema makes the ENG-394 respawn drillable, byte-real truncation included 2026-08-31 12:35:26 -07:00
ciregenz 0a3109a930 [eric] agents: the deferred-tool 400 classifier survives the router's mid-word truncation, and the respawn waits out the router warm-up 2026-08-31 11:53:21 -07:00
ciregenz b40d09bad3 [eric] agents: the deferred-tool 400 (ENG-394) earns one CLI respawn instead of carding out on top of the turn's work 2026-08-31 11:03:06 -07:00
ciregenzandClaude Opus 5 debc9eb629 [eric] agents: a quarantined runtime is put back from the installer package instead of asked about (ENG-422)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U6zrBsUCNzpMBnov3rTVYV
2026-08-30 10:26:52 -07:00
ciregenzandClaude Opus 5 b133ef7a1a [eric] agents: a pruned recap says it is partial, and the prune that reclaimed the history is counted
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U6zrBsUCNzpMBnov3rTVYV
2026-08-29 11:17:38 -07:00
ciregenzandClaude Opus 5 4fd0c1a10e [eric] canvas: Close says it dismissed the card, because the executor's closed_at cannot mean that (ENG-421)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U6zrBsUCNzpMBnov3rTVYV
2026-08-28 19:38:37 -07:00
ciregenzandClaude Opus 5 785b841763 [eric] agents: a turn that GREW past the trigger breaks, so the valve is not sat out by a big first reading (ENG-418)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U6zrBsUCNzpMBnov3rTVYV
2026-08-28 01:19:58 -07:00
ciregenz b1ccba5aec [eric] agents: OSW_FAULT=dead_lane makes the preflight decision drillable without touching a real credential 2026-08-27 12:50:50 -07:00
ciregenz 492a28a2b4 [eric] agents: a policy-block failover borrows the user's API key for one ask, not forever (ENG-383) 2026-08-26 13:14:41 -07:00
ciregenz 5617e8b19e [eric] agents: the CLI's prose policy refusal is the provider talking, not the agent's answer (ENG-411) 2026-08-26 12:52:03 -07:00
ciregenzandClaude Opus 5 264f2ef6de [eric] agents: the nudge ladder's last rung is bounded by construction, and can never widen a ratchet (ENG-399)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018foyDoK19jjbYdudfzQVkZ
2026-08-24 10:54:05 -07:00
ciregenzandClaude Opus 5 482e94ecb2 [eric] tests: one shared logger capture, and the shaper's names follow the p_ convention
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018foyDoK19jjbYdudfzQVkZ
2026-08-24 01:06:56 -07:00
ciregenzandClaude Opus 5 3e0e1f67c6 [eric] agents: a malformed request is never transient, whatever reset hint rides along (ENG-395)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018foyDoK19jjbYdudfzQVkZ
2026-08-24 00:48:51 -07:00
ciregenzandClaude Opus 5 cf5093d24f [eric] agents: a process that will inject failures says so, and names a typo that armed nothing
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018foyDoK19jjbYdudfzQVkZ
2026-08-23 21:12:06 -07:00
ciregenzandClaude Opus 5 dc807e09ef [eric] agents: a drilled fault must be the one the real classifier catches, and fire once (ENG-382)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018foyDoK19jjbYdudfzQVkZ
2026-08-23 21:09:23 -07:00
ciregenz b047e31abd [eric] agents: a refusal guard may not eat a real answer; wording alone never destroys content (ENG-387) 2026-08-23 15:27:36 -07:00
ciregenz d4bfc122f0 [eric] agents: OSW_FAULT fires real provider failures on demand so the guards get drilled, not hoped for 2026-08-23 11:31:58 -07:00
ciregenz 2c8ae9a3b8 [eric] agents: extraction-shaped handoffs and relayed refusals never reach the subscription lane (ENG-387) 2026-08-21 11:51:14 -07:00
ciregenzandClaude Fable 5 42e4f9116b [eric] agents: transport heals respawn the CLI on the same transcript instead of rebuilding it (ENG-382)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01En8dRGsJPLrJCQBEkTH4Mp
2026-08-21 00:20:04 -07:00
ciregenzandClaude Fable 5 295a7b52e2 [eric] agents: a policy block ratchets the recap down instead of bricking the chat (ENG-358)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01En8dRGsJPLrJCQBEkTH4Mp
2026-08-20 23:44:44 -07:00
ciregenzandClaude Fable 5 1f1ce09d7a [eric] agents: 401 needs auth context; answers can be blocks; quits forgiven (ENG-364/365)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01En8dRGsJPLrJCQBEkTH4Mp
2026-08-20 22:22:49 -07:00
ciregenz 3235324122 [eric] agents: a user's Stop or Close is final; no watchdog resend, disk reload, read, or late-booting child revives the card 2026-08-20 19:39:33 -07:00
ciregenz 10bca6ba17 Revert "[eric] browser: a card the renderer parked is slow, not dead; parallel agents no longer ghost"
This reverts commit 6ed6206c7b.
2026-08-20 16:13:50 -07:00
ciregenzandClaude Opus 5 6ed6206c7b [eric] browser: a card the renderer parked is slow, not dead; parallel agents no longer ghost
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014wtspwSFzZmjCx9UNPAorQ
2026-08-20 15:50:55 -07:00
ciregenzandClaude Opus 5 ea04b1da11 [eric] agents: one provider verdict per ask, and a spent plan is never sold as a short wait
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014wtspwSFzZmjCx9UNPAorQ
2026-08-20 15:08:12 -07:00
ciregenzandClaude Opus 5 e5e8da37ac [eric] agents: a provider's error never reaches the user as the agent's own words
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014wtspwSFzZmjCx9UNPAorQ
2026-08-20 12:22:34 -07:00
ciregenzandClaude Opus 5 0f2543db65 [eric] agents: a finished turn always leaves the user something to read
Every silent-stop fix so far was a detector for a shape somebody had already
found in the field, which is why the class kept coming back wearing a new hat.
turn_spoke.py moves the question down a tier: at the one exit every terminal
path passes through, ask whether anything readable appeared since the user last
spoke, and if not, say the honest line. Cause no longer has to be enumerated for
the user to be answered.

proactive_prune.py is the hermes trigger we were missing. Their own tests say
our bug out loud: on a large window, a percentage-of-window compaction check
almost never fires, so aged tool output rides in history and is re-sent verbatim
every turn. Measured here, our shaping cut 0.0% at every session size; with a
fixed 60K-token cost trigger it cuts 88% at 12 turns, 93% at 30, 94% at 60. The
prompt-cache contract is load-bearing rather than optional, because our prune is
a rebuild: it commits only when it reclaims enough to pay for the busted prefix,
then disarms until history has regrown a full runway.

Also: lane preflight now treats only 401/403 as a dead credential, since
testStatus=="unavailable" conflated a throttled lane with a revoked one and told
users to reconnect a merely rate-limited Gemini; and awaiting_reconnect is
cleared when the retry budget is spent, so a stale flag can no longer muzzle the
floor and end an ask in total silence.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014wtspwSFzZmjCx9UNPAorQ
2026-08-20 11:36:34 -07:00
ciregenzandClaude Opus 5 9a7570092f [eric] agents: never spend a turn on a lane the router gave up on, and stop our own retries stacking cards
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014wtspwSFzZmjCx9UNPAorQ
2026-08-20 09:20:46 -07:00
ciregenzandClaude Opus 5 58e376496e [eric] agents: an outage parks the turn and resumes when the provider answers; OAuth connects survive a backend restart
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014wtspwSFzZmjCx9UNPAorQ
2026-08-20 08:39:41 -07:00
ciregenzandClaude Opus 5 d5934b1da1 [eric] agents: no turn ends silent, and a codex 401 waits out the rotation window
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014wtspwSFzZmjCx9UNPAorQ
2026-08-20 07:21:00 -07:00
ciregenz 4be2f10d02 [eric] agents: every sub lane self-heals a mid-run token expiry before any card; codex retries wait out the rotation window instead of burning the one shot inside it 2026-08-19 17:24:23 -07:00
ciregenz 7e3a98e315 [eric] agents: a turn cut off by a dirty exit auto-resumes at boot, gated by a consecutive-crash breaker; a clean Cmd+Q keeps the manual chip (hermes #30719 pairing) 2026-08-19 15:36:01 -07:00
ciregenz 108287eda4 [eric] agents: provider content-policy blocks are terminal (no snag flicker), recap-bearing sessions get ONE recap-free retry, and the recap reads first-person instead of a User:/Assistant: transcript that trips distillation filters (Alex's bricked chats) 2026-08-19 14:07:29 -07:00
ciregenz a66b0b0eaa [eric] agents: a REPEAT silent quit compacts from a 40% floor; Haik's opus-5 quits at ~149K, under the 180K trigger, so the band fix alone missed his storms (ENG-354) 2026-08-19 11:32:29 -07:00