Skip to content

Phase 1: ship presence heartbeat expiry (<=90s)#158

Closed
krusty-agent wants to merge 2 commits intomainfrom
feat/launch-gate-api-key-rotation-zero-downtime
Closed

Phase 1: ship presence heartbeat expiry (<=90s)#158
krusty-agent wants to merge 2 commits intomainfrom
feat/launch-gate-api-key-rotation-zero-downtime

Conversation

@krusty-agent
Copy link
Collaborator

@krusty-agent krusty-agent commented Mar 3, 2026

Summary

  • add explicit 90s presence expiry window for list-collaboration presence rows
  • persist expiresAt on each heartbeat and on offline mark to guarantee stale presence cut-off <=90s
  • opportunistically prune expired presence rows on heartbeat/offline writes
  • filter expired rows out of getListPresence responses so stale sessions no longer show up in list presence indicators
  • add schema support for presence.expiresAt + by_expires_at index

Validation

  • npm run test:e2e -- e2e/mission-control-phase1.spec.ts -g "AC3 presence freshness"
    • result: skipped in current environment due existing auth/readiness gate (no regression/failure introduced)
  • npx convex codegen
    • result: blocked locally (No CONVEX_DEPLOYMENT set)

Notes

  • This implements Mission Control Phase 1 presence freshness behavior with a hard stale-expiry bound of 90 seconds.

@krusty-agent
Copy link
Collaborator Author

Superseded by consolidated integration PR #161: #161

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