riemann

Instructions for agents working in this repository

This file is for AI agents (Astra, Claude, or any other) contributing to this project. Humans should read REPO_LAYOUT.md and RESEARCH_MAP.md instead.

Read this file before your first commit. It encodes failure modes that have already cost this project real work.


0. Review before every turn (Alex, 2026-09-23)

Before extending the work on each user turn, review the repository and all recorded conclusions, not just the active lane. Refresh the current remote state, read the full conclusion register (research-map.json), current README/checkpoints, NEXT_STEPS.md, evidence/MISSING.md, and the relevant current audit findings. Check every registered conclusion’s scope, hypotheses, evidence status and relation to the proposed next step. Review changes since the last checked commit and trace any affected dependency before relying on it. Do the same after resuming from a compacted handoff.

Record the reviewed commit and any findings in the turn’s working record. Separate a conclusions/dependency review from a new proof audit or numerical replay; never claim all historical proofs or computations were revalidated unless they actually were. Known missing originals remain open even when a replacement certificate or the publication text is available. Correct stale summaries before building further conclusions on them. Preserve earlier reviews and documents; record corrections forward.

Before pursuing a proposed variation, identify the closest existing result and compare its hypotheses and conclusion with the proposal. State the new arithmetic estimate being attempted, if any. A new coefficient class, explicit constant, normalization or equivalent formula may be useful, but must not be reported as progress on an unchanged cofinal input. Check for scale invariance before proposing a norm/trace normalization when the step size is free. Record overlap audits as audits; do not add a theorem node or manuscript version merely to count them as mathematical advances.

Per-turn wall check (Alex, 2026-09-23)

On every RH research turn, after the mandatory review and before extending the research, include a short user-facing Wall check. Repeat its final classification in the final update. Use one of these three labels:

Use the compact form: Wall check: [label]. Closest result: [NS/PR]. What changes: [specific input/hypothesis, or explicitly nothing]. Say what success or failure would change when proposing a substantive new test. If the assessment changes during the work, say so. Record the same fields in the turn’s working record. An unproved input is not a proved wall; an audit, sharper restatement or finite replay is not a newly established cofinal estimate. Apply this check to route assessments and proposed next steps as well as calculations. Do not suppress it because the user only says “continue”.

Proposal gate (Claude, 2026-09-23; NS-102)

The wall check must run before work starts and before a research row is claimed. NS99 indexed 14 continuation groups and annotated 63 of 104 registered nodes; it did not turn existing proved conclusions into open assumptions. Use PROPOSAL_TEMPLATE.md to prevent repeated unestimated inputs:

  1. Name the shared-input group from RESEARCH_MAP.md, or DISTINCT with the closest node named. A frozen group needs a specific new input that satisfies its stated thaw condition; a new formula or larger table is insufficient.
  2. Name the original arithmetic input beyond the functional equation. Examples include exact theta coefficients, Euler-product coefficients, or a specific prime-sum estimate. If NONE, do not start research.
  3. Run the candidate’s control screen first. Use controls/davenport_heilbronn.py or controls/example_screen.py with the actual candidate, plus applicable NS100/101 controls, before proof, certification or a wider scan. Record hypotheses, quantifiers, domain, precision and observations. Merely running the unchanged example does not screen a different proposal. Mark a control not-applicable with a concrete hypothesis mismatch; do not silently skip it. A sampled pass or failure is diagnostic, not a theorem. A full-scope control satisfying all premises but violating the proposed conclusion excludes only that stated implication. If the full candidate condition holds on such an analogue, it cannot by itself force critical-line zeros. Stop that inference or explicitly add a hypothesis; do not claim RH or impossibility from finite samples.
  4. Put the filled template in a draft PR body before claiming a row. Include the wall check, success/failure consequences and a budget. A task README may mirror the PR, but is not a substitute. A rejected screen may be recorded in audits without claiming a research row.

A row claimed without a filled PR template is reverted to open. Audits and process changes are exempt; research tasks are not.

Relevance before another candidate screen (2026-09-29 reassessment)

