Practitionist / Practitionist/elluminar_web

🐞 FERMION-provider live sessions can be silently unjoinable (no joinUrl, provisioning failure swallowed)

Open
#53 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug notifications
Dominant language
TypeScript
Stars
1
Forks
0
Avg merge
17h 2m
Merged PRs (30d)
18

Description

Context

Live session creation picks provider per session: useFermion = isFermionConfigured() && !parsedInput.joinUrl (src/actions/live.ts:32). When it goes the FERMION route, provisioning runs best-effort with .catch(() => undefined) (:51) — on failure the LiveSession is left provider: FERMION with neither providerSessionRef nor a joinUrl.

Learners' Join button renders only when joinUrl exists (learn/page.tsx:321-329) and the Fermion embed path (getLiveSessionEmbedData, live.ts:33-48) is never rendered anywhere — so these sessions are silently unjoinable for everyone.

Proposed implementation

  1. Make provisioning failure loud + recoverable: catch → Sentry warning w/ sessionId; keep provider FERMION but expose an admin/creator "fix session" action to retry provisioning or paste an external joinUrl (flipping provider EXTERNAL_LINK).
  2. Learner UX fallback: if FERMION session lacks providerSessionRef at read time, show explicit "session setup in progress — we'll email you" state instead of hiding the row.
  3. Ship the embed path or remove dead code: render getLiveSessionEmbedData for configured FERMION sessions (SSO login link via ensureFermionUser/getFermionLoginLink) OR delete the dead exports until Phase-B of #52 lands.
  4. Add regression test: provisioning rejection → session still created, flagged, creator notified.

Acceptance

  • No live session can exist in a state where learners have no way to join or a visible explanation
  • Failures alert in Sentry with actionable context

Related: #52. Part of epic #42 / #40 QA.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with src/actions/live.ts, especially the Fermion provisioning catch and getLiveSessionEmbedData, then inspect the learner Join-button logic in learn/page.tsx:321-329. Add the regression test described for provisioning rejection and verify that affected sessions show a learner-facing explanation, provide a recovery path, and emit actionable Sentry context.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
full-stack, observability
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.