Skip to content

Followup: brain-server-stage2-flip

URL: https://mkdocs.justinsforge.com/memory/followups/brain-server-stage2-flip-2026-06-10/

  • Status: ✓ success
  • Scheduled: 2026-06-10 18:00 CT
  • Fired: 2026-06-10 18:01 CT
  • Model: claude-opus-4-8
  • Duration: 58.8s
  • Followup ID: d39d6a0f79ac

Summary

(no summary captured)

Report

Soak window has only 1 server-engine capture call (below the 3-call threshold) → INCONCLUSIVE by rule. No flip. Here is the report.


SUMMARY## INCONCLUSIVE: only 1 capture server call in soak window (need ≥3); it was clean (0 fail, 0 fallback, 1.6s), but volume too low to flip. Soak extended 1 day.

forge-brain-server Stage-2 Flip Eval — 2026-06-10 18:00 CT

Soak verdict: INCONCLUSIVE — FLIP SKIPPED

The soak window (2026-06-09 21:00 CT → now) contains only 1 capture call on engine == 'server'. The contract requires ≥3 server calls to render a verdict; below that, the rule is explicit: treat as INCONCLUSIVE, do not flip, extend the soak one more day. Capture inbox traffic was light overnight, so the engine simply wasn't exercised enough to certify.

Numbers

Metric Value Threshold Pass?
Server-engine capture calls 1 ≥3 ✗ (too few)
Failed server calls 0 0
Unexpected fallbacks (capture rows w/o engine=server) 0 0
Latency median 1602 ms
Latency p90 (n=1) 1602 ms <20000 ms
forge-brain-server active yes active
forge-inbox-capture active yes active

The one call:

2026-06-09T21:16:03 forge_telegram_brain[capture] success=True latency_ms=1602 claude-sonnet-4-6

Everything that was observed is clean — zero failures, zero fallbacks, 1.6s well under the 20s p90 bar. The blocker is purely sample size.

Cross-checks

  • Quota JSONL: 1 capture row with engine='server', 0 capture rows without it (no silent subprocess fallbacks). Coordinator (forge_telegram_brain[coordinator], 7 calls) and the memory/morning-report jobs remained engine=None (subprocess) as expected — only capture is on the server engine pre-flip.
  • brain-server /health: {"ok": true, "uptime_s": 74850, total_queries: 2, total_errors: 0} for claude-sonnet-4-6. Server up ~20.8h, 0 errors.
  • journalctl forge-inbox-capture: no ERROR / fallback / traceback lines in window.
  • journalctl forge-brain-server: 2 POST /brain requests; one ERROR at 23:19:29 — exit code 143 (SIGTERM, 128+15), i.e. a client recycle/restart, not a request failure. Health reports total_errors: 0, so this did not corrupt a brain call. Noted, not counted against the soak.

(Minor note: server logged 2 /brain requests but quota recorded 1 capture row; the extra is consistent with a selftest/health-path query, not a missed capture failure.)

Action taken

None. The stage-1 drop-in remains FORGE_BRAIN_ENGINE=server:capture. Coordinator and general-purpose stay on subprocess. No drop-in copied, no daemon-reload, no restarts.

Recommendation

Extend the soak one more day. Re-fire this eval 2026-06-11 18:00 CT. If capture traffic stays thin, consider seeding deterministic load (a few /today-class capture messages) to clear the ≥3-call bar rather than waiting on organic volume.

Revert command (for reference; nothing to revert this run)

sudo rm -f /etc/systemd/system/forge-inbox-capture.service.d/brain-engine.conf \
           /etc/systemd/system/forge-lifeos-coordinator.service.d/brain-engine.conf
sudo systemctl daemon-reload && sudo systemctl restart forge-inbox-capture forge-lifeos-coordinator
Stopping forge-brain-server also degrades to subprocess automatically (kill-switch fallback).

SOAK EVAL COMPLETE