The Ops Atlas xOps School

Industry & Organisation Ambiguous / not standardised Partly verified

EduOps

EduOps has no standard definition. This page uses it for learning operations: running the platforms, standards, assessments and records through which any learner is enrolled, taught, assessed and credentialed, so that results are reliable, accessible and defensible.

Key takeaways

  • "EduOps" is not a recognised discipline. It names a school ERP, a Notion consultancy and a blog proposal; nearby labels such as "LearnOps" are vendor-led (Cognota marks "LearnOps" with ®). The page teaches learning operations under that plain name.
  • The job is an evidence chain: enrolment, access, attempt, score, grade, credential, record. Every link must be correct, accessible and auditable, because a certificate is only as good as the weakest link behind it.
  • Validity belongs to interpretations, not tests. The 2014 testing Standards say it is the interpretations of scores for proposed uses that are evaluated, so a pass mark needs a documented rationale and items need evidence, not just a quiz engine.
  • Pick standards by what crosses each boundary, and expect to combine them: LTI 1.3 for any tool launch (its Assignment and Grade Services return grades), cmi5 or the SCORM version your LMS supports for packaged content, xAPI with a Learning Record Store for learning outside the LMS, QTI for item banks, OneRoster for rosters, Open Badges 3.0 for portable proof.
  • Check support before you build: Moodle supports SCORM 1.2 but not SCORM 2004, and 1EdTech ended support for LTI 1.0 to 2.0 in June 2022.
  • Measure flow and integrity, not just completions: enrolment accuracy, grade passback success, time to release, item discrimination, reliability near the cut score, accommodations applied before the first timed attempt.
  • AI that scores, admits or proctors students is regulated in some jurisdictions (EU AI Act Annex III; emotion recognition in education is banned there). Treat such AI as a high-stakes decision system, not a convenience feature.

EduOps, as this page uses it, is learning operations: the work of running the platforms, integrations, assessments and records through which learners are enrolled, taught, assessed and credentialed. Its output is not “courses delivered” but results that can be trusted: the right people in the right courses, accessible learning, assessments whose scores mean what they claim, grades that reach the gradebook, and certificates that a third party can verify.

In one line: EduOps keeps the evidence chain from enrolment to credential correct, accessible and auditable.

The label is not standardised (what EduOps is not); the practices rest on established foundations: learning management systems (LMS), 1EdTech, ADL and IEEE interoperability standards, professional testing standards and W3C accessibility guidelines.

For LMS administrators, instructional designers, assessment leads, training or academic operations managers, and edtech engineers, in universities, schools, corporate academies and certification bodies. Legal points are flagged by jurisdiction, not settled.

Item Summary
Term status Ambiguous. No standard, body, certification or peer-reviewed use of “EduOps” was found (October 2026). Competing uses are product and company names and one blog proposal.[1][2][3]
Editorial emphasis Learning operations for any learner, student or employee: LMS, course lifecycle, standards, assessment quality, analytics, accessibility, enrolment to certification.
Goals Correct enrolments; accessible delivery; valid, reliable assessment; grades and credentials that are accurate, on time and verifiable.
Out of scope The learning-and-development programme (needs, budget, mandatory-training policy) → PeopleOps; general content production → ContentOps; hosting → WebOps and SysOps; learner-data law → PrivacyOps.
Prerequisites None. Helpful: basic web concepts (single sign-on, APIs) and basic statistics (mean, correlation).
Key outputs Term-start readiness record, integration register, assessment blueprint, item review log, release and regrade decisions, credential policy, accessibility defect log.

Learning systems fail quietly. A learner in the wrong section studies for weeks unnoticed; a tool sends scores the gradebook rejects; an answer key is wrong and the pass list is published; a timed quiz has no extra-time override for a student with an approved accommodation; a certificate cannot be verified two years later because the issuing course was deleted. None of these is a server outage. Each damages the one thing education sells: trust in the result.

A public example: in August 2020 England’s exam regulator replaced model-calculated AS, A level and GCSE grades with the grades schools had estimated (or the calculated grade, if higher) after admitting that the approach “caused real anguish and damaged public confidence”; the chair’s statement added, “For all of that, we are extremely sorry.”[4] Most failures are smaller, but the pattern is the same: the cost lands on learners first and on the institution’s credibility second.

Operating reality Without learning operations With learning operations
Enrolment Manual lists, late fixes Roster sync reconciled before term start
Integrations Each tool configured ad hoc Register of tools, standard, owner, data shared
Assessment Quiz settings copied forward Blueprint, reviewed items, item analysis after each sitting
Accommodations Remembered by individual staff Applied as overrides before the first timed attempt
Credentials PDF e-mailed, no verification Issued from records, verifiable, revocable
  • Not a recognised profession or framework. The only explanatory use found is a Linux Handbook piece (updated 2023) that expands EduOps as “Educational Operations” and defines it as “the application of DevOps inspired principles, coupled with effective DocOps and HumanOps strategies” to bring academia and industry closer.[1] That is a proposal about curricula, not an operating practice with a body of work.
  • Not a product category, although products use the name. EduOps is a school ERP for Indian schools[2] and a Notion consultancy.[3] EdOps, a US firm founded in 2009, states its mission as “to minimize the financial, operational, and compliance demands of running a school”;[5] there “education operations” means the school’s back office, which this page does not cover.
  • Not the same as “LearnOps”. Cognota writes “LearnOps® is a philosophy and framework for creating efficient Learning Operations” and says the term “was coined by Cognota”.[6] Practitioner writing on learning operations covers request intake, technology administration, vendors, compliance and analytics for corporate L&D.[7] This page overlaps with it but adopts no vendor framework.
  • Not the L&D programme or HR. Deciding who must be trained, on what budget, and keeping mandatory-training policy belongs to PeopleOps. EduOps delivers and measures the learning. This split is an editorial distinction of this Atlas.

The label has no history; the practices do, and their dates explain today’s constraints.

Year Milestone Why it matters operationally
1975 Florida State University’s Interservice Procedures for Instructional Systems Development for the US armed forces, usually treated as ADDIE’s source; the acronym’s own origin “is obscure”[8] Staged course design with evaluation
2001–2009 SCORM 1.2 (October 2001), then SCORM 2004 editions up to the 4th Edition (March 2009)[9] Packaged content still runs on these versions
2016 cmi5 “Quartz” 1st Edition, a profile of xAPI for LMS-launched content[10] A modern packaging path
2019 LTI 1.3 issued (16 April) with OpenID Connect, signed JWTs and OAuth 2.0[11] Tool launches with standard security
2022 1EdTech ends all support for LTI 1.0 to 2.0 (30 June)[12] Legacy tool links are a risk register item
2023 IEEE 9274.1.1-2023 (published 6 October), known as xAPI 2.0: a revised standardisation of xAPI 1.0.3[13][14][15] Learning records outside the LMS; two versions now in use
2025–2026 W3C Verifiable Credentials 2.0 (May 2025); Open Badges 3.0 document version 1.4.5 (June 2026)[16][17] Signed, portable credentials
Term Meaning on this page
LMS Learning management system: courses, enrolments, activities, gradebook (Moodle, Canvas and others).
SIS / HRIS Student or HR information system: the system of record for who the learner is and what they are enrolled in.
LTI 1.3 / LTI Advantage 1EdTech standard to launch external tools from a platform; Advantage adds grade return (AGS), rosters (NRPS) and content selection (Deep Linking).[18]
SCORM, cmi5 Standards for packaged self-paced content and its runtime data; cmi5 does this with xAPI.[19][10]
xAPI, LRS Experience API statements (“actor – verb – object”) stored in a Learning Record Store.[20]
QTI 1EdTech format for exchanging items, tests and results.[21]
Item, form, blueprint One question; one assembled test; the plan of what a test must sample and in what proportion.
Facility (p) Share of available marks learners earned on an item; higher means easier.[22]
Discrimination Correlation between an item score and the rest-of-test score; low or negative values call for a check of key and wording.[22]
Reliability, SEM Consistency of scores (here Cronbach’s alpha); standard error of measurement, which Moodle’s documentation calls “an estimate of the luck factor”.[22]
Cut score The score that separates pass from fail.
Accommodation A change to setting, timing or presentation that removes a barrier unrelated to what is measured.[23]

Mental model: the evidence chain. Every credential rests on seven links: enrolment → access → attempt → score → grade → credential → record. A certificate is only as good as the weakest link. Most EduOps work is making each link correct (right person, right version), accessible (the barrier is not what you are measuring) and auditable (you can show how a result was produced and change it under control).

Figure 1. Boundary map: what crosses between EduOps and its neighbours
PeopleOps: who must learnwhatEduOps: enrolment tocredentialContentOps: content assetsIdentityOps: accounts, SSOPrivacyOps: retention, lawfulbasisWebOps, SysOps: runningplatformComplianceOps: completionrecordsAnalyticsOps: learningmeasuresPeopleOps: results,credentials
Diagram source (Mermaid)
flowchart LR
  P["PeopleOps: who must learn what"] --> E
  C["ContentOps: content assets"] --> E
  I["IdentityOps: accounts, SSO"] --> E
  V["PrivacyOps: retention, lawful basis"] --> E
  W["WebOps, SysOps: running platform"] --> E
  E["EduOps: enrolment to credential"]
  E --> CO["ComplianceOps: completion records"]
  E --> A["AnalyticsOps: learning measures"]
  E --> R["PeopleOps: results, credentials"]
  classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
  classDef neutral fill:#f1f4f6,stroke:#5b7a87,color:#122029
  class E core
  class P,C,I,V,W,CO,A,R neutral

Text equivalent: PeopleOps sends EduOps the training requirement (who must learn what) and receives results and credentials; ContentOps supplies content assets; IdentityOps, accounts and sign-on; PrivacyOps, retention and lawful-basis rules; WebOps and SysOps run the platform. EduOps sends completion records to ComplianceOps and learning measures to AnalyticsOps.

The boundaries below are editorial distinctions of this Atlas, chosen so that each page teaches one thing.

Neighbour Shared scope Its unique focus EduOps’s unique focus
PeopleOps Employee training Who needs which training, budget, training-record policy Delivering, assessing and recording it
ContentOps Producing course material Content lifecycle, workflow, reuse Content as a course with learners and assessments
KnowledgeOps Onboarding know-how Knowledge captured from work Structured learning with evidence of mastery
PrivacyOps Learner data Lawful basis, rights, retention policy Applying those rules in rosters, analytics and proctoring
AnalyticsOps Dashboards Analytics delivery and metric governance Learning-specific measures and their ethics
WebOps, SysOps Running the LMS Hosting, performance, patching Term calendars, exam peaks, assessment integrity
IdentityOps Accounts and sign-on Directories, SSO, lifecycle Enrolment as an access decision; LTI identity claims
ComplianceOps Mandatory training evidence Proving obligations are met Producing the completion records that prove it

