The SEED MAP rim's planets are no longer auto-computed — they are PLACED by the
gamers in turn (circle 6→1, Uranus→Saturn→Jupiter→Mars→Sun→Moon; Mercury/Venus
Sun-derived; Neptune/Pluto excluded). This is the first turn: the wheel starts
SIGNS-ONLY (planets eliminated) and the gamer at POSITION CIRCLE 6 places Uranus
by clicking a sign wedge. Roadmap step 21. See project_voronoi_spec.
KEYED ON THE POSITION CIRCLE (slot_number), NOT the role — select_role assigns
roles freely, so position 6 can hold any role; in a generic room BC merely
defaults there. Tests INVERT the slot→role defaults (position 6 = PC, position 1
= BC) so a role-keyed bug would fail them.
- Room.clock_placements JSONField (migration 0020): {planet: sign}, the ritual
state. The 9ed8771 auto-sky infra (table_sky / sky_chart / convened_at) stays
DORMANT — future home of the resolved sky; the rim no longer reads it.
- epic.place_clock_planet POST {planet, sign}: the acting seat must be the circle
whose turn it is (its circle's planet, every earlier planet placed, this one
not yet) + a real zodiac sign → persists. _clock_placeable_for shared by the
endpoint + the seed-felt ctx so gate & affordance can't drift. 403 wrong
circle/turn/seat, 400 bad sign.
- SkyWheel.drawRim(svg, data, opts): opts.placeable turns the sign wedges into
placement targets (.nw-sign--placeable + click → opts.onPickSign(sign)); still
singleton-pure (no module writes — Jasmine R9).
- _seed_map_overlay.html: rim renders the placements (sign-midpoint glyph);
empty → signs-only; the gamer whose turn it is gets the #id_clock_prompt + the
clickable wedges → POST → adopt the server's placements + repaint (reload-safe).
- _sky.scss: .nw-sign--placeable re-enables pointer-events on the click-through
rim + a hover brighten; the .clock-prompt label.
- ctx: clock_placements_json + clock_placeable in _role_select_context (drops the
now-unused room_sky_json). Repointed the 9ed8771 rim FT/ITs (auto-sky →
placements, empty = signs-only).
- Coverage: Jasmine drawRim R7–R9 (placement clickable / inert without opts /
singleton-safe); epic PlaceClockPlanetTest (position-keyed, role-inverted) +
repointed rim ITs; FT position-6 places Uranus → glyph + persist. 1021
epic+gameboard ITs green; live-verified in Firefox.
DEFERRED: turn progression 5→1 + WS live-broadcast (increment 2); the CSP
ephemeris narrowing + resolving placements → a datetime (later).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Description
No description provided
Languages
Python
45.5%
JavaScript
36.1%
HTML
9.6%
SCSS
8.6%
Jinja
0.1%