QuizWizz Wave 6A classmap delta

Historical record — 2026-08-11

Preserved as observed. Every present-tense statement below dates to 2026-08-11, including the failure-mode claim that no executable first-party source references the four stale keys. Current truth: Program Masterplan.

Release boundary: releaseEligible: false. This is bench-local, noncanonical evidence for the canonical release owner. It does not establish release readiness, provenance, a releasable package, or authorization to ship.

Mechanical finding

The reproducible check is deliberately narrower than a source-class inventory:

  1. Load vendor/composer/autoload_classmap.php.
  2. Retain only map keys beginning with QuizWizz\\.
  3. Resolve each mapped value relative to the plugin root exactly as vendor/composer/autoload_real.php does: $root = dirname(__DIR__, 2), then $root . '/' . $map[$class].
  4. Assert is_file($target) for every resolved target.

Result: 59 QuizWizz\\* classmap entries, 55 targets present, and 4 targets missing. Wave 6A records only this deleted/moved mapped-target delta; new source classes are not stale vendor entries and therefore do not belong in the miss list.

Exact stale entries and active responsibilities

Stale classmap keyMissing mapped targetSource-grounded active replacement paths and responsibilities
QuizWizz\EffectStateincludes/EffectState.phpNo PHP class replacement is required: the deleted class’s only external caller fed an unenqueued client script. The live settings effect sentence remains owned by assets/js/qwizz-admin-settings.js.
QuizWizz\Frontend\CraftHandlerincludes/Frontend/CraftHandler.phpincludes/Frontend/Craft/CraftResponseHandler.php registers and handles the Craft/PDF request boundary; includes/Frontend/Craft/CraftService.php executes the Craft application flow and returns the result consumed by the response handler.
QuizWizz\Frontend\Embedsincludes/Frontend/Embeds.phpincludes/Frontend/Shortcodes/LibraryShortcode.php, specifically LibraryShortcode::enqueue_catalog(), owns the embed/catalog stylesheet enqueue. The corrected unavailable branch in includes/Frontend/QuizEmbed.php now calls LibraryShortcode::enqueue_catalog(), so no executable PHP source references the stale QuizWizz\Frontend\Embeds class.
QuizWizz\Frontend\Shortcodeincludes/Frontend/Shortcode.phpThe plural includes/Frontend/Shortcodes/ShortcodeRegistry.php owns registration and dispatch to the concrete CraftShortcode.php, QuizShortcode.php, LibraryShortcode.php, and SubjectsShortcode.php renderers; ShortcodeAttributes.php and ShortcodeRenderer.php provide the shared attribute and renderer contracts.

These are exactly the four mechanically missing mapped targets; no other class is asserted stale by this handoff.

Failure mode if a stale entry is referenced

vendor/composer/autoload_real.php:1-12 is a hand-written map loader: it registers with prepend = true and performs an unguarded require_once $root . '/' . $map[$class] for any key present in the map. A stale key therefore raises an immediate fatal on first reference, and the plugin’s own is_readable-guarded fallback (quizwizz.php:32-46) is registered afterwards and never runs for a mapped class. Today no executable first-party source references the four stale keys, which is the only reason this is latent rather than fatal. The bench has no safe mitigation: vendor/ must not be hand-edited, so the regeneration and re-check belong to the canonical pipeline.

Canonical release-pipeline action

vendor/ was not edited on the bench. Do not hand-patch vendor/composer/autoload_classmap.php: the canonical release pipeline must regenerate the classmap from canonical source, then repeat this mapped-target existence check and require every regenerated QuizWizz\\* target to satisfy is_file. Any regenerated totals are canonical-pipeline evidence, not a release claim from this bench artifact.