No EduOps charter exists; this one is this Atlas’s proposal. Mission: every result we issue can be explained, reproduced and defended to the learner, the institution and a third party.

  1. Validity first. The 2014 testing Standards define validity as the degree to which evidence and theory support score interpretations for proposed uses: “It is the interpretations of test scores for proposed uses that are evaluated, not the test itself.”[23] Write down what a pass is meant to show before building the quiz.
  2. Fairness is part of validity. In the Standards’ words, “Fairness is a fundamental validity issue”; accommodations exist to remove “construct-irrelevant barriers” (Standard 3.9).[23]
  3. Records are append-only. xAPI makes this explicit: “Statements are immutable”, and voiding “does not destroy a Statement”.[20] Apply the same rule to grades and credentials: correct by a recorded change, never by silent edits.
  4. Standards at the boundary, choice inside. Use open standards where data crosses a system boundary; keep freedom inside.
  5. Calendar-aware change. Learning has hard dates (term start, exam windows, grade deadlines). Change freezes follow them.
  6. Least data. Share with tools only the learner data the task needs; cmi5 says the LMS “SHOULD create” the launch actor “with an object … that does NOT include sensitive PII”.[10]

Non-goals: maximising completion rates for their own sake; automating judgement about individual learners without review.

Block Typical artefact
Course catalogue (versioned courses with owners and review dates) Course register
Enrolment and roster sync from the system of record Reconciliation report
Content packages and tool integrations Package inventory, integration register
Assessment system (question bank, quizzes, rubrics, overrides) Blueprint, item review log
Gradebook, release and credentials Release checklist, credential policy
Learning records and analytics (LMS logs, LRS, warehouse) Metric definitions, data map

Titles vary by sector (a university’s “learning technologist”, a company’s “LMS administrator”); the roles matter more.

Activity LMS / platform owner Instructional designer Assessment lead Course owner (faculty, SME) Data protection lead
Term-start enrolment reconciliation A/R I I C I
Add or change an LTI tool A/R C C C C
Assessment blueprint and cut score I C A/R R I
Item review and item analysis C C A/R R I
Accommodation overrides R I A C C
Grade release and regrade R I A R I
Credential issue and revocation R I A C C
Learner-analytics model in production A/R C C C C

R = responsible, A = accountable, C = consulted, I = informed. Small teams combine roles, but nobody should be the only reviewer of their own items. The data protection lead is consulted, not accountable: in GDPR jurisdictions a data protection officer’s tasks are to advise and to monitor compliance (Article 39),[24] and Article 38(6) requires that other duties “do not result in a conflict of interests”.[25] Where a data protection impact assessment is required, make it a gate before the model goes live.

  • Day 0, design: analysis of needs (often from PeopleOps or a curriculum committee), blueprint, content, items, accessibility review, integration tests, course readiness sign-off.
  • Day 1, run: enrolment sync, access, delivery, support, assessment windows with overrides, monitoring of passback and load.
  • Day 2, close and improve: grade release, item analysis, regrade decisions, credential issue, records retention, course review.

ADDIE (analysis, design, development, implementation, evaluation) names the same arc;[8] SAM (“an iterative process model”) shortens it with prototypes.[26] Either way, the close phase must feed evidence back into design.

  • Change calendar with freezes around term start and exam windows; emergency changes need the assessment lead’s consent.
  • Assessment board (or a named assessment lead in small settings) decides cut scores, regrades and item retirement, and records the reasons. Standard 5.21: “When proposed score interpretations involve one or more cut scores, the rationale and procedures used for establishing cut scores should be documented clearly.”[23]
  • Integration review before any tool receives learner data: standard, data shared, owner, exit plan.
  • Ceremonies: term-start readiness review, exam-window stand-ups, post-sitting item review, termly course review.
  • Escalation: learner-impacting faults (wrong grade, missing accommodation, credential error) go to the assessment lead the same day; platform faults follow the hosting team’s incident process (IncidentOps).

The architecture is a hub (the LMS) with standard-shaped edges. The standard on each edge is the thing to get right; products change, edges last.

Figure 2. Reference architecture: the LMS hub and its standard interfaces
OneRoster: rosters, gradesSCORM or cmi5LTI 1.3 launch, AGS scoresxAPI, often plug-inissue requestOpen Badges 3.0System of record: SIS orHRISContent packagesLMS: courses, gradebook,question bankExternal toolsLearning Record StoreCredential issuerAnalytics warehouseLearner wallet
Diagram source (Mermaid)
flowchart TB
  SIS["System of record: SIS or HRIS"]
  PKG["Content packages"]
  LMS["LMS: courses, gradebook, question bank"]
  TOOL["External tools"]
  LRS["Learning Record Store"]
  CRED["Credential issuer"]
  WH["Analytics warehouse"]
  WAL["Learner wallet"]
  SIS <-->|"OneRoster: rosters, grades"| LMS
  PKG -->|"SCORM or cmi5"| LMS
  LMS <-->|"LTI 1.3 launch, AGS scores"| TOOL
  LMS -->|"xAPI, often plug-in"| LRS
  LMS -->|"issue request"| CRED
  LRS --> WH
  CRED -->|"Open Badges 3.0"| WAL
  classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
  classDef neutral fill:#f1f4f6,stroke:#5b7a87,color:#122029
  class LMS core
  class SIS,TOOL,PKG,LRS,CRED,WAL,WH neutral

Text equivalent: The system of record (SIS or HRIS) and the LMS exchange rosters and grades through OneRoster. The LMS launches external tools with LTI 1.3; tools return scores with Assignment and Grade Services. Content packages run as SCORM or cmi5. The LMS sends xAPI statements, often through a plug-in, to a Learning Record Store that feeds an analytics warehouse. An issue request goes to a credential issuer (an LMS feature or a separate service), which delivers an Open Badges 3.0 credential to the learner’s wallet.

Two edges are often not built in: Moodle sends statements to an external LRS only through third-party plug-ins such as logstore xAPI,[27] and the Open Badges version an LMS issues must be checked per product (no claim is made here for Moodle).

Trust boundaries. Each edge carries personal data. LTI 1.3 tools MUST validate the platform’s token signature, an exact issuer, their client ID in the audience, expiry and the presence of a nonce; rejecting reused nonces is a SHOULD.[28] Feeds should use service accounts limited to their courses. Vendor support channels are part of the boundary: in the PowerSchool incident of December 2024, one district reported that an intruder with “a compromised credential” used “maintenance access channels” and took records “dating back to 2005”.[29]

Alternatives. A single vendor suite can replace several edges with proprietary links; it is simpler to run and harder to leave. For an LMS-logs warehouse instead of an LRS, see deep comparisons.

Figure 3. The evidence chain from enrolment to record, with the exception path
yesnonoyesEnrolment synced andreconciledAccess set: groups, dates,overridesLearner attempts assessmentScores recorded, tool scorespassed backItem analysis and checkspass?Grades releasedHold release, assessmentlead decidesFix key or item, dry-runregrade, record decisionCredential issued, verifiableLearner queries result?Record retained, changehistory keptReview query; correct gradeand credential under arecorded decision
Diagram source (Mermaid)
flowchart TB
  A["Enrolment synced and reconciled"] --> B["Access set: groups, dates, overrides"]
  B --> C["Learner attempts assessment"]
  C --> D["Scores recorded, tool scores passed back"]
  D --> E{"Item analysis and checks pass?"}
  E -->|yes| F["Grades released"]
  E -->|no| X["Hold release, assessment lead decides"]
  X --> Y["Fix key or item, dry-run regrade, record decision"]
  Y --> F
  F --> G["Credential issued, verifiable"]
  G --> Q{"Learner queries result?"}
  Q -->|no| H["Record retained, change history kept"]
  Q -->|yes| RQ["Review query; correct grade and credential under a recorded decision"]
  RQ --> H
  classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
  classDef risk fill:#fbeceb,stroke:#b4332b,color:#122029
  classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
  class A,B,C,D,F,G,H core
  class X,Y,RQ risk
  class E,Q decision

Text equivalent: Enrolment is reconciled; access is set with groups, dates and overrides; the learner attempts the assessment; scores are recorded and passed back. If checks fail, release is held while the assessment lead decides, the item is fixed and a dry-run regrade checked. Then grades are released and a verifiable credential issued. A later learner query is reviewed, and any correction to grade or credential made under a recorded decision. The record is retained with its change history.

Practice Trigger Owner Output Verification
Term-start readiness Four weeks before term or cohort start Platform owner Readiness record (template below) Reconciliation within tolerance; test learner walks the course
Integration onboarding New tool requested Platform owner Register entry, data map, test launch Launch, roster and grade passback tested in a sandbox course
Assessment blueprinting New or revised assessment Assessment lead Blueprint and cut-score rationale Peer review signed off
Item review Before first use; after each sitting Assessment lead and course owner Item review log Key checked by a second reviewer; statistics reviewed
Accommodation set-up Approved accommodation received Platform owner User or group override Override visible before the first timed attempt
Grade release Assessment window closes Course owner Released grades Passback complete; holds cleared
Credential issue Release complete Assessment lead Certificate or badge with verification Sample checked as a third party would

Item quality loop. Items are the smallest unit that can make a result wrong, so they get their own cycle. Standard 4.10 asks that the psychometric model be documented and that the sample used to estimate item properties be “of adequate size and diversity”.[23] With small cohorts, treat statistics as prompts for expert review rather than verdicts.

Figure 4. Item quality loop: from blueprint to keep, revise or retire
soundfixablefaulty or exposedBlueprint: what to sample,how muchWrite items to the blueprintPeer review: key, wording,bias, accessibilityFirst live useItem analysis: facility,discrimination, reliabilityEvidence and expert viewKeep in bankRevise: new versionRetire
Diagram source (Mermaid)
flowchart TB
  B["Blueprint: what to sample, how much"] --> W["Write items to the blueprint"]
  W --> R["Peer review: key, wording, bias, accessibility"]
  R --> U["First live use"]
  U --> S["Item analysis: facility, discrimination, reliability"]
  S --> D{"Evidence and expert view"}
  D -->|"sound"| K["Keep in bank"]
  D -->|"fixable"| V["Revise: new version"]
  D -->|"faulty or exposed"| T["Retire"]
  V --> R
  K --> U
  classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
  classDef risk fill:#fbeceb,stroke:#b4332b,color:#122029
  classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
  class B,W,R,U,S,K,V core
  class T risk
  class D decision

