OverviewFilesCommitsIssuesDocsReleasesPeers

hypercore-kb commits / b38666e

basal-agent: threecarrier.c — third attempt void; the obstacle is deferred benefit, not cheap rediscovery
Applied the known fix: payoff made EXPENSIVE TO REDISCOVER (NTARG=4 specific types of NTYPE=16, so a lost type costs many mutations to re-find rather than one in four). Templates still collapse — 0.007/0.007/0.010/0.006 across arms — and T0 voids the comparison again. THE DIAGNOSIS REFINES RATHER THAN RESOLVES. A template costs a slot NOW, lowering current function, and between-compartment selection scores current function EVERY generation. Its benefit is DEFERRED and CONDITIONAL — it pays only if a type is later lost. Making rediscovery expensive raises the deferred payoff without touching the immediate cost, so the trade is lost before it can be won. WHAT WOULD ACTUALLY BE NEEDED: losses frequent enough that the deferred benefit lands inside the selection horizon, i.e. few copies per type, i.e. SMALL COMPARTMENTS — which is exactly the regime fidfloor.c measured as destroying sequence information. The requirement collides with an already-measured result. This is not a parameter away from working. THREE ATTEMPTS, THREE VOIDS, each revealing the previous diagnosis was incomplete (starved dynamics -> a control calibrated to its own arm -> cheap rediscovery -> deferred benefit). All faults recorded in the file header. The question is good; the design is not converging, and stopping is the honest call rather than a fourth patch. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
b38666ed90d6ba1d8f4848afd4216f220a4e67d6
by plankatron <fleeky@gmail.com> · 2026-08-01T02:44:53.000Z

Changed files (1) +38 -5

