Kevin Crutt commited on
Commit
c0a9fba
·
1 Parent(s): 5451432

liris: tighten Brown-Hilbert decimal shape proof

Browse files
docs/LIRIS-BHX-EXPANSION-CATCH33-PATCH-2026-06-11.hbp ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ LIRISBHXC33HDR|host=liris|date=2026-06-11|topic=Brown-Hilbert-expansion-decimal-shape-proof-tightening|responds_to=acer-catch-33|base_commit=5451432|json=0
2
+ LIRISBHXC33CONCEDE|acer_catch=CONFIRMED_REAL_AND_KEPT|old_check=length+first-char-1+no-second-1|gap=necessary-not-sufficient-because-stray-nonzero-non1-digit-in-tail-would-pass|example=1-then-99zeros-then-7-then-100zeros-passed-old-check-fails-full-shape|json=0
3
+ LIRISBHXC33PATCH|file=tools/behcs/brown-hilbert-expansion-stress.mjs|fix=isDecimalPowerString-single-pass-scan-requires-length-exponent-plus-one+first-char-1+every-tail-char-zero|complexity=O(decimal-digits)-same-order-as-existing-toString+hash|json=0
4
+ LIRISBHXC33TEST|file=tests/brown-hilbert-expansion-stress.unit.test.mjs|added=corrupt-tail-7+second-1+short-length-negative-cases|prevents_regression=old-lastIndexOf-1-only-check-cannot-return|json=0
5
+ LIRISBHXC33VERDICT|original_10min_receipt_status=STILL_VALID_BY_CONSTRUCTION(base-was-10n-power-BigInt-exponent)|proof_label_status=PATCHED_FOR_FUTURE_RUNS|rerun_10min_required=0|reason=catch-attacked-check-sufficiency-not-observed-receipt-values|json=0
6
+ LIRISBHXC33BOUNDARY|claim=address-coordinate-invariants-tested-NOT-enumeration|unchanged=1|max_exponent_verified_in_prior_receipt=100000000|json=0
docs/LIRIS-BHX-EXPANSION-CATCH33-PATCH-2026-06-11.hbp.sha256 ADDED
@@ -0,0 +1 @@
 
 
1
+ 55766F6E803B1F12F002B827CD78E63A7B34106BE9D33FBE00928A43D4C6EBD7 LIRIS-BHX-EXPANSION-CATCH33-PATCH-2026-06-11.hbp
tests/brown-hilbert-expansion-stress.unit.test.mjs CHANGED
@@ -3,6 +3,7 @@ import test from 'node:test';
3
 
4
  import {
5
  DEFINITION_ROWS,
 
6
  runExpansionStress,
7
  } from '../tools/behcs/brown-hilbert-expansion-stress.mjs';
8
 
@@ -21,3 +22,10 @@ test('brown hilbert expansion stress can prove beyond 1e200 in a tiny run', () =
21
  assert.ok(rows.at(-1).includes('beyond_1e200=1'));
22
  assert.ok(rows.every((row) => row.endsWith('json=0')));
23
  });
 
 
 
 
 
 
 
 
3
 
4
  import {
5
  DEFINITION_ROWS,
6
+ isDecimalPowerString,
7
  runExpansionStress,
8
  } from '../tools/behcs/brown-hilbert-expansion-stress.mjs';
9
 
 
22
  assert.ok(rows.at(-1).includes('beyond_1e200=1'));
23
  assert.ok(rows.every((row) => row.endsWith('json=0')));
24
  });
25
+
26
+ test('decimal power proof rejects nonzero tail digits, not just second ones', () => {
27
+ assert.equal(isDecimalPowerString(`1${'0'.repeat(200)}`, 200), true);
28
+ assert.equal(isDecimalPowerString(`1${'0'.repeat(99)}7${'0'.repeat(100)}`, 200), false);
29
+ assert.equal(isDecimalPowerString(`1${'0'.repeat(99)}1${'0'.repeat(100)}`, 200), false);
30
+ assert.equal(isDecimalPowerString(`1${'0'.repeat(199)}`, 200), false);
31
+ });
tests/brown-hilbert-expansion-stress.unit.test.mjs.sha256 CHANGED
@@ -1 +1 @@
1
- CA9D793DD9308D2DDEBD57833023B1E76FC3A4A8517E7E95D8819A7EAE86B673 brown-hilbert-expansion-stress.unit.test.mjs
 
