Skip to content

Stop edge rounding at 6 %, where the Pixel 10a's coins still settle - #390

Open
drehtuer wants to merge 1 commit into
feature/sample-dice-setsfrom
feature/rounding-range-measured
Open

drehtuer wants to merge 1 commit into
feature/sample-dice-setsfrom
feature/rounding-range-measured

Conversation

@drehtuer

@drehtuer drehtuer commented Oct 5, 2026

Copy link
Copy Markdown
Owner

Measures the edge-rounding range decision 98 left open, and narrows it from 1.5–12 % to 1.5–6 %. The new cap applies to the face designer's slider and to a set file's edge_rounding alike.

Based on #389 (feature/sample-dice-sets), stacked as .claude/CLAUDE.md asks.

Measured on the Pixel 10a, 2026-10-05

Fairness: FairnessTest, every catalogue shape, 20,000 throws each.

Rounding Coin throws that never settled (bar 2) d18 worst face (bound 1 %) Other shapes
1.5 % 0 0.50 % fair
6 % 0 0.62 % fair
8 % 2, on the bar 0.68 % fair, but the d10's χ² is 24.6 against 27.9
12 % 42, fails 0.98 % fair

Settling: tools/harness.sh -n 200 -c 20 on d4, d6 and d20 at 1.5 %, 3 % and 12 %.

  • No throw gave up, none was forced to settle, and no die came to rest on another.
  • Median settle times are unchanged.
  • Rounder dice tumble a little longer and are re-thrown less.
  • The overlap and re-throw bars fail at every value, exactly as they do at the default; those are the known Step 5.4/5.5 items.
  • The harness throws no coins, which is why it saw nothing wrong anywhere up to 12 %.

What gives first is the coin: rounded enough, its rim rolls like a wheel until the twelve-second backstop. 6 % is twice the default and the last value with a margin.

Device suites, same session: 131 tests across app, designer, dicesets/install, feature/roll, render/filament and simulation/jolt. 0 failed. 3 declined: the opt-in gallery and harness tests, which skip themselves unless asked. That run includes the designer branch's AtlasTextureTest, with 5 tests passing, its first time on a device.

Change

  • DieMaterial.EdgeRoundingRange = 0.015..0.06. It is the single source for the validator's clamp, the designer's slider (now 10 positions), the harness's --rounding and FairnessTest's edgeRounding.
  • Tests: those that pinned 12 % as the top now use 6 %. HarnessRoundingTest now also refuses 0.12.
  • Docs:
    • docs/physics-and-rendering.md ("How round a die may be") has the tables above, replacing "not yet measured".
    • Decision 100 records the bound; 94 and 98 point to it.
    • Also updated: docs/dice-sets.md, docs/face-designer.md (range, and the visibility table, whose top values halve), docs/build-setup.md, the prototype's slider (max="6"), design/README.md, docs/STATUS.md and docs/TODO.md. The measurement box is gone, and a 100,000-throw follow-up with coins in the harness is left.

Checks (devcontainer)

  • Unit tests pass in core/model, designer, feature/designer, render/filament, simulation/api, simulation/jolt, simulation/harness, dicesets/format, dicesets/install and app.
  • ktlint and detekt pass on all modules; Android Lint passes on designer and feature/designer.
  • simulation/jolt's device-test sources compile.
  • verifyDocsIndex, verifyDocsLinks and verifyDesignSystem pass.
  • The Documentation job's mermaid and markdownlint checks pass.

Note

A set already installed with edge_rounding above 0.06 now loads clamped, with the validator's usual warning.

🤖 Generated with Claude Code

The owner asked for a rounding slider "within reasonable ranges, no too
round dice that never settle". Measured at 20,000 throws a shape: at 12 %
every solid is fair but a coin's rounded rim rolls like a wheel, and 42
throws ran out the backstop against a bar of 2, with the d18's worst face at
0.98 % of a 1 % bound. At 8 % the coin sat exactly on its bar; at 6 % and
1.5 % nothing gave up and every shape passed with room. The settle harness,
which throws no coins, found nothing wrong anywhere up to 12 %.

DieMaterial.EdgeRoundingRange is the one place the range lives, so the
validator's clamp, the designer's slider, the harness and FairnessTest all
follow it. The figures are in physics-and-rendering.md ("How round a die
may be"); decision 100 records the bound, and 94 and 98 point to it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sonarqubecloud

sonarqubecloud Bot commented Oct 5, 2026

Copy link
Copy Markdown

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant