Skip to content

fix(meeting): unique transcript paths + gate /health info leak - #35

Merged
WingedGuardian merged 1 commit into
mainfrom
fix/meeting-bridge-correctness
Jul 12, 2026
Merged

fix(meeting): unique transcript paths + gate /health info leak#35
WingedGuardian merged 1 commit into
mainfrom
fix/meeting-bridge-correctness

Conversation

@WingedGuardian

Copy link
Copy Markdown
Owner

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

ActiveSession named its transcript YYYYMMDDTHHMMSS.md (second granularity). Two sessions opened in the same second in the same output dir overwrote each other (the later os.replace clobbers 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).

ActiveSession is 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 /health info leak

The meeting bridge's /health returned operational metadata (live-session count, cumulative counters, last-frame timestamp, pid) with no auth, and it's reachable through the public Tailscale Funnel. Now:

  • unauthenticated /health → only {"alive": true, "ts": ...} (a pure liveness ping, zero disclosure — still useful behind the Funnel)
  • full metrics move behind /health/{token}, reusing the existing constant-time path-token auth

No HTTP consumer of /health exists (verified across both this repo and the main app); file-based liveness (meeting_health.json) is untouched.

Tests / verification

  • +1 ambient (test_transcript_paths_unique_across_sessions), +2 meeting (test_health_unauth_is_minimal, test_health_full_requires_token)
  • meeting_bridge 17/17, ambient_bridge 143/143, ruff clean, compileall clean
  • Inline code review: DONE, no blocking findings

🤖 Generated with Claude Code

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>
@WingedGuardian
WingedGuardian merged commit 9dd530c into main Jul 12, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant