V1 Web PWA · Surface walkthrough

Isis Integration Events

A per-surface walkthrough of the V1 Web PWA studio surface: layout, states, interactions, data, and cross-references.

walked
8sections2 minread

On this page

Context. surface studio · domain isis · route /studio/isis/integration-events · auth signed-in + studio entitlement (NOT AAA-gated — integration-events is not in AAA_ONLY_STUDIO_ROUTES; renders for any signed-in studio operator) · source apps/oshun/web/src/app/studio/isis/integration-events/page.tsx

Last walked. 2026-05-29 automated runtime walk (Playwright headless) — render, /v1 data (2xx), console/page-errors, expected content, screenshot verified; live screen-reader, touch, offline, and telemetry-delivery checks pending a manual AT pass. Evidence: WALKTHROUGH/results/runtime-sweep-2026-05-29.md; body re-derived 2026-06-03 from current source (lane-console architecture)

Purpose#

Admin lane console that dry-runs a generation-job / integration-event envelope before it is published to the bus. It validates a UUID jobId, a known generation type, an input record, optional priority/metadata/idempotency key, and echoes the normalized envelope (priority → normal, idempotency-key → jobId defaults applied) or the real per-path schema errors.

Entry points#

  • Embedded as the "Integration Events Lane" in many Isis aggregator routes (event-publisher, client, generation-api, gpu-worker, job-envelope, output-registry, workflow-registry, workflows)
  • Sibling quick-action card from /studio/isis/client-sdk
  • Studio index (/studio)
  • Direct URL / bookmark

Layout regions#

page.tsx mounts ShellLayout active="studio" and three panels (no breadcrumb panel).

  • Workspace panel (data-isis-integration-events-workspace):
    • <h1> "Isis Integration Events Workspace" (WorkspaceHeading)
    • Summary paragraph (data-isis-integration-events-summary)
    • The "Event envelope (JSON)" form (data-isis-ie-form) with a generation-types disclosure (data-isis-ie-types)
    • Result block (data-isis-ie-result) with data-isis-ie-verdict, data-isis-ie-normalized or data-isis-ie-errors
  • Route map panel (data-isis-integration-events-route-map): <h2> "Route Map" enumerating STUDIO_ISIS_INTEGRATION_EVENTS_ROUTE_MAP
  • Quick-actions panel: quickAction links to /studio/isis/client-sdk and "Back to Studio workspace index" → /studio

States#

  • Loadingdata-isis-ie-loading "Loading integration-events validator…"
  • Unauthorizeddata-isis-ie-unauthorized (admin-scope fail-closed on 401/403)
  • Errordata-isis-ie-error on the mount GET
  • Ready (form) — envelope textarea + generation-types disclosure render
  • Resultdata-isis-ie-verdict (valid → data-isis-ie-normalized, invalid → data-isis-ie-errors) or data-isis-ie-validate-error

Interactions#

Validate envelope (data-isis-ie-form)#

  • Event envelope (JSON)data-isis-ie-envelope textarea
  • Generation types disclosuredata-isis-ie-types
  • Validate envelopedata-isis-ie-submit submit; POSTs to /v1/admin/isis/integration-events/validate

Route map#

  • Route-map articles — non-interactive path + purpose entries

Quick-actions#

  • Open Isis Client SDK workspace/studio/isis/client-sdk
  • Back to Studio workspace index/studio

Data & contracts#

  • Reads: GET /v1/admin/isis/integration-events (IE_ENDPOINT) on mount — catalog (generationTypes)
  • Writes: POST /v1/admin/isis/integration-events/validate (VALIDATE_ENDPOINT) — dry-run validate an envelope (no actual publish)
  • Realtime: None
  • Caching: client fetch on mount, cache: 'no-store', buildBffAuthHeaders()
  • Auth: admin-scoped fail-closed (401/403 → unauthorized state); route behind the signed-in + studio proxy gate
  • Component sources:
    • apps/oshun/web/src/components/studio/StudioIsisIntegrationEventsWorkspace.tsx
    • apps/oshun/web/src/components/studio/StudioIsisIntegrationEventsRouteMap.ts

Cross-references#

Open questions / known gaps#

  • Validate is a dry-run only — it never publishes to the bus; confirm the real publish path (event-publisher)
  • Generation type is validated against the catalog list; new types must be added server-side