Text equivalent: Items are written to a blueprint, peer-reviewed (key, wording, bias, accessibility), used live and analysed. Evidence plus expert judgement keeps an item, revises it as a new version that returns to review, or retires it if faulty or exposed.

Interoperability standards (normative specifications; check what your platform actually supports):

Standard Moves what Current state (as of October 2026) Operational note
LTI 1.3 + Advantage (1EdTech) Tool launch with sign-on; scores (AGS), rosters (NRPS), content selection (Deep Linking)[18] LTI 1.3 issued 2019;[11] support for LTI 1.0–2.0 ended 30 June 2022[12] Inventory and migrate legacy 1.1 links
SCORM 1.2 / 2004 Packaged content and runtime data[19] 1.2 from 2001; 2004 4th Edition 2009[9] Moodle: “SCORM 2004 is not supported”; SCORM 1.2 passes ADL’s 1.2.7 conformance suite[27]
cmi5 LMS-launched content that reports via xAPI[10] Quartz 1st Edition, 2016 Needs an LMS (or plug-in) that implements it
xAPI Learning statements to an LRS[20] xAPI 2.0 = IEEE 9274.1.1-2023;[13][14] vendors expect to support 1.0.x alongside it for years[30] Agree verbs and IDs first, or data will not join up; record which version each system speaks
QTI 3.0 Items, tests, results[21] Current 1EdTech version Lets you keep item banks when you change platform
OneRoster 1.2 Rosters, gradebook, resources; CSV or REST[31] Current version SIS-to-LMS rosters and grades
Caliper 1.2 Learning events via metric profiles[32] Listed specification An alternative event model to xAPI
Open Badges 3.0 Verifiable achievement claims[17] Aligns with W3C VC 2.0 (W3C Recommendation, 15 May 2025)[16] Signed credentials; plan issuer keys and revocation

Assessment standards (professional, not legal): the open-access Standards for Educational and Psychological Testing (2014) of AERA, APA and NCME.[23] A practice quiz needs less evidence than a licensing exam; scale evidence to the stakes.

Design and quality frameworks (optional): ADDIE and SAM;[8][26] the Quality Matters Higher Education Rubric, Seventh Edition, built around “Alignment” of objectives, assessment, materials, activities and technology;[33] CAST’s UDL Guidelines 3.0 (July 2024).[34] Evaluation: Kirkpatrick’s four levels (reaction, learning, behaviour, results), with the advice that “it is critical to start with Level 4: Results”.[35] So design starts from the Level 4 result the programme owner (PeopleOps) or faculty defines; EduOps then measures levels 1 and 2 and supplies data for 3 and 4, which that owner interprets. This split is an editorial distinction of this Atlas.

Vendor-neutral categories first; products are examples verified on 2026-10-23, not recommendations.

Category Job Examples Selection criteria Lock-in and risk
LMS Courses, enrolment, gradebook, quizzes Moodle (GPLv3);[36] Canvas LMS (AGPLv3, also hosted by Instructure)[37] Standards support, accessibility, release and support cadence, hosting model Item banks and gradebooks in proprietary formats
LRS Store and query xAPI Learning Locker (open source, GPL-3.0)[38]; commercial LRSs Conformance, query API, retention controls Statements without agreed verbs are hard to migrate
Assessment and proctoring High-stakes delivery, invigilation LMS quiz engines; specialist platforms Item analysis, accommodation support, data minimisation Legal and ethical exposure (see quality and compliance)
Credentials Certificates, badges, verification LMS plug-ins; Open Badges 3.0 issuers Verifiability, revocation, longevity Certificates that live only as PDFs
Analytics Dashboards, early-warning models LMS analytics, warehouse and BI Explainability, bias checks, consent Models acting on biased data

Release cadence is a constraint. Moodle’s release table (updated 4 October 2026) gives 4.5 LTS security fixes until 4 October 2027 and 5.3 LTS (released 5 October 2026) until 1 October 2029.[39] Advisories arrive between releases, for example MSA-26-0044, “Missing access checks on H5P content files” (15 October 2026, Serious).[40]

Hosted LMS operations differ. On a vendor-hosted LMS the vendor sets the calendar: an Instructure post (2023) described new Canvas features arriving monthly, with a beta environment overwritten from production every Saturday and LTI testing listed as not available there.[41] The institution cannot freeze releases, so it tests them in beta before exam windows (treating beta as holding real learner data) and checks tool launches in a production test course. This page’s examples use self-hosted Moodle; the duties are the same.

Automation that clearly helps: roster sync with reconciliation, scheduled reminders, automatic overrides from an accommodations list, passback monitoring, item-statistics reports after each sitting, certificate issue on release. Keep a human decision on anything that changes a learner’s result.

  • Regulation (EU, not legal advice). The AI Act lists as high-risk AI systems used to determine admission, to “evaluate learning outcomes”, to assess the level of education a person will receive, and “for monitoring and detecting prohibited behaviour of students during tests” (Annex III, point 3).[42] Its Article 5 bans AI used “to infer emotions of a natural person in the areas of workplace and education institutions”, except for medical or safety reasons, which has applied since 2 February 2025.[43][44] After the 2026 “AI Omnibus”, the high-risk (Chapter III) requirements for Annex III systems apply from 2 December 2027 instead of 2 August 2026.[45] Article 6(3) lets a listed system escape the high-risk class if it does not materially influence decisions, for example a narrow procedural or preparatory task, but never when it profiles people.[46]
  • Bias. A review of the field found evidence of algorithmic bias in education by race and ethnicity, gender and nationality, with less-studied evidence for socioeconomic status, disability and military-connected status.[47] Moodle’s built-in “Students at risk of dropping out” model “must be trained on a site with data”, and Moodle advises that models “should also be monitored for performance and accuracy”.[48]
  • Generative AI. UNESCO warns that, without national regulation, institutions are largely unprepared to validate such tools.[49] AI-drafted items still pass the item quality loop; AI grades are suggestions. For integrity, publish which AI use each assessment permits, and do not treat a detector’s score as proof: a 2023 study found that GPT detectors “consistently misclassify non-native English writing samples as AI-generated”.[50] Suspected misconduct goes to the assessment board with other evidence (drafts, a viva).

Assumptions: a self-hosted Moodle 4.5 LTS site on Linux with PostgreSQL, a nightly roster feed, three LTI 1.3 tools, vendor packages and quizzes that lead to certificates. Other platforms need other commands. 4.5 is shown because it has security support until 4 October 2027 and the commands were checked against its source; a new site should normally start on 5.3 LTS (released 5 October 2026).[39]

1. Integration register entry. One entry per tool; the review in operating model and governance fills it in before any learner data flows.

Example status: YAML syntax-checked; illustrative values.

tool: "Example Coding Labs"
owner: "platform-team@example.edu"
standard: "LTI 1.3 with AGS and NRPS"   # never a new LTI 1.1 link
deployment_id: "deployment-01"
data_shared:
  claims: [sub, roles, context]           # no name or e-mail unless needed
  nrps_roster: false
  grade_passback: true
courses: ["course-101", "course-102"]
contract:
  dpa_signed: true
  data_location: "EU"
  retention_after_exit_days: 30
tests:
  sandbox_launch: "2026-10-20"
  passback_verified: "2026-10-20"
exit_plan: "Export scores via AGS line items; download learner work"
review_due: "2027-04-01"

2. Change-window runbook for the LMS. The commands and options below are those of Moodle 4.5’s command-line scripts; run them as the web-server user, as Moodle’s documentation advises.[51][52][53] Schedule the window outside exam periods.

Example status: syntax-checked with bash -n; control flow executed on 2026-10-23 with stub commands (forced failures in checks.php, the dump and upgrade.php); not run against Moodle. Exit codes and directory and maintenance-mode behaviour were read in the 4.5 source. Paths, user and course names are placeholders.

#!/usr/bin/env bash
# Change window for a self-hosted Moodle 4.5 site. Run as root. Stop at the first error.
set -Eeuo pipefail                         # -E: the ERR trap also fires inside functions
umask 077                                  # dumps and backups readable by owner only
MOODLE_DIR="/var/www/moodle"
PHP_BIN="/usr/bin/php"
WEB_USER="www-data"
BACKUP_DIR="/srv/moodle-backups/$(date +%Y%m%d%H%M)"
run() {                                    # log the step, then run it as the web user
  echo "== $*" >&2
  sudo -u "$WEB_USER" "$PHP_BIN" "$MOODLE_DIR/admin/cli/$1" "${@:2}"
}
checks() {                                 # exit 0 OK, 1 warning; 2 or 3 stops
  local rc=0
  run checks.php -v || rc=$?
  [ "$rc" -le 1 ] || { echo "== check result $rc: stop and investigate" >&2; return 1; }
}
trap 'echo "FAILED: $BASH_COMMAND; site may still be in maintenance mode" >&2' ERR

[ "$(id -u)" -eq 0 ] || { echo "run as root" >&2; exit 1; }
# backup.php runs as the web user and refuses a directory it cannot write to.
install -d -m 700 -o "$WEB_USER" -g "$WEB_USER" "$BACKUP_DIR"
checks                                     # warnings are printed; critical stops here
run maintenance.php --enable               # no new attempts after this point
# Database dump (PostgreSQL shown). It holds every learner's grades and personal data.
echo "== pg_dump moodle | gzip" >&2        # not via run(); on failure FAILED names gzip
sudo -u postgres pg_dump moodle | gzip > "$BACKUP_DIR/moodle-db.sql.gz"
# Course backups for courses with live assessments (by shortname).
for course in course-101 course-102; do
  run backup.php --courseshortname="$course" --destination="$BACKUP_DIR"
done
# ... deploy the new code or plugin version here ...
run upgrade.php --non-interactive
run purge_caches.php
run maintenance.php --disable
run scheduled_task.php --list | sed -n '1,20p' # tasks listed (sed reads all: no SIGPIPE)
checks                                     # compare with the first run

