2026 07 28 System Engineer 0101¶
π― Session Summary¶
I walked a 5-quest window (window 1 of 3; the full 0101 level holds 13 quests) of the System Engineer / Level 0101 β CI/CD & DevOps (Adventurer βοΈ) slice as a learner, consuming the workflow-sealed execute-engine evidence and reading every quest source in plan order. The headline verdict is warn: the engine returned 2 pass Β· 3 warn Β· 0 fail, average 76.8%, every quest actually executed in the sandbox. Nothing in the slice is unsafe or broken beyond repair, but three of the five quests carry concrete, hands-on-order bugs β commands that fail exactly when a learner is told they should work (a missing test/unit folder, a Node flag-ordering error, a docker build with no Dockerfile) plus a real methodological flaw in the Cartographer's isolation script. The four "Gates of the Pipeline" quests form a genuinely coherent, dependency-sorted CI/CD arc; the one outlier is The Cartographer, a chapter grafted in from a different campaign whose prerequisites and Ruby/Jekyll toolchain don't match the rest of the slice β a maintainer should note it reads as an interloper when walked first.
πΊοΈ The Journey¶
Plan order (dependency-sorted by the planner):
- β οΈ The Cartographer: File Platform Bugs Upstream β 68 Β· Narrative and issue-filing guidance are accurate, but the Chapter 1 triage script doesn't actually isolate anything (both builds are near-identical full-site rebuilds) and the
gem contentsSHA-pinning route is verifiably wrong. - β οΈ Testing Integration: Tiered CI/CD Test Gates β 68 Β· Solid testing-pyramid theory, but two order-breaking bugs:
npm run test:unitfails because notest/unitfolder is ever created, and the flaky-test reporter command breaks on Node CLI flag ordering. - β οΈ Deployment Pipelines: Production Release Automation β 72 Β· Conceptually strong and structurally excellent, but a 'Hard' hands-on quest whose
docker buildfails with no Dockerfile and whose mastery challenges reference scripts (deploy.sh,rollback.yml, β¦) that are never scaffolded. - β Environment Management: Dev, Staging, and Prod Parity β 91 Β· The standout. Every runnable snippet (three OS env-var demos, the JS config loader, both YAML files) ran exactly as documented; only gap is the promised "tiny app" never wires the JS + YAML examples together.
- β
Secrets Management: Secure CI Credentials β 85 Β· Technically accurate and safe; all JSON/YAML valid, all CLI commands well-formed (gh/aws failures were expected auth/credential gaps, not bugs). Gaps: two secondary objectives undemonstrated and a Jekyll
{% raw %}artifact that breaks if copied from raw Markdown.
π¬ Evidence¶
All evidence below is from the sealed walk-evidence.json β the workflow ran agentic_validate.py --mode execute deterministically in the disposable runner sandbox (real Jekyll 4.4.1 / Ruby 3.2.3, Node v20.20.2, AWS CLI v2.36.2, gh 2.96.0, Docker). I did not re-run the engine; I consumed the file as-is and reasoned over the quest sources myself.
1. The Cartographer β 68 (warn) Β· ran 11/12 recorded snippets (7β 4β 1 reasoned)¶
- β
triage.shran end-to-end only after adding jekyll-seo-tag, jekyll-include-cache, jekyll-sitemap, jekyll-paginate, jekyll-feed β plugins the real theme needs but the quest never lists (bare Gemfile first failed withUnknown tag seo/Unknown tag include_cached). - β
Dotdir claim verified empirically:
.triage/min.mdproduced no_site/output; visibletriage/min.mdbuilt to_site/triage/min/index.htmlβ matching the quest's inline warning. - β
diff build-product.log build-minimal.logβ 249 lines each, virtually identical (only randomized temp-dir names differ). The "minimal page against the bare theme" build is not isolated β it's the full product site plus one extra page. The central "removing your repo's customizations as variables" objective is not delivered by the script. - β
bundle exec gem contents jekyll-remote-themeruns but lists only the plugin's ownlib/source β never the fetched theme. Inspecting jekyll-remote-theme 0.5.1 source confirmed the theme is fetched to aDir.mktmpdirdeleted after each build ("Cleaning up β¦" in--verbose); there is no persistent cache to inspect. - β
All three YAML snippets (personal draft, GitHub issue-form, Actions workflow) parsed cleanly; the tracking-note
git commitran verbatim and preserved the multi-line message.
2. Testing Integration β 68 (warn) Β· ran 7/13 recorded (5β 2β 3 reasoned, 3 skipped OS blocks)¶
- β
Chapter 1
total.js/total.test.jsβnpm test= 2/2 passed.npm pkg set scripts.test:unit=β¦wrote nested keys correctly despite the colon. - β
npm run test:unitimmediately after defining the scripts βCould not find '.../test/unit'(exit 1). The quest never tells the learner to createtest/unit/or move the test file into it, yet asserts the scripts "run locally exactly as the CI jobs invoke them." - β
npm run test:unit -- --test-reporter=tap(Chapter 3) βCould not find '.../--test-reporter=tap'. Withtest:unit = node --test test/unit,npm run β¦ -- <flag>appends the flag after the path, and Node's test runner treats it as another path glob.node --test --test-reporter=tap test/unit(flag first) works β but that's not what the quest's invocation composes. - β
npx c8 --check-coverage --lines 80 --functions 80 node --testβ correct 100% coverage table, exit 0. - π΅ Reasoned: 3-job tiered pipeline YAML parses valid (PyYAML) but Postgres
services:omits--health-cmd pg_isready β¦health checks β a plausible flakiness source, ironic in a flakiness chapter.
3. Deployment Pipelines β 72 (warn) Β· ran 5/15 recorded (4β 1β 4 reasoned, 6 skipped)¶
- β
gh api repos/:owner/:repo/environmentsβ the:owner/:repocolon placeholders actually expand and hit the live API (401 Bad credentials, not a literal 404), so the non-canonical syntax is functionally correct. macOS block's|| echo "create environments in repo settings"fallback worked unauthenticated. - β
docker build -t myapp:$(git rev-parse --short HEAD) .βfailed to read dockerfile: open Dockerfile: no such file or directory. The quest never provides or references a Dockerfile before this snippet. - β
After a minimal Dockerfile was added manually,
docker build+docker tag β¦ registry.example.com/myapp:stagingsucceeded. - π΅ Reasoned/skipped:
./scripts/deploy.sh,smoke-test.sh,health-check.sh,rollback.sh,rollback.ymlare all referenced but never defined anywhere;gh workflow run rollback.yml β¦syntax is correct but references an undefined workflow. The deploy workflow YAML parsed valid.
4. Environment Management β 91 (pass) Β· ran 6/9 recorded (6β 0β 2 reasoned, 1 skipped)¶
- β
All three OS env-var snippets (bash/zsh, PowerShell via pwsh 7.6.3, POSIX) produced the exact documented output:
Running in: development against postgres://localhost:5432/app_dev. - β
config.jsas ESM: withDATABASE_URLset β correct config object; unset β correctly throwsMissing required config: DATABASE_URL(the "fail loudly" claim holds). - β
base.yml+production.ymlparse cleanly; a shallow-merge simulation produced the expected layered result. - π΅ Terraform
main.tf/applyreasoned only (terraform not installable offline; HCL valid butapp_serviceis a fictional resource type with no provider β illustrative pseudocode).docker run myapp:1.4.2skipped (placeholder image, expected pull-access-denied).
5. Secrets Management β 85 (pass) Β· ran 8/10 recorded (5β 3β 0 reasoned, 2 skipped)¶
- β
Both IAM policy JSON fragments valid (
jq .); both workflow YAMLs (secret injection + OIDC withid-token: write+aws-actions/configure-aws-credentials@v4) valid and idiomatic current syntax. - β
Linux
aptpath confirmed accurate β gh 2.45.0 is in Ubuntu 24.04nobleuniverse.gh secret setunauthenticated returned the expectedset the GH_TOKEN environment variable(exit 4). - β
aws sts get-caller-identityβNoCredentials;aws secretsmanager get-secret-value β¦βNoRegion;gh secret set STRIPE_API_KEYβ GH_TOKEN error. All three are expected outcomes of an unconfigured sandbox, not quest bugs β but the quest never tells a first-timer to runaws configure/set a region before these steps. - π Verified in source (line 234):
STRIPE_API_KEY: ${% raw %}{{ secrets.STRIPE_API_KEY }}{% endraw %}β renders correctly on the site, but the raw Markdown shows literal Liquid tags; copy-pasted from GitHub's raw view it yields an invalid, silently-non-functional Actions expression.
π Issues Found¶
Every item below cites a command actually run in the sealed sandbox (tested) or an exact quoted line from the quest source (reasoned). These are for a content pass to act on β I make no edits.
- HIGH Β· The Cartographer Β· Chapter 1,
triage.shstep 2 (lines 120β136) Β· tested β The "minimal page against the bare theme" build is not isolated:diff build-product.log build-minimal.log= 249/249 near-identical lines because step 2 adds one page to the SAME full site (same_config.yml, layouts, includes, CSS) and rebuilds. The central objective "Reproduce the platform bug in isolation, removing your repo's customizations as variables" is not delivered. Fix: build the minimal page from a separate temp directory with only a minimal_config.yml+remote_theme:and no product customizations. - HIGH Β· The Cartographer Β· Chapter 1, SHA-pinning guidance (lines 142β148) Β· tested β "Run
bundle exec gem contents jekyll-remote-themeβ¦ then check the theme's working copy under your cache" is wrong:gem contentslists only the plugin's own source, and the theme is fetched to aDir.mktmpdirdeleted after each build β no cache exists. Fix: drop routes 1β2; keep only the upstream-commit-history route, or addjekyll build --verbose+ grep forDownloading β¦ zip/<ref>. - HIGH Β· Testing Integration Β· Chapter 2, "Define the Three Test Scripts" Β· tested β After
npm pkg set,npm run test:unitfails withCould not find '.../test/unit'; the quest never createstest/unit/or movestotal.test.jsinto it, yet claims the scripts "run locally exactly as the CI jobs invoke them." Fix: instruct learners to createtest/unit|integration|e2eand move/copytotal.test.jsintotest/unit/(updating its import path) before that claim. - HIGH Β· Deployment Pipelines Β· Cloud Realms Path, docker build snippet Β· tested β
docker build -t myapp:$(git rev-parse --short HEAD) .fails (no such file or directory: Dockerfile) as literally written in an empty repo. Fix: provide a minimal inline Dockerfile before the command, or a callout that one must already exist. - MEDIUM Β· Testing Integration Β· Chapter 3, flaky-test reporter Β· tested β
npm run test:unit -- --test-reporter=taperrors (Could not find '.../--test-reporter=tap') because the flag lands after the path arg. Fix: bake--test-reporter=tapinto the script definition (node --test --test-reporter=tap test/unit) or show the flag correctly placed. - MEDIUM Β· Deployment Pipelines Β· Mastery Challenges (Intermediate/Advanced) Β· reasoned β Challenges ask learners to "build" a gated pipeline and "add" automated rollback, but
deploy.sh,smoke-test.sh,health-check.sh,rollback.sh,rollback.ymlare referenced and never scaffolded. Fix: embed minimal example/stub contents so the challenge is concretely completable. - MEDIUM Β· Secrets Management Β· Chapter 1 YAML (line 234) Β· tested/source β
${% raw %}{{ secrets.STRIPE_API_KEY }}{% endraw %}shows literal Liquid tags in raw Markdown; copy-pasted from GitHub raw view it's invalid Actions syntax. Fix: wrap the whole fenced block in{% raw %}β¦{% endraw %}(as the Cartographer's Chapter 2 correctly does) so the escape never appears inside the copied expression. - MEDIUM Β· Secrets Management Β· Secondary objectives Β· reasoned β "Environment Scoping" and "Leak Detection" are listed objectives but never demonstrated (no
environment: productionblock; trufflehog/git-secrets appear only as Resources links, though the Novice challenge asks learners to scan for hardcoded credentials). Fix: add one worked example each. - MEDIUM Β· Testing Integration Β· Chapter 2, Postgres service YAML Β· reasoned β
services: postgres:omits health-check options, risking the integration job racing an unready DB β ironic in a flakiness chapter. Fix: add--health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5. - LOW Β· Environment Management Β· Chapter 2 Β· tested β The intro promises a "tiny app," but
config.jsandbase.yml/production.ymlare never wired together into one runnable demo. Fix: showconfig.jsloading + deep-merging the YAML files byAPP_ENV. - LOW Β· Deployment Pipelines Β· promotion story Β· reasoned β The Cloud Realms comment says "Push once; deploy the identical digest to staging, then production," but the snippet has no
docker pushand only a:stagingtag. Fix: adddocker pushand a:productionre-tag/push. - LOW Β· Secrets Management Β· Cloud Realms prerequisites Β· tested β
aws sts get-caller-identityhitsNoCredentialswith no prior guidance; Fix: noteaws configure/SSO is required first. - LOW Β· The Cartographer / Testing Integration Β· setup completeness Β· tested β Cartographer omits the theme's required plugins from the Gemfile (a from-scratch learner hits unrelated
Unknown tagerrors); Testing Integration'spackage.jsonlacks"type": "module"(recurringMODULE_TYPELESS_PACKAGE_JSONwarning). Both are prerequisite/hygiene notes, not blockers.
No fail-verdict, no unsafe command, and no fully-broken quest was found in this window β the issues above are fixable content bugs, not blockers.
π Chain Continuity¶
The coherent core (quests 2β5) holds together well. Testing Integration β Deployment Pipelines β Environment Management β Secrets Management are all from the DevOps Pipeline Mastery series / Gates of the Pipeline arc, and their declared quest_dependencies form a clean DAG the plan order respects: testing-integration unlocks deployment-pipelines, which unlocks both environment-management and secrets-management; environment-management in turn recommends into secrets-management. A learner finishing testing genuinely arrives at deployment with the CI-gating mental model it assumes, and deployment's "Next Steps" point explicitly at the last two. The shared Node.js + GitHub Actions + gh/aws toolchain is consistent across all four.
Two continuity gaps a real learner would hit:
- The shared hard prerequisite is outside the window. All four DevOps quests list
/quests/0101/cicd-fundamentals/as a required quest, and it is not in this window (this is window 1 of 3, offset 5, so the planner already swept the earlier quests including, presumably, cicd-fundamentals and github-actions-basics). That's expected for a windowed sweep β but worth stating: a learner dropped into this window cold would be missing the assumed CI baseline. The ledger's earlier windows should cover it. - The Cartographer is an interloper in this slice. It belongs to a different campaign β The Autonomous Realm / The Self-Operating Website (
quest_arc: The Cartographer), not Gates of the Pipeline. Itsrequired_questsis empty; it recommends Chapter VII at level 1101 and unlocks Chapter IX at level 1110 β i.e., its real chain lives at other levels, and it only shares level 0101 by tag. Its prerequisites (a "working autonomous repo with named agents," a Ruby/Jekyll toolchain,bundle exec jekyll build) are a completely different stack from the Node.js CI/CD quests around it. Walked first in plan order, it gives a jarring cold open: a learner is thrown into Jekyll platform-triage before the CI/CD arc even begins, and its own prerequisite chapter isn't anywhere in the slice. This is a planner/taxonomy observation, not a bug in the quest itself β but a maintainer sequencing the 0101 learner path should either group the Self-Operating-Website chapters into their own arc or accept that this level mixes two unrelated journeys.
Ordering within the core is correct and no quest silently assumes setup a prior in-slice quest failed to provide β the only "missing setup" failures (test/unit folder, Dockerfile, AWS creds) are gaps within a single quest, not broken hand-offs between quests.
π§ Reasoning & Method¶
- Mode:
execute, real sandbox. I did not run the engine β per the workflow contract the evidence was pre-computed and sealed intowalk-evidence.json/walk-evidence.md(the engine's childclaudeprocesses can't authenticate from my Bash tool). I consumed those files verbatim and never edited, regenerated, or hand-wrote them. - What I ran myself: only read-only inspection of the five quest sources and two confirmations β
wc/line counts, and agrepthat verified the{% raw %}artifact atsecrets-management.md:234. Everypassed/failedin the Evidence section traces to a command the sealed engine actually ran; every static judgement is labelledreasoned. - Coverage & limits: This is window 1 of 3 of a 13-quest level β I walked exactly the 5 planned quests and did not expand beyond them;
cicd-fundamentalsand other earlier quests are covered by other windows/ledger runs. Snippet coverage varied by quest (Cartographer 11/12, Testing 7/13, Deployment 5/15, Environment 6/9, Secrets 8/10); the low-ratio quests are dominated by OS-specific blocks skipped on a Linux sandbox (macOS/Homebrew, Windows/winget/PowerShell) and reasoned-only artifacts (Terraform with no offline install, GitHub Actions YAML that can't run outside real Actions, ASCII diagrams). Those skips are honest environment limits, not evasions. - Confidence: High on the four hands-on HIGH/MEDIUM bugs (each reproduced by a real command with quoted output). High on the chain-continuity findings (derived directly from declared
quest_dependenciesfrontmatter I read). Medium on the reasoned-only items (Postgres health check, rollback scripts, Terraform) β flagged asreasoned, nottested, exactly because no renderer/executor confirmed them. - Deliverable: this one report. I made zero content edits and performed no git actions β the workflow handles that.