30 lines
3.3 KiB
Markdown
30 lines
3.3 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`.
|
|
|
|
## 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.
|
|
|
|
## 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`.
|
|
|
|
## Post-eval P3+ backlog (full eval 2026-06-13 — deferred, low risk for the private box)
|
|
|
|
From `EVALUATION.md`. P1 + three P2 items already fixed (see git log `8ad7c54`…`693d724`); these are the deferred tail.
|
|
|
|
- **Security hardening:** no `/relay/*` rate limiting; container likely runs as root (entrypoint `chown`s uid 1001 but no `USER` directive); dashboard `innerHTML` stored-XSS surface; `lan-fetch` TLS verify off (admin-set URL only); debug/error fields leaked to clients.
|
|
- **Packaging/ops:** prune the 126 `startos/versions/*.ts` files; pin `yt-dlp` in the Dockerfile; the Dockerfile per-subdir `COPY` footgun; manifest polish (SPDX license, `docsUrls`, real repo URLs, icon format); no `README.md` (blocks public-registry submission only — moot for this private box).
|
|
- **`/relay/health` reports stale `0.2.11`** — `server/package.json` version never bumped past 0.2.11; bump to track the StartOS version.
|
|
- **Doc fixes (bulk):** the `test/` layout line; `server/index.js:3-6` "two endpoints" header comment is stale; `POST /admin/logout` undocumented.
|
|
- **Untested blind spot:** the live upload → merge → recluster → repolish pipeline (admin-gated + needs Spark Control) has only unit coverage; re-run `npm audit`/`osv-scanner` with network to catch transitive CVEs the offline audit missed.
|
|
|
|
## 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.
|