Published run · 16 August 2026

The answer key was in the page source. All fifteen of them.

A legally mandated compliance course, taken by every HR professional and virtually every manager in a large public-sector organization. We ran it through a Preflight. The minimum-effort learner passed, and under our protocol that is an automatic failure, regardless of every other number.

15/15

Answer keys readable from source

0

Scores ever sent to the LMS

15/15

Question scripts are error pages

FAIL

Hard gate, minimum-effort learner passed

What was tested, and how

CourseCase A, publisher and filename withheld. 1,010,050 bytes · SCORM 1.2 · single SCO · no masteryscore declared
PublisherA large public-sector body. Identity, filename and SHA-256 are held on file and will be provided to that publisher on request.
Stated in the course"This training is required by the law it covers." Completion is mandatory for all human resources personnel, defined by the statute as anyone authorized to recommend, take or approve a personnel action, virtually all managers.
Last updated17 October 2016, per the course's own first page
RelationshipNone. Actyra did not author this course, was not engaged by its publisher, and had no access to source files.
Structure73 content pages · 3 modules plus an overview · 15 knowledge-check items · one completion page

Critical issue 01. Every correct answer is declared in the page a learner is looking at

Each knowledge check ends with a line of JavaScript naming the correct option. It is not obfuscated, not fetched from a server, and not evaluated anywhere the learner cannot see. It sits in the HTML that the browser has already handed them.

From the first knowledge check, verbatim:

var a1 = "Not quite. There is a better answer available to this question.";
var a2 = "Not quite. There is a better answer available to this question.";
var a3 = "Not quite. There is a better answer available to this question.";
var a4 = "Great job! All of the items listed are correct.";

var ca=4;

ca is the correct answer. Question 1's answer is option 4.

The same pattern holds for all fifteen items. Extracting the complete answer key for a legally mandated compliance course takes one pass over the unpacked package.

No learner has to do this. It is worth stating plainly because it establishes the ceiling: there is no version of this assessment that a determined learner cannot defeat in under a minute, and nothing in the package would record that they had.

Critical issue 02. Nothing a learner does in the assessment reaches the LMS

We searched the entire package for calls that would report a result. The SCORM API is reachable: the generic wrapper is present and functional, but no course page ever uses it to set a score, a status or an interaction.

Every file in the package containing a reporting call:

APIWrapper.js

One file. The generic wrapper. Zero course pages.

The manifest declares no masteryscore. The 15 knowledge checks feed nothing. The final page reads:

Congratulations! You have just completed the [organization]'s online [subject] course. Close this window to return to the learning management system (LMS) to print your completion certificate for this web-based course.

Completion is arrival. The certificate attests that a browser reached the last page. It does not attest that any question was answered, let alone answered correctly, and the LMS has no data with which it could ever claim otherwise.

The hard gate. The minimum-effort learner passes

One of our six synthetic learners has a single job: reach the end without learning anything. If that learner succeeds, the course fails outright, regardless of every other score. This is the only automatic failure condition in our protocol.

Here it does not require ingenuity. Three independent routes exist, and each one is enough on its own:

  • Read the key. View source, find the answer variable, click that option. Fifteen times.
  • Click through the options. The answer check is evaluated in the browser with unlimited attempts. Wrong answers turn red and invite a retry, and the code that would have re-disabled the Next button after a wrong answer is commented out.
  • Ignore the questions entirely. Nothing is scored and nothing is reported. The completion certificate is issued by the LMS on the basis of the course being exited, not on the basis of anything inside it.

Verdict

Not Ready for Deployment

Under our published rubric, a course fails absolutely if a learner can get credit without demonstrating the capability. That condition is met here three times over. No other dimension needs to be computed, and we do not compute one, publishing a tidy score next to an absolute failure would misrepresent what we found.

Also found

FindingEvidence
Every question's script file is a captured error pageAll 15 question script files contain "Could not find the resource." and carry the name of an unrelated system run by the same publisher. Something crawled the authoring site, received an error, and packaged the error.
The cumulative review question is a duplicateThe final "Cumulative Review" item restates an earlier module-one question with one word changed. Same stem, same four options, same key.
Feedback is mostly a verdict, not an explanationOf 46 feedback strings, 32 are under 42 characters, "Incorrect. Try again." appears 11 times, "That's incorrect." 7 times. Under our rubric, practice without explanatory feedback does not count as practice.
Feedback is delivered by a popup windowEvery piece of feedback opens in a new window. Modern browsers block unrequested popups by default, so a learner who answers incorrectly sees the option turn red and receives no explanation at all.
Editor backup files shipped to productionThe package contains files named index - BACKUP 2016-10-17.html in four directories. Inert, but a housekeeping signal.

What we checked and cleared

Image alternative text is largely correct

We counted 627 image tags across the course. Exactly one lacks an alt attribute. 280 carry alt="", which is the correct treatment for decorative images and not a defect. We expected this to be a finding and it was not.

The knowledge checks are keyboard reachable

Answer options are real anchor elements, so a keyboard-only learner can tab to and activate them. The pattern is dated, and a button element would be correct, but the operability outcome is acceptable. Our keyboard-only profile completed the assessment.

What this run cannot tell you

We tested the package, not the deployment. An LMS can impose its own mastery rules on a SCO that reports nothing: a minimum time in seat, a separate assessment, a manager attestation. If the publisher's platform does that, the completion record may mean more than the package alone can support. We have no visibility into that and we are not asserting otherwise. What we can say is that nothing inside this package would supply such a rule with data.

Why publish this

The point is not that a 2016 course aged badly. It is that this course has a completion rate, and that completion rate has been reported upward for a decade as evidence that managers understand their obligations under a statute that grants enforceable rights to the people it protects.

Nobody involved did anything unusual. The course was built with the tools of its moment, it tracked correctly, it shipped, and it kept working in the only sense the LMS could measure. The numbers went green and stayed green. That is exactly the failure mode we exist to find, and it is why our verdict is never "proven effective."

If you think this might be your course

Email hello@actyra.com with the subject “Is this our course?” and we will tell you, privately, within two business days. If it is yours you get the identity, the package hash and the complete working notes at no charge, and no follow-up unless you ask for one.

That offer stands for any public-sector publisher whether or not one of these runs is theirs. If you want your own course checked against the same three critical-issue conditions, ask and we will do one free, for a course of up to 3 hours.


Read the full Learning Readiness Report for this run → · All published runs · What your completion records actually record