Skip to Content
TechnicalOperations and observability

Operations and observability

This page describes the current operational signals for SCL and its backend dependencies. It is intended for support and engineering teams; it does not contain credentials or secret-management procedures.

Deployment model

The SCL frontend is built as a static Next.js export and deployed to Azure Static Web Apps through Azure DevOps. The backend is deployed separately as an App Service with Azure Storage, API Management, and the configured integration services.

The current backend deployment also runs an initial seed process. That process creates the standard blob containers and inserts sample data only when the catalog tables are empty. It is not the normal mechanism for adding a later Role Play; use Create and provision a role-play for that workflow.

Health and version checks

After a deployment, verify these signals in the target environment:

  1. The backend health endpoint responds successfully.
  2. The version endpoint returns the expected build version, commit, and environment.
  3. The catalog endpoint returns active Role Plays for an authorized request.
  4. A staging launch reaches the briefing page.
  5. A controlled voice session reaches feedback.
  6. Completion and analytics are checked separately because both are non-blocking and asynchronous where configured.

The catalog endpoint returning a Role Play proves only that the catalog and active relationship are readable. It does not prove that SCAI voice, AI Factory evaluation, completion, or analytics are available.

Correlation and safe diagnostics

The backend accepts x-correlation-id. When one is not supplied, it generates a correlation ID and returns it in the response. Include this value in an incident record together with:

  • Environment and approximate UTC timestamp.
  • Role Play ID and, when authorized, analytics session ID.
  • Browser/version, operating system, and network context.
  • Learner-visible error category.
  • HTTP status and dependency status.

Request logging records method, path, status, and latency without request bodies. Dependency logs include external status/latency, queue processing, retry, and poison-queue events. Do not add tokens, full transcripts, raw audio, or unsanitized payloads to support tickets or logs.

Queues and downstream delivery

The backend separates learner response time from downstream delivery:

QueuePurposeFailure behaviour
completion-requestsDeliver configured learning completion to Learning Platform IntegrationRetries transient failures; isolates messages that exceed the retry limit in the poison queue
analytics-eventsDeliver backend analytics events and unload events to SCL AnalyticsRetries delivery; isolates messages that exceed the retry limit in the poison queue

Feedback can be returned successfully even when a downstream completion or analytics delivery later fails. Investigate the corresponding queue and poison queue before asking the learner to repeat a successful evaluation.

Dependency triage

SymptomFirst boundary to inspectNext evidence
Portal cannot be openedStatic Web App authentication and deploymentAuthentication response, route configuration, deployment result
Role Play is unavailableRolePlays, ScaiAgents, active flags, and authorizationCatalog response and entity relationship
Briefing is empty or loadingroleplayinfo blob name, JSON, locale, and read accessCatalog payload and blob existence
Voice does not activateSCAI agent, DNIS, environment credentials, WebSocket/WebRTC pathCredential exchange, SCAI signalling, browser network state
Feedback failsTranscript, locale, criteria blob, AI Factory and technical tokenEvaluation status, correlation ID, dependency logs
Completion is missingTarget platform, learner claims, completion queue, LPIupn, cmid, queue state, LPI response
Analytics is missingAnalytics tenant, proxy session creation, backend token, analytics queueSession response, proxy status, queue/poison-queue state

Incident boundaries

Use the owning team shown in the Configuration map when escalating. Keep the learner journey and downstream delivery separate in incident reports:

  • Feedback shown means the evaluation completed.
  • It does not prove that completion reached the learning platform.
  • Missing analytics does not prove that the learner abandoned or failed.
  • A catalog failure is different from a voice, evaluation, completion, or analytics failure.

The planned Catalog API and Sessions API are not current operational dependencies. They remain future service boundaries until implemented.