Files
rootnode-academy/docs/PHASE6C_CURRICULUM_COMPLETION.md
T
ced4568andClaude Sonnet 5 bd0a10fbfb docs(phase6c): pilot readiness standard, pilot curriculum manifest, ROOT 11 scope
Adds the four required Phase 6C documents:

- ROOT_PILOT_READINESS_STANDARD.md — the explicit 8-point sufficiency bar
  used to judge every module this phase, replacing any fixed activity-count
  assumption.
- ROOT11_DEVOPS_PLATFORM_SCOPE.md — evaluates all 7 proposed ROOT 11 modules
  individually (READY TO AUTHOR NOW / PARTIAL-LESSON-ONLY / REQUIRES FUTURE
  LAB ENVIRONMENT), with what current infra supports vs. what GitOps/CI-CD/
  IaC/observability would each require.
- ROOT_PILOT_CURRICULUM.md — the authoritative pilot manifest: instructor-led
  as the first pilot's delivery mode, honest READY/PARTIAL/DEFERRED/NOT IN
  PILOT status per course and module, and what is intentionally excluded
  (ROOT 01-04 never authored, ROOT 08 non-capstone-gating and deferred, ROOT
  11 modules 2-7, three practice-bank modules instructor-led-only this pilot).
- PHASE6C_CURRICULUM_COMPLETION.md — the phase's own record of what was
  upgraded, why, the bug found and fixed, and the pilot readiness conclusion.

Updates ROOT_CURRICULUM_COVERAGE_MATRIX.md with the verified before/after
module counts (21->22 modules, 6->16 READY) and per-module upgrade rationale,
and ROOT_CAPSTONE_READINESS.md with a re-review confirming the unlock gate's
6 stages, and ROOT 08/09's non-gating status, are unchanged by this phase's
curriculum expansion.

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

151 lines
9.5 KiB
Markdown

