The deployed CaptureService was constructed with a nil SummaryWriter, so a capture carrying a summary block returned the partial-failure "no summary writer configured" (surfaced in the 2026-06-23 claude.ai dogfood). The Gitea client already reaches mathias/* over BRAIN_GITEA_TOKEN and now implements SummaryWriter, so inject it (type-asserted from the tracker) — no new credential, no manifest change. Session summaries now write to mathias/ai-sessions at summaries/<harness>/<YYYY-MM>/... Reuses the existing token deliberately; assumes it carries contents:write scope on ai-sessions (it already does issue writes for the tracker). If the token is issue-scoped only, the live write 422s — a token-scope widen, not a code fix. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>