The 16-point badge model
Claim
The first model: sixteen lettered arrangements around a centre tile, with the exclusion rule enforced and every legal combination enumerated live.
Construction
The page calls itself the 16-Point Combination Model and labels itself phase one. You build an arrangement by selecting from sixteen tiles lettered A to P, and the model refuses selections that conflict.
There are four ways in. A worked-example panel steps through A, A·D, A·D·G and A·D·G·L. A 4×4 keypad draws each key as the tile it stands for, oriented as it sits on the badge; illegal keys turn red and shake when tapped. A text box takes a combination typed directly. And the full combination list, grouped by size, is clickable throughout.
The badge itself is display-only. Tiles are drawn from arc commands at R = 16 with the lattice step S = R√2, and the sixteen arrangements resolve onto eight hub circles through a lookup table rather than being placed by hand.
What it establishes
The total is not quoted in the page; it is computed when the page loads. The source says so in a comment: the enumeration is computed live from the key, not copied from any spreadsheet. It backtracks over the sixteen letters, testing compatibility against the exclusion table, and reports 16, 98, 288, 417, 274 and 64 by size. Its headline figure is 1,157 total selectable states; beside it the page quotes 1,141 combinations of two to six tiles, plus the sixteen base arrangements.
That matters because it makes the model an independent check rather than a display. Re-deriving the same total here from the same rule gives 1,157 and 22 exclusion edges.
The model also carries an audit note against the source spreadsheet, recording two corrections: ENP was wrongly marked excluded when it is in fact valid, and GJLNP was mislabelled as a duplicate of the unrelated CJLNP. Both are fixed in the data the model runs on.
What it does not do
There is no export of any kind — no SVG, no image, no copied text. Nothing persists between page loads: no stored state, no URL parameters, no developer mode. The badge silhouette is a single traced path rather than a live union of the arrangements, mapped in from an earlier drawing at a different radius.
It also needs the network, for fonts only. The logic is self-contained.
Note
Your own account of the rebuilds belongs here — what was wrong with the docking geometry each time, and what finally fixed it.
Open questions
- The index records four rebuilds before the docking geometry was right. No file on hand carries that history, so it is currently a claim without a source.
- The silhouette is traced rather than derived. Rebuilding it as a live union of the selected arrangements would make the drawing answer to the same rule as the count.
- The page calls itself step one of a roadmap toward a lock-screen interaction layer. That work continued elsewhere; this page does not track it.
Checks
| What | How | Source |
|---|---|---|
| Live enumeration | Totals computed at load from the exclusion key, not quoted: 1,157 across sizes 1–6 | nuna-badge-interactive (1).html |
| Independent re-derivation | Same rule, same result: 1,157 with 22 exclusion edges | _src/core.py |
| Exclusion key symmetry | Every pair appears in both directions in the table | nuna-badge-interactive (1).html |
| Two data corrections | ENP valid, GJLNP not a duplicate of CJLNP | nuna-badge-interactive (1).html |
| Source attribution | Credited to A New Shape, pages 18–46 | nuna-badge-interactive (1).html |