summaryrefslogtreecommitdiff
path: root/SYNTH_RESULTS.md
diff options
context:
space:
mode:
Diffstat (limited to 'SYNTH_RESULTS.md')
-rw-r--r--SYNTH_RESULTS.md539
1 files changed, 539 insertions, 0 deletions
diff --git a/SYNTH_RESULTS.md b/SYNTH_RESULTS.md
new file mode 100644
index 0000000..0e6617f
--- /dev/null
+++ b/SYNTH_RESULTS.md
@@ -0,0 +1,539 @@
+# Synthetic closed world v0: the objective becomes the bottleneck
+
+Run date: 2026-07-30
+
+## Question
+
+The natural-data experiments could never verify representational
+sufficiency: closure and over-completeness were properties of the data we
+happened to have. The synthetic world makes them constructions. Scenes
+are sets of object groups (count, size, color, shape) with spatial
+relation constraints; captions mention exactly the discrete state
+(vocabulary 43 words); renders realize it with resampled continuous
+nuisance, so visual orbits share exactly the world state and differ
+exactly by modality-private variation. 26,000 scenes, 56,000 renders,
+3,578 ground-truth intervention variants; vision-only and text-only
+splits disjoint; every dial is a generator argument.
+
+Both towers are trained from scratch on their own modality: a compact ViT
+(5.3M parameters) with InfoNCE over natural orbit positives -- no flips,
+which would erase left/right, and no color jitter, which is world content
+-- and a word-level causal LM (5.6M parameters) to cross-entropy 0.42,
+near the floor of the templated language. Closure is verified visually
+and referentially (color-shape pairs unique per scene, exact multiplicity
+by ring placement).
+
+## Result: perfect closure, collapsed relational sharing
+
+On 1,000 held-out pairs, evaluation-only:
+
+| Quantity | Synth v0 | Natural (Flickr, frozen) |
+|---|---:|---:|
+| Linear CKA | 0.278 | 0.262 |
+| Pairwise relational Spearman | 0.030 | 0.184 |
+| Shuffle z | 2.4 | 12.3 |
+
+The closed world shares global statistics as strongly as natural data and
+relational structure six times more weakly. The assignment gate agrees:
+the true configuration keeps 6.6% of nodes under descent with a
+counterfeit 26% below it, and content projection -- which on VG passed
+the basin audit -- rescues ranking power (z = 117, improving swaps 0.35%)
+but not the basin (retention 24.4%, counterfeit at -13%).
+
+## The mechanism is the objective, not the data
+
+InfoNCE with a uniformity term optimizes scene discrimination: every
+scene is pushed apart from every other, and two scenes sharing "three red
+circles" gain nothing from sharing it. The vision tower converged to a
+near-orthogonal instance codebook whose between-scene geometry is
+arbitrary -- exactly the structure the relational energy needs and
+exactly what the objective erases. Data sufficiency was total by
+construction, so the deficit is attributable: **sufficiency of the data
+does not transfer to sufficiency of the representation; the training
+objective decides which world geometry survives.** The requirement R1 of
+`STRUCTURE_DESIGN.md` is a property of the data-objective pair.
+
+For the project's central question this is a constructive turn: alignment
+without pairs needs unimodal objectives whose representations retain
+compositional world geometry, and the synthetic world measures exactly
+that retention. The SSL objective joins vocabulary, ontology, scene
+count, and orbit multiplicity as a phase-diagram axis.
+
+## Objective battery: the two canonical objectives fail in opposite ways
+
+Ground-truth factor probes (linear, fitted per modality on its own split)
+localize what each representation retains. The text tower is nearly
+lossless and is not the bottleneck. The vision towers:
+
+| Probe target | InfoNCE (CLS) | SimMIM (patch mean) | SimMIM (foreground-weighted) | Text tower |
+|---|---:|---:|---:|---:|
+| Color presence | 0.992 | 0.572 | 0.717 | 0.997 |
+| Shape presence | 0.540 | 0.535 | 0.645 | 0.992 |
+| Group count R2 | 0.61 | 0.12 | 0.11 | 0.94 |
+| Object total R2 | 0.44 | 0.33 | 0.35 | 0.90 |
+| Relation count R2 | 0.20 | 0.03 | 0.04 | 0.94 |
+
+InfoNCE performs shortcut feature selection: color multisets are nearly
+unique per scene, so discrimination is solvable from color alone and
+shape is discarded at chance level. SimMIM inpaints well (reconstruction
+MSE 0.0088) and pools to almost nothing: the scene is 80% background, the
+information lives distributed in patch tokens, and no simple pooling
+recovers it (CKA drops to 0.114, relational z to 0.8; the gate collapses
+to 0.2% retention). Discriminative-global objectives select shortcuts;
+reconstructive-local objectives never build a global summary.
+
+The naive hybrid (orbit-InfoNCE on the CLS plus masked pixel
+reconstruction on the patches, weight 25) is falsified: color stays at
+0.983, shape stays at chance (0.532), relational Spearman turns negative
+(-0.063, z = -3.9), and the gate keeps 4.3%. The two losses settle
+separately -- the CLS keeps the color shortcut while shape remains
+distributed in patch tokens. Joint pressure on different tokens does not
+merge into one summary.
+
+A first prediction-transfer energy was built and gated on the weak
+towers: the vision substitution kernel from masked inpainting compared by
+foreground-patch Chamfer distance, the text kernel from
+relation-sentence continuation likelihood (relation sentences force
+referential dependence; whole-caption continuations only reward
+repetition, and the LM separates same-scene from different-scene
+continuations at two-to-one per-token likelihood but grades partial
+overlap poorly). The gated energy reaches z = 2.9 at 512 scenes with 31%
+improving swaps: falsified as built. Every energy constructed today
+bottlenecks at the same place -- the text side is near-lossless and the
+vision side is factor-blind, so the vision objective remains the single
+point of failure.
+
+## The objective battery, complete: five recipes, five distinct failures
+
+| Vision objective | Color | Shape | Groups R2 | Relational rho (z) | Failure mode |
+|---|---:|---:|---:|---:|---|
+| InfoNCE (orbit positives) | 0.992 | 0.540 | 0.61 | 0.030 (2.4) | shortcut selection: color only |
+| SimMIM (pixel targets) | 0.572 | 0.535 | 0.12 | 0.024 (0.8) | local knowledge, no global summary |
+| Hybrid (InfoNCE + SimMIM) | 0.983 | 0.532 | -- | -0.063 (-3.9) | losses settle separately |
+| data2vec-lite (EMA feature targets) | 0.743 | 0.545 | 0.18 | 0.059 (3.7) | same, softer |
+| Slot attention (5-6 slots) | 0.549 | 0.618 | 0.48 | 0.128 (7.9) | slots tile space, not objects |
+
+No standard self-supervised recipe at this scale produces
+factor-complete global states. Slot attention comes closest structurally
+-- best shape decodability, four times the relational sharing of InfoNCE
+-- and fails by degenerating into near-uniform spatial tiles (alpha
+masses 0.13--0.20 across six slots where object binding would put 0.7+
+on background), a known failure on flat untextured scenes. Its pooled
+readout also scrambles per-object factors, which is the set-versus-pool
+doctrine restated: color drops from 0.99 (InfoNCE pooled) to 0.55 the
+moment states are sets averaged without correspondence.
+
+## The set-kernel machinery, taken to its ceiling
+
+With no learned tower delivering object states, model-free
+connected-component analysis provides them (the background is flat, so
+components are objects; ring merging at distance 30 restores
+multiplicity at 70% count accuracy). Text sets are per-group phrase
+bag-of-words vectors. Scene-to-scene relations are unweighted Hungarian
+matching values; the gate runs on these set-kernel fields. Iterations,
+each fixing one measured defect:
+
+| Iteration | z | Improving swaps | Kept | Counterfeit margin |
+|---|---:|---:|---:|---:|
+| Slot-vector sets | -0.1 | 45% | 3% | deep |
+| Decoded sprite sets | 2.7 | 32% | 6% | deep |
+| CC pixels x LM phrases | 1.8 | 32% | 5% | deep |
+| CC descriptors x BOW | 4.5 | 13% | 9% | deep |
+| + unweighted matching | 52.0 | 0.73% | 37% | -11% |
+| + multi-view field average | 59.9 | 0.13% | 69% | -6.8% |
+| + shape descriptors | 51.2 | 0.15% | 77% | -4.1% |
+
+Three lessons priced along the way: mass-weighting inside the matching
+destroys similarity grading (0.16 to 0.45 against soft truth); averaging
+per-view fields cancels segmentation errors (the orbit dividend again);
+and a missing factor on one side (shape, absent from the first visual
+descriptor while present in every text set) is exactly the kind of
+asymmetry counterfeits exploit.
+
+## End to end: close, and honestly not there
+
+The best configuration holds 77% of the truth under exact descent, and
+blind tempering still finds assignments 4--6% below the true energy at
+chance accuracy. One further asymmetry was identified -- matching values
+correlate with set sizes differently per modality (0.29 text, 0.13
+vision) -- and residualizing both fields against size features does not
+close the gap either: tempering ends 9.2% below the truth at 0.78%
+accuracy, because the correction removes shared signal along with the
+nuisance. Each counterfeit so far has pointed to a specific asymmetry
+between the two fields; the remaining ones (segmentation error,
+descriptor-versus-word semantics) resisted this window's budget.
+
+The comparison across datasets brackets the identifiability threshold.
+On VG, both-sides content projection reached cross-modal field validity
+near 0.61 and the basin audit passed with margins; here the upper-bound
+fields sit near 0.45 and every recovery run counterfeits. At N = 512,
+the pass boundary for this energy family lies somewhere between those
+two numbers -- the first coordinates on the phase diagram this world was
+built to draw.
+
+## The Fock lift: matching-free set kernels pass at 64 and counterfeit at 512
+
+Replacing the Hungarian matching value with a symmetric-tensor moment
+kernel -- phi(S) concatenates the degree-1 and degree-2 moments of the
+object set, scenes compare by normalized inner product -- removes the
+matching step and with it every measured matching bias, while making
+composition algebraic and multiplicity an observable. Paired with
+factor-mirrored one-hot descriptors (color, small/large with medium
+unmarked as in text, count, k-means shape cluster; size binned after
+residualizing the renderer's count-dependent radius shrink):
+
+- N = 64: the first full basin pass of the synthetic world -- no
+ counterfeit in any quench, best random descent 11% above the truth,
+ 92% retention.
+- N = 512: retention 75--76% and z = 38--45, but counterfeits return at
+ 18--22% below the truth, and blind recovery stays at chance. The
+ remaining asymmetries -- 30% segmentation count errors and shape-cluster
+ impurity -- are enough at eight times the configuration space.
+
+The bracket sharpens: this energy family passes at N = 64 and fails at
+N = 512 on fields of validity near 0.45, while VG passed at N = 512 near
+0.61. Identifiability is a joint (validity, N) boundary, and the world
+now measures both axes.
+
+## Third-order invariants, and the correction they forced
+
+Triangle invariants (for a node triple, the product of the three edge
+values, compared across modalities) were added to the moment-kernel
+fields. Under a descent harness that proposes 64 sampled pairs per step,
+the result looked decisive: at N=512 the truth kept 99.6--100% of its
+assignment with no counterfeit below it and z = 48--50, replicated over
+three hidden shuffles.
+
+Two controls dismantled that reading. The pairwise-only energy passes
+identically in the same harness (retention 100%, z = 40), so the third
+order was not what changed; and long tempering on the triangle energy at
+N=128 reaches 10.3% below the truth at zero accuracy. What differed from
+the earlier failing runs was the searcher: exact all-pairs enumeration
+takes the globally best swap each step, sampled proposals do not, and
+tempering with a long budget beats both.
+
+**Descent retention measures the search operator, not the energy.** The
+gate statistic is corrected to compare the energy of the truth against
+the deepest state a strong searcher reaches, and every candidate energy
+is being re-measured on that basis. The ablation does carry one clean
+finding that survives: triangle-only has 11.3% improving transpositions
+against 0.63% for the sum, so the two orders are complementary --
+third-order terms deepen the basin while second-order terms smooth the
+local landscape.
+
+## Precision weighting, tried and instructive
+
+The channel-matching idea was tested and fails with a clean mechanism:
+weighting relation entries by orbit-derived precision (inverse variance
+across re-rendered views) makes N=64 worse than the unweighted kernel
+(counterfeit 46% below the truth; descent from the truth keeps 56%).
+Orbit variance measures reproducibility, not correctness -- the channel
+splits into variance and bias, view resampling exposes only the variance
+half, and systematically biased entries are the most reproducible ones,
+so precision weighting amplifies exactly the entries counterfeits live
+in. A full Nishimori match needs the cross-modal residual model, which
+requires pairs. The legal half-channel is now measured to be the wrong
+half.
+
+## Closed form, and what it revealed
+
+The triangle energy has a closed form. Writing M for the elementwise
+product of the permuted text field with the visual field, the pairwise
+term is a constant minus 2 sum(M) and the all-triple term is a constant
+minus 2 trace(M^3)/6, because traces of powers are invariant under
+simultaneous row-column permutation. One batched matrix product scores
+hundreds of candidate permutations over every C(N,3) triple, replacing a
+200,000-triple sample and a 5.7 ms per-proposal Python loop. Validated
+against brute force to 3e-7. The same identity opens the whole family
+trace(M^k): fourth and fifth order closed loops now cost one more matrix
+product each.
+
+Three diagnostics followed, each changing what we thought we knew.
+
+**Descent retention measures the searcher.** Sampled-proposal descent
+keeps the truth for every candidate energy at N=512; exact all-pairs
+enumeration is stronger; long tempering is stronger still and reaches
+10% below the truth. The gate statistic is corrected to compare the
+truth against the deepest state a strong searcher reaches.
+
+**Spectral solvers place us in the hard phase.** Umeyama and GRAMPA run
+in polynomial time on N x N fields and need no common embedding
+dimension, so they sidestep the glassy landscape entirely -- and they
+return 3--13x chance, never recovery. Correlated-matching theory says
+so: at N=256 the information-theoretic threshold is near rho = 0.29 and
+the polynomial-algorithm threshold near rho = 0.9, and our fields sit at
+rho = 0.51--0.57. Identifiable, not efficiently recoverable, exactly as
+observed. (Our fields are structured rather than Wigner, so the theory
+guides rather than proves.)
+
+**Correlation and identifiability are different axes.** The colour
+channel alone reaches rho = 0.863, far above the mixed descriptor, but
+its scenes collide: only 126 distinct colour multisets among 256 scenes,
+capping any matcher at 49% and collapsing to 25% at N=1000. The
+eigenvalue degeneracy that breaks spectral methods is that collision
+structure in spectral form. Full descriptors are 100% distinct, so the
+information is present; mixing strong and weak channels into one moment
+kernel is what dilutes rho from 0.86 to 0.51.
+
+## Tier 0: the cross-modal dictionary, derived rather than declared
+
+Anchors that map "red" to a hue band are not labels -- no pair is ever
+consulted -- but they are hand-supplied cross-modal prior. Tier 0
+forbids them, and the derivation splits by factor type: ordered factors
+(count, size) match by their intrinsic order with the residual ambiguity
+enumerated; unordered factors (colour, shape) can only be matched by
+distributional statistics.
+
+That exposed a defect in world v0: factor values were sampled uniformly,
+so colour marginals and co-occurrences are symmetric and the
+correspondence is information-theoretically unrecoverable. Real corpora
+are the opposite, and this is precisely the structure unsupervised word
+translation runs on. World v1 samples colour and shape with a Zipf
+exponent of 1 (colour marginals 0.317 down to 0.035), which is both more
+realistic and sufficient.
+
+On v1 the derivation runs entirely on unimodal statistics of disjoint
+splits:
+
+1. text families emerge from mutual exclusivity -- tokens of one factor
+ never co-occur inside a group phrase, so a greedy pass recovers
+ {a, two, three, four}, the ten colour words, and {small, large} with
+ no declared list;
+2. vision colour classes come from k-means on raw component RGB, with no
+ hue rule;
+3. the two sides pair by marginal frequency rank.
+
+**The derived dictionary is 10/10 semantically correct.** Tier 0 fields
+then reach rho = 0.570 -- above the v0 declared-dictionary Tier 1 value
+of 0.508 -- with a 97.3% identifiability ceiling, and GRAMPA rises to
+13x chance at eta = 1. Zero declared cross-modal information.
+
+## First recovery: 54% at Tier 0
+
+The rho decomposition made the target unambiguous. With oracle
+segmentation the field correlation is exactly 1.0 and the derived
+dictionary costs nothing (oracle and derived give identical fields); with
+connected-component segmentation it is 0.5696. **The entire gap was
+segmentation.**
+
+Three unimodal fixes, each measured:
+
+| Fix | Measure | Before | After |
+|---|---|---:|---:|
+| Gestalt appearance grouping | exact group count | 71.9% | 90.2% |
+| Distance-transform watershed | exact object count | 74.2% | 100% |
+| One-dimensional k-means on radial extent | size class | 52.7% | 87.9% |
+
+The watershed matters because connected components merge touching ring
+members: the renderer leaves a gap of 0.37 radii between neighbours,
+under two pixels for small objects, so a quarter of all scenes lost
+objects before any grouping logic ran. The size fix matters because area
+confounds size with shape -- a cross of a given radius has half the area
+of a circle -- so extent replaces area, and natural breaks replace
+terciles because the size classes are separated by gaps rather than
+equally populated in extent.
+
+Field correlation rises 0.5696 to 0.6708 to **0.9285**, crossing the
+polynomial-recovery threshold, and GRAMPA follows it exactly:
+
+| Fields | rho | GRAMPA best |
+|---|---:|---:|
+| distance-merge | 0.570 | 5.1% |
+| Gestalt grouping | 0.671 | 9.4% |
+| watershed + extent sizes | **0.928** | **53.9%** |
+
+**Recovery is 53.9--54.7% exact scene identification across three hidden
+shuffles, against 0.39% chance -- 138x.** No pairs, no declared
+dictionary, no learned cross-modal map: the colour correspondence is
+derived from marginal frequency rank, the factor families from mutual
+exclusivity, the object states from pixels, and the assignment from a
+polynomial spectral solver on two independently built relation fields.
+
+This is the first end-to-end world matching result in the project, and
+it lands exactly where correlated-matching theory said it would: nothing
+worked below rho = 0.9, and recovery appeared as soon as the fields
+crossed it.
+
+The phase diagram now carries measured recovery rather than pass/fail:
+
+| rho | N | Recovery | Chance |
+|---:|---:|---:|---:|
+| 0.570 | 256 | 5.1% | 0.39% |
+| 0.671 | 256 | 9.4% | 0.39% |
+| 0.928 | 256 | **53.9%** | 0.39% |
+| 0.926 | 600 | **26.3%** | 0.17% |
+
+Recovery falls with population size at fixed correlation, which is the
+expected shape: the correlation a polynomial solver needs grows with N.
+Both large-N and small-N points sit far above chance (158x and 138x), so
+the boundary is a gradient rather than a cliff in this range.
+
+## Composing the two solvers: 95%
+
+The spectral solver and the energy are complementary in exactly the way
+their failure modes suggest. Spectral reads the coarse correspondence out
+of the eigenstructure with no search, so it never gets trapped, but its
+rounding is noisy. Exact steepest descent on the closed-form energy fixes
+rounding but cannot find the basin from a random start. Composed at
+N=256:
+
+| Stage | Accuracy |
+|---|---:|
+| GRAMPA initialisation | 53.5% |
+| plus pairwise-energy refinement | 86.7% |
+| plus pairwise-and-triangle refinement | **95.3%** |
+
+Scaling is gentler than the spectral numbers alone suggest. At N=600 the
+spectral initialisation halves to 26.2% but the composed solver only
+falls to 84.7%, and there the refined energy sits *above* the truth
+(0.7056 against 0.6623), meaning the truth remains the better
+configuration and the solver simply stopped short -- a healthier state
+than the marginal undercut seen at N=256.
+
+| N | Spectral | plus pair | plus pair and triangle | Refined energy vs truth |
+|---:|---:|---:|---:|---|
+| 256 | 53.9% | 87.5% | **96.1%** | 0.04% below |
+| 600 | 26.2% | 80.0% | **84.7%** | 6.5% above |
+
+The final configuration at N=256 has energy 0.64738 against the truth's 0.64981 --
+below it by 0.04% at 95.3% accuracy. That is a different creature from
+the counterfeits of the previous weeks: not a wrong configuration
+exploiting a blind spot, but residual field noise making a nearly correct
+assignment marginally preferable. The remaining 5% is measurement error
+in the fields, not a failure of identifiability.
+
+**Blind recovery of 95.3% of a hidden image-caption correspondence, with
+no pairs, no declared dictionary, and no learned cross-modal map.**
+
+## The recovered correspondence transfers to unseen scenes
+
+Matching is transductive, so the result only matters if the recovered
+assignment can be spent. Treating it as pseudo-pair supervision for a
+ridge map from vision states to text states, and applying that map to 200
+held-out scenes that took no part in matching:
+
+| Measure | Recovered pairs | Random-pair control | Shuffled-image control |
+|---|---:|---:|---:|
+| Held-out retrieval, exact | **93.0%** | 0.5% | -- |
+| Colour set F1 | **0.989** | 0.399 | 0.295 |
+| Count multiset exact | **97.5%** | 2.5% | 8.5% |
+| Group count exact | **97.5%** | 17.0% | 58.0% |
+
+Chance retrieval is 0.5%. The random-pair control lands exactly on
+chance, so nothing here comes from the map family or the state geometry;
+the shuffled-image control collapses colour F1 from 0.989 to 0.295, so
+the output is conditioned on the image rather than on a description
+prior.
+
+This closes rungs four and five of the evidence ladder inside the
+synthetic world: the output is image-conditioned, and the correspondence
+extrapolates to scenes the matcher never saw. Matching is a bootstrap,
+not the deployment mechanism -- once enough correct pairs exist, the map
+carries the rest forward.
+
+## What the demonstration actually shows: matching verifies, statistics align
+
+The framing matters more than the numbers. Finding a permutation
+presupposes a bijection between the two corpora, and real unpaired data
+has none: image and text collections overlap only partially in the world
+states they cover, one image answers to many descriptions or none, and
+granularity differs. If the method needed that bijection it would not
+transfer.
+
+It does not. The step that establishes cross-modal correspondence -- the
+derived dictionary -- reads the text families from the 6,000 text-only
+scenes and the colour classes from the 6,000 vision-only scenes, and
+those two sets are disjoint. No instance appears on both sides. The
+pairing comes from marginal frequency, a statistic of each corpus alone.
+
+The 95.3% matching and the 93.0% transfer are therefore verification, not
+mechanism: they confirm at instance level that the factor coordinates
+recovered from disjoint corpora are the right ones. On real data, where
+no hidden truth exists to score, held-out generation against a
+shuffled-image control replaces matching accuracy as the measurement.
+
+The conditions this leaves are weaker than pairing but not vacuous. The
+two corpora must reflect a similar world distribution, since frequency
+ranks are only comparable when both sides sample the same world;
+reporting bias shifts the text marginal away from the visual one, which
+the bias worlds show degrades the dictionary gracefully (rank correlation
+1.00/0.98/0.84/0.77 gives 8/8/6/6 correct entries) rather than breaking
+it; and co-occurrence structure, which real corpora have in abundance and
+this world lacks by construction, is the bias-robust upgrade over bare
+frequency.
+
+What remains open is unchanged and should not be blurred by this result:
+the object states here are hand-built upper-bound descriptors, and no
+self-supervised recipe tested has produced their equivalent; and the
+world is procedurally generated. The demonstration establishes that the
+matching machinery works end to end when the representations are good
+enough, not that learning produces such representations.
+
+## Reporting bias, and the discipline of separating solver from information
+
+The frequency-rank dictionary depends on both corpora ranking values the
+same way, which real corpora do not: text mentions the salient, pixels
+count the common. Two worlds test it. World v3 adds colour-shape coupling
+(each colour prefers one shape) and strong reporting bias, so captions
+name only 50% of the groups present and the pixel and text colour
+rankings diverge in the tail (brown moves from ninth to fourth, pink from
+sixth to tenth). World v4 replaces the cyclic coupling with a distinct
+Dirichlet shape profile per colour.
+
+On v3 the derivation degrades and the recovery of the cause matters more
+than the number:
+
+| Evidence and solver | Correct |
+|---|---:|
+| Marginal frequency rank | 4/10 |
+| Joint shape structure, alternating solver | 6/10 |
+| Joint plus marginal, exact enumeration of shape permutations | 7/10 |
+| Oracle shape columns, measured clusters | 8/10 |
+| Oracle labels, all signals | 10/10 |
+
+The first reading was that 6/10 is an information-theoretic ceiling,
+since four of ten vision colours have near-identical shape profiles --
+ten colours cycling over six shapes leaves 10 mod 6 = 4 duplicates, and
+the twin count came out at exactly four. That reading was wrong, and
+checking it rather than asserting it is the point. The twins differ
+sharply in frequency; combining both signals separates all ten (minimum
+pairwise evidence distance rises from 0.0008 to 0.2322), so the ceiling
+is 10/10. What remains is a one-entry solver gap and a two-entry
+estimation gap, the latter because reporting bias leaves common colours
+with a quarter of their mentions and thins the joint table.
+
+On v4, where the coupling gives every colour a distinct shape profile,
+exact enumeration recovers **10/10 under the same strong reporting bias
+and 50% mention rate**, and does so across a range of frequency weights
+including zero. Joint structure alone suffices when it is
+non-degenerate, which is the situation real corpora present: colour and
+object co-occurrence there is far richer than a cyclic preference.
+
+The pattern to carry forward is procedural. Three times in two days a
+result looked like a property of the problem and turned out to be a
+property of the solver: descent retention, the triangle-energy pass, and
+this ceiling. Each was settled by computing the bound rather than
+inferring it.
+
+## Next
+
+1. Push field validity: segmentation is the dominant residual noise
+ (70% exact group counts); texture-world slot binding (running) or a
+ supervised-free segmentation refinement would move validity directly.
+2. Third-order triangle/holonomy invariants -- the remaining queued
+ invention: counterfeits to date satisfy pairwise statistics only, and
+ triangle tensors multiply the constraint count by N per node.
+3. The objective-battery finding stands: no standard SSL recipe meets
+ the ceiling spec; binding fails on flat scenes at both resolutions
+ (sorted alpha masses 0.23--0.18 against uniform 0.20), and the
+ texture world tests whether within-object structure fixes it.
+
+## Main artifacts
+
+- `artifacts/synth_v0/manifest.json`, `scenes.private.json`,
+ `captions.json`, `interventions.private.json`
+- `artifacts/synth_v0/{vision,text}_tower.pt`
+- `artifacts/synth_v0/{vision,text,text_orbits}.pt`
+- `artifacts/synth_v0/diagnostics.json`
+- `artifacts/synth_v0/gate_test512_orbit.json`
+- `artifacts/synth_v0/content_gate_k32.json`