# Phase 6C — Curriculum Completion + Assessment Bank + ROOT 11 Scope
Phase 6C's mission: upgrade PARTIAL modules toward the gold-module standard, build a real
assessment bank from previously-unwired content, resolve ROOT 11's scope, and produce an
explicit, honest pilot-ready determination. This document records what was actually done and
why, using the existing content/assessment model throughout — no new application code was
required.
## Baseline verification
Confirmed at start: branch `main`, clean tree, HEAD = `origin/main` =
`2db136875f30809afa9c82f36e96605802bf7ee2`, descending from the Phase 6B milestone
(`git merge-base --is-ancestor`, confirmed). Phase 6B's own final report claimed 17 PARTIAL
modules; a direct database query showed the real figure was 15 out of 21 total modules — this
correction is recorded in `docs/ROOT_CURRICULUM_COVERAGE_MATRIX.md`.
## Readiness standard
`docs/ROOT_PILOT_READINESS_STANDARD.md` defines READY as sufficiency, not a fixed activity
count: enough instruction/scaffolding that a student can reasonably perform the practical work,
checked against an 8-point standard (concept instruction, demonstrated reasoning, self-check,
guided bridge, operational-context closing, instructor notes, self-paced sufficiency, resolved
references). Modules were checked against this bar individually, not mechanically padded to six
activities each.
## Modules upgraded (15 PARTIAL → 6 PARTIAL, 16 READY)
**Full gold-pattern upgrades** (lesson/demonstration/knowledge-check/guided-exercise/lab(s)/
reflection), each with new content authored and existing lab activities preserved and only
resequenced:
- `root-06-m03-jobs-cronjobs-daemonsets`
- `root-07-m04-ingress-networkpolicy-foundations`
- `root-07-m02-configuration-and-secrets` (converted in place from a bare 5-lab bank — the last
networking/config module with no front-door teaching)
- `root-09-m02-serviceaccounts-and-rbac`
- `root-09-m03-network-and-supplychain-security`
- `root-10-m03-troubleshooting-framework` (only guided-exercise + reflection were missing)
**Bookend-only upgrade** (lesson + reflection wrapped around an existing, otherwise-complete
practice bank, rather than a full six-part redesign — because the gap was framing, not
per-task teaching):
- `root-05-m01-pods-and-kubectl-basics` — 20 independent kubectl-fluency tasks, each already
carrying its own explanation in its scenario description. Added a short lesson explaining why
the module is structured as breadth practice, and a reflection asking students to name their
own remaining gaps.
**Documented exceptions** (status promoted to READY with no new activities, because adding the
"missing" activity type would have actively undermined the module's intentional design):
- `root-12-m01-real-ops-incidents` — adding a knowledge-check or guided-exercise would
contradict its deliberate "you are responsible for this environment" unguided design.
- `root-capstone-m01-operate-and-recover` — its single `capstone` activity IS the terminal
exam; the readiness/prep teaching already lives in the preceding, already-READY
`root-capstone-m02-capstone-readiness`.
- `root-09-m04-cluster-hardening-and-runtime` — Phase 6B already documented this as
intentionally survey-depth ("not core, not daily-driver"); it now has a lesson, hands-on
labs, and a real assessment checkpoint (below), which is sufficient for its scope without
forcing a demonstration/guided-exercise pattern that would misrepresent it as core content.
**Intentionally deferred, not upgraded this phase:**
- `root-08-m01-storage-fundamentals`, `root-08-m02-scheduling-resource-governance` — ROOT 08
does not gate the capstone (the `rootnode-path.json` unlock stages are foundation, workloads,
networking, configuration, troubleshooting, real-ops; storage/scheduling was never one of
them). Given realistic effort constraints, these were prioritized below the
capstone-critical path and below the security-assessment mandate. Left PARTIAL, classified
DEFERRED/optional-supplementary in the pilot manifest.
- `root-06-m01-deployments-and-workloads`, `root-07-m01-services-and-networking`,
`root-10-m02-general-troubleshooting` — dense hands-on practice banks that sit alongside an
already-fully-taught sibling module in the same course (root-06-m02, root-07-m03/m04,
root-10-m01/m03). Rather than author three more full teaching layers under time constraints,
classified as instructor-led-only for the first pilot (an instructor supplies the missing
framing live); fully self-paced delivery of exactly these three is deferred. See
`docs/ROOT_PILOT_CURRICULUM.md`.
## Content authored this phase
20 new Markdown content files (demonstrations, guided exercises, knowledge checks, lessons,
reflections) across ROOT 05, 06, 07, 09, 10, and 11 — each following the established
`## Instructor Notes` convention (instructor-only content below that heading, stripped from
student-visible payload by `content.js`'s existing `splitContent()`). Every demonstration
follows OBSERVE → HYPOTHESIS → INSPECT → CHANGE → VERIFY; every guided exercise bridges lesson
to lab without revealing the lab's exact answer; every knowledge check tests reasoning over
recall; every reflection closes with a named, transferable engineering principle.
## Assessment bank (Section 9)
New `assessment_definitions` row `rootnode-security-assessment` (type `exam`, 60 minutes,
`hint_policy: disabled`), using the existing Phase 3B assessment engine unmodified. Pool: 3
required hands-on CORE security scenarios (`cks-pod-security-context`, `cks-rbac-least-privilege`,
`cks-network-policy`) plus 4 random-draw groups covering SecurityContext hardening depth,
RBAC/ServiceAccount depth, network/supply-chain depth, and the 7 previously-unwired CKS MCQs as
one pool — 9 scenarios drawn per attempt, server-authoritative (verified live: a real student
session draw returned 9 scenario IDs matching the pool spec, no client input accepted). Wired
into `root-09-m04-cluster-hardening-and-runtime` as an `assessment`-type activity — the natural
home for a security checkpoint, not a new module.
## Remaining unwired scenarios (Section 13)
Recomputed after the security-assessment wiring consumed the 7 previously-unwired CKS MCQs:
**2 scenarios remain unwired** — `cluster-upgrade-mcq` and `etcd-backup-mcq`, both Cluster
Administration/CKA-track content (kubeadm upgrade order, etcd backup/restore). No current ROOT
module teaches cluster administration at that level; classified **future-curriculum**, not
neglect. One scenario that WAS unwired, `readiness-probe-task` (a constructive "author a
readiness probe" Lab, distinct from the existing diagnostic `rootnode-probe-port-mismatch`
Lab), was wired as an **optional practice** activity in `root-10-m01-health-probes-and-troubleshooting`
using the existing `is_required` model from Phase 6B — no second practice system built.
## ROOT 11 (Section 11-12)
`docs/ROOT11_DEVOPS_PLATFORM_SCOPE.md` evaluates all 7 proposed modules individually. Only one
was authored (`root-11-m01-devops-platform-thinking`, folding in the closely-related "Platform
Engineering & DX" idea) — a lesson, knowledge check, and reflection, explicitly telling
students which future topics (GitOps, CI/CD, IaC, observability) require infrastructure this
platform doesn't yet provide. No fake labs were built. ROOT 11 moved from `planned` to
`partial` at the course level — an intentional, documented scope, not an unexplained
placeholder.
## New application code
None. Every genuine gap this phase was satisfiable with existing tables (`course_modules`,
`module_activities`, `assessment_definitions`) and the existing content-delivery pipeline. One
real bug was found and fixed during authoring (see below) but required no schema or API change.
## Bug found and fixed
An early draft of migration 024 set `root-11-m01-devops-platform-thinking`'s
`course_modules.prerequisites` to a COURSE id (`root-10-kubernetes-troubleshooting-observability`)
instead of a MODULE id — `course_modules.prerequisites` and `courses.prerequisites` are
different namespaces. Caught by actually running `infra/scripts/validate-course-content.js`
against the rebuilt database (`FAIL — module root-11-m01-devops-platform-thinking lists a
prerequisite that doesn't exist`). Verified via direct query that the course-level gate was
already correctly set from Phase 6A's migration 022. Fixed by emptying the module-level field
(the course-level gate already fully enforces the dependency) and documenting why in the
migration's SQL comments.
## Content validation (Section 24)
`infra/scripts/validate-course-content.js` (new, permanent) checks: no duplicate course/module/
activity ids; no orphan modules/activities; every scenario_id and assessment_definition_id
resolves to a real row/file; every prerequisite id resolves and contains no cycles; no sequence
collisions; instructor notes never leak into student-visible content (verified by actually
invoking `content.js`'s real `loadContent()`); every content_path resolves to a real file. Final
run: **22 courses/modules loaded, 163 activities, 98 scenario files, 0 errors.**
## Pilot readiness determination
See `docs/ROOT_PILOT_CURRICULUM.md` for the full manifest. Every module in the pilot's required
completion path (ROOT 05-07, 09-10, 12, Capstone) meets the READY bar for instructor-led
delivery; three specific practice-bank modules are instructor-led-only this pilot; ROOT 08 and
ROOT 11 modules 2-7 are explicitly outside the required path. The first pilot is scoped as
instructor-led, and within that scope, the curriculum is ready.