basal-agent/threecarrier.c +38 -5
……@@ -7,6 +7,26 @@
77 * 0 PARASITES, which is death, not collapse-to-parasites. Units now persist, production adds, and a
88 * per-unit death rate removes.
99 *
10 * THIRD ATTEMPT, ALSO VOID — and it refines the diagnosis rather than fixing it.
11 * The payoff was made EXPENSIVE TO REDISCOVER (NTARG=4 SPECIFIC types out of NTYPE=16, so a lost
12 * type costs many mutations to re-find instead of one in four). Templates STILL collapse:
13 * 0.007 / 0.007 / 0.010 / 0.006 across the arms, and T0 voids the comparison again.
14 *
15 * THE REAL OBSTACLE IS DEEPER THAN CHEAP REDISCOVERY. A template costs a slot NOW, which lowers
16 * current function — and between-compartment selection scores current function EVERY generation. Its
17 * benefit is DEFERRED and CONDITIONAL: it pays only if a type is later lost. Making rediscovery
18 * expensive raises the deferred payoff without touching the immediate cost, so the trade is still
19 * lost before it can be won.
20 *
21 * WHAT WOULD ACTUALLY BE NEEDED: losses must occur often enough that the deferred benefit lands
22 * inside the selection horizon. That means few copies per type — small compartments — which is
23 * exactly the regime fidfloor.c measured as destroying sequence information. So the requirement
24 * collides with an already-measured result, and this is not a parameter away from working.
25 *
26 * THREE ATTEMPTS, THREE VOIDS, each revealing the previous diagnosis was incomplete. Stopping here
27 * is the honest call: the question is good and the design is not converging.
28 *
29 * ---- second attempt ----
1030 * SECOND ATTEMPT, ALSO VOID — and the diagnosis was already on record before it was built.
1131 * K1 was fixed (growth now tracks TOTAL SIZE, so a parasite-filled compartment grows as well as a
1232 * catalyst-filled one, and the knockout receives MORE material than FULL) and the metrics were
……@@ -97,7 +117,8 @@
97117#define NCOMP 600
98118#define CAP 16
99119#define GEN 400
100#define NTYPE 4
120#define NTYPE 16 /* larger type space: a lost type is EXPENSIVE to re-find */
121#define NTARG 4 /* payoff needs these SPECIFIC types, not any four */
101122#define BETA 2.0 /* parasite replication advantage */
102123#define MUT 0.02 /* role/type mutation */
103124#define FLO 0.85 /* template copy fidelity without a catalyst present */
……@@ -118,6 +139,7 @@ static int sz[NCOMP], nsz[NCOMP];
118139static double mat[NCOMP], nmat[NCOMP];
119140static int ncomp;
120141static double TFRAC;
142static int TARGET[NTYPE];
121143
122144static void counts(int c,int *nc,int *nt,int *np){
123145 *nc=*nt=*np=0;
……@@ -127,23 +149,33 @@ static void counts(int c,int *nc,int *nt,int *np){
127149 else (*np)++;
128150 }
129151}
130/* function = distinct catalyst types present. What the compartment can actually do. */
152/* function = how many of the SPECIFIC target types are present among catalysts.
153 THIS IS THE FIX. Previously any of 4 types counted, so a random mutation supplied a useful type
154 one time in four and rediscovery was cheap — genome.c's diagnosis, rebuilt by accident. Now the
155 payoff needs %d particular types out of %d, so a lost type costs many mutations to re-find and a
156 template that holds one is worth keeping. Nothing rewards templates directly; they still fold
157 nothing and still cost a slot. */
131158static int func_of(int c){
132159 int seen[NTYPE]; memset(seen,0,sizeof seen);
133160 for(int k=0;k<sz[c];k++) if(cell[c][k].role==CAT) seen[cell[c][k].type]=1;
134 int f=0; for(int t=0;t<NTYPE;t++) f+=seen[t];
161 int f=0; for(int t=0;t<NTYPE;t++) if(seen[t]&&TARGET[t]) f++;
135162 return f;
136163}
137164
138165/* ko: 0 = FULL, 1 = boundary decoupled, 2 = reading off, 3 = replicase off */
139166static void run(int ko,double *alive,double *funcavg,double *parfrac)
140167{
168 for(int t=0;t<NTYPE;t++) TARGET[t]=0;
169 for(int got=0;got<NTARG;){ int t=rint_(NTYPE); if(!TARGET[t]){ TARGET[t]=1; got++; } }
141170 ncomp=NCOMP;
142171 for(int c=0;c<ncomp;c++){
143172 sz[c]=CAP; mat[c]=0;
144173 for(int k=0;k<CAP;k++){ /* SEEDED COMPLETE: catalysts + templates */
174 /* seeded COMPLETE and CORRECT: catalysts and templates covering the target set */
175 int tg=-1,seen=0;
176 for(int t=0;t<NTYPE&&tg<0;t++) if(TARGET[t]){ if(seen==(k/2)%NTARG) tg=t; seen++; }
145177 cell[c][k].role = (k%2)?TEM:CAT;
146 cell[c][k].type = k%NTYPE;
178 cell[c][k].type = (unsigned char)(tg<0?0:tg);
147179 }
148180 }
149181 for(int g=0;g<GEN;g++){
……@@ -217,10 +249,11 @@ int main(void)
217249 int NS=5;
218250 printf("=== THREE CARRIERS: is the COMPLETE system STABLE? (not: can it bootstrap) ===\n");
219251 printf(" BOUNDARY nobody maintains, METABOLISM that produces, TEMPLATE that only remembers —\n");
252 printf(" PAYOFF IS NOW EXPENSIVE TO REDISCOVER: %d SPECIFIC types of %d, so a lost type costs many\n mutations to re-find and a template holding one is worth keeping.\n",NTARG,NTYPE);
220253 printf(" three couplings, none defectable: metabolism->boundary, template->function,\n");
221254 printf(" catalyst->template fidelity. Seeded COMPLETE; parasites are NOT seeded, they arise by\n");
222255 printf(" mutation, replicate %.0fx faster and contribute nothing. %d compartments x %d, %d gens.\n\n",1+BETA,NCOMP,CAP,GEN);
223 printf(" arm | working (func>=2) | mean function (max %d) | templates | parasites\n",NTYPE);
256 printf(" arm | working (func>=2) | mean function (max %d) | templates | parasites\n",NTARG);
224257 printf(" ------------------------+-------------------+------------------------+-----------+----------\n");
225258 const char *nm[4]={"FULL (all three) ","K1 boundary decoupled ","K2 reading off ","K3 replicase off "};
226259 double A[4],F[4],P[4],T[4];