feat(root02): author Linux Administration & Networking
Adds all 6 ROOT 02 modules (Linux system administration, storage & filesystems, the Networking Mental Model, Linux network inspection, DNS & HTTP, Linux troubleshooting) — 37 activities, each with a real lesson, demonstration/guided exercise, knowledge check, hands-on Lab, and reflection. The Networking Mental Model module (M3) gets deliberately extra depth per its "critical module" designation, with no lab by design — conceptual mastery via knowledge check and guided exercise, matching root-05-m00's own precedent. Adds 6 new hands-on Linux/networking scenarios plus 2 MCQs: linux-service-inspection (inspects the platform's own real nginx without touching it — a genuinely safe, real service-inspection target that avoids ever risking the Lab's own connectivity), linux-service-lifecycle (start/ verify/stop a fully controllable service), linux-storage-inspection, linux-network-inspection (ip/ss/getent/curl, each framed as answering one specific diagnostic question), linux-dns-http-diagnosis (a genuine DNS-resolves-but-wrong-port failure, diagnosed and fixed), and linux-troubleshooting-framework (a real missing-config-file failure, resolved via the RootNode Observe/Evidence/Hypothesis/Test/Repair/Validate/Prevent framework). All tested end-to-end via the real scenario-validation API, including negative tests confirming they fail when unsolved. Wires rootnode-linux-networking-assessment (2 required + 4 random-draw scenarios) using the existing Phase 3B assessment engine. Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
@@ -0,0 +1,136 @@
|
||||
-- Phase 6E — ROOT 02: Linux Administration & Networking. Adds 6 modules/activities under the
|
||||
-- existing (PLANNED, zero-content) root-02-linux-administration-networking course row. Every
|
||||
-- lab activity references a NEW scenario file using the existing generic scenario/validation
|
||||
-- engine (docs/ROOT_FOUNDATIONS_LAB_STRATEGY.md §1) — no new mechanism. Module 3 (Networking
|
||||
-- Mental Model) has no lab activity by design — a conceptual module earns READY through
|
||||
-- demonstrated reasoning (its knowledge check and guided exercise), matching root-05-m00's own
|
||||
-- precedent — not a forced lab.
|
||||
|
||||
UPDATE courses SET
|
||||
status = 'ready',
|
||||
objectives = '{"Answer what is running/who started it/where is its config/where are its logs for a real service","Distinguish persistent from temporary storage and measure real disk usage","Explain the host-to-application networking chain and reason about where a failure lives","Use ip/ss/getent/curl to answer specific diagnostic questions","Categorize a request failure as DNS, routing, TCP, or application","Apply the RootNode troubleshooting framework to a real Linux failure"}',
|
||||
updated_at = now()
|
||||
WHERE course_id = 'root-02-linux-administration-networking';
|
||||
|
||||
INSERT INTO course_modules (module_id, course_id, title, description, sequence, objectives, prerequisites, estimated_duration_minutes, status) VALUES
|
||||
('root-02-m01-linux-system-administration', 'root-02-linux-administration-networking', 'Linux System Administration',
|
||||
'The five-question service checklist (running/started-by/config/logs/verify), applied to a real running service. Target learner: has completed ROOT 01.',
|
||||
1, '{"Inspect a real service''s process, config, and logs","Start, verify, and stop a service you control","Explain why this Lab has no systemd, and why the concepts transfer anyway"}', '{}', 45, 'ready'),
|
||||
('root-02-m02-storage-and-filesystems', 'root-02-linux-administration-networking', 'Storage & Filesystems',
|
||||
'Block devices, mounts, and the persistent-vs-temporary distinction that carries into ROOT 04''s volumes and Kubernetes storage.',
|
||||
2, '{"Distinguish df from du and use both correctly","Explain persistent vs. temporary storage","Find the real consumer of disk space in a directory tree"}', '{root-02-m01-linux-system-administration}', 40, 'ready'),
|
||||
('root-02-m03-networking-mental-model', 'root-02-linux-administration-networking', 'Networking Mental Model',
|
||||
'THE critical module of ROOT 02: the host-to-application networking chain, and operational reasoning about where a failure lives. No lab — conceptual mastery via demonstrated reasoning.',
|
||||
3, '{"Walk the full host-interface-IP-subnet-gateway-routing-DNS-port-TCP/UDP-application chain","Distinguish DNS, routing, TCP, and application failure signatures","Explain 0.0.0.0 and 127.0.0.1 correctly"}', '{root-02-m02-storage-and-filesystems}', 55, 'ready'),
|
||||
('root-02-m04-linux-network-inspection', 'root-02-linux-administration-networking', 'Linux Network Inspection',
|
||||
'The Networking Mental Model made hands-on: ip, ss, getent, curl, each framed as answering one specific question.',
|
||||
4, '{"Use ip addr/ip route to answer address and routing questions","Use ss to find listening ports","Use getent hosts and curl to test resolution and application reachability"}', '{root-02-m03-networking-mental-model}', 45, 'ready'),
|
||||
('root-02-m05-dns-and-http', 'root-02-linux-administration-networking', 'DNS & HTTP',
|
||||
'The complete request path end to end, and the four-category failure taxonomy (DNS/routing/TCP/application).',
|
||||
5, '{"Walk the complete DNS-to-HTTP-response request path","Categorize a failure as DNS, routing/connection, TCP, or application","Diagnose and fix a real port-mismatch failure"}', '{root-02-m04-linux-network-inspection}', 45, 'ready'),
|
||||
('root-02-m06-linux-troubleshooting', 'root-02-linux-administration-networking', 'Linux Troubleshooting',
|
||||
'The RootNode troubleshooting framework (Observe/Evidence/Hypothesis/Test/Repair/Validate/Prevent), applied to a real broken-startup-script failure.',
|
||||
6, '{"Apply the 7-step troubleshooting framework in strict order","Diagnose a real failure from its own error output","Name a real prevention step, not just a fix"}', '{root-02-m05-dns-and-http}', 45, 'ready')
|
||||
ON CONFLICT (module_id) DO NOTHING;
|
||||
|
||||
INSERT INTO module_activities (activity_id, module_id, sequence, activity_type, title, content_path, scenario_id, assessment_definition_id, completion_behavior, estimated_duration_minutes, status) VALUES
|
||||
-- M01 (2 labs)
|
||||
('root-02-m01-a01-lesson', 'root-02-m01-linux-system-administration', 1, 'lesson', 'Linux System Administration',
|
||||
'content/root/root-02-linux-administration-networking/m01-linux-system-administration/01-lesson-linux-system-administration.md', NULL, NULL, 'manual_marker', 15, 'ready'),
|
||||
('root-02-m01-a02-demonstration', 'root-02-m01-linux-system-administration', 2, 'demonstration', 'Demonstration: Answering the Five Questions For Real',
|
||||
'content/root/root-02-linux-administration-networking/m01-linux-system-administration/02-demonstration-inspecting-a-real-service.md', NULL, NULL, 'manual_marker', 8, 'ready'),
|
||||
('root-02-m01-a03-knowledge-check', 'root-02-m01-linux-system-administration', 3, 'knowledge_check', 'Knowledge Check: Linux System Administration',
|
||||
'content/root/root-02-linux-administration-networking/m01-linux-system-administration/03-knowledge-check.md', NULL, NULL, 'manual_marker', 5, 'ready'),
|
||||
('root-02-m01-a04-guided-exercise', 'root-02-m01-linux-system-administration', 4, 'guided_exercise', 'Guided Exercise: Plan Your Inspection Before You Type Anything',
|
||||
'content/root/root-02-linux-administration-networking/m01-linux-system-administration/04-guided-exercise-planning-your-inspection.md', NULL, NULL, 'manual_marker', 8, 'ready'),
|
||||
('root-02-m01-a05-lab-service-inspection', 'root-02-m01-linux-system-administration', 5, 'lab', 'Lab: Inspect a Real Running Service',
|
||||
NULL, 'linux-service-inspection', NULL, 'auto_scenario', 10, 'ready'),
|
||||
('root-02-m01-a06-lab-service-lifecycle', 'root-02-m01-linux-system-administration', 6, 'lab', 'Lab: Start, Verify, and Stop a Service',
|
||||
NULL, 'linux-service-lifecycle', NULL, 'auto_scenario', 10, 'ready'),
|
||||
('root-02-m01-a07-reflection', 'root-02-m01-linux-system-administration', 7, 'reflection', 'Reflection: You Now Have a Repeatable Checklist',
|
||||
'content/root/root-02-linux-administration-networking/m01-linux-system-administration/05-reflection.md', NULL, NULL, 'manual_marker', 8, 'ready'),
|
||||
-- M02
|
||||
('root-02-m02-a01-lesson', 'root-02-m02-storage-and-filesystems', 1, 'lesson', 'Storage and Filesystems',
|
||||
'content/root/root-02-linux-administration-networking/m02-storage-and-filesystems/01-lesson-storage-and-filesystems.md', NULL, NULL, 'manual_marker', 12, 'ready'),
|
||||
('root-02-m02-a02-demonstration', 'root-02-m02-storage-and-filesystems', 2, 'demonstration', 'Demonstration: Two Different Questions, Two Different Commands',
|
||||
'content/root/root-02-linux-administration-networking/m02-storage-and-filesystems/02-demonstration-df-vs-du.md', NULL, NULL, 'manual_marker', 8, 'ready'),
|
||||
('root-02-m02-a03-knowledge-check', 'root-02-m02-storage-and-filesystems', 3, 'knowledge_check', 'Knowledge Check: Storage and Filesystems',
|
||||
'content/root/root-02-linux-administration-networking/m02-storage-and-filesystems/03-knowledge-check.md', NULL, NULL, 'manual_marker', 5, 'ready'),
|
||||
('root-02-m02-a04-guided-exercise', 'root-02-m02-storage-and-filesystems', 4, 'guided_exercise', 'Guided Exercise: Narrow Down a Disk Problem on Paper',
|
||||
'content/root/root-02-linux-administration-networking/m02-storage-and-filesystems/04-guided-exercise-narrowing-down-usage.md', NULL, NULL, 'manual_marker', 8, 'ready'),
|
||||
('root-02-m02-a05-lab-storage-inspection', 'root-02-m02-storage-and-filesystems', 5, 'lab', 'Lab: Find What''s Actually Using the Disk',
|
||||
NULL, 'linux-storage-inspection', NULL, 'auto_scenario', 10, 'ready'),
|
||||
('root-02-m02-a06-reflection', 'root-02-m02-storage-and-filesystems', 6, 'reflection', 'Reflection: "It''s Probably the Logs" Is a Guess, Not a Diagnosis',
|
||||
'content/root/root-02-linux-administration-networking/m02-storage-and-filesystems/05-reflection.md', NULL, NULL, 'manual_marker', 8, 'ready'),
|
||||
-- M03 (no lab)
|
||||
('root-02-m03-a01-lesson', 'root-02-m03-networking-mental-model', 1, 'lesson', 'Networking Mental Model',
|
||||
'content/root/root-02-linux-administration-networking/m03-networking-mental-model/01-lesson-networking-mental-model.md', NULL, NULL, 'manual_marker', 25, 'ready'),
|
||||
('root-02-m03-a02-demonstration', 'root-02-m03-networking-mental-model', 2, 'demonstration', 'Demonstration: Three Failures That Sound Similar But Aren''t',
|
||||
'content/root/root-02-linux-administration-networking/m03-networking-mental-model/02-demonstration-three-failure-signatures.md', NULL, NULL, 'manual_marker', 10, 'ready'),
|
||||
('root-02-m03-a03-knowledge-check', 'root-02-m03-networking-mental-model', 3, 'knowledge_check', 'Knowledge Check: Networking Mental Model',
|
||||
'content/root/root-02-linux-administration-networking/m03-networking-mental-model/03-knowledge-check.md', NULL, NULL, 'manual_marker', 8, 'ready'),
|
||||
('root-02-m03-a04-guided-exercise', 'root-02-m03-networking-mental-model', 4, 'guided_exercise', 'Guided Exercise: Diagnose From the Symptom Alone',
|
||||
'content/root/root-02-linux-administration-networking/m03-networking-mental-model/04-guided-exercise-diagnosing-from-symptoms-alone.md', NULL, NULL, 'manual_marker', 12, 'ready'),
|
||||
('root-02-m03-a05-reflection', 'root-02-m03-networking-mental-model', 5, 'reflection', 'Reflection: One Model, Reused Everywhere From Here On',
|
||||
'content/root/root-02-linux-administration-networking/m03-networking-mental-model/05-reflection.md', NULL, NULL, 'manual_marker', 8, 'ready'),
|
||||
-- M04
|
||||
('root-02-m04-a01-lesson', 'root-02-m04-linux-network-inspection', 1, 'lesson', 'Linux Network Inspection',
|
||||
'content/root/root-02-linux-administration-networking/m04-linux-network-inspection/01-lesson-linux-network-inspection.md', NULL, NULL, 'manual_marker', 15, 'ready'),
|
||||
('root-02-m04-a02-demonstration', 'root-02-m04-linux-network-inspection', 2, 'demonstration', 'Demonstration: The Same Five Questions, Answered Live',
|
||||
'content/root/root-02-linux-administration-networking/m04-linux-network-inspection/02-demonstration-five-commands-five-questions.md', NULL, NULL, 'manual_marker', 8, 'ready'),
|
||||
('root-02-m04-a03-knowledge-check', 'root-02-m04-linux-network-inspection', 3, 'knowledge_check', 'Knowledge Check: Linux Network Inspection',
|
||||
'content/root/root-02-linux-administration-networking/m04-linux-network-inspection/03-knowledge-check.md', NULL, NULL, 'manual_marker', 5, 'ready'),
|
||||
('root-02-m04-a04-guided-exercise', 'root-02-m04-linux-network-inspection', 4, 'guided_exercise', 'Guided Exercise: Which Command Answers This Question?',
|
||||
'content/root/root-02-linux-administration-networking/m04-linux-network-inspection/04-guided-exercise-choosing-the-right-command.md', NULL, NULL, 'manual_marker', 8, 'ready'),
|
||||
('root-02-m04-a05-lab-network-inspection', 'root-02-m04-linux-network-inspection', 5, 'lab', 'Lab: Answer Three Real Questions With Three Real Commands',
|
||||
NULL, 'linux-network-inspection', NULL, 'auto_scenario', 10, 'ready'),
|
||||
('root-02-m04-a06-reflection', 'root-02-m04-linux-network-inspection', 6, 'reflection', 'Reflection: Five Commands, Five Answers, One Diagnosis',
|
||||
'content/root/root-02-linux-administration-networking/m04-linux-network-inspection/05-reflection.md', NULL, NULL, 'manual_marker', 8, 'ready'),
|
||||
-- M05
|
||||
('root-02-m05-a01-lesson', 'root-02-m05-dns-and-http', 1, 'lesson', 'DNS and HTTP',
|
||||
'content/root/root-02-linux-administration-networking/m05-dns-and-http/01-lesson-dns-and-http.md', NULL, NULL, 'manual_marker', 15, 'ready'),
|
||||
('root-02-m05-a02-demonstration', 'root-02-m05-dns-and-http', 2, 'demonstration', 'Demonstration: Walking the Complete Path, Layer by Layer',
|
||||
'content/root/root-02-linux-administration-networking/m05-dns-and-http/02-demonstration-walking-the-full-path.md', NULL, NULL, 'manual_marker', 8, 'ready'),
|
||||
('root-02-m05-a03-knowledge-check', 'root-02-m05-dns-and-http', 3, 'knowledge_check', 'Knowledge Check: DNS and HTTP',
|
||||
'content/root/root-02-linux-administration-networking/m05-dns-and-http/03-knowledge-check.md', NULL, NULL, 'manual_marker', 5, 'ready'),
|
||||
('root-02-m05-a04-guided-exercise', 'root-02-m05-dns-and-http', 4, 'guided_exercise', 'Guided Exercise: Categorize the Failure Before You Fix It',
|
||||
'content/root/root-02-linux-administration-networking/m05-dns-and-http/04-guided-exercise-categorizing-real-failures.md', NULL, NULL, 'manual_marker', 10, 'ready'),
|
||||
('root-02-m05-a05-lab-dns-http-diagnosis', 'root-02-m05-dns-and-http', 5, 'lab', 'Lab: DNS Resolves, But the Connection Still Fails — Why?',
|
||||
NULL, 'linux-dns-http-diagnosis', NULL, 'auto_scenario', 12, 'ready'),
|
||||
('root-02-m05-a06-reflection', 'root-02-m05-dns-and-http', 6, 'reflection', 'Reflection: You Fixed the Real Problem, Not the Suspected One',
|
||||
'content/root/root-02-linux-administration-networking/m05-dns-and-http/05-reflection.md', NULL, NULL, 'manual_marker', 8, 'ready'),
|
||||
-- M06
|
||||
('root-02-m06-a01-lesson', 'root-02-m06-linux-troubleshooting', 1, 'lesson', 'Linux Troubleshooting',
|
||||
'content/root/root-02-linux-administration-networking/m06-linux-troubleshooting/01-lesson-linux-troubleshooting.md', NULL, NULL, 'manual_marker', 15, 'ready'),
|
||||
('root-02-m06-a02-demonstration', 'root-02-m06-linux-troubleshooting', 2, 'demonstration', 'Demonstration: Every Step, In Order, On a Real Failure',
|
||||
'content/root/root-02-linux-administration-networking/m06-linux-troubleshooting/02-demonstration-the-framework-in-order.md', NULL, NULL, 'manual_marker', 10, 'ready'),
|
||||
('root-02-m06-a03-knowledge-check', 'root-02-m06-linux-troubleshooting', 3, 'knowledge_check', 'Knowledge Check: Linux Troubleshooting',
|
||||
'content/root/root-02-linux-administration-networking/m06-linux-troubleshooting/03-knowledge-check.md', NULL, NULL, 'manual_marker', 5, 'ready'),
|
||||
('root-02-m06-a04-guided-exercise', 'root-02-m06-linux-troubleshooting', 4, 'guided_exercise', 'Guided Exercise: Write Your Hypothesis Before You Look at the Answer',
|
||||
'content/root/root-02-linux-administration-networking/m06-linux-troubleshooting/04-guided-exercise-writing-your-hypothesis-first.md', NULL, NULL, 'manual_marker', 10, 'ready'),
|
||||
('root-02-m06-a05-lab-troubleshooting-framework', 'root-02-m06-linux-troubleshooting', 5, 'lab', 'Lab: A Service Won''t Start — Apply the Framework, Don''t Just Guess',
|
||||
NULL, 'linux-troubleshooting-framework', NULL, 'auto_scenario', 15, 'ready'),
|
||||
('root-02-m06-a06-reflection', 'root-02-m06-linux-troubleshooting', 6, 'reflection', 'Reflection: This Is the Same Framework You''ll Use for the Rest of ROOT_',
|
||||
'content/root/root-02-linux-administration-networking/m06-linux-troubleshooting/05-reflection.md', NULL, NULL, 'manual_marker', 8, 'ready')
|
||||
ON CONFLICT (activity_id) DO NOTHING;
|
||||
|
||||
-- ═══════════════════════════════════════════════════════════════════════════════════════════
|
||||
-- ROOT 02 course assessment — mixes real state-validation tasks with knowledge-recall MCQs
|
||||
-- reasoning about service state and failure-layer diagnosis, via the existing Phase 3B engine.
|
||||
-- ═══════════════════════════════════════════════════════════════════════════════════════════
|
||||
INSERT INTO assessment_definitions (assessment_definition_id, type, title, description, duration_minutes, hint_policy, pool_spec, completion_rule)
|
||||
VALUES (
|
||||
'rootnode-linux-networking-assessment', 'exam', 'ROOT 02 Linux Administration & Networking Assessment',
|
||||
'A timed check across service administration, storage, networking diagnosis, and the troubleshooting framework — combining real state-validation tasks with conceptual reasoning questions.',
|
||||
35, 'disabled',
|
||||
'{"required": ["linux-network-inspection", "linux-troubleshooting-framework"],
|
||||
"random": [
|
||||
{"count":2,"from":["linux-service-inspection","linux-service-lifecycle","linux-storage-inspection","linux-dns-http-diagnosis"]},
|
||||
{"count":2,"from":["linux-troubleshooting-order-mcq","linux-service-state-mcq"]}
|
||||
]}',
|
||||
'{"type":"all_scenarios_passed"}'
|
||||
) ON CONFLICT (assessment_definition_id) DO NOTHING;
|
||||
|
||||
INSERT INTO module_activities (activity_id, module_id, sequence, activity_type, title, content_path, scenario_id, assessment_definition_id, completion_behavior, estimated_duration_minutes, status) VALUES
|
||||
('root-02-m06-a07-assessment', 'root-02-m06-linux-troubleshooting', 7, 'assessment', 'ROOT 02 Linux Administration & Networking Assessment', NULL, NULL, 'rootnode-linux-networking-assessment', 'auto_assessment', 35, 'ready')
|
||||
ON CONFLICT (activity_id) DO NOTHING;
|
||||
Reference in New Issue
Block a user