content(sim): rotating clip pools + progressive tracked labels & emotions #16

Merged
benstull merged 1 commits from feature/content-pipeline-increment-2 into main 2026-06-25 01:05:58 +00:00
Owner

Content-pipeline Increment 2, part 1 — the experience (design §11 of docs/superpowers/specs/2026-06-24-content-pipeline-design.md).

What's in this PR

  1. Rotating clip pool (§11.1) — each ring scale references a POOL of vetted clips (docs/content-candidate-pool.md); the player picks a random member on landing. player.ring.Scale.pool + pure pick_clip_id(scale, r) (injected randomness); the impure draw happens at the API boundary, and a delta=0 advance is the initial / re-roll pick. Back-compat: a scale with only clip_id is a pool of one.
  2. forest → coast rename + cleanup — new land↔sea scale; ring order cosmos → orbit → coast → reef → abyss → wrap. Dropped the leftover local media (cosmos_traverse, orbit_westcoast, old forest/reef, the Increment-1 orbit/abyss single bases); generated the new coast-edge transition placeholders.
  3. Time-windowed tracked labels (§11.2) — annotations gain appear/disappear (loop-normalized, wraps across the seam); a label shows only while its subject is on screen and its box tracks it. abyss + reef pools authored as the test material.
  4. Progressive LEFT detail tiers (§11.3) — per-object salience (first shows at Left 5 − salience) + tiered strings (general → specific → scientific → +fact) escalating with the Left knob; replaces flat min_level. No engine change.
  5. Progressive RIGHT emotion tiers (§11.4) — affect vocabulary escalates basic → compound with the Right knob; appearance still gated by min(left,right). No engine change.

Mechanics

  • New simulator/build_pool_manifest.py holds the hand-authored content and emits the 19-clip pool manifest (the reproducible baseline). setup_scales_media.py marked superseded.
  • 251 passed / 4 skipped (added ring-pool + API pool/window tests). JS syntax-checked; live server probed (5 scales w/ pools, rotating picks, new edges, 19 clips).
  • By-eye visual review deferred to the operator (no Chrome on this box) — the established pattern.

Still to come this session (part 2, separate PR): tools/pipeline/track.py (hybrid tracker) + simulator author mode.

🤖 Generated with Claude Code

Content-pipeline **Increment 2, part 1 — the experience** (design §11 of `docs/superpowers/specs/2026-06-24-content-pipeline-design.md`). ### What's in this PR 1. **Rotating clip pool (§11.1)** — each ring scale references a POOL of vetted clips (`docs/content-candidate-pool.md`); the player picks a random member on landing. `player.ring.Scale.pool` + pure `pick_clip_id(scale, r)` (injected randomness); the impure draw happens at the API boundary, and a `delta=0` advance is the initial / re-roll pick. Back-compat: a scale with only `clip_id` is a pool of one. 2. **forest → coast rename + cleanup** — new land↔sea scale; ring order `cosmos → orbit → coast → reef → abyss → wrap`. Dropped the leftover local media (cosmos_traverse, orbit_westcoast, old forest/reef, the Increment-1 orbit/abyss single bases); generated the new coast-edge transition placeholders. 3. **Time-windowed tracked labels (§11.2)** — annotations gain `appear`/`disappear` (loop-normalized, wraps across the seam); a label shows only while its subject is on screen and its box tracks it. abyss + reef pools authored as the test material. 4. **Progressive LEFT detail tiers (§11.3)** — per-object `salience` (first shows at Left `5 − salience`) + tiered strings (general → specific → scientific → +fact) escalating with the Left knob; replaces flat `min_level`. No engine change. 5. **Progressive RIGHT emotion tiers (§11.4)** — affect vocabulary escalates basic → compound with the Right knob; appearance still gated by `min(left,right)`. No engine change. ### Mechanics - New `simulator/build_pool_manifest.py` holds the hand-authored content and emits the 19-clip pool manifest (the reproducible baseline). `setup_scales_media.py` marked superseded. - **251 passed / 4 skipped** (added ring-pool + API pool/window tests). JS syntax-checked; live server probed (5 scales w/ pools, rotating picks, new edges, 19 clips). - **By-eye visual review deferred to the operator** (no Chrome on this box) — the established pattern. Still to come this session (part 2, separate PR): `tools/pipeline/track.py` (hybrid tracker) + simulator author mode. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
benstull added 1 commit 2026-06-25 01:05:49 +00:00
Content-pipeline Increment 2, part 1 (the experience). Implements design §11
(docs/superpowers/specs/2026-06-24-content-pipeline-design.md):

- Rotating pool (§11.1): each ring scale references a POOL of vetted clips
  (docs/content-candidate-pool.md); the player picks a random member on landing.
  player.ring.Scale gains `pool` + pure `pick_clip_id(scale, r)` (injected
  randomness); the pick happens at the API boundary (random.random()), a delta=0
  advance is the initial/re-roll pick. clips.py parses/exposes the pool; the
  client lands on move.target_clip_id. Back-compat: a scale with only clip_id is
  a pool of one.
- Rename ring scale forest -> coast (new land<->sea scale, orbit..reef); ring
  order cosmos -> orbit -> coast -> reef -> abyss -> wrap. Cleanup: dropped the
  leftover local media (cosmos_traverse, orbit_westcoast, old forest/reef, the
  Increment-1 orbit/abyss single bases); new coast-edge transition placeholders.
- Time-windowed tracked labels (§11.2): annotations gain appear/disappear
  (loop-normalized, wraps across the seam); a label shows only while on screen
  and its box tracks the subject. abyss + reef pools authored as test material.
- Progressive LEFT detail tiers (§11.3): per-object `salience` (first shows at
  Left 5-salience) + tiered strings (general -> specific -> scientific -> +fact)
  escalating with the Left knob; replaces flat min_level gating. Strings may be a
  tier list or a static string (back-compat). No engine change (client reads
  overlay.level).
- Progressive RIGHT emotion tiers (§11.4): affect vocabulary escalates basic ->
  compound with the Right knob (dream.strength); appearance still gated by
  min(left,right). No engine change.

New simulator/build_pool_manifest.py holds the hand-authored content and emits
the 19-clip pool manifest (the reproducible baseline). setup_scales_media.py
marked superseded. 251 passed / 4 skipped (+ ring pool + API pool/window tests).
By-eye visual review deferred to the operator (no Chrome on this box).

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