Skip to content

2026 07 14 Data Scientist 1100

🎯 Session Summary

I walked a 5-quest window (window 2 of 3) of the Data Scientist Β· Level 1100 (Data Engineering, Master) slice, in the exact order the planner selected, as a learner would. The machine evidence was sealed by the workflow in --mode execute (disposable sandbox, commands run for real); I consumed walk-evidence.json / walk-evidence.md as-is and reasoned about the linked journey against the five quest sources.

Headline verdict: FAIL. Three of five quests (Stream Processing 44%, Data Quality 51%, The Warden's Pact 51%) have concrete, reproduced blockers that would stop a real learner cold before they finish the hands-on work β€” a dead Docker image + missing single-broker replication overrides, a never-supplied orders.csv plus an outdated Great Expectations API, and a self-defeating CODEOWNERS ordering bug plus a validation script the quest never ships. Apache Spark (83%, PASS) is the standout: every Python snippet ran and behaved exactly as taught. The Capstone (68%, WARN) mostly holds, but its own acceptance-criteria.json breaks the jq -e check its own validator runs. A maintainer should treat Stream Processing and Data Quality as the two highest-value fixes: both teach accurate concepts but are not completable as written today.

One structural note for the caller: this window mixes two different quest lines that happen to share the 1100 level code β€” the Agentic Codex (GH-600) arc (quests 1–2) and Data Engineering Mastery (quests 3–5). For a data-scientist learner, only the latter trio is on-path; see Β§πŸ”— Chain Continuity.

πŸ—ΊοΈ The Journey

Ordered as walked (plan order = walk-plan.json):

  1. ❌ The Warden's Pact: Guardrails and Human-in-the-Loop Patterns β€” 51% Β· Sound guardrail concepts, but the only runnable command fails and the CODEOWNERS example silently defeats its own file-scope guardrail.
  2. ⚠️ Trial of the Agentic Codex: The Grand Capstone β€” 68% Β· The validate-capstone.sh contract genuinely works, but the quest's own acceptance-criteria.json fails the exact jq -e check that validator runs.
  3. βœ… Apache Spark Mastery: Big Data with PySpark β€” 83% Β· Technically solid; all six PySpark snippets ran and behaved as described. Only the platform-setup notes have bugs.
  4. ❌ Stream Processing: Real-Time Data with Apache Kafka & Flink β€” 44% Β· Excellent theory, but the hands-on setup is broken end-to-end: dead broker image + missing replication overrides mean no consumer group ever receives messages.
  5. ❌ Data Quality Engineering: Validation & Monitoring β€” 51% Β· Accurate concepts and working pure-Python validators, but every example depends on an orders.csv that is never provided, and the flagship GE example is broken against the current library.

πŸ”¬ Evidence

All statuses below come from commands the sealed execute engine actually ran in the sandbox (passed/failed/skipped), or from static reasoning over the quest source (reasoned). Nothing here is asserted without a witnessed command or a quoted line.

1. The Warden's Pact β€” 51% ❌ (13 turns Β· commands_work ⅖, content_accuracy ⅖, safety 5/5)

Coverage: 0 passed Β· 1 failed Β· 6 reasoned (of 7). The only literally-runnable snippet failed; the four YAML/markdown config blocks are non-executable and were reasoned about.

  • python3 scripts/validate_quest.py --quest q19 β†’ FAILED. Real sandbox output: python3: can't open file '.../scripts/validate_quest.py': [Errno 2] No such file or directory, exit code 2. The quest (lines 340–347) presents this as the completion check but never ships or links the script.
  • .github/CODEOWNERS block (lines 117–134) β†’ reasoned: the catch-all * @team-dev is the last rule, and GitHub CODEOWNERS is "last matching pattern wins", so the wildcard overrides every specific /src/auth/, /src/crypto/ rule above it β€” the file-scope guardrail this chapter exists to teach would not apply.
  • guardrail-file-scope.yml (lines 151–178) β†’ reasoned: gh pr view step has no GH_TOKEN/GITHUB_TOKEN env, so gh fails in Actions with the standard "set the GH_TOKEN environment variable" error.
  • agent-audit-trail.yml (lines 249–293) β†’ reasoned: workflow_run.workflows: ["*Agent*", "*Copilot*"] uses wildcards this filter doesn't support (needs exact names); the final git push has no permissions: contents: write and will likely 403.
  • Verified via PyYAML that all three YAML blocks parse, but every ${{ ... }} expression is wrapped in literal {% raw %}...{% endraw %} β€” copied from raw markdown they are not valid Actions expressions.
  • Audit heredoc reproduced locally β†’ produces a pretty-printed multi-line JSON block, not JSON-Lines, contradicting the .jsonl filename the workflow uses.

2. The Grand Capstone β€” 68% ⚠️ (22 turns Β· commands_work ⅗, content_accuracy ⅗, safety 5/5)

Coverage: 6 passed Β· 1 failed Β· 3 reasoned (of 10).

  • validate-capstone.sh (lines 448–486) β†’ PASSED. Verified it correctly fails on a partial build and cleanly passes once all 14 seal artifacts exist. This is the quest's strongest artifact.
  • acceptance-criteria.json (lines 311–336) β†’ FAILED. As given (with the leading // work/gh-600/capstone/acceptance-criteria.json comment) it is invalid JSON: jq -e '.criteria | length >= 3' ... β†’ jq: parse error: Invalid numeric literal at line 1, column 3. This is the exact command validate-capstone.sh runs for seal S4, so a verbatim copy fails the quest's own validator. Removing the comment line makes jq return true.
  • plan-then-execute.yml and the permissions: block (Challenges 1.2 / 2.1) β†’ PASSED as valid YAML; the sdlc-diagram.md and grand-reflection.md templates β†’ PASSED.
  • .vscode/mcp.json (lines 250–263) β†’ reasoned: missing the inputs array VS Code needs to resolve ${input:github-token}, so it isn't a working config as shown.

3. Apache Spark Mastery β€” 83% βœ… (17 turns Β· commands_work ⅘, structure 5/5, safety 5/5)

Coverage: 7 passed Β· 0 failed Β· 2 reasoned Β· 3 skipped (of 12). Skips are the macOS/Windows/Docker setup paths not applicable to the Linux sandbox.

  • Linux setup path (lines 173–178, apt install openjdk-17-jdk … pip install pyspark) β†’ PASSED.
  • spark_intro.py (SparkSession + createDataFrame + printSchema + show) β†’ PASSED.
  • Lazy pipeline filter/groupBy/agg/orderBy then .show() / .explain(mode="formatted") β†’ PASSED; the Exchange (shuffle) step was visible in the plan as taught.
  • groupByKey().mapValues(sum) vs reduceByKey(...) β†’ PASSED (same result verified).
  • coalesce(1).write vs repartition(200,"service") β†’ PASSED (file counts as claimed).
  • spark.sql(...).explain("cost") and the .cache()/count()/unpersist() flow β†’ PASSED.
  • The one substantive accuracy gap is reasoned/tested in setup: the prereq says "JDK 11/17" (line 127), but the engine directly disproved JDK 11 β€” current PySpark (4.1.2) against JDK 11 raises UnsupportedClassVersionError. Windows PowerShell activation .\.venv\Scripts\activate is also broken (should be Activate.ps1).

4. Stream Processing β€” 44% ❌ (35 turns Β· commands_work ⅕, content_accuracy ⅖, safety 5/5)

Coverage: 4 passed Β· 7 failed Β· 6 reasoned (of 17). This quest ate the most turns and produced the most failures β€” the setup is broken end-to-end.

  • pip install kafka-python + from kafka import KafkaProducer, KafkaConsumer β†’ PASSED.
  • docker compose up -d with the quest's docker-compose.yml (image: bitnami/kafka:3.7, lines 254–269) β†’ FAILED: manifest for bitnami/kafka:3.7 not found: manifest unknown. Also failed for :latest, :3.9, :4.0, :3.8, :3.6 β€” the whole bitnami/kafka tag family is gone from the registry.
  • After substituting apache/kafka:3.7.0, docker compose up -d β†’ PASSED, but then:
  • consumer.py (lines 289–303) β†’ FAILED: with the quest's exact broker env (no offsets-topic replication override) the consumer received 0 messages after 25s β€” the broker loops auto-creating __consumer_offsets (needs RF 3, only 1 broker). Passed only after manually adding KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR=1.
  • eos_producer.py (Chapter 4 exactly-once, lines 379–397) β†’ FAILED: hung indefinitely (30s timeout, zero output) on the quest's config; broker logs showed infinite __transaction_state retries. Passed only after adding KAFKA_CFG_TRANSACTION_STATE_LOG_REPLICATION_FACTOR=1 and ..._MIN_ISR=1, neither of which the quest provides.
  • Linux setup (line 176, apt install … docker-compose-plugin) β†’ FAILED: apt-cache policy on the Ubuntu 24.04 sandbox shows docker-compose-plugin Candidate (none) β€” not installable without adding Docker's official apt repo first.
  • Net effect verified by reproduction: none of the three Mastery Challenges are completable by following the quest as written today.

5. Data Quality Engineering β€” 51% ❌ (24 turns Β· commands_work ⅖, content_accuracy ⅖, safety 5/5)

Coverage: 5 passed Β· 2 failed Β· 1 reasoned Β· 1 skipped (of 9).

  • Linux + Cloud pip install pandas great-expectations pandera β†’ PASSED.
  • profile.py, validate_simple.py, anomaly.py β†’ PASSED (the dependency-free and pure-logic snippets run correctly).
  • validate_ge.py (Chapter 3, lines 270–289) β†’ FAILED: context.sources.add_pandas('orders_src') raises AttributeError: 'EphemeralDataContext' object has no attribute 'sources' on great_expectations 1.19.0 (what pip install great-expectations resolves to today). The fluent .sources API was removed in GE 1.0+.
  • contract.py (Chapter 4, lines 339–353) β†’ FAILED: correctly raised SchemaErrors on the corrupted CSV, but also fails on a fully clean CSV β€” WRONG_DATATYPE: expected series 'created_at' to have type datetime64[ns] because pd.read_csv has no parse_dates=['created_at']. This contradicts the Novice Challenge's "on a clean copy it passes" criterion.
  • Underlying all of it: every hands-on snippet reads orders.csv (first used line 239), which the quest never provides or generates β€” so nothing is runnable out of the box.

🐞 Issues Found

Each issue below is backed by a witnessed sandbox command (Β§Evidence) or an exact quoted line. Severities mirror the rubric dimensions (commands_work / content_accuracy first).

High - Stream Processing Β· Ch.2 docker-compose.yml (line 258) Β· dead image. Observed manifest for bitnami/kafka:3.7 not found (and every other bitnami tag). Fix: pin a currently-published image (e.g. apache/kafka:3.7.0), and periodically re-verify the tag. - Stream Processing Β· Ch.2 broker env (lines 261–268) Β· missing single-broker replication. Observed: consumer gets 0 messages, EOS producer hangs forever. Fix: add KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR=1, KAFKA_CFG_TRANSACTION_STATE_LOG_REPLICATION_FACTOR=1, KAFKA_CFG_TRANSACTION_STATE_LOG_MIN_ISR=1. - Data Quality Β· Chapters 2–4 Β· missing orders.csv. Every hands-on snippet reads it; it is never supplied. Fix: add a downloadable orders.csv or a short "generate sample data" script before Chapter 2. - Data Quality Β· Ch.3 validate_ge.py (line 277) Β· outdated GE API. Observed AttributeError: … has no attribute 'sources' on GE 1.19.0. Fix: update to the current Data Source/Batch Definition API (context.data_sources.add_pandas(...)) or pin a pre-1.0 great-expectations version. - Data Quality Β· Ch.4 contract.py (line 353) Β· fails on clean data. Observed WRONG_DATATYPE on created_at even for clean input. Fix: add parse_dates=['created_at'] to pd.read_csv. - The Warden's Pact Β· Validation (line 341) Β· missing script. Observed No such file or directory for scripts/validate_quest.py. Fix: ship/link the script or explain it is repo tooling not runnable from QUEST.md alone. - The Warden's Pact Β· Ch.2 CODEOWNERS (lines 121–133) Β· self-defeating order. Wildcard * @team-dev is last and (last-match-wins) overrides all specific rules. Fix: move the wildcard first, specific overrides after.

Medium - Capstone Β· Challenge 4.1 acceptance-criteria.json (line 312) Β· invalid JSON. The leading // … comment breaks the jq -e check validate-capstone.sh itself runs (S4). Observed jq: parse error: Invalid numeric literal. Fix: move the comment to prose above the fenced block. - The Warden's Pact Β· Ch.2 guardrail-file-scope.yml (line 155) Β· missing GH_TOKEN. gh pr view will fail in Actions. Fix: add env: { GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} }. - The Warden's Pact Β· Ch.4 agent-audit-trail.yml (lines 254, 292) Β· wildcard workflow_run.workflows + missing push permissions. Fix: use exact workflow names and add permissions: contents: write. - Stream Processing Β· Ch.3 windowing has no runnable code. The Intermediate Challenge ("late event lands in its true window") is only described. Fix: add a minimal runnable tumbling-window-over-event-time example. - Stream Processing Β· Ch.4 elided EOS offset commit (line 394). The # … also commit the consumed offsets … comment hides the exact mechanism the Advanced Challenge tests. Fix: spell out producer.send_offsets_to_transaction(...). - Capstone Β· Challenge 2.2 mcp.json (line 252) Β· not a working config. Missing the inputs array to resolve ${input:github-token}. Fix: add it or note it must be added. - Data Quality Β· Advanced Challenge Β· no quarantine/lineage examples. Required deliverables with zero worked example in the body. Fix: add a small quarantine-DataFrame snippet and a lineage-map template.

Low - Apache Spark Β· prereq "JDK 11/17" (line 127) is wrong for current PySpark. Testing PySpark 4.1.2 on JDK 11 gave UnsupportedClassVersionError. Fix: state JDK 17 (drop 11). - Apache Spark / Stream Processing Β· Windows PowerShell activation. .\.venv\Scripts\activate β†’ should be .\.venv\Scripts\Activate.ps1. - Data Quality Β· setup blocks Β· unpinned installs. Pin great-expectations==1.x (and peers) so a future breaking API change doesn't silently reappear.

No issues were found in Apache Spark's core teaching content β€” all six PySpark snippets ran and matched the quest's claims about lazy evaluation, shuffles, and caching.

πŸ”— Chain Continuity

Two distinct quest lines share this level code. This window is 2 of 3 (offset 10) of a 15-quest level, and it straddles a seam:

  • Quests 1–2 (Agentic Codex / GH-600): quest_series: agentic-ai-mastery, quest_line: gh-600. Their internal chain is coherent β€” Warden's Pact declares unlocks_quests: agentic-codex-capstone-exam-trial, and the Capstone lists Q19 among its 19 required_quests, so the local Nβ†’N+1 link (guardrails β†’ capstone) is satisfied within this window. But the Capstone assumes all 19 prior GH-600 quests are done; only Q19 is in-window, so a learner arriving here cold is missing 18 prerequisites the capstone leans on (its per-seal "Refer to Qn…" pointers mitigate this by design).
  • Quests 3–5 (Data Engineering Mastery): quest_line: The Data Engineer's Ascent. This trio is internally well-ordered: Apache Spark declares unlocks_quests: [stream-processing, data-quality], Stream Processing unlocks Data Quality, and each "Next Steps" section points forward correctly. All three list ETL Pipeline Design as a required/recommended prerequisite β€” that quest is not in this window (earlier in the level), so a learner starting at this window lacks the assumed idempotency/ETL grounding the three quests repeatedly reference ("just like the idempotent load from the ETL quest").

For a data-scientist learner specifically: the on-path chain is the Data Engineering trio (the character-class recommendation lines in each quest literally route the "πŸ“Š Data Scientist" to Data Quality). The two agentic-AI quests are a different track that happens to carry the 1100 code β€” worth a maintainer's awareness that the date-rotated planner will keep sampling both lines under this character/level pairing.

Readiness hand-off, quest by quest, as a learner: - Spark β†’ Stream/Data Quality: Spark leaves the learner genuinely ready β€” its content works and it correctly frames distributed thinking that Stream Processing extends. This is the one clean hand-off in the slice. - Stream Processing β†’ Data Quality: conceptually fine, but a learner who tried the hands-on work would arrive frustrated and blocked (they never got a working broker), carrying no runnable streaming artifact forward. - Data Quality (terminus): as the end of the data-eng line it should feel like a capstone; instead the missing orders.csv means a learner cannot run a single example end to end, so the line finishes on a broken note. - Warden's Pact β†’ Capstone: the concepts chain, but both quests carry defects that surface at exactly the validation step each one builds toward (missing validate_quest.py; the capstone's own acceptance-criteria.json failing its own validator).

🧠 Reasoning & Method

  • What I ran vs. reasoned: I did not run the engine β€” per the skill and the task, walk-evidence.json was pre-sealed by the workflow (the engine's child claude processes can't authenticate from an agent Bash tool). I consumed it and walk-evidence.md verbatim and did not regenerate or edit them, walk-plan.json, or any quest. Every passed/failed in Β§Evidence is a command the sealed execute-mode engine actually ran in its disposable per-quest sandbox; every reasoned item is my static read of the quoted quest source.
  • My value-add is Β§πŸ”— Chain Continuity and the linked-journey framing: reading all five sources in plan order and judging whether each quest leaves a learner ready for the next, which prerequisites the window assumes but doesn't contain, and that the level code mixes two quest lines.
  • Mode / sandbox: execute, sealed by quest-perfection/quest-walkthrough workflow; Ubuntu 24.04 runner sandbox. Safety scored 5/5 on all five quests β€” no destructive or unsafe commands were needed or run.
  • Coverage & limits, stated honestly:
  • This is a windowed slice: 5 of the level's 15 quests were walked (window ⅔). I did not expand to the other 10; stats.total_quests=15 is context only.
  • Setup paths for non-Linux OSes (macOS/Windows/Docker-desktop) were skipped by the engine (3 in Spark, 1 in Data Quality) β€” those platform commands are reasoned-only, not tested, so Windows/macOS-specific bugs (e.g. the PowerShell Activate.ps1 issue) are flagged from source inspection, not execution.
  • A few quest artifacts are non-executable config (CODEOWNERS, workflow YAML, mermaid) and are necessarily reasoned, not run.
  • Stream Processing consumed the most engine turns (35) and still could not complete its challenges even after the engine substituted a working image β€” I report it as verified broken, not merely suspected.
  • Confidence: High on the three FAIL verdicts β€” each rests on a reproduced command with quoted real output (dead manifest, 0 messages, AttributeError, WRONG_DATATYPE, No such file). High on Spark's PASS. Medium-high on the Capstone WARN (structure works; the one hard failure is its own JSON-vs-validator contradiction).

One slice, one report. No quest content changed; git is the caller's job.