The row-claim exemption is not an exemption from choosing a useful test. Before computing a new candidate, including a pre-claim admission audit:

  1. Show the dependency edge. Write the implication from the candidate to one named registered input, retaining its quantifiers, domains, source/parity constraints and required error rate. List every additional unproved estimate. If a successful screen would still leave an unspecified bridge, stop the computation; defining or assessing that bridge is the next task. An exact representation alone is not a bridge.
  2. Show what uses the arithmetic. Name the step that would fail if the coefficients or shifts were generic. Inserting primes into a generic projection or positivity argument is not an independent arithmetic estimate. An applicable generic obstruction should be checked on paper before numerical replay. A generic supporting lemma can still be useful: specify its separate arithmetic hypotheses and complete conditional transfer. It need not distinguish every false analogue by itself; the full proposed implication must survive the matched controls.
  3. State the decision. Say which existing proof obligation, claim or route-selection decision changes on success and on failure. A rejected screen does not justify automatically testing an adjacent variation; first repair the missing dependency edge or stop that attempt family.

Audits of an existing proof, recovery of evidence and explanation diagnostics remain valid tasks with their own explicit question and scope. They need not promise an RH implication, but must be labelled validation or interpretation, not a new route. Do not pad a simple rejected sign screen with certification, larger tables or a manuscript version. Apply the filled proposal gate before claiming any actual research row, as before.

1. What this project is

A research record for an attempt on the Riemann Hypothesis via Weil positivity on semilocal Weil forms, following Burnol’s Sonine spaces.

RH is not proved. G2 is not proved. Nothing here claims otherwise.

The complete semilocal Weil form at window lambda=4 is nonnegative in both parity sectors. Version 1.40 additionally certifies its simple even ground and, by Connes–van Suijlekom Theorem 6.1, real zeros of the ground’s entire Fourier transform. These are fixed-window results; convergence to Riemann’s Xi remains unproved. Roughly ten scoped no-go results also close proposed routes. Treat a proved closure as a contribution, not a setback.

Version 1.41 certifies eight local CCM transform-zero discrepancies at the existing lambda=3, N=120 finite compression, with 768/1024-bit replay. The earlier NS-14 sinc-lattice conclusion is withdrawn (missing centering phase); the broader CCM reproduction remains a diagnostic. The numerical zero benchmark cannot test a common positive matrix scale or identity shift. Version 1.42 adds a unique simple complete-ground local zero at lambda=4 within 0.1 of gamma_1, using an even-sector separator 1e-67 and energy projection bounds. This is not the global spectral gap, a zero enumeration, a discrepancy sign, or a high-accuracy CCM transfer. Cofinal convergence, G2 and RH remain open; NS-1 retains two OPEN evidence groups.

Version 1.43 closes NS-19: the first positive complete-ground zero is simple and satisfies abs(z_1(4)-gamma_1)<8.752082e-33<9e-33, at 1024/1280 bits. The limiting direct budget is C_ell*rho. A hypothetical lower-ground energy estimate would need rho-l <= about 3.2032e-153 to make its separate trial-transfer uncertainty 1e-71; this input is absent, and the frozen trial is not centered to that scale. The finite N=120 discrepancy ~+2.92504e-71 is not a complete-ground value. The resolution limitation is scoped to the displayed bounds, not every argument using the archive. G2 and RH stay open.

Version 1.44 translates weighted concentration to the level pencil (NS-24). For source-admissible directions, the minorant loss divided by q+ must be at most nu_k + eta_a ||v_k||^2/q+. Raw diagnostic vectors are not assumed source-orthogonal; mixtures need the full restricted matrix inequality. The local demand is finite-window, but the live complete-space criterion remains cofinal; uniformly bounded errors suffice under v1.36’s hypotheses. No diagnostic threshold is certified and no concentration no-go follows. No new numerical run, tail metric or enclosure refinement. G2/RH stay open.

Version 1.46 records NS-26’s unconditional explicit formula for beta_a, with strict integer endpoint, trivial zeros, Perron remainder and varying lattice envelopes. The Gaussian/desmoothed numerical illustration checks 40 low and 14 deep/centroid samples; zero-prefix counts are convention- specific, not sharp-sum certificates. NS-27 proves packet bounds with positive spill and source projection, and a conditional linear distinct- level obstruction. Uniform arithmetic level mass and bounded packet energy are still missing; D_a->infinity alone does not close that gap. The route stays blocked, not closed. No new window/tail metric. G2/RH remain open.


