# Knowledge graph index

_Generated by `kg.mjs index` — do not edit. Start with [README](README.md)._

145 nodes.

## entity (29)

| node | summary | in | out | tags |
|---|---|---|---|---|
| [attempt](nodes/attempt.md) | One student's attempt at a resource/assignment; its id IS the AD session id. Holds form choice, player/scoring status, breach flag, PNP snapshot, TestNav handoff token and last passback result. | 62 | 9 | delivery, scoring, core |
| [platform](nodes/platform.md) | A registered LTI 1.3 platform (an LMS tenant): client id, OIDC login/token/JWKS URLs, issuer; the root every context, member, assignment and attempt hangs off. | 46 | 1 | lti, tenancy |
| [resource](nodes/resource.md) | An assignable test within an offering — points at one or more AD forms (Default/Spanish) on a connection, plus grading, lockdown and reporting settings. Soft-deleted. | 38 | 3 | admin, content |
| [context-member](nodes/context-member.md) | A member's enrolment in a context — derived role (Instructor/Student/Admin/Other), raw LTI roles, PNP accommodations and NRPS status; soft-deleted when dropped from the roster. | 36 | 3 | lti, roster, accommodations |
| [offering](nodes/offering.md) | A sellable assessment product (e.g. PRoPL) grouping resources, documents, a teacher announcement banner and a reporting configuration JSON; enabled per platform via platform_offerings. | 32 | 3 | admin, content |
| [platform-offering](nodes/platform-offering.md) | Join of platform to offering — which offerings an LMS platform may use, whether they're always shown or gated by a custom LTI claim, and which teacher pages (reports/roster/resources) are visible. | 29 | 3 | admin, content, lti |
| [arc-session](nodes/arc-session.md) | The `arc` cookie session payload (models.ARCSession) — platform id, LTI sub, derived role, deployment, LTI context, NRPS/AGS URLs — created on LTI launch or learner-token redemption and required by most /api routes. | 27 | 3 | auth, lti, session |
| [member](nodes/member.md) | A person known to a platform+deployment (LTI sub = user_id) with name/email from NRPS; class-independent identity row. | 26 | 2 | lti, roster |
| [context](nodes/context.md) | ARC's cached copy of an LTI context (LMS course/class) per platform+deployment, with grade/subject, availability custom claims and a roster (members via context_members). | 25 | 3 | lti, roster |
| [connection](nodes/connection.md) | A configured connection to an AD (Authoring & Delivery) tenant — host + OAuth client credentials in `settings` — that resources point at and the AD client authenticates with. | 24 | 1 | admin, ad, content |
| [assignment](nodes/assignment.md) | A resource assigned to one LMS class (context + deployment) on a platform; created automatically from grade/subject matching or by the teacher, toggled on/off by the teacher. | 23 | 7 | delivery, teacher, core |
| [small-group](nodes/small-group.md) | A teacher-defined subset of a class's students for one assignment, with a unique access code an external proctor uses to log in and proctor just those students. | 22 | 5 | proctoring |
| [document](nodes/document.md) | An uploaded file (PDF/guide) stored in the documents S3 bucket and attached to offerings via offering_documents; teachers download it through a 1-hour presigned URL. | 18 | 3 | admin, content |
| [attempt-outcome](nodes/attempt-outcome.md) | One scored objective (scale score, theta, reporting-group score…) of an attempt, copied from the AD session outcomes by the saveoff worker. | 16 | 2 | scoring |
| [internal-user](nodes/internal-user.md) | Admin-portal login account (username + bcrypt password) for Pearson staff; not an LMS user. Every internal user is a full admin (no roles). | 14 | 1 | admin, auth |
| [context-member-activity](nodes/context-member-activity.md) | Append-only activity log (currently only Login on each LTI launch) per member+platform+role; feeds the admin dashboard login stats and is pruned to 30 days. | 11 | 3 | stats, audit |
| [member-custom-pnp](nodes/member-custom-pnp.md) | Teacher/proctor accommodation override (key/value) per context-member; written by the PNP PATCH endpoints but never read — has no effect on served accommodations today. | 11 | 2 | accommodations, roster |
| [stats-snapshot](nodes/stats-snapshot.md) | One cached JSON blob of admin-dashboard statistics per stats target (only "dashboard"), upserted by the dashboard stats cron and served to the admin portal. | 11 | 1 | admin, stats |
| [legacy-session](nodes/legacy-session.md) | Prototype-era `sessions` table (user/resource/form/state); superseded by attempt; no struct or query. | 10 | 3 | legacy |
| [attempt-response](nodes/attempt-response.md) | A student's response to one item in an attempt, copied from the AD session by saveoff; also the source of the CAT blocklist (items already seen). | 9 | 2 | scoring, cat |
| [emulator-member](nodes/emulator-member.md) | A person on an emulator course roster (1 teacher + students); stable id becomes the LTI sub / NRPS user_id; only accommodation and active are mutable. | 9 | 2 | emulator |
| [emulator-tool](nodes/emulator-tool.md) | An LTI tool registration held by the emulator (a Canvas "developer key"): one per ARC environment, keyed by client_id. | 9 | 1 | emulator |
| [emulator-course](nodes/emulator-course.md) | A generated LMS course in the emulator - the LTI context ARC launches into; stable context_id plus free-form custom claims (gradelevel, subject, offering). | 8 | 3 | emulator |
| [feature-flag](nodes/feature-flag.md) | Per-platform boolean feature flag (polymorphic owner, only `platform` used); edited in the admin platform editor, read only by the teacher SPA (`teacher_add_assignments`). | 8 | 2 | config, platform |
| [emulator-event](nodes/emulator-event.md) | Append-only, globally capped (500) log entry in the emulator recording each AGS grade passback ARC posted, accepted or rejected, with the verbatim body. | 6 | 1 | emulator, passback |
| [user](nodes/user.md) | Prototype-era `users` table (id/identifier/names); models.User exists but is only used by test mock data — superseded by member/context-member. Not the admin users (internal-user). | 6 | 1 | legacy |
| [emulator-launch](nodes/emulator-launch.md) | A pending one-shot LTI launch in the emulator, bridging the UI's launch click to the OIDC handshake; 5-minute TTL, consumed once. | 4 | 4 | emulator |
| [legacy-session-outcome](nodes/legacy-session-outcome.md) | Prototype-era `session_outcomes` table (per-objective scores of a legacy session); superseded by attempt-outcome; no struct or query. | 2 | 2 | legacy |
| [credential](nodes/credential.md) | Prototype-era credentials table (client_id/client_secret per host); no Go struct, no query — kept only so the baseline matches deployed databases. | 1 | 1 | legacy |

