Done — performance pass: schedule + scheduleWithCapacity + Monte Carlo forecast @200 open issues ≈ 350ms (< 1s target); scaling ~linear (@400 well under 4x @100). Benchmarks in perf.test.ts.…
Done — offline write-queue: coalesce-by-axis (issue:kind), enqueue supersedes same axis, replayQueue drains on reconnect without duplicating. Shipped in PR #58. Closing.
Done — standup ritual: query_project standup view returns date/plan/drift/nag from deterministic data, rendered in StandupScreen. Shipped in PR #56. Closing.
Done — memory layers: assembleHotContext assembles focus + active directives + charter under a 2000-token budget (hot); ticket detail stays in query_project (warm), never inlined. Shipped in PR…
Done — calibration honesty: same-day closes counted correctly via calibrationCoverage {candidates, usable, excludedSameDay}; excludedSameDay surfaced in the UI. Shipped in PR #54. Closing.
Done — connection + target-repo config (onboarding + gitea:status demo gating). Shipped in PR #51. Closing.
Done — dogfood run against the live christian/commitea repo: engine (schedule + scheduleWithCapacity + forecast + per-milestone runway) executed, PM writes made (assignees + synthesized due…