Version 1.51 records NS-39’s exact corrected-zero-field potential and comparison of ZLD, QG and CAE. ZLD implies only QG’s growth clause on the same prescribed family; packet feasibility is independent. CAE is exactly the uniform complement floor in positive-weight coordinates, not a new estimate. General level-measure countermodels do not prove arithmetic independence. NS-38 explicitly discloses both unarchived evidence groups; recovery remains open, while the five v1.35 scientific originals are present and hash-matched. NS-41/42 are separate diagnostics, not bounds. G2 and RH remain open.

Version 1.52 adds fresh 320/448-bit certificates for the existing lambda=5 stipulated 1e-8D tail comparison and N=25 dyadic norm comparison. Both comparisons fail in both parities; the tail witness Weil energies are positive. Historical original recovery remains OPEN. NS-43 extends scoped prime-channel-loss closures, proves exact adaptive concentration equivalent to the complement-floor target, and specifies complete CCM relative-selection and entire-transform inputs. Abstract nonselection is not arithmetic nonselection. Only scoped comparison/inference nodes close; CCM step (b) remains sole gold, circle open. No new window, tail metric, G2 or RH claim.

Version 1.53 (NS-46 with Astra-2) uses closely spaced radical translates in a fixed interval. A finite Gram interpolation bound and complete cutoff residual give rank ~lambda²/(20000 log lambda), residual at most C exp(-lambda²/2000), and exact parity counts. A uniform or polynomial positive gap after removing o(lambda²/log lambda) directions is excluded. Constants and the starting threshold are analytic, not finite numerical certificates. The complete complementary signed floor remains open; gap-free transfer was already in v1.18/v1.36. No new window, tail metric, G2 or RH claim.

Version 1.54 (NS-51–53) gives the complete form-domain affine screw-potential criterion for nullvectors, with a countermodel to a generic H0^1 bootstrap. API (arithmetic affine-potential injectivity) remains open. Symmetry-paired heat-zero transport removes internal inverse-gap singularities but retains external-cluster terms; uniform same-test comparison fails conditionally on an unmatched real deformed zero, not verified here. Exact Nyman–Beurling block gains retain the Schur complement and admit a trace lower bound; the RBC asymptotic arithmetic estimate remains open. Any proven NB convergence rate would suffice. No new window, tail metric, uniform floor, G2 or RH claim.

Version 1.55 (NS-55) proves local-patch UCP false for the actual prime-shift operator, including both parities and finite source constraints. The witnesses are not full-window nullvectors. Its full real-space semigroup fails ordinary pointwise positivity preservation; this is not negative diagonal Weil energy. A prime-free exterior observation cell yields scoped uniqueness, but a first-zero nullvector reaches both window endpoints. Finite dilation retains unestimated signed prime/pole changes. API, the uniform floor, G2 and RH remain open. No new window or tail metric.

Version 1.56 (NS-57) adds finite prime-weight controls: every nonzero finite coefficient change creates negative compact tests in both parities and finite first-zero windows. The original arithmetic near-radical identity is lost. Fixed-pattern lambda_* = O(sqrt(log(1/epsilon))) is an analytic upper bound, not a numerical threshold. Bounded perturbations preserve the uniform-floor objective; exact scalar compensation and a conditional spectral limit follow from v1.36. These are controls and implications, not a new arithmetic sign estimate. API, the original floor, G2 and RH remain open.

Version 1.57 (NS-58) derives the full translated-radical exterior pairing on the complete form domain. Its homogeneous vanishing is exactly equivalent to the original nullvector equation, not an independent sign estimate. Finite prime-weight changes produce an explicit, necessarily nonzero forcing profile for nonzero tests. Its compactness rules out a uniform inverse bound on the entire fixed-window parity space, not on a particular finite kernel. NS-58 stops at its stated condition; API, the uniform floor, G2 and RH remain open.

Version 1.58 (NS-59) supplies an adjacent-dilation difference budget and a complete Mellin multiplier identity for its raw Gram. Classical Weyl bounds imply raw operator norm O_epsilon(N^(-5/3+epsilon)). Near-N^(-2) power control is equivalent to Lindelof; every fixed logarithmic N^(-2) raw norm bound is false. These are raw, all-coefficient claims, not obstructions to the projected Gram or actual residual direction. Arb 256/384-bit checks show finite raw-trace loss and transformed-numerator cost. No asymptotic lower correlation bound is supplied. NB convergence, G2 and RH remain open.

