Skip to content

ADR Index

This page lists every Architecture Decision Record in Moodle Playground. See Architecture Decision Records for the policy and ADR-0000-template.md for the starting point.

The index is maintained by hand. When an ADR is added, superseded, or changes status, update the table.

ADR-0001 through ADR-0023 were migrated from the former docs/decisions/ folder and keep their original lightweight format (see Legacy ADRs).

ID Title Status Date
ADR-0000 Template Template —
ADR-0001 Service Worker-level caching for scoped static assets Accepted 2026-03-27
ADR-0002 Plugin type and name auto-detection from GitHub URLs Accepted 2026-03-27
ADR-0003 Direct database inserts for course module addition (WASM SQLite compat) Accepted 2026-03-27
ADR-0004 OPcache tuning and runtime UX defaults for WASM (amended by ADR-0011) Accepted 2026-03-27
ADR-0005 Resilient blueprint step execution with graceful error handling Accepted 2026-03-27
ADR-0006 Language pack installation via the CORS proxy and Moodle's lang_installer Accepted 2026-06-08
ADR-0007 Course backup (.mbz) restore blueprint step Accepted 2026-06-08
ADR-0008 Blueprint provisioning for roles, scales and cohorts Accepted 2026-06-08
ADR-0009 File-backed Moodle configuration settings in blueprints Accepted 2026-06-08
ADR-0010 Build-time localcache seed (theme CSS + DI container) Accepted 2026-06
ADR-0011 Bundle content trim and php.ini / runtime tuning (amends ADR-0004) Accepted 2026-06
ADR-0012 Static-file fast path bypassing the serial PHP request queue Accepted 2026-06
ADR-0013 Build-time RequireJS combined-bundle seed (re-enable cachejs) Superseded by ADR-0033 2026-06
ADR-0014 Patch production code that require_once()s files under tests/ Accepted 2026-06
ADR-0015 Buffer the request body synchronously for Firefox (SW fetch handler) Accepted 2026-06
ADR-0016 Runtime PR file overlay for Moodle core PR previews (applyPrOverlay) Accepted 2026-06-28
ADR-0017 Explicit Moodle Playground scenario blocks in tracker issues Accepted 2026-07-01
ADR-0018 Solid compression for core bundles (tar.zst) — experiment that led to adoption Accepted 2026-07-05
ADR-0019 Streaming (bounded-memory) extraction for tar.zst core bundles (amended by ADR-0020) Accepted 2026-07-05
ADR-0020 Preserve empty plugin-type-root directories in the tar.zst bundle Accepted 2026-07-06
ADR-0021 Blueprint per-step timing instrumentation + [blueprint-perf] diagnostics channel Accepted 2026-07-08
ADR-0022 Browser-side course backup (.mbz) download with progress Accepted 2026-07-08
ADR-0023 Resilient resource fetching + non-fatal-by-default blueprint steps Accepted 2026-07-08
ADR-0024 Lower base PHP memory_limit and Emscripten INITIAL_MEMORY for browser WASM environments Proposed 2026-07-12
ADR-0025 Boot-time asset delivery overlap, static fast-paths, and long-lived runtime diagnostics Proposed 2026-07-12
ADR-0026 Playground-specific minimization of Moodle configuration and features for memory and simplicity Proposed 2026-07-12
ADR-0027 Coherent selective crash recovery checkpoints Proposed 2026-07-12
ADR-0028 Sentry error monitoring via a minimal hand-rolled envelope client Proposed 2026-08-15
ADR-0029 Timestamped Build IDs for deployment identification and cache versioning Proposed 2026-08-16
ADR-0030 Pinned Moodle prerelease channels Proposed 2026-09-16
ADR-0031 Proxy worker serves generic responses as sandboxed data Proposed 2026-09-25
ADR-0032 Moodle 5.3 LTS is the default branch Accepted 2026-10-03
ADR-0033 Moodle-owned JavaScript revisions and versioned RequireJS seeds Accepted 2026-10-16
ADR-0034 Cache public immutable ESM responses inside the existing scope Accepted 2026-10-16
ADR-0035 Checkpoint provisioning and restore volatile blueprint artifacts Accepted (amended by ADR-0036) 2026-10-16
ADR-0036 Download blueprint plugin and unzip archives again on reload Accepted (extended by ADR-0037) 2026-10-16
ADR-0037 Verify re-downloaded blueprint archives against a checkpointed hash on reload Accepted 2026-10-16
ADR-0038 Validate OPcache file-cache timestamps and blacklist the eval script path Accepted 2026-10-16
ADR-0039 Start OPcache's file cache on PHP 8.3/8.4 via the uwsgi SAPI name, behind an experimental flag Accepted (amended by ADR-0046) 2026-10-16
ADR-0040 Expose the experimental OPcache flag as an info-panel toggle that reloads without resetting Accepted 2026-10-17
ADR-0041 Exclusive ownership of a playground scope Proposed 2026-10-18
ADR-0042 Stream service-worker static responses while caching them Proposed 2026-10-18
ADR-0043 Discard the OPcache file cache after CLI runs, before the next web request Proposed 2026-10-18
ADR-0044 Raise PHP memory_limit to 512M while the OPcache file cache is live Proposed 2026-10-18
ADR-0045 Leave cross-origin requests to the browser instead of passing them through the Service Worker Proposed 2026-10-19
ADR-0046 Turn the OPcache file cache on by default Proposed 2026-10-19
ADR-0047 Expose the runtime web root to blueprints as {{MOODLE_DIRROOT}} Proposed 2026-10-22

PR #341 review follow-up: ADR-0033 clarifies production JS after purges, ADR-0034 qualifies warm-cache evidence and header visibility, and ADR-0035 covers early checkpoints, shell identity, partial artifacts and non-replayed crash recovery. All three were accepted when PR #341 merged.

The second-review follow-up also clears the separate on-disk hook registries on plugin/overlay restore; ADR-0035 records this distinction from MUC.

ADR-0037 (issue #345) adds the SHA-256 of each installed archive to the ADR-0035 checkpoint so an ADR-0036 re-download can be verified before it runs, and retries failed plugin downloads with a message that names the archive.