From 1bc90fe837df635a796c3fd02c0a88b15ab2623a Mon Sep 17 00:00:00 2001 From: Matarener Date: Tue, 27 Oct 2026 17:23:06 +0000 Subject: [PATCH] Compress the ordinary events of the PR5907 P104 word: 25,998 to 25,861, same invoice Three semantics-preserving peephole passes (merge adjacent ADD and SCALE events, drop dead owned writes) free 137 of the 26,000 retained events of the latest conditional P104 word. The MOVE/INIT/CLEAR sequence, all charts, lifetimes, endpoint rows and the paid and helper profiles are unchanged; the unmodified PR5827 checker accepts the word. The README records a negative search for further PR5786-style hubs and rank-two shared-subdivision blocks on this word. No new kappa. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_011VhYmBaKiz6eBvQeMiHznC --- .../p104-ordinary-event-compression/README.md | 72 +++++++++ .../RESULT.json | 73 +++++++++ .../SOURCES.json | 36 +++++ .../p104-ordinary-event-compression/TASK.json | 129 +++++++++++++++ .../VERIFY.json | 22 +++ .../WORD.json.gz | Bin 0 -> 119875 bytes .../compress.py | 98 ++++++++++++ .../p104-ordinary-event-compression/verify.py | 151 ++++++++++++++++++ 8 files changed, 581 insertions(+) create mode 100644 research/p104-ordinary-event-compression/README.md create mode 100644 research/p104-ordinary-event-compression/RESULT.json create mode 100644 research/p104-ordinary-event-compression/SOURCES.json create mode 100644 research/p104-ordinary-event-compression/TASK.json create mode 100644 research/p104-ordinary-event-compression/VERIFY.json create mode 100644 research/p104-ordinary-event-compression/WORD.json.gz create mode 100644 research/p104-ordinary-event-compression/compress.py create mode 100644 research/p104-ordinary-event-compression/verify.py diff --git a/research/p104-ordinary-event-compression/README.md b/research/p104-ordinary-event-compression/README.md new file mode 100644 index 0000000000..24b801f472 --- /dev/null +++ b/research/p104-ordinary-event-compression/README.md @@ -0,0 +1,72 @@ +# Ordinary-event compression of the PR5907 P104 word: 25,998 → 25,861 events, same invoice + +**Result (tooling and a rewritten word, no new κ).** The latest conditional P104 word, +[PR #5907](https://github.com/CrocSwap/integer-mult-bounds/pull/5907) (DreamingOfClouds, κ 0.003125282), sits at +25,998 of the retained 26,000-event cap, which its author names as the main constraint on further steps. Three +semantics-preserving peephole passes over its ordinary events free **137 events** (25,861 remain) while every MOVE, +INIT and CLEAR event, every chart, every owned lifetime, every endpoint row and the complete paid and helper +profiles stay exactly the same. The rewritten word is shipped as [WORD.json.gz](WORD.json.gz) and is regenerated +by [compress.py](compress.py) from the pinned PR5907 word. + +The passes: (M1) two `ADD r <- s` at the same chart with no intervening event that reads or writes `r` or writes +`s` become one ADD with the summed coefficient (deleted when the sum is zero); (M2) two consecutive `SCALE r` +become one SCALE; (D1) a write into an owned field that is CLEARed before being read again is deleted. The three +passes run to a fixed point: 98 merges and 3 dead writes. ADD count 21,706 → 21,599, SCALE 753 → 724, COPY 23 → 22. +Merged coefficients stay dyadic and within the author's growth bound; the author's scalar allowance falls from +228,664 to 227,372 units. + +Base: canonical main `19fdb086ea96af9a9f87936a2b888e10af4ed810`. Live inputs are pinned in [SOURCES.json](SOURCES.json). + +## Why this matters + +Every recent P104 step (helper hubs #5786, rung removal #5907) adds ordinary events, and the word had two events +of headroom left. The freed 137 events are room for about four more hubs or rung removals of the kind already +in the ladder. The rewrite does not change κ: the invoice is a function of the paid and helper profiles only. + +It also records a negative result obtained with that headroom. A search for further #5786-style asynchronous +hubs on this word (one buffer, one frame, collection before and injection after the cut, over all 385 full-boundary +helpers, all frames of dimension 1–8 and the cut times where the available contacts change) found no hub using +only free contacts; every one of the 298 feasible (frame, helper, cut) triples needs paid subdivisions of other +queries, and the cheapest complete bills are all negative (best −0.00051 in the local concave moment at the PR5907 +exponent, with two subdivisions costing 0.01028 against a split gain of 0.00977 at dimension 8). Rank-two blocks +in which two helpers share the same subdivided queries (the S09 route of the #5803 atlas) are feasible at frames +245 and 246 but no block with at most four shared subdivisions exists, and five or more subdivisions always exceed +the two-helper gain. The search code is not part of this package; its logs are available on request. + +## Verification + +```sh +python3.12 -B research/p104-ordinary-event-compression/verify.py +``` + +About six seconds, standard library only. It authenticates the pinned inputs; regenerates the word with +`compress.py` and compares the decompressed payload with the shipped file; replays both words with its own exact +checker and requires the identical sequence of MOVE/INIT/CLEAR events with identical rows of every moved field and +all 799 endpoint rows; loads PR5827's `local.py` unmodified and requires equal paid profile, helper profile, +storage inventory and rank mass plus a passing dense transpose; rejects two controls (a doubled merged coefficient, +a deleted live ADD); and compares [RESULT.json](RESULT.json) in full. Marker: `PASS_P104_ORDINARY_EVENT_COMPRESSION`. + +## Scope and limits + +Only the ordinary alphabet is rewritten. The native maps, the physical caller, the complete invoice, the compiler +and outer checks of PR5907 are untouched and were not rerun here; their inputs (profiles, inventory) are shown +equal. The five inherited framework assumptions remain. This is an agent check, not human acceptance. The selected +record is unchanged. The passes are local and greedy; a global re-synthesis of the ordinary events could free more. + +## Open next questions + +- Does a further-compressed word admit a positive-bill hub or rung removal that the 26,000 cap had blocked? + First step: rerun the #5907 "same rung structure" search on this word with the 137 spare events. + Blocked by: a search over itineraries, not by this package. +- Can a global ordinary re-synthesis (recomputing each register's reads from a minimal set of ADDs) free + substantially more than the peephole passes? First step: count, per register and chart, the rank of the rows + actually read against the number of ADDs spent. Blocked by: nothing; a bounded experiment. +- Should the event cap itself be revisited in the retained contract rather than worked around? First step: a + maintainer statement on which allowance (events, scalar units, labels) is contractual. Blocked by: maintainers. + +## Credit + +DreamingOfClouds (PR5907 word), Ali Romman (PR5827 word, `local.py` checker and the P104 lineage, with OpenAI +Codex assistance), Mason Hale (PR5811), and the P104 native, controller, compiler and analytic contributors credited +in those packages. The hub-search negative result uses the mechanism of Ali Romman's PR5786. Prepared for +Matarener with Claude (Anthropic), via Claude Code. Apache-2.0. diff --git a/research/p104-ordinary-event-compression/RESULT.json b/research/p104-ordinary-event-compression/RESULT.json new file mode 100644 index 0000000000..e1bfa1c771 --- /dev/null +++ b/research/p104-ordinary-event-compression/RESULT.json @@ -0,0 +1,73 @@ +{ + "author_replay": { + "helpers": { + "1": 15, + "2": 7, + "3": 5, + "4": 107, + "5": 14, + "6": 1, + "7": 10, + "8": 18, + "9": 385 + }, + "owned_fields": 29, + "owned_lifetimes": 31, + "paid": { + "1": 2221, + "2": 456, + "3": 498, + "4": 99, + "5": 163, + "6": 10, + "7": 7 + }, + "paid_rank_mass": 5947, + "peak_owned_fields": 13, + "public_inputs": 770, + "real_scalar_allowance": 227372 + }, + "author_replay_source_scalar_allowance": 228664, + "controls": { + "deleted_live_add": "rejected", + "doubled_coefficient": "rejected" + }, + "events_after": 25861, + "events_before": 25998, + "freed": 137, + "ops_after": { + "ADD": 21599, + "CLEAR": 31, + "COPY": 22, + "INIT": 31, + "MOVE": 3454, + "SCALE": 724 + }, + "ops_before": { + "ADD": 21706, + "CLEAR": 31, + "COPY": 23, + "INIT": 31, + "MOVE": 3454, + "SCALE": 753 + }, + "passes": [ + { + "dead": 2, + "events": 25862, + "merged": 98 + }, + { + "dead": 1, + "events": 25861, + "merged": 0 + }, + { + "dead": 0, + "events": 25861, + "merged": 0 + } + ], + "source": "research/p104-helper468-rung-removal/WORD.json.gz", + "word_payload_sha256": "a033f1ef2d7a2767053330ada477d8072687a72df751a0c76407f44fa0880c10" +} diff --git a/research/p104-ordinary-event-compression/SOURCES.json b/research/p104-ordinary-event-compression/SOURCES.json new file mode 100644 index 0000000000..d9bf66c210 --- /dev/null +++ b/research/p104-ordinary-event-compression/SOURCES.json @@ -0,0 +1,36 @@ +{ + "schema_version": 1, + "base_commit": "19fdb086ea96af9a9f87936a2b888e10af4ed810", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "581f8d87008354eb5b869f7ed9de1317ad837ce8", + "sha256": "2a0220e866417774606e0f991e41b9c1d26b1f43b97857238cf478dbc7d330b5" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "3404fbdd5e7529a0674eef26114b5071e4586cec", + "sha256": "ead6cdc9d0af6d58e8a49744d8ec8c7c15e13d2ba93c276c434bcf9b51b93a81" + }, + { + "path": "research/p104-helper468-rung-removal/RESULT.json", + "usage": "input", + "git_blob": "21a900ef8a49eab504cedc5f171a01efaa8a5be1", + "sha256": "577c39f6c9b017a543692e85ac6f497974f561eb197e0e3fad4b50baa72e5f3d" + }, + { + "path": "research/p104-helper468-rung-removal/WORD.json.gz", + "usage": "input", + "git_blob": "7ffe7b500b02b9d0de49a85ec53e36004f1a411f", + "sha256": "b69a9cb3a26d4f40aa7ad14f814b188fe16a782999f6f56292538e447d67b284" + }, + { + "path": "research/p104-unread-path-resynthesis/local.py", + "usage": "input", + "git_blob": "b7be846b10c4c54a4e1558d7b563bc8c3a170223", + "sha256": "7201df8e32f5c99f7403150e8664042322037906088bc754c67293a241368597" + } + ] +} diff --git a/research/p104-ordinary-event-compression/TASK.json b/research/p104-ordinary-event-compression/TASK.json new file mode 100644 index 0000000000..57e14762e1 --- /dev/null +++ b/research/p104-ordinary-event-compression/TASK.json @@ -0,0 +1,129 @@ +{ + "schema_version": 1, + "task_id": "p104-side-correction", + "priority_revision": 8, + "base_commit": "19fdb086ea96af9a9f87936a2b888e10af4ed810", + "original_card": { + "id": "p104-side-correction", + "question": "Can joint helper bases and a legal causal split improve the complete P104 productive/paid invoice?", + "starting_points": [ + "docs/research/current-priorities.md", + "docs/research/research-family-status.md", + "certificates/selected-result.json", + "docs/research/pr-intake-evidence/pr5599-completion/PROOF-REVIEW.md", + "research/p104-helper-subspace-splits/README.md", + "research/dyadic-helper-channel-capacity/README.md" + ], + "methods": [ + "Construct and independently check one source-bound instance of the stated first experiment.", + "Seek an exact counterexample or target-specific complete-budget obstruction to that same proposed change." + ], + "acceptance_gate": "An exact arbitrary-input identity, source/target frame availability and restoration at the chosen cut, plus the complete channel+correction+idle/hosting bill or an explicit favorable bound. The native channel alone is not a supplier. A scoped local result may be retained without a complete supplier. Expanding it into further construction rounds requires the family-level budget and obligation gate in research-family-status.md; an optimistic passing relaxation alone is not acceptance.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_selected_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Read revision 8, the selected review and live exact-source handoffs. Then follow this card's bounded first_experiment.", + "scope": "Source-bound orientation only, not a supplier replay or theorem proof." + }, + "first_experiment": "Start with the selected #5599 emitted word and review pending #5718 distinct input/output bases plus #5717/#5719 coverage before claiming work. Pick one uncovered source word, helper group and cut region. Prove the arbitrary-input relation and legal entry/exit corrections, then compare full target and paid profiles. Reject if completion, owned lifetimes or consumer costs repay the gain. A static pairing rank alone is not a physical split.", + "bottleneck_link": "Judge the actual current supplier contract and complete signed target/paid bill; frozen-profile ceilings require an applicability proof.", + "allowed_variations": [ + "One exact source head, helper/cut region or quantified proposition and changed hypothesis; check live handoffs first. Different seeds are not different scopes." + ], + "scope_change_triggers": [ + "Changing source head, helper/cut domain, operation alphabet or caller boundary without recording the new scope.", + "Treating an archived proposal or local numerical pass as complete supplier admission." + ], + "overlap_terms": [ + "P104", + "helper basis", + "helper split", + "5718", + "dyadic capacity" + ], + "existing_checks": [ + { + "scope": "PR #4133: literal-slot defect", + "evidence": "research/p104-literal-slot-defect/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "status": "author-checked", + "source_commit": "88666f1dee93fbd85b31fd5d6f91a219e111b5f4", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "scope": "PR #4136: uniform commutation gap", + "evidence": "research/p104-uniform-commutation-gap/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "status": "author-checked", + "source_commit": "281ce601a8be9db470de630759179c23e1dfaa88", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "scope": "PR #4140: uniform encoding gap", + "evidence": "research/p104-uniform-encoding-gap/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "status": "author-checked", + "source_commit": "de25c6525aa866962309df5d107b32d55e6e5628", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "scope": "PR #4153: source-chart shortcut exhausts its optimistic allowance", + "evidence": "research/p104-source-chart-shortcut/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "status": "author-checked", + "source_commit": "9123241fea53df77e51ffe30d9aca1625d4bf3a8", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "scope": "PR #4154: fiber-tag seam mismatch", + "evidence": "research/p104-fiber-tag-seam/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "status": "author-checked", + "source_commit": "4ffcdaee5d6255a9cea1fe53a5424435068089d0", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "scope": "Selected PR5599: complete helper-subspace construction and independent caller replay; five framework assumptions remain.", + "evidence": "docs/research/pr-intake-evidence/pr5599-completion/PROOF-REVIEW.md", + "remaining": "The next experiment must identify uncovered source-specific work. Successor archive intake does not transfer this admission.", + "status": "reviewed", + "source_commit": "09dd0965711ca7eeb169057a420abab1c9052137", + "selected_record_sha256": "2a0220e866417774606e0f991e41b9c1d26b1f43b97857238cf478dbc7d330b5" + } + ] + }, + "scope_status": "refined", + "actual_scope": "Semantics-preserving compression of the ordinary (ADD/SCALE/COPY) events of the PR5907 P104 word: 25,998 -> 25,861 events with identical paid and helper profiles, charts, lifetimes and endpoint rows; plus a recorded negative search for further PR5786-style hubs and rank-two shared-subdivision blocks on that word.", + "scope_change_reason": "Side result on the latest conditional P104 word: the 26,000-event cap, not a helper basis or causal split, was the binding constraint; the rewrite frees headroom without changing the invoice.", + "bottleneck_link": "The P104 ladder is limited by the retained 26,000-event cap (PR5907: 25,998). Freed ordinary events are the resource any further helper split needs; the attached hub search shows no positive-bill split on this word even with that headroom.", + "budget_minutes": 240, + "stop_rule": "Stop when the compressed word passes the own replay and the unmodified author checker with equal profiles, and when the hub search has covered all frames and full-boundary helpers.", + "outcome": "completed", + "evidence": "research/p104-ordinary-event-compression/RESULT.json", + "author": "Matarener", + "ai_assistance": "Prepared with Claude (Anthropic) via Claude Code.", + "open_questions": [ + { + "question": "Does the compressed word admit a positive-bill hub or rung removal that the event cap had blocked?", + "why_it_matters": "137 spare events are room for about four more ladder steps of the existing kinds.", + "first_step": "Rerun the PR5907 same-rung-structure search on research/p104-ordinary-event-compression/WORD.json.gz.", + "blocked_by": "An itinerary search, not this package." + }, + { + "question": "Can a global ordinary re-synthesis free substantially more events than the peephole passes?", + "why_it_matters": "More headroom widens every later construction.", + "first_step": "Per register and chart, compare the rank of the rows actually read with the number of ADDs spent.", + "blocked_by": "Nothing; a bounded experiment." + }, + { + "question": "Which allowances (events, scalar units, labels) are contractual in the retained P104 model?", + "why_it_matters": "Working around a non-contractual cap wastes effort; changing a contractual one needs a new admission.", + "first_step": "Maintainer statement in the intake ledger.", + "blocked_by": "Maintainers." + } + ] +} diff --git a/research/p104-ordinary-event-compression/VERIFY.json b/research/p104-ordinary-event-compression/VERIFY.json new file mode 100644 index 0000000000..b0c560b240 --- /dev/null +++ b/research/p104-ordinary-event-compression/VERIFY.json @@ -0,0 +1,22 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [ + "research/p104-helper468-rung-removal/RESULT.json", + "research/p104-helper468-rung-removal/WORD.json.gz", + "research/p104-unread-path-resynthesis/local.py" + ], + "commands": [ + { + "argv": [ + "{python}", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 120, + "checks": "Authenticate pinned inputs; regenerate the compressed word with compress.py and compare the decompressed payload; own exact replay of both words with identical MOVE/INIT/CLEAR sequences, rows of every moved field and all 799 endpoint rows; PR5827 local.py unmodified: equal paid/helper profiles, inventory, rank mass, passing dense transpose; two rejected controls; RESULT.json compared in full." + } + ] +} diff --git a/research/p104-ordinary-event-compression/WORD.json.gz b/research/p104-ordinary-event-compression/WORD.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..63b7b536a49ad2d55398f177d23b8db20adb83fd GIT binary patch literal 119875 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 public: + for j in pending.pop(r, []): + dead[j] = True; count += 1 + continue + rd, wr = reads_writes(e) + for x in rd: + if x >= public and x in pending: + pending[x] = [] + if op in ('ADD', 'COPY', 'SCALE') and r >= public: + pending[r].append(i) + elif op == 'INIT' and r >= public: + pending[r] = [] + return [e for e, d in zip(prog, dead) if not d], count + + +def compress(word): + prog = [list(e) for e in word['program']] + passes = [] + while True: + before = len(prog) + prog, m = pass_merge(prog) + prog, d = pass_dead(prog, word['public']) + passes.append({'merged': m, 'dead': d, 'events': len(prog)}) + if len(prog) == before and m == 0: + break + out = deepcopy(word) + out['program'] = prog + return out, passes + + +if __name__ == '__main__': + import gzip, json, sys + w = json.loads(gzip.decompress(open(sys.argv[1], 'rb').read())) + out, passes = compress(w) + print(json.dumps(passes)) + if len(sys.argv) > 2: + open(sys.argv[2], 'wb').write(gzip.compress(json.dumps(out, separators=(',', ':')).encode())) diff --git a/research/p104-ordinary-event-compression/verify.py b/research/p104-ordinary-event-compression/verify.py new file mode 100644 index 0000000000..1cc71beeca --- /dev/null +++ b/research/p104-ordinary-event-compression/verify.py @@ -0,0 +1,151 @@ +#!/usr/bin/env python3 +"""Verify the ordinary-event compression of the PR5907 P104 word. Apache-2.0. + +Prepared for Matarener with Claude (Anthropic), via Claude Code. Python 3.12, standard library only. +Checks: (0) pinned live inputs; (1) compress.py regenerates the shipped word (decompressed payload equality); +(2) own exact replay of the source and compressed words: identical MOVE/INIT/CLEAR sequences, identical charts, +identical rows of all 799 roles at every MOVE and at the end; (3) the PR5827 author checker local.py (loaded +unmodified) accepts the compressed word with the same paid profile, helper profile and storage inventory, and its +dense transpose check passes; (4) two controls: a changed merged coefficient and a deleted live ADD are rejected +by the row comparison; (5) RESULT.json equals the recomputed receipt. +""" +from collections import Counter +from fractions import Fraction as Q +from hashlib import sha256 +from pathlib import Path +import gzip, importlib.util, json, sys + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] +SOURCE = ROOT/'research/p104-helper468-rung-removal/WORD.json.gz' +LOCAL = ROOT/'research/p104-unread-path-resynthesis/local.py' + + +def need(ok, why): + if not ok: + raise ValueError(why) + + +def read(path): + raw = Path(path).read_bytes() + return json.loads(gzip.decompress(raw) if str(path).endswith('.gz') else raw) + + +def load(name, path): + spec = importlib.util.spec_from_file_location(name, path) + mod = importlib.util.module_from_spec(spec); sys.modules[name] = mod; spec.loader.exec_module(mod) + return mod + + +def span(basis): + s = {0} + for v in basis: + need(type(v) is int and 0 < v < 512 and v not in s, 'independent binary basis') + s |= {x ^ v for x in s} + return frozenset(s) + + +def replay(w): + """Own exact replay: returns (trace of (MOVE/INIT/CLEAR events, rows of the moved role), final rows, charts).""" + S = [span(f) for f in w['frames']] + n, m = w['public'], w['owned_fields'] + cur = list(w['initial'])+[None]*m + rows = [{r: Q(1)} for r in range(n)] + [{} for _ in range(m)] + owned, trace = set(), [] + for i, e in enumerate(w['program']): + op, r = e[0], e[1] + need(0 <= r < n+m, 'role index') + if op == 'MOVE': + a, b, private = e[2], e[3], e[4] + need(cur[r] == a and (r in owned) == private, 'transport source and ownership at %d' % i) + need(S[b] < S[a] if private else S[a] < S[b], 'strict nesting at %d' % i) + trace.append((tuple(e), tuple(sorted(rows[r].items())))) + cur[r] = b + elif op == 'INIT': + need(r >= n and r not in owned, 'owned init'); owned.add(r); rows[r], cur[r] = {}, e[2] + trace.append((tuple(e), ())) + elif op == 'CLEAR': + need(r in owned and cur[r] == e[2], 'owned erasure'); owned.discard(r); rows[r], cur[r] = {}, None + trace.append((tuple(e), ())) + else: + q, f = Q(e[-2]), e[-1] + need(q != 0 and cur[r] == f and q.denominator & (q.denominator-1) == 0, 'ordinary event at %d' % i) + if op == 'SCALE': + rows[r] = {k: q*v for k, v in rows[r].items()} + else: + s = e[2]; need(s != r and cur[s] == f, 'common chart at %d' % i) + if op == 'COPY': + need(r in owned and not rows[r], 'COPY into cleared owned field') + rows[r] = {k: q*v for k, v in rows[s].items()} + else: + need(op == 'ADD', 'opcode') + t = dict(rows[r]) + for k, v in rows[s].items(): + t[k] = t.get(k, 0)+q*v + rows[r] = {k: v for k, v in t.items() if v} + need(not owned and cur[:n] == w['final'], 'exits') + live = set(w['live']) + for r in range(n+m): + expected = {r: Q(1)} if r < n else {} + if r-112 in live: + expected[r-112] = Q(1) + need(rows[r] == expected, 'endpoint row %d' % r) + return trace + + +def main(): + pins = read(HERE/'SOURCES.json') + for row in pins['files']: + if row['usage'] == 'input': + need(sha256((ROOT/row['path']).read_bytes()).hexdigest() == row['sha256'], 'source pin '+row['path']) + source = read(SOURCE) + C = load('p104_event_compress', HERE/'compress.py') + word, passes = C.compress(source) + shipped = read(HERE/'WORD.json.gz') + need(word == shipped, 'regenerated word equals the shipped decompressed payload') + print('regenerated', json.dumps(passes), flush=True) + # (2) own replay: identical paid/owned event sequences and identical rows at every one of them + t0, t1 = replay(source), replay(word) + need(t0 == t1, 'identical MOVE/INIT/CLEAR sequence and identical rows of every moved field') + need(sum(1 for e in word['program'] if e[0] == 'MOVE') == 3454, 'MOVE count') + need({k: v for k, v in source.items() if k != 'program'} == {k: v for k, v in word.items() if k != 'program'}, 'unchanged header') + print('own replay', len(t0), 'paid/owned events compared', flush=True) + # (3) the author checker, loaded unmodified + L = load('p104_local_5827', LOCAL) + before, after = L.replay(source), L.replay(word) + for key in ('paid', 'helpers', 'public_inputs', 'owned_fields', 'owned_lifetimes', 'peak_owned_fields', 'paid_rank_mass'): + need(before[key] == after[key], 'author replay: unchanged '+key) + need(after['real_scalar_allowance'] < before['real_scalar_allowance'], 'scalar allowance does not grow') + L.reverse_columns(word) + print('author checker', {k: after[k] for k in ('paid', 'helpers', 'real_scalar_allowance')}, flush=True) + # (4) controls + def reject(mutant, why): + try: + replay(mutant) + except ValueError: + return + raise ValueError('control accepted: '+why) + bad = json.loads(json.dumps(word)) + i = next(i for i, e in enumerate(bad['program']) if e[0] == 'ADD' and e[1] < word['public']) + bad['program'][i][-2] = str(Q(bad['program'][i][-2])*2) + reject(bad, 'doubled coefficient of a public ADD') + bad = json.loads(json.dumps(word)) + del bad['program'][i] + reject(bad, 'deleted live public ADD') + ops_in, ops_out = Counter(e[0] for e in source['program']), Counter(e[0] for e in word['program']) + result = {'source': 'research/p104-helper468-rung-removal/WORD.json.gz', 'events_before': len(source['program']), + 'events_after': len(word['program']), 'freed': len(source['program'])-len(word['program']), + 'passes': passes, 'ops_before': dict(ops_in), 'ops_after': dict(ops_out), + 'author_replay': {k: after[k] for k in ('paid', 'helpers', 'public_inputs', 'owned_fields', 'owned_lifetimes', 'peak_owned_fields', 'paid_rank_mass', 'real_scalar_allowance')}, + 'author_replay_source_scalar_allowance': before['real_scalar_allowance'], + 'word_payload_sha256': sha256(json.dumps(word, sort_keys=True, separators=(',', ':')).encode()).hexdigest(), + 'controls': {'doubled_coefficient': 'rejected', 'deleted_live_add': 'rejected'}} + result['author_replay'] = {k: ({str(a): b for a, b in v.items()} if isinstance(v, dict) else v) for k, v in result['author_replay'].items()} + if '--write' in sys.argv: + (HERE/'RESULT.json').write_text(json.dumps(result, indent=1, sort_keys=True)+'\n') + need(read(HERE/'RESULT.json') == result, 'RESULT.json equals the recomputed receipt') + print('PASS_P104_ORDINARY_EVENT_COMPRESSION') + + +if __name__ == '__main__': + main()