Commit Graph
25 Commits
Author SHA1 Message Date
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 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 83bb052c0b [eric] onboarding: identity/scan/prep endpoints, settings fields, disk-row reader 2026-07-15 00:29:11 -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
abccodes b2ceb4b466 [aidan] fix/model-fallback: reconcile free trial and provider states 2026-06-26 03:39:48 -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 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 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
ciregenz 9d1ff22a41 [eric] 9router: verify-at-boot, report why a start failed (no silent DEVNULL) + no dev-npm fallback in packaged 2026-06-16 04:55:14 -07:00
ciregenz f93d6e02d1 [eric] 9router: port the 0.4.x /api auth gate (x-9r-cli-token) to unblock a version bump 2026-06-14 20:27:39 -07:00
eric 5fdbc3ab79 [eric] router: revert dev pin to 0.3.60 (0.4.x adds an api auth gate that 401s our oauth/provider-sync calls, breaking every subscription connect); documented what porting the bump needs 2026-06-01 08:27:00 -07:00
eric f40d3b3b95 [eric] router: bump dev 9router pin 0.3.60 -> 0.4.66 to test websearch rework + opus-4-8/gpt-5.5 sub routes (prod pin stays 0.3.60 until websearch verified live) 2026-06-01 08:12:35 -07:00
ciregenz fa57be6bbb [eric] tree: group foundational agent modules under agents/core 2026-05-23 13:05:15 -07:00
ciregenz 4f016a0f9e [eric] split: nine_router into process/sync/oauth package 2026-05-23 02:56:31 -07:00