docs(simulator): design spec + BDDs for curator's X-ray experience simulator

Discovery session 0003. Web-based, Docker-on-localhost simulator to feel the
selection model: real hef.selection wired to a synthetic fixture catalog, with
a full-transparency X-ray (ranked pool + distances + brain/mood grid maps) and
live model knobs (weights, pool size, approved-only).

- docs/superpowers/specs/2026-06-04-experience-simulator-design.md
- features/{selection_xray,model_knobs,fixture_catalog,simulator_service}.feature
- one additive hef.selection.ranked_candidates() change planned (single source of truth)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ben Stull
2026-06-04 15:31:30 -07:00
parent 0e5c3a1a0f
commit 9cb4fb62d8
6 changed files with 326 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
Feature: Feeling the model's own parameters
As a curator tuning the algorithm, not just the curation
I want to adjust the selection model's parameters live
So that I can feel how weighting, pool size, and the approved gate reshape picks
Background:
Given the simulator is loaded with the synthetic fixture catalog
And the dials are set to a fixed knob position with mode "av"
Scenario: Reweighting the brain plane can change the winner
Given the brain and mood weights are equal
And the current pick is recorded
When I increase the brain weight relative to the mood weight
Then the ranked pool may reorder so that brain-plane distance dominates
And the picked piece can differ from the recorded pick
Scenario: Pool size controls how many candidates are shown and shuffled
When I set the pool size to 1
Then the pool shows exactly the single nearest candidate
When I set the pool size to 5
Then the pool shows up to the five nearest candidates
Scenario: Approved-only narrows the pool to human-blessed records
Given the fixture catalog contains both "proposed" and "approved" records
When I turn the approved-only toggle on
Then every candidate in the pool has review_status "approved"
When I turn the approved-only toggle off
Then "proposed" records may appear in the pool again
Scenario: Default model parameters reproduce the shipped selection behavior
Given the weights are equal, the pool size is the default, and approved-only is off
Then the picked piece matches what hef.selection.select would return for the same dials