Version 1.59 local draft (NS-60–66) retains the full Euler-grid correction and proves its scoped logarithmic-norm obstruction for Q_N <= N^alpha, alpha < 1. Fixed Mellin smoothing preserves the RH criterion and gives a positive average identity and raw trace <= 3kappa/(8N^2). No lower bound for the actual optimized correlations follows. The canonical sharp Mobius interpolant fails along the full integer sequence after any number of integrations; selected subsequences and optimal coefficients are not excluded. Nonnegative difference coefficients cannot approximate the smoothed target; NS-64 supplies an explicit dual separator and a certified full-space cone-distance lower bound > 0.00228323. This is not a lower bound for signed approximation. Increasing the smoothing order can make one-atom relative error vanish while absolute error diverges. This is a changing-norm control, not RH evidence. Finite Arb checks and exact Maxima checks are in v159. A fixed number of ordinary Cesaro averages still fails for the canonical sequence. Its fixed-order smoothed norm-growth exponent is exactly beta_star-1/2 (NS-66); no unconditional subpolynomial bound or bounded cofinal subsequence is obtained. This reopens a weaker growth target, not the false strong-convergence goal. No new Weil window, floor, G2 or RH proof. Published through PR #32.

Version 1.60 (NS-67–71) gives complete canonical cells and an O(log N) tail beyond N^2, retaining the exact growth criterion. Centered complete Abel terms have conditioning at most 1+2*||sigma_1||<4.617; whole-term cancellation cannot change the power exponent. Positive renewal transfers the same forcing power; its critical weighted total energy is unconditionally infinite, not the canonical norm itself. The actual optimized endpoint remainder exceeds its model at N=64,128. Repairing the elementary Gram cusp subtracts d/max(u,v), exactly diagonal in adjacent differences; no uniform all-coefficient comparison survives zeta zeros and large values. The repaired kernel still selects efficient finite directions: at N=256, 97.06% of full gain, versus 38.41% for the unmodified correlation direction. The selected numerator and true-energy ratios have no cofinal estimate. Complete Arb 256/384 and cutoff replays, exact Maxima checks, local self-review only. No new Weil window, floor, G2 or RH proof.

Version 1.61 (NS-72–74) identifies the complete positive local differential energy of the repaired model and a size-independent comparison with discrete curvature. Direction selection is linear in N after the actual correlations are supplied; computing those correlations is separate. The diagonal rule retains 97.63% of full gain at N=256, versus 83.66% for the optimized span of three prescribed Mobius/log-taper templates. All finite energies use the complete arithmetic Gram. A unitary altered family preserves every Gram entry and permits arbitrarily close finite statistics while having a known positive floor. This is not an error floor for the original family. Cofinal arithmetic control, the original Weil floor, G2 and RH remain open. Two precisions, cutoff replay, exact Maxima checks and local self-review only.

Version 1.62 (NS-75–77) records exact next-block divisor-jump cancellation but certifies failure of its held-old unit step on all five tested blocks. Its optimized three-direction span captures 56.02% of full gain at N=256, versus 97.63% for curvature. The continuous q=2 distance is expressed through B(1), B’(1), B’‘(1); the continuous closure strictly contains the integer closure. A complete positive zero-tail budget and published finite-height verification imply continuous squared distance below 2.08e-32. This does not upper-bound integer error, prove zero distance, or verify a new zero height. External literature inputs are explicit. Two-precision finite replays, doubled cutoff for NS75, exact Maxima checks and local self-review only. Cofinal arithmetic control, the original Weil floor, G2 and RH stay open.

