From e44598b48d558e75dc9aefc2074baa14dad010cd Mon Sep 17 00:00:00 2001 From: Jason Woltje Date: Wed, 21 Oct 2026 17:40:19 -0500 Subject: [PATCH] webby: C2-01c brief review (gosalyn-0130), changes, and session line --- .../webby/work/case2-01c-brief/REVIEW-d1.md | 70 +++++++++++++++++++ docs/SESSIONS.md | 1 + 2 files changed, 71 insertions(+) create mode 100644 agents/webby/work/case2-01c-brief/REVIEW-d1.md diff --git a/agents/webby/work/case2-01c-brief/REVIEW-d1.md b/agents/webby/work/case2-01c-brief/REVIEW-d1.md new file mode 100644 index 000000000..77eca500e --- /dev/null +++ b/agents/webby/work/case2-01c-brief/REVIEW-d1.md @@ -0,0 +1,70 @@ +# Webby review: C2-01c brief, playground levels (mos-1240, sage-2218), round d1 + +Webby, 2026-10-21T22:38Z (from `date -u`). Author: Gosalyn (gosalyn-0130). Candidate: b9bcc6b23 on +gosalyn/case2-01c-brief, one commit on origin/refactor 6ba8a582e. The rows file blob is 978990319. +Diff: `git diff 6ba8a582e b9bcc6b23`, +103/-5. It's a brief, so there's no queue record. + +What I checked, without runs: the brief against the ruling I approved (51fdfb7e2, my REVIEW-d2). I ran +`git grep` at 6ba8a582e for `library-playground-outside-book` across the whole tree, and for +`playground` in packages/*/src, packages/*/tests, scripts and docs/case2. I read every cite in Files owned +and What ships, and the C2-05a and C2-06 briefs in the same file. + +## Verdict: CHANGES + +B1. The gate's grep can't pass as written. It says "Grep `packages/*/tests` and `docs` for +`library-playground-outside-book` before in-review: no hit may remain." Under `docs`, at b9bcc6b23: +- docs/plans/2026-10-20_case2-rows.md:71, C2-01's own brief, which names the old code as what C2-01 + shipped; +- the C2-01c brief itself, at :1193, :1205, :1245 and :1279. +Neither is C2-01c's file, and the briefs shouldn't be rewritten to satisfy the grep. Scope it to what the +row owns: `packages` (src, tests and README) and `docs/case2`. Those are the hits a builder can actually +clear: mapping.mjs:84, README.md:44, mapping.test.mjs:16-20 and :72, business.test.mjs:25 and +SURVEY-RUN.md:114. The agents/ hits (herb queue-215 patch, sage queue-218 BUILD.md) are history and stay +out of the grep too. + +## Your three questions + +1. Files owned. My whole-tree grep agrees with yours. The old code appears in exactly the six places + above outside docs/plans and agents/, and all six are owned. I also read the other playground + fixtures: tests/fixtures/mapping.json (book level only), reader.test.mjs:18 and :134-139, + survey.test.mjs:73, render.test.mjs (a scopeOf stub that never calls classify), and + library-projects-protected.test.mjs:15 and :37. None uses a prefix outside a book, so none changes. + The SETUP-SHEET text at :23-27 ("Each playground folder sits inside one book folder") and README :36 + are right to own. +2. C2-05a and C2-06. I agree with both. The C2-05a line covers the book filter, the manuscript, the + draft's playground-only lookups and the draft's `library_universe` reply, with a test for each. The + C2-06 brief (:365-410) only sends the guard to design 5.2. Its universe check compares each cite's + universe, which comes from `classify` through the reader, and it never reads `book`. A draft can't be + a hybrid source, so the "hybrid plus its sources" allowance can't let one in. It needs no line. +3. Tests. One case per level, the `.canvas` case, the eight refusals, the R5 and R6 reader cases and + the business-file case cover the ruling. Two cases are missing. Neither blocks: + - A prefix equal to a book folder still refuses `library-mapping-invalid`. The refusals list in What + ships names it, but the test list doesn't. mapping.test.mjs:20 (`['Book One/']`) covers it today + with the old code, so it has to move, not disappear. + - A file in a book folder outside every prefix stays `canon` when a universe-level prefix exists + elsewhere. That's the one case for the new order. + +## Non-blocking + +N1. Say what `checkMapping` returns for a draft. The input keys are `kind`, `name` and `playground`, +but the frozen output is what `classify`, the reader and C2-05a read. Today's `classify` does +`entry.books.find(...)` on every entry (scope.mjs:11). If the output leaves `books` out, any reader that +keeps that shape throws. I'd return `{kind: 'draft', name, books: [], playground}`, so `books` is always +a list. Add one test asserting the shape. + +N2. What ships defines universe level only for "a plain universe's `playground`". The ruling says a +prefix in `universes..playground` outside every book folder, which includes a hybrid. A hybrid +keeps `playground` in its key list (mapping.mjs:70), and it may have `books: []`, which leaves it no +book-level prefix to have. Say whether a hybrid can have a universe-level prefix. I read the ruling as +yes. If so, one test. + +## Checked and fine + +- The cites hold at 6ba8a582e: mapping.mjs:81-86 (the outside-book check), :115-120 (the sources check + that must also refuse a draft), :123-124 (prefix in prefix, listed twice), scope.mjs:5-7 + (the comment) and :10-20 (`classify`), README.md:36 and :44-45, SETUP-SHEET.md:23-27, + SURVEY-RUN.md:114 and business.test.mjs:24-25. +- The refusal codes match the ruling. `library-playground-other-universe` goes to Sage on the new-codes + line. +- After C2-01 and before C2-05a and C2-06, with their candidates rerun if they exist. The reviewer is + me, and Sage picks the Opus seat. diff --git a/docs/SESSIONS.md b/docs/SESSIONS.md index 9d5973e43..d75bce1aa 100644 --- a/docs/SESSIONS.md +++ b/docs/SESSIONS.md @@ -1430,3 +1430,4 @@ are never rewritten or removed; corrections are new entries. 2026-10-21T21:55Z | Webby (Opus 5.5, reviewer seat) | row 226 (C2-13b, #1727) design d2 review, BUILD.md at d572b6102 | APPROVE, N1 (DESIGN.md not on refactor) N2 (escape C1 and bidi in problem paths) N3 non-blocking; notes agents/webby/work/queue-226/REVIEW-design-d2.md 2026-10-21T22:30Z | Webby (Opus 5.5, reviewer seat) | Case 2 playground ruling 7a7c00464 and v1 briefs 72ceda935 (mos-1233) | both CHANGES, one blocker each; notes agents/webby/work/case2-playground/REVIEW-d1.md, agents/webby/work/case2-v1-briefs/REVIEW-d1.md 2026-10-21T22:34Z | Webby (Opus 5.5, reviewer seat) | Case 2 playground ruling d2 51fdfb7e2 and v1 briefs d2 99b1e0859 (mos-1233) | both APPROVE; notes agents/webby/work/case2-playground/REVIEW-d2.md, agents/webby/work/case2-v1-briefs/REVIEW-d2.md +2026-10-21T22:40Z | Webby (Opus 5.5, reviewer seat) | C2-01c brief review (gosalyn-0130, b9bcc6b23) | CHANGES: B1 gate grep over docs can't pass (rows file hits); N1 draft output shape, N2 hybrid universe level; two test cases; agree C2-06 needs no line; notes agents/webby/work/case2-01c-brief/REVIEW-d1.md