Checkpoint A · batch 1 (pilot #1–#20)
Open: /dashboard/machines.html (click a tile to open its card). The server is running now. If it is down, restart it with:
python3 -m http.server 8765 --bind 127.0.0.1 --directory [local working file]
Pass 2 (2026-10-10): every picture says how to read it
Your feedback: the pictures had no labels, and #2's caption contradicted its own pictures. Both are fixed.
Labels. Under every image there is now a style chip, then Start · Rows · Window · Colors. Example from #5:
[bbchallenge-default]Start: blank · Rows: every 400,000 steps: 2,501 rows for steps 0..1e9 · Window: cells -349..2250, 1 px = 1 cell · Colors: white = 1, black = 0 or never visited, red/green dot = head
| diagrams | style | start | first diagram on the card |
|---|---|---|---|
| 94 on 20 cards | 60 default, 22 Blaze, 1 Explore, 11 custom | 71 blank, 14 mid-run (step given), 9 constructed (config given) | 14 default, 3 Blaze, 3 custom (#1, #14, #19) |
- No values were guessed. Each comes from re-running the command that made the image and getting the same PNG back, or from the script that made it. The commands are in each machine's
notes.md. card.py --lint: 0 errors on 20 machines. A missing label field is now an error. 4 warnings are left on purpose:-
1, #14 and #19 open with a custom view. Each one shows the mechanism more clearly than the bbchallenge view, and each has a colour = meaning legend.
-
5's 3rd diagram is a chart (block length vs bounce), not a tape, so its window is not given in cells.
- I checked 5 labels against their images: the first diagram of #2, #5, #9, #14 and #17. I checked the image width and height against the label's cells, the px-per-cell scale and the row count; all match. For example, #14 is 503 × 3,302 px: cells -104..398 at 1 px per cell, and 3,302 rows of every 100 steps.
Pictures replaced (the old files are still in img/ unless noted):
| # | was | now | why |
|---|---|---|---|
| 1 | sweeps_from_hub (a row every 16 steps) | hubs_raw.png |
the old one read as grey stripes; the new one has the same rows as the hub map, in plain colours, to check the map against |
| 2 | eater_ours + eater_tm7 (deleted) | eat_pair.png, sweep_pair.png |
see "#2 corrected" below |
| 3 | state_auto | cycles_phase_1e7.png (one row per counter decrement) |
rows came about 2 per cycle and flickered |
| 5 | records_1e8, closeup_waves | the every-400,000-steps view, now with axes and 7 numbered notes; closeup_bounces54-57.png (every step); block_vs_edge.png |
the close-up started from a constructed tape and confused |
| 6 | every-500k-steps view, right-edge view | 2 defect views (black = a 00/11 pair) |
the old ones were streaks and moiré |
| 8 | counter_zigzag_default, counter_from_config | counter_ruler.png, counter_bits.png |
one cut off the deepest sweeps; the other had 3 rows per +1, so its "periods" were 3× off |
| 9 | phase_1e8 first; full-width phase_1e9 | Blaze first; phase_1e9_left.png (left quarter) |
the "walls" view now comes second, with a readable legend; the 7 walls were a thin strip |
| 12 | countdown_k8 (60 hand-picked rows) | blaze_long_epoch_k8.png (the real k=8 epoch) |
the old view was hand-filtered from a constructed start |
| 13 | full-width right edge | records_L_1e8_right1200.png |
the chaotic band was 5% of the width |
| 14 | the "sideways" every-100-steps phase view | phase_solid_every100_from1139175.png |
one flat colour per phase and no head, so the walls are clean colour edges |
| 15 | phase_every32 (the other "sideways" view) | phase_trips.png (one row per trip) |
each sweep used to look like a horizontal streak |
| 17 | walls_1e9 | default_blank_1500.png first, then walls over time, epoch 2 vs 3, records by epoch, labelled Blaze |
the old walls picture had a red/blue split that meant nothing |
| 19 | (new first) | sweeps_turnback_2e6.png (one row per round trip) |
shows the base-4 turn-back pattern directly |
Captions that claimed more than the picture shows, now corrected: - Rows not what the caption said: #20 state_ER, #7 stateEL, #15 state_auto, #6 records:L (2 rows per wall bounce, not 1). - Claims a records view can't show: #3 Blaze ("new pair per epoch" is really about one per 2 epochs), #12 records_1e9 ("log growth"), #10 records ("span ~ t^(1/3)", now the visible +2,083 / +276 cells). - Views that stop at a row cap, now with their real end step: #9 records_1e7 (9,473,093), #11 records_1e7 (5,122,482), #16 records_1e8 (9,618,857), #20 records_1e6 (999,391).
#2 corrected. The old caption said "the only difference vs TM7 is one +1 zigzag per 110 digit". The pictures put the two machines in different phases over the same step window, so they contradicted it.
- The rule: A1 fires once per 110 that is entered. Either the eater or a drain pass can enter it; a drain pass does so in 115 of 208 sweeps.
- What A1 does in each machine: TM7 turns straight back. Ours first runs a +1 pass of 6j+2 steps over everything to its right, then continues exactly as TM7 would.
- Checks: checked on all 156,622 A1 events to 1e9. Added rule "Drain pass enters L".
- The new pictures start both machines from the same constructed tape, S(L⁴ 1L1). In eat_pair.png, cutting ours' 4 blue passes (74 steps) leaves TM7's run step for step: 118 − 74 = 44.
Discord. The 11 drafts are now 2 messages in reports/discord-drafts.md, ready to paste and not posted:
- Message 1: #1, #12, #14.
- Message 2: #3, #11, with a ping to @hipparcos.
- On the cards: discord_check points to the right message on those 5 and is null on the other 15.
- Index (card.py limitation, not fixed): the index cannot link the file. Its Discord section still says "ready to paste (5)" and shows the 5 pointer lines with copy buttons. Open the file directly: /reports/discord-drafts.md
#5 research. No deterministic bound on how fast the edge eats the block was found; every certificate attempt misses by 5–12×. The recommendation is the cryptid protocol (research/erosion.md). Status is still CHECKPOINT_A; your call.
Checks: all 20 cards and the index were re-rendered. All 387 relative links resolve, and tools/test_card.py passes 18/18.
| at Checkpoint A | cryptid / stuck / skipped | your yes/no questions | Discord messages | rules re-checked |
|---|---|---|---|---|
| 20 / 20 | 0 / 0 / 0 | 60 (3 per card) | 2, ready to paste in reports/discord-drafts.md (not posted) |
138 / 138 pass (4,302 instances); #2's new 139th rule checked by its observer only |
| # | machine | status | class guess · conf | summary | rules ✓ observer · re-check (inst) | template applies |
|---|---|---|---|---|---|---|
| 1 | 1RB0LC_1LA0RE_0RD1LF_1LC1LB_0LD0RB_0LA--- |
CHECKPOINT_A · Discord msg 1 | Two coupled binary counters · med | Period-5 tape; a binary counter of drifting 3-cell digits feeds a left-edge bit counter that absorbs them | 8/8 · 8/8 (240) | no (CounterCmp_v1.v TM1) |
| 2 | 1RB0RF_1LC0RE_0LC0LD_1RD1LB_0RF1RA_0RB--- |
CHECKPOINT_A | Bell eats counter · high | SOMDCv6 TM7 + one change: A1=0RF runs a +1 pass each time a 110 digit is entered. Fits 208/208 sweeps. | 6/6 · 5/5 (240) | partly (SOMDCv6.v TM7) |
| 3 | 1RB0LD_1RC0RA_1RD1RF_1LA0LE_1RE1LD_0RB--- |
CHECKPOINT_A · Discord msg 2 | Skelet 1-like Class 2 · high | Binary down-counter on a list of (10)^p(01)^q pairs; overflow re-pairs the list (TM21-like). 7 rules validated. | 6/6 · 6/6 (240) | partly (SBCv6.v TM21) |
| 4 | 1RB0LA_0RC1RD_0LD1RE_1LA0RB_0RD1RF_1RC--- |
CHECKPOINT_A | Sync bouncer counter · high | TM4's binary counter + 00111/10111 block bouncer; 7 phase rules validated; parity branch, both branches safe | 7/7 · 7/7 (194) | partly (SBCv7.v TM4) |
| 5 | 1RB1RA_0LC0RF_1LD1LC_1RE1LB_---0RA_1RF0RD |
CHECKPOINT_A | Bouncer + Chaotic Edge · high | Bouncer; chaotic left edge slowly eats the 1-block. No-00 invariant: it can only halt if the edge eats the whole block | 9/9 · 9/9 (271) | no (Bouncer_v3.v TM1) |
| 6 | 1RB1LC_1RC---_1LD1LC_1RE0LC_1RF0RE_1RA0RD |
CHECKPOINT_A | Structural counter + chaotic edge · med | Defect groups drift left at 1, 3/4, 1/2, 3/8.. cells/bounce: exact 16-bounce counter on left, chaotic edge on right | 8/8 · 8/8 (304) | partly (BLv3.v TM1) |
| 7 | 1RB0RA_1LC0LD_1LE1LD_0LB0RE_1RF0LA_---0RA |
CHECKPOINT_A | Bell eats counter · med | BECv1 tm10 twin (E1 differs): spaced-digit counter eats a unary run; 7 rules validated, EatDigit open | 7/7 · 7/7 (210) | partly (BECv1_6x2_solved.v tm10) |
| 8 | 1RB0LF_0RC---_1RD0RA_1LE0RC_0LA0LE_1LE1LB |
CHECKPOINT_A | Sync bouncer counter, spread-digit variant · med | Bouncer carrying a binary counter whose digits sit in its body; each overflow inserts a new digit ~4x farther out | 3/3 · 3/3 (42) | no (SBCv2_6x2_solved.v tm108) |
| 9 | 1RB0LD_0RC1RA_1RD1RF_1LA0LE_0RA0LC_0RA--- |
CHECKPOINT_A | Shift-overflow counter · med | Bouncer on 11111010 with 4-state digit blocks (base-4 carry); 1 reset at 3e7 left static walls; no halt to 2e10 | 8/8 · 8/8 (398) | partly (SBCv6a.v TM1) |
| 10 | 1RB0RF_1RC1RF_1LD1RA_---0LE_1LA0LE_0RA0LC |
CHECKPOINT_A | Bell eats counter, partial eat · med | Mirrored FractalBEC bounce+counter; C1 makes the eat partial: N grows +1/+3/+4+r per epoch, leftovers ride along | 5/5 · 5/5 (150) | partly (FractalBEC.v nonhalt10) |
| 11 | 1RB0LE_1RC0RC_1LD0RB_1LA0LE_1LD1LF_1LD--- |
CHECKPOINT_A · Discord msg 2 | Binary counter over a block list with re-pairing overflow · high | Binary counter on (10)^u00^v blocks; carries + re-pairing overflow explain every step to 1e9 | 5/5 · 5/5 (153) | partly (SBCv6.v TM21) |
| 12 | 1RB1LC_1RC1LB_1LD0RB_0LE1RD_---0LF_0LA1LF |
CHECKPOINT_A · Discord msg 1 | Counter Class 4 · med | Run-length counter: epochs double in time, 2 passenger marker 1s; 9 rules validated, inner invariant open | 9/9 · 9/9 (200) | no (CounterClass2v1.v) |
| 13 | 1RB0LE_1LC1RD_1LA0RB_1RC1RB_1LF0LC_---0RC |
CHECKPOINT_A | Bouncer + Chaotic Edge · high | Clean period-10 bouncer; every 7 bounces a fixed probe stirs a ~144-564-cell chaotic tail D. Tail = the whole problem. | 8/8 · 8/8 (240) | partly (Bouncer_v3.v TM1) |
| 14 | 1RB---_1LC1RE_1LD0LC_1LE1LC_1RF0RE_1RA0RB |
CHECKPOINT_A · Discord msg 1 | 3/2 wall conveyor · med | Period-5 tape; 5-state walls drift right x1.5 per level (3/2 conveyor); right-edge counter absorbs them; no halt branch. | 11/11 · 11/11 (307) | no (CounterCmp_v1.v TM1) |
| 15 | 1RB1RF_1LC1RE_---0LD_1LE0LD_1RA0RF_0RE0LB |
CHECKPOINT_A | Bell eats counter · med | Left pair (110)^a 0 (011)^n trades 1 block/trip; right binary counter +1 per 2 trips; reset at n<=2 grows L | 4/4 · 4/4 (95) | partly (IndBECv1.v nonhalt7) |
| 16 | 1RB0LC_1RC0RA_1RD0RF_0LE---_1LB1LA_1LD1RA |
CHECKPOINT_A | Fractal: Jacobsthal transfer staircase (right) + · med | Self-similar Jacobsthal transfer staircase + (010)-eating bouncer; middle phase not yet closed-form | 8/8 · 8/8 (270) | partly (FractalType7v4.v TM20) |
| 17 | 1RB0LF_0RC0RB_1LC1LD_1RE0RD_---0RA_1LA0LF |
CHECKPOINT_A | Self-similar multi-wall bouncer · med | Bouncer on a 10-background with domain walls; self-similar epochs a'=3a+6, c'=3a+c+2 (exact, 5/5) | 5/5 · 5/5 (150) | partly (LongNv1.v TM1) |
| 18 | 1RB1RF_1RC0RA_1LD1RE_1LE0LE_0RA0LD_0RB--- |
CHECKPOINT_A | Bell eats counter · med | BMO7-like bell + walking marker; counter is base 3, not binary; the eat step rebuilds it irregularly | 8/8 · 8/8 (243) | partly (BMO7.v) |
| 19 | 1RB1RF_1RC---_1RD0RD_1LE1RC_1RA1LE_1RE0LF |
CHECKPOINT_A | Base-4 bouncer counter · med | Bouncer whose turn-back point is a base-4 counter; digits = separators between growing (110101) zones. | 8/8 · 8/8 (175) | partly (SBCv6a.v TM1) |
| 20 | 1RB1LE_0RC1RC_0RD0RB_1RE0RF_1LA0LE_---1RB |
CHECKPOINT_A | Fractal call-stack bouncer · med | Nested bouncer call stack: Y(a,b,c)->Y(a+2,b-1,c+3) per round; epochs grow x2.5-3; mod-3 gap cases | 6/6 · 6/6 (180) | partly (FractalType7v4.v TM20) |
Columns:
- rules ✓: the observer's own validation, then my independent re-check, with the number of re-check instances in parentheses.
- · Discord msg n: the machine is in message n of reports/discord-drafts.md. The 6 dropped drafts (#4, #5, #6, #9, #13, #18) are listed with reasons at the bottom of that file.
Independent re-check
- Method: I rebuilt each rule from its
from/tostrings with fresh random parameters. Where a rule says "any context", I also added random context words on each side. - Each instance was simulated with
tools/sim.py(Python engine) and compared head-relative after trimming. - Where a step formula is given, the exact step count was checked too.
- Result: 0 failures.
- Control: 10 deliberately wrong variants of real rules (wrong exponent or step count) were all rejected.
- Weaker coverage. These rules are observations of the real run, or their result is left partly open. I checked them only as stated:
-
5: the no-
00invariant was sampled every 9,973 steps up to 2e7, not at every step up to 1e9. -
6: the orbit lock was checked on 4 real wall visits.
-
9: the full-sweep model was checked on 88 consecutive generation-1 sweeps from step 3e6; 2 sweeps where the carry runs into the left prefix (not modelled) were skipped.
-
12: the long epoch was checked for k ≤ 9.
-
8: the overflow pauses were checked only for k = 3; the reloaded bits are not stated in the rule.
-
14: the cycle check covers the prefix only (a′ and R′ are free).
-
15: R′ was checked on one natural reset with 5 values of a.
-
17: the epoch map check covers the prefix only (T′ is free).
-
13 P(D) and #18 Eat F′: checked only that the result does not depend on a or N.
Fixed in place
- #6, rule G16 and the history skeleton.
0^inf <D 011 01^14 …is now0^inf <D 11 01^14 …. - As written, the string puts an extra
0between the head and the11. It failed 0/6 in that form and passes 30/30 corrected. - In 40 real wall visits, the cells after the head never start
011 01^14. notes.mdfor #6 now has the corrected form too (fixed in pass 2).- No other JSON edits were needed. All 20 files parse, pass the contract and
card.py --lint, and every image path exists.
Cards (pass 1)
tools/card.py --allrendered all 20 cards and the index.- All 387 relative links resolve.
tools/test_card.pypasses 15/15, including RealCards on every realobserve.json. - Headless Chromium at 1920×1080 shows no console errors. I looked at #1, #6, #13 and the index; the diagrams, questions, Discord block, rules table and template section all render.