Files

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

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 8ad7c54693d724); these are the deferred tail.

  • Security hardening: no /relay/* rate limiting; container likely runs as root (entrypoint chowns 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.11server/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.