Skip to content

Rung c colour on shape - #2

Merged
tacio merged 5 commits into
masterfrom
rung-c-colour-on-shape
Jul 5, 2026
Merged

Rung c colour on shape#2
tacio merged 5 commits into
masterfrom
rung-c-colour-on-shape

Conversation

@tacio

@tacio tacio commented Jul 5, 2026

Copy link
Copy Markdown
Owner

No description provided.

tacio and others added 5 commits July 3, 2026 13:30
…ped gather

Next #1's first rung. The engine was hard-wired same-shape — output shape was
never a represented quantity (`apply` wrote input-shape cells, `fitness`
penalized in_n != out_n). New `ShapeMemory` trait (parallel to SelfModMemory,
so the same-shape core and all existing memories are untouched): the output
shape is inferred in-context — a per-axis affine out = round(k*in + b) written
closed-form by least-squares over the demo dim-pairs — and produced by the
proven AttnGather gather, generalized so its query grid is the OUTPUT grid and
it reads the INPUT grid (apply_shaped; same-shape path bit-identical). The shape
rule is frozen (fill_scale=0), so the ES fits only the 7 attention params on the
B3 landscape. fitness_shape/fit_shape/fit_shape_geom are the shape-aware generic
sibling of the ES core.

Proof (test_shape_change, full tier, cold, held-out at a FRESH input size — demos
drawn at varying sizes so the rule is identifiable, not memorized):
{crop1, flip_h_crop1, subsample2} each held-out 1.0 (subsample2 needed M=2I, a 2x
scale-up, found cold); shape-ablation control (no write) 0.0 — the inferred shape
rule is load-bearing. Synth SHAPE_TRANSFORMS + generate_shape_task_groups (varies
demo sizes). Full suite green; same-shape numbers unchanged.

Deferred on this same seam: upscale/tiling (floor/modular gather), wiring
arc_solve --report to score the real 32%, colour-on-shape. (JOURNAL 07-03 13:12.)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ily cold