1
+ DD6166272EE50E570800B6974B94F9A054F955183A330279F7B849CB4FBDBBBC brown-hilbert-expansion-stress.unit.test.mjs
tests/supervisor-collision-router.system.test.mjs CHANGED
@@ -76,6 +76,7 @@ const sealedFiles = [
76
  'docs/ACER-LOGICAL-EXTREME-STRESS-CUBE-FEED-2026-06-11.hbp',
77
  'docs/LOGICAL-EXTREME-STRESS-CUBE-FEED-2026-06-11.hbp',
78
  'docs/BROWN-HILBERT-EXPANSION-STRESS-2026-06-11.hbp',
 
79
  'docs/LIRIS-FROZEN-SLICE-PREIMAGE-READBACK-2026-06-11.hbp',
80
  'docs/LIRIS-QUANT-HUGE-MESSAGE-BENCH-READBACK-2026-06-11.hbp',
81
  'docs/LIRIS-FROZEN-SLICE-REBIND-READBACK-2026-06-11.hbp',
 
76
  'docs/ACER-LOGICAL-EXTREME-STRESS-CUBE-FEED-2026-06-11.hbp',
77
  'docs/LOGICAL-EXTREME-STRESS-CUBE-FEED-2026-06-11.hbp',
78
  'docs/BROWN-HILBERT-EXPANSION-STRESS-2026-06-11.hbp',
79
+ 'docs/LIRIS-BHX-EXPANSION-CATCH33-PATCH-2026-06-11.hbp',
80
  'docs/LIRIS-FROZEN-SLICE-PREIMAGE-READBACK-2026-06-11.hbp',
81
  'docs/LIRIS-QUANT-HUGE-MESSAGE-BENCH-READBACK-2026-06-11.hbp',
82
  'docs/LIRIS-FROZEN-SLICE-REBIND-READBACK-2026-06-11.hbp',
tests/supervisor-collision-router.system.test.mjs.sha256 CHANGED
@@ -1 +1 @@
1
- A837695BF8A5D4E63090587FCD208FD10715660931C205668CABFCEC2A3D8EDC supervisor-collision-router.system.test.mjs
 
1
+ 2E134C5D6CA8FFB872D0BCF4D944534D33A97510A494C91BF0532487FE0BC95B supervisor-collision-router.system.test.mjs
tools/behcs/brown-hilbert-expansion-stress.mjs CHANGED
@@ -54,6 +54,14 @@ function snapshot() {
54
  return { rss: m.rss, heap: m.heapUsed, external: m.external };
55
  }
56
 
 
 
 
 
 
 
 
 
57
  function verifyDecimalPower(base, exponent) {
58
  const s = base.toString();
59
  return {
@@ -61,7 +69,7 @@ function verifyDecimalPower(base, exponent) {
61
  prefix: s.slice(0, 8),
62
  suffix: s.slice(-8),
63
  sha16: sha16(s),
64
- ok: s.length === exponent + 1 && s[0] === '1' && s.lastIndexOf('1') === 0,
65
  };
66
  }
67
 
 
54
  return { rss: m.rss, heap: m.heapUsed, external: m.external };
55
  }
56
 
57
+ export function isDecimalPowerString(s, exponent) {
58
+ if (typeof s !== 'string' || s.length !== exponent + 1 || s[0] !== '1') return false;
59
+ for (let i = 1; i < s.length; i += 1) {
60
+ if (s.charCodeAt(i) !== 48) return false;
61
+ }
62
+ return true;
63
+ }
64
+
65
  function verifyDecimalPower(base, exponent) {
66
  const s = base.toString();
67
  return {
 
69
  prefix: s.slice(0, 8),
70
  suffix: s.slice(-8),
71
  sha16: sha16(s),
72
+ ok: isDecimalPowerString(s, exponent),
73
  };
74
  }
75
 
tools/behcs/brown-hilbert-expansion-stress.mjs.sha256 CHANGED
@@ -1 +1 @@
1
- 2D14622AE834E33E6F5DF80654288F6BDB2BDEA9A308AB28F7A54FA3B0B6F6AA brown-hilbert-expansion-stress.mjs
 
1
+ 0EB1891EEB2A454936927E4FABE386A58B886F69244D91DF8487152F64B381DC brown-hilbert-expansion-stress.mjs