Files
mopac-pmo/inbox-work/TASK-20260829-1100-briefing.md
T

40 lines
2.2 KiB
Markdown

# TASK: COS morning briefing — discourse client + `harness brief` (Redmine 495)
## Context
Spec: docs/SPEC-20260829-charles-brief.md. Target: first live 3-COS
briefing 2026-09-01 06:30 CST (beta 8/31 0600). Briefing = daily digest
via Discourse (fallback Redmine note) assembled from: Redmine activity
(scope), Gitea PR inbox, quota usage. Exact format TBD by Charles — ship
a clean v0 format he can react to.
## Part A — mopac-discourse-go client (new repo)
1. Create repo via Gitea API if absent (PMO pattern: tea token from
~/.config/tea/config.yml, POST /api/v1/orgs/ukrrs/repos), clone to
~/projects/meta/MOPAC/discourse-go. AGPLv3 LICENSE.
2. Stdlib-only Go client: categories (list/create), topics (create/list),
posts (create/update), raw JSON passthrough for anything else. API key
via key_ref/env (never logged). Fake-server tests. Docs standard.
(Current Discourse key 403s on category creation — client supports it,
live verification may wait for the admin-scoped key; note in REPORT.)
## Part B — `harness brief` subcommand
1. Digest window: since last briefing marker (state/brief/brief.jsonl).
2. Sources (read-only): Redmine issues in scope created/updated/closed in
window (reuse intake client); Gitea open PRs across ukrrs repos (API);
quota snapshot summary (internal/quota if landed).
3. Render: clean markdown — per-vertical sections: shipped (closed),
moved (updated w/ status), incoming (new), PRs awaiting review, quota
line. Beautiful tables (docs standard).
4. Delivery v0: post to Discourse category (configurable id/slug); if
Discourse fails (403 etc.), fallback = journal note on a configured
Redmine "briefing" issue — NEVER silently drop; log delivery path.
5. Scheduling v0: `harness brief` is one-shot (cron/loop calls it at
0630); config `[brief]` section (category, redmine fallback issue,
window tz CST). Idempotent: one briefing per window (marker).
6. TDD (fake servers for both), docker dev, docs, push.
## Deliverable
`REPORT-20260829-1100-briefing.md` in `~/.coordinate/inbox-pmo/`: client
surface, the v0 briefing format (render a sample with fake data in the
REPORT), delivery verification status, what Charles should tweak.