Skip to content

feat(spec): #48 Three.js game β€” SpecKit specify + clarify (Phase 0.5)#95

Draft
TortoiseWolfe wants to merge 3 commits into
mainfrom
047-threejs-game
Draft

feat(spec): #48 Three.js game β€” SpecKit specify + clarify (Phase 0.5)#95
TortoiseWolfe wants to merge 3 commits into
mainfrom
047-threejs-game

Conversation

@TortoiseWolfe
Copy link
Copy Markdown
Owner

Summary

  • Phase 0.5 per ~/.claude/plans/gleaming-kitten-execution.md β€” strategic stepping stone before GrimGlow Phase 1a (browser fork).
  • First feature to exercise the freshly-vendored .specify/scripts/bash/ SpecKit harness (PR chore(speckit): vendor harness scripts under .specify/scripts/bash/Β #83, commit cb6312c).
  • /speckit.specify and /speckit.clarify complete; spec is now ready for the v1.0.2 mandatory wireframe gate.

Closes: none yet β€” implementation is multi-session.
Tracks: #48.

What's in this PR (so far)

  • features/enhancements/047-threejs-game/spec.md β€” 215+ line SpecKit spec covering 5 user stories (P1: visit + theme reactivity; P2: reduced motion + Pa11y exclusion; P3: mobile responsive), 8 functional + 6 non-functional requirements, 7 edge cases, 8 out-of-scope items, and 10 measurable success criteria.
  • features/enhancements/047-threejs-game/checklists/requirements.md β€” spec quality checklist, all items green.

Clarifications resolved (session 2026-05-15)

# Question Answer
1 v1 scene content ScriptHammer-themed sculpt: stylized procedural hammer + anvil + DaisyUI-themed accents (procedural only).
2 WebGL-unavailable / GPU-context-lost fallback UX Themed CSS/SVG silhouette panel + explanatory message + user-actionable Retry button. No silent auto-retry.
3 Camera control bounds Constrained polar angle (no flipping under ground plane) + 360Β° yaw + bounded zoom + auto-orbit-when-idle (resumes after 3s, disabled under prefers-reduced-motion: reduce).
4 Observability scope GA4 default page view only β€” no custom events for v1 (privacy-friendly per Constitution Principle VI).

What's next (subsequent commits / sessions)

Per Constitution v1.0.2 Principle III (PRP Methodology with Mandatory Wireframe Gate):

  1. /speckit.wireframe.prep β†’ /speckit.wireframe.generate (desktop 1280Γ—720 + mobile 360Γ—720)
  2. /speckit.wireframe.review β†’ regenerate if any REGEN findings β€” repeat until all PASS
  3. /speckit.plan (BLOCKED until wireframe review passes)
  4. /speckit.checklist β†’ /speckit.tasks β†’ /speckit.analyze β†’ /speckit.implement

Each phase will land as additional commits on this branch.

Why "draft" + opened early

CI is fast for spec-only changes. Opening the PR now means we have a stable URL to reference + early CI signal as more commits land. Leaves the PR in draft so it doesn't accidentally get auto-merged before wireframes + implementation are in place.

Test plan

  • pre-push hooks pass locally (lint, type-check, unit tests, production build) β€” all green on push.
  • CI passes on the spec-only commits.
  • Wireframe gate (next commit set) β€” desktop + mobile wireframes generated and reviewed.
  • Plan + tasks generated.
  • Implementation lands behind dynamic import; bundle delta confirmed route-split.
  • /game/3d renders the ScriptHammer-themed sculpt in production build.
  • WebGL-unavailable fallback verified by --disable-webgl Chrome flag.
  • /game (existing dice game, feature 037-game-a11y-tests) β€” no regression.

πŸ€– Generated with Claude Code

TurtleWolfe and others added 3 commits May 15, 2026 00:04
Per /speckit.specify skill, generates the SpecKit-formatted spec.md
from the existing PRP at features/enhancements/047-threejs-game/047_threejs-game_feature.md
and validates it against the spec quality checklist (all items pass
on first iteration).

Spec covers 5 user stories (visit route P1, theme reactivity P1,
reduced motion P2, Pa11y exclusion P2, mobile responsive P3), 7
functional + 5 non-functional requirements, edge cases for WebGL
unavailability + GPU context loss + theme switch during animation,
and 8 explicit out-of-scope exclusions.

Phase 0.5 per ~/.claude/plans/gleaming-kitten-execution.md β€” strategic
stepping stone before GrimGlow Phase 1a browser fork. First feature in
this repo to exercise the freshly-vendored .specify/scripts/bash/
SpecKit harness (PR #83, commit cb6312c).

Constitution v1.0.2 mandatory wireframe gate applies between
/speckit.clarify and /speckit.plan; wireframes will land in a
follow-up commit.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Per /speckit.clarify skill, 4 clarification questions resolved against
the v1.0.2 wireframe gate (all 11 taxonomy categories now Clear):

  1. v1 scene content: ScriptHammer-themed sculpt β€” stylized procedural
     hammer + anvil + DaisyUI-themed accents. Procedural only (no .glb
     imports). Specifies FR-007 and Key Entities β†’ Scene.

  2. WebGL-unavailable / GPU-context-lost fallback: themed CSS/SVG
     silhouette panel + explanatory message + user-actionable Retry
     button. No silent auto-retry. Added as FR-008; Edge Cases section
     tightened with concrete behavior.

  3. Camera control bounds: constrained polar angle (no flipping under
     ground plane) + 360Β° yaw + bounded zoom (min/max distance) + auto-
     orbit-when-idle (suspends on user input, resumes after 3s of
     inactivity, disabled when prefers-reduced-motion: reduce). Specifies
     FR-005; US-3 acceptance scenarios updated to call auto-orbit by
     name.

  4. Observability scope: GA4 default page view only β€” no custom
     scene-loaded, scene-interaction, or theme-switched-in-scene events
     for v1. Privacy-friendly default per Constitution Principle VI.
     Added as NFR-006 and Out-of-Scope entry.

Success Criteria gained SC-009 (fallback panel rendering + keyboard
accessibility) and SC-010 (auto-orbit observability).

Checklist updated to record /speckit.clarify completion and note that
the spec is now ready for the v1.0.2 wireframe gate.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Constitution v1.0.2 Principle III mandatory wireframe gate completed.
Two SVG wireframes generated, validated via shipped v5.0 validator,
issues classified PATCH, resolved, and signed off into spec.md.

WIREFRAMES (both PASS the validator's 40+ structural rules):
  - wireframes/01-game-3d-main.svg
      Desktop + mobile of /game/3d with canvas mounted. Visual:
      stylized procedural hammer + anvil + DaisyUI-themed accent
      orbs (the v1 sculpt). HUD overlays for orbit hint and auto-
      orbit indicator. Anchors annotations to US-001, US-002,
      US-003, US-005, FR-002, FR-003, FR-004, FR-005, FR-007,
      NFR-004, SC-001, SC-002, SC-010.

  - wireframes/02-game-3d-fallback.svg
      Desktop + mobile of /game/3d fallback panel. Visual: CSS/SVG
      hammer+anvil silhouette (DaisyUI tokens) with diagonal "off"
      cue, headline, body copy, 44Γ—44 keyboard-accessible Retry
      button. Anchors annotations to US-001, US-002, US-004, FR-008,
      SC-006, SC-009.

CHROME:
  - wireframes/includes/ seeded from features/foundation/003-user-
    authentication/wireframes/includes/ per wireframe-config.yml's
    "copy precedent once, then sync-wireframes.sh keeps it in sync"
    workflow.

PATCH ROUNDS (all classified PATCH per features/CLAUDE.md decision
table β€” no REGEN needed):
  Round 1 fixes (3 issues on 01, 8 on 02):
    SIGNATURE-003/004: signature must be left-aligned at x=40 and
      use trailing token "ScriptHammer" (not "SpecKit").
    CALLOUT-003: callouts at (640,524) and (180,506) overlapped
      Retry buttons; relocated to (770,524) and (304,506).
    COLL-001: callout at cy=620 too close to footer; relocated up
      to (1180,568).
    CALLOUT-002: annotations had 6 concepts but mockup only had 5
      callout circles; added 3 more on the desktop mockup.
    US-002: only 1 User Story badge present; added US-001, US-002,
      US-004 to annotation groups 4/5/6 so the fallback wireframe
      links back to its proper user story anchors.

  Round 2 fix (1 issue on 02):
    XML-004: validator regex parsed XML comment `at x=80..280, y=...`
      as an unquoted attribute. Reworded the comment.

  Final validator run: PASS for both files (zero errors).

AUDIT TRAILS preserved per features/CLAUDE.md ("never delete the
.issues.md files β€” they're the historical record"):
  - wireframes/01-game-3d-main.issues.md  (3 resolved)
  - wireframes/02-game-3d-fallback.issues.md  (9 resolved)

SIGN-OFF: spec.md gains `## UI Mockup` block linking both approved
wireframes and explicitly noting the wireframe gate is PASSED, so
/speckit.plan is now unblocked.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants