fix(meeting): unique transcript paths + gate /health info leak - #35
Merged
Conversation
Two correctness fixes for the meeting-capture bridge (filed Codex P2s):
- ActiveSession named transcripts YYYYMMDDTHHMMSS.md (second-granular), so two
sessions opened in the same second overwrote each other. Now a microsecond
stamp + short random suffix — collision-proof, and needed for the upcoming
session-per-meeting model that writes many files per day. Shared with the
ambient bridge; nothing parses/globs the filename, so no regression there.
- The meeting bridge's /health returned operational metadata (live-session
count, counters, last-frame time, pid) unauthenticated, reachable through the
public Funnel. Unauth /health now returns only {alive, ts}; full metrics move
behind /health/<token> (existing constant-time auth).
Tests: +1 ambient (path uniqueness), +2 meeting (health minimal / token-gated).
meeting 17/17, ambient 143/143, ruff clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stage 1 of the meeting-capture follow-on work — two small correctness fixes (both filed Codex P2s from PR #34).
Fix 1 — transcript filename uniqueness
ActiveSessionnamed its transcriptYYYYMMDDTHHMMSS.md(second granularity). Two sessions opened in the same second in the same output dir overwrote each other (the lateros.replaceclobbers the earlier file). Now: microsecond stamp + a short random suffix, so collisions are effectively impossible. This matters more with the upcoming session-per-meeting model (many transcripts land in one dir per day).ActiveSessionis shared with the ambient bridge; verified nothing parses, globs, sorts-by, or keys off the filename format, so there's no ambient regression.Fix 2 — gate the
/healthinfo leakThe meeting bridge's
/healthreturned operational metadata (live-session count, cumulative counters, last-frame timestamp, pid) with no auth, and it's reachable through the public Tailscale Funnel. Now:/health→ only{"alive": true, "ts": ...}(a pure liveness ping, zero disclosure — still useful behind the Funnel)/health/{token}, reusing the existing constant-time path-token authNo HTTP consumer of
/healthexists (verified across both this repo and the main app); file-based liveness (meeting_health.json) is untouched.Tests / verification
test_transcript_paths_unique_across_sessions), +2 meeting (test_health_unauth_is_minimal,test_health_full_requires_token)🤖 Generated with Claude Code