Commit Graph

16 Commits

Author SHA1 Message Date
josh 8e4609ae20 docs(02): close phase 2 — gap closure verified, 24/24 + 4/4 PASS
ci / lint + test + validate-assets + build (push) Failing after 4m54s
Plan 02-06 (UAT gap closure) executed cleanly via /gsd-execute-phase 2:
6 atomic commits (5 task + 1 SUMMARY), 333/333 vitest green
(was 312, +21 cases), npm run ci exit 0, Playwright e2e exit 0.

Hint copy chosen: "Begin where the soil is bare." (plan's #1 ranked
candidate, bible voice).

gsd-verifier re-verification confirms:
- 24/24 Phase-2 REQ-IDs structurally PASS (no regressions)
- 4/4 UAT gaps closed (G1 white halo, G2 first-run prompt,
  G3 tile contrast, G4 gate wall context)
- All scope constraints honored: zero painted assets, zero new npm
  deps, V1Payload unchanged, sim purity preserved
- Banner concerns #5/#7/#6/#9/#10 still defended

VERIFICATION.md frontmatter status flipped gaps_found → verified.
ROADMAP Phase 2 marked complete (6/6 plans, completed 2026-05-09).
STATE.md updated with phase-2 completion narrative.

7 HUMAN-UAT.md tone items remain pending (Lura voice, letter cadence,
Begin tonal feel, ≥5min absence flow, gate visual indicator overlay,
plus the new chosen first_run_hint copy review).

Phase 2 vertical slice now plausibly ships as a free standalone
Season-1 prologue — banner concern #2 (7-Season scope risk) escape
hatch realized.

Next: /gsd-discuss-phase 3 (Watercolor & Cello Aesthetic — GARD-10,
AEST-01..06, UX-05).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 12:37:17 -04:00
josh 0ed79b0eb1 docs(02-06): plan UAT gap closure (G1-G4)
Single Wave 0 plan addressing the 4 first-impression UX gaps from the
2026-05-09 live UAT:

- G1 (BLOCKING) src/index.css imported from main.tsx — body bg #1a1a1a,
  serif color #e8e0d0 — closes the white halo around the dark canvas
- G2 (BLOCKING) FirstRunHint component reading externalized
  'Begin where the soil is bare.' from ui-strings.yaml + UiStringsSchema
  extension (Zod default strip mode would otherwise drop the key) +
  session-slice firstRunHintDismissed flag (NOT V1Payload)
- G3 (HIGH) tile-renderer outline brightening 0x4d4d52 → 0x5a5a60 +
  hover bump 0x7a7a82
- G4 (MEDIUM) gate-renderer wall-band Phaser primitive at gate column
  with alpha 0.15-0.20

Phase 3 watercolor + cello deferral preserved: zero painted assets,
zero new npm dependencies, V1Payload unchanged. Plan-checker found
1 BLOCKER (Zod schema strip mode breaking G2 silently) + 1 WARNING
(hint copy ranking pushed non-bible-voice option first); planner
revised; residual frontmatter + 3 copy refs fixed inline.

Plan: 5 tasks, 16 files_modified, depends_on [02-01..02-05],
requirements [GARD-01, AEST-07, UX-01] supplemental coverage.
ROADMAP.md annotated with Wave 1/Wave 2 headers.

Next: /gsd-execute-phase 2.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 12:05:52 -04:00
josh 6f680f4731 test(02): VERIFICATION → gaps_found after live UAT (4 first-impression UX gaps)
User dev-server walkthrough surfaced 4 functional UX gaps beneath the verifier's
24/24 structural PASS:

  G1 (blocking) — no global page CSS → white halo around #1a1a1a canvas
  G2 (blocking) — no first-run prompt after Begin → player confused
                  (A Dark Room rule needs the canonical first-prompt)
  G3 (high)     — tile outlines too dim → grid reads as 'gray check block'
  G4 (medium)   — gate visual at canvas (880, 384) reads as stray rectangle

Phase 3 watercolor deferral preserved — every fix uses Phaser primitives or
one CSS file, not painted assets. STATE.md → status: gaps_found.