## module (16)

| node | summary | in | out | tags |
|---|---|---|---|---|
| [lti](nodes/lti.md) | LTI 1.3 tool side — OIDC login redirect, id_token verification against the platform JWKS (cached), ARC session creation, context + roster refresh via NRPS, auto-assignment trigger, login activity, tool JWKS publication; plus the platform/context services and their repositories. | 39 | 13 | lti, auth, roster |
| [app-backend](nodes/app-backend.md) | Teacher/student app backend behind the LTI session — assignments (auto/manual create, enable/disable), class context & roster, results, ISR, documents, app settings, the AD session-event webhook; also hosts attempt/score/AD-config services used by admin. | 38 | 19 | backend, teacher, learner |
| [admin](nodes/admin.md) | Admin portal backend — staff login and CRUD for connections, platforms (+offering availability), offerings, resources, documents (S3), AD bank/form browsing, attempt godmode fixes and the dashboard stats snapshot. | 36 | 16 | admin |
| [async-workers](nodes/async-workers.md) | In-process SQS long-poll consumers started from main.go — saveoff (fetch the finished AD session, persist status/outcomes/responses, enqueue passback for graded resources) and passback (post the LTI AGS score to the LMS and stamp the result on the attempt). | 33 | 18 | async, scoring, sqs |
| [delivery](nodes/delivery.md) | Test delivery — student launch creates/reuses an attempt with form selection and PNP snapshot, registers the AD session (CAT blocklist + starting theta, TTS), returns the player launch token, records lockdown breaches, and mints/redeems TestNav handoff tokens. | 29 | 16 | delivery, learner |
| [names-and-roles](nodes/names-and-roles.md) | LTI Advantage service client — OAuth2 client-credentials token via signed JWT assertion, NRPS roster paging (v1/v2), and the generic authenticated request used for AGS line-item creation and score passback. | 26 | 3 | lti, integration |
| [lockdown-extension](nodes/lockdown-extension.md) | Chrome MV3 extension ("Pearson Arc Browser Extension") that opens the learner's test in a fullscreen locked window and reports breaches (focus loss, fullscreen exit, extra display, OS key combos) to the page. | 18 | 2 | lockdown, proctoring, client |
| [ad-client](nodes/ad-client.md) | Go HTTP client for the AD API — OAuth client-credentials token (cached per connection), bank/form reads, session register/state/info, rescoring — built per connection from its settings. | 16 | 2 | ad, integration |
| [proctoring](nodes/proctoring.md) | Live proctoring of an assignment — roster rows with attempt state refreshed from AD, bulk state changes (pause/resume/etc.) pushed to AD, small-group CRUD, and the access-code login for external proctors. | 16 | 10 | proctoring, teacher |
| [stats-cron](nodes/stats-cron.md) | In-process robfig/cron job (every DASHBOARD_STATS_INTERVAL_MIN, plus once at startup) that purges 30-day-old login activity and recomputes the admin dashboard stats snapshot; StatsService also records login activity for LTI. | 16 | 9 | stats, admin, cron |
| [arc-server](nodes/arc-server.md) | Go/Echo backend bootstrap — main.go startup order, dig DI container, env config helpers, global/session middleware, route registration, cookie session utils, shared utils (logger, validation, NR helpers), DB connection pools and embedded migrations. | 14 | 12 | core, bootstrap |
| [lms-emulator](nodes/lms-emulator.md) | "Easel": a local-only fake LTI 1.3 platform (Go echo API on :8090 + Vue 3 UI on :40445) that performs real OIDC launches into ARC and serves NRPS rosters and AGS passback from an in-memory store. | 14 | 15 | dev-tool, lti, emulator |
| [arc-client](nodes/arc-client.md) | Vue 3 + PrimeVue + Pinia SPA (hash router) built to client/dist and served by the Go server; renders the admin, teacher, learner and external-proctor screens and hosts the AD test player. | 12 | 18 | frontend, ui |
| [infra](nodes/infra.md) | Terraform (ECS Fargate + ALB + Route53, Aurora Serverless v2, SQS + DLQs, S3 documents bucket, bastion, CloudWatch dashboard), the Dockerfile, GitHub Actions pipelines, deploy scripts and the local docker-compose/localstack stack. | 9 | 7 | infra, ops, ci |
| [propl-data](nodes/propl-data.md) | Offline scripts that build the PRoPL score-report "reporting configuration" JSON (RC/cluster labels, performance-level text, scale-score cut bands) that admins upload onto an offering. | 6 | 3 | tooling, reporting, propl |
| [load-testing](nodes/load-testing.md) | k6 scripts that drive ARC's LTI launch and learner assessment flow, plus an Express/Lambda mock LTI 1.3 platform + mock AD API ("arc-perf-mock-platform") that mints the launch tokens and answers ARC's NRPS/AD calls. | 2 | 5 | testing, perf, lti |

