Skip to content
Closed
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
39 changes: 39 additions & 0 deletions .github/workflows/five-stage-gen5b-kernels-restorations-sinks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Verify gen5b with kernels, early restorations, terminal sinks and the PR233 complex word

on:
push:
paths:
- 'research/five-stage-gen5b-kernels-restorations-sinks/**'
- '.github/workflows/five-stage-gen5b-kernels-restorations-sinks.yml'
pull_request:
paths:
- 'research/five-stage-gen5b-kernels-restorations-sinks/**'
- '.github/workflows/five-stage-gen5b-kernels-restorations-sinks.yml'
workflow_dispatch:

permissions:
contents: read

jobs:
immutable-replay:
runs-on: ubuntu-24.04
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
python-version: ['3.11', '3.13']
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
persist-credentials: false
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
with:
python-version: ${{ matrix.python-version }}
- name: Install the pinned arithmetic dependency
run: python -m pip install --disable-pip-version-check -r research/five-stage-gen5b-kernels-restorations-sinks/requirements.txt
- name: Replay every mandatory stage (virtual, raw, bit, scalar, primes, banks, complex, math, finite)
run: python -B research/five-stage-gen5b-kernels-restorations-sinks/verify.py --output "$RUNNER_TEMP/gen5-collective-kernels-verification"
- name: Regenerate the pinned bit word from the generator and both physical-layer producers
run: python -B research/five-stage-gen5b-kernels-restorations-sinks/gen5bit/producer/regenerate.py --work "$RUNNER_TEMP/gen5b-regeneration"
- name: Require committed files to remain unchanged
run: git diff --exit-code
39 changes: 39 additions & 0 deletions research/five-stage-gen5b-kernels-restorations-sinks/BANK-PROOF.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Five-stage stage-private completed banks

This is a finite bank-allocation extension of the PR197/PR200 completed-bank construction to PR234's five-stage bit geometry, retained from eumemic's source527 package and applied here to the gen5 independent helper census. It does not claim a new all-size compiler theorem or replace the scalar admission.

For one complete local invocation, the source-bound physical telescope has no data/helper cross blocks. On an independent helper with genuine entrance projector sigma its endpoint is the exact partial swap D_(I24-sigma), supported in the active local window. This holds on arbitrary correlated dirty contents. The complemented inverse invocation has the same residual: its reversed endpoints are 0 and I24-sigma. Source-owned gauges are visible-data paths and are excluded from the independent helper census.

In stage i, PR234 routes the helper at local class d to physical class g=d*tau_i. Relative to g, the residual is P_i=tau_i*diag(I24-sigma,0,...,0)*tau_i, supported only in H_i. We give each stage a disjoint collection of banks. Every bank is filled by disjoint coordinate blocks of total dimension120. For the actual gauge chart B whose columns are residual columns followed by gauge columns, set

N_b=(b+1)*Pi_b*embed_i(B^-1).

For an ungauged role B=I24. Pi_b is the explicit coordinate permutation sending the first residual coordinates in H_i to the assigned bank interval. Thus N_b*P_i*N_b^-1 is exactly that coordinate projector. The scalar leaves conjugation unchanged. The checker reconstructs every actual chart, checks both inverse identities, the G-orthogonality of its two summands, its residual action and its elementary factorization. Therefore this is a projector identity for the actual bases, not a rank substitution.

The bank route is g -> g*N_b^-1, hence d*tau_i*N_b^-1 in the original local invocation. If the bank class is h, its residual is h*N_b*P_i*N_b^-1*h^-1. Every occurrence visits every bank class once because right multiplication is a bijection on the complete GL cover. If two roles in one local invocation are assigned the same bank family, their distinct N_b give distinct bank classes. Distinctness is literal: choose a coordinate j outside H_i. The embedded inverse fixes e_j; N_b*e_j=(b+1)e_(Pi_b(j)). The resulting columns differ for all b, at every eligible prime q>2^80 and every local ring Z/q^w. All scalars are between 1 and 40 and remain distinct units. The proof uses the full GL cover, not a projective quotient.

Complete the entire cover sweep for each stage and replica in fixed order before its boundary phase. The complete local source endpoint separates every bank from the data and other banks, so each subsequent invocation may receive arbitrary dirty bank contents. For each bank, its block projectors are disjoint and sum to I120. The literal partial swaps therefore compose to D_I120 on every address column. The common inherited ancestor chart is the same for each block and cancels between blocks. The checker verifies all240 address columns, the reverse schedule, and failures from omitting or repeating a block. No new independence assumption on dirt is used.

The five bank collections remain separate, and each is touched only in its own stage. This gives every physical bank its full required endpoint once. The data stage routes, bridge maps, idle children and final exchanges remain PR234's. Consequently there are no independent exterior rank5a children. Their removal follows from the completed bank endpoint; no internal, data, compensation or copied-center child is removed.