The output-growing shape families (Next #1 rung a). Mechanism: a toroidal
output-shaped gather (attn_gather_toroidal — tiling's sawtooth is the nearest
WRAPPED cell of an affine map), an extent-relative translation trel (absorbs
tiling's size-dependent phase), and the query normalized by the WRITTEN shape
slope (resize-as-identity — tolerances size-free). Fit: a k-fold size change
has TWO canonical identity frames (rescaled M=I; periodic M=kI, trel=(k-1)/2),
so fit_shape_geom runs the same two cold starts per task — each DISCOVER
(soft, temperature searched) then SETTLE (hard-frozen read via
ShapeGeomSettleMemory, sigma held at the sharp staircase's step scale) —
winner by demo fitness. Corrects the "affine can't express blocky
replication" claim (floor(r/s) = round((r-(s-1)/2)/s), exactly — only tiling
is non-affine). test_shape_change: {crop1, flip_h_crop1, subsample2,
upscale2, tile2} all >= 0.95 held-out at fresh sizes, per-task cold; plain-
gather and no-write controls fail as they must. Also commits the prior
eval-split re-measure journal entry (0/120 at budget 64/1500, pre-shape).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… (was 10)

Rung (b): arc_solve dispatches per task on a closed-form observable of the
demos — any train pair whose dims differ routes to ShapeGeomComposedMemory /
fit_shape_geom (the rung-a two-frame multi-start); all-same-dims keeps the
byte-identical GeomColorComposedMemory path. Not a memory-selector: the
alternative provably scores 0 on the dispatched class. Shape-path scoring off
the memory's own predicted dims (mismatch = honest 0, never applied); per-task
lines carry a trailing `mem: same|shape` marker (after the existing fields, so
eval_parallel's positional awk is unchanged); the skip-all-shape-changing-tests
shortcut survives only on the same-shape dispatch. CI: the full tier's
arc_solve leg adds one crop1 shape bundle (fast gate unchanged).

v3 corpus measure (10 workers, budget 64/1500): train 22/1000 solved — 9
shape-changing solves (a slice that scored 0 by construction before) plus the
few-demo hardening's net +3 (d511f180 solved as designed; 2 documented
tie-convention losses). Eval 0/120, mean 0.404 (v2 0.388); its 39-task shape
slice scores 0.054 — content-dependent output sizes and colour-on-shape
(rung c) are the named constraints. Same-shape subsets bit-consistent with v2.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…duled

Mined the v3 per-task dumps into the failure structure: train same-shape has
88 few-cell near-misses (0.90-0.99, train-fit 0.93) and a 146-task deep floor
(train-fit 0.34); train shape has 107 convertible tasks (train-fit >= 0.5)
and 63 where the affine dims rule fits no demo — the class that dominates
eval's shape slice (19/39). ROADMAP "Next" rewritten as the evidence-ranked
rung ladder — C colour-on-shape (kernel: count conservation broken by shape
change; area-ratio normalization to validate), S shape-from-content (shape
write over a content-statistic basis), A the near-miss audit (measure-first,
mask/gate candidate), D cheap factor extensions, CMS the depth chain — each
with its research/implementation split and named blocker, and the GPU gate
placed as a zero-capability infrastructure block immediately before CMS (the
blocker is the mojo 1.0.0b2 pin, not kernel design).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…} solved cold

Compose an emergent colour table on top of the shape+geometry gather — the
block-5 composition pattern's third application: out = shape_geom_gather(V(in)).
Colour is cellwise, so it commutes with the copy gather; V is written closed-
form and the unchanged two-frame fit_shape_geom runs on V-pre-mapped demos (the
geometry search never sees V). Additive: the same-shape core and every existing
memory are untouched; V=identity makes the shape path byte-identical.

Three findings, measured not guessed:
- Count conservation breaks under shape change → V written from scale-invariant
  FRACTION signatures (exact for upscale/tile, robust for crop/subsample).
- The write needs colour-count CONTRAST — uniform-random grids can't identify a
  recolor under a lossy shape change; real ARC grids can (kept as a ceiling
  control: uniform crop misses ~5-6/10 colours).
- Strict-superset trap (caught by the arc_solve smoke): a naive greedy write
  scrambles V on pure-shape low-contrast crop, regressing it 1.0 -> 0.17. Fixed
  with a measured global acceptance gate (R_assign < 0.4*R_id; the ratio
  separates pure-shape 0.82-1.35 from recolor 0.15/~0) — greedy-injective write
  for full recovery + the gate for pure-shape protection.

test_shape_color (cold, held-out at fresh sizes): recolor_{crop1,subsample2,
upscale2,tile2} each 1.0; colour ablation 0.0; pure tile2 1.0; pure UNIFORM
crop1 1.0 with V=identity (the strict superset); few-demo n=3 0.998. Full suite
green (test_shape_change unchanged). arc_solve shape branch routes through
ShapeGeomColorComposedMemory; CI adds a recolor_crop1 bundle. Corpus v4
re-measure deferred (the separate overnight trigger).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@tacio
tacio merged commit 54ff1e2 into master Jul 5, 2026
2 checks passed
@tacio
tacio deleted the rung-c-colour-on-shape branch July 5, 2026 19:04
tacio added a commit that referenced this pull request Jul 26, 2026
…scaffolding

Pre-registers docs/gates/002-wm-prior-rollout.md (Gate 001 re-open lever #2)
before any build: held-out RA64 primary metric, four arms incl. the
compute-matched IDSEED refuting control, safety net disabled in measured arms,
R=5 CRN-paired instrument with a second fit2_seed reseed point, the insurance
secondary with independent bars, no trimming (user decision 2026-07-19).

Housekeeping: tests/test_adapt.mojo (Route A Increment-1's unrun 5-arm proof)
is now tracked as explicitly-unrun scaffolding under a new `# suite-tier: skip`
tag; run_tests.sh learns the skip tier (never runs in any tier).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013PCPDmZqxgmyrs5q6CefE8
tacio added a commit that referenced this pull request Jul 26, 2026
All three pre-registered STOP conditions trip independently at the 3-seed
median: MK_room(32)=0.0, CK_room(32)=0.0 and CK_room(128)=-0.114, SK_room(32)=
-0.026 and SK_room(128)=-0.044 (all <= their bars). GO fails 0/5. The
compute-matched IDSEED control shows warm on par with or worse than a bare
near-identity init on the identical rollout schedule; SCRAMBLED sometimes
clearly beats warm (seed 2 room B=32, by ~0.13) -- the refuting controls
worked in the failing direction.

Combined with Gate 001's clean ~0 margin under the one-step objective, the
W1-prior-as-warm-start lever is now closed under BOTH registered objectives
for Phase-D Increment 2. The insurance secondary (carried over from Gate
001's surviving conditional) is NOT TESTABLE here: 0/15 degenerate reps in
every arm at room B=32, traced to a floor in the RA64 metric on room rather
than Stage 0 rescuing the fit (seed 2's one-step diagnostic learned nothing
either, yet RA64 still read ~0.09 for every arm including the untouched raw
prior).

Harness discipline-reviewed clean pre-run; the Result section was
independently re-audited post-run against the raw scratch data (medians,
bar logic, insurance spot-check all CONFIRMED), with one honest-narrative
hedge applied before commit. docs/gates/002-wm-prior-rollout.md,
docs/JOURNAL.md, docs/ROADMAP.md (re-open levers #1/#2 marked SPENT; next
rung unscheduled).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013PCPDmZqxgmyrs5q6CefE8
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