Maintenance mode comes before the backups, so no attempt is lost on rollback (CLI scripts still run; web requests get the maintenance page). The backup directory is private and owned by the web user, because backup.php refuses a directory it cannot write to.[52] checks.php exits 1 on a warning and 2 on an error or critical result,[53] so checks continues on warnings and stops on worse. The dump holds learner personal data: copy it off the host, encrypted, and delete it when retention ends. With set -E the ERR trap also fires inside run: a failed step prints FAILED after its == line, and the site stays in maintenance mode until someone decides to roll back or continue.

Not covered: restore (restore_backup.php --file=… --categoryid=…), file-store backups and upgrade-specific migrations. A move from 4.5 to 5.x migrates question banks: course-level questions go to automatically created shared banks, category-level ones to a new course, and Moodle Docs list known migration issues and role capabilities to fix afterwards.[54] Rehearse it on a copy before an exam season.

Lab 1 (beginner): item analysis after a sitting

Link to section “Lab 1 (beginner): item analysis after a sitting”

Objective: compute facility, discrimination and reliability for one quiz and find the item that is hurting the result. Prerequisites: Python 3.8 or later; no LMS, cost or risk; 30 minutes. Status: executed by the author on 2026-10-23 with the synthetic data below.

  1. Save the responses as responses.csv (20 synthetic learners, 8 items scored 0 or 1).
  2. Save the script as item_analysis.py and run python3 item_analysis.py responses.csv.
  3. Read the flags. Then assume a reviewer confirms Q6’s key was wrong: re-key by flipping every Q6 value (0↔1), save as responses-rekeyed.csv, and run again.
  4. With a cut score of 6 out of 8, list who passes before and after.
learner,Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8
L01,1,1,1,1,1,0,1,1
L02,1,1,1,1,1,0,1,1
L03,1,1,1,1,0,0,1,1
L04,1,1,1,0,1,0,1,1
L05,1,1,1,1,1,0,0,1
L06,1,0,1,1,1,0,1,0
L07,1,1,1,0,1,0,1,0
L08,0,1,1,1,0,0,1,1
L09,1,0,1,1,0,1,0,1
L10,1,1,1,0,0,0,1,0
L11,0,1,1,1,0,1,0,0
L12,1,0,1,0,1,1,0,0
L13,0,0,1,1,0,1,1,0
L14,1,0,1,0,0,1,0,0
L15,0,1,1,0,0,1,0,0
L16,0,0,1,0,1,1,0,0
L17,0,0,1,0,0,1,0,1
L18,0,0,1,0,0,1,0,0
L19,0,0,1,0,0,0,0,0
L20,0,0,1,0,0,1,0,0

Example status: verified by execution (Python 3, standard library), 2026-10-23.

"""Classical item analysis for one dichotomously scored test (0/1 per item).

Usage: python3 item_analysis.py responses.csv
Columns: learner id, then one column per item. Standard library only.
"""
import csv
import math
import sys
from statistics import mean, pstdev


def pearson(xs, ys):
    """Pearson correlation; returns None when either list has no variance."""
    sx, sy = pstdev(xs), pstdev(ys)
    if sx == 0 or sy == 0:
        return None
    mx, my = mean(xs), mean(ys)
    cov = sum((x - mx) * (y - my) for x, y in zip(xs, ys)) / len(xs)
    return cov / (sx * sy)


def load(path):
    with open(path, newline="", encoding="utf-8") as fh:
        rows = list(csv.reader(fh))
    items = rows[0][1:]
    scores = [[int(v) for v in r[1:]] for r in rows[1:] if r]
    return items, scores


def analyse(items, scores):
    n, k = len(scores), len(items)
    totals = [sum(r) for r in scores]
    report = []
    for j, name in enumerate(items):
        col = [r[j] for r in scores]
        rest = [t - c for t, c in zip(totals, col)]  # rest-of-test score
        p = mean(col)
        d = pearson(col, rest)
        band = "easy" if p >= 0.85 else "hard" if p <= 0.50 else "moderate"
        flags = []
        if d is None:
            flags.append("no variance: cannot discriminate")
        elif d < 0:
            flags.append("NEGATIVE: check key")
        elif d < 0.10:
            flags.append("poor discrimination")
        report.append((name, p, band, d, flags))
    item_var = sum(pstdev([r[j] for r in scores]) ** 2 for j in range(k))
    total_var = pstdev(totals) ** 2
    alpha = (k / (k - 1)) * (1 - item_var / total_var)
    sem = pstdev(totals) * math.sqrt(1 - alpha) if alpha < 1 else 0.0
    return n, k, totals, report, alpha, sem


def main(path):
    items, scores = load(path)
    n, k, totals, report, alpha, sem = analyse(items, scores)
    print(f"learners={n} items={k} mean_total={mean(totals):.2f} "
          f"sd_total={pstdev(totals):.2f}")
    print(f"{'item':<5}{'p':>6} {'band':<9}{'r_rest':>7}  review flags")
    for name, p, band, d, flags in report:
        dtxt = "n/a" if d is None else f"{d:.2f}"
        print(f"{name:<5}{p:6.2f} {band:<9}{dtxt:>7}  {', '.join(flags)}")
    print(f"alpha={alpha:.2f} sem={sem:.2f} (raw-score points)")
    if n < 100:
        print(f"note: n={n} is small; treat statistics as signals for review")
    return 1 if any("NEGATIVE" in " ".join(r[-1]) for r in report) else 0


if __name__ == "__main__":
    sys.exit(main(sys.argv[1]))

Expected output (step 2, from the author’s run; exit code 1 because an item is negative):

learners=20 items=8 mean_total=4.25 sd_total=1.64
item      p band      r_rest  review flags
Q1     0.55 moderate    0.47
Q2     0.50 hard        0.40
Q3     1.00 easy         n/a  no variance: cannot discriminate
Q4     0.45 hard        0.43
Q5     0.40 hard        0.30
Q6     0.50 hard       -0.74  NEGATIVE: check key
Q7     0.45 hard        0.43
Q8     0.40 hard        0.47
alpha=0.41 sem=1.26 (raw-score points)
note: n=20 is small; treat statistics as signals for review

Step 3 (re-keyed): Q6 becomes 0.74, alpha rises from 0.41 to 0.79, the standard deviation from 1.64 to 2.36, SEM 1.08, exit code 0. Step 4: at a cut of 6, 5 learners pass before and 8 after; L06, L07 and L08 move from 5 to 6 points.

How to read it. The bands follow the University of Washington’s ScorePak conventions (difficulty “easy” at 85 % or above, “hard” at 50 % or below; discrimination “good” above .30, “poor” below .10; reliability .70–.80 “Good for a classroom test”), one institution’s practice, with its caveat: “Item analysis data are tentative.”[55] Discrimination is computed against the rest-of-test score, as in Moodle.[22] Q3 carries no information; a negative item means a wrong key or an ambiguous question, and only an expert reading tells you which, so step 3 is a decision, not an automatic fix.

Validation: on a real export, set the report’s “Calculate statistics from” option to the attempts you exported (in Moodle 4.5 it defaults to the quiz’s grading method, not the first attempt[56]), and compare Moodle’s percentages with this script’s values × 100.[22] They should then match within rounding. Troubleshooting: ValueError: invalid literal for int() means a non-numeric cell (blank or partial credit); this script handles 0/1 only. ZeroDivisionError means every learner scored the same total. Teardown: delete the files; they contain no real data. If you export real responses, pseudonymise learner IDs first.

Lab 2 (intermediate): pre-flight checks for an xAPI statement and an LTI launch

Link to section “Lab 2 (intermediate): pre-flight checks for an xAPI statement and an LTI launch”

Objective: catch structural and privacy faults in two interoperability artefacts before a vendor test. Prerequisites: Python 3.8 or later; no network, cost or risk. Status: executed by the author on 2026-10-23.

  1. Save the statement, the decoded launch payload and the script below.
  2. Run python3 interop_check.py statement statement.json and python3 interop_check.py launch launch.json.
  3. Break them: replace the statement’s account with "mbox": "mailto:learner@example.edu"; in the launch, delete the deployment_id claim and set the version claim to "1.1". Run both again.

Example status: JSON syntax-checked; both files passed the script below.

{
  "id": "3f9d2c1e-8a47-4b6e-9f0a-2d1c5e7b8a90",
  "actor": {
    "objectType": "Agent",
    "account": {"homePage": "https://lms.example.edu", "name": "learner-7f3a"}
  },
  "verb": {
    "id": "http://adlnet.gov/expapi/verbs/passed",
    "display": {"en-US": "passed"}
  },
  "object": {
    "objectType": "Activity",
    "id": "https://lms.example.edu/xapi/activities/course-101/final-quiz",
    "definition": {"name": {"en-US": "Course 101 final quiz"}}
  },
  "result": {
    "score": {"scaled": 0.8, "raw": 20, "min": 0, "max": 25},
    "success": true,
    "completion": true,
    "duration": "PT34M12S"
  },
  "context": {
    "registration": "6c1d8e2f-4b3a-4f9e-8d7c-1a2b3c4d5e6f",
    "platform": "Example LMS"
  },
  "timestamp": "2026-10-23T09:41:00Z"
}
{
  "iss": "https://lms.example.edu",
  "aud": "tool-client-id-123",
  "sub": "a6d5c443-1f51-4783-ba1a-7686ffe3b54a",
  "exp": 1792750000,
  "iat": 1792749700,
  "nonce": "n-0S6_WzA2Mj",
  "https://purl.imsglobal.org/spec/lti/claim/message_type": "LtiResourceLinkRequest",
  "https://purl.imsglobal.org/spec/lti/claim/version": "1.3.0",
  "https://purl.imsglobal.org/spec/lti/claim/deployment_id": "deployment-01",
  "https://purl.imsglobal.org/spec/lti/claim/target_link_uri":
    "https://tool.example.com/launch",
  "https://purl.imsglobal.org/spec/lti/claim/resource_link":
    {"id": "rl-200417"},
  "https://purl.imsglobal.org/spec/lti/claim/roles": [
    "http://purl.imsglobal.org/vocab/lis/v2/membership#Learner"
  ],
  "https://purl.imsglobal.org/spec/lti/claim/context":
    {"id": "course-101", "title": "Course 101"}
}

Example status: verified by execution (Python 3), 2026-10-23.

"""Pre-flight checks for two interoperability artefacts (structure only).

  python3 interop_check.py statement statement.json   # xAPI Statement
  python3 interop_check.py launch launch.json         # decoded LTI 1.3 launch
Does NOT verify signatures, nonces or expiry: the receiving system must.
"""
import json
import sys

