OverviewFilesCommitsIssuesDocsReleasesPeers

hypercore-kb commits / 6098cd4

basal-agent: post-mortem for 2026-07-31, and the fluctuation result in SYNTHESIS
POSTMORTEM-2026-07-31.md — what went right, what went wrong, lessons, ladder status, ranked next steps and research ideas. Repo is in the ATOMSPACE org. Right: Law 2 derived at 1->2 and TRANSFERRED to 4->5 (selection's effect on division of labour flips -4.8% -> +7.5%); one substrate expressing all five rungs and independently recovering five prior results incl. Eigen's ln(sigma)/L to 0.011; one replicated cross-rung effect (chain12, 1.25x over 484 networks); every invalid experiment caught by a pre-registered guard; retractions committed as retractions. Wrong: ONE mistake in three flavours — (a) one knob moving two variables, 4 instances, 1 survived; (b) the wrong statistic for the question, 3 instances; (c) a control calibrated to its own arm, 2 instances; (d) repeating a documented diagnosis, 2 instances. Lessons: pre-registration catches encoded answers but NOT confounded comparisons — matched-condition checking is a separate discipline; ask what else moves when the knob moves, at design time; a "did the test run?" guard is worth more than the test; error rate is the stopping signal. SYNTHESIS updated with the fluctuating-environment outcome: null on the pre-registered metric (template abundance — the wrong variable for a third time, since reading consumes templates) but on function the effect is present, working fraction 0.294 -> 0.478 and function 1.27 -> 1.47 with reading on. Recorded as suggestive, needing a clean re-run scored on function. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
6098cd43b92f4f1116cbdf1603eb57b7f33cc4a7
by plankatron <fleeky@gmail.com> · 2026-08-01T02:58:29.000Z

Changed files (2) +140 -1

basal-agent/POSTMORTEM-2026-07-31.md +132 -0
……@@ -0,0 +1,132 @@
1# Post-mortem — 2026-07-31
2
3**Repo:** `basal-agent` (own repo, `~/git-repos/basal-agent.git`; also a subtree of `hypercore-kb`).
4**Org:** **atomspace** — alongside `opencog-atomspace`, `learn`, `matrix`, `sensory`.
5**Session:** ~30 experiments in one sitting. Record: `SYNTHESIS.md` Parts C and D.
6
7---
8
9## What went right
10
11**1. A law was derived, and then transferred to a different rung.** Law 2 — *a boundary that must be
12maintained is a strategy and gets invaded; a structural one cannot be* — came out of the 1→2 boundary
13work (`signal.c`, measured invasion from every starting condition). It then **predicted the fix for
144→5**, a rung it was not derived from: removing the retreat-to-generalist flipped selection's effect
15on division of labour from **−4.8% to +7.5%**. Transfer across rungs is the strongest intellectual
16result of the day.
17
18**2. One substrate now expresses all five rungs**, and independently recovers five prior results —
19`rung1.c`'s percolation threshold, `polymer.c`'s bootstrap paradox, `ribozyme.c`'s compartment
20ordering, `byproduct.c`'s isolation control, and **Eigen's ln(σ)/L to within 0.011**. That last one
21matters most: it is an analytic value the substrate was never told about.
22
23**3. One replicated cross-rung effect.** `chain12.c` — an autocatalytic set preferentially sustains
24self-templating species, **1.25× over 484 networks and an 8× density sweep**, permutation control
25pinned at chance. It survived the exact check that retracted three other claims the same day.
26
27**4. Every invalid experiment was caught by a pre-registered guard, not discovered later.**
28`partition.c`'s non-partitioning first run, `byproduct.c`'s failed positive control, `fidfloor.c`'s
29broken baseline, three `threecarrier` voids. All caught by a "did the test actually run?" check
30written before the run.
31
32**5. Retractions were committed as retractions.** Three retractions, one downgrade, four voids — all
33in the record, struck in place in SYNTHESIS, none quietly dropped or rewritten into successes.
34
35---
36
37## What went wrong
38
39**One mistake, made repeatedly, in three flavours.**
40
41### (a) One knob moving two variables — 4 instances
42
43| claim | the confound | outcome |
44|---|---|---|
45| Test A, variance beats size | propagule mode changed variance **and** realized size | **survived** the check |
46| Test B T4, variance destroys closure | same | **retracted** |
47| `chemoton` C3, reproduces the decree | division threshold changed the comparison **and** realized size | **downgraded** |
48| `partition`, partitioning kills gating | cost moved fragmentation **and** everything else | **mechanism corrected** |
49
50One in four survived. Every failure had the identical shape, and the fix was always the same: hold
51the confounded variable fixed, or interpolate onto it.
52
53### (b) The wrong statistic for the question — 3 instances
54`linkage.c` used an absolute bar on a control in a two-arm experiment. `ladder35.c` located a
55threshold by largest *absolute* drop, which on a monotone curve always finds the steep start rather
56than the transition. And **template abundance was used three times** as a measure of memory paying —
57when reading *consumes* templates, so abundance measures them **not being used**.
58
59### (c) A control calibrated to its own arm — 2 instances
60`replicase.c`'s `PFLIP` guessed at 0.60 when the real frequency was 3–13%. `threecarrier`'s K1 gave
61growth arithmetically **identical** to the arm it was controlling.
62
63### (d) Repeating a documented diagnosis — 2 instances
64The template-abundance error was diagnosed in `genome.c`, written into `genome.md` in plain language,
65and then rebuilt in `replicase.c` and again in the fluctuation run. **A written diagnosis did not
66survive context pressure.**
67
68---
69
70## Lessons
71
721. **Pre-registration catches encoded answers. It does not catch confounded comparisons.** The
73 arc's standing rule ("never encode the answer in the update rule") was followed throughout and
74 caught nothing here — a model can be perfectly honest about what it supplies and still credit its
75 effect to the wrong variable. Matched-condition checking is a **separate discipline**.
762. **Ask at design time: what else changes when I move this knob?** Every one of the four confounds
77 was visible in the design, not just in hindsight.
783. **Ask: is this statistic the right one for this question?** Absolute bars, absolute drops and raw
79 counts were wrong three times. A two-arm experiment wants a *separation*; a threshold wants a
80 *crossing*; a consumed resource cannot be measured by its *abundance*.
814. **A "did the test run?" guard is worth more than the test.** It caught four invalid experiments,
82 including one that had printed a confident false headline.
835. **Error rate is the stopping signal, not effort.** The last five experiments each had a fault the
84 previous had not. Three voids in a row, each fix exposing a deeper flaw, means the model of the
85 problem is behind the model of the code.
86
87---
88
89## Where the ladder actually stands
90
91| transition | status |
92|---|---|
93| **1→2** | **open** — four measured constraints, not a wall |
94| 2→3 | jumped (`linkage.c`), separate model |
95| 3→4 | jumped (`rung34.c`), separate model |
96| 4→5 | **partial** — 38.8%, irreversibility *supplied* |
97| chaining | one weak cross-rung effect (`chain12`); no rung *produces* the next |
98
99**The four constraints on 1→2**, all measured here: fidelity must get cheap before a replicase exists
100(`polymer.c`, and `bridges.c` closed the environmental-floor escape); information must be expensive
101to rediscover (`genome.c`); the replicase must privatise below compartment scale (`replicase.c`,
102`replisome.c`); and compartments must stop costing more sequence maintenance than they buy
103(`fidfloor.c`). A fifth emerged tonight: **memory cannot pay under instantaneous selection.**
104
105---
106
107## Next steps, ranked
108
1091. **Re-run the fluctuating-environment test scored on function, not template count.** The design is
110 right and the effect is probably real — under fluctuation, reading raised the working fraction
111 0.294 → 0.478 and function 1.27 → 1.47. Only the metric needs fixing. Cheapest, highest value.
1122. **`chain12` robustness** — longer runs, other network sizes, `NRXN`/`NSPEC` variation. It is the
113 one replicated cross-rung result and everything else would build on it.
1143. **`threecarrier` with correct metrics** — all four attempts' faults are in the file header.
1154. **Does an irreversibility ratchet *evolve*?** 4→5 currently *supplies* it. Gene loss is the
116 biological analogue and plausibly the same structural, non-discretionary commitment `linkage.c`
117 found at 2→3.
118
119## Research ideas
120
121- **Deferred vs instantaneous selection as a general obstacle to memory.** Tonight's fifth
122 constraint may not be about origins at all — anything scored on current state cannot afford
123 storage. That is a claim about learning systems as much as chemical ones, and it touches the
124 agent line (`belief_field_agent.c`) directly.
125- **"Small compartments correct but forget"** appeared *four* independent times. Is that a general
126 theorem about units of selection rather than a feature of our models?
127- **Byproduct walls beat supplied ones** (11.39 vs 10.78 in `byproduct.c`) — self-sealing where
128 activity is high while low-activity regions re-mix recycles failed regions better than a permanent
129 box. Undertested and interesting.
130- **Assortment variance, not size**, is the operative variable (Test A, the one that survived). Our
131 compartment-size threshold and the single-cell bottleneck of every obligate multicellular lineage
132 may be the same mechanism at different scales.
basal-agent/SYNTHESIS.md +8 -1
……@@ -958,7 +958,14 @@ forget*.
958958**This is not a parameter away from working**, which is why three voids were committed as voids
959959rather than patched into a fourth. The design does not converge; the question is still good.
960960
961**The next step, and it does not collide with anything measured:** make the **environment fluctuate**.
961**The next step was built and is recorded in `threecarrier.c`'s header — a fluctuating environment.**
962On the pre-registered metric (template abundance) it was a null; on the right variable it was not.
963Under fluctuation, turning reading ON raised the working fraction **0.294 → 0.478** and function
964**1.27 → 1.47**. But template abundance was the wrong measure for the third time in the session —
965reading *consumes* templates, so abundance tracks them **not being used**. Suggestive, not
966established; needs a clean re-run scored on function. Original reasoning follows:
967
968**Make the environment fluctuate.**
962969If the target set changes over time, a type not needed now becomes needed later, and holding it in a
963970template pays *regularly* rather than *conditionally*. That converts a deferred benefit into a
964971recurring one without requiring small compartments — the standard route by which fluctuating