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

3.9 KiB

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 total184 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.