LTI = "https://purl.imsglobal.org/spec/lti/claim/"
LTI_REQUIRED = ["message_type", "version", "deployment_id",
                "target_link_uri", "resource_link", "roles"]
ACTOR_IFIS = ["mbox", "mbox_sha1sum", "openid", "account"]


def check_statement(s):
    problems = []
    for prop in ("actor", "verb", "object"):
        if prop not in s:
            problems.append(f"missing required property: {prop}")
    actor = s.get("actor", {})
    ifis = [i for i in ACTOR_IFIS if i in actor]
    if len(ifis) != 1:
        problems.append(f"actor needs exactly one identifier, found {ifis}")
    if "mbox" in ifis:
        problems.append("privacy: actor exposes an e-mail; prefer account")
    if not str(s.get("verb", {}).get("id", "")).startswith(("http://", "https://")):
        problems.append("verb.id must be an IRI")
    scaled = s.get("result", {}).get("score", {}).get("scaled")
    if scaled is not None and not -1 <= scaled <= 1:
        problems.append("result.score.scaled must be between -1 and 1")
    return problems


def check_launch(c):
    problems = [f"missing claim: {n}" for n in LTI_REQUIRED if LTI + n not in c]
    if c.get(LTI + "version") != "1.3.0":
        problems.append("version claim must be 1.3.0")
    if not c.get(LTI + "resource_link", {}).get("id"):
        problems.append("resource_link.id is required")
    if "sub" not in c:
        problems.append("no sub: anonymous launch, grades cannot be returned")
    return problems


def main(kind, path):
    with open(path, encoding="utf-8") as fh:
        doc = json.load(fh)
    problems = check_statement(doc) if kind == "statement" else check_launch(doc)
    for p in problems:
        print("FAIL", p)
    print("OK" if not problems else f"{len(problems)} problem(s)")
    return 1 if problems else 0


if __name__ == "__main__":
    sys.exit(main(sys.argv[1], sys.argv[2]))

Expected output (author’s run): step 2 prints OK twice, exit 0. Step 3 prints FAIL privacy: actor exposes an e-mail; prefer account (exit 1), then FAIL missing claim: deployment_id and FAIL version claim must be 1.3.0 (exit 1).

Where the rules come from. The xAPI 1.0.3 text requires actor, verb and object, one identifier per Agent, and a scaled score between -1 and 1.[20] An xAPI vendor’s summary of 2.0 says the requirements did not change significantly (MUST became SHALL);[30] check these rules against the 2.0 text if your LRS uses it. The e-mail rule is this page’s privacy choice, after cmi5’s advice against sensitive PII in the launch actor.[10] The LTI checks are the required claims of an LtiResourceLinkRequest.[11] Validation: the script is a pre-flight, not a conformance test. Real tools must also verify the token’s signature, issuer, audience, expiry and nonce,[28] and an LRS can be tested with ADL’s conformance suite, which its README says “should also not run against a production LRS endpoint because the data is persisted and never voided”.[57] Troubleshooting: json.decoder.JSONDecodeError usually means a trailing comma. Teardown: delete the files.

Lab 3 (advanced): accommodation and regrade drill in a sandbox LMS

Link to section “Lab 3 (advanced): accommodation and regrade drill in a sandbox LMS”

Objective: prove, before a real sitting, that the team can apply an accommodation and correct a key without corrupting results. Prerequisites: a non-production Moodle 4.5 (or equivalent) site with three test accounts; teacher and admin rights; two hours. Risk: none if the site is a sandbox; never run this drill in a live course. Status: not executed for this page; the steps follow Moodle 4.5 documentation.

  1. Create a course and a 10-minute timed quiz with five auto-marked questions; deliberately set one wrong key.
  2. Add a user override giving one learner 25 minutes; user overrides take precedence over group overrides.[58]
  3. Attempt the quiz as all three learners; only the overridden learner should see 25 minutes.
  4. Open the statistics report and find the faulty item (low or negative discrimination; Moodle highlights low values in red).[59]
  5. Fix the key, run a dry-run regrade, compare, then regrade.[60]
  6. Record the decision in the regrade decision record.

Expected output (not executed): only the overridden learner had 25 minutes; the dry run previews the grade changes; afterwards the gradebook matches the preview. Validation: a second person re-derives one grade by hand. Troubleshooting: a missing override usually means wrong group membership;[58] if nothing changes, “Regrading isn’t always possible”, for example after the number of answers changed.[60] Teardown: delete the course, for example with sudo -u www-data /usr/bin/php admin/cli/delete_course.php --courseid=<id> --disablerecyclebin on the sandbox (without the flag, an enabled recycle bin keeps a course backup),[61] and delete the test accounts.

Scenarios 1–3 are illustrative; 4 and 5 are sourced public events.

Scenario Context Method Trade-off Success measure
1. University term start 300 courses, SIS feed, four LTI tools, students with timing accommodations Reconcile rosters two weeks out; register tools; generate overrides from approvals Freeze blocks late changes No accommodation missing at first timed attempt
2. Corporate compliance academy Vendor courses; audits need proof; HR owns the programme SCORM 1.2 where the LMS lacks cmi5; completions mapped to policy IDs; expiring certificates SCORM 1.2 reports little detail Every sampled completion traces to an attempt
3. Certification exam Paid exam, public credential Blueprint, documented cut score, QTI item bank, item analysis per window, Open Badges 3.0 Item exposure versus reuse Few regrades; credentials verify
4. National model-based grading (sourced) England, 2020, exams cancelled Calculated grades replaced after public loss of confidence[4] Statistical consistency versus individual fairness Appeals and reversals
5. Vendor access to student records (sourced) US districts on PowerSchool SIS, December 2024 A district reported a compromised credential and maintenance channels, then closed the back channel[29] Support convenience versus exposure No standing vendor access

Pitfalls. (1) Reusing a small bank until items circulate; Standard 6.7 makes protecting test materials the test user’s responsibility “at all times”.[23] (2) A statistically defensible method can still fail individuals; plan appeals capacity.

Measuring, securing and paying for learning operations

Link to section “Measuring, securing and paying for learning operations”
KPI Formula Data source Pitfall Cadence
Enrolment accuracy correct enrolments ÷ enrolments expected by the system of record Roster reconciliation Counting only additions, not removals Daily in week 1, then weekly
Grade passback success scores accepted by the gradebook ÷ scores sent by tools Tool and LMS logs Retries hide failures Daily during windows
Time to release median hours from window close to release Gradebook history Mean hides long tails Per sitting
Accommodation fulfilment overrides in place before first timed attempt ÷ approved accommodations Override list vs approvals Approvals after the deadline Per sitting
Item review rate items flagged (negative or < 0.10 discrimination) ÷ items with enough responses Item analysis Tiny cohorts Per sitting
Reliability and SEM Cronbach’s alpha; SEM = SD × √(1 − alpha) Item analysis Alpha rises with length, not only quality Per form
Learners near the cut learners within ± 1 SEM of the cut ÷ learners Scores Ignored when pass rate looks normal Per sitting
Credential verification success successful verifications ÷ verification attempts Verification logs Testing only new credentials Monthly
Accessibility defects open WCAG A/AA defects in active courses; oldest age (counting rule below) Defect log Counting audits, not fixes Termly
Completion rate completions ÷ enrolments LMS Vanity metric without assessment Termly

Leading and lagging. Enrolment, passback and accommodation measures lead complaints and appeals; regrades, appeals and revocations lag.

Targets: set from your own baseline and stakes; we found no published benchmarks. Investigate every accommodation miss.

Jurisdiction matters and this section is not legal advice; detailed privacy work belongs to PrivacyOps.

  • Accessibility. WCAG 2.2 (a W3C Recommendation since 5 October 2023; current edition 12 December 2024) Success Criterion 2.2.1 requires that time limits can be turned off, adjusted or extended, with exceptions including “Essential Exception: The time limit is essential and extending it would invalidate the activity”.[62] For a timed exam, document why time is essential and still apply individual extra time. In the US, the Justice Department’s rule covering “Public schools, community colleges, and public universities” requires WCAG 2.1 AA from 26 April 2027 for public entities with a total population of 50,000 or more, or 26 April 2028 for smaller ones, dates set by a 20 April 2026 interim final rule. A school district is not a special district: it uses the population of its city or county, or, if independent, the most recent Small Area Income and Poverty Estimates.[63]
  • Privacy. In the US, FERPA applies to educational agencies and institutions that receive funds under programmes the Secretary of Education administers.[64] Operationally: share minimal claims with tools, pseudonymise analytics exports, set retention per record type, and log access to grades.
  • Proctoring. In Ogletree v. Cleveland State University (N.D. Ohio, August 2022) a pre-exam room scan of a student’s bedroom was held an unreasonable Fourth Amendment search; the Future of Privacy Forum notes it is one fact-dependent district ruling and “it is too soon to tell whether other courts will follow suit”.[65] For the EU, see automation and AI.
  • Security. Apply platform advisories promptly;[40] review plug-ins before installing; time-box vendor support access; protect item banks as confidential (Standard 6.7).[23]

Accessibility is a release criterion for each course run, not a one-off audit. The checks cite WCAG 2.2 success criteria (Level A unless marked AA);[62] at design time, UDL 3.0 helps.[34]

Content type Check before launch Usually fixed by
Recorded video and audio Captions (1.2.2); audio description or media alternative (1.2.3; AA 1.2.5); audio-only: transcript (1.2.1) Course owner
Images, diagrams, formulae shown as images A text alternative that serves the same purpose (1.1.1) Course owner or instructional designer
Documents and slides Real headings and structure (1.3.1); for PDFs, a tagged document with heading tags;[66] contrast (AA 1.4.3) Author of the source file
Questions and activities Keyboard operation (2.1.1); drag-and-drop also possible without dragging (AA 2.5.7); adjustable time limits (2.2.1) Assessment lead, choosing question types
Platform, theme, plug-ins, tools The same criteria across the interface Platform owner; the vendor, under contract

When. Run the content checks in the course launch readiness review and when a course is revised. Run the tool checks before procurement: ask for an Accessibility Conformance Report, the report format built on a completed ITI VPAT, in its WCAG, Section 508, EU (EN 301 549) or international edition,[67] and test the parts learners will use.

How. Checkers assist but do not decide: tools “can not determine accessibility, they can only assist in doing so”.[68] Moodle 4.5 ships an Accessibility toolkit that checks content in core activities once the site registers with Brickfield;[69] add a manual keyboard and screen-reader pass on assessment pages.

