Skip to main content

Event lineup verification

Local verification as of September 16, 2026, on the cohesive event-lineup branch. No deployment or live event write is established by these results.

Connected data story​

tests/backend/event-lineup-story.test.ts creates a draft through the same createCommunityEvent mutation used by the browser, verifies it is not public, rejects unauthenticated publication, publishes as its owner, reads the editable selection, discovers the event through listPublicUpcoming, and obtains its actual getPublicBySlug projection. That exact projection crosses the Convex HTTP transport fixture into the real public GET route and the hosted MCP handler. A real stdio MCP child process then reads the actual GET route through a loopback HTTP server. Both MCP results must preserve the authored slots and participants. No independently constructed roster stands in for the authored event.

The browser story in apps/web/e2e/event-lineup-story.spec.ts additionally keeps one Convex test instance alive through a bounded Node child bridge. Its actual editable query bootstraps the real EventEditorForm. Playwright changes the title and selected stream, captures the submitted arguments without rewriting them, and sends those arguments to the real owner-authorized updateCommunityEvent. The bridge rejects the same update without an identity, confirms draft privacy, publishes, discovers and projects that same event, then runs the HTTP/hosted/stdio serializer helper. The returned projection bootstraps EventPublicPage; the test asserts the changed title, performer link and stream URL. Play requests only the newly selected stream, intercepted with HTTP 503 before reaching any provider. This chain passes in desktop and mobile Chromium.

The fixture replaces browser query/mutation transport, not editor serialization, backend authority or projection code. It does not establish authenticated deployed browser connectivity. Existing reactive-player tests retain their controlled query boundary and separate real loopback media evidence. Privacy, removed selections and cancellation remain covered by the actual backend projection suite; existing owner, staff and API scope tests remain unchanged.

Verification ledger​

CheckResultEvidence
Full backend798 passed, exit 0 before frontend-only integration.tmp/verify-backend.log
Full API contracts / MCP38 / 7 passed, exit 0; inputs unchanged.tmp/verify-api-contracts.log, .tmp/verify-vrdex-mcp.log
Contract/MCP types and OpenAPIexit 0; inputs unchanged.tmp/verify-typecheck-api-contracts.log, .tmp/verify-typecheck-vrdex-mcp.log, .tmp/verify-check-api-openapi.log
Final web suite486 passed, zero skipped; prior session exit handle unavailable.tmp/task6-web.log
Final web types / lintexit 0 for both; repeated to recover definitive status.tmp/task6-types-web-final.log, .tmp/task6-lint-web-final.log
Backend projection plus connected story11 passed, exit 0.tmp/task6-backend-focused.log
Review-fix web types / targeted lintexit 0 for both.tmp/task6-fix-types.log, .tmp/task6-fix-lint.log
Backend types after local codegenexit 0.tmp/task6-types-backend.log
Connected browser story, editor/roster flows and snapshots16 passed, exit 0 after review fix.tmp/task6-fix-covering.log
Local Convex generationConvex 1.32.0, health status ok; prior exit handle unavailable.tmp/task6-codegen.log

Reused broad checks apply only to unchanged inputs. The new story has its own focused run; the full web suite was not repeated after adding backend coverage. Local codegen adds the missing _eventPlayback generated API import and map. The generated README scaffold rewrite was discarded.

Visual inspection​

The four passing baseline comparisons were inspected as actual image files under apps/web/e2e/__screenshots__/. Desktop uses a 1280 by 900 viewport. Mobile uses Playwright's Pixel 7 preset, 412 by 839 CSS pixels. Full-page image sizes:

ImageDimensions
desktop-chromium/event-lineup-roster.png1280 by 2836
desktop-chromium/event-lineup-editor.png1280 by 2890
mobile-chromium/event-lineup-roster.png412 by 3290
mobile-chromium/event-lineup-editor.png412 by 3780

Repeated performers, multiple streams, a freeform row and public participant links remain legible. Long links wrap inside mobile cards and copy controls stay inside their rows. Editor mode and removed-source choice remain visible. Sequence mode omits irrelevant output operations. No new visual correction was needed. Playback screenshots and measured transport evidence are documented in event-lineup-player.md and event-playback-proof.md.

Remaining operational evidence​

The current client tool inventory exposes event search but no dedicated event read/write tools. This does not establish server absence or OAuth scope. Client visibility and sufficient authorization must be verified before an operator uses those tools. Local MCP configuration was not changed.

Native hidden-window behavior, OS suspension, Safari/iOS audio, hardware volume, live-provider CORS/encoder compatibility and a human listening comparison remain unverified. Injected autoplay rejection proves the recovery control only. The historical Firefox error and subsequent cancellation evidence retain the limits recorded in the player document.

Whole-branch independent review, the single PR, terminal CI and the 30-minute exact-head review window belong to the controller. Production auth smoke still needs VRDEX_PRODUCTION_AUTH_SMOKE_STORAGE_STATE_B64 from a safe dedicated production test account before that lane can be enabled. Merge, deployment and production event mutation require their separate authorization.