Version 1.63 (NS-78–80) proves S/16 <= ||R||^2 <= 21 S/16 for the complete arithmetic reciprocal-sample functional, including the exterior tail and all cells. Exact inversion keeps the infinite divisor compatibility constraints; fixed-index coefficient convergence is not convergence of sharp Mobius truncations. Full physical-cell/tail integration independently confirms finite Gram norms. Tail-balanced feedback and its endpoint-augmented span retain only 59.97% and 71.18% of gain at N=256. The full arithmetic sampling Gram yields a uniform projected condition ratio <=21, one-step capture >=21/121, and twenty-step capture >97.79%. This assumes the complete comparator inverse; no fast implementation, smooth-model comparison, or cofinal relative contraction follows. Complete Arb replays, exact Maxima checks and local self-review only. The original Weil floor, G2/RH stay open.

Version 1.64 (NS-81) uses finite reciprocal samples to bound coefficient norm and proves ordinary integer Gram condition O(N^4 log^2(2N)). This is not a signed Weil floor or an approximation-error estimate. A complete sample-tail operator bound makes the arithmetic comparator finite at M=2^16(N+1)^6, with projected condition ratio <=42. Use total atom count 2N for an N-to-2N block. The sufficient cutoff exceeds 10^21 for old size 256; no such matrix was assembled and no practical solver is claimed. Small-prefix inverse-trace and scalar tail certificates replay at 256/384 bits, with exact Maxima checks and local self-review. The original cofinal arithmetic decay, Weil floor, G2 and RH remain open.

Version 1.65 (NS-82) retains the logarithmic physical tail as an exact rank-two form and bounds its complete Bernoulli remainder. This different comparator has sufficient cutoff O(N^(7/3) log^(1/3)(2N)), projected condition <=9, and ten ideal steps capture >98.84% of available block gain. Total atom count 512 needs cutoff 8435244. Only scalar cutoff certificates were evaluated; no millions-cell comparator or descent iteration was run. Two precisions, exact Maxima checks and local self-review only. No practical solver, cofinal decay, original Weil floor, G2 or RH claim.

Version 1.66 (NS-83) adapts Burnol’s critical-zero dual vectors to every fixed Hardy smoothing order q. The lower liminf constant is the sum of m(rho)^2/|rho|^(2q) over critical zeros. At q=2 a certified ten-pair subset exceeds 0.000072332433; no finite-size onset is supplied. Fixed-fraction contraction of the entire error at every sufficiently large doubling is impossible; cumulative relative gains are <=log K+O(1) through doubling K. This is not a pointwise 1/j bound, not a restriction on capture of available gain, and not a decay upper bound. Two-precision constants, exact Maxima checks and local self-review; cofinal signed arithmetic decay, the original Weil floor, G2 and RH stay open.

2. Claim discipline — the non-negotiable part

Every statement must be filed as exactly one of:

Category Standard
exact identity algebraic, checkable
proved implication hypotheses stated explicitly, in full
numerical illustration not proof evidence; label it so
certified computation interval/ball arithmetic, replayed at two precisions
open input named, with what is missing

Specific rules:


3. Four facts that stop wasted work

3.1 Finite windows do not accumulate. prop:v121-cofinal-rh: RH follows from a cofinal family with error tending to zero. No finite list of certified windows — however long — contributes anything. Computing lambda=5, then 6, then 8 is not progress toward G2 unless it tests a stated prediction.

3.2 The target is now weaker than “decay”. prop:v136-bounded-floor: a uniform finite floor q_a >= -C_* ||f||^2 with C_* independent of a already suffices. You do not need to prove the error vanishes. Check whether your estimate meets this weaker bar before abandoning it.

3.3 Windows cost exponentially. prop:v125-cutoff-cost proves the remote cutoff satisfies N+1 > L exp(M_phi/(1-c)) with M_phi/lambda -> 1:

  lambda      4      5       6        8         12        16
  cutoff N    283    1502    7488     124442    ~2.6e7    ~5e9

Do not attempt lambda >= 8 without a specific reason. The method’s ceiling is near lambda = 10-12.

3.4 “Margin” names two different quantities. They are not comparable.

  certificate margin   1 - lambda_max(U, K)              does the gate pass
  resolution margin    m(M1,M2) = min (x*S_M2 x)/(x*S_M1 x)   energy lost between cuts

Resolution margins at different lambda cannot be ordered — they belong to different operators. Always state which you mean.


