Files
rootnode-academy/docs/PHASE6F_ROOT_V1_PILOT_READINESS.md
T
ced4568andClaude Sonnet 5 d066410451
Release to Docker Hub / Build & Push Docker Image (push) Canceled after 0s
Release to Docker Hub / Create GitHub Release (push) Canceled after 0s
docs(phase6f): document ROOT_ V1 pilot readiness
New: PHASE6F_ROOT_V1_PILOT_READINESS.md (phase summary), ROOT_V1_CURRICULUM_MANIFEST.md
(canonical V1 scope), ROOT_V1_PREREQUISITE_MAP.md, ROOT_V1_ASSESSMENT_MAP.md,
ROOT_V1_SYLLABUS.md, ROOT_V1_INSTRUCTOR_GUIDE.md, ROOT_V1_STUDENT_REQUIREMENTS.md,
ROOT_V1_INSTRUCTOR_LED_PILOT.md, WINTER_BREAK_CAMP_CURRICULUM_OPTIONS.md.

Updated: ROOT_PROGRAM_ARCHITECTURE.md (course-sequence table reflects real V1 statuses),
ROOT_PILOT_CURRICULUM.md (self-paced-readiness correction), ROOT_PROGRAM_DURATION_MODEL.md
(real post-integration totals: 64.2 V1 hours / 68.3 program-wide), ROOT_CAPSTONE_READINESS.md
(§1b, the new root-09 course-layer gate), platform/README.md (test list).

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-26 18:33:46 -05:00

186 lines
12 KiB
Markdown

