# Knowledge graph index

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

528 nodes.

## entity (85)

| node | summary | in | out | tags |
|---|---|---|---|---|
| [session](nodes/session.md) | A student test session: one student taking one test in one administration, with sections, events and status. | 239 | 21 | delivery |
| [user](nodes/user.md) | A person in ADAM (student, teacher, admin, parent, proctor...) — one users row per tenant identity with role, org memberships (user_orgs), class enrollments, demographics, metadata and login credentials. | 170 | 8 | rostering, auth, pii |
| [client](nodes/client.md) | A tenant (customer program, e.g. a state or district contract) — the top of the rostering hierarchy; one very wide clients row holds ~150 tenant settings, and every user, org, role, test and session belongs to one client. | 151 | 4 | tenancy, settings |
| [org](nodes/org.md) | An organization node (national, state, district/LEA/local, school, department) in a client's org tree; the scoping unit for users, classes, courses, tests and reporting, and the carrier of LTI, Clever, RaaS, Launchpad and shipping settings. | 125 | 6 | rostering, tenancy |
| [job-history](nodes/job-history.md) | A record of a background/bulk job run and its outcome — job_histories for tenant users (imports, exports, QTI export, clone proctor group…) and admin_job_histories for internal admins (CSV imports, admin reset/delete, bulk updates, response export, tenant copy/delete mirror). | 123 | 4 | jobs |
| [admin](nodes/admin.md) | A test ADMINISTRATION (not a person) - one scheduled/practice/dynamic delivery of a test to a selected student population, owning proctor groups, sessions, scan history and testing windows. | 113 | 11 | testing, core |
| [test](nodes/test.md) | A test definition (assessment) - forms, delivery platform, default/overridable settings, timer, scoring rules and prerequisites - that administrations deliver to orgs. | 85 | 13 | testing, core |
| [program-config](nodes/program-config.md) | A program configuration — a client's testing program (e.g. a state's interim program for a school year) defining objectives (raw score, performance levels, lookup/scale tables, external, cross-test, item-metadata), reporting flags, ISR report definitions and cross-test lookup tables; tests copy it into tests.program. | 81 | 6 | programs, scoring, reporting |
| [qti-form](nodes/qti-form.md) | A QTI test form (qti-assessment-test XML with ordered sections of item refs) plus its player settings, form-item index, history, paper PDFs and its links to tests, admins and batteries. | 77 | 8 | qti, content, delivery |
| [proctor-group](nodes/proctor-group.md) | A proctoring group inside an administration: the unit students sign into (test code), a proctor watches (dashboard, timer, room) and optionally live-proctors over Ably/Agora. | 75 | 8 | delivery, proctoring |
| [role](nodes/role.md) | A client-defined role carrying ~240 permission columns (the app's permission keys), scope/level and bank access; every user has exactly one. | 75 | 5 | rostering, auth, permissions |
| [class](nodes/class.md) | A rostered class (OneRoster "class"/section) at a school, belonging to a course, with teacher and student enrollments (user_classes), subjects and academic sessions. | 74 | 7 | rostering |
| [qti-item-result](nodes/qti-item-result.md) | The scored result of one QTI item in one student session (QTI, AD or TestNav delivered), with its raw QTI-player session/responses, rubric trait scores and external (OSCAR/PASS) rater scores. | 70 | 6 | qti, results, scoring |
| [global-setting](nodes/global-setting.md) | Environment-wide key/value row in global_settings - runtime feature flags, kill switches, tunables (timeouts, rate limits, poll intervals) and integration endpoints/credentials, read through a Redis-cached GlobalSettingService and edited by super admins in the internal console. | 62 | 2 | platform, config |
| [qti-item](nodes/qti-item.md) | A QTI (3.0-style qti-* XML) assessment item with derived answer keys, standards, traits, media/stylesheet and shared-stimulus links, workflow state and edit history. | 60 | 8 | qti, content |
| [report-asset](nodes/report-asset.md) | Report files offered for download — `report_assets` (ops/staff-uploaded files scoped to an org or class, stored in S3) plus per-user aggregate-report CSVs (`aggregate_report_assets`) and their generation locks (`aggregate_report_locks`). | 60 | 7 | reporting, files |
| [battery](nodes/battery.md) | A battery — a client-defined bundle of units (each unit = a test/form) scored and reported as one, attached to programs with battery-level objectives, instantiated per student as a student battery that receives PASS battery scores. | 56 | 9 | testing, programs |
| [accommodation](nodes/accommodation.md) | Testing accommodations (PNP features such as TTS, extended time, language, large print) — a global catalog, each client's visible subset and named accommodation profiles, per-student assignments per profile (plus pending-approval changes), and per-AD-session snapshots. | 51 | 7 | accommodations |
| [credential](nodes/credential.md) | Per-tenant integration secrets and hosts (credentials - TestNav, previewer, AD, Launchpad, OSCAR, secure links, Core SFTP), OneRoster OAuth client credentials (oauth_credentials) and per-org RSA LTI signing keys (signing_keys). | 49 | 3 | auth, security |
| [standard](nodes/standard.md) | An academic standard node (authority, publication, section or standard) from Academic Benchmarks, arranged as a tree, that items, banks and reports align to. | 43 | 2 | standards, authoring, reporting |
| [org-license](nodes/org-license.md) | Online test licenses per org — the org_licenses balance row (total = available + reserved + consumed + expired), the online_licenses order lines that feed it, and the trigger-written license_audits trail. | 42 | 4 | licensing, orders |
| [qti-bank](nodes/qti-bank.md) | A client-scoped QTI content bank (natively authored, TestNav-synced or AD-synced) holding QTI items, stimuli, forms, media and per-bank workflow states and metadata schemas. | 42 | 8 | qti, content |
| [admin-user](nodes/admin-user.md) | Internal (Pearson/MZ staff) operator account for the admin-ui / internal console — email + bcrypt password or Pearson SSO (Entra ID, self-provisioned with no permissions), per-feature permission levels, and explicit tenant grants (admin_user_tenants); distinct from tenant users. | 41 | 2 | internal, security, identity |
| [demographics](nodes/demographics.md) | Per-student demographic attributes (gender, birth date, race/ethnicity flags, IEP/LEP/504/ELL, economic and program flags, metadata) used for reporting filters and eligibility. | 36 | 3 | rostering, pii, reporting |
| [ad-test](nodes/ad-test.md) | A teacher "Class Assignment" test built from an AD form (local copy of its items, traits and standards) plus its class administrations (CL_ test codes). | 34 | 9 | ad, class-assignments |
| [course](nodes/course.md) | A course offered by an org (usually school or district) for an academic session; classes are sections of a course; carries grades and subjects. | 34 | 5 | rostering |
| [ad-test-session](nodes/ad-test-session.md) | One student's session on a Class Assignment (ad_test_admins), linked to an AD delivery session, with item results and trait scores pulled back from AD. | 33 | 6 | ad, class-assignments |
| [audit-log](nodes/audit-log.md) | Immutable before/after change history tables — admin_audits, org_audits, role_audits, client_audits, users_audits, test_audits, field_set_audits — each row an action + jsonb snapshots + modifier + Login As impersonator. | 33 | 9 | audit, history, security |
| [program-outcome](nodes/program-outcome.md) | Computed scores per program objective — `program_outcomes` (one row per student × battery × objective, from PASS battery scores) and `session_outcomes` (one row per session × objective: raw score, percent correct, performance level, lookups, scale scores, item-metadata subscores). | 33 | 7 | programs, scoring |
| [academic-session](nodes/academic-session.md) | A OneRoster academic session (grading period, semester, term or school year) that courses and classes belong to. | 31 | 3 | rostering |
| [account](nodes/account.md) | Two related records — `accounts` (a customer account grouping one or more client tenants, e.g. yearly rollovers) and `user_accounts` (the extra tenant/role pairs a single user may switch between). | 31 | 4 | rostering, auth, tenancy |
| [trait](nodes/trait.md) | A scoring trait (rubric dimension with min/max/step) on a constructed-response item — `traits` for legacy authored questions, `qti_traits` for QTI items; trait scores per response hang off it. | 31 | 4 | scoring |
| [mot-order](nodes/mot-order.md) | A paper-materials order (Initial, Additional, Pre-Id or external Reporting) placed through MOT, with its items, history, shipment trackings, plus the per-client MOT distributions and record types it is built from. | 30 | 6 | orders, paper, mot |
| [rejected-test](nodes/rejected-test.md) | A paper answer document that PASS scanned but could not tie to an ADAM session (no Pre-ID), queued for automatic or manual matching to a student session and then reported back to PASS. | 30 | 4 | paper, scoring, pass |
| [item](nodes/item.md) | A legacy Learnosity-authored test item (question set) with history, workflow state, tags, comments, standards, enemies and scored questions. | 29 | 7 | authoring, legacy, learnosity |
| [eligibility-criteria](nodes/eligibility-criteria.md) | Saved, reusable eligibility rule trees (eligibility_criteria) for building eligibility administrations, plus eligibility_sessions - proctor-approval requests for students joining an eligibility/manual admin. | 28 | 6 | testing |
| [item-result](nodes/item-result.md) | A scored response to one item in a legacy Learnosity-delivered session, with per-question results; QTI/AD/TestNav results live in qti-item-result. | 28 | 5 | scoring, results |
| [classroom-session](nodes/classroom-session.md) | One student's attempt at a classroom (My Tests) test: class_room_sessions plus its per-item results and rubric trait scores. | 27 | 10 | classroom, results |
| [qti-shared-stimulus](nodes/qti-shared-stimulus.md) | A QTI shared stimulus (qti-assessment-stimulus passage) in a QTI bank, referenced by many items, with metadata, workflow state, stylesheets and history. | 26 | 4 | qti, content |
| [field-set](nodes/field-set.md) | A client-defined set of tester login (auth) and info fields that a test/admin shows on the student sign-in screen, mainly for dynamic (non-rostered) testing. | 25 | 2 | testing, delivery, settings |
| [form](nodes/form.md) | A legacy Learnosity test form — an ordered set of activities (sections) of items in a bank, with history, tags, scaling and battery links. | 25 | 6 | authoring, legacy, learnosity |
| [subject](nodes/subject.md) | A content area / subject (Language Arts, Mathematics, Science, ...) — global default subjects plus client-created ones — enabled per client via clients_subjects and attached to courses and classes. | 24 | 2 | rostering, settings |
| [admin-request](nodes/admin-request.md) | A support/service request raised by a client user (move student, change session, create student, session irregularity, change accommodation, accommodation request, ...) to admins at an org, with assignment, escalation up the org tree, status history with actors, an archive flag and file attachments. | 23 | 4 | support |
| [bank](nodes/bank.md) | A legacy (Learnosity-era) authoring item bank that groups items, forms, passages, tags and item workflow states for one client. | 23 | 8 | authoring, legacy, learnosity |
| [classroom-test](nodes/classroom-test.md) | A teacher-built "My Tests" classroom test (class_room_tests + item links) and its classroom administrations (class_room_admins) to classes/students. | 23 | 11 | classroom |
| [trait-score](nodes/trait-score.md) | A score on one rubric trait for a legacy (Learnosity) question result; QTI trait scores live with qti-item-result. | 23 | 3 | scoring, results |
| [user-metadata-definition](nodes/user-metadata-definition.md) | A client's user metadata field definition — one of 20 permanent "defined" slots (defined_1..defined_20) or a custom field — whose values live in users.metadata under its key. | 22 | 2 | rostering, settings |
| [qti-media](nodes/qti-media.md) | Media and stylesheet files (CSS, images, audio, video, PDF) stored in the public S3 bucket and referenced by QTI items, stimuli and resources, plus QTI assessment resources (shared rubric blocks). | 21 | 4 | qti, content, media |
| [student-battery](nodes/student-battery.md) | One student's enrolment in a battery (bundle of unit tests) with battery-level scores, license reservation state and the license org charged. | 21 | 7 | battery, licensing, student-assignments |
| [announcement](nodes/announcement.md) | A bulletin-board announcement written by a client user, targeted at org(s) and role(s), shown on dashboards between start and expiry dates, optionally emailed, with file attachments in S3. | 20 | 6 | comms |
| [room](nodes/room.md) | A testing room layout — a live seating room 1:1 with a proctor group, a reusable client room template, or a built-in global room preset. | 20 | 6 | proctoring |
| [admin-testing-window](nodes/admin-testing-window.md) | A named testing date window ("wave") inside one administration, plus each org's selection of a window (admin_org_date_selections) used for paper-materials ordering. | 18 | 5 | testing, orders |
| [launchpad-sync-data](nodes/launchpad-sync-data.md) | Launchpad sync run history (one row per run per org, latest 5 kept) with per-entity counts, pre-allocated skips and errors; plus two legacy tables (launchpad_authorizations, launchpad_date_last_modified) only the dead consumer uses. | 18 | 2 | rostering, sync, launchpad |
| [file-metadata](nodes/file-metadata.md) | One uploaded rostering CSV (OneRoster-style orgs/users/classes/enrollments/... file) - its S3 location in ADAM_S3_INTERNAL, uploader, size and processing status (pending -> available \| error \| system_error) driven by the cron_roster_csv job. | 17 | 3 | platform, files, rostering |
| [tag](nodes/tag.md) | A colour-coded bank-scoped tag that legacy items, forms and passages can carry. | 17 | 2 | authoring, legacy |
| [session-extra](nodes/session-extra.md) | Per-session proctor-dashboard flags (TestNav speeding alert, section-boundary waiting) kept off the hot sessions row. | 16 | 3 | delivery, proctoring |
| [ss-config-agg](nodes/ss-config-agg.md) | SingleStore configs_v2 table - one denormalised reporting-config row per test, program, battery and administration, keyed by customer_code + codes; drives every v2 report filter. | 16 | 6 | analytics, singlestore, reporting |
| [tenant-copy-run](nodes/tenant-copy-run.md) | Provenance of a tenant created by Tenant Copy (tenant_copies row, one per copied client) plus the Redis job record (tenantcopy.Job) that tracks each Tenant Copy export/import and Tenant Delete run. | 16 | 4 | internal, tenant |
| [activity](nodes/activity.md) | A Learnosity activity — one section of a legacy form — holding the ordered items and the Learnosity activity reference used at delivery. | 15 | 3 | authoring, legacy, learnosity |
| [mot-pre-id-student](nodes/mot-pre-id-student.md) | A student included in a Pre-ID order - the local copy of the roster line sent to MOT so paper answer documents are pre-printed with the student's barcode. | 14 | 4 | orders, paper, pre-id |
| [passage](nodes/passage.md) | A legacy Learnosity reading passage (feature) shared across items in a bank, with history, tags and item links. | 14 | 5 | authoring, legacy, learnosity |
| [proctor-instruction](nodes/proctor-instruction.md) | A proctor- or student-facing instruction (script document, audio, video or external link) attached to a test, or to one administration for student instructions; files live in the internal S3 bucket. | 13 | 5 | proctoring |
| [schema-migration-history](nodes/schema-migration-history.md) | Trigger-maintained history of golang-migrate runs (schema_migrations_history) — one row per migration attempt with BEGIN/SUCCESS/FAIL status — surfaced on the admin-ui Migrations History page and reported to New Relic. | 13 | 1 | internal, db |
| [session-review](nodes/session-review.md) | A reviewer's reviewed flag and notes on a session (proctor/session reviewer sign-off in Session Explorer). | 13 | 3 | delivery |
| [session-snapshot](nodes/session-snapshot.md) | Point-in-time copies of the student and demographics attached to a session (or a student battery), so reports show who the student was when tested. | 13 | 5 | delivery, reporting |
| [sync-setting](nodes/sync-setting.md) | Per-org Launchpad sync schedule (recurrence, cron, email recipients) plus the program-to-Launchpad result-push flags and Redshift program sync watermarks. | 13 | 3 | rostering, sync |
| [threshold-set](nodes/threshold-set.md) | Dead reporting-threshold set (named list of percent bands with colors/labels) — table and threshold_set_id columns still exist, but the CRUD API is unregistered and no backend code loads the set. | 13 | 2 | reporting, dead |
| [ss-outcome-agg](nodes/ss-outcome-agg.md) | SingleStore outcomes_v2 fact table - one denormalised row per student x objective for each session (entity_type session) and student battery (entity_type battery), with demographics, classes and org path; the source of v2 performance reports. | 12 | 8 | analytics, singlestore, reporting |
| [clever-sync-data](nodes/clever-sync-data.md) | One progress row per Clever district for the full Clever sync - per-entity counters, max counts, errors, failed/finished flags; also the cancel signal. | 11 | 2 | rostering, sync |
| [client-terms](nodes/client-terms.md) | A client's Terms & Conditions for the tester (secure) app — sanitised rich-text content and/or one uploaded PDF in S3; the PDF wins when both exist. | 11 | 2 | settings, tester |
| [practice-test-page](nodes/practice-test-page.md) | A client's public practice-test landing page — program tabs (slug, title, welcome, instructions) with subject sections of ADAM practice admins or TestNav links — stored as clients.practice_test_page_config JSONB; the practice_test_* tables exist but are unused. | 11 | 3 | settings, tester, public |
| [ss-item-result-agg](nodes/ss-item-result-agg.md) | SingleStore item_results_v2 fact table - one denormalised row per student x item (and per trait under an item) for the latest attempt, with demographics, classes and org path; the source of v2 item analysis and response reports. | 11 | 8 | analytics, singlestore, reporting |
| [ss-sync-watermark](nodes/ss-sync-watermark.md) | SingleStore sync bookkeeping - process_info watermarks for the Go sync (old cluster) and lastExecutions / currentExecutions / process_errors for the stored-procedure sync (new cluster). | 11 | 4 | analytics, singlestore, sync |
| [timer-template](nodes/timer-template.md) | A client-shared, named test timer configuration (sections/breaks, direction, lock) that test authors can apply to a test's timer_config. | 11 | 3 | testing |
| [org-combo](nodes/org-combo.md) | A deduplicated combination of (enrolled orgs, testing org, reporting orgs) referenced by sessions so org-scope checks become a lookup on a combo id instead of per-session org joins. | 10 | 2 | rostering, scoping, performance |
| [lid-info](nodes/lid-info.md) | A "Learner in Danger" (LID) alert record posted by TestNav/the external scoring pipeline for a response in a session, stored with the item and previewer context. | 8 | 4 | scoring, safety |
| [timing-code](nodes/timing-code.md) | A timing (extended-time) code definition — e.g. ACT PNP T1..T8 — mapping a code to a test-section duration multiplier, with app-default rows and per-client overrides; sessions carry the raw code, rooms the normalized tier. | 8 | 2 | delivery, accommodations |
| [adaptive-session](nodes/adaptive-session.md) | Opaque adaptive (CAT) engine state for a session, as reported by PASS for TestNav adaptive tests. | 7 | 2 | delivery, scoring |
| [flow-sync](nodes/flow-sync.md) | Single-row heartbeat table whose sync_time is bumped every 2 minutes so SingleStore pipelines and monitoring can tell the ADAM job scheduler is alive. | 7 | 1 | sync, monitoring |
| [recovery-data](nodes/recovery-data.md) | Encoded client-side response snapshots posted by the legacy tester so an in-progress session could be restored. | 5 | 2 | delivery |
| [ss-legacy-agg](nodes/ss-legacy-agg.md) | Legacy v1 SingleStore report tables (session_data, session_outcomes, item_results, program_outcomes and *_archive copies) - no longer written by any sync, still read by v1 performance reports and deleted from on some paths. | 5 | 3 | analytics, singlestore, legacy |
| [ss-target-outcome](nodes/ss-target-outcome.md) | SingleStore target_outcomes table - uploaded per-org target (claim/target) performance values used by the target-outcomes report; written straight to SingleStore, not synced from Postgres. | 4 | 3 | analytics, singlestore, reporting |
| [program-sync-state](nodes/program-sync-state.md) | Postgres program_sync_states table - per program and sync type high-water mark (latest id + time) for the Redshift sync. | 3 | 2 | analytics, redshift, legacy |
| [rs-legacy-agg](nodes/rs-legacy-agg.md) | Redshift copies of the v1 report tables (session_data, session_outcomes, item_results, program_outcomes) filled by the optional RS sync; nothing in the app reads them any more. | 3 | 3 | analytics, redshift, legacy |
| [archive](nodes/archive.md) | The archives table — JSON snapshots of rostering/session rows removed by the old archive/unarchive flow (ArchiveService); no code path calls it any more. | 2 | 1 | internal, dead |

## module (107)

| node | summary | in | out | tags |
|---|---|---|---|---|
| [frontend-app](nodes/frontend-app.md) | Vue 3 + PrimeVue primary staff app (frontend/) - router with client-side role-column guards, permission-filtered sidebar menu, JWT-in-localStorage session, server-loaded i18n; hosts test management, rostering, reporting, operations, orders, TestNav content and the student mini-app. | 123 | 20 | ui, frontend |
| [legacy-client](nodes/legacy-client.md) | Legacy Vue 2.6 SPA (client/) - vue-cli/webpack, Options API, bootstrap-vue; hash-mode router with 180+ routes guarded by role_obj columns; still built into the adam-app image and served at APP_URL, plus static sub-apps (legacy tester pages, internal-console login). Most screens have Vue 3 counterparts in frontend/admin-ui/tester-ui. | 102 | 81 | ui, legacy, vue2 |
| [internal-console](nodes/internal-console.md) | Staff-only support console backend — InternalAPI handlers plus InternalService / InternalSessionsService / InternalAdminsService / InternalUsersService: admin-app auth (password or Pearson SSO) and tenant scoping, environment-token mint/retire, tenant create/clone/rollover/delete, credentials, user fixes, Login As, session/admin/test resets, imports and ops stats. | 86 | 56 | internal, ops, security |
| [roster-sync](nodes/roster-sync.md) | Pulls rosters into ADAM from Clever (full + nightly events), Launchpad (scheduled/manual full or delta, real-time notifications, session_orgs rebuild) and OneRoster/RaaS (nightly delta), runs the Core-SFTP accommodation drop and the flow_sync heartbeat. | 86 | 49 | rostering, sync |
| [ad-delivery](nodes/ad-delivery.md) | AD (Authoring & Delivery) integration — src/ad HTTP client, AdamADService (AD proxy, AD→QTI content sync, Class Assignments), AdamADDeliveryService (AD session registration/PNP), the AD webhook and the cron_AD_sync section poller. | 79 | 33 | ad, integration, class-assignments |
| [singlestore-sync](nodes/singlestore-sync.md) | Postgres -> SingleStore data movement for reporting - Go sync jobs into the original cluster, stored-procedure processing on the Flow-replicated new cluster, SS migrations, connection routing (USE_NEW_SS) and the delete propagation API every result-mutating path calls. | 77 | 30 | analytics, singlestore, sync |
| [session-service](nodes/session-service.md) | Student test sessions backend — lifecycle/state machine (UpdateStates), creation, reset/delete, accountability codes, sections, transfers, Session Explorer queries/exports, events, reviews, snapshots, extras, and the session async jobs. | 75 | 36 | delivery |
| [internal-operations](nodes/internal-operations.md) | InternalOperationsService and the /internal Operations API — staff tooling to search/edit/delete tenant records (sessions, admins, tests, programs, batteries, licences, report assets, rejected tests), queued CSV imports and bulk updates, the Redis job-status board, plus job-history persistence (JobService), schema-migration history and the dead ArchiveService. | 71 | 31 | internal, ops |
| [auth](nodes/auth.md) | Login (password, Clever, Launchpad OIDC, Pearson SSO via Entra ID for both apps, SSO bootstrap exchange), session JWT minting/validation (AuthRequired), environment-token guard (EnvironmentJWT), lockout, password reset, parent accounts, Login As and its audit attribution. | 67 | 31 | auth, security |
| [admin-service](nodes/admin-service.md) | Test administrations (admin = test administration, not a person) - create/update/delete, override checks, summaries and counts, proctor-group listings, login-code exports, admin submit, scan history, testing windows/date selections, saved eligibility criteria, XLSX bulk import/export of admins, and the test assignment report. | 65 | 38 | testing, core |
| [async-jobs](nodes/async-jobs.md) | Background scheduler started from main.go - async.Setup (UTC gocron scheduler with a Redis distributed lock, plus un-locked sweeper goroutines and SQS consumers) and async.CSTSetup (America/Chicago scheduler for licence expiry). | 63 | 23 | platform, jobs |
| [performance-reports](nodes/performance-reports.md) | Performance reports (v1 legacy + v2), ISRs (individual student reports, single HTML and bulk PDF zips), report assets library and the family portal ISR-link export. | 63 | 28 | reporting, isr, pdf |
| [admin-ui-app](nodes/admin-ui-app.md) | Vue 3 + PrimeVue staff console (admin-ui/, "ADAM Admin") for Pearson/internal operators - tenant setup, users, credentials, operations record editing, imports/exports, SingleStore tools, tenant copy/delete, global settings and the AI data agent - over the VPN-only /internal API. | 59 | 31 | ui, admin-ui, internal |
| [qti-engine](nodes/qti-engine.md) | The QTI content engine (src/v2/qti + QTIAPI/QtiPlayerAPI) — CRUD for QTI banks, items, stimuli, forms, media and resources; XML parsing, sanitising and rendering for players/print; the in-house response-processing scorer; QTI export packaging; QTI player sessions/responses and their JWT auth. | 57 | 35 | qti, content, scoring, delivery |
| [external-queue-consumer](nodes/external-queue-consumer.md) | The generic SQS worker (`src/v2/sqs`): one long-poll goroutine per queue URL that decodes `{actionType, payload}` and dispatches to the owning service. | 51 | 27 | queue, platform, async |
| [tenant-copy-service](nodes/tenant-copy-service.md) | Tenant Copy engine (package tenantcopy) — exports one tenant's configuration (no people) to a versioned tar.gz artifact and imports it into another environment as a fresh copy, a --replace, or an in-place --update. | 48 | 46 | internal, tenant, ops |
| [testnav-delivery](nodes/testnav-delivery.md) | TestNav integration layer — `MTestNavService` HTTP client (auth, login registration, status/section control, exports), PNP/accessibility mapping, TestNav form/item import into QTI tables, item-response export, and the cron pollers that pull TestNav state into sessions. | 48 | 26 | delivery, integration, testnav |
| [external-scoring](nodes/external-scoring.md) | External scoring round-trips — receives PASS session/battery score batches, OSCAR trait scores, no-Pre-ID paper attempts and LID flags; applies PASS attempts to sessions (`ExternalScoreService`), OSCAR scores to item results (`OscarScoringService`); holds the PASS, OSCAR and RMS HTTP clients. | 45 | 30 | scoring, integration |
| [ops-scripts](nodes/ops-scripts.md) | src/scripts — ~120 standalone `package main` Go (and a few Node) programs run by hand against an ADAM database for exports, backfills, migrations, tenant/roster fixes and test-data generation; not built by CI. | 45 | 6 | ops, scripts |
| [user-service](nodes/user-service.md) | UserService (user_service.go, ~10k lines) — user CRUD/search/export, profile and account switching, temporary students and merges, CSV imports (users, non-student users, accommodations incl. Core SFTP, metadata, assignment tags), parents/agents, preferences; plus AccountService, UserMetadataDefinitionService, FieldSetsService and LidService. | 45 | 34 | rostering, pii, import |
| [tester-ui-app](nodes/tester-ui-app.md) | Vue 3 + PrimeVue SPA (tester-ui/) for students and proctors — test-code sign-in wizard, platform hand-off (AD / TestNav / inline Learnosity), CL_ class-assignment and form-preview AD player hosts, practice landing page, and the anonymous/cross-app proctor dashboard. | 43 | 19 | ui, tester-ui, delivery, proctoring |
| [tenant-delete-service](nodes/tenant-delete-service.md) | Tenant Delete engine (package tenantdelete) — deletes a tenant or groups of its data (sessions, administrations, tests, programs, rostering, orders, reports, tenant), planning from the target DB's own catalog, children before parents, in re-runnable batches, after a Tenant Copy backup. | 41 | 33 | internal, tenant, ops, destructive |
| [tester-service](nodes/tester-service.md) | Student-facing test delivery backend — test-code/field sign-in, session token, confirm/eligibility request, platform launch (Learnosity, QTI, AD, TestNav just-in-time registration), state/item updates, read-aloud, practice, recovery uploads. | 40 | 19 | delivery |
| [proctor-service](nodes/proctor-service.md) | Proctoring backend — proctor dashboard and actions (ProctorAPI), proctor groups incl. alias/default groups, cloning, rooms and templates, the proctor-run timer, anonymous proctor login, remote proctoring auth (Ably/Agora). | 39 | 22 | delivery, proctoring |
| [reporting-service](nodes/reporting-service.md) | ReportingService — Postgres-backed progress/activity reports, Louisiana class/ISR reports, legacy aggregate (agg) report CSVs, generic admin CSV export and the home dashboard counts. | 39 | 25 | reporting |
| [order-service](nodes/order-service.md) | Paper materials ordering via MOT - distributions, Initial/Additional orders, Pre-ID orders, shipment tracking sync, order reports and order export files. | 38 | 24 | orders, paper, mot |
| [oneroster-api](nodes/oneroster-api.md) | ADAM's OneRoster app (src/one_roster) - OneRoster 1.2 read API with OAuth2 client credentials, partner write endpoints (Launchpad notifications, online license orders, ACT orders), ADAM-to-OR converters/filters, and the RaaS delta-events consumer. | 37 | 27 | rostering, oneroster, api |
| [admin-generation](nodes/admin-generation.md) | Session generation for administrations - estimates, proctor-group and session creation per selection type (class/course/district-grade/eligibility/dynamic/manual), form assignment, login auth strings, and rescans (on-demand, hourly auto, per-student) incl. the newer admingen package. | 32 | 23 | testing, core, jobs |
| [classroom-service](nodes/classroom-service.md) | Teacher "My Tests" classroom tests: author a test from QTI items, assign it to classes, deliver via /crtester + QTI player, save off and total scores, serve class reports. | 31 | 23 | classroom |
| [lti](nodes/lti.md) | LTI tool provider - LTI 1.3 OIDC login/launch (RS256 id_token), deep linking, NRPS roster sync, AGS grade passback, LTI 1.1 OAuth1 launch; auto-provisions users, schools, courses, classes, admins and sessions and logs the user into ADAM. | 31 | 20 | auth, integration, lti |
| [student-assignments](nodes/student-assignments.md) | Student Assignments (assign rostered students to program administrations by creating sessions, with battery + license accounting and bulk SQS jobs) and the Student Dashboard (one student's results across Postgres and SingleStore). | 31 | 28 | student-assignments, student-dashboard |
| [test-service](nodes/test-service.md) | Tests - CRUD/clone/archive, form attachment (test_forms, qti_test_forms), org sharing, override propagation to admins, timers and timer templates, XLSX bulk test import and form-assignment import/export, test audit. | 29 | 19 | testing |
| [client-service](nodes/client-service.md) | ClientService (client_service.go) plus SubjectsService and ClientTermsService — tenant settings read/save with audit, credentials cache, admin-user and OAuth/job-history helpers for the internal console, subjects, terms & conditions, practice test page and secure-app config. | 28 | 21 | tenancy, settings |
| [saveoff-service](nodes/saveoff-service.md) | Save-off: after a session is submitted, pulls/scores its responses (Learnosity, QTI, AD), writes item results, totals and outcomes, sets score_status, and fans out to OSCAR, LTI and program sync. | 27 | 16 | scoring, delivery |
| [program-service](nodes/program-service.md) | Programs and scoring rules — ProgramConfigService (program configs, report definitions, battery associations, objective CSVs, audits, scoping), BatteryScoreService (PASS battery scores → program outcomes), LaunchpadCategoriesService (pushes program categories/line items/results to Launchpad), objective scoring in TestProgram.Score, and the otto-based custom item scorer. | 26 | 25 | programs, scoring |
| [scripts-session-repairs](nodes/scripts-session-repairs.md) | src/scripts auto_rescan, auto_submit, backfillUnattemptedItemScores, battery_elk_link, clean_ss, clear_eligibility_admin, growth_loader, huge_session_score, il_reporting_org_cleanup — one-off repairs of sessions, scores, session orgs and SingleStore rows. | 26 | 34 | ops, scripts, sessions, scoring, singlestore, data-fix |
| [authoring-service](nodes/authoring-service.md) | Legacy Learnosity-era authoring back end — banks, items (with questions/traits), forms/activities, passages, tags, item states, item metadata CSV — plus the shared standards lookup service. | 25 | 29 | authoring, legacy, learnosity |
| [org-service](nodes/org-service.md) | OrgService (org_service.go, ~4.2k lines) — org CRUD, CSV org import, org-tree/hierarchy and scope queries, identifier-uniqueness rules, org audit, exports, online-licence helpers, plus the org_licenses counter invariant. | 23 | 14 | rostering, tenancy |
| [api-server](nodes/api-server.md) | The Go/Gin HTTP server - main.go startup order, global middleware chain, static SPA serving, secure vs insecure API groups (BindAll), shared handler helpers (handleError, fields=, Respond*), request context and DB middleware. | 22 | 15 | platform, backend, http |
| [org-scope](nodes/org-scope.md) | Row-level access scoping - the orgscope checkpoint + authz decision engine (end users confined by client/org/class, shadow mode), the internal-console tenant scope for staff AdminUsers, and the teacher self-scope helper. | 20 | 10 | platform, auth, security |
| [scripts-data-fixes](nodes/scripts-data-fixes.md) | Miscellaneous one-off ops scripts in src/scripts (lock_cleanup .. program_config) — bulk session submit, MOT order backfill, migration gap-fill, user metadata, program objective fixes, CAE score export, sandboxes. | 20 | 13 | ops, scripts, data-fix |
| [ai-chat](nodes/ai-chat.md) | In-app AI assistants on AWS Bedrock - the internal-console Data Analyst (LLM-generated SQL on a dedicated read-only Postgres DSN), KB help chat, and the customer-facing unified chat that routes between KB, SingleStore Analyst and Salesforce hand-off; sessions kept in Redis. | 19 | 11 | ai, chat |
| [class-service](nodes/class-service.md) | ClassService, CourseService and AcademicSessionService — CRUD, scoped listing, enrollment (user_classes) management and quick CSV class upload for classes, courses and academic sessions. | 19 | 20 | rostering |
| [csv-rostering](nodes/csv-rostering.md) | OneRoster-CSV file rostering - users upload orgs/academic_sessions/courses/classes/users/demographics/accommodations/roles/enrollments CSVs to S3; a 5-minute job validates each pending file, upserts rows, and marks the file available or writes an error CSV. | 19 | 14 | rostering, csv, upload |
| [role-service](nodes/role-service.md) | RoleService — CRUD for client roles (the permission-column rows), bank visibilities, role_permissions entitlements, base-role seeding and auth-cache invalidation. | 19 | 9 | rostering, auth, permissions |
| [admin-ui-components](nodes/admin-ui-components.md) | admin-ui shared Vue 3 wrappers (ADAM* table/dropdown/dialog/toast), a11y composables and directives, plus the domain components behind Internal Operations, SingleStore tools, Config Explorer and Tenant Copy/Delete. | 18 | 11 | ui, admin-ui, components, a11y |
| [accommodation-service](nodes/accommodation-service.md) | AccommodationsService — accommodation catalog with client overrides, client accommodation profiles, per-student assignment diffing with approval workflow and client validation rules, session TTS toggle; plus the timing-code registry (extended-time multipliers) and the extended-time-code visibility gate. | 17 | 13 | accommodations, delivery |
| [build-deploy](nodes/build-deploy.md) | How ADAM is built, tested and shipped - one multi-stage Dockerfile producing four images (same Go binary, a different SPA in /app/client/dist), a Jenkins pipeline that pushes them to ECR and triggers per-branch manifest deploys, ~45 GitHub Actions workflows (build, gates, e2e, release tooling), the Makefile and git hooks. | 17 | 8 | infra, ci, build, deploy |
| [scripts-roster-fixes](nodes/scripts-roster-fixes.md) | src/scripts access_code, claim_code, accommodation_update, copy_client_logos, csv_file_rostering, data_purge, gcps* — tenant/roster data fixes (student codes, accommodation profiles, logos, CSV rostering, GCPS roster clean-ups) and tenant/org purges. | 17 | 25 | ops, scripts, roster, tenant, data-fix, purge |
| [scripts-content-migration](nodes/scripts-content-migration.md) | src/scripts ab, ab_peer, activities, ad_migrate, ad_tmp, certica_bank, download_media, irf — standards loading and content migrations (Certica/Learnosity → legacy items, ADAM QTI bank → AD), plus QTI media/IRF helpers. | 16 | 16 | ops, scripts, content, standards, ad, learnosity |
| [singlestore-report-query](nodes/singlestore-report-query.md) | SingleStore read/query layer for reports - SingleStoreServiceV2 (v2 performance reports, ISR, results explorer, item analysis over configs_v2/outcomes_v2/item_results_v2/target_outcomes), legacy SingleStoreService (v1 tables) and the typed in-memory collections that aggregate the rows. | 16 | 8 | analytics, singlestore, reporting |
| [websocket-hub](nodes/websocket-hub.md) | desertbit/glue socket hub mounted at /glue/ws and /glue/ajax for live proctor updates - sockets can still subscribe to topics, but Publish/Emit is a no-op (Postgres NOTIFY fan-out commented out) and EmitLocal has no caller, so no message is ever delivered. | 16 | 1 | platform, realtime |
| [scripts-client-exports](nodes/scripts-client-exports.md) | src/scripts agg_report*, bie_pre_id, cognia_export, extract (milk), family_portal, ice_parser — hand-run customer/state data extracts (aggregate CSVs, BIE/ICE pre-ID files, CAE/Cognia JSON, PGCPS ESEA/IRF, Family Portal ISR roster). | 15 | 23 | ops, scripts, export, reporting, pre-id |
| [scripts-louisiana-reporting](nodes/scripts-louisiana-reporting.md) | src/scripts/la_* — offline Louisiana (LDOE) per-window and EOY state exports, overlays and ISR/class-report HTML/PDF generation, run by hand on adam-jobrunner. | 15 | 12 | ops, scripts, louisiana, reporting, export |
| [fe-composables](nodes/fe-composables.md) | Vue 3 composables of the staff frontend (frontend/src/composables) - singleton app state (feature flags, toasts/announcer, version check, unified chat), form/validation/unsaved-change guards, filter persistence, a11y/AG Grid keyboard helpers, and data loaders for reporting, proctor timer, accommodations, student/teacher dashboards and test launch. | 14 | 19 | ui, frontend, composables, a11y |
| [rejected-tests-service](nodes/rejected-tests-service.md) | Receives PASS no-Pre-ID paper documents, auto-matches them to student sessions, supports manual matching, reports matches to PASS and serves scan images from RMS. | 14 | 12 | paper, scoring, pass |
| [scripts-qti-import](nodes/scripts-qti-import.md) | src/scripts/qti (+ qti_trait_cleanup, learnosity) — QTI content import/export, cross-tenant bank copy, bank wipe, and ~40 one-off bulk XML/metadata fixers for QTI items, forms and stimuli. | 14 | 23 | ops, scripts, qti, content, import |
| [isr2](nodes/isr2.md) | templ (a-h/templ) HTML renderer for ISRs — isr2 (active, widget-based, driven by a program's ISR report definition) and the legacy individualStudentReports views used by v1. | 13 | 2 | reporting, isr, templates |
| [session-exports](nodes/session-exports.md) | Session Explorer async CSV exports (sessions, session sections, session events) and the bulk "update reporting orgs" and "update accountability codes" template/upload, all as SessionService methods in sessions_export.go driven by job_history + SQS FILE_PROCESS. | 12 | 18 | sessions, export |
| [singlestore-admin-tools](nodes/singlestore-admin-tools.md) | Staff tooling over SingleStore - search/edit report rows, rewind sync watermarks, trigger custom resyncs (InternalSingleStoreService) and the Table Explorer / Sync Health that compares SingleStore rows with Postgres on either cluster (SingleStoreExplorerService). | 12 | 13 | analytics, singlestore, internal |
| [email-sender](nodes/email-sender.md) | Outbound transactional email abstraction (src/v2/email) - EmailSender interface with SendGrid (default when SENDGRID_API_KEY is set) and Postmark implementations, chosen per call by NewEmailSender with a Redis override. | 11 | 5 | platform, email |
| [puppeteer-lambda](nodes/puppeteer-lambda.md) | Node.js AWS Lambda (lambda/puppeteer-lambda, "adam-isr-pdf") that consumes GENERATE_PDF messages from the ADAM_ISR_PDF_SQS_URL queue, renders the ISR HTML from S3 to an A4 PDF with headless Chromium, writes it back to S3, bumps job_histories progress, and signals ADAM to zip when the job's last PDF is done. | 11 | 8 | lambda, reporting, isr, pdf |
| [cow-service](nodes/cow-service.md) | COW client code — fetch COW documents for sessions (ISR modal) and process COW_REPORT_ASSETS_IMPORT SQS messages into the report-assets import job. | 10 | 7 | cow |
| [fe-components](nodes/fe-components.md) | Shared Vue 3 components of the staff frontend (frontend/src/components) - the mandatory ADAM* wrappers around PrimeVue/AG Grid (tables, dropdowns, dialogs, popovers, toggles, toasts), rich-text rendering, and reusable domain widgets (rostering tabs, session tables, student responses, chat). | 10 | 18 | ui, frontend, components, a11y |
| [item-results-reporting](nodes/item-results-reporting.md) | Item analysis / standards / trait / reportable-item-group reporting over SingleStore item_results_v2 + outcomes_v2 (v2) and legacy item_results/session_data (v1), with Postgres for tests, standards and traits and S3 for raw responses. | 10 | 11 | reporting, singlestore |
| [logging](nodes/logging.md) | Backend logging pipeline - logrus with caller info, per-request logger + request id (logging.Logger middleware), JSON file + stdout for CloudWatch, Splunk HEC hook, New Relic log forwarding, pretty local formatter, quiet-cancel hook, system stats, and the browser client-log ingest lane. | 10 | 5 | platform, observability |
| [request-service](nodes/request-service.md) | Admin/support requests - submit with attachments, list new/assigned/mine/all with filters, assign, escalate up the org tree, resolve, return/resubmit, archive, CSV export, and apply approved accommodation changes. | 10 | 12 | support |
| [results-service](nodes/results-service.md) | ResultsService + ResultsAPI — teacher/hand scoring of open-ended responses (legacy question results, QTI/TestNav/AD item results, classroom item results), class result views and org hand-scoring screens. | 10 | 17 | reporting, scoring |
| [scripts-dev-tooling](nodes/scripts-dev-tooling.md) | src/scripts data_generation (base_data, base_tenant_data, clone_tenant, qti_data, roster_generation, admin_simulation), i18n_diff, check_files — synthetic tenant/roster/QTI/test-taking data for dev and load testing, plus small developer utilities. | 10 | 20 | ops, scripts, test-data, dev |
| [scripts-louisiana-support](nodes/scripts-louisiana-support.md) | src/scripts la_accomms, la_assets, la_csv, headless — Louisiana (LDOE) support tools: load window accommodations, register generated report files as report_assets, convert the fixed-width export to CSV, and Puppeteer PDF/CSV rendering of LA reports. | 10 | 9 | ops, scripts, louisiana, reporting, accommodations |
| [scripts-maine](nodes/scripts-maine.md) | src/scripts/maine — Maine science (MESCI) pre-ID student roster loader, org loader, and spring results extract with score-table post-processing. | 10 | 16 | ops, scripts, maine, roster, export |
| [scripts-vt-reporting](nodes/scripts-vt-reporting.md) | src/scripts vt_assets, vt_demos, vt_outcomes, vt_reporting_org_cleanup and the generic report_assets loader — Vermont (VTCAP) end-of-year loads of external scores, demographics, report-asset references and reporting-org corrections. | 10 | 12 | ops, scripts, vermont, reporting, data-load |
| [tester-ui-components](nodes/tester-ui-components.md) | Shared components, composables and directives of tester-ui - student sign-in step cards and secure-app checks, the proctor dashboard's session cards/modals and action composables (state changes, timer, RTPaaS/Ably remote proctoring), AD player script loader, and the cross-app ADAM* a11y wrappers. | 10 | 13 | ui, tester-ui, proctoring |
| [results-explorer](nodes/results-explorer.md) | Results Explorer — paginated per-student/per-battery score listing over SingleStore outcomes for a program, plus async CSV export with objective columns. | 9 | 12 | reporting, singlestore, export |
| [scripts-state-rostering](nodes/scripts-state-rostering.md) | src/scripts tsdl, tsdl/demos, tsdl_csv, raas_dump — Louisiana TSDL (Teacher-Student Data Link) roster loads into orgs/courses/classes/users/demographics for the LA prod client, a wipe SQL, and a one-org OneRoster/RaaS delta-sync trigger. | 9 | 13 | ops, scripts, louisiana, rostering, legacy |
| [config-explorer](nodes/config-explorer.md) | Read-only Config Explorer — renders every tenant's clients settings (~130 columns) and per-role permissions (~240 roles columns) with labels, tabs, decoded value scales and secret redaction; compare and xlsx export for up to 10 tenants. | 8 | 4 | internal, config, read-only |
| [redshift-sync](nodes/redshift-sync.md) | RedshiftSyncService - optional 10-minute job copying per-program session_data, session_outcomes and item_results from Postgres into Redshift via merge tables. | 8 | 9 | analytics, redshift, legacy |
| [response-export](nodes/response-export.md) | Admin App "Response Export" — background job that dumps submitted TestNav/AD (QTI) item responses, scores and trait scores for a client's program/tests as a per-test wide CSV zip or one consolidated long CSV in internal S3. | 8 | 16 | export, internal, reporting |
| [announcement-service](nodes/announcement-service.md) | Bulletin board - create/edit/delete client announcements with org and role audiences, S3 attachments with signed URLs, audience queries for dashboards, and notification emails (immediate or by the daily cron). | 6 | 12 | comms |
| [e2e-automation](nodes/e2e-automation.md) | e2e-automation/ - Playwright + playwright-bdd (Gherkin) UI suite with page objects, plus a Vitest API suite; runs against deployed staging tenants (regular, wida, adam-previewer) after an idempotent API fixture seeding step (env:setup). | 6 | 27 | test, e2e, qa, infra |
| [legacy-client-components](nodes/legacy-client-components.md) | Shared Vue 2 components of the legacy client (client/src/components) - page shell, nav, bank config widgets, rubrics/response viewers, session/proctor cards, user editors, tables. | 6 | 24 | ui, legacy, components |
| [branding-service](nodes/branding-service.md) | Per-client branding - theme CSS and four header logos (classic/app x light/dark) stored as files in the public S3 bucket and served through CloudFront; no database tables. | 5 | 5 | branding, platform |
| [external-lookup-service](nodes/external-lookup-service.md) | ExternalLookupService - cross-tenant, read-only SQL for the PSAES org and Pre-ID barcode lookups; validates/normalises requests, pages results, and reports not-found codes over the whole match. | 5 | 6 | psaes, external, service |
| [proctor-column-prefs](nodes/proctor-column-prefs.md) | Per-proctor Proctor Dashboard column layout (hidden columns + column order), stored in Redis by user id and applied on every dashboard the proctor opens; edited from the dashboard's Columns panel (ADAM-841). | 5 | 3 | proctoring, delivery, tester-ui |
| [scripts-singlestore-sync](nodes/scripts-singlestore-sync.md) | src/scripts ss_* , singlestore/outcomes_v2, upload_target_outcomes, rpt_sync — hand-run SingleStore (and Redshift) re-syncs, key rewrites, v1→v2 table migration, target-outcome loads and synthetic data, outside the scheduled sync. | 5 | 14 | ops, scripts, singlestore, reporting, data-fix |
| [ss-lambda](nodes/ss-lambda.md) | Serverless singlestore_sync Lambda (bin/ss_lambda) that once stopped SingleStore pipelines, migrated, restarted pipelines and ran SyncSessions; its PROD handler is a no-op. | 5 | 2 | analytics, singlestore, lambda, dead |
| [fe-api-client](nodes/fe-api-client.md) | frontend/src/services - the Vue 3 staff app's axios service layer; one file per backend area, plus the global auth interceptor, token refresh and the direct AD data-API client. | 4 | 52 | ui, frontend, api-client |
| [i18n](nodes/i18n.md) | Server-side translation bundles (src/v2/services/i18n) - embedded JSON language files for the legacy client, Vue 3 frontend, admin-ui and tester-ui in en/es/fi/fr/sv, merged with per-client label overrides; plus a Translator used by exports, ISR templates and error messages. | 4 | 2 | platform, i18n |
| [license-reconcile](nodes/license-reconcile.md) | Daily report-only reconciliation of online_licenses (purchase balances) against org_licenses (summary counters); logs one warning per drifted org and emails DEV_SUPPORT_EMAILS with a CSV. | 4 | 5 | licensing, jobs, report-only |
| [test-support](nodes/test-support.md) | src/testsupport - shared Go test harness - per-test cloned template Postgres DB, tenant/user/class/test/session factories, an apitest request builder that drives the real router as a logged-in user, fakes for SQS/HTTP partners/Redis/S3/email/MySQL, and the product-coverage + deadcode reporter. | 4 | 2 | testing, platform |
| [html-templates](nodes/html-templates.md) | src/template — Go html/template files loaded by gin (LoadHTMLGlob) or parsed directly; delivery launch pages, QTI print pages, internal console pages, emails, Louisiana report pages and the external-ISR error page. | 3 | 0 | templates, ui |
| [local-dev-env](nodes/local-dev-env.md) | Local development stack - docker-local/docker-compose.yaml (Postgres 16 with aws_s3 extension on 5433, SingleStore dev, LocalStack SQS/S3/IAM/STS, Redis 7) plus air hot reload (.air.toml, make serve) for the Go backend. | 3 | 6 | dev-tooling, infra, local |
| [proctor-instructions-service](nodes/proctor-instructions-service.md) | ProctorInstructionsService — CRUD for proctor/student instruction rows (scripts, audio, video, links) and their files in the internal S3 bucket, with presigned download URLs. | 3 | 7 | proctoring |
| [rostering-lambda](nodes/rostering-lambda.md) | Deprecated Go Lambda (lambda/rostering_lambda) that once processed pending OneRoster CSV uploads on a 10-minute schedule; superseded by the in-process csv-rostering job, and it no longer compiles. | 3 | 2 | lambda, rostering, dead |
| [scripts-results-fixes](nodes/scripts-results-fixes.md) | src/scripts regenerate_qti_item_result_responses, save_response, save_responses_to_s3, score_export, test_validation_export, theta — rebuild qti_item_results.response strings, move raw responses to S3, export CAE/Cognia score JSON to S3, plus an IRT theta prototype. | 3 | 13 | ops, scripts, results, s3, export, data-fix |
| [scripts-tenant](nodes/scripts-tenant.md) | src/scripts tenant_copy, tenant_delete, rollover_copy — CLI front ends for the Tenant Copy (cross-environment config export/import) and Tenant Delete engines, plus an older same-database copy of tests/forms/programs between two clients. | 3 | 12 | ops, scripts, tenant, cli |
| [serverless-lambdas](nodes/serverless-lambdas.md) | The Serverless Framework v2 app "adam-sls" (lambda/serverless.yml + lambda/Makefile) declaring three scheduled Go lambdas - hello (no-op, every minute), singlestore_sync (ss_lambda) and rostering (rostering_lambda) - plus the shared lambda_utils Splunk logging helper; not built or deployed by CI. | 3 | 3 | lambda, infra, dead |
| [v2-utils](nodes/v2-utils.md) | src/v2/utils - shared session-generation helpers that talk to the DB through globals - eligibility rule evaluation and SQL builders (fast-path candidate CTE vs legacy EXISTS), test code / random login id generation, session accommodations from profiles, proctor-group find-or-create, session events, auth-hash values; plus safe generated filenames. | 3 | 8 | admin-generation, eligibility, shared |
| [dev-manager](nodes/dev-manager.md) | dev-manager/ - a Bubble Tea terminal UI (separate Go module) that starts/stops the Go backend (make serve / aws-runas), the four UI dev servers and migration creation for one workspace, with backend/action logs and per-workspace ports. | 2 | 6 | dev-tooling, infra |
| [load-tests](nodes/load-tests.md) | jmeter/ - Apache JMeter 5.5 load test (ADAM.jmx "Take Test") simulating thousands of students signing in with a test code and taking a QTI-player test, run distributed on EC2 master/slave nodes launched by up.py. | 2 | 3 | test, performance, infra |
| [release-notes-lambda](nodes/release-notes-lambda.md) | Python Lambda "release-notes-generator" (lambda/release_notes) that collects a GitHub release-summary issue plus every issue it references, asks an AWS Bedrock agent to write release notes, renders them into an HTML template and uploads it to S3, returning a presigned URL. | 2 | 2 | lambda, release, ai, tooling |
| [scripts-content-fixes](nodes/scripts-content-fixes.md) | src/scripts standards, update_learnosity_keys, sort_i18n, sealcode — strip the CCSS prefix from standard numbers, re-key Learnosity MCQ options, alphabetise the server i18n JSON (make sort_i18n) and print random TestNav-style seal codes. | 2 | 8 | ops, scripts, content, i18n |
| [custom-logins](nodes/custom-logins.md) | Standalone per-customer branded login pages (client/custom-logins/<customer>/index.html - Arkansas, DC, Indiana, LAU, Maryland, Vermont, WIDA, WestVirginia, cognia) hosted on S3/CloudFront; Vue 2 + axios pages that log in against the ADAM API and redirect into the app. | 1 | 4 | ui, auth, legacy, static |
| [maintenance-page](nodes/maintenance-page.md) | maintenance-page/ - small Vue 3 + PrimeVue + Tailwind (Avalon theme) app that generates a self-contained maintenance.html (countdown, progress, contact info, auto-refresh) from public/maintenance-data.json, for SRE to serve from S3/CloudFront during downtime. | 1 | 1 | ui, infra, static |
| [admin-stats-sync](nodes/admin-stats-sync.md) | AdminStatsSync - refreshes the Postgres materialized views admin_stats and session_class_stats; defined but never scheduled. | 0 | 2 | jobs, dead |
| [dev-scripts](nodes/dev-scripts.md) | Repo-root scripts/ — Python/Node/shell generators for the team's GitHub Pages site (a11y dashboard, AI skills page, coverage, label keys, product tutorial, release dashboard, shared pages theme) plus local coverage helpers, an i18n audit and an old Selenium tester launcher. | 0 | 6 | dev, tooling, docs, ci, a11y, coverage |
| [platform-utils](nodes/platform-utils.md) | Cross-cutting helper packages with no domain ownership - src/utils (generics, slices, sets, CSV/BOM, random codes, caches, AWS Secrets Manager), services/utils (safe filter keys, compression), PaginateOptions, URL/redirect validation, HTML sanitising, fixed-width marshalling, typed API errors, Bedrock STS client. | 0 | 3 | platform, shared |

## interface (157)

| node | summary | in | out | tags |
|---|---|---|---|---|
| [internal-api](nodes/internal-api.md) | The `/internal/*` staff-console REST group (InternalAPI) — admin-app login (password and Pearson/Entra SSO), tenant setup, TestNav/OAuth credentials, user lookup and fixes, Login As, admin-user management, imports, flags, global settings, environment API tokens and tenant-access grants. | 150 | 10 | internal, api |
| [internal-operations-api](nodes/internal-operations-api.md) | InternalOperationsAPI — 98 staff-only routes under /internal (VPN + internal admin JWT) for searching, editing and deleting tenant records, licences, batteries, report assets, rejected tests, the Redis job-status board and response export. | 126 | 16 | internal, api |
| [admin-api](nodes/admin-api.md) | REST routes under /v2 for test administrations ("admins") - get/save/delete, estimates, summaries/counts, proctor groups, session lists, rescans, admin submit, manual student add/remove/upload, login-code exports, scan history, saved eligibility criteria and audit history. | 107 | 8 | testing, api |
| [qti-api](nodes/qti-api.md) | The QTI content and QTI-delivery REST API (banks, states, forms, items, stimuli, resources, media, QTI sessions/item results, launches, preview, print, metadata CSV, scoring, export, paper forms, traits) — QTIAPI in src/v2/apis/qti_api.go. | 102 | 15 | api, qti, content, delivery |
| [adam-ad-api](nodes/adam-ad-api.md) | /adam_ad REST group — AD webhook (POST /adam_ad/event), AD proxy for banks/items/stims/authorities, OAuth token hand-out, Class Assignment tests/admins/sessions, and manual AD form/item sync. | 86 | 6 | ad, api |
| [user-api](nodes/user-api.md) | UserAPI — /v2 endpoints for user list/search/export, user CRUD, profile and /me, account switching, CSV imports (users, non-student users, accommodations, metadata, assignment tags), parents/agents and user preferences. | 82 | 6 | rostering, pii |
| [class-api](nodes/class-api.md) | ClassAPI — /v2 endpoints for class lists, class detail, save/delete, My Classes, quick class CSV upload, enrollments/primary class, and teacher Class Assignments (AD-delivered) views. | 75 | 5 | rostering, classroom |
| [order-api](nodes/order-api.md) | /v2 routes for MOT materials ordering - distributions, orderable items, orders CRUD, shipment tracking, order and online-license reports, Pre-ID, record types, carriers, address validation and order export triggers. | 69 | 5 | orders, api |
| [org-api](nodes/org-api.md) | OrgAPI — /v2 org list/tree/hierarchy endpoints, org save/delete, org CSV estimate/upload, org exports (incl. licences), org audit history, Launchpad sync status, LTI config, and two VPN-only /internal org lookups. | 66 | 5 | rostering |
| [auth-api](nodes/auth-api.md) | AuthAPI routes - password login, token refresh, logout, me, Login As, password reset, parent accounts, SSO bootstrap/exchange, Clever callback, captcha and browser keys. | 63 | 3 | auth, api |
| [test-api](nodes/test-api.md) | REST routes under /v2 for tests - list/get/save/clone/delete/archive, history, human-scorable items, OSCAR manifest, CSV export, XLSX bulk test import, form-assignment import/export and timer templates. | 58 | 6 | testing, api |
| [accommodation-api](nodes/accommodation-api.md) | REST group `AccommodationsAPI` under /v2 — accommodation catalog, client accommodation settings/profiles, per-student accommodation assignment (with validation rules and approval workflow) and the session TTS toggle. | 55 | 2 | accommodations, api |
| [program-api](nodes/program-api.md) | REST group `ProgramAPI` under /v2 — program config CRUD, archive, audit history, report definitions, objective CSV import/export (program, test and battery level), test-program validation and accountability codes. | 50 | 3 | programs, api |
| [proctor-group-api](nodes/proctor-group-api.md) | /v2/proctor_groups API — proctor group CRUD, alias groups, status, clone jobs, proctor-run timer, room layout/start/close, room templates/presets/explorer, proctor dashboard column preferences, and Ably/Agora/RTPaaS remote-proctoring auth. | 47 | 7 | proctoring, api |
| [proctor-api](nodes/proctor-api.md) | Proctor dashboard API under /v2/proctor — anonymous proctor login, session list/counts/speeding polls, state changes (pause/resume/submit/reseat/exit/approve), accommodations, accountability codes, late add, temp students, sections, kiosk override, cross-app proctor tokens. | 44 | 5 | proctoring, api |
| [session-api](nodes/session-api.md) | /v2 Session Explorer API — session/event explorer lists and counts, CSV exports, session events, session reviews, reporting-org edits and bulk upload, accountability-code bulk upload, bulk submit, admin codes. | 43 | 4 | delivery, api, explorer |
| [tester-api](nodes/tester-api.md) | Unauthenticated-then-session-token student delivery API under /tester (test-code sign-in, confirm, launch, state polling, item/section updates, AD/TestNav launch, read-aloud, practice). | 37 | 5 | delivery, api |
| [role-api](nodes/role-api.md) | REST endpoints under /v2/roles for listing, saving, deleting, exporting and auditing client roles. | 35 | 3 | rostering, auth, permissions |
| [testnav-api](nodes/testnav-api.md) | `TestnavAPI` routes — TestNav/Previewer item, rubric and form preview, response source lookup, TestNav catalog listing, form sync trigger, is-TestNav-client check and the internal bulk score export. | 35 | 5 | api, delivery |
| [student-assignments-api](nodes/student-assignments-api.md) | Student Assignments dashboard API (/v2/student_assignments/*): list program administrations and rosters, assign/remove students (sync or SQS bulk), switch forms, poll jobs. | 34 | 8 | student-assignments, api |
| [course-api](nodes/course-api.md) | CourseAPI — /v2 endpoints to list, filter, read, save and delete courses and list course grades/subjects. | 33 | 2 | rostering |
| [results-api](nodes/results-api.md) | ResultsAPI — /v2/results and /v2/results_new routes for hand scoring, class/admin result views, org hand-scoring screens and per-session response review. | 33 | 4 | reporting, scoring, api |
| [battery-api](nodes/battery-api.md) | REST group `BatteryAPI` under /v2 — list/save batteries (with units), create a new battery attempt, and manage program↔battery associations with battery-level objectives. | 32 | 3 | programs, api |
| [request-api](nodes/request-api.md) | /v2 routes for admin/support requests - submit, get, attachments, queues (new, assigned, all, mine) with filters, assign/unassign, escalate/de-escalate, admin resolution, requester update and resubmit, CSV export, archive/unarchive, admins at an org. | 32 | 2 | support, api |
| [classroom-api](nodes/classroom-api.md) | Staff REST API for My Tests classroom tests and classroom admins, their item results and the class/student classroom report data (/v2/classroom_*, /v2/cr_*). | 31 | 7 | classroom, api |
| [reporting-api](nodes/reporting-api.md) | ReportingAPI — /v2/reporting progress, activity, aggregate and Louisiana report routes plus the root-level LA class/ISR HTML pages. | 30 | 4 | reporting, api |
| [performance-report-v2-api](nodes/performance-report-v2-api.md) | PerformanceReportApiV2 — /v2/performanceReportV2/* and /v2/studentPerformance/* dashboards, CSV exports and v2 ISRs (single HTML, bulk PDF zip), keyed by program/battery codes and org identifiers. | 29 | 5 | reporting, api, isr |
| [client-api](nodes/client-api.md) | ClientAPI — /v2/client settings read/save-with-audit, history, assignment-tag usage, practice page admin + public endpoints, terms & conditions (admin + public tester), secure-app config, secure link and chat config. | 27 | 7 | tenancy, settings, public |
| [announcement-api](nodes/announcement-api.md) | /v2 routes for announcements (bulletins) - audience feed, manage list, get, save, delete, attachment upload/rename/delete and signed download URL. | 25 | 2 | comms, api |
| [pearson-sso-api](nodes/pearson-sso-api.md) | Pearson SSO (Entra ID) routes for both apps - admin /internal/sso/* and /sso-admin/*, frontend /sso-app/* and /v2/sso/pearson/* (config, start, login, callback, account picker, practice-account welcome, bootstrap exchange). None VPN-gated. | 25 | 4 | auth, api, sso |
| [standard-api](nodes/standard-api.md) | Standards lookup REST API (/v2/standards/*: by id, children, tree, displays, peers, authorities, bank-aligned and below-standard queries) — StandardAPI in src/v2/apis/standard_api.go. | 25 | 1 | api, standards |
| [tenant-copy-api](nodes/tenant-copy-api.md) | TenantCopyAPI — /internal/tenant_copy routes the admin-ui Tenant Copy page uses to list tenants, queue exports, upload artifacts, request an emailed approval code, queue imports and poll/download jobs. | 25 | 5 | internal, api, tenant |
| [rejected-tests-api](nodes/rejected-tests-api.md) | /v2 routes for the Rejected Tests (scan matching) screen - list, get, export, candidate sessions, scan image PDF, manual match and archive. | 24 | 5 | paper, api |
| [tenant-delete-api](nodes/tenant-delete-api.md) | TenantDeleteAPI — /internal/tenant_delete routes the admin-ui uses to preview (dry run) and queue tenant/partial deletes, request the emailed approval code, poll jobs and download the pre-delete backup. | 24 | 6 | internal, api, tenant, destructive |
| [fe-administrations-ui](nodes/fe-administrations-ui.md) | Vue 3 administration screens (/test_management/administrations\|training_administration\|practice/*) - admin cards/list, the per-type admin wizard, sessions, manual student upload, proctor groups (upload, alias, clone), bulk admin import, date selection and room layout/seating. | 23 | 28 | frontend, administrations, proctoring, ui |
| [fe-operations-ui](nodes/fe-operations-ui.md) | Vue 3 Operations screens - Session Explorer (cross-admin session search, submit/unsubmit/transfer/rescan/reset, accountability codes incl. CSV bulk upload, reporting orgs, reviews, exports, bulk submit), Session Event Explorer, Room Explorer, Test Assignments, Rejected Tests (scanned paper manual match) and session/PG print cards. | 21 | 21 | frontend, operations, sessions, ui |
| [item-results-v2-api](nodes/item-results-v2-api.md) | ItemResultApiV2 — POST /v2/item_results, /v2/standard_results, /v2/reportable_item_group and /v2/trait_results endpoints behind the Program report item analysis, standards, comparison and student-response tabs (SingleStore). | 21 | 6 | reporting, api, singlestore |
| [launchpad-sync-api](nodes/launchpad-sync-api.md) | LaunchpadSyncAPI - enqueue a full/partial Launchpad sync for an org (optionally from a custom date or for one entity type), cancel it, read its latest progress. | 21 | 2 | rostering, sync, api, launchpad |
| [oneroster-data-api](nodes/oneroster-data-api.md) | ADAM's outbound OneRoster 1.2 REST API (/ims/oneroster/rostering/v1p2) with OAuth2 client-credentials - rostering reads, sessions/battery scores/ISR reads, Launchpad change-notification intake, online license orders and ACT orders. | 21 | 12 | rostering, api, oneroster, external |
| [singlestore-explorer-api](nodes/singlestore-explorer-api.md) | Internal REST endpoints behind the admin-ui SingleStore Table Explorer and Sync Health tabs - list/describe/search SingleStore tables on either cluster vs Postgres, read sync health, and repair v2 procedure watermarks/locks. | 21 | 5 | internal, singlestore, api |
| [admin-testing-window-api](nodes/admin-testing-window-api.md) | REST routes for an administration's testing windows (waves) and the per-org testing-window/date selections used for materials ordering. | 20 | 2 | testing, api, orders |
| [branding-api](nodes/branding-api.md) | /v2/branding routes - client CSS URL, default styles, header logo URLs (authenticated and public by id/env title), and admin save/remove of stylesheet and logos. | 19 | 1 | branding, api |
| [clever-sync-api](nodes/clever-sync-api.md) | CleverSyncAPI - start/cancel/poll a full Clever district sync and run an on-demand Clever event (delta) sync for a district org. | 19 | 2 | rostering, sync, api, clever |
| [external-score-api](nodes/external-score-api.md) | Insecure-group `/v1/api/*` callbacks from external scoring systems — OSCAR trait scores, PASS session/battery score batches, PASS no-Pre-ID paper attempts and Learner-in-Danger flags. | 19 | 4 | api, scoring, callback |
| [fe-settings-ui](nodes/fe-settings-ui.md) | Vue 3 System settings screens - Client Settings (15 tabs of tenant config, save logs you out), Role Config (role permission matrix), Admin Requests (support tickets) and Bulletins (announcements). | 19 | 21 | ui, frontend, settings, admin |
| [field-sets-api](nodes/field-sets-api.md) | FieldSetsAPI — /v2/field_sets endpoints to list, read, save, delete and audit tester login field sets. | 19 | 3 | testing, settings |
| [academic-session-api](nodes/academic-session-api.md) | AcademicSessionAPI — /v2 endpoints to list, read, save and delete academic sessions (terms, semesters, school years). | 18 | 2 | rostering |
| [lti-api](nodes/lti-api.md) | LTI tool endpoints - LTI 1.3 OIDC login and launch, LTI 1.1 launch, deep-linking response and the public JWKS of per-org signing keys. | 18 | 3 | auth, api, lti |
| [proctor-instructions-api](nodes/proctor-instructions-api.md) | REST group `ProctorInstructionsAPI` under /v2 — read and sync (insert/update/delete) proctor instructions per test and student instructions per administration, plus short-lived signed S3 URLs for their files. | 18 | 2 | proctoring, api |
| [fe-rostering-ui](nodes/fe-rostering-ui.md) | Vue 3 Rostering screens - orgs (incl. Clever/Launchpad/OneRoster sync and LTI config), academic sessions, courses, classes (quick upload, print cards), users (list, edit, login-as, merge, imports), CSV uploads, and the user Profile page. | 17 | 28 | ui, frontend, rostering |
| [performance-reports-api](nodes/performance-reports-api.md) | PerformanceReportsAPI (v1) — /v2/performanceReport/*, /v2/testPerformance/*, /v2/batteryPerformance, v1 bulk/single ISR; UUID-keyed, used only by the legacy Vue 2 client. | 17 | 4 | reporting, api, isr, legacy |
| [student-dashboard-api](nodes/student-dashboard-api.md) | Student Dashboard API: search students in scope and return one student's district test results (SingleStore), legacy classroom test results and AD class assignment results. | 17 | 8 | student-dashboard, reporting, api |
| [form-api](nodes/form-api.md) | Legacy Learnosity form REST API (/v2/forms, preview/print packets, edit package, test map, archive, clone) — FormAPI in src/v2/apis/forms_api.go. | 16 | 4 | api, authoring, legacy |
| [internal-singlestore-api](nodes/internal-singlestore-api.md) | Internal (admin-app) REST endpoints to search SingleStore report rows, edit configs_v2 dates/flags and trigger a custom SingleStore resync by admin or session ids. | 16 | 4 | internal, singlestore, api |
| [legacy-authoring-ui](nodes/legacy-authoring-ui.md) | Legacy Vue 2 "Learnosity Authoring" screens (passages, items, forms, banks) in client/, built on the Learnosity Author/Items APIs; still served and linked but superseded by QTI and AD authoring. | 16 | 11 | ui, legacy, authoring, learnosity |
| [report-assets-api](nodes/report-assets-api.md) | ReportAssetsAPI — /v2/report_assets* org/class tree, paginated listing, presigned download URLs, bulk zip job and staff upload of report asset files. | 16 | 4 | reporting, api, files |
| [chatbot-api](nodes/chatbot-api.md) | Internal-console AI agent routes under /internal/agent/api - Data Analyst SQL chat, KB chat, session register/end and status polling. | 15 | 1 | ai, internal, api |
| [config-explorer-api](nodes/config-explorer-api.md) | ConfigExplorerAPI — read-only /internal/config_explorer routes serving the field catalog, tenant list, one tenant's resolved settings/role permissions, side-by-side compare and an xlsx export (max 10 tenants). | 15 | 3 | internal, api, config, read-only |
| [oneroster-upload-api](nodes/oneroster-upload-api.md) | OneRosterAPI (/v2/oneroster) - OneRoster CSV-string upload/estimate endpoints (stubbed, always fail) plus the on-demand RaaS delta sync trigger for a district. | 15 | 1 | rostering, sync, api, oneroster |
| [response-export-api](nodes/response-export-api.md) | Internal (Admin App) response-export routes — queue an export, list administrations/items to pick from, and get presigned download URLs for response exports and any admin job file. | 15 | 4 | internal, export, api |
| [subjects-api](nodes/subjects-api.md) | SubjectAPI — public GETs of a client's subjects by client id, plus guarded save/delete of client-created subjects. | 15 | 2 | settings, rostering |
| [tenant-copy-ui](nodes/tenant-copy-ui.md) | tenant-copy-ui — standalone Bubble Tea terminal UI (separate Go module) that collects every Tenant Copy export/import or Tenant Delete setting, shows a review screen, then shells out to `go run ./src/scripts/tenant_copy` or `tenant_delete` and renders its progress. | 15 | 2 | internal, cli, tenant |
| [tester-proctoring-ui](nodes/tester-proctoring-ui.md) | Proctor screens in tester-ui — anonymous proctor login (/proctor, test code + proctor password, eligibility-admin group creation), the proctor group dashboard (/proctor/pg/:id) with session table/cards, state actions, approvals, timer, speeding alerts, remote proctoring, print cards and read-aloud print. | 15 | 14 | ui, tester-ui, proctoring |
| [fe-chat-ui](nodes/fe-chat-ui.md) | Floating unified-chat widget in the Vue 3 staff frontend (components/chat + useUnifiedChat + useChatScript) - KB help and SingleStore data-analyst channels streamed from /v2/chat, with hand-off to Salesforce Embedded Messaging. | 14 | 2 | ui, frontend, chat, ai |
| [fe-isr-ui](nodes/fe-isr-ui.md) | Vue 3 ISR (Individual Student Report) modals - preview/print one student's ISR (generated HTML or paper COW PDF) and queue bulk ISR PDF generation for a school. | 14 | 7 | ui, frontend, reporting, isr |
| [fe-student-performance-ui](nodes/fe-student-performance-ui.md) | Vue 3 Student Performance screens - teacher/school dashboard of tests per class, per-test student roster report, student battery report and AD class-assignment report. | 14 | 8 | ui, frontend, reporting, performance, classroom |
| [fe-test-management-ui](nodes/fe-test-management-ui.md) | Vue 3 Test Management screens (/test_management/*) for tests (list, 4-step editor, XLSX bulk import, form-assignment import), field sets, program configurations (objectives, ISR, batteries, custom reports) and test publishing by org. | 14 | 24 | frontend, test-management, ui |
| [legacy-test-management-ui](nodes/legacy-test-management-ui.md) | Legacy Vue 2 ("Classic") Test Management screens in client/ - tests, program configs (batteries, objectives, ISR report editor), field sets, reporting thresholds, administrations (list, wizard, proctor groups, sessions, print cards); superseded by frontend/ /test_management and /operations. | 14 | 29 | ui, legacy, test-management, administrations |
| [qti-player-api](nodes/qti-player-api.md) | JWT-authenticated API used by the standalone (deprecated) QTI player app at PLAYER_URL to load a form and save QTI session state and item responses — QtiPlayerAPI in src/v2/apis/qti_player_api.go. | 14 | 3 | api, qti, delivery, legacy |
| [results-explorer-api](nodes/results-explorer-api.md) | ResultsExplorerApi — POST /v2/resultsExplorer (query) and /v2/resultsExplorer/export (async CSV), gated by role.results_explorer. | 14 | 2 | reporting, api |
| [tester-test-player-ui](nodes/tester-test-player-ui.md) | tester-ui player hosts — LaunchView (inline legacy Learnosity runner + AD/TestNav hand-off and approval card), ClassTestPlayerView (AD player for CL_ class assignments), AdPreviewView (AD player for authoring form preview) and the /ad_launch redirect. | 14 | 7 | ui, tester-ui, delivery, player |
| [admin-bulk-import-api](nodes/admin-bulk-import-api.md) | XLSX bulk import (create/update) and export of test administrations, gated by global flag ENABLE_BULK_IMPORT and the role permission bulk_administrations_import. | 13 | 4 | testing, api, import |
| [bank-api](nodes/bank-api.md) | Legacy authoring bank REST API (/v2/banks, tags, item workflow states, Learnosity activities) — BankAPI in src/v2/apis/bank_api.go. | 13 | 5 | api, authoring, legacy |
| [customer-chat-api](nodes/customer-chat-api.md) | Customer-facing unified chat routes under /v2/chat - register, message (JSON or SSE stream), end and status - routing between KB, SingleStore Analyst and Salesforce escalation. | 13 | 1 | ai, api |
| [fe-performance-reports-ui](nodes/fe-performance-reports-ui.md) | Vue 3 org-level Performance reporting screens - Performance Dashboard, Individual Assessment (test) report, Program report, Battery report, Performance by Class/Teacher - all backed by /v2/performanceReportV2 and SingleStore. | 13 | 9 | ui, frontend, reporting, performance |
| [fe-system-ui](nodes/fe-system-ui.md) | Vue 3 auth/system pages (login incl. Pearson SSO button, forgot/reset password with reCAPTCHA, SSO landing with the Pearson SSO account picker and first-login welcome, oops/404/access-denied) plus the shared Downloads page for queued export jobs and the NotFound placeholder used by the retired /authoring routes. | 13 | 6 | frontend, auth, ui |
| [tester-class-assignment-api](nodes/tester-class-assignment-api.md) | Tester routes for AD-backed class assignments entered with a CL_ test code (/tester/class/* and the CL_ branch of /tester/login/:test_code). | 13 | 3 | class-assignments, tester, api |
| [tester-login-ui](nodes/tester-login-ui.md) | Student sign-in wizard at / in tester-ui (LoginView) — test code, auth fields / Quick ID / QR scan, form choice, multiple attempts, confirm, proctor approval, plus READALOUD and PVPUBS special codes and the Secure Testing App landing. | 13 | 6 | ui, tester-ui, delivery, login |
| [classroom-tester-api](nodes/classroom-tester-api.md) | Student-facing routes (/crtester) to launch, confirm and update state of a classroom (My Tests) session using a session token. | 12 | 4 | classroom, tester, api |
| [fe-item-analysis-ui](nodes/fe-item-analysis-ui.md) | Vue 3 shared report sub-views for Item Analysis, Standard Performance, Domain (reportable item groups), rubric traits and Student Responses, plus the full-page Item Detail and print modals. | 12 | 10 | ui, frontend, reporting, item-analysis |
| [i18n-api](nodes/i18n-api.md) | I18nAPI (insecure group) - GET language bundles for the legacy client, Vue 3 frontend, admin-ui and tester-ui, optionally merged with the caller's client label overrides when a valid registration JWT is sent. | 12 | 1 | platform, i18n, api |
| [legacy-my-classes-ui](nodes/legacy-my-classes-ui.md) | Legacy Vue 2 "My Classes" teacher screens in client/ (class list, class overview, assessment report + teacher scoring, student details/ISR, Learnosity-era my_classes pages, family landing); superseded by Vue 3 /home/my_classes and /scoring, except the Learnosity pages. | 12 | 17 | ui, legacy, my-classes, scoring |
| [legacy-qti-authoring-ui](nodes/legacy-qti-authoring-ui.md) | Legacy Vue 2 client "QTI Authoring" screens (/qti_* hash routes) for ADAM-local QTI/TestNav banks, items, resources, shared stimuli, media, forms, TestNav form sync and a dev QTI-session launcher; superseded by the frontend /testnav/* pages. | 12 | 15 | ui, legacy, qti, authoring, testnav |
| [legacy-qti-item-editor-ui](nodes/legacy-qti-item-editor-ui.md) | Legacy Vue 2 client QTI 3 item editor (ItemEditV2 for /qti_items, its AD fork ADItemEdit for /ad_items) with ~27 per-interaction authoring editors, a QTI XML parser/writer, Froala WYSIWYG plugins, AI generation/translation and a preview that renders via AD's qti-item-components web components — authoring only, not the student renderer. | 12 | 8 | ui, legacy, qti, authoring, item-editor |
| [legacy-reporting-ui](nodes/legacy-reporting-ui.md) | Legacy Vue 2 ("Classic") operational reporting screens in client/ - Progress, Testing Activity, Aggregate, Louisiana, Test Assignments, Session/Session-Event/Results Explorers; still served by the Go app but superseded by frontend/ /reporting and /operations screens. | 12 | 16 | ui, legacy, reporting, operations |
| [legacy-rostering-ui](nodes/legacy-rostering-ui.md) | Legacy Vue 2 rostering screens in client/ (orgs, users, classes, courses, academic sessions, CSV imports/uploads, student login cards, roster-sync triggers); superseded by the Vue 3 /rostering/* screens but still shipped in the main-app image. | 12 | 25 | ui, legacy, rostering |
| [admin-tenant-tools-ui](nodes/admin-tenant-tools-ui.md) | admin-ui Tenant Tools page - Export a tenant (without users) to an artifact, Import it into this environment (dry run or live, emailed approval code), and Delete a tenant's data with backup, tracked as jobs (tenant_copy / tenant_delete). | 11 | 4 | ui, admin-ui, tenant, tenant-copy |
| [aws-file-api](nodes/aws-file-api.md) | AWSFileAPI - rostering CSV upload wizard endpoints (upload to ADAM_S3_INTERNAL + file_metadata row, list a user's uploads, download a file) used by the legacy Vue 2 client. | 11 | 2 | rostering, files, api |
| [external-lookup-api](nodes/external-lookup-api.md) | Environment-level lookup endpoints for PSAES - POST /v1/api/orgs/lookup and POST /v1/api/barcodes/lookup - cross-tenant, environment-token auth (aud psaes), per-token rate limits, audit-logged. | 11 | 4 | api, external, psaes |
| [legacy-qti-ad-authoring-ui](nodes/legacy-qti-ad-authoring-ui.md) | Legacy Vue 2 client "AD Authoring" screens (/ad_* hash routes) that author content in the external AD platform — banks, items, resources, shared stimuli, media, forms (builder, settings, scoring config, reviewers) and item statistics — mostly by calling AD's Data API straight from the browser with an ADAM-minted OAuth token; superseded by Abigail. | 11 | 5 | ui, legacy, ad, authoring, statistics |
| [admin-tenants-ui](nodes/admin-tenants-ui.md) | admin-ui Tenants screens - list/search clients, create or edit a tenant's full settings form, edit role permission flags, toggle org-combo Redis flags, rollover a tenant to a new customer code, clone a tenant, delete a tenant (manage_tenant). | 10 | 5 | ui, admin-ui, tenant |
| [admin-uploads-ui](nodes/admin-uploads-ui.md) | admin-ui Uploads page - per-tenant CSV imports (report assets, growth, demographics, reporting category, target scores) with progress polling, plus Family Portal export and Response Export jobs (uploads / uploads_* keys). | 10 | 5 | ui, admin-ui, imports, exports |
| [cow-api](nodes/cow-api.md) | /v2/cow — fetches COW documents (download/upload URLs) for submitted sessions, used by the Vue 3 ISR modal. | 10 | 2 | cow, api, reporting |
| [external-reports-api](nodes/external-reports-api.md) | ExternalReportsAPI — unauthenticated GET /v2/api/reports/isr/:lang that renders a student's ISR HTML from a long-lived HS256 JWT (family portal / OneRoster ISR links). | 10 | 2 | reporting, api, isr, public |
| [fe-class-assignments-ui](nodes/fe-class-assignments-ui.md) | Vue 3 Class Assignments - teachers build AD-backed classroom tests (bank -> standards -> items -> review), assign them to classes/students with a CL_ code, view details, print cards and hand-score; plus the legacy QTI "classroom test" modals. | 10 | 15 | ui, frontend, class-assignments, classroom, ad |
| [item-api](nodes/item-api.md) | Legacy Learnosity item authoring REST API (/v2/items, item edit/render packets, custom scoring test, item metadata CSV, usage report) — ItemAPI in src/v2/apis/items_api.go. | 10 | 3 | api, authoring, legacy |
| [legacy-classroom-ui](nodes/legacy-classroom-ui.md) | Legacy Vue 2 teacher test-building screens in client/ - "My Tests" classroom tests built from QTI items (classroom/) and AD-backed "Class Assignments" (class_assignments/); class assignments are ported to Vue 3, My Tests has no Vue 3 route. | 10 | 14 | ui, legacy, classroom |
| [legacy-system-ui](nodes/legacy-system-ui.md) | Legacy Vue 2 "System" screens in client/views/system - client (tenant) settings editor, role configuration, admin requests inbox/detail, bulletin board (announcements) and the Downloads list of async export jobs; all have Vue 3 counterparts under frontend /system/* and /common/downloads. | 10 | 18 | ui, legacy, system, settings |
| [legacy-tester-ui](nodes/legacy-tester-ui.md) | Legacy student test-delivery pages shipped as static files in client/public/tester (served at /tester/*.html and /static/tester/*) - test-code entry, demographic fields, QR login, confirm/choice-confirm, proctor approval, Learnosity/TestNav launch, AD preview launcher, read-aloud and app-check; superseded by tester-ui but still the target of LTI launches and the legacy proctor screen. | 10 | 8 | ui, legacy, tester, delivery |
| [act-services-api](nodes/act-services-api.md) | ACT Services TAC deep-link routes - list the caller's schools and mint a 5-minute JWT launch URL to the ACT Accommodations Request dashboard. | 9 | 4 | auth, api, external |
| [assignments-api](nodes/assignments-api.md) | Test assignment report - students eligible for a test (by course or grade) and the administrations they are in, with a OneRoster-user-shaped CSV export. | 9 | 2 | testing, api, reporting |
| [fe-orders-ui](nodes/fe-orders-ui.md) | Vue 3 paper-materials ordering screens (/orders/*) - distributions config, manage/create/approve MOT orders, Pre-ID orders, shipment tracking, order and online-order reports and order export files. | 9 | 8 | frontend, orders, mot, ui |
| [fe-student-assignments-ui](nodes/fe-student-assignments-ui.md) | Vue 3 Student Assignments - program-level dashboard of administrations and student rosters, assign-students wizard, assignment details (sessions, proctor groups, form switch, accommodations, print), and the Class Assignments source tab. | 9 | 15 | ui, frontend, student-assignments |
| [fe-student-ui](nodes/fe-student-ui.md) | Vue 3 student mini-app (/student/*) - a student's classes, assignment status buckets, access cards and Start buttons that launch the tester. | 9 | 10 | ui, frontend, student |
| [legacy-proctor-ui](nodes/legacy-proctor-ui.md) | Legacy Vue 2 ("Classic") proctor screens in client/ - proctor login (/proctor), live proctor-group dashboard (/proctor/pg/:id), RTPaaS remote-proctoring dashboard (/remote_proctor/pg/:id) and the unused /proctoring page; superseded by tester-ui /proctor. | 9 | 12 | ui, legacy, proctoring |
| [fe-authoring-ui](nodes/fe-authoring-ui.md) | Vue 3 TestNav/QTI content screens (/testnav/*) - QTI bank list/edit (workflow states, metadata fields, standards, visibility, label bundles), item list with bulk status/styles/tools, form list with paper forms and previews, and TestNav form sync. | 8 | 14 | ui, frontend, authoring, qti, testnav |
| [fe-scoring-ui](nodes/fe-scoring-ui.md) | Vue 3 hand/teacher scoring dashboard (/scoring/schools/...) - pick admin, proctor group and class, step through human-scorable responses (QTI, classroom or TestNav) and post rubric/trait scores. | 8 | 8 | frontend, scoring, ui |
| [feature-flag-api](nodes/feature-flag-api.md) | FeatureFlagAPI - GET /v2/feature_flags returns the frontend-relevant global-settings booleans read straight from the primary DB. | 8 | 1 | platform, config, api |
| [legacy-file-io-ui](nodes/legacy-file-io-ui.md) | Legacy Vue 2 /file_upload screen (client/views/file_io) - tabbed OneRoster-CSV rostering upload wizard (orgs, academic sessions, courses, classes, users, demographics, accommodations, roles, enrollments) with client-side CSV preview/validation and a polling list of the user's uploads; no Vue 3 equivalent. | 8 | 4 | ui, legacy, rostering, files |
| [legacy-orders-ui](nodes/legacy-orders-ui.md) | Legacy Vue 2 paper-materials (MOT) ordering screens and the rejected-tests (unmatched scanned answer documents) screen in client/; superseded by Vue 3 /orders/* and /operations/rejected_tests. | 8 | 9 | ui, legacy, orders, mot |
| [passage-api](nodes/passage-api.md) | Legacy Learnosity passage REST API (/v2/passages, passage edit packet) — PassageAPI in src/v2/apis/passage_api.go. | 8 | 3 | api, authoring, legacy |
| [recovery-api](nodes/recovery-api.md) | POST /v2/api/recovery — legacy tester uploads an encoded response snapshot for its own session. | 8 | 1 | delivery, api |
| [reporting-thresholds-api](nodes/reporting-thresholds-api.md) | Dead REST group `ReportingThresholdsAPI` (/v2/reporting_thresholds CRUD for threshold sets) — its registration is commented out in src/v2/apis/init.go, so none of its routes are served. | 8 | 2 | reporting, api, dead |
| [admin-admin-users-ui](nodes/admin-admin-users-ui.md) | admin-ui Admin Users page - create/edit/delete internal admin-console accounts, set their per-key permission levels (hide/read/write) and tenant scope, reset their passwords (manage_admin_users). | 7 | 4 | ui, admin-ui, admin-users, permissions |
| [admin-ai-agent-ui](nodes/admin-ai-agent-ui.md) | admin-ui AI Agent page - chat with the Bedrock Data Analyst (natural-language SQL over ADAM data, optionally scoped to one tenant; needs data_analyst) or the knowledge-base help bot, plus the in-app Schema Guide reader. | 7 | 3 | ui, admin-ui, ai, chatbot |
| [admin-global-settings-ui](nodes/admin-global-settings-ui.md) | admin-ui Global Settings page - list and edit environment-wide global_settings rows (feature flags, kill switches, tunables, integration JSON) with an Ace JSON editor, plus a super-admin dialog that mints environment API tokens and retires older ones (global_settings key, backend super admin only). | 7 | 6 | ui, admin-ui, config, feature-flags |
| [admin-job-history-ui](nodes/admin-job-history-ui.md) | admin-ui Job History and Admin Job History pages - per-tenant lists of tenant-user background jobs (job_histories) and internal admin jobs (admin_job_histories) with status, error-file and output downloads and delete (operations). | 7 | 4 | ui, admin-ui, jobs |
| [client-log-api](nodes/client-log-api.md) | ClientLogAPI - public POST /v2/client_logs ingesting browser log batches (lane C) into the backend log sinks, behind the CLIENT_LOG_INGEST_ENABLED kill switch with strict size, level, app and rate limits. | 7 | 0 | platform, observability, api |
| [fe-classroom-ui](nodes/fe-classroom-ui.md) | Vue 3 My Classes - a teacher's class cards and the Class Overview (roster x administrations score grid, class/student views, accommodations, schedule/assign classroom tests and class assignments). | 7 | 12 | ui, frontend, classroom, my-classes, teacher |
| [launchpad-api](nodes/launchpad-api.md) | LaunchpadAPI - single legacy route that enqueues a default Launchpad sync for an org on the dedicated Launchpad sync queue. | 7 | 1 | rostering, sync, api, launchpad |
| [user-metadata-definition-api](nodes/user-metadata-definition-api.md) | UserMetadataDefinitionAPI — /v2/metadata/definitions endpoints to list, read, create, update, delete and reset the caller's client's user metadata field definitions. | 7 | 2 | settings, rostering |
| [admin-operations-ui](nodes/admin-operations-ui.md) | admin-ui Operations workspace - eleven tabs to search, edit, reset, restore and delete a tenant's raw records (report assets, sessions, admins, proctor groups, tests, program configs, online/org licences, rejected tests, SingleStore sync, batteries) with per-record edit pages (operations). | 6 | 16 | ui, admin-ui, operations |
| [fe-dashboard-ui](nodes/fe-dashboard-ui.md) | Vue 3 home dashboard (/home/dashboard) - bulletin board for staff, or the Teacher Dashboard (hero, my classes grid, class assignments panel, bulletins) for teacher/self-scoped roles. | 6 | 7 | ui, frontend, dashboard, teacher |
| [fe-report-assets-ui](nodes/fe-report-assets-ui.md) | Vue 3 Report Assets library - browse report files (ISRs, aggregate reports, uploaded PDFs) by org tree, filter by type/school year/scope, download singly or as a bulk job, and upload new assets to a district/school/class. | 6 | 4 | ui, frontend, reporting, report-assets |
| [item-results-api](nodes/item-results-api.md) | ItemResultApi (v1) — item averages, comparison and standards results per test/org or per session list, from SingleStore item_results/session_data; legacy client only. | 6 | 3 | reporting, api, singlestore |
| [legacy-shell-ui](nodes/legacy-shell-ui.md) | Top-level Vue 2 screens of the legacy client (client/src/views/*.vue) - login + password reset, SSO landing, family (parent) portal, post-login landing/bulletins, user profile, not-found, and the in-app AD test player route; family portal has no Vue 3 equivalent. | 6 | 12 | ui, legacy, auth |
| [legacy-test-publish-ui](nodes/legacy-test-publish-ui.md) | Legacy Vue 2 "Test Publish" screens in client/ - publish a test to orgs (by test) or pick the tests published to an org (by org), i.e. edit the tests_orgs links; by-test is ported to Vue 3 /test_management/test_publish_orgs, the by-org view is legacy-only. | 6 | 8 | ui, legacy, test-management |
| [saml-api](nodes/saml-api.md) | SAML 2.0 service-provider routes (/saml/metadata, /saml/auth, /saml/acs, /saml/slo) - code exists but RegisterSAML is never called, so none are served. | 6 | 2 | auth, api, sso |
| [admin-config-explorer-ui](nodes/admin-config-explorer-ui.md) | admin-ui Config Explorer page - read-only view of a tenant's resolved client settings and role permissions in tabs (Overview, Features, Role Matrix, Compare tenants, Compare roles) with xlsx export (config_explorer). | 5 | 4 | ui, admin-ui, config |
| [admin-tenant-access-ui](nodes/admin-tenant-access-ui.md) | admin-ui Tenant Access page - list ADAM users who hold extra tenant/role grants (user_accounts), search for a user and grant, edit or revoke access to additional tenants with role and org mapping (tenant_access; backend super admin only). | 5 | 4 | ui, admin-ui, tenant, users |
| [fe-assessment-comparison-ui](nodes/fe-assessment-comparison-ui.md) | Vue 3 Assessment Comparison report - wizard to pick up to 4 assessments across programs plus objectives for an org scope, then a results chart with org breakdown and optional demographics breakdown. | 5 | 4 | ui, frontend, reporting, comparison |
| [fe-results-explorer-ui](nodes/fe-results-explorer-ui.md) | Vue 3 Results Explorer - paged grid of student session or battery results (scores, performance levels, objective columns) filtered by program, test/battery, org, student, demographics and DNR, with async export and per-student ISR. | 5 | 8 | ui, frontend, reporting, results |
| [health-api](nodes/health-api.md) | GET /health load-balancer probe - checks Postgres (select now() on the primary) and writes a Redis key; plain-text success/error. | 5 | 0 | platform, ops, api |
| [legacy-student-ui](nodes/legacy-student-ui.md) | Legacy Vue 2 student-assignment and student-dashboard screens in client/ (assign students to program batteries, assignment details, roster view, switch form, accommodations, per-student session dashboard); superseded by Vue 3 /home/student_assignments, /home/assign and /students/:studentId. | 5 | 12 | ui, legacy, student-assignments |
| [session-extras-api](nodes/session-extras-api.md) | POST /v2/sessions/speeding — external test player (TestNav) reports a speeding alert for a session. | 5 | 2 | delivery, api, proctoring |
| [sync-setting-api](nodes/sync-setting-api.md) | SyncSettingAPI - GET a sync setting by sync type and org id; the query references a non-existent column and nothing in the Vue 3 app calls it. | 5 | 1 | rostering, sync, api |
| [tester-practice-ui](nodes/tester-practice-ui.md) | Public practice-test landing page in tester-ui (/practice/:customer_code and shareable /practice?token=) listing a client's practice tests by program tab/subject and launching them through /v2/qti/v3/launch_practice/:adminID. | 5 | 3 | ui, tester-ui, practice |
| [ad-player-api](nodes/ad-player-api.md) | Empty ADPlayerAPI route group (no routes) with an empty ADPlayerAuthService — a placeholder never filled in. | 4 | 0 | ad, api |
| [admin-auth-ui](nodes/admin-auth-ui.md) | admin-ui sign-in and system pages - email/password and Pearson SSO (Entra ID) login for internal admin users, SSO callback exchange, token refresh and inactivity modal, logout, access-denied / 404 / oops pages (register/forgot-password/lock-screen pages are static, unwired templates). | 4 | 5 | ui, admin-ui, auth |
| [admin-pass-rescore-ui](nodes/admin-pass-rescore-ui.md) | admin-ui PASS Rescore page - resend/rescore sessions of one tenant/program/test to PASS (Pearson Automated Scoring) by session ids, with a chosen PASS host and rescore type (pass_rescore). | 4 | 3 | ui, admin-ui, pass, scoring |
| [admin-singlestore-ui](nodes/admin-singlestore-ui.md) | admin-ui SingleStore Operations page - tabs for SingleStore report configs, outcomes and item-result rows, a cross-cluster Table Explorer, and (super admin only) Sync Health with watermark/lock repair (singlestore). | 4 | 5 | ui, admin-ui, singlestore, analytics |
| [dashboard-api](nodes/dashboard-api.md) | DashboardAPI — GET /v2/dashboard home-page counts (districts, schools, classes, students, unrostered users) in the caller's org scope. | 4 | 3 | reporting, api |
| [fe-activity-report-ui](nodes/fe-activity-report-ui.md) | Vue 3 Activity Report - live testing activity dashboard (today overview auto-refreshing every 5 min, date-range period summary and chart, per-test/org overview tree, session status CSV exports). | 4 | 4 | ui, frontend, reporting, activity |
| [fe-progress-report-ui](nodes/fe-progress-report-ui.md) | Vue 3 Progress Report - per-program list of tests with session/score status counts for an org scope, drill-down per test by org and section, async CSV exports. | 4 | 5 | ui, frontend, reporting, progress |
| [launchpad-auth-api](nodes/launchpad-auth-api.md) | Launchpad OIDC single sign-on routes /lp/login and /lp/callback that log a Launchpad user into ADAM. | 4 | 2 | auth, api, sso |
| [legacy-test-results-ui](nodes/legacy-test-results-ui.md) | Legacy Vue 2 student/test performance reports (v1 test_performance and v2 student_performance dashboards, per-test comparison, battery, item and standard analysis) and the Report Assets library in client/; superseded by Vue 3 /student_performance* and /reporting/report_assets. | 4 | 12 | ui, legacy, reporting, student-performance, report-assets |
| [admin-credentials-ui](nodes/admin-credentials-ui.md) | admin-ui Credentials and API Access screens - per-tenant integration credential sets (TestNav, previewer, AD, Launchpad, OSCAR, secure links, SFTP; manage_credential) and OneRoster/API OAuth client credentials (manage_oauth). | 3 | 4 | ui, admin-ui, credentials, integrations |
| [admin-dashboard-ui](nodes/admin-dashboard-ui.md) | admin-ui Home dashboard - platform-wide activity cards (total/last/submitted session activity, user login activity) and the PASS "score missing sessions" chart, gated per card by operations / missing_sessions permissions; a no-access welcome card for admins with no tenants and no grants (first Pearson SSO sign-in). | 3 | 2 | ui, admin-ui, dashboard |
| [admin-lp-sync-ui](nodes/admin-lp-sync-ui.md) | admin-ui LP Sync page - Launchpad-connected tenants, their states/orgs, last/total sync statistics and per-org sync history (view_sync_status). | 3 | 3 | ui, admin-ui, launchpad, sync |
| [admin-migrations-history-ui](nodes/admin-migrations-history-ui.md) | admin-ui Migrations History page - paged list of golang-migrate runs from schema_migrations_history with status filter, and a Resolve action (with required notes) for missing/failed migrations (migrations_history; backend super admin only). | 3 | 3 | ui, admin-ui, migrations, ops |
| [legacy-performance-reports-ui](nodes/legacy-performance-reports-ui.md) | Legacy Vue 2 ("Classic") Performance reports in client/ - v1 id-based screens (/performance/...) that are unlinked, and v2 code/identifier-based screens (/performance_v2/..., /performance_by/...) incl. ISR export; superseded by frontend/ /performance and /performance_by. | 3 | 13 | ui, legacy, reporting, performance, isr |
| [tester-dashboard-ui](nodes/tester-dashboard-ui.md) | Leftover /home/dashboard operations dashboard in tester-ui (MainLayout + Dashboard.vue) showing cross-tenant activity charts from /internal/operations/* — routed but unlinked; its sidebar menu points at /settings/* routes that do not exist. | 3 | 2 | ui, tester-ui, dead |
| [admin-license-audit-ui](nodes/admin-license-audit-ui.md) | admin-ui Licence Audit History page - per-tenant, org-filtered search of the trigger-written license_audits trail with before/after diffs (license_audit). | 2 | 3 | ui, admin-ui, licenses, audit |
| [admin-orders-ui](nodes/admin-orders-ui.md) | admin-ui Orders page - pick a tenant and an MOT distribution code (dropdown or typed) and trigger a materials-order distribution sync from MOT (orders). | 2 | 3 | ui, admin-ui, orders, mot |
| [admin-users-ui](nodes/admin-users-ui.md) | admin-ui Users screens - search ADAM users across a tenant, bulk set assignment tags, reset passwords, and edit one user's profile, role and org memberships (manage_user). | 2 | 5 | ui, admin-ui, users |
| [fe-student-dashboard-ui](nodes/fe-student-dashboard-ui.md) | Vue 3 staff Student Dashboard (/students/:studentId) - one student's profile, accommodations, session stats and all district, classroom and AD class-assignment results grouped by program. | 2 | 7 | ui, frontend, student-dashboard |
| [external-delivery-api](nodes/external-delivery-api.md) | Prototype route that renders a single Learnosity item in an iframe page (`external_delivery.html`) signed with ADAM's Learnosity consumer secret. | 1 | 1 | api, learnosity, legacy |

## integration (34)

| node | summary | in | out | tags |
|---|---|---|---|---|
| [ad-platform](nodes/ad-platform.md) | Pearson AD (Authoring & Delivery, "A&D", "adam_ad") — external authoring + delivery service; ADAM pulls banks/forms/items/standards, registers and controls player sessions, reads responses/outcomes, and pushes human scores. | 72 | 1 | ad, external |
| [testnav](nodes/testnav.md) | Pearson TestNav 8 delivery platform (plus its Previewer/PAN content host): ADAM registers student logins with PNP accessibility settings, controls/polls login and section status, pulls test summaries and item responses, and imports forms/items. | 47 | 0 | delivery, external |
| [learnosity](nodes/learnosity.md) | Learnosity Items/Author/Data/Reports APIs — the original item-bank, authoring and delivery engine for Learnosity-platform tests; still wired but superseded by QTI and AD. | 40 | 0 | delivery, authoring, external, legacy |
| [pass](nodes/pass.md) | Pearson PASS (test-attempt manager "tman") scoring service: pushes scored test attempts to ADAM, and ADAM pulls attempts, posts DNR/battery updates and teacher (OSCAR) trait scores back. | 30 | 0 | scoring, external |
| [launchpad](nodes/launchpad.md) | MZ Launchpad (LP) - a OneRoster 1.2 roster hub; ADAM pulls orgs, sessions, courses, classes, users, roles, demographics, enrollments from it, receives change notifications, and pushes program categories/line items/results to its gradebook. | 27 | 1 | rostering, external, launchpad |
| [mot](nodes/mot.md) | Pearson MOT (Materials Ordering and Tracking) REST APIs - program config, distributions, item catalogues, order and Pre-ID student posting, order status and carrier tracking - called with OAuth2 client credentials. | 20 | 0 | orders, external, mot |
| [oscar](nodes/oscar.md) | OSCAR human/AI scoring service: ADAM PATCHes constructed-response items (media + metadata) to OSCAR and OSCAR posts trait scores back to `/v1/api/score`. | 19 | 0 | scoring, external |
| [ably](nodes/ably.md) | Ably realtime messaging used for remote proctoring; ADAM only mints Ably tokens, the browsers publish/subscribe directly. | 16 | 0 | proctoring, external |
| [agora](nodes/agora.md) | Agora RTC video tokens for live remote proctoring; one Agora channel per proctor group id. | 16 | 0 | proctoring, external |
| [oneroster-provider](nodes/oneroster-provider.md) | External OneRoster/RaaS (Rostering-as-a-Service) delta-events provider ADAM pulls district changes from nightly, configured per district org (raas_* columns). | 15 | 1 | rostering, external, oneroster |
| [aws-bedrock](nodes/aws-bedrock.md) | AWS Bedrock - Claude models via bedrock-runtime InvokeModel and a Bedrock Knowledge Base via bedrock-agent-runtime RetrieveAndGenerate - powering the internal data analyst, KB help chat and the customer chat router. | 14 | 0 | ai, external |
| [clever](nodes/clever.md) | Clever rostering API (v2.1) - ADAM pulls districts' schools, users, courses, terms and sections (full sync) and consumes the Clever events feed (nightly delta); also Clever SSO. | 14 | 1 | rostering, external, clever |
| [recaptcha](nodes/recaptcha.md) | Google reCAPTCHA siteverify, enforced only on the anonymous password-reset request; the login route does not check captcha. | 11 | 0 | auth, external |
| [cow](nodes/cow.md) | COW — external Pearson service that holds per-session documents (keyed by the AD/TestNav session id, "ELK") and drops report-asset manifests in S3 for ADAM to import. | 10 | 1 | cow, external |
| [lti-platform](nodes/lti-platform.md) | External LMS platforms (Canvas, Schoology, IMS reference, others) that launch ADAM via LTI 1.3 (OIDC + RS256 id_token, NRPS, AGS, deep linking) or LTI 1.1 (OAuth1 form post). | 10 | 0 | auth, external |
| [academic-benchmarks](nodes/academic-benchmarks.md) | Academic Benchmarks AB Connect (Certica) REST API v4.1 — source of the standards tree and peer-standard mappings; called only by ops scripts that load standards into Postgres. | 9 | 0 | standards, external |
| [core-sftp](nodes/core-sftp.md) | Pearson "Core" SFTP server where clients drop student accommodation CSVs; a 5-minute job picks them up per client cron, applies them, uploads an error file, archives inputs and emails a summary. | 9 | 1 | rostering, external, accommodations |
| [google-address-validation](nodes/google-address-validation.md) | Google Maps Address Validation API (v1 validateAddress) used to validate ship-to addresses on MOT orders; key from the GOOGLE_API_KEY global setting. | 9 | 0 | orders, external |
| [new-relic](nodes/new-relic.md) | New Relic - Go APM agent (nrgin middleware + logrus log forwarding via nrlogrus) configured by env, and New Relic Browser agent for frontend/admin/tester/delivery configured by global settings and served from /v2/browser_keys. | 9 | 0 | observability, external |
| [sendgrid](nodes/sendgrid.md) | SendGrid v3 mail API - ADAM's default transactional email provider whenever SENDGRID_API_KEY is set; sandbox mode toggled by the SENDGRID_SANDBOX_MODE global setting. | 9 | 0 | email, external |
| [act-tac](nodes/act-tac.md) | ACT Services TAC dashboard (ACT Accommodations Request); ADAM mints a 5-minute HS256 sso_bootstrap JWT and hands the user a {ACT_SERVICES_TAC_URL}/sso?login=<token> link. | 8 | 0 | external, auth |
| [entra-id](nodes/entra-id.md) | Microsoft Entra ID (Pearson's Azure AD directory) - the OIDC identity provider behind "Pearson SSO" sign-in for the admin app and the frontend app (ADAM-292). | 8 | 1 | auth, external, sso |
| [proctorview](nodes/proctorview.md) | ProctorView remote-proctoring service; ADAM only calls it to force-exit (pause) a student's TestNav session, authenticating with global-setting client credentials. | 8 | 0 | delivery, external, proctoring |
| [psaes](nodes/psaes.md) | PSAES (Pearson paper scanning) - the intended caller of ADAM's environment-level lookup APIs (district/school codes, scanned Pre-ID barcodes across every tenant; environment token, aud psaes); the PSAES backend has no client for them yet. | 8 | 2 | external, psaes, paper |
| [cloudfront](nodes/cloudfront.md) | AWS CloudFront CDN in front of the public S3 bucket - serves client branding (CSS, header logos) and is invalidated when a header logo is replaced or removed. | 7 | 0 | platform, external, branding |
| [rms](nodes/rms.md) | Pearson RMS image service: ADAM fetches scanned paper answer-document images as a PDF by document UIN for rejected-test review. | 7 | 0 | scoring, external, paper |
| [singlestore-analyst](nodes/singlestore-analyst.md) | SingleStore Aura Analyst API (natural-language-to-SQL over the SingleStore cluster) proxied by SingleStoreAnalystService for the AI chat data-analyst mode. | 6 | 1 | analytics, singlestore, ai |
| [splunk](nodes/splunk.md) | Splunk HTTP Event Collector - logrus hook (src/utils/splunk) shipping Info..Panic log entries when SHIP_LOGS and all SPLUNK_* env vars are set; also the only sink that receives browser client logs end-to-end. | 6 | 0 | observability, external |
| [math-scorer](nodes/math-scorer.md) | External HTTP math-expression equivalence scorer (AWS Lambda URL) that the QTI scorer calls for qti-custom-operator response rules. | 4 | 0 | scoring, external |
| [postmark](nodes/postmark.md) | Postmark email API (api.postmarkapp.com) - fallback transactional email provider used when SENDGRID_API_KEY is empty or the Redis email_sender override is false. | 4 | 0 | email, external |
| [spotlight-sftp](nodes/spotlight-sftp.md) | Spotlight SFTP drop of per-student report links; the import job exists but is never scheduled, so nothing reads the drop. | 4 | 1 | sync, external, reporting |
| [saml-idp](nodes/saml-idp.md) | External SAML 2.0 identity provider (metadata at SAML_IDP_URL) for email-matched SSO; the SP code exists but is never registered. | 3 | 0 | auth, external |
| [usps](nodes/usps.md) | USPS Web Tools address-verify client (XML API) - present in src/v2/usps but not called by any production code; Google Address Validation is used instead. | 2 | 0 | orders, external |
| [issue-trackers](nodes/issue-trackers.md) | Read-only issue-tracker abstraction (GitHub Projects v2 implementation, Jira stub) for looking up issues and release contents - not wired to any route or job. | 0 | 0 | support, external |

## datastore (9)

| node | summary | in | out | tags |
|---|---|---|---|---|
| [postgres](nodes/postgres.md) | Primary PostgreSQL database - go-pg DB (read-write) and RODB (read replica), Bun BDB, sqlx SDB and a pglock client, all opened by database.Connect; schema owned by golang-migrate files in db/migrations applied by the DBUPDATE_FLAG boot mode. | 115 | 0 | platform, db |
| [s3](nodes/s3.md) | AWS S3 via aws-sdk-go v1 (src/v2/s3) - private bucket ADAM_S3_INTERNAL (rostering CSV uploads, item responses, report files) and public CloudFront-fronted bucket ADAM_S3_PUBLIC (branding, media, QTI export zips); presigned URLs, CloudFront invalidation, cross-account assume-role upload. | 64 | 0 | platform, files |
| [redis](nodes/redis.md) | ElastiCache Redis (go-redis v9, TLS) - JSON value cache for global settings, users, clients and many services; fixed-window rate-limit counters; client-log throttle; gocron distributed job locks; email-provider override. | 57 | 0 | platform, cache |
| [singlestore](nodes/singlestore.md) | SingleStore (MySQL-wire) analytics database holding the denormalised reporting tables; two clusters run side by side - the original fed by Go sync jobs and the new one fed by SingleStore Flow replication plus stored procedures. | 54 | 0 | analytics, db |
| [sqs](nodes/sqs.md) | AWS SQS queues ADAM sends `{actionType, payload}` job messages to and long-polls from (general, saveoff, user-rescan, scoring, Launchpad sync, Launchpad session sync, ISR PDF); one generic consumer handles every actionType on every queue. | 31 | 12 | platform, queue |
| [redshift](nodes/redshift.md) | Amazon Redshift Serverless warehouse holding copies of the v1 report tables, filled by the optional rs_sync job (RS_ENABLED, default off); no live reader. | 12 | 0 | analytics, db, legacy |
| [ai-analyst-db](nodes/ai-analyst-db.md) | Dedicated least-privilege Postgres connection (PG_AI_RO_CONNECTION, Aurora Serverless) on which the internal AI Data Analyst executes LLM-generated SELECTs and reads information_schema. | 7 | 1 | ai, datastore, security |
| [kinesis](nodes/kinesis.md) | AWS Kinesis Firehose delivery stream writer intended to ship records toward SingleStore; the writer is never called - the kinesis package's live part is a plain SingleStore bulk upserter. | 3 | 0 | analytics, queue, dead |
| [mongodb](nodes/mongodb.md) | MongoDB — no longer used. The Go code imports only the mongo-driver/mgo `bson.M` map type as a JSON helper; no client, connection string or collection exists outside commented-out scripts. | 0 | 0 | db, legacy, dead |

## event (26)

| node | summary | in | out | tags |
|---|---|---|---|---|
| [file-process-message](nodes/file-process-message.md) | SQS job `FILE_PROCESS` carrying a `JobHistory` row; the consumer switches on `JobHistory.Type` to run one of ~43 CSV imports, templates and exports. | 41 | 1 | queue, jobs, import, export |
| [saveoff-message](nodes/saveoff-message.md) | SQS job `SAVE_OFF` / `LTI_SAVE_OFF` / `CLASSROOM_SAVE_OFF` carrying a session UUID; the consumer finalizes the session's results (scoring, outcomes, OSCAR send, LTI grade passback). | 27 | 2 | queue, scoring |
| [launchpad-sync-message](nodes/launchpad-sync-message.md) | SQS jobs for Launchpad roster/session sync — `LAUNCHPAD_SYNC`, `LAUNCHPAD_SESSION_SYNC`, `REAL_TIME_LAUNCHPAD_SYNC` — and `ONE_ROSTER_CATEGORIES` (push program categories after scoring). | 24 | 8 | queue, roster, launchpad, sync, sqs, reporting |
| [admin-data-job-message](nodes/admin-data-job-message.md) | SQS jobs for internal data imports/exports driven by an `AdminJobHistory` row — report assets, growth, demographics, reporting categories, target scores, family portal export, response export, COW report assets, PASS rescore. | 20 | 3 | queue, internal, import |
| [external-score-message](nodes/external-score-message.md) | SQS job `EXTERNAL_SCORE` / `BATTERY_SCORE` carrying one compressed PASS test attempt; the consumer applies the PASS score to the session (or student battery). | 17 | 3 | queue, scoring, pass |
| [report-generation-message](nodes/report-generation-message.md) | SQS jobs that build reports — `GENERATE_PDF` (ISR PDFs, consumed by an external worker), `GENERATE_AGG_REPORT`, `GENERATE_BULK_ISR`, `GENERATE_BULK_ISR_V2`. | 17 | 2 | queue, reporting |
| [rescan-message](nodes/rescan-message.md) | SQS job `RESCAN` (re-generate sessions for one administration) / `USER_RESCAN` (re-evaluate one student across administrations). | 16 | 2 | queue, admin |
| [content-sync-message](nodes/content-sync-message.md) | SQS jobs that pull test content or responses from external delivery platforms — `QTI_FORM_SYNC` (TestNav forms/items into QTI tables) and the AD `AD_*` syncs. | 13 | 4 | queue, content |
| [submit-sessions-message](nodes/submit-sessions-message.md) | SQS job `ADMIN_SUBMIT_SESSIONS` (submit an administration's open sessions, optionally per school or id list) / `BULK_SUBMIT_SESSIONS` (bulk submit from a job). | 13 | 2 | queue, sessions |
| [student-assignments-batch-message](nodes/student-assignments-batch-message.md) | SQS job `STUDENT_ASSIGNMENTS_BATCH_JOB` — one message per bulk assign/unassign request; the worker chunks DB writes and updates job progress. | 11 | 3 | queue, assignments |
| [ss-sync-job](nodes/ss-sync-job.md) | The gocron jobs (every 5 minutes, Redis-locked, SS_ASYNC_ENABLED) that migrate SingleStore, run the per-table Go syncs into the original cluster and call the v2 stored procedures on the new cluster. | 10 | 0 | analytics, jobs, singlestore |
| [tenant-admin-job-message](nodes/tenant-admin-job-message.md) | SQS jobs for heavy internal operations — tenant clone/rollover/copy/delete, administration reset/delete and bulk session/user updates — each tracked by a job-history row. | 10 | 4 | queue, internal |
| [accountability-code-message](nodes/accountability-code-message.md) | SQS job `BULK_APPLY_ACCOUNTABILITY_CODE` — apply accountability codes to many sessions from a proctor/admin bulk action. | 9 | 2 | queue, sessions |
| [ad-section-sync-job](nodes/ad-section-sync-job.md) | cron_AD_sync — every 5 min polls AD /api/delivery/sessions/current_info for AD-platform sessions updated in the last 8 h and writes session_sections plus session state/status/submitted_time. | 8 | 1 | ad, async, cron |
| [classroom-save-off](nodes/classroom-save-off.md) | SQS message CLASSROOM_SAVE_OFF queued when a classroom session is submitted; its handler scores QTI responses into classroom item results. | 8 | 1 | classroom, sqs |
| [need-attention-cleanup-job](nodes/need-attention-cleanup-job.md) | gocron job cron_clean_need_attention (every 30 min) that releases eligibility requests left REQUESTED for over an hour back to the default proctor group. | 8 | 1 | jobs, delivery |
| [session-update-message](nodes/session-update-message.md) | Websocket SessionUpdate pushed through the glue hub on the proctor-group topic (and session-id topic) whenever a session's state, item, accommodations or activity changes. | 8 | 1 | realtime, proctoring |
| [auto-submit-job](nodes/auto-submit-job.md) | In-process timer (every :00/:30) that finds open sessions of clients with auto-submit enabled and queues ADMIN_SUBMIT_SESSIONS per admin. | 7 | 1 | jobs, delivery |
| [qti-export-job](nodes/qti-export-job.md) | In-process goroutine job that packages selected QTI items (with stimuli, media and metadata) into an IMS QTI 3.0 content-package zip, uploads it to S3 and tracks progress in job_histories. | 7 | 4 | qti, async, export |
| [mot-distribution-sync](nodes/mot-distribution-sync.md) | Daily 00:00 gocron job mot_distributions_sync that pulls every client's MOT distributions and customer attributes into mot_distributions. | 6 | 1 | orders, jobs |
| [mot-order-status-sync](nodes/mot-order-status-sync.md) | Hourly gocron job mot_orders_status_sync that refreshes shipment tracking (and Canceled status) for ADAM-placed MOT orders in Ordered state. | 6 | 1 | orders, jobs |
| [tenant-copy-job](nodes/tenant-copy-job.md) | SQS action TENANT_COPY_EXPORT / TENANT_COPY_IMPORT on the saveoff queue carrying a tenantcopy.JobRequest; run by tenantcopy.RunJob on the SQS worker. | 6 | 1 | sqs, tenant |
| [tenant-delete-job](nodes/tenant-delete-job.md) | SQS action TENANT_DELETE on the saveoff queue carrying tenantdelete.JobRequest; run by tenantdelete.RunJob with a renewable 2-minute lease. | 6 | 2 | sqs, tenant, destructive |
| [unscored-session-report-job](nodes/unscored-session-report-job.md) | Hourly gocron job cron_session_notification emailing a zipped CSV of SUBMITTED sessions with no score_status ("Missing Session Score Info"). | 6 | 1 | jobs, scoring |
| [bulletin-email-job](nodes/bulletin-email-job.md) | Daily gocron job cron_email_bulletins (00:00) that emails every announcement whose start_date is today and notify is true. | 5 | 1 | comms, jobs |
| [mot-external-order-sync](nodes/mot-external-order-sync.md) | Hourly (1h05m window) and daily 00:30 (7-day window) gocron jobs that import orders placed outside ADAM (BIE ISS STANDARD ORDER / REPORTING) from MOT tracking data into mot_orders. | 5 | 1 | orders, jobs |

## config (9)

| node | summary | in | out | tags |
|---|---|---|---|---|
| [app-options](nodes/app-options.md) | Process-wide env-var configuration in src/options (package globals filled by EvalEnv at init) - DB/Redis/SingleStore/Redshift DSNs, AWS buckets and SQS queues, integration secrets, logging, async/migration toggles, security switches. | 105 | 0 | platform, config |
| [feature-flags](nodes/feature-flags.md) | Catalogue of every global_settings key the Go code reads - feature master switches, kill switches, tunables, integration endpoints/credentials - with default-when-unset, meaning and the exact reader. | 53 | 0 | platform, config, flags |
| [environment-token](nodes/environment-token.md) | Environment-level API token for tenantless integrations (PSAES today) - HS256 JWT with registered claims only, signed with its own key (JWT_LOOKUP_SIGNINGKEY; Delivery/Scoring keys mintable but unverified), checked by EnvironmentJWT, retired by an issued-after cutoff global setting, minted/retired by super admins or a script. | 18 | 2 | auth, config, security, psaes |
| [pearson-sso-settings](nodes/pearson-sso-settings.md) | Global settings that switch and configure Pearson SSO (Entra ID) per app - ENTRA_* registration, app URLs, per-app on/off flags, admin password-login kill switch, per-IP rate limits and the testing-tenant defaults for practice accounts. | 14 | 2 | auth, config, sso |
| [singlestore-config](nodes/singlestore-config.md) | Settings that select and drive the SingleStore clusters and sync - SS_* / RS_* env vars, the USE_NEW_SS global setting with APP_TYPE routing, and the inert ENABLE_SS_FILE_BASED_SYNC_FLAG. | 10 | 0 | config, singlestore |
| [ai-agent-options](nodes/ai-agent-options.md) | AI_AGENT_OPTIONS global setting (JSON) configuring Bedrock model, tokens, temperature, row cap, region, STS role, knowledge base and the SingleStore Analyst endpoint/key for the AI chat features. | 9 | 3 | ai, config |
| [tenant-copy-approval-settings](nodes/tenant-copy-approval-settings.md) | Global settings gating live Tenant Copy imports and Tenant Delete runs behind an emailed single-use code — TENANT_COPY_IMPORT_CODE_REQUIRED, TENANT_DELETE_CODE_REQUIRED, TENANT_COPY_APPROVER_EMAILS. | 9 | 0 | config, tenant, security |
| [ad-integration-settings](nodes/ad-integration-settings.md) | Settings that drive the AD integration — per-tenant credentials.adam_ad_* columns, env AD_COW_PARAM, global setting AD_OAUTH_TOKEN_CACHE_SECONDS, orgs.ad_override_authority_ids and roles.ad_role_banks_override. | 6 | 0 | ad, config |
| [cow-settings](nodes/cow-settings.md) | global_settings keys for COW — COW_AUTH_URL, COW_URL, COW_CLIENT_ID, COW_CLIENT_SECRET (document API) and COW_CLIENT_MAP (S3 folder → client_id for imports). | 6 | 0 | cow, config |

## flow (36)

| node | summary | in | out | tags |
|---|---|---|---|---|
| [deliver-ad-session](nodes/deliver-ad-session.md) | AD-player delivery of a district session - /tester/ad_launch registers the session on AD with PNP, the AD player runs the test, AD's webhook and the 5-minute section poller bring state back, and save-off pulls responses and outcomes from AD. | 14 | 9 | delivery, ad |
| [log-in](nodes/log-in.md) | How a staff user gets an ADAM session - password, Clever, Launchpad OIDC, Pearson SSO (Entra ID) or LTI - and how that session JWT is carried, refreshed, checked by AuthRequired and ended. | 14 | 8 | auth |
| [submit-and-score-session](nodes/submit-and-score-session.md) | How a session reaches SUBMITTED (student, proctor, admin submit-all, auto-submit, Session Explorer bulk submit, TestNav/AD sync) and how save-off then scores it, writes item results and outcomes, computes program outcomes and invalidates SingleStore. | 13 | 13 | delivery, scoring, saveoff |
| [export-results-data](nodes/export-results-data.md) | The async bulk exports of results/session data - Admin App response export, Session Explorer CSV exports, legacy aggregate report CSVs and the family-portal ISR-link export - all job row + ADAM_SQS_URL worker + S3 file + presigned download. | 12 | 15 | export, reporting, jobs, flow |
| [generate-sessions](nodes/generate-sessions.md) | How student sessions are created, updated and removed for an administration - on-demand and hourly RESCAN jobs, per-student USER_RESCAN, manual-admin add/remove, and Student Assignments batch jobs - all ending in proctor groups plus one NOT_STARTED session per student. | 12 | 11 | testing, admin, jobs |
| [pearson-sso-sign-in](nodes/pearson-sso-sign-in.md) | Pearson staff sign in with their Microsoft (Entra ID) account - admin app finds or creates an admin_users row; frontend app signs in as the tenant user with that email (picker for several, practice account in a testing tenant for none) - via a browser-bound 30 s bootstrap token. | 12 | 8 | auth, sso |
| [create-tenant](nodes/create-tenant.md) | How a staff operator creates a new ADAM tenant from the admin app (SaveTenant - account, client, 14 base roles, metadata slots, mzdadmin admin, top-level org, credentials, set-password email), and the two queued variants that derive one tenant from another - same-environment clone and yearly rollover. | 11 | 12 | tenant, internal, admin-ui |
| [score-externally](nodes/score-externally.md) | Scores that come from outside ADAM - PASS posts TestNav/paper test attempts and battery scores (queued, applied by ExternalScoreService / BatteryScoreService), and OSCAR posts human/AI trait scores for constructed responses ADAM sent it at save-off. | 10 | 9 | scoring, pass, oscar |
| [create-administration](nodes/create-administration.md) | How a user creates or edits a test administration in the Vue 3 admin wizard - PUT /v2/admins through MAdminService.SaveAdmin, then (by type) an inline dynamic generation or a queued RESCAN, followed by non-atomic follow-up calls for student instructions, testing windows and later per-org date selection. | 9 | 9 | testing, admin |
| [delete-tenant](nodes/delete-tenant.md) | The two ways to delete a tenant in ADAM - the Tenants page delete that only removes a still-pristine tenant (InternalService.DeleteTenant, 409 with blockers otherwise), and Tenant Delete (tenantdelete), the queued, backup-first, catalog-planned delete of a whole tenant or groups of its data, refused on production. | 9 | 11 | tenant, internal, destructive |
| [generate-bulk-isr-pdfs](nodes/generate-bulk-isr-pdfs.md) | Bulk ISR export - staff queue a school's ISRs, ADAM renders isr2 HTML in 200-student batches to S3, the puppeteer Lambda turns each into a PDF, ADAM zips them into a job_histories download; also how report-asset files are downloaded singly or as a zip job. | 9 | 12 | reporting, isr, pdf, lambda, flow |
| [sync-launchpad-roster](nodes/sync-launchpad-roster.md) | How ADAM stays in step with MZ Launchpad - scheduled/manual full or delta pulls over OneRoster 1.2, per-object real-time notifications, the session_orgs rebuild for students, and the reverse push of program categories, line items and results to the Launchpad gradebook. | 9 | 12 | rostering, sync, launchpad |
| [sync-results-to-singlestore](nodes/sync-results-to-singlestore.md) | How scored results reach SingleStore for reporting - 5-minute gocron Go syncs into the original cluster, Flow replication + stored procedures on the new cluster, Delete* propagation when results change, and the manual resync levers for data fixes. | 9 | 10 | singlestore, sync, reporting, flow |
| [import-roster-csv](nodes/import-roster-csv.md) | The four ways a CSV becomes roster/user data in ADAM - the legacy OneRoster CSV file cron (file_metadata), tenant user-import FILE_PROCESS jobs (job_histories), the Core SFTP accommodation drop, and internal-console imports (admin_job_histories) - and how each reports success or errors. | 8 | 15 | rostering, csv, import, upload |
| [launch-via-lti](nodes/launch-via-lti.md) | An LMS launches ADAM over LTI 1.3 (OIDC login, RS256 id_token) - ADAM provisions org/school/course/class/user, logs instructors into the legacy client (with NRPS roster and AGS grade sync) and sends students to the legacy tester with a session token; grades go back via AGS. | 8 | 9 | lti, auth, delivery |
| [proctor-a-session](nodes/proctor-a-session.md) | A proctor (anonymous test-code + proctor password, or a staff user handed a proctor token) opens a proctor group dashboard, polls its sessions, approves testers and drives state changes, accommodations, sections, timer and remote proctoring. | 8 | 10 | delivery, proctoring |
| [sync-oneroster-raas](nodes/sync-oneroster-raas.md) | How a RaaS (OneRoster Rostering-as-a-Service) district is kept current - a nightly or manual delta pull of events since orgs.raas_last_sync, each event applied in its own transaction. | 8 | 8 | rostering, sync, oneroster |
| [take-test](nodes/take-test.md) | A student signs into a scheduled test with a test code (or is launched from a staff/student portal), confirms, waits for proctor approval if needed, and is handed off to the AD player, TestNav, inline Learnosity or the legacy QTI player; practice tests skip the session. | 8 | 13 | delivery, tester |
| [view-performance-report](nodes/view-performance-report.md) | How a staff user views v2 performance reports in the Vue 3 frontend - dashboard/test/program/battery screens, the item-analysis tab and the single-student ISR - all scope-checked and read from SingleStore with N-size suppression. | 8 | 10 | reporting, singlestore, isr, flow |
| [build-and-assign-class-assignment](nodes/build-and-assign-class-assignment.md) | A teacher builds an AD-backed Class Assignment (AD form + local ad_tests copy), assigns it to classes/students with a CL_ code, students take it in the AD player via tester-ui, ADAM fetches responses from AD, and the teacher hand-scores and views performance. | 7 | 10 | classroom, ad, class-assignments |
| [run-classroom-test](nodes/run-classroom-test.md) | Legacy "My Tests" - a teacher builds a classroom test from QTI items, assigns it to classes (sessions generated synchronously), launches students into the QTI player via /crtester, save-off scores into class_room_item_results, and the teacher rubric-scores and finalizes. | 7 | 10 | classroom, legacy, qti |
| [switch-account](nodes/switch-account.md) | How a multi-tenant user moves to another tenant/role from the profile menu - the allowed pairs come from user_accounts, POST /v2/switch_account rewrites users.client_id/role_id and returns a fresh JWT bound to the new tenant. | 7 | 7 | auth, tenancy, users |
| [author-qti-item](nodes/author-qti-item.md) | Authoring test content from ADAM - native QTI items saved through QTIItemService.SaveItem (keys, stimuli, styles, history, traits), AD items edited in the legacy client straight against AD's Data API, and form preview in the AD player (tester-ui /ad_preview or legacy ad_launch.html); Learnosity item authoring is the older variant. | 6 | 8 | authoring, qti, ad |
| [bulk-import-administrations](nodes/bulk-import-administrations.md) | XLSX bulk imports behind ENABLE_BULK_IMPORT - administrations (ADMINS_BULK_IMPORT), tests (TEST_BULK_IMPORT) and test-form assignments (FORM_ASSIGNMENT_IMPORT) - each uploaded to S3, run as a FILE_PROCESS job and returned as an annotated workbook. | 6 | 10 | import, testing, jobs |
| [copy-tenant](nodes/copy-tenant.md) | How a tenant's configuration (no people) is moved between ADAM environments with Tenant Copy - export to a tar.gz artifact in the source env, upload and import in the destination env as a fresh copy, a --replace, or an in-place --update of a recorded copy - via the admin app, the CLI or the terminal UI. | 6 | 9 | tenant, internal, tenant-copy |
| [hand-score-responses](nodes/hand-score-responses.md) | A teacher or scorer opens the hand-scoring dashboard, steps through human-scorable responses and posts rubric trait scores - AD items go to AD and are re-pulled by save-off, local QTI items are finalized in ADAM, TestNav items go to PASS, classroom items to the My Tests tables. | 6 | 7 | scoring, reporting |
| [resolve-rejected-test](nodes/resolve-rejected-test.md) | How a scanned paper answer document PASS could not tie to a session becomes a rejected_tests row (POST /v1/api/no_pre_id), is auto-matched to a NOT_STARTED session or manually matched in the Rejected Tests screen, and the match is reported back to PASS so scores land on the session. | 6 | 8 | paper, scoring, pass |
| [sync-clever-roster](nodes/sync-clever-roster.md) | How a Clever district's roster lands in ADAM - a manual full sync (one big transaction in a goroutine, polled for progress) and the nightly/manual event (delta) sync that replays Clever events one transaction each. | 6 | 9 | rostering, sync, clever |
| [sync-testnav-forms](nodes/sync-testnav-forms.md) | Staff trigger a TestNav form sync; a QTI_FORM_SYNC job pulls forms and scoring testmaps from TestNav/Previewer and upserts batteries, QTI forms, items, traits and bank item fields. | 6 | 5 | testnav, content |
| [deliver-testnav-test](nodes/deliver-testnav-test.md) | TestNav delivery of a district session - just-in-time login registration with PNP accessibility, student tests in TestNav, ADAM polls status into sessions/sections, proctor actions go back to TestNav, and the score arrives later from PASS. | 5 | 9 | delivery, testnav |
| [place-materials-order](nodes/place-materials-order.md) | How paper testing materials are ordered from MOT - Initial/Additional orders (create, optional approval, post to MOT, hourly tracking sync) and Pre-ID orders (student roster with barcodes posted to MOT so answer documents come pre-printed). | 5 | 11 | orders, paper, mot |
| [sync-ad-content](nodes/sync-ad-content.md) | When content is saved in AD, AD's webhook makes ADAM pull the bank/form/item (per client that owns the AD bank) into its QTI tables; manual form/item sync and the class-assignment item refresh are side entries. | 5 | 7 | ad, content |
| [psaes-lookup](nodes/psaes-lookup.md) | PSAES resolves paper-scanning data from ADAM - posts org codes or scanned Pre-ID barcodes with its environment token; ADAM authenticates, rate-limits, queries every tenant and returns paged rows plus not-found codes, logging an audit line. | 4 | 6 | psaes, external, flow |
| [save-role-permissions](nodes/save-role-permissions.md) | How editing a role in Role Config changes what users can do - POST /v2/roles upserts the roles row and bank visibilities, a DB trigger writes role_audits, and the Redis authed_user cache is cleared so every RequirePermission guard sees the new flags. | 4 | 6 | auth, permissions, roles |
| [ask-chat-assistant](nodes/ask-chat-assistant.md) | How a question to the AI chat is answered - tenant users' unified chat routes each message to the Bedrock KB, the SingleStore Analyst or a Salesforce hand-off; internal staff's ADAM Agent turns questions into SQL on the AI read-only Postgres. Sessions live in Redis. | 3 | 11 | ai, chat, flow |
| [deploy-adam](nodes/deploy-adam.md) | How a commit becomes running ADAM - push to a deploy branch, Jenkins builds four Docker images of the same Go binary (different SPA each), optionally zips the puppeteer Lambda, pushes to ECR and triggers the per-line manifest job; at container start the binary applies Postgres migrations (golang-migrate) and, by default, exits so serving tasks run with migrations off. | 3 | 9 | infra, deploy, ci, db |

## concept (33)

| node | summary | in | out | tags |
|---|---|---|---|---|
| [login-as](nodes/login-as.md) | "Login As" - a staff user (role login_as) or an internal operator signs in as another user; the session JWT carries the impersonator so audit rows say "via <name>". | 13 | 2 | auth, glossary |
| [admin-term](nodes/admin-term.md) | In ADAM "admin" means a test administration (admins table) - one delivery of a test to a student population - never a person; staff are admin-users, the staff app is admin-ui. | 4 | 5 | glossary, testing |
| [pre-id](nodes/pre-id.md) | Pre-ID (pre-identification) means sending student data ahead of paper testing so answer documents are pre-printed with student barcodes/keys; unmatched scans become rejected tests. | 4 | 5 | glossary, paper |
| [test-code](nodes/test-code.md) | ADAM has several "codes" students or proctors type - proctor-group test code, CL_ class-assignment code, per-student access/claim codes, per-admin seal codes and magic codes - each meaning something different. | 3 | 5 | glossary, testing |
| [accountability-code](nodes/accountability-code.md) | An accountability code is a status code applied to a student session (e.g. void, void-allow-new, do-not-report) that changes how it is counted in reporting; allowed codes come from the program. | 2 | 3 | glossary, testing |
| [do-not-report](nodes/do-not-report.md) | DNR (do_not_report) is a session flag excluding it from reporting - set by accountability codes, unsubmit, battery scoring or attempted_flag=false from TestNav/AD. | 2 | 2 | glossary, scoring |
| [external-login-key](nodes/external-login-key.md) | ELK (external login key) is sessions.external_login_key - the session's login id on TestNav or AD, usually equal to the ADAM session id. | 2 | 4 | glossary, delivery |
| [tenant-term](nodes/tenant-term.md) | A client is a tenant - a customer program/contract, often one per school year - identified publicly by customer_code; an account owns tenants. | 2 | 3 | glossary, tenant |
| [adam-ad](nodes/adam-ad.md) | AD (A&D, Authoring & Delivery) is Pearson's external authoring/delivery platform; "adam_ad" / "ad_" is the ADAM-side code prefix for everything integrating with it. | 1 | 4 | glossary, delivery |
| [assignment-term](nodes/assignment-term.md) | Three different "assignment" features - Class Assignment (teacher test on AD content, CL_ code), legacy My Tests / classroom test, and Student Assignment (putting rostered students onto a program administration). | 1 | 5 | glossary, testing |
| [classic](nodes/classic.md) | Classic (legacy client, ADAM 2, Vue 2 client) is the old Vue 2 app in client/ served at APP_URL, being replaced by the Vue 3 frontend. | 1 | 2 | glossary, frontend |
| [louisiana](nodes/louisiana.md) | LA = Louisiana (LDOE / LEAP 360) - a tenant with its own class report, ISR code, exports (LASID, windows W1-W3, bluedot) and pre-Launchpad TSDL rostering. | 1 | 4 | glossary, tenant |
| [mzdadmin](nodes/mzdadmin.md) | mzdadmin_* is the per-tenant operational admin login (role type Other) created with each tenant; the one user Tenant Copy carries and the recipient of approval codes. | 1 | 3 | glossary, tenant |
| [outcome-term](nodes/outcome-term.md) | An outcome is a computed score for one objective (raw score, percent correct, performance level, scale score, lookup...) stored per session (session_outcomes) or per student battery (program_outcomes). | 1 | 3 | glossary, scoring |
| [pass-oscar](nodes/pass-oscar.md) | PASS (test-attempt manager "tman") is Pearson's external scoring service that pushes scored attempts to ADAM; OSCAR is the human/AI constructed-response scoring service that returns trait scores. | 1 | 4 | glossary, scoring |
| [platform-term](nodes/platform-term.md) | A test's platform (tests.platform) selects its delivery engine - QTI (ADAM's own player), AD, TestNav or Learnosity; qti_forms.form_type says where a form came from. | 1 | 5 | glossary, delivery |
| [pnp](nodes/pnp.md) | PNP (Personal Needs Profile) is the student's accommodations as sent to a delivery engine (TestNav or AD), built from the session's accommodations. | 1 | 2 | glossary, delivery |
| [role-obj](nodes/role-obj.md) | role_obj is the user's role row returned by GET /v2/me; its permission columns (0 hide / 1 view / 2 edit, or booleans) drive frontend route guards and menus. | 1 | 3 | glossary, auth |
| [role-scope](nodes/role-scope.md) | A role's scope decides whose data its user reaches - 0 = self (own classes only), 1 = org (orgs at/below the user's orgs); internal admin-users have a separate tenant scope. | 1 | 2 | glossary, auth |
| [saveoff](nodes/saveoff.md) | "Save-off" is the post-submit results pipeline - a SAVE_OFF SQS message makes SaveoffService pull and score responses into item results, totals, score status and outcomes. | 1 | 3 | glossary, scoring |
| [session-term](nodes/session-term.md) | "Session" in ADAM normally means a student test session (sessions row = one student's attempt in an administration); auth sessions, QTI sessions, classroom sessions and eligibility sessions are different things. | 1 | 6 | glossary, testing |
| [battery-term](nodes/battery-term.md) | A battery is a bundle of unit tests scored and reported together; a student battery is one student's enrolment in it, linking their unit sessions and carrying license status. | 0 | 3 | glossary, scoring |
| [cow-term](nodes/cow-term.md) | COW (CoW) is an external Pearson document service - the abbreviation is never expanded in code - from which ADAM reads session documents (e.g. scanned paper ISRs) and imports report assets. | 0 | 3 | glossary, integration |
| [eligibility](nodes/eligibility.md) | Eligibility = whether a student may take an administration; ELIGIBILITY selection makes students request access and wait in the default proctor group until a proctor approves. | 0 | 3 | glossary, testing |
| [lid](nodes/lid.md) | LID = Learner in Danger - an alert flag posted by TestNav/PASS for a concerning student response, stored in lid_infos. | 0 | 2 | glossary, scoring |
| [proctor-group-term](nodes/proctor-group-term.md) | A proctor group is the testing room/group within an administration that sessions belong to and a proctor monitors; it owns the test code. Default, alias and anonymous-proctor variants behave differently. | 0 | 3 | glossary, testing |
| [program-term](nodes/program-term.md) | A program is a testing-program configuration (program_configs, keyed by program_code) that groups tests for scoring and reporting and defines objectives, performance levels and reporting flags. | 0 | 2 | glossary, scoring |
| [reporting-org](nodes/reporting-org.md) | A session carries three org roles - enrolled orgs (where the student is rostered), the testing org (where they test) and reporting orgs (whose reports include the result) - deduplicated into an org combo. | 0 | 4 | glossary, org |
| [rescan](nodes/rescan.md) | Rescan = re-evaluate an administration's student selection against current rostering, adding/removing NOT_STARTED sessions and fixing forms/accommodations; rebalance also re-spreads forms. | 0 | 2 | glossary, testing |
| [rtpaas](nodes/rtpaas.md) | RTPaaS is Pearson Real-Time Proctoring as a Service - a JS bundle (REMOTE_PROCTORING_JS_URL) providing proctor video, raise-hand and chat over Ably. | 0 | 3 | glossary, proctoring |
| [testnav-term](nodes/testnav-term.md) | TestNav is Pearson's TestNav 8 delivery engine; PAN / Previewer is its content host ADAM reads items, forms and testmaps from. | 0 | 3 | glossary, delivery |
| [timing-code-term](nodes/timing-code-term.md) | A timing code (ACT T1-T8) is an extended-time accommodation on a session, resolved to a per-section time multiplier; room tier is its normalized bucket. | 0 | 2 | glossary, act |
| [vtcap](nodes/vtcap.md) | VTCAP is the Vermont Comprehensive Assessment Program; its yearly state reporting file is loaded back into ADAM by ops scripts. | 0 | 1 | glossary, tenant |

## capability (32)

| node | summary | in | out | tags |
|---|---|---|---|---|
| [class-assignments-feature](nodes/class-assignments-feature.md) | Teachers build classroom assignments from AD content, assign them to their classes, students take them in the AD player, and teachers score and review results (incl. teacher dashboard). | 2 | 9 | classroom, capability |
| [ad-test-delivery](nodes/ad-test-delivery.md) | Delivering district tests in the AD (Authoring & Delivery) player: AD content mirrored into ADAM, launch into AD, and results synced back. | 1 | 7 | delivery, ad, capability |
| [admin-support-requests](nodes/admin-support-requests.md) | In-app support tickets (move student, change session, accommodation request) submitted by schools and accepted/approved by district or Pearson staff. | 1 | 3 | operations, capability |
| [individual-student-reports](nodes/individual-student-reports.md) | Per-student score reports: on-screen view/print, bulk PDF generation, paper ISRs and COW documents, and report assets attached to students. | 1 | 11 | reporting, capability |
| [item-analysis-reports](nodes/item-analysis-reports.md) | Item-level and standards-level analysis inside performance reports: item analysis, item detail, standard performance, domain (reportable item group) reports and student responses. | 1 | 5 | reporting, capability |
| [my-tests-classroom](nodes/my-tests-classroom.md) | Legacy teacher-made QTI classroom tests (My Tests / My Classes) delivered in the legacy QTI player. | 1 | 7 | classroom, legacy, capability |
| [performance-reporting](nodes/performance-reporting.md) | Score reporting: performance dashboard, individual assessment report, program, battery, class/teacher, student performance, class assignment, assessment comparison, demographics and target reports, fed by the SingleStore results store. | 1 | 13 | reporting, capability |
| [session-generation-and-eligibility](nodes/session-generation-and-eligibility.md) | Turning an administration into per-student test sessions: by roster selection, eligibility criteria (incl. ACT order eligibility) or manual student lists, with auto-rescan, multiple attempts and auto-submit. | 1 | 9 | administrations, sessions, capability |
| [test-catalog-setup](nodes/test-catalog-setup.md) | Defining tests (forms, timers, field sets, human-scoring setup, form mode), publishing tests to orgs, bulk test and form-assignment import, and program configuration (objectives, ISR layout, batteries, custom reports, reporting thresholds). | 1 | 11 | test-management, capability |
| [testnav-test-delivery](nodes/testnav-test-delivery.md) | Delivering state/district tests in Pearson TestNav: form import/sync from TestNav, session hand-off, section approval polling and result return. | 1 | 8 | delivery, testnav, capability |
| [accommodations-feature](nodes/accommodations-feature.md) | Managing student accommodations and accommodation profiles, with approval workflow, validation rules, custom categories, extended-time codes, SFTP feeds and the ACT accommodation request hand-off. | 0 | 8 | accommodations, capability |
| [administration-scheduling](nodes/administration-scheduling.md) | Creating and managing test administrations (scheduled, training, practice), testing windows and org date selection, proctor groups, bulk administration import, rescan/rescore and login-code exports. | 0 | 11 | administrations, capability |
| [ai-chat-assistant](nodes/ai-chat-assistant.md) | In-app AI chat for customers (knowledge base, results data, Salesforce) and the internal ADAM Agent / AI Data Analyst for staff, backed by AWS Bedrock. | 0 | 10 | ai, capability |
| [bulletins-and-announcements](nodes/bulletins-and-announcements.md) | Posting announcements to users' dashboards, optionally emailed, with targeting by role/org. | 0 | 5 | communication, capability |
| [client-settings-and-branding](nodes/client-settings-and-branding.md) | Per-tenant configuration: Client Settings tabs, logo/theme, custom labels per language, terms and conditions, practice test page, user metadata fields and online licence tracking. | 0 | 11 | settings, capability |
| [external-scoring-feature](nodes/external-scoring-feature.md) | Sending responses to Pearson's PASS or OSCAR scoring services and receiving scores back, including PASS rescore/resend from the admin console. | 0 | 6 | scoring, integration, capability |
| [family-portal](nodes/family-portal.md) | Parent accounts that let families sign up and view their child's reports, plus family-portal ISR link exports. | 0 | 7 | reporting, legacy, capability |
| [hand-scoring-feature](nodes/hand-scoring-feature.md) | Human scoring of open responses by teachers or scorers inside ADAM (scoring dashboard, class assignment scoring) within a scoring window. | 0 | 4 | scoring, capability |
| [item-and-form-authoring](nodes/item-and-form-authoring.md) | Authoring QTI banks, items, shared stimuli and forms in ADAM (plus legacy Learnosity and in-ADAM AD authoring), with preview, paper forms, metadata import/export, standards alignment and content export. | 0 | 14 | authoring, legacy, capability |
| [louisiana-reports](nodes/louisiana-reports.md) | Louisiana-specific class reports, class ISRs and state data files, produced by offline scripts and a legacy-only report screen. | 0 | 4 | reporting, legacy, capability |
| [lti-integration](nodes/lti-integration.md) | Launching ADAM tests from a school LMS via LTI 1.3, configured per org. | 0 | 3 | integration, capability |
| [materials-ordering-and-pre-id](nodes/materials-ordering-and-pre-id.md) | Ordering paper test materials through MOT (distributions, orders, approval, shipment tracking, order reports/exports) and Pre-ID student label orders. | 0 | 8 | orders, capability |
| [proctoring-and-session-operations](nodes/proctoring-and-session-operations.md) | Running a live test session (proctor dashboard, approvals, timers, speeding alerts, read-aloud, kiosk override, rooms and seating, remote video proctoring) and fixing sessions afterwards (Session Explorer, event explorer, accountability codes, bulk submit, reporting orgs, session reviews). | 0 | 13 | proctoring, sessions, capability |
| [progress-and-activity-reports](nodes/progress-and-activity-reports.md) | Operational testing reports: Progress (who has/hasn't tested), Activity (testing activity over time), Aggregate reports and the Test Assignments report. | 0 | 6 | reporting, capability |
| [rejected-test-matching](nodes/rejected-test-matching.md) | Manually matching scanned paper answer documents that could not be matched to a student/session. | 0 | 4 | operations, capability |
| [results-explorer-and-exports](nodes/results-explorer-and-exports.md) | Ad-hoc results querying (Results Explorer) and the export/download pipeline: async export jobs, the Downloads page, admin/result exports and response export. | 0 | 10 | reporting, exports, capability |
| [rostering-and-roster-sync](nodes/rostering-and-roster-sync.md) | Maintaining the orgs, schools, courses, classes, users and academic sessions a tenant tests against, by hand, by CSV/XLSX upload or by automatic sync from Clever, Launchpad or OneRoster (RaaS, CSV, partner API). | 0 | 26 | rostering, capability |
| [student-test-assignments](nodes/student-test-assignments.md) | Assigning students to program tests and batteries outside of a scheduled administration (Assign Students), switching forms and tracking licences. | 0 | 4 | assignments, capability |
| [student-test-taking](nodes/student-test-taking.md) | The student side: signing in with a test code, quick-access/QR card or portal, secure-app checks, terms, proctor approval, multiple attempts and practice tests, then launching into the right player. | 0 | 11 | tester, capability |
| [tenant-copy-and-delete](nodes/tenant-copy-and-delete.md) | Internal tools to copy a tenant's configuration between environments and to delete a tenant (or groups of its data) with a backup. | 0 | 11 | internal, admin, capability |
| [tenant-management-console](nodes/tenant-management-console.md) | Pearson-internal ADAM Admin console: tenant setup/rollover/clone, integration credentials, API clients, admin users, global settings, config explorer, operations record editor, uploads, job history, SingleStore tools, LP sync stats. | 0 | 22 | internal, admin, capability |
| [user-access-and-permissions](nodes/user-access-and-permissions.md) | Signing in (password, SSO via Launchpad/Clever), password reset and lockout, switching between accounts, Login As impersonation, and configuring which roles can see and do what. | 0 | 14 | auth, permissions, capability |
