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]>
58 lines
1.4 KiB
Markdown
58 lines
1.4 KiB
Markdown
# Demonstration: Walking the Complete Path, Layer by Layer
|
|
|
|
## OBSERVE
|
|
|
|
```
|
|
$ getent hosts lab-internal.test
|
|
10.99.99.42 lab-internal.test
|
|
```
|
|
|
|
DNS: succeeded.
|
|
|
|
## HYPOTHESIS
|
|
|
|
Predict: if the next step (TCP connection) fails, what would that specific error look like?
|
|
|
|
## INSPECT
|
|
|
|
```
|
|
$ curl http://lab-internal.test:9091/
|
|
curl: (7) Failed to connect to lab-internal.test port 9091: Connection refused
|
|
```
|
|
|
|
"Connection refused" — DNS already succeeded (ruled out), the failure is specifically that
|
|
nothing is listening on port 9091 at that address.
|
|
|
|
## CHANGE
|
|
|
|
Find what IS actually listening, on the correct address:
|
|
|
|
```
|
|
$ ss -lnt | grep LISTEN
|
|
LISTEN 0 5 0.0.0.0:9095 0.0.0.0:*
|
|
```
|
|
|
|
The real service is on 9095, not 9091 — a configuration/expectation mismatch, not a DNS or
|
|
routing problem.
|
|
|
|
## VERIFY
|
|
|
|
```
|
|
$ curl http://lab-internal.test:9095/
|
|
app running
|
|
```
|
|
|
|
The full path, once pointed at the CORRECT layer that was actually broken (the port, not DNS),
|
|
succeeds end to end.
|
|
|
|
## Instructor Notes
|
|
|
|
**Demo goal:** Show that a real, plausible-sounding complaint ("DNS must be broken") is
|
|
disproven by evidence in seconds, and the REAL cause is one layer downstream.
|
|
|
|
**Approximate timing:** 10 minutes live.
|
|
|
|
**Common mistake to watch for:** jumping straight to "restart everything" instead of walking
|
|
the chain layer by layer to find the SPECIFIC broken step — the whole point of this module's
|
|
Lab is resisting that shortcut.
|