Software Developer · L0110 · 2026-07-13
Quest-perfection walkthrough of the Database Mastery slice developer/0110 on 2026-07-13, engine verdict warn (avg 80.4%). An evidence-based, learner's-eye…
Table of Contents
Slice
developer/0110· Level 0110 (Database Mastery) · Adventurer tier · Engine verdict ⚠️ warn (avg 80.4%) · Walked 2026-07-13🔗 Perfection run · 🏠 Perfection dashboard · 📄 Raw report · 🕘 Change history
🎯 Session Summary
I walked the first window (5 of 8) of the Software Developer → Level 0110
“Database Mastery” quest line as a learner, in the planner’s dependency-sorted
order: Database Fundamentals → Data Modeling → SQL Mastery → Database Migrations
→ Database Security. All five ran in --mode execute against a real PostgreSQL
16 Docker instance; the sealed engine scored them 79 / 86 / 82 / 69 / 86
(avg 80.4%, 3 pass · 2 warn · 0 fail).
Headline verdict: WARN. The teaching core of every quest is genuinely
strong — the relational-model, ER-modeling, JOIN/aggregation, Alembic, and
security SQL all executed exactly as documented against live Postgres. But the
slice has a recurring, learner-blocking pattern: listed objectives and
challenge/checklist requirements the quest body never delivers. Two are
hard blockers for anyone typing along verbatim — Database Fundamentals’ flagship
ACID example references an accounts table that is never created (fails
immediately), and SQL Mastery demands a three-table join in both its
Intermediate Challenge and its Completion Checklist while its seed schema only
ever creates two tables. A maintainer should treat the “objectives promised but
not taught” gap as the theme-wide fix.
🗺️ The Journey
| # | Verdict | Quest | Score | One-line takeaway |
|---|---|---|---|---|
| 1 | ⚠️ | Database Fundamentals: The Relational Model and ACID | 79 | Core SQL is flawless, but the ACID accounts example fails as written (table never created). |
| 2 | ✅ | Data Modeling: Schema Design and Database Relationships | 86 | Solid ER→schema chapter; only a listed “Surrogate vs Natural Keys” bonus is undelivered. |
| 3 | ✅ | SQL Mastery: Query Language Proficiency | 82 | Every query runs perfectly, but RIGHT JOIN / Window Functions / three-table joins are promised and never provided. |
| 4 | ⚠️ | Database Migrations: Schema Evolution and Version Control | 69 | Alembic core is excellent; the Docker/Flyway path is broken and Liquibase is claimed but never shown. |
| 5 | ✅ | Database Security: Access Control and Data Encryption | 86 | Live injection + pgcrypto demos are faithful; GRANT-vs-DROP claim is imprecise and 3 objectives are untaught. |
🔬 Evidence
All outcomes below come from the sealed walk-evidence.json (agentic execute
engine, per-quest disposable sandbox, real PostgreSQL 16.14). Quoted output is
trimmed from that file.
1. Database Fundamentals — 79 ⚠️ (ran 4/8 runnable snippets, 1 failed)
- passed — Chapter 1
CREATE TABLE members+ INSERT +SELECT * FROM membersreturned both Aria and Bram exactly as shown. - passed — Chapter 2 FK demo: the good insert for member 1 succeeded; member
999 failed with
ERROR: insert or update on table "loans" violates foreign key constraint "loans_member_id_fkey"— matching the quest’s shown error verbatim. - passed — Chapter 4 3NF tables (
authors,books,loans_3nf) created cleanly;\dtconfirmed them, satisfying the Novice Challenge. - passed — Intermediate Challenge (BEGIN → bad FK insert → ROLLBACK) left
count(*)at 0 before and after. - failed — Chapter 3 ACID snippet
BEGIN; UPDATE accounts SET balance = ...errored immediately:ERROR: relation "accounts" does not exist. The quest never issues aCREATE TABLE accountsanywhere. - reasoned — apt/brew/winget/Docker install lines are standard; only the
Linux
aptpackage was confirmed present (Ubuntu 24.04 candidate 16+).
2. Data Modeling — 86 ✅ (ran 2/5 runnable snippets)
- passed — Cloud/Docker path (
docker run ... postgres:16,pg_isready) came up cleanly. - passed — Chapter 2 full schema (departments/courses/students/enrolments) —
all four
CREATE TABLEs incl. composite PK,CHECK (credits > 0), UNIQUE, FK succeeded; the 4-table JOIN returned enrolment rows with grades (Intermediate Challenge validation). - passed — Composite-key claim verified: re-inserting
(1,1)raisedduplicate key value violates unique constraint "enrolments_pkey"; the CHECK and FK constraints both rejected bad inserts. - reasoned — macOS/Windows/Linux-native setup blocks are well-formed but not executed in the Linux sandbox (correctly OS-gated).
3. SQL Mastery — 82 ✅ (ran 8/11 runnable snippets)
- passed — Seed schema (customers/orders) + all seven query snippets ran with
zero errors and produced output matching the inline comments exactly: the
WHERE/ORDER BY/LIMIT (Aria, Cora), INNER JOIN (5 rows, no Dorn), LEFT JOIN
(6 rows, Dorn NULL), GROUP BY/HAVING (Aria/Bram 200.00, Cora 100.00), subquery
(Aria, Bram),
CREATE VIEW customer_value,CREATE INDEX, and the BEGIN/COMMIT transaction usingcurrval(...). - reasoned (gap) — Intermediate Challenge (“Join all three relations”)
and Completion Checklist (“Wrote a query joining at least three tables”) cannot
be satisfied:
\dtconfirms the seed creates onlycustomersandorders. - reasoned (friction) — the
currval()transaction only works in one continuous psql session; the engine reproducedcurrval of sequence ... is not yet defined in this sessionwhen reopened — never flagged in the quest.
4. Database Migrations — 69 ⚠️ (ran 8/10 runnable snippets, 1 failed)
- passed — Flyway-style V1/V2 SQL (
CREATE TABLE users,ALTER TABLE users ADD COLUMN display_name) applied cleanly. - passed — Full Alembic flow:
alembic init,revision, filledupgrade()/downgrade(),alembic upgrade head(addedstatusdefault ‘pending’),alembic downgrade -1(dropped it) — verified via\d orders. - passed — expand-contract SQL and
CREATE INDEX CONCURRENTLY idx_users_handle ON users(handle)both executed. - failed — Cloud/Docker Flyway line failed:
java.net.UnknownHostException: host.docker.internalon native Linux Docker, and it omits-user/-password(errorfor user 'null'). The postgres container also never setsPOSTGRES_DB, soliving_schemanever exists (verified viapsql -U postgres -l). - reasoned (tested marker) — the Linux
pip install alembic psycopg2-binarywill hit PEP 668 (EXTERNALLY-MANAGED) on Ubuntu 24.04+; it only worked in the sandbox because itspip.confpre-setsbreak-system-packages = true, which a learner’s fresh machine won’t have.
5. Database Security — 86 ✅ (ran 4/8 runnable snippets)
- passed — Docker path +
createdb warded_vault; Chapter 1 role/grant SQL ran clean. Checkpoint verified: asapp_login, INSERT/SELECT succeeded, DELETE denied (permission denied for table orders), DROP denied (must be owner of table orders). - passed — Chapter 2 Python: vulnerable
find_userwith' OR '1'='1'returned every row[(1,'alice'),(2,'bob')]; parameterizedfind_user_safereturned zero rows — matching the claim precisely. - passed — Chapter 3 pgcrypto:
pgp_sym_encrypt/pgp_sym_decryptreturnedsuper-secret-value; the stored payload was confirmed binary ciphertext (\xc30d0407...). - tested (correction) — even after
GRANT ALL PRIVILEGES ON orders,DROP TABLEstill failed withmust be owner of table orderswhile DELETE succeeded, showing DROP is ownership-gated, not grant-conferred. - reasoned — TLS
sslmode=verify-fullconnection string is syntactically valid (tested withsslmode=prefer) but not exercised end-to-end (needs a configured CA/cert, reasonable to skip in a scratch sandbox).
🐞 Issues Found
Grouped by severity. Every item cites tested evidence or a quoted quest line; items I only reasoned about statically are labelled (reasoned).
High
- high · Database Fundamentals · Chapter 3 (ACID example, lines 308–316) · tested.
The atomicity worked-example
BEGIN; UPDATE accounts SET balance ...fails withERROR: relation "accounts" does not exist— noCREATE TABLE accountsexists anywhere in the quest. This is the flagship demonstration of the primary “ACID Transactions” objective and breaks for any learner typing along. Fix: addCREATE TABLE accounts (id INTEGER PRIMARY KEY, balance NUMERIC NOT NULL); INSERT INTO accounts VALUES (1,100),(2,100);before theBEGINblock. - high · SQL Mastery · Intermediate Challenge (line ~390) + Completion Checklist
(line ~456) · tested. Both require joining three tables, but the seed
schema (lines 195–214) creates only
customersandorders(confirmed via\dt). The requirement is literally impossible as written. Fix: add a third seed table (e.g.products+ anorder_itemsjunction, or acitiestable) so a three-table join has something to join, or reword the challenge/checklist to two tables.
Medium
- medium · Database Fundamentals · Secondary Objectives (lines 108, 110) ·
reasoned.
CHECKconstraints and “Indexes (preview)” are listed objectives but noCREATE TABLEin the quest usesCHECK, and B-tree/index behaviour is never discussed. Fix: add aCHECKexample and a one-paragraph note that a primary key is backed by an automatic index (a simpleEXPLAINon a PK lookup). - medium · SQL Mastery · Primary Objective “RIGHT joins” (line 99) + Secondary “Window Functions” (line 106) · reasoned. Chapter 2 only shows INNER and LEFT JOIN; RIGHT JOIN appears only in a knowledge-check question (line 283). Window Functions are never mentioned outside the objectives list. Fix: add a short RIGHT JOIN example (or drop it from objectives) and either add a window-function snippet or move it to “further reading.”
- medium · Database Migrations · Cloud/Docker path (lines 184–188) · tested.
Broken as written: missing
-e POSTGRES_DB=living_schema, missing Flyway-user/-password, andhost.docker.internalis unresolvable on native Linux Docker. Fix: add the DB env var + credentials and either--add-host=host.docker.internal:host-gatewayor a shared docker network. - medium · Database Migrations · Linux setup (line 171–174) · tested marker.
pip install alembic psycopg2-binaryfails under PEP 668 on Ubuntu 24.04+/Debian 12+. Fix: recommend a venv (python3 -m venv .venv && source .venv/bin/activate) or note--break-system-packages. - medium · Database Migrations · Intro (line 135) + Mastery Challenge (line 334)
· reasoned. Liquibase is claimed “demonstrated” and offered as an equal option,
but no Liquibase changelog/command ever appears (only a doc link); Flyway is only
static file anatomy plus the broken
infocommand. Fix: add a minimal worked Liquibase/Flyway run, or stop claiming they are demonstrated. - medium · Database Security · Chapter 1 comment (line 211) + intro (line 194) ·
tested. “this login can read, write, AND destroy” / “An application login that
can DROP TABLE is a catastrophe” overstates
GRANT ALL PRIVILEGES: testing confirmed DROP is ownership-gated (must be owner of table orders) even with ALL granted. Fix: clarify that GRANT ALL enables destructive DML (DELETE/TRUNCATE), not DROP, which requires ownership. - medium · Database Security · Auditing pillar + Advanced Challenge (line 335) ·
reasoned. The intro promises “runnable examples” for all four pillars, but
Auditing is prose-only (no snippet), yet the Advanced Challenge requires “a log
entry capturing who modified what and when.” Fix: add a
log_statement='mod'or pgaudit example with sample log output. - medium · Database Security · Secondary Objectives (lines 105, 104) · reasoned.
“Row-Level Security” and “Secrets Management” are listed but never taught; the
only credential shown is a plaintext literal in SQL. Fix: add a short RLS
CREATE POLICYexample and an env-var/vault note, or move them to further study. - medium · Data Modeling · Secondary Objective (line 105) · reasoned.
“Surrogate vs Natural Keys” is listed but never discussed; the schema silently
uses
SERIALsurrogates with no comparison. Fix: add a short surrogate-vs- natural-key paragraph.
Low
- low · SQL Mastery · Chapter 4 transaction (lines 362–367) · tested.
currval('customers_customer_id_seq')only works within one continuous session; a learner who reopens psql hitscurrval ... is not yet defined in this session. Fix: note the single-session assumption. - low · Data Modeling · 3NF explanation (line 309) · reasoned. “
dept_namedepends ondept_id, which depends on the course” conflates a 2NF and a 3NF step; the conclusion is right but the mechanism is loosely stated. - low · Data Modeling · Docker path (lines 184–185) · reasoned. Three of four
platform paths
createdb modeling_realm, but the Docker path connects to the defaultpostgresdb, so the “kingdom” naming silently doesn’t carry through. - low · Multiple · platform-setup snippets · reasoned. brew formula, winget id, and apt package/version drift over time and weren’t all executable in this Linux sandbox; periodically re-verify.
No fail-verdict quest and no data-loss/safety issue was observed — all
BEGIN/ROLLBACK, GRANT, and injection demos are sandbox-scoped and safe.
🔗 Chain Continuity
Ordering & prerequisites hold. The planned order matches the frontmatter
dependency graph: database-fundamentals (no required quests) unlocks the rest;
data-modeling and sql-mastery require fundamentals; database-migrations
requires data-modeling (recommends sql-mastery); database-security requires
fundamentals (recommends sql-mastery). A learner walking this window in order
meets every declared prerequisite before it’s needed. Nice continuity touch:
Data Modeling Ch.3 explicitly says “You met [normalization] briefly in Database
Fundamentals,” and SQL Mastery’s intro (“You have learned to store data; now you
will learn to summon it”) deliberately hands off from Fundamentals.
Each quest is self-contained by database, which is a strength but also masks
gaps. Every quest spins up its own fresh database (datakeep,
modeling_realm, query_codex, living_schema, warded_vault) and re-creates
its own tables. So there’s no stateful hand-off to break — good for isolation.
But it means a quest can’t lean on a previous quest’s schema, and two of them try
to anyway:
- (reasoned) Concept jump: manual IDs →
SERIAL. Fundamentals assigns primary keys by hand (member_id INTEGER PRIMARY KEY,VALUES (1, ...)), but Data Modeling and SQL Mastery switch toSERIAL PRIMARY KEYwith no explanation of the shift to auto-increment — and SQL Mastery’s transaction then relies oncurrval('..._seq'), a sequence concept never introduced. A beginner meets auto-generated keys and sequences with zero scaffolding. - (reasoned) Migrations Ch.2 assumes an
orderstable its own body never creates. The Alembic example runsop.add_column('orders', ...), but the quest’s Chapter 1 only createsusers(V1/V2). The engine’s sandbox happened to haveordersavailable (the flow passed), but a learner running the quest standalone against a freshliving_schemahas noorderstable for the centerpiece example. Migrations recommends SQL Mastery — which does createorders— but in a different database, so it doesn’t carry over. - CHECK constraint continuity is accidental, not designed. Fundamentals lists
CHECKas an objective but never shows it; Data Modeling then usesCHECK (credits > 0)without explaining it. Neither quest teaches CHECK explicitly, so the concept falls through the crack between the two.
Where a real developer-class beginner would get stuck: (1) the ACID snippet in quest 1 fails on the first copy-paste; (2) quest 3’s Intermediate Challenge asks for a three-table join the schema can’t support; (3) quest 4’s “no local install” Docker path is the most appealing to a beginner and is exactly the one that’s broken on Linux. The teaching prose is consistently strong; the friction is concentrated in the challenge/objective/setup boilerplate over-promising relative to the body.
🧠 Reasoning & Method
- Mode:
execute(sealed by the workflow). I consumedwalk-plan.jsonandwalk-evidence.json/walk-evidence.mdas-is — I did not run, regenerate, or edit the engine or its evidence, and I made no changes to any quest content. My only write is this report. - What was tested vs reasoned: every
passed/failedabove is from a command the engine actually ran in its disposable PostgreSQL 16 sandbox (per-quest snippet coverage: 4/8, 2/5, 8/11, 8/10, 4/8 runnable snippets). Items I derived by reading the quest source in plan order — untaught objectives, the SERIAL/ sequence concept jump, the migrationsordersassumption, the 3NF wording — are explicitly labelled (reasoned) and cite the exact quoted line. - Coverage caps & limits: this is window 1 of 2 — the planner selected 5
of the level’s 8 quests (
stats.windowed,window.size 5). The remaining 3 quests of Level 0110 (e.g. query-optimization, backup-recovery, connection- pooling per the unlock lists) were not walked this run and will be swept in the next window; the level is not certified complete by this session. OS- gated macOS/Windows install paths could not run in the Linux sandbox and were reasoned only. The TLSverify-fullpath was not exercised end-to-end (needs a CA cert). The migrationspipstep only “passed” because the sandbox’s pip.conf disables PEP 668 — I’ve flagged that as a learner-environment gap, not a green. - Confidence: high on the executed findings (real Postgres output quoted in the sealed evidence), medium-high on the reasoned continuity findings (grounded in quoted quest lines + the frontmatter dependency graph). The engine reported 0 errored quests and avg 80.4% at ~$4.02.
Machine evidence summary (verbatim from walk-evidence.md): “5 quests
evaluated · ✅ 3 pass · ⚠️ 2 warn · ❌ 0 fail · avg 80.4%“.