# Phase 6F — ROOT_ V1 Curriculum Integration & Pilot Readiness
Phase 6F's mission: not more curriculum breadth, but integration, polish, and full-program QA —
answering, with evidence, "could RootNode Academy responsibly enroll a real student into ROOT_ V1
and take them through the intended learning journey?"
## Baseline verification
Confirmed at start: branch `main`, clean tree, HEAD = `origin/main` = Phase 6E's
`87ad1251ce4aee8597ef29a446e44b1247d68b1c`. Content validation: 0 errors, 13 courses, 48
modules, 312 activities, 126 scenario files — matching Phase 6E's own final numbers exactly.
## ROOT_ V1 scope — defined in `docs/ROOT_V1_CURRICULUM_MANIFEST.md`
12 of 13 existing courses are in V1 (all genuinely READY except ROOT 11, intentionally PARTIAL as
a single bonus orientation module). ROOT 08 is excluded (`visibility=draft`). See that document
for the full course-by-course table, and `docs/ROOT_V1_PREREQUISITE_MAP.md` /
`docs/ROOT_V1_ASSESSMENT_MAP.md` for the prerequisite graph and assessment coverage.
## The central integration finding: three "instructor-led-only" modules are load-bearing for the legacy Capstone gate
Auditing Phase 6E's own flagged limitation (three bare practice-bank modules) against the
pre-existing `rootnode-path.json` Capstone `unlock_rule` found their scenario_ids are not
generic extra practice — they are the *literal* content of three of its six gating stages. An
initial attempt to reclassify them `is_required=false` was caught and reverted before commit
(see `030_phase6f_capstone_gate_correction.sql`'s own header) once this was understood, in favor
of giving each a short, real intro-lesson activity instead — closing the self-paced gap without
touching the legacy gate's actual requirements. Full detail in
`docs/ROOT_V1_CURRICULUM_MANIFEST.md`.
A second, similar discovery came out of the end-to-end rehearsal (see below): the SAME legacy
gate also requires two scenarios (`services-mcq`, and all 5 of `root-07-m02`'s configuration
scenarios) that are not course-content-model prerequisites of anything on the path to
`root-capstone`. A student could reach "root-capstone unlocked" at the course layer while the
underlying assessment start route still 403s for an unrelated reason. **This is a real,
pre-existing gap, not introduced by Phase 6F** — flagged as a known limitation below rather than
fixed, since closing it is a real product decision (add root-07 as a course-layer Capstone
prerequisite, or extend the legacy stage list) that Phase 6F's mandate doesn't unilaterally make.
## Course-level status audit correction
`courses.status` had drifted stale for ROOT 05, 06, 07, 09, 10, 12, and Capstone — every module
in each had already reached real `ready` content in an earlier phase, but the course-level field
was never bumped. Corrected in `029_phase6f_root_v1_integration.sql`, verified against the live
module-level data, not assumed from prior phase reports.
## Capstone gate strengthened (Step 7)
`root-capstone.prerequisites` now also requires `root-09-kubernetes-security`, alongside the
pre-existing `root-12-real-ops` — the Capstone's own scenario pool has zero security-scenario
overlap, and ROOT 09 only reached genuine READY status this same phase. The pre-existing
six-stage legacy gate was deliberately left unchanged. See `docs/ROOT_CAPSTONE_READINESS.md` §1b
and `031_phase6f_capstone_security_prerequisite.sql`.
## ROOT_ V1 program + Lab orientation (new)
No orientation content existed anywhere before this phase. Added `root-01-m00-welcome-to-root`
— a new required front-door module (program overview, the Learn/Practice/Lab/Troubleshoot/
Validate loop, self-paced vs. instructor-led, assessments/Capstone, and a full Lab-lifecycle
orientation covering disposability, hints, reset, and help-requests) — sequenced before what was
previously ROOT 01's first module. See `032_phase6f_root_v1_orientation.sql`.
## Cascading regression fallout from these real changes
Every genuine content/schema change this phase (the orientation module, the three practice-bank
intro lessons, the new Capstone prerequisite) shifted real completion sequences that Phase 6A-6E's
own e2e suites and rehearsal scripts had hardcoded. Found and fixed, each with the underlying gap
named explicitly in a code comment: resume-pointer assertions in `e2e-phase6a/6b/6d/6e.js` and
`test-phase6d-foundations-rehearsal.js`/`test-phase6e-foundations-rehearsal.js`; missing new
intro-lesson completions in `foundations-helper.js`'s `completeThroughRoot06`/`completeThroughRoot10`
and in `e2e-phase6a.js`/`e2e-phase6b.js`'s own inline completion sequences; a stale course-status
assertion in `e2e-phase6b.js`; a draft-activity-visibility test in `e2e-phase6b.js` that had
targeted the now-fully-excluded ROOT 08 (repointed at ROOT 09); and a new completion chain
(root-07-m03/m04, all of ROOT 09) added to `e2e-phase6b.js`'s `bypass` student flow, now needed
because `root-capstone` gates on ROOT 09 too. None were platform bugs — every one was a stale
test assumption the newly-added/changed content revealed, the same pattern Phase 6E established.
## Testing
`platform/test/e2e-phase6f.js` — 17/17 passing (fresh stack): V1 manifest/status correctness,
ROOT 08 exclusion (both DB-level and student-visibility), no cycles/missing prerequisite nodes,
ROOT 01-04 re-verified ready, the new orientation module's unlock behavior, optional-activity
handling under the full Capstone-eligible chain, the strengthened Capstone gate in both
directions (locked with only ROOT 12 done; unlocked once ROOT 09 is also done; direct-API bypass
still rejected), version-bump content stability, instructor-notes RBAC (including on locked, not
just draft, content), cross-student isolation, full V1 course-list completeness for a fresh
enrollment, logout/login persistence, and an explicit age-independence check (no age/grade column
exists on `students`, enrollment never asks for one).
## Multi-student pilot rehearsal
`infra/scripts/drills/test-phase6f-root-v1-pilot.js` — 22/22 passing against a real, freshly-built
stack: a real cohort + live classroom session with three students in genuinely different states —
Student A on track (real manual-marker progression), Student B hitting a REAL Lab validation
failure, sending a real Need Help request, the instructor seeing and acknowledging it live, then
Student B genuinely fixing the failure with real shell commands and passing for real; Student C
having their real disposable Lab reaped mid-task via a real admin destroy (simulating an idle-
reaper event), confirming their academic progress survived intact, then recreating a fresh Lab
and resuming the same task. Instructor visibility distinguishes all three states; cross-student
isolation confirmed with real, not assumed, evidence (A's manual-marker progress vs. B's
Lab-only progress).
## End-to-end ROOT_ V1 rehearsal
`infra/scripts/drills/test-phase6f-root-v1-end-to-end.js` — 14/14 passing: one real student,
entirely through the real student API (no admin shortcut, no direct database completion write),
progressing ROOT 01→02→03→04 (via the established foundations helper) →05→06→09→10→12→
Capstone-eligible, with a genuine real-Lab checkpoint (a real nested-Docker container-networking
diagnose-and-fix, re-proven live on this specific student rather than assumed from an earlier
phase's rehearsal). Confirms direct API cannot skip ahead at the ROOT 06→09/10/12/Capstone
boundary. Ends with the real `rootnode-capstone` assessment genuinely `201`-startable — the
strongest possible proof the full V1 pathway is real, not merely "the course tree says complete."
## Regression
Full fresh-stack reruns after every fix: 6A (23/23), 6B (26/26), 6C (17/17), 6D (21/21), 6E
(23/23), 6F (17/17) — all green, each run against its own freshly-reset stack per the established
convention. `git diff` for this phase touches migrations/content/tests/docs only — no
`platform/api/src` application-code change was needed (unlike Phase 6E, which needed exactly
one). Phase 5A/5B/5C were not re-run: this phase's classroom/help-request/environment-destroy
usage (in the multi-student rehearsal) exercises routes those suites already cover, and no code
in `classroom.js`/`enrollment.js`/`notifications.js` was touched.
## Frontend, Lab image, nested Docker, k3s
Frontend: `npm run build` clean, no code changes this phase (content/schema only). Lab image:
rebuilt for every fresh-stack test/rehearsal run this phase; standalone Lab boot and real bash
task completion proven in the multi-student rehearsal (Students A/B/C); nested Docker proven in
both the end-to-end rehearsal's real container-networking fix and the earlier ROOT 04 content
itself; k3s health reconfirmed unaffected (the Phase 6E rehearsal's own k3s-health assertion was
rerun fresh, post-Phase-6F-migrations, and still passes).
## Resource observations (development-environment only, not production capacity numbers)
Real Lab boot-to-ready during rehearsals: consistently well under the existing dev-stack norm
established in Phase 6D/6E (no regression from added content — content changes don't touch Lab
boot code). Three concurrent student Labs in the multi-student rehearsal (A idle, B and C active
simultaneously) provisioned and ran without contention on a single dev host. No anomalies,
crashes, or resource exhaustion observed. These are qualitative development-environment
observations only — real capacity planning remains the dedicated production-server benchmark's
job, unchanged from every prior phase's own caveat.
## New application code and why
None. Every V1 integration requirement (orientation content, practice-bank framing, the
Capstone/ROOT 09 edge, the stale-status correction, the ROOT 08 exclusion) was satisfiable with
the existing `courses`/`course_modules`/`module_activities` schema and the existing `visibility`/
`status`/`is_required`/`prerequisites` mechanisms — consistent with this phase's own "integrate,
don't build" mandate.
## Documentation
New: `ROOT_V1_CURRICULUM_MANIFEST.md`, `ROOT_V1_PREREQUISITE_MAP.md`, `ROOT_V1_ASSESSMENT_MAP.md`,
`ROOT_V1_SYLLABUS.md`, `ROOT_V1_INSTRUCTOR_GUIDE.md`, `ROOT_V1_STUDENT_REQUIREMENTS.md`,
`ROOT_V1_INSTRUCTOR_LED_PILOT.md`, `WINTER_BREAK_CAMP_CURRICULUM_OPTIONS.md`, this document.
Updated: `ROOT_PROGRAM_ARCHITECTURE.md` (course-sequence table, prerequisite-chain notes),
`ROOT_PILOT_CURRICULUM.md` (self-paced-readiness correction), `ROOT_PROGRAM_DURATION_MODEL.md`
(real post-integration totals), `ROOT_CAPSTONE_READINESS.md` (§1b, the new third gate).
Reviewed, no change needed: `ROOT_FOUNDATIONS_PILOT_READINESS.md`, `COURSE_AUTHORING_STANDARD.md`,
`ENGINEERING_SOP.md`, `REMOTE_AND_SELF_PACED_ARCHITECTURE.md`, `platform/README.md`'s
architecture sections (its test list was updated — see below).
## Known limitations
- **The legacy six-stage Capstone unlock_rule and the course-layer prerequisite chain are not
fully congruent**: `root-07-m01`'s `services-mcq` and all 5 of `root-07-m02`'s configuration
scenarios gate the legacy assessment-start route but are not course-layer prerequisites of
anything on the path to `root-capstone`. Found via this phase's own end-to-end rehearsal;
documented, not fixed — closing it is a real product decision (extend the legacy stage list,
or add ROOT 07 as a course-layer Capstone prerequisite) outside a "polish and integrate" phase.
- ROOT 11's remaining six modules (CI/CD, GitOps, IaC) require lab infrastructure not yet built —
unchanged, explicitly out of scope again this phase.
- Instructor-led vs. self-paced timing remains prose in Instructor Notes, not a database field —
unchanged from every prior phase.
- No placement testing or instructor-override UI — explicitly out of scope; the age-independence
requirement (Step 29) is satisfied architecturally (no age/grade column, no age-based gate
anywhere in enrollment) rather than through a placement mechanism, since none was authorized.
## Recommended Phase 7 scope
Phase 7 is explicitly the business/product architecture layer per this phase's own authorization
— formalizing the INIT_/COMPILE_/ROOT_/BOOTCAMP_ family model, delivery-mode separation from
curriculum, and (informed by `docs/WINTER_BREAK_CAMP_CURRICULUM_OPTIONS.md`) whatever camp/
registration/payment platform work the business decides to build around ROOT_ V1's now-proven
Option A (Linux & Systems Foundations Camp) as a first commercial offering.