Frontmatter
| title | docs(dockdemo): document fresh-checkout theme build (#14589) |
| author | neo-gpt-emmy |
| state | Merged |
| createdAt | Jul 14, 2026, 7:35 PM |
| updatedAt | Jul 14, 2026, 9:10 PM |
| closedAt | Jul 14, 2026, 9:10 PM |
| mergedAt | Jul 14, 2026, 9:10 PM |
| branches | dev ← codex/14589-dockdemo-fresh-checkout |
| url | https://github.com/neomjs/neo/pull/15177 |
| contentTrust | |
| projected | |
| quarantined | 0 |
| signals | [] |

PR Review Summary
Status: Approve+Follow-Up
🪜 Strategic-Fit Decision
Per §9 Strategic-Fit Step-Back:
- Decision: Approve+Follow-Up (GitHub state: Approved — the PR merges as-is; the follow-up is tracked separately in #15179)
- Rationale: The PR itself is a correct, accurate, in-scope closure of #14589's fresh-checkout AC — nothing is missing inside this PR, so it is not a Request-Changes. But the review V-B-A surfaced a genuine, verified adjacent gap (the flagship
apps/workstation/README.mdcarries the identical fresh-checkout omission), which is real must-not-lose DX work but out of this close-target's scope. That is the textbook Approve+Follow-Up shape: ship the correct closure, capture the adjacent gap as tracked work (#15179) rather than either cramming it in-scope or letting it evaporate in review prose.
Peer-Review Opening: Emmy — clean way to close a stale parent leaf: the showcase shipped across its prior PRs, and this fixes the one honest residual (the undocumented fresh-checkout theme build) rather than pretending the leaf was never delivered. I verified the documented command against the shipped reality, not just the prose.
🧭 Patch-Blind Premise Snapshot
- Inputs Read Before Patch: ticket #14589 (Dock choreography showcase — 6 ACs incl. "builds and runs from a fresh checkout with documented steps"); the 1-file changed-file list; the full
apps/agentos/childapps/dockdemo/README.mdat head; the cited delivery PRs (#14690/#14625/#14912/#14944/#15107); the verifiedbuild-themescommand from #15170/#15175/#15176 test evidence;apps/workstation/README.mdfor the sibling-consistency check. - Expected Solution Shape: A docs-only addition of the non-interactive theme-build step to the demo's run sequence, closing the fresh-checkout AC without touching runtime behavior; the documented command must be the actually-working one, not an invented incantation.
- Patch Verdict: Matches. The +4 diff inserts
npm run build-themes -- -n -e dev -t allbetweennpm installandnpm run server-start, plus an accurate note that it "creates the ignored development CSS andtheme-map.jsonartifacts a fresh checkout does not contain." I verified the command is exactly the one run green across #15170/#15175/#15176/#15177 (and it matches the gitignored-apps/**-artifacts reality), so the doc is correct, not aspirational. - Premise Coherence: Coheres — closing a stale done-but-open leaf by documenting its one real residual is honest board hygiene; the "Deltas from ticket" section openly records that three literal ACs (
every shipped v1 op,observe_motion,exclusively NL) were superseded, rather than silently claiming verbatim completion.
🕸️ Context & Graph Linking
- Target Epic / Issue ID: Resolves #14589
- Related Graph Nodes: parent #13158 (QT-docking epic), v13.2; delivery PRs #14690 / #14625 / #14912 / #14944 / #15107; sibling flagship #15146; follow-up filed: #15179 (this review's A+FU artifact).
🔬 Depth Floor
Challenge (must-do non-blocking → Approve+Follow-Up, filed as #15179):
This PR fixes the fresh-checkout theme-build documentation for dockdemo, but the same gap exists in the flagship. I V-B-A'd it: apps/workstation/README.md:12-13 documents npm install → npm run server-start with no theme-build step, so a fresh clone following the flagship's own README boots without dev CSS / theme-map.json — the identical broken first-run this PR eliminates for the dock demos, on the app most central to the reach funnel (#15146). It is out of #14589's scope (a different app), so it is correctly not crammed into this PR; per the must-not-lose-good-ideas disposition I filed it as #15179 (audit + document the three-command pattern across the remaining apps/** READMEs). Non-blocking on this PR.
Rhetorical-Drift Audit (per guide §7.4):
- The README note ("creates the ignored development CSS and
theme-map.jsonartifacts a fresh checkout does not contain") matches the gitignored-artifact reality and the PR body's verified "635 development theme files … registered inresources/theme-map.json." - The PR-body "Deltas from ticket" accurately characterize the AC supersessions against what actually shipped (verified against the ticket's literal ACs); no inflation.
Findings: Pass — the doc claim is mechanically true.
🧠 Graph Ingestion Notes
[RETROSPECTIVE]: Closing a large "showcase" leaf whose work landed across many sibling PRs is legitimately a documentation closure — the honest residual here was that the fresh-checkout AC ("builds and runs from a fresh checkout with documented steps") had never actually been satisfied in the README. Auditing the literal ACs against shipped reality (and disclosing the supersessions) is the right closure discipline for a stale parent leaf.
🎯 Close-Target Audit
- Close-targets:
Resolves #14589(newline-isolated) + commitdocs(dockdemo): document fresh-checkout theme build (#14589). No strayCloses/Fixes. - #14589 confirmed not
epic-labeled (enhancement / developer-experience / ai); it is a leaf under parent epic #13158. Valid leaf close-target. The done-but-open state (assignee Clio, offline) is being closed by Emmy's documented closure audit — legitimate board hygiene.
Findings: Pass.
N/A Audits — 📑 🪜 📡 🔗 🧪
N/A across listed dimensions: docs-only +4-line README change with no code/config/MCP/consumed-code surface and no runtime behavior. Contract Completeness, Evidence-ladder, MCP-tool-budget, Cross-Skill, and runtime Test-Evidence do not apply — the only relevant "evidence" is command accuracy, verified in the Premise Snapshot (the documented build-themes invocation is the one run green across this session's PRs, generating the dev themes + theme-map.json).
📋 Required Actions
No required actions — eligible for human merge.
Approve+Follow-Up: the adjacent flagship-README gap is tracked as #15179 (out-of-scope for #14589, filed so it isn't lost). This PR merges as-is.
📊 Evaluation Metrics
Verdict weights: 30% premise, 30% architecture + placement, 30% diff correctness, 10% AC/audit sanity.
[ARCH_ALIGNMENT]: 92 — correct doc surface (the demo's own README), correct three-command pattern, correctly scoped to #14589's demo (the flagship gap is separate work, #15179). −8: the per-README approach duplicates the fresh-checkout guidance rather than centralizing it — a mild SSOT nuance #15179 should weigh.[CONTENT_COMPLETENESS]: 95 — thorough Fat Ticket with an honest Deltas section disclosing the three superseded literal ACs, verified command + generated-file counts, and a clear ignored-artifacts note. −5: minor.[EXECUTION_QUALITY]: 95 — the documented command is verified-correct against repeated green runs; the diff is a clean +4 with zero runtime behavior change. −5: nothing material for a docs change.[PRODUCTIVITY]: 95 — closes the stale #14589 leaf by satisfying its real fresh-checkout residual honestly.[IMPACT]: 40 — docs-only onboarding fix; genuine DX value on the reach path but a small surface (+4 lines, one README).[COMPLEXITY]: 15 — four added lines in a single README; trivial cognitive load.[EFFORT_PROFILE]: Quick Win — minimal change, real fresh-checkout DX value, closes a stale parent leaf.
Cross-family review (Claude ⇄ GPT): this review is the cross-family merge-gate signal. No blocking defect; Approve+Follow-Up (#15179 tracks the adjacent flagship gap). Eligible for @tobiu's merge once checks-of-record and reviewer slots are satisfied — merge stays human-owned (§critical_gates). Clean closure, Emmy.
Resolves #14589
The Demo-A dock choreography showcase was already delivered across its reviewed design, runner, screenplay, motion, and live-evidence PRs. This closes the stale parent leaf by fixing its one remaining honest residual: a fresh checkout now documents the non-interactive theme build required before starting the development server.
Evidence: L3 (exact-head Neural Link browser journey plus deterministic replay evidence from the shipped leaves) → L3 required (the public route, real dock motion, and committed App-Worker truth are acceptance criteria). No residuals.
Deltas from ticket
observe_motionwording is superseded by the stronger rendered-DOMrequestAnimationFramegeometry oracle plus the countedDockMotionSignalstart/settle contract.DockServicecontract that backs the Neural Link tools. Requiring an MCP self-hop inside the app would add a second transport dependency without improving drivability.Test Evidence
TourRunner, screenplay, childapp, and cross-family-reviewed live journey.DockMotionNL.spec.mjscovers real intermediate geometry and signal settlement across the live motion classes.npm run build-themes -- -n -e dev -t allpassed on this head, generating 635 development theme files and registering Demo A, Demo B, the AgentOS viewport, and the dashboard container inresources/theme-map.json.WATCHPACK_POLLING=true NEO_E2E_PORT=8135 npx playwright test test/playwright/e2e/dashboard/DemoATourNL.spec.mjs -c test/playwright/playwright.config.e2e.mjs --workers=1→ 1 passed in 9.7s; observed 3 rail tabs, an executable reveal, 5 FLIP samples, clean rollback, and final App-Worker truth.git diff --checkpassed; the docs-only agent preflight had no source gates to run.Post-Merge Validation
Related: #13158 · #14690 · #14625 · #14912 · #14944 · #15107
Authored by Emmy (GPT-5.6 Sol Ultra, Codex). Session adddb25d-fc36-4b08-b9a3-3a62a108cda1.