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]>
This commit is contained in:
2026-08-26 11:21:09 -05:00
co-authored by Claude Sonnet 5
parent 01d3764138
commit bd0a10fbfb
6 changed files with 488 additions and 4 deletions
+150
View File
@@ -0,0 +1,150 @@
# 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.
+64
View File
@@ -0,0 +1,64 @@
# ROOT 11 — DevOps & Platform Engineering: Scope Decision
Phase 6C's mandate for ROOT 11 was to stop it being an undefined `planned` placeholder by
making an explicit, evidence-based scope decision — not to fake seven hands-on labs the current
platform cannot honestly deliver. This document is that decision.
## Purpose and learning outcomes
ROOT 11 exists to give a student who has just finished ROOT 05-10 (Kubernetes hands-on) and
ROOT 12 (incident response) the vocabulary and mental model to see their skills as part of a
larger DevOps/platform engineering practice, and an honest map of what comes next once the
platform can support it hands-on. It is explicitly NOT meant to teach GitOps, CI/CD, or
Infrastructure as Code as hands-on skills in this phase.
## The seven proposed modules, evaluated against current architecture
| # | Proposed module | Classification | Why |
|---|---|---|---|
| 1 | Sysadmin → Platform Thinking | **READY TO AUTHOR NOW** | Pure orientation/reframing content. No new infrastructure needed — it's built entirely on ROOT_'s existing curriculum, referenced explicitly. Authored this phase as `root-11-m01-devops-platform-thinking`. |
| 2 | GitOps & Declarative Delivery | **REQUIRES FUTURE LAB ENVIRONMENT** | Needs a Git repository the student can push to and a deployment-automation controller (ArgoCD or Flux) watching it. The Lab platform provisions an isolated k3s VM per student today; it does not provision or wire a Git remote or a GitOps controller. Faking this with a Kubernetes-only scenario would teach "apply a manifest," not GitOps — a materially wrong mental model. |
| 3 | CI/CD Fundamentals | **REQUIRES FUTURE LAB ENVIRONMENT** | Needs a CI runner (even a minimal one) that can check out code, run a pipeline, and produce an artifact or trigger a deploy. No such runner exists in the Lab image or Platform API today. |
| 4 | Infrastructure as Code | **REQUIRES FUTURE LAB ENVIRONMENT** | Needs a provisioning target and a tool like Terraform/OpenTofu applying against it. Kubernetes objects are already declarative, but IaC's actual lesson is about provisioning infrastructure *below* Kubernetes — cloud resources, networking, the cluster itself — which this platform doesn't expose to a student sandbox. |
| 5 | Observability & SLO Thinking | **PARTIAL-LESSON-ONLY** | The conceptual half (what SLIs/SLOs are, error budgets, why "is the Pod Running" isn't observability) can be taught honestly without a metrics stack. A genuinely hands-on version needs Prometheus/Grafana (or equivalent) wired into the Lab VM, which doesn't exist today. Recommend authoring the lesson-only half in a future sub-phase; do not build the metrics stack this phase. |
| 6 | Platform Engineering & DX | **READY TO AUTHOR NOW** (folded into module 1) | Conceptually adjacent enough to module 1 that a separate module would duplicate content. Its core ideas (self-service, golden paths, reducing cognitive load) are already covered in `root-11-m01`. |
| 7 | Reliability / Automation / Operational Ownership | **PARTIAL-LESSON-ONLY** | Largely already covered hands-on by ROOT 12 (Real Ops incidents) and ROOT 10 (troubleshooting framework). A short lesson connecting those two courses' skills explicitly to "reliability engineering" as a named discipline is legitimate future content; a new hands-on lab would duplicate ROOT 12 rather than teach something new. |
## What was actually authored this phase
Only module 1 (folded with module 6's ideas) — `root-11-m01-devops-platform-thinking` — a
lesson, knowledge check, and reflection. No Lab activity exists for ROOT 11 and none was
faked. The lesson explicitly tells students which future topics (GitOps, CI/CD, IaC,
observability) require infrastructure this course doesn't yet provide, rather than staying
silent about the gap.
## What current infrastructure supports vs. what future modules need
**Supports today:** Kubernetes/k3s hands-on labs via the existing Lab VM provisioning
(Platform API → Provisioner → Lab Router), the existing assessment engine, and the existing
content/course model — sufficient for orientation and conceptual lesson content referencing
Kubernetes skills already taught.
**Would need building for modules 2-4, and the hands-on half of 5 and 7 (future phases,
NOT this phase):**
- A Git hosting target reachable from a student's Lab VM, plus a GitOps controller
(ArgoCD/Flux) pre-installed or installable in that VM.
- A minimal CI runner (self-hosted GitHub Actions runner, Drone, or similar) wired to a
student-scoped repository.
- A provisioning target IaC tooling can act against — even a scoped-down one (e.g., Terraform
against a mock/local provider) — plus the tooling itself in the Lab image.
- A metrics/logging stack (Prometheus + Grafana at minimum) installed per-Lab-VM or shared with
per-student scoping, for the hands-on half of Observability.
None of this was built in Phase 6C, per its explicit "do NOT build" list (Section 26).
## Pilot inclusion recommendation
Include `root-11-m01-devops-platform-thinking` in the first pilot as a **closing orientation
module** — no hands-on requirement, explicitly scoped as conceptual. Do not present ROOT 11 as
a complete course in pilot marketing or instructor materials; present it as "orientation now,
hands-on modules 2-7 in a future phase once the required lab environments exist." This keeps
the pilot honest about what ROOT 11 currently is versus what it will become.
See [`docs/ROOT_PILOT_CURRICULUM.md`](ROOT_PILOT_CURRICULUM.md) for how this fits the overall
pilot manifest.
+26
View File
@@ -85,3 +85,29 @@ gap was also found and fixed in `e2e-phase5b.js`'s own capstone-completion test,
included the `real-ops` stage in its completion loop — it was passing only because the very included the `real-ops` stage in its completion loop — it was passing only because the very
bug this phase fixes let an incomplete curriculum still start the capstone. See that test file's bug this phase fixes let an incomplete curriculum still start the capstone. See that test file's
own comment for detail. own comment for detail.
## 5. Phase 6C re-review against the expanded curriculum
Re-checked every item this doc depends on against Phase 6C's changes and found no gap requiring
a fix:
- **The unlock gate's 6 stages are unchanged**: Foundation, Workloads, Networking,
Configuration, Troubleshooting, Real Ops (`rootnode-path.json`). Phase 6C added and upgraded
modules within those stages' courses (ROOT 05-07, 10) plus ROOT 09 (Security) and the new
ROOT 11 orientation — **ROOT 08 (Storage & Scheduling) and ROOT 09 (Security) do not appear
among the 6 gating stages and still do not gate the capstone.** This is documented
architecture, not an oversight — confirmed by direct test
(`platform/test/e2e-phase6c.js`, "the capstone unlock gate is unaffected by ROOT 09 (security)
being incomplete") rather than assumed.
- **`root-capstone-m01-operate-and-recover`** was promoted from `partial` to `ready` this phase
as a documented exception (no activity added — its single `capstone` activity IS the exam;
see `docs/PHASE6C_CURRICULUM_COMPLETION.md`). This changes only its content-model status
label, not the real unlock gate described in §3-4 above, which remains entirely independent.
- **Random draw pools, timing, hint policy, and completion rule** for `rootnode-capstone` itself
were not touched by Phase 6C — no scenario content this phase added or changed feeds that
pool.
- **The Capstone Readiness module (§1)** required no changes — its 4 activities and their
relationship to the (still unchanged) real unlock gate remain accurate as described above.
No redesign was made or needed; Phase 6C's curriculum expansion did not require reopening the
capstone engine.
+47 -4
View File
@@ -2,10 +2,53 @@
Phase 6B §1 — maps every scenario Phase 6B puts to structured use, with an intentional reason Phase 6B §1 — maps every scenario Phase 6B puts to structured use, with an intentional reason
for each placement (not coverage-percentage padding). Built from for each placement (not coverage-percentage padding). Built from
`docs/ROOT_CURRICULUM_INVENTORY.md`'s evidence. Statuses: **READY** (a student can actually `docs/ROOT_CURRICULUM_INVENTORY.md`'s evidence. Statuses: **READY** (meets
learn from it end to end — see `docs/COURSE_AUTHORING_STANDARD.md`'s bar), **PARTIAL** (real `docs/ROOT_PILOT_READINESS_STANDARD.md`'s bar), **PARTIAL** (real lesson + labs, missing one or
lesson + labs, missing one or more of demonstration/knowledge-check/guided-exercise), **PLANNED** more of demonstration/guided-exercise/reflection), **PLANNED** (structure only, no content),
(structure only, no content), **GAP** (no suitable scenario exists at all). **GAP** (no suitable scenario exists at all).
## Phase 6C verification (superseding Phase 6B's own self-reported counts)
Baseline (start of Phase 6C), run directly against the database and filesystem
(`infra/scripts/validate-course-content.js`, 0 errors) rather than trusted from Phase 6B's
narrative report, which had miscounted: **21 modules total — 6 READY, 15 PARTIAL** (Phase 6B's
final report claimed 17 PARTIAL; the real count, re-verified here, was 15).
**After Phase 6C's upgrades: 22 modules total — 16 READY, 6 PARTIAL.** (22, not 21: Phase 6C
added `root-11-m01-devops-platform-thinking`, ROOT 11's first real module — see
`docs/ROOT11_DEVOPS_PLATFORM_SCOPE.md`.) 75 activities now carry content_path (up from 73),
163 activities total (up from 140), and unwired scenarios dropped from 10 (Phase 6B) to 2
(`cluster-upgrade-mcq`, `etcd-backup-mcq` — both Cluster Administration/CKA-track content with
no current ROOT module to host them; see `docs/ROOT_PILOT_CURRICULUM.md`'s "not in pilot"
section). Full before/after detail and rationale per module is in
`docs/PHASE6C_CURRICULUM_COMPLETION.md`.
**READY (16):** `root-05-m00-kubernetes-mental-model` (Phase 6A gold standard, unchanged),
`root-05-m01-pods-and-kubectl-basics` (Phase 6C: added bookending lesson + reflection around
its 20-task kubectl-fluency bank), `root-06-m02-deployments-scaling-updates` (unchanged),
`root-06-m03-jobs-cronjobs-daemonsets` (Phase 6C: added demonstration, guided exercise,
reflection — full gold pattern), `root-07-m02-configuration-and-secrets` (Phase 6C: added
lesson, demonstration, knowledge check, guided exercise, reflection — was a bare 5-lab bank),
`root-07-m03-services-and-service-discovery` (unchanged), `root-07-m04-ingress-networkpolicy-foundations`
(Phase 6C: full gold pattern added), `root-09-m01-security-model-and-securitycontext`
(unchanged), `root-09-m02-serviceaccounts-and-rbac` (Phase 6C: full gold pattern added),
`root-09-m03-network-and-supplychain-security` (Phase 6C: full gold pattern added),
`root-09-m04-cluster-hardening-and-runtime` (Phase 6C: documented exception — survey depth by
design, now anchored by a real security assessment), `root-10-m01-health-probes-and-troubleshooting`
(Phase 6A gold standard; Phase 6C added one optional practice lab), `root-10-m03-troubleshooting-framework`
(Phase 6C: added guided exercise + reflection), `root-12-m01-real-ops-incidents` (Phase 6C:
documented exception — deliberately unguided by design, status promoted with no new activities),
`root-capstone-m01-operate-and-recover` (Phase 6C: documented exception — the capstone exam IS
the module), `root-capstone-m02-capstone-readiness` (unchanged).
**PARTIAL (6, all with a documented pilot disposition in `docs/ROOT_PILOT_CURRICULUM.md`):**
`root-06-m01-deployments-and-workloads`, `root-07-m01-services-and-networking`,
`root-10-m02-general-troubleshooting` (all three: dense practice banks, sibling module in the
same course already carries the taught concept — instructor-led only for the first pilot,
self-paced deferred), `root-08-m01-storage-fundamentals`, `root-08-m02-scheduling-resource-governance`
(ROOT 08 does not gate the capstone; deferred as optional supplementary content this phase),
`root-11-m01-devops-platform-thinking` (honest, lesson-only by design — no hands-on Lab exists
for ROOT 11 yet).
## Duplicate concepts identified (handled explicitly, not silently mapped twice) ## Duplicate concepts identified (handled explicitly, not silently mapped twice)
+118
View File
@@ -0,0 +1,118 @@
# ROOT Pilot Curriculum — Authoritative Manifest
This is the single authoritative answer to "what are we actually teaching in the first paid
pilot." It uses honest READY / PARTIAL / DEFERRED / NOT IN PILOT labels — nothing here is
marketed as more finished than it is. See
[`docs/ROOT_PILOT_READINESS_STANDARD.md`](ROOT_PILOT_READINESS_STANDARD.md) for what READY
means and [`docs/ROOT11_DEVOPS_PLATFORM_SCOPE.md`](ROOT11_DEVOPS_PLATFORM_SCOPE.md) for the
ROOT 11 scope decision referenced below.
## Pilot delivery mode: instructor-led (cohort-based)
The first pilot is scoped as **instructor-led**, not fully self-paced. Every module below that
is marked READY meets the self-paced bar (no "your instructor will explain this" gaps). A
smaller set of modules — flagged explicitly — are READY for instructor-led delivery only,
because they are dense hands-on practice banks whose sibling module in the same course already
carries the taught concept; running them live lets an instructor supply framing a self-paced
student wouldn't get. Fully self-paced delivery of those specific modules is deferred to a
future phase pending an authored teaching layer for each. See Section 16 discussion below.
## Program: ROOT_ (root-kubernetes-foundations)
| Course | Pilot status | Notes |
|---|---|---|
| ROOT 01 Computing & Linux Foundations | **NOT IN PILOT** | Never authored (status `planned`, zero modules). Out of Phase 6C's scope; students are assumed to arrive with basic Linux/CLI comfort for this pilot. |
| ROOT 02 Linux Administration & Networking | **NOT IN PILOT** | Same as above. |
| ROOT 03 Git & Collaborative Development | **NOT IN PILOT** | Same as above. |
| ROOT 04 Containers & Docker | **NOT IN PILOT** | Same as above. |
| ROOT 05 Kubernetes Foundations | **IN PILOT** | See modules below. |
| ROOT 06 Kubernetes Application Workloads | **IN PILOT** | See modules below. |
| ROOT 07 Kubernetes Networking & Configuration | **IN PILOT** | See modules below. |
| ROOT 08 Kubernetes Storage & Scheduling | **DEFERRED — optional supplementary** | Does not gate the capstone (`rootnode-path.json`'s six stages never included storage/scheduling). Both modules remain PARTIAL (lesson+knowledge-check only, no demo/guided/reflection). Offer as optional supplementary content to instructors who want it; do not count it in the pilot's required completion path. |
| ROOT 09 Kubernetes Security | **IN PILOT** | See modules below. |
| ROOT 10 Kubernetes Troubleshooting & Observability | **IN PILOT** | See modules below. |
| ROOT 11 DevOps & Platform Engineering | **IN PILOT — orientation only** | Lesson-only closing module. Hands-on GitOps/CI-CD/IaC/Observability content explicitly deferred; see scope doc. |
| ROOT 12 Real Ops | **IN PILOT** | READY. |
| ROOT Capstone | **IN PILOT** | READY. |
## Module-level detail (courses IN pilot only)
### ROOT 05 — Kubernetes Foundations
| Module | Status | Prerequisite | Outcome | Delivery | Required/Optional | Labs/Assessment |
|---|---|---|---|---|---|---|
| root-05-m00-kubernetes-mental-model | READY | none | Explain desired vs. actual state; run first kubectl commands | Self-paced or instructor-led | 6 required | 1 lab |
| root-05-m01-pods-and-kubectl-basics | READY | m00 | Broad kubectl command fluency (labels, JSONPath, patch, dry-run, etc.) | Self-paced or instructor-led (lesson+reflection added Phase 6C) | 22 required | 20 labs/MCQs |
### ROOT 06 — Kubernetes Application Workloads
| Module | Status | Prerequisite | Outcome | Delivery | Required/Optional | Labs/Assessment |
|---|---|---|---|---|---|---|
| root-06-m02-deployments-scaling-updates | READY | ROOT 05 | Scale and roll out/back Deployments with confidence | Self-paced or instructor-led | 7 required | 1 lab |
| root-06-m03-jobs-cronjobs-daemonsets | READY | m02 | Choose the correct workload primitive for a given job | Self-paced or instructor-led (upgraded Phase 6C) | 7 required | 2 labs |
| root-06-m01-deployments-and-workloads | **PARTIAL — instructor-led only** | ROOT 05 | Deeper Deployment practice bank (8 tasks, no bookending lesson) | **Instructor-led only this pilot**; self-paced deferred | 8 required | 8 labs |
### ROOT 07 — Kubernetes Networking & Configuration
| Module | Status | Prerequisite | Outcome | Delivery | Required/Optional | Labs/Assessment |
|---|---|---|---|---|---|---|
| root-07-m03-services-and-service-discovery | READY | ROOT 06 | Explain Service types and discovery | Self-paced or instructor-led | 6 required | 1 lab |
| root-07-m02-configuration-and-secrets | READY | m03 | Choose ConfigMap vs. Secret vs. env var vs. volume correctly | Self-paced or instructor-led (new lesson/demo/KC/guided/reflection Phase 6C) | 10 required | 5 labs |
| root-07-m04-ingress-networkpolicy-foundations | READY | m02 | Trace request routing through Ingress; plan network isolation | Self-paced or instructor-led (upgraded Phase 6C) | 7 required | 2 labs |
| root-07-m01-services-and-networking | **PARTIAL — instructor-led only** | ROOT 06 | Deeper Services/networking practice bank (4 tasks, no bookending lesson) | **Instructor-led only this pilot**; self-paced deferred | 4 required | 4 labs |
### ROOT 09 — Kubernetes Security
| Module | Status | Prerequisite | Outcome | Delivery | Required/Optional | Labs/Assessment |
|---|---|---|---|---|---|---|
| root-09-m01-security-model-and-securitycontext | READY | ROOT 07 | Harden a Pod's SecurityContext with reasoning, not memorization | Self-paced or instructor-led | 9 required + 3 optional | labs |
| root-09-m02-serviceaccounts-and-rbac | READY | m01 | Write least-privilege RBAC | Self-paced or instructor-led (upgraded Phase 6C) | 10 required + 1 optional | 6 labs |
| root-09-m03-network-and-supplychain-security | READY | m02 | Apply default-deny NetworkPolicy and supply-chain controls | Self-paced or instructor-led (upgraded Phase 6C) | 9 required + 2 optional | 6 labs |
| root-09-m04-cluster-hardening-and-runtime | READY (survey depth, documented exception) | m03 | Survey-level exposure to runtime/cluster hardening topics, checked with a real assessment | Self-paced or instructor-led | 4 required + 2 optional | 4 labs + **RootNode Kubernetes Security Assessment** (9-scenario timed exam) |
### ROOT 10 — Kubernetes Troubleshooting & Observability
| Module | Status | Prerequisite | Outcome | Delivery | Required/Optional | Labs/Assessment |
|---|---|---|---|---|---|---|
| root-10-m01-health-probes-and-troubleshooting | READY | ROOT 09 | Configure and diagnose liveness/readiness probes | Self-paced or instructor-led | 6 required + 1 optional | 1 required lab + 1 optional lab (readiness-probe-task, wired Phase 6C) |
| root-10-m03-troubleshooting-framework | READY | m01 | Apply the seven-step Observe→Evidence→...→Prevent-Recurrence framework to novel failures | Self-paced or instructor-led (upgraded Phase 6C) | 7 required | 2 labs |
| root-10-m02-general-troubleshooting | **PARTIAL — instructor-led only** | m01 | Deeper troubleshooting practice bank (6 tasks, no bookending lesson) | **Instructor-led only this pilot**; self-paced deferred | 6 required | 6 labs |
### ROOT 11 — DevOps & Platform Engineering
| Module | Status | Prerequisite | Outcome | Delivery | Required/Optional | Labs/Assessment |
|---|---|---|---|---|---|---|
| root-11-m01-devops-platform-thinking | PARTIAL (honest, lesson-only by design) | ROOT 10 (course-level gate) | Name DevOps/platform engineering practices already exercised in ROOT 05-10/12; understand what's still missing for GitOps/CI-CD/IaC/observability | Self-paced or instructor-led | 3 required | none — orientation only |
### ROOT 12 — Real Ops
| Module | Status | Prerequisite | Outcome | Delivery | Required/Optional | Labs/Assessment |
|---|---|---|---|---|---|---|
| root-12-m01-real-ops-incidents | READY (documented exception — deliberately unguided by design) | ROOT 10 | Run structured incident response without a hint system | Instructor-led recommended for first exposure; self-paced viable given deliberate design | 6 required | 4 incident labs |
### ROOT Capstone
| Module | Status | Prerequisite | Outcome | Delivery | Required/Optional | Labs/Assessment |
|---|---|---|---|---|---|---|
| root-capstone-m02-capstone-readiness | READY | ROOT 12 | Confirm readiness before attempting the capstone | Self-paced or instructor-led | 4 required | checklist/prep activities |
| root-capstone-m01-operate-and-recover | READY (documented exception — the capstone IS the module) | m02 + capstone unlock gate | Operate and recover a production-like environment under real ops discipline | Instructor-observed recommended | 1 required | capstone exam |
## Instructor prep requirements
Every module marked "instructor-led only" or "instructor-led recommended" above requires the
instructor to have read that module's Instructor Notes section (timing, misconceptions,
discussion prompts) before delivering it live — this content already exists for every upgraded
module (see `docs/ROOT_PILOT_READINESS_STANDARD.md` checklist item 6). No additional
instructor-only prep material was created outside the per-activity Instructor Notes.
## What is intentionally NOT in the first pilot
- ROOT 01-04 (never authored).
- ROOT 08 Kubernetes Storage & Scheduling (non-capstone-gating; both modules remain PARTIAL).
- ROOT 11 modules 2-7 (GitOps, CI/CD, IaC, hands-on Observability, hands-on Reliability) — see
scope doc.
- Fully self-paced delivery of root-06-m01, root-07-m01, and root-10-m02 specifically — these
three run instructor-led in the first pilot; self-paced delivery for exactly these three
modules is deferred pending an authored teaching layer for each.
- `cluster-upgrade-mcq` and `etcd-backup-mcq` (Cluster Administration category) — no current
ROOT module teaches kubeadm-based cluster administration or etcd backup/restore; these two
scenarios stay unwired pending a future Cluster Administration module, not due to neglect.
## Bottom line
Every module the pilot's required completion path depends on (ROOT 05-07, 09-10, 12, Capstone)
meets the READY bar for instructor-led delivery. Three specific modules run instructor-led only
this pilot. ROOT 08 and most of ROOT 11 are explicitly out of the required path. Given that
scope, the pilot curriculum, delivered instructor-led, is ready.
+83
View File
@@ -0,0 +1,83 @@
# ROOT_ Pilot Readiness Standard
Phase 6C §2 — the explicit bar a module must clear to be called READY for the first paid ROOT_
pilot. Extends `docs/COURSE_AUTHORING_STANDARD.md` with a pass/fail checklist rather than
general authoring guidance, and replaces ad hoc judgment calls with a documented rule every
module in `docs/ROOT_PILOT_CURRICULUM.md` is checked against.
## The standard is about sufficiency, not a fixed activity count
Phase 6A/6B's gold-standard pattern (lesson → demonstration → knowledge check → guided exercise
→ lab → reflection) is a strong DEFAULT for an operational skill module, not a mechanical
checklist to force onto every module regardless of subject. The actual test is:
> **Does the learner have enough instruction and scaffolding to reasonably perform the practical
> work, understand why it matters, and check their own understanding — without an instructor
> filling a gap the content itself should have closed?**
A module can be READY with fewer activities if the subject genuinely doesn't need all six. A
module can have all six activities and still not be READY if any of them fails its own bar
below (a "lab" with no framing, a "knowledge check" that only tests recall of the immediately
preceding paragraph).
## The READY checklist
A module is READY only if ALL of the following are true:
1. **Concept instruction exists and is substantive.** A `lesson` (or equivalent) activity
explains the underlying mental model — what problem this solves, how it actually works, what
goes wrong when it's misunderstood — not a restated scenario description or a bullet list of
commands with no explanation of why.
2. **The learner sees the reasoning demonstrated, not just described**, wherever the subject
involves diagnosing or configuring something non-trivial. This can be a `demonstration`
activity, OR — for a purely conceptual/orientation module where there's nothing to
diagnose — folded into the lesson itself with a worked example. A module that skips this
entirely for an operational/troubleshooting subject is not READY.
3. **The learner can check their own understanding** before attempting independent work — a
`knowledge_check` (or, for an orientation module with no lab, a reflection that serves the
same self-check purpose) that tests INTERPRETATION and REASONING (see
`docs/COURSE_AUTHORING_STANDARD.md` §9's examples), not trivia.
4. **The learner is not dropped into a lab cold.** Where a `lab` activity exists, either a
`guided_exercise` bridges lesson to lab, OR the lesson/demonstration already gave the learner
everything they need to attempt the lab's specific task without guessing at the mechanism
being tested. A bare lab reference with a one-line "go do this" intro and no prior teaching
of the concept it tests is NOT READY, regardless of how good the lab's own hints are — Labs
are the laboratory, not the whole course (Phase 6A's own founding principle).
5. **The module closes with operational context**, where the subject has real production
consequences — a `reflection` connecting what was practiced to why it matters beyond passing
validation (see `docs/COURSE_AUTHORING_STANDARD.md` §15's Real Ops takeaway examples). A
purely conceptual orientation module (e.g. Capstone Readiness) may satisfy this through its
own closing content rather than a separate reflection activity.
6. **Instructor notes exist wherever a live class would benefit from them** — at minimum on the
lesson and any demonstration/guided-exercise activity: timing, a likely misconception, and
(for a demonstration) a demo plan. Not required on every activity type (a bare lab activity
with no `content_path` has nothing to attach notes to).
7. **Self-paced sufficiency**: nothing in the module says or implies "your instructor will
explain this" for content available to self-paced students. If an activity is genuinely
instructor-only (rare in this content model — everything self-paced students can reach uses
the same file), it must be excluded from self-paced delivery structurally, not by a
disclaimer.
8. **Every reference resolves** — `scenario_id` points at a real scenario file,
`assessment_definition_id` at a real definition, `content_path` at a real file that actually
loads (`infra/scripts/validate-course-content.js` proves this mechanically; a human read-
through confirms the CONTENT itself, not just that the file exists).
## What does NOT make a module READY
- Having a `lab` activity. A scenario reference is necessary, never sufficient.
- Having headings that look like a lesson. Prose volume is not instruction quality.
- Existing in the database with `status = 'ready'`. That field is the AUTHOR's claim — this
document is the actual bar it's checked against, and `docs/ROOT_PILOT_CURRICULUM.md` is where
every claim gets verified against this checklist by a human, not just by the field's value.
- Passing `e2e-phase6c.js`'s structural checks alone. Automated tests prove the DATA MODEL is
correct (references resolve, completion derives correctly) — they cannot judge whether a
lesson's explanation is actually good. That judgment is made once, explicitly, per module,
and recorded in the pilot manifest.
## DEFERRED / NOT IN PILOT is not a failure
A module that doesn't meet this bar is not a defect to apologize for — it's an honest status.
`docs/ROOT_PILOT_CURRICULUM.md` uses DEFERRED (real content exists, not yet pilot-quality) and
NOT IN PILOT (deliberately excluded — e.g. ROOT 01-04, most of ROOT 11) as first-class,
legitimate outcomes. Marking something READY that isn't is a worse outcome than an honestly
smaller pilot.