Files
recap-relay/ROADMAP.md
T
Keysat 7e5a7e3b7e Document server-side endpoint contract; correct Current state precision
- AGENTS.md: add Endpoints section — auth model (cloud operator-key path,
  license/install-id path, admin session cookie, BTCPay HMAC) plus full
  /relay/* surface (public + operator-key-only control plane), the
  /admin/* dashboard, and the /admin/internal-meetings/* API.
- AGENTS.md: rewrite Current state with verified git facts — HEAD is the
  prior docs commit, HEAD~1 is v0.2.11, working tree at v_0_2_124, file
  counts pulled live from git status.
- ROADMAP.md: log two doc-precision follow-ups caught in review (the
  working-tree counts drift fast; the admin-route shortlist silently
  omits three real routes).
2026-06-13 11:13:12 -05:00

34 lines
3.9 KiB
Markdown

# ROADMAP — Recap Relay
Longer-term backlog for the relay. Near-term in-flight work + known box/local state live in `AGENTS.md` under **Current state**. Detailed issue write-ups live in `docs/issues-backlog.md`.
## Highest priority — commit the uncommitted working tree (git is at v0.2.11)
Versions are reconciled: box and local working tree are both at **0.2.124** (a concurrent 2026-06-13 session bumped 0.2.117→0.2.124 and shipped it). But committed git HEAD is still **v0.2.11** — everything since is uncommitted (≈28 modified + 153 untracked: v0.2.12→v0.2.124, the whole `internal-meetings` feature, diarization, `meeting-speaker-edits.js`, billing). This is the actual "catch up local git" task.
1. **Coordinate first** — confirm no other chat session is mid-edit on this tree before committing (the 117→124 files appeared mid-session from a parallel session).
2. **Decide commit granularity** — one big "catch up to 0.2.124" commit vs. logical chunks (internal-meetings / diarization / speaker-edit tools / billing). The history jump is large either way since nothing between v0.2.11 and v0.2.124 was committed.
3. **Don't bump/install while committing** — the working tree already equals the box at 0.2.124; no rebuild needed just to commit.
4. **Confirm `.gitignore` covers** `*.s9pk`, `node_modules`, `cookies.txt`, env files before a bulk `git add`.
## Speaker-tool follow-ups (built this session, deferred polish)
- **Auto re-infer names after a re-run.** Today `POST /:id/recluster` clears names and the operator re-labels by hand (a deliberate, instant, no-LLM default). Optional: re-run `runNameInference` automatically after re-clustering.
- **Renumber speaker letters after a merge.** Merging `Speaker_C` into `Speaker_A` leaves a gap (A, B, D…). Renumbering to stay contiguous would cascade through `speaker_names` + per-line overrides — left out for now.
- **Preserve an unpolished summary base.** `runSummaryPolish` overwrites section summaries in place, so `repolish` re-polishes already-polished text (it still corrects names because it re-reads the transcript + roster, but a clean base would be more robust). Store the original topic-only summaries at first polish.
- **Make re-polish async for long meetings.** `POST /:id/repolish` is synchronous (one LLM pass per analysis window); a 2-hr meeting could make the request hang. Move to the existing job system (createJob/appendEvent/markComplete) + poll, like the main pipeline.
- **Speaker MERGE provenance.** Merge sums stats and approximates `chunks_appeared_in` as `max` (raw per-cluster chunk sets aren't retained). Recompute exactly from `rec.diarization` if precision ever matters.
## Doc precision follow-ups
- **`AGENTS.md` `## Current state` working-tree counts drift.** Reviewer caught `28 M` → actual `29 M` (and `183 total``184 total`) within minutes of writing the snapshot. Either refresh on every touch or change the phrasing to "(as of this write)" so the numbers stop reading as authoritative-forever.
- **`AGENTS.md` `### /admin/*` route list is non-exhaustive.** The brace-expanded shortlist silently omits at least three real routes registered in `server/routes/admin.js`: `GET /admin/job-output/:id` (line 268), `GET /admin/output-store-ids` (line 336), and `POST /admin/settings/promote-prompt` (line 1156). Either append them or label the list "(representative, not exhaustive)".
## Open issues (see docs/issues-backlog.md)
- **Empty analysis section at a window boundary** (observed v0.2.77 smoke test). Likely the LLM returning an empty `{title:"",summary:""}` section the stitcher accepts, or a window-merge boundary hole. Low priority. Full triage path in `docs/issues-backlog.md`.
## Adjacent (lives in `../recap`)
The app surfaces relay features but owns its own roadmap. Relay-side items the app is waiting on, or that change app behavior, belong in `../recap/ROADMAP.md` under its "Adjacent" section — keep them cross-referenced, not duplicated.