diff --git a/research/p104-y0-source-acquisition/CIRCUIT.json b/research/p104-y0-source-acquisition/CIRCUIT.json new file mode 100644 index 0000000000..d075c90f3a --- /dev/null +++ b/research/p104-y0-source-acquisition/CIRCUIT.json @@ -0,0 +1,506 @@ +{ + "cover_normals": [1, 4], + "final_frames": { + "N10": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N100": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N12": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N15": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N17": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N18": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N2": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N20": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N24": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N26": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N27": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N29": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N34": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N37": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N39": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N4": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N41": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N43": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N44": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N46": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N48": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N5": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N50": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N51": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N53": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N55": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N57": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N60": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N62": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N64": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N66": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N67": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N69": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N7": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N71": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N73": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N76": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N78": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N79": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N81": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N83": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N85": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N87": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N89": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N9": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N91": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N96": [1, 2, 4, 8, 16, 32, 64, 128, 256], + "N98": [1, 2, 4, 8, 16, 32, 64, 128, 256] + }, + "groups": [ + [2, 4, 5, 9, 10, 17, 18, 26, 27, 39, 43, 44, 50, 51, 55, 62, 66, 67, 71, 78, 79, 85, 89, 98], + [7, 12, 15, 20, 24, 29, 34, 37, 41, 46, 48, 53, 57, 60, 64, 69, 73, 76, 81, 83, 87, 91, 96, 100] + ], + "initial_frames": { + "N10": [], + "N100": [], + "N12": [], + "N15": [], + "N17": [], + "N18": [], + "N2": [], + "N20": [], + "N24": [], + "N26": [], + "N27": [], + "N29": [], + "N34": [], + "N37": [], + "N39": [], + "N4": [], + "N41": [], + "N43": [], + "N44": [], + "N46": [], + "N48": [], + "N5": [], + "N50": [], + "N51": [], + "N53": [], + "N55": [], + "N57": [], + "N60": [], + "N62": [], + "N64": [], + "N66": [], + "N67": [], + "N69": [], + "N7": [], + "N71": [], + "N73": [], + "N76": [], + "N78": [], + "N79": [], + "N81": [], + "N83": [], + "N85": [], + "N87": [], + "N89": [], + "N9": [], + "N91": [], + "N96": [], + "N98": [] + }, + "insertions": [ + { + "completed_cut": 0, + "events": [ + ["add", "Y0", "N2", -1, []], + ["add", "Y0", "N4", -1, []], + ["add", "Y0", "N5", -1, []], + ["add", "Y0", "N7", -1, []], + ["add", "Y0", "N9", -1, []], + ["add", "Y0", "N10", -1, []], + ["add", "Y0", "N12", -1, []], + ["add", "Y0", "N15", -1, []], + ["add", "Y0", "N17", -1, []], + ["add", "Y0", "N18", -1, []], + ["add", "Y0", "N20", -1, []], + ["add", "Y0", "N24", -1, []], + ["add", "Y0", "N26", -1, []], + ["add", "Y0", "N27", -1, []], + ["add", "Y0", "N29", -1, []], + ["add", "Y0", "N34", -1, []], + ["add", "Y0", "N37", -1, []], + ["add", "Y0", "N39", -1, []], + ["add", "Y0", "N41", -1, []], + ["add", "Y0", "N43", -1, []], + ["add", "Y0", "N44", -1, []], + ["add", "Y0", "N46", -1, []], + ["add", "Y0", "N48", -1, []], + ["add", "Y0", "N50", -1, []], + ["add", "Y0", "N51", -1, []], + ["add", "Y0", "N53", -1, []], + ["add", "Y0", "N55", -1, []], + ["add", "Y0", "N57", -1, []], + ["add", "Y0", "N60", -1, []], + ["add", "Y0", "N62", -1, []], + ["add", "Y0", "N64", -1, []], + ["add", "Y0", "N66", -1, []], + ["add", "Y0", "N67", -1, []], + ["add", "Y0", "N69", -1, []], + ["add", "Y0", "N71", -1, []], + ["add", "Y0", "N73", -1, []], + ["add", "Y0", "N76", -1, []], + ["add", "Y0", "N78", -1, []], + ["add", "Y0", "N79", -1, []], + ["add", "Y0", "N81", -1, []], + ["add", "Y0", "N83", -1, []], + ["add", "Y0", "N85", -1, []], + ["add", "Y0", "N87", -1, []], + ["add", "Y0", "N89", -1, []], + ["add", "Y0", "N91", -1, []], + ["add", "Y0", "N96", -1, []], + ["add", "Y0", "N98", -1, []], + ["add", "Y0", "N100", -1, []], + ["transport", "N2", [], [228], 1], + ["add", "N2", "X2", "-1/2", [228]], + ["transport", "N2", [228], [2, 4, 16, 32, 64, 128, 256], 6], + ["transport", "N4", [], [196], 1], + ["add", "N4", "X4", "-1/2", [196]], + ["transport", "N4", [196], [2, 4, 16, 32, 64, 128, 256], 6], + ["transport", "N5", [], [452], 1], + ["add", "N5", "X5", "1/2", [452]], + ["transport", "N5", [452], [2, 4, 16, 32, 64, 128, 256], 6], + ["transport", "N9", [], [148], 1], + ["add", "N9", "X9", "-1/2", [148]], + ["transport", "N9", [148], [2, 4, 16, 32, 64, 128, 256], 6], + ["transport", "N10", [], [404], 1], + ["add", "N10", "X10", "1/2", [404]], + ["transport", "N10", [404], [2, 4, 16, 32, 64, 128, 256], 6], + ["transport", "N17", [], [52], 1], + ["add", "N17", "X17", "-1/2", [52]], + ["transport", "N17", [52], [2, 4, 16, 32, 64, 128, 256], 6], + ["transport", "N18", [], [308], 1], + ["add", "N18", "X18", "1/2", [308]], + ["transport", "N18", [308], [2, 4, 16, 32, 64, 128, 256], 6], + ["transport", "N26", [], [116], 1], + ["add", "N26", "X26", "-1/2", [116]], + ["transport", "N26", [116], [2, 4, 16, 32, 64, 128, 256], 6], + ["transport", "N27", [], [372], 1], + ["add", "N27", "X27", "1/2", [372]], + ["transport", "N27", [372], [2, 4, 16, 32, 64, 128, 256], 6], + ["transport", "N39", [], [470], 1], + ["add", "N39", "X39", "-1/2", [470]], + ["transport", "N39", [470], [2, 4, 16, 32, 64, 128, 256], 6], + ["transport", "N43", [], [390], 1], + ["add", "N43", "X43", "-1/2", [390]], + ["transport", "N43", [390], [2, 4, 16, 32, 64, 128, 256], 6], + ["transport", "N44", [], [166], 1], + ["add", "N44", "X44", "1/2", [166]], + ["transport", "N44", [166], [2, 4, 16, 32, 64, 128, 256], 6], + ["transport", "N50", [], [294], 1], + ["add", "N50", "X50", "-1/2", [294]], + ["transport", "N50", [294], [2, 4, 16, 32, 64, 128, 256], 6], + ["transport", "N51", [], [6], 1], + ["add", "N51", "X51", "1/2", [6]], + ["transport", "N51", [6], [2, 4, 16, 32, 64, 128, 256], 6], + ["transport", "N55", [], [86], 1], + ["add", "N55", "X55", "1/2", [86]], + ["transport", "N55", [86], [2, 4, 16, 32, 64, 128, 256], 6], + ["transport", "N62", [], [118], 1], + ["add", "N62", "X62", "-1/2", [118]], + ["transport", "N62", [118], [2, 4, 16, 32, 64, 128, 256], 6], + ["transport", "N66", [], [358], 1], + ["add", "N66", "X66", "-1/2", [358]], + ["transport", "N66", [358], [2, 4, 16, 32, 64, 128, 256], 6], + ["transport", "N67", [], [70], 1], + ["add", "N67", "X67", "1/2", [70]], + ["transport", "N67", [70], [2, 4, 16, 32, 64, 128, 256], 6], + ["transport", "N71", [], [22], 1], + ["add", "N71", "X71", "1/2", [22]], + ["transport", "N71", [22], [2, 4, 16, 32, 64, 128, 256], 6], + ["transport", "N78", [], [54], 1], + ["add", "N78", "X78", "-1/2", [54]], + ["transport", "N78", [54], [2, 4, 16, 32, 64, 128, 256], 6], + ["transport", "N79", [], [182], 1], + ["add", "N79", "X79", "1/2", [182]], + ["transport", "N79", [182], [2, 4, 16, 32, 64, 128, 256], 6], + ["transport", "N85", [], [150], 1], + ["add", "N85", "X85", "-1/2", [150]], + ["transport", "N85", [150], [2, 4, 16, 32, 64, 128, 256], 6], + ["transport", "N89", [], [198], 1], + ["add", "N89", "X89", "-1/2", [198]], + ["transport", "N89", [198], [2, 4, 16, 32, 64, 128, 256], 6], + ["transport", "N98", [], [244], 1], + ["add", "N98", "X98", "1/2", [244]], + ["transport", "N98", [244], [2, 4, 16, 32, 64, 128, 256], 6], + ["add", "N2", "N4", 1, [2, 4, 16, 32, 64, 128, 256]], + ["add", "N2", "N5", 1, [2, 4, 16, 32, 64, 128, 256]], + ["add", "N2", "N9", 1, [2, 4, 16, 32, 64, 128, 256]], + ["add", "N2", "N10", 1, [2, 4, 16, 32, 64, 128, 256]], + ["add", "N2", "N17", 1, [2, 4, 16, 32, 64, 128, 256]], + ["add", "N2", "N18", 1, [2, 4, 16, 32, 64, 128, 256]], + ["add", "N2", "N26", 1, [2, 4, 16, 32, 64, 128, 256]], + ["add", "N2", "N27", 1, [2, 4, 16, 32, 64, 128, 256]], + ["add", "N2", "N39", 1, [2, 4, 16, 32, 64, 128, 256]], + ["add", "N2", "N43", 1, [2, 4, 16, 32, 64, 128, 256]], + ["add", "N2", "N44", 1, [2, 4, 16, 32, 64, 128, 256]], + ["add", "N2", "N50", 1, [2, 4, 16, 32, 64, 128, 256]], + ["add", "N2", "N51", 1, [2, 4, 16, 32, 64, 128, 256]], + ["add", "N2", "N55", 1, [2, 4, 16, 32, 64, 128, 256]], + ["add", "N2", "N62", 1, [2, 4, 16, 32, 64, 128, 256]], + ["add", "N2", "N66", 1, [2, 4, 16, 32, 64, 128, 256]], + ["add", "N2", "N67", 1, [2, 4, 16, 32, 64, 128, 256]], + ["add", "N2", "N71", 1, [2, 4, 16, 32, 64, 128, 256]], + ["add", "N2", "N78", 1, [2, 4, 16, 32, 64, 128, 256]], + ["add", "N2", "N79", 1, [2, 4, 16, 32, 64, 128, 256]], + ["add", "N2", "N85", 1, [2, 4, 16, 32, 64, 128, 256]], + ["add", "N2", "N89", 1, [2, 4, 16, 32, 64, 128, 256]], + ["add", "N2", "N98", 1, [2, 4, 16, 32, 64, 128, 256]], + ["transport", "N4", [2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N5", [2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N9", [2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N10", [2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N17", [2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N18", [2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N26", [2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N27", [2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N39", [2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N43", [2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N44", [2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N50", [2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N51", [2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N55", [2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N62", [2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N66", [2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N67", [2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N71", [2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N78", [2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N79", [2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N85", [2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N89", [2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N98", [2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N7", [], [387], 1], + ["add", "N7", "X7", "1/2", [387]], + ["transport", "N7", [387], [1, 2, 16, 32, 64, 128, 256], 6], + ["transport", "N12", [], [131], 1], + ["add", "N12", "X12", "-1/2", [131]], + ["transport", "N12", [131], [1, 2, 16, 32, 64, 128, 256], 6], + ["transport", "N15", [], [291], 1], + ["add", "N15", "X15", "1/2", [291]], + ["transport", "N15", [291], [1, 2, 16, 32, 64, 128, 256], 6], + ["transport", "N20", [], [35], 1], + ["add", "N20", "X20", "-1/2", [35]], + ["transport", "N20", [35], [1, 2, 16, 32, 64, 128, 256], 6], + ["transport", "N24", [], [355], 1], + ["add", "N24", "X24", "1/2", [355]], + ["transport", "N24", [355], [1, 2, 16, 32, 64, 128, 256], 6], + ["transport", "N29", [], [99], 1], + ["add", "N29", "X29", "-1/2", [99]], + ["transport", "N29", [99], [1, 2, 16, 32, 64, 128, 256], 6], + ["transport", "N34", [], [225], 1], + ["add", "N34", "X34", "-1/2", [225]], + ["transport", "N34", [225], [1, 2, 16, 32, 64, 128, 256], 6], + ["transport", "N37", [], [193], 1], + ["add", "N37", "X37", "1/2", [193]], + ["transport", "N37", [193], [1, 2, 16, 32, 64, 128, 256], 6], + ["transport", "N41", [], [145], 1], + ["add", "N41", "X41", "1/2", [145]], + ["transport", "N41", [145], [1, 2, 16, 32, 64, 128, 256], 6], + ["transport", "N46", [], [433], 1], + ["add", "N46", "X46", "-1/2", [433]], + ["transport", "N46", [433], [1, 2, 16, 32, 64, 128, 256], 6], + ["transport", "N48", [], [49], 1], + ["add", "N48", "X48", "1/2", [49]], + ["transport", "N48", [49], [1, 2, 16, 32, 64, 128, 256], 6], + ["transport", "N53", [], [273], 1], + ["add", "N53", "X53", "-1/2", [273]], + ["transport", "N53", [273], [1, 2, 16, 32, 64, 128, 256], 6], + ["transport", "N57", [], [321], 1], + ["add", "N57", "X57", "-1/2", [321]], + ["transport", "N57", [321], [1, 2, 16, 32, 64, 128, 256], 6], + ["transport", "N60", [], [353], 1], + ["add", "N60", "X60", "1/2", [353]], + ["transport", "N60", [353], [1, 2, 16, 32, 64, 128, 256], 6], + ["transport", "N64", [], [113], 1], + ["add", "N64", "X64", "1/2", [113]], + ["transport", "N64", [113], [1, 2, 16, 32, 64, 128, 256], 6], + ["transport", "N69", [], [337], 1], + ["add", "N69", "X69", "-1/2", [337]], + ["transport", "N69", [337], [1, 2, 16, 32, 64, 128, 256], 6], + ["transport", "N73", [], [257], 1], + ["add", "N73", "X73", "-1/2", [257]], + ["transport", "N73", [257], [1, 2, 16, 32, 64, 128, 256], 6], + ["transport", "N76", [], [289], 1], + ["add", "N76", "X76", "1/2", [289]], + ["transport", "N76", [289], [1, 2, 16, 32, 64, 128, 256], 6], + ["transport", "N81", [], [417], 1], + ["add", "N81", "X81", "-1/2", [417]], + ["transport", "N81", [417], [1, 2, 16, 32, 64, 128, 256], 6], + ["transport", "N83", [], [385], 1], + ["add", "N83", "X83", "1/2", [385]], + ["transport", "N83", [385], [1, 2, 16, 32, 64, 128, 256], 6], + ["transport", "N87", [], [465], 1], + ["add", "N87", "X87", "1/2", [465]], + ["transport", "N87", [465], [1, 2, 16, 32, 64, 128, 256], 6], + ["transport", "N91", [], [241], 1], + ["add", "N91", "X91", "-1/2", [241]], + ["transport", "N91", [241], [1, 2, 16, 32, 64, 128, 256], 6], + ["transport", "N96", [], [227], 1], + ["add", "N96", "X96", "1/2", [227]], + ["transport", "N96", [227], [1, 2, 16, 32, 64, 128, 256], 6], + ["transport", "N100", [], [483], 1], + ["add", "N100", "X100", "-1/2", [483]], + ["transport", "N100", [483], [1, 2, 16, 32, 64, 128, 256], 6], + ["add", "N7", "N12", 1, [1, 2, 16, 32, 64, 128, 256]], + ["add", "N7", "N15", 1, [1, 2, 16, 32, 64, 128, 256]], + ["add", "N7", "N20", 1, [1, 2, 16, 32, 64, 128, 256]], + ["add", "N7", "N24", 1, [1, 2, 16, 32, 64, 128, 256]], + ["add", "N7", "N29", 1, [1, 2, 16, 32, 64, 128, 256]], + ["add", "N7", "N34", 1, [1, 2, 16, 32, 64, 128, 256]], + ["add", "N7", "N37", 1, [1, 2, 16, 32, 64, 128, 256]], + ["add", "N7", "N41", 1, [1, 2, 16, 32, 64, 128, 256]], + ["add", "N7", "N46", 1, [1, 2, 16, 32, 64, 128, 256]], + ["add", "N7", "N48", 1, [1, 2, 16, 32, 64, 128, 256]], + ["add", "N7", "N53", 1, [1, 2, 16, 32, 64, 128, 256]], + ["add", "N7", "N57", 1, [1, 2, 16, 32, 64, 128, 256]], + ["add", "N7", "N60", 1, [1, 2, 16, 32, 64, 128, 256]], + ["add", "N7", "N64", 1, [1, 2, 16, 32, 64, 128, 256]], + ["add", "N7", "N69", 1, [1, 2, 16, 32, 64, 128, 256]], + ["add", "N7", "N73", 1, [1, 2, 16, 32, 64, 128, 256]], + ["add", "N7", "N76", 1, [1, 2, 16, 32, 64, 128, 256]], + ["add", "N7", "N81", 1, [1, 2, 16, 32, 64, 128, 256]], + ["add", "N7", "N83", 1, [1, 2, 16, 32, 64, 128, 256]], + ["add", "N7", "N87", 1, [1, 2, 16, 32, 64, 128, 256]], + ["add", "N7", "N91", 1, [1, 2, 16, 32, 64, 128, 256]], + ["add", "N7", "N96", 1, [1, 2, 16, 32, 64, 128, 256]], + ["add", "N7", "N100", 1, [1, 2, 16, 32, 64, 128, 256]], + ["transport", "N12", [1, 2, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N15", [1, 2, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N20", [1, 2, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N24", [1, 2, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N29", [1, 2, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N34", [1, 2, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N37", [1, 2, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N41", [1, 2, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N46", [1, 2, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N48", [1, 2, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N53", [1, 2, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N57", [1, 2, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N60", [1, 2, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N64", [1, 2, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N69", [1, 2, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N73", [1, 2, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N76", [1, 2, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N81", [1, 2, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N83", [1, 2, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N87", [1, 2, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N91", [1, 2, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N96", [1, 2, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2], + ["transport", "N100", [1, 2, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 2] + ] + }, + { + "completed_cut": 3467, + "events": [ + ["transport", "N2", [2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 16, 32, 64, 128, 256], 1], + ["add", "Y0", "N2", 1, [1, 2, 4, 16, 32, 64, 128, 256]], + ["transport", "N2", [1, 2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 1], + ["add", "N2", "N4", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N2", "N5", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N2", "N9", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N2", "N10", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N2", "N17", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N2", "N18", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N2", "N26", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N2", "N27", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N2", "N39", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N2", "N43", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N2", "N44", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N2", "N50", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N2", "N51", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N2", "N55", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N2", "N62", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N2", "N66", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N2", "N67", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N2", "N71", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N2", "N78", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N2", "N79", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N2", "N85", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N2", "N89", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N2", "N98", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N2", "X2", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N4", "X4", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N5", "X5", "-1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N9", "X9", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N10", "X10", "-1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N17", "X17", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N18", "X18", "-1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N26", "X26", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N27", "X27", "-1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N39", "X39", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N43", "X43", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N44", "X44", "-1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N50", "X50", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N51", "X51", "-1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N55", "X55", "-1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N62", "X62", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N66", "X66", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N67", "X67", "-1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N71", "X71", "-1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N78", "X78", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N79", "X79", "-1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N85", "X85", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N89", "X89", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N98", "X98", "-1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["transport", "N7", [1, 2, 16, 32, 64, 128, 256], [1, 2, 4, 16, 32, 64, 128, 256], 1], + ["add", "Y0", "N7", 1, [1, 2, 4, 16, 32, 64, 128, 256]], + ["transport", "N7", [1, 2, 4, 16, 32, 64, 128, 256], [1, 2, 4, 8, 16, 32, 64, 128, 256], 1], + ["add", "N7", "N12", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N7", "N15", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N7", "N20", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N7", "N24", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N7", "N29", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N7", "N34", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N7", "N37", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N7", "N41", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N7", "N46", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N7", "N48", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N7", "N53", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N7", "N57", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N7", "N60", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N7", "N64", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N7", "N69", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N7", "N73", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N7", "N76", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N7", "N81", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N7", "N83", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N7", "N87", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N7", "N91", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N7", "N96", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N7", "N100", -1, [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N7", "X7", "-1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N12", "X12", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N15", "X15", "-1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N20", "X20", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N24", "X24", "-1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N29", "X29", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N34", "X34", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N37", "X37", "-1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N41", "X41", "-1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N46", "X46", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N48", "X48", "-1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N53", "X53", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N57", "X57", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N60", "X60", "-1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N64", "X64", "-1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N69", "X69", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N73", "X73", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N76", "X76", "-1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N81", "X81", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N83", "X83", "-1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N87", "X87", "-1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N91", "X91", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N96", "X96", "-1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]], + ["add", "N100", "X100", "1/2", [1, 2, 4, 8, 16, 32, 64, 128, 256]] + ] + } + ], + "schema_version": 1, + "source_witness_sha256": "0f541bef7f19fdeffd67157684e9f03d785f42c89973632f508fc1a0452b580e", + "target": 0 +} diff --git a/research/p104-y0-source-acquisition/README.md b/research/p104-y0-source-acquisition/README.md new file mode 100644 index 0000000000..64ae93c1b2 --- /dev/null +++ b/research/p104-y0-source-acquisition/README.md @@ -0,0 +1,257 @@ +# P104 Y0: 48 source-acquisition lifetimes, two final arrivals + +Completing **one target, Y0**, needs exactly **48 new helper lifetimes** in +the monotone correction model below. Two geometric hyperplanes do not mean +two helpers can acquire the required sources. All 48 required source registers +leave Y0's endpoint subspace on their first frame expansion; each contributing +source read must therefore occur on its own distinct initial line. + +A matching chronological word uses 48 arbitrary dirty helpers, combines them +into the two hyperplanes recorded by [PR #2353](https://github.com/CrocSwap/integer-mult-bounds/pull/2353), +and makes exactly two arrivals and two writes at Y0's endpoint. It restores +every helper's logical input and completes Y0 to `y0 <- y0 + x0`, while the +other 103 target rows retain the original `G/2` channel. The added local bill is + +``` +52 H1 + 46 H2 + 48 H6 (146 transports, rank mass 432) +238 rational scalar ADDs (142 coefficients ±1, 96 coefficients ±1/2). +``` + +This is a **scoped written lower bound and an exact finite common-chart +construction**, author-checked with a separately written circuit replay. +The checker imports neither the builder nor a predecessor executable. There +is no independent human review or proof-assistant proof. No complete P104 +supplier, global improvement or new κ is claimed. + +The claim is in [discussion #2245](https://github.com/CrocSwap/integer-mult-bounds/discussions/2245#discussioncomment-18942786), +taking its [one-target acquisition/restoration handoff](https://github.com/CrocSwap/integer-mult-bounds/discussions/2245#discussioncomment-18942251). +The 208 global lifetime floor and its geometric covers are predecessor results; +the new result concerns the cost of acquiring the sources for one such cover. + +## Model and exact pins + +Use PR #1972's 4,058-event scalar/frame word, retained by PR #1991 at +`research/p104-native-channel/inputs/LOWRANK-WITNESS.json`, SHA256 +`0f541bef7f19fdeffd67157684e9f03d785f42c89973632f508fc1a0452b580e`. +The scientific base is `0fdd7d82de03e43c9e5a1000dfbcd380d1b687d2`. +PR #2353's exact inspected head is +`2704eadf6b5205d4b965e9c6fc6dce28b89783cf`. It supplies the model and the +recorded cover, with no imported executable or assumed review status. + +Frames are subspaces of `F2^9` in the original compressed coordinates. Let +`q_s` be the nonzero label of Xs's initial line, and let `H` be Y0's final +eight-dimensional frame. Let `C = I - G/2`, where G is the ordinary rational +Gram matrix of the 104 root lines reconstructed from the pinned fixture. + +The added network reads immutable X registers only in their retained frames; +it may use rational linear mixing, copies and clears within equal frames, and +upward transports of new helpers. Coefficients are independent of input values. +Every helper lifetime starts with source-independent contents. Arbitrary +independent dirty contents are allowed; discarding and reinitializing a +physical register starts another lifetime. All transfers of source dependence +must use these operations. There are no reads of original G/Q/D/C helpers or +any Y target, no source writes, no new source-dependent descents, and no +cross-frame read hidden in a coefficient or descriptor. Target writes are +additive. This is the restriction used in the relevant PR #2353 handoff. + +The lower bound permits arbitrary retiming preserving the source/target paths, +arbitrary same-frame relays and cancellation, and even ignores restoration. +The upper word instead preserves the **entire original event order** and +restores all independent dirty inputs. Each of its 48 helpers goes from ZERO +to FULL, with the same logical dirty value at exit. FULL is a changed physical +frame, not an assertion that the entry and exit physical arrays coincide. + +## Source-acquisition lower bound + +The checker establishes the following exact finite premises, and records one +first-expansion escape vector for each source in [RESULT.json](RESULT.json): + +1. Row `C[0,:]` has 48 nonzero coefficients, all `±1/2`. Their labels are + distinct, and all lie in H. +2. For each of these sources, the only frame on its retained path contained + in H is its initial one-dimensional line. Its first expansion already + contains the recorded vector outside H; all later frames contain that + expansion. +3. Every frame on Y0's path is contained in H. None equals any of these 48 + source lines, so none of the needed inputs has a direct source-to-Y0 read. + +For a fixed source with nonzero correction coefficient, expand the added +linear program as a time-ordered dependence graph. A nonzero final coefficient +requires at least one directed dependence path from that source to an added +Y0 write. Along that path, transports only enlarge the frame and mixing +preserves it. Thus every frame on the path is contained in H. Its initial +source read must, by premise 2, occur in the source's initial line. By premise +3 that read enters a new helper, not Y0 directly. Later source reads at FULL +can be used for cleanup, but cannot lie on a path ending in Y0. + +Choose one such initial read for each of the 48 independent source variables. +A single monotone helper lifetime cannot perform two of these reads: two +different one-dimensional subspaces are incomparable, whereas the successive +frames of a lifetime are nested. The 48 chosen reads therefore enter distinct +lifetimes. This proves the bound for arbitrary word length, relay depth and +rational coefficients; it is not a bounded-search conclusion. Cancellation +does not invalidate the argument: an absent dependence path makes the +corresponding coefficient zero under every choice of coefficients. + +The positive control that expands two source paths into a common frame shows +why these **actual paths** matter. One dirty helper then acquires both sources, +delivers their sum and restores itself. Distinct labels alone would not give +the lower bound. + +This is a one-target bound. **Do not multiply 48 by 104:** an acquisition +lifetime can feed branches serving several targets. The result neither +strengthens the global 208 floor by that multiplication nor excludes shared +relay networks across targets. It also does not cover original-channel helper +reads, which can carry source combinations through the retained descents. + +## Matching two-arrival word + +Set `K1 = {v in H : popcount(v & 1) is even}` and +`K2 = {v in H : popcount(v & 4) is even}`. These are the predecessor's two +seven-dimensional hyperplanes. They cover **all 48** sources of this correction +row, including the three sources omitted by its favorable earlier-frame +allowance. Assign a source to K1 when possible, otherwise K2. Each group has +24 sources; choose N2 and N7 as their respective collectors. All assignments, +frames and individual operations are explicit in [CIRCUIT.json](CIRCUIT.json). + +Write `c_s = C[0,s]` and `d_s` for the independent input of helper Ns. +At original cut 0: + +1. Add `-d_s` to Y0 for all 48 helpers in the ZERO frame. +2. Move each Ns to Xs's initial line, perform `Ns += c_s Xs`, and move it to + its assigned K. It now holds `d_s + c_s x_s` in that chart. +3. Add each of the other 23 helpers into its group's collector. Keep each + feeder's contents intact and move the 46 feeders to FULL. The collectors + stay in their respective K frames holding their group sums. + +Run the unchanged original word through completed cut **3467**. Event 3466 +(zero-based) is Y0's rank-four final transport. All X sources are now FULL. +For each group, move its collector `K -> H`, add it to Y0, and move it +`H -> FULL`. Subtract the group's 23 still-intact feeder values from the +collector, then subtract `c_s Xs` from every helper in that group at FULL. +Run the unchanged original suffix. + +The two target writes contribute `sum_s(d_s + c_s x_s)`. The initial +compensation cancels `sum_s d_s`; the retained word contributes `(Gx/2)_0`. +The result is exactly `y0 + x0`. Unmerging returns each collector to +`d_s + c_s x_s`, so the final source cleanup restores all 48 helpers. +Original sources and helpers retain their original endpoints because no new +operation writes them, and the original word never reads any Y target. + +The exact replay checks the entire resulting 4,442-event word on **328 +independent input columns**: all 280 original inputs plus 48 new dirty inputs. +It also replays the original 280-column `G/2` endpoint as a positive baseline. +No scalar sample or floating-point comparison is used. + +## Local cost and its limits + +| Added role | Count | Frame path | Paid profile per role | +|---|---:|---|---| +| Feeder | 46 | ZERO -> line -> K -> FULL | H1 + H6 + H2 | +| Collector | 2 | ZERO -> line -> K -> H -> FULL | H1 + H6 + H1 + H1 | + +The scalar invoice is 48 initial compensations, 48 captures, 46 merges, +two deliveries, 46 unmerges and 48 source cleanups: **238 ADDs**. There are +96 added source reads and no new COPY, allocation or erase events. The +48 helpers are independently dirty at the boundary; they are not free clean +ancillas. + +Under the stated ZERO-to-FULL boundary and dimension-gap transport billing, +each monotone lifetime pays nine rank units. Thus 432 is also the sharp rank +mass under that **additional boundary convention**. It is not a floor if +arbitrary helper entrance/exit frames are granted for free. The ADD count and +rank profile are the bill of this explicit word, not claimed optimal. + +The original rank mass 2368 becomes 2800, with profile +`1126 H1 + 104 H2 + 86 H3 + 104 H4 + 48 H5 + 72 H6 + 8 H7 + 8 H8`. +The added mass is exactly the new `48*9` boundary progress; whether it earns +useful coverage credit requires actual owners and residual children. It is +incorrect to treat 432 automatically as extra recursive deficit, or to insert +this partial one-target word into a complete-supplier moment calculator. + +These are complete logical scalar and nested-transport counts for this word. +The canonical-chart rule `Gamma_B Gamma_A^-1` is inherited from the native +channel model. New Clifford recipes/global phases, scalar/address lowering, +roundoff, global chronological hosting, idle/remainder charges, a completed +104-target moment, precision/tape and all-size admission are **not** checked. +Neither a native implementation invoice nor a multiplication theorem follows +from this package. + +## Reproduce + +Python 3.12, standard library only; the direct replay is read-only, Git-free +and network-free (about one second in the preparation environment): + +```sh +python3 -I -O -B research/p104-y0-source-acquisition/verify.py +python3 -I -O -B research/p104-y0-source-acquisition/crosscheck.py +python3 scripts/research_package.py --package research/p104-y0-source-acquisition --check-only +python3 scripts/research_package.py --package research/p104-y0-source-acquisition +``` + +Expected final line: + +``` +PASS_P104_Y0_SOURCE_ACQUISITION lifetimes=48 arrivals=2 columns=328 added_rank=432 added_ADD=238 controls=10 no_new_kappa +``` + +The nine rejection controls remove dirty compensation, a capture, an unmerge +or source cleanup; substitute a wrong-frame source; change a transport charge; +deliver one original event too early; invalidate the source-escape premise; +or misassign a hyperplane. The tenth is the positive changed-source-path +countermodel described above. Acceptance uses explicit checks, including +with Python assertions disabled. + +The separate `crosscheck.py` uses dense integer rows scaled by eight, checks +every division is exact, and uses binary Gaussian elimination instead of +enumerated subspaces. It reconstructs all 328 endpoint columns and the 48 +source-escape premises without importing the primary checker or builder, and +compares the canonical full-endpoint digest. Both implementations are +AI-assisted work in this package, not independent human reviews. + +`build.py --out NEW.json` reconstructs the literal CIRCUIT payload without +overwriting an existing file. `verify.py --out NEW.json` writes the verified +RESULT payload exclusively after checking the committed receipt. Compare +parsed JSON when regenerating; no compressed container hashes are involved. +[SOURCES.json](SOURCES.json) pins the two live inputs and task provenance; +[TASK.json](TASK.json) records scope, selection, overlap and remaining work. + +## Open next questions + +Can several target covers share source-acquisition feeders without losing +monotone frame compatibility or dirty restoration? Start with Y0 and one +second target, enumerate their common source-frame and relay-frame contacts, +and write a complete two-target word before scaling. The 48-source injection +is reusable information, so summing separate one-target lower bounds is not +valid. The blocker is a globally compatible relay/owner schedule and its full +bill, not another geometric two-cover calculation. + +For this exact finite word, native lowering can be checked separately by +compiling its 146 nested transports and verifying phases under the retained +canonical-chart contract. That would settle a local physical obligation, but +would still leave 103 correction rows and all global admission work open. + +## Credit + +Prepared for commdata2338 (@commdata2338), with substantial OpenAI Codex assistance. + +kumagi / PR #2353 states the relay-safe monotone model, verifies the +208-lifetime floor and supplies the two-hyperplane handoff. Philippe Van +Velzen's correction screen supplies the original 208 floor and cover +calculation. Rohan Arun / PR #1972 supplies the scalar/frame channel, +Chafik Boukhalfa / PR #1991 its native realization, Adam Gall / PR #1940 the +schedule, Josie Elliston / PR #1071 the fixture, and Ali Romman / PR #1125 +the delivery lineage, with PR #968/#717/#446/#595/#620 retained as credited +in the original package notices. Dirty compensation itself is inherited. + +Gonzalo Mier / PR #2173, Gareth Davidson / PR #2251, and the subsequent +PR #2345/#2358 prefix work concern different pooled-space questions. +This account's PR #2172 prices cut 2429 and PR #2190 excludes a fixed-room +capture order; neither is the present source-acquisition result. The parallel +private-code relay investigation in discussion #2245 grants original private +signals, which are excluded here. Its question is distinct and its claims +are not used as evidence. + +New proof, construction, implementation, checking and writing have substantial +OpenAI Codex (GPT-6 Astra) assistance. No independent human review is claimed. +Apache-2.0; existing source files and notices are unchanged. diff --git a/research/p104-y0-source-acquisition/RESULT.json b/research/p104-y0-source-acquisition/RESULT.json new file mode 100644 index 0000000000..d7feb71918 --- /dev/null +++ b/research/p104-y0-source-acquisition/RESULT.json @@ -0,0 +1,468 @@ +{ + "added_invoice": { + "endpoint_arrivals": [ + "N2", + "N7" + ], + "endpoint_writers": [ + "N2", + "N7" + ], + "paid_profile": { + "1": 52, + "2": 46, + "6": 48 + }, + "rank_mass": 432, + "scalar_additions": 238, + "scalar_coefficients": { + "-1": 94, + "-1/2": 48, + "1": 48, + "1/2": 48 + }, + "transports": 146 + }, + "baseline_input_columns": 280, + "candidate_input_columns": 328, + "combined_events": 4442, + "combined_paid_profile": { + "1": 1126, + "2": 104, + "3": 86, + "4": 104, + "5": 48, + "6": 72, + "7": 8, + "8": 8 + }, + "combined_rank_mass": 2800, + "controls": [ + "missing_initial_dirty_compensation", + "missing_source_capture", + "missing_dirty_unmerge", + "missing_source_cleanup", + "wrong_source_frame", + "wrong_transport_invoice", + "delivery_one_original_event_early", + "source_expansion_inside_endpoint", + "wrong_hyperplane_assignment", + "positive_relaxed_source_paths_one_helper_two_sources" + ], + "cover_dimensions": [ + 7, + 7 + ], + "cover_normals": [ + 1, + 4 + ], + "full_endpoint_sha256": "9a5f1b15098983e333ab090e39c50bcba6c742f7453e8f927480aa1986d81f52", + "groups": [ + [ + 2, + 4, + 5, + 9, + 10, + 17, + 18, + 26, + 27, + 39, + 43, + 44, + 50, + 51, + 55, + 62, + 66, + 67, + 71, + 78, + 79, + 85, + 89, + 98 + ], + [ + 7, + 12, + 15, + 20, + 24, + 29, + 34, + 37, + 41, + 46, + 48, + 53, + 57, + 60, + 64, + 69, + 73, + 76, + 81, + 83, + 87, + 91, + 96, + 100 + ] + ], + "minimum_helper_lifetimes": 48, + "schema_version": 1, + "scope": "Sharp 48-lifetime Y0 acquisition bound in the stated monotone model; local common-chart word only; no supplier or kappa claim.", + "source_escape_witnesses": [ + { + "escape_vector": 8, + "first_transport_event": 495, + "label": 228, + "source": 2 + }, + { + "escape_vector": 8, + "first_transport_event": 500, + "label": 196, + "source": 4 + }, + { + "escape_vector": 8, + "first_transport_event": 557, + "label": 452, + "source": 5 + }, + { + "escape_vector": 8, + "first_transport_event": 524, + "label": 387, + "source": 7 + }, + { + "escape_vector": 8, + "first_transport_event": 522, + "label": 148, + "source": 9 + }, + { + "escape_vector": 8, + "first_transport_event": 534, + "label": 404, + "source": 10 + }, + { + "escape_vector": 8, + "first_transport_event": 536, + "label": 131, + "source": 12 + }, + { + "escape_vector": 8, + "first_transport_event": 540, + "label": 291, + "source": 15 + }, + { + "escape_vector": 8, + "first_transport_event": 538, + "label": 52, + "source": 17 + }, + { + "escape_vector": 8, + "first_transport_event": 518, + "label": 308, + "source": 18 + }, + { + "escape_vector": 8, + "first_transport_event": 520, + "label": 35, + "source": 20 + }, + { + "escape_vector": 8, + "first_transport_event": 547, + "label": 355, + "source": 24 + }, + { + "escape_vector": 8, + "first_transport_event": 545, + "label": 116, + "source": 26 + }, + { + "escape_vector": 8, + "first_transport_event": 510, + "label": 372, + "source": 27 + }, + { + "escape_vector": 8, + "first_transport_event": 512, + "label": 99, + "source": 29 + }, + { + "escape_vector": 8, + "first_transport_event": 586, + "label": 225, + "source": 34 + }, + { + "escape_vector": 8, + "first_transport_event": 552, + "label": 193, + "source": 37 + }, + { + "escape_vector": 8, + "first_transport_event": 554, + "label": 470, + "source": 39 + }, + { + "escape_vector": 8, + "first_transport_event": 529, + "label": 145, + "source": 41 + }, + { + "escape_vector": 8, + "first_transport_event": 531, + "label": 390, + "source": 43 + }, + { + "escape_vector": 8, + "first_transport_event": 567, + "label": 166, + "source": 44 + }, + { + "escape_vector": 8, + "first_transport_event": 565, + "label": 433, + "source": 46 + }, + { + "escape_vector": 8, + "first_transport_event": 513, + "label": 49, + "source": 48 + }, + { + "escape_vector": 8, + "first_transport_event": 515, + "label": 294, + "source": 50 + }, + { + "escape_vector": 8, + "first_transport_event": 576, + "label": 6, + "source": 51 + }, + { + "escape_vector": 8, + "first_transport_event": 574, + "label": 273, + "source": 53 + }, + { + "escape_vector": 8, + "first_transport_event": 579, + "label": 86, + "source": 55 + }, + { + "escape_vector": 8, + "first_transport_event": 581, + "label": 321, + "source": 57 + }, + { + "escape_vector": 8, + "first_transport_event": 548, + "label": 353, + "source": 60 + }, + { + "escape_vector": 8, + "first_transport_event": 550, + "label": 118, + "source": 62 + }, + { + "escape_vector": 8, + "first_transport_event": 506, + "label": 113, + "source": 64 + }, + { + "escape_vector": 8, + "first_transport_event": 508, + "label": 358, + "source": 66 + }, + { + "escape_vector": 8, + "first_transport_event": 584, + "label": 70, + "source": 67 + }, + { + "escape_vector": 8, + "first_transport_event": 582, + "label": 337, + "source": 69 + }, + { + "escape_vector": 8, + "first_transport_event": 571, + "label": 22, + "source": 71 + }, + { + "escape_vector": 8, + "first_transport_event": 573, + "label": 257, + "source": 73 + }, + { + "escape_vector": 8, + "first_transport_event": 541, + "label": 289, + "source": 76 + }, + { + "escape_vector": 8, + "first_transport_event": 543, + "label": 54, + "source": 78 + }, + { + "escape_vector": 8, + "first_transport_event": 562, + "label": 182, + "source": 79 + }, + { + "escape_vector": 8, + "first_transport_event": 564, + "label": 417, + "source": 81 + }, + { + "escape_vector": 8, + "first_transport_event": 525, + "label": 385, + "source": 83 + }, + { + "escape_vector": 8, + "first_transport_event": 527, + "label": 150, + "source": 85 + }, + { + "escape_vector": 8, + "first_transport_event": 502, + "label": 465, + "source": 87 + }, + { + "escape_vector": 8, + "first_transport_event": 504, + "label": 198, + "source": 89 + }, + { + "escape_vector": 8, + "first_transport_event": 587, + "label": 241, + "source": 91 + }, + { + "escape_vector": 8, + "first_transport_event": 589, + "label": 227, + "source": 96 + }, + { + "escape_vector": 8, + "first_transport_event": 491, + "label": 244, + "source": 98 + }, + { + "escape_vector": 8, + "first_transport_event": 493, + "label": 483, + "source": 100 + } + ], + "source_support": [ + 2, + 4, + 5, + 7, + 9, + 10, + 12, + 15, + 17, + 18, + 20, + 24, + 26, + 27, + 29, + 34, + 37, + 39, + 41, + 43, + 44, + 46, + 48, + 50, + 51, + 53, + 55, + 57, + 60, + 62, + 64, + 66, + 67, + 69, + 71, + 73, + 76, + 78, + 79, + 81, + 83, + 85, + 87, + 89, + 91, + 96, + 98, + 100 + ], + "status": "PASS_P104_Y0_SOURCE_ACQUISITION", + "target": 0, + "target_frame_cuts": [ + 0, + 2572, + 2746, + 2983, + 3217, + 3467 + ] +} diff --git a/research/p104-y0-source-acquisition/SOURCES.json b/research/p104-y0-source-acquisition/SOURCES.json new file mode 100644 index 0000000000..430129fc9b --- /dev/null +++ b/research/p104-y0-source-acquisition/SOURCES.json @@ -0,0 +1,67 @@ +{ + "schema_version": 1, + "base_commit": "0fdd7d82de03e43c9e5a1000dfbcd380d1b687d2", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "ae6a99f28aa468649eb66a361e764d769363bf11", + "sha256": "10b9e340fd8e354a37a0c4813c90e5de1dd42044b5f6aca4a3fc5a42b685fa32" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "e8870e5917057d59b730eb14721a778639eca050", + "sha256": "d46eb6d5b3e279428753d770653663fbdf1063e55c255ea073d768f344927ef7" + }, + { + "path": "research/p104-native-channel/inputs/LOWRANK-WITNESS.json", + "usage": "input", + "git_blob": "86beaf424e9f0f800ae3a62797d94ec9386b7706", + "sha256": "0f541bef7f19fdeffd67157684e9f03d785f42c89973632f508fc1a0452b580e" + }, + { + "path": "research/p104-native-channel/inputs/P104-FIXTURE.json", + "usage": "input", + "git_blob": "2e16f99b295bb386fd13bd8fbd57b42ef54143a9", + "sha256": "516c06f6ec3cb84be588c546108de897650288576dd5fbf5fe44b9c5546ad8a4" + } + ], + "predecessors": [ + { + "pr": 2353, + "head": "2704eadf6b5205d4b965e9c6fc6dce28b89783cf", + "author": "kumagi", + "role": "Restricted monotone relay model, two-hyperplane cover and one-target handoff; no executable imported." + }, + { + "url": "https://github.com/philippeVV/integer-mult-bounds/tree/7dfc7a176d7de4e7eabaf553a0b187c1bd647546/research/p104-correction-screen", + "head": "7dfc7a176d7de4e7eabaf553a0b187c1bd647546", + "author": "Philippe Van Velzen", + "role": "Original208 floor and geometric cover, credited through PR2353; not a live input." + }, + { + "pr": 1972, + "head": "fd82d172f46933fd253c2c6de4bd5eaff5429cfd", + "author": "Rohan Arun", + "role": "Frozen scalar/frame word retained by native PR1991." + }, + { + "pr": 1991, + "author": "Chafik Boukhalfa", + "role": "Native channel model and source retention on the pinned main base." + }, + { + "pr": 1940, + "author": "Adam Gall", + "role": "Retained schedule.", + "head": "a9b7dfe2809092a9a4c90784d12bb60061e995e8" + }, + { + "pr": 1071, + "author": "Josie Elliston", + "role": "Retained root fixture; PR1125 Ali Romman and PR968/717/446/595/620 lineage credited in README." + } + ], + "disclosure": "Substantial OpenAI Codex (GPT-6 Astra) assistance in derivation, implementation, checking and writing. No independent human review or proof-assistant proof is claimed." +} diff --git a/research/p104-y0-source-acquisition/TASK.json b/research/p104-y0-source-acquisition/TASK.json new file mode 100644 index 0000000000..763ed2ccef --- /dev/null +++ b/research/p104-y0-source-acquisition/TASK.json @@ -0,0 +1,177 @@ +{ + "schema_version": 1, + "task_id": "p104-side-correction", + "priority_revision": 4, + "base_commit": "0fdd7d82de03e43c9e5a1000dfbcd380d1b687d2", + "original_card": { + "id": "p104-side-correction", + "question": "Can the native P104 low-rank channel be completed with a legal, fully charged I-G/2 side correction?", + "starting_points": [ + "research/p104-native-channel/README.md", + "research/p104-native-channel/PROOF.md", + "docs/research/community-efficient1000-review.md" + ], + "methods": [ + "Construct one side-correction word at an explicit chronological cut with the needed frames still available.", + "Derive a lower bound on the side correction and hosting costs that decides whether this channel can beat the selected budget." + ], + "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.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Read the P104 open next questions and its fixed local histogram; inspect why appending I-G/2 after source completion is not justified. #1991 supplies the checked native channel, not the missing correction.", + "scope": "Source-bound orientation only. Read the named package and review before relying on its local evidence; this command is not its replay or supplier admission." + }, + "first_experiment": "Choose one exact side-correction cut and bound its allowed cost from a favorable completed moment at a declared target. Stop or hand off if the necessary source/target access cannot be justified or even the optimistic total misses the target.", + "bottleneck_link": "Completing an already realized changed channel tests a concrete construction opportunity, instead of refining the incumbent packing. A positive local result still needs global and all-size admission.", + "allowed_variations": [ + "One correction factorization, one chronological cut, or one explicit hosting obstruction.", + "A changed correction schedule with an updated full bill and native frame contract." + ], + "scope_change_triggers": [ + "Recompiling the already certified low-rank channel without closing a new obligation.", + "Treating a pending ancestor, local histogram or unpriced side correction as an admitted global supplier." + ], + "overlap_terms": [ + "P104", + "I-G/2", + "side correction", + "native channel", + "1972", + "1991" + ] + }, + "scope_status": "refined", + "actual_scope": "Sharp 48-lifetime source-acquisition bound for P104 Y0 in the retained-source-path monotone relay model, attained by a 48-dirty-helper two-arrival correction word at original cuts 0 and 3467.", + "scope_change_reason": "Choose the second complex-mechanisms suggestion and take PR2353's explicit one-target acquisition/restoration handoff. The initial two-lifetime attempt fails by a source-path injection; the matching 48-lifetime word certifies sharpness within this local model, without lowering a global supplier target.", + "bottleneck_link": "Geometric support covers do not price acquisition of the source values. This resolves that missing local implication for one target while leaving shared multi-target relays and the full P104 bill open.", + "budget_minutes": 60, + "stop_rule": "Stop after deciding the two-lifetime proposal and verifying a matching one-target construction and complete local invoice; do not infer a global stock floor or implement a 104-target network.", + "outcome": "completed", + "evidence": "README.md gives the scoped proof; CIRCUIT.json and RESULT.json give the exact word and certificate. Optimized all-input replay passes:48 lifetimes,2 arrivals,328 columns,432 added rank units,238 ADDs,10 controls.", + "author": "commdata2338", + "ai_assistance": "Substantial OpenAI Codex (GPT-6 Astra) assistance in derivation, implementation, checking and writing. No independent human review or proof-assistant proof is claimed.", + "open_questions": [ + { + "question": "Can two or more target covers share acquisition feeders with valid monotone relays and dirty restoration?", + "why_it_matters": "Per-target source reads may be shared; separate 48-lifetime floors cannot be summed, and global pricing remains open.", + "first_step": "Pair Y0 with one second target and certify actual shared-frame contacts, a complete dirty word and its full bill.", + "blocked_by": "A common chronological relay/owner schedule and full recursive invoice are absent." + }, + { + "question": "Do the 146 added transports have the expected phase-correct native realizations under the retained canonical charts?", + "why_it_matters": "The common-chart word does not itself certify primitive physical lowering.", + "first_step": "Compile the literal nested transitions and independently check signed Pauli actions and a phase-fixing column.", + "blocked_by": "Native lowering is outside this finite logical replay; even a pass leaves103 correction rows and global admission open." + } + ], + "selection": { + "nonce": "9aee6e45a250cebc67a06b8bffe3797e", + "track": "complex-mechanisms", + "task_id": "p104-side-correction", + "scope_key": "72dfbf0708467ad34793", + "refined_scope_key": "P104/Y0/two-hyperplane-cover/source-acquisition/monotone-new-helpers", + "priority_revision": 4, + "other_suggestions": [ + { + "task_id": "complex-new-helper-inventory", + "scope_key": "f3b0895a4f9f1cc62e75", + "reason_passed": "Generic and crowded; a live central handoff was preferred." + }, + { + "task_id": "complex-rank-shape-decoder", + "scope_key": "cad3ba853d7f324f16fa", + "reason_passed": "Recent E6/P104 decoder floors already cover many obvious directions; the source-acquisition handoff is concrete." + } + ] + }, + "claim": { + "thread": "https://github.com/CrocSwap/integer-mult-bounds/discussions/2245", + "handoff": "https://github.com/CrocSwap/integer-mult-bounds/discussions/2245#discussioncomment-18942251", + "claim_url": "https://github.com/CrocSwap/integer-mult-bounds/discussions/2245#discussioncomment-18942786" + }, + "optimistic_budget": "The two-lifetime ZERO-to-FULL screen is18 rank units. Exact source acquisition excludes it. The matching sharpness construction pays432 rank units and238 ADDs for Y0 only; no favorable global moment is claimed.", + "unchecked_obligations": [ + "Native Clifford recipes/global phases", + "Scalar/address primitive lowering and precision", + "Global chronological owners and idle/remainder invoice", + "The other103 target corrections and a completed supplier moment", + "All-size/compiler, tape, analytic and outer-transfer admission", + "Selected cold replay", + "Independent human or formal proof review" + ], + "evidence_details": { + "proof": "README.md, Source-acquisition lower bound", + "finite_certificate": "RESULT.json", + "word": "CIRCUIT.json", + "replay": "python3 -I -O -B research/p104-y0-source-acquisition/verify.py", + "result": "48 helper lifetimes necessary and sufficient in the stated model; two final arrivals; 328-column endpoint; 146 added transports, rank mass432, 238 ADDs; 10 semantic controls.", + "independent_replay": "python3 -I -O -B research/p104-y0-source-acquisition/crosscheck.py" + }, + "freshness": { + "checked_at_utc": "2026-10-15T07:07:27Z", + "upstream_commit": "0fdd7d82de03e43c9e5a1000dfbcd380d1b687d2", + "priority_revision": 4, + "changes": "No upstream commits; guidance, catalogue, selected record and scientific inputs unchanged. Continue the exact pinned local task." + }, + "overlap": { + "entry": { + "open_prs_fetched_at": "2026-10-15T06:28:56.749233+00:00", + "open_prs_records": 570, + "discussions_fetched_at": "2026-10-15T06:31:18.032505+00:00", + "discussion_records": 1082, + "complete_pagination": true + }, + "latest": { + "open_prs_fetched_at": "2026-10-15T06:55:23.240869+00:00", + "open_prs_records": 583, + "discussions_fetched_at": "2026-10-15T06:57:32.010338+00:00", + "discussion_records": 1111, + "complete_pagination": true + }, + "queries": [ + "--task p104-side-correction", + "two-hyperplane / monotone relay / source reads", + "Y0 / source-acquisition / 48 lifetimes / two-hyperplane", + "source-acquisition / 48-lifetime / Y0 correction" + ], + "limitations": "Cached complete snapshots used offline; metadata search does not cover arbitrary code diffs and may miss later changes. No novelty guarantee.", + "nearest": [ + { + "pr": 2353, + "difference": "The predecessor proves the geometric two-entrance floor; this supplies actual source acquisition, dirty restoration and the sharp48-lifetime one-target result." + }, + { + "prs": [ + 2251, + 2345, + 2358 + ], + "difference": "These compute pooled-space dimensions, not chronological source acquisition." + }, + { + "discussion_comment": 18941894, + "difference": "The active41-contact lift reads original D helpers; those reads are excluded here." + }, + { + "prs": [ + 2172, + 2190 + ], + "difference": "This account's prior cut-pricing and fixed-room capture-order results concern other models." + }, + { + "discussion": "2245, parallel private-code relay question", + "difference": "That model grants original private/root-code signals; the present proof excludes them." + }, + { + "discussion_comment": 18942790, + "difference": "The simultaneous no-relay audit concerns a global fractional cover floor. This one-target word permits helper relays and proves a source-acquisition lifetime injection." + } + ] + } +} diff --git a/research/p104-y0-source-acquisition/VERIFY.json b/research/p104-y0-source-acquisition/VERIFY.json new file mode 100644 index 0000000000..f633574665 --- /dev/null +++ b/research/p104-y0-source-acquisition/VERIFY.json @@ -0,0 +1,34 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [ + "research/p104-native-channel/inputs/LOWRANK-WITNESS.json", + "research/p104-native-channel/inputs/P104-FIXTURE.json" + ], + "commands": [ + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 120, + "checks": "Source hashes, finite source-escape witnesses, original280-column baseline, complete328-column dirty endpoint and all common frames, exact added invoice and10 semantic controls; README supplies the arbitrary-word lower-bound proof." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "{package}/crosscheck.py" + ], + "timeout_seconds": 120, + "checks": "Separate dense integer rows at exact scale8 and binary Gaussian elimination: all4442 events,328 endpoint columns and48 source-acquisition lines; imports no primary checker or builder." + } + ] +} diff --git a/research/p104-y0-source-acquisition/build.py b/research/p104-y0-source-acquisition/build.py new file mode 100644 index 0000000000..cba3e19a81 --- /dev/null +++ b/research/p104-y0-source-acquisition/build.py @@ -0,0 +1,128 @@ +#!/usr/bin/env python3 +"""Emit the fixed Y0 two-arrival word; verification is in verify.py. + +Prepared for commdata2338, with substantial OpenAI Codex assistance. Apache-2.0. +""" +import argparse +from fractions import Fraction +from hashlib import sha256 +from itertools import combinations, product +import json +from pathlib import Path + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parent.parent + + +def span(basis): + values = {0} + for b in basis: + values |= {x ^ b for x in tuple(values)} + return values + + +def basis_of(values): + basis, current = [], {0} + for v in sorted(values): + if v not in current: + basis.append(v) + current |= {x ^ v for x in tuple(current)} + if current != set(values): + raise ValueError("not a subspace") + return basis + + +def build(): + source = ROOT / "research/p104-native-channel/inputs/LOWRANK-WITNESS.json" + word = json.loads(source.read_text()) + fixture = json.loads((ROOT / "research/p104-native-channel/inputs/P104-FIXTURE.json").read_text()) + roots = set() + for i, j in combinations(range(8), 2): + for sign in (-1, 1): + r = [0] * 8 + r[i], r[j] = 2, 2 * sign + roots.add(tuple(r)) + for signs in product((-1, 1), repeat=7): + if signs.count(-1) % 2 == 0: + roots.add((1, *signs)) + data = fixture["section4_explicit_P104"] + roots -= {tuple(r) for r in data["F0"] + data["C"]} + ports = sorted(roots) + coefficients = { + s: Fraction(int(s == 0)) - Fraction(sum(x * y for x, y in zip(ports[0], r)), 8) + for s, r in enumerate(ports) + } + coefficients = {s: c for s, c in coefficients.items() if c} + terminal = span(word["final_frames"]["Y0"]) + endpoint = basis_of(terminal) + full = list(1 << j for j in range(9)) + normals = [1, 4] + rooms = [basis_of({v for v in terminal if (v & n).bit_count() % 2 == 0}) + for n in normals] + groups = [[], []] + for s in coefficients: + line = span(word["initial_frames"][f"X{s}"]) + choices = [j for j, room in enumerate(rooms) if line <= span(room)] + if not choices: + raise ValueError("uncovered source") + groups[choices[0]].append(s) + initial = {f"N{s}": [] for s in coefficients} + final = {f"N{s}": full for s in coefficients} + first, last = [], [] + + def move(events, register, before, after): + events.append(["transport", register, before, after, len(after) - len(before)]) + + for s in coefficients: + first.append(["add", "Y0", f"N{s}", -1, []]) + for group, room in zip(groups, rooms): + for s in group: + reg, line = f"N{s}", word["initial_frames"][f"X{s}"] + move(first, reg, [], line) + first.append(["add", reg, f"X{s}", str(coefficients[s]), line]) + move(first, reg, line, room) + collector = f"N{group[0]}" + for s in group[1:]: + first.append(["add", collector, f"N{s}", 1, room]) + # Keep feeder values intact until after collector delivery/unmerging. + for s in group[1:]: + move(first, f"N{s}", room, full) + move(last, collector, room, endpoint) + last.append(["add", "Y0", collector, 1, endpoint]) + move(last, collector, endpoint, full) + for s in group[1:]: + last.append(["add", collector, f"N{s}", -1, full]) + for s in group: + last.append(["add", f"N{s}", f"X{s}", str(-coefficients[s]), full]) + return { + "schema_version": 1, + "source_witness_sha256": sha256(source.read_bytes()).hexdigest(), + "target": 0, "cover_normals": normals, "groups": groups, + "initial_frames": initial, "final_frames": final, + "insertions": [{"completed_cut": 0, "events": first}, + {"completed_cut": 3467, "events": last}], + } + + +def formatted(value, depth=0): + """Keep each literal event on one line for review.""" + pad = " " * (depth + 1) + if isinstance(value, dict): + entries = [pad + json.dumps(k) + ": " + formatted(v, depth + 1) + for k, v in sorted(value.items())] + return "{\n" + ",\n".join(entries) + "\n" + " " * depth + "}" + if isinstance(value, list) and value and isinstance(value[0], (dict, list)): + return "[\n" + ",\n".join(pad + formatted(v, depth + 1) for v in value) + "\n" + " " * depth + "]" + return json.dumps(value) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--out", required=True, type=Path, help="new output file; never overwritten") + args = parser.parse_args() + with args.out.open("x", encoding="utf-8") as out: + out.write(formatted(build()) + "\n") + + +if __name__ == "__main__": + main() diff --git a/research/p104-y0-source-acquisition/crosscheck.py b/research/p104-y0-source-acquisition/crosscheck.py new file mode 100644 index 0000000000..a11043b864 --- /dev/null +++ b/research/p104-y0-source-acquisition/crosscheck.py @@ -0,0 +1,145 @@ +#!/usr/bin/env python3 +"""Independent dense integer / binary-elimination replay of the published word. + +No imports from build.py, verify.py or predecessor executables. +Prepared for commdata2338, with substantial OpenAI Codex assistance. Apache-2.0. +""" +from fractions import Fraction +from hashlib import sha256 +from itertools import combinations, product +import json +from pathlib import Path + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parent.parent + + +def check(condition, message): + if not condition: + raise ValueError(message) + + +def reduce_vector(v, basis): + for b in basis: + v = min(v, v ^ b) + return v + + +def echelon(generators): + pivots = {} + for v in generators: + while v: + bit = v.bit_length() - 1 + if bit in pivots: + v ^= pivots[bit] + else: + pivots[bit] = v + break + for bit in sorted(pivots): + for higher in pivots: + if higher > bit and (pivots[higher] >> bit) & 1: + pivots[higher] ^= pivots[bit] + return tuple(pivots[b] for b in sorted(pivots, reverse=True)) + + +def contained(a, b): + return all(reduce_vector(v, b) == 0 for v in a) + + +def roots(fixture): + lines = set() + for positions in combinations(range(8), 2): + for signs in product((-2, 2), repeat=2): + r = [0] * 8 + for j, v in zip(positions, signs): + r[j] = v + if next(v for v in r if v) < 0: + r = [-v for v in r] + lines.add(tuple(r)) + for r in product((-1, 1), repeat=8): + if sum(v < 0 for v in r) % 2 == 0: + lines.add(r if r[0] > 0 else tuple(-v for v in r)) + data = fixture["section4_explicit_P104"] + return sorted(lines - {tuple(r) for r in data["F0"] + data["C"]}) + + +def main(): + source = {} + for pin in json.loads((HERE / "SOURCES.json").read_text())["files"]: + if pin["usage"] == "input": + raw = (ROOT / pin["path"]).read_bytes() + check(sha256(raw).hexdigest() == pin["sha256"], "input hash") + source[Path(pin["path"]).name] = json.loads(raw) + word, fixture = source["LOWRANK-WITNESS.json"], source["P104-FIXTURE.json"] + candidate = json.loads((HERE / "CIRCUIT.json").read_text()) + check([b["completed_cut"] for b in candidate["insertions"]] == [0, 3467], "cut indices") + events = (candidate["insertions"][0]["events"] + word["program"][:3467] + + candidate["insertions"][1]["events"] + word["program"][3467:]) + initial = dict(word["initial_frames"], **candidate["initial_frames"]) + names = sorted(initial) + columns = {r: j for j, r in enumerate(names)} + rows = {r: [8 * int(j == columns[r]) for j in range(len(names))] for r in names} + frames = {r: echelon(b) for r, b in initial.items()} + histories = {r: [frames[r]] for r in names if r.startswith(("X", "Y"))} + for e in events: + kind = e[0] + if kind == "add": + _, dst, src, c, b = e + check(frames[dst] == frames[src] == echelon(b), "ADD chart") + c = Fraction(c) + products = [c.numerator * v for v in rows[src]] + check(all(v % c.denominator == 0 for v in products), "denominator-eight invariant") + rows[dst] = [u + v // c.denominator for u, v in zip(rows[dst], products)] + elif kind == "transport": + _, r, before, after, rank = e + a, b = echelon(before), echelon(after) + check(frames[r] == a, "transport entrance") + check(a != b and (contained(a, b) or contained(b, a)), "nested transport") + check(abs(len(a) - len(b)) == rank, "rank charge") + frames[r] = b + if r in histories: + check(contained(a, b), "data path descent") + histories[r].append(b) + elif kind == "zero": + check(e[1] == "C" and e[1] not in rows, "private allocation") + rows[e[1]], frames[e[1]] = [0] * len(names), echelon(e[2]) + elif kind == "copy": + check(not any(rows[e[1]]) and frames[e[1]] == frames[e[2]] == echelon(e[3]), "private copy") + rows[e[1]] = rows[e[2]][:] + elif kind == "erase": + check(e[1] == "C" and frames[e[1]] == echelon(e[2]), "private discard") + del rows[e[1]], frames[e[1]] + else: + raise ValueError("unknown event") + final = dict(word["final_frames"], **candidate["final_frames"]) + check(frames == {r: echelon(b) for r, b in final.items()}, "final frames") + ports = roots(fixture) + check(len(ports) == 104 and len(names) == 328 and len(events) == 4442, "finite dimensions") + for r in names: + expected = [8 * int(j == columns[r]) for j in range(len(names))] + if r.startswith("Y"): + t = int(r[1:]) + for s in range(104): + expected[columns[f"X{s}"]] = (8 * int(s == 0) if t == 0 else + sum(x * y for x, y in zip(ports[t], ports[s]))) + check(rows[r] == expected, "dense endpoint " + r) + h = histories["Y0"][-1] + support = [s for s in range(104) + if 8 * int(s == 0) != sum(x * y for x, y in zip(ports[0], ports[s]))] + lines = set() + for s in support: + path = histories[f"X{s}"] + check(len(path[0]) == 1 and contained(path[0], h), "initial source line") + check(all(not contained(f, h) for f in path[1:]), "expanded source in H") + check(path[0] not in histories["Y0"], "direct source access") + lines.add(path[0]) + check(len(lines) == len(support) == 48, "48 distinct acquisition lines") + canonical = {r: {names[j]: str(Fraction(v, 8)) for j, v in enumerate(rows[r]) if v} + for r in names} + digest = sha256(json.dumps(canonical, sort_keys=True, separators=(",", ":")).encode()).hexdigest() + check(digest == json.loads((HERE / "RESULT.json").read_text())["full_endpoint_sha256"], "cross-check digest") + print("PASS_P104_Y0_DENSE_CROSSCHECK events=4442 columns=328 acquisition_lines=48 exact_scale=8") + + +if __name__ == "__main__": + main() diff --git a/research/p104-y0-source-acquisition/verify.py b/research/p104-y0-source-acquisition/verify.py new file mode 100644 index 0000000000..cdca5e30cd --- /dev/null +++ b/research/p104-y0-source-acquisition/verify.py @@ -0,0 +1,371 @@ +#!/usr/bin/env python3 +"""Source-acquisition certificate and all-input replay for the fixed P104 Y0 word. + +Imports neither the builder nor any predecessor executable. +Prepared for commdata2338, with substantial OpenAI Codex assistance. Apache-2.0. +""" +import argparse +from collections import Counter +from copy import deepcopy +from fractions import Fraction +from hashlib import sha256 +from itertools import combinations, product +import json +from pathlib import Path + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parent.parent +WITNESS = "research/p104-native-channel/inputs/LOWRANK-WITNESS.json" +FIXTURE = "research/p104-native-channel/inputs/P104-FIXTURE.json" + + +class Invalid(ValueError): + pass + + +def require(condition, message): + if not condition: + raise Invalid(message) + + +def span(generators): + values = {0} + for b in generators: + require(type(b) is int and 0 <= b < 512, "invalid binary vector") + values.update(x ^ b for x in tuple(values)) + return frozenset(values) + + +def dim(frame): + require(len(frame) & (len(frame) - 1) == 0, "invalid subspace size") + return len(frame).bit_length() - 1 + + +def add_row(dst, src, coefficient): + for k, value in src.items(): + changed = dst.get(k, Fraction(0)) + coefficient * value + if changed: + dst[k] = changed + else: + dst.pop(k, None) + + +def read_inputs(): + pins = json.loads((HERE / "SOURCES.json").read_text()) + inputs = {} + for pin in pins["files"]: + if pin["usage"] == "input": + raw = (ROOT / pin["path"]).read_bytes() + require(sha256(raw).hexdigest() == pin["sha256"], "source hash mismatch") + inputs[pin["path"]] = json.loads(raw) + require(set(inputs) == {WITNESS, FIXTURE}, "input inventory mismatch") + return inputs[WITNESS], inputs[FIXTURE] + + +def gram_matrix(fixture): + # Doubled coordinates of the 120 canonically oriented E8 root lines. + roots = [] + for a, b in combinations(range(8), 2): + for sign in (-2, 2): + row = [0] * 8 + row[a], row[b] = 2, sign + roots.append(tuple(row)) + roots.extend((1,) + signs for signs in product((-1, 1), repeat=7) + if sum(s < 0 for s in signs) % 2 == 0) + puncture = fixture["section4_explicit_P104"] + removed = {tuple(x) for x in puncture["F0"] + puncture["C"]} + require(len(set(roots)) == 120 and len(removed) == 16 and removed <= set(roots), + "invalid root fixture") + ports = sorted(set(roots) - removed) + require(len(ports) == 104, "port count") + return [[Fraction(sum(x * y for x, y in zip(r, s)), 4) for s in ports] + for r in ports] + + +def source_paths(word): + histories = {r: [(0, span(b))] for r, b in word["initial_frames"].items() + if r.startswith(("X", "Y"))} + for index, event in enumerate(word["program"]): + if event[0] == "transport" and event[1] in histories: + _, r, before, after, rank = event + a, b = span(before), span(after) + require(histories[r][-1][1] == a and a < b, "data path not nested") + require(type(rank) is int and rank == dim(b) - dim(a), "path rank mismatch") + histories[r].append((index + 1, b)) + return histories + + +def acquisition_certificate(paths, gram): + """Check the premises of the README's source-causal-path argument.""" + target = paths["Y0"] + endpoint = target[-1][1] + require(dim(endpoint) == 8 and all(f <= endpoint for _, f in target), "target path") + support = [s for s in range(104) if Fraction(s == 0) - gram[0][s] / 2] + require(len(support) == 48, "correction support") + seen, witnesses = set(), [] + for s in support: + path = paths[f"X{s}"] + line = path[0][1] + require(dim(line) == 1 and line <= endpoint, "source initial line") + q = next(x for x in line if x) + require(q not in seen, "repeated source line") + seen.add(q) + require(len(path) >= 2 and not path[1][1] <= endpoint, "source can expand inside target") + require(all(not f <= endpoint for _, f in path[1:]), "source returns inside target") + require(all(line != f for _, f in target), "direct source-target contact") + witnesses.append({"source": s, "label": q, + "first_transport_event": path[1][0] - 1, + "escape_vector": min(path[1][1] - endpoint)}) + require(support == [s for s in range(104) + if paths[f"X{s}"][0][1] <= endpoint], "support/frame binding") + return support, witnesses + + +def check_cover(candidate, paths, support): + require(candidate["schema_version"] == 1 and candidate["target"] == 0, "candidate scope") + require(candidate["cover_normals"] == [1, 4], "cover normals changed") + h = paths["Y0"][-1][1] + rooms = [frozenset(v for v in h if (v & n).bit_count() % 2 == 0) + for n in candidate["cover_normals"]] + require(all(dim(k) == 7 for k in rooms) and rooms[0] != rooms[1], "invalid cover rooms") + groups = candidate["groups"] + require(len(groups) == 2 and all(len(g) == 24 for g in groups), "group sizes") + require(sorted(groups[0] + groups[1]) == support, "group source partition") + for group, room in zip(groups, rooms): + require(all(paths[f"X{s}"][0][1] <= room for s in group), "source outside cover room") + expected = {f"N{s}" for s in support} + require(set(candidate["initial_frames"]) == set(candidate["final_frames"]) == expected, + "helper inventory") + require(all(span(b) == {0} for b in candidate["initial_frames"].values()), "helper entrance") + require(all(len(span(b)) == 512 for b in candidate["final_frames"].values()), "helper exit") + return rooms + + +def splice(word, candidate): + require(not set(word["initial_frames"]) & set(candidate["initial_frames"]), "register alias") + require([b["completed_cut"] for b in candidate["insertions"]] == [0, 3467], "insertion cuts") + require(word["program"][3466][0:2] == ["transport", "Y0"], "delivery cut binding") + initial = dict(word["initial_frames"], **candidate["initial_frames"]) + final = dict(word["final_frames"], **candidate["final_frames"]) + by_cut = {b["completed_cut"]: b["events"] for b in candidate["insertions"]} + program = [] + for cut in range(len(word["program"]) + 1): + program.extend((True, e) for e in by_cut.get(cut, [])) + if cut < len(word["program"]): + program.append((False, word["program"][cut])) + return initial, final, program + + +def replay(initial, final, program, restricted=False): + """Sparse Fraction rows on every independent input, including helper dirt.""" + frames = {r: span(b) for r, b in initial.items()} + rows = {r: {r: Fraction(1)} for r in initial} + profile, additions, coeffs = Counter(), 0, Counter() + arrivals, writers = [], [] + endpoint = span(final["Y0"]) + for added, event in program: + op = event[0] + if added and restricted: + require(op in {"add", "transport"}, "forbidden added operation") + if op == "add": + _, dst, src, coefficient, chart = event + require(dst != src and dst in rows and src in rows, "invalid ADD operands") + require(frames[dst] == frames[src] == span(chart), "ADD frame mismatch") + require(not dst.startswith("X") and not src.startswith("Y"), "X/Y direction violation") + if added and restricted: + require(dst == "Y0" or dst.startswith("N"), "forbidden added destination") + require(src.startswith(("X", "N")), "forbidden added source") + c = Fraction(coefficient) + add_row(rows[dst], rows[src], c) + if added: + additions += 1 + coeffs[str(c)] += 1 + if dst == "Y0" and frames[dst] == endpoint: + writers.append(src) + elif op == "transport": + _, reg, before, after, rank = event + a, b = span(before), span(after) + require(reg in frames and frames[reg] == a, "transport entrance mismatch") + require(a < b or b < a, "transport not strictly nested") + require(type(rank) is int and rank == abs(dim(b) - dim(a)), "transport rank mismatch") + if added: + require(reg.startswith("N") and a < b, "added transport not monotone helper") + profile[rank] += 1 + if b == endpoint: + arrivals.append(reg) + frames[reg] = b + elif op == "zero": + _, reg, chart = event + require(reg == "C" and reg not in frames, "private allocation") + frames[reg], rows[reg] = span(chart), {} + elif op == "copy": + _, dst, src, chart = event + require(dst == "C" and not rows[dst], "private copy destination") + require(frames[dst] == frames[src] == span(chart), "COPY frame mismatch") + rows[dst] = dict(rows[src]) + elif op == "erase": + _, reg, chart = event + require(reg == "C" and frames[reg] == span(chart), "private discard") + del frames[reg], rows[reg] + else: + raise Invalid("unknown operation") + require(frames == {r: span(b) for r, b in final.items()}, "final frames differ") + return rows, {"paid_profile": dict(sorted(profile.items())), + "rank_mass": sum(r * n for r, n in profile.items()), + "transports": sum(profile.values()), "scalar_additions": additions, + "scalar_coefficients": dict(sorted(coeffs.items())), + "endpoint_arrivals": arrivals, "endpoint_writers": writers} + + +def check_endpoint(rows, initial, gram, corrected): + require(set(rows) == set(initial), "final inventory differs") + for reg in initial: + expected = {reg: Fraction(1)} + if reg.startswith("Y"): + t = int(reg[1:]) + for s in range(104): + c = Fraction(t == s) if corrected and t == 0 else gram[t][s] / 2 + if c: + expected[f"X{s}"] = c + require(rows[reg] == expected, "endpoint mismatch: " + reg) + + +def run_candidate(word, candidate, gram): + initial, final, program = splice(word, candidate) + rows, invoice = replay(initial, final, program, restricted=True) + check_endpoint(rows, initial, gram, True) + return rows, invoice + + +def expect_rejection(fn, prefix): + try: + fn() + except Invalid as exc: + require(str(exc).startswith(prefix), "unexpected control failure: " + str(exc)) + return + raise Invalid("control accepted: " + prefix) + + +def controls(word, candidate, gram, paths, support): + out = [] + for label, predicate in [ + ("missing_initial_dirty_compensation", lambda e: e[:3] == ["add", "Y0", "N2"] and e[4] == []), + ("missing_source_capture", lambda e: e[:3] == ["add", "N2", "X2"] and e[4] == [228]), + ("missing_dirty_unmerge", lambda e: e[:4] == ["add", "N2", "N4", -1]), + ("missing_source_cleanup", lambda e: e[:3] == ["add", "N4", "X4"] and e[4] == list(1 << j for j in range(9))), + ]: + bad = deepcopy(candidate) + matches = [(block, i) for block in bad["insertions"] + for i, e in enumerate(block["events"]) if predicate(e)] + require(len(matches) == 1, "ambiguous omission control") + block, index = matches[0] + block["events"].pop(index) + expect_rejection(lambda: run_candidate(word, bad, gram), "endpoint mismatch") + out.append(label) + bad = deepcopy(candidate) + event = next(e for b in bad["insertions"] for e in b["events"] if e[:3] == ["add", "N2", "X2"]) + event[2] = "X4" + expect_rejection(lambda: run_candidate(word, bad, gram), "ADD frame mismatch") + out.append("wrong_source_frame") + bad = deepcopy(candidate) + event = next(e for b in bad["insertions"] for e in b["events"] if e[0] == "transport") + event[4] += 1 + expect_rejection(lambda: run_candidate(word, bad, gram), "transport rank mismatch") + out.append("wrong_transport_invoice") + # Test timing semantically, bypassing splice's fixed-cut schema check. + initial, final, _ = splice(word, candidate) + misplaced = [(True, e) for e in candidate["insertions"][0]["events"]] + misplaced += [(False, e) for e in word["program"][:3466]] + misplaced += [(True, e) for e in candidate["insertions"][1]["events"]] + misplaced += [(False, e) for e in word["program"][3466:]] + expect_rejection(lambda: replay(initial, final, misplaced, True), "ADD frame mismatch") + out.append("delivery_one_original_event_early") + bad_paths = deepcopy(paths) + bad_paths["X2"][1] = (bad_paths["X2"][1][0], span([228, 196])) + expect_rejection(lambda: acquisition_certificate(bad_paths, gram), "source can expand inside target") + out.append("source_expansion_inside_endpoint") + bad = deepcopy(candidate) + bad["groups"][0][0], bad["groups"][1][0] = bad["groups"][1][0], bad["groups"][0][0] + expect_rejection(lambda: check_cover(bad, paths, support), "source outside cover room") + out.append("wrong_hyperplane_assignment") + relaxed_source_path_control() + out.append("positive_relaxed_source_paths_one_helper_two_sources") + return out + + +def relaxed_source_path_control(): + """Labels alone do not force the acquisition bound.""" + initial = {"X0": [1], "X1": [2], "Y0": [], "N0": []} + final = {r: [1, 2] for r in initial} + events = [["add", "Y0", "N0", -1, []], + ["transport", "X0", [1], [1, 2], 1], + ["transport", "X1", [2], [1, 2], 1], + ["transport", "N0", [], [1, 2], 2], + ["add", "N0", "X0", 1, [1, 2]], + ["add", "N0", "X1", 1, [1, 2]], + ["transport", "Y0", [], [1, 2], 2], + ["add", "Y0", "N0", 1, [1, 2]], + ["add", "N0", "X0", -1, [1, 2]], + ["add", "N0", "X1", -1, [1, 2]]] + rows, _ = replay(initial, final, [(False, e) for e in events]) + require(rows["Y0"] == {"Y0": 1, "X0": 1, "X1": 1}, "relaxed source positive endpoint") + require(rows["N0"] == {"N0": 1}, "relaxed source positive restoration") + + +def calculate(): + word, fixture = read_inputs() + candidate = json.loads((HERE / "CIRCUIT.json").read_text()) + require(candidate["source_witness_sha256"] == sha256((ROOT / WITNESS).read_bytes()).hexdigest(), + "candidate source binding") + gram = gram_matrix(fixture) + paths = source_paths(word) + support, witnesses = acquisition_certificate(paths, gram) + rooms = check_cover(candidate, paths, support) + baseline, _ = replay(word["initial_frames"], word["final_frames"], + [(False, e) for e in word["program"]]) + check_endpoint(baseline, word["initial_frames"], gram, False) + rows, invoice = run_candidate(word, candidate, gram) + require(invoice["paid_profile"] == {1: 52, 2: 46, 6: 48}, "unexpected added profile") + require(invoice["scalar_additions"] == 238 and invoice["rank_mass"] == 432, + "unexpected added invoice") + require(invoice["endpoint_arrivals"] == invoice["endpoint_writers"] == ["N2", "N7"], + "two-arrival contract") + baseline_profile = Counter(e[4] for e in word["program"] if e[0] == "transport") + combined_profile = baseline_profile + Counter(invoice["paid_profile"]) + require(sum(r * n for r, n in baseline_profile.items()) == 2368, "baseline rank mass") + serialized_rows = {r: {k: str(v) for k, v in sorted(row.items())} + for r, row in sorted(rows.items())} + return {"schema_version": 1, "status": "PASS_P104_Y0_SOURCE_ACQUISITION", + "scope": "Sharp 48-lifetime Y0 acquisition bound in the stated monotone model; local common-chart word only; no supplier or kappa claim.", + "target": 0, "minimum_helper_lifetimes": 48, + "source_support": support, "source_escape_witnesses": witnesses, + "target_frame_cuts": [cut for cut, _ in paths["Y0"]], + "cover_normals": [1, 4], "cover_dimensions": [dim(k) for k in rooms], + "groups": candidate["groups"], "added_invoice": invoice, + "combined_paid_profile": dict(sorted(combined_profile.items())), + "combined_rank_mass": sum(r * n for r, n in combined_profile.items()), + "combined_events": len(word["program"]) + sum(len(b["events"]) for b in candidate["insertions"]), + "baseline_input_columns": len(word["initial_frames"]), "candidate_input_columns": len(rows), + "full_endpoint_sha256": sha256(json.dumps(serialized_rows, sort_keys=True, + separators=(",", ":")).encode()).hexdigest(), + "controls": controls(word, candidate, gram, paths, support)} + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--out", type=Path, help="write the verified receipt exclusively to a new file") + args = parser.parse_args() + result = calculate() + payload = json.dumps(result, indent=2, sort_keys=True) + "\n" + require(json.loads(payload) == json.loads((HERE / "RESULT.json").read_text()), "receipt mismatch") + if args.out: + with args.out.open("x", encoding="utf-8") as f: + f.write(payload) + print("PASS_P104_Y0_SOURCE_ACQUISITION lifetimes=48 arrivals=2 columns=328 added_rank=432 added_ADD=238 controls=10 no_new_kappa") + + +if __name__ == "__main__": + try: + main() + except (Invalid, OSError, KeyError, TypeError, ValueError) as exc: + raise SystemExit("FAIL: " + str(exc)) from exc