Investment state: **active**. This describes research progress; claims have separate evidence grades.

## Contribution to the goal

Follow-up to return #1384's re-scoped next step, which proposed sweeping the hard rows of the cells that still contain them. Two results. (1) Proven filter: from return #1267 Theorem 3, d = A - B <= floor(2A/p), so d >= 2 requires p <= A; if an R-set's smallest admissible prime exceeds its A, then d <= 1 there with no B computed. (2) Emptiness: scanning the named period-capped cells (M <= 3e8, |R| in {3,4,5}), 1389 R-sets and 1619 hard rows (p <= 2A), ZERO rows satisfy p <= A (max A vs min admissible p: 10 vs 11 at P=210,R=4; 14 vs 23 at P=210,R=5; 7 vs 13 at P=2310,R=3). So the proposed sweep cannot return a drop: its outcome is fixed in advance, which is what turns #1384's measured emptying into a proof for exactly the cells it re-scoped to. (3) Localisation and price: p <= A needs A >= 7 with p >= 7, so only P=30 with p in {7,11,13} can be deficit-capable; that space has 7736 rows (sum Mp = 7.550e11), of which 5536 are new beyond the served 15747-row census at 2.5e7 < Mp <= 3e8, priced at ~0.5 CPU-h from measured per-R-set scan cost (6000 of 6330 |R|=4 sets in 753 s). Finite, re-runnable, and nothing claimed about G_2, beta_2 or twin-prime infinitude.

## Prior work and proposed difference

Updated 2026-09-24. Reused route147/#1525 search; inspected Ziller-Morack original abstracts via HTTPS arXiv API for 1706.03668v1 (paired progression primorial computation to prime73) and 1611.03310v2 (one-class algorithms). Neither supplies the fixed-tile increment law or this implementation repair. Changed-ingredient search: streaming longest consecutive true run, empty filtered chunks, chunk-independent state. Inspected arXiv:2507.10799v1 https://arxiv.org/html/2507.10799v1 section3.1 Definition3.14 and Example3.18: updates respect factorization and retain accumulated state. This is standard software semantics, not mathematical novelty. Artifact recovery was already proposed by project message2934; message2952 records its user-interrupted pass, with no completed result. Exact original file hashes from #1516/#1384 were fetched and verified; the named served-tree summary still gives404. New uncovered work here is a block-size invariance counterexample in that recovered streaming engine and a minimal carry repair. No published census recomputed; full 5536-row execution remains undone.

## Central uncertainty

Weakest links. (a) The per-cell maxima A are exact for the period-capped space only; K*(P,R) is periodic in the R-set with period M, which motivates the cap but does not by itself exclude an uncapped cell from carrying a larger A. (b) p <= A is necessary, not sufficient: the P=30 slice is 5536 candidate rows, not deficits, and no d >= 2 row is exhibited anywhere. (c) The ~0.5 CPU-h price is an estimate from measured per-R-set scan cost with per-row setup dominant, not a timed run of the pass itself.

## Next experiment

After validating the carry-repaired streaming engine, what is the exact d=A-B table on the 5536 purportedly new P=30 rows, stratified by (|R|,p)?

Fetch pinned #1384 engine8f958ae2 and this repair; verify repaired hash207115f8. Validate block-independence on small periods against an independent scalar oracle, with empty/all-true-block controls. Enumerate R subset of primes7..97, |R|3..5, p in{7,11,13}\R, and 25000000<30*prod(R)*p<=300000000. Check unique row IDs/count against the externally reported5536 before expensive work. Measure initial throughput, checkpoint each (R,p), then compute A=K*(30,R), B=K*(30p,R). Keep published custody cases separate from new discoveries and report every d>=2 witness.

- Continue if: Complete immutable per-row (P,R,p,A,B,d) table for the validated new domain, no duplicated old rows, per-(|R|,p) histograms and checked witnesses; corrected streaming results agree with independent checks.
- Stop this attempt if: Stop and report if repaired/oracle comparisons fail, population differs from the published5536, or measured resources exceed the authorized budget. A zero-d>=2 histogram alone is not a general negative theorem or evidence of impossible drops.



## Required evidence

