Skip to content
Merged
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
2 changes: 2 additions & 0 deletions research/t74-low-alias-borrowing/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Preserve exact PR2269 bytes (CRLF) so the pinned git blob ids in SOURCES.json stay valid.
vendor/pr2269/*.py -text
242 changes: 242 additions & 0 deletions research/t74-low-alias-borrowing/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,242 @@
# PR2226 low (anticipatory) aliases on the T74 pivot-566+554 borrow words

**Construction (local, verified) plus exact packing ceiling and model prices. No kappa claim.** PR2269 (Jeremy Kothe) put
43 **high** PR2226 aliases on both T74 local words (`gauge44` "base" and `extra`). This
package adds PR2226's **32 low (anticipatory) aliases** and the **5 high aliases that PR2269
omitted** to both words. Each word now has 80 aliases. The 32 low aliases come with the
64 initial compensation terms `c K_G z`.

| word | aliases | helpers | local paid profile | local mass |
|---|---|---|---|---|
| gauge44, PR2269 (43 high) | 43 | 437 | `{1:2351,2:501,3:414,4:129,5:42,8:8}` | 5385 |
| gauge44 + 32 low | 75 | 405 | `{1:2303,2:527,3:386,4:125,5:42,8:8}` | 5289 |
| gauge44 + 5 high | 48 | 432 | `{1:2351,2:501,3:414,4:129,5:37,8:8}` | 5360 |
| **gauge44, this package (80)** | 80 | **400** | **`{1:2303,2:527,3:386,4:125,5:37,8:8}`** | **5264** |
| extra, PR2269 (43 high) | 43 | 437 | `{1:2339,2:509,3:418,4:125,5:42,8:8}` | 5385 |
| extra + 32 low | 75 | 405 | `{1:2287,2:535,3:386,4:125,5:42,8:8}` | 5289 |
| extra + 5 high | 48 | 432 | `{1:2339,2:509,3:418,4:125,5:37,8:8}` | 5360 |
| **extra, this package (80)** | 80 | **400** | **`{1:2287,2:535,3:386,4:125,5:37,8:8}`** | **5264** |

Change per call: −121 rank units, i.e. −96 from the low aliases and −25 from the five high
aliases. COPY64 is still included. Each word has 624 independent input columns and 44 private
FULL-cleanup zero buffers (PR2269 had 76). The identity `mass = 1856 + sum of helper widths`
still holds: width inventory `{4:4,5:4,7:36,8:84,9:272}`, sum 3408.

All 16 low helpers that were not aliased are blocked by one exact condition: no lender is
left (see below). There is no second construction choice that would avoid it.

## What was checked

`python3 -B build_ext.py --controls` is deterministic. Run it with
`PYTHONPATH` pointing at a numpy install; numpy is needed only for the Gaussian products. It
does the following:

1. Checks the git-blob pins of every input. The inputs are copied from PR2269 head `b479fc55`
and PR2226 head `dacaf3d8`.
2. Replays PR2269's shipped 43-pair witnesses with `replay_core.py` and reproduces its
recorded profiles exactly. `replay_core.py` is PR2226's `replay.py` in function form. Its
semantics are unchanged; only the `80 pairs / 32 low` assertion is now a parameter.
3. Builds the low and high pairs. The initial corrections are read off the residual of an
exact diagnostic replay. Every residual term must have the form `(lender, (op,))` for a
low operator, with a dyadic coefficient. No other term is allowed.
4. Re-runs the full exact replay for all three variants: free noncommutative operator
algebra over all 624/629/656 independent inputs, `Y'=Y+X`, nested frame chronology,
cold restoration, inverse cleanup at FULL with private zero buffers, and the
omitted-inverse-warp control. It also confirms that dropping the compensation fails, and
so does flipping one coefficient's sign.
5. Runs PR2226 `operators.py` on all 80 warps per word: exact Gaussian handoff and FULL-exit
products, all 512 columns, phases included. The 43 inherited records are reproduced
byte-for-byte.
6. Emits `words/BORROW-WORD-80{base,extra}.json.gz` with PR2269's unchanged emitter, then
runs PR2269's independent `audit_local.py` as a subprocess. It passes in both
orientations (`PASS_INDEPENDENT_EXACT_BORROWING_WORD`: 80 warps, 64 corrections, profile
and width inventory re-derived from the word alone).
7. With `--controls`, runs PR2269's `borrow_controls.py`. All 23 mutations are rejected for
the expected reason, including the four initial-correction controls, which are not
vacuous here (`receipts/CONTROLS-80*.json`).

Receipts: `receipts/BUILD.json` (per-candidate decisions and blockers),
`receipts/AUDIT-80*.json` and `receipts/CONTROLS-80*.json`.

## Independent check and model prices

- `python3 -I -B check_ext.py --out` (standard library only; imports no PR or construction code;
reads the reference inputs as git blobs at the PR2269/PR2226 heads) prints
`PASS_T74_LOW_ALIAS_WORDS_INDEPENDENT`: warp algebra, anticipatory-term structure (frame-zero
source = lender of its own operator), frame recount, exact forward and dual replay, links to
the canonical words, and 28/28 negative controls per word (`check_ext.receipt.json`).
- `python3 -I -B run_all.py --out` re-runs the check, then prices the recounted profiles with
`price_ext.py` (`price_ext.ext80.receipt.json`). E = 80586 extra freed mass versus PR2269.
These are **model prices of an idle refill that was not built**:

| model | b (floor, 1e-22) | vs PR2269 b |
|---|---|---|
| F | 0.0017255088890837212072 | +1.725% |
| C | 0.0017126737497248571464 | +0.968% |
| C8 | 0.0017140567316684824711 | +1.050% |
| P | 0.0016871233700042746562 | −0.538% |

Model caveats. F keeps PR2269's realized idle remnants fixed and caps idle children at rank 48;
it is not a ceiling (fully repacking all idle mass into rank 48 would give about 0.001748).
P is not a floor for a real supplier, because hosting may add paid adapters. C reproduces
PR2269's own refill exactly by construction. Out of sample, both calibrated rules overshoot
the realized record they were not fitted to: C on T8 by 2.0e-6 and C8 on T74 by 2.3e-6.
C8 is not exact even in sample; it is 5.2e-6 above PR2260's realized b (`price_ext.py controls`).

## Packing ceiling for the new local words (exact, any hosting)

`python3 -I -B cap_ext.py` evaluates the merged fixed-word packing ceiling
(`research/complex-local-word-ceiling/ceiling.py`) on the call-weighted local profile. It uses
m = 73, 896 families per nine-stage replica and centre 64, with the largest idle child R = 48
(T74's maximum child) or 51. Each cap is an upper bound on b for **any** hosting, owner packing or
idle refill of that fixed local word under the coverage law.

| local words | cap, R = 48 | cap, R = 51 |
|---|---|---|
| PR2269 (43 high) | 0.001717935928829 | 0.001727257612832 |
| **this package (80)** | **0.001747958371974** | **0.001758245201617** |

The ceiling rises by +1.75%. PR2269's claimed b realizes 98.74% of its own R = 48 cap. PR2322
reports 98.66% of a 0.001720061 cap for its profile. At the same 98.74%, the new words would
give b ≈ 0.0017259. **This is an estimate, not a bound or a claim.** It sits above every open
T74 claim (top: PR2322, 0.001697060296). It needs every obligation under *Scope and limits*.

## Reproduce

From the repository root, with the standard library and `git`. It takes about 25 s and fetches
the pinned PR heads if they are absent:

```sh
python3 -I -B research/t74-low-alias-borrowing/run_all.py --fetch
python3 -I -B research/t74-low-alias-borrowing/cap_ext.py
```

Expected final lines: `PASS_T74_LOW_ALIAS_RUN_ALL check=PASS price=PASS crosscheck=PASS ...` and
`PASS_T74_LOW_ALIAS_PACKING_CAPS cap48_high43=0.001717935929 cap48_ext80=0.001747958372`.
`run_all.py` rewrites its receipts. Repeated runs differ only in elapsed-time fields.

Rebuilding the words needs numpy, which is used only for the Gaussian products:
`python3 -B research/t74-low-alias-borrowing/run_all.py --build --numpy-site DIR`. It
reproduces `words/` and `witness/` byte for byte.

## How PR2269 derived its T74 witnesses from PR2226 (reconstructed)

PR2269 ships its T74 witnesses as inputs; the derivation script is not in the PR. Diffing
`witness_43_*.json` against PR2226 `WITNESS.json` shows how they were made:

- The 43 kept high pairs keep the PR2226 register and lender.
- Each handoff index is the T74 block `first_input`, which is the T8 index + 7.
- `retirement_B_event` is moved to the T74 index.
- `handoff_basis` is recomputed as the first `dim(lender)` vectors of the echelon basis of the
helper's first post-handoff frame.
- The 48 early-tail gates are unchanged, with `before_B` moved to T74 indices.
- `initial_corrections = []`, and every low pair is dropped.
- High pairs 606, 635, 637, 638 and 639 are dropped.

## Low aliases: conditions and outcome

These are the PR2226 low-pair conditions as enforced here:

- **(a)** The lender is retired before the handoff. It has no B, deferred or early-tail touch
after the handoff.
- **(b)** At the handoff, the lender is exactly its own initial dirty input (asserted in the
replay).
- **(c)** The lender's entrance frame has dimension 0. Every compensation term
`c K_op z_lender` then reads a frame-zero helper input, so the monomial `K_G` is free. The
auditor also requires that the source is the lender of its operator.
- **(d)** The handoff has rank zero: `E` is the first `dim(lender)` vectors of the helper's
first post-handoff frame.
- **(e)** Every pre-handoff event on the low helper, other than the deferred helper-only
corrections, is either an echo (`target += c L`, which is deleted) or a temporary
external addition (`L += a ext`) with zero net change. An echo that reads a nonzero
temporary part is rewritten as direct reads `target += c a ext` at the same index and frame.
- **(f)** The residual target response is exactly `-sum c K_op z_lender`, with dyadic `c`.

**32 transfer, with PR2226's own lenders.** The 64 corrections form the same
`(target, source, coefficient)` multiset as PR2226's 64 T8 terms; only the operator ids
differ. The prefix rewrites come from the T74 pivot kernels:

- 628 gets two rewrites, because the kernel inserts a temporary `±2·567` pair.
- 672 gets two, because the kernel's `B[6]` donates `−2·566` until `B[232]`.
- 676 gets one, as in T8.

The exact replay accepts all five rewrite gates (`add 214 566 -1`, `add 151 567 1`,
`add 117 566 1`, `add 181 566 -1`, `add 181 566 1`, all at frame 3).

**16 are blocked:** low helpers 632, 633, 634, 636, 640, 641, 642, 644, 648, 649, 650, 652,
656, 657, 658 and 660. Each one has a legal prefix plan. The blocker is lender supply. At
every one of the 12 handoffs, exactly 32 registers satisfy (a)–(c): the PR2226 low lenders
273…394, all at dimension 4. No other register qualifies, including registers that B never
touches. All 32 are used. Every low alias saves the same 3 units
(the lender is at dimension 4, the helper enters at dimension 1), so choosing a different 32
cannot help.

The other 16 cold registers with entrance dimension 0 are 311, 327, 498, 500, 501, 510,
512, 513 (final dimension 8) and 572–575, 580–583 (final dimension 7). Restoring them early
by moving more tail gates would hand off at dimension 7–8 into first frames of dimension 4–5.
That is a paid dimension-drop handoff. It is outside PR2226's rank-zero scope, and it costs
more mass than it saves.

## The five omitted high aliases

In T74, helpers 606, 635, 637, 638 and 639 enter at dimension 4. Their first frame after the
handoff is also dimension 4, because the pivot kernels re-solved those frames. The PR2226
lenders 395, 363, 530, 331 and 299 are at dimension 5 at the handoff. Using them would need
a paid 5→4 drop. That is why PR2269 dropped these aliases.

An exhaustive search over retired, unused, non-target registers found rank-zero lenders at
dimension 4: the X registers 12, 6, 31, 4 and 1. They retire in B between 732 and 862, and
their final frame is FULL. Each alias saves 5 units because the climbs to FULL merge.
Precedent: PR2226 and PR2269 already lend X register 73 to helper 653. The only other
rank-zero dimension-4 lenders are the 32 low lenders, and using them would give up a low
alias for no saving.

## Scope and limits

This covers the local scalar/frame construction plus exact Gaussian handoff products. It
does **not** include any of the following:

- native lowering of the new words in either orientation (PR2269 `run_native_borrow.py`
chain, warp recipes, the Lemma G stage);
- a window-exact owner fill for 400-helper words;
- a refreeze of PLAN/SPEC;
- a certified price (only the model prices above), outer assembly or a kappa.

Hosting caveats:

- The five new high aliases lend X-register fields.
- The 64 compensation terms read 32 frame-zero helper inputs before the preconditioner.

Whole-call ownership of these must be re-checked in the hosted owner map. A naive
per-call-type difference, `249·Δgauge44 + 417·Δextra`, gives
`{1:−33636, 2:+17316, 3:−20316, 4:−996, 5:−3330}` (mass −80586). That figure is only
arithmetic: how the freed units fill idle depends on a new fill.

## Open next questions

1. Run PR2269's native chain (`bw_transport`, `bw_emit`, warp recipes, LOCAL-PROGRAMS, Lemma G
labels) on `BORROW-WORD-80*`. Do the 64 frame-zero compensation reads and the X-register
lenders lower without paid adapters in both orientations?
2. Build a window-exact owner fill at 400 helpers per call, then price it. The model prices
above (-0.54% to +1.73% on b; calibrated about +1%) stay unverified until that fill exists.
3. Is there a rank-zero source of extra low lenders for blocks 632, 640, 648 and 656? One
option is a dimension-4 cold register with entrance dimension 0 created by re-solving a
pivot-kernel frame. The 16 remaining helpers would save at most 48 more units per call.

## Credit

- PR2226, anticipatory dirty borrowing (Cinna Davis, @1337isnot1337, with OpenAI Codex): the
mechanism, the alias rule, initial compensation, `replay.py` (adapted here as
`replay_core.py`) and `operators.py` (vendored).
- PR2269 (Jeremy Kothe, `research/gmx-t74-borrow43`): the T74 canonical words, the 43-alias
witnesses, and the BORROW-WORD emitter, auditor and controls (vendored byte copies).
- PR2260 (Dugongue): concurrent application of high aliases to the T8 parent.
- PR2322 (Vlado Vojdanovski) found concurrently and independently that retired source fields
can serve as rank-zero lenders for high roles: 619/621/622/623 to X fields 1/4/6/12 at a
common rank-4 chart. This package's five extra high lenders (X 12, 6, 31, 4, 1) use the same
idea. Its owner exchanges and the other open records (PR2302, PR2309, PR2312) use high aliases
only. None of them adds the 32 low (anticipatory) aliases.

The full predecessor lineage is in `vendor/*/NOTICE*` and `SOURCES-PR.json`. Prepared with
substantial AI assistance (Claude Code, Anthropic); Apache-2.0. No independent human review
is claimed.
96 changes: 96 additions & 0 deletions research/t74-low-alias-borrowing/SOURCES-PR.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
{
"heads": {
"PR2269": "b479fc5567bc09ab9185bffe89b62594f36d74e5",
"PR2226": "dacaf3d81f1936bb55b8454b1244e5d014272754",
"PR2260": "fde6b107e26a14da5bac5b66913c914708ea6901"
},
"base_main": "0fdd7d82d",
"files": {
"inputs/blocks.json": {
"pr": "PR2269",
"path": "research/gmx-t74-borrow43/new/borrow/inputs/blocks.json",
"git_blob": "c683574b3861678081fd5c5944dbd7a47309f6fd",
"sha256": "ddfac1dae1fe7cc0a91e7c7205c6d9d0c07c682880aa34eed83bf4ad7384da9f"
},
"inputs/gauge44.canonical.json.gz": {
"pr": "PR2269",
"path": "research/gmx-t74-borrow43/new/borrow/inputs/gauge44.canonical.json.gz",
"git_blob": "4abb6e28f02c95b41ed345d4e4401d16d58ae791",
"sha256": "65c6d17ffee2eacf27bff438f37fc549c9ed0c909cbc7a52976cc75cf2d15b91"
},
"inputs/extra.canonical.json.gz": {
"pr": "PR2269",
"path": "research/gmx-t74-borrow43/new/borrow/inputs/extra.canonical.json.gz",
"git_blob": "e0d670d4351229ce6921ecfbecf180070b17616b",
"sha256": "d7e48dcbafa236a2e1e41f7958244211506f7c7630fe6a2d43d2bdf17b7ae015"
},
"inputs/witness_43_base.json": {
"pr": "PR2269",
"path": "research/gmx-t74-borrow43/new/borrow/inputs/witness_43_base.json",
"git_blob": "9f4b93f3bc52d4f4ffaa128cfd7ae574fd36c462",
"sha256": "67ffb66d94067f6e53aee9118fe90e14a57f497fc8b3f708b6dac3de2e58ff28"
},
"inputs/witness_43_extra.json": {
"pr": "PR2269",
"path": "research/gmx-t74-borrow43/new/borrow/inputs/witness_43_extra.json",
"git_blob": "864ba533f50c2f1f639a6a3559b185bd321b923a",
"sha256": "d46449c6dbf4477f260cf5baea9bbb570a66ee0b6db81f4a220b9e3086ae9e46"
},
"inputs/PR2226-WITNESS.json": {
"pr": "PR2226",
"path": "research/anticipatory-dirty-borrowing/WITNESS.json",
"git_blob": "62edbcce166f7cf388231078c2cd7f75939b97e2",
"sha256": "86392adde6992a08ae90f7a69c58cace1b52d942f4d2c96e82ca79e5d1e15235"
},
"vendor/pr2269/emit_word.py": {
"pr": "PR2269",
"path": "research/gmx-t74-borrow43/new/borrow/emit_word.py",
"git_blob": "a97e3d7506b63aacb8c845a4702be9ecded710b8",
"sha256": "c38cd936c5dfc5988c6d50294f94ff003dd1fcd2bab5c4161d7de2cc445ba8ab"
},
"vendor/pr2269/build_word.py": {
"pr": "PR2269",
"path": "research/gmx-t74-borrow43/new/borrow/build_word.py",
"git_blob": "8684d54b319c3d3a3cbaeaf1bb3af8d45bde92cd",
"sha256": "a174c4ca05ef3c2dda789a042e16b20164fbc7d6ed7781c6b63964d30b498f36"
},
"vendor/pr2269/audit_local.py": {
"pr": "PR2269",
"path": "research/gmx-t74-borrow43/new/borrow/audit_local.py",
"git_blob": "a90b00e0232bc9d7bc85138bad8d95553db673d4",
"sha256": "36c82ecbface61a5b824c59ea90d1f31a31ff4b87bfef24e16742f06e18fa3c5"
},
"vendor/pr2269/borrow_controls.py": {
"pr": "PR2269",
"path": "research/gmx-t74-borrow43/new/borrow/borrow_controls.py",
"git_blob": "99789e011d0d3dd699560e002a1c0b9ef7fbb3ac",
"sha256": "07fbbf8e2f06df063dc9d88e5e4f721222a9fcf30b983bf9127cd5aa4b611627"
},
"vendor/pr2226/operators.py": {
"pr": "PR2226",
"path": "research/anticipatory-dirty-borrowing/operators.py",
"git_blob": "5c4fbe8cceedd769a1c367a31cd0beeae2175dc1",
"sha256": "b37b67a04681c776dafcdc6c9af0e8a2dbfa9893b02e0fa2d77ccc9182a87988"
},
"vendor/pr2226/NOTICE.md": {
"pr": "PR2226",
"path": "research/anticipatory-dirty-borrowing/NOTICE.md",
"git_blob": "5ea70357a04d083dba066fbc5c809a5736d8edd6",
"sha256": "f1d45d886926915531e3a59968abf0a4c974d7038f869848e71bd3a21b834422"
}
},
"adapted": {
"replay_core.py": "function form of PR2226 research/anticipatory-dirty-borrowing/replay.py (blob see PR2226 head) ; only the 80/32 pair-count assertion parameterised, diagnostic residual mode and probe hook added"
},
"outputs": {
"witness/witness_80_base.json": "9380f74c032b0616d5b13e8ef94b6d9f80cac36239e329357e7d5fcab5283ad0",
"witness/witness_80_extra.json": "6737072dcca47c6e6526bd62a41585dd09026549550c9e62eb53e64b265a6709",
"words/BORROW-WORD-80base.json.gz": "61290abffd8c8225e0abb3958c1506674e256de688fc4cdf358bbe7c981df493",
"words/BORROW-WORD-80extra.json.gz": "1dd2d6f2ae5b5a27b5f89fb830203f0cca7a78d0323a7845e85e1e80f8f6d1a5"
},
"tools": {
"check_ext.py": "independent word check (stdlib only; reads PR2269/PR2226 blobs via git at the heads above)",
"price_ext.py": "model pricing harness; `sources` re-reads PR2269/PR2260/PR2226 constants via git; PR2312 kappa is a reference value only",
"run_all.py": "runs check_ext.py + price_ext.py and cross-checks"
}
}
24 changes: 24 additions & 0 deletions research/t74-low-alias-borrowing/SOURCES.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"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/complex-local-word-ceiling/ceiling.py",
"usage": "input",
"git_blob": "6c0f54527d879396f689523bfde19928a9b6157c",
"sha256": "86a1432870b3b21d8454106ec9162fddc0471472d9214c590a1420f2426cedfc"
}
]
}
Loading
Loading