ciregenz and Claude Fable 5.1
51bd1f990a
[eric] ci: a test process never spawns a router (OSW_NEVER_SPAWN_ROUTER), the boot hook's sync npm install hung the suite on every router-less runner; the slot-size test locates its source on Windows (ENG-486)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-06 20:58:03 -07:00
ciregenz and Claude Fable 5.1
e188b704f8
[eric] oauth: the refresh loop POSTs the router's test route (a GET was 405 and read as unknown, so it renewed nothing), reads the router's live rows instead of a stale db.json, and logs any answer it cannot read
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-06 20:58:03 -07:00
ciregenz and Claude 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
ciregenz and Claude 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
ciregenz and Claude Fable 5.1
05e8310691
[eric] health: a mid-refresh 401 that outlives the token rotation window is a dead login; recheck at 240s and push the pill
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-05 09:28:59 -07:00
ciregenz and Claude Fable 5.1
3054024285
[eric] settings: the agent and the Help agent read connected subscriptions from the router; three dead token fields told a subscribed user nothing was connected
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-04 13:22:26 -07:00
ciregenz and Claude Fable 5.1
e6f84c3412
[eric] lint: drop the unused imports and leading-underscore names the batch left in tests and two modules
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_012G8kyALnPjsA7aJFmMBq3R
2026-09-02 08:30:13 -07:00
ciregenz and Claude Fable 5.1
81811d3c3e
[eric] router: the history pruner announces itself at boot and the backend warns when it is missing, so it can never disable itself in silence
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01PNA9xhjw5SkfuB2tJ5KwCj
2026-09-01 15:19:21 -07:00
ciregenz
fb34f7f37b
[eric] router: a deliberate stop() clears the is_running positive cache, so a bounce cannot claim success over a dead router
2026-08-31 11:03:06 -07:00
ciregenz
54ab6863ab
[eric] tls: the Node children get the OS roots, so a proxy or endpoint-tool root no longer kills every model call (ENG-408)
2026-08-27 14:01:30 -07:00
ciregenz
16f87d8bc9
[eric] router: a stale-router kill is scoped to our own port and never fires under test (ENG-393)
2026-08-26 13:25:48 -07:00
ciregenz
3def185bf1
[eric] lint: tonight's new tests go clean under p-private and ruff; the bounce module's router alias goes public since tests reach it
2026-08-16 08:57:25 -07:00
ciregenz
b9afcae6ac
[eric] router: a completed subscription connect bounces 9Router so its dispatch state rebuilds; new subs no longer dead until app restart (ENG-315)
2026-08-16 08:11:09 -07:00
ciregenz
c6a0c1f34b
[eric] telemetry: silent-recovery rows carry journey context, and packaged builds stop shipping test files
2026-08-07 06:35:20 -07:00
ciregenz
dbea61b109
[eric] telemetry: the last two envelope-less diagnostics (pressure valve, router start) now carry context too
2026-08-07 01:08:00 -07:00
ciregenz
565009f0c5
[eric] telemetry: auth and overflow errors carry flight envelopes, router revives hit the near-miss ledger
2026-08-06 22:42:48 -07:00
ciregenz
d1d6e0e0e5
[eric] health: one banner line per provider, a 401 naming its own reset window is mid-refresh not dead
2026-08-06 20:58:42 -07:00
ciregenz
9eef9d6a1d
[eric] agents: a context overflow now compacts and retries once instead of dying, and never fakes a completed
2026-08-03 15:24:11 -07:00
ciregenz
50d6010862
[eric] merge eric/browser-merged: browser hangs, wrong-surface sends, and measured latency
2026-08-03 12:22:10 -07:00
ciregenz
4ae7f81cc7
[eric] cloud runs: two overlapping passes could pull one credential twice, racing the router file
2026-08-03 00:11:22 -07:00
ciregenz
ce5a458999
[eric] cloud runs: keep this device's token alive while the cloud holds custody of it
2026-08-02 17:55:27 -07:00
ciregenz
fb3ec15105
[eric] merge: bring eric/dev onto the browser v3 branch (7 conflicts resolved, gates green)
2026-08-02 16:14:53 -07:00
ciregenz
345000e8dc
[eric] credentials: hand custody to the cloud strip-first, so two rotators is unrepresentable
2026-07-31 13:12:11 -07:00
ciregenz
c0a0993ca2
[eric] credentials: move a rotating token out of 9router's db.json without racing the router for the file
2026-07-31 13:00:11 -07:00
ciregenz
3d8c6101b6
[eric] security: make the 9router state dir owner-only, its db.json held live tokens at 0644
2026-07-31 11:44:24 -07:00
ciregenz
b5e205160d
[eric] settings: disconnect a subscription provider from the UI, verified against 9router not assumed
2026-07-31 00:00:43 -07:00
ciregenz
3d5c287139
[eric] merge: bring eric/browser onto eric/dev (30 conflicts resolved, gates green)
2026-07-30 13:18:11 -07:00
ciregenz
83bb052c0b
[eric] onboarding: identity/scan/prep endpoints, settings fields, disk-row reader
2026-07-15 00:29:11 -07:00
ciregenz
8ed9149c7e
[eric] providers: boot-time login-health pill (dead sub token -> reconnect toast, no more silent codex deaths)
2026-07-08 20:34:37 -07:00
ciregenz
e6c781a380
[eric] 9router: never orphan-sweep custom nodes off an empty provider list (corrupt-settings boot mass-reap guard)
2026-07-08 17:33:15 -07:00
ciregenz
a459177d39
[eric] lint: drop p_ prefix from healer/pool names the tests access (p-private boundary rule)
2026-07-05 16:24:13 -07:00
ciregenz
b827fc565c
[eric] 9router: watchdog probes from a thread (sync HTTP confirm could stall the event loop 2s mid-stream)
2026-07-03 15:24:00 -07:00
ciregenz
cbe062e002
[eric] 9router: event-driven death-watcher heals in ~0.2s + two-strike watchdog (busy-probe false negatives)
2026-07-03 15:19:36 -07:00
ciregenz
b138fcc054
[eric] 9router: watchdog + detection-revive so the router self-heals; down only when the user quits
2026-07-03 15:10:22 -07:00
ciregenz
56efd73979
[eric] 9router: stop custom-provider reconcile reaping the cp-openai node (broke every gpt-*-api request)
2026-07-03 04:26:24 -07:00
abccodes
b2ceb4b466
[aidan] fix/model-fallback: reconcile free trial and provider states
2026-06-26 03:39:48 -07:00
abccodes
d420624fe1
[aidan] merge: bring branch up to date with eric/dev
...
# Conflicts:
# backend/apps/agents/agents.py
# backend/apps/agents/core/openai_passthrough.py
# backend/apps/nine_router/oauth.py
# backend/main.py
2026-06-25 22:33:30 -07:00
abccodes
5f9ae71ff4
[aidan] fix/codex-auth: fall back to port 1457 when 1455 is held, surface connect errors
2026-06-25 18:05:00 -07:00
ciregenz
0d093cc5f8
[eric] backend: one-line every comment + collapse 3+ blank runs across apps/ (AST-verified identical, -lines); CLAUDE.md one-line-comment rule
2026-06-25 02:29:04 -07:00
ciregenz
7701bcdeff
[eric] backend: convert all relative imports to absolute backend.* paths (convention sweep)
2026-06-24 01:41:22 -07:00
ciregenz
c5fd4f6b86
[eric] apps: leading-_ -> p_ for import aliases (import x as _y) across apps modules (file-local bindings, p-private 0)
2026-06-23 21:15:43 -07:00
ciregenz
798448acca
[eric] apps: leading-_ -> p_ for function-local vars/args/nested-fns across 53 apps modules (scope-aware AST rename, module symbols untouched, p-private 0)
2026-06-23 21:11:44 -07:00
ciregenz
10aef1ff18
[eric] swarm+nine_router: leading-_ -> p_/public across swarm entities/closure/redact/ziputil + nine_router process/sync/oauth; promote cross-file public, fix monkeypatch refs
2026-06-23 20:35:06 -07:00
ciregenz
f703b8aa02
[eric] agents: leading-_ -> p_/P_/public in proxy+providers/openrouter+ws_manager+mcp-servers+oauth_state; promote cross-file API public, fix monkeypatch+attr test refs
2026-06-23 20:00:06 -07:00
ciregenz
b7450f885a
[eric] merge winv2: win startup speedups + skill-registry seed, release 1.3.87
2026-06-19 00:57:57 -07:00
Eric
ec0f9600bc
[eric] backend: remove cold-start diagnostics, keep the fix + slim lifespan timer
...
- the is_running() fast-fail fix (v1.3.91) verified cold backend-http-ready
23.5s -> 3.86s and warm 5.0s -> 3.32s on the signed build, no 9Router regression
- strip the [perf] bg entry logs from mcp/skill/settings/service/9router now that
the stall is diagnosed; keep Apps.py per-lifespan timing but only print a
lifespan over 50ms plus the total (cheap regression tripwire)
- document the root cause + fix + before/after in docs/perf/winv2/README.md
2026-06-17 19:28:23 -07:00
Eric
24df3e8fac
[eric] backend: fast-fail is_running() to kill the ~18s cold-start event-loop freeze
...
- faulthandler on the signed cold build caught the asyncio loop frozen in
socket.create_connection inside is_running() (process.py): a synchronous
httpx.get to "localhost:20128" called ~5x on the boot path before 9Router is up
- on Windows a dead-port connect to "localhost" stalls ~7s each (tries ::1 first,
loopback refusal is slow), freezing the loop ~18s so uvicorn could not answer
the health probe -> cold backend-http-ready was ~23s
- fix: probe 127.0.0.1 with a 0.3s TCP timeout first (measured 306ms vs ~7s), only
HTTP-confirm when the port is open; 9Router binds 0.0.0.0 so reachability is
unchanged. drop the faulthandler diagnostic from main.py
2026-06-17 19:06:10 -07:00
Eric
90aa66f6ce
[eric] backend: timestamp each startup background task to pin the cold-start loop stall
...
- instrumented cold v1.3.88 proved the lifespans are 141ms even cold; the ~18s
cold gap is a backgrounded create_task blocking the event loop AFTER lifespan
startup but BEFORE uvicorn reports ready (what the health probe waits on)
- add [perf] entry/segment logs to the post-startup background tasks: mcp refresh,
skill refresh, 9router ensure (+ prelude bisection), and svc._post/_post_or_spool
- logging only, no behavior change; next cold log names the exact blocking call
2026-06-17 18:11:46 -07:00
ciregenz
6b8750efaf
[eric] 9router: rotate the unbounded request-details log + cap node heap, fixes the idle OOM crash
2026-06-17 16:20:59 -07:00
Eric
bca0050dcb
[eric] perf: start 9router in background instead of blocking the http bind
...
- service lifespan was awaiting ensure_9router (~7.4s, up to ~18s cold) on the boot path
- dispatch already ensures it lazily; serialize ensure_running so no double-spawn
- cuts warm backend-ready ~9-10s toward ~2-3s
2026-06-16 21:59:16 -07:00