3.5 Match the control’s actual hypotheses. Davenport-Heilbronn (Titchmarsh 10.25) has an even completed function, a real even theta-type kernel with double-exponential decay, and off-line zeros. The control uses an odd-character conductor-5 completion and weight-3/2 theta relation; these are not Riemann’s original gamma factor, coefficients or every modular identity. It refutes a generic positivity implication only when all the proposed hypotheses transfer. Show precisely where original arithmetic or theta data absent from the applicable controls enter. The controls/ computations are diagnostics, not certificates of universal claims. The v1.39 probe-relaxation theorem is a separate, explicitly scoped density obstruction; it is not a universal arithmetic-blindness theorem.

4. Numerical standards


5. Where things go

See REPO_LAYOUT.md for the full scheme. The short version:

manuscript/   one live .tex; build with ./manuscript/build.sh
evidence/vNNN ONLY what that version adds -- never cumulative
manifest/     sha256 per version
audits/       adversarial passes
log/          research log, revision notes
tools/        make_manifest.py, verify_manifest.py, make_map.py
controls/     known-false analogues for screening proposals (diagnostic)
PROPOSAL_TEMPLATE.md   fill in before claiming a research task row

Do not build cumulative bundles. Re-bundling every prior artifact into each release produced a 207 MB ZIP that failed to upload (HTTP 502) and left the complete lambda=4 positivity result unreproducible. Git stores history; use it. No file over 100 MB — GitHub rejects it.

If you cite an artifact, commit it. If you cannot, add a row to evidence/MISSING.md. Never let the manuscript imply an artifact is archived when it is not. This is currently an open audit finding (MAJOR M1).

Before starting any task, claim it in NEXT_STEPS.md — write your name in the owner column in its own small commit, then work. Two agents push here concurrently; an unclaimed task gets done twice. Add a row for anything not listed; never delete rows; record the version that finished a task.

Diagnostics that are not certificates go in evidence/diag_<topic>/ with a results.md whose first line says so. They may use midpoint eigenvalues, float scans or uncertified solves — but only under that label, never under evidence/vNNN/, and never cited as a bound.

After adding evidence:

python3 tools/make_manifest.py vNNN
python3 tools/verify_manifest.py vNNN

After changing the research map, regenerate it:

python3 tools/make_map.py          # updates RESEARCH_MAP.md

6. Branches

main                     live manuscript and committed evidence
lane/<topic>             a long-running research direction
result/<label>           one numbered result plus its evidence
closed/<route>           a route proved closed -- keep it, never delete
audit/<date>-v<version>  an audit pass

Nest as main <- lane/<topic> <- result/<label>. Name result/ branches after the manuscript label (result/v137-scalar-no-go) so the branch and the proposition are searchable together. Tag one v1.NN per manuscript version.

Several agents push here concurrently. Use a worktree per lane rather than switching branches in place — a mid-run branch switch corrupts long interval computations. Sub-agents and scripts must never run git checkout in the shared checkout ~/riemann (on 2026-09-21 one did, and a coordinator’s commit landed on the wrong branch); create a worktree first:

git worktree add ../riemann-worktrees/<name> lane/<topic>

7. Pushing to GitHub

The repository is public: github.com/AlexanderEastwood/riemann. Anything you push is visible immediately and permanently.

Publish completed tests (Alex, 2026-09-29)

Alex explicitly authorized publishing findings after every completed test, including failed admission screens and audits, and requested publication of the September 29 findings. This is standing authorization to prepare, push and merge the corresponding RH findings PR after the checks below; do not request fresh push approval for each such test. Publish the actual evidence, scope limits and stop/continuation decision, with board/map links. Preserve original records and correct descriptions forward. The proposal gate still applies to new research; this authorization does not thaw a frozen group or permit a manuscript version for failure-only work. Do not start another test while leaving a completed test unpublished, unless a concrete publication blocker is recorded and reported.

Authentication

Push access belongs to the AlexanderEastwood account. Other accounts on this machine have read access only and will fail with 403:

gh auth status                                              # which accounts exist
gh auth switch --hostname github.com --user AlexanderEastwood
git push origin <branch>
gh auth switch --hostname github.com --user <previous>      # switch back

Set the commit identity per repository, never globally — a work email on a public personal repo is a leak:

git config user.name  "Alex Eastwood"
git config user.email "30302255+AlexanderEastwood@users.noreply.github.com"

