diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index b2467e856c..bc782d15a9 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -569,6 +569,7 @@ Rohan Arun receives explicit mechanism credit for #987’s slot search and first - **Cinna Davis / 1337isnot1337:** [#1090](https://github.com/CrocSwap/integer-mult-bounds/pull/1090). - **David Breslauer / davidNbreslauer:** [#1072](https://github.com/CrocSwap/integer-mult-bounds/pull/1072). - **thakrarsagar / thakrarsagar:** [#1049](https://github.com/CrocSwap/integer-mult-bounds/pull/1049), [#1051](https://github.com/CrocSwap/integer-mult-bounds/pull/1051), [#1069](https://github.com/CrocSwap/integer-mult-bounds/pull/1069), [#1059](https://github.com/CrocSwap/integer-mult-bounds/pull/1059), [#1023](https://github.com/CrocSwap/integer-mult-bounds/pull/1023), [#1045](https://github.com/CrocSwap/integer-mult-bounds/pull/1045), [#1062](https://github.com/CrocSwap/integer-mult-bounds/pull/1062). +- **Aaron Wang / navinor:** [#1015](https://github.com/CrocSwap/integer-mult-bounds/pull/1015) (open; own package pending review). Its nine phase-B multi-write block programs are retained verbatim in #1062 (`research/r439-bsection-stars-seed01/inputs/PR1015-CANDIDATE.json`) and supply 244 of #1062's 283 saved ADDs; see the [retention receipt](research/r439-pr1015-retention-seed95/README.md). - **steph4n / steph4n-gh:** [#1052](https://github.com/CrocSwap/integer-mult-bounds/pull/1052). - **Josie Elliston / JosieElliston:** [#1091](https://github.com/CrocSwap/integer-mult-bounds/pull/1091). - **flemhhh / flemhhh:** [#1048](https://github.com/CrocSwap/integer-mult-bounds/pull/1048) (reviewed; corrections pending). diff --git a/research/r439-pr1015-retention-seed95/NOTICE-PR1015.md b/research/r439-pr1015-retention-seed95/NOTICE-PR1015.md new file mode 100644 index 0000000000..727d5b5862 --- /dev/null +++ b/research/r439-pr1015-retention-seed95/NOTICE-PR1015.md @@ -0,0 +1,14 @@ +# Notice + +R439 phase-B multi-write block programs, 2026. + +Built on the PR555/PR589 R439 supplier and its retained notices (eumemic, +DreamingOfClouds, Dylan Crow, Zhihao Chen and predecessors). The verifier +uses the repository's pinned owning interface checker and record exporter. +Block-level comparison credit: PR #891 (Aaron Wang), PR #880 (Krishnendu +Purohit), PR #884 (martin Rv), PRs #857/#873/#906/#908/#914/#923 and the +prefix-resynthesis line #904/#936/#952; none of their implementations or +savings is imported. + +Prepared with help from opencode. New files are offered under the +repository's Apache-2.0 license. No independent human review is claimed. diff --git a/research/r439-pr1015-retention-seed95/README.md b/research/r439-pr1015-retention-seed95/README.md new file mode 100644 index 0000000000..819e94e1a1 --- /dev/null +++ b/research/r439-pr1015-retention-seed95/README.md @@ -0,0 +1,62 @@ +# Retention receipt: #1015's block programs in main through #1062 + +**Research consolidation (credit and provenance). No new κ; no ledger, disposition or construction change.** + +Main `c0e3631d` retains open PR #1015's work verbatim, but no ledger row, credit line or retained notice says so. +This receipt records the fact with hashes and adds the missing credit. It corrects an omission in my own #1062, +which copied the file. + +| fact | evidence | +|---|---| +| retained file | `research/r439-bsection-stars-seed01/inputs/PR1015-CANDIDATE.json` (merged with #1062) has git blob `16532f2d`, identical to `research/r439-bsection-multwrite/CANDIDATE.json` at #1015's open head `7588c797` | +| what it contributes | 9 of the 10 phase-B block programs spliced into #1062's word | +| share of #1062's saving | 11,783 → 11,500 ADDs: **PR1015 244**, PR923 24, rerun star pass 15 (recomputed from #1062's `CERTIFICATE.json`; each gate saved counts twice, block plus literal cleanup) | +| ledger | `docs/research/pr-ledger.json` has a #1062 row whose scope names "nine PR1015 blocks", and no #1015 row | +| credit | `CONTRIBUTORS.md` credited #1062 and had no #1015 entry | +| notice | #1062's package has no NOTICE. #1015's `NOTICE.md` (blob `727d5b58`: Apache-2.0 offer, AI disclosure "Prepared with help from opencode", predecessor credits) was not retained beside the copied file. #1062's README and SOURCES.json do credit and pin #1015. | + +## Change + +- Adds `NOTICE-PR1015.md`, #1015's `NOTICE.md` byte for byte (blob `727d5b58`), so the license offer and AI + disclosure accompany the retained file in main. +- Adds one `CONTRIBUTORS.md` line in the batch #1099 section, crediting Aaron Wang / navinor for #1015's retained + programs. This follows the precedent of #946, "credited as pending integration". +- Does not edit `pr-ledger.*`, any batch disposition, the #1062 package or the selected record. #1015 stays open for + its own review. Whether the ledger records it as "partially retained via #1062" is a maintainer decision. + +```sh +python3 -I -B research/r439-pr1015-retention-seed95/verify.py +``` + +Expected (read-only, no network, standard library only): + +```text +base ledger: #1015 row absent (gap recorded) +PASS_R439_PR1015_RETENTION blob=16532f2d saving=PR1015:244+PR923:24+star15=283 controls=2 +``` + +The script recomputes both blob ids and the per-source split, and checks the credit line. It asserts the missing +ledger row only while the ledger is still the base blob; after a maintainer update it reports the new state +instead. Two negative controls must fail: a block misattributed to PR923, and a one-byte change to the retained +file. + +## Reviewer notes for related open PRs + +These were observed read-only at the stated heads and are not checked by `verify.py`. + +- **#1122** (`a2551e70`, compose R439 A/B/star D to 10,652 ADDs) is a strict superset of merged #1062 plus merged + #980's A part. Its `vendor/pr1062` files are byte-identical to main's merged files, so its "pending PR1062" + wording is now stale. Its 848-not-872 accounting for #980 is forced: #980's B edits fall in frames 507–509 and + 519–523, inside the ten blocks #1062 replaces. +- **#1127** (`2e9dc9d3`, 3→2 z-program rewrites) is not additive to #1062 or #1122 as packaged. All 330 of its A + moves fall in frames already rewritten by PR904–980, and all 75 of its B moves fall inside the ten replaced blocks. + +## Provenance + +Selected by a consolidation-track task card (`overlap-receipt`) from `scripts/choose_research_task.py --track +consolidation`. The track came from OS-random seed 95 under the user's sprint assignment. Base `c0e3631d`; +heads observed on 2026-10-14. Five explorer subagents evaluated alternative consolidation scopes and three judges +scored them. The scope was then narrowed to this credit gap, which is new and hash-checkable. + +`NOTICE-PR1015.md` is Aaron Wang's text, retained under the repository's Apache-2.0 license. Everything else here was +prepared by Sagar Thakrar with substantial assistance from Anthropic Claude (Claude Code). Apache-2.0. diff --git a/research/r439-pr1015-retention-seed95/RECEIPT.json b/research/r439-pr1015-retention-seed95/RECEIPT.json new file mode 100644 index 0000000000..8e86126144 --- /dev/null +++ b/research/r439-pr1015-retention-seed95/RECEIPT.json @@ -0,0 +1,67 @@ +{ + "status": "PR1015_RETAINED_VIA_PR1062_RECEIPT_NO_NEW_KAPPA", + "base_commit": "c0e3631dc24e3c24a861f7d3d79e0608481cccec", + "observed_on": "2026-10-14", + "pr1015": { + "state": "OPEN", + "head": "7588c797f4a4e9f2b9fc663cfa6e35afcac05e06", + "author": "navinor (Aaron Wang)", + "package": "research/r439-bsection-multwrite/" + }, + "pr1062": { + "state": "MERGED", + "reviewed_head": "cd016e5dcd5ba28dafa3f3b4eeef003a38e6a11b", + "package": "research/r439-bsection-stars-seed01/", + "integrated_by": "0a31ad88 (batch1099 checkpoint 1)" + }, + "retained_file": { + "path": "research/r439-bsection-stars-seed01/inputs/PR1015-CANDIDATE.json", + "pr1015_head_path": "research/r439-bsection-multwrite/CANDIDATE.json", + "pr1015_head_blob": "16532f2d8d4fb16fde803cecf32e3ce11369ea56", + "sha256": "388c2a0db00dbe77b67649af7293e577cf3869da7ae0d0341e17ecff2b16c84c" + }, + "pr1062_saving": { + "per_source": { + "PR1015": 244, + "PR923": 24 + }, + "star_rerun": 15, + "total": 283, + "words": { + "helper_star": 11783, + "composition": 11515, + "candidate": 11500 + }, + "rule": "2 x (original_gates - new_gates) per spliced block (block plus literal cleanup); star rerun = composition - candidate" + }, + "pr1015_notice": { + "path": "research/r439-bsection-multwrite/NOTICE.md", + "blob": "727d5b586299ff1615b749f9f273c823b26e711d", + "retained_here_as": "NOTICE-PR1015.md", + "content": "Apache-2.0 offer of new files; AI disclosure 'Prepared with help from opencode'; predecessor credits" + }, + "gaps_before_this_change": { + "pr_ledger": "docs/research/pr-ledger.json pull_requests has a #1062 row (scope names 'nine PR1015 blocks') and no #1015 row (blob 4b08a8e6 at base)", + "contributors": "CONTRIBUTORS.md (blob b2467e85 at base) credits #1062 under thakrarsagar in the batch #1099 section and has no #1015 entry", + "notice": "research/r439-bsection-stars-seed01/ has no NOTICE or LICENSE and does not carry #1015's NOTICE.md; its README and SOURCES.json do credit and pin #1015", + "batch1099": "#1015 appears in research/community-batch1099-audit only as an open queue entry; CONTENT-COVERAGE.json lists the copied file as retained without linking #1015" + }, + "change": { + "added": "research/r439-pr1015-retention-seed95/ (README.md, RECEIPT.json, NOTICE-PR1015.md, verify.py)", + "contributors_md": "one credit line in the batch #1099 section, following the #946 'credited as pending integration' precedent" + }, + "contributors_line": "- **Aaron Wang / navinor:** [#1015](https://github.com/CrocSwap/integer-mult-bounds/pull/1015) (open; own package pending review). Its nine phase-B multi-write block programs are retained verbatim in #1062 (`research/r439-bsection-stars-seed01/inputs/PR1015-CANDIDATE.json`) and supply 244 of #1062's 283 saved ADDs; see the [retention receipt](research/r439-pr1015-retention-seed95/README.md).", + "reviewer_notes_not_checked_by_verify": { + "pr1122": { + "head": "a2551e70fce0cc34348f50f1a94e7cc4c80bbcbf", + "note": "Composes merged #1062 (B 800, D 5548) with merged #980's A part (A 1706): corner 7 = 10,652 ADDs. Its vendor/pr1062 files are byte-identical to main's merged #1062 files, so its 'pending PR1062' wording is stale. Its 848-not-872 accounting for #980 is forced: #980's B edits fall in frames 507-509 and 519-523, inside the ten blocks #1062 replaces." + }, + "pr1127": { + "head": "2e9dc9d3356a6b7258ed869ddcee46352907f746", + "note": "Its 405 moves are not additive to #1062/#1122 as packaged: 330/330 A moves fall in frames already rewritten by PR904-980 and 75/75 B moves fall inside the ten blocks #1062 replaces." + } + }, + "not_done": "No ledger, disposition or batch-record edits; no change to the #1062 package; #1015 stays open for its own review; no closures; no kappa change (the selected #1094 uses the PR589 bit word and the bit side does not bind).", + "ledger_blob_at_base": "4b08a8e68cb73f693732cd74363c7974dfd38607", + "contributors_blob_at_base": "b2467e856c543881ce5b2315bc7897329f9ec2fb" +} diff --git a/research/r439-pr1015-retention-seed95/verify.py b/research/r439-pr1015-retention-seed95/verify.py new file mode 100644 index 0000000000..8fa4f37b43 --- /dev/null +++ b/research/r439-pr1015-retention-seed95/verify.py @@ -0,0 +1,90 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +# Prepared by Sagar Thakrar with substantial Anthropic Claude assistance. +"""Read-only check of the #1015 retention receipt against files in this checkout (no network). + +1. main's research/r439-bsection-stars-seed01/inputs/PR1015-CANDIDATE.json has the git blob id of + research/r439-bsection-multwrite/CANDIDATE.json at open #1015's head 7588c797 (pinned below); +2. NOTICE-PR1015.md here is #1015's NOTICE.md at that head, byte for byte (pinned blob id); +3. #1062's saving splits as PR1015 244 + PR923 24 + rerun star pass 15 = 283 ADDs, recomputed from + research/r439-bsection-stars-seed01/CERTIFICATE.json (gate deltas count twice: block plus literal cleanup); +4. CONTRIBUTORS.md carries the #1015 credit line added with this receipt; the ledger's missing #1015 row is asserted + only while docs/research/pr-ledger.json is still the base blob, and otherwise reported. +Two negative controls must fail: a block misattributed to PR923, and a one-byte change to the retained file. +""" +import copy +import hashlib +import json +import sys +from pathlib import Path + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] +RECEIPT = json.loads((HERE / 'RECEIPT.json').read_text()) + + +def need(ok, msg): + if not ok: + raise SystemExit('FAIL ' + msg) + + +def blob(data): + return hashlib.sha1(b'blob %d\0' % len(data) + data).hexdigest() + + +def attribution(cert): + per = {} + for b in cert['blocks']: + per[b['source']] = per.get(b['source'], 0) + 2 * (b['original_gates'] - b['new_gates']) + words = {k: v['literal']['native_ADDs'] for k, v in cert['words'].items()} + return dict(per_source=per, star_rerun=words['composition'] - words['candidate'], + total=words['helper_star'] - words['candidate'], words=words) + + +def check(cert, retained, notice): + r = RECEIPT + need(blob(retained) == r['retained_file']['pr1015_head_blob'], 'retained file is not #1015 CANDIDATE.json at its head') + need(blob(notice) == r['pr1015_notice']['blob'], 'NOTICE-PR1015.md differs from #1015 NOTICE.md') + a = attribution(cert) + want = r['pr1062_saving'] + need(a['per_source'] == want['per_source'] and a['star_rerun'] == want['star_rerun'] and a['total'] == want['total'], + 'saving attribution %s' % a) + need(sum(a['per_source'].values()) + a['star_rerun'] == a['total'], 'saving does not add up') + return a + + +def main(): + cert = json.loads((ROOT / 'research/r439-bsection-stars-seed01/CERTIFICATE.json').read_text()) + retained = (ROOT / RECEIPT['retained_file']['path']).read_bytes() + notice = (HERE / 'NOTICE-PR1015.md').read_bytes() + a = check(cert, retained, notice) + raw = (ROOT / 'docs/research/pr-ledger.json').read_bytes() + numbers = {row['number'] for row in json.loads(raw)['pull_requests']} + need(1062 in numbers, 'ledger row for #1062') + if blob(raw) == RECEIPT['ledger_blob_at_base']: # the recorded gap holds only for the base ledger + need(1015 not in numbers, 'base ledger unexpectedly has a #1015 row') + ledger = 'base ledger: #1015 row absent (gap recorded)' + else: + ledger = 'ledger changed since base: #1015 row %s' % ('present' if 1015 in numbers else 'still absent') + contributors = (ROOT / 'CONTRIBUTORS.md').read_text() + need(RECEIPT['contributors_line'] in contributors, 'CONTRIBUTORS.md lacks the #1015 credit line') + controls = [] + bad = copy.deepcopy(cert) + next(b for b in bad['blocks'] if b['source'] == 'PR1015')['source'] = 'PR923' + try: + check(bad, retained, notice) + except SystemExit: + controls.append('misattributed block rejected') + try: + check(cert, retained[:-1] + bytes([retained[-1] ^ 1]), notice) + except SystemExit: + controls.append('modified retained file rejected') + need(len(controls) == 2, 'negative controls: %s' % controls) + print(ledger) + print('PASS_R439_PR1015_RETENTION blob=%s saving=PR1015:%d+PR923:%d+star%d=%d controls=%d' % ( + RECEIPT['retained_file']['pr1015_head_blob'][:8], a['per_source']['PR1015'], a['per_source']['PR923'], + a['star_rerun'], a['total'], len(controls))) + + +if __name__ == '__main__': + main()