Files
rootnode-academy/docs/PHASE6B_ROOT_CURRICULUM_EXPANSION.md
T
ced4568andClaude Sonnet 5 2db136875f docs(phase6b): document curriculum expansion
PHASE6B_ROOT_CURRICULUM_EXPANSION.md — the phase summary: what was
authored per course, the is_required extension, the capstone unlock
fix, verified scenario coverage before/after (44 -> 88 of 98, 89.8%,
by direct query not estimate), and honest known limitations/Phase 6C
recommendations.

ROOT_CAPSTONE_READINESS.md — the readiness module and the server-side
unlock fix in full detail, including why the module's completion and
the real assessment's unlock gate are deliberately independent systems.

Updated ROOT_CURRICULUM_INVENTORY.md (Phase 6B coverage numbers),
ROOT_PROGRAM_ARCHITECTURE.md (ROOT 08/09 PARTIAL, new module lists per
course), COURSE_CONTENT_MODEL.md (is_required completion rule, a new
content-versioning section per this phase's own requirement),
COURSE_AUTHORING_STANDARD.md (classifying near-duplicate/advanced
scenarios), ENGINEERING_SOP.md (new Phase 6B section),
REMOTE_AND_SELF_PACED_ARCHITECTURE.md (cross-reference), and
platform/README.md (e2e-phase6b.js, the Phase 6B rehearsal, isolation-
per-suite regression guidance).

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-26 09:09:47 -05:00

156 lines
10 KiB
Markdown

# Phase 6B — ROOT_ Curriculum Authoring & Coverage Expansion
**Status: PHASE 6B COMPLETE. 13 NEW TEACHING MODULES AUTHORED ACROSS ROOT 05-10/12/CAPSTONE.
CAPSTONE SERVER-SIDE UNLOCK ENFORCEMENT FIXED. VALIDATED AGAINST A REAL LAB.**
Phase 6A built the course/module/activity content model and one gold-standard module. Phase 6B
is the primary content-authoring phase: real, substantial teaching content across the
Kubernetes/operations portion of `root_`, built strictly from the existing 98-scenario
inventory — no new scenarios were needed or created (see §7).
## 1. What was authored
13 new modules across 7 courses, all evidence-mapped in `docs/ROOT_CURRICULUM_COVERAGE_MATRIX.md`:
| Course | New module(s) | Depth |
|---|---|---|
| ROOT 05 | Kubernetes Mental Model & Core Objects | **READY** — full gold-standard pattern |
| ROOT 06 | Deployments, Scaling & Updates | **READY** — full gold-standard pattern |
| ROOT 06 | Jobs, CronJobs & DaemonSets | PARTIAL — lesson + knowledge check + labs |
| ROOT 07 | Services & Service Discovery | **READY** — full gold-standard pattern |
| ROOT 07 | Ingress & NetworkPolicy Foundations | PARTIAL — lesson + knowledge check + labs |
| ROOT 08 | Storage Fundamentals | PARTIAL — lesson + knowledge check + labs |
| ROOT 08 | Scheduling & Resource Governance | PARTIAL — lesson + knowledge check + labs |
| ROOT 09 | Security Model & SecurityContext | **READY** — full gold-standard pattern + guided/independent/advanced practice |
| ROOT 09 | ServiceAccounts & RBAC | PARTIAL — lesson + knowledge check + labs |
| ROOT 09 | Network & Supply Chain Security | PARTIAL — lesson + knowledge check + labs |
| ROOT 09 | Cluster Hardening & Runtime Security | PARTIAL — survey-depth lesson + labs |
| ROOT 10 | The RootNode Troubleshooting Framework | PARTIAL — lesson + demonstration + knowledge check + labs |
| ROOT 12 | Incident-response framing added to the existing Real Ops module | PARTIAL — framework lesson + reflection wrapping the existing incidents |
| ROOT Capstone | Capstone Readiness | **READY** — orientation module, see `docs/ROOT_CAPSTONE_READINESS.md` |
3 modules reach **READY** by the honest bar in `docs/COURSE_AUTHORING_STANDARD.md` (introduction,
objectives, concept lesson, demonstration, knowledge check, guided practice, lab, reflection,
instructor notes, estimated duration, all present) — plus the pre-existing gold-standard Health
Probes module, unchanged. Every other new module is honestly **PARTIAL**: real lesson content
and real labs, missing one or more of demonstration/guided-exercise (documented per-module in the
coverage matrix, not glossed over).
ROOT 08 and ROOT 09 moved from **PLANNED** to **PARTIAL** at the course level — real content now
exists where Phase 6A left them structurally empty.
## 2. The is_required extension (Phase 6B, not Phase 6A)
`module_activities.is_required` (new column, defaults `true` — every Phase 6A activity is
unaffected) lets a module distinguish CORE activities from GUIDED/INDEPENDENT-practice
duplicates and ADVANCED/optional extras (ROOT 09's CKS-style content, mostly). A module is
"complete" once every REQUIRED activity is done — an incomplete optional activity never blocks
it, though it still counts toward the displayed percent. See `docs/COURSE_CONTENT_MODEL.md`'s
updated completion-rules section.
## 3. The capstone server-side unlock fix
Full detail in `docs/ROOT_CAPSTONE_READINESS.md` §4. Summary: `POST /api/assessments/
:definitionId/start` previously never checked `unlock_rule` — a direct API call could start the
capstone before its prerequisite stages were genuinely complete, even though the UI never
exposed a way to trigger this. Fixed by binding to the same `computeCurriculumState()` gate
`GET /api/capstone` already used. Found while fixing this: `e2e-phase5b.js`'s own capstone test
had been passing only because of this exact gap (it never completed the `real-ops` stage before
attempting to start) — fixed alongside the platform code, not routed around.
## 4. Content quality bar applied honestly
No module was marked READY merely for having activity rows, headings, or scenario references.
The ROOT 08/09 storage/scheduling/security modules are real, substantive lessons with real
knowledge checks — but without a demonstration or guided exercise, they're PARTIAL, not READY,
by this project's own stated standard. See the coverage matrix for the specific gap in each.
## 5. Scenario coverage before/after
Verified by direct query against `module_activities.scenario_id`, not estimated.
Before Phase 6B: 44 of 98 scenarios wired into structured curriculum (all via Phase 6A's
mechanical mapping of `rootnode-path.json`'s existing stages).
After Phase 6B: **88 of 98 scenarios (89.8%) now in structured curriculum** — 44 newly wired
this phase: `deployment-rollback` (added to ROOT 06 m02 as hands-on rollback practice
alongside its lesson), `job-task`, `cronjob-task` (ROOT 06 m03); `nodeport-task`,
`dns-resolution-mcq` (ROOT 07 m01), `ingress-task`, `network-policy` (ROOT 07 m04);
`emptydir-pod`, `pv-pvc-mount`, `pvc-dynamic-task`, `storageclass-mcq` (ROOT 08 m01),
`node-label-selector`, `node-taint-toleration`, `pod-affinity-mcq`, `priority-class-task`,
`pod-disruption-budget-task`, `resource-quota-ns`, `limitrange-task` (ROOT 08 m02);
`cks-non-root-enforce`, `cks-drop-capabilities`, `cks-readonly-filesystem`,
`cks-pod-security-context`, `cks-seccomp-profile`, `cks-apparmor-profile`,
`pod-security-context` (ROOT 09 m01); `serviceaccount-pod`, `cks-automount-token`, `rbac-role`,
`cks-rbac-clusterrole`, `cks-rbac-least-privilege`, `rbac-clusterrole` (ROOT 09 m02);
`cks-network-policy`, `cks-egress-namespace`, `cks-tls-ingress`, `cks-image-pull-secret`,
`networkpolicy-egress`, `cks-network-policy-metadata` (ROOT 09 m03); `cks-psa-namespace`,
`cks-immutable-secret`, `cks-runtime-class`, `cks-audit-policy` (ROOT 09 m04); `crashloop-fix`,
`endpoint-fix-task` (ROOT 10 m03), `container-logging-mcq` (ROOT 10 m02, existing bank).
**10 scenarios remain unwired**, each with a specific, documented reason rather than an
oversight: `cluster-upgrade-mcq`, `etcd-backup-mcq` (ROOT 11/DevOps territory, explicitly out of
Phase 6B's authoring scope); 7 CKS-style MCQs classified as ASSESSMENT BANK material
(`cks-mcq-api-server`, `cks-mcq-audit-policy`, `cks-mcq-kubelet-auth`, `cks-mcq-psp-replacement`,
`cks-mcq-runtime-security`, `cks-mcq-sandboxing`, `cks-mcq-image-footprint`) — recall-style
questions better suited to a future structured exam pool than hands-on core teaching, flagged
for that future use rather than silently dropped; and `readiness-probe-task` — a real, unused
candidate for independent practice in ROOT 06 or ROOT 10 that this phase simply didn't get to,
honestly left for Phase 6C rather than force-mapped at the last minute. Quality of mapping, not
percentage, drove every placement decision — see the coverage matrix's "duplicate concepts
identified" section for how near-duplicate scenarios were handled deliberately rather than both
force-fit into "core."
## 6. Knowledge-check and guided-exercise approach
Every new knowledge check uses scenario-interpretation and reasoning questions ("A Deployment
has three replicas but the Service has zero endpoints — which part of the system should you
inspect first, and why?"), never "what command was shown two paragraphs ago." Every guided
exercise bridges lesson to lab without revealing the lab's answer — modeled directly on the
existing gold module's own guided exercise. No new knowledge-check engine capability was needed;
the existing Markdown + manual-marker model was sufficient throughout.
## 7. Why no new scenarios were created
Every learning objective this phase authored had a suitable existing scenario — the 54-scenario
unused bank Phase 6A inventoried was exactly the content Phase 6B needed. No objective was found
that genuinely required new hands-on lab content with no existing scenario able to serve it, so
no new `rootnode-*` scenario was created this phase (see the authorization's explicit
justification bar in its §17 — none of the three required conditions were met for any specific
gap identified during authoring).
## 8. What Phase 6B deliberately did not build
Per the authorization's explicit scope line: `init_`/`compile_` curriculum, deep authoring of
ROOT 01-04 or ROOT 11 (both remain structurally PLANNED, as Phase 6A left them — genuinely no
scenario content exists for either), a Parent Portal, payments, public registration, an AI
tutor, chat/video/voice, proctoring, a mobile app, certificates, a multi-host scheduler,
production deployment changes, an LMS/CMS, a WYSIWYG authoring system, or complex drip
scheduling. The Provisioner, Gateway, Lab Router, student/instructor authentication, enrollment
architecture, and notification architecture were not redesigned — the one fix made
(capstone unlock) was the smallest correct change to the assessment engine's existing route,
not a redesign of the engine itself.
## 9. Test results
- `e2e-phase6b.js`: **24 passed, 0 failed.**
- `test-phase6b-root-course-rehearsal.js` (real k3s Lab, real `kubectl expose`, real classroom
tooling): **11 passed, 0 failed.**
- Full regression (2A/2B/3A/3B/5A/5B/5C/6A), each run in isolation per the convention Phase 6A
established — see the final report for the run-by-run result and the two pre-existing test
gaps found and fixed along the way (in `e2e-phase5b.js` and `e2e-phase6a.js`, both caused by
this phase's own intentional, documented behavior changes, not by a defect).
## 10. Known limitations / recommended Phase 6C scope
- ROOT 06/07/08/09/10's PARTIAL modules are missing a demonstration and/or guided exercise —
the natural next authoring pass, module by module, using the 3 READY modules as templates.
- ROOT 09's 7 ASSESSMENT-BANK-classified MCQs are inventoried but not yet wired into an actual
assessment definition.
- ROOT 11 (DevOps & Platform Engineering) remains entirely PLANNED — no scenario content exists
anywhere in this repository for CI/CD, IaC, or GitOps concepts; a future phase would need to
either author new `rootnode-*` scenarios for it or explicitly scope it out of `root_`.
- The Capstone Readiness module's completion is intentionally independent of the real capstone's
unlock gate (see `docs/ROOT_CAPSTONE_READINESS.md` §3) — worth revisiting only if a future
phase has a concrete reason to couple them, not as a default assumption.