## interface (14)

| node | summary | in | out | tags |
|---|---|---|---|---|
| [app-api](nodes/app-api.md) | JSON API used by the Vue SPA for teachers and learners inside an LTI launch — /api/app/*, /api/lti/*, /api/platform, /api/assignments, /api/attempt, /api/learner/*, plus /health and /api/static/new_relic.js. | 49 | 11 | api, teacher, learner |
| [admin-api](nodes/admin-api.md) | REST API under /admin/api used by the admin portal — staff login plus CRUD for connections, offerings, documents, platforms, resources, AD bank/form browsing, attempt "godmode" fixes and the dashboard stats snapshot. | 46 | 15 | admin, api |
| [teacher-ui](nodes/teacher-ui.md) | LTI instructor screens in the SPA (/#/teacher/*, /#/learner/isr) — assignments home, live proctoring with small groups, class reports + ISR, roster sync, offering documents. | 28 | 6 | frontend, teacher, lti |
| [proctor-api](nodes/proctor-api.md) | Teacher proctoring endpoints under the LTI session — live roster/attempt state for an assignment, push AD session state changes, and small-group CRUD. | 19 | 5 | api, proctoring, teacher |
| [ad-event-webhook](nodes/ad-event-webhook.md) | Unauthenticated POST /api/ad/event — AD's session callback (registered as CallbackURL in RegisterSession); enqueues a saveoff message with shouldPassback=true. | 17 | 2 | api, webhook, scoring |
| [small-group-api](nodes/small-group-api.md) | External (non-LMS) proctor API — log in with a small group's access code, then read the group, its live proctor rows, change AD session state and patch student PNP, all under a small-group session cookie. | 16 | 4 | api, proctoring, external |
| [learner-ui](nodes/learner-ui.md) | LTI student screens in the SPA (/#/learner/*) — assignment list, pre-launch splash with lockdown checks, the embedded AD test player (Chrome extension or iOS TestNav kiosk), and submitted/interrupted/session-ended pages. | 15 | 3 | frontend, learner, delivery, lockdown |
| [lti-api](nodes/lti-api.md) | LTI 1.3 tool endpoints the LMS calls — OIDC login initiation, id_token launch (sets the `arc` cookie and redirects into the SPA), and the tool's public JWKS. | 15 | 2 | lti, auth |
| [admin-ui](nodes/admin-ui.md) | Internal Pearson admin console in the SPA (/#/admin/*) — login, stats dashboard, connections, platforms, offerings/resources/documents, and the attempt Tools page; talks only to /admin/api. | 14 | 8 | frontend, admin |
| [external-proctor-ui](nodes/external-proctor-ui.md) | Access-code login and monitoring page for a non-LMS proctor of one small group (/#/proctor/external[/authenticated]); uses the small-group session, not LTI. | 11 | 3 | frontend, proctoring, small-group |
| [emulator-ui](nodes/emulator-ui.md) | Easel's Vue 3 SPA (port 40445) - login, course list, roster editing (accommodation/active/delete), launch-as-member, course export/import, Events (grade passback) tab, read-only Tools page. | 8 | 1 | dev-tool, emulator, ui |
| [emulator-api](nodes/emulator-api.md) | HTTP surface of the LMS emulator: /emulator-api/* REST for its UI (session-guarded) plus the LTI 1.3 platform endpoints ARC calls (OIDC, JWKS, token, NRPS, AGS). | 6 | 6 | dev-tool, lti, emulator |
| [lockdown-extension-api](nodes/lockdown-extension-api.md) | window.ArcExtension JS API injected by the lockdown extension into ARC pages, plus the chrome.runtime message protocol behind it. | 4 | 0 | lockdown, proctoring |
| [mock-platform-api](nodes/mock-platform-api.md) | HTTP routes of the load-test mock platform (local :8081 or Lambda arc-perf-mock-platform) - LTI token minting, JWKS, OAuth token, NRPS roster, and 9 mock AD endpoints. | 2 | 0 | testing, perf |

## integration (5)

| node | summary | in | out | tags |
|---|---|---|---|---|
| [lms-platform](nodes/lms-platform.md) | External LMS platforms (e.g. McGraw Hill, Canvas, Schoology) speaking LTI 1.3 + LTI Advantage — OIDC login, signed id_token launches, platform JWKS, OAuth2 token endpoint, NRPS rosters (with AFA PNP accommodations) and AGS line items/scores. | 16 | 0 | lti, external |
| [ad-api](nodes/ad-api.md) | Pearson Authoring & Delivery (AD, "Adam AD") HTTP API — OAuth client-credentials, item banks and forms, test-session registration/state/info, and rescoring. One AD tenant per ARC connection. | 15 | 1 | ad, integration |
| [new-relic](nodes/new-relic.md) | New Relic — Go APM agent (Echo transactions, nrpostgres DB segments, external HTTP segments), log forwarding via nrslog, custom db.pool.* metrics, and per-environment browser agent scripts. | 8 | 0 | observability, external |
| [testnav-app](nodes/testnav-app.md) | Pearson TestNav 8 app — the iOS/iPadOS secure-delivery shell; ARC deep-links into it (tnav://) and drives its kiosk mode via window.TestNavApp (app.testnav.com/api.js). | 7 | 0 | delivery, lockdown, ios |
| [texthelp-speechstream](nodes/texthelp-speechstream.md) | TextHelp SpeechStream text-to-speech toolbar, loaded from toolbar.speechstream.net in index.html and initialised before the AD test player starts. | 2 | 0 | delivery, accessibility |

## datastore (5)

| node | summary | in | out | tags |
|---|---|---|---|---|
| [postgres](nodes/postgres.md) | Aurora PostgreSQL (Serverless v2) — single schema migrated by embedded golang-migrate files at startup; GORM writer pool (optional unused reader pool) with New Relic instrumentation. | 29 | 0 | datastore, core |
| [saveoff-queue](nodes/saveoff-queue.md) | SQS queue (URL from SQS_SAVEOFF_URL) carrying saveoff messages — AD session finished/rescored → fetch and persist status, outcomes, responses. | 11 | 1 | sqs, async |
| [documents-bucket](nodes/documents-bucket.md) | S3 bucket (name from DOCUMENTS_S3_BUCKET) holding uploaded offering documents under documents/<uuid>/<filename>; served to browsers only via 1-hour presigned GET URLs. | 8 | 0 | admin, content, aws |
| [passback-queue](nodes/passback-queue.md) | SQS queue (URL from SQS_PASSBACK_URL) carrying grade passback jobs — send an attempt's score to the LMS via LTI AGS. | 8 | 1 | sqs, async |
| [emulator-memory-store](nodes/emulator-memory-store.md) | The emulator's only storage backend - process-memory maps behind repository interfaces; wiped on restart. | 6 | 0 | emulator |

## event (4)

| node | summary | in | out | tags |
|---|---|---|---|---|
| [passback-message](nodes/passback-message.md) | SQS message asking the passback worker to send an attempt's score to the LMS via LTI AGS; body is the bare attempt id string. | 11 | 1 | async, scoring, lti-ags |
| [saveoff-message](nodes/saveoff-message.md) | SQS message telling the saveoff worker to pull a finished AD session and persist it; JSON {sessionID, shouldPassback}. | 11 | 1 | async, scoring |
| [lockdown-breach](nodes/lockdown-breach.md) | In-page breach signal raised by the lockdown extension when a locked learner leaves fullscreen/focus, adds a display, or presses OS escape keys; ARC turns it into attempt.breached. | 7 | 0 | lockdown, proctoring |
| [ad-session-event](nodes/ad-session-event.md) | Inbound AD session callback payload {entity_type, entity_id, session_id, bank_id} POSTed to /api/ad/event; only session_id is used. | 5 | 1 | webhook, ad |

## config (11)

| node | summary | in | out | tags |
|---|---|---|---|---|
| [cron-env](nodes/cron-env.md) | Schedule knobs — DASHBOARD_STATS_ENABLED / DASHBOARD_STATS_INTERVAL_MIN for the dashboard stats cron, and CLASS_ROSTER_SYNC_INTERVAL_MINUTES (roster freshness window, not a cron). | 10 | 0 | config, cron |
| [session-env](nodes/session-env.md) | Cookie session lifetimes in seconds per role/session type — SESSION_MAX_AGE_INSTRUCTOR/ADMIN/STUDENT/DEFAULT/ADMIN_DASHBOARD/EXTERNAL_PROCTOR. | 10 | 0 | config, auth, session |
| [app-env](nodes/app-env.md) | General runtime env — APP_URL, ENVIRONMENT, MODE, PORT, DEBUG_MODE, AWS_ENDPOINT_URL, LOCALSTACK_ENDPOINT. | 8 | 0 | config |
| [extension-id](nodes/extension-id.md) | EXTENSION_ID — Chrome Web Store id of the ARC lockdown browser extension, served to the SPA via GET /api/app/settings (default lejnbofknclafimlnbgnaaamehkchifm). | 7 | 0 | config, lockdown |
| [lti-signing-key](nodes/lti-signing-key.md) | ARC's RSA key pair for LTI Advantage — private key read from ./internal/jwks/private.key to sign NRPS/AGS client assertions; public half served at /.well-known/jwks.json with a hard-coded kid. | 7 | 0 | lti, security, secret |
| [sqs-env](nodes/sqs-env.md) | SQS queue URLs for the async pipeline — SQS_SAVEOFF_URL, SQS_PASSBACK_URL (read), SQS_LOCAL (dead, never read). | 5 | 2 | config, sqs |
| [database-env](nodes/database-env.md) | Postgres connection and pool env vars — DB_HOST, DB_HOST_READER, DB_PORT, DB_NAME, DB_USERNAME, DB_PASSWORD, DB_MAX_OPEN_CONNS, DB_MAX_IDLE_CONNS, DB_CONN_MAX_LIFETIME_MINUTES, DB_STATS_INTERVAL_SECONDS. | 4 | 0 | config, database |
| [new-relic-env](nodes/new-relic-env.md) | NEW_RELIC_* env consumed by newrelic.ConfigFromEnvironment — notably NEW_RELIC_LICENSE_KEY (enables the agent) and NEW_RELIC_APP_NAME. | 4 | 0 | config, observability |
| [client-build-env](nodes/client-build-env.md) | Vite build-time env vars for the SPA — VITE_TESTNAV_LAUNCH_HOST, VITE_FORCE_TESTNAV (dev only), VITE_SOURCEMAP. | 2 | 0 | config, frontend |
| [documents-bucket-env](nodes/documents-bucket-env.md) | DOCUMENTS_S3_BUCKET — name of the S3 bucket for offering documents; required at startup (S3Service construction fails without it). | 2 | 0 | config, aws |
| [emulator-env](nodes/emulator-env.md) | LMS emulator flags with EMULATOR_* env fallbacks (host, port, issuer, signing key, static dir, seed, debug, operator credentials, session key). | 2 | 0 | emulator, config |

## flow (15)

| node | summary | in | out | tags |
|---|---|---|---|---|
| [lti-launch](nodes/lti-launch.md) | LMS user clicks an ARC link -> OIDC login -> id_token launch -> roster/context sync -> auto-assign -> session cookie -> teacher or learner home. | 8 | 8 | lti, core |
| [saveoff-and-passback](nodes/saveoff-and-passback.md) | AD session submitted -> /api/ad/event -> saveoff SQS -> attempt/outcomes/responses saved from AD -> passback SQS -> score posted to LMS gradebook via LTI AGS. | 7 | 8 | scoring, async, core |
| [sync-class-roster](nodes/sync-class-roster.md) | Pull the class roster and accommodations from the LMS via LTI NRPS into context/member/context-member, on launch when stale or on demand. | 5 | 5 | lti, roster |
| [take-assessment](nodes/take-assessment.md) | Student launches an assigned test: attempt created/reused, form chosen by accommodations, lockdown checks, AD session registered, player loaded. | 5 | 9 | delivery, core |
| [admin-content-setup](nodes/admin-content-setup.md) | Pearson admin configures an AD connection, offering, resources (AD bank/form) and LMS platforms with offering availability, so a district can launch ARC. | 4 | 7 | admin |
| [lockdown-breach-handling](nodes/lockdown-breach-handling.md) | Lockdown extension/TestNav detects the student leaving the test -> warning, then attempt marked breached and ended; a teacher can release it. | 4 | 5 | delivery, proctoring |
| [teacher-proctoring](nodes/teacher-proctoring.md) | Teacher watches live student sessions for an assignment and pauses/resumes/submits/releases them through AD session state. | 4 | 5 | proctoring |
| [view-score-reports](nodes/view-score-reports.md) | Teacher opens class reports and Individual Student Reports built from attempt outcomes and the offering's PRoPL reporting configuration. | 4 | 6 | reporting |
| [admin-rescore-attempts](nodes/admin-rescore-attempts.md) | Admin selects attempts and asks AD to rescore them; AD calls back /api/ad/event so saveoff (and passback) rerun. | 3 | 5 | admin, scoring |
| [auto-assign-assessments](nodes/auto-assign-assessments.md) | Class grade/subject (from LTI claims or set by the teacher) selects auto_assign resources, which become disabled assignments the teacher enables. | 3 | 6 | assignments |
| [refresh-dashboard-stats](nodes/refresh-dashboard-stats.md) | Cron in every ECS task purges old activity rows, aggregates login/member/attempt stats and upserts the dashboard stats snapshot read by the admin dashboard. | 3 | 5 | admin, stats |
| [testnav-handoff](nodes/testnav-handoff.md) | On iOS the browser session is handed to the TestNav kiosk app via a single-use attempt token that recreates the ARC session. | 3 | 5 | delivery |
| [upload-offering-document](nodes/upload-offering-document.md) | Admin uploads a PDF to S3, attaches it to offerings; teachers download it via presigned URLs on the Resources page. | 3 | 4 | admin, documents |
| [external-proctor-small-group](nodes/external-proctor-small-group.md) | Teacher splits a class into small groups with access codes; an external proctor logs in with the code and proctors only that group. | 2 | 6 | proctoring |
| [deploy-release](nodes/deploy-release.md) | Push to dev deploys smk->dev->perf; push to release/* or hotfix/* deploys uat->prd; the app runs DB migrations on boot. | 0 | 5 | ops |

## concept (27)

| node | summary | in | out | tags |
|---|---|---|---|---|
| [attempt-term](nodes/attempt-term.md) | Attempt = one student sitting of an assignment; its id is the AD session id. | 0 | 1 | glossary |
| [availability-claim](nodes/availability-claim.md) | Availability claim = LTI custom claim that limits which offerings a class sees. | 0 | 2 | glossary |
| [baseline-migration](nodes/baseline-migration.md) | Baseline migration = the squashed idempotent 20261005120000_initial schema. | 0 | 1 | glossary |
| [breached](nodes/breached.md) | Breached = an attempt stopped because the student left the locked window. | 0 | 2 | glossary |
| [cat-blocklist](nodes/cat-blocklist.md) | CAT blocklist/theta = items already seen and prior ability passed to AD for adaptive tests. | 0 | 2 | glossary |
| [connection-term](nodes/connection-term.md) | Connection = credentials for one AD tenant. | 0 | 1 | glossary |
| [context-term](nodes/context-term.md) | Context = an LMS class/course from the LTI launch. | 0 | 1 | glossary |
| [derived-role](nodes/derived-role.md) | Derived role = Admin / Instructor / Student / Other, computed from LTI role URIs. | 0 | 2 | glossary |
| [external-proctor](nodes/external-proctor.md) | External proctor = a non-LMS adult proctoring a small group via access code. | 0 | 2 | glossary |
| [form-accom](nodes/form-accom.md) | Form accom = which AD form variant a resource form is: Default or Spanish. | 0 | 1 | glossary |
| [godmode](nodes/godmode.md) | Godmode = internal nickname for the admin attempt tools. | 0 | 1 | glossary |
| [isr](nodes/isr.md) | ISR = Individual Student Report. | 0 | 1 | glossary |
| [nrps-and-ags](nodes/nrps-and-ags.md) | NRPS = LTI roster service; AGS = LTI grade service. | 0 | 2 | glossary |
| [offering-term](nodes/offering-term.md) | Offering = a sellable assessment product (e.g. PRoPL), not a course offering. | 0 | 1 | glossary |
| [page-visibility](nodes/page-visibility.md) | Page visibility = per platform-offering toggles for the teacher Reports, Roster and Resources pages. | 0 | 1 | glossary |
| [passback](nodes/passback.md) | Passback = posting a graded attempt's score to the LMS gradebook via LTI AGS. | 0 | 2 | glossary |
| [platform-term](nodes/platform-term.md) | Platform = one LMS tenant registration (client id + URLs), not a software platform. | 0 | 2 | glossary |
| [player-status](nodes/player-status.md) | player_status vs status vs scoring_status on an attempt. | 0 | 1 | glossary |
| [pnp](nodes/pnp.md) | PNP = Personal Needs & Preferences: per-student accommodations (Spanish, TTS). | 0 | 2 | glossary |
| [primary-outcome](nodes/primary-outcome.md) | Primary outcome = the STM objective whose score is the reported/passed-back score. | 0 | 2 | glossary |
| [propl](nodes/propl.md) | PRoPL = Pearson Review of Progress & Learning, the main offering delivered through ARC. | 0 | 2 | glossary |
| [reporting-configuration](nodes/reporting-configuration.md) | Reporting configuration = per-offering JSON of scale-score bands, performance levels and clusters per subject/grade. | 0 | 2 | glossary |
| [resource-term](nodes/resource-term.md) | Resource = one assignable test pointing at AD forms; "Resources" page = documents. | 0 | 2 | glossary |
| [saveoff](nodes/saveoff.md) | Saveoff = pulling a finished AD session's scores and responses into ARC. | 0 | 2 | glossary |
| [secured-method](nodes/secured-method.md) | Secured method = how a test is locked down: None, Extension, or TestNav. | 0 | 2 | glossary |
| [session-term](nodes/session-term.md) | "Session" means four things: the arc cookie, the AD test session, the small-group session, and a dead table. | 0 | 4 | glossary |
| [term-number](nodes/term-number.md) | Term = interim window INT1/INT2/INT3 on a resource. | 0 | 1 | glossary |

## capability (19)

| node | summary | in | out | tags |
|---|---|---|---|---|
| [adaptive-testing](nodes/adaptive-testing.md) | Adaptive (CAT) tests avoid repeating items and start from the student's previous ability estimate. | 0 | 2 | capability |
| [admin-dashboard-stats](nodes/admin-dashboard-stats.md) | Usage dashboard: logins, members, tests in progress, submitted and launched. | 0 | 3 | capability |
| [admin-portal](nodes/admin-portal.md) | Pearson staff configure AD connections, products, tests, LMS registrations and documents. | 0 | 4 | capability |
| [attempt-support-tools](nodes/attempt-support-tools.md) | Admin tools to find, reset, delete and rescore student attempts and inspect gradebook sync. | 0 | 2 | capability |
| [automatic-scoring-and-gradebook-sync](nodes/automatic-scoring-and-gradebook-sync.md) | Finished tests are scored by AD and graded tests are sent to the LMS gradebook automatically. | 0 | 2 | capability |
| [breach-detection](nodes/breach-detection.md) | If a student leaves the locked test window they are warned, then the test is stopped until a teacher releases it. | 0 | 2 | capability |
| [class-assignments](nodes/class-assignments.md) | Tests are assigned to a class automatically by grade and subject; teachers turn each one on or off. | 0 | 4 | capability |
| [class-roster-sync](nodes/class-roster-sync.md) | The class list and each student's accommodations come from the LMS automatically. | 0 | 4 | capability |
| [live-proctoring](nodes/live-proctoring.md) | Teachers watch who is testing and can pause, resume, submit or release a student's test. | 0 | 3 | capability |
| [lms-single-sign-on](nodes/lms-single-sign-on.md) | Teachers and students open ARC from their LMS with no separate login; their role decides what they see. | 0 | 4 | capability |
| [local-lms-emulator](nodes/local-lms-emulator.md) | A local fake LMS for developers and QA to launch ARC as any teacher or student. | 0 | 2 | capability |
| [offering-availability](nodes/offering-availability.md) | Which products a district sees, optionally limited by LMS data such as state or program. | 0 | 4 | capability |
| [practice-tests](nodes/practice-tests.md) | Practice (ungraded) tests can be retaken; graded tests cannot. | 0 | 2 | capability |
| [score-reports](nodes/score-reports.md) | Class reports and Individual Student Reports with scale scores and performance levels. | 0 | 4 | capability |
| [secure-test-delivery](nodes/secure-test-delivery.md) | Students take tests in a locked-down window (Chrome extension or TestNav on iPad). | 0 | 6 | capability |
| [small-group-proctoring](nodes/small-group-proctoring.md) | Teachers hand a group of students to another adult who proctors with an access code. | 0 | 4 | capability |
| [teacher-announcements](nodes/teacher-announcements.md) | A banner message from Pearson shown on the teacher assignment list. | 0 | 2 | capability |
| [teacher-resources](nodes/teacher-resources.md) | A library of guides and letters (PDF) for teachers per product. | 0 | 3 | capability |
| [testing-accommodations](nodes/testing-accommodations.md) | Spanish forms and text-to-speech per student, taken from the LMS. | 0 | 3 | capability |