Counting the KPI. Log one defect per failed success criterion per content item; close it only when fixed and re-checked. A defect that blocks an assessment is escalated like a wrong grade.

  • Peaks are predictable: term start, deadlines, exam windows. Load-test a timed quiz with the expected simultaneous starts before the window; capacity engineering belongs to WebOps and SysOps.
  • Cost drivers: hosting or subscription (check how the contract counts users), tool licences, proctoring, item writing and review, accessibility remediation. A reviewed item is a durable asset until exposure makes it worthless.
  • Lifecycle costs: each integration adds review, upgrade testing and an exit cost. Moodle LTS releases get 36 months of security fixes,[39] which lowers upgrade frequency but not the need to rehearse upgrades.
  • Sustainability: mainly hosting, video and media retention; GreenOps covers the method.
  • Reconciliations: roster vs system of record; gradebook vs passback logs; credentials issued vs grades released.
  • Sampling: each term, trace a random sample of credentials back through every link of the evidence chain.
  • Item review evidence: every live item has a reviewer, a version and statistics after use.
  • Exception monitoring: overrides created after a sitting began; grades edited after release; credentials revoked.
  • Audit trail: who changed which result, when and why; append-only (principle 3).
Symptom Likely cause Diagnosis Remediation Prevention
Learners missing from a course Roster feed failed or mapping changed Compare feed file and LMS enrolments for one learner Re-run sync; enrol manually with a ticket Daily reconciliation report
Tool scores absent from gradebook Passback token or line-item error Tool logs vs LMS logs for one attempt Re-send scores; fix deployment Passback check in integration tests
A tool stops launching Legacy LTI 1.1 link or key rotation Which LTI version; platform keys Migrate to LTI 1.3 Integration register with versions[12]
Package will not track SCORM 2004 package in an LMS that lacks it Package manifest version Re-export as SCORM 1.2 or use a supported player Check support first[27]
Item with negative discrimination Wrong key or ambiguous item Expert reading plus statistics Runbook below Second-reviewer key check
Extra time missing Override not created, or group membership wrong Override list vs approvals Grant a new attempt with correct timing Overrides created from approvals list
Certificate does not verify Course or template deleted; wrong ID Verification log; record of issue Re-issue from records; keep old ID valid Credentials independent of course lifecycle

Worked runbook: wrong answer key after a certification quiz

Link to section “Worked runbook: wrong answer key after a certification quiz”
Figure 5. Runbook for a wrong answer key discovered after a sitting
key wrongambiguousSignal: negativediscrimination or learnerreportsHold grade release andcertificatesExpert review: key wrong oritem ambiguous?Fix key as a new questionversionBoard decides: credit all orremove itemDry-run regrade, comparewith expectationsRegrade, recompute passand failIssue, re-issue or withdrawcredentialsTell affected learners whatchanged and whyRecord decision; add reviewstep to prevent repeat
Diagram source (Mermaid)
flowchart TB
  S["Signal: negative discrimination or learner reports"] --> H["Hold grade release and certificates"]
  H --> J{"Expert review: key wrong or item ambiguous?"}
  J -->|"key wrong"| K["Fix key as a new question version"]
  J -->|"ambiguous"| A["Board decides: credit all or remove item"]
  K --> D["Dry-run regrade, compare with expectations"]
  A --> D
  D --> R["Regrade, recompute pass and fail"]
  R --> C["Issue, re-issue or withdraw credentials"]
  C --> N["Tell affected learners what changed and why"]
  N --> L["Record decision; add review step to prevent repeat"]
  classDef risk fill:#fbeceb,stroke:#b4332b,color:#122029
  classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
  classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
  class S,H risk
  class J decision
  class K,A,D,R,C,N,L core

Text equivalent: the numbered steps below as a flow. A negative item or learner reports trigger a hold; a wrong key is fixed as a new question version, an ambiguous item goes to the board (credit all or remove); then dry run, regrade, credentials, learners told, decision recorded.

  1. Detect. A negative item (Lab 1: Q6 at −0.74), or several learners report the same question.
  2. Contain. Hold release and automatic certificates; certificates already sent are marked under review, not deleted.
  3. Diagnose. Two subject experts read the item independently; statistics say where to look, not what is wrong.
  4. Decide. Re-key, credit all answers, or remove the item and rescale; record the rationale, as Standard 5.21 expects for cut-score procedures.[23]
  5. Dry run. Preview the regrade[60] and check it matches the decision. In Lab 1, re-keying moved three learners across a cut of 6.
  6. Apply. Regrade; recompute pass and fail; issue new credentials and revoke any that no longer hold.
  7. Communicate with every affected learner, including anyone told a different result earlier.
  8. Learn. Add the missing control (usually a second-reviewer key check) and log the incident.

Rollback: keep the pre-regrade export; if the decision is overturned on appeal, the earlier state can be restored under a new recorded decision.

  • “The LMS is the assessment strategy.” A quiz engine produces numbers, not validity. Without a blueprint and cut-score rationale, a pass mark is a guess.
  • “Completion equals competence.” Completion shows exposure; only assessment evidence supports a competence claim.
  • “More proctoring, more integrity.” Surveillance adds legal, privacy and accessibility risk; assessment design (item pools, applied open-book tasks) often protects integrity better.
  • “xAPI will fix our data.” Without agreed verbs, activity IDs and identifiers, an LRS collects statements that do not join up.
  • “Analytics should flag at-risk students automatically.” Models trained on biased history can repeat it;[47] use them to prompt human contact, and audit them.

Use a deliberate learning-operations function when results carry consequences (grades, certificates, compliance), when several systems exchange learner data, or when cohorts are large enough that manual fixes stop scaling.

Do not build one when learning is informal and unassessed (good onboarding and KnowledgeOps may suffice), when one course runs once on default settings, or when the gap is the programme itself (PeopleOps). Hidden costs: item writing and review, integration upkeep, and the discipline of change freezes.

How much rigour. This tree (this Atlas’s proposal) maps when to use and when not to use onto the maturity model.

Figure 6. Decision tree: how much learning operations an activity needs
noyesnoyesyesnonoyesIs the gap what toteach, to whom,on what budget?Consequentialresults, linkedsystems or largecohorts?Programmedecision:PeopleOps orcurriculumcommitteeDo not build afunction:onboarding,KnowledgeOpsDo results carryconsequences?Do third partiesrely on the result?Level 2:integrationregister,reconciliationsLevel 3:blueprints, cutscores, itemanalysisLevel 4: addverifiablecredentials,sampled audits
Diagram source (Mermaid)
%%{init: {"flowchart": {"wrappingWidth": 120, "nodeSpacing": 30}}}%%
flowchart TB
  Q0(["Is the gap what to teach, to whom, on what budget?"])
  Q0 -->|no| Q1(["Consequential results, linked systems or large cohorts?"])
  Q0 -->|yes| P["Programme decision: PeopleOps or curriculum committee"]
  Q1 -->|no| N["Do not build a function: onboarding, KnowledgeOps"]
  Q1 -->|yes| Q2(["Do results carry consequences?"])
  Q2 -->|yes| Q3(["Do third parties rely on the result?"])
  Q2 -->|no| M["Level 2: integration register, reconciliations"]
  Q3 -->|no| EV["Level 3: blueprints, cut scores, item analysis"]
  Q3 -->|yes| AS["Level 4: add verifiable credentials, sampled audits"]
  classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
  classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
  classDef neutral fill:#f1f4f6,stroke:#5b7a87,color:#122029
  class Q0,Q1,Q2,Q3 decision
  class M,EV,AS core
  class P,N neutral

Text equivalent: A gap in what to teach, to whom or on what budget is a programme decision for PeopleOps or a curriculum committee. Without consequential results, linked systems or large cohorts, do not build a function: onboarding and KnowledgeOps suffice. Linked systems or large cohorts alone call for level 2 (integration register, reconciliations); consequential results for level 3 (blueprints, cut scores, item analysis); results third parties rely on for level 4 (verifiable credentials, sampled audits).

Which standard at which boundary. Answer every question; one integration may need several standards.

Boundary question If yes, use (notes in the standards table)
Is a tool launched from the LMS? LTI 1.3; AGS for grades, NRPS for rosters
Is it a self-paced content package? cmi5 if supported, else the LMS’s SCORM version (Moodle: 1.2)
Does learning happen outside the LMS? xAPI and an LRS
Is an item bank moving platform? QTI 3.0
Do rosters or grades come from an SIS? OneRoster 1.2
Must a third party check the proof? Open Badges 3.0

The LTI resource-link launch is defined without any grade service; grade return is an optional Advantage service.[11][18] If no question applies, no standard is needed.

Assumptions: the standard is supported in the versions you run (verify with the vendor’s conformance listing, such as 1EdTech’s TrustEd Apps directory[18]); and someone will own the integration after launch.

This is this Atlas’s model, not an industry standard.

Level Observable behaviour Evidence to exit the level
1. Ad hoc Courses copied forward; enrolments fixed by hand; quiz settings unchecked A named owner for platform and for assessment
2. Managed Term-start checklist with accessibility checks; integration register; overrides from an approvals list Two terms with reconciliations recorded
3. Evidenced Blueprints, reviewed items, item analysis after each sitting, documented cut scores Regrade and credential decisions all recorded
4. Assured Evidence-chain sampling, KPIs reviewed termly, accessibility defects tracked to closure, verifiable credentials A sampled audit passes without rework
5. Adaptive Data and learner feedback change design each cycle; analytics audited for bias Improvements traceable to evidence

Accessibility checks start at level 2: where the law requires them, they are a baseline.

Window Actions Milestone
Days 1–30 Name owners; inventory courses, tools (with LTI version), packages (with SCORM version) and certificates; run the first roster reconciliation Integration register and risk list
Days 31–60 Term-start and exam-day checklists; overrides generated from approvals; item analysis on the highest-stakes assessment; plan migration of any LTI 1.1 links One sitting run with the checklists
Days 61–90 Blueprint and cut-score rationale for top assessments; regrade decision record in use; first KPI review; accessibility triage of top courses First termly review with metrics

Term or cohort start (two weeks before)

  • Roster reconciliation within tolerance; exceptions ticketed
  • Every LTI tool in the register launches, and returns a test grade, in a sandbox course
  • Packages tested in the production LMS version
  • Accommodation overrides created and checked against approvals
  • Change freeze dates published