Next: /gsd-plan-phase 2 --gaps

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 11:37:44 -04:00
josh e5d449095d docs(02-05): complete letter-settings-e2e plan
- 02-05-letter-settings-e2e-SUMMARY.md: full plan summary (frontmatter
  + decisions + REQ table + self-check). All 24 Phase-2 REQ-IDs
  structurally satisfied across the 5-plan set.
- STATE.md: marked Plan 02-05 complete; Phase 2 ready for
  /gsd-verify-work; progress 19% → 22%; next action set to verifier.
- ROADMAP.md: Plan 02-05 row marked [x] with duration + SUMMARY ref.
- REQUIREMENTS.md: UX-02 / UX-10 / CORE-03 / PIPE-07 marked complete
  with traceability annotations citing Plan 02-05's contribution;
  per-row Plan 02-05 references added to UX-02, UX-10, CORE-03;
  PIPE-07 traceability table row updated.
2026-05-09 11:16:02 -04:00
josh de3f55b1c4 docs(02-04): complete lura-gate-beats plan
- 02-04-lura-gate-beats-SUMMARY.md created. Documents:
  - 3 Lura Ink beats authored in bible voice (warmth anchor, contrast not co-griever)
  - Build-time inklecate compile pipeline with bundled binary (BLOCKER 4 mitigated)
  - RESEARCH Assumption A6 verified first-try on Windows
  - 47 new Vitest cases (264/264 total green); npm run ci exits 0
  - sim/narrative gating pure-state; STRY-10 mechanically defended
  - sim/* contains zero inkjs imports; ESLint sim-purity rule still green
  - 4 lazy code-split chunks emitted for compiled Ink JSON
  - Compost-toast UI deferred to Plan 02-05 (folded into persistence-toast surface)
  - 5 auto-fix deviations documented (Rule 1 + Rule 3); 2 tightenings; 0 architectural changes
- STATE.md updated: progress 18% → 19%; Phase 2 plans 3/5 → 4/5; 217 → 264 tests;
  per-phase metrics updated (Phase 2 4/5 plans, ~66min, ~16min/plan).
- ROADMAP.md: Plan 02-04 marked complete with duration; progress table updated.
- REQUIREMENTS.md: STRY-01 / STRY-06 / STRY-07 / STRY-10 marked complete with
  full traceability annotations.

Plan 02-05 (offline catchup + letter + Settings + Playwright e2e) is the only
remaining Phase-2 work.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 10:41:24 -04:00
josh 348c76a537 docs(02-03): complete harvest-journal-fragments plan
Plan 02-03 (Wave 1 second plan) executed in sequential mode. 3 atomic
commits + this metadata commit:

  - f192e82 — Season-1 fragments + sim/memory selector + harvest/compost
  - 572c861 — journal + reveal modal + harvest pointer wiring
  - 39bfcd2 — scripts/check-bundle-split.mjs (PIPE-02 structural verifier)

Outcomes:
  - 217/217 tests green (was 163; +54 new this plan)
  - npm run ci exits 0 with check:bundle-split integrated AFTER build
  - GARD-03 / GARD-04 / MEMR-01..06 / PIPE-02 satisfied end-to-end
  - The full Season-1 active-play loop works on real authored content:
    plant → grow → ready → click → harvest (deterministic, gated, no-dup,
    sentinel fallback for Pitfall 8) → reveal modal pops with full text →
    close → fragment files into journal under Season 1 → journal icon
    appears (D-23 first-harvest gate, invisible before) → click opens
    full-screen Memory Journal grouped by Season (D-24, MEMR-05 selectable
    DOM)
  - 17 Season-1 fragments authored in bible voice (9 warm + 3
    contemplative + 2 heavy + 1 _meta sentinel + 2 long-form Markdown)
  - Plant-type unlock thresholds finalized (Plan author's discretion
    within D-05): rosemary @ 0 / yarrow @ 3 / winter-rose @ 6. Pitfall 10
    boundaries pinned (locked at 2/5, unlocked at 3/6).
  - Pool-exhaustion sentinel chosen over repeat-most-recent — preserves
    no-dup invariant; warm pool depth ≥9 makes the sentinel structurally
    unreachable in normal Phase-2 play
  - compost-acknowledgements.ink content shipped ahead of Plan 02-04's
    Ink runtime; Garden.ts has TODO at the wiring point
  - PIPE-02 structurally verified by scripts/check-bundle-split.mjs (Vitest-
    importable Node ESM with runCheck() export)

Phase 2 progress: 3/5 plans complete (Wave 0 + both Wave 1 plans). Wave 2
(02-04 lura-gate-beats + 02-05 letter-settings-e2e) is the only remaining
Phase-2 work.

SUMMARY at .planning/phases/02-season-1-vertical-slice-soil/02-03-harvest-journal-fragments-SUMMARY.md.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 10:16:02 -04:00
josh d052a35478 docs(02-02): complete begin-plant-grow plan
- Add 02-02-begin-plant-grow-SUMMARY.md (3 atomic commits, 35 new tests, BLOCKER 3 invariant honored, RESEARCH Assumption A5 verified, deviations documented)
- STATE.md — advance to Plan 02-02 complete (2/5 plans in Phase 2; 9 total plans complete)
- ROADMAP.md — mark 02-02 plan complete; phase progress 2/5
- REQUIREMENTS.md — mark GARD-01, GARD-02, AEST-07, UX-01 complete (with traceability comments)
2026-05-09 09:50:05 -04:00
josh 38535bac73 docs(02-01): complete foundations plan
- 02-01-foundations-SUMMARY.md authored with frontmatter dependency
  graph, key-files manifest, decisions log, patterns established,
  test-count breakdown (72 new tests), TICK_MS=200 (no drift), and
  ESLint sim-purity rule landed (defended-option clause did not trigger)
- STATE.md: Phase 2 progress 1/5 plans (Wave 0 complete);
  velocity table updated with Plan 02-01 ~12min entry; decisions log
  cites BLOCKER 3 split, V1Payload extension, ESLint rule
- ROADMAP.md: Phase 2 row updated to 1/5; 02-01 plan marked [x] with
  duration + summary backlink
- REQUIREMENTS.md: CORE-02, CORE-03, CORE-11, UX-10, UX-11 marked
  complete with annotations; traceability table updated

Plan execution metrics:
- 3 atomic commits (58db532, fe99058, 2a8d354)
- 72 new tests across 9 test files (cushion above plan estimate of 54)
- Total test count: 128/128 green
- npm run ci exits 0
- Duration: ~12 min (sequential mode)
2026-05-09 09:26:37 -04:00
josh 5ddaabcdc1 docs(02): cite D-12, D-16, D-32 in plan must_haves + record planning complete
ci / lint + test + validate-assets + build (push) Successful in 9m39s
Decision-coverage gate found three CONTEXT.md decisions structurally
implemented but not literally cited by their D-NN tags. Added one-line
must_haves entries citing each:

- D-12 (Lura as discrete gate visits, 3 beats this Season) → 02-04
- D-16 (all Lura dialogue authored in Ink, runtime via inkjs) → 02-04
- D-32 (Zustand 5 store as the Phaser↔React bridge; sim never imports
  store, CORE-10 enforced) → 02-01

STATE.md flipped from in_progress (context gathered) to ready_to_execute
with the planning summary in stopped_at.

All 24 REQ-IDs + 34 D-XX decisions now covered.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 03:19:44 -04:00
josh 350e976fed docs(state): record phase 2 context session
Phase 2 discuss-phase complete; STATE.md now reflects context-gathered
status, updated stopped_at narrative, and next-action pointer to
/gsd-plan-phase 2.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 01:39:52 -04:00
josh 49ba411a00 verify(01): phase 1 verification — all 16 REQ-IDs PASS, CI green
ci / lint + test + validate-assets + build (push) Successful in 9m38s
All 16 Phase-1 requirements verified against the live codebase:
- CORE-01, CORE-04..CORE-10: scaffold builds; save layer (IDB + fallback,
  envelope, migrations, snapshots, persist, codec) all green (53 tests / 12 files)
- PIPE-01: Vite-native content pipeline; schema violation fails build
- PIPE-03: asset provenance gate; refused-sample fixture proves gate structure
- PIPE-05: both doctrine docs authored + 8 doc-lint assertions green
- PIPE-06: ci.yml runs npm run ci on every push + PR
- AEST-08: ProvenanceSchema 6 fields; CI gate on every commit
- AEST-09: human curation gate in place; IOU records Path C deferral to Phase 5
- STRY-09: /content/ convention established (vacuously satisfied in Phase 1)
- UX-13: anti-fomo-doctrine.md authored + review-enforced

Deferred (non-blocking): 10-20 real north-star images (AEST-09 Task 2) — Phase 5.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-09 00:17:20 -04:00
josh 8ace3db7b4 docs(01-07): complete ci-workflow plan + Phase 1 closure metadata
- 01-07-ci-workflow-SUMMARY.md: structural enforcement map, Phase 2/8 handoff notes, threat T-01-08 mitigation confirmed
- 01-VALIDATION.md: per-task table populated (12/13 green, 01-05-T2 partial — checkpoint:human-verify awaiting north-star image curation); status flipped to executed
- ROADMAP.md: progress table marks Phase 1 as 7/7 with 01-05 partial annotation
- STATE.md: position advanced to Plan 7 of 7 complete; performance trend; Plan 01-05 Task 2 explicitly tracked as the only outstanding deliverable; next action = human curation pass then /gsd-verify-work
- REQUIREMENTS.md: PIPE-06 marked complete (CI workflow runs Vitest on every push/PR)
2026-05-09 00:00:23 -04:00
josh 1e99356b27 docs(01-01): complete scaffold and test infra plan
Wave 1 of Phase 1 complete. Phaser 4 + React 19 + Vite 8 + TypeScript 6
scaffold builds (npm run build green); 15 Phase-1 deps installed at
locked versions; 7 architectural-firewall directories ready under src/;
repo-root /content/ + /assets/ trees ready; Vitest (happy-dom) +
Playwright wired with passing sentinel; package.json scripts
pre-declared for the entire Phase 1 plan-set so Wave 2 can run in
parallel without colliding on package.json.

3 deviations auto-fixed (1 blocking, 2 missing-critical):
1. Built scaffold by hand because @phaserjs/create-game v1.3.2 is
   interactive-only — plan's documented fallback path was used.
2. build script wraps tsc -b before vite build so strict-TS gates
   every build (CLAUDE.md Code Style invariant).
3. Added *.tsbuildinfo to .gitignore (TS 6 incremental cache files).

Wave 2 readiness: Plan 02 must use ESLint 9 flat-config format
(eslint.config.js); legacy .eslintrc.* not supported. fake-indexeddb
pre-installed for Plan 03 IDB tests. inkjs + inklecate installed but
no .ink files compiled (Phase 2 PIPE-02 owns that).
2026-05-08 23:23:15 -04:00
josh 39563f6934 docs(01): plan phase 1 — 7 plans across 3 waves, verified after 1 revision
Wave 1: Plan 01 (scaffold + test infra)
Wave 2: Plans 02 (eslint firewall), 03 (save layer), 04 (content pipeline),
        05 (asset provenance — autonomous:false human-curate checkpoint),
        06 (doctrine docs)
Wave 3: Plan 07 (CI workflow)

All 16 Phase-1 REQ-IDs covered. Plan-checker found 4 blockers + 6 warnings
on first pass; revision iteration 1 landed all 10 fixes; iteration 2
returned VERIFICATION PASSED. Two orchestrator judgment calls during
revision: (1) implement CORE-04 localStorage fallback in Phase 1 (the
literal requirement and ROADMAP success criterion #2 both call for it),
(2) reclassify STRY-09 as vacuously satisfied in Phase 1.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 23:09:08 -04:00
josh 8f58e811b5 docs(01): capture phase 1 context
User locked four implementation decisions:
- AI asset pipeline: minimum-viable schema + sidecar provenance + CI gate;
  vendor/model deferred to Phase 5; 10–20 hand-curated AI generations as
  Phase 1 north-stars
- Save v1: minimal payload (Phase 2 fields only); synthetic v0→v1 migration
  proves the chain works; first real migration ships in Phase 4
- Doctrine docs: anti-FOMO consolidation + Season 7 principle-level rest-state
  contract; both in .planning/; no CI/lint enforcement
- Phase 1 scaffold caps at the 5 success criteria — BigQty, Zustand store, and
  tick scheduler defer to Phase 2

Pushback recorded: user prefers minimum-viable infrastructure for support
systems; no ceremonial workflows.
2026-05-08 22:03:41 -04:00
josh eecb79ae80 docs: create roadmap (8 phases) 2026-05-08 21:37:11 -04:00