Never put a token in a remote URL. Use gh or a credential helper.

The push sequence

./manuscript/build.sh                       # must build before you push
python3 tools/verify_manifest.py vNNN       # artifacts must verify
git fetch origin && git rebase origin/main  # others push here concurrently
git push origin main
git tag v1.NN && git push origin v1.NN      # one tag per manuscript version

Hard rules

Merging your own PR (set 2026-09-22)

There is no coordinator. The agent that opened a PR merges it, without waiting for anyone, once all of the following hold:

  1. The branch is rebased on the current origin/main and merges cleanly.
  2. ./manuscript/build.sh passes on the merged state with the page count and a zero undefined/duplicate-reference count recorded in the PR body.
  3. python3 tools/verify_manifest.py vNNN passes for any version the PR adds, and the incremental evidence/vNNN/ rule of section 5 is met.
  4. The PR body states, per section 9, what had to change and any obstruction, and contains no G2, RH or publication-readiness claim.
  5. No open MAJOR finding from any review of the PR remains unresolved. A review is not required before merging; if one arrives afterwards with a MAJOR finding, the author corrects forward in a new PR (never by rewriting history) and records the correction on the board.
  6. A manuscript version is tagged by its author immediately after the merge: git tag v1.NN && git push origin v1.NN, one tag per version, and version numbers are taken in order of merge, not of claim.

Use the merge button or gh pr merge <n> --merge; never squash or rebase-merge, so the branch history stays reachable. Audit PRs and diagnostic PRs follow the same rule. A PR that the author withdraws is closed with a comment saying why and its version number is retired.


8. Common failures

Observed in this project. Check here before debugging from scratch.

Symptom Cause Fix
Permission to ...denied / 403 on push wrong gh account active gh auth switch to AlexanderEastwood
Push rejected, file too large a cumulative bundle was committed commit artifacts unpacked and incremental; gitignore the archive
HTTP 502 uploading a release bundle bundle grew past what the endpoint accepts stop bundling; use evidence/vNNN/
fatal: 'origin' does not appear to be a repository fresh git init dropped the remote git remote add origin <url>
Manuscript claim has no artifact behind it evidence generated but never committed commit it, or add a row to evidence/MISSING.md
Value changes by tens of orders of magnitude between 768 and 2048 bits uncertified midpoint solve at high condition number certified interval solve; replay at two precisions
singular matrix in solve() precision too low for cond(T), or head too small so the deep block sits in the tail raise precision; scale the head as N ~ lambda^2
Finite-section result moves across cutoffs expected — a different cutoff is a different finite problem not an error; do not report it as one
Two “margins” disagree across versions certificate margin vs resolution margin state which; they are not comparable
Manifest verification reports RELOCATED manifest predates a reorganization expected; regenerate with make_manifest.py
Manifest reports MISMATCH on a file you edited the manifest is stale regenerate for that version
Gate passes but the conclusion does not follow positivity combined across subspaces without the cross term use the prop:v126-direction-complement pattern
A new version records only a failure normal and correct here publish it; do not pad it

9. Reporting

When you are given an experiment, run that experiment. If you substitute a cheaper diagnostic, say so explicitly and in the first sentence. Reporting a different quantity as though it answered the question has happened more than once and cost a full cycle each time.

When something fails, report:

  1. what had to change — if a construction transfers only with modification, the modification is the finding, not a footnote;
  2. the obstruction, precisely, rather than a substitute result;
  3. whether the failure is of the bound or of the object — a true inequality that a certificate cannot see is not the same as a false one.

“Source validation passed” is not a build. Run ./manuscript/build.sh and report the page count and the undefined-reference count.

Do not produce a new version number to show motion.

Version-bump policy (Alex, 2026-09-23). No manuscript version for failure-only work. Failed attempts, equivalent reformulations, controls and audits go in evidence/nsNNN/ or audits/, with an appropriate board/map record and no version. Rejected pre-claim screens need no research row. There is no weekly exception. A new substantive bound, a precisely scoped proved closure, a correction to a mathematical result or a genuinely new certified computation can justify a version after review; a failed screen alone cannot. Historical v1.58–v1.66 contain positive results and certificates as well as failures; do not relabel them as nine failure-only releases.