Exam window

  • Load test done for expected simultaneous starts
  • Support rota and escalation to the assessment lead
  • Release and certificates held until item analysis is reviewed

Credential issue

  • Grades released and no holds open
  • Credential carries a verifiable identifier and does not depend on the course existing
  • Revocation path tested

Termly governance review

  • KPIs reviewed; accessibility defects triaged; integration reviews due; retention applied

Assessment blueprint and cut-score rationale

ASSESSMENT BLUEPRINT
Assessment: ____________   Version: ___   Owner (assessment lead): __________
Purpose (what a pass is meant to show): ____________________________________
Stakes: low / medium / high      Learners per sitting (expected): ______
Outcome / topic           Weight %   Items   Item types       Cognitive level
------------------------  --------   -----   --------------   ---------------
________________________  ____       ___     ______________   _______________
Cut score: ___ / ___   Method and panel (names, date): _____________________
Rationale (why this score separates the groups that matter): ________________
Accommodations allowed: ____________   Time limit essential? yes/no, why: ____
Review: items peer-reviewed by ______  Item analysis after each sitting: yes

Regrade decision record

REGRADE DECISION RECORD                     ID: RG-____   Date: __________
Assessment and version: ______________   Sitting: ______________
Signal: negative discrimination / learner reports / other: ________________
Item(s) and expert findings (two reviewers): _____________________________
Decision: re-key / credit all / remove item and rescale / no change
Rationale: ______________________________________________________________
Dry run checked by: ______   Learners affected: ___   Pass/fail changes: ___
Credentials issued / re-issued / withdrawn: ______________________________
Learners informed on: __________   Prevention step: _______________________
Approved by (assessment lead or board): _____________

Course launch readiness record

COURSE LAUNCH READINESS                      Course: ________  Run: ______
Owner: ________   Platform version: ________   Launch date: __________
[ ] Enrolment source and reconciliation result: ____________________
[ ] Tools (standard, version, passback tested): ____________________
[ ] Packages (standard, tested in this LMS version): _______________
[ ] Accessibility check (WCAG level, defects open): ________________
[ ] Assessments: blueprint ref ____, overrides ____, release date ____
[ ] Credential template and verification tested: ___________________
Sign-off: platform ________  assessment ________  course owner ________
Choice Option A Option B Choose A when Choose B when
Learning records LMS logs and warehouse xAPI with an LRS All learning happens in the LMS Simulators, apps or workplace activity must be recorded
Exam integrity Remote proctoring Assessment redesign Identity and closed-book conditions are essential and lawful Applied, open-book or project tasks can show the outcome
Credential PDF certificate with a verification page Open Badges 3.0 Low stakes, internal use Third parties must check a signed, portable credential

Who owns mandatory training: HR or EduOps? In this Atlas, PeopleOps owns who must take what and when; EduOps delivers it and produces the completion records that ComplianceOps uses as evidence.

Do small cohorts make item analysis useless? No, but noisy: with 20 learners, statistics choose which items experts re-read (see the item quality loop).

Should we still accept SCORM? Yes, where it is the format your LMS and vendors support well; SCORM 1.2 is the safe choice on Moodle.[27] Plan cmi5 where your platforms support it.

Is a timed exam an accessibility violation? Not in itself. WCAG 2.2 allows an essential time limit,[62] and the testing Standards expect accommodations that remove construct-irrelevant barriers.[23] Document both.

Can AI grade essays for us? It can draft scores, but in the EU systems that evaluate learning outcomes are high-risk (Annex III), with requirements from 2 December 2027;[42][45] everywhere, keep human review and monitor for bias.

  • Verifiable credentials. Open Badges 3.0 packages achievements as W3C verifiable credentials;[17][16] issuer key management and revocation become operational duties.
  • Two xAPI versions, and cmi5. xAPI 2.0 (IEEE 9274.1.1-2023) is the current version;[14][13] expect LRSs and content to speak 1.0.x and 2.0 side by side for years.[30] Wider cmi5 support would reduce reliance on SCORM.
  • Learning analytics. SoLAR’s 2026 definition stresses “theoretically relevant and actionable insights”:[70] analytics tied to a teaching action, with known error rates.
Stage Do this
1-day primer Read this page’s mental model, Lab 1, and the validity chapter of the 2014 Standards[23]
1 week Run Lab 2; map your platform’s edges onto the reference architecture; draft an integration register
30 days Run Lab 3 in a sandbox; blueprint one real assessment; run item analysis after its next sitting
Advanced Psychometrics beyond classical test theory, standard-setting methods, credential infrastructure, analytics ethics
Portfolio A term-start readiness record, an item analysis report with decisions, and a regrade decision record
Area Remember
Term “EduOps” is ambiguous; teach and staff learning operations
Core idea Evidence chain: enrol → access → attempt → score → grade → credential → record
Standards LTI 1.3 tools · cmi5 or supported SCORM packages · xAPI + LRS · QTI items · OneRoster rosters · Open Badges 3.0
Assessment Purpose and cut-score rationale first; review items; analyse after every sitting; experts decide
Metrics Enrolment accuracy, passback success, accommodation fulfilment, item review rate, SEM near the cut
Watch-outs Legacy LTI 1.1; SCORM 2004 on Moodle; proctoring and AI rules; standing vendor access; deleting courses that back credentials
Next actions Integration register, reconciliation report, override routine, regrade decision record

A judgement call: proctor the online exam or redesign it?

Link to section “A judgement call: proctor the online exam or redesign it?”

Assumptions: about 400 candidates a year in several countries; the credential matters to employers; budget allows either option; some candidates need extra time.

Why A is attractive: it looks like the paper exam, keeps the existing items, and the vendor promises integrity.

Why A can be wrong here: a US district court found a pre-exam room scan unconstitutional at a public university, with uncertain reach;[65] in the EU, AI that monitors students during tests is high-risk and emotion inference is banned;[42][43] recordings become a retention liability; and closed-book recall may be weak evidence for a profession that works with references open. B’s costs are real: new items, a new cut-score study, assessor time.

Decision process: write down what a pass must show, since validity belongs to that interpretation;[23] list threats (impersonation, collusion, item exposure); pick the cheapest control per threat (identity check, large pool, applied tasks, viva sample); only then ask whether monitoring is still needed and lawful where candidates sit. Uncertainty: whether B reduces misconduct is not established; pilot one sitting and compare item statistics, appeals and candidate feedback.

After this page you can: explain the evidence chain; choose standards per boundary; set accessibility checks; run and interpret a classical item analysis; design a regrade under control; set and calculate learning-operations KPIs; and recognise legal and ethical limits on proctoring and AI.

1. A quiz has an alpha of 0.41 and one item with discrimination −0.74. What do you do before releasing grades?

Hold release and certificates; have two experts read the item to decide whether the key is wrong or the item ambiguous; record the decision; dry-run the regrade; then release. Do not flip the key just because the statistic is negative.

2. A vendor offers a course as SCORM 2004 for your Moodle site. What is the risk?

Moodle Docs state that SCORM 2004 is not supported, though parts may appear to work. Ask for SCORM 1.2 or cmi5 (if your platform supports it), or a supported third-party player.

3. Which standard returns scores from an external tool to the gradebook?

LTI Advantage’s Assignment and Grade Services, used with an LTI 1.3 launch.

4. Your SEM is 1.1 points and the cut is 30 out of 40. A learner scores 29. What does that imply?

The learner is within one SEM of the cut, so the fail decision is uncertain. Policy might offer a re-sit or extra evidence; at minimum, report the share of learners near the cut.

5. An accommodation was approved but the learner sat the timed quiz without extra time. Which KPI moved, and what next?

Accommodation fulfilment fell. Treat it as an incident: offer a fresh attempt with the correct override, check why the override was missing, and generate overrides from the approvals list.

6. Why should an xAPI statement use an account identifier instead of an e-mail?

An LMS-specific account avoids exposing personal data to every statement consumer; cmi5 advises against sensitive PII in the actor.

“EduOps” is a weak label for an important job. Learning operations decides whether a grade, a certificate or a completion record can be trusted, and that trust is built link by link: the right learner, an accessible experience, an assessment whose scores support the claim made for them, a grade that arrived, a credential that verifies, and a record that changes only under control. The standards are mature enough to connect the systems; the hard part is the judgement in the middle: what a pass should mean, when a statistic is a fault, and when surveillance costs more than it protects. Keep those decisions human, written down and reviewable.

Sources were opened on 2026-10-23. Product, version and legal facts are time-sensitive; the evidence ledger records support strength and sources that could not be fetched.

Term status and naming

Interoperability standards

Platforms and tools

Assessment, design and analytics

Law, accessibility and policy (not legal advice)

Cases

Further reading