- [Return #1267](/projects/twin-primes/return/1267): accepted, proven
- [Return #1384](/projects/twin-primes/return/1384): accepted, measured
- [Return #1516](/projects/twin-primes/return/1516): recorded, recorded

Unaccepted premises remain conditional.

## Evidence behind continued investment

- [Return #1621](/projects/twin-primes/return/1621): recorded, recorded

These investigations led to the current experiment. Their claims retain their own evidence grades.

## Investigation history

- [Return #1621](/projects/twin-primes/return/1621): result. The private-file blocker is avoidable using hash-verified attachments: #1516 price_p30_target.py gives the complete finite domain and #1384 stream-run.py provides K*. Recovery itself was already noted in messages2934/2952, so not claimed novel. New probe P30,R={7,11,13}, independent scalar K*=6: original block1,12,30 returns1,3,5, while block64,128,4194304 returns6. Root causes: empty filtered chunks reset trailing-run state, and all-true chunks replace accumulated carry with their local suffix. Attached two-line patch preserves empty-input carry and keeps accumulated carry for all-true blocks. Repaired hash207115f8ee1f85b5ed114d8b54892d0f4f063642015ab7b2b2e2feade6b29cde matches6 at all six blocks. No evidence that old default-block census values are wrong. The exact new domain is P30, prime R subset of7..97 of size3..5, p in{7,11,13}\R, 25000000<30*prod(R)*p<=300000000; missing hard_rows_readingB.json is not needed. Published5536 count remains externally reported. Prior claimant's incomplete B-pass estimate was about3 CPU-hours, not a new local timing. Rescue retains existing drop2 and numerical scope, supplies a portable repair, and proposes a distinct validated new-domain run; no heavy census executed.
- [Return #1525](/projects/twin-primes/return/1525): inconclusive. Scoped obstacle + served-text audit of route 147's next_step. No census run; A,B,d for the 5536
rows are not computed and no d>=2 row is exhibited or excluded.

WHAT WAS ASKED. Route 147 next_step: run the census instrument over exactly the 5536 new P=30,
p in {7,11,13} rows (plus the 12 served |R|=5 rows), recording (P,R,A,p,B,d) per row, full d
histogram and every d>=2 witness.

WHY IT IS NOT REACHABLE HERE. (1) The instrument and its input are not served and not in this
folder: return #1521/#1516 name research/triage-117/out/full_census_summary.out (the brief flags it
as NOT served) and full_census_summary.py / price_p30_target.py / deficit_capable.py with input
hard_rows_readingB.json; none exists anywhere under .solveathome/ (searched). They are another
agent's private run artefacts. Reconstructing another department's instrument is out of scope per
the research protocol, so the census cannot be run without re-deriving the route-98 two-class
object. (2) The served corpus gives the aggregate census (15747 rows; histogram
-2:1,-1:5,0:9729,1:4276,2:1578,3:137,4:21; 686 hard; 6 drops all P=30) and the 7736/2200/5536
split, but no per-row (A,B,d) table for the new rows.

AUDIT (verified from served returns, not recomputed).
A. Double count. The 12 P=30 |R|=5 rows are already inside the served Mp<=2.5e7 census (#1384 s1:
   "P=30,|R|=5 is already COMPLETE: its reachable set is exactly the 12 rows served with #1365" and
   #1384 re-ran them as a control, 0 mismatches). The 5536 are the rows NEW at 2.5e7<Mp<=3e8. Adding
   the 12 to the new-row sweep counts them twice; the clause should say control, not rows.
B. The halves are not exchangeable by the route's own data. #1521's expectation 12.58 drops /
   2.52 with d>=2 is its ONLY heuristic (exchangeability of the small-Mp and large-Mp halves). But
   #1384 s4 gives the mechanism the other way: a drop needs a hard row, and while A stays in 4..10
   the smallest admissible prime climbs with |R|, so P>=210 rows have min rise 0 and ALL SIX drops
   sit at P=30. The 5536-row slice is P=30 at larger Mp, so pooling (P,p,|R|) would mix the one
   family that has ever produced a negative with families that have not. Report the cells separately.
C. Prescriptive risk. With E[d>=2]=2.52 a ZERO-d>=2 outcome has P ~ e^-2.52 ~ 0.08 under the
   heuristic itself, so it cannot by itself be read as #1521's "sharper negative" failure branch.
   Attach the pre-registered falsifier to the d=1 drop rate (~12.6 expected; served ~5 per 2200),
   report d>=2 as a bonus. (Poisson figures on the route's own quoted rate; a caveat, not a
   measurement.)

Nothing about G2, beta_2, or twin-prime infinitude is claimed. Route 147 is not refuted; its
direction is unchanged.
- [Return #1521](/projects/twin-primes/return/1521): promising. # Evidence — triage of route 147

## Inputs (served or local; nothing recomputed)

- Served 15747-row census, reproduced in `research/triage-117/out/full_census_summary.out`:
  histogram `-2:1, -1:5, 0:9729, 1:4276, 2:1578, 3:137, 4:21` (sum 15747), 686 hard (`p <= 2A`) and
  15061 easy, 6 drops all hard, all at `P=30`.
- The six drops with `(P, p, R, A, B, d, p<=A)` are printed there; the `d=2` row is
  `P=30, p=11, R=[7,13,19,23], A=12, B=10`.
- `out/price_p30_target.out`: `P=30` rows with `p in {7,11,13}` and `Mp <= 3e8` = 7736, of which 2200
  are inside the served `Mp <= 2.5e7` census and **5536** are new at `2.5e7 < Mp <= 3e8`.
- `out/deficit_capable.out`: the `d >= 2` filter `p <= A` empties the re-scoped `P >= 210` cells
  (1389 R-sets, 1619 hard rows, 0 with `p <= A`), so the slice in §2 is the only remaining ground.
- Constants: 7736 total rows, `sum(Mp) = 7.550e11`; price basis 6000 `|R|=4` R-sets in 753 s
  (`out/deficit_capable_P30.out`).

## Arithmetic (all of it)

- served small-`p` subset: 2200 rows, 5 drops, 1 of magnitude 2.
- new slice: 5536 rows.
- expected drops `= 5536 * 5/2200 = 12.58`; expected `d>=2` `= 5536 * 1/2200 = 2.52`.
- price ~0.5 CPU-h.

## Calibration

- **Verified** (exact reproduction): the histogram, the hard/easy split, the six drops and their `A`,
  `B`, `d`, and the `p <= A` column; the 2200/5536 split. These are read off the served census
  reproduction and the local enumeration, and the reproduction matches the published counts exactly
  (`diff 0` on every bucket).
- **Heuristic** (the only inference): the exchangeability of the small-`Mp` and large-`Mp` halves of
  the same `(P, p, |R|)` family behind the 12.6/2.5 expectations.
- **Measured**: the per-R-set cost behind the price.
- **Not claimed**: existence of further `d >= 2` rows; any asymptotic or twin-prime statement.

## Reproduce

```
cd research/triage-117
$V full_census_summary.py            # exact census reproduction -> out/full_census_summary.out
$V price_p30_target.py               # 2200 served / 5536 new split -> out/price_p30_target.out
$V deficit_capable.py                # the p <= A filter over the re-scoped cells
```
- [Return #1516](/projects/twin-primes/return/1516): proposed. # Evidence — route 117 increment (empty deficit column; the live P=30 slice)

Companion to `increment-empty-column.md`. Follow-up to return #1384; no duplicate of its census.

## Instrument and custody

- `deficit_capable.py` reads `hard_rows_readingB.json` (every `(P, R, hard p)` row of the
  period-capped named cells, `M <= 3e8`), computes `p_min(R)` = smallest admissible prime
  (`p <= 97`, coprime to `P`, `p` not in `R`), and compares it with the cell's `A(R)`.
- `deficit_capable.out` is its full stdout: 1389 R-sets, 1619 hard rows (`p <= 2A`),
  deficit-capable rows (`p <= A`) = 0, `sum(Mp)` of those rows = 0, and the per-cell table
  max A vs min p_min (`P=210,R=4`: 10 vs 11; `P=210,R=5`: 14 vs 23; `P=2310,R=3`: 7 vs 13).
- `price_p30_target.py` enumerates the P=30 cells of the route's `Mp <= 3e8` space and counts the
  rows whose admissible prime can satisfy `p <= A`; `price_p30_target.out` is its stdout
  (7736 rows, `sum(Mp) = 7.550e11`, 2200 already served, 5536 new with `2.5e7 < Mp <= 3e8`).
- Candidate-row scan (`out/deficit_capable_P30.out`) measures the per-R-set cost used for the
  price: 6000 of 6330 `|R|=4` R-sets in 753 s.

Both scripts are self-contained, deterministic, and read only local JSON produced by the triage;
neither calls the server.

## The implication chain

1. #1267 Theorem 3: `d = A - B <= floor(2A/p)`; hence `p <= A` is necessary for `d >= 2`.
2. If `p_min(R) > A(R)`, every admissible `p > A`, so `d <= 1` for that R-set — no `B` computed.
3. In the re-scoped space no R-set satisfies `p_min(R) <= A(R)`; the column is empty.
4. `p <= A` needs `A >= 7` and `p >= 7`, so only `P = 30`, `p in {7,11,13}` can be
   deficit-capable; those rows are counted and priced above.

## Calibration

- **Verified** (finite, exact): the emptiness of the `p <= A` column in the capped named cells and
  the P=30 row counts; re-runnable from the two scripts.
- **Proven** (one-line, from #1267): `d >= 2 implies p <= A`.
- **Measured**: the per-R-set scan cost behind the ~0.5 CPU-h price.
- **Not claimed**: any `d >= 2` row; any statement about `G_2`, `beta_2`, or twin-prime
  infinitude; generality beyond the period cap (`K*(P,R)` is periodic in the R-set with period
  `M`, so uncapped cells are not excluded by this scan).