For gen5 the actual residual families are 3:354 (rank-21 entrances), 4:2182 (rank-20), 6:16 (rank-18), 7:2 (rank-17) and 24:13332 (ungauged roles). The total residual width is even, so sixty physical replicas fill each stage exactly with these 120-dimensional patterns (the rank-17 blocks share mixed banks with rank-20 blocks, as source527's 11/4 banks did):

| Blocks | Banks per stage |
| --- | ---: |
| 12 of dimension 7 and 9 of dimension 4 | 10 |
| 30 of dimension 4 | 4361 |
| 40 of dimension 3 | 531 |
| 20 of dimension 6 | 48 |
| 5 of dimension 24 | 159984 |

There are 164934 banks per stage, 824670 total banks and 422400 data families. Literal stock is 1247070. Its per-replica normalized value is 249414/12. The checker enumerates each of 4765800 actual role/replica/stage assignments exactly once, verifies the actual role's chart rank, and hashes the complete allocation.

Every actual chart (411 distinct entrance bases) uses at most 423 factors. At most 119 coordinate transpositions and 120 scalar-coordinate factors give 662 normalizer factors. A conservative added out-and-back selector bill, in addition to all retained PR234 route and scalar bills, is

2*5*60*((1247070-1)+15886*120*662)=757938545400 < 2^40.

The literal stock, not the rational per-replica stock, must be used for physical role routing and finite storage. All60 scalar replicas execute, and all recursive child counts are multiplied by60 in a literal realization. Any smaller integer normalization used only in the moment arithmetic must be distinguished from the literal replica count. Serial execution may share an external copied-center work stream only after erasure. The fixed bank selector bill is explicitly charged before the inherited positive ordinary-leaf gap absorbs it. After completion removal the maximum child is50 of120, so a single level halves; the histogram remains a one-level profile.

This witness leaves the full scalar/integer/sign audits, frame ledgers, exact global lowering, prime guard, complete fallback profile and 47 outer inequalities to the integrator (verify.py). Its input charts/census are the independently admitted gen5 helper. Existing compiler, common weighted chart, restored selectors, complete-stream routing and all-size analytic hypotheses remain conditional as in the cited sources.

Prepared with OpenAI Codex assistance (source527 package, eumemic); gen5 numbers rebound with Claude assistance. Apache-2.0; inherited source attribution remains unchanged.
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
> Mechanism and checks as first written for the #285 word (#290/#295); every count quoted below is that word's. The counts for the g5q10alt word of this package are in README.md and are re-pinned in expected/kernel-pins.json.

# Response-kernel entries on the gen5 word (per-entry cuts, rank-e entrances, multi-donor families)

This package is #287 (rohanarun: #285's gen5 five-stage banks + 904-gate descent retiming + 220 target-prefix squares)
with one added transcript stage, `kernel_transform.py`, after the target squares and before the five-stage lowering.

## Construction
Entries {pivot p, donors D (1 = twin pair, 2-3 = collective family), entrance E of rank e >= 1}: the pivot's complete
F2 target response is the XOR of the donors' (checked on the literal prefix); E is nondegenerate for 9I-J and lies in
every member's first frame. The entry cut is the later of the members' last frame-ZERO compensation reads (bound by
content: cut_read = [target, helper, coefficient]); no member is touched before it. The pivot starts at E (residual
rank 24-e) and loses its initial reads; each donor pays d += p at E after the cut and d -= p at the full frame; a donor
may serve several entries along a nested entrance chain (emitted MOVEs checked nested). Correctness: F2 replay of all
19,406 formal columns forward and inverse, both omission controls rejected; every required frame path rebuilt from
scalar/COPY events independently of the emitted MOVEs; both reflected ledgers; all used frames nondegenerate.
The selected helpers are plain dirty helpers; #287's target squares act on targets reading rank-20 gauges and its
retimed gates on source-pair mixes and internal gates, so the stages compose (the selection is bound to the
post-target word's hashes and the census was run on that word).

## Selection (discovery/)
Twin census (twin-census.txt) and collective census (coll/: families.py, fameval.py, pack.py adapted from the gen4
collective census): 450 entries = 260 twin pairs (244 e=1, 16 e=3) + 190 families (151 quads, 39 tris), total
entrance rank 1022, ranks 1..18. Greedy phi packing (phi(r) = r ln(120/r)), best prefix on the package's own ledger.

## Banks
`bank_template.build_patterns` keeps gen5's base patterns (7^12,4^9)x10, (3^40)x531, (6^20)x48 and, for each pivot
residual width r with k_r pivots, adds 15 k_r banks (r^4, 4^(30-r)) (#283's rule) whose rank-4 blocks come out of
the (4^30) banks; the (24^5) banks hold the remaining full-residual helpers. Pivot widths 6 and 7 coexist with the
base rank-18/17 gauges of the same widths. Every bank is 120 wide and fully filled; all assignments are enumerated.

## Pinned values
Every #287 literal changed by the rewrite is re-pinned in expected/kernel-pins.json and asserted via pins.pin
(recorded by discovery/generate_pins.py; verify.py refuses recording mode): kernel_pairs, kernel_entries,
kernel_entrance_rank, kernel_local_delta, kernel_helper_rank_mass, entrance_rank_histogram, entrance_count,
five_stage_calls, five_stage_rank_mass, gauge_dimension_histogram, bank_families, pivot_residual_census,
literal_stock, banks_total, charts, bundled_unique_bases, max_chart_factors, removed_completion_histogram,
priced_five_stage_calls, priced_five_stage_rank_mass, normalizer_factor_bound, conservative_extra_selector_calls,
intentional_family_collisions, scalar_events, scalar_coefficient_counts, scalar_event_sha256, forward/inverse
max row l1, literal_unit_additions, kappa. Gauge-entrance subtraction uses the subtract-and-delete form because
rank-e pivot entrances share five-stage buckets with ordinary children. No check is dropped.

## Result
kappa = 186178624839407/250000000000000000 = 7.447144993576280e-4 (+0.080% over #287's 7.44120696397042e-4),
bit side binding (bit coarse below the complex supplier's 7.47454944651775e-4).
Loading