Changelog

  • 2026-10-23: first draft by the managing author; labs executed.
  • 2026-10-23: revision after review r1 (reviews/eduops-r1-response.md): xAPI 2.0, runbook, decision tree, accessible learning, ADA threshold, Moodle defaults, RACI, diagrams, AI Act, hosted LMS, generative-AI integrity.
  • 2026-10-23: revision after the final QA score (reviews/eduops-r2-response.md): runbook error handling, workflow query branch, decision framework (adoption tree, standards table), Canvas beta LTI note.
  • 2026-10-23, post-score polish: maturity levels aligned with the tree and accessibility law; dump step logged; UNESCO and Baker–Hawn re-checked.

  1. EduOps: Applying DevOps To Bring the Academia and Industry Together — Avimanyu Bandyopadhyay, Linux Handbook, updated 2023-09-28. Checked 2026-10-23. ↩︎ ↩︎

  2. EduOps: school management software for Indian schools — Witness Technologies OPC Pvt Ltd, undated. Checked 2026-10-23. ↩︎ ↩︎

  3. EduOps — Your Organization, Systematized — EduOps, undated. Checked 2026-10-23. ↩︎ ↩︎

  4. Statement from Roger Taylor, Chair, Ofqual — Ofqual, GOV.UK, 2020-08-17. Checked 2026-10-23. ↩︎ ↩︎

  5. EdOps company profile — Built In, undated. Checked 2026-10-23. ↩︎

  6. What is LearnOps? — Cognota, undated. Checked 2026-10-23. ↩︎

  7. Your L&D Team Needs a Learning Operations Strategy: Here’s Why — Adam Weisblatt, Learning Guild, 2023-06-13. Checked 2026-10-23. ↩︎

  8. ADDIE model — Wikipedia (secondary; primary 1975 reports could not be fetched). Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  9. SCORM Versions — Rustici Software, undated. Checked 2026-10-23. ↩︎ ↩︎

  10. cmi5 Specification Profile for xAPI (Quartz, 1st Edition) — AICC and ADL, 2016-06-01. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  11. Learning Tools Interoperability Core Specification 1.3 — 1EdTech, 2019-04-16. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎

  12. LTI Security Announcement and Deprecation Schedule — 1EdTech, updated June 2021. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  13. IEEE 9274.1.1-2023, JSON Data Model Format and RESTful Web Service for Learner Experience Data Tracking and Access — IEEE SA, published 2023-10-06 (xAPI 2.0). Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  14. adlnet/xAPI-Spec README: current version xAPI 2.0 — ADL, GitHub. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  15. What happened in 2023, and what’s next for eLearning standards — Tara Morey, Rustici Software, 2024-02-02. Checked 2026-10-23. ↩︎

  16. Verifiable Credentials Data Model v2.0 — W3C Recommendation, 2025-05-15. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  17. Open Badges Specification v3.0 — 1EdTech, document version 1.4.5, 2026-06-29. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  18. Learning Tools Interoperability (LTI) — 1EdTech, undated. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎

  19. SCORM Explained — Rustici Software, 2026. Checked 2026-10-23. ↩︎ ↩︎

  20. xAPI Specification 1.0.3 (Data and Communication parts) — ADL, GitHub, version 1.0.3 (superseded by xAPI 2.0). Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎

  21. Question & Test Interoperability (QTI) — 1EdTech, undated. Checked 2026-10-23. ↩︎ ↩︎

  22. Quiz statistics calculations — Moodle Docs (developer, archived), last edited 2013-09-25. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  23. Standards for Educational and Psychological Testing (2014), open-access edition — AERA, APA and NCME, 2014. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  24. Art. 39 GDPR: Tasks of the data protection officer — Regulation (EU) 2016/679, text via gdpr-info.eu. Checked 2026-10-23. ↩︎

  25. Art. 38 GDPR: Position of the data protection officer — Regulation (EU) 2016/679, text via gdpr-info.eu. Checked 2026-10-23. ↩︎

  26. SAM: Successive Approximation Model — Allen Interactions, undated. Checked 2026-10-23. ↩︎ ↩︎

  27. SCORM FAQ — Moodle Docs 4.5. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎

  28. 1EdTech Security Framework 1.0, section 5.1.3 — 1EdTech. Checked 2026-10-23. ↩︎ ↩︎

  29. Bonneville Joint School District 93: notice to the Idaho Attorney General on the PowerSchool cybersecurity incident — 2025-01-08. Checked 2026-10-23. ↩︎ ↩︎

  30. What vendors can do to prepare for xAPI 2.0 — Brian Miller, Rustici Software (xapi.com), 2023-10-24. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  31. OneRoster — 1EdTech, undated. Checked 2026-10-23. ↩︎

  32. Caliper Analytics — 1EdTech, undated. Checked 2026-10-23. ↩︎

  33. Higher Ed Rubric, Seventh Edition — Quality Matters, undated. Checked 2026-10-23. ↩︎

  34. UDL Guidelines 3.0 — CAST, 2024-07-30. Checked 2026-10-23. ↩︎ ↩︎

  35. The Kirkpatrick Model — Kirkpatrick Partners, undated. Checked 2026-10-23. ↩︎

  36. Moodle README (licence) — Moodle HQ, GitHub. Checked 2026-10-23. ↩︎

  37. instructure/canvas-lms — Instructure, GitHub. Checked 2026-10-23. ↩︎

  38. LearningLocker/learninglocker — Learning Locker, GitHub. Checked 2026-10-23. ↩︎

  39. Releases — Moodle Developer Resources, updated 2026-10-04. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  40. Security announcements — moodle.org, list as of 2026-10-23. Checked 2026-10-23. ↩︎ ↩︎

  41. Differences between Production & Beta Environments — Danielle Lentz, Instructure Community (Canvas LMS Blog), 2023-08-18. Checked 2026-10-23. ↩︎

  42. EU AI Act, Annex III: High-Risk AI Systems — Regulation (EU) 2024/1689, text via artificialintelligenceact.eu. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  43. EU AI Act, Article 5: Prohibited AI Practices — via artificialintelligenceact.eu. Checked 2026-10-23. ↩︎ ↩︎

  44. EU AI Act, Article 113: Entry into Force and Application — via artificialintelligenceact.eu. Checked 2026-10-23. ↩︎

  45. The AI Act implementation timeline: What changes under the AI Omnibus? — Future of Privacy Forum, 2026-07-28, updated 2026-08-05. Checked 2026-10-23. ↩︎ ↩︎

  46. EU AI Act, Article 6: Classification Rules for High-Risk AI Systems — via artificialintelligenceact.eu. Checked 2026-10-23. ↩︎

  47. Algorithmic Bias in Education (author preprint) — Ryan S. Baker and Aaron Hawn; published in the International Journal of Artificial Intelligence in Education, vol. 32, no. 4, pp. 1052–1092 (2022), doi:10.1007/s40593-021-00285-9. Checked 2026-10-23. ↩︎ ↩︎

  48. Analytics — Moodle Docs 4.5. Checked 2026-10-23. ↩︎

  49. Guidance for generative AI in education and research — UNESCO, 2023-09-07, updated 2026-01-16. Checked 2026-10-23. ↩︎

  50. GPT detectors are biased against non-native English writers — Weixin Liang, Mert Yuksekgonul, Yining Mao, Eric Wu and James Zou, arXiv 2304.02819, v3 2023-07-10. Checked 2026-10-23. ↩︎

  51. Administration via command line — Moodle Docs 4.5. Checked 2026-10-23. ↩︎

  52. admin/cli/backup.php (MOODLE_405_STABLE) — Moodle source, GitHub. Checked 2026-10-23. ↩︎ ↩︎

  53. admin/cli/checks.php (MOODLE_405_STABLE) — Moodle source, GitHub. Checked 2026-10-23. ↩︎ ↩︎

  54. Question banks in upgraded sites — Moodle Docs 5.0. Checked 2026-10-23. ↩︎

  55. Understanding Item Analyses — University of Washington, Office of Educational Assessment, undated. Checked 2026-10-23. ↩︎

  56. mod/quiz/report/statistics/report.php (MOODLE_405_STABLE), line 81 — Moodle source, GitHub (whichattempts defaults to the quiz’s grading method). Checked 2026-10-23. ↩︎

  57. LRS Conformance Test Suite — ADL, GitHub. Checked 2026-10-23. ↩︎

  58. Quiz settings — Moodle Docs 4.5. Checked 2026-10-23. ↩︎ ↩︎

  59. Quiz statistics report — Moodle Docs 4.5. Checked 2026-10-23. ↩︎

  60. Quiz grades report — Moodle Docs 4.5. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  61. admin/cli/delete_course.php (MOODLE_405_STABLE) — Moodle source, GitHub (--disablerecyclebin). Checked 2026-10-23. ↩︎

  62. Web Content Accessibility Guidelines (WCAG) 2.2 — W3C Recommendation, first published 2023-10-05; current edition 2024-12-12. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  63. Fact Sheet: New Rule on the Accessibility of Web Content and Mobile Apps — US Department of Justice, 2024-04-08, updated for the 2026-04-20 interim final rule. Checked 2026-10-23. ↩︎

  64. FERPA — US Department of Education, Student Privacy Policy Office. Checked 2026-10-23. ↩︎

  65. Federal Court deems university’s use of room scans within the home unconstitutional — Lauren Merk, Future of Privacy Forum, 2022-10-28. Checked 2026-10-23. ↩︎ ↩︎

  66. PDF9: Providing headings by marking content with heading tags in PDF documents — W3C WAI, WCAG 2.2 Techniques. Checked 2026-10-23. ↩︎

  67. VPAT — Information Technology Industry Council (ITI), VPAT 2.5Rev (April 2025). Checked 2026-10-23. ↩︎

  68. Selecting Web Accessibility Evaluation Tools — W3C WAI, updated 2024-05-13. Checked 2026-10-23. ↩︎

  69. Accessibility toolkit — Moodle Docs 4.5. Checked 2026-10-23. ↩︎

  70. What is Learning Analytics? — Society for Learning Analytics Research, 2026. Checked 2026-10-23. ↩︎

Related Ops

PeopleOps

PeopleOps (people operations) runs an organisation's employee lifecycle (hiring, onboarding, moves, pay, performance and exits) as a reliable, measured operation built on one trusted system of record, clear owners and service levels.

ContentOps

ContentOps (content operations) is the people, process and technology that turn a content plan into accurate, findable content at scale: modelled once, reviewed by named owners, published to every channel, measured, and retired when it goes stale.

KnowledgeOps

KnowledgeOps is running an organisation's working knowledge (answers, runbooks, procedures) as an operated asset: captured in the flow of work, owned, reviewed in proportion to risk, findable, access-controlled and retired on purpose.

PrivacyOps

PrivacyOps is a vendor-coined name for running a privacy programme as an operation: knowing which personal data you hold and why, and meeting each person's rights, the impact assessments and breach duties on time, with evidence.

AnalyticsOps

AnalyticsOps has no standard definition. On this page it means operating the layer where people consume data: versioned metric definitions, a semantic layer that serves them, and BI content that is certified, monitored and retired, so each important metric has one trusted definition.

WebOps

WebOps is a loose label for running websites: the path from DNS through CDN, TLS and web servers to the browser, operated by developers and marketers who share one site. No body defines it; vendors also use it as a product category.

IdentityOps

IdentityOps is the day-to-day operation of workforce and machine identities: HR-driven joiner–mover–leaver, directories and identity providers, SSO, SCIM provisioning, phishing-resistant MFA and recovery, and the lifecycle of non-human identities.

ComplianceOps

ComplianceOps runs regulatory and contractual compliance as a continuous operation: one library of controls mapped to every framework in scope, evidence collected and tested on a schedule, exceptions with expiry dates, and audits served from records that already exist.

Practise and get certified

From xOps School

Practise EduOps and get certified

The EduOps track on xOps School (part of the Coffee Pass) has study notes, a 25-question practice quiz with explanations, and a verifiable certificate when you score 70% or more. Sign in with Google to start.

For teams

Instructor-led training

Live batches for your team, with completion certificates and reports for L&D/HR.

Source: master.md (the editorial source of this page) · built 2026-10-23 · diagrams rendered with @mermaid-js/mermaid-cli 11.17.0 (mermaid 11.17.2)