From 0d8880e38ed7c88d70eec6a48e5aa829d0fb22f3 Mon Sep 17 00:00:00 2001 From: Cinna Davis Date: Sun, 18 Oct 2026 21:38:56 -0500 Subject: [PATCH] Add exact QQ16 consumer budget audit --- .../PR3181-README.md.gz | Bin 0 -> 8657 bytes research/qq16-consumer-cap-audit/README.md | 90 +++++++++ research/qq16-consumer-cap-audit/SOURCES.json | 42 +++++ research/qq16-consumer-cap-audit/TARGET.json | 33 ++++ research/qq16-consumer-cap-audit/TASK.json | 119 ++++++++++++ research/qq16-consumer-cap-audit/VERIFY.json | 24 +++ research/qq16-consumer-cap-audit/verify.py | 171 ++++++++++++++++++ 7 files changed, 479 insertions(+) create mode 100644 research/qq16-consumer-cap-audit/PR3181-README.md.gz create mode 100644 research/qq16-consumer-cap-audit/README.md create mode 100644 research/qq16-consumer-cap-audit/SOURCES.json create mode 100644 research/qq16-consumer-cap-audit/TARGET.json create mode 100644 research/qq16-consumer-cap-audit/TASK.json create mode 100644 research/qq16-consumer-cap-audit/VERIFY.json create mode 100644 research/qq16-consumer-cap-audit/verify.py diff --git a/research/qq16-consumer-cap-audit/PR3181-README.md.gz b/research/qq16-consumer-cap-audit/PR3181-README.md.gz new file mode 100644 index 0000000000000000000000000000000000000000..14779caff5262387a6fb42e284f94524b8c66550 GIT binary patch literal 8657 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 1, reducing to [1, 2).""" + require(x >= 1, 'log ratio must be at least one') + k = 0 + while x >= 2: + x /= 2 + k += 1 + return k * ln_unit_lower(Q(2)) + ln_unit_lower(x) + + +def exp_lower(x, terms=5): + """Positive Taylor partial sum, hence a lower bound for exp(x), x >= 0.""" + require(x >= 0, 'exponential argument must be nonnegative') + return sum(x**j / factorial(j) for j in range(terms)) + + +def child_cost_lower(rank, m, a): + require(0 < rank < m, 'child rank outside local range') + return Q(rank, m) * exp_lower(a * ln_ratio_lower(Q(m, rank))) + + +def derive_profile(f_profile, b_profile, decoder_children, calls=2): + require(calls > 0 and decoder_children % calls == 0, 'uneven decoder split across calls') + profile = {} + for key in set(f_profile) | set(b_profile): + rank = int(key) + profile[rank] = (Q(f_profile.get(str(rank), 0)) + Q(b_profile.get(str(rank), 0))) / calls + profile[1] = profile.get(1, Q(0)) + Q(decoder_children, calls) + return {r: n for r, n in profile.items() if n} + + +def moment_lower(profile, m, w, centre, idle_rank, unpaid=1): + require(2 * idle_rank * idle_rank < m * m, 'idle rank cap violates the halving guard') + total = (m - unpaid) * w + centre + local_mass = sum(Q(r) * Q(n) for r, n in profile.items()) + idle_mass = total - local_mass + require(idle_mass >= 0, 'local word pays more mass than coverage law allows') + local = sum(Q(n) * child_cost_lower(r, m, selected_a) for r, n in profile.items()) + idle = idle_mass / idle_rank * child_cost_lower(idle_rank, m, selected_a) + return (local + idle) / w, total, local_mass, idle_mass + + +selected_a = Q(836330098538459, 499163669901461541) + + +def main(): + selected_raw = pinned_bytes('certificates/selected-result.json') + ceiling_raw = pinned_bytes('research/complex-local-word-ceiling/RESULT.json') + ceiling_code = pinned_bytes('research/complex-local-word-ceiling/ceiling.py') + producer_raw = pinned_bytes('research/joint-query/evidence/CONSERVED-QQ16.json') + decoder_raw = pinned_bytes('research/qq16-line-normalized-decoder/RESULT.json') + selected = json.loads(selected_raw) + ceiling = json.loads(ceiling_raw) + producer = json.loads(producer_raw) + decoder = json.loads(decoder_raw) + target = json.loads((PACKAGE / 'TARGET.json').read_text()) + + require(selected['kappa'] == '836330098538459/500000000000000000', 'selected kappa pin') + require(ceiling['status'] == 'PASS_COMPLEX_LOCAL_WORD_CEILING', 'ceiling source status') + model = ceiling['model'] + require((model['m'], model['stages'], model['centre_per_call'], model['idle_rank_cap']) == (73, 9, 64, 51), 'selected coverage model') + require(Q(model['live_families_per_call']) == Q(896, 9), 'live families per call') + require('non-increasing in r' in ceiling_code.decode(), 'pinned ceiling argument source') + require('2 * R * R < m * m' in ceiling_code.decode(), 'pinned halving guard source') + + claim = target['audited_claim'] + source = target['source'] + external = gzip.decompress((PACKAGE / source['local_archive']).read_bytes()) + require(source['pr'] == 3181 and source['state_at_check'] == 'OPEN', 'PR state premise') + require(source['head'] == '80fc72d14546088e9fce3c06dc12bc67270da0af', 'PR head premise') + require(git_blob(external) == source['git_blob'], 'external PR README Git blob mismatch') + require(sha256(external).hexdigest() == source['sha256'], 'external PR README SHA256 mismatch') + external_text = external.decode() + require('`{1: 2596, 2: 418, 3: 432, 4: 142, 5: 82, 8: 8}`' in external_text, 'PR profile text premise') + require('`0.001631159602`' in external_text and '`centre = 64`' in external_text, 'PR cap/coverage text premise') + require(claim['producer_pair_calls'] == 2 and claim['decoder_rank_one_children_per_pair'] == 336, 'PR pair/decoder premise') + require(claim['coverage'] == {'m': 73, 'families_per_nine_stage_replica': 896, 'stages': 9, 'centre_per_call': 64, 'idle_rank_cap': 51}, 'PR coverage premise') + + f_profile = producer['invoices']['F']['native_profile'] + b_profile = producer['invoices']['B']['native_profile'] + child_count = decoder['invoice']['rank_one_children'] + require(decoder['events'] == 3823 and child_count == claim['decoder_rank_one_children_per_pair'], 'decoder count pin') + require(producer['native_cases']['B_1_2']['added_rank1_children'] == 24, 'selected B1_2 producer case') + derived = derive_profile(f_profile, b_profile, child_count, calls=claim['producer_pair_calls']) + full = dict(derived) + full[8] = Q(claim['reported_profile_per_call']['8']) + reported = {int(r): Q(n) for r, n in claim['reported_profile_per_call'].items()} + require(full == reported, f"reconstructed profile mismatch: {full}") + + # Remove the eight rank-eight children and give their 64 mass units to the + # most favorable permitted idle rank. This can only lower the moment because + # (r/m)^(1-a)/r decreases with rank for a >= 0. + relaxed = {r: n for r, n in full.items() if r != 8} + moment, total, local_mass, idle = moment_lower(relaxed, 73, Q(896, 9), 64, 51) + require((total, local_mass, idle) == (Q(7232), Q(5706), Q(1526)), 'centre-64 coverage mass') + require(moment > Q(100009, 100000), 'selected exponent is not excluded with margin') + + full_moment, _, _, _ = moment_lower(full, 73, Q(896, 9), 64, 51) + require(full_moment > moment, 'dropping rank-eight children must be favorable') + no_centre, _, _, _ = moment_lower(relaxed, 73, Q(896, 9), 0, 51) + require(no_centre < 1, 'centre-free law must remain outside the proved obstruction') + + try: + moment_lower(relaxed, 73, Q(896, 9), 64, 52) + except ValueError as exc: + require('halving guard' in str(exc), 'wrong illegal-rank failure') + else: + raise ValueError('rank-52 idle child incorrectly accepted') + try: + derive_profile(f_profile, b_profile, 335, calls=2) + except ValueError as exc: + require('uneven decoder split' in str(exc), 'wrong uneven-split failure') + else: + raise ValueError('uneven decoder split incorrectly accepted') + + print(json.dumps({ + 'status': 'PASS_QQ16_CONSUMER_CAP_BELOW_SELECTED no_new_kappa', + 'selected_a': str(selected_a), + 'relaxed_profile': {str(r): str(n) for r, n in sorted(relaxed.items())}, + 'coverage_mass': {'total': str(total), 'local': str(local_mass), 'idle': str(idle)}, + 'checked_strictly_above': '100009/100000', + 'display_decimal': f'{float(moment):.15f}', + 'rank8_profile_lower_bound_decimal': f'{float(full_moment):.15f}', + 'centre_free_control_decimal': f'{float(no_centre):.15f}', + 'external_pr_source': {'head': source['head'], 'blob': source['git_blob'], 'sha256': source['sha256']} + }, indent=2, sort_keys=True)) + + +if __name__ == '__main__': + main()