feat(simulator): curators X-ray experience simulator (sub-project 3) #3

Merged
benstull merged 7 commits from experience-simulator into main 2026-06-05 10:52:58 +00:00
Owner

Summary

Implements the curator's X-ray experience simulator (sub-project 3) per docs/superpowers/plans/2026-06-04-experience-simulator.md.

  • hef.selection.ranked_candidates() exposed; select() refactored onto it (single source of truth for "the pool").
  • simulator/ FastAPI service: /api/select (pick + ranked pool + distances + rank + coverage), /api/catalog/meta; dependency-free vanilla-JS X-ray frontend (dials, ranked pool, brain/mood coordinate maps).
  • Deterministic synthetic fixture catalog (625 cells, all modes, mixed review status, no real media) feeds the model since the real catalog is empty.
  • Docker + compose + make sim / make sim-local; user-guide section.

Test Plan

  • Full suite green: 133 passed, 2 skipped (baseline 111 + 22 new selection/fixtures/api tests).
  • Container builds and serves: / 200, /api/catalog/meta reports 625-record fixture catalog.
  • Live /api/select verified: ranked pool ascending distances; none -> void.

🤖 Generated with Claude Code

## Summary Implements the curator's X-ray experience simulator (sub-project 3) per docs/superpowers/plans/2026-06-04-experience-simulator.md. - `hef.selection.ranked_candidates()` exposed; `select()` refactored onto it (single source of truth for "the pool"). - `simulator/` FastAPI service: `/api/select` (pick + ranked pool + distances + rank + coverage), `/api/catalog/meta`; dependency-free vanilla-JS X-ray frontend (dials, ranked pool, brain/mood coordinate maps). - Deterministic synthetic fixture catalog (625 cells, all modes, mixed review status, no real media) feeds the model since the real catalog is empty. - Docker + compose + `make sim` / `make sim-local`; user-guide section. ## Test Plan - [x] Full suite green: 133 passed, 2 skipped (baseline 111 + 22 new selection/fixtures/api tests). - [x] Container builds and serves: `/` 200, `/api/catalog/meta` reports 625-record fixture catalog. - [x] Live `/api/select` verified: ranked pool ascending distances; `none` -> void. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
benstull added 7 commits 2026-06-05 10:52:50 +00:00
Per docs/superpowers/plans/2026-06-04-experience-simulator.md Task 1.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Per docs/superpowers/plans/2026-06-04-experience-simulator.md Task 2.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Per docs/superpowers/plans/2026-06-04-experience-simulator.md Task 3.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Per docs/superpowers/plans/2026-06-04-experience-simulator.md Task 4.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Per docs/superpowers/plans/2026-06-04-experience-simulator.md Task 5.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Per docs/superpowers/plans/2026-06-04-experience-simulator.md Task 6.
Dockerfile also copies tools/ (a declared setuptools package) so the
editable install resolves inside the image; the plan's Dockerfile omitted it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Per docs/superpowers/plans/2026-06-04-experience-simulator.md Task 7.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
benstull merged commit 618b69182c into main 2026-06-05 10:52:58 +00:00
Sign in to join this conversation.