A Heavy Grade shows which way it climbs

Jesse: "heavy grade mainline card tooltip states climbs east, but card
doesn't show it." The Frame has carried gradeUp all along and the tip
has said it; the card drew nothing, so the one Mainline card whose
orientation is set per game was the one you had to hover to read.

A brown wedge in the lower right rising toward the climb, with a bone
arrow lying along its slope, centred on the triangle's centroid. East is
right on this map (Gitea#18), which is what lets a wedge be read without
a compass.

Four passes. Up the hypotenuse the arrow began at the wedge's thin
corner, where there is no height, so its head read as clipped. Level, it
was contained but did not read as climbing. At 30° — steeper than the
wedge's own 22.5° — it had to be tucked into the fat half. Parallel to
the slope is the shape that fits: the gap to the hypotenuse is then
constant, so the arrow can sit centred. The wedge grew to 58x24 to pay
for it, since a centred arrow has less room than an off-centre one.
Sizes are a search result, clearing every edge by 2.88px.

The first containment test bounded the arrow against the CARD, which it
never left, while the wedge clipped it — a green check on a visibly
broken glyph. It checks the TRIANGLE now with a 2px floor, plus
parallelism derived from the wedge and centroid placement.

Orientation is always set, measured not assumed: 400 seeds x 4 player
counts, 535 grades placed, 0 without one, 276 east / 259 west.

Stays in the unshipped v0.7.9. 874 tests pass, one new.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AdG46Ja2PEDBkpqiDazMoX
This commit is contained in:
Jesse.Markowitz
2026-08-30 05:28:31 -04:00
co-authored by Claude Sonnet 5
parent 45cf521a40
commit cf018b4a5f
3 changed files with 220 additions and 1 deletions
+36 -1
View File
@@ -89,6 +89,41 @@ extension bug above, which passed only `days` — which is exactly how the next
it. At the default day count the answer is unchanged, since `SOLO_CONFIG`'s own floor is this same
formula at `DEFAULT_DAYS`; the three new tests pin that as well as the derivation.
### A Heavy Grade shows which way it climbs
Jesse, 2026-08-30: "heavy grade mainline card tooltip states climbs east, but card doesn't show it."
The Frame has carried `gradeUp` since the Division map was rebuilt and the tip has read "climbs
east" all along — but the one Mainline card whose orientation is set per game, and the one where
Helpers and Brakeman mean opposite things at opposite ends, drew nothing to tell the two apart.
A brown wedge in the card's lower right, rising toward the climb, with a bone arrow lying along its
slope. **East is right on this map** (Gitea#18), which is what lets a wedge be read without a
compass — and is the layout decision paying for itself again.
**Four passes, and the first three are worth recording because each failed differently.** An arrow
up the hypotenuse had to start at the wedge's thin corner, where there is no height to draw in, so
its head sat over the edge and read as clipped. Level, it was contained but did not read as
climbing. At 30° — steeper than the wedge's own 22.5° — it had to be tucked into the fat half to
survive. Lying **along** the slope is the shape that fits: the perpendicular gap to the hypotenuse
is then constant down the whole arrow instead of closing at one end, so it can sit on the triangle's
centroid. The wedge grew 44×19 → 58×24 to pay for that, because a centred arrow has *less* room than
an off-centre one — the centroid is about 7px from the hypotenuse.
The final sizes are a search result rather than an eyeballed nudge: the roomiest arrow keeping all
seven vertices clear of both edges, at 2.88px.
**A test that passed a visibly broken glyph is the reason this is pinned properly.** The first
containment check bounded the arrow against the CARD, which it never left — while the wedge clipped
it. The check is against the *triangle* now, with a 2px floor, plus the arrow being parallel to the
wedge (derived from the wedge, so resizing it cannot leave a stale angle) and centred on the
centroid.
**Orientation is always set — measured, not assumed**, since a wedge that invented a direction would
be worse than no wedge. Across 400 seeds × 4 player counts: **535 Heavy Grades placed, 0 without an
orientation**, 276 east / 259 west. `setup.ts` is the only place a Mainline node is created and it
rolls the direction from the seed for every grade, so the `?? 'east'` fallbacks in `view.ts` and
`advance.ts` are unreachable.
### Three wording and layout fixes
- **The collision entries** on all three screens now read "The game ends immediately and results in
@@ -103,7 +138,7 @@ formula at `DEFAULT_DAYS`; the three new tests pin that as well as the derivatio
cost, not a danger, and red would outrank the actual rules above it. The buttons say **Continue
Existing Saved Game** and **Deal New Game** rather than "Continue saved game" and "Deal".
873 tests pass, six of them new; one existing test asserted the opposite of the collision ruling
874 tests pass, seven of them new; one existing test asserted the opposite of the collision ruling
above and says so where it was reversed.
---