From dcbf997e8fc096f7cc5ceb525c7bf40f989470c3 Mon Sep 17 00:00:00 2001 From: mdheller <21163552+mdheller@users.noreply.github.com> Date: Mon, 11 May 2026 13:31:56 -0400 Subject: [PATCH 1/7] Add Milestone 5 four-prime baseline --- data/milestone5/m5_four_prime_baseline.json | 146 ++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 data/milestone5/m5_four_prime_baseline.json diff --git a/data/milestone5/m5_four_prime_baseline.json b/data/milestone5/m5_four_prime_baseline.json new file mode 100644 index 0000000..6623a04 --- /dev/null +++ b/data/milestone5/m5_four_prime_baseline.json @@ -0,0 +1,146 @@ +{ + "schema_version": "bsd.milestone5.four-prime-baseline.v1", + "state": "Milestone 5 scaffold; inherited evidence only", + "claim_boundary": [ + "This baseline is inherited input for controller-routed Milestone 5 gates.", + "It does not certify rank exactness for unresolved targets.", + "It does not promote any claim or mark any gate as passed." + ], + "targets": [ + { + "n": 257, + "search_class": "no_second_generator_found", + "baseline": { + "claim_tier": "H-E1-alg", + "alg_rank_method": "explicit_point_HB_selmer4", + "alg_rank_exact_known": false, + "alg_rank_exact": null, + "second_independent_point_certified": false, + "promoted_in_milestone": 4, + "alg_rank_lower": 1, + "alg_rank_upper": 2, + "BSD_used": false, + "parity_used": false, + "sha_finite_assumed": false + }, + "P1": { + "x_num": 34225, + "x_den": 49, + "y_num": 5887440, + "y_den": 343, + "on_curve_verified_inherited": true, + "descent_image": [1, 2] + }, + "historical_search": { + "candidates_found": 0, + "n_unique_pts_found": 1, + "different_descent_examples": [] + } + }, + { + "n": 313, + "search_class": "historical_false_positive_requires_orbit_filter", + "baseline": { + "claim_tier": "H-E1-alg", + "alg_rank_method": "explicit_point_HB_selmer4", + "alg_rank_exact_known": false, + "alg_rank_exact": null, + "second_independent_point_certified": false, + "promoted_in_milestone": 4, + "alg_rank_lower": 1, + "alg_rank_upper": 2, + "BSD_used": false, + "parity_used": false, + "sha_finite_assumed": false + }, + "P1": { + "x_num": -25, + "x_den": 1, + "y_num": 1560, + "y_den": 1, + "on_curve_verified_inherited": true, + "descent_image": [-1, -2] + }, + "historical_search": { + "candidates_found": 3, + "historical_false_positive": { + "Q_x": "97969/25", + "torsion_relation": "Q = P1 + (0,0)", + "audit_correction": "candidate was in P1 torsion orbit despite different descent image" + } + } + }, + { + "n": 353, + "search_class": "historical_false_positive_requires_orbit_filter", + "baseline": { + "claim_tier": "H-E1-alg", + "alg_rank_method": "explicit_point_HB_selmer4", + "alg_rank_exact_known": false, + "alg_rank_exact": null, + "second_independent_point_certified": false, + "promoted_in_milestone": 4, + "alg_rank_lower": 1, + "alg_rank_upper": 2, + "BSD_used": false, + "parity_used": false, + "sha_finite_assumed": false + }, + "P1": { + "x_num": -225, + "x_den": 1, + "y_num": 4080, + "y_den": 1, + "on_curve_verified_inherited": true, + "descent_image": [-1, -2] + }, + "historical_search": { + "candidates_found": 3, + "historical_false_positive": { + "Q_x": "102017/64", + "torsion_relation": "Q = P1 + (-353,0)", + "audit_correction": "candidate was in P1 torsion orbit despite different descent image" + } + } + }, + { + "n": 457, + "search_class": "no_second_generator_found", + "baseline": { + "claim_tier": "H-E1-alg", + "alg_rank_method": "explicit_point_HB_selmer4", + "alg_rank_exact_known": false, + "alg_rank_exact": null, + "second_independent_point_certified": false, + "promoted_in_milestone": 4, + "alg_rank_lower": 1, + "alg_rank_upper": 2, + "BSD_used": false, + "parity_used": false, + "sha_finite_assumed": false + }, + "P1": { + "x_num": 105625, + "x_den": 49, + "y_num": 33547800, + "y_den": 343, + "on_curve_verified_inherited": true, + "descent_image": [1, 2] + }, + "historical_search": { + "candidates_found": 0, + "n_unique_pts_found": 1, + "different_descent_examples": [] + } + } + ], + "required_controller_checks": [ + "materialize target row and P1 from triggering repo/ref/SHA", + "hash row, P1, candidate, and search bounds as gate inputs", + "verify P1 on E_n: y^2 = x^3 - n^2 x", + "verify candidate on E_n before interpretation", + "compute and record descent image", + "test candidate against P1 torsion orbit before any independence claim", + "record independent/certified-no-result/typed-obstruction output digest" + ] +} From a279a8b5494fa3fd917da28b72e0b382b4a15ac7 Mon Sep 17 00:00:00 2001 From: mdheller <21163552+mdheller@users.noreply.github.com> Date: Mon, 11 May 2026 13:32:44 -0400 Subject: [PATCH 2/7] Add Milestone 5 orbit candidate schema --- .../milestone5_orbit_candidate.schema.json | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 schemas/milestone5_orbit_candidate.schema.json diff --git a/schemas/milestone5_orbit_candidate.schema.json b/schemas/milestone5_orbit_candidate.schema.json new file mode 100644 index 0000000..d10bd00 --- /dev/null +++ b/schemas/milestone5_orbit_candidate.schema.json @@ -0,0 +1,62 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://github.com/SocioProphet/bsd-proof-program/schemas/milestone5_orbit_candidate.schema.json", + "title": "Milestone 5 orbit-membership candidate record", + "type": "object", + "additionalProperties": false, + "required": [ + "n", + "candidate_id", + "candidate_point", + "candidate_source", + "search_bounds", + "checks" + ], + "properties": { + "n": {"type": "integer"}, + "candidate_id": {"type": "string", "minLength": 1}, + "candidate_source": {"type": "string", "enum": ["extended_bound_search", "four_descent", "heegner", "historical_recheck", "manual_fixture"]}, + "candidate_point": { + "type": "object", + "additionalProperties": false, + "required": ["x_num", "x_den", "y_num", "y_den"], + "properties": { + "x_num": {"type": "integer"}, + "x_den": {"type": "integer", "minimum": 1}, + "y_num": {"type": "integer"}, + "y_den": {"type": "integer", "minimum": 1} + } + }, + "search_bounds": { + "type": "object", + "additionalProperties": true, + "required": ["description"], + "properties": { + "description": {"type": "string", "minLength": 1} + } + }, + "checks": { + "type": "object", + "additionalProperties": false, + "required": [ + "on_curve_verified", + "descent_image_recorded", + "torsion_orbit_checked", + "in_p1_torsion_orbit", + "independent_candidate" + ], + "properties": { + "on_curve_verified": {"type": "boolean"}, + "descent_image_recorded": {"type": "boolean"}, + "torsion_orbit_checked": {"type": "boolean"}, + "in_p1_torsion_orbit": {"type": "boolean"}, + "independent_candidate": {"type": "boolean"}, + "descent_image": { + "type": "array", + "items": {"type": "integer"} + }, + "notes": {"type": "string"} + } + } + } +} From cbaf8d892ce2738b64a35d5d3e46ede162f710c1 Mon Sep 17 00:00:00 2001 From: mdheller <21163552+mdheller@users.noreply.github.com> Date: Mon, 11 May 2026 13:33:24 -0400 Subject: [PATCH 3/7] Add Milestone 5 orbit-membership scaffold runner --- scripts/milestone5_orbit_scaffold.py | 141 +++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 scripts/milestone5_orbit_scaffold.py diff --git a/scripts/milestone5_orbit_scaffold.py b/scripts/milestone5_orbit_scaffold.py new file mode 100644 index 0000000..de98392 --- /dev/null +++ b/scripts/milestone5_orbit_scaffold.py @@ -0,0 +1,141 @@ +#!/usr/bin/env python3 +"""Milestone 5 orbit-membership scaffold runner. + +This runner prepares the first controller-routed M6 surface after Candidate 2. +It verifies inherited P1 points for the four-prime cohort, records target class, +and emits digest-addressed scaffold events. + +Boundary: this runner does not search for new points, does not certify +independence, does not run four-descent, and does not promote claims. +""" + +from __future__ import annotations + +import hashlib +import json +from fractions import Fraction +from pathlib import Path +from typing import Any + +ROOT = Path(__file__).resolve().parents[1] +BASELINE = ROOT / "data" / "milestone5" / "m5_four_prime_baseline.json" +OUT = ROOT / "reports" / "milestone5" +TARGETS = {257, 313, 353, 457} + + +def sha256_json(payload: Any) -> str: + encoded = json.dumps(payload, sort_keys=True, separators=(",", ":"), ensure_ascii=False) + return hashlib.sha256(encoded.encode("utf-8")).hexdigest() + + +def frac(num: int, den: int) -> Fraction: + return Fraction(num, den) + + +def on_curve(n: int, point: dict[str, int]) -> bool: + x = frac(point["x_num"], point["x_den"]) + y = frac(point["y_num"], point["y_den"]) + return y * y == x * x * x - n * n * x + + +def event(target: dict[str, Any], gate: str, input_payload: dict[str, Any], result: dict[str, Any]) -> dict[str, Any]: + wrapped_input = {"gate": gate, "n": target["n"], "input": input_payload} + wrapped_output = {"gate": gate, "n": target["n"], "result": result} + return { + "event_type": "milestone5_scaffold_event", + "gate": gate, + "n": target["n"], + "input_digest": "sha256:" + sha256_json(wrapped_input), + "output_digest": "sha256:" + sha256_json(wrapped_output), + "result": result, + } + + +def main() -> int: + baseline = json.loads(BASELINE.read_text(encoding="utf-8")) + targets = baseline.get("targets", []) + seen = {int(target["n"]) for target in targets} + if seen != TARGETS: + raise SystemExit(f"target set mismatch: expected {sorted(TARGETS)}, got {sorted(seen)}") + + events: list[dict[str, Any]] = [] + summary: dict[str, Any] = { + "state": "Milestone 5 scaffold only", + "scope_boundary": baseline["claim_boundary"], + "target_count": len(targets), + "targets": {}, + "non_claims": [ + "No rank exactness is claimed.", + "No second independent point is certified.", + "No four-descent gate has executed.", + "No BSD-I, BSD-II, or Sha finiteness claim is made." + ], + } + + for target in targets: + n = int(target["n"]) + p1_ok = on_curve(n, target["P1"]) + if not p1_ok: + raise SystemExit(f"P1 failed on-curve check for n={n}") + unresolved = target["baseline"].get("second_independent_point_certified") is False + target_class = target["search_class"] + result = { + "p1_on_curve": p1_ok, + "target_class": target_class, + "second_independent_point_certified": target["baseline"].get("second_independent_point_certified"), + "requires_orbit_membership_filter": target_class == "historical_false_positive_requires_orbit_filter", + "requires_fresh_search_or_descent": target_class == "no_second_generator_found", + "claim_promotion_allowed": False, + "unresolved": unresolved, + } + events.append(event(target, "m5-p1-on-curve-and-target-classification", { + "P1": target["P1"], + "baseline": target["baseline"], + "search_class": target_class, + "historical_search": target.get("historical_search"), + }, result)) + summary["targets"][str(n)] = result + + input_digests = {item["input_digest"] for item in events} + output_digests = {item["output_digest"] for item in events} + summary["event_count"] = len(events) + summary["distinct_input_digest_count"] = len(input_digests) + summary["distinct_output_digest_count"] = len(output_digests) + summary["all_p1_on_curve"] = all(item["result"]["p1_on_curve"] for item in events) + summary["claim_promotion_allowed"] = False + + OUT.mkdir(parents=True, exist_ok=True) + (OUT / "m5_scaffold_summary.json").write_text(json.dumps(summary, indent=2, sort_keys=True) + "\n", encoding="utf-8") + with (OUT / "m5_scaffold_events.jsonl").open("w", encoding="utf-8") as handle: + for item in events: + handle.write(json.dumps(item, sort_keys=True) + "\n") + lines = [ + "# Milestone 5 Scaffold Result", + "", + "Scope: scaffold only. No rank exactness, independence, four-descent, or claim promotion.", + "", + f"- target_count: {summary['target_count']}", + f"- event_count: {summary['event_count']}", + f"- distinct_input_digest_count: {summary['distinct_input_digest_count']}", + f"- distinct_output_digest_count: {summary['distinct_output_digest_count']}", + f"- all_p1_on_curve: {summary['all_p1_on_curve']}", + "", + "## Target classification", + "", + ] + for n in sorted(summary["targets"], key=int): + lines.append(f"- {n}: {summary['targets'][n]}") + (OUT / "m5_scaffold_result.md").write_text("\n".join(lines) + "\n", encoding="utf-8") + + print("milestone5_orbit_scaffold: PASS") + print(f"target_count={summary['target_count']}") + print(f"event_count={summary['event_count']}") + print(f"distinct_input_digest_count={summary['distinct_input_digest_count']}") + print(f"distinct_output_digest_count={summary['distinct_output_digest_count']}") + print(f"all_p1_on_curve={summary['all_p1_on_curve']}") + print(f"targets={json.dumps(summary['targets'], sort_keys=True)}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) From 7399adbff90751ac0f6a73d28cb165572bf18824 Mon Sep 17 00:00:00 2001 From: mdheller <21163552+mdheller@users.noreply.github.com> Date: Mon, 11 May 2026 13:34:25 -0400 Subject: [PATCH 4/7] Add Milestone 5 scaffold claim to proof adapter --- proof-adapter.json | 47 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/proof-adapter.json b/proof-adapter.json index eef7441..204f1a1 100644 --- a/proof-adapter.json +++ b/proof-adapter.json @@ -77,6 +77,32 @@ "sha-nonclaim-boundary" ], "obstruction_walls": ["certificate_wall", "height_bound_wall"] + }, + { + "claim_id": "BSD-M5-004-orbit-membership-scaffold", + "state": "draft", + "severity": "E7", + "substrate": "four-prime M6 follow-up cohort {257, 313, 353, 457}", + "shell_level": "controller-routed candidate filtering scaffold", + "projection": "P1 verification, target classification, torsion-orbit-aware candidate schema, digest-addressed scaffold events", + "statement": "Milestone 5 begins by installing an orbit-membership-aware scaffold for the four unresolved second-generator targets. The scaffold verifies inherited P1 points and classifies target failure modes, but does not certify rank exactness or independence.", + "boundary": [ + "Scaffold only; no second independent point is certified.", + "No four-descent gate has executed.", + "No rank exactness claim is made for primes where search returns negative within stated bounds.", + "Any later independence claim must include torsion-orbit membership testing and controller-witnessed input/output digests." + ], + "non_claim_refs": [ + "bsd.no-full-bsd-proof", + "bsd.no-sha-finiteness-proof", + "bsd.no-unchecked-rank-promotion", + "bsd.no-parity-assumption-promotion", + "bsd.no-m5-rank-exactness-for-negative-search" + ], + "owned_gates": [ + "m5-orbit-membership-scaffold" + ], + "obstruction_walls": ["certificate_wall", "height_bound_wall"] } ], "gates": [ @@ -121,33 +147,46 @@ "kind": "non_claim_check", "status": "planned", "expected": "Sha finiteness and BSD-II leading-term claims remain blocked unless explicit certificates exist." + }, + { + "gate_id": "m5-orbit-membership-scaffold", + "kind": "test", + "status": "planned", + "command": "python3 scripts/milestone5_orbit_scaffold.py", + "fixture": "data/milestone5/m5_four_prime_baseline.json", + "expected": "Verifies inherited P1 points on curve, classifies all four targets, and emits digest-addressed scaffold events without promoting any rank or independence claim." } ], "non_claims": [ { "non_claim_id": "bsd.no-full-bsd-proof", "statement": "This adapter does not claim a proof of BSD-I or BSD-II.", - "applies_to": ["BSD-C5-001-consistency-grid", "BSD-M6-002-four-descent-named-primes"] + "applies_to": ["BSD-C5-001-consistency-grid", "BSD-M6-002-four-descent-named-primes", "BSD-M5-004-orbit-membership-scaffold"] }, { "non_claim_id": "bsd.no-sha-finiteness-proof", "statement": "This adapter does not claim Tate-Shafarevich finiteness or BSD-II leading-term certification.", - "applies_to": ["BSD-C5-001-consistency-grid", "BSD-M6-002-four-descent-named-primes", "BSD-SHA-003-tower-bounding-diagnostic"] + "applies_to": ["BSD-C5-001-consistency-grid", "BSD-M6-002-four-descent-named-primes", "BSD-SHA-003-tower-bounding-diagnostic", "BSD-M5-004-orbit-membership-scaffold"] }, { "non_claim_id": "bsd.no-unchecked-rank-promotion", "statement": "This adapter does not promote rank claims without repo-local descent and SocioSphere gate evidence.", - "applies_to": ["BSD-C5-001-consistency-grid", "BSD-M6-002-four-descent-named-primes"] + "applies_to": ["BSD-C5-001-consistency-grid", "BSD-M6-002-four-descent-named-primes", "BSD-M5-004-orbit-membership-scaffold"] }, { "non_claim_id": "bsd.no-parity-assumption-promotion", "statement": "This adapter does not promote algebraic-rank claims using parity, BSD, or Sha-finiteness assumptions.", - "applies_to": ["BSD-M6-002-four-descent-named-primes"] + "applies_to": ["BSD-M6-002-four-descent-named-primes", "BSD-M5-004-orbit-membership-scaffold"] }, { "non_claim_id": "bsd.no-bsd-ii-leading-term-proof", "statement": "This adapter does not claim BSD-II leading-term formula certification.", "applies_to": ["BSD-SHA-003-tower-bounding-diagnostic"] + }, + { + "non_claim_id": "bsd.no-m5-rank-exactness-for-negative-search", + "statement": "Milestone 5 scaffold and any negative search within declared bounds do not prove rank exactness or absence of a second generator beyond those bounds.", + "applies_to": ["BSD-M5-004-orbit-membership-scaffold"] } ] } From 5437029e545bd04e2cecd7c4fc50d44647bd7c06 Mon Sep 17 00:00:00 2001 From: mdheller <21163552+mdheller@users.noreply.github.com> Date: Mon, 11 May 2026 13:35:01 -0400 Subject: [PATCH 5/7] Add Milestone 5 orbit scaffold workflow --- .../workflows/milestone-5-orbit-scaffold.yml | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 .github/workflows/milestone-5-orbit-scaffold.yml diff --git a/.github/workflows/milestone-5-orbit-scaffold.yml b/.github/workflows/milestone-5-orbit-scaffold.yml new file mode 100644 index 0000000..00c0e03 --- /dev/null +++ b/.github/workflows/milestone-5-orbit-scaffold.yml @@ -0,0 +1,55 @@ +name: Milestone 5 orbit scaffold + +on: + workflow_dispatch: + push: + paths: + - 'data/milestone5/**' + - 'schemas/milestone5_orbit_candidate.schema.json' + - 'scripts/milestone5_orbit_scaffold.py' + - 'proof-adapter.json' + - '.github/workflows/milestone-5-orbit-scaffold.yml' + pull_request: + paths: + - 'data/milestone5/**' + - 'schemas/milestone5_orbit_candidate.schema.json' + - 'scripts/milestone5_orbit_scaffold.py' + - 'proof-adapter.json' + - '.github/workflows/milestone-5-orbit-scaffold.yml' + +jobs: + milestone-5-orbit-scaffold: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Validate JSON files + run: | + python3 -m json.tool data/milestone5/m5_four_prime_baseline.json >/dev/null + python3 -m json.tool schemas/milestone5_orbit_candidate.schema.json >/dev/null + python3 -m json.tool proof-adapter.json >/dev/null + + - name: Run Milestone 5 scaffold + run: python3 scripts/milestone5_orbit_scaffold.py + + - name: Print Milestone 5 scaffold artifacts + run: | + echo '--- m5_scaffold_result.md ---' + cat reports/milestone5/m5_scaffold_result.md + echo '--- m5_scaffold_summary.json ---' + cat reports/milestone5/m5_scaffold_summary.json + echo '--- m5_scaffold_events.jsonl ---' + cat reports/milestone5/m5_scaffold_events.jsonl + + - name: Upload Milestone 5 scaffold artifacts + uses: actions/upload-artifact@v4 + with: + name: milestone-5-orbit-scaffold-artifacts + path: reports/milestone5/** + if-no-files-found: error From b5b44fb464361f698e6fd456fc8067ef4fa59887 Mon Sep 17 00:00:00 2001 From: mdheller <21163552+mdheller@users.noreply.github.com> Date: Mon, 11 May 2026 13:36:25 -0400 Subject: [PATCH 6/7] Trigger Milestone 5 scaffold validation --- docs/status/MILESTONE_5_SCAFFOLD_RERUN.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 docs/status/MILESTONE_5_SCAFFOLD_RERUN.md diff --git a/docs/status/MILESTONE_5_SCAFFOLD_RERUN.md b/docs/status/MILESTONE_5_SCAFFOLD_RERUN.md new file mode 100644 index 0000000..356ed1e --- /dev/null +++ b/docs/status/MILESTONE_5_SCAFFOLD_RERUN.md @@ -0,0 +1,3 @@ +# Milestone 5 scaffold validation marker + +This file triggers validation for the Milestone 5 orbit-membership scaffold PR. From b663bb3edf87bd79795e518b5c04db7607493a5f Mon Sep 17 00:00:00 2001 From: mdheller <21163552+mdheller@users.noreply.github.com> Date: Mon, 11 May 2026 13:37:45 -0400 Subject: [PATCH 7/7] Trigger Milestone 5 validation with baseline note --- data/milestone5/m5_four_prime_baseline.json | 109 +++----------------- 1 file changed, 12 insertions(+), 97 deletions(-) diff --git a/data/milestone5/m5_four_prime_baseline.json b/data/milestone5/m5_four_prime_baseline.json index 6623a04..db07dd8 100644 --- a/data/milestone5/m5_four_prime_baseline.json +++ b/data/milestone5/m5_four_prime_baseline.json @@ -1,6 +1,7 @@ { "schema_version": "bsd.milestone5.four-prime-baseline.v1", "state": "Milestone 5 scaffold; inherited evidence only", + "validation_marker": "rerun-2026-05-11", "claim_boundary": [ "This baseline is inherited input for controller-routed Milestone 5 gates.", "It does not certify rank exactness for unresolved targets.", @@ -23,115 +24,29 @@ "parity_used": false, "sha_finite_assumed": false }, - "P1": { - "x_num": 34225, - "x_den": 49, - "y_num": 5887440, - "y_den": 343, - "on_curve_verified_inherited": true, - "descent_image": [1, 2] - }, - "historical_search": { - "candidates_found": 0, - "n_unique_pts_found": 1, - "different_descent_examples": [] - } + "P1": {"x_num": 34225, "x_den": 49, "y_num": 5887440, "y_den": 343, "on_curve_verified_inherited": true, "descent_image": [1, 2]}, + "historical_search": {"candidates_found": 0, "n_unique_pts_found": 1, "different_descent_examples": []} }, { "n": 313, "search_class": "historical_false_positive_requires_orbit_filter", - "baseline": { - "claim_tier": "H-E1-alg", - "alg_rank_method": "explicit_point_HB_selmer4", - "alg_rank_exact_known": false, - "alg_rank_exact": null, - "second_independent_point_certified": false, - "promoted_in_milestone": 4, - "alg_rank_lower": 1, - "alg_rank_upper": 2, - "BSD_used": false, - "parity_used": false, - "sha_finite_assumed": false - }, - "P1": { - "x_num": -25, - "x_den": 1, - "y_num": 1560, - "y_den": 1, - "on_curve_verified_inherited": true, - "descent_image": [-1, -2] - }, - "historical_search": { - "candidates_found": 3, - "historical_false_positive": { - "Q_x": "97969/25", - "torsion_relation": "Q = P1 + (0,0)", - "audit_correction": "candidate was in P1 torsion orbit despite different descent image" - } - } + "baseline": {"claim_tier": "H-E1-alg", "alg_rank_method": "explicit_point_HB_selmer4", "alg_rank_exact_known": false, "alg_rank_exact": null, "second_independent_point_certified": false, "promoted_in_milestone": 4, "alg_rank_lower": 1, "alg_rank_upper": 2, "BSD_used": false, "parity_used": false, "sha_finite_assumed": false}, + "P1": {"x_num": -25, "x_den": 1, "y_num": 1560, "y_den": 1, "on_curve_verified_inherited": true, "descent_image": [-1, -2]}, + "historical_search": {"candidates_found": 3, "historical_false_positive": {"Q_x": "97969/25", "torsion_relation": "Q = P1 + (0,0)", "audit_correction": "candidate was in P1 torsion orbit despite different descent image"}} }, { "n": 353, "search_class": "historical_false_positive_requires_orbit_filter", - "baseline": { - "claim_tier": "H-E1-alg", - "alg_rank_method": "explicit_point_HB_selmer4", - "alg_rank_exact_known": false, - "alg_rank_exact": null, - "second_independent_point_certified": false, - "promoted_in_milestone": 4, - "alg_rank_lower": 1, - "alg_rank_upper": 2, - "BSD_used": false, - "parity_used": false, - "sha_finite_assumed": false - }, - "P1": { - "x_num": -225, - "x_den": 1, - "y_num": 4080, - "y_den": 1, - "on_curve_verified_inherited": true, - "descent_image": [-1, -2] - }, - "historical_search": { - "candidates_found": 3, - "historical_false_positive": { - "Q_x": "102017/64", - "torsion_relation": "Q = P1 + (-353,0)", - "audit_correction": "candidate was in P1 torsion orbit despite different descent image" - } - } + "baseline": {"claim_tier": "H-E1-alg", "alg_rank_method": "explicit_point_HB_selmer4", "alg_rank_exact_known": false, "alg_rank_exact": null, "second_independent_point_certified": false, "promoted_in_milestone": 4, "alg_rank_lower": 1, "alg_rank_upper": 2, "BSD_used": false, "parity_used": false, "sha_finite_assumed": false}, + "P1": {"x_num": -225, "x_den": 1, "y_num": 4080, "y_den": 1, "on_curve_verified_inherited": true, "descent_image": [-1, -2]}, + "historical_search": {"candidates_found": 3, "historical_false_positive": {"Q_x": "102017/64", "torsion_relation": "Q = P1 + (-353,0)", "audit_correction": "candidate was in P1 torsion orbit despite different descent image"}} }, { "n": 457, "search_class": "no_second_generator_found", - "baseline": { - "claim_tier": "H-E1-alg", - "alg_rank_method": "explicit_point_HB_selmer4", - "alg_rank_exact_known": false, - "alg_rank_exact": null, - "second_independent_point_certified": false, - "promoted_in_milestone": 4, - "alg_rank_lower": 1, - "alg_rank_upper": 2, - "BSD_used": false, - "parity_used": false, - "sha_finite_assumed": false - }, - "P1": { - "x_num": 105625, - "x_den": 49, - "y_num": 33547800, - "y_den": 343, - "on_curve_verified_inherited": true, - "descent_image": [1, 2] - }, - "historical_search": { - "candidates_found": 0, - "n_unique_pts_found": 1, - "different_descent_examples": [] - } + "baseline": {"claim_tier": "H-E1-alg", "alg_rank_method": "explicit_point_HB_selmer4", "alg_rank_exact_known": false, "alg_rank_exact": null, "second_independent_point_certified": false, "promoted_in_milestone": 4, "alg_rank_lower": 1, "alg_rank_upper": 2, "BSD_used": false, "parity_used": false, "sha_finite_assumed": false}, + "P1": {"x_num": 105625, "x_den": 49, "y_num": 33547800, "y_den": 343, "on_curve_verified_inherited": true, "descent_image": [1, 2]}, + "historical_search": {"candidates_found": 0, "n_unique_pts_found": 1, "different_descent_examples": []} } ], "required_controller_checks": [