From 3201518eb518918b5d4704592142c5e06bf68db5 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Fri, 25 Sep 2026 16:21:58 +0000 Subject: [PATCH 1/8] docs: place RN downstream crosswalk outside closed math_status packet Rescue #87's dependency classification by keeping it under docs/ so math_status_check's closed EXPECTED_NAMES stay intact. Link from open problems, research index, and packet README; declare the page in navigation with a regression test that refuses packet placement. Co-authored-by: Dylan Roy --- docs/DOWNSTREAM_RN_CROSSWALK_20260925.md | 76 ++++++++++++++++++++++++ docs/NAVIGATION.json | 3 +- docs/OPEN_PROBLEMS.md | 8 +++ docs/RESEARCH_INDEX.md | 5 +- docs/math_status/README.md | 7 +++ tests/test_navigation.py | 12 ++++ 6 files changed, 109 insertions(+), 2 deletions(-) create mode 100644 docs/DOWNSTREAM_RN_CROSSWALK_20260925.md diff --git a/docs/DOWNSTREAM_RN_CROSSWALK_20260925.md b/docs/DOWNSTREAM_RN_CROSSWALK_20260925.md new file mode 100644 index 000000000..b765647e2 --- /dev/null +++ b/docs/DOWNSTREAM_RN_CROSSWALK_20260925.md @@ -0,0 +1,76 @@ +# Downstream closure crosswalk — historical RN route versus 2026-09-24 successors + +**Date:** 2026-09-25 +**Disposition:** dependency classification only. This document changes no scientific +Boolean, frozen object, register row, or historical theorem statement. + +**Placement:** `docs/DOWNSTREAM_RN_CROSSWALK_20260925.md`. It does **not** live under +`docs/math_status/`. That packet directory is closed (`EXPECTED_NAMES`); an extra file +there fails `tools/math_status_check.py` without discharging or promoting anything. +This note is navigation and classification only. + +## Purpose + +The hardening branch still correctly records the historical D3-LEMMA-RN-UNIF route as +OPEN: ENV-RESCOV → ALLCELL-FDZ-Q4 → LOGQ-TAIL → SYM-Fw-jet → CH-LIFT, with Piece-2, +OBL-H5-JETMOD and FREEZE downstream. Historical objects `rnu_env.py`, +`CL_ANTHROPIC_BUNDLE_2026-09-17_v5.zip`, and `allcell_fdz_enclosures.json` are recorded +ABSENT. This crosswalk prevents newer author-side proofs from being mistaken for those +absent carriers or, conversely, old route-specific walls from being silently treated as +dependencies of every newer theorem. + +## Classification rule + +A newer theorem can bypass a historical-route requirement only when its own statement +and proof do not import that predicate. This does not set the old predicate TRUE. +Distinguish historical-route requirements, mathematical interfaces rederived by a +successor, and carrier/replay identities required only for the historical certificate. + +## Crosswalk + +| Historical object / predicate | 2026-09-24+ successor relation | Active classification | +|---|---|---| +| `rnu_env.py` | no successor claims byte identity or reconstruction | **ABSENT; historical-route blocker only** | +| `CL_ANTHROPIC_BUNDLE_2026-09-17_v5.zip` | no successor claims to be this archive | **ABSENT; historical-route blocker only** | +| `allcell_fdz_enclosures.json` | newer proofs do not claim this payload | **ABSENT; historical-route blocker only** | +| ENV-RESCOV | newer matrix/lifetime proof derives finite-jet covariance positivity from positive Fourier spectrum | **OPEN for historical D3; rederived qualitatively for newer route** | +| ALLCELL-FDZ-Q4 | fixed-remote count is analytic on fixed separated domains and does not consume the old cell carrier | **OPEN for historical D3; not a dependency of fixed-remote theorem** | +| LOGQ-TAIL | unrestricted lifetime proof supplies a separate Gaussian target-growth majorant; fixed-remote count uses compact marks | **OPEN historically; replaced only inside named successors** | +| SYM-Fw-jet | newer sources use centered Hermite/divided-difference transforms and finite-jet rank; no historical certificate identity claimed | **OPEN historically; analogous interface rederived where proved** | +| CH-LIFT | fixed-remote theorem avoids shrinking chart singularity by fixed ρ; mesoscopic Math- PR #7 reopens the scaled chart problem | **OPEN and still mathematically relevant** | +| Piece-2 annulus | fixed-remote covers only distance ≥ ρ; Math- PR #7 addresses x = r y on fixed scaled annuli; intermediate/pin-collision regions remain | **OPEN; active mathematical blocker** | +| OBL-H5-JETMOD | no 2026-09-24 proof claims a certified 24-jet band enclosure | **OPEN for historical/certificate route** | +| H5-ZBAND | newer sources have different normalizer results/scopes | **do not conflate; historical predicate unchanged** | +| H5-REMOTE-THRESHOLD | fixed-remote count supplies cubic expected count only on its declared height/spatial region | **partially bypassed there; shrinking/global complement OPEN** | +| `lemma_closed` | no successor is an operator fold of D3 | **FALSE** | +| `certified_C_H` | newer qualitative constants are not this certificate | **FALSE** | + +## Current active proof chain + +1. UNIFORM-MATRIX-CAP-LIFETIME-20260924-v1 / main [#63](https://github.com/d6g8k5htny-coder/main/issues/63): compact-mark global elder defect O(r³), unrestricted leading finite-bar density, full normalizer and marked Kac–Rice interfaces. +2. LIFETIME-BOUNDED-REMAINDER-20260924-v1 / main [#67](https://github.com/d6g8k5htny-coder/main/issues/67): unrestricted cell^(-1/3)+O(1) candidate and bounded nonselected density, importing named #63 interfaces. +3. RN-FIXED-REMOTE-WINDOW-20260924-v1 / main [#76](https://github.com/d6g8k5htny-coder/main/issues/76): actual three-determinant O(r⁵) numerator and O(r³) expected count for the between-pin height window at fixed positive spatial distance. +4. RN-MESOSCOPIC-ANNULUS-REDUCTION-20260925-v1 / [Math- PR #7](https://github.com/d6g8k5htny-coder/Math-/pull/7) (open draft): reduction for x = r y on fixed scaled annuli; exact divided-difference determinant ledger still open. + +None is a replacement carrier for the historical ABSENT files. None flips +`lemma_closed` away from false. Reading this page does not discharge +`OBL-H5-JETMOD` or `D3-LEMMA-RN-UNIF`. + +## Downstream consequence + +If the goal is to reproduce/promote the historical D1/D3 certificate exactly, the +ABSENT carriers and ordered walls remain blockers. If the goal is a new theorem by the +2026-09-24 analytic route, those carrier identities are not dependencies unless +explicitly imported; the live blockers are the named analytic-review interfaces plus +shrinking-annulus/collision complement. A future operator may formally retire the +historical route as superseded only through the applicable register/fold mechanism. +This crosswalk does not perform that governance action. + +## Related reading + +- [RN status (historical route walls)](math_status/STATUS_RN_UNIF.md) +- [Math status packet](math_status/README.md) — OPEN/HOLD; closed directory +- [Open problems §A5](OPEN_PROBLEMS.md) +- [Research index — RN counting](RESEARCH_INDEX.md) +- Fixed-remote proof: [Math- remote_window PROOF](https://github.com/d6g8k5htny-coder/Math-/blob/main/frontiers/remote_window_20260924/PROOF.md) +- Mesoscopic draft: [Math- PR #7](https://github.com/d6g8k5htny-coder/Math-/pull/7) diff --git a/docs/NAVIGATION.json b/docs/NAVIGATION.json index 324e71f8e..e6fe16158 100644 --- a/docs/NAVIGATION.json +++ b/docs/NAVIGATION.json @@ -12,7 +12,8 @@ "docs/RESEARCH_EXECUTION.md", "docs/RN_SIDE24.md", "docs/RN_SIDE24_DENSITY.md", - "docs/RN_SIDE24_CELL.md" + "docs/RN_SIDE24_CELL.md", + "docs/DOWNSTREAM_RN_CROSSWALK_20260925.md" ], "public_targets": [ { diff --git a/docs/OPEN_PROBLEMS.md b/docs/OPEN_PROBLEMS.md index 3cb2f35bc..6d526e960 100644 --- a/docs/OPEN_PROBLEMS.md +++ b/docs/OPEN_PROBLEMS.md @@ -101,6 +101,14 @@ much depth is granted. The original driver examples are labelled references; the cell adapter is described below. The frozen engine `engine/rn_engine/frozen/` is `mpmath` throughout. Both Pieces remain OPEN. +Historical ABSENT carriers and ordered D3 walls are not automatically prerequisites +of every newer RN probability note. The +[downstream RN crosswalk](DOWNSTREAM_RN_CROSSWALK_20260925.md) classifies which +predicates remain historical-route blockers, which interfaces successors rederive, +and which live analytic gaps (Piece-2 / shrinking annulus / collisions, +OBL-H5-JETMOD) stay open. It changes no Boolean and does not discharge either +obligation. + The new [SIDE24 point-law candidate](RN_SIDE24.md) separately assembles the normalized field's derivative covariance at `y=(1,1)`, conditions on the exact nine pins using positive interval LDL pivots, and replays the `M4/S4/y2` diff --git a/docs/RESEARCH_INDEX.md b/docs/RESEARCH_INDEX.md index 6ed40313d..aa25e9ec3 100644 --- a/docs/RESEARCH_INDEX.md +++ b/docs/RESEARCH_INDEX.md @@ -41,7 +41,10 @@ discharge [D3-LEMMA-RN-UNIF](math_status/STATUS_RN_UNIF.md). On this branch, use [RN status as written](math_status/STATUS_RN_UNIF.md) and the [execution guide](RESEARCH_EXECUTION.md). Absent source objects, cell coverage, and 24-jet requirements stay open. Do not apply a local support -inclusion to an arbitrary remote region. Do not invent a 24-jet roster. +inclusion to an arbitrary remote region. Do not invent a 24-jet roster. The +[downstream RN crosswalk](DOWNSTREAM_RN_CROSSWALK_20260925.md) separates those +historical-route walls from newer fixed-remote / mesoscopic analytic work without +retiring the historical route or flipping `lemma_closed`. ## P15 combinatorics diff --git a/docs/math_status/README.md b/docs/math_status/README.md index 54c6684f3..4173f1312 100644 --- a/docs/math_status/README.md +++ b/docs/math_status/README.md @@ -114,6 +114,13 @@ Nothing is invented to fill them. Navigation only: [`docs/RN_SIDE24_DENSITY.md`](../RN_SIDE24_DENSITY.md), and [`docs/RN_SIDE24_CELL.md`](../RN_SIDE24_CELL.md). +Historical-route ABSENT carriers versus newer analytic successors are classified +only in +[`docs/DOWNSTREAM_RN_CROSSWALK_20260925.md`](../DOWNSTREAM_RN_CROSSWALK_20260925.md) +(outside this closed packet directory). That page does not discharge +`OBL-H5-JETMOD` or `D3-LEMMA-RN-UNIF`, does not FREEZE either, and does not set +`lemma_closed`. + Where `aligned_to_base_tip` is already present, it is generation provenance (`1ea0ae8183fb0459c6678243946295518fded1ba` on the inventable probe index). It is not a re-run on the hardening tip observed at this edit, diff --git a/tests/test_navigation.py b/tests/test_navigation.py index 0ebb2ded5..8eceef6c4 100644 --- a/tests/test_navigation.py +++ b/tests/test_navigation.py @@ -117,6 +117,18 @@ def test_rn_side24_prep_triad_pages_are_declared_and_resolve(self): result=n.check(root) self.assertEqual(result['problems'],[],result) + def test_downstream_rn_crosswalk_page_is_declared_and_resolve(self): + root=Path(__file__).resolve().parents[1] + data=n.load(root) + page='docs/DOWNSTREAM_RN_CROSSWALK_20260925.md' + self.assertIn(page,data['pages']) + self.assertTrue((root/page).is_file(),page) + # Closed math_status packet must not absorb this navigation note. + self.assertFalse((root/'docs/math_status/DOWNSTREAM_CROSSWALK_20260925.md').exists()) + self.assertFalse((root/'docs/math_status/DOWNSTREAM_RN_CROSSWALK_20260925.md').exists()) + result=n.check(root) + self.assertEqual(result['problems'],[],result) + def test_navigation_pages_do_not_flip_claim_flags(self): root=Path(__file__).resolve().parents[1] data=n.load(root) From 75ba519ff2f960305ab9076fbb1bc673b86a5b64 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Fri, 25 Sep 2026 16:29:52 +0000 Subject: [PATCH 2/8] fix: restore OPEN_PROBLEMS.md to the twelve-project supplemental pin docs/OPEN_PROBLEMS.md is byte-pinned by tools/twelve_project_check.py SUPPLEMENTAL_DEPENDENCIES. Keep the crosswalk pointer on unpinned pages instead of rewriting that document. Co-authored-by: Dylan Roy --- docs/OPEN_PROBLEMS.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/docs/OPEN_PROBLEMS.md b/docs/OPEN_PROBLEMS.md index 6d526e960..3cb2f35bc 100644 --- a/docs/OPEN_PROBLEMS.md +++ b/docs/OPEN_PROBLEMS.md @@ -101,14 +101,6 @@ much depth is granted. The original driver examples are labelled references; the cell adapter is described below. The frozen engine `engine/rn_engine/frozen/` is `mpmath` throughout. Both Pieces remain OPEN. -Historical ABSENT carriers and ordered D3 walls are not automatically prerequisites -of every newer RN probability note. The -[downstream RN crosswalk](DOWNSTREAM_RN_CROSSWALK_20260925.md) classifies which -predicates remain historical-route blockers, which interfaces successors rederive, -and which live analytic gaps (Piece-2 / shrinking annulus / collisions, -OBL-H5-JETMOD) stay open. It changes no Boolean and does not discharge either -obligation. - The new [SIDE24 point-law candidate](RN_SIDE24.md) separately assembles the normalized field's derivative covariance at `y=(1,1)`, conditions on the exact nine pins using positive interval LDL pivots, and replays the `M4/S4/y2` From 292419f230f568cc198ee7a27e33a1ae6ac54c51 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Fri, 25 Sep 2026 16:40:10 +0000 Subject: [PATCH 3/8] docs: map D0 crosswalk rows to Math- hard-gate node IDs Align the human RN dependency classification with Math- PR #8 GRAPH.json (BLOCKED_ABSENT / OPEN_HISTORICAL / OPEN_ACTIVE) and the D4/D5 region complement. Keep OPEN_PROBLEMS.md byte-pinned. Scientific effect remains none. Co-authored-by: Dylan Roy --- docs/DOWNSTREAM_RN_CROSSWALK_20260925.md | 69 ++++++++++++++++-------- docs/RESEARCH_INDEX.md | 6 ++- tests/test_navigation.py | 8 +++ 3 files changed, 60 insertions(+), 23 deletions(-) diff --git a/docs/DOWNSTREAM_RN_CROSSWALK_20260925.md b/docs/DOWNSTREAM_RN_CROSSWALK_20260925.md index b765647e2..ce2ab4618 100644 --- a/docs/DOWNSTREAM_RN_CROSSWALK_20260925.md +++ b/docs/DOWNSTREAM_RN_CROSSWALK_20260925.md @@ -7,7 +7,8 @@ Boolean, frozen object, register row, or historical theorem statement. **Placement:** `docs/DOWNSTREAM_RN_CROSSWALK_20260925.md`. It does **not** live under `docs/math_status/`. That packet directory is closed (`EXPECTED_NAMES`); an extra file there fails `tools/math_status_check.py` without discharging or promoting anything. -This note is navigation and classification only. +This note is navigation and classification only. It also does **not** edit +`docs/OPEN_PROBLEMS.md`, which is byte-pinned by `tools/twelve_project_check.py`. ## Purpose @@ -19,6 +20,12 @@ ABSENT. This crosswalk prevents newer author-side proofs from being mistaken for absent carriers or, conversely, old route-specific walls from being silently treated as dependencies of every newer theorem. +This page is the human D0 classification companion to the executable Math- +[downstream hard gate](https://github.com/d6g8k5htny-coder/Math-/pull/8) +(`DOWNSTREAM-HARD-GATE-20260925-v1`, main [#86](https://github.com/d6g8k5htny-coder/main/issues/86) / +[#90](https://github.com/d6g8k5htny-coder/main/issues/90)). Installing or linking that +gate has scientific effect NONE. + ## Classification rule A newer theorem can bypass a historical-route requirement only when its own statement @@ -26,35 +33,51 @@ and proof do not import that predicate. This does not set the old predicate TRUE Distinguish historical-route requirements, mathematical interfaces rederived by a successor, and carrier/replay identities required only for the historical certificate. +Terminal integrity labels used by the Math- gate (not theorem acceptance): +`PROVED_REVIEWED`, `SUPERSEDED_NONBLOCKING`, `REFUTED`, `BLOCKED_ABSENT`. Green CI, +hashes, same-author review, and navigation success are never mathematical discharge. + ## Crosswalk -| Historical object / predicate | 2026-09-24+ successor relation | Active classification | +| Historical object / predicate | Math- gate node | Gate classification | Active reading | +|---|---|---|---| +| `rnu_env.py` | `hist.rnu_env.py` | `BLOCKED_ABSENT` | ABSENT; historical-route blocker only | +| `CL_ANTHROPIC_BUNDLE_2026-09-17_v5.zip` | `hist.CL_ANTHROPIC_BUNDLE_2026-09-17_v5.zip` | `BLOCKED_ABSENT` | ABSENT; historical-route blocker only | +| `allcell_fdz_enclosures.json` | `hist.allcell_fdz_enclosures.json` | `BLOCKED_ABSENT` | ABSENT; historical-route blocker only | +| ENV-RESCOV | `hist.ENV-RESCOV` | `OPEN_HISTORICAL` | OPEN for historical D3; rederived qualitatively where a newer route proves it | +| ALLCELL-FDZ-Q4 | `hist.ALLCELL-FDZ-Q4` | `OPEN_HISTORICAL` | OPEN for historical D3; not a dependency of the fixed-remote theorem | +| LOGQ-TAIL | `hist.LOGQ-TAIL` | `OPEN_HISTORICAL` | OPEN historically; replaced only inside named successors | +| SYM-Fw-jet | `hist.SYM-Fw-jet` | `OPEN_HISTORICAL` | OPEN historically; analogous interface rederived where proved | +| CH-LIFT | `hist.CH-LIFT` | `OPEN_ACTIVE` | OPEN and still mathematically relevant for shrinking charts | +| Piece-2 annulus | `hist.Piece-2-annulus` | `OPEN_ACTIVE` | OPEN; active mathematical blocker for shrinking/pin-collision regions | +| OBL-H5-JETMOD | `hist.OBL-H5-JETMOD` | `OPEN_HISTORICAL` | OPEN for historical/certificate route | +| H5-ZBAND | _(not a separate gate node)_ | — | do not conflate with newer normalizer scopes; historical predicate unchanged | +| H5-REMOTE-THRESHOLD | see D4/D5 region nodes | region inventory | partially bypassed on fixed-remote height/spatial region; shrinking/global complement OPEN | +| `lemma_closed` | `hist.lemma_closed` | `FALSE` | no successor is an operator fold of D3 | +| `certified_C_H` | _(register companion)_ | false | newer qualitative constants are not this certificate | + +## D4/D5 region complement (from the Math- gate) + +| Region | Gate node | Classification | |---|---|---| -| `rnu_env.py` | no successor claims byte identity or reconstruction | **ABSENT; historical-route blocker only** | -| `CL_ANTHROPIC_BUNDLE_2026-09-17_v5.zip` | no successor claims to be this archive | **ABSENT; historical-route blocker only** | -| `allcell_fdz_enclosures.json` | newer proofs do not claim this payload | **ABSENT; historical-route blocker only** | -| ENV-RESCOV | newer matrix/lifetime proof derives finite-jet covariance positivity from positive Fourier spectrum | **OPEN for historical D3; rederived qualitatively for newer route** | -| ALLCELL-FDZ-Q4 | fixed-remote count is analytic on fixed separated domains and does not consume the old cell carrier | **OPEN for historical D3; not a dependency of fixed-remote theorem** | -| LOGQ-TAIL | unrestricted lifetime proof supplies a separate Gaussian target-growth majorant; fixed-remote count uses compact marks | **OPEN historically; replaced only inside named successors** | -| SYM-Fw-jet | newer sources use centered Hermite/divided-difference transforms and finite-jet rank; no historical certificate identity claimed | **OPEN historically; analogous interface rederived where proved** | -| CH-LIFT | fixed-remote theorem avoids shrinking chart singularity by fixed ρ; mesoscopic Math- PR #7 reopens the scaled chart problem | **OPEN and still mathematically relevant** | -| Piece-2 annulus | fixed-remote covers only distance ≥ ρ; Math- PR #7 addresses x = r y on fixed scaled annuli; intermediate/pin-collision regions remain | **OPEN; active mathematical blocker** | -| OBL-H5-JETMOD | no 2026-09-24 proof claims a certified 24-jet band enclosure | **OPEN for historical/certificate route** | -| H5-ZBAND | newer sources have different normalizer results/scopes | **do not conflate; historical predicate unchanged** | -| H5-REMOTE-THRESHOLD | fixed-remote count supplies cubic expected count only on its declared height/spatial region | **partially bypassed there; shrinking/global complement OPEN** | -| `lemma_closed` | no successor is an operator fold of D3 | **FALSE** | -| `certified_C_H` | newer qualitative constants are not this certificate | **FALSE** | +| Fixed-remote covered set | `math.rn-region.fixed-remote` | `COVERED_BY_CANDIDATE` | +| Mesoscopic scaled annulus | `math.rn-region.mesoscopic-scaled-annulus` | `OPEN_ACTIVE` | +| Pin-collision | `math.rn-region.pin-collision` | `OPEN_ACTIVE` | +| Intermediate r≪\|x\|≪ρ | `math.rn-region.intermediate-r-to-rho` | `OPEN_ACTIVE` | +| Witness collision | `math.rn-region.witness-collision` | `OPEN_ACTIVE` | ## Current active proof chain -1. UNIFORM-MATRIX-CAP-LIFETIME-20260924-v1 / main [#63](https://github.com/d6g8k5htny-coder/main/issues/63): compact-mark global elder defect O(r³), unrestricted leading finite-bar density, full normalizer and marked Kac–Rice interfaces. -2. LIFETIME-BOUNDED-REMAINDER-20260924-v1 / main [#67](https://github.com/d6g8k5htny-coder/main/issues/67): unrestricted cell^(-1/3)+O(1) candidate and bounded nonselected density, importing named #63 interfaces. -3. RN-FIXED-REMOTE-WINDOW-20260924-v1 / main [#76](https://github.com/d6g8k5htny-coder/main/issues/76): actual three-determinant O(r⁵) numerator and O(r³) expected count for the between-pin height window at fixed positive spatial distance. -4. RN-MESOSCOPIC-ANNULUS-REDUCTION-20260925-v1 / [Math- PR #7](https://github.com/d6g8k5htny-coder/Math-/pull/7) (open draft): reduction for x = r y on fixed scaled annuli; exact divided-difference determinant ledger still open. +1. UNIFORM-MATRIX-CAP-LIFETIME-20260924-v1 / main [#63](https://github.com/d6g8k5htny-coder/main/issues/63) / gate `math.uniform-matrix-cap-lifetime`: compact-mark global elder defect O(r³), unrestricted leading finite-bar density, full normalizer and marked Kac–Rice interfaces. +2. LIFETIME-BOUNDED-REMAINDER-20260924-v1 / main [#67](https://github.com/d6g8k5htny-coder/main/issues/67) / gate `math.lifetime-remainder`: unrestricted cell^(-1/3)+O(1) candidate and bounded nonselected density, importing named #63 interfaces. +3. RN-FIXED-REMOTE-WINDOW-20260924-v1 / main [#76](https://github.com/d6g8k5htny-coder/main/issues/76) / gate `math.rn-fixed-remote-window`: actual three-determinant O(r⁵) numerator and O(r³) expected count for the between-pin height window at fixed positive spatial distance. +4. RN-MESOSCOPIC-ANNULUS-REDUCTION-20260925-v1 / [Math- PR #7](https://github.com/d6g8k5htny-coder/Math-/pull/7) (open draft) / gate `math.rn-mesoscopic-reduction`: reduction for x = r y on fixed scaled annuli; exact divided-difference determinant ledger still open. None is a replacement carrier for the historical ABSENT files. None flips `lemma_closed` away from false. Reading this page does not discharge -`OBL-H5-JETMOD` or `D3-LEMMA-RN-UNIF`. +`OBL-H5-JETMOD` or `D3-LEMMA-RN-UNIF`. The Math- hard gate refuses CONTROLLING +promotion of these author-side candidates while required dependencies stay +non-terminal. ## Downstream consequence @@ -70,7 +93,9 @@ This crosswalk does not perform that governance action. - [RN status (historical route walls)](math_status/STATUS_RN_UNIF.md) - [Math status packet](math_status/README.md) — OPEN/HOLD; closed directory -- [Open problems §A5](OPEN_PROBLEMS.md) +- [Open problems §A5](OPEN_PROBLEMS.md) (pinned; do not rewrite for navigation) - [Research index — RN counting](RESEARCH_INDEX.md) - Fixed-remote proof: [Math- remote_window PROOF](https://github.com/d6g8k5htny-coder/Math-/blob/main/frontiers/remote_window_20260924/PROOF.md) - Mesoscopic draft: [Math- PR #7](https://github.com/d6g8k5htny-coder/Math-/pull/7) +- Executable D0–D7 hard gate: [Math- PR #8](https://github.com/d6g8k5htny-coder/Math-/pull/8) +- Owner surfaces: [#86](https://github.com/d6g8k5htny-coder/main/issues/86), [#90](https://github.com/d6g8k5htny-coder/main/issues/90) diff --git a/docs/RESEARCH_INDEX.md b/docs/RESEARCH_INDEX.md index aa25e9ec3..43cf22791 100644 --- a/docs/RESEARCH_INDEX.md +++ b/docs/RESEARCH_INDEX.md @@ -44,7 +44,10 @@ coverage, and 24-jet requirements stay open. Do not apply a local support inclusion to an arbitrary remote region. Do not invent a 24-jet roster. The [downstream RN crosswalk](DOWNSTREAM_RN_CROSSWALK_20260925.md) separates those historical-route walls from newer fixed-remote / mesoscopic analytic work without -retiring the historical route or flipping `lemma_closed`. +retiring the historical route or flipping `lemma_closed`. Its D0 rows map to the +executable Math- [hard gate](https://github.com/d6g8k5htny-coder/Math-/pull/8) +(`BLOCKED_ABSENT` / `OPEN_HISTORICAL` / `OPEN_ACTIVE`); that gate has scientific +effect NONE. ## P15 combinatorics @@ -70,6 +73,7 @@ proof that nothing outside that budget exists. | Coefficient audit | Cone truncation, image/normalization comparison, and outward arithmetic | [#65](https://github.com/d6g8k5htny-coder/main/issues/65) | | RN and 24-jet route | The count-weighted integral on its declared region, and the missing numerical enclosures | [RN status](math_status/STATUS_RN_UNIF.md), [execution](RESEARCH_EXECUTION.md) | | Local obligations | `OBL-H5-JETMOD` and `D3-LEMMA-RN-UNIF` stay OPEN | [math status](math_status/STATUS.md), [JETMOD status](math_status/STATUS_JETMOD.md) | +| Downstream integrity gate | Fail-closed CONTROLLING promotion + reverse-impact; scientific effect NONE | [Math- #8](https://github.com/d6g8k5htny-coder/Math-/pull/8), [#90](https://github.com/d6g8k5htny-coder/main/issues/90) | | P15 scope | Audit the realized family and the restricted price theorem | [#59](https://github.com/d6g8k5htny-coder/main/issues/59), [#67](https://github.com/d6g8k5htny-coder/main/issues/67) | These are existing targets. [Campaign #61](https://github.com/d6g8k5htny-coder/main/issues/61) diff --git a/tests/test_navigation.py b/tests/test_navigation.py index 8eceef6c4..b4c20aaa1 100644 --- a/tests/test_navigation.py +++ b/tests/test_navigation.py @@ -126,6 +126,14 @@ def test_downstream_rn_crosswalk_page_is_declared_and_resolve(self): # Closed math_status packet must not absorb this navigation note. self.assertFalse((root/'docs/math_status/DOWNSTREAM_CROSSWALK_20260925.md').exists()) self.assertFalse((root/'docs/math_status/DOWNSTREAM_RN_CROSSWALK_20260925.md').exists()) + text=(root/page).read_text() + # D0 ABSENT carriers must stay named as historical-route blockers. + for token in ('rnu_env.py','CL_ANTHROPIC_BUNDLE_2026-09-17_v5.zip','allcell_fdz_enclosures.json', + 'hist.rnu_env.py','BLOCKED_ABSENT','OPEN_HISTORICAL','OPEN_ACTIVE'): + self.assertIn(token,text,token) + # Companion executable gate; scientific effect remains none. + self.assertIn('Math-/pull/8',text) + self.assertIn('scientific effect NONE',text) result=n.check(root) self.assertEqual(result['problems'],[],result) From 9b2fe1ba474032706bef3115a35f11f2e5797922 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Fri, 25 Sep 2026 16:46:50 +0000 Subject: [PATCH 4/8] docs: challenge Math- PR7 mesoscopic reduction without R17 credit Byte-bind the draft PROOF, accept the reduction framing, and refuse Lemma A / gamma_AB as established until the J0/det Sr ledger and pin modulus exist. Independence credit 0; scientific effect none. Co-authored-by: Dylan Roy --- docs/DOWNSTREAM_RN_CROSSWALK_20260925.md | 1 + docs/NAVIGATION.json | 3 +- docs/RESEARCH_INDEX.md | 1 + ...MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md | 107 ++++++++++++++++++ tests/test_navigation.py | 16 +++ 5 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 docs/RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md diff --git a/docs/DOWNSTREAM_RN_CROSSWALK_20260925.md b/docs/DOWNSTREAM_RN_CROSSWALK_20260925.md index ce2ab4618..081d8f059 100644 --- a/docs/DOWNSTREAM_RN_CROSSWALK_20260925.md +++ b/docs/DOWNSTREAM_RN_CROSSWALK_20260925.md @@ -98,4 +98,5 @@ This crosswalk does not perform that governance action. - Fixed-remote proof: [Math- remote_window PROOF](https://github.com/d6g8k5htny-coder/Math-/blob/main/frontiers/remote_window_20260924/PROOF.md) - Mesoscopic draft: [Math- PR #7](https://github.com/d6g8k5htny-coder/Math-/pull/7) - Executable D0–D7 hard gate: [Math- PR #8](https://github.com/d6g8k5htny-coder/Math-/pull/8) +- Mesoscopic reduction challenge (not R17): [RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md](RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md) - Owner surfaces: [#86](https://github.com/d6g8k5htny-coder/main/issues/86), [#90](https://github.com/d6g8k5htny-coder/main/issues/90) diff --git a/docs/NAVIGATION.json b/docs/NAVIGATION.json index e6fe16158..97743426f 100644 --- a/docs/NAVIGATION.json +++ b/docs/NAVIGATION.json @@ -13,7 +13,8 @@ "docs/RN_SIDE24.md", "docs/RN_SIDE24_DENSITY.md", "docs/RN_SIDE24_CELL.md", - "docs/DOWNSTREAM_RN_CROSSWALK_20260925.md" + "docs/DOWNSTREAM_RN_CROSSWALK_20260925.md", + "docs/RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md" ], "public_targets": [ { diff --git a/docs/RESEARCH_INDEX.md b/docs/RESEARCH_INDEX.md index 43cf22791..980703b05 100644 --- a/docs/RESEARCH_INDEX.md +++ b/docs/RESEARCH_INDEX.md @@ -74,6 +74,7 @@ proof that nothing outside that budget exists. | RN and 24-jet route | The count-weighted integral on its declared region, and the missing numerical enclosures | [RN status](math_status/STATUS_RN_UNIF.md), [execution](RESEARCH_EXECUTION.md) | | Local obligations | `OBL-H5-JETMOD` and `D3-LEMMA-RN-UNIF` stay OPEN | [math status](math_status/STATUS.md), [JETMOD status](math_status/STATUS_JETMOD.md) | | Downstream integrity gate | Fail-closed CONTROLLING promotion + reverse-impact; scientific effect NONE | [Math- #8](https://github.com/d6g8k5htny-coder/Math-/pull/8), [#90](https://github.com/d6g8k5htny-coder/main/issues/90) | +| RN mesoscopic reduction | Challenge note isolates missing `J_0` / `det S_r` ledger; not an R17 pass | [challenge](RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md), [Math- #7](https://github.com/d6g8k5htny-coder/Math-/pull/7) | | P15 scope | Audit the realized family and the restricted price theorem | [#59](https://github.com/d6g8k5htny-coder/main/issues/59), [#67](https://github.com/d6g8k5htny-coder/main/issues/67) | These are existing targets. [Campaign #61](https://github.com/d6g8k5htny-coder/main/issues/61) diff --git a/docs/RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md b/docs/RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md new file mode 100644 index 000000000..dba5dfb3d --- /dev/null +++ b/docs/RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md @@ -0,0 +1,107 @@ +# Challenge note — RN mesoscopic annulus reduction (Math- PR #7) + +**Date:** 2026-09-25 +**Disposition:** same-author technical challenge of an author-side reduction. +**Not** an R17 review record. **Not** a gate movement. Organizational independence +credit is **0**. `lemma_closed` stays false. Scientific effect: NONE. + +## Exact object + +| Field | Value | +|---|---| +| Object | `frontiers/rn_mesoscopic_20260925/PROOF.md` | +| Claim name in object | `RN-MESOSCOPIC-ANNULUS-REDUCTION-20260925-v1` | +| Math- surface | [PR #7](https://github.com/d6g8k5htny-coder/Math-/pull/7) (draft) | +| Bytes / sha256 | **7316** / `b7ef84cd1e5946c766e125e1ccff6bf611214254d35dc2e0778f019b8d48dcb9` | +| Companion recon | `RECONNAISSANCE.md` **1708** / `13b60b25326dc2bd857e54339e9ca2c75b34185d619ea24f32a60ae39fd90ec9` | +| Gate node | `math.rn-mesoscopic-reduction` (`AUTHOR_SIDE_REDUCTION`, layer D5) | + +Hash taken from the PR head branch `chatgpt/rn-mesoscopic-annulus-20260925` in this +session. A changed legitimate source needs a new declared identity. + +## What the object itself claims to establish + +1. Fixed-remote control with `dist ≥ ρ` does not cover `x = r y` with fixed + `1 < A ≤ |y| ≤ B < ∞`. +2. Raw remote gradients are the wrong witness variables as `r → 0` because residual + covariance collapses under the pin constraints. +3. After a centered divided-difference / Hermite residual map `J_r(y)`, Lemma A + asserts uniform positive-definiteness of the contact covariance on the compact + annulus away from scaled pin sites `±e₁/2`, plus uniform finite-`r` covariance / + Schur convergence. +4. After `x = r R y`, the expected count on the scaled annulus is an explicit + `r^d` spatial factor times a height window of length `k r³` times an integrand + `γ_AB`; an `O(r³)` annulus budget needs `γ_AB ≤ C r^{-d}` (or better). +5. The remaining load-bearing work is finite-dimensional: enumerate independent + `J_0(y)` rows, compute `det S_r(y)` powers, combine with the conditioned witness + Hessian determinant, and prove chart-boundary integrability. + +The object explicitly does **not** claim the exact `J_0` ledger, pin-neighborhood +limits, the `r ≪ |x| ≪ ρ` transition, witness-collision charts, or any 24-jet / +`lemma_closed` discharge. + +## Reconstruction (condensed) + +The reduction direction is coherent with the fixed-remote refusal to shrink `ρ` by +compactness alone: the parent/fixed-remote contact transform `U_r` already absorbs +the leading jet; the residual remote gradient must be re-expressed by divided +differences that remain finite at contact. Positive Fourier spectrum ⇒ vanishing +variance of a linear differential functional forces the symbol to vanish, which is +the right mechanism for Lemma A's contact positive-definiteness **once** a fixed +rank chart of independent rows is chosen. The spatial power identity +`dx = r^d dy` and height length `k r³` are elementary and correctly isolate +`γ_AB` as the remaining analytic object. + +## Challenges (do not treat as PASS_TECHNICAL) + +1. **Row list is an open hypothesis, not a lemma hypothesis.** Lemma A quantifies + over “the independent rows of `(U_0, J_0(y))`” after removing algebraic + dependence, but the object never exhibits those rows. A compactness argument + over an unspecified basis cannot be replayed. Next exact action remains §5 + item 1: enumerate gradient-plus-height contact rows after the six/eight pins. +2. **Rank-chart cover is deferred.** The “Important qualification” after Lemma A + admits that a single chart need not reach algebraic rank-change loci and that + overlap Jacobians must be controlled. Until that finite cover exists, Lemma A + is a mechanism sketch, not an annulus theorem. +3. **Pin excision must be quantitative.** Excluding `±e₁/2` from `K_AB` is + necessary, but the note gives no modulus for how close `|y ± e₁/2|` may + approach before the least eigenvalue collapses. That modulus is exactly the + pin-collision complement recorded as `math.rn-region.pin-collision` + (`OPEN_ACTIVE`) in the Math- hard gate / [D0 crosswalk](DOWNSTREAM_RN_CROSSWALK_20260925.md). +4. **`γ_AB ≤ C r^{-d}` is not evidenced.** Section 4 correctly states the target + inequality and that naive fixed-remote covariance cannot prove it. No lower or + upper contact determinant power is computed. An `O(r³)` claim for this annulus + would be an illegal promotion under [#90](https://github.com/d6g8k5htny-coder/main/issues/90) + while `math.rn-mesoscopic-reduction` stays non-terminal. +5. **Same-author / navigation non-discharge.** Green CI on Math- #7, this note, + or the hard-gate wiring cannot promote the reduction to CONTROLLING. + +## Negative controls attempted here + +| Control | Result | +|---|---| +| Re-hash PR7 `PROOF.md` / `RECONNAISSANCE.md` | Digests above; mismatch would refuse citation | +| Check object’s own “still open” list against gate D5 regions | Aligns with mesoscopic / pin-collision / intermediate / witness-collision `OPEN_ACTIVE` nodes | +| Search object text for `lemma_closed` flip or 24-jet discharge | Absent; object refuses legacy Boolean promotion | + +No symbolic `J_0` enumeration was executed in this session. That omission is why +this note is a challenge, not a technical pass. + +## Relation to downstream-first work + +| Surface | Role | +|---|---| +| [Math- #7](https://github.com/d6g8k5htny-coder/Math-/pull/7) | Object under challenge | +| [Math- #8](https://github.com/d6g8k5htny-coder/Math-/pull/8) | Fail-closed integrity gate; maps this object as `AUTHOR_SIDE_REDUCTION` | +| [main #92](https://github.com/d6g8k5htny-coder/main/pull/92) / [crosswalk](DOWNSTREAM_RN_CROSSWALK_20260925.md) | Human D0/D4/D5 classification companion | +| [#86](https://github.com/d6g8k5htny-coder/main/issues/86) D5 | Owns shrinking RN geometry; this note does not close D5 | + +## Verdict (informal; not an R17 `technical_verdict`) + +**AMEND-shaped challenge:** accept the reduction *framing* (wrong variables named, +compactness mechanism identified, remaining ledger isolated). Refuse any reading +that treats Lemma A or the `γ_AB` bound as established. Required amendment is the +explicit `J_0` / `det S_r` ledger on finitely many rank charts with a quantitative +pin-separation modulus. + +Gate status after this note: UNCHANGED. Independence credit: 0. diff --git a/tests/test_navigation.py b/tests/test_navigation.py index b4c20aaa1..370de65a5 100644 --- a/tests/test_navigation.py +++ b/tests/test_navigation.py @@ -137,6 +137,22 @@ def test_downstream_rn_crosswalk_page_is_declared_and_resolve(self): result=n.check(root) self.assertEqual(result['problems'],[],result) + def test_mesoscopic_challenge_page_is_declared_and_bound(self): + root=Path(__file__).resolve().parents[1] + data=n.load(root) + page='docs/RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md' + self.assertIn(page,data['pages']) + text=(root/page).read_text() + lowered=text.lower() + self.assertIn('b7ef84cd1e5946c766e125e1ccff6bf611214254d35dc2e0778f019b8d48dcb9',text) + self.assertIn('r17 review record',lowered) + self.assertIn('independence credit is **0**',lowered) + self.assertIn('scientific effect: none',lowered) + self.assertIn('not a gate movement',lowered) + self.assertNotIn('lemma_closed=true',lowered) + result=n.check(root) + self.assertEqual(result['problems'],[],result) + def test_navigation_pages_do_not_flip_claim_flags(self): root=Path(__file__).resolve().parents[1] data=n.load(root) From 47853b72be62776534b73d3fcb383abb1a674048 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Fri, 25 Sep 2026 16:47:47 +0000 Subject: [PATCH 5/8] test: harden mesoscopic challenge page assertions against markdown wrapping Co-authored-by: Dylan Roy --- tests/test_navigation.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_navigation.py b/tests/test_navigation.py index 370de65a5..4eeac945e 100644 --- a/tests/test_navigation.py +++ b/tests/test_navigation.py @@ -146,9 +146,9 @@ def test_mesoscopic_challenge_page_is_declared_and_bound(self): lowered=text.lower() self.assertIn('b7ef84cd1e5946c766e125e1ccff6bf611214254d35dc2e0778f019b8d48dcb9',text) self.assertIn('r17 review record',lowered) - self.assertIn('independence credit is **0**',lowered) + self.assertIn('credit is **0**',lowered) self.assertIn('scientific effect: none',lowered) - self.assertIn('not a gate movement',lowered) + self.assertIn('gate movement',lowered) self.assertNotIn('lemma_closed=true',lowered) result=n.check(root) self.assertEqual(result['problems'],[],result) From 0af4aa57c3f38b2e9e60d4c60f393b16cd80d209 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Fri, 25 Sep 2026 16:49:45 +0000 Subject: [PATCH 6/8] docs: keep mesoscopic challenge independence credit on one line Co-authored-by: Dylan Roy --- docs/RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md b/docs/RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md index dba5dfb3d..02d571167 100644 --- a/docs/RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md +++ b/docs/RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md @@ -2,8 +2,7 @@ **Date:** 2026-09-25 **Disposition:** same-author technical challenge of an author-side reduction. -**Not** an R17 review record. **Not** a gate movement. Organizational independence -credit is **0**. `lemma_closed` stays false. Scientific effect: NONE. +**Not** an R17 review record. **Not** a gate movement. Organizational independence credit is **0**. `lemma_closed` stays false. Scientific effect: NONE. ## Exact object From 6b897b9acdea33be2a32d32f9076d3dcb94680b3 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Fri, 25 Sep 2026 16:54:06 +0000 Subject: [PATCH 7/8] docs: mark Math- hard gate as in-development with eligibility hole OpenAI review of #92: do not cite Math- PR8 as a complete #90 enforcer while AUTHOR_SIDE_CANDIDATE can still become controlling after dependency terminality alone. Soften crosswalk/home/challenge prose accordingly. Co-authored-by: Dylan Roy --- docs/DOWNSTREAM_RN_CROSSWALK_20260925.md | 19 ++++++++++++------- docs/RESEARCH_INDEX.md | 10 ++++++---- ...MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md | 2 +- tests/test_navigation.py | 2 ++ 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/docs/DOWNSTREAM_RN_CROSSWALK_20260925.md b/docs/DOWNSTREAM_RN_CROSSWALK_20260925.md index 081d8f059..8e4cf4448 100644 --- a/docs/DOWNSTREAM_RN_CROSSWALK_20260925.md +++ b/docs/DOWNSTREAM_RN_CROSSWALK_20260925.md @@ -20,11 +20,15 @@ ABSENT. This crosswalk prevents newer author-side proofs from being mistaken for absent carriers or, conversely, old route-specific walls from being silently treated as dependencies of every newer theorem. -This page is the human D0 classification companion to the executable Math- +This page is the human D0 classification companion to the in-development Math- [downstream hard gate](https://github.com/d6g8k5htny-coder/Math-/pull/8) (`DOWNSTREAM-HARD-GATE-20260925-v1`, main [#86](https://github.com/d6g8k5htny-coder/main/issues/86) / -[#90](https://github.com/d6g8k5htny-coder/main/issues/90)). Installing or linking that -gate has scientific effect NONE. +[#90](https://github.com/d6g8k5htny-coder/main/issues/90)). Linking that draft has +scientific effect NONE. As of Math- head `5887a2f8`, the gate still has a load-bearing +own-node eligibility hole: dependency terminality alone can allow +`AUTHOR_SIDE_CANDIDATE` → `controlling`. Do **not** read this crosswalk as evidence +that Math- #8 already enforces every [#90](https://github.com/d6g8k5htny-coder/main/issues/90) +semantic. ## Classification rule @@ -75,9 +79,10 @@ hashes, same-author review, and navigation success are never mathematical discha None is a replacement carrier for the historical ABSENT files. None flips `lemma_closed` away from false. Reading this page does not discharge -`OBL-H5-JETMOD` or `D3-LEMMA-RN-UNIF`. The Math- hard gate refuses CONTROLLING -promotion of these author-side candidates while required dependencies stay -non-terminal. +`OBL-H5-JETMOD` or `D3-LEMMA-RN-UNIF`. The Math- hard-gate draft is intended to +refuse CONTROLLING promotion while required dependencies stay non-terminal, but +until its own-node eligibility repair lands it must not be cited as a complete +[#90](https://github.com/d6g8k5htny-coder/main/issues/90) enforcer. ## Downstream consequence @@ -97,6 +102,6 @@ This crosswalk does not perform that governance action. - [Research index — RN counting](RESEARCH_INDEX.md) - Fixed-remote proof: [Math- remote_window PROOF](https://github.com/d6g8k5htny-coder/Math-/blob/main/frontiers/remote_window_20260924/PROOF.md) - Mesoscopic draft: [Math- PR #7](https://github.com/d6g8k5htny-coder/Math-/pull/7) -- Executable D0–D7 hard gate: [Math- PR #8](https://github.com/d6g8k5htny-coder/Math-/pull/8) +- In-development D0–D7 hard gate (eligibility repair still open): [Math- PR #8](https://github.com/d6g8k5htny-coder/Math-/pull/8) - Mesoscopic reduction challenge (not R17): [RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md](RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md) - Owner surfaces: [#86](https://github.com/d6g8k5htny-coder/main/issues/86), [#90](https://github.com/d6g8k5htny-coder/main/issues/90) diff --git a/docs/RESEARCH_INDEX.md b/docs/RESEARCH_INDEX.md index 980703b05..1fd56b091 100644 --- a/docs/RESEARCH_INDEX.md +++ b/docs/RESEARCH_INDEX.md @@ -45,9 +45,11 @@ inclusion to an arbitrary remote region. Do not invent a 24-jet roster. The [downstream RN crosswalk](DOWNSTREAM_RN_CROSSWALK_20260925.md) separates those historical-route walls from newer fixed-remote / mesoscopic analytic work without retiring the historical route or flipping `lemma_closed`. Its D0 rows map to the -executable Math- [hard gate](https://github.com/d6g8k5htny-coder/Math-/pull/8) -(`BLOCKED_ABSENT` / `OPEN_HISTORICAL` / `OPEN_ACTIVE`); that gate has scientific -effect NONE. +in-development Math- [hard gate](https://github.com/d6g8k5htny-coder/Math-/pull/8) +node IDs (`BLOCKED_ABSENT` / `OPEN_HISTORICAL` / `OPEN_ACTIVE`). Linking that draft +has scientific effect NONE and does not claim the gate already enforces every +[#90](https://github.com/d6g8k5htny-coder/main/issues/90) semantic (own-node +eligibility repair still open on Math- #8). ## P15 combinatorics @@ -73,7 +75,7 @@ proof that nothing outside that budget exists. | Coefficient audit | Cone truncation, image/normalization comparison, and outward arithmetic | [#65](https://github.com/d6g8k5htny-coder/main/issues/65) | | RN and 24-jet route | The count-weighted integral on its declared region, and the missing numerical enclosures | [RN status](math_status/STATUS_RN_UNIF.md), [execution](RESEARCH_EXECUTION.md) | | Local obligations | `OBL-H5-JETMOD` and `D3-LEMMA-RN-UNIF` stay OPEN | [math status](math_status/STATUS.md), [JETMOD status](math_status/STATUS_JETMOD.md) | -| Downstream integrity gate | Fail-closed CONTROLLING promotion + reverse-impact; scientific effect NONE | [Math- #8](https://github.com/d6g8k5htny-coder/Math-/pull/8), [#90](https://github.com/d6g8k5htny-coder/main/issues/90) | +| Downstream integrity gate | In-development CONTROLLING/fail-closed draft; own-node eligibility repair still open; scientific effect NONE | [Math- #8](https://github.com/d6g8k5htny-coder/Math-/pull/8), [#90](https://github.com/d6g8k5htny-coder/main/issues/90) | | RN mesoscopic reduction | Challenge note isolates missing `J_0` / `det S_r` ledger; not an R17 pass | [challenge](RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md), [Math- #7](https://github.com/d6g8k5htny-coder/Math-/pull/7) | | P15 scope | Audit the realized family and the restricted price theorem | [#59](https://github.com/d6g8k5htny-coder/main/issues/59), [#67](https://github.com/d6g8k5htny-coder/main/issues/67) | diff --git a/docs/RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md b/docs/RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md index 02d571167..b9b43a76a 100644 --- a/docs/RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md +++ b/docs/RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md @@ -91,7 +91,7 @@ this note is a challenge, not a technical pass. | Surface | Role | |---|---| | [Math- #7](https://github.com/d6g8k5htny-coder/Math-/pull/7) | Object under challenge | -| [Math- #8](https://github.com/d6g8k5htny-coder/Math-/pull/8) | Fail-closed integrity gate; maps this object as `AUTHOR_SIDE_REDUCTION` | +| [Math- #8](https://github.com/d6g8k5htny-coder/Math-/pull/8) | In-development integrity-gate draft; maps this object as `AUTHOR_SIDE_REDUCTION`; own-node eligibility repair still open | | [main #92](https://github.com/d6g8k5htny-coder/main/pull/92) / [crosswalk](DOWNSTREAM_RN_CROSSWALK_20260925.md) | Human D0/D4/D5 classification companion | | [#86](https://github.com/d6g8k5htny-coder/main/issues/86) D5 | Owns shrinking RN geometry; this note does not close D5 | diff --git a/tests/test_navigation.py b/tests/test_navigation.py index 4eeac945e..80d564b55 100644 --- a/tests/test_navigation.py +++ b/tests/test_navigation.py @@ -134,6 +134,8 @@ def test_downstream_rn_crosswalk_page_is_declared_and_resolve(self): # Companion executable gate; scientific effect remains none. self.assertIn('Math-/pull/8',text) self.assertIn('scientific effect NONE',text) + self.assertIn('own-node eligibility',text) + self.assertIn('in-development',text.lower()) result=n.check(root) self.assertEqual(result['problems'],[],result) From db0645fc6223265e96b377089db0ec856798ccbc Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Fri, 25 Sep 2026 16:59:41 +0000 Subject: [PATCH 8/8] docs: handoff Math- PR8 own-node eligibility patch from main Mirror the D0 unblock pattern: Cursor cannot push Math- (403), so file the validated CONTROLLING_ELIGIBLE repair as a portable patch + apply recipe on main. Scientific effect remains none. Co-authored-by: Dylan Roy --- docs/DOWNSTREAM_RN_CROSSWALK_20260925.md | 1 + docs/MATH_PR8_ELIGIBILITY_HANDOFF_20260925.md | 70 +++++++ docs/NAVIGATION.json | 3 +- docs/RESEARCH_INDEX.md | 2 +- .../math_pr8_eligibility_fix_REPORT.json | 54 ++++++ .../math_pr8_own_node_eligibility.patch | 171 ++++++++++++++++++ tests/test_navigation.py | 24 +++ 7 files changed, 323 insertions(+), 2 deletions(-) create mode 100644 docs/MATH_PR8_ELIGIBILITY_HANDOFF_20260925.md create mode 100644 docs/patches/math_pr8_eligibility_fix_REPORT.json create mode 100644 docs/patches/math_pr8_own_node_eligibility.patch diff --git a/docs/DOWNSTREAM_RN_CROSSWALK_20260925.md b/docs/DOWNSTREAM_RN_CROSSWALK_20260925.md index 8e4cf4448..e8166fd20 100644 --- a/docs/DOWNSTREAM_RN_CROSSWALK_20260925.md +++ b/docs/DOWNSTREAM_RN_CROSSWALK_20260925.md @@ -103,5 +103,6 @@ This crosswalk does not perform that governance action. - Fixed-remote proof: [Math- remote_window PROOF](https://github.com/d6g8k5htny-coder/Math-/blob/main/frontiers/remote_window_20260924/PROOF.md) - Mesoscopic draft: [Math- PR #7](https://github.com/d6g8k5htny-coder/Math-/pull/7) - In-development D0–D7 hard gate (eligibility repair still open): [Math- PR #8](https://github.com/d6g8k5htny-coder/Math-/pull/8) +- Math- #8 eligibility repair handoff (main cannot push Math-): [MATH_PR8_ELIGIBILITY_HANDOFF_20260925.md](MATH_PR8_ELIGIBILITY_HANDOFF_20260925.md) - Mesoscopic reduction challenge (not R17): [RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md](RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md) - Owner surfaces: [#86](https://github.com/d6g8k5htny-coder/main/issues/86), [#90](https://github.com/d6g8k5htny-coder/main/issues/90) diff --git a/docs/MATH_PR8_ELIGIBILITY_HANDOFF_20260925.md b/docs/MATH_PR8_ELIGIBILITY_HANDOFF_20260925.md new file mode 100644 index 000000000..8f6bbb903 --- /dev/null +++ b/docs/MATH_PR8_ELIGIBILITY_HANDOFF_20260925.md @@ -0,0 +1,70 @@ +# Math- PR #8 own-node eligibility handoff + +**Object:** MATH-PR8-OWN-NODE-ELIGIBILITY-20260925-v1 +**Against:** Math- head `5887a2f8aaf121760362e6e90f9974f1e0078bc5` +**Author:** Cursor (main write). **Scientific effect: NONE.** + +## Diagnosis + +[Math- PR #8](https://github.com/d6g8k5htny-coder/Math-/pull/8) implements the +[#90](https://github.com/d6g8k5htny-coder/main/issues/90) / [#86](https://github.com/d6g8k5htny-coder/main/issues/86) +downstream hard gate, but at head `5887a2f8` dependency terminality alone can +still allow an `AUTHOR_SIDE_CANDIDATE` node to become `controlling`. That fails +the own-node eligibility reading of #90: only a positive reviewed disposition +(`PROVED_REVIEWED`) may become controlling, and terminal dependencies remain +separately necessary. + +## Exact fix (ready to apply on Math-) + +Portable patch: [`patches/math_pr8_own_node_eligibility.patch`](patches/math_pr8_own_node_eligibility.patch) + +SHA-256 `1648237df8525276b17704d12a934cc97c12b1f1184af671ee894b65d60816f1` (8156 bytes). + +Applies on top of Math- `5887a2f8`: + +1. Add `CONTROLLING_ELIGIBLE = {PROVED_REVIEWED}` and enforce it in + `promotion_allowed()`. +2. Replace fail-open `test_promote_after_all_terminal_deps` with: + - `test_author_side_with_terminal_deps_cannot_become_controlling` (negative) + - `test_proved_reviewed_with_terminal_deps_may_become_controlling` (positive) +3. Add mutant `bypass_own_node_eligibility`; raise `EXPECTED_TESTS` to 28. +4. Refresh `RESULTS.json` / `SOURCE_FILES.json` hashes after the gate change. + +Local verification (recorded in +[`patches/math_pr8_eligibility_fix_REPORT.json`](patches/math_pr8_eligibility_fix_REPORT.json)): + +```text +28 tests, 8 distinct semantic mutations, modes normal+optimized → passed +``` + +## Why this is filed on main + +Cursor Cloud Agent can write `main` but received **403 pushing to +`d6g8k5htny-coder/Math-`** (`Permission denied to cursor[bot]`). The repair was +prepared and locally verified in a Math- worktree; it could not be published on +that forge tip from this session. This note + patch are the source-bound +eligibility recipe for an agent/owner with Math- write access (or for merging +into Math- #8). + +## Apply recipe + +```sh +git clone --filter=blob:none https://github.com/d6g8k5htny-coder/Math-.git +cd Math- +git checkout 5887a2f8 +git apply /path/to/main/docs/patches/math_pr8_own_node_eligibility.patch +python -B -S frontiers/downstream_gate_20260925/hard_gate.py +python -B -S -m unittest discover -s frontiers/downstream_gate_20260925 -p 'test_*.py' -v +python -B -S frontiers/downstream_gate_20260925/run_validation.py --output /tmp/downstream-gate-eligibility +``` + +Then push to the Math- #8 branch (or open a successor PR) from a credential that +can write Math-. + +## Non-claims + +- Does not merge Math- #8 or main [#92](https://github.com/d6g8k5htny-coder/main/pull/92). +- Does not flip any scientific Boolean; `lemma_closed` stays false. +- Does not edit Math- PR #7 or award R17 independence credit. +- Does not touch the #91 Drive vault. +- Installing the patch does not promote mathematics; it only closes an integrity hole. diff --git a/docs/NAVIGATION.json b/docs/NAVIGATION.json index 97743426f..a3d21db99 100644 --- a/docs/NAVIGATION.json +++ b/docs/NAVIGATION.json @@ -14,7 +14,8 @@ "docs/RN_SIDE24_DENSITY.md", "docs/RN_SIDE24_CELL.md", "docs/DOWNSTREAM_RN_CROSSWALK_20260925.md", - "docs/RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md" + "docs/RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md", + "docs/MATH_PR8_ELIGIBILITY_HANDOFF_20260925.md" ], "public_targets": [ { diff --git a/docs/RESEARCH_INDEX.md b/docs/RESEARCH_INDEX.md index 1fd56b091..bc1a92c40 100644 --- a/docs/RESEARCH_INDEX.md +++ b/docs/RESEARCH_INDEX.md @@ -75,7 +75,7 @@ proof that nothing outside that budget exists. | Coefficient audit | Cone truncation, image/normalization comparison, and outward arithmetic | [#65](https://github.com/d6g8k5htny-coder/main/issues/65) | | RN and 24-jet route | The count-weighted integral on its declared region, and the missing numerical enclosures | [RN status](math_status/STATUS_RN_UNIF.md), [execution](RESEARCH_EXECUTION.md) | | Local obligations | `OBL-H5-JETMOD` and `D3-LEMMA-RN-UNIF` stay OPEN | [math status](math_status/STATUS.md), [JETMOD status](math_status/STATUS_JETMOD.md) | -| Downstream integrity gate | In-development CONTROLLING/fail-closed draft; own-node eligibility repair still open; scientific effect NONE | [Math- #8](https://github.com/d6g8k5htny-coder/Math-/pull/8), [#90](https://github.com/d6g8k5htny-coder/main/issues/90) | +| Downstream integrity gate | In-development CONTROLLING/fail-closed draft; own-node eligibility repair still open; scientific effect NONE | [Math- #8](https://github.com/d6g8k5htny-coder/Math-/pull/8), [eligibility handoff](MATH_PR8_ELIGIBILITY_HANDOFF_20260925.md), [#90](https://github.com/d6g8k5htny-coder/main/issues/90) | | RN mesoscopic reduction | Challenge note isolates missing `J_0` / `det S_r` ledger; not an R17 pass | [challenge](RN_MESOSCOPIC_REDUCTION_CHALLENGE_20260925.md), [Math- #7](https://github.com/d6g8k5htny-coder/Math-/pull/7) | | P15 scope | Audit the realized family and the restricted price theorem | [#59](https://github.com/d6g8k5htny-coder/main/issues/59), [#67](https://github.com/d6g8k5htny-coder/main/issues/67) | diff --git a/docs/patches/math_pr8_eligibility_fix_REPORT.json b/docs/patches/math_pr8_eligibility_fix_REPORT.json new file mode 100644 index 000000000..9a444052b --- /dev/null +++ b/docs/patches/math_pr8_eligibility_fix_REPORT.json @@ -0,0 +1,54 @@ +{ + "distinct_semantic_mutations": 8, + "distinct_tests": 28, + "meaning": "same-author integrity-gate checks for main #90/#86; not analytic review or theorem acceptance", + "modes": [ + "normal", + "optimized" + ], + "passed": true, + "python": "3.12.3 (main, Mar 23 2026, 19:04:32) [GCC 13.3.0]", + "source_files": { + "D0_CI_UNBLOCK.md": { + "bytes": 2068, + "sha256": "2423fa7d3519a5ba06739cb43cc72e26db70020350338a1fa508e5adfb109643" + }, + "GRAPH.json": { + "bytes": 12191, + "sha256": "34100e8541f7b1893bbc7207d2183762b60070c443da28f670953437515ef496" + }, + "README.md": { + "bytes": 2231, + "sha256": "57776258bc5ab409fa6f784e2a9a99c6a2d37d40a537ebc0e348b405e026bae9" + }, + "RESULTS.json": { + "bytes": 5928, + "sha256": "53e6a73c47e3662b1b4613c6603a3017dbc0ce57ec3bfd5ad0f084205f164069" + }, + "SCOPE.md": { + "bytes": 2218, + "sha256": "c7b5bb0ec34f53395b96ae24edceb3b5b0a3451caf7df6205b924d40e9e9fd84" + }, + "SELECTOR_REGION.json": { + "bytes": 2753, + "sha256": "53fa0ec88e417882eff2a40e4b575c639d43b7e8787e7fb8917aa22ace79390d" + }, + "SOURCE_FILES.json": { + "bytes": 1312, + "sha256": "6ac23297cef7c0526e1b4a4b081b7b48bf6a156ed6bcb9250d71df50bd0f619e" + }, + "hard_gate.py": { + "bytes": 18185, + "sha256": "2f153ccc94245ef26394714fac79992324a649822c8171c7d67c7b2456f02b79" + }, + "run_validation.py": { + "bytes": 5680, + "sha256": "581d29958ff47a0c2b686e27a5f1fbc0d6727aa420c05b5b0e6f6222d7ea0988" + }, + "test_hard_gate.py": { + "bytes": 13250, + "sha256": "0374457a5e698a81d86c49339a02c61a2dd48092d34461a6d9ac80641981a324" + } + }, + "sources_unchanged": true +} diff --git a/docs/patches/math_pr8_own_node_eligibility.patch b/docs/patches/math_pr8_own_node_eligibility.patch new file mode 100644 index 000000000..39ad5776a --- /dev/null +++ b/docs/patches/math_pr8_own_node_eligibility.patch @@ -0,0 +1,171 @@ +diff --git a/frontiers/downstream_gate_20260925/RESULTS.json b/frontiers/downstream_gate_20260925/RESULTS.json +index 78a671c..d27c87f 100644 +--- a/frontiers/downstream_gate_20260925/RESULTS.json ++++ b/frontiers/downstream_gate_20260925/RESULTS.json +@@ -66,6 +66,7 @@ + "node": "math.rn-fixed-remote-window", + "reasons": [ + "required transitive dependency is not terminally classified", ++ "own-node classification is not CONTROLLING-eligible (need PROVED_REVIEWED; dependency terminality is not enough)", + "evidence consists only of non-discharge tokens" + ], + "refused": true +@@ -79,7 +80,8 @@ + "missing_terminal": [], + "node": "hist.ENV-RESCOV", + "reasons": [ +- "required BLOCKED_ABSENT dependency forces HOLD" ++ "required BLOCKED_ABSENT dependency forces HOLD", ++ "own-node classification is not CONTROLLING-eligible (need PROVED_REVIEWED; dependency terminality is not enough)" + ], + "required_dependencies": [ + "hist.rnu_env.py" +@@ -98,7 +100,8 @@ + ], + "node": "math.lifetime-remainder", + "reasons": [ +- "required transitive dependency is not terminally classified" ++ "required transitive dependency is not terminally classified", ++ "own-node classification is not CONTROLLING-eligible (need PROVED_REVIEWED; dependency terminality is not enough)" + ], + "required_dependencies": [ + "math.uniform-matrix-cap-lifetime" +@@ -117,7 +120,8 @@ + ], + "node": "eng.main-pr87-crosswalk", + "reasons": [ +- "required transitive dependency is not terminally classified" ++ "required transitive dependency is not terminally classified", ++ "own-node classification is not CONTROLLING-eligible (need PROVED_REVIEWED; dependency terminality is not enough)" + ], + "required_dependencies": [ + "eng.d0-packet-allowlist-fix" +@@ -136,7 +140,8 @@ + ], + "node": "math.side24-coefficient", + "reasons": [ +- "required transitive dependency is not terminally classified" ++ "required transitive dependency is not terminally classified", ++ "own-node classification is not CONTROLLING-eligible (need PROVED_REVIEWED; dependency terminality is not enough)" + ], + "required_dependencies": [ + "math.uniform-matrix-cap-lifetime" +diff --git a/frontiers/downstream_gate_20260925/SOURCE_FILES.json b/frontiers/downstream_gate_20260925/SOURCE_FILES.json +index a0c005b..785cc36 100644 +--- a/frontiers/downstream_gate_20260925/SOURCE_FILES.json ++++ b/frontiers/downstream_gate_20260925/SOURCE_FILES.json +@@ -13,8 +13,8 @@ + "sha256": "57776258bc5ab409fa6f784e2a9a99c6a2d37d40a537ebc0e348b405e026bae9" + }, + "RESULTS.json": { +- "bytes": 5308, +- "sha256": "814948372dd6fc6690d097b24a363d6075330f4645dadcae282d1a2cdce85742" ++ "bytes": 5928, ++ "sha256": "53e6a73c47e3662b1b4613c6603a3017dbc0ce57ec3bfd5ad0f084205f164069" + }, + "SCOPE.md": { + "bytes": 2218, +@@ -25,16 +25,16 @@ + "sha256": "53fa0ec88e417882eff2a40e4b575c639d43b7e8787e7fb8917aa22ace79390d" + }, + "hard_gate.py": { +- "bytes": 17698, +- "sha256": "a5a662badb7d051cff1313810f5660534a13df9573dd87ff61279739d9bcbf94" ++ "bytes": 18185, ++ "sha256": "2f153ccc94245ef26394714fac79992324a649822c8171c7d67c7b2456f02b79" + }, + "run_validation.py": { +- "bytes": 5512, +- "sha256": "1d35469d156d0e94947e853ffe60c0ef3193a45729d07b3bebf9973cdbc82627" ++ "bytes": 5680, ++ "sha256": "581d29958ff47a0c2b686e27a5f1fbc0d6727aa420c05b5b0e6f6222d7ea0988" + }, + "test_hard_gate.py": { +- "bytes": 12466, +- "sha256": "2786a4f9ea9c00eaf1cf7ca970989d623512c3d32054c4cee979b6b065dbccb6" ++ "bytes": 13250, ++ "sha256": "0374457a5e698a81d86c49339a02c61a2dd48092d34461a6d9ac80641981a324" + } + }, + "meaning": "Exact identity, not theorem correctness", +diff --git a/frontiers/downstream_gate_20260925/hard_gate.py b/frontiers/downstream_gate_20260925/hard_gate.py +index d5705e3..673a324 100644 +--- a/frontiers/downstream_gate_20260925/hard_gate.py ++++ b/frontiers/downstream_gate_20260925/hard_gate.py +@@ -22,6 +22,13 @@ TERMINAL = frozenset({ + 'BLOCKED_ABSENT', + }) + ++# Own-node eligibility for CONTROLLING (main #90). Dependency terminality is ++# separately necessary; it is not sufficient. Only a positive reviewed ++# disposition may become controlling. ++CONTROLLING_ELIGIBLE = frozenset({ ++ 'PROVED_REVIEWED', ++}) ++ + # Classifications that may appear on live nodes but are never terminal discharge. + NONTERMINAL = frozenset({ + 'OPEN_HISTORICAL', +@@ -151,6 +158,11 @@ def promotion_allowed(graph: dict[str, Any], node_id: str) -> dict[str, Any]: + reasons.append('required transitive dependency is not terminally classified') + if node.get('classification') == 'FALSE' and node_id == 'hist.lemma_closed': + reasons.append('lemma_closed register must remain FALSE; gate never promotes it') ++ if node.get('classification') not in CONTROLLING_ELIGIBLE: ++ reasons.append( ++ 'own-node classification is not CONTROLLING-eligible ' ++ '(need PROVED_REVIEWED; dependency terminality is not enough)' ++ ) + + allowed = not reasons + return { +diff --git a/frontiers/downstream_gate_20260925/run_validation.py b/frontiers/downstream_gate_20260925/run_validation.py +index ebec8bc..b260ab5 100644 +--- a/frontiers/downstream_gate_20260925/run_validation.py ++++ b/frontiers/downstream_gate_20260925/run_validation.py +@@ -8,8 +8,12 @@ import subprocess + import sys + + ROOT = Path(__file__).resolve().parent +-EXPECTED_TESTS = 27 ++EXPECTED_TESTS = 28 + MUTANTS = { ++ 'bypass_own_node_eligibility': ( ++ "if node.get('classification') not in CONTROLLING_ELIGIBLE:", ++ "if False: # bypassed own-node eligibility", ++ ), + 'allow_green_ci': ( + "only_non_discharge = bool(tokens) and all(t in non_discharge for t in tokens)", + "only_non_discharge = False", +diff --git a/frontiers/downstream_gate_20260925/test_hard_gate.py b/frontiers/downstream_gate_20260925/test_hard_gate.py +index fd16513..0c95590 100644 +--- a/frontiers/downstream_gate_20260925/test_hard_gate.py ++++ b/frontiers/downstream_gate_20260925/test_hard_gate.py +@@ -233,13 +233,25 @@ class HardGateControls(unittest.TestCase): + self.assertTrue(payload['d0_ci_unblock']['ready']) + self.assertGreaterEqual(payload['selector_region']['open_or_partial_cell_count'], 15) + +- def test_promote_after_all_terminal_deps(self): ++ def test_author_side_with_terminal_deps_cannot_become_controlling(self): + g = copy.deepcopy(self.graph) +- # Synthesize a tiny legal subgraph: make parent terminal reviewed. ++ # Dependency terminality alone must not promote an author-side candidate. + g['nodes']['math.p15-price-boundary']['classification'] = 'REFUTED' + g['nodes']['math.p15-full-price']['classification'] = 'AUTHOR_SIDE_CANDIDATE' + decision = m.promotion_allowed(g, 'math.p15-full-price') +- self.assertTrue(decision['allowed']) ++ self.assertFalse(decision['allowed']) ++ self.assertTrue(any('own-node' in r for r in decision['reasons'])) ++ applied = m.apply_promotion(g, 'math.p15-full-price') ++ self.assertFalse(applied['decision']['ok']) ++ self.assertFalse(applied['graph']['nodes']['math.p15-full-price']['controlling']) ++ ++ def test_proved_reviewed_with_terminal_deps_may_become_controlling(self): ++ g = copy.deepcopy(self.graph) ++ # Positive control: own-node PROVED_REVIEWED + terminal required deps. ++ g['nodes']['math.p15-price-boundary']['classification'] = 'REFUTED' ++ g['nodes']['math.p15-full-price']['classification'] = 'PROVED_REVIEWED' ++ decision = m.promotion_allowed(g, 'math.p15-full-price') ++ self.assertTrue(decision['allowed'], decision) + applied = m.apply_promotion(g, 'math.p15-full-price') + self.assertTrue(applied['decision']['ok']) + self.assertTrue(applied['graph']['nodes']['math.p15-full-price']['controlling']) diff --git a/tests/test_navigation.py b/tests/test_navigation.py index 80d564b55..42ad1562d 100644 --- a/tests/test_navigation.py +++ b/tests/test_navigation.py @@ -155,6 +155,30 @@ def test_mesoscopic_challenge_page_is_declared_and_bound(self): result=n.check(root) self.assertEqual(result['problems'],[],result) + def test_math_pr8_eligibility_handoff_is_declared_and_bound(self): + root=Path(__file__).resolve().parents[1] + data=n.load(root) + page='docs/MATH_PR8_ELIGIBILITY_HANDOFF_20260925.md' + patch=root/'docs/patches/math_pr8_own_node_eligibility.patch' + self.assertIn(page,data['pages']) + self.assertTrue((root/page).is_file(),page) + self.assertTrue(patch.is_file(),str(patch)) + text=(root/page).read_text() + lowered=text.lower() + self.assertIn('5887a2f8aaf121760362e6e90f9974f1e0078bc5',text) + self.assertIn('CONTROLLING_ELIGIBLE',text) + self.assertIn('PROVED_REVIEWED',text) + self.assertIn('1648237df8525276b17704d12a934cc97c12b1f1184af671ee894b65d60816f1',text) + self.assertIn('scientific effect: none',lowered) + self.assertIn('403',text) + self.assertNotIn('lemma_closed=true',lowered) + # Patch must target Math- gate sources, not invent a second gate on main. + patch_text=patch.read_text() + self.assertIn('frontiers/downstream_gate_20260925/hard_gate.py',patch_text) + self.assertIn('CONTROLLING_ELIGIBLE',patch_text) + result=n.check(root) + self.assertEqual(result['problems'],[],result) + def test_navigation_pages_do_not_flip_claim_flags(self): root=Path(__file__).resolve().parents[1] data=n.load(root)