Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
183 changes: 183 additions & 0 deletions research/h-boundary-budget/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,183 @@
# The p3 H branch: exact boundary budget and three closed decoder routes

**Negative result, no new κ.** zxv's H branch of
[PR4359](https://github.com/CrocSwap/integer-mult-bounds/pull/4359) replaces the
local response by an involution `H = I + BC` (`CB = -2I`). Its raw rank surplus
is far above the current frontier, but the noncommuting p3 controller leaves three
interval endpoints of the form `Q K Q`. Their direct correction costs 672
rank-one requests in complex and 666 in BIT, more than the whole surplus.
[PR4431](https://github.com/CrocSwap/integer-mult-bounds/pull/4431) closed
completion-only fresh inverses. This package asks how much a corrected boundary
may cost and which decoders cannot meet that price.

## 1. Exact budget at the selected conditional κ

Each rank-one call has weight exactly 1 in the moment at every saving `s`, so
the largest affordable boundary bill is the certified moment of the uncorrected
profile. The profiles are the retained ones: complex
`controller_tariff.geometry(3, 43)` with kernel H, surplus 616, and BIT with
the three-row minimum completion, surplus 645 = 603 + 42.

| Saving | complex budget | BIT budget |
|---|---:|---:|
| 0.0023 | 392 | 456 |
| **0.00302015** (#4470) | **322** | **397** |
| 0.004 | 228 | 317 |

Saving roots for each boundary bill (certified brackets in `RESULT.json`):

| Boundary bill | complex | BIT |
|---|---:|---:|
| free | 0.0063799 | 0.0079333 |
| one shared head conjugation (224 / 222) | **0.0040422** | 0.0051761 |
| two (448 / 444) | 0.0017248 | 0.0024471 |
| direct, three (672 / 666) | negative at s = 0 | negative at s = 0 |

So a corrected H branch beats the frontier only if all three endpoints are
repaired for at most 322 complex requests, roughly 1.44 head conjugations.
These are raw rank screens. Outer rows, tails, compiler gates and the scalar and
movement costs of a new decoder are not included, so they are ceilings.

## 2. Whole-bank Q events cannot fit

One Q event on a complete bank costs 112 complex requests, so the budget admits
at most two (`224 <= 322 < 336`). PR4359's `universal_two_query_screen` already
shows that two complete-bank events give a coefficient span of at most 1 against
the required 3. Even three events would cost 336 and give a complex root near
0.0029, below the frontier.

## 3. Port subsets cannot be skipped

For the native H112, `rank(H - I) = 8` exactly, but all 112 rows and all 112
columns of `H - I` are nonzero. Every interval product `K` therefore moves data
on every port, so a correction touching only part of a bank leaves a nonzero
`Q`-dependent block.

## 4. Gather decoders through the rank-8 bottleneck cost at least the direct bill

The low rank suggests compressing: since `Q^2 = I`,

```
Q K Q - K = Q M Q - M, M = K - I,
```

and `M` factors through 8 fields per stage. This fails for an elementary reason.
On port `p`, `Q` is one rank-one request along that port's own line `q_p`. Two
ports' requests can be merged by linearity only when their lines agree, because a
request along `q_p` and a request along `q_r` are different transforms. The
stage routes (`rho`, `Gamma_s`) fix each port's line, and the commutation
`[H_s, Q b_s] = 0` only provides the full call `Q b_s` on the compressed side.

The data leave no room:

| | complex | BIT |
|---|---:|---:|
| ports | 112 | 111 |
| distinct query lines | **112** | **111** |
| ports touched by `H - I` | 112 | (not computed) |

Computing `M (Q w)` for an arbitrary input therefore needs one request on every
port that `M` reads: 112. Writing `Q (M ...)` back needs one on every port that
`M` writes: another 112. The three bad roles have independent inputs, and a
request on a sum cannot be separated afterwards. Any decoder of this kind,
meaning free scalars and routes plus rank-one requests applied to linear
combinations, costs at least `3 * 2 * 112 = 672`, which is exactly the direct
bill. The direct correction is optimal within this class.

**Scope.** This is a lower bound for linear gather decoders at fixed H112, fixed
owners and the fixed p3 controller. It is not a theorem about every possible
algorithm. A construction that changes the local family, sends several ports'
lines to a shared line before the request, or changes the controller is outside
it.

## 5. No controller of this family has fewer Q-conjugated roles

The verifier enumerates the free noncommuting controller of
`bit/pr589_h_global_probe.py` for p = 1..4 and every idle keep mask. It keeps
those that diagonalize exactly with parity-preserving (Q-free) boundaries:
2, 3, 8 and 20 controllers. **Every one has exactly p roles ending as `Q K Q`
with nonempty K.** Each local call stamps its stage letter on both streams of
its pair, so the odd (Q-carrying) stream always has a nonempty word. The
p3 keep-43 controller reproduces the probe's parity `[0,1,0,1,1,0]`.

The H surplus of `mixed_forest_search.verify` is `224p - 8(2p+1)` (616 for
p = 3). A direct repair costs 224 per bad role, so after it

```
224p - 8(2p+1) - 224p = -8(2p+1) < 0 for every p.
```

Each pair brings exactly as much rank credit as its own endpoint repair costs.
Changing p or the idle mask cannot fund the direct boundary. Section 6 shows
that shared query lines do not help either.

## 6. Shared query lines do not escape either bound

Sections 4 and 5 left one escape: ports that share a query line. It closes as well.

The local call realizes the identity `I = K + BA`. The pair reads `K` act only on
pairs of ports whose F2 labels are orthogonal, and `BA` (rank `h`) is decoded
through `h` centres (compare the source construction in
`research/e8-direct-source/PROOF.md`). The verifier checks this on the native H112:
all 112 labels `q_p` are odd, and `J` has zero diagonal and vanishes on all
6,608 ordered non-orthogonal label pairs. A mutated even label is rejected.

Since `q.q = 1`, two ports with the same label are non-orthogonal. So `K` is zero
on any class of `m` copies, and `BA` restricted to that class is `I_m`. A free
rotation `X_p +- X_p'` inside the class keeps it `I_m`. Two consequences follow.

* `h` is at least the total multiplicity of any clique of non-orthogonal labels,
so `m` copies of E8 lines need `h >= 8m`. That is exactly the rank of `m`
independent copies of the unit.
* On a copy class, `H - I` equals `-I_m` up to the `h` completion rows. So a gather
decoder needs at least `V - h` requests on input and `V - h` on output. Exactly:
P112 needs 112 + 112, and the doubled unit (224 ports, 112 lines) needs 224 + 224,
which is 2 per port in both cases. Merging all ports into one class would need
only 8 + 8 (control), so the bound really comes from the labels.

For any unit with `V` ports, rank `h` and `p` pairs, the H surplus is
`2Vp - h(2p+1)` and the tails cost at least `2p(V - h)`:

```
2Vp - h(2p+1) - 2p(V - h) = -h < 0.
```

The H branch is unfunded whatever the line layout, shared or not, for every
local call of the form `I = K + BA`.

## Reproduce

```sh
python3.12 -B scripts/research_package.py --package research/h-boundary-budget --check-only
python3.12 -B scripts/research_package.py --package research/h-boundary-budget
```

`verify.py` uses only the standard library and imports the pinned
`research/kappa-rebuild` modules. Those modules expect `research/kappa-next-regime`
at the repository root; on main that tree is vendored under
`research/kappa-0023-productive-jobs/dependencies/kappa-next-regime`, and the
verifier adds that path. It runs in about 3.5 minutes on Windows / CPython 3.12.
Controls: a budget one above the certified value is certified negative, a
perturbed `H - I` is rejected, a duplicated query line is detected, the
p3 keep-43 controller reproduces the probe parity, an even label is rejected,
and a single merged class gives only rank 8.

## Open next questions

The structured versions are in `TASK.json`.

1. **A local call outside `I = K + BA`.** Section 6 closes shared query lines
for every unit of this form. An escape needs a local identity whose pair
reads are not tied to label orthogonality.
2. **A controller not built from Q-gauged pairs.** Section 5 closes controllers
with fewer Q-conjugated roles for p <= 4, since each pair's repair costs
exactly its credit. A different pair structure would be a new complex
supplier, not an H repair.

## Credit

The H construction, the endpoint obstruction, the retained profiles and
receipts are zxv's (PR4359, PR4431) together with their cited predecessors.
This package adds the budget, the root table, the native rank/support and
query-line counts, the gather argument, the controller parity census and the shared-line closure. Prepared by Matarener (Mark) with
substantial Claude Code assistance. Apache-2.0. No independent human review.
97 changes: 97 additions & 0 deletions research/h-boundary-budget/RESULT.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
{
"bit": {
"budget_at_record": 397,
"direct_correction": 666,
"one_shared_head": 222,
"raw_surplus": 645,
"roots": {
"0": {
"negative_at": "0.0079333535",
"positive_at": "0.0079333532"
},
"222": {
"negative_at": "0.0051761597",
"positive_at": "0.0051761594"
},
"444": {
"negative_at": "0.0024471107",
"positive_at": "0.0024471104"
}
}
},
"complex": {
"budget_at_record": 322,
"direct_correction": 672,
"one_shared_head": 224,
"raw_surplus": 616,
"roots": {
"0": {
"negative_at": "0.0063799044",
"positive_at": "0.0063799042"
},
"224": {
"negative_at": "0.0040422294",
"positive_at": "0.0040422291"
},
"448": {
"negative_at": "0.0017248836",
"positive_at": "0.0017248833"
}
}
},
"controller_parity": {
"1": {
"after_direct": -24,
"bad_roles": 1,
"gauge_compatible_controllers": 2,
"h_surplus": 200
},
"2": {
"after_direct": -40,
"bad_roles": 2,
"gauge_compatible_controllers": 3,
"h_surplus": 408
},
"3": {
"after_direct": -56,
"bad_roles": 3,
"gauge_compatible_controllers": 8,
"h_surplus": 616
},
"4": {
"after_direct": -72,
"bad_roles": 4,
"gauge_compatible_controllers": 20,
"h_surplus": 824
}
},
"native_H112": {
"nonzero_cols": 112,
"nonzero_rows": 112,
"ports": 112,
"rank_H_minus_I": 8
},
"new_kappa": false,
"query_lines": {
"bit_distinct_lines": 111,
"bit_ports": 111,
"complex_distinct_q": 112,
"complex_ports": 112
},
"record_kappa": "60403/20000000",
"schema": "h-boundary-budget/1",
"shared_lines": {
"net_after_tail_floor": "2Vp - h(2p+1) - 2p(V-h) = -h",
"nonorthogonal_label_pairs": 6608,
"odd_labels": true,
"tail_gather_P112": [
112,
112
],
"tail_gather_doubled": [
224,
224
]
},
"status": "PASS_H_BOUNDARY_BUDGET_AND_SCOPED_DECODER_CLOSURES"
}
114 changes: 114 additions & 0 deletions research/h-boundary-budget/SOURCES.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
{
"schema_version": 1,
"base_commit": "f626db5c3a3d781d8f7695038776c621651f75e1",
"files": [
{
"path": "certificates/selected-result.json",
"usage": "provenance",
"git_blob": "ed33caef5c5827693e9572d252a66f99cbb73d40",
"sha256": "5732707cc1e460b090b53f2463162749ad860de878a18f7408938671d295a9d9"
},
{
"path": "docs/research/agent-task-catalog.json",
"usage": "provenance",
"git_blob": "64bfc5af6709ed9811171e0a2108f05e1219cb65",
"sha256": "352a6184713b8843d96fd2c2071eb7aeaa655906b7c51d45ad444912666c8a96"
},
{
"path": "research/kappa-0023-productive-jobs/dependencies/kappa-next-regime/bit-compression/carrier-reuse/reference/joint_pair_dag.py",
"usage": "input",
"git_blob": "8b40135a84e7f0f0cd44bed69655801310b916a7",
"sha256": "8a0de761642d21919e969475c3f13e5d01a4bae7343c1e1f37c586d94b676a85"
},
{
"path": "research/kappa-0023-productive-jobs/dependencies/kappa-next-regime/direct-decoder/native_common.py",
"usage": "input",
"git_blob": "df276cc71f954b72ac4de4f07d2172d547772ba6",
"sha256": "ca1f913d6c104d456fdbebcecfdaf9a1ea12d647d74fe009b69689b9e678f0a4"
},
{
"path": "research/kappa-0023-productive-jobs/dependencies/kappa-next-regime/direct-decoder/sources/DATA-PHASES.json",
"usage": "input",
"git_blob": "d9a4f84211182ca200c081ea061d724c8a2cfb70",
"sha256": "c5916ff312678f12aba403847643fbbc29f643acec60bdf836fa56cd3e8251fa"
},
{
"path": "research/kappa-0023-productive-jobs/dependencies/kappa-next-regime/direct-decoder/sources/certificate.json.gz",
"usage": "input",
"git_blob": "c6e876d8b48d768214deee265ade428f8983b566",
"sha256": "a5ed85fac5ebf3c091482a113ab0d351eb5a7892fe2841a35e16017ec1ff49f7"
},
{
"path": "research/kappa-rebuild/architecture/controller_tariff.py",
"usage": "input",
"git_blob": "21fe4799f7d9db9f32f0e92db8ae3c1c925dcb76",
"sha256": "62d2479c41c64a58275857b884f1eb68d36ee4f755d7d393363ba8cc233251f3"
},
{
"path": "research/kappa-rebuild/architecture/identity_mixed_certificate.py",
"usage": "input",
"git_blob": "f4b51b358eff3cc43ea200503d16e7b75f67c7bc",
"sha256": "e1795294fa4d3100352bfda787ecb1efc2468ff11cbcbaca2476eb642b8d2a0a"
},
{
"path": "research/kappa-rebuild/architecture/mixed_forest_search.py",
"usage": "input",
"git_blob": "9b5213bf3f164664a36f81592740801f79b3c97d",
"sha256": "2dcec76840b437c67125af5b6d3529577f8c38851c792d0ffd9fa928c473e23b"
},
{
"path": "research/kappa-rebuild/architecture/mixed_target_probe.py",
"usage": "input",
"git_blob": "4fc05ab08138218ba9f09e5c89b649afae7c914e",
"sha256": "011c3c9d0cf81103dc84d709a0e36793eb7c5ae3f23c85eac27650ef13afa04a"
},
{
"path": "research/kappa-rebuild/bit/PR589-H-GLOBAL-PROBE.json",
"usage": "input",
"git_blob": "cbebedba1df5297a3eb98783cc1814bd3773f8a5",
"sha256": "15c1a7912a4d5ee463459ca9a5fc24ee37674eaa0c1650438ffc302c0d0cd05e"
},
{
"path": "research/kappa-rebuild/bit/bit_native_binding.py",
"usage": "input",
"git_blob": "f4c4082d89969ea311219d9af8013082d599f6f1",
"sha256": "bf6374225f388e7531fa6475cc255bd430100ff62c38d582c41601f0739de7b7"
},
{
"path": "research/kappa-rebuild/bit/complex_controller_factor.py",
"usage": "input",
"git_blob": "cb0cff7c8be5f38f2ee52201d9d0907f9dfd7947",
"sha256": "1de9aaf918e6a4f2f5448754c1f3c3da3b85e6257849ebd097af09859c4e5497"
},
{
"path": "research/kappa-rebuild/bit/mixed_productive_bit.py",
"usage": "input",
"git_blob": "9c7a8bd5d3ae4c19952648c815031858d6627b96",
"sha256": "b32291b0db7fc0d332ec444c70746ab0fb03351d2e50546f8bcb64060e3ff95e"
},
{
"path": "research/kappa-rebuild/bit/pr589_h_global_probe.py",
"usage": "input",
"git_blob": "60bfc974da92fc5b5b15463c261a78064cd7ecd2",
"sha256": "f0b9a6ac10b99c1a204fc3d9a0d26f20c6c413c436054b076ab2d9398864d391"
},
{
"path": "research/kappa-rebuild/bit/sources/pr589-regenerated/WORD.json.gz",
"usage": "input",
"git_blob": "85a4499bf9e4911a705d50567a2c2ef6cf23739a",
"sha256": "e3e301e62bc2b41dbf1ceac0acf3d35824ebeab1848c5a2142d4577b109da52f"
},
{
"path": "research/kappa-rebuild/complex/rebuild_native.py",
"usage": "input",
"git_blob": "78a7b1b0e6e43a1347fb361f45c6e0eaff8dd27b",
"sha256": "f94c527cc02215de49350d477618188c4c0da48bc8fb05b4e37b24c482cad7d5"
},
{
"path": "research/kappa-rebuild/transfer-audit/h-branch/BIT-MINIMUM-COMPLETION-AUDIT.json",
"usage": "input",
"git_blob": "553d3a166e13530ef1350a2947ed959694a8c36e",
"sha256": "c5203c00dc7f6cc20e36113cf87998fec0a6afc4c3927950d207309938fe02ff"
}
]
}
Loading
Loading