From c8d66bde8ce496c1007e4a3f6b0a9f9f93762bfb Mon Sep 17 00:00:00 2001 From: Dylan Roy <249851642+d6g8k5htny-coder@users.noreply.github.com> Date: Tue, 20 Oct 2026 09:21:12 -0500 Subject: [PATCH 1/5] Add C299 actual negative partial-gradient ridge candidate and bounded verifier Retain source review, native timeout, engineering controls and explicit development HOLD. No scientific promotion. --- .github/workflows/c299-critical-ridge.yml | 71 ++ .../EXECUTION_CONTRACT.md | 15 + .../HOSTED_SOURCE_MANIFEST.json | 48 ++ frontiers/critical_ridge_20261020/README.md | 29 + .../SOURCE_PAPER_IDENTITIES.json | 32 + .../c299_hosted_verify.py | 626 +++++++++++++++++ .../engineering/E1_FINAL_GREEN1.receipt.json | 31 + .../engineering/E1_FINAL_GREEN1.stderr | 31 + .../engineering/E1_FINAL_GREEN1.stdout | 7 + .../engineering/E1_FINAL_GREEN2.receipt.json | 32 + .../engineering/E1_FINAL_GREEN2.stderr | 31 + .../engineering/E1_FINAL_GREEN2.stdout | 7 + .../E1_FINAL_c299_hosted_verify.py.diff | 138 ++++ .../E1_FINAL_test_c299_hosted_verify.py.diff | 67 ++ .../engineering/E1_GREEN1.receipt.json | 31 + .../engineering/E1_GREEN1.stderr | 44 ++ .../engineering/E1_GREEN1.stdout | 7 + .../engineering/E1_HANDOFF.md | 23 + .../engineering/E1_IDENTITIES.json | 99 +++ .../engineering/E1_RED.receipt.json | 28 + .../engineering/E1_RED.stderr | 27 + .../engineering/E1_RED.stdout | 0 .../engineering/PREEXEC_E1_GREEN.json | 48 ++ .../engineering/PREEXEC_E1_GREEN_FINAL.json | 49 ++ .../engineering/PREEXEC_E1_RED.json | 31 + .../engineering/c299_hosted_verify.py | 626 +++++++++++++++++ .../E1_FIRST_GREEN_test_c299_hosted_verify.py | 303 +++++++++ .../E1_PREDECESSOR_c299_hosted_verify.py | 557 +++++++++++++++ .../E1_PREDECESSOR_test_c299_hosted_verify.py | 245 +++++++ .../engineering/test_c299_hosted_verify.py | 303 +++++++++ .../execution/author/CANDIDATE2.diff | 23 + .../execution/author/CANDIDATE2_FREEZE.json | 23 + .../execution/author/PROOF.md | 70 ++ .../20261020T134843Z-89c13163/RECEIPT.json | 12 + ...6c730a6de713044ab0f7509637ed029771375.lean | 180 +++++ .../negative-project/WithoutCriticality.lean | 22 + .../WithoutNegativeDefiniteness.lean | 21 + .../project/CriticalRidge.lean | 183 +++++ .../project/CriticalRidgeAxiomAudit.lean | 56 ++ .../project/Lifetime.lean | 634 ++++++++++++++++++ .../project/MorseFiniteCritical.lean | 223 ++++++ .../project/TorusTopology.lean | 247 +++++++ ...99_nonauthor_candidate2_source_addendum.md | 38 ++ .../c299_nonauthor_e1_acceptance_addendum.md | 67 ++ .../c299_nonauthor_engineering_preliminary.md | 71 ++ .../c299_nonauthor_preliminary_candidate1.md | 123 ++++ .../sources/CORRECTED_PAPER_CUSTODY.json | 11 + .../sources/RIDGE_PROPOSAL_CORRECTED_RAW.md | 47 ++ .../sources/UPSTREAM_BYTE_EQUALITY.json | 29 + .../test_c299_hosted_verify.py | 303 +++++++++ 50 files changed, 5969 insertions(+) create mode 100644 .github/workflows/c299-critical-ridge.yml create mode 100644 frontiers/critical_ridge_20261020/EXECUTION_CONTRACT.md create mode 100644 frontiers/critical_ridge_20261020/HOSTED_SOURCE_MANIFEST.json create mode 100644 frontiers/critical_ridge_20261020/README.md create mode 100644 frontiers/critical_ridge_20261020/SOURCE_PAPER_IDENTITIES.json create mode 100644 frontiers/critical_ridge_20261020/c299_hosted_verify.py create mode 100644 frontiers/critical_ridge_20261020/engineering/E1_FINAL_GREEN1.receipt.json create mode 100644 frontiers/critical_ridge_20261020/engineering/E1_FINAL_GREEN1.stderr create mode 100644 frontiers/critical_ridge_20261020/engineering/E1_FINAL_GREEN1.stdout create mode 100644 frontiers/critical_ridge_20261020/engineering/E1_FINAL_GREEN2.receipt.json create mode 100644 frontiers/critical_ridge_20261020/engineering/E1_FINAL_GREEN2.stderr create mode 100644 frontiers/critical_ridge_20261020/engineering/E1_FINAL_GREEN2.stdout create mode 100644 frontiers/critical_ridge_20261020/engineering/E1_FINAL_c299_hosted_verify.py.diff create mode 100644 frontiers/critical_ridge_20261020/engineering/E1_FINAL_test_c299_hosted_verify.py.diff create mode 100644 frontiers/critical_ridge_20261020/engineering/E1_GREEN1.receipt.json create mode 100644 frontiers/critical_ridge_20261020/engineering/E1_GREEN1.stderr create mode 100644 frontiers/critical_ridge_20261020/engineering/E1_GREEN1.stdout create mode 100644 frontiers/critical_ridge_20261020/engineering/E1_HANDOFF.md create mode 100644 frontiers/critical_ridge_20261020/engineering/E1_IDENTITIES.json create mode 100644 frontiers/critical_ridge_20261020/engineering/E1_RED.receipt.json create mode 100644 frontiers/critical_ridge_20261020/engineering/E1_RED.stderr create mode 100644 frontiers/critical_ridge_20261020/engineering/E1_RED.stdout create mode 100644 frontiers/critical_ridge_20261020/engineering/PREEXEC_E1_GREEN.json create mode 100644 frontiers/critical_ridge_20261020/engineering/PREEXEC_E1_GREEN_FINAL.json create mode 100644 frontiers/critical_ridge_20261020/engineering/PREEXEC_E1_RED.json create mode 100644 frontiers/critical_ridge_20261020/engineering/c299_hosted_verify.py create mode 100644 frontiers/critical_ridge_20261020/engineering/source-attempts/E1_FIRST_GREEN_test_c299_hosted_verify.py create mode 100644 frontiers/critical_ridge_20261020/engineering/source-attempts/E1_PREDECESSOR_c299_hosted_verify.py create mode 100644 frontiers/critical_ridge_20261020/engineering/source-attempts/E1_PREDECESSOR_test_c299_hosted_verify.py create mode 100644 frontiers/critical_ridge_20261020/engineering/test_c299_hosted_verify.py create mode 100644 frontiers/critical_ridge_20261020/execution/author/CANDIDATE2.diff create mode 100644 frontiers/critical_ridge_20261020/execution/author/CANDIDATE2_FREEZE.json create mode 100644 frontiers/critical_ridge_20261020/execution/author/PROOF.md create mode 100644 frontiers/critical_ridge_20261020/execution/author/runs/20261020T134843Z-89c13163/RECEIPT.json create mode 100644 frontiers/critical_ridge_20261020/execution/author/source-attempts/729b57030c9d595b6ee9061b7cc6c730a6de713044ab0f7509637ed029771375.lean create mode 100644 frontiers/critical_ridge_20261020/negative-project/WithoutCriticality.lean create mode 100644 frontiers/critical_ridge_20261020/negative-project/WithoutNegativeDefiniteness.lean create mode 100644 frontiers/critical_ridge_20261020/project/CriticalRidge.lean create mode 100644 frontiers/critical_ridge_20261020/project/CriticalRidgeAxiomAudit.lean create mode 100644 frontiers/critical_ridge_20261020/project/Lifetime.lean create mode 100644 frontiers/critical_ridge_20261020/project/MorseFiniteCritical.lean create mode 100644 frontiers/critical_ridge_20261020/project/TorusTopology.lean create mode 100644 frontiers/critical_ridge_20261020/reviews/c299_nonauthor_candidate2_source_addendum.md create mode 100644 frontiers/critical_ridge_20261020/reviews/c299_nonauthor_e1_acceptance_addendum.md create mode 100644 frontiers/critical_ridge_20261020/reviews/c299_nonauthor_engineering_preliminary.md create mode 100644 frontiers/critical_ridge_20261020/reviews/c299_nonauthor_preliminary_candidate1.md create mode 100644 frontiers/critical_ridge_20261020/sources/CORRECTED_PAPER_CUSTODY.json create mode 100644 frontiers/critical_ridge_20261020/sources/RIDGE_PROPOSAL_CORRECTED_RAW.md create mode 100644 frontiers/critical_ridge_20261020/sources/UPSTREAM_BYTE_EQUALITY.json create mode 100644 frontiers/critical_ridge_20261020/test_c299_hosted_verify.py diff --git a/.github/workflows/c299-critical-ridge.yml b/.github/workflows/c299-critical-ridge.yml new file mode 100644 index 000000000..a52b763a1 --- /dev/null +++ b/.github/workflows/c299-critical-ridge.yml @@ -0,0 +1,71 @@ +name: C299 critical ridge (hosted Lean, no scientific promotion) +'on': + pull_request: + paths: + - 'frontiers/critical_ridge_20261020/**' + - '.github/workflows/c299-critical-ridge.yml' + - 'formal/lean-toolchain' + - 'formal/lakefile.toml' + - 'formal/lake-manifest.json' + - 'specifications/lean_statements_20261010/Specifications/Lifetime.lean' + push: + branches: [main] + paths: + - 'frontiers/critical_ridge_20261020/**' + - '.github/workflows/c299-critical-ridge.yml' + - 'formal/lean-toolchain' + - 'formal/lakefile.toml' + - 'formal/lake-manifest.json' + - 'specifications/lean_statements_20261010/Specifications/Lifetime.lean' + workflow_dispatch: +permissions: + contents: read +concurrency: + group: c299-${{ github.event_name == 'pull_request' && github.event.pull_request.number || github.run_id }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} +jobs: + c299-hosted-formal: + name: c299-hosted-formal + runs-on: ubuntu-24.04 + timeout-minutes: 205 + env: + LEAN_NUM_THREADS: '2' + # Exact frozen five-module and two-control source manifest. + C299_MANIFEST_SHA256: '3c80ed35bc7a28342b127ca08f046be913021ab28ff13119e698c981eb0aef6b' + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 + with: + persist-credentials: false + fetch-depth: 1 + - name: Bind frozen source manifest and verify engineering failure controls + timeout-minutes: 5 + run: | + python3 -B -S frontiers/critical_ridge_20261020/c299_hosted_verify.py source --manifest-sha256 "$C299_MANIFEST_SHA256" + python3 -B -S -m unittest discover -s frontiers/critical_ridge_20261020 -p test_c299_hosted_verify.py -v + python3 -B -O -S -m unittest discover -s frontiers/critical_ridge_20261020 -p test_c299_hosted_verify.py -v + - name: Install pinned Lean and retrieve dependency cache + timeout-minutes: 15 + uses: leanprover/lean-action@f061402b660e0c34644504b324e830f2991d4865 + with: + lake-package-directory: formal + auto-config: 'false' + build: 'false' + test: 'false' + lint: 'false' + use-mathlib-cache: 'true' + use-github-cache: 'false' + - name: Fresh five-module build, four kernel checks, complete audit and two controls + timeout-minutes: 180 + run: | + cd formal + lake env python3 -B -S ../frontiers/critical_ridge_20261020/c299_hosted_verify.py execute --manifest-sha256 "$C299_MANIFEST_SHA256" + - name: Retain exact C299 tested-run sources, objects, streams and failure receipts + if: always() + timeout-minutes: 5 + uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 + with: + name: c299-hosted-${{ github.run_id }}-${{ github.run_attempt }} + path: .lake/c299-hosted-evidence/ + include-hidden-files: true + if-no-files-found: warn + retention-days: 90 diff --git a/frontiers/critical_ridge_20261020/EXECUTION_CONTRACT.md b/frontiers/critical_ridge_20261020/EXECUTION_CONTRACT.md new file mode 100644 index 000000000..f9c6690fa --- /dev/null +++ b/frontiers/critical_ridge_20261020/EXECUTION_CONTRACT.md @@ -0,0 +1,15 @@ +# C299 declared execution contract + +Declared by OpenAI Codex /root before initial hosted execution, under the verified C299 claim6e894b1f-d783-4ea0-adae-597e116b239a. This record authorizes only the dedicated additive draft-PR workflow and its bounded local phases. It does not authorize merging, deployment or scientific promotion. + +Inputs: exact HOSTED_SOURCE_MANIFEST.json digest inserted into the workflow; five named Lean sources and two negative fixtures; exact versioned verifier, tests, workflow and existing formal configuration. Native prepublication identity records bind these bytes before dispatch. The checkout, actual PR head/base, tested commit/tree, run/attempt/job, all nine package revisions, selected runtime binaries and exact source snapshots are retained by the runner and separately read back. + +Commands: source preflight via python3 -B -S; inert verifier tests via python3 -B -S -m unittest and python3 -B -O -S -m unittest; pinned lean-action cache setup with build/test/lint disabled; then lake env python3 -B -S ../frontiers/critical_ridge_20261020/c299_hosted_verify.py execute --manifest-sha256 . The driver resolves the actual runtime through lean --print-prefix and --version before invoking the measured binary. + +Formal sequence: five fresh builds, dependency order Lifetime, TorusTopology, MorseFiniteCritical, CriticalRidge, CriticalRidgeAxiomAudit; four standard named-module leanchecker replays excluding Lifetime; two actual omitted-premise fixtures WithoutCriticality and WithoutNegativeDefiniteness. Each formal phase uses a900-second cap; runtime probes30seconds; build/negative Lean commands use2threads and -M14000. The empty local output directory is prepended to the Lake environment. Build success requires rc0 and exact intended new objects; each negative requires rc1 plus the source-bound semantic diagnostic. Any unresolved classifier qualification keeps aggregate HOLD even if all commands executed. + +The dedicated job's205-minute platform cap is a conservative hard upper bound inherited from the reviewed pattern, not a claimed expected duration. The live cooperative claim must be renewed or the work handed off before expiry. No automatic native or hosted retry. Changed source/support inputs or unresolved actual failures are the only reasons for a further complete sequence. + +Before every process the exact command is determined from the source-bound driver; complete raw stdout/stderr and terminal receipt are saved, including failures/timeouts. The actual run preserves individual and aggregate receipts, before/after source/package/runtime/object identities, complete census and expected-negative flags. Artifacts upload even on failure. Missing or cancelled upload is HOLD, never inferred success. Final native/remote byte and hosted-artifact verification and substantive nonauthor review remain necessary. + +The native author candidate1 attempt is separately declared and uses historical byte-verified C293 objects for development; it is not the hosted fresh local-module sequence. Its timeout or import stall cannot count as a mathematical result. No full imported-library clean replay is claimed. diff --git a/frontiers/critical_ridge_20261020/HOSTED_SOURCE_MANIFEST.json b/frontiers/critical_ridge_20261020/HOSTED_SOURCE_MANIFEST.json new file mode 100644 index 000000000..a54c3ed9e --- /dev/null +++ b/frontiers/critical_ridge_20261020/HOSTED_SOURCE_MANIFEST.json @@ -0,0 +1,48 @@ +{ + "files": { + "negative-project/WithoutCriticality.lean": { + "bytes": 944, + "sha256": "6ebc44de843b951c312add4848962d76c4788cc10bdacf17002eb69fd370f1d2" + }, + "negative-project/WithoutNegativeDefiniteness.lean": { + "bytes": 872, + "sha256": "ad204aee211aa3074621f56eeaf8e1a3f3a522b7c7cbe2bbdd67f3759833feb9" + }, + "project/CriticalRidge.lean": { + "bytes": 8149, + "sha256": "b3c22e590f761953ba322ad2903978e3982179204ad5c4a166dffc5fa1558322" + }, + "project/CriticalRidgeAxiomAudit.lean": { + "bytes": 2728, + "sha256": "cff55f5b7721a621530ae1020b81e6cc89ce5c405396145e1ca5d3cfba4b2fb7" + }, + "project/Lifetime.lean": { + "bytes": 51383, + "sha256": "90f4892608e953ecc696bb32ea159d1c178ceb8a1c6edfd11acfceb14af462c6" + }, + "project/MorseFiniteCritical.lean": { + "bytes": 9445, + "sha256": "95a660134eda49eecfe6181884bd23b4e4ca210e228d2463de29e5f821df047b" + }, + "project/TorusTopology.lean": { + "bytes": 12257, + "sha256": "ddb145b3f791c181d4f2a51e54e711937297bd6476ba55bcd5252b7ddb57cfe1" + } + }, + "schema_version": 1, + "scientific_effect": "NONE", + "source_origins": { + "Lifetime": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/Lifetime.lean" + }, + "MorseFiniteCritical": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/MorseFiniteCritical.lean" + }, + "TorusTopology": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/TorusTopology.lean" + } + } +} diff --git a/frontiers/critical_ridge_20261020/README.md b/frontiers/critical_ridge_20261020/README.md new file mode 100644 index 000000000..12fa70a5f --- /dev/null +++ b/frontiers/critical_ridge_20261020/README.md @@ -0,0 +1,29 @@ +# Actual negative partial-gradient ridge (C299) + +This finite formal unit constructs one local correction `r : E d → V` from the literal `Lifetime.IsSmooth`, criticality at `p`, and strict negativity of the literal Hessian on every nonzero vector of the actual submodule `V`. The selected function has value zero and C2 regularity at zero; on one common neighborhood, the derivative of `f` at `p+w+r(w)` vanishes on every vector of V; its derivative satisfies `H(w+Dr(0)w,z)=0`. + +The parameter w is ambient. Restriction to a positive complement is later work; no orthogonality premise, supplied ridge, inverse certificate, Morse chart, desired local path connectivity or finite event list is an input. The zero subspace is included. + +The source uses the actual restricted Hessian block, proves its invertibility by strict negativity and finite-dimensional Riesz duality, and applies pinned Mathlib's smooth product implicit-function theorem. C293's literal-Hessian identity is consumed unchanged. + +Development status at first publication: source review performed, native import attempt retained, hosted elaboration and final formal verification pending. An execution report must bind the actual revision; this document does not claim compilation or theorem acceptance. + +## Provenance and verification boundaries + +Upstream sources are byte-identical to Math- commit `7af365e8c8db1ae0275d4efe08a70a678f153ca2`, paths `frontiers/critical_level_attainment_20261020/final-project/{Lifetime,TorusTopology,MorseFiniteCritical}.lean`. The source manifest binds all five modules and two intentionally ill-typed controls. Lean4.34.1 and Mathlib `d13f23b723b8a846827a245b89c10fc7d3f11612` are pinned by the existing formal environment. + +The dedicated workflow builds all five local modules into an empty output directory, standard-kernel checks the four non-Lifetime modules, and audits every declaration originating in all four proof/input modules, including private/generated constants. The audit module itself is built and kernel checked, but is not a fifth imported-origin census. Permitted axioms are only propext, Classical.choice, Quot.sound. The nine new public declarations are required targets within the complete census, not its denominator. The complete target list also includes four consumed source interfaces. + +Two omitted-premise controls target criticality and negative definiteness. A source-bound expected type-mismatch diagnostic is required; syntax/import/resource failures do not count. Initial diagnostic qualification remains pending until real compiler output is reviewed. Standard named-module checks do not replay or rebuild the entire imported Mathlib closure. Existing dependency objects may be cached; every local proof/input object in this workflow is freshly built. Tests and model agreement do not establish scientific acceptance. + +Actual principal: Dylan Roy. Actual source author: OpenAI Codex delegated agent `/root/adapter_feasibility_c292`; coordinator and delivery executor: `/root`, chat `01a0bbb5-2fcb-77f0-b78b-4d220ddd7ab2`; verification engineering author: `/root/c297_hosted_verifier`; fresh source-exposed nonauthor reviewer: `/root/c299_nonauthor_review`. Same provider, organizational independence0, blind0, human0. No human review by Dylan is claimed. Scientific effect NONE. + +## Remaining work + +Reduced-Hessian positivity, uniform signs and fiber concavity, actual tube paths, a cofinal path-connected neighborhood basis, Euclidean all-point assembly, actual quotient-superlevel transport, and C294's hclosedLPC discharge remain OPEN. Actual finite ordinary bars, elder pairing versus adjacency, once-counting, field-first sampling, all-small-bars converses and regional shrinking collisions remain separate OPEN obligations. A global factorial bound does not settle the regional collision node. + +Canonical coordination: Math- PR487 comment6292314595; R17 cooperative claim6e894b1f-d783-4ea0-adae-597e116b239a. Historical sources and other agents' claims remain unchanged. No merge, Ready transition or scientific promotion is part of this delivery. + +Governing onboarding sources read for this delivery: [15 October owner mandate](https://github.com/d6g8k5htny-coder/main/blob/b665307520948308a53d190d7341bf301df3b3a2/governance/OWNER_MANDATE_20261015.md) and [standing delegation](https://github.com/d6g8k5htny-coder/main/blob/b665307520948308a53d190d7341bf301df3b3a2/governance/OP-AUTONOMY-20260923-v2.1.md). The current scoped instructions and explicit stops still control. Linking these records establishes availability, not a future recipient's acknowledgement. + +Source custody update before hosted execution: the source author's additive correction [6292292150](https://github.com/d6g8k5htny-coder/Math-/pull/487#issuecomment-6292292150) now supplies the literal reviewed6961-byte proposal, including both terminal LFs. Its raw bytes match SHA25696a13c7e14e781220915e927caa34ba9ca94e26bd12bb7d53e7459b759c9b141. The original shorter payload and explicit reconstruction history remain preserved; the mathematical version did not change. diff --git a/frontiers/critical_ridge_20261020/SOURCE_PAPER_IDENTITIES.json b/frontiers/critical_ridge_20261020/SOURCE_PAPER_IDENTITIES.json new file mode 100644 index 000000000..d0d4d0711 --- /dev/null +++ b/frontiers/critical_ridge_20261020/SOURCE_PAPER_IDENTITIES.json @@ -0,0 +1,32 @@ +[ + { + "path": "sources/ridge-UNREVIEWED_RIDGE_ROUTE_V1.md", + "bytes": 6961, + "sha256": "96a13c7e14e781220915e927caa34ba9ca94e26bd12bb7d53e7459b759c9b141", + "source": "https://github.com/d6g8k5htny-coder/Math-/pull/487#issuecomment-6292079965", + "reconstruction": "append one LF", + "direct_fenced_bytes": 6960, + "direct_fenced_sha256": "6d9e532505307c5f115701b693046d8ebba6fea913a07f43fd8ecee6e3516558", + "raw_fenced_equality": false + }, + { + "path": "sources/ridge-NONAUTHOR_REVIEW.md", + "bytes": 20646, + "sha256": "de928866de9d077a980bc9c42744bfe557c2b6ff7c16b6c840449f4b21542657", + "source": "https://github.com/d6g8k5htny-coder/Math-/pull/487#issuecomment-6292079965", + "reconstruction": "direct fenced bytes", + "direct_fenced_bytes": 20646, + "direct_fenced_sha256": "de928866de9d077a980bc9c42744bfe557c2b6ff7c16b6c840449f4b21542657", + "raw_fenced_equality": true + }, + { + "path": "sources/api-API_AUDIT_REPORT.md", + "bytes": 17303, + "sha256": "1cc33f6368c628702dd447e1b20d8506deaf1b6132712a2feb13aaee6a02c4ae", + "source": "https://github.com/d6g8k5htny-coder/Math-/pull/487#issuecomment-6292239804", + "reconstruction": "direct fenced bytes", + "direct_fenced_bytes": 17303, + "direct_fenced_sha256": "1cc33f6368c628702dd447e1b20d8506deaf1b6132712a2feb13aaee6a02c4ae", + "raw_fenced_equality": true + } +] diff --git a/frontiers/critical_ridge_20261020/c299_hosted_verify.py b/frontiers/critical_ridge_20261020/c299_hosted_verify.py new file mode 100644 index 000000000..521bd0175 --- /dev/null +++ b/frontiers/critical_ridge_20261020/c299_hosted_verify.py @@ -0,0 +1,626 @@ +#!/usr/bin/env python3 +"""C299 scoped hosted verification; no scientific promotion or human review. + +Run from the existing pinned formal/ Lake environment. Sources are pinned by an +explicit manifest digest in the dedicated workflow. Every attempt retains exact +streams and a receipt before any failure is raised. No retry is performed. +""" +import argparse +from datetime import datetime, timezone +import hashlib +import json +import os +from pathlib import Path +import platform +import re +import shutil +import signal +import subprocess +import time + +PREFIX = 'frontiers/critical_ridge_20261020' +WORKFLOW = '.github/workflows/c299-critical-ridge.yml' +MANIFEST = 'HOSTED_SOURCE_MANIFEST.json' +MODULES = ('Lifetime', 'TorusTopology', 'MorseFiniteCritical', + 'CriticalRidge', 'CriticalRidgeAxiomAudit') +REPLAY_MODULES = MODULES[1:] +AUDIT_MODULES = MODULES[:4] +NEGATIVES = ('WithoutCriticality', 'WithoutNegativeDefiniteness') +ALLOWED_AXIOMS = {'propext', 'Classical.choice', 'Quot.sound'} +# Candidate-2 source names; formal execution and final diagnostic review pending. +REQUIRED = ('UniversalLaw.Spec.Lifetime.IsSmooth', 'UniversalLaw.Spec.Lifetime.IsCriticalPoint', 'UniversalLaw.Spec.Lifetime.hessian', 'TorusMorseFinite.literal_hessian_eq_fderiv', 'TorusCriticalRidge.restrictCovector', 'TorusCriticalRidge.ridgeAddition', 'TorusCriticalRidge.negativePartialGradient', 'TorusCriticalRidge.negativeHessianBlock', 'TorusCriticalRidge.negativeHessianBlock_apply', 'TorusCriticalRidge.negativeHessianBlock_isInvertible', 'TorusCriticalRidge.negativePartialGradient_contDiff', 'TorusCriticalRidge.negativePartialGradient_hasFDerivAt', 'TorusCriticalRidge.exists_negative_partial_gradient_ridge') +MATHLIB_PIN = 'd13f23b723b8a846827a245b89c10fc7d3f11612' +LEAN_VERSION = '4.34.1' +PACKAGE_PINS = { + 'plausible': '118aa17ee84656b8bd727fef7c458ee8c833385c', + 'LeanSearchClient': 'ddf04cf3949fa556442341e87d47f9f6e6074707', + 'importGraph': 'e928b72544873815af278d38681b31c0293588e3', + 'proofwidgets': '106ff4fafc74ef4ac99d81dbf3ab399118f497a5', + 'aesop': '355695d523e41d0554926416cba2a2b3544fbbc9', + 'Qq': '6a489d9af5d0c47e5b259e2e8bcdfc1811b5a259', + 'batteries': 'f2effa3d803fda822b1f97b806c47cf2adfbcbc2', + 'Cli': 'e92c9f15fdfacc8536f31cfb3b7ad26c3c8cd204', + 'mathlib': MATHLIB_PIN, +} + + +def now(): + return datetime.now(timezone.utc).isoformat() + + +def identity(path): + data = Path(path).read_bytes() + return {'bytes': len(data), 'sha256': hashlib.sha256(data).hexdigest()} + + +def safe_source(path, root): + path, root = Path(path).absolute(), Path(root).absolute() + if not path.is_relative_to(root): + raise RuntimeError(f'source outside repository: {path}') + parts = path.relative_to(root).parts + for n in range(1, len(parts) + 1): + if root.joinpath(*parts[:n]).is_symlink(): + raise RuntimeError(f'symlinked source: {path}') + if not path.is_file(): + raise RuntimeError(f'source missing or not regular: {path}') + + +def verify_file(path, expected, root): + safe_source(path, root) + if (set(expected) != {'bytes', 'sha256'} or + type(expected['bytes']) is not int or expected['bytes'] < 1 or + not re.fullmatch('[0-9a-f]{64}', expected['sha256'])): + raise RuntimeError(f'invalid expected source identity: {path}') + actual = identity(path) + if actual != expected: + raise RuntimeError(f'source identity mismatch: {path}: {actual}') + return actual + + +def verify_sources(root, manifest_sha256): + root = Path(root) + packet = root / PREFIX + path = packet / MANIFEST + safe_source(path, root) + if not re.fullmatch('[0-9a-f]{64}', manifest_sha256): + raise RuntimeError('explicit frozen manifest SHA-256 required') + if identity(path)['sha256'] != manifest_sha256: + raise RuntimeError('frozen source manifest identity mismatch') + manifest = json.loads(path.read_text()) + if manifest.get('schema_version') != 1 or manifest.get('scientific_effect') != 'NONE': + raise RuntimeError('invalid C299 manifest schema or scientific-effect field') + expected = {f'project/{m}.lean' for m in MODULES} | { + f'negative-project/{m}.lean' for m in NEGATIVES} + if set(manifest.get('files', {})) != expected: + raise RuntimeError('manifest must bind exactly five modules and two controls') + sources = {rel: verify_file(packet / rel, spec, root) + for rel, spec in manifest['files'].items()} + origins = manifest.get('source_origins', {}) + if set(origins) != {'Lifetime', 'TorusTopology', 'MorseFiniteCritical'}: + raise RuntimeError('all three frozen input source origins are required') + for name, origin in origins.items(): + if (not isinstance(origin, dict) or not re.fullmatch('[0-9a-f]{40}', origin.get('commit', '')) + or not isinstance(origin.get('path'), str) or not origin['path'] + or Path(origin['path']).is_absolute() or '..' in Path(origin['path']).parts): + raise RuntimeError(f'invalid input source origin: {name}') + upstream = root / 'specifications/lean_statements_20261010/Specifications/Lifetime.lean' + verify_file(upstream, manifest['files']['project/Lifetime.lean'], root) + config = {} + for rel in ('formal/lean-toolchain', 'formal/lakefile.toml', 'formal/lake-manifest.json'): + safe_source(root / rel, root) + config[rel] = identity(root / rel) + if (root / 'formal/lean-toolchain').read_text().strip() != 'leanprover/lean4:v' + LEAN_VERSION: + raise RuntimeError('Lean toolchain pin changed') + if f'rev = "{MATHLIB_PIN}"' not in (root / 'formal/lakefile.toml').read_text(): + raise RuntimeError('Lake mathlib pin changed') + lock = json.loads((root / 'formal/lake-manifest.json').read_text()) + if {p['name']: p['rev'] for p in lock['packages']} != PACKAGE_PINS: + raise RuntimeError('dependency lock pins changed') + support = {} + for rel in (WORKFLOW, PREFIX + '/c299_hosted_verify.py', + PREFIX + '/test_c299_hosted_verify.py'): + safe_source(root / rel, root) + support[rel] = identity(root / rel) + return {'manifest': identity(path), 'files': sources, 'source_origins': origins, + 'source_origin_limit': 'Remote origin byte equality is a separate owner custody check.', + 'formal_config': config, 'support_files': support, 'dependency_pins': PACKAGE_PINS} + + +def audit_records(output): + """Join Lean's wrapped AXIOMS arrays; reject interrupted or truncated records.""" + pending = None + for line in output.splitlines(): + if pending is not None: + if 'CRITICAL_RIDGE_AUDIT_' in line: + raise RuntimeError('audit declaration interrupted before closing axiom list') + pending += ' ' + line.strip() + if ']' in line: + yield pending + pending = None + continue + if 'CRITICAL_RIDGE_AUDIT_' not in line: + continue + marker = line[line.index('CRITICAL_RIDGE_AUDIT_'):].strip() + if marker.startswith('CRITICAL_RIDGE_AUDIT_PROGRESS '): + continue + if marker.startswith('CRITICAL_RIDGE_AUDIT_DECL ') and 'AXIOMS [' in marker and ']' not in marker: + pending = marker + continue + yield marker + if pending is not None: + raise RuntimeError('truncated audit axiom list') + + +def validate_audit(output, modules=AUDIT_MODULES, required=REQUIRED): + """Read every module-origin record, not just a total or public-name sample.""" + counts, names, current, seen = {}, {}, None, set() + total = None + for marker in audit_records(output): + m = re.fullmatch(r'CRITICAL_RIDGE_AUDIT_MODULE (\S+) COUNT (\d+)', marker) + if m: + current, count = m.group(1), int(m.group(2)) + if total is not None or current not in modules or current in counts or count < 1: + raise RuntimeError('invalid or duplicate audit module census') + counts[current], names[current] = count, [] + continue + m = re.fullmatch(r'CRITICAL_RIDGE_AUDIT_DECL (\S+) AXIOMS \[([^\[\]]*)\]', marker) + if m: + name, raw_axioms = m.groups() + axioms = {s.strip() for s in raw_axioms.split(',') if s.strip()} + if current is None or total is not None or name in seen or not axioms <= ALLOWED_AXIOMS: + raise RuntimeError('invalid, repeated or forbidden audit declaration') + names[current].append(name) + seen.add(name) + continue + m = re.fullmatch(r'CRITICAL_RIDGE_AUDIT_STANDARD_ONLY_PASS COUNT (\d+)', marker) + if m and total is None: + total = int(m.group(1)) + continue + raise RuntimeError(f'unrecognized or repeated audit marker: {marker}') + if (tuple(counts) != tuple(modules) or total != len(seen) or total != sum(counts.values()) + or any(len(names[m]) != counts[m] for m in counts) + or not set(required) <= seen): + raise RuntimeError('incomplete audit census or missing required target') + return {'module_counts': counts, 'declaration_count': total, + 'required_targets': list(required), 'allowed_axioms': sorted(ALLOWED_AXIOMS), + 'module_declarations': names} + + +def require_final_predicates(): + """Draft stop: replace only after exact source/fixtures/diagnostics review. + + This explicit stop blocks final acceptance AFTER both control attempts. + Development may collect actual build/kernel/diagnostic evidence. The draft + parser supplies reviewable intended-type logic; synthetic fixture tests are + not actual Lean diagnostics or final acceptance. + """ + raise RuntimeError('PENDING_C299_NEGATIVE_PREDICATES: actual diagnostics and final source freeze required') + + +def validate_negative(name, returncode, output): + return validate_negative_draft(name, returncode, output) + + +def validate_negative_draft(name, returncode, output): + """Candidate diagnostic parser; final observed spelling must be reviewed.""" + if name not in NEGATIVES: + raise RuntimeError('unknown negative control') + flat = ' '.join(output.split()) + forbidden = ('unknown identifier', 'unknown module', 'file not found', 'no such file', + 'memory_exception', 'out of memory', 'unexpected token', 'unsolved goals', + 'maximum recursion', 'maximum heartbeats', 'failed to', 'panic', 'sorry') + if (returncode != 1 or output.count('error:') != 1 + or any(x in flat.lower() for x in forbidden)): + raise RuntimeError('negative control failed for an unrelated reason') + pattern = (r'\A[^\n]*' + re.escape(name) + r'\.lean:\d+:\d+: error: Type mismatch\s*\n' + r'(?P.*?)\nhas type\s*\n(?P.*?)' + r'\nbut is expected to have type\s*\n(?P.*?)\s*\Z') + match = re.fullmatch(pattern, output.strip(), flags=re.S) + if match is None: + raise RuntimeError('expected one source-bound type-mismatch diagnostic') + expression, actual, expected = (' '.join(match.group(k).split()) + for k in ('expression', 'actual', 'expected')) + target = 'TorusCriticalRidge.exists_negative_partial_gradient_ridge' + if target not in expression or 'f p V hsmooth' not in expression: + raise RuntimeError('wrong actual theorem application') + if name == 'WithoutCriticality': + if not re.fullmatch(r'fun hcritical => ' + re.escape(target) + + r' f p V hsmooth hcritical hneg', expression): + raise RuntimeError('wrong criticality-omission application') + premise = r'IsCriticalPoint d f p' + else: + if expression != target + ' f p V hsmooth hcritical': + raise RuntimeError('wrong negative-definiteness-omission application') + premise = r'\(∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0\)' + if not re.fullmatch(premise + r' → ' + re.escape(expected), actual): + raise RuntimeError('actual type is not the omitted premise followed by the expected conclusion') + # Fixed candidate-2 binder names and all four same-ridge conclusion fields. + conclusion = (r'∃ r, r 0 = 0 ∧ ContDiffAt ℝ 2 r 0 ∧ ' + r'\(∀ᶠ w in 𝓝 0, ∀ \(z : ↥V\), \(fderiv ℝ f \(p \+ w \+ ↑\(r w\)\)\) ↑z = 0\) ∧ ' + r'∀ \(w : E d\) \(z : ↥V\), hessian d f p \(w \+ ↑\(\(fderiv ℝ r 0\) w\)\) ↑z = 0') + if not re.fullmatch(conclusion, expected): + raise RuntimeError('expected conclusion does not match all four candidate ridge fields') + return {'control': name, 'diagnostic_source': name + '.lean', + 'draft_only': True, 'actual_diagnostic_observed': False} + + +def save_report(evidence, report): + (evidence / 'RESULT.json').write_text(json.dumps(report, indent=2, sort_keys=True) + '\n') + + +def save_phase(evidence, report, record): + (evidence / (record['name'] + '.receipt.json')).write_text( + json.dumps(record, indent=2, sort_keys=True) + '\n') + save_report(evidence, report) + + +def object_inventory(build): + result = {} + for path in sorted(Path(build).iterdir()): + safe_source(path, build) + result[path.name] = identity(path) + return result + + +def validate_objects(before, after, build_module=None): + if any(after.get(name) != spec for name, spec in before.items()): + raise RuntimeError('previous local input object changed or disappeared') + additions = set(after) - set(before) + if build_module is None: + if additions: + raise RuntimeError('non-build phase added an unexpected local object') + return + allowed = {build_module + suffix for suffix in + ('.olean', '.olean.private', '.olean.server', '.ilean', '.ir')} + if build_module + '.olean' not in additions or not additions <= allowed: + raise RuntimeError('build must add only its own target object outputs') + + +ENVIRONMENT_POLICY = ( + 'Remove inherited LEAN*, LAKE*, LD_* and DYLD_* overrides, except the ' + 'Lake-provided LEAN_PATH; prepend the fresh local object directory to that ' + 'path and set LEAN_NUM_THREADS=2. Retain declared PATH for launcher lookup. ' + 'Other inherited variables remain available but are not recorded. Record ' + 'only selected non-secret path/thread values and removed variable names.') +ENVIRONMENT_KEYS = ('PATH', 'LEAN_PATH', 'LEAN_NUM_THREADS') + + +def environment_override(name): + return name.startswith(('LEAN', 'LAKE', 'LD_', 'DYLD_')) + + +def json_digest(value): + data = json.dumps(value, sort_keys=True, separators=(',', ':')).encode() + return hashlib.sha256(data).hexdigest() + + +def build_environment(inherited, build): + """Preserve Lake's dependency search path, stripping other tool overrides.""" + env = dict(inherited) + if not env.get('PATH'): + raise RuntimeError('explicit nonempty launcher PATH required') + inherited_lean_path = env.get('LEAN_PATH', '') + removed = sorted(name for name in env + if environment_override(name) and name != 'LEAN_PATH') + for name in removed: + del env[name] + env['LEAN_PATH'] = str(Path(build).resolve()) + if inherited_lean_path: + env['LEAN_PATH'] += os.pathsep + inherited_lean_path + env['LEAN_NUM_THREADS'] = '2' + contract = { + 'policy': ENVIRONMENT_POLICY, + 'retained_lake_lean_path': inherited_lean_path, + 'removed_variable_names': removed, + 'selected_environment': {key: env[key] for key in ENVIRONMENT_KEYS}, + } + contract['sha256'] = json_digest(contract) + return env, contract + + +def resolve_lean_launcher(env): + launcher = shutil.which('lean', path=env['PATH']) + if launcher is None: + raise RuntimeError('missing Lean launcher on declared PATH') + return Path(launcher).resolve() + + +def phase_environment(env, contract): + selected = {key: env.get(key) for key in ENVIRONMENT_KEYS} + unexpected = sorted(name for name in env if environment_override(name) + and name not in ('LEAN_PATH', 'LEAN_NUM_THREADS')) + measured = {'selected_environment': selected, + 'unexpected_override_names': unexpected} + error = None + if contract is not None: + body = {key: value for key, value in contract.items() if key != 'sha256'} + if (contract.get('policy') != ENVIRONMENT_POLICY + or contract.get('sha256') != json_digest(body) + or selected != contract.get('selected_environment') + or selected['LEAN_NUM_THREADS'] != '2' or unexpected): + error = 'phase environment differs from declared policy or selected values' + return selected, json_digest(measured), unexpected, error + + +def run_phase(name, args, cwd, env, evidence, report, expected_success=True, + timeout=900, build_dir=None, build_module=None): + """Persist raw streams, per-phase receipt, and aggregate receipt before raise.""" + if not re.fullmatch('[A-Za-z0-9_-]+', name): + raise RuntimeError('unsafe phase name') + evidence = Path(evidence) + out_path, err_path = evidence / (name + '.stdout'), evidence / (name + '.stderr') + start, utc_start = time.monotonic(), now() + timed_out, spawn_error, code = False, None, None + objects_before, objects_after, object_error = None, None, None + contract = report.get('environment_contract') + selected_env, env_digest, override_names, env_error = phase_environment(env, contract) + with out_path.open('xb') as stdout, err_path.open('xb') as stderr: + try: + if build_dir is not None: + objects_before = object_inventory(build_dir) + except (OSError, RuntimeError) as exc: + object_error = str(exc) + if object_error is None and env_error is None: + try: + proc = subprocess.Popen(args, cwd=cwd, env=env, stdout=stdout, stderr=stderr, + start_new_session=True) + try: + code = proc.wait(timeout=timeout) + except subprocess.TimeoutExpired: + timed_out = True + try: + os.killpg(proc.pid, signal.SIGTERM) + except ProcessLookupError: + pass + try: + code = proc.wait(timeout=5) + except subprocess.TimeoutExpired: + try: + os.killpg(proc.pid, signal.SIGKILL) + except ProcessLookupError: + pass + code = proc.wait(timeout=5) + except (OSError, subprocess.TimeoutExpired) as exc: + spawn_error = str(exc) + if build_dir is not None: + try: + objects_after = object_inventory(build_dir) + if object_error is None: + validate_objects(objects_before, objects_after, build_module) + except (OSError, RuntimeError) as exc: + object_error = str(exc) + valid = (not timed_out and spawn_error is None and object_error is None and env_error is None and + (code == 0 if expected_success else code == 1)) + record = {'name': name, 'command': list(args), 'cwd': str(cwd), + 'started_at': utc_start, 'finished_at': now(), + 'duration_seconds': round(time.monotonic() - start, 6), + 'timeout_seconds': timeout, 'timed_out': timed_out, + 'spawn_error': spawn_error, 'exit_code': code, + 'stdout_sha256': identity(out_path)['sha256'], 'stdout_bytes': out_path.stat().st_size, + 'stderr_sha256': identity(err_path)['sha256'], 'stderr_bytes': err_path.stat().st_size, + 'objects_before': objects_before, 'objects_after': objects_after, + 'object_validation_error': object_error, + 'selected_environment': selected_env, + 'environment_sha256': env_digest, + 'environment_contract_sha256': contract.get('sha256') if contract else None, + 'unexpected_override_names': override_names, + 'environment_validation_error': env_error, + 'status': 'PASS' if valid else 'FAIL'} + report['phase_results'].append(record) + save_phase(evidence, report, record) + print(f'C299 {name}: exit={code} timeout={timed_out} seconds={record["duration_seconds"]}', flush=True) + if not valid: + raise RuntimeError(f'C299 {name} unexpected exit: {code}; timed_out={timed_out}; ' + f'spawn_error={spawn_error}; object_error={object_error}; environment_error={env_error}') + output = out_path.read_bytes().decode('utf8', 'replace') + '\n' + err_path.read_bytes().decode('utf8', 'replace') + return record, output, code + + +def git(root, *args): + return subprocess.check_output(['git', *args], cwd=root, text=True, timeout=30).strip() + + +def verify_packages(root): + result = {} + for name, expected in PACKAGE_PINS.items(): + path = root / 'formal/.lake/packages' / name + actual = git(path, 'rev-parse', 'HEAD') + if actual != expected or git(path, 'status', '--porcelain', '--untracked-files=no'): + raise RuntimeError(f'installed dependency mismatch or tracked change: {name}') + result[name] = actual + return result + + +def hosted_context(root): + keys = ('GITHUB_SHA', 'GITHUB_RUN_ID', 'GITHUB_RUN_ATTEMPT', 'GITHUB_REPOSITORY', + 'GITHUB_EVENT_NAME', 'GITHUB_WORKFLOW', 'GITHUB_JOB') + if any(not os.environ.get(k) for k in keys): + raise RuntimeError('actual GitHub execution context required') + if os.environ['GITHUB_REPOSITORY'] != 'd6g8k5htny-coder/Math-': + raise RuntimeError('wrong repository') + head = git(root, 'rev-parse', 'HEAD') + if head != os.environ['GITHUB_SHA']: + raise RuntimeError('tested checkout does not match GITHUB_SHA') + context = {k.lower(): os.environ[k] for k in keys} + context['tested_commit'] = head + context['tested_tree'] = git(root, 'rev-parse', 'HEAD^{tree}') + context['tested_parents'] = git(root, 'show', '-s', '--format=%P', 'HEAD').split() + event_path = Path(os.environ.get('GITHUB_EVENT_PATH', '/nonexistent')) + if event_path.is_file(): + event = json.loads(event_path.read_text()) + if 'pull_request' in event: + context['pull_request'] = { + 'number': event['number'], 'head_sha': event['pull_request']['head']['sha'], + 'base_sha': event['pull_request']['base']['sha']} + context['executor'] = 'GitHub-hosted runner executing C299 verification code' + context['human_review_credit'] = 0 + return context + + +def source_only(root, digest): + evidence = root / '.lake/c299-hosted-evidence' + evidence.mkdir(parents=True, exist_ok=False) + report = {'status': 'HOLD_SOURCE_PREFLIGHT', 'scientific_effect': 'NONE', + 'phase_results': [], 'started_at': now()} + save_report(evidence, report) + try: + report['context'] = hosted_context(root) + report['source_identity'] = verify_sources(root, digest) + snapshots = evidence / 'source-snapshot' + for relative in report['source_identity']['files']: + dest = snapshots / relative + dest.parent.mkdir(parents=True, exist_ok=True) + shutil.copyfile(root / PREFIX / relative, dest) + shutil.copyfile(root / PREFIX / MANIFEST, evidence / MANIFEST) + for relative in report['source_identity']['support_files']: + dest = snapshots / 'repository' / relative + dest.parent.mkdir(parents=True, exist_ok=True) + shutil.copyfile(root / relative, dest) + report['status'] = 'PASS_SOURCE_PREFLIGHT_ONLY' + except BaseException as exc: + report['status'], report['failure'] = 'HOLD_SOURCE_PREFLIGHT_FAILED', repr(exc) + raise + finally: + save_report(evidence, report) + + +def execute(root, digest): + packet, formal = root / PREFIX, root / 'formal' + evidence = root / '.lake/c299-hosted-evidence' + report = json.loads((evidence / 'RESULT.json').read_text()) + if report['status'] != 'PASS_SOURCE_PREFLIGHT_ONLY' or report['phase_results']: + raise RuntimeError('exact unused source preflight required; no automatic retry') + build = evidence / 'objects' + build.mkdir(exist_ok=False) + report.update(status='HOLD_NOT_COMPLETED', started_execution_at=now(), + memory_limit='-M14000', threads=2, phase_timeout_seconds=900, + memory_limit_reason='Explicit Linux execution budget; not a claim that C299 requires this amount.', + verification_scope='Five fresh local objects; four standard named-module kernel replays; full four-module axiom census; two omitted-premise interface controls.', + replay_limit='Not a --fresh replay or rebuild of the full dependency closure.') + save_report(evidence, report) + try: + context = hosted_context(root) + if context != report['context']: + raise RuntimeError('execution context changed since source preflight') + source_before = verify_sources(root, digest) + if source_before != report['source_identity']: + raise RuntimeError('inputs changed since source preflight') + report['packages_before'] = verify_packages(root) + env, report['environment_contract'] = build_environment(os.environ, build) + save_report(evidence, report) + launcher = resolve_lean_launcher(env) + report['lean_launcher'] = {'path': str(launcher), **identity(launcher)} + # Resolve the toolchain prefix through the selected launcher, then execute + # the measured toolchain binaries directly; an elan shim is not the runtime. + _, prefix_output, _ = run_phase('runtime-print-prefix', + [str(launcher), '--print-prefix'], formal, env, evidence, report, timeout=30) + prefix = Path(prefix_output.strip()) + if not prefix.is_absolute() or not prefix.is_dir(): + raise RuntimeError('Lean did not return an existing absolute toolchain prefix') + runtimes = {} + for executable in ('lean', 'leanchecker'): + binary = (prefix / 'bin' / executable).resolve() + if not binary.is_file() or not os.access(binary, os.X_OK): + raise RuntimeError(f'missing toolchain runtime: {executable}') + runtimes[executable] = {'path': str(binary), **identity(binary)} + report['runtimes'] = runtimes + report['machine'] = {'platform': platform.platform(), 'machine': platform.machine(), + 'python': platform.python_version()} + _, version, _ = run_phase('runtime-version', [runtimes['lean']['path'], '--version'], + formal, env, evidence, report, timeout=30) + if 'version ' + LEAN_VERSION not in version: + raise RuntimeError('wrong Lean runtime version') + report['lean_version_output'] = version + for module in MODULES: + args = [runtimes['lean']['path'], '-j2', '-M14000'] + if module != 'Lifetime': + args += ['-DwarningAsError=true'] + args += ['-o', str(build / (module + '.olean')), + str(packet / 'project' / (module + '.lean'))] + rec, output, _ = run_phase('build-' + module, args, packet / 'project', env, evidence, report, + build_dir=build, build_module=module) + obj = build / (module + '.olean') + safe_source(obj, evidence) + rec['object'] = identity(obj) + if module == 'CriticalRidgeAxiomAudit': + report['audit'] = validate_audit(output) + if verify_sources(root, digest) != source_before: + raise RuntimeError('inputs changed during build') + save_phase(evidence, report, rec) + built_objects = object_inventory(build) + expected_main = {m + '.olean' for m in MODULES} + allowed_outputs = {m + suffix for m in MODULES for suffix in + ('.olean', '.olean.private', '.olean.server', '.ilean', '.ir')} + if not expected_main <= set(built_objects) or not set(built_objects) <= allowed_outputs: + raise RuntimeError('unexpected complete final object set') + report['objects_after_builds'] = built_objects + save_report(evidence, report) + for module in REPLAY_MODULES: + run_phase('kernel-' + module, [runtimes['leanchecker']['path'], '-v', module], + packet / 'project', env, evidence, report, build_dir=build) + report['negative_classification_errors'] = [] + report['negative_predicates_qualified'] = False + for name in NEGATIVES: + rec = None + try: + rec, output, code = run_phase('negative-' + name, + [runtimes['lean']['path'], '-j2', '-M14000', str(packet / 'negative-project' / (name + '.lean'))], + packet / 'negative-project', env, evidence, report, expected_success=False, + build_dir=build) + validate_negative(name, code, output) + rec['candidate_parser_match'] = True + except RuntimeError as exc: + # run_phase persists its receipt before raising. Preserve a + # rejected spelling/exit and gather the second distinct control. + if rec is None: + rec = report['phase_results'][-1] + if rec['name'] != 'negative-' + name: + raise + rec['candidate_parser_match'] = False + rec['negative_classification_error'] = str(exc) + report['negative_classification_errors'].append({'control': name, 'error': str(exc)}) + if rec.get('object_validation_error') is not None: + save_phase(evidence, report, rec) + raise + rec['intended_missing_premise_rejection'] = False + rec['diagnostic_qualification_pending'] = True + save_phase(evidence, report, rec) + report['packages_after'] = verify_packages(root) + report['source_identity_after'] = verify_sources(root, digest) + if report['source_identity_after'] != source_before: + raise RuntimeError('inputs changed during verification') + for executable, spec in runtimes.items(): + if identity(spec['path']) != {k: spec[k] for k in ('bytes', 'sha256')}: + raise RuntimeError(f'runtime changed: {executable}') + report['objects'] = object_inventory(build) + if report['objects'] != built_objects: + raise RuntimeError('local objects changed during kernel or negative phases') + if report['negative_classification_errors']: + raise RuntimeError('C299 negative diagnostics require source-bound review: ' + + repr(report['negative_classification_errors'])) + require_final_predicates() + report['status'] = 'PASS_HOSTED_C299_EXACT_TARGETS' + report['completed_at'] = now() + print('C299_HOSTED_FORMAL_PASS: scoped formal execution only; scientific effect NONE.', flush=True) + except BaseException as exc: + report['status'], report['failure'] = 'HOLD_NOT_COMPLETED', repr(exc) + raise + finally: + save_report(evidence, report) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('mode', choices=('source', 'execute')) + parser.add_argument('--manifest-sha256', required=True) + args = parser.parse_args() + # Published location is exactly frontiers//c299_hosted_verify.py. + root = Path(__file__).resolve().parents[2] + if args.mode == 'source': + source_only(root, args.manifest_sha256) + else: + execute(root, args.manifest_sha256) + + +if __name__ == '__main__': + main() diff --git a/frontiers/critical_ridge_20261020/engineering/E1_FINAL_GREEN1.receipt.json b/frontiers/critical_ridge_20261020/engineering/E1_FINAL_GREEN1.receipt.json new file mode 100644 index 000000000..42b1e5057 --- /dev/null +++ b/frontiers/critical_ridge_20261020/engineering/E1_FINAL_GREEN1.receipt.json @@ -0,0 +1,31 @@ +{ + "declaration_sha256": "02a947caf83e3ae1da781b583cc830d215ffc965948d1aec8ff75eb6276174a0", + "command": [ + "/Library/Developer/CommandLineTools/usr/bin/python3", + "-B", + "-S", + "-m", + "unittest", + "discover", + "-s", + ".", + "-p", + "test_c299_hosted_verify.py", + "-v" + ], + "started_at": "2026-10-20T14:12:19.035698+00:00", + "finished_at": "2026-10-20T14:12:19.319412+00:00", + "duration_seconds": 0.283607334, + "exit_code": 0, + "timed_out": false, + "streams": { + "E1_FINAL_GREEN1.stdout": { + "bytes": 452, + "sha256": "a505a4306de6376d70153c4b9538f13051123116c1a76fc74803161e787d868f" + }, + "E1_FINAL_GREEN1.stderr": { + "bytes": 2337, + "sha256": "03c78832ea4a9769bc6c37980f8941133697be5d9f643dd6edda28ccfbddcabe" + } + } +} diff --git a/frontiers/critical_ridge_20261020/engineering/E1_FINAL_GREEN1.stderr b/frontiers/critical_ridge_20261020/engineering/E1_FINAL_GREEN1.stderr new file mode 100644 index 000000000..a476c6d19 --- /dev/null +++ b/frontiers/critical_ridge_20261020/engineering/E1_FINAL_GREEN1.stderr @@ -0,0 +1,31 @@ +test_amended_phase_receipt_matches_aggregate (test_c299_hosted_verify.HostedVerifierTests) +Semantic/object metadata must not exist only in the aggregate receipt. ... ok +test_audit_cannot_omit_required_target_or_hide_axiom (test_c299_hosted_verify.HostedVerifierTests) +Count-only validation would accept a substituted target or sorryAx. ... ok +test_build_allows_only_its_own_outputs (test_c299_hosted_verify.HostedVerifierTests) +A build may add its target object, not an unrelated replacement. ... ok +test_environment_contract_strips_overrides_and_uses_declared_path (test_c299_hosted_verify.HostedVerifierTests) +An inherited tool/loader override must not survive or leak its value. ... ok +test_failed_phase_receipt_and_exact_streams_survive_abort (test_c299_hosted_verify.HostedVerifierTests) +Raising before persistence would discard the actual failing phase. ... ok +test_inactive_draft_negative_sections_reject_forged_fields (test_c299_hosted_verify.HostedVerifierTests) +Section/token-only matching would accept unrelated existential fields. ... ok +test_modified_source_bytes_are_rejected (test_c299_hosted_verify.HostedVerifierTests) +Dropping size/hash verification would accept the modified file. ... ok +test_pending_final_acceptance_fails_closed (test_c299_hosted_verify.HostedVerifierTests) +Collecting diagnostics must not silently qualify final acceptance. ... ok +test_phase_environment_mutation_is_blocked_and_receipted (test_c299_hosted_verify.HostedVerifierTests) +A changed search path or injected loader must fail before the child runs. ... ok +test_phase_rejects_imported_object_mutation (test_c299_hosted_verify.HostedVerifierTests) +A successful compiler process may not alter a prior input object. ... ok +test_pinned_lean_multiline_axiom_records (test_c299_hosted_verify.HostedVerifierTests) +Actual pinned Lean wraps the unchanged Lifetime axiom arrays. ... ok +test_source_preflight_can_collect_before_final_predicate_qualification (test_c299_hosted_verify.HostedVerifierTests) +An early final-acceptance gate would block needed actual diagnostics. ... ok +test_timeout_preserves_partial_stream_and_receipt (test_c299_hosted_verify.HostedVerifierTests) +Timeout handling must not discard the child output or phase result. ... ok + +---------------------------------------------------------------------- +Ran 13 tests in 0.229s + +OK diff --git a/frontiers/critical_ridge_20261020/engineering/E1_FINAL_GREEN1.stdout b/frontiers/critical_ridge_20261020/engineering/E1_FINAL_GREEN1.stdout new file mode 100644 index 000000000..5ea8d60dc --- /dev/null +++ b/frontiers/critical_ridge_20261020/engineering/E1_FINAL_GREEN1.stdout @@ -0,0 +1,7 @@ +C299 valid-phase: exit=0 timeout=False seconds=0.024488 +C299 deliberate-failure: exit=7 timeout=False seconds=0.023701 +C299 environment-valid: exit=0 timeout=False seconds=0.022278 +C299 environment-mutated-0: exit=None timeout=False seconds=0.000147 +C299 environment-mutated-1: exit=None timeout=False seconds=0.000142 +C299 deliberate-object-mutation: exit=0 timeout=False seconds=0.023796 +C299 deliberate-timeout: exit=-15 timeout=True seconds=0.1088 diff --git a/frontiers/critical_ridge_20261020/engineering/E1_FINAL_GREEN2.receipt.json b/frontiers/critical_ridge_20261020/engineering/E1_FINAL_GREEN2.receipt.json new file mode 100644 index 000000000..de2ea941d --- /dev/null +++ b/frontiers/critical_ridge_20261020/engineering/E1_FINAL_GREEN2.receipt.json @@ -0,0 +1,32 @@ +{ + "declaration_sha256": "02a947caf83e3ae1da781b583cc830d215ffc965948d1aec8ff75eb6276174a0", + "command": [ + "/Library/Developer/CommandLineTools/usr/bin/python3", + "-B", + "-O", + "-S", + "-m", + "unittest", + "discover", + "-s", + ".", + "-p", + "test_c299_hosted_verify.py", + "-v" + ], + "started_at": "2026-10-20T14:12:19.319909+00:00", + "finished_at": "2026-10-20T14:12:19.606126+00:00", + "duration_seconds": 0.28622745800000005, + "exit_code": 0, + "timed_out": false, + "streams": { + "E1_FINAL_GREEN2.stdout": { + "bytes": 453, + "sha256": "acd8870b69e23731216773b0df72046ea0114e869f565ffa1794f0587b5346fa" + }, + "E1_FINAL_GREEN2.stderr": { + "bytes": 2337, + "sha256": "2bda381dc2478aaa4af4cd25018b187e0ade42cc2aec966c856958c26f157c5c" + } + } +} diff --git a/frontiers/critical_ridge_20261020/engineering/E1_FINAL_GREEN2.stderr b/frontiers/critical_ridge_20261020/engineering/E1_FINAL_GREEN2.stderr new file mode 100644 index 000000000..70b79b6cf --- /dev/null +++ b/frontiers/critical_ridge_20261020/engineering/E1_FINAL_GREEN2.stderr @@ -0,0 +1,31 @@ +test_amended_phase_receipt_matches_aggregate (test_c299_hosted_verify.HostedVerifierTests) +Semantic/object metadata must not exist only in the aggregate receipt. ... ok +test_audit_cannot_omit_required_target_or_hide_axiom (test_c299_hosted_verify.HostedVerifierTests) +Count-only validation would accept a substituted target or sorryAx. ... ok +test_build_allows_only_its_own_outputs (test_c299_hosted_verify.HostedVerifierTests) +A build may add its target object, not an unrelated replacement. ... ok +test_environment_contract_strips_overrides_and_uses_declared_path (test_c299_hosted_verify.HostedVerifierTests) +An inherited tool/loader override must not survive or leak its value. ... ok +test_failed_phase_receipt_and_exact_streams_survive_abort (test_c299_hosted_verify.HostedVerifierTests) +Raising before persistence would discard the actual failing phase. ... ok +test_inactive_draft_negative_sections_reject_forged_fields (test_c299_hosted_verify.HostedVerifierTests) +Section/token-only matching would accept unrelated existential fields. ... ok +test_modified_source_bytes_are_rejected (test_c299_hosted_verify.HostedVerifierTests) +Dropping size/hash verification would accept the modified file. ... ok +test_pending_final_acceptance_fails_closed (test_c299_hosted_verify.HostedVerifierTests) +Collecting diagnostics must not silently qualify final acceptance. ... ok +test_phase_environment_mutation_is_blocked_and_receipted (test_c299_hosted_verify.HostedVerifierTests) +A changed search path or injected loader must fail before the child runs. ... ok +test_phase_rejects_imported_object_mutation (test_c299_hosted_verify.HostedVerifierTests) +A successful compiler process may not alter a prior input object. ... ok +test_pinned_lean_multiline_axiom_records (test_c299_hosted_verify.HostedVerifierTests) +Actual pinned Lean wraps the unchanged Lifetime axiom arrays. ... ok +test_source_preflight_can_collect_before_final_predicate_qualification (test_c299_hosted_verify.HostedVerifierTests) +An early final-acceptance gate would block needed actual diagnostics. ... ok +test_timeout_preserves_partial_stream_and_receipt (test_c299_hosted_verify.HostedVerifierTests) +Timeout handling must not discard the child output or phase result. ... ok + +---------------------------------------------------------------------- +Ran 13 tests in 0.223s + +OK diff --git a/frontiers/critical_ridge_20261020/engineering/E1_FINAL_GREEN2.stdout b/frontiers/critical_ridge_20261020/engineering/E1_FINAL_GREEN2.stdout new file mode 100644 index 000000000..295df13ef --- /dev/null +++ b/frontiers/critical_ridge_20261020/engineering/E1_FINAL_GREEN2.stdout @@ -0,0 +1,7 @@ +C299 valid-phase: exit=0 timeout=False seconds=0.023858 +C299 deliberate-failure: exit=7 timeout=False seconds=0.02135 +C299 environment-valid: exit=0 timeout=False seconds=0.011578 +C299 environment-mutated-0: exit=None timeout=False seconds=0.000152 +C299 environment-mutated-1: exit=None timeout=False seconds=0.000146 +C299 deliberate-object-mutation: exit=0 timeout=False seconds=0.023684 +C299 deliberate-timeout: exit=-15 timeout=True seconds=0.111171 diff --git a/frontiers/critical_ridge_20261020/engineering/E1_FINAL_c299_hosted_verify.py.diff b/frontiers/critical_ridge_20261020/engineering/E1_FINAL_c299_hosted_verify.py.diff new file mode 100644 index 000000000..1e8efe661 --- /dev/null +++ b/frontiers/critical_ridge_20261020/engineering/E1_FINAL_c299_hosted_verify.py.diff @@ -0,0 +1,138 @@ +--- E1_PREDECESSOR_c299_hosted_verify.py ++++ c299_hosted_verify.py +@@ -276,6 +276,72 @@ + raise RuntimeError('build must add only its own target object outputs') + + ++ENVIRONMENT_POLICY = ( ++ 'Remove inherited LEAN*, LAKE*, LD_* and DYLD_* overrides, except the ' ++ 'Lake-provided LEAN_PATH; prepend the fresh local object directory to that ' ++ 'path and set LEAN_NUM_THREADS=2. Retain declared PATH for launcher lookup. ' ++ 'Other inherited variables remain available but are not recorded. Record ' ++ 'only selected non-secret path/thread values and removed variable names.') ++ENVIRONMENT_KEYS = ('PATH', 'LEAN_PATH', 'LEAN_NUM_THREADS') ++ ++ ++def environment_override(name): ++ return name.startswith(('LEAN', 'LAKE', 'LD_', 'DYLD_')) ++ ++ ++def json_digest(value): ++ data = json.dumps(value, sort_keys=True, separators=(',', ':')).encode() ++ return hashlib.sha256(data).hexdigest() ++ ++ ++def build_environment(inherited, build): ++ """Preserve Lake's dependency search path, stripping other tool overrides.""" ++ env = dict(inherited) ++ if not env.get('PATH'): ++ raise RuntimeError('explicit nonempty launcher PATH required') ++ inherited_lean_path = env.get('LEAN_PATH', '') ++ removed = sorted(name for name in env ++ if environment_override(name) and name != 'LEAN_PATH') ++ for name in removed: ++ del env[name] ++ env['LEAN_PATH'] = str(Path(build).resolve()) ++ if inherited_lean_path: ++ env['LEAN_PATH'] += os.pathsep + inherited_lean_path ++ env['LEAN_NUM_THREADS'] = '2' ++ contract = { ++ 'policy': ENVIRONMENT_POLICY, ++ 'retained_lake_lean_path': inherited_lean_path, ++ 'removed_variable_names': removed, ++ 'selected_environment': {key: env[key] for key in ENVIRONMENT_KEYS}, ++ } ++ contract['sha256'] = json_digest(contract) ++ return env, contract ++ ++ ++def resolve_lean_launcher(env): ++ launcher = shutil.which('lean', path=env['PATH']) ++ if launcher is None: ++ raise RuntimeError('missing Lean launcher on declared PATH') ++ return Path(launcher).resolve() ++ ++ ++def phase_environment(env, contract): ++ selected = {key: env.get(key) for key in ENVIRONMENT_KEYS} ++ unexpected = sorted(name for name in env if environment_override(name) ++ and name not in ('LEAN_PATH', 'LEAN_NUM_THREADS')) ++ measured = {'selected_environment': selected, ++ 'unexpected_override_names': unexpected} ++ error = None ++ if contract is not None: ++ body = {key: value for key, value in contract.items() if key != 'sha256'} ++ if (contract.get('policy') != ENVIRONMENT_POLICY ++ or contract.get('sha256') != json_digest(body) ++ or selected != contract.get('selected_environment') ++ or selected['LEAN_NUM_THREADS'] != '2' or unexpected): ++ error = 'phase environment differs from declared policy or selected values' ++ return selected, json_digest(measured), unexpected, error ++ ++ + def run_phase(name, args, cwd, env, evidence, report, expected_success=True, + timeout=900, build_dir=None, build_module=None): + """Persist raw streams, per-phase receipt, and aggregate receipt before raise.""" +@@ -286,13 +352,15 @@ + start, utc_start = time.monotonic(), now() + timed_out, spawn_error, code = False, None, None + objects_before, objects_after, object_error = None, None, None ++ contract = report.get('environment_contract') ++ selected_env, env_digest, override_names, env_error = phase_environment(env, contract) + with out_path.open('xb') as stdout, err_path.open('xb') as stderr: + try: + if build_dir is not None: + objects_before = object_inventory(build_dir) + except (OSError, RuntimeError) as exc: + object_error = str(exc) +- if object_error is None: ++ if object_error is None and env_error is None: + try: + proc = subprocess.Popen(args, cwd=cwd, env=env, stdout=stdout, stderr=stderr, + start_new_session=True) +@@ -321,7 +389,7 @@ + validate_objects(objects_before, objects_after, build_module) + except (OSError, RuntimeError) as exc: + object_error = str(exc) +- valid = (not timed_out and spawn_error is None and object_error is None and ++ valid = (not timed_out and spawn_error is None and object_error is None and env_error is None and + (code == 0 if expected_success else code == 1)) + record = {'name': name, 'command': list(args), 'cwd': str(cwd), + 'started_at': utc_start, 'finished_at': now(), +@@ -332,13 +400,18 @@ + 'stderr_sha256': identity(err_path)['sha256'], 'stderr_bytes': err_path.stat().st_size, + 'objects_before': objects_before, 'objects_after': objects_after, + 'object_validation_error': object_error, ++ 'selected_environment': selected_env, ++ 'environment_sha256': env_digest, ++ 'environment_contract_sha256': contract.get('sha256') if contract else None, ++ 'unexpected_override_names': override_names, ++ 'environment_validation_error': env_error, + 'status': 'PASS' if valid else 'FAIL'} + report['phase_results'].append(record) + save_phase(evidence, report, record) + print(f'C299 {name}: exit={code} timeout={timed_out} seconds={record["duration_seconds"]}', flush=True) + if not valid: + raise RuntimeError(f'C299 {name} unexpected exit: {code}; timed_out={timed_out}; ' +- f'spawn_error={spawn_error}; object_error={object_error}') ++ f'spawn_error={spawn_error}; object_error={object_error}; environment_error={env_error}') + output = out_path.read_bytes().decode('utf8', 'replace') + '\n' + err_path.read_bytes().decode('utf8', 'replace') + return record, output, code + +@@ -433,13 +506,9 @@ + if source_before != report['source_identity']: + raise RuntimeError('inputs changed since source preflight') + report['packages_before'] = verify_packages(root) +- env = dict(os.environ) +- env['LEAN_PATH'] = str(build) + os.pathsep + env.get('LEAN_PATH', '') +- env['LEAN_NUM_THREADS'] = '2' +- launcher = shutil.which('lean') +- if launcher is None: +- raise RuntimeError('missing Lean launcher') +- launcher = Path(launcher).resolve() ++ env, report['environment_contract'] = build_environment(os.environ, build) ++ save_report(evidence, report) ++ launcher = resolve_lean_launcher(env) + report['lean_launcher'] = {'path': str(launcher), **identity(launcher)} + # Resolve the toolchain prefix through the selected launcher, then execute + # the measured toolchain binaries directly; an elan shim is not the runtime. diff --git a/frontiers/critical_ridge_20261020/engineering/E1_FINAL_test_c299_hosted_verify.py.diff b/frontiers/critical_ridge_20261020/engineering/E1_FINAL_test_c299_hosted_verify.py.diff new file mode 100644 index 000000000..10f1bd985 --- /dev/null +++ b/frontiers/critical_ridge_20261020/engineering/E1_FINAL_test_c299_hosted_verify.py.diff @@ -0,0 +1,67 @@ +--- E1_PREDECESSOR_test_c299_hosted_verify.py ++++ test_c299_hosted_verify.py +@@ -25,6 +25,64 @@ + def verifier(self): + self.assertIsNotNone(self.v, 'the scoped verifier is not implemented') + return self.v ++ ++ def test_environment_contract_strips_overrides_and_uses_declared_path(self): ++ """An inherited tool/loader override must not survive or leak its value.""" ++ v = self.verifier() ++ self.assertTrue(hasattr(v, 'build_environment'), 'environment contract is missing') ++ with tempfile.TemporaryDirectory() as tmp: ++ root = Path(tmp).resolve() ++ bindir = root / 'bin' ++ bindir.mkdir() ++ launcher = bindir / 'lean' ++ launcher.write_text('# inert launcher locator fixture; never executed\n') ++ launcher.chmod(0o700) ++ inherited = {'PATH': str(bindir), 'LEAN_PATH': '/pinned/lake/library', ++ 'LEAN_NUM_THREADS': '64', 'LEAN_SYSROOT': 'secret-lean-value', ++ 'LAKE_HOME': 'secret-lake-value', 'LD_PRELOAD': 'secret-loader-value', ++ 'DYLD_LIBRARY_PATH': 'secret-dyld-value', 'TOKEN': 'secret-token-value'} ++ env, contract = v.build_environment(inherited, root / 'objects') ++ self.assertEqual(env['LEAN_PATH'], str(root / 'objects') + os.pathsep + '/pinned/lake/library') ++ self.assertEqual(env['LEAN_NUM_THREADS'], '2') ++ self.assertEqual(v.resolve_lean_launcher(env), launcher.resolve()) ++ self.assertEqual(contract['removed_variable_names'], ++ ['DYLD_LIBRARY_PATH', 'LAKE_HOME', 'LD_PRELOAD', 'LEAN_NUM_THREADS', 'LEAN_SYSROOT']) ++ for key in ('LEAN_SYSROOT', 'LAKE_HOME', 'LD_PRELOAD', 'DYLD_LIBRARY_PATH'): ++ self.assertNotIn(key, env) ++ self.assertEqual(env['TOKEN'], 'secret-token-value') ++ self.assertNotIn('secret-', json.dumps(contract)) ++ empty, _ = v.build_environment({'PATH': str(bindir)}, root / 'empty') ++ self.assertEqual(empty['LEAN_PATH'], str(root / 'empty')) ++ ++ def test_phase_environment_mutation_is_blocked_and_receipted(self): ++ """A changed search path or injected loader must fail before the child runs.""" ++ v = self.verifier() ++ self.assertTrue(hasattr(v, 'build_environment'), 'environment contract is missing') ++ with tempfile.TemporaryDirectory() as tmp: ++ root = Path(tmp) ++ env, contract = v.build_environment(dict(os.environ), root / 'objects') ++ report = {'status': 'HOLD_NOT_COMPLETED', 'phase_results': [], ++ 'environment_contract': contract} ++ rec, output, _ = v.run_phase('environment-valid', ++ [sys.executable, '-c', 'import os; print(os.environ["LEAN_NUM_THREADS"])'], ++ root, env, root, report, timeout=10) ++ self.assertEqual(output.strip(), '2') ++ self.assertEqual(rec['selected_environment'], contract['selected_environment']) ++ self.assertEqual(rec['environment_contract_sha256'], contract['sha256']) ++ self.assertIsNone(rec['environment_validation_error']) ++ for n, changes in enumerate(({'LEAN_PATH': '/unbound/library'}, {'LD_PRELOAD': 'secret-injection'})): ++ altered = dict(env, **changes) ++ with self.assertRaisesRegex(RuntimeError, 'environment'): ++ v.run_phase('environment-mutated-' + str(n), ++ [sys.executable, '-c', 'from pathlib import Path;Path("CHILD_RAN").write_text("bad")'], ++ root, altered, root, report, timeout=10) ++ receipt = json.loads((root / ('environment-mutated-' + str(n) + '.receipt.json')).read_text()) ++ self.assertEqual(receipt['status'], 'FAIL') ++ self.assertIsNone(receipt['exit_code']) ++ self.assertIsNotNone(receipt['environment_validation_error']) ++ self.assertFalse((root / 'CHILD_RAN').exists()) ++ self.assertNotIn('secret-injection', json.dumps(receipt)) ++ self.assertEqual(receipt, report['phase_results'][-1]) + + def test_modified_source_bytes_are_rejected(self): + """Dropping size/hash verification would accept the modified file.""" diff --git a/frontiers/critical_ridge_20261020/engineering/E1_GREEN1.receipt.json b/frontiers/critical_ridge_20261020/engineering/E1_GREEN1.receipt.json new file mode 100644 index 000000000..b4c79c26a --- /dev/null +++ b/frontiers/critical_ridge_20261020/engineering/E1_GREEN1.receipt.json @@ -0,0 +1,31 @@ +{ + "declaration_sha256": "fa0961973633f14316bf8b267c0df313ccc62beab02a7abc9420362a766c88bb", + "command": [ + "/Library/Developer/CommandLineTools/usr/bin/python3", + "-B", + "-S", + "-m", + "unittest", + "discover", + "-s", + ".", + "-p", + "test_c299_hosted_verify.py", + "-v" + ], + "started_at": "2026-10-20T14:11:32.707554+00:00", + "finished_at": "2026-10-20T14:11:32.988895+00:00", + "duration_seconds": 0.281235167, + "exit_code": 1, + "timed_out": false, + "streams": { + "E1_GREEN1.stdout": { + "bytes": 454, + "sha256": "ce23cef01080234d1d01a2e1f366ad1f13de0f09b3eff60e85874f0f924fa3b6" + }, + "E1_GREEN1.stderr": { + "bytes": 3392, + "sha256": "f23de4923402e71ddd2ccd13ccd4c94e1dfc84bff34dffbad18891e88441c8db" + } + } +} diff --git a/frontiers/critical_ridge_20261020/engineering/E1_GREEN1.stderr b/frontiers/critical_ridge_20261020/engineering/E1_GREEN1.stderr new file mode 100644 index 000000000..e77b0b80e --- /dev/null +++ b/frontiers/critical_ridge_20261020/engineering/E1_GREEN1.stderr @@ -0,0 +1,44 @@ +test_amended_phase_receipt_matches_aggregate (test_c299_hosted_verify.HostedVerifierTests) +Semantic/object metadata must not exist only in the aggregate receipt. ... ok +test_audit_cannot_omit_required_target_or_hide_axiom (test_c299_hosted_verify.HostedVerifierTests) +Count-only validation would accept a substituted target or sorryAx. ... ok +test_build_allows_only_its_own_outputs (test_c299_hosted_verify.HostedVerifierTests) +A build may add its target object, not an unrelated replacement. ... ok +test_environment_contract_strips_overrides_and_uses_declared_path (test_c299_hosted_verify.HostedVerifierTests) +An inherited tool/loader override must not survive or leak its value. ... FAIL +test_failed_phase_receipt_and_exact_streams_survive_abort (test_c299_hosted_verify.HostedVerifierTests) +Raising before persistence would discard the actual failing phase. ... ok +test_inactive_draft_negative_sections_reject_forged_fields (test_c299_hosted_verify.HostedVerifierTests) +Section/token-only matching would accept unrelated existential fields. ... ok +test_modified_source_bytes_are_rejected (test_c299_hosted_verify.HostedVerifierTests) +Dropping size/hash verification would accept the modified file. ... ok +test_pending_final_acceptance_fails_closed (test_c299_hosted_verify.HostedVerifierTests) +Collecting diagnostics must not silently qualify final acceptance. ... ok +test_phase_environment_mutation_is_blocked_and_receipted (test_c299_hosted_verify.HostedVerifierTests) +A changed search path or injected loader must fail before the child runs. ... ok +test_phase_rejects_imported_object_mutation (test_c299_hosted_verify.HostedVerifierTests) +A successful compiler process may not alter a prior input object. ... ok +test_pinned_lean_multiline_axiom_records (test_c299_hosted_verify.HostedVerifierTests) +Actual pinned Lean wraps the unchanged Lifetime axiom arrays. ... ok +test_source_preflight_can_collect_before_final_predicate_qualification (test_c299_hosted_verify.HostedVerifierTests) +An early final-acceptance gate would block needed actual diagnostics. ... ok +test_timeout_preserves_partial_stream_and_receipt (test_c299_hosted_verify.HostedVerifierTests) +Timeout handling must not discard the child output or phase result. ... ok + +====================================================================== +FAIL: test_environment_contract_strips_overrides_and_uses_declared_path (test_c299_hosted_verify.HostedVerifierTests) +An inherited tool/loader override must not survive or leak its value. +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/Users/dylanroy/Documents/Codex/2026-09-19/connect-research-repository/work/continuation299/engineering-preflight/test_c299_hosted_verify.py", line 45, in test_environment_contract_strips_overrides_and_uses_declared_path + self.assertEqual(env['LEAN_PATH'], str(root / 'objects') + os.pathsep + '/pinned/lake/library') +AssertionError: '/private/var/folders/r5/p3c78wf50fv5j8x569[51 chars]rary' != '/var/folders/r5/p3c78wf50fv5j8x569vpykj800[43 chars]rary' +- /private/var/folders/r5/p3c78wf50fv5j8x569vpykj80000gn/T/tmpq08iigau/objects:/pinned/lake/library +? -------- ++ /var/folders/r5/p3c78wf50fv5j8x569vpykj80000gn/T/tmpq08iigau/objects:/pinned/lake/library + + +---------------------------------------------------------------------- +Ran 13 tests in 0.234s + +FAILED (failures=1) diff --git a/frontiers/critical_ridge_20261020/engineering/E1_GREEN1.stdout b/frontiers/critical_ridge_20261020/engineering/E1_GREEN1.stdout new file mode 100644 index 000000000..3b5ca611b --- /dev/null +++ b/frontiers/critical_ridge_20261020/engineering/E1_GREEN1.stdout @@ -0,0 +1,7 @@ +C299 valid-phase: exit=0 timeout=False seconds=0.023827 +C299 deliberate-failure: exit=7 timeout=False seconds=0.025504 +C299 environment-valid: exit=0 timeout=False seconds=0.023813 +C299 environment-mutated-0: exit=None timeout=False seconds=0.000193 +C299 environment-mutated-1: exit=None timeout=False seconds=0.000264 +C299 deliberate-object-mutation: exit=0 timeout=False seconds=0.023439 +C299 deliberate-timeout: exit=-15 timeout=True seconds=0.108342 diff --git a/frontiers/critical_ridge_20261020/engineering/E1_HANDOFF.md b/frontiers/critical_ridge_20261020/engineering/E1_HANDOFF.md new file mode 100644 index 000000000..a96e023f9 --- /dev/null +++ b/frontiers/critical_ridge_20261020/engineering/E1_HANDOFF.md @@ -0,0 +1,23 @@ +# C299 E1 environment-contract repair + +This additive handoff supersedes only the driver/test identities from AMENDMENT_HANDOFF.md. Proof sources, audit module, negative fixtures, manifests and workflow are unchanged by this repair. Earlier handoffs, snapshots and failed observations remain historical evidence. + +Executor: OpenAI Codex `/root/c297_hosted_verifier`, engineering work delegated for Dylan Roy under root claim2497 / UUID6e894b1f-d783-4ea0-adae-597e116b239a. This is author work with prior C297 verifier exposure; no provider-distinct or human-review credit is claimed. The nonauthor reviewer and root received exact successor hashes and diff paths before this handoff was written. The receiving-code-review and systematic-debugging skills were applied to verify the finding and diagnose the one native fixture failure. + +The reported E1 gap was confirmed in the predecessor: `env = dict(os.environ)` preserved tool and loader overrides, launcher lookup used ambient PATH implicitly, and phase receipts omitted those execution inputs. + +The successor removes inherited variable names starting LEAN, LAKE, LD_ or DYLD_, with one deliberate exception: Lake-provided LEAN_PATH is retained because it supplies the pinned dependency object search path. The resolved fresh local output directory is prepended; inherited LEAN_NUM_THREADS is removed and replaced with 2. An absent inherited LEAN_PATH introduces no empty trailing search-path component. The inherited PATH is retained explicitly, required nonempty, recorded and passed directly to `shutil.which` for launcher resolution. + +Before any Lean/runtime invocation, the aggregate receipt persists an explicit policy, selected PATH/LEAN_PATH/LEAN_NUM_THREADS values, original retained Lake LEAN_PATH, sorted removed variable names, and canonical SHA256 of that contract. Removed values and unrelated inherited values are never dumped. Other environment variables remain available under the stated policy; this is not an isolated-environment or full-environment-reproduction claim. Paths/thread counts are the selected non-secret values intentionally recorded for source-bound execution review. + +Every phase records selected values, an environment digest including unexpected override names, the parent contract digest, and any environment validation error. A changed selected value, bad contract digest/policy or reintroduced tool/loader override fails before the subprocess can run. Exact empty streams and the phase/aggregate failure receipt are saved. Existing generic inert process tests may invoke run_phase without a formal contract; those receipts explicitly carry a null contract digest. The production execute route always builds and saves the contract before calling a formal phase. + +Two new meaningful inert controls cover stripping all requested override families, declared-PATH launcher lookup, preserving the Lake search suffix, explicit thread replacement, no empty path suffix, nonexposure of secret sentinel values, selected/aggregate/phase receipt agreement, and denial of LEAN_PATH or LD_PRELOAD mutation before a child creates its sentinel output. + +PREEXEC_E1_RED bound the predecessor driver and new tests before execution. Both new tests failed for the missing contract implementation; exact streams and receipt are retained. PREEXEC_E1_GREEN then bound the implementation and full 13-test suite. That first normal run returned1 with 12 passing tests and one fixture failure: macOS exposes temporary paths through /var, while the implementation intentionally resolves them to /private/var. The production driver was correct at this point. The inert fixture root alone was normalized with Path.resolve(); its prior bytes are preserved as source-attempts/E1_FIRST_GREEN_test_c299_hosted_verify.py. The first optimized command was not executed after that failure. + +PREEXEC_E1_GREEN_FINAL bound the unchanged production driver and corrected test fixture before the two capped commands. E1_FINAL_GREEN1 and E1_FINAL_GREEN2 each passed 13/13 controls, normally and under -O, at 2026-10-20T14:12:19Z. Durations were 0.283607334 seconds and 0.286227458 seconds, with 30-second caps. Exact source identities remained unchanged after both commands. All stdout/stderr and receipts are retained. No Lean, mathematical program, project suite, complete final master, hosted workflow or remote action was executed for this repair. + +E1_IDENTITIES.json binds the exact successor sources, predecessor/failed-fixture snapshots, complete final diffs, declarations, streams and receipts. Current driver: 32069 bytes, SHA256 e4c5b9dd02e2ba2f98da27707c42ef861d9039b52864833d2164a3114f318f49. Current tests: 17863 bytes, SHA256 62400129fda7b863d692397deac2a9d83b7f1101d98b53ed1043f0ef8cfd604e. + +Next action remains nonauthor source review and root-controlled exact workflow/manifest review before development hosted execution. The deliberate final diagnostic-qualification HOLD remains intact; these engineering tests do not establish actual Lean compilation, kernel success, diagnostic qualification, theorem completion or scientific promotion. diff --git a/frontiers/critical_ridge_20261020/engineering/E1_IDENTITIES.json b/frontiers/critical_ridge_20261020/engineering/E1_IDENTITIES.json new file mode 100644 index 000000000..2e942139c --- /dev/null +++ b/frontiers/critical_ridge_20261020/engineering/E1_IDENTITIES.json @@ -0,0 +1,99 @@ +{ + "created_at": "2026-10-20T14:13:30.645138+00:00", + "executor": "OpenAI Codex /root/c297_hosted_verifier", + "scope": "E1 environment-contract engineering repair; no Lean execution or scientific promotion", + "files": { + "c299_hosted_verify.py": { + "bytes": 32069, + "sha256": "e4c5b9dd02e2ba2f98da27707c42ef861d9039b52864833d2164a3114f318f49" + }, + "test_c299_hosted_verify.py": { + "bytes": 17863, + "sha256": "62400129fda7b863d692397deac2a9d83b7f1101d98b53ed1043f0ef8cfd604e" + }, + "source-attempts/E1_PREDECESSOR_c299_hosted_verify.py": { + "bytes": 28907, + "sha256": "126d1aa5b0dfd87eca4fa939d55d969020301e7d61a0a48eb063dfabfa7a2005" + }, + "source-attempts/E1_PREDECESSOR_test_c299_hosted_verify.py": { + "bytes": 13920, + "sha256": "be6a5cc800446c9684cf77537437abafb1f2bbb8238dd042c15dc41dec916dfc" + }, + "source-attempts/E1_FIRST_GREEN_test_c299_hosted_verify.py": { + "bytes": 17853, + "sha256": "9c6d37b5cdb3b678edb203709edd093a8a3ca703318ff9646378fa82b4737d59" + }, + "E1_FINAL_c299_hosted_verify.py.diff": { + "bytes": 6950, + "sha256": "e483114dd0a8e22c538ce6a9542420db2cfe3cf7c3eee73ec8a6f180bbbbcf84" + }, + "E1_FINAL_test_c299_hosted_verify.py.diff": { + "bytes": 4362, + "sha256": "6bbcb3f6024b6513f9d5b69f5d52ee4feee9da534c1402a41809aadce794a10a" + }, + "PREEXEC_E1_RED.json": { + "bytes": 1139, + "sha256": "cbdfd5a71afb29eac3586f7f37962c12d36b7153d376f5da57d3a61cbda9442c" + }, + "E1_RED.receipt.json": { + "bytes": 926, + "sha256": "45d35ab9a1472ef586aa6b2d5f3e8ce851764ca62f53adf138483d04c39eb845" + }, + "E1_RED.stdout": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "E1_RED.stderr": { + "bytes": 1980, + "sha256": "d378e4b8654e8f1a29b7a50cd743103375334aa5241dedfa00512e1f54e92142" + }, + "PREEXEC_E1_GREEN.json": { + "bytes": 1241, + "sha256": "fa0961973633f14316bf8b267c0df313ccc62beab02a7abc9420362a766c88bb" + }, + "E1_GREEN1.receipt.json": { + "bytes": 780, + "sha256": "faedc314a633cd9ace127c1357a47ff38c7582c97306910792170e6a36445d5f" + }, + "E1_GREEN1.stdout": { + "bytes": 454, + "sha256": "ce23cef01080234d1d01a2e1f366ad1f13de0f09b3eff60e85874f0f924fa3b6" + }, + "E1_GREEN1.stderr": { + "bytes": 3392, + "sha256": "f23de4923402e71ddd2ccd13ccd4c94e1dfc84bff34dffbad18891e88441c8db" + }, + "PREEXEC_E1_GREEN_FINAL.json": { + "bytes": 1435, + "sha256": "02a947caf83e3ae1da781b583cc830d215ffc965948d1aec8ff75eb6276174a0" + }, + "E1_FINAL_GREEN1.receipt.json": { + "bytes": 792, + "sha256": "260fae5b75010844902d2d1341c795d5ca64a3d30d23437035618f2f8b3fec15" + }, + "E1_FINAL_GREEN1.stdout": { + "bytes": 452, + "sha256": "a505a4306de6376d70153c4b9538f13051123116c1a76fc74803161e787d868f" + }, + "E1_FINAL_GREEN1.stderr": { + "bytes": 2337, + "sha256": "03c78832ea4a9769bc6c37980f8941133697be5d9f643dd6edda28ccfbddcabe" + }, + "E1_FINAL_GREEN2.receipt.json": { + "bytes": 810, + "sha256": "5e711ceecfdc7ed11b1f9f861981a58259d02e7d0fe7f519b38cefcc05e8ecd9" + }, + "E1_FINAL_GREEN2.stdout": { + "bytes": 453, + "sha256": "acd8870b69e23731216773b0df72046ea0114e869f565ffa1794f0587b5346fa" + }, + "E1_FINAL_GREEN2.stderr": { + "bytes": 2337, + "sha256": "2bda381dc2478aaa4af4cd25018b187e0ade42cc2aec966c856958c26f157c5c" + }, + "E1_HANDOFF.md": { + "bytes": 5104, + "sha256": "3c694212adf41a46e407d1f9414db49ca7cc7bbbc6ffffa366a2cb8003b87032" + } + } +} diff --git a/frontiers/critical_ridge_20261020/engineering/E1_RED.receipt.json b/frontiers/critical_ridge_20261020/engineering/E1_RED.receipt.json new file mode 100644 index 000000000..ea2065211 --- /dev/null +++ b/frontiers/critical_ridge_20261020/engineering/E1_RED.receipt.json @@ -0,0 +1,28 @@ +{ + "declaration_sha256": "cbdfd5a71afb29eac3586f7f37962c12d36b7153d376f5da57d3a61cbda9442c", + "command": [ + "/Library/Developer/CommandLineTools/usr/bin/python3", + "-B", + "-S", + "-m", + "unittest", + "test_c299_hosted_verify.HostedVerifierTests.test_environment_contract_strips_overrides_and_uses_declared_path", + "test_c299_hosted_verify.HostedVerifierTests.test_phase_environment_mutation_is_blocked_and_receipted", + "-v" + ], + "started_at": "2026-10-20T14:10:14.827973+00:00", + "finished_at": "2026-10-20T14:10:14.875836+00:00", + "duration_seconds": 0.04774095799999999, + "exit_code": 1, + "timed_out": false, + "streams": { + "E1_RED.stdout": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "E1_RED.stderr": { + "bytes": 1980, + "sha256": "d378e4b8654e8f1a29b7a50cd743103375334aa5241dedfa00512e1f54e92142" + } + } +} diff --git a/frontiers/critical_ridge_20261020/engineering/E1_RED.stderr b/frontiers/critical_ridge_20261020/engineering/E1_RED.stderr new file mode 100644 index 000000000..6e011b078 --- /dev/null +++ b/frontiers/critical_ridge_20261020/engineering/E1_RED.stderr @@ -0,0 +1,27 @@ +test_environment_contract_strips_overrides_and_uses_declared_path (test_c299_hosted_verify.HostedVerifierTests) +An inherited tool/loader override must not survive or leak its value. ... FAIL +test_phase_environment_mutation_is_blocked_and_receipted (test_c299_hosted_verify.HostedVerifierTests) +A changed search path or injected loader must fail before the child runs. ... FAIL + +====================================================================== +FAIL: test_environment_contract_strips_overrides_and_uses_declared_path (test_c299_hosted_verify.HostedVerifierTests) +An inherited tool/loader override must not survive or leak its value. +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/Users/dylanroy/Documents/Codex/2026-09-19/connect-research-repository/work/continuation299/engineering-preflight/test_c299_hosted_verify.py", line 32, in test_environment_contract_strips_overrides_and_uses_declared_path + self.assertTrue(hasattr(v, 'build_environment'), 'environment contract is missing') +AssertionError: False is not true : environment contract is missing + +====================================================================== +FAIL: test_phase_environment_mutation_is_blocked_and_receipted (test_c299_hosted_verify.HostedVerifierTests) +A changed search path or injected loader must fail before the child runs. +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/Users/dylanroy/Documents/Codex/2026-09-19/connect-research-repository/work/continuation299/engineering-preflight/test_c299_hosted_verify.py", line 60, in test_phase_environment_mutation_is_blocked_and_receipted + self.assertTrue(hasattr(v, 'build_environment'), 'environment contract is missing') +AssertionError: False is not true : environment contract is missing + +---------------------------------------------------------------------- +Ran 2 tests in 0.008s + +FAILED (failures=2) diff --git a/frontiers/critical_ridge_20261020/engineering/E1_RED.stdout b/frontiers/critical_ridge_20261020/engineering/E1_RED.stdout new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/engineering/PREEXEC_E1_GREEN.json b/frontiers/critical_ridge_20261020/engineering/PREEXEC_E1_GREEN.json new file mode 100644 index 000000000..8e7a09cbc --- /dev/null +++ b/frontiers/critical_ridge_20261020/engineering/PREEXEC_E1_GREEN.json @@ -0,0 +1,48 @@ +{ + "stage": "C299 E1 environment contract GREEN controls", + "created_at": "2026-10-20T14:11:21.011335+00:00", + "scope": "Inert Python engineering controls only; no Lean, mathematical program, remote mutation or complete master", + "cwd": "/Users/dylanroy/Documents/Codex/2026-09-19/connect-research-repository/work/continuation299/engineering-preflight", + "commands": [ + [ + "/Library/Developer/CommandLineTools/usr/bin/python3", + "-B", + "-S", + "-m", + "unittest", + "discover", + "-s", + ".", + "-p", + "test_c299_hosted_verify.py", + "-v" + ], + [ + "/Library/Developer/CommandLineTools/usr/bin/python3", + "-B", + "-O", + "-S", + "-m", + "unittest", + "discover", + "-s", + ".", + "-p", + "test_c299_hosted_verify.py", + "-v" + ] + ], + "inputs": { + "c299_hosted_verify.py": { + "bytes": 32069, + "sha256": "e4c5b9dd02e2ba2f98da27707c42ef861d9039b52864833d2164a3114f318f49" + }, + "test_c299_hosted_verify.py": { + "bytes": 17853, + "sha256": "9c6d37b5cdb3b678edb203709edd093a8a3ca703318ff9646378fa82b4737d59" + } + }, + "timeout_seconds_per_command": 30, + "expected_exit_code": 0, + "max_commands": 2 +} diff --git a/frontiers/critical_ridge_20261020/engineering/PREEXEC_E1_GREEN_FINAL.json b/frontiers/critical_ridge_20261020/engineering/PREEXEC_E1_GREEN_FINAL.json new file mode 100644 index 000000000..f8e0627b3 --- /dev/null +++ b/frontiers/critical_ridge_20261020/engineering/PREEXEC_E1_GREEN_FINAL.json @@ -0,0 +1,49 @@ +{ + "stage": "C299 E1 environment contract final GREEN controls after native fixture path normalization", + "created_at": "2026-10-20T14:12:04.025754+00:00", + "scope": "Inert Python engineering controls only; no Lean, mathematical program, remote mutation or complete master", + "cwd": "/Users/dylanroy/Documents/Codex/2026-09-19/connect-research-repository/work/continuation299/engineering-preflight", + "commands": [ + [ + "/Library/Developer/CommandLineTools/usr/bin/python3", + "-B", + "-S", + "-m", + "unittest", + "discover", + "-s", + ".", + "-p", + "test_c299_hosted_verify.py", + "-v" + ], + [ + "/Library/Developer/CommandLineTools/usr/bin/python3", + "-B", + "-O", + "-S", + "-m", + "unittest", + "discover", + "-s", + ".", + "-p", + "test_c299_hosted_verify.py", + "-v" + ] + ], + "inputs": { + "c299_hosted_verify.py": { + "bytes": 32069, + "sha256": "e4c5b9dd02e2ba2f98da27707c42ef861d9039b52864833d2164a3114f318f49" + }, + "test_c299_hosted_verify.py": { + "bytes": 17863, + "sha256": "62400129fda7b863d692397deac2a9d83b7f1101d98b53ed1043f0ef8cfd604e" + } + }, + "timeout_seconds_per_command": 30, + "expected_exit_code": 0, + "max_commands": 2, + "changed_input_reason": "Only inert test root resolves macOS /var alias to /private/var; production driver unchanged after first GREEN failure." +} diff --git a/frontiers/critical_ridge_20261020/engineering/PREEXEC_E1_RED.json b/frontiers/critical_ridge_20261020/engineering/PREEXEC_E1_RED.json new file mode 100644 index 000000000..7e9e73f6c --- /dev/null +++ b/frontiers/critical_ridge_20261020/engineering/PREEXEC_E1_RED.json @@ -0,0 +1,31 @@ +{ + "stage": "C299 E1 environment contract RED controls", + "created_at": "2026-10-20T14:10:03.347284+00:00", + "scope": "Inert Python engineering controls only; no Lean, mathematical program, remote mutation or complete master", + "cwd": "/Users/dylanroy/Documents/Codex/2026-09-19/connect-research-repository/work/continuation299/engineering-preflight", + "commands": [ + [ + "/Library/Developer/CommandLineTools/usr/bin/python3", + "-B", + "-S", + "-m", + "unittest", + "test_c299_hosted_verify.HostedVerifierTests.test_environment_contract_strips_overrides_and_uses_declared_path", + "test_c299_hosted_verify.HostedVerifierTests.test_phase_environment_mutation_is_blocked_and_receipted", + "-v" + ] + ], + "inputs": { + "c299_hosted_verify.py": { + "bytes": 28907, + "sha256": "126d1aa5b0dfd87eca4fa939d55d969020301e7d61a0a48eb063dfabfa7a2005" + }, + "test_c299_hosted_verify.py": { + "bytes": 17853, + "sha256": "9c6d37b5cdb3b678edb203709edd093a8a3ca703318ff9646378fa82b4737d59" + } + }, + "timeout_seconds_per_command": 30, + "expected_exit_code": 1, + "max_commands": 1 +} diff --git a/frontiers/critical_ridge_20261020/engineering/c299_hosted_verify.py b/frontiers/critical_ridge_20261020/engineering/c299_hosted_verify.py new file mode 100644 index 000000000..521bd0175 --- /dev/null +++ b/frontiers/critical_ridge_20261020/engineering/c299_hosted_verify.py @@ -0,0 +1,626 @@ +#!/usr/bin/env python3 +"""C299 scoped hosted verification; no scientific promotion or human review. + +Run from the existing pinned formal/ Lake environment. Sources are pinned by an +explicit manifest digest in the dedicated workflow. Every attempt retains exact +streams and a receipt before any failure is raised. No retry is performed. +""" +import argparse +from datetime import datetime, timezone +import hashlib +import json +import os +from pathlib import Path +import platform +import re +import shutil +import signal +import subprocess +import time + +PREFIX = 'frontiers/critical_ridge_20261020' +WORKFLOW = '.github/workflows/c299-critical-ridge.yml' +MANIFEST = 'HOSTED_SOURCE_MANIFEST.json' +MODULES = ('Lifetime', 'TorusTopology', 'MorseFiniteCritical', + 'CriticalRidge', 'CriticalRidgeAxiomAudit') +REPLAY_MODULES = MODULES[1:] +AUDIT_MODULES = MODULES[:4] +NEGATIVES = ('WithoutCriticality', 'WithoutNegativeDefiniteness') +ALLOWED_AXIOMS = {'propext', 'Classical.choice', 'Quot.sound'} +# Candidate-2 source names; formal execution and final diagnostic review pending. +REQUIRED = ('UniversalLaw.Spec.Lifetime.IsSmooth', 'UniversalLaw.Spec.Lifetime.IsCriticalPoint', 'UniversalLaw.Spec.Lifetime.hessian', 'TorusMorseFinite.literal_hessian_eq_fderiv', 'TorusCriticalRidge.restrictCovector', 'TorusCriticalRidge.ridgeAddition', 'TorusCriticalRidge.negativePartialGradient', 'TorusCriticalRidge.negativeHessianBlock', 'TorusCriticalRidge.negativeHessianBlock_apply', 'TorusCriticalRidge.negativeHessianBlock_isInvertible', 'TorusCriticalRidge.negativePartialGradient_contDiff', 'TorusCriticalRidge.negativePartialGradient_hasFDerivAt', 'TorusCriticalRidge.exists_negative_partial_gradient_ridge') +MATHLIB_PIN = 'd13f23b723b8a846827a245b89c10fc7d3f11612' +LEAN_VERSION = '4.34.1' +PACKAGE_PINS = { + 'plausible': '118aa17ee84656b8bd727fef7c458ee8c833385c', + 'LeanSearchClient': 'ddf04cf3949fa556442341e87d47f9f6e6074707', + 'importGraph': 'e928b72544873815af278d38681b31c0293588e3', + 'proofwidgets': '106ff4fafc74ef4ac99d81dbf3ab399118f497a5', + 'aesop': '355695d523e41d0554926416cba2a2b3544fbbc9', + 'Qq': '6a489d9af5d0c47e5b259e2e8bcdfc1811b5a259', + 'batteries': 'f2effa3d803fda822b1f97b806c47cf2adfbcbc2', + 'Cli': 'e92c9f15fdfacc8536f31cfb3b7ad26c3c8cd204', + 'mathlib': MATHLIB_PIN, +} + + +def now(): + return datetime.now(timezone.utc).isoformat() + + +def identity(path): + data = Path(path).read_bytes() + return {'bytes': len(data), 'sha256': hashlib.sha256(data).hexdigest()} + + +def safe_source(path, root): + path, root = Path(path).absolute(), Path(root).absolute() + if not path.is_relative_to(root): + raise RuntimeError(f'source outside repository: {path}') + parts = path.relative_to(root).parts + for n in range(1, len(parts) + 1): + if root.joinpath(*parts[:n]).is_symlink(): + raise RuntimeError(f'symlinked source: {path}') + if not path.is_file(): + raise RuntimeError(f'source missing or not regular: {path}') + + +def verify_file(path, expected, root): + safe_source(path, root) + if (set(expected) != {'bytes', 'sha256'} or + type(expected['bytes']) is not int or expected['bytes'] < 1 or + not re.fullmatch('[0-9a-f]{64}', expected['sha256'])): + raise RuntimeError(f'invalid expected source identity: {path}') + actual = identity(path) + if actual != expected: + raise RuntimeError(f'source identity mismatch: {path}: {actual}') + return actual + + +def verify_sources(root, manifest_sha256): + root = Path(root) + packet = root / PREFIX + path = packet / MANIFEST + safe_source(path, root) + if not re.fullmatch('[0-9a-f]{64}', manifest_sha256): + raise RuntimeError('explicit frozen manifest SHA-256 required') + if identity(path)['sha256'] != manifest_sha256: + raise RuntimeError('frozen source manifest identity mismatch') + manifest = json.loads(path.read_text()) + if manifest.get('schema_version') != 1 or manifest.get('scientific_effect') != 'NONE': + raise RuntimeError('invalid C299 manifest schema or scientific-effect field') + expected = {f'project/{m}.lean' for m in MODULES} | { + f'negative-project/{m}.lean' for m in NEGATIVES} + if set(manifest.get('files', {})) != expected: + raise RuntimeError('manifest must bind exactly five modules and two controls') + sources = {rel: verify_file(packet / rel, spec, root) + for rel, spec in manifest['files'].items()} + origins = manifest.get('source_origins', {}) + if set(origins) != {'Lifetime', 'TorusTopology', 'MorseFiniteCritical'}: + raise RuntimeError('all three frozen input source origins are required') + for name, origin in origins.items(): + if (not isinstance(origin, dict) or not re.fullmatch('[0-9a-f]{40}', origin.get('commit', '')) + or not isinstance(origin.get('path'), str) or not origin['path'] + or Path(origin['path']).is_absolute() or '..' in Path(origin['path']).parts): + raise RuntimeError(f'invalid input source origin: {name}') + upstream = root / 'specifications/lean_statements_20261010/Specifications/Lifetime.lean' + verify_file(upstream, manifest['files']['project/Lifetime.lean'], root) + config = {} + for rel in ('formal/lean-toolchain', 'formal/lakefile.toml', 'formal/lake-manifest.json'): + safe_source(root / rel, root) + config[rel] = identity(root / rel) + if (root / 'formal/lean-toolchain').read_text().strip() != 'leanprover/lean4:v' + LEAN_VERSION: + raise RuntimeError('Lean toolchain pin changed') + if f'rev = "{MATHLIB_PIN}"' not in (root / 'formal/lakefile.toml').read_text(): + raise RuntimeError('Lake mathlib pin changed') + lock = json.loads((root / 'formal/lake-manifest.json').read_text()) + if {p['name']: p['rev'] for p in lock['packages']} != PACKAGE_PINS: + raise RuntimeError('dependency lock pins changed') + support = {} + for rel in (WORKFLOW, PREFIX + '/c299_hosted_verify.py', + PREFIX + '/test_c299_hosted_verify.py'): + safe_source(root / rel, root) + support[rel] = identity(root / rel) + return {'manifest': identity(path), 'files': sources, 'source_origins': origins, + 'source_origin_limit': 'Remote origin byte equality is a separate owner custody check.', + 'formal_config': config, 'support_files': support, 'dependency_pins': PACKAGE_PINS} + + +def audit_records(output): + """Join Lean's wrapped AXIOMS arrays; reject interrupted or truncated records.""" + pending = None + for line in output.splitlines(): + if pending is not None: + if 'CRITICAL_RIDGE_AUDIT_' in line: + raise RuntimeError('audit declaration interrupted before closing axiom list') + pending += ' ' + line.strip() + if ']' in line: + yield pending + pending = None + continue + if 'CRITICAL_RIDGE_AUDIT_' not in line: + continue + marker = line[line.index('CRITICAL_RIDGE_AUDIT_'):].strip() + if marker.startswith('CRITICAL_RIDGE_AUDIT_PROGRESS '): + continue + if marker.startswith('CRITICAL_RIDGE_AUDIT_DECL ') and 'AXIOMS [' in marker and ']' not in marker: + pending = marker + continue + yield marker + if pending is not None: + raise RuntimeError('truncated audit axiom list') + + +def validate_audit(output, modules=AUDIT_MODULES, required=REQUIRED): + """Read every module-origin record, not just a total or public-name sample.""" + counts, names, current, seen = {}, {}, None, set() + total = None + for marker in audit_records(output): + m = re.fullmatch(r'CRITICAL_RIDGE_AUDIT_MODULE (\S+) COUNT (\d+)', marker) + if m: + current, count = m.group(1), int(m.group(2)) + if total is not None or current not in modules or current in counts or count < 1: + raise RuntimeError('invalid or duplicate audit module census') + counts[current], names[current] = count, [] + continue + m = re.fullmatch(r'CRITICAL_RIDGE_AUDIT_DECL (\S+) AXIOMS \[([^\[\]]*)\]', marker) + if m: + name, raw_axioms = m.groups() + axioms = {s.strip() for s in raw_axioms.split(',') if s.strip()} + if current is None or total is not None or name in seen or not axioms <= ALLOWED_AXIOMS: + raise RuntimeError('invalid, repeated or forbidden audit declaration') + names[current].append(name) + seen.add(name) + continue + m = re.fullmatch(r'CRITICAL_RIDGE_AUDIT_STANDARD_ONLY_PASS COUNT (\d+)', marker) + if m and total is None: + total = int(m.group(1)) + continue + raise RuntimeError(f'unrecognized or repeated audit marker: {marker}') + if (tuple(counts) != tuple(modules) or total != len(seen) or total != sum(counts.values()) + or any(len(names[m]) != counts[m] for m in counts) + or not set(required) <= seen): + raise RuntimeError('incomplete audit census or missing required target') + return {'module_counts': counts, 'declaration_count': total, + 'required_targets': list(required), 'allowed_axioms': sorted(ALLOWED_AXIOMS), + 'module_declarations': names} + + +def require_final_predicates(): + """Draft stop: replace only after exact source/fixtures/diagnostics review. + + This explicit stop blocks final acceptance AFTER both control attempts. + Development may collect actual build/kernel/diagnostic evidence. The draft + parser supplies reviewable intended-type logic; synthetic fixture tests are + not actual Lean diagnostics or final acceptance. + """ + raise RuntimeError('PENDING_C299_NEGATIVE_PREDICATES: actual diagnostics and final source freeze required') + + +def validate_negative(name, returncode, output): + return validate_negative_draft(name, returncode, output) + + +def validate_negative_draft(name, returncode, output): + """Candidate diagnostic parser; final observed spelling must be reviewed.""" + if name not in NEGATIVES: + raise RuntimeError('unknown negative control') + flat = ' '.join(output.split()) + forbidden = ('unknown identifier', 'unknown module', 'file not found', 'no such file', + 'memory_exception', 'out of memory', 'unexpected token', 'unsolved goals', + 'maximum recursion', 'maximum heartbeats', 'failed to', 'panic', 'sorry') + if (returncode != 1 or output.count('error:') != 1 + or any(x in flat.lower() for x in forbidden)): + raise RuntimeError('negative control failed for an unrelated reason') + pattern = (r'\A[^\n]*' + re.escape(name) + r'\.lean:\d+:\d+: error: Type mismatch\s*\n' + r'(?P.*?)\nhas type\s*\n(?P.*?)' + r'\nbut is expected to have type\s*\n(?P.*?)\s*\Z') + match = re.fullmatch(pattern, output.strip(), flags=re.S) + if match is None: + raise RuntimeError('expected one source-bound type-mismatch diagnostic') + expression, actual, expected = (' '.join(match.group(k).split()) + for k in ('expression', 'actual', 'expected')) + target = 'TorusCriticalRidge.exists_negative_partial_gradient_ridge' + if target not in expression or 'f p V hsmooth' not in expression: + raise RuntimeError('wrong actual theorem application') + if name == 'WithoutCriticality': + if not re.fullmatch(r'fun hcritical => ' + re.escape(target) + + r' f p V hsmooth hcritical hneg', expression): + raise RuntimeError('wrong criticality-omission application') + premise = r'IsCriticalPoint d f p' + else: + if expression != target + ' f p V hsmooth hcritical': + raise RuntimeError('wrong negative-definiteness-omission application') + premise = r'\(∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0\)' + if not re.fullmatch(premise + r' → ' + re.escape(expected), actual): + raise RuntimeError('actual type is not the omitted premise followed by the expected conclusion') + # Fixed candidate-2 binder names and all four same-ridge conclusion fields. + conclusion = (r'∃ r, r 0 = 0 ∧ ContDiffAt ℝ 2 r 0 ∧ ' + r'\(∀ᶠ w in 𝓝 0, ∀ \(z : ↥V\), \(fderiv ℝ f \(p \+ w \+ ↑\(r w\)\)\) ↑z = 0\) ∧ ' + r'∀ \(w : E d\) \(z : ↥V\), hessian d f p \(w \+ ↑\(\(fderiv ℝ r 0\) w\)\) ↑z = 0') + if not re.fullmatch(conclusion, expected): + raise RuntimeError('expected conclusion does not match all four candidate ridge fields') + return {'control': name, 'diagnostic_source': name + '.lean', + 'draft_only': True, 'actual_diagnostic_observed': False} + + +def save_report(evidence, report): + (evidence / 'RESULT.json').write_text(json.dumps(report, indent=2, sort_keys=True) + '\n') + + +def save_phase(evidence, report, record): + (evidence / (record['name'] + '.receipt.json')).write_text( + json.dumps(record, indent=2, sort_keys=True) + '\n') + save_report(evidence, report) + + +def object_inventory(build): + result = {} + for path in sorted(Path(build).iterdir()): + safe_source(path, build) + result[path.name] = identity(path) + return result + + +def validate_objects(before, after, build_module=None): + if any(after.get(name) != spec for name, spec in before.items()): + raise RuntimeError('previous local input object changed or disappeared') + additions = set(after) - set(before) + if build_module is None: + if additions: + raise RuntimeError('non-build phase added an unexpected local object') + return + allowed = {build_module + suffix for suffix in + ('.olean', '.olean.private', '.olean.server', '.ilean', '.ir')} + if build_module + '.olean' not in additions or not additions <= allowed: + raise RuntimeError('build must add only its own target object outputs') + + +ENVIRONMENT_POLICY = ( + 'Remove inherited LEAN*, LAKE*, LD_* and DYLD_* overrides, except the ' + 'Lake-provided LEAN_PATH; prepend the fresh local object directory to that ' + 'path and set LEAN_NUM_THREADS=2. Retain declared PATH for launcher lookup. ' + 'Other inherited variables remain available but are not recorded. Record ' + 'only selected non-secret path/thread values and removed variable names.') +ENVIRONMENT_KEYS = ('PATH', 'LEAN_PATH', 'LEAN_NUM_THREADS') + + +def environment_override(name): + return name.startswith(('LEAN', 'LAKE', 'LD_', 'DYLD_')) + + +def json_digest(value): + data = json.dumps(value, sort_keys=True, separators=(',', ':')).encode() + return hashlib.sha256(data).hexdigest() + + +def build_environment(inherited, build): + """Preserve Lake's dependency search path, stripping other tool overrides.""" + env = dict(inherited) + if not env.get('PATH'): + raise RuntimeError('explicit nonempty launcher PATH required') + inherited_lean_path = env.get('LEAN_PATH', '') + removed = sorted(name for name in env + if environment_override(name) and name != 'LEAN_PATH') + for name in removed: + del env[name] + env['LEAN_PATH'] = str(Path(build).resolve()) + if inherited_lean_path: + env['LEAN_PATH'] += os.pathsep + inherited_lean_path + env['LEAN_NUM_THREADS'] = '2' + contract = { + 'policy': ENVIRONMENT_POLICY, + 'retained_lake_lean_path': inherited_lean_path, + 'removed_variable_names': removed, + 'selected_environment': {key: env[key] for key in ENVIRONMENT_KEYS}, + } + contract['sha256'] = json_digest(contract) + return env, contract + + +def resolve_lean_launcher(env): + launcher = shutil.which('lean', path=env['PATH']) + if launcher is None: + raise RuntimeError('missing Lean launcher on declared PATH') + return Path(launcher).resolve() + + +def phase_environment(env, contract): + selected = {key: env.get(key) for key in ENVIRONMENT_KEYS} + unexpected = sorted(name for name in env if environment_override(name) + and name not in ('LEAN_PATH', 'LEAN_NUM_THREADS')) + measured = {'selected_environment': selected, + 'unexpected_override_names': unexpected} + error = None + if contract is not None: + body = {key: value for key, value in contract.items() if key != 'sha256'} + if (contract.get('policy') != ENVIRONMENT_POLICY + or contract.get('sha256') != json_digest(body) + or selected != contract.get('selected_environment') + or selected['LEAN_NUM_THREADS'] != '2' or unexpected): + error = 'phase environment differs from declared policy or selected values' + return selected, json_digest(measured), unexpected, error + + +def run_phase(name, args, cwd, env, evidence, report, expected_success=True, + timeout=900, build_dir=None, build_module=None): + """Persist raw streams, per-phase receipt, and aggregate receipt before raise.""" + if not re.fullmatch('[A-Za-z0-9_-]+', name): + raise RuntimeError('unsafe phase name') + evidence = Path(evidence) + out_path, err_path = evidence / (name + '.stdout'), evidence / (name + '.stderr') + start, utc_start = time.monotonic(), now() + timed_out, spawn_error, code = False, None, None + objects_before, objects_after, object_error = None, None, None + contract = report.get('environment_contract') + selected_env, env_digest, override_names, env_error = phase_environment(env, contract) + with out_path.open('xb') as stdout, err_path.open('xb') as stderr: + try: + if build_dir is not None: + objects_before = object_inventory(build_dir) + except (OSError, RuntimeError) as exc: + object_error = str(exc) + if object_error is None and env_error is None: + try: + proc = subprocess.Popen(args, cwd=cwd, env=env, stdout=stdout, stderr=stderr, + start_new_session=True) + try: + code = proc.wait(timeout=timeout) + except subprocess.TimeoutExpired: + timed_out = True + try: + os.killpg(proc.pid, signal.SIGTERM) + except ProcessLookupError: + pass + try: + code = proc.wait(timeout=5) + except subprocess.TimeoutExpired: + try: + os.killpg(proc.pid, signal.SIGKILL) + except ProcessLookupError: + pass + code = proc.wait(timeout=5) + except (OSError, subprocess.TimeoutExpired) as exc: + spawn_error = str(exc) + if build_dir is not None: + try: + objects_after = object_inventory(build_dir) + if object_error is None: + validate_objects(objects_before, objects_after, build_module) + except (OSError, RuntimeError) as exc: + object_error = str(exc) + valid = (not timed_out and spawn_error is None and object_error is None and env_error is None and + (code == 0 if expected_success else code == 1)) + record = {'name': name, 'command': list(args), 'cwd': str(cwd), + 'started_at': utc_start, 'finished_at': now(), + 'duration_seconds': round(time.monotonic() - start, 6), + 'timeout_seconds': timeout, 'timed_out': timed_out, + 'spawn_error': spawn_error, 'exit_code': code, + 'stdout_sha256': identity(out_path)['sha256'], 'stdout_bytes': out_path.stat().st_size, + 'stderr_sha256': identity(err_path)['sha256'], 'stderr_bytes': err_path.stat().st_size, + 'objects_before': objects_before, 'objects_after': objects_after, + 'object_validation_error': object_error, + 'selected_environment': selected_env, + 'environment_sha256': env_digest, + 'environment_contract_sha256': contract.get('sha256') if contract else None, + 'unexpected_override_names': override_names, + 'environment_validation_error': env_error, + 'status': 'PASS' if valid else 'FAIL'} + report['phase_results'].append(record) + save_phase(evidence, report, record) + print(f'C299 {name}: exit={code} timeout={timed_out} seconds={record["duration_seconds"]}', flush=True) + if not valid: + raise RuntimeError(f'C299 {name} unexpected exit: {code}; timed_out={timed_out}; ' + f'spawn_error={spawn_error}; object_error={object_error}; environment_error={env_error}') + output = out_path.read_bytes().decode('utf8', 'replace') + '\n' + err_path.read_bytes().decode('utf8', 'replace') + return record, output, code + + +def git(root, *args): + return subprocess.check_output(['git', *args], cwd=root, text=True, timeout=30).strip() + + +def verify_packages(root): + result = {} + for name, expected in PACKAGE_PINS.items(): + path = root / 'formal/.lake/packages' / name + actual = git(path, 'rev-parse', 'HEAD') + if actual != expected or git(path, 'status', '--porcelain', '--untracked-files=no'): + raise RuntimeError(f'installed dependency mismatch or tracked change: {name}') + result[name] = actual + return result + + +def hosted_context(root): + keys = ('GITHUB_SHA', 'GITHUB_RUN_ID', 'GITHUB_RUN_ATTEMPT', 'GITHUB_REPOSITORY', + 'GITHUB_EVENT_NAME', 'GITHUB_WORKFLOW', 'GITHUB_JOB') + if any(not os.environ.get(k) for k in keys): + raise RuntimeError('actual GitHub execution context required') + if os.environ['GITHUB_REPOSITORY'] != 'd6g8k5htny-coder/Math-': + raise RuntimeError('wrong repository') + head = git(root, 'rev-parse', 'HEAD') + if head != os.environ['GITHUB_SHA']: + raise RuntimeError('tested checkout does not match GITHUB_SHA') + context = {k.lower(): os.environ[k] for k in keys} + context['tested_commit'] = head + context['tested_tree'] = git(root, 'rev-parse', 'HEAD^{tree}') + context['tested_parents'] = git(root, 'show', '-s', '--format=%P', 'HEAD').split() + event_path = Path(os.environ.get('GITHUB_EVENT_PATH', '/nonexistent')) + if event_path.is_file(): + event = json.loads(event_path.read_text()) + if 'pull_request' in event: + context['pull_request'] = { + 'number': event['number'], 'head_sha': event['pull_request']['head']['sha'], + 'base_sha': event['pull_request']['base']['sha']} + context['executor'] = 'GitHub-hosted runner executing C299 verification code' + context['human_review_credit'] = 0 + return context + + +def source_only(root, digest): + evidence = root / '.lake/c299-hosted-evidence' + evidence.mkdir(parents=True, exist_ok=False) + report = {'status': 'HOLD_SOURCE_PREFLIGHT', 'scientific_effect': 'NONE', + 'phase_results': [], 'started_at': now()} + save_report(evidence, report) + try: + report['context'] = hosted_context(root) + report['source_identity'] = verify_sources(root, digest) + snapshots = evidence / 'source-snapshot' + for relative in report['source_identity']['files']: + dest = snapshots / relative + dest.parent.mkdir(parents=True, exist_ok=True) + shutil.copyfile(root / PREFIX / relative, dest) + shutil.copyfile(root / PREFIX / MANIFEST, evidence / MANIFEST) + for relative in report['source_identity']['support_files']: + dest = snapshots / 'repository' / relative + dest.parent.mkdir(parents=True, exist_ok=True) + shutil.copyfile(root / relative, dest) + report['status'] = 'PASS_SOURCE_PREFLIGHT_ONLY' + except BaseException as exc: + report['status'], report['failure'] = 'HOLD_SOURCE_PREFLIGHT_FAILED', repr(exc) + raise + finally: + save_report(evidence, report) + + +def execute(root, digest): + packet, formal = root / PREFIX, root / 'formal' + evidence = root / '.lake/c299-hosted-evidence' + report = json.loads((evidence / 'RESULT.json').read_text()) + if report['status'] != 'PASS_SOURCE_PREFLIGHT_ONLY' or report['phase_results']: + raise RuntimeError('exact unused source preflight required; no automatic retry') + build = evidence / 'objects' + build.mkdir(exist_ok=False) + report.update(status='HOLD_NOT_COMPLETED', started_execution_at=now(), + memory_limit='-M14000', threads=2, phase_timeout_seconds=900, + memory_limit_reason='Explicit Linux execution budget; not a claim that C299 requires this amount.', + verification_scope='Five fresh local objects; four standard named-module kernel replays; full four-module axiom census; two omitted-premise interface controls.', + replay_limit='Not a --fresh replay or rebuild of the full dependency closure.') + save_report(evidence, report) + try: + context = hosted_context(root) + if context != report['context']: + raise RuntimeError('execution context changed since source preflight') + source_before = verify_sources(root, digest) + if source_before != report['source_identity']: + raise RuntimeError('inputs changed since source preflight') + report['packages_before'] = verify_packages(root) + env, report['environment_contract'] = build_environment(os.environ, build) + save_report(evidence, report) + launcher = resolve_lean_launcher(env) + report['lean_launcher'] = {'path': str(launcher), **identity(launcher)} + # Resolve the toolchain prefix through the selected launcher, then execute + # the measured toolchain binaries directly; an elan shim is not the runtime. + _, prefix_output, _ = run_phase('runtime-print-prefix', + [str(launcher), '--print-prefix'], formal, env, evidence, report, timeout=30) + prefix = Path(prefix_output.strip()) + if not prefix.is_absolute() or not prefix.is_dir(): + raise RuntimeError('Lean did not return an existing absolute toolchain prefix') + runtimes = {} + for executable in ('lean', 'leanchecker'): + binary = (prefix / 'bin' / executable).resolve() + if not binary.is_file() or not os.access(binary, os.X_OK): + raise RuntimeError(f'missing toolchain runtime: {executable}') + runtimes[executable] = {'path': str(binary), **identity(binary)} + report['runtimes'] = runtimes + report['machine'] = {'platform': platform.platform(), 'machine': platform.machine(), + 'python': platform.python_version()} + _, version, _ = run_phase('runtime-version', [runtimes['lean']['path'], '--version'], + formal, env, evidence, report, timeout=30) + if 'version ' + LEAN_VERSION not in version: + raise RuntimeError('wrong Lean runtime version') + report['lean_version_output'] = version + for module in MODULES: + args = [runtimes['lean']['path'], '-j2', '-M14000'] + if module != 'Lifetime': + args += ['-DwarningAsError=true'] + args += ['-o', str(build / (module + '.olean')), + str(packet / 'project' / (module + '.lean'))] + rec, output, _ = run_phase('build-' + module, args, packet / 'project', env, evidence, report, + build_dir=build, build_module=module) + obj = build / (module + '.olean') + safe_source(obj, evidence) + rec['object'] = identity(obj) + if module == 'CriticalRidgeAxiomAudit': + report['audit'] = validate_audit(output) + if verify_sources(root, digest) != source_before: + raise RuntimeError('inputs changed during build') + save_phase(evidence, report, rec) + built_objects = object_inventory(build) + expected_main = {m + '.olean' for m in MODULES} + allowed_outputs = {m + suffix for m in MODULES for suffix in + ('.olean', '.olean.private', '.olean.server', '.ilean', '.ir')} + if not expected_main <= set(built_objects) or not set(built_objects) <= allowed_outputs: + raise RuntimeError('unexpected complete final object set') + report['objects_after_builds'] = built_objects + save_report(evidence, report) + for module in REPLAY_MODULES: + run_phase('kernel-' + module, [runtimes['leanchecker']['path'], '-v', module], + packet / 'project', env, evidence, report, build_dir=build) + report['negative_classification_errors'] = [] + report['negative_predicates_qualified'] = False + for name in NEGATIVES: + rec = None + try: + rec, output, code = run_phase('negative-' + name, + [runtimes['lean']['path'], '-j2', '-M14000', str(packet / 'negative-project' / (name + '.lean'))], + packet / 'negative-project', env, evidence, report, expected_success=False, + build_dir=build) + validate_negative(name, code, output) + rec['candidate_parser_match'] = True + except RuntimeError as exc: + # run_phase persists its receipt before raising. Preserve a + # rejected spelling/exit and gather the second distinct control. + if rec is None: + rec = report['phase_results'][-1] + if rec['name'] != 'negative-' + name: + raise + rec['candidate_parser_match'] = False + rec['negative_classification_error'] = str(exc) + report['negative_classification_errors'].append({'control': name, 'error': str(exc)}) + if rec.get('object_validation_error') is not None: + save_phase(evidence, report, rec) + raise + rec['intended_missing_premise_rejection'] = False + rec['diagnostic_qualification_pending'] = True + save_phase(evidence, report, rec) + report['packages_after'] = verify_packages(root) + report['source_identity_after'] = verify_sources(root, digest) + if report['source_identity_after'] != source_before: + raise RuntimeError('inputs changed during verification') + for executable, spec in runtimes.items(): + if identity(spec['path']) != {k: spec[k] for k in ('bytes', 'sha256')}: + raise RuntimeError(f'runtime changed: {executable}') + report['objects'] = object_inventory(build) + if report['objects'] != built_objects: + raise RuntimeError('local objects changed during kernel or negative phases') + if report['negative_classification_errors']: + raise RuntimeError('C299 negative diagnostics require source-bound review: ' + + repr(report['negative_classification_errors'])) + require_final_predicates() + report['status'] = 'PASS_HOSTED_C299_EXACT_TARGETS' + report['completed_at'] = now() + print('C299_HOSTED_FORMAL_PASS: scoped formal execution only; scientific effect NONE.', flush=True) + except BaseException as exc: + report['status'], report['failure'] = 'HOLD_NOT_COMPLETED', repr(exc) + raise + finally: + save_report(evidence, report) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('mode', choices=('source', 'execute')) + parser.add_argument('--manifest-sha256', required=True) + args = parser.parse_args() + # Published location is exactly frontiers//c299_hosted_verify.py. + root = Path(__file__).resolve().parents[2] + if args.mode == 'source': + source_only(root, args.manifest_sha256) + else: + execute(root, args.manifest_sha256) + + +if __name__ == '__main__': + main() diff --git a/frontiers/critical_ridge_20261020/engineering/source-attempts/E1_FIRST_GREEN_test_c299_hosted_verify.py b/frontiers/critical_ridge_20261020/engineering/source-attempts/E1_FIRST_GREEN_test_c299_hosted_verify.py new file mode 100644 index 000000000..90c7649de --- /dev/null +++ b/frontiers/critical_ridge_20261020/engineering/source-attempts/E1_FIRST_GREEN_test_c299_hosted_verify.py @@ -0,0 +1,303 @@ +"""Engineering controls only. No Lean invocation or scientific acceptance.""" +import hashlib +import importlib.util +import inspect +import json +import os +from pathlib import Path +import sys +import tempfile +import unittest + +MODULE_PATH = Path(__file__).with_name('c299_hosted_verify.py') + + +class HostedVerifierTests(unittest.TestCase): + @classmethod + def setUpClass(cls): + if MODULE_PATH.exists(): + spec = importlib.util.spec_from_file_location('c299_hosted_verify', MODULE_PATH) + cls.v = importlib.util.module_from_spec(spec) + spec.loader.exec_module(cls.v) + else: + cls.v = None + + def verifier(self): + self.assertIsNotNone(self.v, 'the scoped verifier is not implemented') + return self.v + + def test_environment_contract_strips_overrides_and_uses_declared_path(self): + """An inherited tool/loader override must not survive or leak its value.""" + v = self.verifier() + self.assertTrue(hasattr(v, 'build_environment'), 'environment contract is missing') + with tempfile.TemporaryDirectory() as tmp: + root = Path(tmp) + bindir = root / 'bin' + bindir.mkdir() + launcher = bindir / 'lean' + launcher.write_text('# inert launcher locator fixture; never executed\n') + launcher.chmod(0o700) + inherited = {'PATH': str(bindir), 'LEAN_PATH': '/pinned/lake/library', + 'LEAN_NUM_THREADS': '64', 'LEAN_SYSROOT': 'secret-lean-value', + 'LAKE_HOME': 'secret-lake-value', 'LD_PRELOAD': 'secret-loader-value', + 'DYLD_LIBRARY_PATH': 'secret-dyld-value', 'TOKEN': 'secret-token-value'} + env, contract = v.build_environment(inherited, root / 'objects') + self.assertEqual(env['LEAN_PATH'], str(root / 'objects') + os.pathsep + '/pinned/lake/library') + self.assertEqual(env['LEAN_NUM_THREADS'], '2') + self.assertEqual(v.resolve_lean_launcher(env), launcher.resolve()) + self.assertEqual(contract['removed_variable_names'], + ['DYLD_LIBRARY_PATH', 'LAKE_HOME', 'LD_PRELOAD', 'LEAN_NUM_THREADS', 'LEAN_SYSROOT']) + for key in ('LEAN_SYSROOT', 'LAKE_HOME', 'LD_PRELOAD', 'DYLD_LIBRARY_PATH'): + self.assertNotIn(key, env) + self.assertEqual(env['TOKEN'], 'secret-token-value') + self.assertNotIn('secret-', json.dumps(contract)) + empty, _ = v.build_environment({'PATH': str(bindir)}, root / 'empty') + self.assertEqual(empty['LEAN_PATH'], str(root / 'empty')) + + def test_phase_environment_mutation_is_blocked_and_receipted(self): + """A changed search path or injected loader must fail before the child runs.""" + v = self.verifier() + self.assertTrue(hasattr(v, 'build_environment'), 'environment contract is missing') + with tempfile.TemporaryDirectory() as tmp: + root = Path(tmp) + env, contract = v.build_environment(dict(os.environ), root / 'objects') + report = {'status': 'HOLD_NOT_COMPLETED', 'phase_results': [], + 'environment_contract': contract} + rec, output, _ = v.run_phase('environment-valid', + [sys.executable, '-c', 'import os; print(os.environ["LEAN_NUM_THREADS"])'], + root, env, root, report, timeout=10) + self.assertEqual(output.strip(), '2') + self.assertEqual(rec['selected_environment'], contract['selected_environment']) + self.assertEqual(rec['environment_contract_sha256'], contract['sha256']) + self.assertIsNone(rec['environment_validation_error']) + for n, changes in enumerate(({'LEAN_PATH': '/unbound/library'}, {'LD_PRELOAD': 'secret-injection'})): + altered = dict(env, **changes) + with self.assertRaisesRegex(RuntimeError, 'environment'): + v.run_phase('environment-mutated-' + str(n), + [sys.executable, '-c', 'from pathlib import Path;Path("CHILD_RAN").write_text("bad")'], + root, altered, root, report, timeout=10) + receipt = json.loads((root / ('environment-mutated-' + str(n) + '.receipt.json')).read_text()) + self.assertEqual(receipt['status'], 'FAIL') + self.assertIsNone(receipt['exit_code']) + self.assertIsNotNone(receipt['environment_validation_error']) + self.assertFalse((root / 'CHILD_RAN').exists()) + self.assertNotIn('secret-injection', json.dumps(receipt)) + self.assertEqual(receipt, report['phase_results'][-1]) + + def test_modified_source_bytes_are_rejected(self): + """Dropping size/hash verification would accept the modified file.""" + v = self.verifier() + with tempfile.TemporaryDirectory() as tmp: + path = Path(tmp) / 'Proof.lean' + path.write_bytes(b'abc') + expected = {'bytes': 3, 'sha256': + 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad'} + v.verify_file(path, expected, Path(tmp)) + path.write_bytes(b'abd') + with self.assertRaisesRegex(RuntimeError, 'identity mismatch'): + v.verify_file(path, expected, Path(tmp)) + + def test_audit_cannot_omit_required_target_or_hide_axiom(self): + """Count-only validation would accept a substituted target or sorryAx.""" + v = self.verifier() + good = ( + 'CRITICAL_RIDGE_AUDIT_MODULE A COUNT 1\n' + 'CRITICAL_RIDGE_AUDIT_DECL A.target AXIOMS [propext]\n' + 'CRITICAL_RIDGE_AUDIT_MODULE B COUNT 1\n' + 'CRITICAL_RIDGE_AUDIT_DECL B.target AXIOMS []\n' + 'CRITICAL_RIDGE_AUDIT_STANDARD_ONLY_PASS COUNT 2\n') + got = v.validate_audit(good, modules=('A', 'B'), required=('A.target', 'B.target')) + self.assertEqual(got['declaration_count'], 2) + for bad in (good.replace('B.target', 'B.other'), + good.replace('[propext]', '[sorryAx]'), + good.replace('B.target AXIOMS []', 'A.target AXIOMS []')): + with self.subTest(bad=bad), self.assertRaises(RuntimeError): + v.validate_audit(bad, modules=('A', 'B'), required=('A.target', 'B.target')) + + def test_pinned_lean_multiline_axiom_records(self): + """Actual pinned Lean wraps the unchanged Lifetime axiom arrays.""" + v = self.verifier() + proper = ( + 'CRITICAL_RIDGE_AUDIT_MODULE Lifetime COUNT 1\n' + 'CRITICAL_RIDGE_AUDIT_DECL UniversalLaw.Spec.Lifetime.IsUnrestrictedLeadingCoefficient AXIOMS [propext,\n' + ' Classical.choice,\n' + ' Quot.sound]\n' + 'CRITICAL_RIDGE_AUDIT_STANDARD_ONLY_PASS COUNT 1\n') + args = {'modules': ('Lifetime',), + 'required': ('UniversalLaw.Spec.Lifetime.IsUnrestrictedLeadingCoefficient',)} + self.assertEqual(v.validate_audit(proper, **args)['declaration_count'], 1) + for bad in (proper.replace(' Quot.sound]', ' sorryAx]'), + proper.replace(' Quot.sound]\n', ''), + proper.replace(' Quot.sound]', ' Quot.sound] trailing garbage'), + proper[:proper.index(' Quot.sound]')]): + with self.subTest(bad=bad), self.assertRaises(RuntimeError): + v.validate_audit(bad, **args) + + def test_pending_final_acceptance_fails_closed(self): + """Collecting diagnostics must not silently qualify final acceptance.""" + v = self.verifier() + with self.assertRaisesRegex(RuntimeError, 'PENDING_C299_NEGATIVE_PREDICATES'): + v.require_final_predicates() + + def test_source_preflight_can_collect_before_final_predicate_qualification(self): + """An early final-acceptance gate would block needed actual diagnostics.""" + v = self.verifier() + with tempfile.TemporaryDirectory() as tmp: + root = Path(tmp) + packet = root / v.PREFIX + files = {} + for rel in ([f'project/{m}.lean' for m in v.MODULES] + + [f'negative-project/{m}.lean' for m in v.NEGATIVES]): + path = packet / rel + path.parent.mkdir(parents=True, exist_ok=True) + path.write_bytes(b'-- inert source fixture\n') + files[rel] = {'bytes': 24, 'sha256': hashlib.sha256(b'-- inert source fixture\n').hexdigest()} + upstream = root / 'specifications/lean_statements_20261010/Specifications/Lifetime.lean' + upstream.parent.mkdir(parents=True) + upstream.write_bytes(b'-- inert source fixture\n') + formal = root / 'formal' + formal.mkdir() + (formal / 'lean-toolchain').write_text('leanprover/lean4:v4.34.1\n') + (formal / 'lakefile.toml').write_text('rev = "d13f23b723b8a846827a245b89c10fc7d3f11612"\n') + (formal / 'lake-manifest.json').write_text(json.dumps({'packages': [ + {'name': name, 'rev': rev} for name, rev in v.PACKAGE_PINS.items()]})) + for rel in (v.WORKFLOW, v.PREFIX + '/c299_hosted_verify.py', + v.PREFIX + '/test_c299_hosted_verify.py'): + path = root / rel + path.parent.mkdir(parents=True, exist_ok=True) + path.write_bytes(b'inert support fixture\n') + manifest = {'schema_version': 1, 'scientific_effect': 'NONE', 'files': files, + 'source_origins': {name: {'commit': 'a' * 40, 'path': name + '.lean'} + for name in ('Lifetime', 'TorusTopology', 'MorseFiniteCritical')}} + manifest_path = packet / v.MANIFEST + manifest_path.write_text(json.dumps(manifest)) + digest = hashlib.sha256(manifest_path.read_bytes()).hexdigest() + measured = v.verify_sources(root, digest) + self.assertEqual(measured['files'], files) + with self.assertRaisesRegex(RuntimeError, 'PENDING_C299_NEGATIVE_PREDICATES'): + v.require_final_predicates() + + def test_inactive_draft_negative_sections_reject_forged_fields(self): + """Section/token-only matching would accept unrelated existential fields.""" + v = self.verifier() + # Synthetic prospective rendering only; no actual Lean diagnostic observed. + conclusion = ( + '∃ r, r 0 = 0 ∧ ContDiffAt ℝ 2 r 0 ∧ ' + '(∀ᶠ w in 𝓝 0, ∀ (z : ↥V), (fderiv ℝ f (p + w + ↑(r w))) ↑z = 0) ∧ ' + '∀ (w : E d) (z : ↥V), hessian d f p (w + ↑((fderiv ℝ r 0) w)) ↑z = 0') + target = 'TorusCriticalRidge.exists_negative_partial_gradient_ridge' + for name, expression, premise in ( + ('WithoutCriticality', + 'fun hcritical => ' + target + ' f p V hsmooth hcritical hneg', + 'IsCriticalPoint d f p'), + ('WithoutNegativeDefiniteness', + target + ' f p V hsmooth hcritical', + '(∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0)')): + proper = (name + '.lean:23:2: error: Type mismatch\n ' + expression + + '\nhas type\n ' + premise + ' → ' + conclusion + + '\nbut is expected to have type\n ' + conclusion + '\n') + result = v.validate_negative_draft(name, 1, proper) + self.assertTrue(result['draft_only']) + self.assertFalse(result['actual_diagnostic_observed']) + for code, bad in ( + (0, proper), (-9, proper), + (1, proper.replace(name + '.lean', 'Other.lean')), + (1, proper.replace('ContDiffAt ℝ 2 r 0', 'True')), + (1, proper.replace('fderiv ℝ f', 'fderiv ℝ other')), + (1, proper.replace(premise + ' → ', 'Continuous f → ', 1)), + (1, proper + 'Other.lean:1:1: error: unknown identifier\n'), + (1, proper.replace('but is expected to have type', 'unrelated log tokens'))): + with self.subTest(name=name, code=code, bad=bad), self.assertRaises(RuntimeError): + v.validate_negative_draft(name, code, bad) + + def test_failed_phase_receipt_and_exact_streams_survive_abort(self): + """Raising before persistence would discard the actual failing phase.""" + v = self.verifier() + with tempfile.TemporaryDirectory() as tmp: + evidence = Path(tmp) + report = {'status': 'HOLD_NOT_COMPLETED', 'phase_results': []} + with self.assertRaisesRegex(RuntimeError, 'unexpected exit'): + v.run_phase('deliberate-failure', + [sys.executable, '-c', + 'import sys;sys.stdout.buffer.write(b"out\\xff");sys.stderr.write("err");sys.exit(7)'], + evidence, dict(os.environ), evidence, report, timeout=10) + saved = json.loads((evidence / 'RESULT.json').read_text()) + phase = saved['phase_results'][0] + self.assertEqual(phase['exit_code'], 7) + self.assertEqual(phase['status'], 'FAIL') + self.assertFalse(phase['timed_out']) + self.assertEqual((evidence / 'deliberate-failure.stdout').read_bytes(), b'out\xff') + self.assertEqual((evidence / 'deliberate-failure.stderr').read_bytes(), b'err') + self.assertEqual(phase['stdout_sha256'], hashlib.sha256(b'out\xff').hexdigest()) + self.assertTrue((evidence / 'deliberate-failure.receipt.json').exists()) + + + def test_timeout_preserves_partial_stream_and_receipt(self): + """Timeout handling must not discard the child output or phase result.""" + v = self.verifier() + with tempfile.TemporaryDirectory() as tmp: + evidence = Path(tmp) + report = {'status': 'HOLD_NOT_COMPLETED', 'phase_results': []} + with self.assertRaises(RuntimeError): + v.run_phase('deliberate-timeout', + [sys.executable, '-u', '-c', + 'import time;print("before timeout");time.sleep(3)'], + evidence, dict(os.environ), evidence, report, timeout=0.1) + receipt = json.loads((evidence / 'deliberate-timeout.receipt.json').read_text()) + self.assertTrue(receipt['timed_out']) + self.assertEqual(receipt['status'], 'FAIL') + self.assertEqual((evidence / 'deliberate-timeout.stdout').read_bytes(), b'before timeout\n') + + def test_phase_rejects_imported_object_mutation(self): + """A successful compiler process may not alter a prior input object.""" + v = self.verifier() + self.assertIn('build_dir', inspect.signature(v.run_phase).parameters, 'object input monitoring is not implemented') + with tempfile.TemporaryDirectory() as tmp: + evidence = Path(tmp) + build = evidence / 'objects' + build.mkdir() + (build / 'Lifetime.olean').write_bytes(b'frozen input') + report = {'status': 'HOLD_NOT_COMPLETED', 'phase_results': []} + with self.assertRaises(RuntimeError): + v.run_phase('deliberate-object-mutation', + [sys.executable, '-c', + 'from pathlib import Path;Path("objects/Lifetime.olean").write_bytes(b"changed")'], + evidence, dict(os.environ), evidence, report, + timeout=10, build_dir=build) + receipt = json.loads((evidence / 'deliberate-object-mutation.receipt.json').read_text()) + self.assertEqual(receipt['exit_code'], 0) + self.assertEqual(receipt['status'], 'FAIL') + self.assertIn('Lifetime.olean', receipt['objects_before']) + self.assertNotEqual(receipt['objects_before'], receipt['objects_after']) + self.assertIsNotNone(receipt['object_validation_error']) + + def test_build_allows_only_its_own_outputs(self): + """A build may add its target object, not an unrelated replacement.""" + v = self.verifier() + self.assertTrue(hasattr(v, 'validate_objects'), 'object change validation is not implemented') + previous = {'Lifetime.olean': {'bytes': 2, 'sha256': 'a' * 64}} + good = dict(previous, **{'CriticalRidge.olean': {'bytes': 3, 'sha256': 'b' * 64}}) + v.validate_objects(previous, good, 'CriticalRidge') + for bad in (dict(good, **{'Unrelated.olean': {'bytes': 1, 'sha256': 'c' * 64}}), + previous, + dict(good, **{'Lifetime.olean': {'bytes': 2, 'sha256': 'd' * 64}})): + with self.subTest(bad=bad), self.assertRaises(RuntimeError): + v.validate_objects(previous, bad, 'CriticalRidge') + + def test_amended_phase_receipt_matches_aggregate(self): + """Semantic/object metadata must not exist only in the aggregate receipt.""" + v = self.verifier() + self.assertTrue(hasattr(v, 'save_phase'), 'amended receipt persistence is not implemented') + with tempfile.TemporaryDirectory() as tmp: + evidence = Path(tmp) + report = {'status': 'HOLD_NOT_COMPLETED', 'phase_results': []} + rec, _, _ = v.run_phase('valid-phase', [sys.executable, '-c', 'pass'], + evidence, dict(os.environ), evidence, report, timeout=10) + rec['intended_missing_premise_rejection'] = True + v.save_phase(evidence, report, rec) + self.assertEqual(json.loads((evidence / 'valid-phase.receipt.json').read_text()), + json.loads((evidence / 'RESULT.json').read_text())['phase_results'][0]) + + +if __name__ == '__main__': + unittest.main() diff --git a/frontiers/critical_ridge_20261020/engineering/source-attempts/E1_PREDECESSOR_c299_hosted_verify.py b/frontiers/critical_ridge_20261020/engineering/source-attempts/E1_PREDECESSOR_c299_hosted_verify.py new file mode 100644 index 000000000..85fc5b4c3 --- /dev/null +++ b/frontiers/critical_ridge_20261020/engineering/source-attempts/E1_PREDECESSOR_c299_hosted_verify.py @@ -0,0 +1,557 @@ +#!/usr/bin/env python3 +"""C299 scoped hosted verification; no scientific promotion or human review. + +Run from the existing pinned formal/ Lake environment. Sources are pinned by an +explicit manifest digest in the dedicated workflow. Every attempt retains exact +streams and a receipt before any failure is raised. No retry is performed. +""" +import argparse +from datetime import datetime, timezone +import hashlib +import json +import os +from pathlib import Path +import platform +import re +import shutil +import signal +import subprocess +import time + +PREFIX = 'frontiers/critical_ridge_20261020' +WORKFLOW = '.github/workflows/c299-critical-ridge.yml' +MANIFEST = 'HOSTED_SOURCE_MANIFEST.json' +MODULES = ('Lifetime', 'TorusTopology', 'MorseFiniteCritical', + 'CriticalRidge', 'CriticalRidgeAxiomAudit') +REPLAY_MODULES = MODULES[1:] +AUDIT_MODULES = MODULES[:4] +NEGATIVES = ('WithoutCriticality', 'WithoutNegativeDefiniteness') +ALLOWED_AXIOMS = {'propext', 'Classical.choice', 'Quot.sound'} +# Candidate-2 source names; formal execution and final diagnostic review pending. +REQUIRED = ('UniversalLaw.Spec.Lifetime.IsSmooth', 'UniversalLaw.Spec.Lifetime.IsCriticalPoint', 'UniversalLaw.Spec.Lifetime.hessian', 'TorusMorseFinite.literal_hessian_eq_fderiv', 'TorusCriticalRidge.restrictCovector', 'TorusCriticalRidge.ridgeAddition', 'TorusCriticalRidge.negativePartialGradient', 'TorusCriticalRidge.negativeHessianBlock', 'TorusCriticalRidge.negativeHessianBlock_apply', 'TorusCriticalRidge.negativeHessianBlock_isInvertible', 'TorusCriticalRidge.negativePartialGradient_contDiff', 'TorusCriticalRidge.negativePartialGradient_hasFDerivAt', 'TorusCriticalRidge.exists_negative_partial_gradient_ridge') +MATHLIB_PIN = 'd13f23b723b8a846827a245b89c10fc7d3f11612' +LEAN_VERSION = '4.34.1' +PACKAGE_PINS = { + 'plausible': '118aa17ee84656b8bd727fef7c458ee8c833385c', + 'LeanSearchClient': 'ddf04cf3949fa556442341e87d47f9f6e6074707', + 'importGraph': 'e928b72544873815af278d38681b31c0293588e3', + 'proofwidgets': '106ff4fafc74ef4ac99d81dbf3ab399118f497a5', + 'aesop': '355695d523e41d0554926416cba2a2b3544fbbc9', + 'Qq': '6a489d9af5d0c47e5b259e2e8bcdfc1811b5a259', + 'batteries': 'f2effa3d803fda822b1f97b806c47cf2adfbcbc2', + 'Cli': 'e92c9f15fdfacc8536f31cfb3b7ad26c3c8cd204', + 'mathlib': MATHLIB_PIN, +} + + +def now(): + return datetime.now(timezone.utc).isoformat() + + +def identity(path): + data = Path(path).read_bytes() + return {'bytes': len(data), 'sha256': hashlib.sha256(data).hexdigest()} + + +def safe_source(path, root): + path, root = Path(path).absolute(), Path(root).absolute() + if not path.is_relative_to(root): + raise RuntimeError(f'source outside repository: {path}') + parts = path.relative_to(root).parts + for n in range(1, len(parts) + 1): + if root.joinpath(*parts[:n]).is_symlink(): + raise RuntimeError(f'symlinked source: {path}') + if not path.is_file(): + raise RuntimeError(f'source missing or not regular: {path}') + + +def verify_file(path, expected, root): + safe_source(path, root) + if (set(expected) != {'bytes', 'sha256'} or + type(expected['bytes']) is not int or expected['bytes'] < 1 or + not re.fullmatch('[0-9a-f]{64}', expected['sha256'])): + raise RuntimeError(f'invalid expected source identity: {path}') + actual = identity(path) + if actual != expected: + raise RuntimeError(f'source identity mismatch: {path}: {actual}') + return actual + + +def verify_sources(root, manifest_sha256): + root = Path(root) + packet = root / PREFIX + path = packet / MANIFEST + safe_source(path, root) + if not re.fullmatch('[0-9a-f]{64}', manifest_sha256): + raise RuntimeError('explicit frozen manifest SHA-256 required') + if identity(path)['sha256'] != manifest_sha256: + raise RuntimeError('frozen source manifest identity mismatch') + manifest = json.loads(path.read_text()) + if manifest.get('schema_version') != 1 or manifest.get('scientific_effect') != 'NONE': + raise RuntimeError('invalid C299 manifest schema or scientific-effect field') + expected = {f'project/{m}.lean' for m in MODULES} | { + f'negative-project/{m}.lean' for m in NEGATIVES} + if set(manifest.get('files', {})) != expected: + raise RuntimeError('manifest must bind exactly five modules and two controls') + sources = {rel: verify_file(packet / rel, spec, root) + for rel, spec in manifest['files'].items()} + origins = manifest.get('source_origins', {}) + if set(origins) != {'Lifetime', 'TorusTopology', 'MorseFiniteCritical'}: + raise RuntimeError('all three frozen input source origins are required') + for name, origin in origins.items(): + if (not isinstance(origin, dict) or not re.fullmatch('[0-9a-f]{40}', origin.get('commit', '')) + or not isinstance(origin.get('path'), str) or not origin['path'] + or Path(origin['path']).is_absolute() or '..' in Path(origin['path']).parts): + raise RuntimeError(f'invalid input source origin: {name}') + upstream = root / 'specifications/lean_statements_20261010/Specifications/Lifetime.lean' + verify_file(upstream, manifest['files']['project/Lifetime.lean'], root) + config = {} + for rel in ('formal/lean-toolchain', 'formal/lakefile.toml', 'formal/lake-manifest.json'): + safe_source(root / rel, root) + config[rel] = identity(root / rel) + if (root / 'formal/lean-toolchain').read_text().strip() != 'leanprover/lean4:v' + LEAN_VERSION: + raise RuntimeError('Lean toolchain pin changed') + if f'rev = "{MATHLIB_PIN}"' not in (root / 'formal/lakefile.toml').read_text(): + raise RuntimeError('Lake mathlib pin changed') + lock = json.loads((root / 'formal/lake-manifest.json').read_text()) + if {p['name']: p['rev'] for p in lock['packages']} != PACKAGE_PINS: + raise RuntimeError('dependency lock pins changed') + support = {} + for rel in (WORKFLOW, PREFIX + '/c299_hosted_verify.py', + PREFIX + '/test_c299_hosted_verify.py'): + safe_source(root / rel, root) + support[rel] = identity(root / rel) + return {'manifest': identity(path), 'files': sources, 'source_origins': origins, + 'source_origin_limit': 'Remote origin byte equality is a separate owner custody check.', + 'formal_config': config, 'support_files': support, 'dependency_pins': PACKAGE_PINS} + + +def audit_records(output): + """Join Lean's wrapped AXIOMS arrays; reject interrupted or truncated records.""" + pending = None + for line in output.splitlines(): + if pending is not None: + if 'CRITICAL_RIDGE_AUDIT_' in line: + raise RuntimeError('audit declaration interrupted before closing axiom list') + pending += ' ' + line.strip() + if ']' in line: + yield pending + pending = None + continue + if 'CRITICAL_RIDGE_AUDIT_' not in line: + continue + marker = line[line.index('CRITICAL_RIDGE_AUDIT_'):].strip() + if marker.startswith('CRITICAL_RIDGE_AUDIT_PROGRESS '): + continue + if marker.startswith('CRITICAL_RIDGE_AUDIT_DECL ') and 'AXIOMS [' in marker and ']' not in marker: + pending = marker + continue + yield marker + if pending is not None: + raise RuntimeError('truncated audit axiom list') + + +def validate_audit(output, modules=AUDIT_MODULES, required=REQUIRED): + """Read every module-origin record, not just a total or public-name sample.""" + counts, names, current, seen = {}, {}, None, set() + total = None + for marker in audit_records(output): + m = re.fullmatch(r'CRITICAL_RIDGE_AUDIT_MODULE (\S+) COUNT (\d+)', marker) + if m: + current, count = m.group(1), int(m.group(2)) + if total is not None or current not in modules or current in counts or count < 1: + raise RuntimeError('invalid or duplicate audit module census') + counts[current], names[current] = count, [] + continue + m = re.fullmatch(r'CRITICAL_RIDGE_AUDIT_DECL (\S+) AXIOMS \[([^\[\]]*)\]', marker) + if m: + name, raw_axioms = m.groups() + axioms = {s.strip() for s in raw_axioms.split(',') if s.strip()} + if current is None or total is not None or name in seen or not axioms <= ALLOWED_AXIOMS: + raise RuntimeError('invalid, repeated or forbidden audit declaration') + names[current].append(name) + seen.add(name) + continue + m = re.fullmatch(r'CRITICAL_RIDGE_AUDIT_STANDARD_ONLY_PASS COUNT (\d+)', marker) + if m and total is None: + total = int(m.group(1)) + continue + raise RuntimeError(f'unrecognized or repeated audit marker: {marker}') + if (tuple(counts) != tuple(modules) or total != len(seen) or total != sum(counts.values()) + or any(len(names[m]) != counts[m] for m in counts) + or not set(required) <= seen): + raise RuntimeError('incomplete audit census or missing required target') + return {'module_counts': counts, 'declaration_count': total, + 'required_targets': list(required), 'allowed_axioms': sorted(ALLOWED_AXIOMS), + 'module_declarations': names} + + +def require_final_predicates(): + """Draft stop: replace only after exact source/fixtures/diagnostics review. + + This explicit stop blocks final acceptance AFTER both control attempts. + Development may collect actual build/kernel/diagnostic evidence. The draft + parser supplies reviewable intended-type logic; synthetic fixture tests are + not actual Lean diagnostics or final acceptance. + """ + raise RuntimeError('PENDING_C299_NEGATIVE_PREDICATES: actual diagnostics and final source freeze required') + + +def validate_negative(name, returncode, output): + return validate_negative_draft(name, returncode, output) + + +def validate_negative_draft(name, returncode, output): + """Candidate diagnostic parser; final observed spelling must be reviewed.""" + if name not in NEGATIVES: + raise RuntimeError('unknown negative control') + flat = ' '.join(output.split()) + forbidden = ('unknown identifier', 'unknown module', 'file not found', 'no such file', + 'memory_exception', 'out of memory', 'unexpected token', 'unsolved goals', + 'maximum recursion', 'maximum heartbeats', 'failed to', 'panic', 'sorry') + if (returncode != 1 or output.count('error:') != 1 + or any(x in flat.lower() for x in forbidden)): + raise RuntimeError('negative control failed for an unrelated reason') + pattern = (r'\A[^\n]*' + re.escape(name) + r'\.lean:\d+:\d+: error: Type mismatch\s*\n' + r'(?P.*?)\nhas type\s*\n(?P.*?)' + r'\nbut is expected to have type\s*\n(?P.*?)\s*\Z') + match = re.fullmatch(pattern, output.strip(), flags=re.S) + if match is None: + raise RuntimeError('expected one source-bound type-mismatch diagnostic') + expression, actual, expected = (' '.join(match.group(k).split()) + for k in ('expression', 'actual', 'expected')) + target = 'TorusCriticalRidge.exists_negative_partial_gradient_ridge' + if target not in expression or 'f p V hsmooth' not in expression: + raise RuntimeError('wrong actual theorem application') + if name == 'WithoutCriticality': + if not re.fullmatch(r'fun hcritical => ' + re.escape(target) + + r' f p V hsmooth hcritical hneg', expression): + raise RuntimeError('wrong criticality-omission application') + premise = r'IsCriticalPoint d f p' + else: + if expression != target + ' f p V hsmooth hcritical': + raise RuntimeError('wrong negative-definiteness-omission application') + premise = r'\(∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0\)' + if not re.fullmatch(premise + r' → ' + re.escape(expected), actual): + raise RuntimeError('actual type is not the omitted premise followed by the expected conclusion') + # Fixed candidate-2 binder names and all four same-ridge conclusion fields. + conclusion = (r'∃ r, r 0 = 0 ∧ ContDiffAt ℝ 2 r 0 ∧ ' + r'\(∀ᶠ w in 𝓝 0, ∀ \(z : ↥V\), \(fderiv ℝ f \(p \+ w \+ ↑\(r w\)\)\) ↑z = 0\) ∧ ' + r'∀ \(w : E d\) \(z : ↥V\), hessian d f p \(w \+ ↑\(\(fderiv ℝ r 0\) w\)\) ↑z = 0') + if not re.fullmatch(conclusion, expected): + raise RuntimeError('expected conclusion does not match all four candidate ridge fields') + return {'control': name, 'diagnostic_source': name + '.lean', + 'draft_only': True, 'actual_diagnostic_observed': False} + + +def save_report(evidence, report): + (evidence / 'RESULT.json').write_text(json.dumps(report, indent=2, sort_keys=True) + '\n') + + +def save_phase(evidence, report, record): + (evidence / (record['name'] + '.receipt.json')).write_text( + json.dumps(record, indent=2, sort_keys=True) + '\n') + save_report(evidence, report) + + +def object_inventory(build): + result = {} + for path in sorted(Path(build).iterdir()): + safe_source(path, build) + result[path.name] = identity(path) + return result + + +def validate_objects(before, after, build_module=None): + if any(after.get(name) != spec for name, spec in before.items()): + raise RuntimeError('previous local input object changed or disappeared') + additions = set(after) - set(before) + if build_module is None: + if additions: + raise RuntimeError('non-build phase added an unexpected local object') + return + allowed = {build_module + suffix for suffix in + ('.olean', '.olean.private', '.olean.server', '.ilean', '.ir')} + if build_module + '.olean' not in additions or not additions <= allowed: + raise RuntimeError('build must add only its own target object outputs') + + +def run_phase(name, args, cwd, env, evidence, report, expected_success=True, + timeout=900, build_dir=None, build_module=None): + """Persist raw streams, per-phase receipt, and aggregate receipt before raise.""" + if not re.fullmatch('[A-Za-z0-9_-]+', name): + raise RuntimeError('unsafe phase name') + evidence = Path(evidence) + out_path, err_path = evidence / (name + '.stdout'), evidence / (name + '.stderr') + start, utc_start = time.monotonic(), now() + timed_out, spawn_error, code = False, None, None + objects_before, objects_after, object_error = None, None, None + with out_path.open('xb') as stdout, err_path.open('xb') as stderr: + try: + if build_dir is not None: + objects_before = object_inventory(build_dir) + except (OSError, RuntimeError) as exc: + object_error = str(exc) + if object_error is None: + try: + proc = subprocess.Popen(args, cwd=cwd, env=env, stdout=stdout, stderr=stderr, + start_new_session=True) + try: + code = proc.wait(timeout=timeout) + except subprocess.TimeoutExpired: + timed_out = True + try: + os.killpg(proc.pid, signal.SIGTERM) + except ProcessLookupError: + pass + try: + code = proc.wait(timeout=5) + except subprocess.TimeoutExpired: + try: + os.killpg(proc.pid, signal.SIGKILL) + except ProcessLookupError: + pass + code = proc.wait(timeout=5) + except (OSError, subprocess.TimeoutExpired) as exc: + spawn_error = str(exc) + if build_dir is not None: + try: + objects_after = object_inventory(build_dir) + if object_error is None: + validate_objects(objects_before, objects_after, build_module) + except (OSError, RuntimeError) as exc: + object_error = str(exc) + valid = (not timed_out and spawn_error is None and object_error is None and + (code == 0 if expected_success else code == 1)) + record = {'name': name, 'command': list(args), 'cwd': str(cwd), + 'started_at': utc_start, 'finished_at': now(), + 'duration_seconds': round(time.monotonic() - start, 6), + 'timeout_seconds': timeout, 'timed_out': timed_out, + 'spawn_error': spawn_error, 'exit_code': code, + 'stdout_sha256': identity(out_path)['sha256'], 'stdout_bytes': out_path.stat().st_size, + 'stderr_sha256': identity(err_path)['sha256'], 'stderr_bytes': err_path.stat().st_size, + 'objects_before': objects_before, 'objects_after': objects_after, + 'object_validation_error': object_error, + 'status': 'PASS' if valid else 'FAIL'} + report['phase_results'].append(record) + save_phase(evidence, report, record) + print(f'C299 {name}: exit={code} timeout={timed_out} seconds={record["duration_seconds"]}', flush=True) + if not valid: + raise RuntimeError(f'C299 {name} unexpected exit: {code}; timed_out={timed_out}; ' + f'spawn_error={spawn_error}; object_error={object_error}') + output = out_path.read_bytes().decode('utf8', 'replace') + '\n' + err_path.read_bytes().decode('utf8', 'replace') + return record, output, code + + +def git(root, *args): + return subprocess.check_output(['git', *args], cwd=root, text=True, timeout=30).strip() + + +def verify_packages(root): + result = {} + for name, expected in PACKAGE_PINS.items(): + path = root / 'formal/.lake/packages' / name + actual = git(path, 'rev-parse', 'HEAD') + if actual != expected or git(path, 'status', '--porcelain', '--untracked-files=no'): + raise RuntimeError(f'installed dependency mismatch or tracked change: {name}') + result[name] = actual + return result + + +def hosted_context(root): + keys = ('GITHUB_SHA', 'GITHUB_RUN_ID', 'GITHUB_RUN_ATTEMPT', 'GITHUB_REPOSITORY', + 'GITHUB_EVENT_NAME', 'GITHUB_WORKFLOW', 'GITHUB_JOB') + if any(not os.environ.get(k) for k in keys): + raise RuntimeError('actual GitHub execution context required') + if os.environ['GITHUB_REPOSITORY'] != 'd6g8k5htny-coder/Math-': + raise RuntimeError('wrong repository') + head = git(root, 'rev-parse', 'HEAD') + if head != os.environ['GITHUB_SHA']: + raise RuntimeError('tested checkout does not match GITHUB_SHA') + context = {k.lower(): os.environ[k] for k in keys} + context['tested_commit'] = head + context['tested_tree'] = git(root, 'rev-parse', 'HEAD^{tree}') + context['tested_parents'] = git(root, 'show', '-s', '--format=%P', 'HEAD').split() + event_path = Path(os.environ.get('GITHUB_EVENT_PATH', '/nonexistent')) + if event_path.is_file(): + event = json.loads(event_path.read_text()) + if 'pull_request' in event: + context['pull_request'] = { + 'number': event['number'], 'head_sha': event['pull_request']['head']['sha'], + 'base_sha': event['pull_request']['base']['sha']} + context['executor'] = 'GitHub-hosted runner executing C299 verification code' + context['human_review_credit'] = 0 + return context + + +def source_only(root, digest): + evidence = root / '.lake/c299-hosted-evidence' + evidence.mkdir(parents=True, exist_ok=False) + report = {'status': 'HOLD_SOURCE_PREFLIGHT', 'scientific_effect': 'NONE', + 'phase_results': [], 'started_at': now()} + save_report(evidence, report) + try: + report['context'] = hosted_context(root) + report['source_identity'] = verify_sources(root, digest) + snapshots = evidence / 'source-snapshot' + for relative in report['source_identity']['files']: + dest = snapshots / relative + dest.parent.mkdir(parents=True, exist_ok=True) + shutil.copyfile(root / PREFIX / relative, dest) + shutil.copyfile(root / PREFIX / MANIFEST, evidence / MANIFEST) + for relative in report['source_identity']['support_files']: + dest = snapshots / 'repository' / relative + dest.parent.mkdir(parents=True, exist_ok=True) + shutil.copyfile(root / relative, dest) + report['status'] = 'PASS_SOURCE_PREFLIGHT_ONLY' + except BaseException as exc: + report['status'], report['failure'] = 'HOLD_SOURCE_PREFLIGHT_FAILED', repr(exc) + raise + finally: + save_report(evidence, report) + + +def execute(root, digest): + packet, formal = root / PREFIX, root / 'formal' + evidence = root / '.lake/c299-hosted-evidence' + report = json.loads((evidence / 'RESULT.json').read_text()) + if report['status'] != 'PASS_SOURCE_PREFLIGHT_ONLY' or report['phase_results']: + raise RuntimeError('exact unused source preflight required; no automatic retry') + build = evidence / 'objects' + build.mkdir(exist_ok=False) + report.update(status='HOLD_NOT_COMPLETED', started_execution_at=now(), + memory_limit='-M14000', threads=2, phase_timeout_seconds=900, + memory_limit_reason='Explicit Linux execution budget; not a claim that C299 requires this amount.', + verification_scope='Five fresh local objects; four standard named-module kernel replays; full four-module axiom census; two omitted-premise interface controls.', + replay_limit='Not a --fresh replay or rebuild of the full dependency closure.') + save_report(evidence, report) + try: + context = hosted_context(root) + if context != report['context']: + raise RuntimeError('execution context changed since source preflight') + source_before = verify_sources(root, digest) + if source_before != report['source_identity']: + raise RuntimeError('inputs changed since source preflight') + report['packages_before'] = verify_packages(root) + env = dict(os.environ) + env['LEAN_PATH'] = str(build) + os.pathsep + env.get('LEAN_PATH', '') + env['LEAN_NUM_THREADS'] = '2' + launcher = shutil.which('lean') + if launcher is None: + raise RuntimeError('missing Lean launcher') + launcher = Path(launcher).resolve() + report['lean_launcher'] = {'path': str(launcher), **identity(launcher)} + # Resolve the toolchain prefix through the selected launcher, then execute + # the measured toolchain binaries directly; an elan shim is not the runtime. + _, prefix_output, _ = run_phase('runtime-print-prefix', + [str(launcher), '--print-prefix'], formal, env, evidence, report, timeout=30) + prefix = Path(prefix_output.strip()) + if not prefix.is_absolute() or not prefix.is_dir(): + raise RuntimeError('Lean did not return an existing absolute toolchain prefix') + runtimes = {} + for executable in ('lean', 'leanchecker'): + binary = (prefix / 'bin' / executable).resolve() + if not binary.is_file() or not os.access(binary, os.X_OK): + raise RuntimeError(f'missing toolchain runtime: {executable}') + runtimes[executable] = {'path': str(binary), **identity(binary)} + report['runtimes'] = runtimes + report['machine'] = {'platform': platform.platform(), 'machine': platform.machine(), + 'python': platform.python_version()} + _, version, _ = run_phase('runtime-version', [runtimes['lean']['path'], '--version'], + formal, env, evidence, report, timeout=30) + if 'version ' + LEAN_VERSION not in version: + raise RuntimeError('wrong Lean runtime version') + report['lean_version_output'] = version + for module in MODULES: + args = [runtimes['lean']['path'], '-j2', '-M14000'] + if module != 'Lifetime': + args += ['-DwarningAsError=true'] + args += ['-o', str(build / (module + '.olean')), + str(packet / 'project' / (module + '.lean'))] + rec, output, _ = run_phase('build-' + module, args, packet / 'project', env, evidence, report, + build_dir=build, build_module=module) + obj = build / (module + '.olean') + safe_source(obj, evidence) + rec['object'] = identity(obj) + if module == 'CriticalRidgeAxiomAudit': + report['audit'] = validate_audit(output) + if verify_sources(root, digest) != source_before: + raise RuntimeError('inputs changed during build') + save_phase(evidence, report, rec) + built_objects = object_inventory(build) + expected_main = {m + '.olean' for m in MODULES} + allowed_outputs = {m + suffix for m in MODULES for suffix in + ('.olean', '.olean.private', '.olean.server', '.ilean', '.ir')} + if not expected_main <= set(built_objects) or not set(built_objects) <= allowed_outputs: + raise RuntimeError('unexpected complete final object set') + report['objects_after_builds'] = built_objects + save_report(evidence, report) + for module in REPLAY_MODULES: + run_phase('kernel-' + module, [runtimes['leanchecker']['path'], '-v', module], + packet / 'project', env, evidence, report, build_dir=build) + report['negative_classification_errors'] = [] + report['negative_predicates_qualified'] = False + for name in NEGATIVES: + rec = None + try: + rec, output, code = run_phase('negative-' + name, + [runtimes['lean']['path'], '-j2', '-M14000', str(packet / 'negative-project' / (name + '.lean'))], + packet / 'negative-project', env, evidence, report, expected_success=False, + build_dir=build) + validate_negative(name, code, output) + rec['candidate_parser_match'] = True + except RuntimeError as exc: + # run_phase persists its receipt before raising. Preserve a + # rejected spelling/exit and gather the second distinct control. + if rec is None: + rec = report['phase_results'][-1] + if rec['name'] != 'negative-' + name: + raise + rec['candidate_parser_match'] = False + rec['negative_classification_error'] = str(exc) + report['negative_classification_errors'].append({'control': name, 'error': str(exc)}) + if rec.get('object_validation_error') is not None: + save_phase(evidence, report, rec) + raise + rec['intended_missing_premise_rejection'] = False + rec['diagnostic_qualification_pending'] = True + save_phase(evidence, report, rec) + report['packages_after'] = verify_packages(root) + report['source_identity_after'] = verify_sources(root, digest) + if report['source_identity_after'] != source_before: + raise RuntimeError('inputs changed during verification') + for executable, spec in runtimes.items(): + if identity(spec['path']) != {k: spec[k] for k in ('bytes', 'sha256')}: + raise RuntimeError(f'runtime changed: {executable}') + report['objects'] = object_inventory(build) + if report['objects'] != built_objects: + raise RuntimeError('local objects changed during kernel or negative phases') + if report['negative_classification_errors']: + raise RuntimeError('C299 negative diagnostics require source-bound review: ' + + repr(report['negative_classification_errors'])) + require_final_predicates() + report['status'] = 'PASS_HOSTED_C299_EXACT_TARGETS' + report['completed_at'] = now() + print('C299_HOSTED_FORMAL_PASS: scoped formal execution only; scientific effect NONE.', flush=True) + except BaseException as exc: + report['status'], report['failure'] = 'HOLD_NOT_COMPLETED', repr(exc) + raise + finally: + save_report(evidence, report) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('mode', choices=('source', 'execute')) + parser.add_argument('--manifest-sha256', required=True) + args = parser.parse_args() + # Published location is exactly frontiers//c299_hosted_verify.py. + root = Path(__file__).resolve().parents[2] + if args.mode == 'source': + source_only(root, args.manifest_sha256) + else: + execute(root, args.manifest_sha256) + + +if __name__ == '__main__': + main() diff --git a/frontiers/critical_ridge_20261020/engineering/source-attempts/E1_PREDECESSOR_test_c299_hosted_verify.py b/frontiers/critical_ridge_20261020/engineering/source-attempts/E1_PREDECESSOR_test_c299_hosted_verify.py new file mode 100644 index 000000000..e84c120cb --- /dev/null +++ b/frontiers/critical_ridge_20261020/engineering/source-attempts/E1_PREDECESSOR_test_c299_hosted_verify.py @@ -0,0 +1,245 @@ +"""Engineering controls only. No Lean invocation or scientific acceptance.""" +import hashlib +import importlib.util +import inspect +import json +import os +from pathlib import Path +import sys +import tempfile +import unittest + +MODULE_PATH = Path(__file__).with_name('c299_hosted_verify.py') + + +class HostedVerifierTests(unittest.TestCase): + @classmethod + def setUpClass(cls): + if MODULE_PATH.exists(): + spec = importlib.util.spec_from_file_location('c299_hosted_verify', MODULE_PATH) + cls.v = importlib.util.module_from_spec(spec) + spec.loader.exec_module(cls.v) + else: + cls.v = None + + def verifier(self): + self.assertIsNotNone(self.v, 'the scoped verifier is not implemented') + return self.v + + def test_modified_source_bytes_are_rejected(self): + """Dropping size/hash verification would accept the modified file.""" + v = self.verifier() + with tempfile.TemporaryDirectory() as tmp: + path = Path(tmp) / 'Proof.lean' + path.write_bytes(b'abc') + expected = {'bytes': 3, 'sha256': + 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad'} + v.verify_file(path, expected, Path(tmp)) + path.write_bytes(b'abd') + with self.assertRaisesRegex(RuntimeError, 'identity mismatch'): + v.verify_file(path, expected, Path(tmp)) + + def test_audit_cannot_omit_required_target_or_hide_axiom(self): + """Count-only validation would accept a substituted target or sorryAx.""" + v = self.verifier() + good = ( + 'CRITICAL_RIDGE_AUDIT_MODULE A COUNT 1\n' + 'CRITICAL_RIDGE_AUDIT_DECL A.target AXIOMS [propext]\n' + 'CRITICAL_RIDGE_AUDIT_MODULE B COUNT 1\n' + 'CRITICAL_RIDGE_AUDIT_DECL B.target AXIOMS []\n' + 'CRITICAL_RIDGE_AUDIT_STANDARD_ONLY_PASS COUNT 2\n') + got = v.validate_audit(good, modules=('A', 'B'), required=('A.target', 'B.target')) + self.assertEqual(got['declaration_count'], 2) + for bad in (good.replace('B.target', 'B.other'), + good.replace('[propext]', '[sorryAx]'), + good.replace('B.target AXIOMS []', 'A.target AXIOMS []')): + with self.subTest(bad=bad), self.assertRaises(RuntimeError): + v.validate_audit(bad, modules=('A', 'B'), required=('A.target', 'B.target')) + + def test_pinned_lean_multiline_axiom_records(self): + """Actual pinned Lean wraps the unchanged Lifetime axiom arrays.""" + v = self.verifier() + proper = ( + 'CRITICAL_RIDGE_AUDIT_MODULE Lifetime COUNT 1\n' + 'CRITICAL_RIDGE_AUDIT_DECL UniversalLaw.Spec.Lifetime.IsUnrestrictedLeadingCoefficient AXIOMS [propext,\n' + ' Classical.choice,\n' + ' Quot.sound]\n' + 'CRITICAL_RIDGE_AUDIT_STANDARD_ONLY_PASS COUNT 1\n') + args = {'modules': ('Lifetime',), + 'required': ('UniversalLaw.Spec.Lifetime.IsUnrestrictedLeadingCoefficient',)} + self.assertEqual(v.validate_audit(proper, **args)['declaration_count'], 1) + for bad in (proper.replace(' Quot.sound]', ' sorryAx]'), + proper.replace(' Quot.sound]\n', ''), + proper.replace(' Quot.sound]', ' Quot.sound] trailing garbage'), + proper[:proper.index(' Quot.sound]')]): + with self.subTest(bad=bad), self.assertRaises(RuntimeError): + v.validate_audit(bad, **args) + + def test_pending_final_acceptance_fails_closed(self): + """Collecting diagnostics must not silently qualify final acceptance.""" + v = self.verifier() + with self.assertRaisesRegex(RuntimeError, 'PENDING_C299_NEGATIVE_PREDICATES'): + v.require_final_predicates() + + def test_source_preflight_can_collect_before_final_predicate_qualification(self): + """An early final-acceptance gate would block needed actual diagnostics.""" + v = self.verifier() + with tempfile.TemporaryDirectory() as tmp: + root = Path(tmp) + packet = root / v.PREFIX + files = {} + for rel in ([f'project/{m}.lean' for m in v.MODULES] + + [f'negative-project/{m}.lean' for m in v.NEGATIVES]): + path = packet / rel + path.parent.mkdir(parents=True, exist_ok=True) + path.write_bytes(b'-- inert source fixture\n') + files[rel] = {'bytes': 24, 'sha256': hashlib.sha256(b'-- inert source fixture\n').hexdigest()} + upstream = root / 'specifications/lean_statements_20261010/Specifications/Lifetime.lean' + upstream.parent.mkdir(parents=True) + upstream.write_bytes(b'-- inert source fixture\n') + formal = root / 'formal' + formal.mkdir() + (formal / 'lean-toolchain').write_text('leanprover/lean4:v4.34.1\n') + (formal / 'lakefile.toml').write_text('rev = "d13f23b723b8a846827a245b89c10fc7d3f11612"\n') + (formal / 'lake-manifest.json').write_text(json.dumps({'packages': [ + {'name': name, 'rev': rev} for name, rev in v.PACKAGE_PINS.items()]})) + for rel in (v.WORKFLOW, v.PREFIX + '/c299_hosted_verify.py', + v.PREFIX + '/test_c299_hosted_verify.py'): + path = root / rel + path.parent.mkdir(parents=True, exist_ok=True) + path.write_bytes(b'inert support fixture\n') + manifest = {'schema_version': 1, 'scientific_effect': 'NONE', 'files': files, + 'source_origins': {name: {'commit': 'a' * 40, 'path': name + '.lean'} + for name in ('Lifetime', 'TorusTopology', 'MorseFiniteCritical')}} + manifest_path = packet / v.MANIFEST + manifest_path.write_text(json.dumps(manifest)) + digest = hashlib.sha256(manifest_path.read_bytes()).hexdigest() + measured = v.verify_sources(root, digest) + self.assertEqual(measured['files'], files) + with self.assertRaisesRegex(RuntimeError, 'PENDING_C299_NEGATIVE_PREDICATES'): + v.require_final_predicates() + + def test_inactive_draft_negative_sections_reject_forged_fields(self): + """Section/token-only matching would accept unrelated existential fields.""" + v = self.verifier() + # Synthetic prospective rendering only; no actual Lean diagnostic observed. + conclusion = ( + '∃ r, r 0 = 0 ∧ ContDiffAt ℝ 2 r 0 ∧ ' + '(∀ᶠ w in 𝓝 0, ∀ (z : ↥V), (fderiv ℝ f (p + w + ↑(r w))) ↑z = 0) ∧ ' + '∀ (w : E d) (z : ↥V), hessian d f p (w + ↑((fderiv ℝ r 0) w)) ↑z = 0') + target = 'TorusCriticalRidge.exists_negative_partial_gradient_ridge' + for name, expression, premise in ( + ('WithoutCriticality', + 'fun hcritical => ' + target + ' f p V hsmooth hcritical hneg', + 'IsCriticalPoint d f p'), + ('WithoutNegativeDefiniteness', + target + ' f p V hsmooth hcritical', + '(∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0)')): + proper = (name + '.lean:23:2: error: Type mismatch\n ' + expression + + '\nhas type\n ' + premise + ' → ' + conclusion + + '\nbut is expected to have type\n ' + conclusion + '\n') + result = v.validate_negative_draft(name, 1, proper) + self.assertTrue(result['draft_only']) + self.assertFalse(result['actual_diagnostic_observed']) + for code, bad in ( + (0, proper), (-9, proper), + (1, proper.replace(name + '.lean', 'Other.lean')), + (1, proper.replace('ContDiffAt ℝ 2 r 0', 'True')), + (1, proper.replace('fderiv ℝ f', 'fderiv ℝ other')), + (1, proper.replace(premise + ' → ', 'Continuous f → ', 1)), + (1, proper + 'Other.lean:1:1: error: unknown identifier\n'), + (1, proper.replace('but is expected to have type', 'unrelated log tokens'))): + with self.subTest(name=name, code=code, bad=bad), self.assertRaises(RuntimeError): + v.validate_negative_draft(name, code, bad) + + def test_failed_phase_receipt_and_exact_streams_survive_abort(self): + """Raising before persistence would discard the actual failing phase.""" + v = self.verifier() + with tempfile.TemporaryDirectory() as tmp: + evidence = Path(tmp) + report = {'status': 'HOLD_NOT_COMPLETED', 'phase_results': []} + with self.assertRaisesRegex(RuntimeError, 'unexpected exit'): + v.run_phase('deliberate-failure', + [sys.executable, '-c', + 'import sys;sys.stdout.buffer.write(b"out\\xff");sys.stderr.write("err");sys.exit(7)'], + evidence, dict(os.environ), evidence, report, timeout=10) + saved = json.loads((evidence / 'RESULT.json').read_text()) + phase = saved['phase_results'][0] + self.assertEqual(phase['exit_code'], 7) + self.assertEqual(phase['status'], 'FAIL') + self.assertFalse(phase['timed_out']) + self.assertEqual((evidence / 'deliberate-failure.stdout').read_bytes(), b'out\xff') + self.assertEqual((evidence / 'deliberate-failure.stderr').read_bytes(), b'err') + self.assertEqual(phase['stdout_sha256'], hashlib.sha256(b'out\xff').hexdigest()) + self.assertTrue((evidence / 'deliberate-failure.receipt.json').exists()) + + + def test_timeout_preserves_partial_stream_and_receipt(self): + """Timeout handling must not discard the child output or phase result.""" + v = self.verifier() + with tempfile.TemporaryDirectory() as tmp: + evidence = Path(tmp) + report = {'status': 'HOLD_NOT_COMPLETED', 'phase_results': []} + with self.assertRaises(RuntimeError): + v.run_phase('deliberate-timeout', + [sys.executable, '-u', '-c', + 'import time;print("before timeout");time.sleep(3)'], + evidence, dict(os.environ), evidence, report, timeout=0.1) + receipt = json.loads((evidence / 'deliberate-timeout.receipt.json').read_text()) + self.assertTrue(receipt['timed_out']) + self.assertEqual(receipt['status'], 'FAIL') + self.assertEqual((evidence / 'deliberate-timeout.stdout').read_bytes(), b'before timeout\n') + + def test_phase_rejects_imported_object_mutation(self): + """A successful compiler process may not alter a prior input object.""" + v = self.verifier() + self.assertIn('build_dir', inspect.signature(v.run_phase).parameters, 'object input monitoring is not implemented') + with tempfile.TemporaryDirectory() as tmp: + evidence = Path(tmp) + build = evidence / 'objects' + build.mkdir() + (build / 'Lifetime.olean').write_bytes(b'frozen input') + report = {'status': 'HOLD_NOT_COMPLETED', 'phase_results': []} + with self.assertRaises(RuntimeError): + v.run_phase('deliberate-object-mutation', + [sys.executable, '-c', + 'from pathlib import Path;Path("objects/Lifetime.olean").write_bytes(b"changed")'], + evidence, dict(os.environ), evidence, report, + timeout=10, build_dir=build) + receipt = json.loads((evidence / 'deliberate-object-mutation.receipt.json').read_text()) + self.assertEqual(receipt['exit_code'], 0) + self.assertEqual(receipt['status'], 'FAIL') + self.assertIn('Lifetime.olean', receipt['objects_before']) + self.assertNotEqual(receipt['objects_before'], receipt['objects_after']) + self.assertIsNotNone(receipt['object_validation_error']) + + def test_build_allows_only_its_own_outputs(self): + """A build may add its target object, not an unrelated replacement.""" + v = self.verifier() + self.assertTrue(hasattr(v, 'validate_objects'), 'object change validation is not implemented') + previous = {'Lifetime.olean': {'bytes': 2, 'sha256': 'a' * 64}} + good = dict(previous, **{'CriticalRidge.olean': {'bytes': 3, 'sha256': 'b' * 64}}) + v.validate_objects(previous, good, 'CriticalRidge') + for bad in (dict(good, **{'Unrelated.olean': {'bytes': 1, 'sha256': 'c' * 64}}), + previous, + dict(good, **{'Lifetime.olean': {'bytes': 2, 'sha256': 'd' * 64}})): + with self.subTest(bad=bad), self.assertRaises(RuntimeError): + v.validate_objects(previous, bad, 'CriticalRidge') + + def test_amended_phase_receipt_matches_aggregate(self): + """Semantic/object metadata must not exist only in the aggregate receipt.""" + v = self.verifier() + self.assertTrue(hasattr(v, 'save_phase'), 'amended receipt persistence is not implemented') + with tempfile.TemporaryDirectory() as tmp: + evidence = Path(tmp) + report = {'status': 'HOLD_NOT_COMPLETED', 'phase_results': []} + rec, _, _ = v.run_phase('valid-phase', [sys.executable, '-c', 'pass'], + evidence, dict(os.environ), evidence, report, timeout=10) + rec['intended_missing_premise_rejection'] = True + v.save_phase(evidence, report, rec) + self.assertEqual(json.loads((evidence / 'valid-phase.receipt.json').read_text()), + json.loads((evidence / 'RESULT.json').read_text())['phase_results'][0]) + + +if __name__ == '__main__': + unittest.main() diff --git a/frontiers/critical_ridge_20261020/engineering/test_c299_hosted_verify.py b/frontiers/critical_ridge_20261020/engineering/test_c299_hosted_verify.py new file mode 100644 index 000000000..4892e513e --- /dev/null +++ b/frontiers/critical_ridge_20261020/engineering/test_c299_hosted_verify.py @@ -0,0 +1,303 @@ +"""Engineering controls only. No Lean invocation or scientific acceptance.""" +import hashlib +import importlib.util +import inspect +import json +import os +from pathlib import Path +import sys +import tempfile +import unittest + +MODULE_PATH = Path(__file__).with_name('c299_hosted_verify.py') + + +class HostedVerifierTests(unittest.TestCase): + @classmethod + def setUpClass(cls): + if MODULE_PATH.exists(): + spec = importlib.util.spec_from_file_location('c299_hosted_verify', MODULE_PATH) + cls.v = importlib.util.module_from_spec(spec) + spec.loader.exec_module(cls.v) + else: + cls.v = None + + def verifier(self): + self.assertIsNotNone(self.v, 'the scoped verifier is not implemented') + return self.v + + def test_environment_contract_strips_overrides_and_uses_declared_path(self): + """An inherited tool/loader override must not survive or leak its value.""" + v = self.verifier() + self.assertTrue(hasattr(v, 'build_environment'), 'environment contract is missing') + with tempfile.TemporaryDirectory() as tmp: + root = Path(tmp).resolve() + bindir = root / 'bin' + bindir.mkdir() + launcher = bindir / 'lean' + launcher.write_text('# inert launcher locator fixture; never executed\n') + launcher.chmod(0o700) + inherited = {'PATH': str(bindir), 'LEAN_PATH': '/pinned/lake/library', + 'LEAN_NUM_THREADS': '64', 'LEAN_SYSROOT': 'secret-lean-value', + 'LAKE_HOME': 'secret-lake-value', 'LD_PRELOAD': 'secret-loader-value', + 'DYLD_LIBRARY_PATH': 'secret-dyld-value', 'TOKEN': 'secret-token-value'} + env, contract = v.build_environment(inherited, root / 'objects') + self.assertEqual(env['LEAN_PATH'], str(root / 'objects') + os.pathsep + '/pinned/lake/library') + self.assertEqual(env['LEAN_NUM_THREADS'], '2') + self.assertEqual(v.resolve_lean_launcher(env), launcher.resolve()) + self.assertEqual(contract['removed_variable_names'], + ['DYLD_LIBRARY_PATH', 'LAKE_HOME', 'LD_PRELOAD', 'LEAN_NUM_THREADS', 'LEAN_SYSROOT']) + for key in ('LEAN_SYSROOT', 'LAKE_HOME', 'LD_PRELOAD', 'DYLD_LIBRARY_PATH'): + self.assertNotIn(key, env) + self.assertEqual(env['TOKEN'], 'secret-token-value') + self.assertNotIn('secret-', json.dumps(contract)) + empty, _ = v.build_environment({'PATH': str(bindir)}, root / 'empty') + self.assertEqual(empty['LEAN_PATH'], str(root / 'empty')) + + def test_phase_environment_mutation_is_blocked_and_receipted(self): + """A changed search path or injected loader must fail before the child runs.""" + v = self.verifier() + self.assertTrue(hasattr(v, 'build_environment'), 'environment contract is missing') + with tempfile.TemporaryDirectory() as tmp: + root = Path(tmp) + env, contract = v.build_environment(dict(os.environ), root / 'objects') + report = {'status': 'HOLD_NOT_COMPLETED', 'phase_results': [], + 'environment_contract': contract} + rec, output, _ = v.run_phase('environment-valid', + [sys.executable, '-c', 'import os; print(os.environ["LEAN_NUM_THREADS"])'], + root, env, root, report, timeout=10) + self.assertEqual(output.strip(), '2') + self.assertEqual(rec['selected_environment'], contract['selected_environment']) + self.assertEqual(rec['environment_contract_sha256'], contract['sha256']) + self.assertIsNone(rec['environment_validation_error']) + for n, changes in enumerate(({'LEAN_PATH': '/unbound/library'}, {'LD_PRELOAD': 'secret-injection'})): + altered = dict(env, **changes) + with self.assertRaisesRegex(RuntimeError, 'environment'): + v.run_phase('environment-mutated-' + str(n), + [sys.executable, '-c', 'from pathlib import Path;Path("CHILD_RAN").write_text("bad")'], + root, altered, root, report, timeout=10) + receipt = json.loads((root / ('environment-mutated-' + str(n) + '.receipt.json')).read_text()) + self.assertEqual(receipt['status'], 'FAIL') + self.assertIsNone(receipt['exit_code']) + self.assertIsNotNone(receipt['environment_validation_error']) + self.assertFalse((root / 'CHILD_RAN').exists()) + self.assertNotIn('secret-injection', json.dumps(receipt)) + self.assertEqual(receipt, report['phase_results'][-1]) + + def test_modified_source_bytes_are_rejected(self): + """Dropping size/hash verification would accept the modified file.""" + v = self.verifier() + with tempfile.TemporaryDirectory() as tmp: + path = Path(tmp) / 'Proof.lean' + path.write_bytes(b'abc') + expected = {'bytes': 3, 'sha256': + 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad'} + v.verify_file(path, expected, Path(tmp)) + path.write_bytes(b'abd') + with self.assertRaisesRegex(RuntimeError, 'identity mismatch'): + v.verify_file(path, expected, Path(tmp)) + + def test_audit_cannot_omit_required_target_or_hide_axiom(self): + """Count-only validation would accept a substituted target or sorryAx.""" + v = self.verifier() + good = ( + 'CRITICAL_RIDGE_AUDIT_MODULE A COUNT 1\n' + 'CRITICAL_RIDGE_AUDIT_DECL A.target AXIOMS [propext]\n' + 'CRITICAL_RIDGE_AUDIT_MODULE B COUNT 1\n' + 'CRITICAL_RIDGE_AUDIT_DECL B.target AXIOMS []\n' + 'CRITICAL_RIDGE_AUDIT_STANDARD_ONLY_PASS COUNT 2\n') + got = v.validate_audit(good, modules=('A', 'B'), required=('A.target', 'B.target')) + self.assertEqual(got['declaration_count'], 2) + for bad in (good.replace('B.target', 'B.other'), + good.replace('[propext]', '[sorryAx]'), + good.replace('B.target AXIOMS []', 'A.target AXIOMS []')): + with self.subTest(bad=bad), self.assertRaises(RuntimeError): + v.validate_audit(bad, modules=('A', 'B'), required=('A.target', 'B.target')) + + def test_pinned_lean_multiline_axiom_records(self): + """Actual pinned Lean wraps the unchanged Lifetime axiom arrays.""" + v = self.verifier() + proper = ( + 'CRITICAL_RIDGE_AUDIT_MODULE Lifetime COUNT 1\n' + 'CRITICAL_RIDGE_AUDIT_DECL UniversalLaw.Spec.Lifetime.IsUnrestrictedLeadingCoefficient AXIOMS [propext,\n' + ' Classical.choice,\n' + ' Quot.sound]\n' + 'CRITICAL_RIDGE_AUDIT_STANDARD_ONLY_PASS COUNT 1\n') + args = {'modules': ('Lifetime',), + 'required': ('UniversalLaw.Spec.Lifetime.IsUnrestrictedLeadingCoefficient',)} + self.assertEqual(v.validate_audit(proper, **args)['declaration_count'], 1) + for bad in (proper.replace(' Quot.sound]', ' sorryAx]'), + proper.replace(' Quot.sound]\n', ''), + proper.replace(' Quot.sound]', ' Quot.sound] trailing garbage'), + proper[:proper.index(' Quot.sound]')]): + with self.subTest(bad=bad), self.assertRaises(RuntimeError): + v.validate_audit(bad, **args) + + def test_pending_final_acceptance_fails_closed(self): + """Collecting diagnostics must not silently qualify final acceptance.""" + v = self.verifier() + with self.assertRaisesRegex(RuntimeError, 'PENDING_C299_NEGATIVE_PREDICATES'): + v.require_final_predicates() + + def test_source_preflight_can_collect_before_final_predicate_qualification(self): + """An early final-acceptance gate would block needed actual diagnostics.""" + v = self.verifier() + with tempfile.TemporaryDirectory() as tmp: + root = Path(tmp) + packet = root / v.PREFIX + files = {} + for rel in ([f'project/{m}.lean' for m in v.MODULES] + + [f'negative-project/{m}.lean' for m in v.NEGATIVES]): + path = packet / rel + path.parent.mkdir(parents=True, exist_ok=True) + path.write_bytes(b'-- inert source fixture\n') + files[rel] = {'bytes': 24, 'sha256': hashlib.sha256(b'-- inert source fixture\n').hexdigest()} + upstream = root / 'specifications/lean_statements_20261010/Specifications/Lifetime.lean' + upstream.parent.mkdir(parents=True) + upstream.write_bytes(b'-- inert source fixture\n') + formal = root / 'formal' + formal.mkdir() + (formal / 'lean-toolchain').write_text('leanprover/lean4:v4.34.1\n') + (formal / 'lakefile.toml').write_text('rev = "d13f23b723b8a846827a245b89c10fc7d3f11612"\n') + (formal / 'lake-manifest.json').write_text(json.dumps({'packages': [ + {'name': name, 'rev': rev} for name, rev in v.PACKAGE_PINS.items()]})) + for rel in (v.WORKFLOW, v.PREFIX + '/c299_hosted_verify.py', + v.PREFIX + '/test_c299_hosted_verify.py'): + path = root / rel + path.parent.mkdir(parents=True, exist_ok=True) + path.write_bytes(b'inert support fixture\n') + manifest = {'schema_version': 1, 'scientific_effect': 'NONE', 'files': files, + 'source_origins': {name: {'commit': 'a' * 40, 'path': name + '.lean'} + for name in ('Lifetime', 'TorusTopology', 'MorseFiniteCritical')}} + manifest_path = packet / v.MANIFEST + manifest_path.write_text(json.dumps(manifest)) + digest = hashlib.sha256(manifest_path.read_bytes()).hexdigest() + measured = v.verify_sources(root, digest) + self.assertEqual(measured['files'], files) + with self.assertRaisesRegex(RuntimeError, 'PENDING_C299_NEGATIVE_PREDICATES'): + v.require_final_predicates() + + def test_inactive_draft_negative_sections_reject_forged_fields(self): + """Section/token-only matching would accept unrelated existential fields.""" + v = self.verifier() + # Synthetic prospective rendering only; no actual Lean diagnostic observed. + conclusion = ( + '∃ r, r 0 = 0 ∧ ContDiffAt ℝ 2 r 0 ∧ ' + '(∀ᶠ w in 𝓝 0, ∀ (z : ↥V), (fderiv ℝ f (p + w + ↑(r w))) ↑z = 0) ∧ ' + '∀ (w : E d) (z : ↥V), hessian d f p (w + ↑((fderiv ℝ r 0) w)) ↑z = 0') + target = 'TorusCriticalRidge.exists_negative_partial_gradient_ridge' + for name, expression, premise in ( + ('WithoutCriticality', + 'fun hcritical => ' + target + ' f p V hsmooth hcritical hneg', + 'IsCriticalPoint d f p'), + ('WithoutNegativeDefiniteness', + target + ' f p V hsmooth hcritical', + '(∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0)')): + proper = (name + '.lean:23:2: error: Type mismatch\n ' + expression + + '\nhas type\n ' + premise + ' → ' + conclusion + + '\nbut is expected to have type\n ' + conclusion + '\n') + result = v.validate_negative_draft(name, 1, proper) + self.assertTrue(result['draft_only']) + self.assertFalse(result['actual_diagnostic_observed']) + for code, bad in ( + (0, proper), (-9, proper), + (1, proper.replace(name + '.lean', 'Other.lean')), + (1, proper.replace('ContDiffAt ℝ 2 r 0', 'True')), + (1, proper.replace('fderiv ℝ f', 'fderiv ℝ other')), + (1, proper.replace(premise + ' → ', 'Continuous f → ', 1)), + (1, proper + 'Other.lean:1:1: error: unknown identifier\n'), + (1, proper.replace('but is expected to have type', 'unrelated log tokens'))): + with self.subTest(name=name, code=code, bad=bad), self.assertRaises(RuntimeError): + v.validate_negative_draft(name, code, bad) + + def test_failed_phase_receipt_and_exact_streams_survive_abort(self): + """Raising before persistence would discard the actual failing phase.""" + v = self.verifier() + with tempfile.TemporaryDirectory() as tmp: + evidence = Path(tmp) + report = {'status': 'HOLD_NOT_COMPLETED', 'phase_results': []} + with self.assertRaisesRegex(RuntimeError, 'unexpected exit'): + v.run_phase('deliberate-failure', + [sys.executable, '-c', + 'import sys;sys.stdout.buffer.write(b"out\\xff");sys.stderr.write("err");sys.exit(7)'], + evidence, dict(os.environ), evidence, report, timeout=10) + saved = json.loads((evidence / 'RESULT.json').read_text()) + phase = saved['phase_results'][0] + self.assertEqual(phase['exit_code'], 7) + self.assertEqual(phase['status'], 'FAIL') + self.assertFalse(phase['timed_out']) + self.assertEqual((evidence / 'deliberate-failure.stdout').read_bytes(), b'out\xff') + self.assertEqual((evidence / 'deliberate-failure.stderr').read_bytes(), b'err') + self.assertEqual(phase['stdout_sha256'], hashlib.sha256(b'out\xff').hexdigest()) + self.assertTrue((evidence / 'deliberate-failure.receipt.json').exists()) + + + def test_timeout_preserves_partial_stream_and_receipt(self): + """Timeout handling must not discard the child output or phase result.""" + v = self.verifier() + with tempfile.TemporaryDirectory() as tmp: + evidence = Path(tmp) + report = {'status': 'HOLD_NOT_COMPLETED', 'phase_results': []} + with self.assertRaises(RuntimeError): + v.run_phase('deliberate-timeout', + [sys.executable, '-u', '-c', + 'import time;print("before timeout");time.sleep(3)'], + evidence, dict(os.environ), evidence, report, timeout=0.1) + receipt = json.loads((evidence / 'deliberate-timeout.receipt.json').read_text()) + self.assertTrue(receipt['timed_out']) + self.assertEqual(receipt['status'], 'FAIL') + self.assertEqual((evidence / 'deliberate-timeout.stdout').read_bytes(), b'before timeout\n') + + def test_phase_rejects_imported_object_mutation(self): + """A successful compiler process may not alter a prior input object.""" + v = self.verifier() + self.assertIn('build_dir', inspect.signature(v.run_phase).parameters, 'object input monitoring is not implemented') + with tempfile.TemporaryDirectory() as tmp: + evidence = Path(tmp) + build = evidence / 'objects' + build.mkdir() + (build / 'Lifetime.olean').write_bytes(b'frozen input') + report = {'status': 'HOLD_NOT_COMPLETED', 'phase_results': []} + with self.assertRaises(RuntimeError): + v.run_phase('deliberate-object-mutation', + [sys.executable, '-c', + 'from pathlib import Path;Path("objects/Lifetime.olean").write_bytes(b"changed")'], + evidence, dict(os.environ), evidence, report, + timeout=10, build_dir=build) + receipt = json.loads((evidence / 'deliberate-object-mutation.receipt.json').read_text()) + self.assertEqual(receipt['exit_code'], 0) + self.assertEqual(receipt['status'], 'FAIL') + self.assertIn('Lifetime.olean', receipt['objects_before']) + self.assertNotEqual(receipt['objects_before'], receipt['objects_after']) + self.assertIsNotNone(receipt['object_validation_error']) + + def test_build_allows_only_its_own_outputs(self): + """A build may add its target object, not an unrelated replacement.""" + v = self.verifier() + self.assertTrue(hasattr(v, 'validate_objects'), 'object change validation is not implemented') + previous = {'Lifetime.olean': {'bytes': 2, 'sha256': 'a' * 64}} + good = dict(previous, **{'CriticalRidge.olean': {'bytes': 3, 'sha256': 'b' * 64}}) + v.validate_objects(previous, good, 'CriticalRidge') + for bad in (dict(good, **{'Unrelated.olean': {'bytes': 1, 'sha256': 'c' * 64}}), + previous, + dict(good, **{'Lifetime.olean': {'bytes': 2, 'sha256': 'd' * 64}})): + with self.subTest(bad=bad), self.assertRaises(RuntimeError): + v.validate_objects(previous, bad, 'CriticalRidge') + + def test_amended_phase_receipt_matches_aggregate(self): + """Semantic/object metadata must not exist only in the aggregate receipt.""" + v = self.verifier() + self.assertTrue(hasattr(v, 'save_phase'), 'amended receipt persistence is not implemented') + with tempfile.TemporaryDirectory() as tmp: + evidence = Path(tmp) + report = {'status': 'HOLD_NOT_COMPLETED', 'phase_results': []} + rec, _, _ = v.run_phase('valid-phase', [sys.executable, '-c', 'pass'], + evidence, dict(os.environ), evidence, report, timeout=10) + rec['intended_missing_premise_rejection'] = True + v.save_phase(evidence, report, rec) + self.assertEqual(json.loads((evidence / 'valid-phase.receipt.json').read_text()), + json.loads((evidence / 'RESULT.json').read_text())['phase_results'][0]) + + +if __name__ == '__main__': + unittest.main() diff --git a/frontiers/critical_ridge_20261020/execution/author/CANDIDATE2.diff b/frontiers/critical_ridge_20261020/execution/author/CANDIDATE2.diff new file mode 100644 index 000000000..b839da9f9 --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/author/CANDIDATE2.diff @@ -0,0 +1,23 @@ +--- candidate1/CriticalRidge.lean ++++ candidate2/CriticalRidge.lean +@@ -110,7 +110,10 @@ + have hadd : HasFDerivAt (fun q : E d × V => p + ridgeAddition V q) + (ridgeAddition V) 0 := by + simpa using ((ridgeAddition V).hasFDerivAt.const_add p) +- have hcomp := hDp.comp (0 : E d × V) hadd ++ have hDp' : HasFDerivAt (fderiv ℝ f) (fderiv ℝ (fderiv ℝ f) p) ++ (p + ridgeAddition V (0 : E d × V)) := by ++ simpa only [map_zero, add_zero] using hDp ++ have hcomp := hDp'.comp (0 : E d × V) hadd + simpa only [negativePartialGradient, map_zero, add_zero] using + ((restrictCovector V).hasFDerivAt.comp (0 : E d × V) hcomp) + +@@ -138,7 +141,7 @@ + ContinuousLinearMap.inr ℝ (E d) V = negativeHessianBlock f p V := by + rw [hDG.fderiv] + ext v z +- rfl ++ simp [D, negativeHessianBlock, ridgeAddition, restrictCovector] + have hinv : (fderiv ℝ G (0 : E d × V) ∘L + ContinuousLinearMap.inr ℝ (E d) V).IsInvertible := by + rw [hblock] diff --git a/frontiers/critical_ridge_20261020/execution/author/CANDIDATE2_FREEZE.json b/frontiers/critical_ridge_20261020/execution/author/CANDIDATE2_FREEZE.json new file mode 100644 index 000000000..6c2cad917 --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/author/CANDIDATE2_FREEZE.json @@ -0,0 +1,23 @@ +{ + "schema": "c299-candidate2-freeze-v1", + "created_utc": "2026-10-20T13:59:11.371819+00:00", + "source": "project/CriticalRidge.lean", + "bytes": 8149, + "sha256": "b3c22e590f761953ba322ad2903978e3982179204ad5c4a166dffc5fa1558322", + "source_snapshot": "execution/author/source-attempts/b3c22e590f761953ba322ad2903978e3982179204ad5c4a166dffc5fa1558322.lean", + "predecessor_sha256": "729b57030c9d595b6ee9061b7cc6c730a6de713044ab0f7509637ed029771375", + "predecessor_receipt": "execution/author/runs/20261020T134843Z-89c13163/RECEIPT.json", + "predecessor_receipt_sha256": "6db1db80b14045d5b964658b76aa620fa512a960aab1e767e853cb7a97e92c45", + "predecessor_result": "600.041933625 second native import timeout; no diagnostics; no object; not a proof verdict", + "diff": "execution/author/CANDIDATE2.diff", + "diff_sha256": "ae861fed21ed6ad6a8f24daf974971cbe200173663e880a1d5f8c5d13273fe40", + "changes": [ + "Explicit basepoint transport p + ridgeAddition V 0 = p before derivative composition", + "Explicit zero-addition simplification in negative partial derivative block identity" + ], + "public_binder_changes": false, + "public_declaration_count": 9, + "lean_execution_on_candidate2": false, + "native_retry_performed": false, + "scientific_effect": "NONE" +} diff --git a/frontiers/critical_ridge_20261020/execution/author/PROOF.md b/frontiers/critical_ridge_20261020/execution/author/PROOF.md new file mode 100644 index 000000000..ee627939e --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/author/PROOF.md @@ -0,0 +1,70 @@ +# C299 finite proof obligation and argument + +This is the author explanation of the bounded partial-gradient ridge unit, +following the conventional route in Math-#487 comment 6292079965. It is not +independent review or evidence of a successful Lean execution. + +Let `E = E d`, let `f : E → ℝ` satisfy the literal `IsSmooth d f`, let `p` +satisfy the literal `IsCriticalPoint d f p`, and let `V` be any real linear +subspace on which the literal Hessian is strictly negative on nonzero vectors. +No nonzero-dimension hypothesis is made. + +Write `i : V →L[ℝ] E` for inclusion, `R` for the continuous linear restriction +map from ambient continuous covectors to continuous covectors on `V`, and +`H = fderiv ℝ (fderiv ℝ f) p`. C293 proves pointwise equality between this +bilinear map and the literal `iteratedFDeriv` Hessian. + +Define + +``` +G : E × V → (V →L[ℝ] ℝ) +G(w,v) = R (Df(p + w + i(v))) +C : V →L[ℝ] (V →L[ℝ] ℝ) +C(v)(z) = H(i(v))(i(z)). +``` + +If `C(v)=0`, evaluation at `v` gives `H(i(v))(i(v))=0`. Strict negativity +forces `i(v)=0`, and inclusion is injective. Hence `C` is injective. The Riesz +continuous linear equivalence `J : V ≃L[ℝ] (V →L[ℝ] ℝ)` turns `C` into the +injective endomorphism `J.symm ∘ C`. Finite dimensionality makes that +endomorphism an equivalence, and composing with `J` supplies an exact +continuous linear equivalence whose forward map is `C`. This argument also +works for `V = ⊥`; no nonempty sphere or coercivity lower bound is used. + +Literal smoothness at order three gives `ContDiff ℝ 2 (fderiv ℝ f)`. +Composition with affine addition and the fixed restriction map gives C2 of +`G`. Its derivative at zero is + +``` +DG(0)(w,v) = R (H(w + i(v))). +``` + +Consequently its derivative in its second argument is exactly `C`, with the +continuous inverse constructed above. The actual pinned smooth +`ContDiffAt.implicitFunction` theorem supplies one function `r : E → V`, +C2 at zero, with `r 0 = 0`, and + +``` +G(w, r w) = G(0,0) +``` + +eventually near zero. Literal criticality says `Df(p)=0`, so the right side +is zero. Evaluating this covector equality on each `z : V` is the desired +eventual restricted-gradient equation. + +Finally, `w ↦ (w,r w)` has derivative `w ↦ (w, Dr(0)w)` at zero. The +composite `w ↦ G(w,r w)` agrees with the constant zero map in a neighborhood, +so its derivative is zero. Uniqueness of the Fréchet derivative, followed by +evaluation at `w : E` and `z : V`, gives + +``` +hessian d f p (w + (fderiv ℝ r 0 w : E)) z = 0. +``` + +All four conclusions concern the same selected implicit function. Restriction +of the ambient parameter to a supplied complementary positive subspace yields +the ridge needed in the subsequent paper argument without assuming the +complement is orthogonal. This unit does not yet prove reduced-Hessian +positivity, a common C2 domain for later paths, uniform Hessian bounds, +concavity, a tube or neighborhood basis, any quotient statement, or the +discharge of C294's closed-level LPC premise. diff --git a/frontiers/critical_ridge_20261020/execution/author/runs/20261020T134843Z-89c13163/RECEIPT.json b/frontiers/critical_ridge_20261020/execution/author/runs/20261020T134843Z-89c13163/RECEIPT.json new file mode 100644 index 000000000..4d8a561a9 --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/author/runs/20261020T134843Z-89c13163/RECEIPT.json @@ -0,0 +1,12 @@ +{ + "started_utc": "2026-10-20T13:48:43.888892+00:00", + "contract_sha256": "9290514ab8681608099db0ff8e8be7915c44cc4098fd4b6164542c2bdd80185f", + "child_pid": 62829, + "returncode": -15, + "timed_out": true, + "seconds": 600.041933625, + "ended_utc": "2026-10-20T13:58:43.933989+00:00", + "source_unchanged": true, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" +} diff --git a/frontiers/critical_ridge_20261020/execution/author/source-attempts/729b57030c9d595b6ee9061b7cc6c730a6de713044ab0f7509637ed029771375.lean b/frontiers/critical_ridge_20261020/execution/author/source-attempts/729b57030c9d595b6ee9061b7cc6c730a6de713044ab0f7509637ed029771375.lean new file mode 100644 index 000000000..f340ca4be --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/author/source-attempts/729b57030c9d595b6ee9061b7cc6c730a6de713044ab0f7509637ed029771375.lean @@ -0,0 +1,180 @@ +import MorseFiniteCritical +import Mathlib.Analysis.Calculus.ImplicitContDiff + +/-! +# The actual negative partial-gradient ridge + +C299 constructs a local ridge from literal smoothness, criticality and a +negative definite restriction of the literal Hessian. The parameter is ambient +`E d`; it may subsequently be restricted to the supplied positive complement. +No complement is assumed orthogonal. No ridge, inverse certificate, Morse chart, +closed-superlevel local path connectivity or finite event list is an input. + +The construction follows the reviewed direct-ridge paper published at +Math-#487, issuecomment-6292079965. This module covers only its partial-gradient +implicit-function step and differentiated equation. Reduced positivity, +uniform signs, fiber concavity, tubes, paths, the quotient and full LPC remain +separate obligations. +-/ + +noncomputable section + +open Set Topology +open UniversalLaw.Spec.Lifetime TorusMorseFinite + +namespace TorusCriticalRidge + +variable {d : ℕ} + +/-- Restrict an ambient continuous covector to the literal subspace. -/ +def restrictCovector (V : Submodule ℝ (E d)) : + (E d →L[ℝ] ℝ) →L[ℝ] (V →L[ℝ] ℝ) := + (ContinuousLinearMap.compL ℝ V (E d) ℝ).flip V.subtypeL + +/-- Addition of an ambient parameter and a vector in the negative subspace. -/ +def ridgeAddition (V : Submodule ℝ (E d)) : + (E d × V) →L[ℝ] E d := + ContinuousLinearMap.fst ℝ (E d) V + + V.subtypeL.comp (ContinuousLinearMap.snd ℝ (E d) V) + +/-- The covector-valued partial gradient, with a fixed base point. -/ +def negativePartialGradient (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (q : E d × V) : V →L[ℝ] ℝ := + restrictCovector V (fderiv ℝ f (p + ridgeAddition V q)) + +/-- The actual Hessian restricted to both negative-subspace arguments. -/ +def negativeHessianBlock (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) : V →L[ℝ] (V →L[ℝ] ℝ) := + (restrictCovector V).comp + ((fderiv ℝ (fderiv ℝ f) p).comp V.subtypeL) + +theorem negativeHessianBlock_apply (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (v z : V) : + negativeHessianBlock f p V v z = hessian d f p v z := by + rw [literal_hessian_eq_fderiv] + rfl + +/-- Negative definiteness supplies the exact continuous inverse required by IFT. +This includes the zero subspace, without a unit-sphere argument. -/ +theorem negativeHessianBlock_isInvertible (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) + (hneg : ∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0) : + (negativeHessianBlock f p V).IsInvertible := by + let C := negativeHessianBlock f p V + have hz : ∀ v : V, C v = 0 → v = 0 := by + intro v hv + by_contra hne + have hvne : (v : E d) ≠ 0 := by + intro h + apply hne + exact Subtype.ext h + have hn := hneg v v.property hvne + have he : hessian d f p v v = 0 := by + have h := congrArg (fun k : V →L[ℝ] ℝ => k v) hv + simpa only [C, negativeHessianBlock_apply, ContinuousLinearMap.zero_apply] using h + linarith + have hC : Function.Injective C := by + intro u v huv + apply sub_eq_zero.mp + apply hz + simp [map_sub, huv] + let J : V ≃L[ℝ] (V →L[ℝ] ℝ) := + (InnerProductSpace.toDual ℝ V).toContinuousLinearEquiv + let A : V →L[ℝ] V := J.symm.toContinuousLinearMap.comp C + have hA : Function.Injective A := J.symm.injective.comp hC + let eA : V ≃L[ℝ] V := + (LinearEquiv.ofInjectiveEndo A.toLinearMap hA).toContinuousLinearEquiv + refine ⟨eA.trans J, ?_⟩ + apply ContinuousLinearMap.ext + intro v + change J (J.symm (C v)) = C v + exact J.apply_symm_apply (C v) + +theorem negativePartialGradient_contDiff (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (hsmooth : IsSmooth d f) : + ContDiff ℝ 2 (negativePartialGradient f p V) := by + have hD : ContDiff ℝ 2 (fderiv ℝ f) := + (contDiff_succ_iff_fderiv.mp (hsmooth 3)).2.2 + exact (restrictCovector V).contDiff.comp + (hD.comp (contDiff_const.add (ridgeAddition V).contDiff)) + +theorem negativePartialGradient_hasFDerivAt (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (hsmooth : IsSmooth d f) : + HasFDerivAt (negativePartialGradient f p V) + ((restrictCovector V).comp + ((fderiv ℝ (fderiv ℝ f) p).comp (ridgeAddition V))) + (0 : E d × V) := by + have hD : ContDiff ℝ 1 (fderiv ℝ f) := + (contDiff_succ_iff_fderiv.mp (hsmooth 2)).2.2 + have hDp := (hD.differentiable (by norm_num) p).hasFDerivAt + have hadd : HasFDerivAt (fun q : E d × V => p + ridgeAddition V q) + (ridgeAddition V) 0 := by + simpa using ((ridgeAddition V).hasFDerivAt.const_add p) + have hcomp := hDp.comp (0 : E d × V) hadd + simpa only [negativePartialGradient, map_zero, add_zero] using + ((restrictCovector V).hasFDerivAt.comp (0 : E d × V) hcomp) + +/-- One actual ridge and all four conclusions for the same chosen function. +The equation is in the actual ambient function and actual subspace. -/ +theorem exists_negative_partial_gradient_ridge + (f : E d → ℝ) (p : E d) (V : Submodule ℝ (E d)) + (hsmooth : IsSmooth d f) (hcritical : IsCriticalPoint d f p) + (hneg : ∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0) : + ∃ r : E d → V, + r 0 = 0 ∧ + ContDiffAt ℝ 2 r 0 ∧ + (∀ᶠ w in 𝓝 (0 : E d), ∀ z : V, + fderiv ℝ f (p + w + (r w : E d)) z = 0) ∧ + (∀ (w : E d) (z : V), + hessian d f p (w + (fderiv ℝ r 0 w : E d)) z = 0) := by + let G := negativePartialGradient f p V + let D := (restrictCovector V).comp + ((fderiv ℝ (fderiv ℝ f) p).comp (ridgeAddition V)) + have hG : ContDiffAt ℝ 2 G (0 : E d × V) := + (negativePartialGradient_contDiff f p V hsmooth).contDiffAt + have hDG : HasFDerivAt G D (0 : E d × V) := + negativePartialGradient_hasFDerivAt f p V hsmooth + have hblock : fderiv ℝ G (0 : E d × V) ∘L + ContinuousLinearMap.inr ℝ (E d) V = negativeHessianBlock f p V := by + rw [hDG.fderiv] + ext v z + rfl + have hinv : (fderiv ℝ G (0 : E d × V) ∘L + ContinuousLinearMap.inr ℝ (E d) V).IsInvertible := by + rw [hblock] + exact negativeHessianBlock_isInvertible f p V hneg + let r : E d → V := hG.implicitFunction (by norm_num) hinv + have hr0 : r 0 = 0 := hG.implicitFunction_apply_self (by norm_num) hinv + have hrC : ContDiffAt ℝ 2 r 0 := + hG.contDiffAt_implicitFunction (by norm_num) hinv + have hG0 : G (0 : E d × V) = 0 := by + ext z + simp [G, negativePartialGradient, ridgeAddition, restrictCovector, + show fderiv ℝ f p = 0 from hcritical] + have heq : (fun w => G (w, r w)) =ᶠ[𝓝 (0 : E d)] + (fun _ => (0 : V →L[ℝ] ℝ)) := by + simpa only [hG0] using hG.eventually_apply_implicitFunction (by norm_num) hinv + refine ⟨r, hr0, hrC, ?_, ?_⟩ + · filter_upwards [heq] with w hw + intro z + have hz := congrArg (fun k : V →L[ℝ] ℝ => k z) hw + simpa [G, negativePartialGradient, ridgeAddition, restrictCovector, add_assoc] using hz + · have hdr : HasFDerivAt r (fderiv ℝ r 0) 0 := + (hrC.differentiableAt (by norm_num)).hasFDerivAt + have hgraph : HasFDerivAt (fun w : E d => (w, r w)) + ((ContinuousLinearMap.id ℝ (E d)).prod (fderiv ℝ r 0)) 0 := + (hasFDerivAt_id (0 : E d)).prodMk hdr + have hzero : HasFDerivAt (fun w : E d => G (w, r w)) + (0 : E d →L[ℝ] (V →L[ℝ] ℝ)) 0 := + (hasFDerivAt_const (0 : E d) (0 : V →L[ℝ] ℝ)).congr_of_eventuallyEq heq + have hchain : HasFDerivAt (fun w : E d => G (w, r w)) + (D.comp ((ContinuousLinearMap.id ℝ (E d)).prod (fderiv ℝ r 0))) 0 := by + have hd : HasFDerivAt G D ((0 : E d), r 0) := by + simpa only [hr0] using hDG + exact hd.comp 0 hgraph + have hid := hchain.unique hzero + intro w z + have h := congrArg (fun C : E d →L[ℝ] (V →L[ℝ] ℝ) => C w z) hid + simpa [D, restrictCovector, ridgeAddition, literal_hessian_eq_fderiv] using h + +end TorusCriticalRidge diff --git a/frontiers/critical_ridge_20261020/negative-project/WithoutCriticality.lean b/frontiers/critical_ridge_20261020/negative-project/WithoutCriticality.lean new file mode 100644 index 000000000..a64ab031b --- /dev/null +++ b/frontiers/critical_ridge_20261020/negative-project/WithoutCriticality.lean @@ -0,0 +1,22 @@ +import CriticalRidge + +/-! Intentionally ill-typed C299 interface control. Draft, not executed. +The actual theorem is applied with one missing premise; only the intended +function-to-existential type mismatch qualifies. Syntax/import/resource failures +do not qualify. This is not a mathematical counterexample. -/ + +open Set Filter Topology +open UniversalLaw.Spec.Lifetime + +example {d : ℕ} (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (hsmooth : IsSmooth d f) + (hneg : ∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0) : + ∃ r : E d → V, + r 0 = 0 ∧ + ContDiffAt ℝ 2 r 0 ∧ + (∀ᶠ w in 𝓝 (0 : E d), ∀ z : V, + fderiv ℝ f (p + w + (r w : E d)) z = 0) ∧ + (∀ (w : E d) (z : V), + hessian d f p (w + (fderiv ℝ r 0 w : E d)) z = 0) := by + exact (fun hcritical : IsCriticalPoint d f p => + TorusCriticalRidge.exists_negative_partial_gradient_ridge f p V hsmooth hcritical hneg) diff --git a/frontiers/critical_ridge_20261020/negative-project/WithoutNegativeDefiniteness.lean b/frontiers/critical_ridge_20261020/negative-project/WithoutNegativeDefiniteness.lean new file mode 100644 index 000000000..daa46cbce --- /dev/null +++ b/frontiers/critical_ridge_20261020/negative-project/WithoutNegativeDefiniteness.lean @@ -0,0 +1,21 @@ +import CriticalRidge + +/-! Intentionally ill-typed C299 interface control. Draft, not executed. +The actual theorem is applied with one missing premise; only the intended +function-to-existential type mismatch qualifies. Syntax/import/resource failures +do not qualify. This is not a mathematical counterexample. -/ + +open Set Filter Topology +open UniversalLaw.Spec.Lifetime + +example {d : ℕ} (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (hsmooth : IsSmooth d f) + (hcritical : IsCriticalPoint d f p) : + ∃ r : E d → V, + r 0 = 0 ∧ + ContDiffAt ℝ 2 r 0 ∧ + (∀ᶠ w in 𝓝 (0 : E d), ∀ z : V, + fderiv ℝ f (p + w + (r w : E d)) z = 0) ∧ + (∀ (w : E d) (z : V), + hessian d f p (w + (fderiv ℝ r 0 w : E d)) z = 0) := by + exact TorusCriticalRidge.exists_negative_partial_gradient_ridge f p V hsmooth hcritical diff --git a/frontiers/critical_ridge_20261020/project/CriticalRidge.lean b/frontiers/critical_ridge_20261020/project/CriticalRidge.lean new file mode 100644 index 000000000..f8bd3cb14 --- /dev/null +++ b/frontiers/critical_ridge_20261020/project/CriticalRidge.lean @@ -0,0 +1,183 @@ +import MorseFiniteCritical +import Mathlib.Analysis.Calculus.ImplicitContDiff + +/-! +# The actual negative partial-gradient ridge + +C299 constructs a local ridge from literal smoothness, criticality and a +negative definite restriction of the literal Hessian. The parameter is ambient +`E d`; it may subsequently be restricted to the supplied positive complement. +No complement is assumed orthogonal. No ridge, inverse certificate, Morse chart, +closed-superlevel local path connectivity or finite event list is an input. + +The construction follows the reviewed direct-ridge paper published at +Math-#487, issuecomment-6292079965. This module covers only its partial-gradient +implicit-function step and differentiated equation. Reduced positivity, +uniform signs, fiber concavity, tubes, paths, the quotient and full LPC remain +separate obligations. +-/ + +noncomputable section + +open Set Topology +open UniversalLaw.Spec.Lifetime TorusMorseFinite + +namespace TorusCriticalRidge + +variable {d : ℕ} + +/-- Restrict an ambient continuous covector to the literal subspace. -/ +def restrictCovector (V : Submodule ℝ (E d)) : + (E d →L[ℝ] ℝ) →L[ℝ] (V →L[ℝ] ℝ) := + (ContinuousLinearMap.compL ℝ V (E d) ℝ).flip V.subtypeL + +/-- Addition of an ambient parameter and a vector in the negative subspace. -/ +def ridgeAddition (V : Submodule ℝ (E d)) : + (E d × V) →L[ℝ] E d := + ContinuousLinearMap.fst ℝ (E d) V + + V.subtypeL.comp (ContinuousLinearMap.snd ℝ (E d) V) + +/-- The covector-valued partial gradient, with a fixed base point. -/ +def negativePartialGradient (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (q : E d × V) : V →L[ℝ] ℝ := + restrictCovector V (fderiv ℝ f (p + ridgeAddition V q)) + +/-- The actual Hessian restricted to both negative-subspace arguments. -/ +def negativeHessianBlock (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) : V →L[ℝ] (V →L[ℝ] ℝ) := + (restrictCovector V).comp + ((fderiv ℝ (fderiv ℝ f) p).comp V.subtypeL) + +theorem negativeHessianBlock_apply (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (v z : V) : + negativeHessianBlock f p V v z = hessian d f p v z := by + rw [literal_hessian_eq_fderiv] + rfl + +/-- Negative definiteness supplies the exact continuous inverse required by IFT. +This includes the zero subspace, without a unit-sphere argument. -/ +theorem negativeHessianBlock_isInvertible (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) + (hneg : ∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0) : + (negativeHessianBlock f p V).IsInvertible := by + let C := negativeHessianBlock f p V + have hz : ∀ v : V, C v = 0 → v = 0 := by + intro v hv + by_contra hne + have hvne : (v : E d) ≠ 0 := by + intro h + apply hne + exact Subtype.ext h + have hn := hneg v v.property hvne + have he : hessian d f p v v = 0 := by + have h := congrArg (fun k : V →L[ℝ] ℝ => k v) hv + simpa only [C, negativeHessianBlock_apply, ContinuousLinearMap.zero_apply] using h + linarith + have hC : Function.Injective C := by + intro u v huv + apply sub_eq_zero.mp + apply hz + simp [map_sub, huv] + let J : V ≃L[ℝ] (V →L[ℝ] ℝ) := + (InnerProductSpace.toDual ℝ V).toContinuousLinearEquiv + let A : V →L[ℝ] V := J.symm.toContinuousLinearMap.comp C + have hA : Function.Injective A := J.symm.injective.comp hC + let eA : V ≃L[ℝ] V := + (LinearEquiv.ofInjectiveEndo A.toLinearMap hA).toContinuousLinearEquiv + refine ⟨eA.trans J, ?_⟩ + apply ContinuousLinearMap.ext + intro v + change J (J.symm (C v)) = C v + exact J.apply_symm_apply (C v) + +theorem negativePartialGradient_contDiff (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (hsmooth : IsSmooth d f) : + ContDiff ℝ 2 (negativePartialGradient f p V) := by + have hD : ContDiff ℝ 2 (fderiv ℝ f) := + (contDiff_succ_iff_fderiv.mp (hsmooth 3)).2.2 + exact (restrictCovector V).contDiff.comp + (hD.comp (contDiff_const.add (ridgeAddition V).contDiff)) + +theorem negativePartialGradient_hasFDerivAt (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (hsmooth : IsSmooth d f) : + HasFDerivAt (negativePartialGradient f p V) + ((restrictCovector V).comp + ((fderiv ℝ (fderiv ℝ f) p).comp (ridgeAddition V))) + (0 : E d × V) := by + have hD : ContDiff ℝ 1 (fderiv ℝ f) := + (contDiff_succ_iff_fderiv.mp (hsmooth 2)).2.2 + have hDp := (hD.differentiable (by norm_num) p).hasFDerivAt + have hadd : HasFDerivAt (fun q : E d × V => p + ridgeAddition V q) + (ridgeAddition V) 0 := by + simpa using ((ridgeAddition V).hasFDerivAt.const_add p) + have hDp' : HasFDerivAt (fderiv ℝ f) (fderiv ℝ (fderiv ℝ f) p) + (p + ridgeAddition V (0 : E d × V)) := by + simpa only [map_zero, add_zero] using hDp + have hcomp := hDp'.comp (0 : E d × V) hadd + simpa only [negativePartialGradient, map_zero, add_zero] using + ((restrictCovector V).hasFDerivAt.comp (0 : E d × V) hcomp) + +/-- One actual ridge and all four conclusions for the same chosen function. +The equation is in the actual ambient function and actual subspace. -/ +theorem exists_negative_partial_gradient_ridge + (f : E d → ℝ) (p : E d) (V : Submodule ℝ (E d)) + (hsmooth : IsSmooth d f) (hcritical : IsCriticalPoint d f p) + (hneg : ∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0) : + ∃ r : E d → V, + r 0 = 0 ∧ + ContDiffAt ℝ 2 r 0 ∧ + (∀ᶠ w in 𝓝 (0 : E d), ∀ z : V, + fderiv ℝ f (p + w + (r w : E d)) z = 0) ∧ + (∀ (w : E d) (z : V), + hessian d f p (w + (fderiv ℝ r 0 w : E d)) z = 0) := by + let G := negativePartialGradient f p V + let D := (restrictCovector V).comp + ((fderiv ℝ (fderiv ℝ f) p).comp (ridgeAddition V)) + have hG : ContDiffAt ℝ 2 G (0 : E d × V) := + (negativePartialGradient_contDiff f p V hsmooth).contDiffAt + have hDG : HasFDerivAt G D (0 : E d × V) := + negativePartialGradient_hasFDerivAt f p V hsmooth + have hblock : fderiv ℝ G (0 : E d × V) ∘L + ContinuousLinearMap.inr ℝ (E d) V = negativeHessianBlock f p V := by + rw [hDG.fderiv] + ext v z + simp [D, negativeHessianBlock, ridgeAddition, restrictCovector] + have hinv : (fderiv ℝ G (0 : E d × V) ∘L + ContinuousLinearMap.inr ℝ (E d) V).IsInvertible := by + rw [hblock] + exact negativeHessianBlock_isInvertible f p V hneg + let r : E d → V := hG.implicitFunction (by norm_num) hinv + have hr0 : r 0 = 0 := hG.implicitFunction_apply_self (by norm_num) hinv + have hrC : ContDiffAt ℝ 2 r 0 := + hG.contDiffAt_implicitFunction (by norm_num) hinv + have hG0 : G (0 : E d × V) = 0 := by + ext z + simp [G, negativePartialGradient, ridgeAddition, restrictCovector, + show fderiv ℝ f p = 0 from hcritical] + have heq : (fun w => G (w, r w)) =ᶠ[𝓝 (0 : E d)] + (fun _ => (0 : V →L[ℝ] ℝ)) := by + simpa only [hG0] using hG.eventually_apply_implicitFunction (by norm_num) hinv + refine ⟨r, hr0, hrC, ?_, ?_⟩ + · filter_upwards [heq] with w hw + intro z + have hz := congrArg (fun k : V →L[ℝ] ℝ => k z) hw + simpa [G, negativePartialGradient, ridgeAddition, restrictCovector, add_assoc] using hz + · have hdr : HasFDerivAt r (fderiv ℝ r 0) 0 := + (hrC.differentiableAt (by norm_num)).hasFDerivAt + have hgraph : HasFDerivAt (fun w : E d => (w, r w)) + ((ContinuousLinearMap.id ℝ (E d)).prod (fderiv ℝ r 0)) 0 := + (hasFDerivAt_id (0 : E d)).prodMk hdr + have hzero : HasFDerivAt (fun w : E d => G (w, r w)) + (0 : E d →L[ℝ] (V →L[ℝ] ℝ)) 0 := + (hasFDerivAt_const (0 : E d) (0 : V →L[ℝ] ℝ)).congr_of_eventuallyEq heq + have hchain : HasFDerivAt (fun w : E d => G (w, r w)) + (D.comp ((ContinuousLinearMap.id ℝ (E d)).prod (fderiv ℝ r 0))) 0 := by + have hd : HasFDerivAt G D ((0 : E d), r 0) := by + simpa only [hr0] using hDG + exact hd.comp 0 hgraph + have hid := hchain.unique hzero + intro w z + have h := congrArg (fun C : E d →L[ℝ] (V →L[ℝ] ℝ) => C w z) hid + simpa [D, restrictCovector, ridgeAddition, literal_hessian_eq_fderiv] using h + +end TorusCriticalRidge diff --git a/frontiers/critical_ridge_20261020/project/CriticalRidgeAxiomAudit.lean b/frontiers/critical_ridge_20261020/project/CriticalRidgeAxiomAudit.lean new file mode 100644 index 000000000..b813de0ee --- /dev/null +++ b/frontiers/critical_ridge_20261020/project/CriticalRidgeAxiomAudit.lean @@ -0,0 +1,56 @@ +import CriticalRidge +import Lean.Elab.Command +import Lean.Util.CollectAxioms + +/-! Complete module-origin census for C299 and its exact C293 inputs. +Includes generated and private declarations. Only the standard axioms are allowed. +Command success is scoped execution evidence, not scientific promotion. -/ + +#print axioms TorusCriticalRidge.exists_negative_partial_gradient_ridge +#print axioms TorusCriticalRidge.negativeHessianBlock_isInvertible +#print axioms TorusCriticalRidge.negativePartialGradient_hasFDerivAt +#check @TorusCriticalRidge.exists_negative_partial_gradient_ridge + +open Lean Elab Command in +run_cmd do + let env := (← getEnv).setExporting false + let allowed : Array Name := #[`propext, `Classical.choice, `Quot.sound] + let modules : Array Name := #[`Lifetime, `TorusTopology, + `MorseFiniteCritical, `CriticalRidge] + let constants := env.constants.toList + let mut allNames : Array Name := #[] + for modName in modules do + let some idx := env.getModuleIdx? modName + | throwError "missing audited module: {modName}" + let names := (constants.filterMap fun (name, _) => + if env.getModuleIdxFor? name == some idx then some name else none).toArray.qsort Name.lt + if names.isEmpty then throwError "empty declaration inventory: {modName}" + liftIO <| IO.eprintln s!"CRITICAL_RIDGE_AUDIT_PROGRESS {modName} COUNT {names.size}" + logInfo m!"CRITICAL_RIDGE_AUDIT_MODULE {modName} COUNT {names.size}" + for name in names do + if (env.checked.get.find? name).isNone then + throwError "missing kernel declaration: {name}" + let axs ← Lean.collectAxioms name + logInfo m!"CRITICAL_RIDGE_AUDIT_DECL {name} AXIOMS {axs}" + for ax in axs do + unless allowed.contains ax do + throwError "forbidden transitive axiom {ax} in {name}" + allNames := allNames.push name + let required : Array Name := #[ + `UniversalLaw.Spec.Lifetime.IsSmooth, + `UniversalLaw.Spec.Lifetime.IsCriticalPoint, + `UniversalLaw.Spec.Lifetime.hessian, + `TorusMorseFinite.literal_hessian_eq_fderiv, + `TorusCriticalRidge.restrictCovector, + `TorusCriticalRidge.ridgeAddition, + `TorusCriticalRidge.negativePartialGradient, + `TorusCriticalRidge.negativeHessianBlock, + `TorusCriticalRidge.negativeHessianBlock_apply, + `TorusCriticalRidge.negativeHessianBlock_isInvertible, + `TorusCriticalRidge.negativePartialGradient_contDiff, + `TorusCriticalRidge.negativePartialGradient_hasFDerivAt, + `TorusCriticalRidge.exists_negative_partial_gradient_ridge] + for name in required do + unless allNames.contains name do + throwError "required declaration omitted from audit: {name}" + logInfo m!"CRITICAL_RIDGE_AUDIT_STANDARD_ONLY_PASS COUNT {allNames.size}" diff --git a/frontiers/critical_ridge_20261020/project/Lifetime.lean b/frontiers/critical_ridge_20261020/project/Lifetime.lean new file mode 100644 index 000000000..f2508f7f2 --- /dev/null +++ b/frontiers/critical_ridge_20261020/project/Lifetime.lean @@ -0,0 +1,634 @@ +import Mathlib + +/-! +# Lifetime-track statements: parent Theorems A, B, C, the bounded remainder R and the +# planar elder lower bound / density gap (statements only) + +Scientific effect: NONE. Formal progress of every declaration here: `specified`. +Organizational-independence credit of this transcription: 0 (Anthropic / Claude). + +This module states, as `Prop`-valued definitions, the shapes of the parent lifetime +results (1.1), (1.2), (1.3) of UNIFORM_MATRIX_CAP_AND_LIFETIME.md, of the bounded +remainder (R1) of LIFETIME_REMAINDER.md, and of the planar lower bound (E2), the +two-sided rate (E4) and the compact-window density gap (E11) of +ELDER_LOWER_AND_DENSITY_GAP.md. Every statement is parametrised by interface objects +(the Gaussian field, the superlevel-bar / elder-partner relation, and the typed pair law +probability `p_r(b,k,R)`); it is a statement about whatever objects satisfy those +interfaces, and the identification of those objects with the objects of the source texts +is not part of the statement. + +This module is self-contained: it imports only Mathlib and re-declares, verbatim up to +the namespace, the shared objects of `Specifications/Field.lean` (covariance, field +interface, critical points, Hessian inertia, pairs, superlevel bars, density versions). +The duplication is deliberate at this layer and is recorded as such. + +What this module does not establish. It consists only of definitions and structures; +it states nothing as a result and proves nothing: none of the parent results, the +remainder bound or the planar bounds is shown here, and no kernel receipt about them +exists. It does not transcribe the explicit Gaussian/angular integral (15.2) for the +leading coefficient `c_{d,L}` (the coefficient is characterised only through the +leading-term asymptotics of (1.3)); it does not transcribe the regression law +`Q_{r,b,k,R}`, the typed weight `W_r`, the full normalizer `Z_r` or the marked Kac-Rice +representation (all informal in the source and taken as the interface field `p`); it +does not transcribe the reading-rule amendments bound to the parent (congruence erratum, +Section 9 replacement v1.1, wording W1, embedding radius `r < L/(4 sqrt 2)`), nor the +marked-cylinder cap support; it asserts no numerical `C`, `r_*`, `z_*`, `ell_*` or +coefficient value; it does not state Theorem A as consumed by Theorem R; and it does +not state the compact-window `O(ell^(2/3))` difference for the unrestricted densities. +The planar statements (E4) and (E11) carry the parent upper bound (1.1), for the same +typed pair law at `d = 2`, as an explicit hypothesis, as the source does ("If the precise +Theorem A upper bound in [LP] is consumed"; its Section 4 says the upper half of (E11) +consumes the parent upper bound already identified there); the direct lower bound (E2) is +unconditional, as in the source. +Nothing here promotes, reclassifies or discharges any claim, premise or obligation of +the registers; the landing disposition `REVIEWED_SCOPED` (lifetime-remainder) and the +graph classification and review disposition recorded for +`math.uniform-matrix-cap-lifetime` are transcribed from the registers by the statement +register, never re-derived here; alignment of these statements with the sources is +PENDING_INDEPENDENT_REVIEW. + +Sources (Layer 0, byte-pinned, `d6g8k5htny-coder/Math-`): +* `lifetime-parent`: commit `c39164254ad1529ed49543743598d5dcb24bab98`, path + `imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md`, + sha256 `9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7`. +* `lifetime-remainder`: commit `760340e921ac4ceda296b8118da936f1133e956e`, path + `frontiers/three_fronts_20260924/LIFETIME_REMAINDER.md`, + sha256 `380b7d0abdb0fe2de5a6564565af9560d3f1b1ce22fd5538927db0c52f4f3a4a`. +* `elder-lower-density-gap`: commit `6c020d6a72936632f2055122e71a7818a4ff497e`, path + `frontiers/window_multiplicity_laws_20260928/ELDER_LOWER_AND_DENSITY_GAP.md`, + sha256 `8ce05a43bde8e0d718f09e2da1ffe75d3ec5893489254afdbf5b58b602cdba0c`. +-/ + +namespace UniversalLaw.Spec.Lifetime + +open MeasureTheory + +/-! ### Shared objects, re-declared from `Specifications/Field.lean` (same text, this +namespace). The duplication is deliberate: modules of this packet import only Mathlib. -/ + +/-- The ambient Euclidean space `R^d` in which the torus `X = R^d/(L Z^d)` is realised +by `L`-periodic functions. + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "On the flat torus X = R^d/(L Z^d), let f be the centered stationary Gaussian field of variance one with covariance" +Interface: none; this is the ambient space `EuclideanSpace ℝ (Fin d)`. +Does not claim: that the torus is represented by any quotient type; periodicity is a hypothesis on functions. -/ +abbrev E (d : ℕ) : Type := EuclideanSpace ℝ (Fin d) + +/-- The lattice vector `L n` for `n ∈ Z^d`, written in the standard coordinate vectors. + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "K_L(z) = sum_{n in Z^d} exp(-|z+Ln|^2/2)" +Interface: none. +Does not claim: anything beyond the definition of the vector `L n`. -/ +noncomputable def latticeVec (d : ℕ) (L : ℝ) (n : Fin d → ℤ) : E d := + ∑ i, EuclideanSpace.single i (L * (n i : ℝ)) + +/-- The unnormalised periodized Gaussian (theta) sum `sum_{n in Z^d} exp(-|z+Ln|^2/2)`, +written as a `tsum` over `Z^d`. If the family were not summable the `tsum` would be `0`; +summability is a hypothesis field of `GaussianFieldInterface`. + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "K_L(z) = sum_{n in Z^d} exp(-|z+Ln|^2/2)" +Interface: summability of the family is the field `GaussianFieldInterface.summable`, not derived here. +Does not claim: convergence of the sum. -/ +noncomputable def thetaSum (d : ℕ) (L : ℝ) (z : E d) : ℝ := + ∑' n : Fin d → ℤ, Real.exp (-(‖z + latticeVec d L n‖ ^ 2) / 2) + +/-- The periodized Gaussian covariance +`K_L(z) = sum_n exp(-|z+Ln|^2/2) / sum_n exp(-|Ln|^2/2)`; the denominator is the theta +sum at `z = 0`, so `K_L(0) = 1` (variance one) whenever that denominator is nonzero (the +summability field is meant to provide this; not shown here). + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "K_L(z) = sum_{n in Z^d} exp(-|z+Ln|^2/2)" +Interface: summability of both theta sums is the field `GaussianFieldInterface.summable`. +Does not claim: positivity of the Fourier coefficients (Section 2 of the source) or any property of `K_L` beyond its definition. -/ +noncomputable def periodicCovariance (d : ℕ) (L : ℝ) (z : E d) : ℝ := + thetaSum d L z / thetaSum d L 0 + +/-- The `K_L`-quadratic form `sum_{i,j} a_i a_j K_L(x_i - x_j)` of a finite real linear +combination `sum_i a_i f(x_i)` of point evaluations: its variance under a centred +stationary field with covariance `K_L`. + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "let f be the centered stationary Gaussian field of variance one with covariance" +Interface: nonnegativity of this form is the field `GaussianFieldInterface.quad_nonneg`. +Does not claim: positive definiteness (Section 2 of the source). -/ +noncomputable def covQuadForm (d : ℕ) (L : ℝ) {m : ℕ} (x : Fin m → E d) (a : Fin m → ℝ) : ℝ := + ∑ i, ∑ j, a i * a j * periodicCovariance d L (x i - x j) + +/-- `L`-periodicity of a function on `R^d`: invariance under every lattice translation. + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "On the flat torus X = R^d/(L Z^d), let f be the centered stationary Gaussian field of variance one with covariance" +Interface: none; this is the defining predicate of a function on the torus. +Does not claim: anything about the field. -/ +def IsLPeriodic (d : ℕ) (L : ℝ) (g : E d → ℝ) : Prop := + ∀ (x : E d) (n : Fin d → ℤ), g (x + latticeVec d L n) = g x + +/-- Smoothness of a sample path: `C^n` for every finite `n` (written without `⊤`). + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "In particular the field has a smooth version and all finite moments of its global derivative suprema exist." +Interface: smoothness of every sample path is the field `GaussianFieldInterface.smooth`. +Does not claim: existence of a smooth version, or moment bounds on derivative suprema. -/ +def IsSmooth (d : ℕ) (g : E d → ℝ) : Prop := + ∀ n : ℕ, ContDiff ℝ n g + +/-- Interface for the centred stationary Gaussian field of variance one on the torus +`R^d/(L Z^d)` with covariance `K_L`. The field is GIVEN: its probability space, its sample +paths, their smoothness and periodicity, the Gaussian law of every finite real linear +combination of point evaluations (law `gaussianReal 0 v` with `v` the `K_L`-quadratic +form) and the covariance identity are hypothesis fields, as is summability of the theta +sums. Existence of such an object is not asserted. + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "On the flat torus X = R^d/(L Z^d), let f be the centered stationary Gaussian field of variance one with covariance" +Interface: every field of this structure is a given property of the field, never derived. +Does not claim: existence or uniqueness in law of the field; the Fourier representation and positive spectrum of Section 2; almost-sure Morse genericity of Section 8. -/ +structure GaussianFieldInterface (d : ℕ) (L : ℝ) where + /-- The underlying probability space (sample space). -/ + Ω : Type + -- Its sigma-algebra (square-bracket field, as in Mathlib's bundled categories). It is not + -- registered for typeclass resolution after this declaration; consumers bring it into + -- scope with `haveI := G.mΩ`. + [mΩ : MeasurableSpace Ω] + /-- The probability measure `P`. -/ + P : Measure Ω + -- `P` is a probability measure (square-bracket field). + [isProb : IsProbabilityMeasure P] + /-- The sample paths `ω ↦ f_ω : R^d → ℝ`. -/ + F : Ω → E d → ℝ + /-- Section 2 clause: "the field has a smooth version"; every sample path is smooth. -/ + smooth : ∀ ω, IsSmooth d (F ω) + /-- Section 1 clause: the field lives "On the flat torus X = R^d/(L Z^d)"; every sample path + is `L`-periodic. -/ + periodic : ∀ ω, IsLPeriodic d L (F ω) + /-- Section 1 clause: the theta sums defining `K_L` converge (taken as a hypothesis). -/ + summable : ∀ z : E d, Summable (fun n : Fin d → ℤ => Real.exp (-(‖z + latticeVec d L n‖ ^ 2) / 2)) + /-- The `K_L`-quadratic form is nonnegative (so it is a variance). -/ + quad_nonneg : ∀ {m : ℕ} (x : Fin m → E d) (a : Fin m → ℝ), 0 ≤ covQuadForm d L x a + /-- Section 1 clause: "the centered stationary Gaussian field of variance one with covariance" + `K_L`; every finite real linear combination of point evaluations has the centred Gaussian + law whose variance is the `K_L`-quadratic form. -/ + gaussian : ∀ {m : ℕ} (x : Fin m → E d) (a : Fin m → ℝ), + Measure.map (fun ω => ∑ i, a i * F ω (x i)) P = + ProbabilityTheory.gaussianReal 0 ⟨covQuadForm d L x a, quad_nonneg x a⟩ + /-- Covariance identity `E[f(x) f(y)] = K_L(x - y)` (centred, stationary). -/ + covariance : ∀ x y : E d, ∫ ω, F ω x * F ω y ∂P = periodicCovariance d L (x - y) + +/-- The Hessian of `g` at `x` as a bilinear form, through the second iterated Fréchet +derivative: `hessian d g x v w = D^2 g(x)[v, w]`. + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "A maximum has d negative Hessian eigenvalues; the relevant saddle has d-1 negative and one positive eigenvalue." +Interface: none. +Does not claim: symmetry of the form (true for `C^2` functions, not stated here). -/ +noncomputable def hessian (d : ℕ) (g : E d → ℝ) (x v w : E d) : ℝ := + iteratedFDeriv ℝ 2 g x ![v, w] + +/-- Critical point: vanishing Fréchet derivative (`grad f = 0`). + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "grad f(M)=grad f(S)=0." +Interface: none. +Does not claim: differentiability of `g` at `x` (if `g` is not differentiable, `fderiv` is `0`). -/ +def IsCriticalPoint (d : ℕ) (g : E d → ℝ) (x : E d) : Prop := + fderiv ℝ g x = 0 + +/-- Sylvester-inertia encoding of "the Hessian at `x` is nondegenerate with exactly `j` +negative and `d - j` positive eigenvalues": there are complementary subspaces `V`, `W` of +dimensions `j` and `d - j` on which the Hessian form is negative definite, respectively +positive definite. Intended to agree with the eigenvalue count for symmetric (`C^2`) +Hessians; not shown here. + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "The index counts negative eigenvalues." +Interface: none. +Does not claim: equivalence with an eigenvalue count for a non-symmetric form. -/ +def HessianHasInertia (d : ℕ) (g : E d → ℝ) (x : E d) (j : ℕ) : Prop := + ∃ V W : Submodule ℝ (E d), IsCompl V W ∧ + Module.finrank ℝ V = j ∧ Module.finrank ℝ W = d - j ∧ + (∀ v ∈ V, v ≠ 0 → hessian d g x v v < 0) ∧ + (∀ w ∈ W, w ≠ 0 → 0 < hessian d g x w w) + +/-- Nondegenerate local maximum: a critical point whose Hessian has `d` negative +eigenvalues (negative definite). + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "A maximum has d negative Hessian eigenvalues; the relevant saddle has d-1 negative and one positive eigenvalue." +Interface: none. +Does not claim: that every local maximum of a sample path is nondegenerate (Morse genericity is Section 8 of the source). -/ +def IsNondegMax (d : ℕ) (g : E d → ℝ) (x : E d) : Prop := + IsCriticalPoint d g x ∧ HessianHasInertia d g x d + +/-- Index-(d-1) saddle: a critical point whose Hessian has `d - 1` negative and one +positive eigenvalue. + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "A maximum has d negative Hessian eigenvalues; the relevant saddle has d-1 negative and one positive eigenvalue." +Interface: none. +Does not claim: that such a saddle is a merging saddle of any superlevel bar. -/ +def IsIndexSaddle (d : ℕ) (g : E d → ℝ) (x : E d) : Prop := + IsCriticalPoint d g x ∧ HessianHasInertia d g x (d - 1) + +/-- The pin `M = -(r/2) u` of the embedded local cylinder with axial unit vector `u`. + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "M=-(r/2)u, S=(r/2)u," +Interface: none. +Does not claim: that `u` is a unit vector; this pin is an auxiliary definition consumed by no statement of this packet (the typed pair law `p` is a primitive), so it is attached to no claim. -/ +noncomputable def pinM (d : ℕ) (r : ℝ) (u : E d) : E d := + -((r / 2) • u) + +/-- The pin `S = (r/2) u` of the embedded local cylinder with axial unit vector `u`. + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "M=-(r/2)u, S=(r/2)u," +Interface: none. +Does not claim: that `u` is a unit vector; this pin is an auxiliary definition consumed by no statement of this packet (the typed pair law `p` is a primitive), so it is attached to no claim. -/ +noncomputable def pinS (d : ℕ) (r : ℝ) (u : E d) : E d := + (r / 2) • u + +/-- Torus distance between two points of `R^d`: the infimum over the lattice of +`|x - y + L n|`. For `L > 0` it is intended to vanish exactly when `x` and `y` represent the +same torus point; not shown here. + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "Count ordered maximum/saddle pairs with 00, and let nu_eld^all(ell) count all finite ordinary superlevel H0 persistence bars, both in expectation per unit volume." +Interface: none. +Does not claim: that the height gap of an elder pair is the persistence of a bar in any persistence module. -/ +def heightGap (d : ℕ) (g : E d → ℝ) (M S : E d) : ℝ := + g M - g S + +/-- Scaled gap `(f(M) - f(S)) / distance^3` of an ordered pair, with the torus distance. + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "Count ordered maximum/saddle pairs with 00, and let nu_eld^all(ell) count all finite ordinary superlevel H0 persistence bars, both in expectation per unit volume." +Interface: none. +Does not claim: positivity of the height gap (added separately where the source requires it). -/ +def IsCandidatePair (d : ℕ) (L : ℝ) (g : E d → ℝ) (M S : E d) : Prop := + IsNondegMax d g M ∧ IsIndexSaddle d g S ∧ 0 < torusDist d L M S + +/-- Morse genericity with distinct critical values on the torus: every critical point is +nondegenerate (has some inertia) and critical points at distinct torus positions have +distinct critical values. + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "Countable exhaustion now proves that Q is almost surely Morse with distinct critical values." +Interface: none; used only as a hypothesis of the elder-partner interface clause. +Does not claim: that sample paths are almost surely Morse (Section 8 of the source). -/ +def IsMorseDistinct (d : ℕ) (L : ℝ) (g : E d → ℝ) : Prop := + (∀ x : E d, IsCriticalPoint d g x → ∃ j : ℕ, HessianHasInertia d g x j) ∧ + (∀ x y : E d, IsCriticalPoint d g x → IsCriticalPoint d g y → + 0 < torusDist d L x y → g x ≠ g y) + +/-- Interface for the superlevel-set H0 persistence objects used by the lifetime track: +the maximin death height `d_f(M)`, the essential (global-maximum) class, and the ordinary +elder death partner relation. These are GIVEN relations; the fields transcribe the source +clauses that characterise them on smooth periodic functions, and the elder relation is +pinned only on the Morse distinct-value locus, exactly as the source does. + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "On the Morse distinct-value locus it expresses ordinary elder death at S; an essential maximum has no older endpoint." +Interface: `deathHeight`, `IsEssential`, `ElderPartner` are given; `deathHeight_maximin`, `essential_iff`, `elderPartner_iff` are their hypothesis clauses. +Does not claim: Borel measurability of the elder event (Section 8 / the Section 9 replacement), identification with a persistence-module elder rule, or any behaviour off the Morse distinct-value locus. -/ +structure SuperlevelBarInterface (d : ℕ) (L : ℝ) where + /-- Section 8 clause: the maximin connection level + `d_f(M)=sup_{gamma(0)=M, f(gamma(1))>f(M)} min_t f(gamma(t))`. -/ + deathHeight : (E d → ℝ) → E d → ℝ + /-- The essential class: the global maximum, which "has no older endpoint" and whose + superlevel H0 bar is not finite. -/ + IsEssential : (E d → ℝ) → E d → Prop + /-- Section 1 clause: "the global ordinary superlevel elder death partner of M is S". -/ + ElderPartner : (E d → ℝ) → E d → E d → Prop + /-- `M` is essential exactly when no point is strictly higher (so the supremum in the + maximin is over an empty set, "equal to -infinity"). -/ + essential_iff : ∀ (g : E d → ℝ), IsSmooth d g → IsLPeriodic d L g → + ∀ M : E d, IsEssential g M ↔ ∀ y : E d, g y ≤ g M + /-- Section 8 maximin clause, in the form `h < d_f(M)` iff some path from `M` to a strictly + higher point stays strictly above `h`. -/ + deathHeight_maximin : ∀ (g : E d → ℝ), IsSmooth d g → IsLPeriodic d L g → + ∀ M : E d, ¬ IsEssential g M → ∀ h : ℝ, + h < deathHeight g M ↔ + ∃ y : E d, g M < g y ∧ ∃ γ : Path M y, ∀ t : unitInterval, h < g (γ t) + /-- Section 8 / Section 14 clause: on the Morse distinct-value locus, "equality + d_f(M)=f(S)" with `M` a nondegenerate maximum and `S` an index-(d-1) saddle "expresses + ordinary elder death at S". -/ + elderPartner_iff : ∀ (g : E d → ℝ), IsSmooth d g → IsLPeriodic d L g → IsMorseDistinct d L g → + ∀ M S : E d, ElderPartner g M S ↔ + (IsNondegMax d g M ∧ IsIndexSaddle d g S ∧ ¬ IsEssential g M ∧ deathHeight g M = g S) + +/-- Finite ordinary superlevel H0 bar, as an ordered pair: a nondegenerate maximum `M` +(birth) with its ordinary elder death partner `S`, an index-(d-1) saddle at positive torus +distance. The essential global-maximum class is excluded because `ElderPartner` requires +`¬ IsEssential` on the Morse locus. + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "each finite superlevel H0 bar has exactly one local-maximum birth and one index-(d-1) merging-saddle death." +Interface: `I : SuperlevelBarInterface d L` is given. +Does not claim: the identification of these pairs with bars of a persistence module; that the count of such pairs equals the finite-bar count off the Morse locus. -/ +def IsFiniteBar (d : ℕ) (L : ℝ) (I : SuperlevelBarInterface d L) (g : E d → ℝ) (M S : E d) : Prop := + IsCandidatePair d L g M S ∧ 0 < heightGap d g M S ∧ I.ElderPartner g M S + +/-- The set of pairs of a population `Pair` with both points in the fundamental domain and +lifetime (height gap) in `A`; `Pair g M S` is the membership predicate of the population. + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "Let nu_cand(ell) be their expected lifetime density per unit volume; let nu_eld(ell) count only pairs which are actual ordinary elder partners." +Interface: the population predicate `Pair` is a parameter. +Does not claim: finiteness of this set (a field of the density-version predicate). -/ +def pairSet (d : ℕ) (L : ℝ) (Pair : (E d → ℝ) → E d → E d → Prop) (g : E d → ℝ) (A : Set ℝ) : + Set (E d × E d) := + {p | p.1 ∈ FundDomain d L ∧ p.2 ∈ FundDomain d L ∧ Pair g p.1 p.2 ∧ heightGap d g p.1 p.2 ∈ A} + +/-- Number of pairs of the population with lifetime in `A` and base points in the +fundamental domain (`Set.ncard`, which is `0` for an infinite set). + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "Let nu_cand(ell) be their expected lifetime density per unit volume; let nu_eld(ell) count only pairs which are actual ordinary elder partners." +Interface: the population predicate `Pair` is a parameter. +Does not claim: finiteness of the counted set. -/ +noncomputable def pairCount (d : ℕ) (L : ℝ) (Pair : (E d → ℝ) → E d → E d → Prop) + (g : E d → ℝ) (A : Set ℝ) : ℕ := + Set.ncard (pairSet d L Pair g A) + +/-- `ν` is a VERSION of the expected per-unit-volume lifetime density of the population +`Pair` under the field `G`: it is nonnegative and measurable, the pair sets are almost +surely finite with integrable counts, `ν` is integrable on every Borel `A ⊆ (0, ∞)`, and +`∫_A ν = E[#pairs with lifetime in A and base point in [0,L)^d] / L^d` for every such `A`. +The source's densities are only defined up to such versions. The sigma-algebra of the sample +space is brought into scope by the inlined term-level `haveI := G.mΩ` (a square-bracket +field of a bundled record is not registered for typeclass resolution after the declaration). + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "These densities admit versions with" +Interface: the field `G` and the population predicate `Pair` are given; the Kac-Rice representation of the expectation (Sections 9-10 of the source) is NOT used; the density is characterised only by the integral identity. +Does not claim: existence of a version; the weighted Kac-Rice identity; the radial ledger (10.2). Measurability of the pair count as a function of the sample is REQUIRED by the predicate (through `Integrable`, hence `AEStronglyMeasurable`), not established here. -/ +def IsLifetimeDensityVersion (d : ℕ) (L : ℝ) (G : GaussianFieldInterface d L) + (Pair : (E d → ℝ) → E d → E d → Prop) (ν : ℝ → ℝ) : Prop := + haveI := G.mΩ + (∀ ℓ : ℝ, 0 ≤ ν ℓ) ∧ Measurable ν ∧ + (∀ A : Set ℝ, MeasurableSet A → A ⊆ Set.Ioi 0 → + (∀ᵐ ω ∂G.P, (pairSet d L Pair (G.F ω) A).Finite) ∧ + Integrable (fun ω => ((pairCount d L Pair (G.F ω) A : ℕ) : ℝ)) G.P ∧ + IntegrableOn ν A ∧ + ∫ ℓ in A, ν ℓ = (∫ ω, ((pairCount d L Pair (G.F ω) A : ℕ) : ℝ) ∂G.P) / L ^ d) + +/-! ### Populations of pairs -/ + +/-- Compact-window population of Theorem B: ordered maximum / index-(d-1)-saddle pairs with +`0 < distance <= ρ`, birth `f(M)` in `B = [bLo, bHi]` and scaled gap in `K = [kLo, kHi]`. + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "Count ordered maximum/saddle pairs with 00, and let nu_eld^all(ell) count all finite ordinary superlevel H0 persistence bars, both in expectation per unit volume." +Interface: none beyond the shared predicates. +Does not claim: anything about the off-diagonal (far) population separately (Section 14 of the source). -/ +def IsUnrestrictedPair (d : ℕ) (L : ℝ) (g : E d → ℝ) (M S : E d) : Prop := + IsCandidatePair d L g M S ∧ 0 < heightGap d g M S + +/-! ### The typed pair law as an interface -/ + +/-- Interface for the weighted regression (typed pair) law: the only object consumed by the +statements is the probability `p_r(b,k,R)` that the global ordinary superlevel elder death +partner of the pinned maximum `M = -(r/2)u` is the pinned saddle `S = (r/2)u`, under the +law `Q^W = (W_r/Z_r) Q_{r,b,k,R}` with `W_r = |det H_M det H_S| 1{H_M<0, index(H_S)=d-1}`. +That law, its weight, its normalizer and the regression construction are informal in the +source and are NOT transcribed; `p` is a GIVEN function of radius `r`, birth `b`, gap mark +`k` and orthonormal frame `R` with values in `[0, 1]`. + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "Let p_r(b,k,R) be the Q^W probability that the **global ordinary superlevel elder death partner** of M is S." +Interface: `p` is given; its only hypothesis fields are the bounds `0 ≤ p ≤ 1`. The parameters `G` and `I` record which field and which elder relation the law refers to; no field ties `p` to them. +Does not claim: existence of the regression law, the typed weight, the full normalizer `Z_r > 0`, or that `p` is the probability of any event under any measure declared here; that `p` depends on `G` or `I` in any way (no field mentions them; they only record which field and elder relation the law is meant to refer to). -/ +structure PairLawInterface (d : ℕ) (L : ℝ) (G : GaussianFieldInterface d L) + (I : SuperlevelBarInterface d L) where + /-- Section 1 clause: "Let p_r(b,k,R) be the Q^W probability that the global ordinary + superlevel elder death partner of M is S." -/ + p : ℝ → ℝ → ℝ → OrthonormalBasis (Fin d) ℝ (E d) → ℝ + /-- `p` is a probability: nonnegative. -/ + p_nonneg : ∀ (r b k : ℝ) (R : OrthonormalBasis (Fin d) ℝ (E d)), 0 ≤ p r b k R + /-- `p` is a probability: at most one. -/ + p_le_one : ∀ (r b k : ℝ) (R : OrthonormalBasis (Fin d) ℝ (E d)), p r b k R ≤ 1 + +/-! ### The parent statements (1.1), (1.2), (1.3) -/ + +/-- Shape of Theorem A (1.1), uniform selection candidate: for fixed `d ≥ 2`, `L > 0`, +compact `B = [bLo, bHi]` and `K = [kLo, kHi]` with `0 < kLo ≤ kHi`, there exist `r_* > 0` +and `C` (quantified OUTSIDE the universal quantifiers over `r`, `b`, `k` and the frame) +such that `0 <= 1 - p_r(b,k,R) <= C r^3` for all `0 < r ≤ r_*`, `b ∈ B`, `k ∈ K` and all +orthonormal frames `R`. + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "There exist r_*>0 and C 0` and +windows `B`, `K` of positive length with `kLo > 0`, there are a distance cutoff `r_* > 0`, a +constant `c_{B,K} > 0` and a constant `C_{B,K}` such that the compact-window candidate and +elder lifetime densities admit versions `νc`, `νe` with `νc(ℓ) ~ c_{B,K} ℓ^(-1/3)`, +`νe(ℓ) ~ c_{B,K} ℓ^(-1/3)` as `ℓ ↓ 0` (filter `nhdsWithin 0 (Set.Ioi 0)`) and +`0 ≤ νc(ℓ) - νe(ℓ) ≤ C_{B,K} ℓ^(2/3)` for all sufficiently small `ℓ > 0`. + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "0 <= nu_cand(ell)-nu_eld(ell) <= C_{B,K} ell^(2/3)," +Interface: `G` and `I` are given; "versions" are any `νc`, `νe` satisfying `IsLifetimeDensityVersion` (integral identity), not a Kac-Rice representation; the coefficient `c_{B,K}` is existential, not the Gaussian integral (11.3). +Does not claim: the parent result or its proof; the exact coefficient formula (11.3); existence of the versions; that the cutoff `r_*` is the one of (1.1); any numerical constant; nonauthor review or acceptance. -/ +def ParentCompactWindowDensityB (d : ℕ) (L : ℝ) (G : GaussianFieldInterface d L) + (I : SuperlevelBarInterface d L) (bLo bHi kLo kHi : ℝ) : Prop := + 2 ≤ d → 0 < L → bLo < bHi → 0 < kLo → kLo < kHi → + ∃ rStar : ℝ, 0 < rStar ∧ ∃ c : ℝ, 0 < c ∧ ∃ C : ℝ, ∃ νc νe : ℝ → ℝ, + IsLifetimeDensityVersion d L G (IsWindowPair d L rStar bLo bHi kLo kHi) νc ∧ + IsLifetimeDensityVersion d L G (IsWindowElderPair d L rStar bLo bHi kLo kHi I) νe ∧ + Asymptotics.IsEquivalent (nhdsWithin (0 : ℝ) (Set.Ioi 0)) νc + (fun ℓ : ℝ => c * ℓ ^ ((-1 : ℝ) / 3)) ∧ + Asymptotics.IsEquivalent (nhdsWithin (0 : ℝ) (Set.Ioi 0)) νe + (fun ℓ : ℝ => c * ℓ ^ ((-1 : ℝ) / 3)) ∧ + ∃ ℓStar : ℝ, 0 < ℓStar ∧ ∀ ℓ : ℝ, 0 < ℓ → ℓ ≤ ℓStar → + 0 ≤ νc ℓ - νe ℓ ∧ νc ℓ - νe ℓ ≤ C * ℓ ^ ((2 : ℝ) / 3) + +/-- `c` is a leading coefficient of the unrestricted finite-lifetime densities: `c > 0` and +versions `νc`, `νe` of the unrestricted candidate density and of the finite ordinary +superlevel H0 bar density satisfy `νc(ℓ) ~ c ℓ^(-1/3)` and `νe(ℓ) ~ c ℓ^(-1/3)` as `ℓ ↓ 0`. +The essential global-maximum class is excluded from `νe` through `IsFiniteBar`. This is the +conclusion of (1.3) for a given `c`; it characterises `c_{d,L}` by its leading-term role, +not by the integral (13.6)/(15.2). + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "There is a positive finite constant c_{d,L} such that" +Interface: `G` and `I` are given; versions are characterised by the integral identity only. +Does not claim: the explicit Gaussian/angular representation (15.2) of `c_{d,L}`; uniqueness of `c` (which follows from the asymptotics but is not stated); existence of versions. -/ +def IsUnrestrictedLeadingCoefficient (d : ℕ) (L : ℝ) (G : GaussianFieldInterface d L) + (I : SuperlevelBarInterface d L) (c : ℝ) : Prop := + 0 < c ∧ ∃ νc νe : ℝ → ℝ, + IsLifetimeDensityVersion d L G (IsUnrestrictedPair d L) νc ∧ + IsLifetimeDensityVersion d L G (IsFiniteBar d L I) νe ∧ + Asymptotics.IsEquivalent (nhdsWithin (0 : ℝ) (Set.Ioi 0)) νc + (fun ℓ : ℝ => c * ℓ ^ ((-1 : ℝ) / 3)) ∧ + Asymptotics.IsEquivalent (nhdsWithin (0 : ℝ) (Set.Ioi 0)) νe + (fun ℓ : ℝ => c * ℓ ^ ((-1 : ℝ) / 3)) + +/-- Shape of Theorem C (1.3), unrestricted finite-lifetime leading density candidate: for +fixed `d ≥ 2` and `L > 0` there is a positive finite constant `c_{d,L}` such that the +unrestricted candidate density and the finite ordinary superlevel H0 bar density (all birth +heights, all positive gap marks, all separations; essential global maximum excluded) admit +versions with `ν(ℓ) ~ c_{d,L} ℓ^(-1/3)` as `ℓ ↓ 0`. Leading term only. + +Source: d6g8k5htny-coder/Math- commit c39164254ad1529ed49543743598d5dcb24bab98 path imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md sha256 9350ad6eaba6626b93c3dedeef9e2ff816e5cdf1c8318e85fb27499141c84bc7 +Anchor: "nu_cand^all(ell) ~ c_{d,L} ell^(-1/3)," +Interface: `G` and `I` are given; versions are characterised by the integral identity only. +Does not claim: the parent result or its proof (dominated convergence of Section 13, off-diagonal bound (14.1)); the representation (15.2); the compact-window `O(ell^(2/3))` difference for the unrestricted densities; any numerical enclosure of `c_{d,L}` (the SIDE24 coefficient track is separate); nonauthor review or acceptance. -/ +def ParentUnrestrictedLeadingDensityC (d : ℕ) (L : ℝ) (G : GaussianFieldInterface d L) + (I : SuperlevelBarInterface d L) : Prop := + 2 ≤ d → 0 < L → ∃ c : ℝ, IsUnrestrictedLeadingCoefficient d L G I c + +/-! ### The bounded remainder (R1) -/ + +/-- Shape of Theorem R (R1), bounded unrestricted short-lifetime remainder: for fixed +`d ≥ 2`, `L > 0` and with `c = c_{d,L}` the parent leading coefficient (characterised here +by `IsUnrestrictedLeadingCoefficient`), there are `ell_* > 0` and `C` such that versions of +the unrestricted candidate and finite-bar densities satisfy, for `0 < ℓ ≤ ell_*`, +`|νc(ℓ) - c ℓ^(-1/3)| ≤ C`, `0 ≤ νc(ℓ) - νe(ℓ) ≤ C` and `|νe(ℓ) - c ℓ^(-1/3)| ≤ C`. +The `O(1)` remainder is stated with an explicit absolute-value bound. + +Source: d6g8k5htny-coder/Math- commit 760340e921ac4ceda296b8118da936f1133e956e path frontiers/three_fronts_20260924/LIFETIME_REMAINDER.md sha256 380b7d0abdb0fe2de5a6564565af9560d3f1b1ce22fd5538927db0c52f4f3a4a +Anchor: "|nu_cand(ell)-c ell^(-1/3)| <= C," +Interface: `G` and `I` are given; `c` is any real satisfying the parent leading-coefficient property (the source says the coefficient "is exactly the parent's equation (15.2)"; that integral is not transcribed, so `c` is pinned through (1.3) instead); versions are characterised by the integral identity only. The statement does not mention the typed pair law: Theorem R does not consume (1.1). +Does not claim: the result or its proof (quadratic determinant cancellation (R7), coupling (R4), cap-loss bound (R12)); convergence of the remainder; a second coefficient; numerical `C` or `ell_*`; the compact-window `O(ell^(2/3))` difference without cutoffs; the parent interfaces it imports (D1-A-E); nonauthor review or acceptance. If no `c` satisfies the parent property the statement holds vacuously; that is a transcription of its dependency on (1.3), not a claim. -/ +def RemainderBoundedR1 (d : ℕ) (L : ℝ) (G : GaussianFieldInterface d L) + (I : SuperlevelBarInterface d L) : Prop := + 2 ≤ d → 0 < L → ∀ c : ℝ, IsUnrestrictedLeadingCoefficient d L G I c → + ∃ ℓStar : ℝ, 0 < ℓStar ∧ ∃ C : ℝ, ∃ νc νe : ℝ → ℝ, + IsLifetimeDensityVersion d L G (IsUnrestrictedPair d L) νc ∧ + IsLifetimeDensityVersion d L G (IsFiniteBar d L I) νe ∧ + ∀ ℓ : ℝ, 0 < ℓ → ℓ ≤ ℓStar → + |νc ℓ - c * ℓ ^ ((-1 : ℝ) / 3)| ≤ C ∧ + 0 ≤ νc ℓ - νe ℓ ∧ νc ℓ - νe ℓ ≤ C ∧ + |νe ℓ - c * ℓ ^ ((-1 : ℝ) / 3)| ≤ C + +/-! ### Planar elder lower bound and density gap (d = 2) -/ + +/-- Shape of the planar direct lower bound (E2): on the fixed planar torus (`d = 2`), with +birth `b` in a fixed compact interval, `k ∈ [kLo, kHi]` with `kLo > 0` and frames ranging +over `O(2)`, there are `c > 0` and `r_* > 0` such that `1 - p_r(b,k,R) ≥ c r^3` for all +`0 < r ≤ r_*`, uniformly in `b`, `k` and the frame. + +Source: d6g8k5htny-coder/Math- commit 6c020d6a72936632f2055122e71a7818a4ff497e path frontiers/window_multiplicity_laws_20260928/ELDER_LOWER_AND_DENSITY_GAP.md sha256 8ce05a43bde8e0d718f09e2da1ffe75d3ec5893489254afdbf5b58b602cdba0c +Anchor: "1-p_r(b,k,R) >= c r^3, 0 0` there are a distance cutoff +`r_* > 0`, constants `c_{B,K} > 0`, `C_{B,K}` and `ell_* > 0` such that versions of the +compact-window candidate and ordinary elder densities satisfy +`c_{B,K} ℓ^(2/3) ≤ νc(ℓ) - νe(ℓ) ≤ C_{B,K} ℓ^(2/3)` for all `0 < ℓ ≤ ell_*`. The parent upper +input is an explicit hypothesis, not folded into the conclusion. The lower half, which the +source derives from (E2) alone, is stated under the same hypothesis because the source displays +(E11) as one two-sided inequality; that is a hypothesis the source does not need for the lower +half, recorded here as such. + +Source: d6g8k5htny-coder/Math- commit 6c020d6a72936632f2055122e71a7818a4ff497e path frontiers/window_multiplicity_laws_20260928/ELDER_LOWER_AND_DENSITY_GAP.md sha256 8ce05a43bde8e0d718f09e2da1ffe75d3ec5893489254afdbf5b58b602cdba0c +Anchor: " <= C_{B,K} ell^(2/3). (E11)" +Interface: `G`, `I` and `PL` are given; the hypothesis `ParentUniformSelectionA 2 L G I PL bLo bHi kLo kHi` is the consumed parent upper input (a statement shape, not the parent result); versions are characterised by the integral identity only; the weighted Kac-Rice / radial ledger of [LP, Sections 9-11] that the source consumes is not transcribed. The interface does not determine `p` or the field: the Prop is a predicate on the interface objects, not a closed statement about the source's objects; nothing is asserted about its universal closure over all inhabitants, and `specified` refers to the statement shape at the source's object, which is not constructed. +Does not claim: the result or its proof; the upper half independently of the parent (1.1); the parent (1.1) itself; the lower half without the hypothesis (the source has it from (E2) alone); sharpness of the `O(1)` remainder of (R1); removal of the compact-mark restriction; that the cutoff `r_*` is the one of (1.1); any numerical constant; nonauthor review or acceptance. -/ +def PlanarDensityGapE11 (L : ℝ) (G : GaussianFieldInterface 2 L) (I : SuperlevelBarInterface 2 L) + (PL : PairLawInterface 2 L G I) (bLo bHi kLo kHi : ℝ) : Prop := + ParentUniformSelectionA 2 L G I PL bLo bHi kLo kHi → + (0 < L → bLo < bHi → 0 < kLo → kLo < kHi → + ∃ rStar : ℝ, 0 < rStar ∧ ∃ c : ℝ, 0 < c ∧ ∃ C : ℝ, ∃ ℓStar : ℝ, 0 < ℓStar ∧ + ∃ νc νe : ℝ → ℝ, + IsLifetimeDensityVersion 2 L G (IsWindowPair 2 L rStar bLo bHi kLo kHi) νc ∧ + IsLifetimeDensityVersion 2 L G (IsWindowElderPair 2 L rStar bLo bHi kLo kHi I) νe ∧ + ∀ ℓ : ℝ, 0 < ℓ → ℓ ≤ ℓStar → + c * ℓ ^ ((2 : ℝ) / 3) ≤ νc ℓ - νe ℓ ∧ νc ℓ - νe ℓ ≤ C * ℓ ^ ((2 : ℝ) / 3)) + +end UniversalLaw.Spec.Lifetime diff --git a/frontiers/critical_ridge_20261020/project/MorseFiniteCritical.lean b/frontiers/critical_ridge_20261020/project/MorseFiniteCritical.lean new file mode 100644 index 000000000..989fabc6e --- /dev/null +++ b/frontiers/critical_ridge_20261020/project/MorseFiniteCritical.lean @@ -0,0 +1,223 @@ +import Lifetime +import TorusTopology + +/-! +# Finite literal critical set on the actual period-lattice quotient + +C293: deterministic formal composition of the finite-critical-set step of C292. +The inputs below are the literal Lifetime predicates and C263 torus projection. +No finite event list, inverse certificate, Morse normal form or closed-level path +is supplied as a hypothesis. +-/ + +noncomputable section + +open Set Topology +open UniversalLaw.Spec.Lifetime +open TorusFiltration + +namespace TorusMorseFinite + +theorem literal_hessian_eq_fderiv {d : ℕ} (g : E d → ℝ) + (x v w : E d) : + hessian d g x v w = fderiv ℝ (fderiv ℝ g) x v w := by + simp [hessian, iteratedFDeriv_two_apply] + +theorem literal_hessian_symmetric {d : ℕ} {g : E d → ℝ} + (hsmooth : IsSmooth d g) (x v w : E d) : + hessian d g x v w = hessian d g x w v := by + rw [literal_hessian_eq_fderiv, literal_hessian_eq_fderiv] + exact ((hsmooth 2).contDiffAt.isSymmSndFDerivAt (by simp)).eq v w + +theorem inertia_fderiv_injective {d : ℕ} {g : E d → ℝ} + (hsmooth : IsSmooth d g) {x : E d} {j : ℕ} + (hinertia : HessianHasInertia d g x j) : + Function.Injective (fderiv ℝ (fderiv ℝ g) x) := by + let B := fderiv ℝ (fderiv ℝ g) x + have hz : ∀ z : E d, B z = 0 → z = 0 := by + intro z hzero + obtain ⟨V, W, hcompl, _, _, hneg, hpos⟩ := hinertia + obtain ⟨v, w, hv, hw, hvw⟩ := + Submodule.codisjoint_iff_exists_add_eq.mp hcompl.codisjoint z + have hBv : B v v + B w v = 0 := by + have h := congrArg (fun A : E d →L[ℝ] ℝ => A v) hzero + simpa only [← hvw, map_add, add_apply, zero_apply] using h + have hBw : B v w + B w w = 0 := by + have h := congrArg (fun A : E d →L[ℝ] ℝ => A w) hzero + simpa only [← hvw, map_add, add_apply, zero_apply] using h + have hsym : B w v = B v w := by + simpa only [B, ← literal_hessian_eq_fderiv] using + literal_hessian_symmetric hsmooth x w v + have heq : hessian d g x v v = hessian d g x w w := by + simp only [literal_hessian_eq_fderiv] + change B v v = B w w + linarith + have hv0 : v = 0 := by + by_contra hv0 + have hn := hneg v hv hv0 + by_cases hw0 : w = 0 + · have hww : hessian d g x w w = 0 := by + simp [hw0, literal_hessian_eq_fderiv] + linarith + · have hp := hpos w hw hw0 + linarith + have hw0 : w = 0 := by + by_contra hw0 + have hp := hpos w hw hw0 + have hvv : hessian d g x v v = 0 := by + simp [hv0, literal_hessian_eq_fderiv] + linarith + simpa [hv0, hw0] using hvw.symm + intro u v huv + have hzero : B (u - v) = 0 := by simp [map_sub, huv, B] + exact sub_eq_zero.mp (hz (u - v) hzero) + +theorem inertia_fderiv_equiv {d : ℕ} {g : E d → ℝ} + (hsmooth : IsSmooth d g) {x : E d} {j : ℕ} + (hinertia : HessianHasInertia d g x j) : + ∃ e : E d ≃L[ℝ] (E d →L[ℝ] ℝ), + (e : E d →L[ℝ] (E d →L[ℝ] ℝ)) = fderiv ℝ (fderiv ℝ g) x := by + let J : E d ≃L[ℝ] (E d →L[ℝ] ℝ) := + (InnerProductSpace.toDual ℝ (E d)).toContinuousLinearEquiv + let B := fderiv ℝ (fderiv ℝ g) x + let A : E d →L[ℝ] E d := J.symm.toContinuousLinearMap.comp B + have hA : Function.Injective A := + J.symm.injective.comp (inertia_fderiv_injective hsmooth hinertia) + let eA : E d ≃L[ℝ] E d := + (LinearEquiv.ofInjectiveEndo A.toLinearMap hA).toContinuousLinearEquiv + refine ⟨eA.trans J, ?_⟩ + apply ContinuousLinearMap.ext + intro v + change J (J.symm (B v)) = B v + exact J.apply_symm_apply (B v) + +theorem literal_critical_isolated {d : ℕ} {g : E d → ℝ} + (hsmooth : IsSmooth d g) {x : E d} + (hcritical : IsCriticalPoint d g x) {j : ℕ} + (hinertia : HessianHasInertia d g x j) : + ∃ U : Set (E d), IsOpen U ∧ x ∈ U ∧ + ∀ y ∈ U, IsCriticalPoint d g y → y = x := by + obtain ⟨e, he⟩ := inertia_fderiv_equiv hsmooth hinertia + have hD : ContDiff ℝ 1 (fderiv ℝ g) := + (contDiff_succ_iff_fderiv.mp (hsmooth 2)).2.2 + have hderiv : HasFDerivAt (fderiv ℝ g) + (e : E d →L[ℝ] (E d →L[ℝ] ℝ)) x := by + rw [he] + exact (hD.differentiable (by norm_num) x).hasFDerivAt + let p := hD.contDiffAt.toOpenPartialHomeomorph (fderiv ℝ g) hderiv (by norm_num) + have hxp : x ∈ p.source := + hD.contDiffAt.mem_toOpenPartialHomeomorph_source hderiv (by norm_num) + refine ⟨p.source, p.open_source, hxp, ?_⟩ + intro y hy hcy + apply p.injOn hy hxp + change fderiv ℝ g y = fderiv ℝ g x + exact hcy.trans hcritical.symm + +theorem literal_fderiv_periodic {d : ℕ} {L : ℝ} {g : E d → ℝ} + (hperiodic : IsLPeriodic d L g) (x : E d) (k : Fin d → ℤ) : + fderiv ℝ g (x + torus_latticeVec d L k) = fderiv ℝ g x := by + have heq : (fun y : E d => g (y + torus_latticeVec d L k)) = g := by + funext y + simpa only [torus_latticeVec, latticeVec] using hperiodic y k + rw [← fderiv_comp_add_right, heq] + +theorem literal_fderiv_respects {d : ℕ} {L : ℝ} (hL : 0 < L) + {g : E d → ℝ} (hperiodic : IsLPeriodic d L g) (x y : E d) + (hxy : QuotientAddGroup.leftRel (torus_periodLattice d L hL).toAddSubgroup x y) : + fderiv ℝ g x = fderiv ℝ g y := by + have hq : torus_proj d L hL x = torus_proj d L hL y := Quotient.sound hxy + obtain ⟨k, rfl⟩ := (torus_proj_eq_iff d L hL x y).mp hq + exact (literal_fderiv_periodic hperiodic x k).symm + +def quotientDerivative (d : ℕ) (L : ℝ) (hL : 0 < L) + (g : E d → ℝ) (hperiodic : IsLPeriodic d L g) : + torus_quotient d L hL → (E d →L[ℝ] ℝ) := + Quotient.lift (fderiv ℝ g) (literal_fderiv_respects hL hperiodic) + +@[simp] theorem quotientDerivative_proj (d : ℕ) (L : ℝ) (hL : 0 < L) + (g : E d → ℝ) (hperiodic : IsLPeriodic d L g) (x : E d) : + quotientDerivative d L hL g hperiodic (torus_proj d L hL x) = + fderiv ℝ g x := rfl + +theorem quotientDerivative_continuous {d : ℕ} {L : ℝ} (hL : 0 < L) + {g : E d → ℝ} (hperiodic : IsLPeriodic d L g) + (hsmooth : IsSmooth d g) : + Continuous (quotientDerivative d L hL g hperiodic) := + ((hsmooth 1).continuous_fderiv (by norm_num)).quotient_lift + (literal_fderiv_respects hL hperiodic) + +/-- The full image of all literal critical points, on C263's actual quotient. -/ +def quotientCriticalSet (d : ℕ) (L : ℝ) (hL : 0 < L) (g : E d → ℝ) : + Set (torus_quotient d L hL) := + torus_proj d L hL '' {x : E d | IsCriticalPoint d g x} + +theorem mem_quotientCriticalSet_iff {d : ℕ} {L : ℝ} (hL : 0 < L) + {g : E d → ℝ} (hperiodic : IsLPeriodic d L g) + (q : torus_quotient d L hL) : + q ∈ quotientCriticalSet d L hL g ↔ + quotientDerivative d L hL g hperiodic q = 0 := by + constructor + · rintro ⟨x, hx, rfl⟩ + exact hx + · intro hq + obtain ⟨x, rfl⟩ := torus_proj_surjective d L hL q + exact ⟨x, hq, rfl⟩ + +theorem quotientCriticalSet_closed {d : ℕ} {L : ℝ} (hL : 0 < L) + {g : E d → ℝ} (hperiodic : IsLPeriodic d L g) + (hsmooth : IsSmooth d g) : + IsClosed (quotientCriticalSet d L hL g) := by + have heq : quotientCriticalSet d L hL g = + {q | quotientDerivative d L hL g hperiodic q = 0} := by + ext q + exact mem_quotientCriticalSet_iff hL hperiodic q + rw [heq] + exact isClosed_eq (quotientDerivative_continuous hL hperiodic hsmooth) continuous_const + +theorem quotientCriticalSet_discrete {d : ℕ} {L : ℝ} (hL : 0 < L) + {g : E d → ℝ} (hperiodic : IsLPeriodic d L g) + (hsmooth : IsSmooth d g) + (hmorse : ∀ x : E d, IsCriticalPoint d g x → + ∃ j : ℕ, HessianHasInertia d g x j) : + IsDiscrete (quotientCriticalSet d L hL g) := by + rw [isDiscrete_iff_forall_mem_exists_isOpen] + rintro q ⟨x, hx, rfl⟩ + obtain ⟨j, hj⟩ := hmorse x hx + obtain ⟨U, hU, hxU, hiso⟩ := literal_critical_isolated hsmooth hx hj + refine ⟨torus_proj d L hL '' U, + (torus_proj_isCoveringMap d L hL).isOpenMap U hU, ?_⟩ + ext q + constructor + · rintro ⟨⟨y, hy, rfl⟩, hcy⟩ + have hyc : IsCriticalPoint d g y := + (mem_quotientCriticalSet_iff hL hperiodic _).mp hcy + have hyx := hiso y hy hyc + simp [hyx] + · intro hq + have hqx := Set.mem_singleton_iff.mp hq + subst q + exact ⟨⟨x, hxU, rfl⟩, ⟨x, hx, rfl⟩⟩ + +/-- Core finiteness only needs nondegeneracy at critical points; distinct heights +are not used. No finiteness conclusion is supplied in the assumptions. -/ +theorem quotientCriticalSet_finite_of_inertia {d : ℕ} {L : ℝ} (hL : 0 < L) + {g : E d → ℝ} (hsmooth : IsSmooth d g) + (hperiodic : IsLPeriodic d L g) + (hmorse : ∀ x : E d, IsCriticalPoint d g x → + ∃ j : ℕ, HessianHasInertia d g x j) : + (quotientCriticalSet d L hL g).Finite := by + have hc : IsCompact (quotientCriticalSet d L hL g) := by + simpa only [Set.univ_inter] using + (torus_compact d L hL).inter_right + (quotientCriticalSet_closed hL hperiodic hsmooth) + exact hc.finite (quotientCriticalSet_discrete hL hperiodic hsmooth hmorse) + +/-- C292-facing theorem on the literal Morse-distinct locus. The result in fact +holds for every natural dimension; C292 may instantiate it at its `d ≥ 1`. -/ +theorem quotientCriticalSet_finite (d : ℕ) (L : ℝ) (hL : 0 < L) + (g : E d → ℝ) (hsmooth : IsSmooth d g) + (hperiodic : IsLPeriodic d L g) (hmorse : IsMorseDistinct d L g) : + (quotientCriticalSet d L hL g).Finite := + quotientCriticalSet_finite_of_inertia hL hsmooth hperiodic hmorse.1 + +end TorusMorseFinite diff --git a/frontiers/critical_ridge_20261020/project/TorusTopology.lean b/frontiers/critical_ridge_20261020/project/TorusTopology.lean new file mode 100644 index 000000000..ed678ea32 --- /dev/null +++ b/frontiers/critical_ridge_20261020/project/TorusTopology.lean @@ -0,0 +1,247 @@ +import Mathlib + +/-! +# The actual period-lattice quotient and specified-start path compatibility + +C254 proposed source. Compilation and kernel audit: NOT_RUN. +The ambient space and lattice-vector formula below are exactly those in the +source-bound Field.lean; this module does not import or alter that owner's file. +All quotient, compactness, covering and descent properties are constructed. +The final lift endpoint is existential. No critical-level attainment is claimed. +Compile fixes at the pin (Lean v4.34.1, Mathlib d13f23b7), no statement altered: `Basis` → `Module.Basis`, `Basis.unitsSMul_apply` → `Module.Basis.unitsSMul_apply`, lattice discreteness passed via `SetLike.isDiscrete_iff_discreteTopology.mpr` instead of `DiscreteTopology.isDiscrete`, quotient path-connectedness via `inferInstanceAs (PathConnectedSpace (Quotient _))` instead of `infer_instance`. +Three unused simp arguments (`PiLp.single_apply` twice, `hij`) removed from `torus_basis_sum_eq_latticeVec` so the +file elaborates with warnings as errors; namespace `TorusFiltration` in this companion (handoff: `ResearchFormalCoreR1`). +-/ + +noncomputable section + +open Topology + +namespace TorusFiltration +abbrev torus_E (d : ℕ) := EuclideanSpace ℝ (Fin d) + +/-- The exact `Field.latticeVec` formula, retained without any coordinate rescaling. -/ +def torus_latticeVec (d : ℕ) (L : ℝ) (n : Fin d → ℤ) : torus_E d := + ∑ i, EuclideanSpace.single i (L * (n i : ℝ)) + +theorem torus_field_latticeVec_formula (d : ℕ) (L : ℝ) (n : Fin d → ℤ) : + torus_latticeVec d L n = ∑ i, EuclideanSpace.single i (L * (n i : ℝ)) := rfl + +def torus_periodBasis (d : ℕ) (L : ℝ) (hL : 0 < L) : + Module.Basis (Fin d) ℝ (torus_E d) := + (EuclideanSpace.basisFun (Fin d) ℝ).toBasis.unitsSMul + (fun _ => Units.mk0 L hL.ne') + +def torus_periodLattice (d : ℕ) (L : ℝ) (hL : 0 < L) : Submodule ℤ (torus_E d) := + Submodule.span ℤ (Set.range (torus_periodBasis d L hL)) + +abbrev torus_quotient (d : ℕ) (L : ℝ) (hL : 0 < L) := + torus_E d ⧸ (torus_periodLattice d L hL).toAddSubgroup + +def torus_proj (d : ℕ) (L : ℝ) (hL : 0 < L) : torus_E d → torus_quotient d L hL := + QuotientAddGroup.mk + +/-- Concrete adapter from integer basis coefficients to Field's exact vector formula. -/ +theorem torus_basis_sum_eq_latticeVec (d : ℕ) (L : ℝ) (hL : 0 < L) + (n : Fin d → ℤ) : + ∑ i, n i • torus_periodBasis d L hL i = torus_latticeVec d L n := by + classical + unfold torus_latticeVec + apply Finset.sum_congr rfl + intro i hi + ext j + by_cases hij : i = j + · subst j + simp [torus_periodBasis, Module.Basis.unitsSMul_apply, OrthonormalBasis.coe_toBasis, + EuclideanSpace.basisFun_apply, Units.smul_def, PiLp.smul_apply, + zsmul_eq_mul, mul_comm] + · simp [torus_periodBasis, Module.Basis.unitsSMul_apply, OrthonormalBasis.coe_toBasis, + EuclideanSpace.basisFun_apply, Units.smul_def, PiLp.smul_apply, + Ne.symm hij] + +theorem torus_lattice_mem_iff (d : ℕ) (L : ℝ) (hL : 0 < L) (x : torus_E d) : + x ∈ torus_periodLattice d L hL ↔ ∃ n : Fin d → ℤ, torus_latticeVec d L n = x := by + classical + change x ∈ Submodule.span ℤ (Set.range (torus_periodBasis d L hL)) ↔ _ + rw [Submodule.mem_span_range_iff_exists_fun] + simp only [torus_basis_sum_eq_latticeVec] + +instance torus_lattice_discrete (d : ℕ) (L : ℝ) (hL : 0 < L) : + DiscreteTopology (torus_periodLattice d L hL) := by + unfold torus_periodLattice + infer_instance + +instance torus_lattice_addSubgroup_discrete (d : ℕ) (L : ℝ) (hL : 0 < L) : + DiscreteTopology (torus_periodLattice d L hL).toAddSubgroup := by + unfold torus_periodLattice + infer_instance + +instance torus_lattice_isZLattice (d : ℕ) (L : ℝ) (hL : 0 < L) : + IsZLattice ℝ (torus_periodLattice d L hL) := by + unfold torus_periodLattice + infer_instance + +theorem torus_proj_surjective (d : ℕ) (L : ℝ) (hL : 0 < L) : + Function.Surjective (torus_proj d L hL) := QuotientAddGroup.mk_surjective + +theorem torus_proj_continuous (d : ℕ) (L : ℝ) (hL : 0 < L) : + Continuous (torus_proj d L hL) := continuous_quotient_mk' + +theorem torus_proj_eq_iff (d : ℕ) (L : ℝ) (hL : 0 < L) (x y : torus_E d) : + torus_proj d L hL x = torus_proj d L hL y ↔ + ∃ n : Fin d → ℤ, y = x + torus_latticeVec d L n := by + change (QuotientAddGroup.mk x : torus_quotient d L hL) = QuotientAddGroup.mk y ↔ _ + rw [QuotientAddGroup.eq] + change -x + y ∈ torus_periodLattice d L hL ↔ _ + rw [torus_lattice_mem_iff] + constructor + · rintro ⟨n, hn⟩ + exact ⟨n, by rw [hn]; abel⟩ + · rintro ⟨n, rfl⟩ + exact ⟨n, by abel⟩ + +/-- Duplicate representatives have exactly the same quotient image. -/ +theorem torus_control_lattice_translate (d : ℕ) (L : ℝ) (hL : 0 < L) + (x : torus_E d) (n : Fin d → ℤ) : + torus_proj d L hL (x + torus_latticeVec d L n) = torus_proj d L hL x := + ((torus_proj_eq_iff d L hL x _).2 ⟨n, rfl⟩).symm + +theorem torus_proj_isCoveringMap (d : ℕ) (L : ℝ) (hL : 0 < L) : + IsCoveringMap (torus_proj d L hL) := + ((torus_periodLattice d L hL).toAddSubgroup.isAddQuotientCoveringMap_of_comm + (SetLike.isDiscrete_iff_discreteTopology.mpr + (torus_lattice_addSubgroup_discrete d L hL))).isCoveringMap + +theorem torus_compact (d : ℕ) (L : ℝ) (hL : 0 < L) : + IsCompact (Set.univ : Set (torus_quotient d L hL)) := by + have hc := IsZLattice.isCompact_range_of_periodic (torus_periodLattice d L hL) + (torus_proj d L hL) (torus_proj_continuous d L hL) + (fun z w hw => QuotientAddGroup.mk_add_of_mem z hw) + rwa [Set.range_eq_univ.mpr (torus_proj_surjective d L hL)] at hc + +theorem torus_pathConnectedSpace (d : ℕ) (L : ℝ) (hL : 0 < L) : + PathConnectedSpace (torus_quotient d L hL) := by + exact inferInstanceAs <| PathConnectedSpace (Quotient _) + +/-- Exact Field periodicity predicate with the literal lattice-vector adapter above. -/ +def torus_isPeriodic (d : ℕ) (L : ℝ) (g : torus_E d → ℝ) : Prop := + ∀ (x : torus_E d) (n : Fin d → ℤ), g (x + torus_latticeVec d L n) = g x + +theorem torus_field_periodic_formula (d : ℕ) (L : ℝ) (g : torus_E d → ℝ) : + torus_isPeriodic d L g ↔ + ∀ (x : EuclideanSpace ℝ (Fin d)) (n : Fin d → ℤ), + g (x + ∑ i, EuclideanSpace.single i (L * (n i : ℝ))) = g x := Iff.rfl + +theorem torus_periodic_respects (d : ℕ) (L : ℝ) (hL : 0 < L) + (g : torus_E d → ℝ) (hg : torus_isPeriodic d L g) (x y : torus_E d) + (hxy : QuotientAddGroup.leftRel (torus_periodLattice d L hL).toAddSubgroup x y) : + g x = g y := by + have hq : torus_proj d L hL x = torus_proj d L hL y := Quotient.sound hxy + obtain ⟨n, rfl⟩ := (torus_proj_eq_iff d L hL x y).1 hq + exact (hg x n).symm + +def torus_descend (d : ℕ) (L : ℝ) (hL : 0 < L) + (g : torus_E d → ℝ) (hg : torus_isPeriodic d L g) : torus_quotient d L hL → ℝ := + Quotient.lift g (torus_periodic_respects d L hL g hg) + +theorem torus_descend_proj (d : ℕ) (L : ℝ) (hL : 0 < L) + (g : torus_E d → ℝ) (hg : torus_isPeriodic d L g) (x : torus_E d) : + torus_descend d L hL g hg (torus_proj d L hL x) = g x := rfl + +theorem torus_descend_continuous (d : ℕ) (L : ℝ) (hL : 0 < L) + (g : torus_E d → ℝ) (hg : torus_isPeriodic d L g) (hgc : Continuous g) : + Continuous (torus_descend d L hL g hg) := + hgc.quotient_lift (torus_periodic_respects d L hL g hg) + +/-- Lift from a prescribed representative; the endpoint is determined existentially. -/ +theorem torus_path_lift_from (d : ℕ) (L : ℝ) (hL : 0 < L) + {M : torus_E d} {y : torus_quotient d L hL} + (γ : Path (torus_proj d L hL M) y) : + ∃ z : torus_E d, ∃ Γ : Path M z, + torus_proj d L hL z = y ∧ + ∀ t : unitInterval, torus_proj d L hL (Γ t) = γ t := by + let cov := torus_proj_isCoveringMap d L hL + let Γ := cov.liftPath γ M γ.source + refine ⟨Γ 1, ⟨Γ, cov.liftPath_zero γ M γ.source, rfl⟩, ?_, ?_⟩ + · exact (congrFun (cov.liftPath_lifts γ M γ.source) 1).trans γ.target + · intro t + exact congrFun (cov.liftPath_lifts γ M γ.source) t + +/-- Control: a constant projected path cannot be lifted from M to a different lift. +This refutes replacing the existential endpoint by an arbitrary chosen representative. -/ +theorem torus_control_constant_path_endpoint (d : ℕ) (L : ℝ) (hL : 0 < L) + {M z : torus_E d} (Γ : Path M z) + (hΓ : ∀ t : unitInterval, torus_proj d L hL (Γ t) = torus_proj d L hL M) : z = M := by + have heq : (Γ : unitInterval → torus_E d) = fun _ => M := + (torus_proj_isCoveringMap d L hL).eq_of_comp_eq Γ.continuous continuous_const + (funext hΓ) 0 Γ.source + exact Γ.target.symm.trans (congrFun heq 1) + +/-- Combining the duplicate-image and uniqueness controls gives a direct rejection +of any different preselected endpoint for a constant quotient path. -/ +theorem torus_control_no_arbitrary_endpoint (d : ℕ) (L : ℝ) (hL : 0 < L) + (M : torus_E d) (n : Fin d → ℤ) (hn : torus_latticeVec d L n ≠ 0) : + torus_proj d L hL (M + torus_latticeVec d L n) = torus_proj d L hL M ∧ + ¬ ∃ Γ : Path M (M + torus_latticeVec d L n), + ∀ t : unitInterval, torus_proj d L hL (Γ t) = torus_proj d L hL M := by + refine ⟨torus_control_lattice_translate d L hL M n, ?_⟩ + rintro ⟨Γ, hΓ⟩ + have heq := torus_control_constant_path_endpoint d L hL Γ hΓ + apply hn + exact add_left_cancel (show M + torus_latticeVec d L n = M + 0 by simpa using heq) + +/-- Higher-endpoint compatibility for any scalar path predicate, including strict +and closed thresholds. No conclusion here asserts critical-level attainment. -/ +theorem torus_higher_path_iff (d : ℕ) (L : ℝ) (hL : 0 < L) + (g : torus_E d → ℝ) (hg : torus_isPeriodic d L g) (M : torus_E d) (P : ℝ → Prop) : + (∃ y : torus_E d, g M < g y ∧ ∃ γ : Path M y, ∀ t : unitInterval, P (g (γ t))) ↔ + (∃ y : torus_quotient d L hL, + torus_descend d L hL g hg (torus_proj d L hL M) < torus_descend d L hL g hg y ∧ + ∃ γ : Path (torus_proj d L hL M) y, + ∀ t : unitInterval, P (torus_descend d L hL g hg (γ t))) := by + constructor + · rintro ⟨y, hy, γ, hγ⟩ + exact ⟨torus_proj d L hL y, hy, γ.map (torus_proj_continuous d L hL), hγ⟩ + · rintro ⟨y, hy, γ, hγ⟩ + obtain ⟨z, Γ, hz, hΓ⟩ := torus_path_lift_from d L hL γ + refine ⟨z, ?_, Γ, ?_⟩ + · have hz' := congrArg (torus_descend d L hL g hg) hz + change g z = torus_descend d L hL g hg y at hz' + change g M < torus_descend d L hL g hg y at hy + rwa [← hz'] at hy + · intro t + have ht := hγ t + rw [← hΓ t] at ht + exact ht + +theorem torus_strict_higher_path_iff (d : ℕ) (L : ℝ) (hL : 0 < L) + (g : torus_E d → ℝ) (hg : torus_isPeriodic d L g) (M : torus_E d) (h : ℝ) : + (∃ y : torus_E d, g M < g y ∧ ∃ γ : Path M y, ∀ t : unitInterval, h < g (γ t)) ↔ + (∃ y : torus_quotient d L hL, + torus_descend d L hL g hg (torus_proj d L hL M) < torus_descend d L hL g hg y ∧ + ∃ γ : Path (torus_proj d L hL M) y, + ∀ t : unitInterval, h < torus_descend d L hL g hg (γ t)) := + torus_higher_path_iff d L hL g hg M (fun a => h < a) + +theorem torus_closed_higher_path_iff (d : ℕ) (L : ℝ) (hL : 0 < L) + (g : torus_E d → ℝ) (hg : torus_isPeriodic d L g) (M : torus_E d) (h : ℝ) : + (∃ y : torus_E d, g M < g y ∧ ∃ γ : Path M y, ∀ t : unitInterval, h ≤ g (γ t)) ↔ + (∃ y : torus_quotient d L hL, + torus_descend d L hL g hg (torus_proj d L hL M) < torus_descend d L hL g hg y ∧ + ∃ γ : Path (torus_proj d L hL M) y, + ∀ t : unitInterval, h ≤ torus_descend d L hL g hg (γ t)) := + torus_higher_path_iff d L hL g hg M (fun a => h ≤ a) + +theorem torus_global_max_iff (d : ℕ) (L : ℝ) (hL : 0 < L) + (g : torus_E d → ℝ) (hg : torus_isPeriodic d L g) (M : torus_E d) : + (∀ y : torus_E d, g y ≤ g M) ↔ + ∀ y : torus_quotient d L hL, + torus_descend d L hL g hg y ≤ torus_descend d L hL g hg (torus_proj d L hL M) := by + constructor + · intro h y + obtain ⟨z, rfl⟩ := torus_proj_surjective d L hL y + exact h z + · intro h y + exact h (torus_proj d L hL y) + +end TorusFiltration \ No newline at end of file diff --git a/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_candidate2_source_addendum.md b/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_candidate2_source_addendum.md new file mode 100644 index 000000000..26200b4cf --- /dev/null +++ b/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_candidate2_source_addendum.md @@ -0,0 +1,38 @@ +# C299 nonauthor review — candidate 2 source addendum + +Actual reviewer: OpenAI Codex `/root/c299_nonauthor_review`, delegated by root chat `01a0bbb5-2fcb-77f0-b78b-4d220ddd7ab2` for Dylan Roy. This is an additive source review, not an edit of the historical candidate 1 review. + +**Source disposition: ACCEPT_SCOPED_SOURCE, with formal execution still UNCONFIRMED.** Candidate 2 addresses both source-derived elaboration concerns in the preliminary review without changing any public statement or assumption. No blocking mathematical source issue remains identified at this finite endpoint. Compilation, complete local-origin declaration/axiom census, named-module kernel checks, negative controls and exact hosted artifact verification remain separate gates. + +## Exact successor and unchanged scope + +Candidate 2 is `project/CriticalRidge.lean`, 8149 bytes, SHA-256 `b3c22e590f761953ba322ad2903978e3982179204ad5c4a166dffc5fa1558322`. I freshly hashed the working source and its same-hash snapshot under `execution/author/source-attempts`; both match. Its predecessor is candidate 1, 7922 bytes, SHA-256 `729b57030c9d595b6ee9061b7cc6c730a6de713044ab0f7509637ed029771375`. + +I read the author freeze and diff, and independently compared the two frozen source snapshots. The observed difference consists of exactly two proof-body changes. The stored `execution/author/CANDIDATE2.diff` freshly hashes to `ae861fed21ed6ad6a8f24daf974971cbe200173663e880a1d5f8c5d13273fe40`. The comparison command's exit status 1 denotes observed file differences, not a failed mathematical check. + +The four definitions, five theorem statements, public hypotheses and all four conclusions for the same selected ridge are unchanged. The detailed proof reconstruction, local-versus-global scope analysis, independent adversarial examples, source reuse and paper-byte qualifications in `c299_nonauthor_preliminary_candidate1.md` therefore continue to apply. That historical report is 16507 bytes, SHA-256 `3d95edee47d2349fa1aa4c2dff6be5ad798dbc0dd40a0eabc60f2250b7489701`. + +## Assessment of the two changes + +1. The first change introduces a derivative assertion at the actual inner-map value `p + ridgeAddition V 0`, obtained from the derivative at `p` by `map_zero` and `add_zero`, and uses it in the chain rule. This resolves the base-point mismatch identified as F1. The derivative map and mathematical argument are unchanged. +2. The second change replaces the restricted-block proof's `rfl` with simplification after extensionality, explicitly unfolding the structural maps. This accounts for the `0 + v = v` identity identified as F2. It proves the same block identity and introduces no additional assumption. + +These source changes address the identified concerns in the expected mathematical way. I have not executed their Lean elaboration and do not claim that every remaining typeclass or tactic obligation has compiled. The initial findings were predictions from source, and candidate 1's actual execution produced no diagnostic confirming them. + +## Historical execution evidence + +I fully read candidate 1's terminal receipt and freshly hashed it: `execution/author/runs/20261020T134843Z-89c13163/RECEIPT.json`, SHA-256 `6db1db80b14045d5b964658b76aa620fa512a960aab1e767e853cb7a97e92c45`. It records: + +- Start: `2026-10-20T13:48:43.888892+00:00`. +- End: `2026-10-20T13:58:43.933989+00:00`. +- Elapsed seconds: `600.041933625`. +- `returncode: -15`, `timed_out: true`, and `source_unchanged: true`. +- Both stream hashes equal the empty-file SHA-256 `e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855`; I independently rehashed both files and confirmed that equality. + +This is an inconclusive bounded compile attempt. It is neither a proof result nor a refutation, and the empty streams do not locate the precise point of the stall. The author freeze separately records no resulting object; the terminal receipt itself does not contain an object-inventory field. No native retry or candidate 2 execution was performed by this reviewer. The author freeze declares that candidate 2 had not been executed when frozen. + +## Attribution and limits + +I remain the nonauthor reviewer. I inspected frozen source, reported defects and evaluated the author's subsequent changes; I did not edit the implementation or supply a replacement proof. Review adds mathematical reconstruction and adversarial analysis. Source exposed, same provider, organizational independence credit 0, blind review 0, human review 0, scientific effect NONE. No review by Dylan is implied. + +This source acceptance covers only the negative partial-gradient ridge and its differentiated equation. Reduced positivity, uniform signs, fiber concavity, tubes, paths, critical neighborhood basis, Euclidean full LPC, quotient transport, C294 premise discharge, full ordinary bars and scientific obligations remain OPEN. The broader goal remains ACTIVE_UNMET. diff --git a/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_e1_acceptance_addendum.md b/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_e1_acceptance_addendum.md new file mode 100644 index 000000000..96d7a387e --- /dev/null +++ b/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_e1_acceptance_addendum.md @@ -0,0 +1,67 @@ +# C299 nonauthor engineering addendum — E1 successor + +Actual reviewer: OpenAI Codex `/root/c299_nonauthor_review`, delegated by root chat `01a0bbb5-2fcb-77f0-b78b-4d220ddd7ab2` for Dylan Roy. + +**Disposition: ACCEPT_SCOPED_DEVELOPMENT_DISPATCH.** The E1 environment-receipt gap is addressed by the frozen successor at the declared selected-environment scope. No blocking source issue remains identified for the bounded first hosted development attempt. This clears the identified source-review blocker within root's already authorized execution plan; it is not a new owner authorization or a result of executing that plan. Actual compilation, named-module kernel results, complete census, diagnostic qualification and final hosted acceptance remain unconfirmed. + +The historical preliminary engineering report remains unchanged: `c299_nonauthor_engineering_preliminary.md`, 11839 bytes, SHA-256 `7c7b63b60534465ed3c51ef7bd01d49134d6d7724955b2c22bafbc75499afa24`. + +## Exact source identities and read extent + +I freshly hashed the successor helper files and the copied root publication files. Both locations agree: + +- `c299_hosted_verify.py`: 32069 bytes, SHA-256 `e4c5b9dd02e2ba2f98da27707c42ef861d9039b52864833d2164a3114f318f49`. +- `test_c299_hosted_verify.py`: 17863 bytes, SHA-256 `62400129fda7b863d692397deac2a9d83b7f1101d98b53ed1043f0ef8cfd604e`. + +I fully read both complete successor diffs, independently compared the preserved predecessor driver with the successor, and directly reread the new environment-construction, per-phase validation and receipt code. I fully read `E1_HANDOFF.md` and `E1_IDENTITIES.json`, freshly hashing them to `3c694212adf41a46e407d1f9414db49ca7cc7bbbc6ffffa366a2cb8003b87032` and `dbb100284fa8cea4845394bfb556602ec1e6c02c56fa0f34087d836f613b387c`, respectively. + +The stored complete diff identities are: + +- Driver diff: `e483114dd0a8e22c538ce6a9542420db2cfe3cf7c3eee73ec8a6f180bbbbcf84`. +- Test diff: `6bbcb3f6024b6513f9d5b69f5d52ee4feee9da534c1402a41809aadce794a10a`. + +I freshly confirmed the final publication manifest remains `3c80ed35bc7a28342b127ca08f046be913021ab28ff13119e698c981eb0aef6b`, and the workflow remains `70e7396d868f00097a862895954ad19962d9df96cb1d8c44a655b76e5e5874a1`. The mathematical candidate, audit module and both negative fixtures are outside the E1 changes. The previous detailed review of their exact frozen sources and of the five-build/four-kernel/four-origin-census sequence remains applicable. + +## Why the amendment resolves E1 + +The production execution route now constructs a declared environment before its first runtime probe and persists that contract in the aggregate report. It: + +1. Requires and retains an explicit launcher `PATH`. +2. Removes inherited variables in the LEAN, LAKE, LD_ and DYLD_ name families, except Lake's `LEAN_PATH`. +3. Prefixes the resolved fresh local object directory to the retained Lake search path and sets `LEAN_NUM_THREADS=2`. +4. Records the policy, actual selected path/thread values, retained original Lake path, removed variable names and a canonical digest. +5. Resolves the launcher using precisely the recorded `PATH`, rather than an implicit ambient lookup. + +The per-phase code measures the actual selected values, records their digest and the parent contract digest, and detects a changed selected value, invalid contract/policy or reintroduced tool/loader override before spawning the subprocess. It retains the failure receipt and exact empty streams when admission is denied. Removed override values and unrelated inherited values are not dumped. + +This is a selected-environment binding policy. Other inherited variables remain available and are not recorded; neither the implementation nor this acceptance claims complete environment isolation or full reproduction of every inherited variable. The retained import path makes the actual source-search precedence reviewable, resolving the specific missing evidence in E1. + +The generic `run_phase` utility still permits a null contract for its inert tests. The production `execute` path constructs and saves the contract before every route to a formal `run_phase` invocation, including runtime probes. I found no production route in these bytes that silently invokes the formal sequence with a null contract. + +## Controls reviewed without re-execution + +The two added controls are substantive: they test override stripping, the actual declared-path launcher lookup, dependency-path suffix retention, explicit thread count, absence of an empty appended path component, and exclusion of sentinel secret values from the recorded contract. They also mutate `LEAN_PATH` or inject `LD_PRELOAD` and check that the child does not create its sentinel file, the receipt records failure without an exit code, and phase/aggregate records agree. + +I fully read the final normal and optimized receipts and both complete stderr reports. These author records report return code 0 and 13/13 passing tests for each run, under pre-execution declaration digest `02a947caf83e3ae1da781b583cc830d215ffc965948d1aec8ff75eb6276174a0`. They retain the earlier two missing-implementation failures and the first GREEN fixture failure caused by the native `/var` versus resolved `/private/var` alias. The latter repair changes the inert fixture's path normalization, not the production driver. + +I did not execute these tests or any other test or mathematical program. The test results are inspected author execution evidence, not an independent runtime replay. They do not qualify actual Lean diagnostic spelling or prove the mathematical theorem. + +## Development HOLD remains mandatory + +The E1 diff changes environment construction, validation and receipts only. It does not change the prospective negative parser, the two fixture applications, the complete audit, object integrity checks or the unconditional `require_final_predicates()` stop. Both negative semantic-success flags remain false and qualification remains pending even if the prospective parser matches. + +The first hosted run therefore remains an evidence-collection attempt with aggregate HOLD, regardless of whether all five builds, four named kernels and prospective negative diagnostics succeed. Final qualification requires source-bound review of actual compiler output and a separately reviewed changed acceptance driver followed by its applicable complete sequence. Missing artifacts, failed imports, syntax/resource errors and timeouts cannot be relabeled as intended negative-control success. + +## Additive corrected-paper custody + +Root supplied the source owner's already-published correction at Math- PR487 comment `6292292150`, recorded in `sources/CORRECTED_PAPER_CUSTODY.json`. I read that record and freshly checked the saved corrected raw proposal `sources/RIDGE_PROPOSAL_CORRECTED_RAW.md`: 6961 bytes, SHA-256 `96a13c7e14e781220915e927caa34ba9ca94e26bd12bb7d53e7459b759c9b141`. Its final bytes contain exactly two terminating LF characters. + +Root's custody record states that this corrected public fenced body matches the author bytes directly. My fresh local byte/hash observation agrees with that exact author identity; I did not perform an additional remote fetch. The original comment `6292079965` had a 6960-byte direct fenced body requiring one LF to reconstruct these same author bytes. That earlier extraction, its failure history and the preliminary review's historical qualification remain intact. + +The corrected custody supplies a direct raw-byte source for the same mathematical proposal. It changes no mathematical assertion, proof source, candidate hash or review conclusion. + +## Attribution and limits + +I remain the nonauthor of both implementation and verifier, having reported a defect and reviewed the engineering author's repair. I edited only my review artifacts and ran no Lean/compiler/tests/workflow or mathematical program. Read/hash/diff shell utilities were used for source custody; earlier shorthand about no program execution refers to the prohibited formal, test and mathematical execution, not to those permitted utilities. Source exposed, same provider, organizational independence credit 0, blind review 0, human review 0, scientific effect NONE. No review by Dylan is implied. + +The broader critical neighborhood basis, quotient/full-LPC, ordinary-bar and scientific obligations remain OPEN. Full research goal ACTIVE_UNMET. diff --git a/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_engineering_preliminary.md b/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_engineering_preliminary.md new file mode 100644 index 000000000..7aba5ad11 --- /dev/null +++ b/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_engineering_preliminary.md @@ -0,0 +1,71 @@ +# C299 nonauthor engineering source review — first collector freeze + +Actual reviewer: OpenAI Codex `/root/c299_nonauthor_review`, delegated by root chat `01a0bbb5-2fcb-77f0-b78b-4d220ddd7ab2` for Dylan Roy. Source review only; no program, Lean, compiler, test or workflow was executed by this reviewer. Native checkpoint: 2026-10-20 14:08:41 UTC. + +**Disposition: AMEND before development dispatch for one concrete environment-receipt gap (E1).** The source otherwise implements the declared five-build/four-kernel/four-origin-census development sequence, with an unconditional final HOLD. This review is not formal verification or final negative-control qualification. + +Root accepted E1 and assigned a narrow engineering amendment. This preliminary record preserves the original reviewed identities; a successor needs its own exact diff review. The mathematical candidate remains accepted at source scope under `b3c22e590f761953ba322ad2903978e3982179204ad5c4a166dffc5fa1558322`, with formal gates unconfirmed. + +## Exact reviewed source + +I fully read and freshly hashed these root publication files: + +| File | Bytes | SHA-256 | +|---|---:|---| +| `publication/c299_hosted_verify.py` | 28907 | `126d1aa5b0dfd87eca4fa939d55d969020301e7d61a0a48eb063dfabfa7a2005` | +| `publication/test_c299_hosted_verify.py` | 13920 | `be6a5cc800446c9684cf77537437abafb1f2bbb8238dd042c15dc41dec916dfc` | +| `publication/project/CriticalRidgeAxiomAudit.lean` | 2728 | `cff55f5b7721a621530ae1020b81e6cc89ce5c405396145e1ca5d3cfba4b2fb7` | +| `publication/negative-project/WithoutCriticality.lean` | 944 | `6ebc44de843b951c312add4848962d76c4788cc10bdacf17002eb69fd370f1d2` | +| `publication/negative-project/WithoutNegativeDefiniteness.lean` | 872 | `ad204aee211aa3074621f56eeaf8e1a3f3a522b7c7cbe2bbdd67f3759833feb9` | +| `publication/HOSTED_SOURCE_MANIFEST.json` | 1731 | `3c80ed35bc7a28342b127ca08f046be913021ab28ff13119e698c981eb0aef6b` | +| `publication-workflow/c299-critical-ridge.yml` | 3030 | `70e7396d868f00097a862895954ad19962d9df96cb1d8c44a655b76e5e5874a1` | + +I also fully read the publication's README, execution contract and upstream byte-equality record, plus the helper's additive amendment handoff. I independently compared the draft and publication workflow: the only difference is replacement of the manifest placeholder with the exact `3c80ed35...` digest. I freshly hashed all four copied proof/input sources; their hashes match the final manifest and the previously reviewed mathematical candidate. + +The final manifest uses all three input origins at commit `7af365e8c8db1ae0275d4efe08a70a678f153ca2` under `frontiers/critical_level_attainment_20261020/final-project`. I read root's record of remote/native byte equality. I did not independently perform those remote fetches, and the driver explicitly leaves remote origin-byte equality to that separate custody check. The helper's historical candidate manifests are not substituted for the final publication manifest. + +## Finding E1: effective environment is not retained + +At driver lines 436–438 the child environment is copied from `os.environ`, its `LEAN_PATH` is prefixed with the new object directory, and its `LEAN_NUM_THREADS` is set to 2. The runtime probes, all five builds, kernel checks and fixtures receive that environment. The aggregate and phase receipts record commands, working directory, runtime/source/object identities and resource bounds, but they do not record the resulting `LEAN_PATH`, `PATH`, or a relevant Lean/Lake/loader override policy and its effective non-secret settings. + +This leaves an actual evidence gap: the retained receipt cannot independently show the import-path precedence or the relevant inherited overrides used by the subprocesses. The code recipe and source identity document how the environment is constructed; they do not preserve the actual inherited values. Source/command binding is present, environment binding is incomplete. + +The requested amendment is bounded evidence work: retain selected safe execution-environment fields and an explicit removed/preserved override policy, including the actual import search path. Do not dump the full process environment or credentials. The original collector has no final-acceptance bypass through this omission because final acceptance is unconditionally disabled, but dispatch should wait for the agreed source-bound amendment. I supplied no implementation patch and edited no engineering source. + +## Sequence and scope reconstructed from source + +The source gate requires an explicit manifest digest and exactly five named Lean sources plus two fixtures. It checks both length and SHA-256, rejects symlinked listed source paths, validates all three origin records, checks the repository's separate literal Lifetime source, and checks the Lean toolchain and exact nine package revisions. It records hashes of the verifier, its tests and the workflow. Runtime origin-byte verification is not implied by those checks. + +The preflight binds actual GitHub repository, run, attempt, workflow and job, `GITHUB_SHA`, checked-out commit/tree/parents, and available PR head/base. It snapshots exact local source/support bytes before execution. Execution requires the unused source-preflight result and refuses an automatic retry. It creates the output directory with `exist_ok=False` and places that directory first in `LEAN_PATH`. + +The five builds run in dependency order: Lifetime, TorusTopology, MorseFiniteCritical, CriticalRidge and CriticalRidgeAxiomAudit. Each must add its own main `.olean`, may add only its own declared auxiliary output suffixes, and must preserve prior objects. The full local output set is validated after builds. The four standard named-module kernel invocations cover TorusTopology, MorseFiniteCritical, CriticalRidge and CriticalRidgeAxiomAudit. Lifetime is freshly built and included in the axiom census but is intentionally excluded from the named-kernel loop; the documentation states that boundary. + +The Lean audit enumerates `env.constants` by actual origin module index for Lifetime, TorusTopology, MorseFiniteCritical and CriticalRidge, with exporting disabled. It checks the declaration's presence in the kernel environment, collects every enumerated declaration's transitive axioms, rejects anything outside `propext`, `Classical.choice`, `Quot.sound`, and checks required names. It does not merely audit a sample of theorem names. The nine new public C299 declarations are required targets, alongside four consumed input declarations; they are not the census denominator. The audit module itself is built and kernel checked, but is not a fifth imported-origin census. + +The Python census parser checks module order, module counts, every printed declaration, duplicate names, allowed axioms, the total, required targets, interrupted/truncated wrapped arrays and unknown audit markers. The current source supports the stated complete local-origin audit, subject to actual Lean elaboration and actual output still being unobserved in this review. + +The runtime is resolved through the selected launcher, measured as actual `lean` and `leanchecker` binaries, version checked, and those exact binary paths are then used. Installed package Git revisions and tracked modifications are checked before and after. Dependency generated-object bytes are not comprehensively rehashed or rebuilt; this is the disclosed cached-import boundary, not a fresh verification of the entire Mathlib closure. + +## Negative controls and final HOLD + +Both fixtures import the actual candidate and reproduce its full four-part existential conclusion. WithoutCriticality retains negative definiteness and explicitly abstracts over the missing middle criticality premise. WithoutNegativeDefiniteness leaves the actual final negative-definiteness premise unapplied. These are intentionally ill-typed interface controls; they are not themselves mathematical counterexamples. + +The prospective parser requires return code 1, exactly one source-named type mismatch, the actual theorem expression, precisely the omitted-premise-to-conclusion actual type, and all four exact expected conclusion fields. It rejects unrelated import, syntax, resource, panic, sorry and extra-error output. The spelling is explicitly prospective: real Lean pretty-printing has not yet qualified it. + +The development loop attempts both distinct fixtures even if the first diagnostic spelling or exit is rejected, while an object-integrity failure aborts dependent work. Raw streams and each process receipt are persisted before classification errors propagate. A phase's `status: PASS` at this stage means the process had its expected exit and retained object integrity; it does not mean the missing premise was semantically verified. Every negative receipt explicitly keeps `intended_missing_premise_rejection=false` and `diagnostic_qualification_pending=true`; the aggregate sets `negative_predicates_qualified=false`. + +Even if both prospective parsers match, `require_final_predicates()` unconditionally raises before the PASS assignment. No flag, command-line option, optimization-dependent assertion or fallback path bypasses that gate in this frozen driver. Any failure keeps aggregate `HOLD_NOT_COMPLETED`. The first hosted attempt can collect evidence but cannot establish final formal acceptance. A later qualified acceptance driver requires exact actual-diagnostic review, an explicit changed source identity and the applicable complete final sequence. + +## Evidence persistence and reviewed tests + +The driver preserves raw binary stdout/stderr, their sizes and hashes, command, working directory, timestamps, timeout/exit/spawn status and before/after object inventories. It terminates the child process group on timeout and records failures. Source identities are checked after each build and again after all controls; runtime binaries and object sets are checked again at the end. Amended per-phase records are saved with the aggregate. The workflow uploads the evidence directory on failure as well as success; a cancelled or missing upload is not established custody. + +The workflow uses pinned action commits, read-only repository permissions and no persisted checkout credentials. It disables lean-action's ordinary build/test/lint and runs the explicit dedicated sequence. Runtime and mathematical success remain conditional on the actual hosted attempt and evidence readback. The final workflow's platform time cap does not extend the cooperative claim lease. + +I read the full 11-control Python test source, the helper's two AMENDED_GREEN terminal receipts and both complete stderr reports. Those author records report return code 0 and eleven passing controls normally and under Python `-O`. Their controls exercise changed source hashes, missing audit targets, forbidden axioms, wrapped/truncated records, altered negative conclusions/premises, failed/timeout stream persistence, imported-object mutation, allowed new objects, receipt consistency, source admission and unconditional final HOLD. I did not rerun them. Synthetic diagnostic fixtures validate parser behavior only; they cannot establish actual Lean output or a formal theorem. + +## Final boundary + +Only E1 requires an amendment before the intended development dispatch in this review. No other blocking source defect has been identified in the reviewed collector at this stage. This is a bounded source judgment, not a claim that the first Lean run will compile or that all possible failure modes are exhaustively tested. + +Reviewer is source exposed, same provider, nonauthor of the verifier and mathematical implementation; organizational independence credit 0, blind review 0, human review 0. Scientific effect NONE. The critical-basis, quotient/full-LPC, ordinary-bar and wider scientific obligations remain OPEN; full research goal ACTIVE_UNMET. diff --git a/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_preliminary_candidate1.md b/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_preliminary_candidate1.md new file mode 100644 index 000000000..5fc4ed2ae --- /dev/null +++ b/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_preliminary_candidate1.md @@ -0,0 +1,123 @@ +# C299 nonauthor source review — candidate 1 + +Actual reviewer: OpenAI Codex delegated agent `/root/c299_nonauthor_review`, for root chat `01a0bbb5-2fcb-77f0-b78b-4d220ddd7ab2`, acting for Dylan Roy. Native review checkpoint: 2026-10-20 13:53:34 UTC. + +**Preliminary disposition: the mathematical statement and reconstructed argument are sound at the requested finite scope; two likely elaboration defects require resolution. Formal execution, kernel checks, complete declaration/axiom census and negative-control results are unconfirmed. This is not final formal acceptance.** + +I did not author candidate 1, provide a proposed implementation, edit an author source, or execute Lean, a compiler, a mathematical program or project tests. After reading the frozen candidate, I sent source-derived findings to root. This report adds independent proof reconstruction and adversarial analysis as review. Source exposed, same provider, organizational independence credit 0, blind review 0, human review 0. No human review by Dylan is claimed. Scientific effect NONE. + +## Exact reviewed object + +- Author: `/root/adapter_feasibility_c292`. +- Module: `project/CriticalRidge.lean`, 7,922 bytes, SHA-256 `729b57030c9d595b6ee9061b7cc6c730a6de713044ab0f7509637ed029771375`. +- Frozen author snapshot: `execution/author/source-attempts/729b57030c9d595b6ee9061b7cc6c730a6de713044ab0f7509637ed029771375.lean`. +- I freshly hashed both the working file and the frozen snapshot; both matched that identity. This review applies to those bytes, regardless of subsequent changes to the working file. +- Complete module read: lines 1–180. Its visible source declares four definitions and five theorems, nine public declarations in total. This textual count is not a complete compiled environment census. +- Planned scope and provenance read: complete `PLAN.md`, `execution/author/INPUT_REUSE.json`, `execution/author/AUTHOR_NOTES.md`, and the candidate's `PRE_EXECUTION_CONTRACT.json` and `START.json`. + +The authorized endpoint is one function `r : E d → V`, derived from literal `IsSmooth d f`, literal `IsCriticalPoint d f p` and strict negativity of the actual Hessian on each nonzero vector of `V`, satisfying all four conclusions together: + +1. `r 0 = 0`. +2. `ContDiffAt ℝ 2 r 0`. +3. On one neighborhood of ambient zero, for every `z : V`, the actual derivative of `f` at `p + w + r w` vanishes on `z`. +4. For every ambient `w` and every `z : V`, the actual literal Hessian satisfies `H(w + Dr(0)w, z) = 0`. + +The candidate states exactly this endpoint. In particular, the neighborhood in conclusion 3 precedes the universal quantifier over `z`; it is not a collection of direction-dependent neighborhoods. The same selected `r` satisfies all four conclusions. No input is a ridge, chart, inverse certificate, LPC premise or finite event list. + +## Source-derived findings requiring follow-up + +These are probable elaboration failures identified by reading the pinned signatures and candidate syntax. I have not observed compiler diagnostics for them. + +**F1 — base point of the chain rule, candidate line 113.** The preceding `hDp` is a derivative assertion at `p`. The argument `hadd` differentiates `q ↦ p + ridgeAddition V q` at zero. Pinned `HasFDerivAt.comp` requires the outer derivative at the inner function's actual value, here `p + ridgeAddition V 0`. The candidate constructs `hDp.comp (0 : E d × V) hadd` before normalizing that base point. In a general real Euclidean space, the equality of this point with `p` uses `map_zero` and `add_zero`; it is not generally definitional equality. The following `simpa` cannot repair a type mismatch that occurs while constructing `hcomp`. The mathematical chain rule is valid, but the source should be checked at this exact line. + +**F2 — restricted block identity, candidate lines 137–141.** After substituting `hDG.fderiv` and applying extensionality, `ridgeAddition V (0,v)` expands to ambient `0 + (v : E d)`, whereas `negativeHessianBlock` uses `(v : E d)`. The candidate closes by `rfl`; the additive identity is generally propositional. This is another likely elaboration defect, not an objection to the block identity itself. + +Both findings were relayed to root without editing author code or supplying a proof patch. Any changed candidate needs an exact successor hash and assessment of the actual changes. A compiler result may confirm or disprove these predicted defects; this preliminary record must retain the distinction. + +## Independent reconstruction of the argument + +Write `i : V → E d` for the actual submodule inclusion, `R` for restriction of ambient continuous covectors along `i`, and `A(w,v) = w + i(v)`. The candidate defines the covector-valued map + +`G(w,v) = R(Df(p + A(w,v)))`. + +All three structural maps are continuous linear maps. The literal `IsSmooth` hypothesis supplies C3 regularity of `f`, hence C2 regularity of its derivative. Composing with the affine translation and with `R` gives C2 regularity of `G`. This uses an actual extra derivative; it does not attempt to obtain a C2 implicit ridge from only C2 regularity of `f`. + +At zero the derivative of `G` is + +`DG(0)[w,v](z) = D(Df)(p)[w + i(v)](i(z))`. + +The already established C293 identity `literal_hessian_eq_fderiv` identifies this with the literal second iterated derivative used by `Lifetime.hessian`. Restricting to the second product input gives the actual block + +`C(v)(z) = H(i(v), i(z))`. + +If `C(v) = 0`, evaluation at `v` gives `H(i(v),i(v)) = 0`. Strict negativity forces `i(v) = 0`, and injectivity of subtype inclusion forces `v = 0`. Linearity turns this kernel statement into injectivity of `C`. The finite-dimensional real inner-product space `V` has the Riesz continuous equivalence `J : V ≃L[ℝ] V*`. Consequently `J⁻¹ ∘ C` is an injective endomorphism of `V`, hence a linear equivalence with continuous inverse. Composing it with `J` constructs the precise witness to `C.IsInvertible`. The source does not infer invertibility of a restricted block from invertibility of the ambient Hessian. + +Criticality is used to obtain `G(0,0)=0`. The pinned product-domain implicit-function theorem then selects one total function `r : E d → V`, with `r(0)=0`, C2 regularity at zero, and the local equation `G(w,r(w))=0`. The theorem guarantees a local equation and local regularity; the candidate does not claim that its total extension is globally continuous or globally solves the equation. + +The derivative of `w ↦ (w,r(w))` at zero is `w ↦ (w,Dr(0)w)`. On a neighborhood the composite `G(w,r(w))` equals the zero covector-valued function. Thus its derivative is zero. The chain rule and uniqueness of derivatives give + +`DG(0) ∘ (id, Dr(0)) = 0`. + +Evaluating this equality at arbitrary `w` and then arbitrary `z` gives precisely `H(w+i(Dr(0)w),i(z))=0`. Candidate lines 154–178 differentiate an actual eventual equality with regularity evidence, not an unproved identity or merely the base-point equation. + +The restricted-block injectivity proof does not need Hessian symmetry. Symmetry and a complementary positive subspace will matter in the later reduced-positivity argument; neither is smuggled into this finite endpoint. The ambient parameter is a valid stronger parameterization for later restriction to a positive complement. + +## Independent adversarial analysis + +All examples in this section are hand-derived paper checks, not executed fixtures or Lean results. + +**Nonzero cross block and the ambient parameter.** Let `f(x,y)=x²+2cxy−y²`, `p=(0,0)`, and let `V` be the vertical axis. For arbitrary real `c`, its Hessian matrix is `[[2,2c],[2c,−2]]`, and its restriction to `V` is strictly negative. At ambient parameter `w=(a,b)`, the partial-gradient equation requires the correction + +`r(a,b) = (0, ca−b)`. + +Then `w+r(w)=(a,ca)` and the derivative in every vertical direction is zero. The differentiated expression is also `(a,ca)`, and `H((a,ca),(0,t))=2cat−2cat=0`. Thus the endpoint handles a nonzero cross block. A spurious implementation that used the paper's restricted-parameter correction `(0,ca)` for every ambient `w` would fail when `b≠0`; the candidate's implicit construction avoids that error. + +**An actually nonorthogonal complement.** With `f(x,y)=x²−y²`, the same negative vertical `V` can be complemented by `W=span(1,k)` for `0<|k|<1`. This `W` is positive for the Hessian and is neither Euclidean-orthogonal nor Hessian-orthogonal to `V`. The ambient ridge is `r(a,b)=(0,−b)`, so restricting it to `w=(t,kt)` gives correction `(0,−kt)` and `w+r(w)=(t,0)`. The differentiated restricted-gradient equation still holds. No orthogonality premise is needed. + +**Zero negative subspace.** For `V={0}`, both `V` and its continuous dual are zero spaces. There is one correction function, identically zero. The strict-negative assumption is vacuous, the block is the unique invertible map between zero spaces, and both universal equations only evaluate on `z=0`. The construction never uses a nonempty unit sphere, a positive dimension or a nonzero vector chosen from `V`. This also covers ambient dimension zero. + +**Full negative subspace.** If `V=E d` and `f(x)=−‖x‖²` at zero, one may take `r(w)=−w`, so `w+r(w)=0` and `w+Dr(0)w=0`. This checks the sign and explains why an ambient-parameter ridge need not be an embedded graph parameterization of positive dimension. + +**Removing strict negativity is invalid even for a smooth critical function.** Let `f(x,y)=xy`, `p=0`, and `V` the vertical axis. The restricted Hessian is zero and is therefore nonpositive, while the full Hessian is nondegenerate. At any corrected point `(a,b+r(a,b))`, the vertical derivative is `a`, independently of the correction. It cannot vanish for every ambient parameter near zero. This shows why nonpositivity, full-Hessian nondegeneracy, or smooth criticality cannot replace the actual strict-negative block premise. + +**Removing criticality is invalid.** On the line let `f(y)=y−y²`, `p=0`, and `V=ℝ`. The Hessian is strictly negative, but `Df(0)=1`. A continuous ridge with `r(0)=0` and the claimed eventual vanishing equation would in particular force the equation at zero, which is impossible. This is a direct test of the role of `hcritical`, rather than of the block-invertibility sublemma, which legitimately does not need criticality. + +**The smoothness predicate is substantive.** Literal criticality alone is an equation about total `fderiv`, which can be zero at a nondifferentiable point. The candidate does not use that equation as a substitute for differentiability: it separately obtains the derivative and C2 regularity of `G` from `hsmooth`. Dropping smoothness is not justified by the source argument. + +**Local versus global scope.** The eventual equation and C2-at-zero conclusion do not provide a global smooth ridge, uniqueness away from the chosen neighborhood, uniform Hessian signs, a superlevel path or a neighborhood basis. No such strengthening is present in the final signature. + +## Import, source identity and verification boundaries + +The three copied local source hashes were independently measured and matched `INPUT_REUSE.json`: + +| Source | Bytes | SHA-256 | +|---|---:|---| +| `Lifetime.lean` | 51383 | `90f4892608e953ecc696bb32ea159d1c178ceb8a1c6edfd11acfceb14af462c6` | +| `TorusTopology.lean` | 12257 | `ddb145b3f791c181d4f2a51e54e711937297bd6476ba55bcd5252b7ddb57cfe1` | +| `MorseFiniteCritical.lean` | 9445 | `95a660134eda49eecfe6181884bd23b4e4ca210e228d2463de29e5f821df047b` | + +I also independently hashed the three reused author-build objects; they match the declared historical objects: Lifetime `b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4`, TorusTopology `ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125`, MorseFiniteCritical `34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2`. + +I read the complete cited C293 receipt `final-runs/20261018T030043Z-build-MorseFiniteCritical-84e29842/RECEIPT.json`. It binds those sources and objects and records return code 0 for that historical build. It explicitly reused dependency metadata/hash evidence and was not a fresh replay of the imported Mathlib closure. Current equality of copied bytes supports the disclosed development reuse; it does not become a fresh dependency build or a C299 kernel result. + +The local Mathlib checkout reports commit `d13f23b723b8a846827a245b89c10fc7d3f11612`. I fully read its 103-line `ImplicitContDiff.lean`, freshly hashed as `308611fd7f41cbf58cf72a284a5324b27a76088672b2fc148129eec5e064368f`, agreeing with the paper API binding. I selected and read the exact signatures for `ContinuousLinearMap.IsInvertible`, `LinearEquiv.ofInjectiveEndo`, `contDiff_succ_iff_fderiv`, `HasFDerivAt.comp`, and `HasFDerivAt.congr_of_eventuallyEq`. This establishes source compatibility of the invoked interfaces; it is not a complete mathematical reconstruction of every imported library theorem or a full clean-worktree check. + +The module visibly contains no new `axiom`, `sorry` or `admit`. A source text scan cannot substitute for a compiled local-origin declaration census: private/generated declarations and their transitive axioms still need the planned audit. The nine visible public declarations are not the census denominator. Expected allowed standard axioms are `propext`, `Classical.choice` and `Quot.sound`; whether the actual compiled closure satisfies that restriction is unconfirmed here. + +The candidate's observed author execution record is a pre-execution contract and a start receipt for run `20261020T134843Z-89c13163`, with a 600-second cap, two threads and Lean's 4096 MB option. I have not run or certified that invocation, inspected a successful terminal receipt, or treated elapsed time/empty streams as evidence of either proof success or mathematical failure. Fresh final local-module builds, named-module kernel checks, complete census, omitted-premise controls and exact hosted artifact binding remain separate acceptance work. + +An omitted-premise fixture must fail because the omitted hypothesis is genuinely unavailable at the intended application, with the expected diagnostic bound to exact source and actual output. Import, resource or syntax failure cannot satisfy that control. The paper counterexamples above show that the endpoint's criticality and strict negativity requirements are substantive; they do not establish the effectiveness of any not-yet-run fixture. + +## Source-paper custody qualification + +I read the complete paper publication's proposal, prior mathematical review and freeze, and the complete API report plus its freeze, negative evidence and additive extraction clarification. I also read root's `SOURCE_PAPER_IDENTITIES.json` and `sources/EXTRACTION_NEGATIVE.json`. + +The public proposal's directly fenced body is 6960 bytes, SHA-256 `6d9e532505307c5f115701b693046d8ebba6fea913a07f43fd8ecee6e3516558`. Appending exactly one LF reconstructs the declared 6961-byte author file, SHA-256 `96a13c7e14e781220915e927caa34ba9ca94e26bd12bb7d53e7459b759c9b141`. Raw fenced equality to that author file is false. The prior 20646-byte review (`de928866de9d077a980bc9c42744bfe557c2b6ff7c16b6c840449f4b21542657`) and 17303-byte API report (`1cc33f6368c628702dd447e1b20d8506deaf1b6132712a2feb13aaee6a02c4ae`) match directly. Root's initial failed extraction and duplicate-candidate counting error remain historical negative evidence. + +Separately, the API audit's 44 stored excerpts omit exactly one terminal LF relative to line-ending-preserving selected source ranges. Its selected-line text comparisons are qualified by that convention; raw source-range byte equality remains false. Neither LF distinction changes the mathematical content, and neither is a compiler result. + +## Remaining scope + +Reduced-Hessian positivity, uniform signs, fiber concavity, tubes and literal paths, an arbitrarily small path-connected neighborhood basis, Euclidean all-point assembly, actual quotient-superlevel transport and C294's exact `hclosedLPC` discharge remain OPEN. Full ordinary-bar correspondence, elder/once-counting, exhaustive finite bars, field-first sampling, all-small-bars and regional-collision obligations remain OPEN. No scientific claim or independent-review gate is promoted by this preliminary review. + +Proceed with the finite unit only after the two source-level elaboration concerns and the actual formal verification results are resolved at exact candidate identities. Full research goal remains ACTIVE_UNMET. diff --git a/frontiers/critical_ridge_20261020/sources/CORRECTED_PAPER_CUSTODY.json b/frontiers/critical_ridge_20261020/sources/CORRECTED_PAPER_CUSTODY.json new file mode 100644 index 000000000..56116f024 --- /dev/null +++ b/frontiers/critical_ridge_20261020/sources/CORRECTED_PAPER_CUSTODY.json @@ -0,0 +1,11 @@ +{ + "source": "https://github.com/d6g8k5htny-coder/Math-/pull/487#issuecomment-6292292150", + "bytes": 6961, + "sha256": "96a13c7e14e781220915e927caa34ba9ca94e26bd12bb7d53e7459b759c9b141", + "raw_fenced_byte_match": true, + "terminal_LF_count": 2, + "old_source": "6292079965", + "old_raw_bytes": 6960, + "old_raw_sha256": "6d9e532505307c5f115701b693046d8ebba6fea913a07f43fd8ecee6e3516558", + "qualification": "Actual source owner had already published correction before our pickup; now consumed and exact raw bytes verified before hosted execution. Earlier reconstruction and failed extraction remain history; no additional correction request needed. Mathematical source unchanged." +} diff --git a/frontiers/critical_ridge_20261020/sources/RIDGE_PROPOSAL_CORRECTED_RAW.md b/frontiers/critical_ridge_20261020/sources/RIDGE_PROPOSAL_CORRECTED_RAW.md new file mode 100644 index 000000000..484446bea --- /dev/null +++ b/frontiers/critical_ridge_20261020/sources/RIDGE_PROPOSAL_CORRECTED_RAW.md @@ -0,0 +1,47 @@ +# Direct ridge route to critical closed-superlevel neighborhoods — paper proposal V1 + +Actual Root author chat01a11cbf-068d-7102-861e-75814e715c98,20October2026. UNREVIEWED nonexclusive paper assistance for the prospective critical-boundary leaf Math487/6291433200. It is not an accepted formal source claim, Lean proof, compilation, kernel receipt or replacement for the actual C298 engineering review. No local project program is requested or run. + +## Literal source and proposed theorem + +C297 exact sourcehead363a533e8e0a1308781d88697f46479e327dd344, frontiers/regular_superlevel_geometry_20261020/project/Lifetime.lean defines IsSmooth as all finite ContDiff, IsCriticalPoint as fderiv=0, and HessianHasInertia by complementary subspaces V,W, negative definite on V and positive definite on W. It does NOT require the subspaces to be Hessian-orthogonal. Root freshly fetched the exact raw source and inspected these definitions. C297's accepted regular/interior neighborhood result does not cover an actual critical boundary point. C293 isolates critical points; C294's quotient closed-death-level LPC remains an explicit premise. The actual source lead is currently separately occupied with C298's engineering review; no vacancy or successor acceptance is inferred. + +Proposed mathematical theorem: for a finite-dimensional real Euclidean E, smooth f near p, Df(p)=0, and the literal symmetric Hessian admitting such a complementary definite split, the subtype S={z:f(z)>=f(p)} has a basis of relatively open path-connected neighborhoods at p. Combining this pointwise result with the existing regular/interior theorem would yield closed-superlevel LPC at every point for a literal smooth Morse function. Actual quotient transport and C294 consumption still require their own exact joins. + +This route uses the ordinary smooth implicit function theorem on the negative partial gradient and elementary convexity, rather than assuming a full function-level Morse normal-form chart. Those classical results must be formally derived from pinned Mathlib or explicitly remain missing proof obligations; no hidden chart/LPC premise is discharged by naming them. + +## Proposed direct proof + +Translate p=0 and subtract f(p). Via the finite-dimensional complementary linear homeomorphism W×V -> E, write F(x,y)=f(x+y)-f(0), x in positive W and y in negative V. The C2 Hessian is symmetric; its restriction C to V is negative definite and hence an invertible map V -> V*. The implicit function theorem applied to partial_y F(x,y)=0 gives a smooth local map g:W -> V, g(0)=0, with partial_y F(x,g(x))=0. Empty negative dimension is allowed: V={0}, g=0 and the partial-gradient equation is trivial. + +Let h(x)=F(x,g(x)). Then h(0)=0 and Dh(0)=0. For w in W, put v=Dg(0)w. Differentiating the ridge equation gives +H(w+v,z)=0 for every z in V, +so H(w,v)=-H(v,v). The chain rule at the critical point gives +D2h(0)[w,w]=H(w+v,w+v)=H(w,w)-H(v,v)>0 for w!=0. +The final strict inequality follows from positive definiteness on W and nonpositivity on V; no cross-block orthogonality is assumed. Consequently, after shrinking to a convex W ball, h has uniformly positive Hessian and h(x)>=0 there. This also covers W={0}, where h is the single value0 and the strict-positive condition is vacuous. + +Independently, continuity of D2F and finite-dimensional compactness yield a product neighborhood of(0,0) on which the V-direction Hessian is uniformly negative definite. Thus for fixed x every y segment inside that neighborhood is a concavity segment for F(x,y). Shrink the W ball and choose b>0 so that for every x in that ball the entire tube y=g(x)+v, ||v|| x+g(x)+(1-t)v,0<=t<=1. It remains in U. Concavity of the V fiber gives +F(x,g(x)+(1-t)v) >= (1-t)F(x,g(x)+v)+t F(x,g(x)) >=0, +because the first endpoint lies in S and the ridge value h(x)>=0. The second path t -> (1-t)x+g((1-t)x) remains in U and S since its value is h((1-t)x)>=0. Their concatenation connects z to0 within U intersect S. Thus U intersect S is path connected and relatively open, and the arbitrary-neighborhood containment supplies the required basis. + +For a local maximum W={0}, the same argument actually gives U intersect S={0} from strict fiber concavity. For a local minimum V={0}, U intersect S=U after shrinking, by h>=0. In dimension0 both are the singleton case. These cases must be explicit in a Lean implementation; no nonzero unit sphere may be assumed in a zero-dimensional subspace. + +## Proposed formal dependency split and boundaries + +A. Complementary subspace continuous coordinates and dual/Riesz identification, plus symmetry of the actual iteratedFDeriv Hessian. +B. Smooth negative partial-gradient map with invertible y derivative; existing implicit-function theorem with an explicitly constructed derivative equivalence. +C. Differentiated ridge equation and positive reduced Hessian, with continuous uniform coercivity on finite-dimensional balls. +D. Concavity of fibers and h(x)>=h(0), proved via real one-dimensional restriction/integrated derivative or existing convexity lemmas. +E. The open tube, its two literal subtype paths, their concatenation and neighborhood-basis conversion. +F. Actual torus covering restriction/relative-subtype local homeomorphism, global regular/interior/critical case split, then replacement of C294's explicit hclosedLPC. These are subsequent source joins, not supplied by A–E alone. + +Please independently seek counterexamples/gaps: complementary but nonorthogonal subspaces; either subspace zero; need uniform rather than pointwise signs; domain of implicit g and of every path; smoothness needed for reduced Hessian; relatively open basis versus only one connected set; actual C2 assumptions rather than arbitrary total fderiv; critical level versus nearby levels; torus transport. Return ACCEPT_SCOPED_PAPER_ROUTE, AMEND or precise HOLD. The desired result is a source-bound route or failed-route diagnosis, not an assumed generic chart lemma. + +This is conventional paper mathematics with an unimplemented formal dependency map. No original-bar bijection, elder/once-counting, full quotient theorem, all-small-bars converse, field-first sampling, density asymptotic, scientific acceptance or master-goal completion follows yet. Full research goal remains ACTIVE_UNMET. Source-exposed Root coauthor; distinct actual nonauthor review required; same-provider/org0/blind0/human0. Only source read/hash/JSON custody is allowed; no project/compiler/test/execution. + diff --git a/frontiers/critical_ridge_20261020/sources/UPSTREAM_BYTE_EQUALITY.json b/frontiers/critical_ridge_20261020/sources/UPSTREAM_BYTE_EQUALITY.json new file mode 100644 index 000000000..de54a828a --- /dev/null +++ b/frontiers/critical_ridge_20261020/sources/UPSTREAM_BYTE_EQUALITY.json @@ -0,0 +1,29 @@ +[ + { + "module": "Lifetime", + "bytes": 51383, + "sha256": "90f4892608e953ecc696bb32ea159d1c178ceb8a1c6edfd11acfceb14af462c6", + "git_blob_sha1": "f2508f7f2e3fd42f22f5aa52bc5ead5ff9e73b9a", + "exact_match": true, + "origin_commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "origin_path": "frontiers/critical_level_attainment_20261020/final-project/Lifetime.lean" + }, + { + "module": "TorusTopology", + "bytes": 12257, + "sha256": "ddb145b3f791c181d4f2a51e54e711937297bd6476ba55bcd5252b7ddb57cfe1", + "git_blob_sha1": "ed678ea322fe5315b3aaff44e4e2f06b018399d8", + "exact_match": true, + "origin_commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "origin_path": "frontiers/critical_level_attainment_20261020/final-project/TorusTopology.lean" + }, + { + "module": "MorseFiniteCritical", + "bytes": 9445, + "sha256": "95a660134eda49eecfe6181884bd23b4e4ca210e228d2463de29e5f821df047b", + "git_blob_sha1": "989fabc6e8f04b0c4a36dff9b21d33b1299f7b92", + "exact_match": true, + "origin_commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "origin_path": "frontiers/critical_level_attainment_20261020/final-project/MorseFiniteCritical.lean" + } +] diff --git a/frontiers/critical_ridge_20261020/test_c299_hosted_verify.py b/frontiers/critical_ridge_20261020/test_c299_hosted_verify.py new file mode 100644 index 000000000..4892e513e --- /dev/null +++ b/frontiers/critical_ridge_20261020/test_c299_hosted_verify.py @@ -0,0 +1,303 @@ +"""Engineering controls only. No Lean invocation or scientific acceptance.""" +import hashlib +import importlib.util +import inspect +import json +import os +from pathlib import Path +import sys +import tempfile +import unittest + +MODULE_PATH = Path(__file__).with_name('c299_hosted_verify.py') + + +class HostedVerifierTests(unittest.TestCase): + @classmethod + def setUpClass(cls): + if MODULE_PATH.exists(): + spec = importlib.util.spec_from_file_location('c299_hosted_verify', MODULE_PATH) + cls.v = importlib.util.module_from_spec(spec) + spec.loader.exec_module(cls.v) + else: + cls.v = None + + def verifier(self): + self.assertIsNotNone(self.v, 'the scoped verifier is not implemented') + return self.v + + def test_environment_contract_strips_overrides_and_uses_declared_path(self): + """An inherited tool/loader override must not survive or leak its value.""" + v = self.verifier() + self.assertTrue(hasattr(v, 'build_environment'), 'environment contract is missing') + with tempfile.TemporaryDirectory() as tmp: + root = Path(tmp).resolve() + bindir = root / 'bin' + bindir.mkdir() + launcher = bindir / 'lean' + launcher.write_text('# inert launcher locator fixture; never executed\n') + launcher.chmod(0o700) + inherited = {'PATH': str(bindir), 'LEAN_PATH': '/pinned/lake/library', + 'LEAN_NUM_THREADS': '64', 'LEAN_SYSROOT': 'secret-lean-value', + 'LAKE_HOME': 'secret-lake-value', 'LD_PRELOAD': 'secret-loader-value', + 'DYLD_LIBRARY_PATH': 'secret-dyld-value', 'TOKEN': 'secret-token-value'} + env, contract = v.build_environment(inherited, root / 'objects') + self.assertEqual(env['LEAN_PATH'], str(root / 'objects') + os.pathsep + '/pinned/lake/library') + self.assertEqual(env['LEAN_NUM_THREADS'], '2') + self.assertEqual(v.resolve_lean_launcher(env), launcher.resolve()) + self.assertEqual(contract['removed_variable_names'], + ['DYLD_LIBRARY_PATH', 'LAKE_HOME', 'LD_PRELOAD', 'LEAN_NUM_THREADS', 'LEAN_SYSROOT']) + for key in ('LEAN_SYSROOT', 'LAKE_HOME', 'LD_PRELOAD', 'DYLD_LIBRARY_PATH'): + self.assertNotIn(key, env) + self.assertEqual(env['TOKEN'], 'secret-token-value') + self.assertNotIn('secret-', json.dumps(contract)) + empty, _ = v.build_environment({'PATH': str(bindir)}, root / 'empty') + self.assertEqual(empty['LEAN_PATH'], str(root / 'empty')) + + def test_phase_environment_mutation_is_blocked_and_receipted(self): + """A changed search path or injected loader must fail before the child runs.""" + v = self.verifier() + self.assertTrue(hasattr(v, 'build_environment'), 'environment contract is missing') + with tempfile.TemporaryDirectory() as tmp: + root = Path(tmp) + env, contract = v.build_environment(dict(os.environ), root / 'objects') + report = {'status': 'HOLD_NOT_COMPLETED', 'phase_results': [], + 'environment_contract': contract} + rec, output, _ = v.run_phase('environment-valid', + [sys.executable, '-c', 'import os; print(os.environ["LEAN_NUM_THREADS"])'], + root, env, root, report, timeout=10) + self.assertEqual(output.strip(), '2') + self.assertEqual(rec['selected_environment'], contract['selected_environment']) + self.assertEqual(rec['environment_contract_sha256'], contract['sha256']) + self.assertIsNone(rec['environment_validation_error']) + for n, changes in enumerate(({'LEAN_PATH': '/unbound/library'}, {'LD_PRELOAD': 'secret-injection'})): + altered = dict(env, **changes) + with self.assertRaisesRegex(RuntimeError, 'environment'): + v.run_phase('environment-mutated-' + str(n), + [sys.executable, '-c', 'from pathlib import Path;Path("CHILD_RAN").write_text("bad")'], + root, altered, root, report, timeout=10) + receipt = json.loads((root / ('environment-mutated-' + str(n) + '.receipt.json')).read_text()) + self.assertEqual(receipt['status'], 'FAIL') + self.assertIsNone(receipt['exit_code']) + self.assertIsNotNone(receipt['environment_validation_error']) + self.assertFalse((root / 'CHILD_RAN').exists()) + self.assertNotIn('secret-injection', json.dumps(receipt)) + self.assertEqual(receipt, report['phase_results'][-1]) + + def test_modified_source_bytes_are_rejected(self): + """Dropping size/hash verification would accept the modified file.""" + v = self.verifier() + with tempfile.TemporaryDirectory() as tmp: + path = Path(tmp) / 'Proof.lean' + path.write_bytes(b'abc') + expected = {'bytes': 3, 'sha256': + 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad'} + v.verify_file(path, expected, Path(tmp)) + path.write_bytes(b'abd') + with self.assertRaisesRegex(RuntimeError, 'identity mismatch'): + v.verify_file(path, expected, Path(tmp)) + + def test_audit_cannot_omit_required_target_or_hide_axiom(self): + """Count-only validation would accept a substituted target or sorryAx.""" + v = self.verifier() + good = ( + 'CRITICAL_RIDGE_AUDIT_MODULE A COUNT 1\n' + 'CRITICAL_RIDGE_AUDIT_DECL A.target AXIOMS [propext]\n' + 'CRITICAL_RIDGE_AUDIT_MODULE B COUNT 1\n' + 'CRITICAL_RIDGE_AUDIT_DECL B.target AXIOMS []\n' + 'CRITICAL_RIDGE_AUDIT_STANDARD_ONLY_PASS COUNT 2\n') + got = v.validate_audit(good, modules=('A', 'B'), required=('A.target', 'B.target')) + self.assertEqual(got['declaration_count'], 2) + for bad in (good.replace('B.target', 'B.other'), + good.replace('[propext]', '[sorryAx]'), + good.replace('B.target AXIOMS []', 'A.target AXIOMS []')): + with self.subTest(bad=bad), self.assertRaises(RuntimeError): + v.validate_audit(bad, modules=('A', 'B'), required=('A.target', 'B.target')) + + def test_pinned_lean_multiline_axiom_records(self): + """Actual pinned Lean wraps the unchanged Lifetime axiom arrays.""" + v = self.verifier() + proper = ( + 'CRITICAL_RIDGE_AUDIT_MODULE Lifetime COUNT 1\n' + 'CRITICAL_RIDGE_AUDIT_DECL UniversalLaw.Spec.Lifetime.IsUnrestrictedLeadingCoefficient AXIOMS [propext,\n' + ' Classical.choice,\n' + ' Quot.sound]\n' + 'CRITICAL_RIDGE_AUDIT_STANDARD_ONLY_PASS COUNT 1\n') + args = {'modules': ('Lifetime',), + 'required': ('UniversalLaw.Spec.Lifetime.IsUnrestrictedLeadingCoefficient',)} + self.assertEqual(v.validate_audit(proper, **args)['declaration_count'], 1) + for bad in (proper.replace(' Quot.sound]', ' sorryAx]'), + proper.replace(' Quot.sound]\n', ''), + proper.replace(' Quot.sound]', ' Quot.sound] trailing garbage'), + proper[:proper.index(' Quot.sound]')]): + with self.subTest(bad=bad), self.assertRaises(RuntimeError): + v.validate_audit(bad, **args) + + def test_pending_final_acceptance_fails_closed(self): + """Collecting diagnostics must not silently qualify final acceptance.""" + v = self.verifier() + with self.assertRaisesRegex(RuntimeError, 'PENDING_C299_NEGATIVE_PREDICATES'): + v.require_final_predicates() + + def test_source_preflight_can_collect_before_final_predicate_qualification(self): + """An early final-acceptance gate would block needed actual diagnostics.""" + v = self.verifier() + with tempfile.TemporaryDirectory() as tmp: + root = Path(tmp) + packet = root / v.PREFIX + files = {} + for rel in ([f'project/{m}.lean' for m in v.MODULES] + + [f'negative-project/{m}.lean' for m in v.NEGATIVES]): + path = packet / rel + path.parent.mkdir(parents=True, exist_ok=True) + path.write_bytes(b'-- inert source fixture\n') + files[rel] = {'bytes': 24, 'sha256': hashlib.sha256(b'-- inert source fixture\n').hexdigest()} + upstream = root / 'specifications/lean_statements_20261010/Specifications/Lifetime.lean' + upstream.parent.mkdir(parents=True) + upstream.write_bytes(b'-- inert source fixture\n') + formal = root / 'formal' + formal.mkdir() + (formal / 'lean-toolchain').write_text('leanprover/lean4:v4.34.1\n') + (formal / 'lakefile.toml').write_text('rev = "d13f23b723b8a846827a245b89c10fc7d3f11612"\n') + (formal / 'lake-manifest.json').write_text(json.dumps({'packages': [ + {'name': name, 'rev': rev} for name, rev in v.PACKAGE_PINS.items()]})) + for rel in (v.WORKFLOW, v.PREFIX + '/c299_hosted_verify.py', + v.PREFIX + '/test_c299_hosted_verify.py'): + path = root / rel + path.parent.mkdir(parents=True, exist_ok=True) + path.write_bytes(b'inert support fixture\n') + manifest = {'schema_version': 1, 'scientific_effect': 'NONE', 'files': files, + 'source_origins': {name: {'commit': 'a' * 40, 'path': name + '.lean'} + for name in ('Lifetime', 'TorusTopology', 'MorseFiniteCritical')}} + manifest_path = packet / v.MANIFEST + manifest_path.write_text(json.dumps(manifest)) + digest = hashlib.sha256(manifest_path.read_bytes()).hexdigest() + measured = v.verify_sources(root, digest) + self.assertEqual(measured['files'], files) + with self.assertRaisesRegex(RuntimeError, 'PENDING_C299_NEGATIVE_PREDICATES'): + v.require_final_predicates() + + def test_inactive_draft_negative_sections_reject_forged_fields(self): + """Section/token-only matching would accept unrelated existential fields.""" + v = self.verifier() + # Synthetic prospective rendering only; no actual Lean diagnostic observed. + conclusion = ( + '∃ r, r 0 = 0 ∧ ContDiffAt ℝ 2 r 0 ∧ ' + '(∀ᶠ w in 𝓝 0, ∀ (z : ↥V), (fderiv ℝ f (p + w + ↑(r w))) ↑z = 0) ∧ ' + '∀ (w : E d) (z : ↥V), hessian d f p (w + ↑((fderiv ℝ r 0) w)) ↑z = 0') + target = 'TorusCriticalRidge.exists_negative_partial_gradient_ridge' + for name, expression, premise in ( + ('WithoutCriticality', + 'fun hcritical => ' + target + ' f p V hsmooth hcritical hneg', + 'IsCriticalPoint d f p'), + ('WithoutNegativeDefiniteness', + target + ' f p V hsmooth hcritical', + '(∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0)')): + proper = (name + '.lean:23:2: error: Type mismatch\n ' + expression + + '\nhas type\n ' + premise + ' → ' + conclusion + + '\nbut is expected to have type\n ' + conclusion + '\n') + result = v.validate_negative_draft(name, 1, proper) + self.assertTrue(result['draft_only']) + self.assertFalse(result['actual_diagnostic_observed']) + for code, bad in ( + (0, proper), (-9, proper), + (1, proper.replace(name + '.lean', 'Other.lean')), + (1, proper.replace('ContDiffAt ℝ 2 r 0', 'True')), + (1, proper.replace('fderiv ℝ f', 'fderiv ℝ other')), + (1, proper.replace(premise + ' → ', 'Continuous f → ', 1)), + (1, proper + 'Other.lean:1:1: error: unknown identifier\n'), + (1, proper.replace('but is expected to have type', 'unrelated log tokens'))): + with self.subTest(name=name, code=code, bad=bad), self.assertRaises(RuntimeError): + v.validate_negative_draft(name, code, bad) + + def test_failed_phase_receipt_and_exact_streams_survive_abort(self): + """Raising before persistence would discard the actual failing phase.""" + v = self.verifier() + with tempfile.TemporaryDirectory() as tmp: + evidence = Path(tmp) + report = {'status': 'HOLD_NOT_COMPLETED', 'phase_results': []} + with self.assertRaisesRegex(RuntimeError, 'unexpected exit'): + v.run_phase('deliberate-failure', + [sys.executable, '-c', + 'import sys;sys.stdout.buffer.write(b"out\\xff");sys.stderr.write("err");sys.exit(7)'], + evidence, dict(os.environ), evidence, report, timeout=10) + saved = json.loads((evidence / 'RESULT.json').read_text()) + phase = saved['phase_results'][0] + self.assertEqual(phase['exit_code'], 7) + self.assertEqual(phase['status'], 'FAIL') + self.assertFalse(phase['timed_out']) + self.assertEqual((evidence / 'deliberate-failure.stdout').read_bytes(), b'out\xff') + self.assertEqual((evidence / 'deliberate-failure.stderr').read_bytes(), b'err') + self.assertEqual(phase['stdout_sha256'], hashlib.sha256(b'out\xff').hexdigest()) + self.assertTrue((evidence / 'deliberate-failure.receipt.json').exists()) + + + def test_timeout_preserves_partial_stream_and_receipt(self): + """Timeout handling must not discard the child output or phase result.""" + v = self.verifier() + with tempfile.TemporaryDirectory() as tmp: + evidence = Path(tmp) + report = {'status': 'HOLD_NOT_COMPLETED', 'phase_results': []} + with self.assertRaises(RuntimeError): + v.run_phase('deliberate-timeout', + [sys.executable, '-u', '-c', + 'import time;print("before timeout");time.sleep(3)'], + evidence, dict(os.environ), evidence, report, timeout=0.1) + receipt = json.loads((evidence / 'deliberate-timeout.receipt.json').read_text()) + self.assertTrue(receipt['timed_out']) + self.assertEqual(receipt['status'], 'FAIL') + self.assertEqual((evidence / 'deliberate-timeout.stdout').read_bytes(), b'before timeout\n') + + def test_phase_rejects_imported_object_mutation(self): + """A successful compiler process may not alter a prior input object.""" + v = self.verifier() + self.assertIn('build_dir', inspect.signature(v.run_phase).parameters, 'object input monitoring is not implemented') + with tempfile.TemporaryDirectory() as tmp: + evidence = Path(tmp) + build = evidence / 'objects' + build.mkdir() + (build / 'Lifetime.olean').write_bytes(b'frozen input') + report = {'status': 'HOLD_NOT_COMPLETED', 'phase_results': []} + with self.assertRaises(RuntimeError): + v.run_phase('deliberate-object-mutation', + [sys.executable, '-c', + 'from pathlib import Path;Path("objects/Lifetime.olean").write_bytes(b"changed")'], + evidence, dict(os.environ), evidence, report, + timeout=10, build_dir=build) + receipt = json.loads((evidence / 'deliberate-object-mutation.receipt.json').read_text()) + self.assertEqual(receipt['exit_code'], 0) + self.assertEqual(receipt['status'], 'FAIL') + self.assertIn('Lifetime.olean', receipt['objects_before']) + self.assertNotEqual(receipt['objects_before'], receipt['objects_after']) + self.assertIsNotNone(receipt['object_validation_error']) + + def test_build_allows_only_its_own_outputs(self): + """A build may add its target object, not an unrelated replacement.""" + v = self.verifier() + self.assertTrue(hasattr(v, 'validate_objects'), 'object change validation is not implemented') + previous = {'Lifetime.olean': {'bytes': 2, 'sha256': 'a' * 64}} + good = dict(previous, **{'CriticalRidge.olean': {'bytes': 3, 'sha256': 'b' * 64}}) + v.validate_objects(previous, good, 'CriticalRidge') + for bad in (dict(good, **{'Unrelated.olean': {'bytes': 1, 'sha256': 'c' * 64}}), + previous, + dict(good, **{'Lifetime.olean': {'bytes': 2, 'sha256': 'd' * 64}})): + with self.subTest(bad=bad), self.assertRaises(RuntimeError): + v.validate_objects(previous, bad, 'CriticalRidge') + + def test_amended_phase_receipt_matches_aggregate(self): + """Semantic/object metadata must not exist only in the aggregate receipt.""" + v = self.verifier() + self.assertTrue(hasattr(v, 'save_phase'), 'amended receipt persistence is not implemented') + with tempfile.TemporaryDirectory() as tmp: + evidence = Path(tmp) + report = {'status': 'HOLD_NOT_COMPLETED', 'phase_results': []} + rec, _, _ = v.run_phase('valid-phase', [sys.executable, '-c', 'pass'], + evidence, dict(os.environ), evidence, report, timeout=10) + rec['intended_missing_premise_rejection'] = True + v.save_phase(evidence, report, rec) + self.assertEqual(json.loads((evidence / 'valid-phase.receipt.json').read_text()), + json.loads((evidence / 'RESULT.json').read_text())['phase_results'][0]) + + +if __name__ == '__main__': + unittest.main() From 8336bb7c16e34db69837b10e3678fb1bc894179c Mon Sep 17 00:00:00 2001 From: Dylan Roy <249851642+d6g8k5htny-coder@users.noreply.github.com> Date: Tue, 20 Oct 2026 09:34:40 -0500 Subject: [PATCH 2/5] Repair C299 elaboration against actual hosted diagnostics Preserve candidate2 failure and exact nonauthor source repair review. Public interfaces unchanged; hosted verification remains pending. --- .github/workflows/c299-critical-ridge.yml | 2 +- .../HOSTED_SOURCE_MANIFEST.json | 4 +- .../execution/author/CANDIDATE3.diff | 75 +++ .../execution/author/CANDIDATE3_FREEZE.json | 26 + ...10ab11be1ca5d05f60b4df0e2663fa769f442.lean | 196 ++++++++ ...978e3982179204ad5c4a166dffc5fa1558322.lean | 183 +++++++ .../hosted-development1/ARCHIVE_MEMBERS.json | 171 +++++++ .../hosted-development1/DISPOSITION.json | 60 +++ .../HOSTED_SOURCE_MANIFEST.json | 48 ++ .../execution/hosted-development1/RESULT.json | 476 ++++++++++++++++++ .../build-CriticalRidge.receipt.json | 63 +++ .../build-CriticalRidge.stderr | 0 .../build-CriticalRidge.stdout | 64 +++ .../build-Lifetime.receipt.json | 45 ++ .../hosted-development1/build-Lifetime.stderr | 0 .../hosted-development1/build-Lifetime.stdout | 0 .../build-MorseFiniteCritical.receipt.json | 63 +++ .../build-MorseFiniteCritical.stderr | 0 .../build-MorseFiniteCritical.stdout | 0 .../build-TorusTopology.receipt.json | 55 ++ .../build-TorusTopology.stderr | 0 .../build-TorusTopology.stdout | 0 .../runtime-print-prefix.receipt.json | 32 ++ .../runtime-print-prefix.stderr | 0 .../runtime-print-prefix.stdout | 1 + .../runtime-version.receipt.json | 32 ++ .../runtime-version.stderr | 0 .../runtime-version.stdout | 1 + .../project/CriticalRidge.lean | 31 +- ...99_nonauthor_candidate3_source_addendum.md | 50 ++ 30 files changed, 1666 insertions(+), 12 deletions(-) create mode 100644 frontiers/critical_ridge_20261020/execution/author/CANDIDATE3.diff create mode 100644 frontiers/critical_ridge_20261020/execution/author/CANDIDATE3_FREEZE.json create mode 100644 frontiers/critical_ridge_20261020/execution/author/source-attempts/2a93240fa5034544a1dbcf5ec0a10ab11be1ca5d05f60b4df0e2663fa769f442.lean create mode 100644 frontiers/critical_ridge_20261020/execution/author/source-attempts/b3c22e590f761953ba322ad2903978e3982179204ad5c4a166dffc5fa1558322.lean create mode 100644 frontiers/critical_ridge_20261020/execution/hosted-development1/ARCHIVE_MEMBERS.json create mode 100644 frontiers/critical_ridge_20261020/execution/hosted-development1/DISPOSITION.json create mode 100644 frontiers/critical_ridge_20261020/execution/hosted-development1/HOSTED_SOURCE_MANIFEST.json create mode 100644 frontiers/critical_ridge_20261020/execution/hosted-development1/RESULT.json create mode 100644 frontiers/critical_ridge_20261020/execution/hosted-development1/build-CriticalRidge.receipt.json create mode 100644 frontiers/critical_ridge_20261020/execution/hosted-development1/build-CriticalRidge.stderr create mode 100644 frontiers/critical_ridge_20261020/execution/hosted-development1/build-CriticalRidge.stdout create mode 100644 frontiers/critical_ridge_20261020/execution/hosted-development1/build-Lifetime.receipt.json create mode 100644 frontiers/critical_ridge_20261020/execution/hosted-development1/build-Lifetime.stderr create mode 100644 frontiers/critical_ridge_20261020/execution/hosted-development1/build-Lifetime.stdout create mode 100644 frontiers/critical_ridge_20261020/execution/hosted-development1/build-MorseFiniteCritical.receipt.json create mode 100644 frontiers/critical_ridge_20261020/execution/hosted-development1/build-MorseFiniteCritical.stderr create mode 100644 frontiers/critical_ridge_20261020/execution/hosted-development1/build-MorseFiniteCritical.stdout create mode 100644 frontiers/critical_ridge_20261020/execution/hosted-development1/build-TorusTopology.receipt.json create mode 100644 frontiers/critical_ridge_20261020/execution/hosted-development1/build-TorusTopology.stderr create mode 100644 frontiers/critical_ridge_20261020/execution/hosted-development1/build-TorusTopology.stdout create mode 100644 frontiers/critical_ridge_20261020/execution/hosted-development1/runtime-print-prefix.receipt.json create mode 100644 frontiers/critical_ridge_20261020/execution/hosted-development1/runtime-print-prefix.stderr create mode 100644 frontiers/critical_ridge_20261020/execution/hosted-development1/runtime-print-prefix.stdout create mode 100644 frontiers/critical_ridge_20261020/execution/hosted-development1/runtime-version.receipt.json create mode 100644 frontiers/critical_ridge_20261020/execution/hosted-development1/runtime-version.stderr create mode 100644 frontiers/critical_ridge_20261020/execution/hosted-development1/runtime-version.stdout create mode 100644 frontiers/critical_ridge_20261020/reviews/c299_nonauthor_candidate3_source_addendum.md diff --git a/.github/workflows/c299-critical-ridge.yml b/.github/workflows/c299-critical-ridge.yml index a52b763a1..024da17c9 100644 --- a/.github/workflows/c299-critical-ridge.yml +++ b/.github/workflows/c299-critical-ridge.yml @@ -31,7 +31,7 @@ jobs: env: LEAN_NUM_THREADS: '2' # Exact frozen five-module and two-control source manifest. - C299_MANIFEST_SHA256: '3c80ed35bc7a28342b127ca08f046be913021ab28ff13119e698c981eb0aef6b' + C299_MANIFEST_SHA256: 'e652634cd6c80faaf889704b291e14c3ae2c25a3edb37fdec5f4c8273d17fb1b' steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with: diff --git a/frontiers/critical_ridge_20261020/HOSTED_SOURCE_MANIFEST.json b/frontiers/critical_ridge_20261020/HOSTED_SOURCE_MANIFEST.json index a54c3ed9e..b56270f0a 100644 --- a/frontiers/critical_ridge_20261020/HOSTED_SOURCE_MANIFEST.json +++ b/frontiers/critical_ridge_20261020/HOSTED_SOURCE_MANIFEST.json @@ -9,8 +9,8 @@ "sha256": "ad204aee211aa3074621f56eeaf8e1a3f3a522b7c7cbe2bbdd67f3759833feb9" }, "project/CriticalRidge.lean": { - "bytes": 8149, - "sha256": "b3c22e590f761953ba322ad2903978e3982179204ad5c4a166dffc5fa1558322" + "bytes": 8485, + "sha256": "2a93240fa5034544a1dbcf5ec0a10ab11be1ca5d05f60b4df0e2663fa769f442" }, "project/CriticalRidgeAxiomAudit.lean": { "bytes": 2728, diff --git a/frontiers/critical_ridge_20261020/execution/author/CANDIDATE3.diff b/frontiers/critical_ridge_20261020/execution/author/CANDIDATE3.diff new file mode 100644 index 000000000..b5acee5b5 --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/author/CANDIDATE3.diff @@ -0,0 +1,75 @@ +--- candidate2/CriticalRidge.lean ++++ candidate3/CriticalRidge.lean +@@ -28,8 +28,16 @@ + + /-- Restrict an ambient continuous covector to the literal subspace. -/ + def restrictCovector (V : Submodule ℝ (E d)) : +- (E d →L[ℝ] ℝ) →L[ℝ] (V →L[ℝ] ℝ) := +- (ContinuousLinearMap.compL ℝ V (E d) ℝ).flip V.subtypeL ++ (E d →L[ℝ] ℝ) →L[ℝ] (V →L[ℝ] ℝ) where ++ toFun ℓ := ℓ.comp V.subtypeL ++ map_add' ℓ₁ ℓ₂ := by ++ ext z ++ rfl ++ map_smul' c ℓ := by ++ ext z ++ rfl ++ cont := (continuous_id : Continuous (fun ℓ : E d →L[ℝ] ℝ => ℓ)).clm_comp_const ++ V.subtypeL + + /-- Addition of an ambient parameter and a vector in the negative subspace. -/ + def ridgeAddition (V : Submodule ℝ (E d)) : +@@ -71,7 +79,7 @@ + have hn := hneg v v.property hvne + have he : hessian d f p v v = 0 := by + have h := congrArg (fun k : V →L[ℝ] ℝ => k v) hv +- simpa only [C, negativeHessianBlock_apply, ContinuousLinearMap.zero_apply] using h ++ simpa only [C, negativeHessianBlock_apply, zero_apply] using h + linarith + have hC : Function.Injective C := by + intro u v huv +@@ -95,8 +103,10 @@ + ContDiff ℝ 2 (negativePartialGradient f p V) := by + have hD : ContDiff ℝ 2 (fderiv ℝ f) := + (contDiff_succ_iff_fderiv.mp (hsmooth 3)).2.2 +- exact (restrictCovector V).contDiff.comp +- (hD.comp (contDiff_const.add (ridgeAddition V).contDiff)) ++ change ContDiff ℝ 2 (fun q : E d × V => ++ (fderiv ℝ f (p + ridgeAddition V q)).comp V.subtypeL) ++ exact (hD.comp (contDiff_const.add (ridgeAddition V).contDiff)).clm_comp ++ contDiff_const + + theorem negativePartialGradient_hasFDerivAt (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (hsmooth : IsSmooth d f) : +@@ -114,8 +124,11 @@ + (p + ridgeAddition V (0 : E d × V)) := by + simpa only [map_zero, add_zero] using hDp + have hcomp := hDp'.comp (0 : E d × V) hadd +- simpa only [negativePartialGradient, map_zero, add_zero] using +- ((restrictCovector V).hasFDerivAt.comp (0 : E d × V) hcomp) ++ change HasFDerivAt (fun q : E d × V => ++ (fderiv ℝ f (p + ridgeAddition V q)).comp V.subtypeL) _ _ ++ convert hcomp.clm_comp (hasFDerivAt_const V.subtypeL (0 : E d × V)) using 1 ++ ext q z ++ simp [restrictCovector] + + /-- One actual ridge and all four conclusions for the same chosen function. + The equation is in the actual ambient function and actual subspace. -/ +@@ -156,7 +169,7 @@ + show fderiv ℝ f p = 0 from hcritical] + have heq : (fun w => G (w, r w)) =ᶠ[𝓝 (0 : E d)] + (fun _ => (0 : V →L[ℝ] ℝ)) := by +- simpa only [hG0] using hG.eventually_apply_implicitFunction (by norm_num) hinv ++ simpa [r, hG0] using hG.eventually_apply_implicitFunction (by norm_num) hinv + refine ⟨r, hr0, hrC, ?_, ?_⟩ + · filter_upwards [heq] with w hw + intro z +@@ -169,7 +182,7 @@ + (hasFDerivAt_id (0 : E d)).prodMk hdr + have hzero : HasFDerivAt (fun w : E d => G (w, r w)) + (0 : E d →L[ℝ] (V →L[ℝ] ℝ)) 0 := +- (hasFDerivAt_const (0 : E d) (0 : V →L[ℝ] ℝ)).congr_of_eventuallyEq heq ++ (hasFDerivAt_const (0 : V →L[ℝ] ℝ) (0 : E d)).congr_of_eventuallyEq heq + have hchain : HasFDerivAt (fun w : E d => G (w, r w)) + (D.comp ((ContinuousLinearMap.id ℝ (E d)).prod (fderiv ℝ r 0))) 0 := by + have hd : HasFDerivAt G D ((0 : E d), r 0) := by diff --git a/frontiers/critical_ridge_20261020/execution/author/CANDIDATE3_FREEZE.json b/frontiers/critical_ridge_20261020/execution/author/CANDIDATE3_FREEZE.json new file mode 100644 index 000000000..564187532 --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/author/CANDIDATE3_FREEZE.json @@ -0,0 +1,26 @@ +{ + "schema": "c299-candidate3-freeze-v1", + "created_utc": "2026-10-20T14:30:52.127723+00:00", + "source": "project/CriticalRidge.lean", + "bytes": 8485, + "sha256": "2a93240fa5034544a1dbcf5ec0a10ab11be1ca5d05f60b4df0e2663fa769f442", + "source_snapshot": "execution/author/source-attempts/2a93240fa5034544a1dbcf5ec0a10ab11be1ca5d05f60b4df0e2663fa769f442.lean", + "predecessor_sha256": "b3c22e590f761953ba322ad2903978e3982179204ad5c4a166dffc5fa1558322", + "failure_stdout": "hosted-development1/extracted/build-CriticalRidge.stdout", + "failure_stdout_sha256": "6287a34ab9f1cfb469f5152c2e523c7f3f1bbc9ab7573f7f01e924120b10877a", + "failure_receipt": "hosted-development1/extracted/build-CriticalRidge.receipt.json", + "failure_receipt_sha256": "0024de398e7b8c50ff015cf0101e37f54302bc8d5602c8c3cf8a3bc72109e50d", + "failure_duration_seconds": 17.856697, + "failure_exit_code": 1, + "failure_timed_out": false, + "hosted_development_run": 39438543701, + "hosted_development_head_prefix": "c8d66bde", + "diff": "execution/author/CANDIDATE3.diff", + "diff_sha256": "6d2626edb280aec9a5ff273502bbee3292feb494ce2af56c0488880bb1e3024e", + "public_binder_changes": false, + "public_declaration_count": 9, + "mathematical_map_unchanged": true, + "candidate3_compilation_performed": false, + "native_retry_performed": false, + "scientific_effect": "NONE" +} diff --git a/frontiers/critical_ridge_20261020/execution/author/source-attempts/2a93240fa5034544a1dbcf5ec0a10ab11be1ca5d05f60b4df0e2663fa769f442.lean b/frontiers/critical_ridge_20261020/execution/author/source-attempts/2a93240fa5034544a1dbcf5ec0a10ab11be1ca5d05f60b4df0e2663fa769f442.lean new file mode 100644 index 000000000..81182af88 --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/author/source-attempts/2a93240fa5034544a1dbcf5ec0a10ab11be1ca5d05f60b4df0e2663fa769f442.lean @@ -0,0 +1,196 @@ +import MorseFiniteCritical +import Mathlib.Analysis.Calculus.ImplicitContDiff + +/-! +# The actual negative partial-gradient ridge + +C299 constructs a local ridge from literal smoothness, criticality and a +negative definite restriction of the literal Hessian. The parameter is ambient +`E d`; it may subsequently be restricted to the supplied positive complement. +No complement is assumed orthogonal. No ridge, inverse certificate, Morse chart, +closed-superlevel local path connectivity or finite event list is an input. + +The construction follows the reviewed direct-ridge paper published at +Math-#487, issuecomment-6292079965. This module covers only its partial-gradient +implicit-function step and differentiated equation. Reduced positivity, +uniform signs, fiber concavity, tubes, paths, the quotient and full LPC remain +separate obligations. +-/ + +noncomputable section + +open Set Topology +open UniversalLaw.Spec.Lifetime TorusMorseFinite + +namespace TorusCriticalRidge + +variable {d : ℕ} + +/-- Restrict an ambient continuous covector to the literal subspace. -/ +def restrictCovector (V : Submodule ℝ (E d)) : + (E d →L[ℝ] ℝ) →L[ℝ] (V →L[ℝ] ℝ) where + toFun ℓ := ℓ.comp V.subtypeL + map_add' ℓ₁ ℓ₂ := by + ext z + rfl + map_smul' c ℓ := by + ext z + rfl + cont := (continuous_id : Continuous (fun ℓ : E d →L[ℝ] ℝ => ℓ)).clm_comp_const + V.subtypeL + +/-- Addition of an ambient parameter and a vector in the negative subspace. -/ +def ridgeAddition (V : Submodule ℝ (E d)) : + (E d × V) →L[ℝ] E d := + ContinuousLinearMap.fst ℝ (E d) V + + V.subtypeL.comp (ContinuousLinearMap.snd ℝ (E d) V) + +/-- The covector-valued partial gradient, with a fixed base point. -/ +def negativePartialGradient (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (q : E d × V) : V →L[ℝ] ℝ := + restrictCovector V (fderiv ℝ f (p + ridgeAddition V q)) + +/-- The actual Hessian restricted to both negative-subspace arguments. -/ +def negativeHessianBlock (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) : V →L[ℝ] (V →L[ℝ] ℝ) := + (restrictCovector V).comp + ((fderiv ℝ (fderiv ℝ f) p).comp V.subtypeL) + +theorem negativeHessianBlock_apply (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (v z : V) : + negativeHessianBlock f p V v z = hessian d f p v z := by + rw [literal_hessian_eq_fderiv] + rfl + +/-- Negative definiteness supplies the exact continuous inverse required by IFT. +This includes the zero subspace, without a unit-sphere argument. -/ +theorem negativeHessianBlock_isInvertible (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) + (hneg : ∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0) : + (negativeHessianBlock f p V).IsInvertible := by + let C := negativeHessianBlock f p V + have hz : ∀ v : V, C v = 0 → v = 0 := by + intro v hv + by_contra hne + have hvne : (v : E d) ≠ 0 := by + intro h + apply hne + exact Subtype.ext h + have hn := hneg v v.property hvne + have he : hessian d f p v v = 0 := by + have h := congrArg (fun k : V →L[ℝ] ℝ => k v) hv + simpa only [C, negativeHessianBlock_apply, zero_apply] using h + linarith + have hC : Function.Injective C := by + intro u v huv + apply sub_eq_zero.mp + apply hz + simp [map_sub, huv] + let J : V ≃L[ℝ] (V →L[ℝ] ℝ) := + (InnerProductSpace.toDual ℝ V).toContinuousLinearEquiv + let A : V →L[ℝ] V := J.symm.toContinuousLinearMap.comp C + have hA : Function.Injective A := J.symm.injective.comp hC + let eA : V ≃L[ℝ] V := + (LinearEquiv.ofInjectiveEndo A.toLinearMap hA).toContinuousLinearEquiv + refine ⟨eA.trans J, ?_⟩ + apply ContinuousLinearMap.ext + intro v + change J (J.symm (C v)) = C v + exact J.apply_symm_apply (C v) + +theorem negativePartialGradient_contDiff (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (hsmooth : IsSmooth d f) : + ContDiff ℝ 2 (negativePartialGradient f p V) := by + have hD : ContDiff ℝ 2 (fderiv ℝ f) := + (contDiff_succ_iff_fderiv.mp (hsmooth 3)).2.2 + change ContDiff ℝ 2 (fun q : E d × V => + (fderiv ℝ f (p + ridgeAddition V q)).comp V.subtypeL) + exact (hD.comp (contDiff_const.add (ridgeAddition V).contDiff)).clm_comp + contDiff_const + +theorem negativePartialGradient_hasFDerivAt (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (hsmooth : IsSmooth d f) : + HasFDerivAt (negativePartialGradient f p V) + ((restrictCovector V).comp + ((fderiv ℝ (fderiv ℝ f) p).comp (ridgeAddition V))) + (0 : E d × V) := by + have hD : ContDiff ℝ 1 (fderiv ℝ f) := + (contDiff_succ_iff_fderiv.mp (hsmooth 2)).2.2 + have hDp := (hD.differentiable (by norm_num) p).hasFDerivAt + have hadd : HasFDerivAt (fun q : E d × V => p + ridgeAddition V q) + (ridgeAddition V) 0 := by + simpa using ((ridgeAddition V).hasFDerivAt.const_add p) + have hDp' : HasFDerivAt (fderiv ℝ f) (fderiv ℝ (fderiv ℝ f) p) + (p + ridgeAddition V (0 : E d × V)) := by + simpa only [map_zero, add_zero] using hDp + have hcomp := hDp'.comp (0 : E d × V) hadd + change HasFDerivAt (fun q : E d × V => + (fderiv ℝ f (p + ridgeAddition V q)).comp V.subtypeL) _ _ + convert hcomp.clm_comp (hasFDerivAt_const V.subtypeL (0 : E d × V)) using 1 + ext q z + simp [restrictCovector] + +/-- One actual ridge and all four conclusions for the same chosen function. +The equation is in the actual ambient function and actual subspace. -/ +theorem exists_negative_partial_gradient_ridge + (f : E d → ℝ) (p : E d) (V : Submodule ℝ (E d)) + (hsmooth : IsSmooth d f) (hcritical : IsCriticalPoint d f p) + (hneg : ∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0) : + ∃ r : E d → V, + r 0 = 0 ∧ + ContDiffAt ℝ 2 r 0 ∧ + (∀ᶠ w in 𝓝 (0 : E d), ∀ z : V, + fderiv ℝ f (p + w + (r w : E d)) z = 0) ∧ + (∀ (w : E d) (z : V), + hessian d f p (w + (fderiv ℝ r 0 w : E d)) z = 0) := by + let G := negativePartialGradient f p V + let D := (restrictCovector V).comp + ((fderiv ℝ (fderiv ℝ f) p).comp (ridgeAddition V)) + have hG : ContDiffAt ℝ 2 G (0 : E d × V) := + (negativePartialGradient_contDiff f p V hsmooth).contDiffAt + have hDG : HasFDerivAt G D (0 : E d × V) := + negativePartialGradient_hasFDerivAt f p V hsmooth + have hblock : fderiv ℝ G (0 : E d × V) ∘L + ContinuousLinearMap.inr ℝ (E d) V = negativeHessianBlock f p V := by + rw [hDG.fderiv] + ext v z + simp [D, negativeHessianBlock, ridgeAddition, restrictCovector] + have hinv : (fderiv ℝ G (0 : E d × V) ∘L + ContinuousLinearMap.inr ℝ (E d) V).IsInvertible := by + rw [hblock] + exact negativeHessianBlock_isInvertible f p V hneg + let r : E d → V := hG.implicitFunction (by norm_num) hinv + have hr0 : r 0 = 0 := hG.implicitFunction_apply_self (by norm_num) hinv + have hrC : ContDiffAt ℝ 2 r 0 := + hG.contDiffAt_implicitFunction (by norm_num) hinv + have hG0 : G (0 : E d × V) = 0 := by + ext z + simp [G, negativePartialGradient, ridgeAddition, restrictCovector, + show fderiv ℝ f p = 0 from hcritical] + have heq : (fun w => G (w, r w)) =ᶠ[𝓝 (0 : E d)] + (fun _ => (0 : V →L[ℝ] ℝ)) := by + simpa [r, hG0] using hG.eventually_apply_implicitFunction (by norm_num) hinv + refine ⟨r, hr0, hrC, ?_, ?_⟩ + · filter_upwards [heq] with w hw + intro z + have hz := congrArg (fun k : V →L[ℝ] ℝ => k z) hw + simpa [G, negativePartialGradient, ridgeAddition, restrictCovector, add_assoc] using hz + · have hdr : HasFDerivAt r (fderiv ℝ r 0) 0 := + (hrC.differentiableAt (by norm_num)).hasFDerivAt + have hgraph : HasFDerivAt (fun w : E d => (w, r w)) + ((ContinuousLinearMap.id ℝ (E d)).prod (fderiv ℝ r 0)) 0 := + (hasFDerivAt_id (0 : E d)).prodMk hdr + have hzero : HasFDerivAt (fun w : E d => G (w, r w)) + (0 : E d →L[ℝ] (V →L[ℝ] ℝ)) 0 := + (hasFDerivAt_const (0 : V →L[ℝ] ℝ) (0 : E d)).congr_of_eventuallyEq heq + have hchain : HasFDerivAt (fun w : E d => G (w, r w)) + (D.comp ((ContinuousLinearMap.id ℝ (E d)).prod (fderiv ℝ r 0))) 0 := by + have hd : HasFDerivAt G D ((0 : E d), r 0) := by + simpa only [hr0] using hDG + exact hd.comp 0 hgraph + have hid := hchain.unique hzero + intro w z + have h := congrArg (fun C : E d →L[ℝ] (V →L[ℝ] ℝ) => C w z) hid + simpa [D, restrictCovector, ridgeAddition, literal_hessian_eq_fderiv] using h + +end TorusCriticalRidge diff --git a/frontiers/critical_ridge_20261020/execution/author/source-attempts/b3c22e590f761953ba322ad2903978e3982179204ad5c4a166dffc5fa1558322.lean b/frontiers/critical_ridge_20261020/execution/author/source-attempts/b3c22e590f761953ba322ad2903978e3982179204ad5c4a166dffc5fa1558322.lean new file mode 100644 index 000000000..f8bd3cb14 --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/author/source-attempts/b3c22e590f761953ba322ad2903978e3982179204ad5c4a166dffc5fa1558322.lean @@ -0,0 +1,183 @@ +import MorseFiniteCritical +import Mathlib.Analysis.Calculus.ImplicitContDiff + +/-! +# The actual negative partial-gradient ridge + +C299 constructs a local ridge from literal smoothness, criticality and a +negative definite restriction of the literal Hessian. The parameter is ambient +`E d`; it may subsequently be restricted to the supplied positive complement. +No complement is assumed orthogonal. No ridge, inverse certificate, Morse chart, +closed-superlevel local path connectivity or finite event list is an input. + +The construction follows the reviewed direct-ridge paper published at +Math-#487, issuecomment-6292079965. This module covers only its partial-gradient +implicit-function step and differentiated equation. Reduced positivity, +uniform signs, fiber concavity, tubes, paths, the quotient and full LPC remain +separate obligations. +-/ + +noncomputable section + +open Set Topology +open UniversalLaw.Spec.Lifetime TorusMorseFinite + +namespace TorusCriticalRidge + +variable {d : ℕ} + +/-- Restrict an ambient continuous covector to the literal subspace. -/ +def restrictCovector (V : Submodule ℝ (E d)) : + (E d →L[ℝ] ℝ) →L[ℝ] (V →L[ℝ] ℝ) := + (ContinuousLinearMap.compL ℝ V (E d) ℝ).flip V.subtypeL + +/-- Addition of an ambient parameter and a vector in the negative subspace. -/ +def ridgeAddition (V : Submodule ℝ (E d)) : + (E d × V) →L[ℝ] E d := + ContinuousLinearMap.fst ℝ (E d) V + + V.subtypeL.comp (ContinuousLinearMap.snd ℝ (E d) V) + +/-- The covector-valued partial gradient, with a fixed base point. -/ +def negativePartialGradient (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (q : E d × V) : V →L[ℝ] ℝ := + restrictCovector V (fderiv ℝ f (p + ridgeAddition V q)) + +/-- The actual Hessian restricted to both negative-subspace arguments. -/ +def negativeHessianBlock (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) : V →L[ℝ] (V →L[ℝ] ℝ) := + (restrictCovector V).comp + ((fderiv ℝ (fderiv ℝ f) p).comp V.subtypeL) + +theorem negativeHessianBlock_apply (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (v z : V) : + negativeHessianBlock f p V v z = hessian d f p v z := by + rw [literal_hessian_eq_fderiv] + rfl + +/-- Negative definiteness supplies the exact continuous inverse required by IFT. +This includes the zero subspace, without a unit-sphere argument. -/ +theorem negativeHessianBlock_isInvertible (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) + (hneg : ∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0) : + (negativeHessianBlock f p V).IsInvertible := by + let C := negativeHessianBlock f p V + have hz : ∀ v : V, C v = 0 → v = 0 := by + intro v hv + by_contra hne + have hvne : (v : E d) ≠ 0 := by + intro h + apply hne + exact Subtype.ext h + have hn := hneg v v.property hvne + have he : hessian d f p v v = 0 := by + have h := congrArg (fun k : V →L[ℝ] ℝ => k v) hv + simpa only [C, negativeHessianBlock_apply, ContinuousLinearMap.zero_apply] using h + linarith + have hC : Function.Injective C := by + intro u v huv + apply sub_eq_zero.mp + apply hz + simp [map_sub, huv] + let J : V ≃L[ℝ] (V →L[ℝ] ℝ) := + (InnerProductSpace.toDual ℝ V).toContinuousLinearEquiv + let A : V →L[ℝ] V := J.symm.toContinuousLinearMap.comp C + have hA : Function.Injective A := J.symm.injective.comp hC + let eA : V ≃L[ℝ] V := + (LinearEquiv.ofInjectiveEndo A.toLinearMap hA).toContinuousLinearEquiv + refine ⟨eA.trans J, ?_⟩ + apply ContinuousLinearMap.ext + intro v + change J (J.symm (C v)) = C v + exact J.apply_symm_apply (C v) + +theorem negativePartialGradient_contDiff (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (hsmooth : IsSmooth d f) : + ContDiff ℝ 2 (negativePartialGradient f p V) := by + have hD : ContDiff ℝ 2 (fderiv ℝ f) := + (contDiff_succ_iff_fderiv.mp (hsmooth 3)).2.2 + exact (restrictCovector V).contDiff.comp + (hD.comp (contDiff_const.add (ridgeAddition V).contDiff)) + +theorem negativePartialGradient_hasFDerivAt (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (hsmooth : IsSmooth d f) : + HasFDerivAt (negativePartialGradient f p V) + ((restrictCovector V).comp + ((fderiv ℝ (fderiv ℝ f) p).comp (ridgeAddition V))) + (0 : E d × V) := by + have hD : ContDiff ℝ 1 (fderiv ℝ f) := + (contDiff_succ_iff_fderiv.mp (hsmooth 2)).2.2 + have hDp := (hD.differentiable (by norm_num) p).hasFDerivAt + have hadd : HasFDerivAt (fun q : E d × V => p + ridgeAddition V q) + (ridgeAddition V) 0 := by + simpa using ((ridgeAddition V).hasFDerivAt.const_add p) + have hDp' : HasFDerivAt (fderiv ℝ f) (fderiv ℝ (fderiv ℝ f) p) + (p + ridgeAddition V (0 : E d × V)) := by + simpa only [map_zero, add_zero] using hDp + have hcomp := hDp'.comp (0 : E d × V) hadd + simpa only [negativePartialGradient, map_zero, add_zero] using + ((restrictCovector V).hasFDerivAt.comp (0 : E d × V) hcomp) + +/-- One actual ridge and all four conclusions for the same chosen function. +The equation is in the actual ambient function and actual subspace. -/ +theorem exists_negative_partial_gradient_ridge + (f : E d → ℝ) (p : E d) (V : Submodule ℝ (E d)) + (hsmooth : IsSmooth d f) (hcritical : IsCriticalPoint d f p) + (hneg : ∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0) : + ∃ r : E d → V, + r 0 = 0 ∧ + ContDiffAt ℝ 2 r 0 ∧ + (∀ᶠ w in 𝓝 (0 : E d), ∀ z : V, + fderiv ℝ f (p + w + (r w : E d)) z = 0) ∧ + (∀ (w : E d) (z : V), + hessian d f p (w + (fderiv ℝ r 0 w : E d)) z = 0) := by + let G := negativePartialGradient f p V + let D := (restrictCovector V).comp + ((fderiv ℝ (fderiv ℝ f) p).comp (ridgeAddition V)) + have hG : ContDiffAt ℝ 2 G (0 : E d × V) := + (negativePartialGradient_contDiff f p V hsmooth).contDiffAt + have hDG : HasFDerivAt G D (0 : E d × V) := + negativePartialGradient_hasFDerivAt f p V hsmooth + have hblock : fderiv ℝ G (0 : E d × V) ∘L + ContinuousLinearMap.inr ℝ (E d) V = negativeHessianBlock f p V := by + rw [hDG.fderiv] + ext v z + simp [D, negativeHessianBlock, ridgeAddition, restrictCovector] + have hinv : (fderiv ℝ G (0 : E d × V) ∘L + ContinuousLinearMap.inr ℝ (E d) V).IsInvertible := by + rw [hblock] + exact negativeHessianBlock_isInvertible f p V hneg + let r : E d → V := hG.implicitFunction (by norm_num) hinv + have hr0 : r 0 = 0 := hG.implicitFunction_apply_self (by norm_num) hinv + have hrC : ContDiffAt ℝ 2 r 0 := + hG.contDiffAt_implicitFunction (by norm_num) hinv + have hG0 : G (0 : E d × V) = 0 := by + ext z + simp [G, negativePartialGradient, ridgeAddition, restrictCovector, + show fderiv ℝ f p = 0 from hcritical] + have heq : (fun w => G (w, r w)) =ᶠ[𝓝 (0 : E d)] + (fun _ => (0 : V →L[ℝ] ℝ)) := by + simpa only [hG0] using hG.eventually_apply_implicitFunction (by norm_num) hinv + refine ⟨r, hr0, hrC, ?_, ?_⟩ + · filter_upwards [heq] with w hw + intro z + have hz := congrArg (fun k : V →L[ℝ] ℝ => k z) hw + simpa [G, negativePartialGradient, ridgeAddition, restrictCovector, add_assoc] using hz + · have hdr : HasFDerivAt r (fderiv ℝ r 0) 0 := + (hrC.differentiableAt (by norm_num)).hasFDerivAt + have hgraph : HasFDerivAt (fun w : E d => (w, r w)) + ((ContinuousLinearMap.id ℝ (E d)).prod (fderiv ℝ r 0)) 0 := + (hasFDerivAt_id (0 : E d)).prodMk hdr + have hzero : HasFDerivAt (fun w : E d => G (w, r w)) + (0 : E d →L[ℝ] (V →L[ℝ] ℝ)) 0 := + (hasFDerivAt_const (0 : E d) (0 : V →L[ℝ] ℝ)).congr_of_eventuallyEq heq + have hchain : HasFDerivAt (fun w : E d => G (w, r w)) + (D.comp ((ContinuousLinearMap.id ℝ (E d)).prod (fderiv ℝ r 0))) 0 := by + have hd : HasFDerivAt G D ((0 : E d), r 0) := by + simpa only [hr0] using hDG + exact hd.comp 0 hgraph + have hid := hchain.unique hzero + intro w z + have h := congrArg (fun C : E d →L[ℝ] (V →L[ℝ] ℝ) => C w z) hid + simpa [D, restrictCovector, ridgeAddition, literal_hessian_eq_fderiv] using h + +end TorusCriticalRidge diff --git a/frontiers/critical_ridge_20261020/execution/hosted-development1/ARCHIVE_MEMBERS.json b/frontiers/critical_ridge_20261020/execution/hosted-development1/ARCHIVE_MEMBERS.json new file mode 100644 index 000000000..5af158fd4 --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/hosted-development1/ARCHIVE_MEMBERS.json @@ -0,0 +1,171 @@ +{ + "archive_bytes": 480143, + "archive_sha256": "b11e3bd43ddce08b0037e9f1de34d9365a4739200481235ecbd10dc794a73613", + "members": [ + { + "path": "HOSTED_SOURCE_MANIFEST.json", + "bytes": 1731, + "sha256": "3c80ed35bc7a28342b127ca08f046be913021ab28ff13119e698c981eb0aef6b" + }, + { + "path": "RESULT.json", + "bytes": 34423, + "sha256": "a1c5b94fa653b587642380f950f71f3527e8c855acae44cf750cb687bd8088ed" + }, + { + "path": "build-CriticalRidge.receipt.json", + "bytes": 4332, + "sha256": "0024de398e7b8c50ff015cf0101e37f54302bc8d5602c8c3cf8a3bc72109e50d" + }, + { + "path": "build-CriticalRidge.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-CriticalRidge.stdout", + "bytes": 4227, + "sha256": "6287a34ab9f1cfb469f5152c2e523c7f3f1bbc9ab7573f7f01e924120b10877a" + }, + { + "path": "build-Lifetime.receipt.json", + "bytes": 3638, + "sha256": "ec8f915758acdce0560bbba85161563844bd9d7430bf3439a2d135561d53854e" + }, + { + "path": "build-Lifetime.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-Lifetime.stdout", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-MorseFiniteCritical.receipt.json", + "bytes": 4272, + "sha256": "069aec324b05f971a868c8062f5664774b0520c9d6d2d1957f84c95c484308f1" + }, + { + "path": "build-MorseFiniteCritical.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-MorseFiniteCritical.stdout", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-TorusTopology.receipt.json", + "bytes": 3964, + "sha256": "8461634235fb7b37a2f91dcc88b3904986316db995edab88005bfe84c19e28b8" + }, + { + "path": "build-TorusTopology.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-TorusTopology.stdout", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "objects/Lifetime.olean", + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + { + "path": "objects/MorseFiniteCritical.olean", + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + { + "path": "objects/TorusTopology.olean", + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + }, + { + "path": "runtime-print-prefix.receipt.json", + "bytes": 3160, + "sha256": "98708b841bcc238b1ecb648ac3591cff70dff101b40df04d17303ee415c6b108" + }, + { + "path": "runtime-print-prefix.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "runtime-print-prefix.stdout", + "bytes": 58, + "sha256": "e0e72101499ee5e5a1967519d9955a093a555b85d5073da4bdba8bdd4cb12617" + }, + { + "path": "runtime-version.receipt.json", + "bytes": 3151, + "sha256": "0ef0d1c15ba99773051eff6fe106335ff53139739ce5fd581bc7ea3c61578649" + }, + { + "path": "runtime-version.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "runtime-version.stdout", + "bytes": 106, + "sha256": "355a9a028f81641782d75d6e6b58dec70f29d2f61238a9e271690259d9bf5680" + }, + { + "path": "source-snapshot/negative-project/WithoutCriticality.lean", + "bytes": 944, + "sha256": "6ebc44de843b951c312add4848962d76c4788cc10bdacf17002eb69fd370f1d2" + }, + { + "path": "source-snapshot/negative-project/WithoutNegativeDefiniteness.lean", + "bytes": 872, + "sha256": "ad204aee211aa3074621f56eeaf8e1a3f3a522b7c7cbe2bbdd67f3759833feb9" + }, + { + "path": "source-snapshot/project/CriticalRidge.lean", + "bytes": 8149, + "sha256": "b3c22e590f761953ba322ad2903978e3982179204ad5c4a166dffc5fa1558322" + }, + { + "path": "source-snapshot/project/CriticalRidgeAxiomAudit.lean", + "bytes": 2728, + "sha256": "cff55f5b7721a621530ae1020b81e6cc89ce5c405396145e1ca5d3cfba4b2fb7" + }, + { + "path": "source-snapshot/project/Lifetime.lean", + "bytes": 51383, + "sha256": "90f4892608e953ecc696bb32ea159d1c178ceb8a1c6edfd11acfceb14af462c6" + }, + { + "path": "source-snapshot/project/MorseFiniteCritical.lean", + "bytes": 9445, + "sha256": "95a660134eda49eecfe6181884bd23b4e4ca210e228d2463de29e5f821df047b" + }, + { + "path": "source-snapshot/project/TorusTopology.lean", + "bytes": 12257, + "sha256": "ddb145b3f791c181d4f2a51e54e711937297bd6476ba55bcd5252b7ddb57cfe1" + }, + { + "path": "source-snapshot/repository/.github/workflows/c299-critical-ridge.yml", + "bytes": 3030, + "sha256": "70e7396d868f00097a862895954ad19962d9df96cb1d8c44a655b76e5e5874a1" + }, + { + "path": "source-snapshot/repository/frontiers/critical_ridge_20261020/c299_hosted_verify.py", + "bytes": 32069, + "sha256": "e4c5b9dd02e2ba2f98da27707c42ef861d9039b52864833d2164a3114f318f49" + }, + { + "path": "source-snapshot/repository/frontiers/critical_ridge_20261020/test_c299_hosted_verify.py", + "bytes": 17863, + "sha256": "62400129fda7b863d692397deac2a9d83b7f1101d98b53ed1043f0ef8cfd604e" + } + ] +} diff --git a/frontiers/critical_ridge_20261020/execution/hosted-development1/DISPOSITION.json b/frontiers/critical_ridge_20261020/execution/hosted-development1/DISPOSITION.json new file mode 100644 index 000000000..cfb07d267 --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/hosted-development1/DISPOSITION.json @@ -0,0 +1,60 @@ +{ + "checkpoint": "2026-10-20T14:27:10.764658+00:00", + "actual_executor": "GitHub Actions ubuntu-24.04 via OpenAI Codex root publication; delegated for Dylan Roy", + "source_author": "OpenAI Codex /root/adapter_feasibility_c292", + "head": "c8d66bde8ce496c1007e4a3f6b0a9f9f93762bfb", + "tested_merge": "396e7ee43ec39fa5145909e1f809fc91fec6b014", + "tree": "0f734451a5cdd70274dbf4018155039793844af4", + "run": 39438543701, + "attempt": 1, + "job": 118681955998, + "artifact": 12271934213, + "artifact_bytes": 480143, + "artifact_sha256": "b11e3bd43ddce08b0037e9f1de34d9365a4739200481235ecbd10dc794a73613", + "candidate_bytes": 8149, + "candidate_sha256": "b3c22e590f761953ba322ad2903978e3982179204ad5c4a166dffc5fa1558322", + "result": "HOLD_NOT_COMPLETED", + "phase_results": [ + { + "name": "runtime-print-prefix", + "exit_code": 0, + "timed_out": false, + "status": "PASS" + }, + { + "name": "runtime-version", + "exit_code": 0, + "timed_out": false, + "status": "PASS" + }, + { + "name": "build-Lifetime", + "exit_code": 0, + "timed_out": false, + "status": "PASS" + }, + { + "name": "build-TorusTopology", + "exit_code": 0, + "timed_out": false, + "status": "PASS" + }, + { + "name": "build-MorseFiniteCritical", + "exit_code": 0, + "timed_out": false, + "status": "PASS" + }, + { + "name": "build-CriticalRidge", + "exit_code": 1, + "timed_out": false, + "status": "FAIL" + } + ], + "actual_failure": "CriticalRidge elaboration errors; expected output object absent, so object validation also failed. The unchanged three input modules freshly compiled. This is not the anticipated final diagnostic qualification HOLD; no ridge kernel/census/negative controls reached.", + "diagnostic_bytes": 4227, + "diagnostic_sha256": "6287a34ab9f1cfb469f5152c2e523c7f3f1bbc9ab7573f7f01e924120b10877a", + "repair_scope": "Minimal source-author elaboration and deprecation repair, preserve exact public hypotheses and conclusions; fresh nonauthor diff review before next hosted attempt. No unchanged native retry.", + "scientific_effect": "NONE" +} diff --git a/frontiers/critical_ridge_20261020/execution/hosted-development1/HOSTED_SOURCE_MANIFEST.json b/frontiers/critical_ridge_20261020/execution/hosted-development1/HOSTED_SOURCE_MANIFEST.json new file mode 100644 index 000000000..a54c3ed9e --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/hosted-development1/HOSTED_SOURCE_MANIFEST.json @@ -0,0 +1,48 @@ +{ + "files": { + "negative-project/WithoutCriticality.lean": { + "bytes": 944, + "sha256": "6ebc44de843b951c312add4848962d76c4788cc10bdacf17002eb69fd370f1d2" + }, + "negative-project/WithoutNegativeDefiniteness.lean": { + "bytes": 872, + "sha256": "ad204aee211aa3074621f56eeaf8e1a3f3a522b7c7cbe2bbdd67f3759833feb9" + }, + "project/CriticalRidge.lean": { + "bytes": 8149, + "sha256": "b3c22e590f761953ba322ad2903978e3982179204ad5c4a166dffc5fa1558322" + }, + "project/CriticalRidgeAxiomAudit.lean": { + "bytes": 2728, + "sha256": "cff55f5b7721a621530ae1020b81e6cc89ce5c405396145e1ca5d3cfba4b2fb7" + }, + "project/Lifetime.lean": { + "bytes": 51383, + "sha256": "90f4892608e953ecc696bb32ea159d1c178ceb8a1c6edfd11acfceb14af462c6" + }, + "project/MorseFiniteCritical.lean": { + "bytes": 9445, + "sha256": "95a660134eda49eecfe6181884bd23b4e4ca210e228d2463de29e5f821df047b" + }, + "project/TorusTopology.lean": { + "bytes": 12257, + "sha256": "ddb145b3f791c181d4f2a51e54e711937297bd6476ba55bcd5252b7ddb57cfe1" + } + }, + "schema_version": 1, + "scientific_effect": "NONE", + "source_origins": { + "Lifetime": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/Lifetime.lean" + }, + "MorseFiniteCritical": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/MorseFiniteCritical.lean" + }, + "TorusTopology": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/TorusTopology.lean" + } + } +} diff --git a/frontiers/critical_ridge_20261020/execution/hosted-development1/RESULT.json b/frontiers/critical_ridge_20261020/execution/hosted-development1/RESULT.json new file mode 100644 index 000000000..0511084cc --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/hosted-development1/RESULT.json @@ -0,0 +1,476 @@ +{ + "context": { + "executor": "GitHub-hosted runner executing C299 verification code", + "github_event_name": "pull_request", + "github_job": "c299-hosted-formal", + "github_repository": "d6g8k5htny-coder/Math-", + "github_run_attempt": "1", + "github_run_id": "39438543701", + "github_sha": "396e7ee43ec39fa5145909e1f809fc91fec6b014", + "github_workflow": "C299 critical ridge (hosted Lean, no scientific promotion)", + "human_review_credit": 0, + "pull_request": { + "base_sha": "8c226134ac0a0169dbb43311082e5353ed5c922c", + "head_sha": "c8d66bde8ce496c1007e4a3f6b0a9f9f93762bfb", + "number": 491 + }, + "tested_commit": "396e7ee43ec39fa5145909e1f809fc91fec6b014", + "tested_parents": [], + "tested_tree": "0f734451a5cdd70274dbf4018155039793844af4" + }, + "environment_contract": { + "policy": "Remove inherited LEAN*, LAKE*, LD_* and DYLD_* overrides, except the Lake-provided LEAN_PATH; prepend the fresh local object directory to that path and set LEAN_NUM_THREADS=2. Retain declared PATH for launcher lookup. Other inherited variables remain available but are not recorded. Record only selected non-secret path/thread values and removed variable names.", + "removed_variable_names": [ + "LAKE", + "LAKE_ARTIFACT_CACHE", + "LAKE_CACHE_DIR", + "LAKE_CONFIG", + "LAKE_HOME", + "LAKE_NO_CACHE", + "LAKE_PKG_URL_MAP", + "LAKE_RESTORE_ARTIFACTS", + "LD_LIBRARY_PATH", + "LEAN", + "LEAN_AR", + "LEAN_GITHASH", + "LEAN_NUM_THREADS", + "LEAN_RECURSION_COUNT", + "LEAN_SRC_PATH", + "LEAN_SYSROOT" + ], + "retained_lake_lean_path": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461" + }, + "failure": "RuntimeError('C299 build-CriticalRidge unexpected exit: 1; timed_out=False; spawn_error=None; object_error=build must add only its own target object outputs; environment_error=None')", + "lean_launcher": { + "bytes": 9024, + "path": "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "sha256": "e8baaa71855a616dc351028f3ad2200051b0671f423a1696a100e809302d5550" + }, + "lean_version_output": "Lean (version 4.34.1, x86_64-unknown-linux-gnu, commit 5045d0056413266e57c625dcd7c365b10e377c52, Release)\n\n", + "machine": { + "machine": "x86_64", + "platform": "Linux-7.0.0-1017-azure-x86_64-with-glibc2.39", + "python": "3.12.3" + }, + "memory_limit": "-M14000", + "memory_limit_reason": "Explicit Linux execution budget; not a claim that C299 requires this amount.", + "packages_before": { + "Cli": "e92c9f15fdfacc8536f31cfb3b7ad26c3c8cd204", + "LeanSearchClient": "ddf04cf3949fa556442341e87d47f9f6e6074707", + "Qq": "6a489d9af5d0c47e5b259e2e8bcdfc1811b5a259", + "aesop": "355695d523e41d0554926416cba2a2b3544fbbc9", + "batteries": "f2effa3d803fda822b1f97b806c47cf2adfbcbc2", + "importGraph": "e928b72544873815af278d38681b31c0293588e3", + "mathlib": "d13f23b723b8a846827a245b89c10fc7d3f11612", + "plausible": "118aa17ee84656b8bd727fef7c458ee8c833385c", + "proofwidgets": "106ff4fafc74ef4ac99d81dbf3ab399118f497a5" + }, + "phase_results": [ + { + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "--print-prefix" + ], + "cwd": "/home/runner/work/Math-/Math-/formal", + "duration_seconds": 0.064132, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:23:55.948086+00:00", + "name": "runtime-print-prefix", + "object_validation_error": null, + "objects_after": null, + "objects_before": null, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:23:55.883977+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 58, + "stdout_sha256": "e0e72101499ee5e5a1967519d9955a093a555b85d5073da4bdba8bdd4cb12617", + "timed_out": false, + "timeout_seconds": 30, + "unexpected_override_names": [] + }, + { + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "--version" + ], + "cwd": "/home/runner/work/Math-/Math-/formal", + "duration_seconds": 0.064168, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:23:56.017998+00:00", + "name": "runtime-version", + "object_validation_error": null, + "objects_after": null, + "objects_before": null, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:23:55.953847+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 106, + "stdout_sha256": "355a9a028f81641782d75d6e6b58dec70f29d2f61238a9e271690259d9bf5680", + "timed_out": false, + "timeout_seconds": 30, + "unexpected_override_names": [] + }, + { + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/Lifetime.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/Lifetime.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 5.52667, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:24:01.545754+00:00", + "name": "build-Lifetime", + "object": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "object_validation_error": null, + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + } + }, + "objects_before": {}, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:23:56.019098+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] + }, + { + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-DwarningAsError=true", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/TorusTopology.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/TorusTopology.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 4.977547, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:24:06.529965+00:00", + "name": "build-TorusTopology", + "object": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + }, + "object_validation_error": null, + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "objects_before": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + } + }, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:24:01.552433+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] + }, + { + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-DwarningAsError=true", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/MorseFiniteCritical.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/MorseFiniteCritical.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 7.833315, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:24:14.368356+00:00", + "name": "build-MorseFiniteCritical", + "object": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "object_validation_error": null, + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "MorseFiniteCritical.olean": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "objects_before": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:24:06.535056+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] + }, + { + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-DwarningAsError=true", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/CriticalRidge.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 17.856697, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 1, + "finished_at": "2026-10-20T14:24:32.230278+00:00", + "name": "build-CriticalRidge", + "object_validation_error": "build must add only its own target object outputs", + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "MorseFiniteCritical.olean": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "objects_before": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "MorseFiniteCritical.olean": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:24:14.373621+00:00", + "status": "FAIL", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 4227, + "stdout_sha256": "6287a34ab9f1cfb469f5152c2e523c7f3f1bbc9ab7573f7f01e924120b10877a", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] + } + ], + "phase_timeout_seconds": 900, + "replay_limit": "Not a --fresh replay or rebuild of the full dependency closure.", + "runtimes": { + "lean": { + "bytes": 9024, + "path": "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "sha256": "e8baaa71855a616dc351028f3ad2200051b0671f423a1696a100e809302d5550" + }, + "leanchecker": { + "bytes": 51080, + "path": "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/leanchecker", + "sha256": "ccef1bfe9bfeecea65137d94a69033c1a89f360711f50fa3178e7ba3e696fcbe" + } + }, + "scientific_effect": "NONE", + "source_identity": { + "dependency_pins": { + "Cli": "e92c9f15fdfacc8536f31cfb3b7ad26c3c8cd204", + "LeanSearchClient": "ddf04cf3949fa556442341e87d47f9f6e6074707", + "Qq": "6a489d9af5d0c47e5b259e2e8bcdfc1811b5a259", + "aesop": "355695d523e41d0554926416cba2a2b3544fbbc9", + "batteries": "f2effa3d803fda822b1f97b806c47cf2adfbcbc2", + "importGraph": "e928b72544873815af278d38681b31c0293588e3", + "mathlib": "d13f23b723b8a846827a245b89c10fc7d3f11612", + "plausible": "118aa17ee84656b8bd727fef7c458ee8c833385c", + "proofwidgets": "106ff4fafc74ef4ac99d81dbf3ab399118f497a5" + }, + "files": { + "negative-project/WithoutCriticality.lean": { + "bytes": 944, + "sha256": "6ebc44de843b951c312add4848962d76c4788cc10bdacf17002eb69fd370f1d2" + }, + "negative-project/WithoutNegativeDefiniteness.lean": { + "bytes": 872, + "sha256": "ad204aee211aa3074621f56eeaf8e1a3f3a522b7c7cbe2bbdd67f3759833feb9" + }, + "project/CriticalRidge.lean": { + "bytes": 8149, + "sha256": "b3c22e590f761953ba322ad2903978e3982179204ad5c4a166dffc5fa1558322" + }, + "project/CriticalRidgeAxiomAudit.lean": { + "bytes": 2728, + "sha256": "cff55f5b7721a621530ae1020b81e6cc89ce5c405396145e1ca5d3cfba4b2fb7" + }, + "project/Lifetime.lean": { + "bytes": 51383, + "sha256": "90f4892608e953ecc696bb32ea159d1c178ceb8a1c6edfd11acfceb14af462c6" + }, + "project/MorseFiniteCritical.lean": { + "bytes": 9445, + "sha256": "95a660134eda49eecfe6181884bd23b4e4ca210e228d2463de29e5f821df047b" + }, + "project/TorusTopology.lean": { + "bytes": 12257, + "sha256": "ddb145b3f791c181d4f2a51e54e711937297bd6476ba55bcd5252b7ddb57cfe1" + } + }, + "formal_config": { + "formal/lake-manifest.json": { + "bytes": 3553, + "sha256": "d63753befccc21923783a5085148e3ff028d97134ea52f5a08bd87ecf1b0b043" + }, + "formal/lakefile.toml": { + "bytes": 274, + "sha256": "d629891716c169404d1f0d76492441c8dd66f1e790b1b8b0819e51c8d5059255" + }, + "formal/lean-toolchain": { + "bytes": 25, + "sha256": "d5edba4e4b8faad9c1baeadb265716d20d03be4d1a2647dc5e35b0c0325bea7b" + } + }, + "manifest": { + "bytes": 1731, + "sha256": "3c80ed35bc7a28342b127ca08f046be913021ab28ff13119e698c981eb0aef6b" + }, + "source_origin_limit": "Remote origin byte equality is a separate owner custody check.", + "source_origins": { + "Lifetime": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/Lifetime.lean" + }, + "MorseFiniteCritical": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/MorseFiniteCritical.lean" + }, + "TorusTopology": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/TorusTopology.lean" + } + }, + "support_files": { + ".github/workflows/c299-critical-ridge.yml": { + "bytes": 3030, + "sha256": "70e7396d868f00097a862895954ad19962d9df96cb1d8c44a655b76e5e5874a1" + }, + "frontiers/critical_ridge_20261020/c299_hosted_verify.py": { + "bytes": 32069, + "sha256": "e4c5b9dd02e2ba2f98da27707c42ef861d9039b52864833d2164a3114f318f49" + }, + "frontiers/critical_ridge_20261020/test_c299_hosted_verify.py": { + "bytes": 17863, + "sha256": "62400129fda7b863d692397deac2a9d83b7f1101d98b53ed1043f0ef8cfd604e" + } + } + }, + "started_at": "2026-10-20T14:22:03.666387+00:00", + "started_execution_at": "2026-10-20T14:23:55.753498+00:00", + "status": "HOLD_NOT_COMPLETED", + "threads": 2, + "verification_scope": "Five fresh local objects; four standard named-module kernel replays; full four-module axiom census; two omitted-premise interface controls." +} diff --git a/frontiers/critical_ridge_20261020/execution/hosted-development1/build-CriticalRidge.receipt.json b/frontiers/critical_ridge_20261020/execution/hosted-development1/build-CriticalRidge.receipt.json new file mode 100644 index 000000000..903dce867 --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/hosted-development1/build-CriticalRidge.receipt.json @@ -0,0 +1,63 @@ +{ + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-DwarningAsError=true", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/CriticalRidge.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 17.856697, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 1, + "finished_at": "2026-10-20T14:24:32.230278+00:00", + "name": "build-CriticalRidge", + "object_validation_error": "build must add only its own target object outputs", + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "MorseFiniteCritical.olean": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "objects_before": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "MorseFiniteCritical.olean": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:24:14.373621+00:00", + "status": "FAIL", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 4227, + "stdout_sha256": "6287a34ab9f1cfb469f5152c2e523c7f3f1bbc9ab7573f7f01e924120b10877a", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] +} diff --git a/frontiers/critical_ridge_20261020/execution/hosted-development1/build-CriticalRidge.stderr b/frontiers/critical_ridge_20261020/execution/hosted-development1/build-CriticalRidge.stderr new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/execution/hosted-development1/build-CriticalRidge.stdout b/frontiers/critical_ridge_20261020/execution/hosted-development1/build-CriticalRidge.stdout new file mode 100644 index 000000000..46a0167ba --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/hosted-development1/build-CriticalRidge.stdout @@ -0,0 +1,64 @@ +/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean:32:2: error: Type mismatch + (ContinuousLinearMap.flip ?m.63) V.subtypeL +has type + @ContinuousLinearMap ?m.44 ?m.46 Field.toSemifield.toSemiring Field.toSemifield.toSemiring ?m.60 ?m.47 + PseudoMetricSpace.toUniformSpace.toTopologicalSpace SeminormedAddCommGroup.toAddCommGroup.toAddCommMonoid ?m.49 + PseudoMetricSpace.toUniformSpace.toTopologicalSpace SeminormedAddCommGroup.toAddCommGroup.toAddCommMonoid + NormedSpace.toModule NormedSpace.toModule +but is expected to have type + @ContinuousLinearMap ℝ ℝ Real.semiring Real.semiring (RingHom.id ℝ) (E d →L[ℝ] ℝ) ContinuousLinearMap.topologicalSpace + ContinuousLinearMap.addCommMonoid (↥V →L[ℝ] ℝ) ContinuousLinearMap.topologicalSpace + ContinuousLinearMap.addCommMonoid ContinuousLinearMap.module ContinuousLinearMap.module +/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean:55:2: error: Tactic `rfl` failed: The left-hand side + ((negativeHessianBlock f p V) v) z +is not definitionally equal to the right-hand side + ((fderiv ℝ (fderiv ℝ f) p) ↑v) ↑z + +d : ℕ +f : E d → ℝ +p : E d +V : Submodule ℝ (E d) +v z : ↥V +⊢ ((negativeHessianBlock f p V) v) z = ((fderiv ℝ (fderiv ℝ f) p) ↑v) ↑z +/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean:74:49: error: `ContinuousLinearMap.zero_apply` has been deprecated: Use `zero_apply` instead + +Note: The updated constant is in a different namespace. Dot notation may need to be changed (e.g., from `x.zero_apply` to `zero_apply x`). +/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean:98:8: error: Application type mismatch: The argument + restrictCovector V +has type + @ContinuousLinearMap ℝ ℝ Real.semiring Real.semiring (RingHom.id ℝ) (E d →L[ℝ] ℝ) ContinuousLinearMap.topologicalSpace + ContinuousLinearMap.addCommMonoid (↥V →L[ℝ] ℝ) ContinuousLinearMap.topologicalSpace + ContinuousLinearMap.addCommMonoid ContinuousLinearMap.module ContinuousLinearMap.module +but is expected to have type + @ContinuousLinearMap ℝ ℝ Field.toSemifield.toSemiring Field.toSemifield.toSemiring (RingHom.id ℝ) (E d →L[ℝ] ℝ) + PseudoMetricSpace.toUniformSpace.toTopologicalSpace ContinuousLinearMap.toNormedAddCommGroup.toAddCommMonoid ?m.68 + PseudoMetricSpace.toUniformSpace.toTopologicalSpace NormedAddCommGroup.toAddCommGroup.toAddCommMonoid + ContinuousLinearMap.toNormedSpace.toModule NormedSpace.toModule +in the application + ContinuousLinearMap.contDiff (restrictCovector V) +/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean:118:5: error: Application type mismatch: The argument + ContinuousLinearMap.hasFDerivAt (restrictCovector V) +has type + HasFDerivAt (⇑(restrictCovector V)) (restrictCovector V) ?m.289 +but is expected to have type + HasFDerivAt ?m.305 ?m.306 ((fderiv ℝ f ∘ fun q => p + (ridgeAddition V) q) 0) +in the application + HasFDerivAt.comp 0 (ContinuousLinearMap.hasFDerivAt (restrictCovector V)) +/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean:159:4: error: Type mismatch: After simplification, term + ContDiffAt.eventually_apply_implicitFunction hG + (Mathlib.Meta.NormNum.isNat_eq_false (Mathlib.Meta.NormNum.isNat_ofNat (WithTop ℕ∞) (Eq.refl 2)) + (Mathlib.Meta.NormNum.isNat_ofNat (WithTop ℕ∞) Nat.cast_zero) (Eq.refl false)) + hinv + has type + ∀ᶠ (x : E d) in 𝓝 0.1, G (x, hG.implicitFunction ⋯ hinv x) = 0 +but is expected to have type + (fun w => G (w, r w)) =ᶠ[𝓝 0] fun x => 0 +/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean:172:74: error: Application type mismatch: The argument + heq +has type + (fun w => G (w, r w)) =ᶠ[𝓝 (0 : E d)] fun x => 0 +but is expected to have type + ?m.771 =ᶠ[𝓝 (0 : ↥V →L[ℝ] ℝ)] fun x => 0 +in the application + HasFDerivAt.congr_of_eventuallyEq (hasFDerivAt_const 0 0) heq +/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean:144:50: error: declaration uses `sorry` diff --git a/frontiers/critical_ridge_20261020/execution/hosted-development1/build-Lifetime.receipt.json b/frontiers/critical_ridge_20261020/execution/hosted-development1/build-Lifetime.receipt.json new file mode 100644 index 000000000..9faed7cc1 --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/hosted-development1/build-Lifetime.receipt.json @@ -0,0 +1,45 @@ +{ + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/Lifetime.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/Lifetime.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 5.52667, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:24:01.545754+00:00", + "name": "build-Lifetime", + "object": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "object_validation_error": null, + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + } + }, + "objects_before": {}, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:23:56.019098+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] +} diff --git a/frontiers/critical_ridge_20261020/execution/hosted-development1/build-Lifetime.stderr b/frontiers/critical_ridge_20261020/execution/hosted-development1/build-Lifetime.stderr new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/execution/hosted-development1/build-Lifetime.stdout b/frontiers/critical_ridge_20261020/execution/hosted-development1/build-Lifetime.stdout new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/execution/hosted-development1/build-MorseFiniteCritical.receipt.json b/frontiers/critical_ridge_20261020/execution/hosted-development1/build-MorseFiniteCritical.receipt.json new file mode 100644 index 000000000..d816b2eb9 --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/hosted-development1/build-MorseFiniteCritical.receipt.json @@ -0,0 +1,63 @@ +{ + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-DwarningAsError=true", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/MorseFiniteCritical.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/MorseFiniteCritical.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 7.833315, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:24:14.368356+00:00", + "name": "build-MorseFiniteCritical", + "object": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "object_validation_error": null, + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "MorseFiniteCritical.olean": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "objects_before": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:24:06.535056+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] +} diff --git a/frontiers/critical_ridge_20261020/execution/hosted-development1/build-MorseFiniteCritical.stderr b/frontiers/critical_ridge_20261020/execution/hosted-development1/build-MorseFiniteCritical.stderr new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/execution/hosted-development1/build-MorseFiniteCritical.stdout b/frontiers/critical_ridge_20261020/execution/hosted-development1/build-MorseFiniteCritical.stdout new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/execution/hosted-development1/build-TorusTopology.receipt.json b/frontiers/critical_ridge_20261020/execution/hosted-development1/build-TorusTopology.receipt.json new file mode 100644 index 000000000..7917a3050 --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/hosted-development1/build-TorusTopology.receipt.json @@ -0,0 +1,55 @@ +{ + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-DwarningAsError=true", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/TorusTopology.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/TorusTopology.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 4.977547, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:24:06.529965+00:00", + "name": "build-TorusTopology", + "object": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + }, + "object_validation_error": null, + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "objects_before": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + } + }, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:24:01.552433+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] +} diff --git a/frontiers/critical_ridge_20261020/execution/hosted-development1/build-TorusTopology.stderr b/frontiers/critical_ridge_20261020/execution/hosted-development1/build-TorusTopology.stderr new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/execution/hosted-development1/build-TorusTopology.stdout b/frontiers/critical_ridge_20261020/execution/hosted-development1/build-TorusTopology.stdout new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/execution/hosted-development1/runtime-print-prefix.receipt.json b/frontiers/critical_ridge_20261020/execution/hosted-development1/runtime-print-prefix.receipt.json new file mode 100644 index 000000000..e359bf1d1 --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/hosted-development1/runtime-print-prefix.receipt.json @@ -0,0 +1,32 @@ +{ + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "--print-prefix" + ], + "cwd": "/home/runner/work/Math-/Math-/formal", + "duration_seconds": 0.064132, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:23:55.948086+00:00", + "name": "runtime-print-prefix", + "object_validation_error": null, + "objects_after": null, + "objects_before": null, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:23:55.883977+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 58, + "stdout_sha256": "e0e72101499ee5e5a1967519d9955a093a555b85d5073da4bdba8bdd4cb12617", + "timed_out": false, + "timeout_seconds": 30, + "unexpected_override_names": [] +} diff --git a/frontiers/critical_ridge_20261020/execution/hosted-development1/runtime-print-prefix.stderr b/frontiers/critical_ridge_20261020/execution/hosted-development1/runtime-print-prefix.stderr new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/execution/hosted-development1/runtime-print-prefix.stdout b/frontiers/critical_ridge_20261020/execution/hosted-development1/runtime-print-prefix.stdout new file mode 100644 index 000000000..ea59f6ca2 --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/hosted-development1/runtime-print-prefix.stdout @@ -0,0 +1 @@ +/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1 diff --git a/frontiers/critical_ridge_20261020/execution/hosted-development1/runtime-version.receipt.json b/frontiers/critical_ridge_20261020/execution/hosted-development1/runtime-version.receipt.json new file mode 100644 index 000000000..0ad257135 --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/hosted-development1/runtime-version.receipt.json @@ -0,0 +1,32 @@ +{ + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "--version" + ], + "cwd": "/home/runner/work/Math-/Math-/formal", + "duration_seconds": 0.064168, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:23:56.017998+00:00", + "name": "runtime-version", + "object_validation_error": null, + "objects_after": null, + "objects_before": null, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:23:55.953847+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 106, + "stdout_sha256": "355a9a028f81641782d75d6e6b58dec70f29d2f61238a9e271690259d9bf5680", + "timed_out": false, + "timeout_seconds": 30, + "unexpected_override_names": [] +} diff --git a/frontiers/critical_ridge_20261020/execution/hosted-development1/runtime-version.stderr b/frontiers/critical_ridge_20261020/execution/hosted-development1/runtime-version.stderr new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/execution/hosted-development1/runtime-version.stdout b/frontiers/critical_ridge_20261020/execution/hosted-development1/runtime-version.stdout new file mode 100644 index 000000000..3bdff924e --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/hosted-development1/runtime-version.stdout @@ -0,0 +1 @@ +Lean (version 4.34.1, x86_64-unknown-linux-gnu, commit 5045d0056413266e57c625dcd7c365b10e377c52, Release) diff --git a/frontiers/critical_ridge_20261020/project/CriticalRidge.lean b/frontiers/critical_ridge_20261020/project/CriticalRidge.lean index f8bd3cb14..81182af88 100644 --- a/frontiers/critical_ridge_20261020/project/CriticalRidge.lean +++ b/frontiers/critical_ridge_20261020/project/CriticalRidge.lean @@ -28,8 +28,16 @@ variable {d : ℕ} /-- Restrict an ambient continuous covector to the literal subspace. -/ def restrictCovector (V : Submodule ℝ (E d)) : - (E d →L[ℝ] ℝ) →L[ℝ] (V →L[ℝ] ℝ) := - (ContinuousLinearMap.compL ℝ V (E d) ℝ).flip V.subtypeL + (E d →L[ℝ] ℝ) →L[ℝ] (V →L[ℝ] ℝ) where + toFun ℓ := ℓ.comp V.subtypeL + map_add' ℓ₁ ℓ₂ := by + ext z + rfl + map_smul' c ℓ := by + ext z + rfl + cont := (continuous_id : Continuous (fun ℓ : E d →L[ℝ] ℝ => ℓ)).clm_comp_const + V.subtypeL /-- Addition of an ambient parameter and a vector in the negative subspace. -/ def ridgeAddition (V : Submodule ℝ (E d)) : @@ -71,7 +79,7 @@ theorem negativeHessianBlock_isInvertible (f : E d → ℝ) (p : E d) have hn := hneg v v.property hvne have he : hessian d f p v v = 0 := by have h := congrArg (fun k : V →L[ℝ] ℝ => k v) hv - simpa only [C, negativeHessianBlock_apply, ContinuousLinearMap.zero_apply] using h + simpa only [C, negativeHessianBlock_apply, zero_apply] using h linarith have hC : Function.Injective C := by intro u v huv @@ -95,8 +103,10 @@ theorem negativePartialGradient_contDiff (f : E d → ℝ) (p : E d) ContDiff ℝ 2 (negativePartialGradient f p V) := by have hD : ContDiff ℝ 2 (fderiv ℝ f) := (contDiff_succ_iff_fderiv.mp (hsmooth 3)).2.2 - exact (restrictCovector V).contDiff.comp - (hD.comp (contDiff_const.add (ridgeAddition V).contDiff)) + change ContDiff ℝ 2 (fun q : E d × V => + (fderiv ℝ f (p + ridgeAddition V q)).comp V.subtypeL) + exact (hD.comp (contDiff_const.add (ridgeAddition V).contDiff)).clm_comp + contDiff_const theorem negativePartialGradient_hasFDerivAt (f : E d → ℝ) (p : E d) (V : Submodule ℝ (E d)) (hsmooth : IsSmooth d f) : @@ -114,8 +124,11 @@ theorem negativePartialGradient_hasFDerivAt (f : E d → ℝ) (p : E d) (p + ridgeAddition V (0 : E d × V)) := by simpa only [map_zero, add_zero] using hDp have hcomp := hDp'.comp (0 : E d × V) hadd - simpa only [negativePartialGradient, map_zero, add_zero] using - ((restrictCovector V).hasFDerivAt.comp (0 : E d × V) hcomp) + change HasFDerivAt (fun q : E d × V => + (fderiv ℝ f (p + ridgeAddition V q)).comp V.subtypeL) _ _ + convert hcomp.clm_comp (hasFDerivAt_const V.subtypeL (0 : E d × V)) using 1 + ext q z + simp [restrictCovector] /-- One actual ridge and all four conclusions for the same chosen function. The equation is in the actual ambient function and actual subspace. -/ @@ -156,7 +169,7 @@ theorem exists_negative_partial_gradient_ridge show fderiv ℝ f p = 0 from hcritical] have heq : (fun w => G (w, r w)) =ᶠ[𝓝 (0 : E d)] (fun _ => (0 : V →L[ℝ] ℝ)) := by - simpa only [hG0] using hG.eventually_apply_implicitFunction (by norm_num) hinv + simpa [r, hG0] using hG.eventually_apply_implicitFunction (by norm_num) hinv refine ⟨r, hr0, hrC, ?_, ?_⟩ · filter_upwards [heq] with w hw intro z @@ -169,7 +182,7 @@ theorem exists_negative_partial_gradient_ridge (hasFDerivAt_id (0 : E d)).prodMk hdr have hzero : HasFDerivAt (fun w : E d => G (w, r w)) (0 : E d →L[ℝ] (V →L[ℝ] ℝ)) 0 := - (hasFDerivAt_const (0 : E d) (0 : V →L[ℝ] ℝ)).congr_of_eventuallyEq heq + (hasFDerivAt_const (0 : V →L[ℝ] ℝ) (0 : E d)).congr_of_eventuallyEq heq have hchain : HasFDerivAt (fun w : E d => G (w, r w)) (D.comp ((ContinuousLinearMap.id ℝ (E d)).prod (fderiv ℝ r 0))) 0 := by have hd : HasFDerivAt G D ((0 : E d), r 0) := by diff --git a/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_candidate3_source_addendum.md b/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_candidate3_source_addendum.md new file mode 100644 index 000000000..584da4cf0 --- /dev/null +++ b/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_candidate3_source_addendum.md @@ -0,0 +1,50 @@ +# C299 nonauthor source addendum — candidate 3 after actual hosted failure + +Actual reviewer: OpenAI Codex `/root/c299_nonauthor_review`, delegated by root chat `01a0bbb5-2fcb-77f0-b78b-4d220ddd7ab2` for Dylan Roy. + +**Disposition: ACCEPT_SCOPED_SOURCE_REPAIR for the next bounded hosted development attempt.** The frozen changes address the actual candidate 2 diagnostics without changing the mathematical map, public assumptions or four-part endpoint. No new blocking mathematical source issue is identified in this diff. Candidate 3 compilation is unconfirmed; this source disposition is not formal theorem acceptance or a prediction that every elaboration issue is resolved. + +## Actual failed run and evidence boundary + +I fully read and freshly hashed the extracted candidate 2 stdout and phase receipt: + +- `build-CriticalRidge.stdout`: 4227 bytes, SHA-256 `6287a34ab9f1cfb469f5152c2e523c7f3f1bbc9ab7573f7f01e924120b10877a`. +- `build-CriticalRidge.receipt.json`: SHA-256 `0024de398e7b8c50ff015cf0101e37f54302bc8d5602c8c3cf8a3bc72109e50d`. + +I also read the extracted aggregate's context, phase results and final failure. The actual hosted run is `39438543701`, attempt 1, job `c299-hosted-formal`, PR491. Its PR head is `c8d66bde8ce496c1007e4a3f6b0a9f9f93762bfb`; the tested checkout is the distinct merge commit `396e7ee43ec39fa5145909e1f809fc91fec6b014`, tree `0f734451a5cdd70274dbf4018155039793844af4`, with reported PR base `8c226134ac0a0169dbb43311082e5353ed5c922c`. I inspected root's extracted evidence, not a new independent remote download. + +The aggregate records three successful upstream builds, then the CriticalRidge build returns 1 after 17.856697 seconds without timeout. The before/after inventories contain the same three upstream objects and no CriticalRidge object. The object-validation error therefore records the missing required build output; it does not establish corruption of an earlier input. Audit compilation, kernel replays and negative fixtures were not reached. Aggregate status is HOLD_NOT_COMPLETED. + +Actual diagnostics identify the restriction-map construction/typeclass mismatch, its downstream definitional-equality failure, a deprecated `ContinuousLinearMap.zero_apply` rejected under warnings-as-errors, type mismatches in the smoothness/derivative composition, the IFT eventual-equality normalization and reversed constant-derivative arguments. The final diagnostic also says that a declaration uses `sorry`. The source contains no authored `sorry`; the failed elaboration's recovery diagnostic is nevertheless retained and cannot be accepted as a proved declaration. + +The earlier source acceptance concerned the mathematical construction and explicitly left compilation unconfirmed. These actual failures establish that candidate 2 was not an accepted compiled implementation. + +## Exact candidate and changed proof assessment + +Candidate 3 is 8485 bytes, SHA-256 `2a93240fa5034544a1dbcf5ec0a10ab11be1ca5d05f60b4df0e2663fa769f442`. I freshly hashed the working file, immutable author snapshot and root publication copy; all match. I fully read `CANDIDATE3.diff` and `CANDIDATE3_FREEZE.json` and reread the changed source in context. The stored diff hashes to `6d2626edb280aec9a5ff273502bbee3292feb494ce2af56c0488880bb1e3024e`. + +The changes are limited to the diagnosed representation and elaboration details: + +1. Restriction of a covector is now built directly with `toFun ℓ := ℓ.comp V.subtypeL`, extensional proofs of linearity and continuity of composition with a fixed continuous linear map. This is the same restriction map used by the mathematical argument. Its concrete application also addresses the downstream restricted-Hessian evaluation problem. +2. C2 regularity uses `ContDiff.clm_comp` on the actual derivative covector and constant inclusion. The derivative proof analogously uses `HasFDerivAt.clm_comp` with the zero derivative of the constant inclusion and identifies the resulting map by extensionality. Neither change weakens smoothness or assumes a derivative. +3. The zero-evaluation rewrite uses the current `zero_apply` name. +4. The IFT eventual equation explicitly simplifies the chosen local name `r` and the product-zero projection, while retaining the same selected function and common neighborhood. +5. The derivative of the constant zero covector now calls `hasFDerivAt_const` with the covector value first and the ambient base point second. + +I inspected the corresponding declarations at the already pinned Mathlib source: `Continuous.clm_comp_const`, `ContDiff.clm_comp`, `HasFDerivAt.clm_comp`, and `hasFDerivAt_const`. In particular, the last signature is value-then-point; the correction matches the actual source. This source compatibility is not a substitute for elaboration. + +The direct restriction map evaluates to the same `Df(p+w+v)|V`. Strict-negative block invertibility, C3-to-C2 regularity, one selected implicit ridge and differentiation of its actual eventual equation are unchanged. All nine public declaration names/types and the final hypotheses/conclusions remain unchanged. The independently reconstructed proof and adversarial examples in the historical mathematical review remain applicable; no full repeated proof review was necessary. No additional premise, chart, LPC claim, axiom or admitted proof has been introduced in the diff. + +## Publication binding for the next attempt + +I freshly verified root's candidate 3 publication manifest SHA-256 `e652634cd6c80faaf889704b291e14c3ae2c25a3edb37fdec5f4c8273d17fb1b`. An independent textual comparison shows that only the CriticalRidge byte count/hash entry changes from the previous final manifest. + +The corresponding workflow hashes to `8157a5f8ca2a92f6b31d7cb3c5834ce43423316394683d1c9b5e077a385c3add`; its only difference is replacement of the manifest digest. The copied driver and tests remain exactly `e4c5b9dd02e2ba2f98da27707c42ef861d9039b52864833d2164a3114f318f49` and `62400129fda7b863d692397deac2a9d83b7f1101d98b53ed1043f0ef8cfd604e`. Their E1 review and unconditional development HOLD remain applicable. + +The changed source is a concrete reason for a new bounded attempt; it is not an unchanged retry of the native timeout or hosted failure. Actual final diagnostic qualification still requires reaching and reviewing the real negative fixtures. All historical failed-run records and preceding reviews remain intact. + +## Limits and attribution + +I performed only source/evidence reads, hashes and diffs and wrote this separate review artifact. No formal/test/mathematical program or remote action was executed, and no author source was edited. I am the actual source-exposed nonauthor reviewer, same provider, organizational independence credit 0, blind review 0, human review 0. No human review by Dylan is claimed; scientific effect NONE. + +The ridge's actual compilation, complete census, named kernel checks and final formal acceptance remain unconfirmed. Critical neighborhood basis, quotient/full LPC, ordinary bars and scientific conclusions remain OPEN. Full research goal ACTIVE_UNMET. From 5e63005bd6d8288695fbbc974e40336dca87e77f Mon Sep 17 00:00:00 2001 From: Dylan Roy <249851642+d6g8k5htny-coder@users.noreply.github.com> Date: Tue, 20 Oct 2026 09:54:20 -0500 Subject: [PATCH 3/5] fix(C299): compose restriction derivative and normalize product instances Preserve all nine public interfaces and the two actual hosted failures. Retain nonauthor source-repair review; compilation remains pending. AI work by OpenAI Codex agents delegated for Dylan Roy; no human review claimed. --- .github/workflows/c299-critical-ridge.yml | 2 +- .../HOSTED_SOURCE_MANIFEST.json | 4 +- .../artifact-master/C297_TO_C299_MASTER.diff | 764 ++++++++++++++++ .../artifact-master/FINAL_MASTER_NOTES.md | 65 ++ .../artifact-master/HANDOFF.md | 17 + .../artifact-master/IDENTITIES.json | 85 ++ .../artifact-master/final_master.py | 838 ++++++++++++++++++ .../artifact-master/test_final_master.py | 160 ++++ .../execution/author/CANDIDATE4.diff | 48 + .../execution/author/CANDIDATE4_FREEZE.json | 25 + ...768e7a357b7798eee8990a5a34adbdcf6f0f7.lean | 199 +++++ .../hosted-development2/ARCHIVE_MEMBERS.json | 167 ++++ .../hosted-development2/DISPOSITION.json | 60 ++ .../HOSTED_SOURCE_MANIFEST.json | 48 + .../hosted-development2/RESULT.json | 476 ++++++++++ .../ROOT_EXTRACTION_NEGATIVE.json | 6 + .../build-CriticalRidge.receipt.json | 63 ++ .../build-CriticalRidge.stderr | 0 .../build-CriticalRidge.stdout | 52 ++ .../build-Lifetime.receipt.json | 45 + .../hosted-development2/build-Lifetime.stderr | 0 .../hosted-development2/build-Lifetime.stdout | 0 .../build-MorseFiniteCritical.receipt.json | 63 ++ .../build-MorseFiniteCritical.stderr | 0 .../build-MorseFiniteCritical.stdout | 0 .../build-TorusTopology.receipt.json | 55 ++ .../build-TorusTopology.stderr | 0 .../build-TorusTopology.stdout | 0 .../native/c299_dev_artifacts2.json | 32 + .../native/c299_dev_jobs2_final.json | 71 ++ .../native/c299_dev_logs2.json | 12 + .../native/c299_dev_run2.json | 22 + .../native/c299_downstream2_jobs.json | 199 +++++ .../native/c299_tested_merge2.json | 22 + .../runtime-print-prefix.receipt.json | 32 + .../runtime-print-prefix.stderr | 0 .../runtime-print-prefix.stdout | 1 + .../runtime-version.receipt.json | 32 + .../runtime-version.stderr | 0 .../runtime-version.stdout | 1 + .../project/CriticalRidge.lean | 17 +- ...99_nonauthor_candidate4_source_addendum.md | 48 + .../c299_nonauthor_master_source_review.md | 82 ++ 43 files changed, 3803 insertions(+), 10 deletions(-) create mode 100644 frontiers/critical_ridge_20261020/artifact-master/C297_TO_C299_MASTER.diff create mode 100644 frontiers/critical_ridge_20261020/artifact-master/FINAL_MASTER_NOTES.md create mode 100644 frontiers/critical_ridge_20261020/artifact-master/HANDOFF.md create mode 100644 frontiers/critical_ridge_20261020/artifact-master/IDENTITIES.json create mode 100644 frontiers/critical_ridge_20261020/artifact-master/final_master.py create mode 100644 frontiers/critical_ridge_20261020/artifact-master/test_final_master.py create mode 100644 frontiers/critical_ridge_20261020/execution/author/CANDIDATE4.diff create mode 100644 frontiers/critical_ridge_20261020/execution/author/CANDIDATE4_FREEZE.json create mode 100644 frontiers/critical_ridge_20261020/execution/author/source-attempts/f3a515bd0a984c8a8affbfc79f4768e7a357b7798eee8990a5a34adbdcf6f0f7.lean create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/ARCHIVE_MEMBERS.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/DISPOSITION.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/HOSTED_SOURCE_MANIFEST.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/RESULT.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/ROOT_EXTRACTION_NEGATIVE.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/build-CriticalRidge.receipt.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/build-CriticalRidge.stderr create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/build-CriticalRidge.stdout create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/build-Lifetime.receipt.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/build-Lifetime.stderr create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/build-Lifetime.stdout create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/build-MorseFiniteCritical.receipt.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/build-MorseFiniteCritical.stderr create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/build-MorseFiniteCritical.stdout create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/build-TorusTopology.receipt.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/build-TorusTopology.stderr create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/build-TorusTopology.stdout create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/native/c299_dev_artifacts2.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/native/c299_dev_jobs2_final.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/native/c299_dev_logs2.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/native/c299_dev_run2.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/native/c299_downstream2_jobs.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/native/c299_tested_merge2.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/runtime-print-prefix.receipt.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/runtime-print-prefix.stderr create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/runtime-print-prefix.stdout create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/runtime-version.receipt.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/runtime-version.stderr create mode 100644 frontiers/critical_ridge_20261020/hosted-development2/runtime-version.stdout create mode 100644 frontiers/critical_ridge_20261020/reviews/c299_nonauthor_candidate4_source_addendum.md create mode 100644 frontiers/critical_ridge_20261020/reviews/c299_nonauthor_master_source_review.md diff --git a/.github/workflows/c299-critical-ridge.yml b/.github/workflows/c299-critical-ridge.yml index 024da17c9..f00dc2251 100644 --- a/.github/workflows/c299-critical-ridge.yml +++ b/.github/workflows/c299-critical-ridge.yml @@ -31,7 +31,7 @@ jobs: env: LEAN_NUM_THREADS: '2' # Exact frozen five-module and two-control source manifest. - C299_MANIFEST_SHA256: 'e652634cd6c80faaf889704b291e14c3ae2c25a3edb37fdec5f4c8273d17fb1b' + C299_MANIFEST_SHA256: 'f7ffc5724de5d45b0518fe09f4396e6d2b817af920da0a63694ac97276e879ec' steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with: diff --git a/frontiers/critical_ridge_20261020/HOSTED_SOURCE_MANIFEST.json b/frontiers/critical_ridge_20261020/HOSTED_SOURCE_MANIFEST.json index b56270f0a..3d1261d99 100644 --- a/frontiers/critical_ridge_20261020/HOSTED_SOURCE_MANIFEST.json +++ b/frontiers/critical_ridge_20261020/HOSTED_SOURCE_MANIFEST.json @@ -9,8 +9,8 @@ "sha256": "ad204aee211aa3074621f56eeaf8e1a3f3a522b7c7cbe2bbdd67f3759833feb9" }, "project/CriticalRidge.lean": { - "bytes": 8485, - "sha256": "2a93240fa5034544a1dbcf5ec0a10ab11be1ca5d05f60b4df0e2663fa769f442" + "bytes": 8664, + "sha256": "f3a515bd0a984c8a8affbfc79f4768e7a357b7798eee8990a5a34adbdcf6f0f7" }, "project/CriticalRidgeAxiomAudit.lean": { "bytes": 2728, diff --git a/frontiers/critical_ridge_20261020/artifact-master/C297_TO_C299_MASTER.diff b/frontiers/critical_ridge_20261020/artifact-master/C297_TO_C299_MASTER.diff new file mode 100644 index 000000000..ae76372e9 --- /dev/null +++ b/frontiers/critical_ridge_20261020/artifact-master/C297_TO_C299_MASTER.diff @@ -0,0 +1,764 @@ +--- C297/final_master.py ++++ C299/master/final_master.py +@@ -1,11 +1,12 @@ + #!/usr/bin/env python3 +-"""C297 final native artifact master: no Lean, network, or archive-builder execution. ++"""C299 final native artifact master: no Lean, network, or archive-builder execution. + + Default invocation is once-only and must be authorized by the source owner after +-stable inputs. --self-test exercises parser/receipt guards using temporary bytes; +-it does not create a final-master start/result or accept the actual delivery. ++stable inputs. Separate unittest controls exercise parser/receipt guards using ++temporary bytes; they do not create a final-master start/result or accept delivery. + See FINAL_MASTER_NOTES.md for the explicit input-envelope contract. + """ ++import argparse + from datetime import datetime, timezone + import hashlib + import io +@@ -14,32 +15,26 @@ + import re + import stat + import sys +-import tempfile + import zipfile + + ROOT = Path(__file__).absolute().parent +-PREFIX = 'frontiers/regular_superlevel_geometry_20261020/' +-WORKFLOW = '.github/workflows/c297-regular-superlevel.yml' ++PREFIX = 'frontiers/critical_ridge_20261020/' ++WORKFLOW = '.github/workflows/c299-critical-ridge.yml' + REPOSITORY = 'd6g8k5htny-coder/Math-' +-MANIFEST_SHA = 'c339a9d1ca5b9ef70f8d581ea0760f11922aba2cd16cbeeb7aba02092b476e94' +-MODULES = ('Lifetime', 'RegularPointChart', 'RegularSuperlevel', +- 'RegularSuperlevelLiteral', 'RegularSuperlevelAxiomAudit') +-NEGATIVES = ('WithoutRegularOrInterior', 'WithoutCoordinateIdentity') ++MODULES = ('Lifetime', 'TorusTopology', 'MorseFiniteCritical', ++ 'CriticalRidge', 'CriticalRidgeAxiomAudit') ++NEGATIVES = ('WithoutCriticality', 'WithoutNegativeDefiniteness') + SOURCE_PATHS = {f'project/{m}.lean' for m in MODULES} | { + f'negative-project/{m}.lean' for m in NEGATIVES} + AXIOMS = {'propext', 'Classical.choice', 'Quot.sound'} + REQUIRED = { +- 'UniversalLaw.Spec.Lifetime.' + n for n in ( +- 'IsSmooth', 'IsCriticalPoint', 'regularPointDerivative_range_eq_top', +- 'regularPointHasStrictFDerivAt', 'regularPointChart', 'regularPointChart_fst', +- 'regularPointChart_self', 'mem_regularPointChart_source', +- 'mem_regularPointChart_target') +-} | { +- 'TorusRegularSuperlevel.' + n for n in ( +- 'path_connected_basis_of_openEmbedding', 'path_connected_basis_of_open', +- 'relative_chart_homeomorph', 'path_connected_basis_of_relative_chart', +- 'closed_superlevel_basis_of_chart', 'closed_superlevel_interior_basis', +- 'closed_superlevel_regular_basis', 'closed_superlevel_path_connected_basis') ++ 'UniversalLaw.Spec.Lifetime.' + n for n in ('IsSmooth', 'IsCriticalPoint', 'hessian') ++} | {'TorusMorseFinite.literal_hessian_eq_fderiv'} | { ++ 'TorusCriticalRidge.' + n for n in ( ++ 'restrictCovector', 'ridgeAddition', 'negativePartialGradient', 'negativeHessianBlock', ++ 'negativeHessianBlock_apply', 'negativeHessianBlock_isInvertible', ++ 'negativePartialGradient_contDiff', 'negativePartialGradient_hasFDerivAt', ++ 'exists_negative_partial_gradient_ridge') + } + PINS = { + 'plausible': '118aa17ee84656b8bd727fef7c458ee8c833385c', +@@ -52,21 +47,21 @@ + 'Cli': 'e92c9f15fdfacc8536f31cfb3b7ad26c3c8cd204', + 'mathlib': 'd13f23b723b8a846827a245b89c10fc7d3f11612', + } +-REVIEW_HASHES = { +- 'reviews/CANDIDATE3_SOURCE_REVIEW.md': +- 'c794c85794767711c05f5580bed49d35c011d939c39d0c4a51872b7cccdebc4d', +- 'reviews/HOSTED_ENGINEERING_SOURCE_REVIEW.md': +- '5cf5d69fc5be2defbeb675e1131f6497d5f72c0928b55ad06fe778826f17f569', +- 'reviews/HOSTED_COERCION_AMENDMENT_REVIEW.md': +- 'c95027d1fdd6c1e1fa6c0f6611d66e68bd442dea7d36a69df9664075f2488712', ++SUPPORT_PATHS = {WORKFLOW, PREFIX + 'c299_hosted_verify.py', ++ PREFIX + 'test_c299_hosted_verify.py'} ++REVIEW_VERDICTS = { ++ 'source_review': 'ACCEPT_SCOPED_SOURCE', ++ 'engineering_review': 'ACCEPT_SCOPED_ENGINEERING_SOURCE', ++ 'negative_qualification_review': 'ACCEPT_SCOPED_NEGATIVE_DIAGNOSTICS', ++ 'hosted_artifact_review': 'ACCEPT_SCOPED_FORMAL_HOSTED', ++ 'master_source_review': 'PASS_SCOPED_MASTER_SOURCE_REVIEW', + } +-SUPPORT_HASHES = { +- WORKFLOW: '03b3d8fb4ca95316247b93ad3937ea2d56f0509040c819534873be1bb341eab3', +- PREFIX + 'c297_hosted_verify.py': +- '18985d363f3a0b0529e88c9c69dd07c626e6b5f82a251c19c7d820117b7d47c1', +- PREFIX + 'test_c297_hosted_verify.py': +- '0d1d8d18a11334364151d16f7640af2730e38f17d8240ddf0244decc2f8376cd', +-} ++ENVIRONMENT_POLICY = ( ++ 'Remove inherited LEAN*, LAKE*, LD_* and DYLD_* overrides, except the ' ++ 'Lake-provided LEAN_PATH; prepend the fresh local object directory to that ' ++ 'path and set LEAN_NUM_THREADS=2. Retain declared PATH for launcher lookup. ' ++ 'Other inherited variables remain available but are not recorded. Record ' ++ 'only selected non-secret path/thread values and removed variable names.') + + + def now(): +@@ -112,9 +107,9 @@ + def measured_audit(text, modules=MODULES[:-1], required=REQUIRED): + """Independent whole-record regex parser, including multiline axiom arrays.""" + token = re.compile( +- r'(?m)^SUPERLEVEL_AUDIT_MODULE (?P\S+) COUNT (?P\d+)\s*$' +- r'|^SUPERLEVEL_AUDIT_DECL (?P\S+) AXIOMS \[(?P[^\[\]]{0,4096})\][ \t]*$' +- r'|^SUPERLEVEL_AUDIT_STANDARD_ONLY_PASS COUNT (?P\d+)\s*$') ++ r'(?m)^CRITICAL_RIDGE_AUDIT_MODULE (?P\S+) COUNT (?P\d+)\s*$' ++ r'|^CRITICAL_RIDGE_AUDIT_DECL (?P\S+) AXIOMS \[(?P[^\[\]]{0,4096})\][ \t]*$' ++ r'|^CRITICAL_RIDGE_AUDIT_STANDARD_ONLY_PASS COUNT (?P\d+)\s*$') + counts, names, all_names, current, total = {}, {}, set(), None, None + consumed = 0 + for match in token.finditer(text): +@@ -138,8 +133,8 @@ + need(total is None, 'duplicate audit completion marker') + total = int(match['total']) + marker_count = len(re.findall( +- r'SUPERLEVEL_AUDIT_(?:MODULE|DECL|STANDARD_ONLY_PASS)\b', text)) +- all_markers = re.findall(r'SUPERLEVEL_AUDIT_([A-Z_]+)', text) ++ r'CRITICAL_RIDGE_AUDIT_(?:MODULE|DECL|STANDARD_ONLY_PASS)\b', text)) ++ all_markers = re.findall(r'CRITICAL_RIDGE_AUDIT_([^\s]+)', text) + need(set(all_markers) <= {'MODULE', 'DECL', 'STANDARD_ONLY_PASS', 'PROGRESS'}, + 'unknown audit marker') + need(consumed == marker_count, 'malformed, interrupted or truncated audit record') +@@ -151,31 +146,114 @@ + 'allowed_axioms': sorted(AXIOMS)} + + +-def missing_premise(name, code, stdout, stderr): +- text = (stdout + b'\n' + stderr).decode('utf8') ++def canonical_digest(value): ++ return sha(json.dumps(value, sort_keys=True, separators=(',', ':')).encode()) ++ ++ ++def validate_expectations(expected): ++ required = {'pr', 'head', 'base', 'tree', 'tested_commit', 'tested_tree', ++ 'run_id', 'run_attempt', 'source_manifest_sha256', 'support_sha256', ++ 'module_counts', 'required_ci_names', 'negative_qualification'} ++ need(isinstance(expected, dict) and set(expected) == required, 'incomplete final expectations') ++ for key in ('pr', 'run_id', 'run_attempt'): ++ need(type(expected[key]) is int and expected[key] > 0, 'invalid final identity: ' + key) ++ for key in ('head', 'base', 'tree', 'tested_commit', 'tested_tree'): ++ need(isinstance(expected[key], str) and re.fullmatch('[0-9a-f]{40}', expected[key]), ++ 'invalid frozen Git identity: ' + key) ++ need(re.fullmatch('[0-9a-f]{64}', expected['source_manifest_sha256']) is not None, ++ 'invalid source manifest hash') ++ support = expected['support_sha256'] ++ need(set(support) == SUPPORT_PATHS and all(re.fullmatch('[0-9a-f]{64}', x) for x in support.values()), ++ 'incomplete final support identities') ++ counts = expected['module_counts'] ++ need(set(counts) == set(MODULES[:-1]) and all(type(n) is int and n > 0 for n in counts.values()), ++ 'missing actual module census') ++ roles = expected['required_ci_names'] ++ need(isinstance(roles, list) and len(roles) == len(set(roles)) ++ and all(isinstance(x, str) and x for x in roles) ++ and {'downstream-replay', 'formal / formal-evidence', 'math-downstream-gates'} <= set(roles), ++ 'incomplete applicable CI inventory') ++ qualification = expected['negative_qualification'] ++ need(set(qualification) == {'status', 'diagnostics'} and qualification['status'] == 'QUALIFIED' ++ and set(qualification['diagnostics']) == set(NEGATIVES), 'actual negative qualification pending') ++ for record in qualification['diagnostics'].values(): ++ need(set(record) == {'stdout_sha256', 'stderr_sha256', 'expression', 'actual', 'expected'} ++ and all(isinstance(x, str) and x for x in record.values()) ++ and all(re.fullmatch('[0-9a-f]{64}', record[k]) for k in ('stdout_sha256', 'stderr_sha256')), ++ 'incomplete actual negative diagnostic record') ++ ++ ++def qualified_negative(name, code, stdout, stderr, qualified): ++ """Independent section parser and complete same-ridge missing-premise check. ++ ++ The exact observed sections/hashes are frozen by the owner after diagnostic ++ review. They cannot replace the semantic shape checks below. Presentation ++ changes require a reviewed source change, not an envelope-only bypass. ++ """ ++ need(name in NEGATIVES, 'unexpected negative control') ++ need(sha(stdout) == qualified['stdout_sha256'] and sha(stderr) == qualified['stderr_sha256'], ++ 'negative streams differ from reviewed actual diagnostics') ++ text = (stdout + b'\n' + stderr).decode('utf8').strip() + flat = ' '.join(text.split()) + forbidden = ('unknown identifier', 'unknown module', 'file not found', 'no such file', + 'memory_exception', 'out of memory', 'unexpected token', 'unsolved goals', + 'maximum recursion', 'maximum heartbeats', 'failed to', 'panic', 'sorry') +- need(code == 1 and text.count('error:') == 1 and 'error: Type mismatch' in flat +- and all(w not in flat.lower() for w in forbidden), 'unrelated negative-control failure') +- need('has type' in flat and 'but is expected to have type' in flat, +- 'missing actual/expected type diagnostic') +- expression, rest = flat.split('has type', 1) +- actual, expected = rest.split('but is expected to have type', 1) +- need('HasBasis' in actual and 'HasBasis' in expected and '→' in actual, +- 'negative is not an unapplied-premise basis mismatch') +- if name == 'WithoutRegularOrInterior': +- need('closed_superlevel_path_connected_basis hsmooth a x' in expression +- and re.search(r'a\s*<\s*g\s', actual) and '∨' in actual and '¬' in actual +- and 'IsCriticalPoint d g' in actual, 'regular/interior premise absent from actual type') +- elif name == 'WithoutCoordinateIdentity': +- need('closed_superlevel_basis_of_chart a x p hx' in expression +- and '∀' in actual and 'p.source' in actual +- and re.search(r'\(↑?p y\)\.(?:fst|1)\s*=\s*g y', actual), +- 'coordinate identity absent from actual type') ++ need(code == 1 and text.count('error:') == 1 and all(w not in flat.lower() for w in forbidden), ++ 'unrelated negative-control failure') ++ header, separator, remainder = text.partition('\n') ++ need(separator and re.fullmatch(r'[^\n]*' + re.escape(name) + r'\.lean:\d+:\d+: error: Type mismatch', header), ++ 'negative diagnostic names a different source or error') ++ pieces = re.split(r'\nhas type\s*\n|\nbut is expected to have type\s*\n', remainder) ++ need(len(pieces) == 3, 'negative diagnostic must have one actual and expected type section') ++ expression, actual, expected_type = (' '.join(piece.split()) for piece in pieces) ++ need(all(value == qualified[key] for key, value in ++ (('expression', expression), ('actual', actual), ('expected', expected_type))), ++ 'actual diagnostic sections differ from reviewed sections') ++ target = 'TorusCriticalRidge.exists_negative_partial_gradient_ridge' ++ if name == 'WithoutCriticality': ++ need(expression == 'fun hcritical => ' + target + ' f p V hsmooth hcritical hneg', ++ 'criticality omission is not the actual theorem lambda') ++ premise = 'IsCriticalPoint d f p' + else: +- raise ValueError('unexpected negative control') ++ need(expression == target + ' f p V hsmooth hcritical', ++ 'negative-definiteness omission is not the actual theorem application') ++ premise = '(∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0)' ++ need(actual == premise + ' → ' + expected_type, 'wrong missing premise or actual function conclusion') ++ # Deliberately fixed source semantics; actual display variants need review. ++ conclusion = (r'∃ r, r 0 = 0 ∧ ContDiffAt ℝ 2 r 0 ∧ ' ++ r'\(∀ᶠ w in 𝓝 0, ∀ \(z : ↥V\), \(fderiv ℝ f \(p \+ w \+ ↑\(r w\)\)\) ↑z = 0\) ∧ ' ++ r'∀ \(w : E d\) \(z : ↥V\), hessian d f p \(w \+ ↑\(\(fderiv ℝ r 0\) w\)\) ↑z = 0') ++ need(re.fullmatch(conclusion, expected_type) is not None, 'wrong four-part same-ridge conclusion') ++ ++ ++def environment_binding(report, record, object_directory): ++ contract = report.get('environment_contract') ++ need(isinstance(contract, dict) and set(contract) == { ++ 'policy', 'retained_lake_lean_path', 'removed_variable_names', 'selected_environment', 'sha256'}, ++ 'missing exact environment contract') ++ body = {k: val for k, val in contract.items() if k != 'sha256'} ++ need(contract['policy'] == ENVIRONMENT_POLICY and contract['sha256'] == canonical_digest(body), ++ 'environment contract policy or digest mismatch') ++ selected = contract['selected_environment'] ++ need(set(selected) == {'PATH', 'LEAN_PATH', 'LEAN_NUM_THREADS'} ++ and all(isinstance(x, str) and x for x in selected.values()), 'incomplete selected environment') ++ inherited = contract['retained_lake_lean_path'] ++ need(isinstance(inherited, str) and PurePosixPath(object_directory).is_absolute() ++ and '..' not in PurePosixPath(object_directory).parts ++ and selected['LEAN_PATH'] == object_directory + (':' + inherited if inherited else '') ++ and selected['LEAN_NUM_THREADS'] == '2', 'fresh-object precedence or thread count mismatch') ++ removed = contract['removed_variable_names'] ++ need(isinstance(removed, list) and all(isinstance(k, str) for k in removed) ++ and removed == sorted(set(removed)) and all(k.startswith(('LEAN', 'LAKE', 'LD_', 'DYLD_')) ++ and k != 'LEAN_PATH' for k in removed), 'invalid removed-variable name record') ++ measured = {'selected_environment': record.get('selected_environment'), ++ 'unexpected_override_names': record.get('unexpected_override_names')} ++ need(record.get('selected_environment') == selected ++ and record.get('environment_contract_sha256') == contract['sha256'] ++ and record.get('unexpected_override_names') == [] ++ and record.get('environment_validation_error') is None ++ and record.get('environment_sha256') == canonical_digest(measured), ++ 'phase environment differs from bound contract') + + + def runtime_binding(report, prefix_stdout): +@@ -193,15 +271,15 @@ + + + def final_review_records(acceptance): ++ reviews = acceptance['reviews'] ++ need(set(reviews) == set(REVIEW_VERDICTS), 'missing role-specific final review') + records = [] +- for role, verdict in ( +- ('hosted_artifact_review', 'ACCEPT_SCOPED_FORMAL_HOSTED'), +- ('master_source_review', 'PASS_SCOPED_MASTER_SOURCE_REVIEW')): +- review = acceptance[role] +- need(set(review) == {'path', 'bytes', 'sha256', 'verdict'} +- and review['verdict'] == verdict, 'nonpassing or incomplete final review: ' + role) ++ for role, verdict in REVIEW_VERDICTS.items(): ++ review = reviews[role] ++ need(set(review) == {'path', 'bytes', 'sha256', 'verdict'} and review['verdict'] == verdict, ++ 'nonpassing or incomplete final review: ' + role) + records.append(review) +- need(records[0]['path'] != records[1]['path'], 'final review paths are not distinct') ++ need(len({r['path'] for r in records}) == len(records), 'final review paths are not distinct') + return records + + +@@ -247,13 +325,14 @@ + def verify_publication(self, envelope): + gh = json_bytes(self.bound(envelope['github_readback'])) + self.check('exact public PR head and tree', gh['repository'] == REPOSITORY +- and gh['pr'] == 489 and re.fullmatch('[0-9a-f]{40}', gh['head']) ++ and gh['pr'] == envelope['expected']['pr'] and re.fullmatch('[0-9a-f]{40}', gh['head']) + and re.fullmatch('[0-9a-f]{40}', gh['tree']) + and gh['tree_untruncated'] is True and gh['native_remote_byte_equality'] is True +- and gh['pr_body_exact_readback'] is True) ++ and gh['pr_body_exact_readback'] is True ++ and all(gh[k] == envelope['expected'][k] for k in ('pr', 'head', 'base', 'tree'))) + files = gh['files'] + self.check('complete final public byte readbacks', len(files) == gh['files_count'] +- and len({r['path'] for r in files}) == len(files) and len(files) >= 29) ++ and len({r['path'] for r in files}) == len(files) and len(files) > 0) + published = {} + inputs = json_bytes(self.bound(envelope['publication_inputs'])) + native_inputs = {r['path']: r for r in inputs} +@@ -308,37 +387,41 @@ + and tree_rows[row['path']]['sha'] == row['tree_blob']) + self.check('native GitHub commit/ref/PR evidence', + commit['sha'] == ref['object']['sha'] == pr['head']['sha'] == gh['head'] +- and commit['tree']['sha'] == gh['tree'] and pr['number'] == 489 ++ and commit['tree']['sha'] == gh['tree'] and pr['number'] == envelope['expected']['pr'] + and pr['base']['sha'] == gh['base'] + and pr['head']['repo']['full_name'] == REPOSITORY) + return gh, published, tree_rows + + def verify_sources_reviews(self, envelope, published): +- raw = self.read('HOSTED_SOURCE_MANIFEST.json') +- self.check('frozen source manifest identity', sha(raw) == MANIFEST_SHA ++ expected = envelope['expected'] ++ raw = self.bound(envelope['source_manifest']) ++ self.check('frozen source manifest identity', sha(raw) == expected['source_manifest_sha256'] + and raw == published[PREFIX + 'HOSTED_SOURCE_MANIFEST.json']) + manifest = json_bytes(raw) + self.check('exact five modules and two controls', manifest['schema_version'] == 1 + and manifest['scientific_effect'] == 'NONE' and set(manifest['files']) == SOURCE_PATHS) + for rel, spec in manifest['files'].items(): +- local = self.read(rel) +- self.check('frozen native/published Lean bytes: ' + rel, +- identity(local) == spec and local == published[PREFIX + rel]) +- for rel, digest in SUPPORT_HASHES.items(): +- self.check('reviewed hosted support: ' + rel, sha(published[rel]) == digest) +- for rel, digest in REVIEW_HASHES.items(): +- self.check('exact native nonauthor review: ' + rel, sha(self.read(rel)) == digest) +- projection = json_bytes(published[PREFIX + 'reviews/PROJECTION_IDENTITIES.json']) +- for row in projection: +- original, public = self.read(row['path']), published[PREFIX + row['path']] +- self.check('review source/public projection identities: ' + row['path'], +- identity(original) == {'bytes': row['original_bytes'], 'sha256': row['original_sha256']} +- and identity(public) == {'bytes': row['public_bytes'], 'sha256': row['public_sha256']}) ++ self.check('frozen published Lean identity: ' + rel, identity(published[PREFIX + rel]) == spec) ++ origins = manifest['source_origins'] ++ self.check('complete input source origins', set(origins) == set(MODULES[:3])) ++ upstream = json_bytes(self.bound(envelope['upstream_readback'])) ++ self.check('exact upstream byte-readback set', isinstance(upstream, list) ++ and len(upstream) == 3 and {r['module'] for r in upstream} == set(MODULES[:3])) ++ for row in upstream: ++ origin = origins[row['module']] ++ raw_origin = self.bound(row['raw_file']) ++ self.check('source-bound remote upstream bytes: ' + row['module'], ++ origin == {'commit': row['commit'], 'path': row['path']} ++ and re.fullmatch('[0-9a-f]{40}', row['commit']) is not None ++ and raw_origin == published[PREFIX + 'project/' + row['module'] + '.lean'] ++ and git_blob(raw_origin) == row['git_blob'] and row['raw_byte_match'] is True) ++ member_path(row['path']) ++ for rel, digest in expected['support_sha256'].items(): ++ self.check('reviewed final hosted support: ' + rel, sha(published[rel]) == digest) + acceptance = json_bytes(self.bound(envelope['root_acceptance'])) + self.check('scoped exact formal evidence acceptance', + acceptance['verdict'] == 'ACCEPT_SCOPED_FORMAL_EVIDENCE' +- and acceptance['source_manifest_sha256'] == MANIFEST_SHA +- and acceptance['reviews'] == REVIEW_HASHES) ++ and acceptance['expected'] == expected) + self.check('actual nonauthor identity and exposure', + all(isinstance(acceptance.get(k), str) and acceptance[k].strip() + for k in ('author', 'reviewer', 'root', 'exposure')) +@@ -349,6 +432,13 @@ + for review in final_review_records(acceptance): + self.check('nonempty bound final review: ' + review['path'], + bool(self.bound({k: review[k] for k in ('path', 'bytes', 'sha256')}))) ++ # Optional public-safe projections are separately bound, never mistaken for originals. ++ for projection in envelope.get('review_projections', []): ++ original = self.bound(projection['original']) ++ public = published[projection['public_path']] ++ self.check('explicit review projection identity: ' + projection['public_path'], ++ identity(original) == {k: projection['original'][k] for k in ('bytes', 'sha256')} ++ and identity(public) == projection['public_identity']) + return manifest + + def verify_artifact(self, envelope): +@@ -389,19 +479,23 @@ + def verify_ci(self, envelope, gh, archive, report): + ci = json_bytes(self.bound(envelope['hosted_ci'])) + context = report['context'] +- self.check('scoped hosted final success', report['status'] == 'PASS_HOSTED_C297_EXACT_TARGETS' ++ self.check('scoped hosted final success', report['status'] == 'PASS_HOSTED_C299_EXACT_TARGETS' + and report['scientific_effect'] == 'NONE' and context['human_review_credit'] == 0 +- and context['executor'] == 'GitHub-hosted runner executing C297 verification code') ++ and context['executor'] == 'GitHub-hosted runner executing C299 verification code' ++ and report.get('negative_predicates_qualified') is True ++ and report.get('negative_classification_errors') == []) + self.check('native hosted run identity', ci['repository'] == gh['repository'] == context['github_repository'] + and ci['head'] == gh['head'] == context['pull_request']['head_sha'] + and ci['tested_commit'] == context['tested_commit'] == context['github_sha'] + and str(ci['run_id']) == str(context['github_run_id']) + and str(ci['run_attempt']) == str(context['github_run_attempt']) +- and context['pull_request']['number'] == 489 +- and context['github_event_name'] == 'pull_request') ++ and context['pull_request']['number'] == envelope['expected']['pr'] ++ and context['github_event_name'] == 'pull_request' ++ and all(str(ci[k]) == str(envelope['expected'][k]) ++ for k in ('run_id', 'run_attempt', 'tested_commit'))) + merge = json_bytes(self.bound(envelope['tested_merge_commit'])) + self.check('native tested merge commit/tree/parents', merge['sha'] == ci['tested_commit'] +- and merge['tree']['sha'] == context['tested_tree'] ++ and merge['tree']['sha'] == context['tested_tree'] == envelope['expected']['tested_tree'] + and len(merge['parents']) == 2 + and {p['sha'] for p in merge['parents']} == {gh['base'], gh['head']} + and context['pull_request']['base_sha'] == gh['base']) +@@ -413,10 +507,10 @@ + and run['status'] == 'completed' and run['conclusion'] == 'success' + and run['path'] == WORKFLOW) + self.check('native successful scoped job', str(job['run_id']) == str(ci['run_id']) +- and job['name'] == 'c297-hosted-formal' and job['status'] == 'completed' +- and job['conclusion'] == 'success' and context['github_job'] == 'c297-hosted-formal') ++ and job['name'] == 'c299-hosted-formal' and job['status'] == 'completed' ++ and job['conclusion'] == 'success' and context['github_job'] == 'c299-hosted-formal') + self.check('artifact belongs to exact run and attempt', artifact['name'] == +- f"c297-hosted-{ci['run_id']}-{ci['run_attempt']}" ++ f"c299-hosted-{ci['run_id']}-{ci['run_attempt']}" + and artifact['expired'] is False and str(artifact['workflow_run']['id']) == str(ci['run_id']) + and artifact['workflow_run']['head_sha'] == gh['head']) + download = ci['download'] +@@ -432,23 +526,32 @@ + and j['conclusion'] == 'success' and j.get('run_id') and j.get('run_attempt') + for j in applicable) + and {'downstream-replay', 'formal / formal-evidence', 'math-downstream-gates'} +- <= {j['name'] for j in applicable}) ++ <= {j['name'] for j in applicable} ++ and set(envelope['expected']['required_ci_names']) <= {j['name'] for j in applicable}) ++ steps = job['steps'] ++ self.check('actual scoped job steps completed successfully', isinstance(steps, list) and bool(steps) ++ and len({step['number'] for step in steps}) == len(steps) ++ and all(step['status'] == 'completed' and step['conclusion'] == 'success' for step in steps)) ++ log = self.bound(ci['job_log']) ++ self.check('scoped complete job log contains actual checkout', ci['tested_commit'].encode() in log) ++ for spec in ci.get('additional_native_evidence', []): ++ self.bound(spec) + return ci + + def verify_hosted_execution(self, envelope, members, manifest, published, tree_rows): + report = json_bytes(members['RESULT.json']) + source = report['source_identity'] + self.check('hosted exact source identity before/after', source == report['source_identity_after'] +- and source['manifest'] == identity(self.read('HOSTED_SOURCE_MANIFEST.json')) ++ and source['manifest'] == {k: envelope['source_manifest'][k] for k in ('bytes', 'sha256')} + and source['files'] == manifest['files'] and source['source_origins'] == manifest['source_origins'] + and source['dependency_pins'] == PINS + and report['packages_before'] == report['packages_after'] == PINS) +- self.check('source snapshot manifest', members['HOSTED_SOURCE_MANIFEST.json'] == self.read('HOSTED_SOURCE_MANIFEST.json')) ++ self.check('source snapshot manifest', members['HOSTED_SOURCE_MANIFEST.json'] == self.bound(envelope['source_manifest'])) + for rel in SOURCE_PATHS: + self.check('hosted/native reviewed source snapshot: ' + rel, + members['source-snapshot/' + rel] == published[PREFIX + rel]) +- self.check('exact three hosted support inputs', set(source['support_files']) == set(SUPPORT_HASHES)) +- for rel in SUPPORT_HASHES: ++ self.check('exact three hosted support inputs', set(source['support_files']) == SUPPORT_PATHS) ++ for rel in SUPPORT_PATHS: + self.check('hosted/native support snapshot: ' + rel, + members['source-snapshot/repository/' + rel] == published[rel] + and source['support_files'][rel] == identity(published[rel])) +@@ -459,12 +562,18 @@ + configs = json_bytes(self.bound(envelope['formal_config_readback'])) + self.check('complete native formal configuration readback', + len(configs) == 3 and {r['path'] for r in configs} == set(source['formal_config'])) ++ config_bytes = {} + for row in configs: + raw = self.read(row['native_file']) ++ config_bytes[row['path']] = raw + self.check('hosted/native/current-tree formal config: ' + row['path'], + identity(raw) == source['formal_config'][row['path']] + == {'bytes': row['bytes'], 'sha256': row['sha256']} + and git_blob(raw) == row['git_blob'] == tree_rows[row['path']]['sha']) ++ self.check('actual formal dependency lock and toolchain', ++ config_bytes['formal/lean-toolchain'].decode().strip() == 'leanprover/lean4:v4.34.1' ++ and {row['name']: row['rev'] for row in json_bytes(config_bytes['formal/lake-manifest.json'])['packages']} == PINS ++ and ('rev = "' + PINS['mathlib'] + '"') in config_bytes['formal/lakefile.toml'].decode()) + runtimes = report['runtimes'] + self.check('measured Lean and kernel binary records', set(runtimes) == {'lean', 'leanchecker'} + and all(type(v['bytes']) is int and v['bytes'] > 0 +@@ -476,10 +585,20 @@ + phase_names += ['kernel-' + m for m in MODULES[1:]] + ['negative-' + m for m in NEGATIVES] + self.check('exact 13 unique phases in order', [r['name'] for r in phases] == phase_names + and len({r['name'] for r in phases}) == 13) ++ first_source = PurePosixPath(phases[2]['command'][-1]) ++ self.check('first fresh build source path', first_source.is_absolute() ++ and str(first_source).endswith('/' + PREFIX + 'project/Lifetime.lean') ++ and '..' not in first_source.parts) ++ checkout = first_source.parents[3] ++ object_dir = str(checkout / '.lake/c299-hosted-evidence/objects') ++ project_dir = str(checkout / PREFIX / 'project') ++ negative_dir = str(checkout / PREFIX / 'negative-project') + known, audit, generated = {}, None, set() + lean, kernel = runtimes['lean']['path'], runtimes['leanchecker']['path'] + for record in phases: + name = record['name'] ++ environment_binding(report, record, object_dir) ++ self.check(name + ': exact selected execution environment', True) + self.check(name + ': aggregate/per-phase receipt equality', + json_bytes(members[name + '.receipt.json']) == record) + self.check(name + ': completed expected process', record['status'] == 'PASS' +@@ -497,7 +616,7 @@ + if name.startswith('runtime-'): + self.check(name + ': bounded runtime probe', record['exit_code'] == 0 + and record['timeout_seconds'] == 30 and record['objects_before'] is None +- and record['objects_after'] is None) ++ and record['objects_after'] is None and record['cwd'] == str(checkout / 'formal')) + if name == 'runtime-version': + self.check(name + ': actual pinned version', args == [lean, '--version'] + and 'version 4.34.1' in streams['stdout'].decode() +@@ -516,7 +635,9 @@ + self.check(name + ': exact build command', args[:len(want_start)] == want_start + and len(args) == len(want_start) + 3 and args[len(want_start)] == '-o' + and args[-1].endswith('/' + PREFIX + 'project/' + module + '.lean') +- and Path(args[-2]).name == module + '.olean' and record['exit_code'] == 0) ++ and args[-2] == object_dir + '/' + module + '.olean' ++ and args[-1] == project_dir + '/' + module + '.lean' ++ and record['cwd'] == project_dir and record['exit_code'] == 0) + after = record['objects_after'] + self.check(name + ': unchanged imported objects', all(after.get(k) == v for k, v in known.items())) + added = set(after) - set(known) +@@ -526,27 +647,34 @@ + generated |= added + known = after + self.check(name + ': produced object identity', record['object'] == known[module + '.olean']) +- if module == 'RegularSuperlevelAxiomAudit': ++ if module == 'CriticalRidgeAxiomAudit': + audit = measured_audit((streams['stdout'] + b'\n' + streams['stderr']).decode()) + else: + self.check(name + ': clean non-audit build streams', not streams['stdout'] and not streams['stderr']) + elif name.startswith('kernel-'): + self.check(name + ': standard named-module kernel', args == [kernel, '-v', name[7:]] +- and record['exit_code'] == 0 and record['objects_after'] == known) ++ and record['exit_code'] == 0 and record['objects_after'] == known ++ and record['cwd'] == project_dir) + else: + fixture = name[9:] + self.check(name + ': actual negative command', args[:3] == [lean, '-j2', '-M14000'] + and len(args) == 4 and args[-1].endswith('/' + PREFIX + 'negative-project/' + fixture + '.lean') + and record['objects_after'] == known +- and record.get('intended_missing_premise_rejection') is True) +- missing_premise(fixture, record['exit_code'], streams['stdout'], streams['stderr']) ++ and args[-1] == negative_dir + '/' + fixture + '.lean' and record['cwd'] == negative_dir ++ and record.get('intended_missing_premise_rejection') is True ++ and record.get('diagnostic_qualification_pending') is False ++ and record.get('candidate_parser_match') is True ++ and record.get('negative_classification_error') is None) ++ qualified_negative(fixture, record['exit_code'], streams['stdout'], streams['stderr'], ++ envelope['expected']['negative_qualification']['diagnostics'][fixture]) + self.check(name + ': independently checked intended rejection', True) + self.check('complete independently measured module-origin census', audit is not None + and report['audit']['module_counts'] == audit['module_counts'] + and report['audit']['declaration_count'] == audit['declaration_count'] + and report['audit']['module_declarations'] == audit['module_declarations'] + and set(report['audit']['required_targets']) == REQUIRED +- and set(report['audit']['allowed_axioms']) == AXIOMS) ++ and set(report['audit']['allowed_axioms']) == AXIOMS ++ and audit['module_counts'] == envelope['expected']['module_counts']) + self.check('stable final hosted object inventory', report['objects_after_builds'] == report['objects'] == known + and {m + '.olean' for m in MODULES} <= set(known) + and {n[8:] for n in members if n.startswith('objects/')} == set(known)) +@@ -554,7 +682,7 @@ + self.check('downloaded exact object: ' + name, identity(members['objects/' + name]) == spec) + expected_members = {'RESULT.json', 'HOSTED_SOURCE_MANIFEST.json'} + expected_members |= {'source-snapshot/' + r for r in SOURCE_PATHS} +- expected_members |= {'source-snapshot/repository/' + r for r in SUPPORT_HASHES} ++ expected_members |= {'source-snapshot/repository/' + r for r in SUPPORT_PATHS} + expected_members |= {'objects/' + n for n in known} + expected_members |= {n + ext for n in phase_names for ext in ('.stdout', '.stderr', '.receipt.json')} + self.check('complete exact hosted evidence member set', set(members) == expected_members) +@@ -563,7 +691,8 @@ + def verify_custody(self, envelope): + custody = envelope['custody'] + external = {self.root / name for name in +- ('FINAL_MASTER_INPUTS.json', 'FINAL_MASTER_START.json', 'FINAL_MASTER.json')} ++ ('FINAL_MASTER_INPUTS.json', 'FINAL_MASTER_START.json', 'FINAL_MASTER.json', ++ 'FINAL_MASTER.stdout', 'FINAL_MASTER.stderr')} + external |= {self.path(custody[k]['path']) for k in + ('archive', 'remote_archive', 'receipt', 'canonical_verification')} + required = set(self.observed) - external +@@ -625,139 +754,69 @@ + + def verify(self, envelope): + self.check('master input envelope schema', envelope['schema_version'] == 1) +- self.read('evidence/MASTER_CONTRACT.md') +- self.read('FINAL_MASTER_NOTES.md') ++ validate_expectations(envelope['expected']) ++ self.check('qualified final expectations admitted', True) ++ self.bound(envelope['master_contract']) ++ self.bound(envelope['master_notes']) ++ self.check('executed master equals reviewed bound source', ++ self.bound(envelope['master_source']) == Path(__file__).read_bytes()) + gh, published, tree_rows = self.verify_publication(envelope) + manifest = self.verify_sources_reviews(envelope, published) + archive, members = self.verify_artifact(envelope) + report, audit = self.verify_hosted_execution(envelope, members, manifest, published, tree_rows) + ci = self.verify_ci(envelope, gh, archive, report) +- prior_raw = self.read('C297_RUN1_39418891714.zip') +- self.check('retained run1 exact archive', len(prior_raw) == 323718 +- and sha(prior_raw) == 'edb500e87ab5c6880a32ffdf3950c186728bec24c8f758d3d9170f091fd81157') +- with zipfile.ZipFile(io.BytesIO(prior_raw)) as prior: +- failed = json_bytes(prior.read('RESULT.json')) +- self.check('run1 remains incomplete history', failed['status'] == 'HOLD_NOT_COMPLETED' +- and 'completed_at' not in failed +- and failed['phase_results'][-1]['name'] == 'negative-WithoutCoordinateIdentity' +- and failed['phase_results'][-1].get('intended_missing_premise_rejection') is not True) ++ history = envelope['historical_hosted_attempts'] ++ self.check('development history retained', isinstance(history, list) and bool(history)) ++ seen = set() ++ for prior in history: ++ prior_raw = self.bound(prior['archive']) ++ native_report = self.bound(prior['report']) ++ self.check('bounded historical hosted ZIP', len(prior_raw) <= 128 * 1024 * 1024) ++ with zipfile.ZipFile(io.BytesIO(prior_raw)) as zipped: ++ infos = [info for info in zipped.infolist() if info.filename == 'RESULT.json'] ++ self.check('unique bounded historical result member', len(infos) == 1 and infos[0].file_size <= 4 * 1024 * 1024) ++ self.check('exact retained historical report', zipped.read(infos[0]) == native_report) ++ failed = json_bytes(native_report) ++ old_context = failed['context'] ++ key = (str(old_context['github_run_id']), str(old_context['github_run_attempt'])) ++ self.check('distinct declared incomplete hosted history', key not in seen ++ and key != (str(ci['run_id']), str(ci['run_attempt'])) ++ and key == (str(prior['run_id']), str(prior['run_attempt'])) ++ and failed['status'] == prior['status'] == 'HOLD_NOT_COMPLETED' ++ and 'completed_at' not in failed and old_context['pull_request']['head_sha'] == prior['head'] ++ and old_context['github_repository'] == REPOSITORY) ++ seen.add(key) ++ self.check('retained additional failure/source evidence', isinstance(envelope['retained_inputs'], list) ++ and bool(envelope['retained_inputs'])) ++ for spec in envelope['retained_inputs']: ++ self.bound(spec) + custody = self.verify_custody(envelope) +- for p, spec in list(self.observed.items()): +- self.check('final stable native input: ' + str(p), p.is_file() +- and all(not q.is_symlink() for q in (p, *p.parents)) and identity(p.read_bytes()) == spec) ++ for path, spec in list(self.observed.items()): ++ self.check('final stable native input: ' + str(path), path.is_file() ++ and all(not q.is_symlink() for q in (path, *path.parents)) and identity(path.read_bytes()) == spec) + return {'census': audit, 'hosted_run_id': ci['run_id'], 'hosted_run_attempt': ci['run_attempt'], + 'hosted_tested_commit': ci['tested_commit'], 'custody': custody, + 'verification_limit': 'Artifact and execution-record binding; runtime hashes are executor-measured records, not independently downloaded/native binary reproduction. No Lean execution, remote fetch, human review, or scientific promotion.'} + + +-def self_test(): +- """Local engineering controls only; never accepts the actual delivery.""" +- good = ('SUPERLEVEL_AUDIT_MODULE X COUNT 1\n' +- 'SUPERLEVEL_AUDIT_DECL X.target AXIOMS [propext,\n Classical.choice,\n Quot.sound]\n' +- 'SUPERLEVEL_AUDIT_STANDARD_ONLY_PASS COUNT 1\n') +- need(measured_audit(good, ('X',), {'X.target'})['declaration_count'] == 1, 'wrapped audit positive') +- rejected = 0 +- cases = [good.replace('Quot.sound]', 'sorryAx]'), good.replace('X.target', 'X.other'), +- good.replace(' Quot.sound]\n', ''), good.replace('COUNT 1\n', 'COUNT 2\n', 1), +- good.replace('Quot.sound]', 'Quot.sound] trailing'), +- good + 'SUPERLEVEL_AUDIT_DECL\tBad AXIOMS [sorryAx]\n'] +- for value in cases: +- try: +- measured_audit(value, ('X',), {'X.target'}) +- except ValueError: +- rejected += 1 +- need(rejected == len(cases), 'audit mutation escaped rejection') +- proper = (b'f.lean:1:1: error: Type mismatch\n' +- b'TorusRegularSuperlevel.closed_superlevel_path_connected_basis hsmooth a x\nhas type\n' + +- 'a < g x.val ∨ ¬IsCriticalPoint d g x.val → (𝓝 x).HasBasis basis id\n'.encode() + +- b'but is expected to have type\n' + '(𝓝 x).HasBasis basis id\n'.encode()) +- missing_premise(NEGATIVES[0], 1, proper, b'') +- for code, data in [(0, proper), (1, proper + b'unknown module bad'), +- (1, proper.replace('∨'.encode(), b'and'))]: +- try: +- missing_premise(NEGATIVES[0], code, data, b'') +- except ValueError: +- continue +- raise ValueError('fake negative escaped rejection') +- runtime = {'runtimes': { +- 'lean': {'path': '/p/bin/lean', 'bytes': 1, 'sha256': 'a' * 64}, +- 'leanchecker': {'path': '/p/bin/leanchecker', 'bytes': 2, 'sha256': 'b' * 64}}, +- 'lean_launcher': {'path': '/p/bin/lean', 'bytes': 1, 'sha256': 'a' * 64}} +- runtime_binding(runtime, b'/p\n') +- for candidate in ({**runtime, 'lean_launcher': {**runtime['lean_launcher'], 'sha256': 'c' * 64}}, +- {**runtime, 'runtimes': {**runtime['runtimes'], +- 'leanchecker': {**runtime['runtimes']['leanchecker'], 'path': '/wrong/bin/leanchecker'}}}): +- try: +- runtime_binding(candidate, b'/p\n') +- except ValueError: +- continue +- raise ValueError('incoherent runtime binding accepted') +- reviews = { +- 'hosted_artifact_review': {'path': 'artifact.md', 'bytes': 1, 'sha256': 'a' * 64, +- 'verdict': 'ACCEPT_SCOPED_FORMAL_HOSTED'}, +- 'master_source_review': {'path': 'master.md', 'bytes': 1, 'sha256': 'b' * 64, +- 'verdict': 'PASS_SCOPED_MASTER_SOURCE_REVIEW'}} +- final_review_records(reviews) +- for candidate in ( +- {**reviews, 'master_source_review': {**reviews['master_source_review'], +- 'verdict': 'HOLD_PENDING_AMENDMENT_REVIEW'}}, +- {**reviews, 'master_source_review': {**reviews['master_source_review'], +- 'path': 'artifact.md'}}): +- try: +- final_review_records(candidate) +- except ValueError: +- continue +- raise ValueError('nonpassing or duplicated final review accepted') +- with tempfile.TemporaryDirectory() as tmp: +- root = Path(tmp).resolve() +- (root / 'x').write_bytes(b'abc') +- verifier = Master(root) +- spec = {'path': 'x', 'bytes': 3, 'sha256': 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad'} +- verifier.bound(spec) +- (root / 'x').write_bytes(b'abd') +- try: +- verifier.bound(spec) +- except ValueError: +- pass +- else: +- raise ValueError('changed bound bytes accepted') +- with tempfile.TemporaryDirectory() as tmp: +- root = Path(tmp).resolve() +- (root / 'accepted').write_bytes(b'actual accepted evidence') +- (root / 'unrelated').write_bytes(b'unrelated stale packet') +- (root / 'PACKET').mkdir() +- (root / 'PACKET' / 'unrelated').write_bytes(b'unrelated stale packet') +- verifier = Master(root) +- verifier.read('accepted') +- custody = {k: {'path': k, 'bytes': 0, 'sha256': sha(b'')} +- for k in ('archive', 'remote_archive', 'receipt', 'canonical_verification')} +- custody['bindings'] = [{'source_path': 'unrelated', 'packet_path': 'unrelated'}] +- try: +- verifier.verify_custody({'custody': custody}) +- except ValueError as exc: +- need(str(exc) == 'packet contains every actual accepted input', +- 'stale packet rejected for unexpected reason') +- else: +- raise ValueError('unrelated packet accepted instead of actual accepted evidence') +- print('PASS_ENGINEERING_SELF_TEST_ONLY: wrapped/malformed census, intended/forged negative, runtime identity, final review, changed-byte and unrelated-packet guards; no final master run.') +- + + def main(): +- if sys.argv[1:] == ['--self-test']: +- self_test() +- return 0 +- need(not sys.argv[1:], 'usage: final_master.py [--self-test]') +- start, output = ROOT / 'FINAL_MASTER_START.json', ROOT / 'FINAL_MASTER.json' ++ parser = argparse.ArgumentParser(description=__doc__) ++ parser.add_argument('--root', type=Path, default=ROOT) ++ args = parser.parse_args() ++ root = args.root.absolute() ++ start, output = root / 'FINAL_MASTER_START.json', root / 'FINAL_MASTER.json' + if start.exists() or output.exists(): + print('REFUSED: final master already started; preserve prior evidence', file=sys.stderr) + return 1 +- envelope_raw = (ROOT / 'FINAL_MASTER_INPUTS.json').read_bytes() ++ # Fixed external names prevent user-controlled output/custody cycles. ++ envelope_raw = (root / 'FINAL_MASTER_INPUTS.json').read_bytes() + master_raw = Path(__file__).read_bytes() + with start.open('x') as handle: + json.dump({'started_at': now(), 'master_sha256': sha(master_raw), + 'input_envelope_sha256': sha(envelope_raw), 'scientific_effect': 'NONE'}, handle, indent=2) + handle.write('\n') +- checker = Master() ++ checker = Master(root) + result = {'status': 'HOLD_ARTIFACT_VERIFICATION', 'scientific_effect': 'NONE'} + try: + checker.check('exact master invocation bytes', checker.read(Path(__file__)) == master_raw) +@@ -767,7 +826,7 @@ + except BaseException as exc: + result['error'] = repr(exc) + result.update(finished_at=now(), checks=checker.checks, check_count=len(checker.checks), +- observed_identities={str(p): spec for p, spec in checker.observed.items()}) ++ observed_identities={str(path): spec for path, spec in checker.observed.items()}) + with output.open('x') as handle: + json.dump(result, handle, indent=2, sort_keys=True) + handle.write('\n') diff --git a/frontiers/critical_ridge_20261020/artifact-master/FINAL_MASTER_NOTES.md b/frontiers/critical_ridge_20261020/artifact-master/FINAL_MASTER_NOTES.md new file mode 100644 index 000000000..32492a448 --- /dev/null +++ b/frontiers/critical_ridge_20261020/artifact-master/FINAL_MASTER_NOTES.md @@ -0,0 +1,65 @@ +# C299 native artifact master: bound-input contract + +Author: OpenAI Codex `/root/c297_hosted_verifier`, delegated for Dylan Roy, author of the C297 engineering precedent and this adaptation. Same-provider author exposure; no independent, human or scientific credit. This code adapts frozen C297 final_master.py SHA256 `000acdc299363caaa7882863d94e04547f6f3b88969358c7e6df8df695428757`. It performs local artifact/record checks only: no subprocess, Lean, network, Git command or canonical-builder execution. Separate unittest controls exercise inert bytes and predicates; they never call main or the complete verify method. + +Actual final invocation, after root freezes inputs and obtains source review: + +`python3 -B -S engineering-preflight/master/final_master.py --root /absolute/continuation299` + +The script must be within that root. Fixed external names are FINAL_MASTER_INPUTS.json, FINAL_MASTER_START.json and FINAL_MASTER.json. Start/result use exclusive creation; repetition is refused. A failed acceptance retains HOLD and all checks already evaluated. The root's captured FINAL_MASTER.stdout/stderr remain external too. There is no --self-test CLI; use the separate declared unittest controls. + +## Final input envelope + +Each `identity` below is exactly `{path, bytes, sha256}`: contained native path, integer nonnegative size and lowercase SHA256. Root supplies actual final values; the current development source/run/HOLD cannot fill this envelope as a final PASS. + +- `schema_version`: 1. +- `expected`: fields described below; repeated exactly in root acceptance. +- `master_source`, `master_notes`, `master_contract`: identities of this exact executable, these notes and the actual final execution/acceptance contract. +- `source_manifest`: identity of the final five-module/two-control manifest. +- `github_readback`, `publication_inputs`, `github_commit`, `github_ref`, `github_pr`, `github_tree`: identities of decoded native records and final publication list using the C297 schema below. +- `publication_directory`: contained complete native directory corresponding to `frontiers/critical_ridge_20261020/`, excluding its separate workflow. An explicitly assembled composite is allowed. Exact membership and every byte must match publication; frozen prior directories remain history. +- `upstream_readback`: identity of the three-row projection described below, retaining the actual underlying source readbacks in packet custody. +- `formal_config_readback`: identity of three rows `{path,native_file,bytes,sha256,git_blob}` for the existing formal toolchain, lakefile and lockfile. +- `tested_merge_commit`, `hosted_ci`: identities of the native tested-merge commit and CI record below. +- `hosted_artifact_zip`: original downloaded final artifact ZIP identity; `hosted_artifact_directory`: contained extraction directory; `hosted_member_prefix`: normally empty, otherwise explicitly validated. +- `root_acceptance`: identity of the reviewed acceptance record below. +- Optional `review_projections`: rows `{original:identity,public_path,public_identity:{bytes,sha256}}` only when a public-safe review differs from its native original. +- `historical_hosted_attempts`: nonempty rows `{archive:identity,report:identity,run_id,run_attempt,head,status}`. Each original ZIP's unique RESULT.json must byte-match the native report and remain HOLD_NOT_COMPLETED without completed_at; its run/attempt and head must match actual context and differ from the final attempt. Include every actual development attempt selected by root, including development1 run39438543701. This generic historical schema does not mislabel compiler failure as negative semantic success. +- `retained_inputs`: nonempty list of identities for other required history, source/claim/author timeout evidence, declarations, failure streams and raw coordination records. The master hashes them, but does not infer their substantive conclusions automatically. +- `custody`: `{archive:identity,remote_archive:identity,receipt:identity,canonical_verification:identity,bindings:[{source_path,packet_path},...]}` with the C297 acyclic semantics below. + +`expected` has exactly these fields: + +- Positive integer `pr`, `run_id`, `run_attempt`; actual 40-hex `head`, `base`, `tree`, `tested_commit`, `tested_tree`. +- `source_manifest_sha256`; `support_sha256` mapping exactly `.github/workflows/c299-critical-ridge.yml`, `frontiers/critical_ridge_20261020/c299_hosted_verify.py`, and the matching test_c299_hosted_verify.py to their final reviewed digests. +- `module_counts`: actual positive counts for Lifetime, TorusTopology, MorseFiniteCritical, CriticalRidge. These are cross-checked against independently parsed complete output, not assumed census counts. +- `required_ci_names`: distinct actual applicable job names, including downstream-replay, formal / formal-evidence and math-downstream-gates. Every supplied applicable current-head job must succeed. The dedicated C299 job is checked separately. +- `negative_qualification`: exactly `{status:"QUALIFIED",diagnostics:{WithoutCriticality:record,WithoutNegativeDefiniteness:record}}`. Each record has exact stdout_sha256, stderr_sha256 and whitespace-normalized expression, actual, expected sections from reviewed actual final output. Stream/section identity is additional binding, not a substitute for the master’s independent source-specific omitted-premise and full four-part conclusion checks. Its current display grammar is prospective until real diagnostics exist; any actual spelling correction requires reviewed master code and affected controls, not an envelope-only bypass. + +## C297-compatible publication and native CI records + +`github_readback`: repository, pr, head, base, tree, tree_untruncated=true, native_remote_byte_equality=true, pr_body_exact_readback=true, files_count, bytes and files. Each file row includes path, local, remote_file, bytes, sha256, remote_sha256, git_blob, tree_blob, raw_byte_match=true. The publication-input JSON is a list with path/local/bytes/sha256 matching these rows. When a prior raw read is reused, supply byte_read_ref and reused_same_git_blob; old read refs are allowed only when their bytes and Git blob equal the final current-tree leaf. Newly changed bytes need their own final raw read. Counts are derived; there is no historical 29/39/50-file constant. + +Current decoded commit/ref/PR/tree records bind actual SHA, base, repository, PR number and every publication/formal-config blob. A tree projection is accepted only if explicitly labeled by scope_note and native_entry_count, with every used path and no other projected paths; original native tree must be untruncated. Root preserves the original full record separately. The native PR base must equal the frozen final base. The native tested-merge commit must have exactly two parents, final head and base; hosted shallow-checkout parent output may honestly be empty. + +`upstream_readback` is three rows `{module,commit,path,raw_file:identity,git_blob,raw_byte_match:true}`. Actual raw bytes must equal the final corresponding published Lean input. Current intended origins are commit7af365e8c8db1ae0275d4efe08a70a678f153ca2 under frontiers/critical_level_attainment_20261020/final-project; final values are bound by the final source manifest and actual readback rather than hardcoded. Do not convert merely cited provenance into a byte-readback claim. + +`hosted_ci` uses C297 fields repository/head/tested_commit/run_id/run_attempt; actual decoded `run`, `job`, `artifact`; `download:{artifact_id,bytes,sha256}`; and `applicable_jobs` records with unique id/name/head_sha/status/conclusion/run_id/run_attempt. The dedicated job object must contain actual `steps`, all completed successfully with distinct step numbers. `job_log` is the identity of its full decoded log containing the tested checkout commit. Optional `additional_native_evidence` binds original envelopes, other applicable logs/steps and readbacks without substituting them for the native objects. Artifact metadata must name the exact run/attempt, correct head and unexpired actual archive size; native SHA256 digest, when supplied, must match the downloaded archive. + +## Reviewed acceptance and scientific boundary + +Root acceptance is `{verdict:"ACCEPT_SCOPED_FORMAL_EVIDENCE",expected:,author,reviewer,root,exposure,human_review_credit:0,organizational_independence_credit:0,scientific_effect:"NONE",reviews:{...}}`. + +The five required review roles are source_review / ACCEPT_SCOPED_SOURCE, engineering_review / ACCEPT_SCOPED_ENGINEERING_SOURCE, negative_qualification_review / ACCEPT_SCOPED_NEGATIVE_DIAGNOSTICS, hosted_artifact_review / ACCEPT_SCOPED_FORMAL_HOSTED, master_source_review / PASS_SCOPED_MASTER_SOURCE_REVIEW. Each maps to exactly `{path,bytes,sha256,verdict}`, with distinct nonempty review files and exact passing verdicts. These are acceptance-role labels for root's truthful assessment of the actual source-bound reviews, not an instruction to rewrite historical review wording. Root must assess substantive reviews; hashing a file does not reproduce its judgment. No hardcoded review hash creates a code/review self-hash cycle. + +The master requires final PASS_HOSTED_C299_EXACT_TARGETS plus negative_predicates_qualified=true and no classification errors. Each negative must have intended_missing_premise_rejection=true, diagnostic_qualification_pending=false, candidate_parser_match=true and no classification error. The current development collector deliberately fails these gates. There is no theorem, provider-distinct, human-review or broad scientific promotion implied by artifact acceptance. + +## Execution and custody checks + +Exactly 13 ordered phases bind the two runtime probes, five fresh local builds, four standard named-module kernels and two negatives. Every aggregate/per-phase receipt and stdout/stderr byte identity is compared. Commands/cwd/resources, environment-contract policy/digests/selected values, fresh-object search precedence, empty initial inventory, allowed new outputs, unchanged imported objects and final downloaded objects are checked. The audit independently parses all wrapped records, rejects malformed/unknown/forbidden/duplicate/missing targets and measures all four origins and 13 required public interfaces. Runtime paths derive from the actual printed prefix; their hashes remain executor-measured records. Cached dependency objects are not all rebuilt or rehashed here. + +The trusted canonical builder runs separately under root control; this master does not execute or reimplement its structural verifier. Canonical verification must report ok/files/manifest_sha256/archive_bytes/archive_sha256/scientific_effect. Private receipt must report owner_only=true, actual_raw_download_equal=true, bytes and sha256. The master verifies original/raw-Drive equality, canonical manifest digest/count, every manifest payload's bytes/size/hash and exact PACKET membership. + +Inline custody.bindings must cover every file actually consumed before custody except external cycle-causing files. Each source is outside PACKET and maps uniquely to a safe packet-relative destination; native source, PACKET file and canonical payload must match. Required coverage includes executable/notes/contract, source/config/readback/review files, hosted ZIP and every extracted consumed member, history and retained inputs. This prevents a valid unrelated packet from passing. Include all needed extractions, unlike the initial incomplete C298 selection; do not assume ZIP possession supplies absent native files. + +Exclude current FINAL_MASTER_INPUTS.json, FINAL_MASTER_START.json, FINAL_MASTER.json, FINAL_MASTER.stdout, FINAL_MASTER.stderr, current archive/raw-download/private-receipt/canonical-verification files from packet bindings and canonical payload names. Those files remain external. Canonical archive limits and build are root-owned. Later public/R17 delivery receipts remain truthful external completion evidence. Keep private signed locators/governance data out of public projections. diff --git a/frontiers/critical_ridge_20261020/artifact-master/HANDOFF.md b/frontiers/critical_ridge_20261020/artifact-master/HANDOFF.md new file mode 100644 index 000000000..12bfb86c7 --- /dev/null +++ b/frontiers/critical_ridge_20261020/artifact-master/HANDOFF.md @@ -0,0 +1,17 @@ +# C299 final artifact-master source handoff + +Actual executor: OpenAI Codex `/root/c297_hosted_verifier`, delegated author engineering for Dylan Roy. Source-only review requested from `/root/c299_nonauthor_review`. This is support for the existing C299 delivery. No separate remote delivery, Lean execution, mathematical program, archive builder or complete master invocation occurred. + +The code is a bounded adaptation of frozen C297 final_master.py (`000acdc299363caaa7882863d94e04547f6f3b88969358c7e6df8df695428757`), not a new framework. C297_TO_C299_MASTER.diff records the full change. It replaces fixed old source/review/run values with a bound owner-frozen expected-input record, changes C299 module/target/negative semantics, adds E1 environment receipt binding and preserves C297 raw-byte/Git-tree/artifact/object/current-CI/custody checks. Complete current publication membership remains dynamic. Reused raw reads require honest old read refs and matching final Git blobs. The actual source/current-run review and root acceptance remain substantive work. + +The existing real development1 artifact was read for schema alignment: it uses phase_results/exit_code, E1 environment_contract and per-phase environment digests. Its six-phase result is HOLD after the actual candidate2 CriticalRidge elaboration failure. Three upstream modules succeeded. That record is retained history, never a final acceptance input. Final census counts/run/head/support hashes/diagnostic sections are supplied only from actual stable reviewed evidence. Candidate3's nine declarations and main interface remain unchanged according to the source author, so no interface-specific master amendment was needed for that source revision. + +The independent negative parser currently retains the complete prospective display grammar from the source-bound interface. Actual Lean negative output has not yet qualified it. Any rendering difference must be inspected and narrowly amended/reviewed, with changed-input controls, before final acceptance. No envelope value bypasses the missing-premise/four-field-conclusion tests. Current development flags and status fail the final gate by design. + +PREEXEC_RED.json was written but never executed: source inspection caught a non-ASCII Python bytes literal in its synthetic fixture. PREEXEC_RED_READY.json binds the corrected fixture before execution. RED retained returncode1 and three assertion failures for the missing final-admission, qualified-negative and independent-environment predicates. DRAFT_BEFORE_ADMISSION.py preserves the exact source used for that RED. After later test additions, RED_TEST_SNAPSHOT.py was reconstructed by reversing those test-only additions and verified against its declared 8620-byte SHA256; it was not a pre-RED snapshot. UNEXECUTED_TEST_DRAFT.py similarly preserves the verified 8612-byte unexecuted initial fixture as historical evidence, not runnable test code. + +PREEXEC_GREEN.json then declared the exact final code/tests/notes and two 30-second-capped inert unittest commands. GREEN1 and GREEN2 returned0 with eight tests passing normally and under -O at14:32:24UTC. Those tests reject pending/missing final expectations, wrong final identity shapes, altered missing-premise output even with rebound stream hashes, environmental path/loader/digest changes, wrong runtime/launcher binding, nonpassing/duplicate review roles, missing/forbidden/malformed census targets, changed input bytes, stale unrelated packets and output cycles. The declaration, command receipts and complete stdout/stderr are retained. All three declared source identities remained unchanged. No FINAL_MASTER_START.json or FINAL_MASTER.json was created. + +Master source: 53145 bytes, dffb5c7575f0f177154ca48c6e2022d4a3c1d65e7da464293edc20df8b341c21. Notes: 12049 bytes, 5cd11ebf8bcd99b8b8ad5f421af51c88923e8605d77a520c38af55e9fc01787d. Test source: 10113 bytes, 7b6315774999938692c88ae1291a3d0f222b36afa8d791dbed397d7c09b8b13f. Exact identity index accompanies this handoff. The index is not its own payload and is not a final input envelope. + +Next useful task: nonauthor source review, then actual final-diagnostic/schema alignment after the source repair succeeds. Root supplies complete stable current GitHub/CI/readback/custody/review records, creates one acyclic archive, and invokes the complete final master once only after those gates are ready. Broad mathematical and scientific obligations remain open; all current work is author engineering, provider independence0 and human review0. diff --git a/frontiers/critical_ridge_20261020/artifact-master/IDENTITIES.json b/frontiers/critical_ridge_20261020/artifact-master/IDENTITIES.json new file mode 100644 index 000000000..b86bac7d1 --- /dev/null +++ b/frontiers/critical_ridge_20261020/artifact-master/IDENTITIES.json @@ -0,0 +1,85 @@ +{ + "created_at": "2026-10-20T14:34:20.287349+00:00", + "files": { + "C297_TO_C299_MASTER.diff": { + "bytes": 49725, + "sha256": "1cf30c1bcb67317b9f7a080e1e9f12b2165e0ff842db74b8037aadeb53c9ccc0" + }, + "DRAFT_BEFORE_ADMISSION.py": { + "bytes": 47129, + "sha256": "4c26d239f5cd970c141a2b8e8814fb74da507a0f19538f1bb472166af54dbe8d" + }, + "FINAL_MASTER_NOTES.md": { + "bytes": 12049, + "sha256": "5cd11ebf8bcd99b8b8ad5f421af51c88923e8605d77a520c38af55e9fc01787d" + }, + "GREEN1.receipt.json": { + "bytes": 765, + "sha256": "dca4f203a78c1fc6ed606507374df8c876a9b5c72b3b22927d3c5dea52f8a3b5" + }, + "GREEN1.stderr": { + "bytes": 917, + "sha256": "80e0e5e6383f3ce67c84ada20992742c0cdc3f9c8308c8b86610b9083551b061" + }, + "GREEN1.stdout": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "GREEN2.receipt.json": { + "bytes": 783, + "sha256": "de02af3c066d1862b60b923f966bfb7c1504b155e3379cd47e40985493efdfeb" + }, + "GREEN2.stderr": { + "bytes": 917, + "sha256": "ef09dff4fa382778fa85fc3e1afe4d2569db5285c2a614545890f35ac8639a0a" + }, + "GREEN2.stdout": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "HANDOFF.md": { + "bytes": 4527, + "sha256": "b2d9cd88afb8c91fb7a586d1415ccb987247ffaff47660a70d6114268aef3322" + }, + "PREEXEC_GREEN.json": { + "bytes": 1414, + "sha256": "363b16d2aa2e35841c0e1cd385142d87149ab8ebd167c25a74bacd6510334abc" + }, + "PREEXEC_RED.json": { + "bytes": 1248, + "sha256": "23c44a6f4dbba529d37a2e62f66e6327ccc2f4c57fa541bb80a6334f74134e05" + }, + "PREEXEC_RED_READY.json": { + "bytes": 1431, + "sha256": "0a4d9d2142c2dcbb79a5af2c9f2a6e96522e0b009afe151f2cf321ecd2be92c5" + }, + "RED.receipt.json": { + "bytes": 998, + "sha256": "5903dd2c1d78247d61c547d7ad1eaab3cd9c567a8a7cba056b52e29d3be0ecb0" + }, + "RED.stderr": { + "bytes": 2512, + "sha256": "61a2bafaa6c4f116b69525614a7c7e05c0bc5486a0f8929a0ec6ca8da4ff723c" + }, + "RED.stdout": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "RED_TEST_SNAPSHOT.py": { + "bytes": 8620, + "sha256": "9b0baa8386410a0e908dee4c81c713b541f35ede1fed4eb963d39efdf77935b5" + }, + "UNEXECUTED_TEST_DRAFT.py": { + "bytes": 8612, + "sha256": "fd06ad09fbc330f5acff0f9385952a62f4f9cefd2e3820071c6cd36ad4f10758" + }, + "final_master.py": { + "bytes": 53145, + "sha256": "dffb5c7575f0f177154ca48c6e2022d4a3c1d65e7da464293edc20df8b341c21" + }, + "test_final_master.py": { + "bytes": 10113, + "sha256": "7b6315774999938692c88ae1291a3d0f222b36afa8d791dbed397d7c09b8b13f" + } + } +} diff --git a/frontiers/critical_ridge_20261020/artifact-master/final_master.py b/frontiers/critical_ridge_20261020/artifact-master/final_master.py new file mode 100644 index 000000000..df2072882 --- /dev/null +++ b/frontiers/critical_ridge_20261020/artifact-master/final_master.py @@ -0,0 +1,838 @@ +#!/usr/bin/env python3 +"""C299 final native artifact master: no Lean, network, or archive-builder execution. + +Default invocation is once-only and must be authorized by the source owner after +stable inputs. Separate unittest controls exercise parser/receipt guards using +temporary bytes; they do not create a final-master start/result or accept delivery. +See FINAL_MASTER_NOTES.md for the explicit input-envelope contract. +""" +import argparse +from datetime import datetime, timezone +import hashlib +import io +import json +from pathlib import Path, PurePosixPath +import re +import stat +import sys +import zipfile + +ROOT = Path(__file__).absolute().parent +PREFIX = 'frontiers/critical_ridge_20261020/' +WORKFLOW = '.github/workflows/c299-critical-ridge.yml' +REPOSITORY = 'd6g8k5htny-coder/Math-' +MODULES = ('Lifetime', 'TorusTopology', 'MorseFiniteCritical', + 'CriticalRidge', 'CriticalRidgeAxiomAudit') +NEGATIVES = ('WithoutCriticality', 'WithoutNegativeDefiniteness') +SOURCE_PATHS = {f'project/{m}.lean' for m in MODULES} | { + f'negative-project/{m}.lean' for m in NEGATIVES} +AXIOMS = {'propext', 'Classical.choice', 'Quot.sound'} +REQUIRED = { + 'UniversalLaw.Spec.Lifetime.' + n for n in ('IsSmooth', 'IsCriticalPoint', 'hessian') +} | {'TorusMorseFinite.literal_hessian_eq_fderiv'} | { + 'TorusCriticalRidge.' + n for n in ( + 'restrictCovector', 'ridgeAddition', 'negativePartialGradient', 'negativeHessianBlock', + 'negativeHessianBlock_apply', 'negativeHessianBlock_isInvertible', + 'negativePartialGradient_contDiff', 'negativePartialGradient_hasFDerivAt', + 'exists_negative_partial_gradient_ridge') +} +PINS = { + 'plausible': '118aa17ee84656b8bd727fef7c458ee8c833385c', + 'LeanSearchClient': 'ddf04cf3949fa556442341e87d47f9f6e6074707', + 'importGraph': 'e928b72544873815af278d38681b31c0293588e3', + 'proofwidgets': '106ff4fafc74ef4ac99d81dbf3ab399118f497a5', + 'aesop': '355695d523e41d0554926416cba2a2b3544fbbc9', + 'Qq': '6a489d9af5d0c47e5b259e2e8bcdfc1811b5a259', + 'batteries': 'f2effa3d803fda822b1f97b806c47cf2adfbcbc2', + 'Cli': 'e92c9f15fdfacc8536f31cfb3b7ad26c3c8cd204', + 'mathlib': 'd13f23b723b8a846827a245b89c10fc7d3f11612', +} +SUPPORT_PATHS = {WORKFLOW, PREFIX + 'c299_hosted_verify.py', + PREFIX + 'test_c299_hosted_verify.py'} +REVIEW_VERDICTS = { + 'source_review': 'ACCEPT_SCOPED_SOURCE', + 'engineering_review': 'ACCEPT_SCOPED_ENGINEERING_SOURCE', + 'negative_qualification_review': 'ACCEPT_SCOPED_NEGATIVE_DIAGNOSTICS', + 'hosted_artifact_review': 'ACCEPT_SCOPED_FORMAL_HOSTED', + 'master_source_review': 'PASS_SCOPED_MASTER_SOURCE_REVIEW', +} +ENVIRONMENT_POLICY = ( + 'Remove inherited LEAN*, LAKE*, LD_* and DYLD_* overrides, except the ' + 'Lake-provided LEAN_PATH; prepend the fresh local object directory to that ' + 'path and set LEAN_NUM_THREADS=2. Retain declared PATH for launcher lookup. ' + 'Other inherited variables remain available but are not recorded. Record ' + 'only selected non-secret path/thread values and removed variable names.') + + +def now(): + return datetime.now(timezone.utc).isoformat() + + +def sha(raw): + return hashlib.sha256(raw).hexdigest() + + +def identity(raw): + return {'bytes': len(raw), 'sha256': sha(raw)} + + +def git_blob(raw): + return hashlib.sha1(b'blob ' + str(len(raw)).encode() + b'\0' + raw).hexdigest() + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +def json_bytes(raw): + def unique(rows): + result = {} + for key, value in rows: + need(key not in result, 'duplicate JSON key: ' + key) + result[key] = value + return result + return json.loads(raw.decode('utf8'), object_pairs_hook=unique, + parse_constant=lambda s: (_ for _ in ()).throw(ValueError('nonfinite JSON: ' + s))) + + +def member_path(name): + need(isinstance(name, str) and name and not name.startswith('/') + and '\\' not in name and ':' not in name + and all(ord(c) >= 32 and ord(c) != 127 for c in name), 'unsafe relative path') + need(all(p not in ('', '.', '..') for p in name.split('/')), 'unsafe relative component') + return Path(*PurePosixPath(name).parts) + + +def measured_audit(text, modules=MODULES[:-1], required=REQUIRED): + """Independent whole-record regex parser, including multiline axiom arrays.""" + token = re.compile( + r'(?m)^CRITICAL_RIDGE_AUDIT_MODULE (?P\S+) COUNT (?P\d+)\s*$' + r'|^CRITICAL_RIDGE_AUDIT_DECL (?P\S+) AXIOMS \[(?P[^\[\]]{0,4096})\][ \t]*$' + r'|^CRITICAL_RIDGE_AUDIT_STANDARD_ONLY_PASS COUNT (?P\d+)\s*$') + counts, names, all_names, current, total = {}, {}, set(), None, None + consumed = 0 + for match in token.finditer(text): + consumed += 1 + if match['module'] is not None: + current = match['module'] + need(current not in counts and current in modules and total is None, + 'duplicate, unexpected or late audit module') + count = int(match['count']) + need(count > 0, 'empty audit module') + counts[current], names[current] = count, [] + elif match['name'] is not None: + name = match['name'] + need(current in counts and total is None and name not in all_names, + 'duplicate or misplaced audit declaration') + axs = {s.strip() for s in match['axioms'].split(',') if s.strip()} + need(axs <= AXIOMS, 'forbidden transitive axiom') + names[current].append(name) + all_names.add(name) + else: + need(total is None, 'duplicate audit completion marker') + total = int(match['total']) + marker_count = len(re.findall( + r'CRITICAL_RIDGE_AUDIT_(?:MODULE|DECL|STANDARD_ONLY_PASS)\b', text)) + all_markers = re.findall(r'CRITICAL_RIDGE_AUDIT_([^\s]+)', text) + need(set(all_markers) <= {'MODULE', 'DECL', 'STANDARD_ONLY_PASS', 'PROGRESS'}, + 'unknown audit marker') + need(consumed == marker_count, 'malformed, interrupted or truncated audit record') + need(tuple(counts) == tuple(modules) and all(len(names[m]) == counts[m] for m in counts) + and total == len(all_names) == sum(counts.values()) and set(required) <= all_names, + 'incomplete census or missing required declaration') + return {'module_counts': counts, 'declaration_count': total, + 'module_declarations': names, 'required_targets': sorted(required), + 'allowed_axioms': sorted(AXIOMS)} + + +def canonical_digest(value): + return sha(json.dumps(value, sort_keys=True, separators=(',', ':')).encode()) + + +def validate_expectations(expected): + required = {'pr', 'head', 'base', 'tree', 'tested_commit', 'tested_tree', + 'run_id', 'run_attempt', 'source_manifest_sha256', 'support_sha256', + 'module_counts', 'required_ci_names', 'negative_qualification'} + need(isinstance(expected, dict) and set(expected) == required, 'incomplete final expectations') + for key in ('pr', 'run_id', 'run_attempt'): + need(type(expected[key]) is int and expected[key] > 0, 'invalid final identity: ' + key) + for key in ('head', 'base', 'tree', 'tested_commit', 'tested_tree'): + need(isinstance(expected[key], str) and re.fullmatch('[0-9a-f]{40}', expected[key]), + 'invalid frozen Git identity: ' + key) + need(re.fullmatch('[0-9a-f]{64}', expected['source_manifest_sha256']) is not None, + 'invalid source manifest hash') + support = expected['support_sha256'] + need(set(support) == SUPPORT_PATHS and all(re.fullmatch('[0-9a-f]{64}', x) for x in support.values()), + 'incomplete final support identities') + counts = expected['module_counts'] + need(set(counts) == set(MODULES[:-1]) and all(type(n) is int and n > 0 for n in counts.values()), + 'missing actual module census') + roles = expected['required_ci_names'] + need(isinstance(roles, list) and len(roles) == len(set(roles)) + and all(isinstance(x, str) and x for x in roles) + and {'downstream-replay', 'formal / formal-evidence', 'math-downstream-gates'} <= set(roles), + 'incomplete applicable CI inventory') + qualification = expected['negative_qualification'] + need(set(qualification) == {'status', 'diagnostics'} and qualification['status'] == 'QUALIFIED' + and set(qualification['diagnostics']) == set(NEGATIVES), 'actual negative qualification pending') + for record in qualification['diagnostics'].values(): + need(set(record) == {'stdout_sha256', 'stderr_sha256', 'expression', 'actual', 'expected'} + and all(isinstance(x, str) and x for x in record.values()) + and all(re.fullmatch('[0-9a-f]{64}', record[k]) for k in ('stdout_sha256', 'stderr_sha256')), + 'incomplete actual negative diagnostic record') + + +def qualified_negative(name, code, stdout, stderr, qualified): + """Independent section parser and complete same-ridge missing-premise check. + + The exact observed sections/hashes are frozen by the owner after diagnostic + review. They cannot replace the semantic shape checks below. Presentation + changes require a reviewed source change, not an envelope-only bypass. + """ + need(name in NEGATIVES, 'unexpected negative control') + need(sha(stdout) == qualified['stdout_sha256'] and sha(stderr) == qualified['stderr_sha256'], + 'negative streams differ from reviewed actual diagnostics') + text = (stdout + b'\n' + stderr).decode('utf8').strip() + flat = ' '.join(text.split()) + forbidden = ('unknown identifier', 'unknown module', 'file not found', 'no such file', + 'memory_exception', 'out of memory', 'unexpected token', 'unsolved goals', + 'maximum recursion', 'maximum heartbeats', 'failed to', 'panic', 'sorry') + need(code == 1 and text.count('error:') == 1 and all(w not in flat.lower() for w in forbidden), + 'unrelated negative-control failure') + header, separator, remainder = text.partition('\n') + need(separator and re.fullmatch(r'[^\n]*' + re.escape(name) + r'\.lean:\d+:\d+: error: Type mismatch', header), + 'negative diagnostic names a different source or error') + pieces = re.split(r'\nhas type\s*\n|\nbut is expected to have type\s*\n', remainder) + need(len(pieces) == 3, 'negative diagnostic must have one actual and expected type section') + expression, actual, expected_type = (' '.join(piece.split()) for piece in pieces) + need(all(value == qualified[key] for key, value in + (('expression', expression), ('actual', actual), ('expected', expected_type))), + 'actual diagnostic sections differ from reviewed sections') + target = 'TorusCriticalRidge.exists_negative_partial_gradient_ridge' + if name == 'WithoutCriticality': + need(expression == 'fun hcritical => ' + target + ' f p V hsmooth hcritical hneg', + 'criticality omission is not the actual theorem lambda') + premise = 'IsCriticalPoint d f p' + else: + need(expression == target + ' f p V hsmooth hcritical', + 'negative-definiteness omission is not the actual theorem application') + premise = '(∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0)' + need(actual == premise + ' → ' + expected_type, 'wrong missing premise or actual function conclusion') + # Deliberately fixed source semantics; actual display variants need review. + conclusion = (r'∃ r, r 0 = 0 ∧ ContDiffAt ℝ 2 r 0 ∧ ' + r'\(∀ᶠ w in 𝓝 0, ∀ \(z : ↥V\), \(fderiv ℝ f \(p \+ w \+ ↑\(r w\)\)\) ↑z = 0\) ∧ ' + r'∀ \(w : E d\) \(z : ↥V\), hessian d f p \(w \+ ↑\(\(fderiv ℝ r 0\) w\)\) ↑z = 0') + need(re.fullmatch(conclusion, expected_type) is not None, 'wrong four-part same-ridge conclusion') + + +def environment_binding(report, record, object_directory): + contract = report.get('environment_contract') + need(isinstance(contract, dict) and set(contract) == { + 'policy', 'retained_lake_lean_path', 'removed_variable_names', 'selected_environment', 'sha256'}, + 'missing exact environment contract') + body = {k: val for k, val in contract.items() if k != 'sha256'} + need(contract['policy'] == ENVIRONMENT_POLICY and contract['sha256'] == canonical_digest(body), + 'environment contract policy or digest mismatch') + selected = contract['selected_environment'] + need(set(selected) == {'PATH', 'LEAN_PATH', 'LEAN_NUM_THREADS'} + and all(isinstance(x, str) and x for x in selected.values()), 'incomplete selected environment') + inherited = contract['retained_lake_lean_path'] + need(isinstance(inherited, str) and PurePosixPath(object_directory).is_absolute() + and '..' not in PurePosixPath(object_directory).parts + and selected['LEAN_PATH'] == object_directory + (':' + inherited if inherited else '') + and selected['LEAN_NUM_THREADS'] == '2', 'fresh-object precedence or thread count mismatch') + removed = contract['removed_variable_names'] + need(isinstance(removed, list) and all(isinstance(k, str) for k in removed) + and removed == sorted(set(removed)) and all(k.startswith(('LEAN', 'LAKE', 'LD_', 'DYLD_')) + and k != 'LEAN_PATH' for k in removed), 'invalid removed-variable name record') + measured = {'selected_environment': record.get('selected_environment'), + 'unexpected_override_names': record.get('unexpected_override_names')} + need(record.get('selected_environment') == selected + and record.get('environment_contract_sha256') == contract['sha256'] + and record.get('unexpected_override_names') == [] + and record.get('environment_validation_error') is None + and record.get('environment_sha256') == canonical_digest(measured), + 'phase environment differs from bound contract') + + +def runtime_binding(report, prefix_stdout): + prefix = PurePosixPath(prefix_stdout.decode('utf8').strip()) + need(prefix.is_absolute() and '..' not in prefix.parts, 'invalid printed runtime prefix') + for name in ('lean', 'leanchecker'): + need(report['runtimes'][name]['path'] == str(prefix / 'bin' / name), + 'measured runtime path does not derive from printed prefix') + launcher = report['lean_launcher'] + need(type(launcher['bytes']) is int and launcher['bytes'] > 0 + and re.fullmatch('[0-9a-f]{64}', launcher['sha256']) is not None + and Path(launcher['path']).is_absolute(), 'invalid executor-measured launcher identity') + if launcher['path'] == report['runtimes']['lean']['path']: + need(launcher == report['runtimes']['lean'], 'same-path launcher/runtime records differ') + + +def final_review_records(acceptance): + reviews = acceptance['reviews'] + need(set(reviews) == set(REVIEW_VERDICTS), 'missing role-specific final review') + records = [] + for role, verdict in REVIEW_VERDICTS.items(): + review = reviews[role] + need(set(review) == {'path', 'bytes', 'sha256', 'verdict'} and review['verdict'] == verdict, + 'nonpassing or incomplete final review: ' + role) + records.append(review) + need(len({r['path'] for r in records}) == len(records), 'final review paths are not distinct') + return records + + +class Master: + def __init__(self, root=ROOT): + self.root = Path(root).absolute() + self.checks, self.observed = [], {} + + def check(self, label, condition): + self.checks.append({'name': label, 'pass': bool(condition)}) + need(condition, label) + + def path(self, value): + p = Path(value) + if not p.is_absolute(): + p = self.root / member_path(str(value)) + self.check('input contained in native continuation: ' + str(value), + p.is_relative_to(self.root) and '..' not in p.parts) + return p + + def read(self, value): + p = self.path(value) + self.check('regular nonsymlink input: ' + str(p), + p.is_file() and all(not q.is_symlink() for q in (p, *p.parents))) + raw = p.read_bytes() + spec = identity(raw) + self.check('stable reread: ' + str(p), p not in self.observed or self.observed[p] == spec) + self.observed[p] = spec + return raw + + def doc(self, value): + return json_bytes(self.read(value)) + + def bound(self, spec): + self.check('complete bound-input identity', set(spec) == {'path', 'bytes', 'sha256'} + and type(spec['bytes']) is int and spec['bytes'] >= 0 + and re.fullmatch('[0-9a-f]{64}', spec['sha256']) is not None) + raw = self.read(spec['path']) + self.check('bound input bytes: ' + spec['path'], + identity(raw) == {k: spec[k] for k in ('bytes', 'sha256')}) + return raw + + def verify_publication(self, envelope): + gh = json_bytes(self.bound(envelope['github_readback'])) + self.check('exact public PR head and tree', gh['repository'] == REPOSITORY + and gh['pr'] == envelope['expected']['pr'] and re.fullmatch('[0-9a-f]{40}', gh['head']) + and re.fullmatch('[0-9a-f]{40}', gh['tree']) + and gh['tree_untruncated'] is True and gh['native_remote_byte_equality'] is True + and gh['pr_body_exact_readback'] is True + and all(gh[k] == envelope['expected'][k] for k in ('pr', 'head', 'base', 'tree'))) + files = gh['files'] + self.check('complete final public byte readbacks', len(files) == gh['files_count'] + and len({r['path'] for r in files}) == len(files) and len(files) > 0) + published = {} + inputs = json_bytes(self.bound(envelope['publication_inputs'])) + native_inputs = {r['path']: r for r in inputs} + self.check('publication input path set', len(native_inputs) == len(inputs) == len(files) + and set(native_inputs) == {r['path'] for r in files}) + for row in files: + rel = row['path'] + member_path(rel) + self.check('bounded public path: ' + rel, rel == WORKFLOW or rel.startswith(PREFIX)) + raw, remote = self.read(row['local']), self.read(row['remote_file']) + measured, blob = identity(raw), git_blob(raw) + self.check('native/remote/Git-tree bytes: ' + rel, + raw == remote and row['raw_byte_match'] is True + and measured == {'bytes': row['bytes'], 'sha256': row['sha256']} + and row['remote_sha256'] == measured['sha256'] + and row['git_blob'] == row['tree_blob'] == blob) + original = native_inputs[rel] + self.check('original publication binding: ' + rel, row['local'] == original['local'] + and measured == {k: original[k] for k in ('bytes', 'sha256')}) + if 'reused_same_git_blob' in row: + self.check('honest raw-byte readback ref: ' + rel, + re.fullmatch('[0-9a-f]{40}', row['byte_read_ref']) is not None + and (row['byte_read_ref'] != gh['head'] if row['reused_same_git_blob'] + else row['byte_read_ref'] == gh['head'])) + published[rel] = raw + self.check('published byte total', sum(len(b) for b in published.values()) == gh['bytes']) + native_packet = self.path(envelope['publication_directory']) + actual_packet = {PREFIX + str(p.relative_to(native_packet)) + for p in native_packet.rglob('*') if p.is_file()} + self.check('complete native publication tree', actual_packet | {WORKFLOW} == set(published)) + for rel in actual_packet: + self.check('final composite/published bytes: ' + rel, + self.read(native_packet / member_path(rel[len(PREFIX):])) == published[rel]) + commit = json_bytes(self.bound(envelope['github_commit'])) + ref = json_bytes(self.bound(envelope['github_ref'])) + pr = json_bytes(self.bound(envelope['github_pr'])) + tree = json_bytes(self.bound(envelope['github_tree'])) + self.check('native current Git tree identity', tree['sha'] == gh['tree'] + and tree.get('truncated') is False) + tree_rows = {r['path']: r for r in tree['tree']} + self.check('unique native tree paths', len(tree_rows) == len(tree['tree'])) + used_paths = set(published) | {'formal/lean-toolchain', 'formal/lakefile.toml', 'formal/lake-manifest.json'} + self.check('native tree covers every used delivery/config blob', used_paths <= set(tree_rows)) + if 'scope_note' in tree: + self.check('explicit complete used-path tree projection', set(tree_rows) == used_paths + and isinstance(tree['scope_note'], str) and tree['scope_note'].strip() + and type(tree['native_entry_count']) is int + and tree['native_entry_count'] >= len(tree_rows)) + for row in files: + self.check('native current tree blob: ' + row['path'], row['path'] in tree_rows + and tree_rows[row['path']]['type'] == 'blob' + and tree_rows[row['path']]['sha'] == row['tree_blob']) + self.check('native GitHub commit/ref/PR evidence', + commit['sha'] == ref['object']['sha'] == pr['head']['sha'] == gh['head'] + and commit['tree']['sha'] == gh['tree'] and pr['number'] == envelope['expected']['pr'] + and pr['base']['sha'] == gh['base'] + and pr['head']['repo']['full_name'] == REPOSITORY) + return gh, published, tree_rows + + def verify_sources_reviews(self, envelope, published): + expected = envelope['expected'] + raw = self.bound(envelope['source_manifest']) + self.check('frozen source manifest identity', sha(raw) == expected['source_manifest_sha256'] + and raw == published[PREFIX + 'HOSTED_SOURCE_MANIFEST.json']) + manifest = json_bytes(raw) + self.check('exact five modules and two controls', manifest['schema_version'] == 1 + and manifest['scientific_effect'] == 'NONE' and set(manifest['files']) == SOURCE_PATHS) + for rel, spec in manifest['files'].items(): + self.check('frozen published Lean identity: ' + rel, identity(published[PREFIX + rel]) == spec) + origins = manifest['source_origins'] + self.check('complete input source origins', set(origins) == set(MODULES[:3])) + upstream = json_bytes(self.bound(envelope['upstream_readback'])) + self.check('exact upstream byte-readback set', isinstance(upstream, list) + and len(upstream) == 3 and {r['module'] for r in upstream} == set(MODULES[:3])) + for row in upstream: + origin = origins[row['module']] + raw_origin = self.bound(row['raw_file']) + self.check('source-bound remote upstream bytes: ' + row['module'], + origin == {'commit': row['commit'], 'path': row['path']} + and re.fullmatch('[0-9a-f]{40}', row['commit']) is not None + and raw_origin == published[PREFIX + 'project/' + row['module'] + '.lean'] + and git_blob(raw_origin) == row['git_blob'] and row['raw_byte_match'] is True) + member_path(row['path']) + for rel, digest in expected['support_sha256'].items(): + self.check('reviewed final hosted support: ' + rel, sha(published[rel]) == digest) + acceptance = json_bytes(self.bound(envelope['root_acceptance'])) + self.check('scoped exact formal evidence acceptance', + acceptance['verdict'] == 'ACCEPT_SCOPED_FORMAL_EVIDENCE' + and acceptance['expected'] == expected) + self.check('actual nonauthor identity and exposure', + all(isinstance(acceptance.get(k), str) and acceptance[k].strip() + for k in ('author', 'reviewer', 'root', 'exposure')) + and acceptance['author'] != acceptance['reviewer']) + self.check('no manufactured human, independent or scientific credit', + acceptance['human_review_credit'] == acceptance['organizational_independence_credit'] == 0 + and acceptance['scientific_effect'] == 'NONE') + for review in final_review_records(acceptance): + self.check('nonempty bound final review: ' + review['path'], + bool(self.bound({k: review[k] for k in ('path', 'bytes', 'sha256')}))) + # Optional public-safe projections are separately bound, never mistaken for originals. + for projection in envelope.get('review_projections', []): + original = self.bound(projection['original']) + public = published[projection['public_path']] + self.check('explicit review projection identity: ' + projection['public_path'], + identity(original) == {k: projection['original'][k] for k in ('bytes', 'sha256')} + and identity(public) == projection['public_identity']) + return manifest + + def verify_artifact(self, envelope): + archive = self.bound(envelope['hosted_artifact_zip']) + directory = self.path(envelope['hosted_artifact_directory']) + prefix = envelope.get('hosted_member_prefix', '') + if prefix: + member_path(prefix.rstrip('/')) + self.check('explicit ZIP member prefix', prefix.endswith('/')) + self.check('bounded hosted archive', len(archive) <= 128 * 1024 * 1024) + members = {} + with zipfile.ZipFile(io.BytesIO(archive)) as z: + infos = z.infolist() + self.check('bounded unique hosted ZIP records', len(infos) <= 512 + and len({i.filename for i in infos}) == len(infos)) + self.check('bounded decompressed hosted bytes', sum(i.file_size for i in infos) <= 128 * 1024 * 1024) + for info in infos: + self.check('hosted ZIP member prefix', info.filename.startswith(prefix)) + rel = info.filename[len(prefix):] + if not rel and info.is_dir(): + continue + member_path(rel.rstrip('/') if info.is_dir() else rel) + mode = info.external_attr >> 16 + self.check('hosted ZIP regular file or directory: ' + rel, + not stat.S_ISLNK(mode) and not (info.flag_bits & 1) + and (stat.S_IFMT(mode) in (0, stat.S_IFREG, stat.S_IFDIR))) + if info.is_dir(): + continue + self.check('bounded hosted member: ' + rel, info.file_size <= 32 * 1024 * 1024) + raw = z.read(info) + actual = self.read(directory / member_path(rel)) + self.check('downloaded ZIP/extracted bytes: ' + rel, raw == actual) + members[rel] = raw + self.check('exact extracted hosted file set', set(members) == { + str(p.relative_to(directory)) for p in directory.rglob('*') if p.is_file()}) + return archive, members + + def verify_ci(self, envelope, gh, archive, report): + ci = json_bytes(self.bound(envelope['hosted_ci'])) + context = report['context'] + self.check('scoped hosted final success', report['status'] == 'PASS_HOSTED_C299_EXACT_TARGETS' + and report['scientific_effect'] == 'NONE' and context['human_review_credit'] == 0 + and context['executor'] == 'GitHub-hosted runner executing C299 verification code' + and report.get('negative_predicates_qualified') is True + and report.get('negative_classification_errors') == []) + self.check('native hosted run identity', ci['repository'] == gh['repository'] == context['github_repository'] + and ci['head'] == gh['head'] == context['pull_request']['head_sha'] + and ci['tested_commit'] == context['tested_commit'] == context['github_sha'] + and str(ci['run_id']) == str(context['github_run_id']) + and str(ci['run_attempt']) == str(context['github_run_attempt']) + and context['pull_request']['number'] == envelope['expected']['pr'] + and context['github_event_name'] == 'pull_request' + and all(str(ci[k]) == str(envelope['expected'][k]) + for k in ('run_id', 'run_attempt', 'tested_commit'))) + merge = json_bytes(self.bound(envelope['tested_merge_commit'])) + self.check('native tested merge commit/tree/parents', merge['sha'] == ci['tested_commit'] + and merge['tree']['sha'] == context['tested_tree'] == envelope['expected']['tested_tree'] + and len(merge['parents']) == 2 + and {p['sha'] for p in merge['parents']} == {gh['base'], gh['head']} + and context['pull_request']['base_sha'] == gh['base']) + self.check('honest shallow checkout parent observation', context['tested_parents'] == [] + or set(context['tested_parents']) == {gh['base'], gh['head']}) + run, job, artifact = ci['run'], ci['job'], ci['artifact'] + self.check('native successful workflow metadata', str(run['id']) == str(ci['run_id']) + and str(run['run_attempt']) == str(ci['run_attempt']) and run['head_sha'] == gh['head'] + and run['status'] == 'completed' and run['conclusion'] == 'success' + and run['path'] == WORKFLOW) + self.check('native successful scoped job', str(job['run_id']) == str(ci['run_id']) + and job['name'] == 'c299-hosted-formal' and job['status'] == 'completed' + and job['conclusion'] == 'success' and context['github_job'] == 'c299-hosted-formal') + self.check('artifact belongs to exact run and attempt', artifact['name'] == + f"c299-hosted-{ci['run_id']}-{ci['run_attempt']}" + and artifact['expired'] is False and str(artifact['workflow_run']['id']) == str(ci['run_id']) + and artifact['workflow_run']['head_sha'] == gh['head']) + download = ci['download'] + self.check('actual artifact download identity', str(download['artifact_id']) == str(artifact['id']) + and {'bytes': download['bytes'], 'sha256': download['sha256']} == identity(archive) + and artifact['size_in_bytes'] == len(archive)) + if artifact.get('digest'): + self.check('native artifact SHA-256 digest', artifact['digest'] == 'sha256:' + sha(archive)) + applicable = ci['applicable_jobs'] + self.check('applicable hosted checks all succeeded', isinstance(applicable, list) and len(applicable) >= 3 + and len({j['id'] for j in applicable}) == len(applicable) + and all(j['head_sha'] == gh['head'] and j['status'] == 'completed' + and j['conclusion'] == 'success' and j.get('run_id') and j.get('run_attempt') + for j in applicable) + and {'downstream-replay', 'formal / formal-evidence', 'math-downstream-gates'} + <= {j['name'] for j in applicable} + and set(envelope['expected']['required_ci_names']) <= {j['name'] for j in applicable}) + steps = job['steps'] + self.check('actual scoped job steps completed successfully', isinstance(steps, list) and bool(steps) + and len({step['number'] for step in steps}) == len(steps) + and all(step['status'] == 'completed' and step['conclusion'] == 'success' for step in steps)) + log = self.bound(ci['job_log']) + self.check('scoped complete job log contains actual checkout', ci['tested_commit'].encode() in log) + for spec in ci.get('additional_native_evidence', []): + self.bound(spec) + return ci + + def verify_hosted_execution(self, envelope, members, manifest, published, tree_rows): + report = json_bytes(members['RESULT.json']) + source = report['source_identity'] + self.check('hosted exact source identity before/after', source == report['source_identity_after'] + and source['manifest'] == {k: envelope['source_manifest'][k] for k in ('bytes', 'sha256')} + and source['files'] == manifest['files'] and source['source_origins'] == manifest['source_origins'] + and source['dependency_pins'] == PINS + and report['packages_before'] == report['packages_after'] == PINS) + self.check('source snapshot manifest', members['HOSTED_SOURCE_MANIFEST.json'] == self.bound(envelope['source_manifest'])) + for rel in SOURCE_PATHS: + self.check('hosted/native reviewed source snapshot: ' + rel, + members['source-snapshot/' + rel] == published[PREFIX + rel]) + self.check('exact three hosted support inputs', set(source['support_files']) == SUPPORT_PATHS) + for rel in SUPPORT_PATHS: + self.check('hosted/native support snapshot: ' + rel, + members['source-snapshot/repository/' + rel] == published[rel] + and source['support_files'][rel] == identity(published[rel])) + self.check('hosted exact formal configuration records', set(source['formal_config']) == { + 'formal/lean-toolchain', 'formal/lakefile.toml', 'formal/lake-manifest.json'} + and all(type(s['bytes']) is int and s['bytes'] > 0 and re.fullmatch('[0-9a-f]{64}', s['sha256']) + for s in source['formal_config'].values())) + configs = json_bytes(self.bound(envelope['formal_config_readback'])) + self.check('complete native formal configuration readback', + len(configs) == 3 and {r['path'] for r in configs} == set(source['formal_config'])) + config_bytes = {} + for row in configs: + raw = self.read(row['native_file']) + config_bytes[row['path']] = raw + self.check('hosted/native/current-tree formal config: ' + row['path'], + identity(raw) == source['formal_config'][row['path']] + == {'bytes': row['bytes'], 'sha256': row['sha256']} + and git_blob(raw) == row['git_blob'] == tree_rows[row['path']]['sha']) + self.check('actual formal dependency lock and toolchain', + config_bytes['formal/lean-toolchain'].decode().strip() == 'leanprover/lean4:v4.34.1' + and {row['name']: row['rev'] for row in json_bytes(config_bytes['formal/lake-manifest.json'])['packages']} == PINS + and ('rev = "' + PINS['mathlib'] + '"') in config_bytes['formal/lakefile.toml'].decode()) + runtimes = report['runtimes'] + self.check('measured Lean and kernel binary records', set(runtimes) == {'lean', 'leanchecker'} + and all(type(v['bytes']) is int and v['bytes'] > 0 + and re.fullmatch('[0-9a-f]{64}', v['sha256']) + and Path(v['path']).is_absolute() and Path(v['path']).name == k + for k, v in runtimes.items())) + phases = report['phase_results'] + phase_names = ['runtime-print-prefix', 'runtime-version'] + ['build-' + m for m in MODULES] + phase_names += ['kernel-' + m for m in MODULES[1:]] + ['negative-' + m for m in NEGATIVES] + self.check('exact 13 unique phases in order', [r['name'] for r in phases] == phase_names + and len({r['name'] for r in phases}) == 13) + first_source = PurePosixPath(phases[2]['command'][-1]) + self.check('first fresh build source path', first_source.is_absolute() + and str(first_source).endswith('/' + PREFIX + 'project/Lifetime.lean') + and '..' not in first_source.parts) + checkout = first_source.parents[3] + object_dir = str(checkout / '.lake/c299-hosted-evidence/objects') + project_dir = str(checkout / PREFIX / 'project') + negative_dir = str(checkout / PREFIX / 'negative-project') + known, audit, generated = {}, None, set() + lean, kernel = runtimes['lean']['path'], runtimes['leanchecker']['path'] + for record in phases: + name = record['name'] + environment_binding(report, record, object_dir) + self.check(name + ': exact selected execution environment', True) + self.check(name + ': aggregate/per-phase receipt equality', + json_bytes(members[name + '.receipt.json']) == record) + self.check(name + ': completed expected process', record['status'] == 'PASS' + and record['timed_out'] is False and record['spawn_error'] is None + and record['object_validation_error'] is None + and type(record['duration_seconds']) in (int, float) + and record['duration_seconds'] >= 0) + streams = {} + for stream in ('stdout', 'stderr'): + raw = members[name + '.' + stream] + self.check(name + ': exact ' + stream, identity(raw) == { + 'bytes': record[stream + '_bytes'], 'sha256': record[stream + '_sha256']}) + streams[stream] = raw + args = record['command'] + if name.startswith('runtime-'): + self.check(name + ': bounded runtime probe', record['exit_code'] == 0 + and record['timeout_seconds'] == 30 and record['objects_before'] is None + and record['objects_after'] is None and record['cwd'] == str(checkout / 'formal')) + if name == 'runtime-version': + self.check(name + ': actual pinned version', args == [lean, '--version'] + and 'version 4.34.1' in streams['stdout'].decode() + and streams['stderr'] == b'') + else: + self.check(name + ': measured launcher prefix', args == [report['lean_launcher']['path'], '--print-prefix'] + and streams['stderr'] == b'') + runtime_binding(report, streams['stdout']) + self.check(name + ': runtime paths and launcher record bound to prefix', True) + continue + self.check(name + ': exact imported objects and resource cap', record['objects_before'] == known + and record['timeout_seconds'] == 900) + if name.startswith('build-'): + module = name[6:] + want_start = [lean, '-j2', '-M14000'] + ([] if module == 'Lifetime' else ['-DwarningAsError=true']) + self.check(name + ': exact build command', args[:len(want_start)] == want_start + and len(args) == len(want_start) + 3 and args[len(want_start)] == '-o' + and args[-1].endswith('/' + PREFIX + 'project/' + module + '.lean') + and args[-2] == object_dir + '/' + module + '.olean' + and args[-1] == project_dir + '/' + module + '.lean' + and record['cwd'] == project_dir and record['exit_code'] == 0) + after = record['objects_after'] + self.check(name + ': unchanged imported objects', all(after.get(k) == v for k, v in known.items())) + added = set(after) - set(known) + allowed = {module + s for s in ('.olean', '.olean.private', '.olean.server', '.ilean', '.ir')} + self.check(name + ': only own newly built outputs', module + '.olean' in added + and added <= allowed and not generated & added) + generated |= added + known = after + self.check(name + ': produced object identity', record['object'] == known[module + '.olean']) + if module == 'CriticalRidgeAxiomAudit': + audit = measured_audit((streams['stdout'] + b'\n' + streams['stderr']).decode()) + else: + self.check(name + ': clean non-audit build streams', not streams['stdout'] and not streams['stderr']) + elif name.startswith('kernel-'): + self.check(name + ': standard named-module kernel', args == [kernel, '-v', name[7:]] + and record['exit_code'] == 0 and record['objects_after'] == known + and record['cwd'] == project_dir) + else: + fixture = name[9:] + self.check(name + ': actual negative command', args[:3] == [lean, '-j2', '-M14000'] + and len(args) == 4 and args[-1].endswith('/' + PREFIX + 'negative-project/' + fixture + '.lean') + and record['objects_after'] == known + and args[-1] == negative_dir + '/' + fixture + '.lean' and record['cwd'] == negative_dir + and record.get('intended_missing_premise_rejection') is True + and record.get('diagnostic_qualification_pending') is False + and record.get('candidate_parser_match') is True + and record.get('negative_classification_error') is None) + qualified_negative(fixture, record['exit_code'], streams['stdout'], streams['stderr'], + envelope['expected']['negative_qualification']['diagnostics'][fixture]) + self.check(name + ': independently checked intended rejection', True) + self.check('complete independently measured module-origin census', audit is not None + and report['audit']['module_counts'] == audit['module_counts'] + and report['audit']['declaration_count'] == audit['declaration_count'] + and report['audit']['module_declarations'] == audit['module_declarations'] + and set(report['audit']['required_targets']) == REQUIRED + and set(report['audit']['allowed_axioms']) == AXIOMS + and audit['module_counts'] == envelope['expected']['module_counts']) + self.check('stable final hosted object inventory', report['objects_after_builds'] == report['objects'] == known + and {m + '.olean' for m in MODULES} <= set(known) + and {n[8:] for n in members if n.startswith('objects/')} == set(known)) + for name, spec in known.items(): + self.check('downloaded exact object: ' + name, identity(members['objects/' + name]) == spec) + expected_members = {'RESULT.json', 'HOSTED_SOURCE_MANIFEST.json'} + expected_members |= {'source-snapshot/' + r for r in SOURCE_PATHS} + expected_members |= {'source-snapshot/repository/' + r for r in SUPPORT_PATHS} + expected_members |= {'objects/' + n for n in known} + expected_members |= {n + ext for n in phase_names for ext in ('.stdout', '.stderr', '.receipt.json')} + self.check('complete exact hosted evidence member set', set(members) == expected_members) + return report, audit + + def verify_custody(self, envelope): + custody = envelope['custody'] + external = {self.root / name for name in + ('FINAL_MASTER_INPUTS.json', 'FINAL_MASTER_START.json', 'FINAL_MASTER.json', + 'FINAL_MASTER.stdout', 'FINAL_MASTER.stderr')} + external |= {self.path(custody[k]['path']) for k in + ('archive', 'remote_archive', 'receipt', 'canonical_verification')} + required = set(self.observed) - external + bindings = custody['bindings'] + self.check('explicit native-to-packet evidence bindings', isinstance(bindings, list) and bool(bindings)) + mapped_sources, mapped_payloads = set(), {} + for row in bindings: + self.check('packet binding fields', set(row) == {'source_path', 'packet_path'}) + source = self.path(row['source_path']) + payload = str(member_path(row['packet_path'])) + self.check('unique acyclic packet binding: ' + payload, + source not in mapped_sources and payload not in mapped_payloads + and source not in external and not source.is_relative_to(self.root / 'PACKET')) + native = self.read(source) + packet = self.read(Path('PACKET') / member_path(payload)) + self.check('validated native evidence/packet bytes: ' + payload, native == packet) + mapped_sources.add(source) + mapped_payloads[payload] = native + self.check('packet contains every actual accepted input', required <= mapped_sources) + archive = self.bound(custody['archive']) + remote = self.bound(custody['remote_archive']) + receipt = json_bytes(self.bound(custody['receipt'])) + canonical = json_bytes(self.bound(custody['canonical_verification'])) + self.check('root-owned exact private archive custody', archive == remote + and receipt['owner_only'] is True and receipt['actual_raw_download_equal'] is True + and receipt['bytes'] == len(archive) and receipt['sha256'] == sha(archive)) + self.check('root-performed canonical archive verification', canonical['ok'] is True + and canonical['archive_bytes'] == len(archive) and canonical['archive_sha256'] == sha(archive) + and canonical['scientific_effect'] == 'NONE' and canonical['files'] > 0) + # The root already executed the canonical verifier. Independently bind every + # payload member to the native PACKET without invoking or reimplementing it. + with zipfile.ZipFile(io.BytesIO(archive)) as z: + manifest_raw = z.read('DELIVERY_MANIFEST.json') + self.check('actual canonical manifest digest', + canonical['manifest_sha256'] == sha(manifest_raw)) + document = json_bytes(manifest_raw) + files = document['files'] + names = {r['filename'] for r in files} + excluded_names = {p.name for p in external} + self.check('archive excludes current cyclic control/output files', + all(Path(name).name not in excluded_names for name in names)) + self.check('canonical count and required accepted payload bindings', + canonical['files'] == len(files) and set(mapped_payloads) <= names) + for name, native in mapped_payloads.items(): + self.check('validated source/packet/archive triple equality: ' + name, z.read(name) == native) + self.check('unique canonical archive payload members', len({r['filename'] for r in files}) == len(files) + and len(z.namelist()) == len(set(z.namelist())) + and set(z.namelist()) == {r['filename'] for r in files} | {'DELIVERY_MANIFEST.json'}) + for row in files: + rel = member_path(row['filename']) + raw = z.read(row['filename']) + self.check('canonical archive/native payload bytes: ' + str(rel), + raw == self.read(Path('PACKET') / rel) + and identity(raw) == {'bytes': row['size'], 'sha256': row['sha256']}) + packet = self.root / 'PACKET' + self.check('complete canonical/native payload file set', {r['filename'] for r in files} == { + str(p.relative_to(packet)) for p in packet.rglob('*') if p.is_file()}) + return {'archive': identity(archive), 'canonical_verifier_executed_by_this_master': False} + + def verify(self, envelope): + self.check('master input envelope schema', envelope['schema_version'] == 1) + validate_expectations(envelope['expected']) + self.check('qualified final expectations admitted', True) + self.bound(envelope['master_contract']) + self.bound(envelope['master_notes']) + self.check('executed master equals reviewed bound source', + self.bound(envelope['master_source']) == Path(__file__).read_bytes()) + gh, published, tree_rows = self.verify_publication(envelope) + manifest = self.verify_sources_reviews(envelope, published) + archive, members = self.verify_artifact(envelope) + report, audit = self.verify_hosted_execution(envelope, members, manifest, published, tree_rows) + ci = self.verify_ci(envelope, gh, archive, report) + history = envelope['historical_hosted_attempts'] + self.check('development history retained', isinstance(history, list) and bool(history)) + seen = set() + for prior in history: + prior_raw = self.bound(prior['archive']) + native_report = self.bound(prior['report']) + self.check('bounded historical hosted ZIP', len(prior_raw) <= 128 * 1024 * 1024) + with zipfile.ZipFile(io.BytesIO(prior_raw)) as zipped: + infos = [info for info in zipped.infolist() if info.filename == 'RESULT.json'] + self.check('unique bounded historical result member', len(infos) == 1 and infos[0].file_size <= 4 * 1024 * 1024) + self.check('exact retained historical report', zipped.read(infos[0]) == native_report) + failed = json_bytes(native_report) + old_context = failed['context'] + key = (str(old_context['github_run_id']), str(old_context['github_run_attempt'])) + self.check('distinct declared incomplete hosted history', key not in seen + and key != (str(ci['run_id']), str(ci['run_attempt'])) + and key == (str(prior['run_id']), str(prior['run_attempt'])) + and failed['status'] == prior['status'] == 'HOLD_NOT_COMPLETED' + and 'completed_at' not in failed and old_context['pull_request']['head_sha'] == prior['head'] + and old_context['github_repository'] == REPOSITORY) + seen.add(key) + self.check('retained additional failure/source evidence', isinstance(envelope['retained_inputs'], list) + and bool(envelope['retained_inputs'])) + for spec in envelope['retained_inputs']: + self.bound(spec) + custody = self.verify_custody(envelope) + for path, spec in list(self.observed.items()): + self.check('final stable native input: ' + str(path), path.is_file() + and all(not q.is_symlink() for q in (path, *path.parents)) and identity(path.read_bytes()) == spec) + return {'census': audit, 'hosted_run_id': ci['run_id'], 'hosted_run_attempt': ci['run_attempt'], + 'hosted_tested_commit': ci['tested_commit'], 'custody': custody, + 'verification_limit': 'Artifact and execution-record binding; runtime hashes are executor-measured records, not independently downloaded/native binary reproduction. No Lean execution, remote fetch, human review, or scientific promotion.'} + + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--root', type=Path, default=ROOT) + args = parser.parse_args() + root = args.root.absolute() + start, output = root / 'FINAL_MASTER_START.json', root / 'FINAL_MASTER.json' + if start.exists() or output.exists(): + print('REFUSED: final master already started; preserve prior evidence', file=sys.stderr) + return 1 + # Fixed external names prevent user-controlled output/custody cycles. + envelope_raw = (root / 'FINAL_MASTER_INPUTS.json').read_bytes() + master_raw = Path(__file__).read_bytes() + with start.open('x') as handle: + json.dump({'started_at': now(), 'master_sha256': sha(master_raw), + 'input_envelope_sha256': sha(envelope_raw), 'scientific_effect': 'NONE'}, handle, indent=2) + handle.write('\n') + checker = Master(root) + result = {'status': 'HOLD_ARTIFACT_VERIFICATION', 'scientific_effect': 'NONE'} + try: + checker.check('exact master invocation bytes', checker.read(Path(__file__)) == master_raw) + checker.check('exact master input envelope bytes', checker.read('FINAL_MASTER_INPUTS.json') == envelope_raw) + result.update(checker.verify(json_bytes(envelope_raw))) + result['status'] = 'PASS_ARTIFACT_VERIFICATION_NOT_THEOREM_PROOF' + except BaseException as exc: + result['error'] = repr(exc) + result.update(finished_at=now(), checks=checker.checks, check_count=len(checker.checks), + observed_identities={str(path): spec for path, spec in checker.observed.items()}) + with output.open('x') as handle: + json.dump(result, handle, indent=2, sort_keys=True) + handle.write('\n') + print(json.dumps({'status': result['status'], 'checks': result['check_count']})) + return 0 if result['status'].startswith('PASS_') else 1 + + +if __name__ == '__main__': + raise SystemExit(main()) diff --git a/frontiers/critical_ridge_20261020/artifact-master/test_final_master.py b/frontiers/critical_ridge_20261020/artifact-master/test_final_master.py new file mode 100644 index 000000000..166ccf0c8 --- /dev/null +++ b/frontiers/critical_ridge_20261020/artifact-master/test_final_master.py @@ -0,0 +1,160 @@ +"""Inert C299 artifact-master controls; never invokes the complete master.""" +import copy +import hashlib +import importlib.util +import json +from pathlib import Path +import tempfile +import unittest + +spec = importlib.util.spec_from_file_location('c299_final_master', Path(__file__).with_name('final_master.py')) +v = importlib.util.module_from_spec(spec) +spec.loader.exec_module(v) + + +def digest(value): + return hashlib.sha256(json.dumps(value, sort_keys=True, separators=(',', ':')).encode()).hexdigest() + + +def diagnostic(name): + conclusion = ('∃ r, r 0 = 0 ∧ ContDiffAt ℝ 2 r 0 ∧ ' + '(∀ᶠ w in 𝓝 0, ∀ (z : ↥V), (fderiv ℝ f (p + w + ↑(r w))) ↑z = 0) ∧ ' + '∀ (w : E d) (z : ↥V), hessian d f p (w + ↑((fderiv ℝ r 0) w)) ↑z = 0') + target = 'TorusCriticalRidge.exists_negative_partial_gradient_ridge' + if name == 'WithoutCriticality': + expression = 'fun hcritical => ' + target + ' f p V hsmooth hcritical hneg' + premise = 'IsCriticalPoint d f p' + else: + expression = target + ' f p V hsmooth hcritical' + premise = '(∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0)' + actual = premise + ' → ' + conclusion + out = (name + '.lean:23:2: error: Type mismatch\n ' + expression + '\nhas type\n ' + actual + + '\nbut is expected to have type\n ' + conclusion + '\n').encode() + record = {'stdout_sha256': v.sha(out), 'stderr_sha256': v.sha(b''), + 'expression': expression, 'actual': actual, 'expected': conclusion} + return out, record + + +def expected(): + return {'pr': 491, 'head': 'a' * 40, 'base': 'b' * 40, 'tree': 'c' * 40, + 'tested_commit': 'd' * 40, 'tested_tree': 'e' * 40, + 'run_id': 1234, 'run_attempt': 1, 'source_manifest_sha256': 'f' * 64, + 'support_sha256': {path: '1' * 64 for path in v.SUPPORT_PATHS}, + 'module_counts': {name: 4 for name in v.MODULES[:-1]}, + 'required_ci_names': ['downstream-replay', 'formal / formal-evidence', 'math-downstream-gates'], + 'negative_qualification': {'status': 'QUALIFIED', 'diagnostics': { + name: diagnostic(name)[1] for name in v.NEGATIVES}}} + + +class MasterControls(unittest.TestCase): + def test_actual_expectations_are_required_and_pending_is_rejected(self): + self.assertTrue(hasattr(v, 'validate_expectations'), 'parameterized final admission is missing') + v.validate_expectations(expected()) + for change in ('pending', 'missing_support', 'bool_run', 'empty_census', 'missing_ci'): + bad = copy.deepcopy(expected()) + if change == 'pending': bad['negative_qualification']['status'] = 'PENDING' + elif change == 'missing_support': bad['support_sha256'].pop(v.WORKFLOW) + elif change == 'bool_run': bad['run_id'] = True + elif change == 'empty_census': bad['module_counts']['CriticalRidge'] = 0 + else: bad['required_ci_names'] = [] + with self.subTest(change=change), self.assertRaises(ValueError): + v.validate_expectations(bad) + + def test_source_bound_negatives_reject_mutation_even_with_rebound_hashes(self): + self.assertTrue(hasattr(v, 'qualified_negative'), 'qualified negative acceptance is missing') + for name in v.NEGATIVES: + out, record = diagnostic(name) + v.qualified_negative(name, 1, out, b'', record) + for mutation in ('wrong_exit', 'wrong_file', 'wrong_conclusion', 'wrong_premise', 'extra_error'): + changed, bound = out, dict(record) + code = 1 + if mutation == 'wrong_exit': code = 0 + elif mutation == 'wrong_file': changed = out.replace(name.encode() + b'.lean', b'Other.lean') + elif mutation == 'wrong_conclusion': + changed = out.replace('ContDiffAt ℝ 2 r 0'.encode(), b'True') + bound['actual'] = bound['actual'].replace('ContDiffAt ℝ 2 r 0', 'True') + bound['expected'] = bound['expected'].replace('ContDiffAt ℝ 2 r 0', 'True') + elif mutation == 'wrong_premise': + old = 'IsCriticalPoint d f p' if name == 'WithoutCriticality' else '(∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0)' + changed = out.replace((old + ' → ').encode(), 'Continuous f → '.encode()) + bound['actual'] = bound['actual'].replace(old + ' → ', 'Continuous f → ') + else: changed += b'Other.lean:1:1: error: unexpected token\n' + bound['stdout_sha256'] = v.sha(changed) + with self.subTest(name=name, mutation=mutation), self.assertRaises(ValueError): + v.qualified_negative(name, code, changed, b'', bound) + + def test_environment_receipt_binds_selected_values_and_contract(self): + self.assertTrue(hasattr(v, 'environment_binding'), 'independent environment verification is missing') + selected = {'PATH': '/tool/bin:/usr/bin', 'LEAN_PATH': '/run/objects:/deps/lib', 'LEAN_NUM_THREADS': '2'} + contract = {'policy': v.ENVIRONMENT_POLICY, 'retained_lake_lean_path': '/deps/lib', + 'removed_variable_names': ['LD_PRELOAD', 'LEAN_NUM_THREADS'], 'selected_environment': selected} + contract['sha256'] = digest(contract) + phase = {'selected_environment': dict(selected), 'environment_contract_sha256': contract['sha256'], + 'unexpected_override_names': [], 'environment_validation_error': None, + 'environment_sha256': digest({'selected_environment': selected, 'unexpected_override_names': []})} + v.environment_binding({'environment_contract': contract}, phase, '/run/objects') + for mutation in ('selected', 'loader', 'digest', 'missing_contract', 'order'): + report, rec = {'environment_contract': copy.deepcopy(contract)}, copy.deepcopy(phase) + if mutation == 'selected': rec['selected_environment']['LEAN_PATH'] = '/wrong' + elif mutation == 'loader': rec['unexpected_override_names'] = ['LD_PRELOAD'] + elif mutation == 'digest': rec['environment_sha256'] = '0' * 64 + elif mutation == 'missing_contract': rec['environment_contract_sha256'] = None + else: report['environment_contract']['removed_variable_names'].reverse() + with self.subTest(mutation=mutation), self.assertRaises(ValueError): + v.environment_binding(report, rec, '/run/objects') + + def test_wrapped_census_rejects_hidden_marker_and_missing_target(self): + good = ('CRITICAL_RIDGE_AUDIT_MODULE X COUNT 1\n' + 'CRITICAL_RIDGE_AUDIT_DECL X.target AXIOMS [propext,\n Classical.choice,\n Quot.sound]\n' + 'CRITICAL_RIDGE_AUDIT_STANDARD_ONLY_PASS COUNT 1\n') + self.assertEqual(v.measured_audit(good, ('X',), {'X.target'})['declaration_count'], 1) + for bad in (good.replace('X.target', 'X.other'), good.replace('Quot.sound]', 'sorryAx]'), + good + 'CRITICAL_RIDGE_AUDIT_DECL\tBad AXIOMS [sorryAx]\n', + good + 'CRITICAL_RIDGE_AUDIT_DECL0 Bad AXIOMS []\n'): + with self.assertRaises(ValueError): v.measured_audit(bad, ('X',), {'X.target'}) + + def test_runtime_prefix_and_same_path_launcher_cannot_diverge(self): + report = {'runtimes': {'lean': {'path': '/p/bin/lean', 'bytes': 1, 'sha256': 'a' * 64}, + 'leanchecker': {'path': '/p/bin/leanchecker', 'bytes': 2, 'sha256': 'b' * 64}}, + 'lean_launcher': {'path': '/p/bin/lean', 'bytes': 1, 'sha256': 'a' * 64}} + v.runtime_binding(report, b'/p\n') + bad = copy.deepcopy(report);bad['lean_launcher']['sha256'] = 'c' * 64 + with self.assertRaises(ValueError): v.runtime_binding(bad, b'/p\n') + bad = copy.deepcopy(report);bad['runtimes']['leanchecker']['path'] = '/wrong/bin/leanchecker' + with self.assertRaises(ValueError): v.runtime_binding(bad, b'/p\n') + + def test_nonpassing_review_or_duplicate_role_file_is_rejected(self): + reviews = {role: {'path': role + '.md', 'bytes': 1, 'sha256': 'a' * 64, 'verdict': verdict} + for role, verdict in v.REVIEW_VERDICTS.items()} + self.assertEqual(len(v.final_review_records({'reviews': reviews})), 5) + for mutation in ('hold', 'duplicate'): + bad = copy.deepcopy(reviews) + if mutation == 'hold': bad['master_source_review']['verdict'] = 'HOLD_PENDING' + else: bad['master_source_review']['path'] = bad['source_review']['path'] + with self.assertRaises(ValueError): v.final_review_records({'reviews': bad}) + + def test_wrong_source_bytes_fail_without_accepting_input(self): + with tempfile.TemporaryDirectory() as tmp: + root = Path(tmp).resolve();(root / 'x').write_bytes(b'abc') + checker = v.Master(root) + row = {'path': 'x', 'bytes': 3, 'sha256': v.sha(b'abc')} + checker.bound(row);(root / 'x').write_bytes(b'abd') + with self.assertRaises(ValueError): checker.bound(row) + + def test_unrelated_packet_and_cycles_cannot_cover_accepted_inputs(self): + with tempfile.TemporaryDirectory() as tmp: + root = Path(tmp).resolve();(root / 'PACKET').mkdir() + (root / 'accepted').write_bytes(b'needed');(root / 'other').write_bytes(b'stale') + (root / 'PACKET/other').write_bytes(b'stale') + for cycle in (False, True): + checker = v.Master(root);checker.read('accepted') + custody = {key: {'path': key, 'bytes': 0, 'sha256': v.sha(b'')} + for key in ('archive', 'remote_archive', 'receipt', 'canonical_verification')} + custody['bindings'] = [{'source_path': 'FINAL_MASTER_INPUTS.json' if cycle else 'other', + 'packet_path': 'other'}] + with self.assertRaisesRegex(ValueError, 'acyclic|every actual accepted input'): + checker.verify_custody({'custody': custody}) + + +if __name__ == '__main__': + unittest.main() diff --git a/frontiers/critical_ridge_20261020/execution/author/CANDIDATE4.diff b/frontiers/critical_ridge_20261020/execution/author/CANDIDATE4.diff new file mode 100644 index 000000000..d4b178220 --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/author/CANDIDATE4.diff @@ -0,0 +1,48 @@ +--- candidate3/CriticalRidge.lean ++++ candidate4/CriticalRidge.lean +@@ -108,6 +108,7 @@ + exact (hD.comp (contDiff_const.add (ridgeAddition V).contDiff)).clm_comp + contDiff_const + ++set_option backward.isDefEq.respectTransparency false in + theorem negativePartialGradient_hasFDerivAt (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (hsmooth : IsSmooth d f) : + HasFDerivAt (negativePartialGradient f p V) +@@ -124,12 +125,10 @@ + (p + ridgeAddition V (0 : E d × V)) := by + simpa only [map_zero, add_zero] using hDp + have hcomp := hDp'.comp (0 : E d × V) hadd +- change HasFDerivAt (fun q : E d × V => +- (fderiv ℝ f (p + ridgeAddition V q)).comp V.subtypeL) _ _ +- convert hcomp.clm_comp (hasFDerivAt_const V.subtypeL (0 : E d × V)) using 1 +- ext q z +- simp [restrictCovector] ++ simpa only [negativePartialGradient, Function.comp_def] using ++ (restrictCovector V).hasFDerivAt.comp (0 : E d × V) hcomp + ++set_option backward.isDefEq.respectTransparency false in + /-- One actual ridge and all four conclusions for the same chosen function. + The equation is in the actual ambient function and actual subspace. -/ + theorem exists_negative_partial_gradient_ridge +@@ -169,7 +168,10 @@ + show fderiv ℝ f p = 0 from hcritical] + have heq : (fun w => G (w, r w)) =ᶠ[𝓝 (0 : E d)] + (fun _ => (0 : V →L[ℝ] ℝ)) := by +- simpa [r, hG0] using hG.eventually_apply_implicitFunction (by norm_num) hinv ++ have h := hG.eventually_apply_implicitFunction (by norm_num) hinv ++ change ∀ᶠ w in 𝓝 (0 : E d), G (w, r w) = G (0 : E d × V) at h ++ change ∀ᶠ w in 𝓝 (0 : E d), G (w, r w) = 0 ++ exact h.mono fun _ hw => hw.trans hG0 + refine ⟨r, hr0, hrC, ?_, ?_⟩ + · filter_upwards [heq] with w hw + intro z +@@ -186,7 +188,8 @@ + have hchain : HasFDerivAt (fun w : E d => G (w, r w)) + (D.comp ((ContinuousLinearMap.id ℝ (E d)).prod (fderiv ℝ r 0))) 0 := by + have hd : HasFDerivAt G D ((0 : E d), r 0) := by +- simpa only [hr0] using hDG ++ rw [hr0] ++ exact hDG + exact hd.comp 0 hgraph + have hid := hchain.unique hzero + intro w z diff --git a/frontiers/critical_ridge_20261020/execution/author/CANDIDATE4_FREEZE.json b/frontiers/critical_ridge_20261020/execution/author/CANDIDATE4_FREEZE.json new file mode 100644 index 000000000..78a3c0915 --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/author/CANDIDATE4_FREEZE.json @@ -0,0 +1,25 @@ +{ + "schema": "c299-candidate4-freeze-v1", + "created_utc": "2026-10-20T14:51:33.461601+00:00", + "source": "project/CriticalRidge.lean", + "bytes": 8664, + "sha256": "f3a515bd0a984c8a8affbfc79f4768e7a357b7798eee8990a5a34adbdcf6f0f7", + "source_snapshot": "execution/author/source-attempts/f3a515bd0a984c8a8affbfc79f4768e7a357b7798eee8990a5a34adbdcf6f0f7.lean", + "predecessor_sha256": "2a93240fa5034544a1dbcf5ec0a10ab11be1ca5d05f60b4df0e2663fa769f442", + "failure_stdout": "hosted-development2/extracted/build-CriticalRidge.stdout", + "failure_stdout_sha256": "a784390b5d21162fef912eb6fefc803a57dfd4ca887a8d2402ce453b275746d6", + "failure_receipt": "hosted-development2/extracted/build-CriticalRidge.receipt.json", + "failure_receipt_sha256": "08e1d5320a15693c7b2c68a8b82c7b28eb374b6c3703b326596fa7db377db0ac", + "failure_duration_seconds": 12.745656, + "failure_exit_code": 1, + "failure_timed_out": false, + "hosted_development_run": 39440510935, + "diff": "execution/author/CANDIDATE4.diff", + "diff_sha256": "1b02ee505c6d1bd4a3ad86ef92c4fa12fd7e92747fc3d8bd25f6ffce6f15c180", + "public_binder_changes": false, + "public_declaration_count": 9, + "public_signature_text_equality": true, + "candidate4_compilation_performed": false, + "native_retry_performed": false, + "scientific_effect": "NONE" +} diff --git a/frontiers/critical_ridge_20261020/execution/author/source-attempts/f3a515bd0a984c8a8affbfc79f4768e7a357b7798eee8990a5a34adbdcf6f0f7.lean b/frontiers/critical_ridge_20261020/execution/author/source-attempts/f3a515bd0a984c8a8affbfc79f4768e7a357b7798eee8990a5a34adbdcf6f0f7.lean new file mode 100644 index 000000000..a711e4511 --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/author/source-attempts/f3a515bd0a984c8a8affbfc79f4768e7a357b7798eee8990a5a34adbdcf6f0f7.lean @@ -0,0 +1,199 @@ +import MorseFiniteCritical +import Mathlib.Analysis.Calculus.ImplicitContDiff + +/-! +# The actual negative partial-gradient ridge + +C299 constructs a local ridge from literal smoothness, criticality and a +negative definite restriction of the literal Hessian. The parameter is ambient +`E d`; it may subsequently be restricted to the supplied positive complement. +No complement is assumed orthogonal. No ridge, inverse certificate, Morse chart, +closed-superlevel local path connectivity or finite event list is an input. + +The construction follows the reviewed direct-ridge paper published at +Math-#487, issuecomment-6292079965. This module covers only its partial-gradient +implicit-function step and differentiated equation. Reduced positivity, +uniform signs, fiber concavity, tubes, paths, the quotient and full LPC remain +separate obligations. +-/ + +noncomputable section + +open Set Topology +open UniversalLaw.Spec.Lifetime TorusMorseFinite + +namespace TorusCriticalRidge + +variable {d : ℕ} + +/-- Restrict an ambient continuous covector to the literal subspace. -/ +def restrictCovector (V : Submodule ℝ (E d)) : + (E d →L[ℝ] ℝ) →L[ℝ] (V →L[ℝ] ℝ) where + toFun ℓ := ℓ.comp V.subtypeL + map_add' ℓ₁ ℓ₂ := by + ext z + rfl + map_smul' c ℓ := by + ext z + rfl + cont := (continuous_id : Continuous (fun ℓ : E d →L[ℝ] ℝ => ℓ)).clm_comp_const + V.subtypeL + +/-- Addition of an ambient parameter and a vector in the negative subspace. -/ +def ridgeAddition (V : Submodule ℝ (E d)) : + (E d × V) →L[ℝ] E d := + ContinuousLinearMap.fst ℝ (E d) V + + V.subtypeL.comp (ContinuousLinearMap.snd ℝ (E d) V) + +/-- The covector-valued partial gradient, with a fixed base point. -/ +def negativePartialGradient (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (q : E d × V) : V →L[ℝ] ℝ := + restrictCovector V (fderiv ℝ f (p + ridgeAddition V q)) + +/-- The actual Hessian restricted to both negative-subspace arguments. -/ +def negativeHessianBlock (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) : V →L[ℝ] (V →L[ℝ] ℝ) := + (restrictCovector V).comp + ((fderiv ℝ (fderiv ℝ f) p).comp V.subtypeL) + +theorem negativeHessianBlock_apply (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (v z : V) : + negativeHessianBlock f p V v z = hessian d f p v z := by + rw [literal_hessian_eq_fderiv] + rfl + +/-- Negative definiteness supplies the exact continuous inverse required by IFT. +This includes the zero subspace, without a unit-sphere argument. -/ +theorem negativeHessianBlock_isInvertible (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) + (hneg : ∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0) : + (negativeHessianBlock f p V).IsInvertible := by + let C := negativeHessianBlock f p V + have hz : ∀ v : V, C v = 0 → v = 0 := by + intro v hv + by_contra hne + have hvne : (v : E d) ≠ 0 := by + intro h + apply hne + exact Subtype.ext h + have hn := hneg v v.property hvne + have he : hessian d f p v v = 0 := by + have h := congrArg (fun k : V →L[ℝ] ℝ => k v) hv + simpa only [C, negativeHessianBlock_apply, zero_apply] using h + linarith + have hC : Function.Injective C := by + intro u v huv + apply sub_eq_zero.mp + apply hz + simp [map_sub, huv] + let J : V ≃L[ℝ] (V →L[ℝ] ℝ) := + (InnerProductSpace.toDual ℝ V).toContinuousLinearEquiv + let A : V →L[ℝ] V := J.symm.toContinuousLinearMap.comp C + have hA : Function.Injective A := J.symm.injective.comp hC + let eA : V ≃L[ℝ] V := + (LinearEquiv.ofInjectiveEndo A.toLinearMap hA).toContinuousLinearEquiv + refine ⟨eA.trans J, ?_⟩ + apply ContinuousLinearMap.ext + intro v + change J (J.symm (C v)) = C v + exact J.apply_symm_apply (C v) + +theorem negativePartialGradient_contDiff (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (hsmooth : IsSmooth d f) : + ContDiff ℝ 2 (negativePartialGradient f p V) := by + have hD : ContDiff ℝ 2 (fderiv ℝ f) := + (contDiff_succ_iff_fderiv.mp (hsmooth 3)).2.2 + change ContDiff ℝ 2 (fun q : E d × V => + (fderiv ℝ f (p + ridgeAddition V q)).comp V.subtypeL) + exact (hD.comp (contDiff_const.add (ridgeAddition V).contDiff)).clm_comp + contDiff_const + +set_option backward.isDefEq.respectTransparency false in +theorem negativePartialGradient_hasFDerivAt (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (hsmooth : IsSmooth d f) : + HasFDerivAt (negativePartialGradient f p V) + ((restrictCovector V).comp + ((fderiv ℝ (fderiv ℝ f) p).comp (ridgeAddition V))) + (0 : E d × V) := by + have hD : ContDiff ℝ 1 (fderiv ℝ f) := + (contDiff_succ_iff_fderiv.mp (hsmooth 2)).2.2 + have hDp := (hD.differentiable (by norm_num) p).hasFDerivAt + have hadd : HasFDerivAt (fun q : E d × V => p + ridgeAddition V q) + (ridgeAddition V) 0 := by + simpa using ((ridgeAddition V).hasFDerivAt.const_add p) + have hDp' : HasFDerivAt (fderiv ℝ f) (fderiv ℝ (fderiv ℝ f) p) + (p + ridgeAddition V (0 : E d × V)) := by + simpa only [map_zero, add_zero] using hDp + have hcomp := hDp'.comp (0 : E d × V) hadd + simpa only [negativePartialGradient, Function.comp_def] using + (restrictCovector V).hasFDerivAt.comp (0 : E d × V) hcomp + +set_option backward.isDefEq.respectTransparency false in +/-- One actual ridge and all four conclusions for the same chosen function. +The equation is in the actual ambient function and actual subspace. -/ +theorem exists_negative_partial_gradient_ridge + (f : E d → ℝ) (p : E d) (V : Submodule ℝ (E d)) + (hsmooth : IsSmooth d f) (hcritical : IsCriticalPoint d f p) + (hneg : ∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0) : + ∃ r : E d → V, + r 0 = 0 ∧ + ContDiffAt ℝ 2 r 0 ∧ + (∀ᶠ w in 𝓝 (0 : E d), ∀ z : V, + fderiv ℝ f (p + w + (r w : E d)) z = 0) ∧ + (∀ (w : E d) (z : V), + hessian d f p (w + (fderiv ℝ r 0 w : E d)) z = 0) := by + let G := negativePartialGradient f p V + let D := (restrictCovector V).comp + ((fderiv ℝ (fderiv ℝ f) p).comp (ridgeAddition V)) + have hG : ContDiffAt ℝ 2 G (0 : E d × V) := + (negativePartialGradient_contDiff f p V hsmooth).contDiffAt + have hDG : HasFDerivAt G D (0 : E d × V) := + negativePartialGradient_hasFDerivAt f p V hsmooth + have hblock : fderiv ℝ G (0 : E d × V) ∘L + ContinuousLinearMap.inr ℝ (E d) V = negativeHessianBlock f p V := by + rw [hDG.fderiv] + ext v z + simp [D, negativeHessianBlock, ridgeAddition, restrictCovector] + have hinv : (fderiv ℝ G (0 : E d × V) ∘L + ContinuousLinearMap.inr ℝ (E d) V).IsInvertible := by + rw [hblock] + exact negativeHessianBlock_isInvertible f p V hneg + let r : E d → V := hG.implicitFunction (by norm_num) hinv + have hr0 : r 0 = 0 := hG.implicitFunction_apply_self (by norm_num) hinv + have hrC : ContDiffAt ℝ 2 r 0 := + hG.contDiffAt_implicitFunction (by norm_num) hinv + have hG0 : G (0 : E d × V) = 0 := by + ext z + simp [G, negativePartialGradient, ridgeAddition, restrictCovector, + show fderiv ℝ f p = 0 from hcritical] + have heq : (fun w => G (w, r w)) =ᶠ[𝓝 (0 : E d)] + (fun _ => (0 : V →L[ℝ] ℝ)) := by + have h := hG.eventually_apply_implicitFunction (by norm_num) hinv + change ∀ᶠ w in 𝓝 (0 : E d), G (w, r w) = G (0 : E d × V) at h + change ∀ᶠ w in 𝓝 (0 : E d), G (w, r w) = 0 + exact h.mono fun _ hw => hw.trans hG0 + refine ⟨r, hr0, hrC, ?_, ?_⟩ + · filter_upwards [heq] with w hw + intro z + have hz := congrArg (fun k : V →L[ℝ] ℝ => k z) hw + simpa [G, negativePartialGradient, ridgeAddition, restrictCovector, add_assoc] using hz + · have hdr : HasFDerivAt r (fderiv ℝ r 0) 0 := + (hrC.differentiableAt (by norm_num)).hasFDerivAt + have hgraph : HasFDerivAt (fun w : E d => (w, r w)) + ((ContinuousLinearMap.id ℝ (E d)).prod (fderiv ℝ r 0)) 0 := + (hasFDerivAt_id (0 : E d)).prodMk hdr + have hzero : HasFDerivAt (fun w : E d => G (w, r w)) + (0 : E d →L[ℝ] (V →L[ℝ] ℝ)) 0 := + (hasFDerivAt_const (0 : V →L[ℝ] ℝ) (0 : E d)).congr_of_eventuallyEq heq + have hchain : HasFDerivAt (fun w : E d => G (w, r w)) + (D.comp ((ContinuousLinearMap.id ℝ (E d)).prod (fderiv ℝ r 0))) 0 := by + have hd : HasFDerivAt G D ((0 : E d), r 0) := by + rw [hr0] + exact hDG + exact hd.comp 0 hgraph + have hid := hchain.unique hzero + intro w z + have h := congrArg (fun C : E d →L[ℝ] (V →L[ℝ] ℝ) => C w z) hid + simpa [D, restrictCovector, ridgeAddition, literal_hessian_eq_fderiv] using h + +end TorusCriticalRidge diff --git a/frontiers/critical_ridge_20261020/hosted-development2/ARCHIVE_MEMBERS.json b/frontiers/critical_ridge_20261020/hosted-development2/ARCHIVE_MEMBERS.json new file mode 100644 index 000000000..898ca39aa --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development2/ARCHIVE_MEMBERS.json @@ -0,0 +1,167 @@ +[ + { + "path": "HOSTED_SOURCE_MANIFEST.json", + "bytes": 1731, + "sha256": "e652634cd6c80faaf889704b291e14c3ae2c25a3edb37fdec5f4c8273d17fb1b" + }, + { + "path": "RESULT.json", + "bytes": 34424, + "sha256": "d4341e4c61360d0ca6e870c040ecf44821de3774573b05538eb5e0e90d37aa55" + }, + { + "path": "build-CriticalRidge.receipt.json", + "bytes": 4332, + "sha256": "08e1d5320a15693c7b2c68a8b82c7b28eb374b6c3703b326596fa7db377db0ac" + }, + { + "path": "build-CriticalRidge.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-CriticalRidge.stdout", + "bytes": 3059, + "sha256": "a784390b5d21162fef912eb6fefc803a57dfd4ca887a8d2402ce453b275746d6" + }, + { + "path": "build-Lifetime.receipt.json", + "bytes": 3639, + "sha256": "3dfc2cf206b1784db6a45f04b8df539037b1efb310698faf44450513fcc69693" + }, + { + "path": "build-Lifetime.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-Lifetime.stdout", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-MorseFiniteCritical.receipt.json", + "bytes": 4272, + "sha256": "ed1aca39b88a98badafb7f81624e7f11750ae50900c95f824615b3e136dfd9e7" + }, + { + "path": "build-MorseFiniteCritical.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-MorseFiniteCritical.stdout", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-TorusTopology.receipt.json", + "bytes": 3964, + "sha256": "8749ee4a59a78497d43b487d204076a262174c3a3ce96da1f46557b62fc80922" + }, + { + "path": "build-TorusTopology.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-TorusTopology.stdout", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "objects/Lifetime.olean", + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + { + "path": "objects/MorseFiniteCritical.olean", + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + { + "path": "objects/TorusTopology.olean", + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + }, + { + "path": "runtime-print-prefix.receipt.json", + "bytes": 3160, + "sha256": "ab7556bdf45d50c035995ccbcbc707862c05990c07a61d9b38f9a6f9bf811768" + }, + { + "path": "runtime-print-prefix.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "runtime-print-prefix.stdout", + "bytes": 58, + "sha256": "e0e72101499ee5e5a1967519d9955a093a555b85d5073da4bdba8bdd4cb12617" + }, + { + "path": "runtime-version.receipt.json", + "bytes": 3150, + "sha256": "c4a7c187ab2b7907172f5bf1ef0ad3e0c4af9bacccae4d70376b731b2608934f" + }, + { + "path": "runtime-version.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "runtime-version.stdout", + "bytes": 106, + "sha256": "355a9a028f81641782d75d6e6b58dec70f29d2f61238a9e271690259d9bf5680" + }, + { + "path": "source-snapshot/negative-project/WithoutCriticality.lean", + "bytes": 944, + "sha256": "6ebc44de843b951c312add4848962d76c4788cc10bdacf17002eb69fd370f1d2" + }, + { + "path": "source-snapshot/negative-project/WithoutNegativeDefiniteness.lean", + "bytes": 872, + "sha256": "ad204aee211aa3074621f56eeaf8e1a3f3a522b7c7cbe2bbdd67f3759833feb9" + }, + { + "path": "source-snapshot/project/CriticalRidge.lean", + "bytes": 8485, + "sha256": "2a93240fa5034544a1dbcf5ec0a10ab11be1ca5d05f60b4df0e2663fa769f442" + }, + { + "path": "source-snapshot/project/CriticalRidgeAxiomAudit.lean", + "bytes": 2728, + "sha256": "cff55f5b7721a621530ae1020b81e6cc89ce5c405396145e1ca5d3cfba4b2fb7" + }, + { + "path": "source-snapshot/project/Lifetime.lean", + "bytes": 51383, + "sha256": "90f4892608e953ecc696bb32ea159d1c178ceb8a1c6edfd11acfceb14af462c6" + }, + { + "path": "source-snapshot/project/MorseFiniteCritical.lean", + "bytes": 9445, + "sha256": "95a660134eda49eecfe6181884bd23b4e4ca210e228d2463de29e5f821df047b" + }, + { + "path": "source-snapshot/project/TorusTopology.lean", + "bytes": 12257, + "sha256": "ddb145b3f791c181d4f2a51e54e711937297bd6476ba55bcd5252b7ddb57cfe1" + }, + { + "path": "source-snapshot/repository/.github/workflows/c299-critical-ridge.yml", + "bytes": 3030, + "sha256": "8157a5f8ca2a92f6b31d7cb3c5834ce43423316394683d1c9b5e077a385c3add" + }, + { + "path": "source-snapshot/repository/frontiers/critical_ridge_20261020/c299_hosted_verify.py", + "bytes": 32069, + "sha256": "e4c5b9dd02e2ba2f98da27707c42ef861d9039b52864833d2164a3114f318f49" + }, + { + "path": "source-snapshot/repository/frontiers/critical_ridge_20261020/test_c299_hosted_verify.py", + "bytes": 17863, + "sha256": "62400129fda7b863d692397deac2a9d83b7f1101d98b53ed1043f0ef8cfd604e" + } +] diff --git a/frontiers/critical_ridge_20261020/hosted-development2/DISPOSITION.json b/frontiers/critical_ridge_20261020/hosted-development2/DISPOSITION.json new file mode 100644 index 000000000..df485ddf0 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development2/DISPOSITION.json @@ -0,0 +1,60 @@ +{ + "checkpoint": "2026-10-20T14:43:56.884781+00:00", + "actual_executor": "GitHub Actions ubuntu-24.04 via OpenAI Codex root publication; delegated for Dylan Roy", + "source_author": "OpenAI Codex /root/adapter_feasibility_c292", + "head": "8336bb7c16e34db69837b10e3678fb1bc894179c", + "tested_merge": "55ad6bad497da1a9c7ddd6002ba0c718994c26e1", + "tree": "9107a867c26bc718c94a18e6e9e763a55169fb53", + "run": 39440510935, + "attempt": 1, + "job": 118688787481, + "artifact": 12274830680, + "artifact_bytes": 480098, + "artifact_sha256": "da3a551f550fb50eea816f1ad00c3f0f6532f4192ba99ac5805bd58522c72a46", + "candidate_bytes": 8485, + "candidate_sha256": "2a93240fa5034544a1dbcf5ec0a10ab11be1ca5d05f60b4df0e2663fa769f442", + "result": "HOLD_NOT_COMPLETED", + "phase_results": [ + { + "name": "runtime-print-prefix", + "exit_code": 0, + "timed_out": false, + "status": "PASS" + }, + { + "name": "runtime-version", + "exit_code": 0, + "timed_out": false, + "status": "PASS" + }, + { + "name": "build-Lifetime", + "exit_code": 0, + "timed_out": false, + "status": "PASS" + }, + { + "name": "build-TorusTopology", + "exit_code": 0, + "timed_out": false, + "status": "PASS" + }, + { + "name": "build-MorseFiniteCritical", + "exit_code": 0, + "timed_out": false, + "status": "PASS" + }, + { + "name": "build-CriticalRidge", + "exit_code": 1, + "timed_out": false, + "status": "FAIL" + } + ], + "actual_failure": "Candidate3 actual elaboration failures in derivative CLM chain, unused simp under warning-as-error, EventuallyEq and product-zero dependent instance normalization. Three input modules freshly compiled. Ridge object absent; no kernel/census/negative controls reached. Applicable downstream checks all succeeded but do not accept this ridge proof.", + "diagnostic_bytes": 3059, + "diagnostic_sha256": "a784390b5d21162fef912eb6fefc803a57dfd4ca887a8d2402ce453b275746d6", + "repair_scope": "Minimal source-author elaboration and deprecation repair, preserve exact public hypotheses and conclusions; fresh nonauthor diff review before next hosted attempt. No unchanged native retry.", + "scientific_effect": "NONE" +} diff --git a/frontiers/critical_ridge_20261020/hosted-development2/HOSTED_SOURCE_MANIFEST.json b/frontiers/critical_ridge_20261020/hosted-development2/HOSTED_SOURCE_MANIFEST.json new file mode 100644 index 000000000..b56270f0a --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development2/HOSTED_SOURCE_MANIFEST.json @@ -0,0 +1,48 @@ +{ + "files": { + "negative-project/WithoutCriticality.lean": { + "bytes": 944, + "sha256": "6ebc44de843b951c312add4848962d76c4788cc10bdacf17002eb69fd370f1d2" + }, + "negative-project/WithoutNegativeDefiniteness.lean": { + "bytes": 872, + "sha256": "ad204aee211aa3074621f56eeaf8e1a3f3a522b7c7cbe2bbdd67f3759833feb9" + }, + "project/CriticalRidge.lean": { + "bytes": 8485, + "sha256": "2a93240fa5034544a1dbcf5ec0a10ab11be1ca5d05f60b4df0e2663fa769f442" + }, + "project/CriticalRidgeAxiomAudit.lean": { + "bytes": 2728, + "sha256": "cff55f5b7721a621530ae1020b81e6cc89ce5c405396145e1ca5d3cfba4b2fb7" + }, + "project/Lifetime.lean": { + "bytes": 51383, + "sha256": "90f4892608e953ecc696bb32ea159d1c178ceb8a1c6edfd11acfceb14af462c6" + }, + "project/MorseFiniteCritical.lean": { + "bytes": 9445, + "sha256": "95a660134eda49eecfe6181884bd23b4e4ca210e228d2463de29e5f821df047b" + }, + "project/TorusTopology.lean": { + "bytes": 12257, + "sha256": "ddb145b3f791c181d4f2a51e54e711937297bd6476ba55bcd5252b7ddb57cfe1" + } + }, + "schema_version": 1, + "scientific_effect": "NONE", + "source_origins": { + "Lifetime": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/Lifetime.lean" + }, + "MorseFiniteCritical": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/MorseFiniteCritical.lean" + }, + "TorusTopology": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/TorusTopology.lean" + } + } +} diff --git a/frontiers/critical_ridge_20261020/hosted-development2/RESULT.json b/frontiers/critical_ridge_20261020/hosted-development2/RESULT.json new file mode 100644 index 000000000..490085e81 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development2/RESULT.json @@ -0,0 +1,476 @@ +{ + "context": { + "executor": "GitHub-hosted runner executing C299 verification code", + "github_event_name": "pull_request", + "github_job": "c299-hosted-formal", + "github_repository": "d6g8k5htny-coder/Math-", + "github_run_attempt": "1", + "github_run_id": "39440510935", + "github_sha": "55ad6bad497da1a9c7ddd6002ba0c718994c26e1", + "github_workflow": "C299 critical ridge (hosted Lean, no scientific promotion)", + "human_review_credit": 0, + "pull_request": { + "base_sha": "8c226134ac0a0169dbb43311082e5353ed5c922c", + "head_sha": "8336bb7c16e34db69837b10e3678fb1bc894179c", + "number": 491 + }, + "tested_commit": "55ad6bad497da1a9c7ddd6002ba0c718994c26e1", + "tested_parents": [], + "tested_tree": "9107a867c26bc718c94a18e6e9e763a55169fb53" + }, + "environment_contract": { + "policy": "Remove inherited LEAN*, LAKE*, LD_* and DYLD_* overrides, except the Lake-provided LEAN_PATH; prepend the fresh local object directory to that path and set LEAN_NUM_THREADS=2. Retain declared PATH for launcher lookup. Other inherited variables remain available but are not recorded. Record only selected non-secret path/thread values and removed variable names.", + "removed_variable_names": [ + "LAKE", + "LAKE_ARTIFACT_CACHE", + "LAKE_CACHE_DIR", + "LAKE_CONFIG", + "LAKE_HOME", + "LAKE_NO_CACHE", + "LAKE_PKG_URL_MAP", + "LAKE_RESTORE_ARTIFACTS", + "LD_LIBRARY_PATH", + "LEAN", + "LEAN_AR", + "LEAN_GITHASH", + "LEAN_NUM_THREADS", + "LEAN_RECURSION_COUNT", + "LEAN_SRC_PATH", + "LEAN_SYSROOT" + ], + "retained_lake_lean_path": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461" + }, + "failure": "RuntimeError('C299 build-CriticalRidge unexpected exit: 1; timed_out=False; spawn_error=None; object_error=build must add only its own target object outputs; environment_error=None')", + "lean_launcher": { + "bytes": 9024, + "path": "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "sha256": "e8baaa71855a616dc351028f3ad2200051b0671f423a1696a100e809302d5550" + }, + "lean_version_output": "Lean (version 4.34.1, x86_64-unknown-linux-gnu, commit 5045d0056413266e57c625dcd7c365b10e377c52, Release)\n\n", + "machine": { + "machine": "x86_64", + "platform": "Linux-6.17.0-1022-azure-x86_64-with-glibc2.39", + "python": "3.12.3" + }, + "memory_limit": "-M14000", + "memory_limit_reason": "Explicit Linux execution budget; not a claim that C299 requires this amount.", + "packages_before": { + "Cli": "e92c9f15fdfacc8536f31cfb3b7ad26c3c8cd204", + "LeanSearchClient": "ddf04cf3949fa556442341e87d47f9f6e6074707", + "Qq": "6a489d9af5d0c47e5b259e2e8bcdfc1811b5a259", + "aesop": "355695d523e41d0554926416cba2a2b3544fbbc9", + "batteries": "f2effa3d803fda822b1f97b806c47cf2adfbcbc2", + "importGraph": "e928b72544873815af278d38681b31c0293588e3", + "mathlib": "d13f23b723b8a846827a245b89c10fc7d3f11612", + "plausible": "118aa17ee84656b8bd727fef7c458ee8c833385c", + "proofwidgets": "106ff4fafc74ef4ac99d81dbf3ab399118f497a5" + }, + "phase_results": [ + { + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "--print-prefix" + ], + "cwd": "/home/runner/work/Math-/Math-/formal", + "duration_seconds": 0.031953, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:36:47.965945+00:00", + "name": "runtime-print-prefix", + "object_validation_error": null, + "objects_after": null, + "objects_before": null, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:36:47.934016+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 58, + "stdout_sha256": "e0e72101499ee5e5a1967519d9955a093a555b85d5073da4bdba8bdd4cb12617", + "timed_out": false, + "timeout_seconds": 30, + "unexpected_override_names": [] + }, + { + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "--version" + ], + "cwd": "/home/runner/work/Math-/Math-/formal", + "duration_seconds": 0.03193, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:36:48.017821+00:00", + "name": "runtime-version", + "object_validation_error": null, + "objects_after": null, + "objects_before": null, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:36:47.985912+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 106, + "stdout_sha256": "355a9a028f81641782d75d6e6b58dec70f29d2f61238a9e271690259d9bf5680", + "timed_out": false, + "timeout_seconds": 30, + "unexpected_override_names": [] + }, + { + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/Lifetime.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/Lifetime.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 4.924897, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:36:52.948934+00:00", + "name": "build-Lifetime", + "object": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "object_validation_error": null, + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + } + }, + "objects_before": {}, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:36:48.024056+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] + }, + { + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-DwarningAsError=true", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/TorusTopology.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/TorusTopology.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 4.324235, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:36:57.358927+00:00", + "name": "build-TorusTopology", + "object": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + }, + "object_validation_error": null, + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "objects_before": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + } + }, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:36:53.034712+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] + }, + { + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-DwarningAsError=true", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/MorseFiniteCritical.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/MorseFiniteCritical.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 5.679667, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:37:03.083319+00:00", + "name": "build-MorseFiniteCritical", + "object": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "object_validation_error": null, + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "MorseFiniteCritical.olean": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "objects_before": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:36:57.403673+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] + }, + { + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-DwarningAsError=true", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/CriticalRidge.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 12.745656, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 1, + "finished_at": "2026-10-20T14:37:15.832277+00:00", + "name": "build-CriticalRidge", + "object_validation_error": "build must add only its own target object outputs", + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "MorseFiniteCritical.olean": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "objects_before": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "MorseFiniteCritical.olean": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:37:03.086639+00:00", + "status": "FAIL", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 3059, + "stdout_sha256": "a784390b5d21162fef912eb6fefc803a57dfd4ca887a8d2402ce453b275746d6", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] + } + ], + "phase_timeout_seconds": 900, + "replay_limit": "Not a --fresh replay or rebuild of the full dependency closure.", + "runtimes": { + "lean": { + "bytes": 9024, + "path": "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "sha256": "e8baaa71855a616dc351028f3ad2200051b0671f423a1696a100e809302d5550" + }, + "leanchecker": { + "bytes": 51080, + "path": "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/leanchecker", + "sha256": "ccef1bfe9bfeecea65137d94a69033c1a89f360711f50fa3178e7ba3e696fcbe" + } + }, + "scientific_effect": "NONE", + "source_identity": { + "dependency_pins": { + "Cli": "e92c9f15fdfacc8536f31cfb3b7ad26c3c8cd204", + "LeanSearchClient": "ddf04cf3949fa556442341e87d47f9f6e6074707", + "Qq": "6a489d9af5d0c47e5b259e2e8bcdfc1811b5a259", + "aesop": "355695d523e41d0554926416cba2a2b3544fbbc9", + "batteries": "f2effa3d803fda822b1f97b806c47cf2adfbcbc2", + "importGraph": "e928b72544873815af278d38681b31c0293588e3", + "mathlib": "d13f23b723b8a846827a245b89c10fc7d3f11612", + "plausible": "118aa17ee84656b8bd727fef7c458ee8c833385c", + "proofwidgets": "106ff4fafc74ef4ac99d81dbf3ab399118f497a5" + }, + "files": { + "negative-project/WithoutCriticality.lean": { + "bytes": 944, + "sha256": "6ebc44de843b951c312add4848962d76c4788cc10bdacf17002eb69fd370f1d2" + }, + "negative-project/WithoutNegativeDefiniteness.lean": { + "bytes": 872, + "sha256": "ad204aee211aa3074621f56eeaf8e1a3f3a522b7c7cbe2bbdd67f3759833feb9" + }, + "project/CriticalRidge.lean": { + "bytes": 8485, + "sha256": "2a93240fa5034544a1dbcf5ec0a10ab11be1ca5d05f60b4df0e2663fa769f442" + }, + "project/CriticalRidgeAxiomAudit.lean": { + "bytes": 2728, + "sha256": "cff55f5b7721a621530ae1020b81e6cc89ce5c405396145e1ca5d3cfba4b2fb7" + }, + "project/Lifetime.lean": { + "bytes": 51383, + "sha256": "90f4892608e953ecc696bb32ea159d1c178ceb8a1c6edfd11acfceb14af462c6" + }, + "project/MorseFiniteCritical.lean": { + "bytes": 9445, + "sha256": "95a660134eda49eecfe6181884bd23b4e4ca210e228d2463de29e5f821df047b" + }, + "project/TorusTopology.lean": { + "bytes": 12257, + "sha256": "ddb145b3f791c181d4f2a51e54e711937297bd6476ba55bcd5252b7ddb57cfe1" + } + }, + "formal_config": { + "formal/lake-manifest.json": { + "bytes": 3553, + "sha256": "d63753befccc21923783a5085148e3ff028d97134ea52f5a08bd87ecf1b0b043" + }, + "formal/lakefile.toml": { + "bytes": 274, + "sha256": "d629891716c169404d1f0d76492441c8dd66f1e790b1b8b0819e51c8d5059255" + }, + "formal/lean-toolchain": { + "bytes": 25, + "sha256": "d5edba4e4b8faad9c1baeadb265716d20d03be4d1a2647dc5e35b0c0325bea7b" + } + }, + "manifest": { + "bytes": 1731, + "sha256": "e652634cd6c80faaf889704b291e14c3ae2c25a3edb37fdec5f4c8273d17fb1b" + }, + "source_origin_limit": "Remote origin byte equality is a separate owner custody check.", + "source_origins": { + "Lifetime": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/Lifetime.lean" + }, + "MorseFiniteCritical": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/MorseFiniteCritical.lean" + }, + "TorusTopology": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/TorusTopology.lean" + } + }, + "support_files": { + ".github/workflows/c299-critical-ridge.yml": { + "bytes": 3030, + "sha256": "8157a5f8ca2a92f6b31d7cb3c5834ce43423316394683d1c9b5e077a385c3add" + }, + "frontiers/critical_ridge_20261020/c299_hosted_verify.py": { + "bytes": 32069, + "sha256": "e4c5b9dd02e2ba2f98da27707c42ef861d9039b52864833d2164a3114f318f49" + }, + "frontiers/critical_ridge_20261020/test_c299_hosted_verify.py": { + "bytes": 17863, + "sha256": "62400129fda7b863d692397deac2a9d83b7f1101d98b53ed1043f0ef8cfd604e" + } + } + }, + "started_at": "2026-10-20T14:34:58.868884+00:00", + "started_execution_at": "2026-10-20T14:36:47.695360+00:00", + "status": "HOLD_NOT_COMPLETED", + "threads": 2, + "verification_scope": "Five fresh local objects; four standard named-module kernel replays; full four-module axiom census; two omitted-premise interface controls." +} diff --git a/frontiers/critical_ridge_20261020/hosted-development2/ROOT_EXTRACTION_NEGATIVE.json b/frontiers/critical_ridge_20261020/hosted-development2/ROOT_EXTRACTION_NEGATIVE.json new file mode 100644 index 000000000..db32053a7 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development2/ROOT_EXTRACTION_NEGATIVE.json @@ -0,0 +1,6 @@ +{ + "operation": "read-only receipt consistency check", + "error": "KeyError: phases", + "cause": "root assumed phases; actual RESULT key is phase_results", + "effect": "no disposition written; ZIP/extraction preserved; corrected schema read follows" +} diff --git a/frontiers/critical_ridge_20261020/hosted-development2/build-CriticalRidge.receipt.json b/frontiers/critical_ridge_20261020/hosted-development2/build-CriticalRidge.receipt.json new file mode 100644 index 000000000..c12804b04 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development2/build-CriticalRidge.receipt.json @@ -0,0 +1,63 @@ +{ + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-DwarningAsError=true", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/CriticalRidge.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 12.745656, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 1, + "finished_at": "2026-10-20T14:37:15.832277+00:00", + "name": "build-CriticalRidge", + "object_validation_error": "build must add only its own target object outputs", + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "MorseFiniteCritical.olean": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "objects_before": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "MorseFiniteCritical.olean": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:37:03.086639+00:00", + "status": "FAIL", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 3059, + "stdout_sha256": "a784390b5d21162fef912eb6fefc803a57dfd4ca887a8d2402ce453b275746d6", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] +} diff --git a/frontiers/critical_ridge_20261020/hosted-development2/build-CriticalRidge.stderr b/frontiers/critical_ridge_20261020/hosted-development2/build-CriticalRidge.stderr new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development2/build-CriticalRidge.stdout b/frontiers/critical_ridge_20261020/hosted-development2/build-CriticalRidge.stdout new file mode 100644 index 000000000..5846e73cf --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development2/build-CriticalRidge.stdout @@ -0,0 +1,52 @@ +/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean:116:23: error: unsolved goals +case e'_12 +d : ℕ +f : E d → ℝ +p : E d +V : Submodule ℝ (E d) +hsmooth : IsSmooth d f +hD : ContDiff ℝ 1 (fderiv ℝ f) +hDp : HasFDerivAt (fderiv ℝ f) (fderiv ℝ (fderiv ℝ f) p) p +hadd : HasFDerivAt (fun q => p + (ridgeAddition V) q) (ridgeAddition V) 0 +hDp' : HasFDerivAt (fderiv ℝ f) (fderiv ℝ (fderiv ℝ f) p) (p + (ridgeAddition V) 0) +hcomp : HasFDerivAt (fderiv ℝ f ∘ fun q => p + (ridgeAddition V) q) (fderiv ℝ (fderiv ℝ f) p ∘SL ridgeAddition V) 0 +e_4✝ : Prod.instAddCommGroup = Prod.normedAddCommGroup.toAddCommGroup +he✝ : Prod.instModule = Prod.normedSpace.toModule +e_6✝ : instTopologicalSpaceProd = PseudoMetricSpace.toUniformSpace.toTopologicalSpace +⊢ restrictCovector V ∘SL fderiv ℝ (fderiv ℝ f) p ∘SL ridgeAddition V = + (ContinuousLinearMap.compL ℝ (↥V) (E d) ℝ) ((fderiv ℝ f ∘ fun q => p + (ridgeAddition V) q) 0) ∘SL 0 + + (ContinuousLinearMap.compL ℝ (↥V) (E d) ℝ).flip V.subtypeL ∘SL fderiv ℝ (fderiv ℝ f) p ∘SL ridgeAddition V +/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean:131:8: error: This simp argument is unused: + restrictCovector + +Hint: Omit it from the simp argument list. + [apply] simp + +Note: This linter can be disabled with `set_option linter.unusedSimpArgs false` +/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean:172:4: error: Type mismatch: After simplification, term + ContDiffAt.eventually_apply_implicitFunction hG + (Mathlib.Meta.NormNum.isNat_eq_false (Mathlib.Meta.NormNum.isNat_ofNat (WithTop ℕ∞) (Eq.refl 2)) + (Mathlib.Meta.NormNum.isNat_ofNat (WithTop ℕ∞) Nat.cast_zero) (Eq.refl false)) + hinv + has type + ∀ᶠ (x : E d) in 𝓝 0, G (x, hG.implicitFunction ⋯ hinv x) = 0 +but is expected to have type + (fun w => G (w, hG.implicitFunction ⋯ hinv w)) =ᶠ[𝓝 0] fun x => 0 +/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean:189:8: error: Type mismatch: After simplification, term + hDG + has type + @HasFDerivAt ℝ DenselyNormedField.toNontriviallyNormedField (E d × ↥V) Prod.instAddCommGroup Prod.instModule + instTopologicalSpaceProd (↥V →L[ℝ] ℝ) ContinuousLinearMap.addCommGroup ContinuousLinearMap.module + ContinuousLinearMap.topologicalSpace G D 0 +but is expected to have type + @HasFDerivAt ℝ DenselyNormedField.toNontriviallyNormedField (E d × ↥V) Prod.instAddCommGroup Prod.instModule + instTopologicalSpaceProd (↥V →L[ℝ] ℝ) ContinuousLinearMap.addCommGroup ContinuousLinearMap.module + ContinuousLinearMap.topologicalSpace G D (0, 0) +/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean:190:12: error: Application type mismatch: The argument + hd +has type + HasFDerivAt G D (0, r 0) +but is expected to have type + HasFDerivAt ?m.885 ?m.886 (0, r 0) +in the application + HasFDerivAt.comp 0 hd diff --git a/frontiers/critical_ridge_20261020/hosted-development2/build-Lifetime.receipt.json b/frontiers/critical_ridge_20261020/hosted-development2/build-Lifetime.receipt.json new file mode 100644 index 000000000..8b1640d07 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development2/build-Lifetime.receipt.json @@ -0,0 +1,45 @@ +{ + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/Lifetime.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/Lifetime.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 4.924897, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:36:52.948934+00:00", + "name": "build-Lifetime", + "object": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "object_validation_error": null, + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + } + }, + "objects_before": {}, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:36:48.024056+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] +} diff --git a/frontiers/critical_ridge_20261020/hosted-development2/build-Lifetime.stderr b/frontiers/critical_ridge_20261020/hosted-development2/build-Lifetime.stderr new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development2/build-Lifetime.stdout b/frontiers/critical_ridge_20261020/hosted-development2/build-Lifetime.stdout new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development2/build-MorseFiniteCritical.receipt.json b/frontiers/critical_ridge_20261020/hosted-development2/build-MorseFiniteCritical.receipt.json new file mode 100644 index 000000000..c7a077e29 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development2/build-MorseFiniteCritical.receipt.json @@ -0,0 +1,63 @@ +{ + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-DwarningAsError=true", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/MorseFiniteCritical.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/MorseFiniteCritical.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 5.679667, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:37:03.083319+00:00", + "name": "build-MorseFiniteCritical", + "object": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "object_validation_error": null, + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "MorseFiniteCritical.olean": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "objects_before": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:36:57.403673+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] +} diff --git a/frontiers/critical_ridge_20261020/hosted-development2/build-MorseFiniteCritical.stderr b/frontiers/critical_ridge_20261020/hosted-development2/build-MorseFiniteCritical.stderr new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development2/build-MorseFiniteCritical.stdout b/frontiers/critical_ridge_20261020/hosted-development2/build-MorseFiniteCritical.stdout new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development2/build-TorusTopology.receipt.json b/frontiers/critical_ridge_20261020/hosted-development2/build-TorusTopology.receipt.json new file mode 100644 index 000000000..f29304925 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development2/build-TorusTopology.receipt.json @@ -0,0 +1,55 @@ +{ + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-DwarningAsError=true", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/TorusTopology.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/TorusTopology.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 4.324235, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:36:57.358927+00:00", + "name": "build-TorusTopology", + "object": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + }, + "object_validation_error": null, + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "objects_before": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + } + }, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:36:53.034712+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] +} diff --git a/frontiers/critical_ridge_20261020/hosted-development2/build-TorusTopology.stderr b/frontiers/critical_ridge_20261020/hosted-development2/build-TorusTopology.stderr new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development2/build-TorusTopology.stdout b/frontiers/critical_ridge_20261020/hosted-development2/build-TorusTopology.stdout new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development2/native/c299_dev_artifacts2.json b/frontiers/critical_ridge_20261020/hosted-development2/native/c299_dev_artifacts2.json new file mode 100644 index 000000000..745fd4bb6 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development2/native/c299_dev_artifacts2.json @@ -0,0 +1,32 @@ +{ + "content": [ + { + "type": "text", + "text": "Action completed." + } + ], + "structuredContent": { + "artifacts": [ + { + "id": 12274830680, + "name": "c299-hosted-39440510935-1", + "size_in_bytes": 480098, + "url": "https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/artifacts/12274830680", + "archive_download_url": "https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/artifacts/12274830680/zip", + "expired": false, + "created_at": "2026-10-20T14:37:17Z", + "expires_at": "2027-01-18T14:34:48Z", + "updated_at": "2026-10-20T14:37:17Z", + "digest": "sha256:da3a551f550fb50eea816f1ad00c3f0f6532f4192ba99ac5805bd58522c72a46", + "workflow_run": { + "id": 39440510935, + "repository_id": 1385716596, + "head_repository_id": 1385716596, + "head_branch": "codex/c299-critical-ridge-20261020", + "head_sha": "8336bb7c16e34db69837b10e3678fb1bc894179c" + } + } + ] + }, + "isError": false +} diff --git a/frontiers/critical_ridge_20261020/hosted-development2/native/c299_dev_jobs2_final.json b/frontiers/critical_ridge_20261020/hosted-development2/native/c299_dev_jobs2_final.json new file mode 100644 index 000000000..560cf9de3 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development2/native/c299_dev_jobs2_final.json @@ -0,0 +1,71 @@ +{ + "content": [ + { + "type": "text", + "text": "Action completed." + } + ], + "structuredContent": { + "jobs": [ + { + "id": 118688787481, + "name": "c299-hosted-formal", + "status": "completed", + "conclusion": "failure", + "run_id": 39440510935, + "logs_url": null, + "steps": [ + { + "name": "Set up job", + "status": "completed", + "conclusion": "success", + "number": 1 + }, + { + "name": "Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1", + "status": "completed", + "conclusion": "success", + "number": 2 + }, + { + "name": "Bind frozen source manifest and verify engineering failure controls", + "status": "completed", + "conclusion": "success", + "number": 3 + }, + { + "name": "Install pinned Lean and retrieve dependency cache", + "status": "completed", + "conclusion": "success", + "number": 4 + }, + { + "name": "Fresh five-module build, four kernel checks, complete audit and two controls", + "status": "completed", + "conclusion": "failure", + "number": 5 + }, + { + "name": "Retain exact C299 tested-run sources, objects, streams and failure receipts", + "status": "completed", + "conclusion": "success", + "number": 6 + }, + { + "name": "Post Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1", + "status": "completed", + "conclusion": "success", + "number": 12 + }, + { + "name": "Complete job", + "status": "completed", + "conclusion": "success", + "number": 13 + } + ] + } + ] + }, + "isError": false +} diff --git a/frontiers/critical_ridge_20261020/hosted-development2/native/c299_dev_logs2.json b/frontiers/critical_ridge_20261020/hosted-development2/native/c299_dev_logs2.json new file mode 100644 index 000000000..2029ce96c --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development2/native/c299_dev_logs2.json @@ -0,0 +1,12 @@ +{ + "content": [ + { + "type": "text", + "text": "Action completed." + } + ], + "structuredContent": { + "content": "2026-10-20T14:34:51.6928930Z Current runner version: '2.337.0'\n2026-10-20T14:34:51.6954037Z ##[group]Runner Image Provisioner\n2026-10-20T14:34:51.6954980Z Hosted Compute Agent\n2026-10-20T14:34:51.6955494Z Version: 20261012.601\n2026-10-20T14:34:51.6956166Z Commit: f3dc54e1fb89da6852db922499a0233137369e1d\n2026-10-20T14:34:51.6956892Z Build Date: 2026-10-12T17:48:21Z\n2026-10-20T14:34:51.6957535Z Worker ID: {5fe72a88-80d9-4e2a-abb0-c2544ae6d9ca}\n2026-10-20T14:34:51.6958313Z Region: southcentralus\n2026-10-20T14:34:51.6958811Z Cloud: Azure\n2026-10-20T14:34:51.6959324Z ##[endgroup]\n2026-10-20T14:34:51.6960801Z ##[group]Operating System\n2026-10-20T14:34:51.6961694Z Ubuntu\n2026-10-20T14:34:51.6962243Z 24.04.5\n2026-10-20T14:34:51.6962688Z LTS\n2026-10-20T14:34:51.6963207Z ##[endgroup]\n2026-10-20T14:34:51.6963700Z ##[group]Runner Image\n2026-10-20T14:34:51.6964252Z Image: ubuntu-24.04\n2026-10-20T14:34:51.6964795Z Version: 20261012.334.1\n2026-10-20T14:34:51.6965993Z Included Software: https://github.com/actions/runner-images/blob/ubuntu24/20261012.334/images/ubuntu/Ubuntu2404-Readme.md\n2026-10-20T14:34:51.6967443Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu24%2F20261012.334\n2026-10-20T14:34:51.6968351Z ##[endgroup]\n2026-10-20T14:34:51.6969397Z ##[group]GITHUB_TOKEN Permissions\n2026-10-20T14:34:51.6971443Z Contents: read\n2026-10-20T14:34:51.6972057Z Metadata: read\n2026-10-20T14:34:51.6972534Z ##[endgroup]\n2026-10-20T14:34:51.6974653Z Secret source: Actions\n2026-10-20T14:34:51.6975588Z Cache mode: write\n2026-10-20T14:34:51.6976221Z Prepare workflow directory\n2026-10-20T14:34:51.7225775Z Prepare all required actions\n2026-10-20T14:34:51.7257189Z Getting action download info\n2026-10-20T14:34:52.0431041Z Download action repository 'actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1' (SHA:3d3c42e5aac5ba805825da76410c181273ba90b1)\n2026-10-20T14:34:52.1304415Z Download action repository 'leanprover/lean-action@f061402b660e0c34644504b324e830f2991d4865' (SHA:f061402b660e0c34644504b324e830f2991d4865)\n2026-10-20T14:34:52.3872023Z Download action repository 'actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9' (SHA:cf430e030ddbb5b0abf93d22962f4752f3646cd9)\n2026-10-20T14:34:53.0102507Z Getting action download info\n2026-10-20T14:34:53.1173219Z Download action repository 'actions/cache@caa296126883cff596d87d8935842f9db880ef25' (SHA:caa296126883cff596d87d8935842f9db880ef25)\n2026-10-20T14:34:53.2917287Z Complete job name: c299-hosted-formal\n2026-10-20T14:34:53.3467522Z ##[group]Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1\n2026-10-20T14:34:53.3468436Z with:\n2026-10-20T14:34:53.3468951Z persist-credentials: false\n2026-10-20T14:34:53.3469507Z fetch-depth: 1\n2026-10-20T14:34:53.3470021Z repository: d6g8k5htny-coder/Math-\n2026-10-20T14:34:53.3475215Z token: ***\n2026-10-20T14:34:53.3475695Z ssh-strict: true\n2026-10-20T14:34:53.3476180Z ssh-user: git\n2026-10-20T14:34:53.3476665Z clean: true\n2026-10-20T14:34:53.3477173Z sparse-checkout-cone-mode: true\n2026-10-20T14:34:53.3477751Z fetch-tags: false\n2026-10-20T14:34:53.3478269Z show-progress: true\n2026-10-20T14:34:53.3478771Z lfs: false\n2026-10-20T14:34:53.3479229Z submodules: false\n2026-10-20T14:34:53.3479727Z set-safe-directory: true\n2026-10-20T14:34:53.3480299Z allow-unsafe-pr-checkout: false\n2026-10-20T14:34:53.3480949Z env:\n2026-10-20T14:34:53.3481511Z LEAN_NUM_THREADS: 2\n2026-10-20T14:34:53.3482346Z C299_MANIFEST_SHA256: e652634cd6c80faaf889704b291e14c3ae2c25a3edb37fdec5f4c8273d17fb1b\n2026-10-20T14:34:53.3483239Z ##[endgroup]\n2026-10-20T14:34:53.4172067Z Syncing repository: d6g8k5htny-coder/Math-\n2026-10-20T14:34:53.4174517Z ##[group]Getting Git version info\n2026-10-20T14:34:53.4175635Z Working directory is '/home/runner/work/Math-/Math-'\n2026-10-20T14:34:53.4177368Z [command]/usr/bin/git version\n2026-10-20T14:34:53.4242236Z git version 2.55.0\n2026-10-20T14:34:53.4257259Z ##[endgroup]\n2026-10-20T14:34:53.4265487Z Temporarily overriding HOME='/home/runner/work/_temp/52ea7c94-2bb3-40ff-98de-85bc2379ea0f' before making global git config changes\n2026-10-20T14:34:53.4268180Z Adding repository directory to the temporary git global config as a safe directory\n2026-10-20T14:34:53.4270407Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/Math-/Math-\n2026-10-20T14:34:53.4312367Z Deleting the contents of '/home/runner/work/Math-/Math-'\n2026-10-20T14:34:53.4314920Z ##[group]Determining repository object format\n2026-10-20T14:34:53.4316667Z ##[endgroup]\n2026-10-20T14:34:53.4318069Z ##[group]Initializing the repository\n2026-10-20T14:34:53.4319686Z [command]/usr/bin/git init /home/runner/work/Math-/Math-\n2026-10-20T14:34:53.4410765Z hint: Using 'master' as the name for the initial branch. This default branch name\n2026-10-20T14:34:53.4412989Z hint: will change to \"main\" in Git 3.0. To configure the initial branch name\n2026-10-20T14:34:53.4414854Z hint: to use in all of your new repositories, which will suppress this warning,\n2026-10-20T14:34:53.4416285Z hint: call:\n2026-10-20T14:34:53.4417097Z hint:\n2026-10-20T14:34:53.4418104Z hint: \tgit config --global init.defaultBranch \n2026-10-20T14:34:53.4419372Z hint:\n2026-10-20T14:34:53.4420496Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and\n2026-10-20T14:34:53.4422481Z hint: 'development'. The just-created branch can be renamed via this command:\n2026-10-20T14:34:53.4424010Z hint:\n2026-10-20T14:34:53.4424888Z hint: \tgit branch -m \n2026-10-20T14:34:53.4426017Z hint:\n2026-10-20T14:34:53.4427373Z hint: Disable this message with \"git config set advice.defaultBranchName false\"\n2026-10-20T14:34:53.4429613Z Initialized empty Git repository in /home/runner/work/Math-/Math-/.git/\n2026-10-20T14:34:53.4433272Z [command]/usr/bin/git remote add origin https://github.com/d6g8k5htny-coder/Math-\n2026-10-20T14:34:53.4473524Z ##[endgroup]\n2026-10-20T14:34:53.4474814Z ##[group]Disabling automatic garbage collection\n2026-10-20T14:34:53.4476367Z [command]/usr/bin/git config --local gc.auto 0\n2026-10-20T14:34:53.4510973Z ##[endgroup]\n2026-10-20T14:34:53.4513086Z ##[group]Setting up auth\n2026-10-20T14:34:53.4514030Z Removing SSH command configuration\n2026-10-20T14:34:53.4517239Z [command]/usr/bin/git config --local --name-only --get-regexp core\\.sshCommand\n2026-10-20T14:34:53.4554173Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'core\\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :\"\n2026-10-20T14:34:53.4841602Z Removing HTTP extra header\n2026-10-20T14:34:53.4845893Z [command]/usr/bin/git config --local --name-only --get-regexp http\\.https\\:\\/\\/github\\.com\\/\\.extraheader\n2026-10-20T14:34:53.4877163Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'http\\.https\\:\\/\\/github\\.com\\/\\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :\"\n2026-10-20T14:34:53.5057059Z Removing includeIf entries pointing to credentials config files\n2026-10-20T14:34:53.5060619Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\\.gitdir:\n2026-10-20T14:34:53.5090316Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url\n2026-10-20T14:34:53.5272873Z [command]/usr/bin/git config --file /home/runner/work/_temp/git-credentials-a033c5f2-6e6f-4245-b693-71066746ce23.config http.https://github.com/.extraheader AUTHORIZATION: basic ***\n2026-10-20T14:34:53.5306723Z [command]/usr/bin/git config --local includeIf.gitdir:/home/runner/work/Math-/Math-/.git.path /home/runner/work/_temp/git-credentials-a033c5f2-6e6f-4245-b693-71066746ce23.config\n2026-10-20T14:34:53.5380419Z [command]/usr/bin/git config --local includeIf.gitdir:/home/runner/work/Math-/Math-/.git/worktrees/*.path /home/runner/work/_temp/git-credentials-a033c5f2-6e6f-4245-b693-71066746ce23.config\n2026-10-20T14:34:53.5413273Z [command]/usr/bin/git config --local includeIf.gitdir:/github/workspace/.git.path /github/runner_temp/git-credentials-a033c5f2-6e6f-4245-b693-71066746ce23.config\n2026-10-20T14:34:53.5444174Z [command]/usr/bin/git config --local includeIf.gitdir:/github/workspace/.git/worktrees/*.path /github/runner_temp/git-credentials-a033c5f2-6e6f-4245-b693-71066746ce23.config\n2026-10-20T14:34:53.5472828Z ##[endgroup]\n2026-10-20T14:34:53.5474036Z ##[group]Fetching the repository\n2026-10-20T14:34:53.5479468Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +55ad6bad497da1a9c7ddd6002ba0c718994c26e1:refs/remotes/pull/491/merge\n2026-10-20T14:34:58.4642045Z From https://github.com/d6g8k5htny-coder/Math-\n2026-10-20T14:34:58.4643305Z * [new ref] 55ad6bad497da1a9c7ddd6002ba0c718994c26e1 -> pull/491/merge\n2026-10-20T14:34:58.4645228Z ##[endgroup]\n2026-10-20T14:34:58.4645702Z ##[group]Determining the checkout info\n2026-10-20T14:34:58.4646238Z ##[endgroup]\n2026-10-20T14:34:58.4650668Z [command]/usr/bin/git sparse-checkout disable\n2026-10-20T14:34:58.4698673Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig\n2026-10-20T14:34:58.4729104Z ##[group]Checking out the ref\n2026-10-20T14:34:58.4731671Z [command]/usr/bin/git checkout --progress --force refs/remotes/pull/491/merge\n2026-10-20T14:34:58.6894235Z Note: switching to 'refs/remotes/pull/491/merge'.\n2026-10-20T14:34:58.6894646Z \n2026-10-20T14:34:58.6894915Z You are in 'detached HEAD' state. You can look around, make experimental\n2026-10-20T14:34:58.6895516Z changes and commit them, and you can discard any commits you make in this\n2026-10-20T14:34:58.6896085Z state without impacting any branches by switching back to a branch.\n2026-10-20T14:34:58.6896414Z \n2026-10-20T14:34:58.6896673Z If you want to create a new branch to retain commits you create, you may\n2026-10-20T14:34:58.6897174Z do so (now or later) by using -c with the switch command. Example:\n2026-10-20T14:34:58.6897440Z \n2026-10-20T14:34:58.6897590Z git switch -c \n2026-10-20T14:34:58.6897794Z \n2026-10-20T14:34:58.6897948Z Or undo this operation with:\n2026-10-20T14:34:58.6898132Z \n2026-10-20T14:34:58.6898272Z git switch -\n2026-10-20T14:34:58.6898459Z \n2026-10-20T14:34:58.6898736Z Turn off this advice by setting config variable advice.detachedHead to false\n2026-10-20T14:34:58.6899086Z \n2026-10-20T14:34:58.6899459Z HEAD is now at 55ad6ba Merge 8336bb7c16e34db69837b10e3678fb1bc894179c into 8c226134ac0a0169dbb43311082e5353ed5c922c\n2026-10-20T14:34:58.6910663Z ##[endgroup]\n2026-10-20T14:34:58.6955275Z [command]/usr/bin/git log -1 --format=%H\n2026-10-20T14:34:58.6982569Z 55ad6bad497da1a9c7ddd6002ba0c718994c26e1\n2026-10-20T14:34:58.6992370Z ##[group]Removing auth\n2026-10-20T14:34:58.6992788Z Removing SSH command configuration\n2026-10-20T14:34:58.6994066Z [command]/usr/bin/git config --local --name-only --get-regexp core\\.sshCommand\n2026-10-20T14:34:58.7027005Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'core\\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :\"\n2026-10-20T14:34:58.7214374Z Removing HTTP extra header\n2026-10-20T14:34:58.7216656Z [command]/usr/bin/git config --local --name-only --get-regexp http\\.https\\:\\/\\/github\\.com\\/\\.extraheader\n2026-10-20T14:34:58.7246901Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'http\\.https\\:\\/\\/github\\.com\\/\\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :\"\n2026-10-20T14:34:58.7432819Z Removing includeIf entries pointing to credentials config files\n2026-10-20T14:34:58.7434838Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\\.gitdir:\n2026-10-20T14:34:58.7462876Z includeif.gitdir:/home/runner/work/Math-/Math-/.git.path\n2026-10-20T14:34:58.7463378Z includeif.gitdir:/home/runner/work/Math-/Math-/.git/worktrees/*.path\n2026-10-20T14:34:58.7463723Z includeif.gitdir:/github/workspace/.git.path\n2026-10-20T14:34:58.7464017Z includeif.gitdir:/github/workspace/.git/worktrees/*.path\n2026-10-20T14:34:58.7469682Z [command]/usr/bin/git config --local --get-all includeif.gitdir:/home/runner/work/Math-/Math-/.git.path\n2026-10-20T14:34:58.7492947Z /home/runner/work/_temp/git-credentials-a033c5f2-6e6f-4245-b693-71066746ce23.config\n2026-10-20T14:34:58.7500782Z [command]/usr/bin/git config --local --unset includeif.gitdir:/home/runner/work/Math-/Math-/.git.path \\/home\\/runner\\/work\\/_temp\\/git\\-credentials\\-a033c5f2\\-6e6f\\-4245\\-b693\\-71066746ce23\\.config\n2026-10-20T14:34:58.7533829Z [command]/usr/bin/git config --local --get-all includeif.gitdir:/home/runner/work/Math-/Math-/.git/worktrees/*.path\n2026-10-20T14:34:58.7557111Z /home/runner/work/_temp/git-credentials-a033c5f2-6e6f-4245-b693-71066746ce23.config\n2026-10-20T14:34:58.7563042Z [command]/usr/bin/git config --local --unset includeif.gitdir:/home/runner/work/Math-/Math-/.git/worktrees/*.path \\/home\\/runner\\/work\\/_temp\\/git\\-credentials\\-a033c5f2\\-6e6f\\-4245\\-b693\\-71066746ce23\\.config\n2026-10-20T14:34:58.7593189Z [command]/usr/bin/git config --local --get-all includeif.gitdir:/github/workspace/.git.path\n2026-10-20T14:34:58.7617248Z /github/runner_temp/git-credentials-a033c5f2-6e6f-4245-b693-71066746ce23.config\n2026-10-20T14:34:58.7622849Z [command]/usr/bin/git config --local --unset includeif.gitdir:/github/workspace/.git.path \\/github\\/runner_temp\\/git\\-credentials\\-a033c5f2\\-6e6f\\-4245\\-b693\\-71066746ce23\\.config\n2026-10-20T14:34:58.7659561Z [command]/usr/bin/git config --local --get-all includeif.gitdir:/github/workspace/.git/worktrees/*.path\n2026-10-20T14:34:58.7683490Z /github/runner_temp/git-credentials-a033c5f2-6e6f-4245-b693-71066746ce23.config\n2026-10-20T14:34:58.7693379Z [command]/usr/bin/git config --local --unset includeif.gitdir:/github/workspace/.git/worktrees/*.path \\/github\\/runner_temp\\/git\\-credentials\\-a033c5f2\\-6e6f\\-4245\\-b693\\-71066746ce23\\.config\n2026-10-20T14:34:58.7724737Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url\n2026-10-20T14:34:58.7913546Z Removing credentials config '/home/runner/work/_temp/git-credentials-a033c5f2-6e6f-4245-b693-71066746ce23.config'\n2026-10-20T14:34:58.7921397Z ##[endgroup]\n2026-10-20T14:34:58.8105245Z ##[group]Run python3 -B -S frontiers/critical_ridge_20261020/c299_hosted_verify.py source --manifest-sha256 \"$C299_MANIFEST_SHA256\"\n2026-10-20T14:34:58.8105936Z \u001b[36;1mpython3 -B -S frontiers/critical_ridge_20261020/c299_hosted_verify.py source --manifest-sha256 \"$C299_MANIFEST_SHA256\"\u001b[0m\n2026-10-20T14:34:58.8106484Z \u001b[36;1mpython3 -B -S -m unittest discover -s frontiers/critical_ridge_20261020 -p test_c299_hosted_verify.py -v\u001b[0m\n2026-10-20T14:34:58.8106991Z \u001b[36;1mpython3 -B -O -S -m unittest discover -s frontiers/critical_ridge_20261020 -p test_c299_hosted_verify.py -v\u001b[0m\n2026-10-20T14:34:58.8317931Z shell: /usr/bin/bash -e {0}\n2026-10-20T14:34:58.8318232Z env:\n2026-10-20T14:34:58.8318423Z LEAN_NUM_THREADS: 2\n2026-10-20T14:34:58.8318735Z C299_MANIFEST_SHA256: e652634cd6c80faaf889704b291e14c3ae2c25a3edb37fdec5f4c8273d17fb1b\n2026-10-20T14:34:58.8319064Z ##[endgroup]\n2026-10-20T14:34:58.9268756Z test_amended_phase_receipt_matches_aggregate (test_c299_hosted_verify.HostedVerifierTests.test_amended_phase_receipt_matches_aggregate)\n2026-10-20T14:34:58.9433858Z C299 valid-phase: exit=0 timeout=False seconds=0.015824\n2026-10-20T14:34:58.9441974Z Semantic/object metadata must not exist only in the aggregate receipt. ... ok\n2026-10-20T14:34:58.9442586Z test_audit_cannot_omit_required_target_or_hide_axiom (test_c299_hosted_verify.HostedVerifierTests.test_audit_cannot_omit_required_target_or_hide_axiom)\n2026-10-20T14:34:58.9447155Z Count-only validation would accept a substituted target or sorryAx. ... ok\n2026-10-20T14:34:58.9448038Z test_build_allows_only_its_own_outputs (test_c299_hosted_verify.HostedVerifierTests.test_build_allows_only_its_own_outputs)\n2026-10-20T14:34:58.9448788Z A build may add its target object, not an unrelated replacement. ... ok\n2026-10-20T14:34:58.9449775Z test_environment_contract_strips_overrides_and_uses_declared_path (test_c299_hosted_verify.HostedVerifierTests.test_environment_contract_strips_overrides_and_uses_declared_path)\n2026-10-20T14:34:58.9454767Z An inherited tool/loader override must not survive or leak its value. ... ok\n2026-10-20T14:34:58.9455733Z test_failed_phase_receipt_and_exact_streams_survive_abort (test_c299_hosted_verify.HostedVerifierTests.test_failed_phase_receipt_and_exact_streams_survive_abort)\n2026-10-20T14:34:58.9618153Z C299 deliberate-failure: exit=7 timeout=False seconds=0.015769\n2026-10-20T14:34:58.9620531Z Raising before persistence would discard the actual failing phase. ... ok\n2026-10-20T14:34:58.9621672Z test_inactive_draft_negative_sections_reject_forged_fields (test_c299_hosted_verify.HostedVerifierTests.test_inactive_draft_negative_sections_reject_forged_fields)\n2026-10-20T14:34:58.9640475Z Section/token-only matching would accept unrelated existential fields. ... ok\n2026-10-20T14:34:58.9641557Z test_modified_source_bytes_are_rejected (test_c299_hosted_verify.HostedVerifierTests.test_modified_source_bytes_are_rejected)\n2026-10-20T14:34:58.9648646Z Dropping size/hash verification would accept the modified file. ... ok\n2026-10-20T14:34:58.9649579Z test_pending_final_acceptance_fails_closed (test_c299_hosted_verify.HostedVerifierTests.test_pending_final_acceptance_fails_closed)\n2026-10-20T14:34:58.9650388Z Collecting diagnostics must not silently qualify final acceptance. ... ok\n2026-10-20T14:34:58.9654736Z test_phase_environment_mutation_is_blocked_and_receipted (test_c299_hosted_verify.HostedVerifierTests.test_phase_environment_mutation_is_blocked_and_receipted)\n2026-10-20T14:34:58.9812625Z C299 environment-valid: exit=0 timeout=False seconds=0.015718\n2026-10-20T14:34:58.9817010Z C299 environment-mutated-0: exit=None timeout=False seconds=0.000117\n2026-10-20T14:34:58.9823279Z C299 environment-mutated-1: exit=None timeout=False seconds=9.4e-05\n2026-10-20T14:34:58.9827927Z A changed search path or injected loader must fail before the child runs. ... ok\n2026-10-20T14:34:58.9828782Z test_phase_rejects_imported_object_mutation (test_c299_hosted_verify.HostedVerifierTests.test_phase_rejects_imported_object_mutation)\n2026-10-20T14:34:59.0157530Z C299 deliberate-object-mutation: exit=0 timeout=False seconds=0.032188\n2026-10-20T14:34:59.0161506Z A successful compiler process may not alter a prior input object. ... ok\n2026-10-20T14:34:59.0162349Z test_pinned_lean_multiline_axiom_records (test_c299_hosted_verify.HostedVerifierTests.test_pinned_lean_multiline_axiom_records)\n2026-10-20T14:34:59.0163278Z Actual pinned Lean wraps the unchanged Lifetime axiom arrays. ... ok\n2026-10-20T14:34:59.0164281Z test_source_preflight_can_collect_before_final_predicate_qualification (test_c299_hosted_verify.HostedVerifierTests.test_source_preflight_can_collect_before_final_predicate_qualification)\n2026-10-20T14:34:59.0194778Z An early final-acceptance gate would block needed actual diagnostics. ... ok\n2026-10-20T14:34:59.0195756Z test_timeout_preserves_partial_stream_and_receipt (test_c299_hosted_verify.HostedVerifierTests.test_timeout_preserves_partial_stream_and_receipt)\n2026-10-20T14:34:59.1219049Z C299 deliberate-timeout: exit=-15 timeout=True seconds=0.101767\n2026-10-20T14:34:59.1221786Z Timeout handling must not discard the child output or phase result. ... ok\n2026-10-20T14:34:59.1222162Z \n2026-10-20T14:34:59.1222377Z ----------------------------------------------------------------------\n2026-10-20T14:34:59.1222836Z Ran 13 tests in 0.201s\n2026-10-20T14:34:59.1223018Z \n2026-10-20T14:34:59.1223138Z OK\n2026-10-20T14:34:59.3897597Z test_amended_phase_receipt_matches_aggregate (test_c299_hosted_verify.HostedVerifierTests.test_amended_phase_receipt_matches_aggregate)\n2026-10-20T14:34:59.4067779Z C299 valid-phase: exit=0 timeout=False seconds=0.016008\n2026-10-20T14:34:59.4076397Z Semantic/object metadata must not exist only in the aggregate receipt. ... ok\n2026-10-20T14:34:59.4077200Z test_audit_cannot_omit_required_target_or_hide_axiom (test_c299_hosted_verify.HostedVerifierTests.test_audit_cannot_omit_required_target_or_hide_axiom)\n2026-10-20T14:34:59.4081888Z Count-only validation would accept a substituted target or sorryAx. ... ok\n2026-10-20T14:34:59.4082861Z test_build_allows_only_its_own_outputs (test_c299_hosted_verify.HostedVerifierTests.test_build_allows_only_its_own_outputs)\n2026-10-20T14:34:59.4083567Z A build may add its target object, not an unrelated replacement. ... ok\n2026-10-20T14:34:59.4084347Z test_environment_contract_strips_overrides_and_uses_declared_path (test_c299_hosted_verify.HostedVerifierTests.test_environment_contract_strips_overrides_and_uses_declared_path)\n2026-10-20T14:34:59.4089715Z An inherited tool/loader override must not survive or leak its value. ... ok\n2026-10-20T14:34:59.4090491Z test_failed_phase_receipt_and_exact_streams_survive_abort (test_c299_hosted_verify.HostedVerifierTests.test_failed_phase_receipt_and_exact_streams_survive_abort)\n2026-10-20T14:34:59.4259594Z C299 deliberate-failure: exit=7 timeout=False seconds=0.015965\n2026-10-20T14:34:59.4261594Z Raising before persistence would discard the actual failing phase. ... ok\n2026-10-20T14:34:59.4262421Z test_inactive_draft_negative_sections_reject_forged_fields (test_c299_hosted_verify.HostedVerifierTests.test_inactive_draft_negative_sections_reject_forged_fields)\n2026-10-20T14:34:59.4282504Z Section/token-only matching would accept unrelated existential fields. ... ok\n2026-10-20T14:34:59.4283091Z test_modified_source_bytes_are_rejected (test_c299_hosted_verify.HostedVerifierTests.test_modified_source_bytes_are_rejected)\n2026-10-20T14:34:59.4291412Z Dropping size/hash verification would accept the modified file. ... ok\n2026-10-20T14:34:59.4292020Z test_pending_final_acceptance_fails_closed (test_c299_hosted_verify.HostedVerifierTests.test_pending_final_acceptance_fails_closed)\n2026-10-20T14:34:59.4292606Z Collecting diagnostics must not silently qualify final acceptance. ... ok\n2026-10-20T14:34:59.4293086Z test_phase_environment_mutation_is_blocked_and_receipted (test_c299_hosted_verify.HostedVerifierTests.test_phase_environment_mutation_is_blocked_and_receipted)\n2026-10-20T14:34:59.4457541Z C299 environment-valid: exit=0 timeout=False seconds=0.015744\n2026-10-20T14:34:59.4462215Z C299 environment-mutated-0: exit=None timeout=False seconds=0.000111\n2026-10-20T14:34:59.4468352Z C299 environment-mutated-1: exit=None timeout=False seconds=9.4e-05\n2026-10-20T14:34:59.4473570Z A changed search path or injected loader must fail before the child runs. ... ok\n2026-10-20T14:34:59.4474238Z test_phase_rejects_imported_object_mutation (test_c299_hosted_verify.HostedVerifierTests.test_phase_rejects_imported_object_mutation)\n2026-10-20T14:34:59.4802781Z C299 deliberate-object-mutation: exit=0 timeout=False seconds=0.032154\n2026-10-20T14:34:59.4806922Z A successful compiler process may not alter a prior input object. ... ok\n2026-10-20T14:34:59.4807636Z test_pinned_lean_multiline_axiom_records (test_c299_hosted_verify.HostedVerifierTests.test_pinned_lean_multiline_axiom_records)\n2026-10-20T14:34:59.4808507Z Actual pinned Lean wraps the unchanged Lifetime axiom arrays. ... ok\n2026-10-20T14:34:59.4809275Z test_source_preflight_can_collect_before_final_predicate_qualification (test_c299_hosted_verify.HostedVerifierTests.test_source_preflight_can_collect_before_final_predicate_qualification)\n2026-10-20T14:34:59.4839477Z An early final-acceptance gate would block needed actual diagnostics. ... ok\n2026-10-20T14:34:59.4840101Z test_timeout_preserves_partial_stream_and_receipt (test_c299_hosted_verify.HostedVerifierTests.test_timeout_preserves_partial_stream_and_receipt)\n2026-10-20T14:34:59.5865081Z C299 deliberate-timeout: exit=-15 timeout=True seconds=0.101823\n2026-10-20T14:34:59.5867291Z Timeout handling must not discard the child output or phase result. ... ok\n2026-10-20T14:34:59.5867554Z \n2026-10-20T14:34:59.5867685Z ----------------------------------------------------------------------\n2026-10-20T14:34:59.5867978Z Ran 13 tests in 0.216s\n2026-10-20T14:34:59.5868097Z \n2026-10-20T14:34:59.5868174Z OK\n2026-10-20T14:34:59.6142371Z ##[group]Run leanprover/lean-action@f061402b660e0c34644504b324e830f2991d4865\n2026-10-20T14:34:59.6142606Z with:\n2026-10-20T14:34:59.6142865Z lake-package-directory: formal\n2026-10-20T14:34:59.6143011Z auto-config: false\n2026-10-20T14:34:59.6143132Z build: false\n2026-10-20T14:34:59.6143244Z test: false\n2026-10-20T14:34:59.6143350Z lint: false\n2026-10-20T14:34:59.6143467Z use-mathlib-cache: true\n2026-10-20T14:34:59.6143604Z use-github-cache: false\n2026-10-20T14:34:59.6143733Z mk_all-check: false\n2026-10-20T14:34:59.6143871Z check-reservoir-eligibility: false\n2026-10-20T14:34:59.6144021Z leanchecker: false\n2026-10-20T14:34:59.6144145Z lean4checker: false\n2026-10-20T14:34:59.6144279Z nanoda: false\n2026-10-20T14:34:59.6144398Z nanoda-allow-sorry: true\n2026-10-20T14:34:59.6144528Z axiom-audit: false\n2026-10-20T14:34:59.6144690Z axiom-audit-allow: propext,Classical.choice,Quot.sound\n2026-10-20T14:34:59.6144887Z reinstall-transient-toolchain: false\n2026-10-20T14:34:59.6145056Z env:\n2026-10-20T14:34:59.6145164Z LEAN_NUM_THREADS: 2\n2026-10-20T14:34:59.6145372Z C299_MANIFEST_SHA256: e652634cd6c80faaf889704b291e14c3ae2c25a3edb37fdec5f4c8273d17fb1b\n2026-10-20T14:34:59.6145612Z ##[endgroup]\n2026-10-20T14:34:59.6189421Z ##[start-action display=install elan;id=__leanprover_lean-action.__run]\n2026-10-20T14:34:59.6210714Z ##[group]Run : Install Elan\n2026-10-20T14:34:59.6210894Z \u001b[36;1m: Install Elan\u001b[0m\n2026-10-20T14:34:59.6211243Z \u001b[36;1m${GITHUB_ACTION_PATH}/scripts/install_elan.sh\u001b[0m\n2026-10-20T14:34:59.6265639Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}\n2026-10-20T14:34:59.6265835Z env:\n2026-10-20T14:34:59.6265953Z LEAN_NUM_THREADS: 2\n2026-10-20T14:34:59.6266178Z C299_MANIFEST_SHA256: e652634cd6c80faaf889704b291e14c3ae2c25a3edb37fdec5f4c8273d17fb1b\n2026-10-20T14:34:59.6266421Z ##[endgroup]\n2026-10-20T14:34:59.6357171Z ##[group]Elan Installation Output\n2026-10-20T14:34:59.6932127Z info: downloading installer\n2026-10-20T14:35:01.1105334Z info: downloading https://releases.lean-lang.org/lean4/v4.34.1/lean-4.34.1-linux.tar.zst\n2026-10-20T14:35:06.4947589Z info: installing /home/runner/.elan/toolchains/leanprover--lean4---v4.34.1\n2026-10-20T14:35:12.8967387Z Lean (version 4.34.1, x86_64-unknown-linux-gnu, commit 5045d0056413266e57c625dcd7c365b10e377c52, Release)\n2026-10-20T14:35:12.9318680Z Lake version 5.0.0-src+5045d00 (Lean version 4.34.1)\n2026-10-20T14:35:12.9357988Z ##[endgroup]\n2026-10-20T14:35:12.9358239Z \n2026-10-20T14:35:12.9373814Z ##[end-action id=__leanprover_lean-action.__run;outcome=success;conclusion=success;duration_ms=13318]\n2026-10-20T14:35:12.9377562Z ##[start-action display=configure `lean-action`;id=__leanprover_lean-action.config]\n2026-10-20T14:35:12.9532643Z ##[group]Run : Configure Lean Action\n2026-10-20T14:35:12.9532848Z \u001b[36;1m: Configure Lean Action\u001b[0m\n2026-10-20T14:35:12.9533012Z \u001b[36;1m${GITHUB_ACTION_PATH}/scripts/config.sh\u001b[0m\n2026-10-20T14:35:12.9587914Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}\n2026-10-20T14:35:12.9588123Z env:\n2026-10-20T14:35:12.9588236Z LEAN_NUM_THREADS: 2\n2026-10-20T14:35:12.9588445Z C299_MANIFEST_SHA256: e652634cd6c80faaf889704b291e14c3ae2c25a3edb37fdec5f4c8273d17fb1b\n2026-10-20T14:35:12.9588687Z AUTO_CONFIG: false\n2026-10-20T14:35:12.9588803Z BUILD: false\n2026-10-20T14:35:12.9588911Z TEST: false\n2026-10-20T14:35:12.9589016Z LINT: false\n2026-10-20T14:35:12.9589123Z ##[endgroup]\n2026-10-20T14:35:12.9679922Z ##[group]Configure lean-action\n2026-10-20T14:35:12.9724403Z ##[end-action id=__leanprover_lean-action.config;outcome=success;conclusion=success;duration_ms=34]\n2026-10-20T14:35:12.9727739Z ##[start-action display=reinstall transient toolchain;id=__leanprover_lean-action.__run_2]\n2026-10-20T14:35:12.9740495Z ##[end-action id=__leanprover_lean-action.__run_2;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T14:35:12.9742578Z ##[start-action display=ensure all files are imported;id=__leanprover_lean-action.mk_all]\n2026-10-20T14:35:12.9744962Z ##[end-action id=__leanprover_lean-action.mk_all;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T14:35:12.9746245Z ##[start-action display=Run actions/cache/restore@caa296126883cff596d87d8935842f9db880ef25;id=__leanprover_lean-action.__actions_cache]\n2026-10-20T14:35:12.9761437Z ##[end-action id=__leanprover_lean-action.__actions_cache;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T14:35:12.9762591Z ##[start-action display=detect mathlib;id=__leanprover_lean-action.detect-mathlib]\n2026-10-20T14:35:12.9764529Z ##[end-action id=__leanprover_lean-action.detect-mathlib;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T14:35:12.9765452Z ##[start-action display=get mathlib cache;id=__leanprover_lean-action.__run_3]\n2026-10-20T14:35:12.9842605Z ##[group]Run : Get Mathlib Cache\n2026-10-20T14:35:12.9842888Z \u001b[36;1m: Get Mathlib Cache\u001b[0m\n2026-10-20T14:35:12.9843103Z \u001b[36;1mecho \"::group::Mathlib Cache\"\u001b[0m\n2026-10-20T14:35:12.9843334Z \u001b[36;1mlake exe cache get\u001b[0m\n2026-10-20T14:35:12.9843559Z \u001b[36;1mecho \"::endgroup::\"\u001b[0m\n2026-10-20T14:35:12.9843756Z \u001b[36;1mecho\u001b[0m\n2026-10-20T14:35:12.9899148Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}\n2026-10-20T14:35:12.9899368Z env:\n2026-10-20T14:35:12.9899505Z LEAN_NUM_THREADS: 2\n2026-10-20T14:35:12.9899758Z C299_MANIFEST_SHA256: e652634cd6c80faaf889704b291e14c3ae2c25a3edb37fdec5f4c8273d17fb1b\n2026-10-20T14:35:12.9900019Z ##[endgroup]\n2026-10-20T14:35:13.0052110Z ##[group]Mathlib Cache\n2026-10-20T14:35:13.0394259Z info: mathlib: cloning https://github.com/leanprover-community/mathlib4.git\n2026-10-20T14:35:39.3749859Z info: mathlib: checking out revision 'd13f23b723b8a846827a245b89c10fc7d3f11612'\n2026-10-20T14:35:40.9632419Z info: plausible: cloning https://github.com/leanprover-community/plausible\n2026-10-20T14:35:41.4335206Z info: plausible: checking out revision '118aa17ee84656b8bd727fef7c458ee8c833385c'\n2026-10-20T14:35:41.4457915Z info: LeanSearchClient: cloning https://github.com/leanprover-community/LeanSearchClient\n2026-10-20T14:35:41.8311175Z info: LeanSearchClient: checking out revision 'ddf04cf3949fa556442341e87d47f9f6e6074707'\n2026-10-20T14:35:41.8421257Z info: importGraph: cloning https://github.com/leanprover-community/import-graph\n2026-10-20T14:35:42.5717635Z info: importGraph: checking out revision 'e928b72544873815af278d38681b31c0293588e3'\n2026-10-20T14:35:42.5880792Z info: proofwidgets: cloning https://github.com/leanprover-community/ProofWidgets4\n2026-10-20T14:35:43.4349971Z info: proofwidgets: checking out revision '106ff4fafc74ef4ac99d81dbf3ab399118f497a5'\n2026-10-20T14:35:43.8657056Z info: aesop: cloning https://github.com/leanprover-community/aesop\n2026-10-20T14:35:44.8177968Z info: aesop: checking out revision '355695d523e41d0554926416cba2a2b3544fbbc9'\n2026-10-20T14:35:44.8339696Z info: Qq: cloning https://github.com/leanprover-community/quote4\n2026-10-20T14:35:45.3148537Z info: Qq: checking out revision '6a489d9af5d0c47e5b259e2e8bcdfc1811b5a259'\n2026-10-20T14:35:45.3269988Z info: batteries: cloning https://github.com/leanprover-community/batteries\n2026-10-20T14:35:52.1186392Z info: batteries: checking out revision 'f2effa3d803fda822b1f97b806c47cf2adfbcbc2'\n2026-10-20T14:35:52.1495958Z info: Cli: cloning https://github.com/leanprover/lean4-cli\n2026-10-20T14:35:52.5996682Z info: Cli: checking out revision 'e92c9f15fdfacc8536f31cfb3b7ad26c3c8cd204'\n2026-10-20T14:35:52.9115038Z ✔ [1/5] Built Cache.Cli (248ms)\n2026-10-20T14:35:53.2118257Z ✔ [2/5] Built Cache.Lean (289ms)\n2026-10-20T14:35:57.7170819Z ✔ [5/12] Built Cache.Env (298ms)\n2026-10-20T14:35:58.0230125Z ✔ [7/42] Built Cache.Infra (362ms)\n2026-10-20T14:35:58.1231974Z ✔ [8/42] Built Batteries.Tactic.OpenPrivate (743ms)\n2026-10-20T14:35:58.1232414Z ✔ [9/42] Built Cache.Cli:c.o (97ms)\n2026-10-20T14:35:58.2233792Z ✔ [10/42] Built Cache.Lean:c.o (102ms)\n2026-10-20T14:35:58.2234215Z ✔ [11/42] Built Cache.Env:c.o (102ms)\n2026-10-20T14:35:58.4227440Z ✔ [12/42] Built Cache.Infra:c.o (152ms)\n2026-10-20T14:35:59.1246686Z ✔ [13/42] Built Batteries.Tactic.OpenPrivate:c.o (872ms)\n2026-10-20T14:35:59.5252386Z ✔ [14/42] Built Cache.IO (1.1s)\n2026-10-20T14:36:00.1255392Z ✔ [15/42] Built Cache.Hashing (670ms)\n2026-10-20T14:36:00.5261657Z ✔ [16/42] Built Cache.Hashing:c.o (332ms)\n2026-10-20T14:36:00.6262385Z ✔ [17/42] Built Cache.IO:c.o (1.2s)\n2026-10-20T14:36:01.7282634Z ✔ [18/42] Built Cache.Requests (1.3s)\n2026-10-20T14:36:02.2307251Z ✔ [19/42] Built Cache.Marker (496ms)\n2026-10-20T14:36:02.3309673Z ✔ [20/42] Built Cache.Marker:c.o (72ms)\n2026-10-20T14:36:02.9316787Z ✔ [21/42] Built Cache.Query (586ms)\n2026-10-20T14:36:03.4324607Z ✔ [22/42] Built Cache.Upload.Dest (557ms)\n2026-10-20T14:36:03.6334177Z ✔ [23/42] Built Cache.Requests:c.o (1.9s)\n2026-10-20T14:36:03.6334983Z ✔ [24/42] Built Cache.Query:c.o (193ms)\n2026-10-20T14:36:03.7335858Z ✔ [25/42] Built Cache.Upload.Dest:c.o (87ms)\n2026-10-20T14:36:04.2352386Z ✔ [26/42] Built Cache.Upload.Rclone (555ms)\n2026-10-20T14:36:04.2352949Z ✔ [27/42] Built Cache.Warning (575ms)\n2026-10-20T14:36:04.4346777Z ✔ [28/42] Built Cache.Warning:c.o (163ms)\n2026-10-20T14:36:04.5347590Z ✔ [29/42] Built Cache.Upload.Rclone:c.o (116ms)\n2026-10-20T14:36:04.7350165Z ✔ [30/42] Built Cache.Upload.Curl (487ms)\n2026-10-20T14:36:04.8363599Z ✔ [31/42] Built Cache.Upload.Curl:c.o (126ms)\n2026-10-20T14:36:05.2346559Z ✔ [32/42] Built Cache.Upload.Azure (485ms)\n2026-10-20T14:36:05.3348019Z ✔ [33/42] Built Cache.Upload.Azure:c.o (88ms)\n2026-10-20T14:36:05.4349394Z ✔ [34/42] Built Cache.Upload.S3 (586ms)\n2026-10-20T14:36:05.6352137Z ✔ [35/42] Built Cache.Upload.S3:c.o (207ms)\n2026-10-20T14:36:05.9355815Z ✔ [36/42] Built Cache.Upload.Defs (513ms)\n2026-10-20T14:36:06.0357080Z ✔ [37/42] Built Cache.Upload.Defs:c.o (104ms)\n2026-10-20T14:36:06.4360339Z ✔ [38/42] Built Cache.Upload (476ms)\n2026-10-20T14:36:06.5362400Z ✔ [39/42] Built Cache.Upload:c.o (84ms)\n2026-10-20T14:36:07.3360567Z ✔ [40/42] Built Cache.Main (886ms)\n2026-10-20T14:36:07.9367258Z ✔ [41/42] Built Cache.Main:c.o (585ms)\n2026-10-20T14:36:08.5395088Z ✔ [42/42] Built cache:exe (621ms)\n2026-10-20T14:36:10.7547277Z Current branch: HEAD\n2026-10-20T14:36:10.7547645Z Using cache from origin: (some leanprover-community/mathlib4)\n2026-10-20T14:36:10.7548210Z Attempting to download 8908 file(s) from leanprover-community/mathlib4 cache at https://cache.mathlib.org/mathlib4-master\n2026-10-20T14:36:14.3125525Z \n2026-10-20T14:36:14.4217814Z Downloaded: 1 file(s) [attempted 1/8908 = 0%, 4 KB/s], Decompressed: 0\n2026-10-20T14:36:14.5262067Z Downloaded: 63 file(s) [attempted 63/8908 = 0%, 2390 KB/s], Decompressed: 17\n2026-10-20T14:36:14.6253566Z Downloaded: 190 file(s) [attempted 190/8908 = 2%, 453 KB/s], Decompressed: 46\n2026-10-20T14:36:14.7291167Z Downloaded: 308 file(s) [attempted 308/8908 = 3%, 2923 KB/s], Decompressed: 103\n2026-10-20T14:36:14.8300955Z Downloaded: 424 file(s) [attempted 424/8908 = 4%, 595 KB/s], Decompressed: 103\n2026-10-20T14:36:14.9296310Z Downloaded: 503 file(s) [attempted 503/8908 = 5%, 1527 KB/s], Decompressed: 103\n2026-10-20T14:36:15.0302715Z Downloaded: 591 file(s) [attempted 591/8908 = 6%, 567 KB/s], Decompressed: 103\n2026-10-20T14:36:15.1312575Z Downloaded: 693 file(s) [attempted 693/8908 = 7%, 1098 KB/s], Decompressed: 277\n2026-10-20T14:36:15.2326401Z Downloaded: 806 file(s) [attempted 806/8908 = 9%, 1718 KB/s], Decompressed: 277\n2026-10-20T14:36:15.3351525Z Downloaded: 912 file(s) [attempted 912/8908 = 10%, 232 KB/s], Decompressed: 277\n2026-10-20T14:36:15.4582393Z Downloaded: 989 file(s) [attempted 989/8908 = 11%, 2758 KB/s], Decompressed: 277\n2026-10-20T14:36:15.5548036Z Downloaded: 1052 file(s) [attempted 1052/8908 = 11%, 230 KB/s], Decompressed: 277\n2026-10-20T14:36:15.6562639Z Downloaded: 1150 file(s) [attempted 1150/8908 = 12%, 1257 KB/s], Decompressed: 277\n2026-10-20T14:36:15.7544041Z Downloaded: 1242 file(s) [attempted 1242/8908 = 13%, 256 KB/s], Decompressed: 277\n2026-10-20T14:36:15.8573008Z Downloaded: 1334 file(s) [attempted 1334/8908 = 14%, 102 KB/s], Decompressed: 635\n2026-10-20T14:36:15.9654502Z Downloaded: 1419 file(s) [attempted 1419/8908 = 15%, 653 KB/s], Decompressed: 635\n2026-10-20T14:36:16.0684714Z Downloaded: 1520 file(s) [attempted 1520/8908 = 17%, 1876 KB/s], Decompressed: 635\n2026-10-20T14:36:16.1762650Z Downloaded: 1617 file(s) [attempted 1617/8908 = 18%, 314 KB/s], Decompressed: 635\n2026-10-20T14:36:16.2808536Z Downloaded: 1729 file(s) [attempted 1729/8908 = 19%, 695 KB/s], Decompressed: 635\n2026-10-20T14:36:16.3808163Z Downloaded: 1842 file(s) [attempted 1842/8908 = 20%, 1175 KB/s], Decompressed: 635\n2026-10-20T14:36:16.4840728Z Downloaded: 1926 file(s) [attempted 1926/8908 = 21%, 416 KB/s], Decompressed: 635\n2026-10-20T14:36:16.5908338Z Downloaded: 2030 file(s) [attempted 2030/8908 = 22%, 253 KB/s], Decompressed: 635\n2026-10-20T14:36:16.7012487Z Downloaded: 2133 file(s) [attempted 2133/8908 = 23%, 761 KB/s], Decompressed: 635\n2026-10-20T14:36:16.8332455Z Downloaded: 2217 file(s) [attempted 2217/8908 = 24%, 259 KB/s], Decompressed: 635\n2026-10-20T14:36:16.9323932Z Downloaded: 2292 file(s) [attempted 2292/8908 = 25%, 366 KB/s], Decompressed: 635\n2026-10-20T14:36:17.0342432Z Downloaded: 2376 file(s) [attempted 2376/8908 = 26%, 153 KB/s], Decompressed: 635\n2026-10-20T14:36:17.1372232Z Downloaded: 2455 file(s) [attempted 2455/8908 = 27%, 1133 KB/s], Decompressed: 635\n2026-10-20T14:36:17.2547852Z Downloaded: 2542 file(s) [attempted 2542/8908 = 28%, 780 KB/s], Decompressed: 1294\n2026-10-20T14:36:17.3544458Z Downloaded: 2609 file(s) [attempted 2609/8908 = 29%, 793 KB/s], Decompressed: 1294\n2026-10-20T14:36:17.4691542Z Downloaded: 2711 file(s) [attempted 2711/8908 = 30%, 296 KB/s], Decompressed: 1294\n2026-10-20T14:36:17.5828255Z Downloaded: 2809 file(s) [attempted 2809/8908 = 31%, 380 KB/s], Decompressed: 1294\n2026-10-20T14:36:17.6867778Z Downloaded: 2900 file(s) [attempted 2900/8908 = 32%, 441 KB/s], Decompressed: 1294\n2026-10-20T14:36:17.7924885Z Downloaded: 2984 file(s) [attempted 2984/8908 = 33%, 116 KB/s], Decompressed: 1294\n2026-10-20T14:36:17.8932613Z Downloaded: 3068 file(s) [attempted 3068/8908 = 34%, 1720 KB/s], Decompressed: 1294\n2026-10-20T14:36:17.9949897Z Downloaded: 3136 file(s) [attempted 3136/8908 = 35%, 142 KB/s], Decompressed: 1294\n2026-10-20T14:36:18.0997912Z Downloaded: 3236 file(s) [attempted 3236/8908 = 36%, 793 KB/s], Decompressed: 1294\n2026-10-20T14:36:18.2104907Z Downloaded: 3330 file(s) [attempted 3330/8908 = 37%, 177 KB/s], Decompressed: 1294\n2026-10-20T14:36:18.3231476Z Downloaded: 3409 file(s) [attempted 3409/8908 = 38%, 2758 KB/s], Decompressed: 1294\n2026-10-20T14:36:18.4287709Z Downloaded: 3479 file(s) [attempted 3479/8908 = 39%, 243 KB/s], Decompressed: 1294\n2026-10-20T14:36:18.5406342Z Downloaded: 3539 file(s) [attempted 3539/8908 = 39%, 84 KB/s], Decompressed: 1294\n2026-10-20T14:36:18.6399146Z Downloaded: 3635 file(s) [attempted 3635/8908 = 40%, 882 KB/s], Decompressed: 1294\n2026-10-20T14:36:18.7952791Z Downloaded: 3705 file(s) [attempted 3705/8908 = 41%, 103 KB/s], Decompressed: 1294\n2026-10-20T14:36:18.8927494Z Downloaded: 3775 file(s) [attempted 3775/8908 = 42%, 222 KB/s], Decompressed: 1294\n2026-10-20T14:36:18.9933169Z Downloaded: 3897 file(s) [attempted 3897/8908 = 43%, 2138 KB/s], Decompressed: 1294\n2026-10-20T14:36:19.0986170Z Downloaded: 4022 file(s) [attempted 4022/8908 = 45%, 1364 KB/s], Decompressed: 1294\n2026-10-20T14:36:19.2011616Z Downloaded: 4116 file(s) [attempted 4116/8908 = 46%, 845 KB/s], Decompressed: 1294\n2026-10-20T14:36:19.3001983Z Downloaded: 4200 file(s) [attempted 4200/8908 = 47%, 1739 KB/s], Decompressed: 1294\n2026-10-20T14:36:19.4006516Z Downloaded: 4287 file(s) [attempted 4287/8908 = 48%, 7836 KB/s], Decompressed: 1294\n2026-10-20T14:36:19.5032537Z Downloaded: 4378 file(s) [attempted 4378/8908 = 49%, 1128 KB/s], Decompressed: 1294\n2026-10-20T14:36:19.6005547Z Downloaded: 4462 file(s) [attempted 4462/8908 = 50%, 808 KB/s], Decompressed: 1294\n2026-10-20T14:36:19.7012717Z Downloaded: 4565 file(s) [attempted 4565/8908 = 51%, 182 KB/s], Decompressed: 1294\n2026-10-20T14:36:19.8082875Z Downloaded: 4656 file(s) [attempted 4656/8908 = 52%, 2699 KB/s], Decompressed: 1294\n2026-10-20T14:36:19.9211888Z Downloaded: 4748 file(s) [attempted 4748/8908 = 53%, 93 KB/s], Decompressed: 1294\n2026-10-20T14:36:20.0292490Z Downloaded: 4808 file(s) [attempted 4808/8908 = 53%, 57 KB/s], Decompressed: 2511\n2026-10-20T14:36:20.1392868Z Downloaded: 4897 file(s) [attempted 4897/8908 = 54%, 142 KB/s], Decompressed: 2511\n2026-10-20T14:36:20.2392270Z Downloaded: 5005 file(s) [attempted 5005/8908 = 56%, 327 KB/s], Decompressed: 2511\n2026-10-20T14:36:20.3395379Z Downloaded: 5111 file(s) [attempted 5111/8908 = 57%, 757 KB/s], Decompressed: 2511\n2026-10-20T14:36:20.4670047Z Downloaded: 5186 file(s) [attempted 5186/8908 = 58%, 699 KB/s], Decompressed: 2511\n2026-10-20T14:36:20.5683099Z Downloaded: 5224 file(s) [attempted 5224/8908 = 58%, 196 KB/s], Decompressed: 2511\n2026-10-20T14:36:20.6705051Z Downloaded: 5325 file(s) [attempted 5325/8908 = 59%, 485 KB/s], Decompressed: 2511\n2026-10-20T14:36:20.7732924Z Downloaded: 5419 file(s) [attempted 5419/8908 = 60%, 281 KB/s], Decompressed: 2511\n2026-10-20T14:36:20.8792687Z Downloaded: 5505 file(s) [attempted 5505/8908 = 61%, 229 KB/s], Decompressed: 2511\n2026-10-20T14:36:20.9775840Z Downloaded: 5606 file(s) [attempted 5606/8908 = 62%, 65 KB/s], Decompressed: 2511\n2026-10-20T14:36:21.0777584Z Downloaded: 5700 file(s) [attempted 5700/8908 = 63%, 1635 KB/s], Decompressed: 2511\n2026-10-20T14:36:21.1786091Z Downloaded: 5784 file(s) [attempted 5784/8908 = 64%, 48 KB/s], Decompressed: 2511\n2026-10-20T14:36:21.2902756Z Downloaded: 5850 file(s) [attempted 5850/8908 = 65%, 77 KB/s], Decompressed: 2511\n2026-10-20T14:36:21.3948584Z Downloaded: 5936 file(s) [attempted 5936/8908 = 66%, 375 KB/s], Decompressed: 2511\n2026-10-20T14:36:21.4924296Z Downloaded: 5993 file(s) [attempted 5993/8908 = 67%, 79 KB/s], Decompressed: 2511\n2026-10-20T14:36:21.5956198Z Downloaded: 6058 file(s) [attempted 6058/8908 = 68%, 365 KB/s], Decompressed: 2511\n2026-10-20T14:36:21.6952674Z Downloaded: 6169 file(s) [attempted 6169/8908 = 69%, 1853 KB/s], Decompressed: 2511\n2026-10-20T14:36:21.7948734Z Downloaded: 6287 file(s) [attempted 6287/8908 = 70%, 228 KB/s], Decompressed: 2511\n2026-10-20T14:36:21.9254259Z Downloaded: 6363 file(s) [attempted 6363/8908 = 71%, 1347 KB/s], Decompressed: 2511\n2026-10-20T14:36:22.0249994Z Downloaded: 6435 file(s) [attempted 6435/8908 = 72%, 940 KB/s], Decompressed: 2511\n2026-10-20T14:36:22.1342147Z Downloaded: 6553 file(s) [attempted 6553/8908 = 73%, 107 KB/s], Decompressed: 2511\n2026-10-20T14:36:22.2340454Z Downloaded: 6652 file(s) [attempted 6652/8908 = 74%, 1887 KB/s], Decompressed: 2511\n2026-10-20T14:36:22.3402324Z Downloaded: 6754 file(s) [attempted 6754/8908 = 75%, 785 KB/s], Decompressed: 2511\n2026-10-20T14:36:22.4392392Z Downloaded: 6827 file(s) [attempted 6827/8908 = 76%, 190 KB/s], Decompressed: 2511\n2026-10-20T14:36:22.5412252Z Downloaded: 6931 file(s) [attempted 6931/8908 = 77%, 1729 KB/s], Decompressed: 2511\n2026-10-20T14:36:22.6432600Z Downloaded: 7036 file(s) [attempted 7036/8908 = 78%, 238 KB/s], Decompressed: 2511\n2026-10-20T14:36:22.7407090Z Downloaded: 7120 file(s) [attempted 7120/8908 = 79%, 100 KB/s], Decompressed: 2511\n2026-10-20T14:36:22.8461505Z Downloaded: 7279 file(s) [attempted 7279/8908 = 81%, 1872 KB/s], Decompressed: 2511\n2026-10-20T14:36:22.9465010Z Downloaded: 7373 file(s) [attempted 7373/8908 = 82%, 1363 KB/s], Decompressed: 2511\n2026-10-20T14:36:23.0465613Z Downloaded: 7548 file(s) [attempted 7548/8908 = 84%, 894 KB/s], Decompressed: 2511\n2026-10-20T14:36:23.1464044Z Downloaded: 7721 file(s) [attempted 7721/8908 = 86%, 625 KB/s], Decompressed: 2511\n2026-10-20T14:36:23.2468305Z Downloaded: 7861 file(s) [attempted 7861/8908 = 88%, 3272 KB/s], Decompressed: 2511\n2026-10-20T14:36:23.3513265Z Downloaded: 8037 file(s) [attempted 8037/8908 = 90%, 5217 KB/s], Decompressed: 2511\n2026-10-20T14:36:23.4497299Z Downloaded: 8187 file(s) [attempted 8187/8908 = 91%, 767 KB/s], Decompressed: 2511\n2026-10-20T14:36:23.5532344Z Downloaded: 8356 file(s) [attempted 8356/8908 = 93%, 3149 KB/s], Decompressed: 2511\n2026-10-20T14:36:23.7183763Z Downloaded: 8517 file(s) [attempted 8517/8908 = 95%, 794 KB/s], Decompressed: 2511\n2026-10-20T14:36:23.8322602Z Downloaded: 8644 file(s) [attempted 8644/8908 = 97%, 416 KB/s], Decompressed: 2511\n2026-10-20T14:36:23.9354807Z Downloaded: 8745 file(s) [attempted 8745/8908 = 98%, 56 KB/s], Decompressed: 2511\n2026-10-20T14:36:23.9393411Z Downloaded: 8906 file(s) [attempted 8906/8908 = 99%, 344 KB/s], Decompressed: 2511\n2026-10-20T14:36:23.9412232Z Downloaded: 8908 file(s) [attempted 8908/8908 = 100%, 344 KB/s], Decompressed: 2511\n2026-10-20T14:36:47.0403160Z Decompressed 8908 file(s)\n2026-10-20T14:36:47.0403392Z Already decompressed 8908 file(s)\n2026-10-20T14:36:47.1098883Z ##[endgroup]\n2026-10-20T14:36:47.1099025Z \n2026-10-20T14:36:47.1107846Z ##[end-action id=__leanprover_lean-action.__run_3;outcome=success;conclusion=success;duration_ms=94134]\n2026-10-20T14:36:47.1134485Z ##[start-action display=build d6g8k5htny-coder/Math-;id=__leanprover_lean-action.build]\n2026-10-20T14:36:47.1137877Z ##[end-action id=__leanprover_lean-action.build;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T14:36:47.1139355Z ##[start-action display=Run actions/cache/save@caa296126883cff596d87d8935842f9db880ef25;id=__leanprover_lean-action.__actions_cache_2]\n2026-10-20T14:36:47.1141893Z ##[end-action id=__leanprover_lean-action.__actions_cache_2;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T14:36:47.1143881Z ##[start-action display=test d6g8k5htny-coder/Math-;id=__leanprover_lean-action.test]\n2026-10-20T14:36:47.1146289Z ##[end-action id=__leanprover_lean-action.test;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T14:36:47.1147627Z ##[start-action display=lint d6g8k5htny-coder/Math-;id=__leanprover_lean-action.lint]\n2026-10-20T14:36:47.1149853Z ##[end-action id=__leanprover_lean-action.lint;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T14:36:47.1150796Z ##[start-action display=check reservoir eligibility;id=__leanprover_lean-action.__run_4]\n2026-10-20T14:36:47.1152739Z ##[end-action id=__leanprover_lean-action.__run_4;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T14:36:47.1154201Z ##[start-action display=check environment with leanchecker;id=__leanprover_lean-action.__run_5]\n2026-10-20T14:36:47.1156571Z ##[end-action id=__leanprover_lean-action.__run_5;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T14:36:47.1157635Z ##[start-action display=check environment with nanoda;id=__leanprover_lean-action.nanoda]\n2026-10-20T14:36:47.1159270Z ##[end-action id=__leanprover_lean-action.nanoda;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T14:36:47.1160448Z ##[start-action display=audit axioms with axiom-audit;id=__leanprover_lean-action.axiom-audit]\n2026-10-20T14:36:47.1181461Z ##[end-action id=__leanprover_lean-action.axiom-audit;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T14:36:47.1239032Z ##[group]Run cd formal\n2026-10-20T14:36:47.1239212Z \u001b[36;1mcd formal\u001b[0m\n2026-10-20T14:36:47.1239517Z \u001b[36;1mlake env python3 -B -S ../frontiers/critical_ridge_20261020/c299_hosted_verify.py execute --manifest-sha256 \"$C299_MANIFEST_SHA256\"\u001b[0m\n2026-10-20T14:36:47.1292402Z shell: /usr/bin/bash -e {0}\n2026-10-20T14:36:47.1292545Z env:\n2026-10-20T14:36:47.1292656Z LEAN_NUM_THREADS: 2\n2026-10-20T14:36:47.1292868Z C299_MANIFEST_SHA256: e652634cd6c80faaf889704b291e14c3ae2c25a3edb37fdec5f4c8273d17fb1b\n2026-10-20T14:36:47.1293117Z ##[endgroup]\n2026-10-20T14:36:47.9839444Z C299 runtime-print-prefix: exit=0 timeout=False seconds=0.031953\n2026-10-20T14:36:48.0241686Z C299 runtime-version: exit=0 timeout=False seconds=0.03193\n2026-10-20T14:36:52.9940751Z C299 build-Lifetime: exit=0 timeout=False seconds=4.924897\n2026-10-20T14:36:57.3737560Z C299 build-TorusTopology: exit=0 timeout=False seconds=4.324235\n2026-10-20T14:37:03.0843257Z C299 build-MorseFiniteCritical: exit=0 timeout=False seconds=5.679667\n2026-10-20T14:37:15.8375822Z C299 build-CriticalRidge: exit=1 timeout=False seconds=12.745656\n2026-10-20T14:37:15.9277271Z Traceback (most recent call last):\n2026-10-20T14:37:15.9277620Z File \"/home/runner/work/Math-/Math-/formal/../frontiers/critical_ridge_20261020/c299_hosted_verify.py\", line 626, in \n2026-10-20T14:37:15.9278884Z main()\n2026-10-20T14:37:15.9279369Z File \"/home/runner/work/Math-/Math-/formal/../frontiers/critical_ridge_20261020/c299_hosted_verify.py\", line 622, in main\n2026-10-20T14:37:15.9280015Z execute(root, args.manifest_sha256)\n2026-10-20T14:37:15.9280425Z File \"/home/runner/work/Math-/Math-/formal/../frontiers/critical_ridge_20261020/c299_hosted_verify.py\", line 540, in execute\n2026-10-20T14:37:15.9280936Z rec, output, _ = run_phase('build-' + module, args, packet / 'project', env, evidence, report,\n2026-10-20T14:37:15.9281487Z ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n2026-10-20T14:37:15.9284158Z File \"/home/runner/work/Math-/Math-/formal/../frontiers/critical_ridge_20261020/c299_hosted_verify.py\", line 413, in run_phase\n2026-10-20T14:37:15.9284727Z raise RuntimeError(f'C299 {name} unexpected exit: {code}; timed_out={timed_out}; '\n2026-10-20T14:37:15.9285330Z RuntimeError: C299 build-CriticalRidge unexpected exit: 1; timed_out=False; spawn_error=None; object_error=build must add only its own target object outputs; environment_error=None\n2026-10-20T14:37:15.9733386Z ##[error]Process completed with exit code 1.\n2026-10-20T14:37:15.9881228Z ##[group]Run actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9\n2026-10-20T14:37:15.9881468Z with:\n2026-10-20T14:37:15.9881592Z name: c299-hosted-39440510935-1\n2026-10-20T14:37:15.9881747Z path: .lake/c299-hosted-evidence/\n2026-10-20T14:37:15.9881901Z include-hidden-files: true\n2026-10-20T14:37:15.9882041Z if-no-files-found: warn\n2026-10-20T14:37:15.9882169Z retention-days: 90\n2026-10-20T14:37:15.9882298Z compression-level: 6\n2026-10-20T14:37:15.9882423Z overwrite: false\n2026-10-20T14:37:15.9882536Z archive: true\n2026-10-20T14:37:15.9882643Z env:\n2026-10-20T14:37:15.9882749Z LEAN_NUM_THREADS: 2\n2026-10-20T14:37:15.9882963Z C299_MANIFEST_SHA256: e652634cd6c80faaf889704b291e14c3ae2c25a3edb37fdec5f4c8273d17fb1b\n2026-10-20T14:37:15.9883200Z ##[endgroup]\n2026-10-20T14:37:16.1417488Z With the provided path, there will be 33 files uploaded\n2026-10-20T14:37:16.1423015Z Artifact name is valid!\n2026-10-20T14:37:16.1423361Z Root directory input is valid!\n2026-10-20T14:37:16.4699552Z Uploading artifact: c299-hosted-39440510935-1.zip\n2026-10-20T14:37:16.4728369Z Beginning upload of artifact content to blob storage\n2026-10-20T14:37:16.8946969Z Uploaded bytes 480098\n2026-10-20T14:37:16.9318858Z Finished uploading artifact content to blob storage!\n2026-10-20T14:37:16.9319696Z SHA256 digest of uploaded artifact is da3a551f550fb50eea816f1ad00c3f0f6532f4192ba99ac5805bd58522c72a46\n2026-10-20T14:37:16.9320156Z Finalizing artifact upload\n2026-10-20T14:37:17.3028816Z Artifact c299-hosted-39440510935-1 successfully finalized. Artifact ID 12274830680\n2026-10-20T14:37:17.3029521Z Artifact c299-hosted-39440510935-1 has been successfully uploaded! Final size is 480098 bytes. Artifact ID is 12274830680\n2026-10-20T14:37:17.3032712Z Artifact download URL: https://github.com/d6g8k5htny-coder/Math-/actions/runs/39440510935/artifacts/12274830680\n2026-10-20T14:37:17.3184754Z Post job cleanup.\n2026-10-20T14:37:17.3814721Z [command]/usr/bin/git version\n2026-10-20T14:37:17.3856500Z git version 2.55.0\n2026-10-20T14:37:17.3882353Z Temporarily overriding HOME='/home/runner/work/_temp/c1b3e051-9bc3-4ccf-9422-3e321df60c11' before making global git config changes\n2026-10-20T14:37:17.3883024Z Adding repository directory to the temporary git global config as a safe directory\n2026-10-20T14:37:17.3886029Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/Math-/Math-\n2026-10-20T14:37:17.3915860Z Removing SSH command configuration\n2026-10-20T14:37:17.3920761Z [command]/usr/bin/git config --local --name-only --get-regexp core\\.sshCommand\n2026-10-20T14:37:17.3957305Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'core\\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :\"\n2026-10-20T14:37:17.4180716Z Removing HTTP extra header\n2026-10-20T14:37:17.4185645Z [command]/usr/bin/git config --local --name-only --get-regexp http\\.https\\:\\/\\/github\\.com\\/\\.extraheader\n2026-10-20T14:37:17.4220913Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'http\\.https\\:\\/\\/github\\.com\\/\\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :\"\n2026-10-20T14:37:17.4421765Z Removing includeIf entries pointing to credentials config files\n2026-10-20T14:37:17.4428206Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\\.gitdir:\n2026-10-20T14:37:17.4459033Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url\n2026-10-20T14:37:17.4762617Z Cleaning up orphan processes\n" + }, + "isError": false +} diff --git a/frontiers/critical_ridge_20261020/hosted-development2/native/c299_dev_run2.json b/frontiers/critical_ridge_20261020/hosted-development2/native/c299_dev_run2.json new file mode 100644 index 000000000..9a1575520 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development2/native/c299_dev_run2.json @@ -0,0 +1,22 @@ +{ + "content": [ + { + "type": "text", + "text": "Action completed." + } + ], + "structuredContent": { + "content": "{\"id\":39440510935,\"name\":\"C299 critical ridge (hosted Lean, no scientific promotion)\",\"node_id\":\"WFR_kwLOUphbdM8AAAAJLtZv1w\",\"head_branch\":\"codex/c299-critical-ridge-20261020\",\"head_sha\":\"8336bb7c16e34db69837b10e3678fb1bc894179c\",\"path\":\".github/workflows/c299-critical-ridge.yml\",\"display_title\":\"C299: construct the actual negative partial-gradient ridge\",\"run_number\":2,\"event\":\"pull_request\",\"status\":\"completed\",\"conclusion\":\"failure\",\"workflow_id\":390636492,\"check_suite_id\":106877090802,\"check_suite_node_id\":\"CS_kwDOUphbdM8AAAAY4l778g\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39440510935\",\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-/actions/runs/39440510935\",\"pull_requests\":[{\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/pulls/491\",\"id\":4937180021,\"number\":491,\"head\":{\"ref\":\"codex/c299-critical-ridge-20261020\",\"sha\":\"8336bb7c16e34db69837b10e3678fb1bc894179c\",\"repo\":{\"id\":1385716596,\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-\",\"name\":\"Math-\"}},\"base\":{\"ref\":\"main\",\"sha\":\"8c226134ac0a0169dbb43311082e5353ed5c922c\",\"repo\":{\"id\":1385716596,\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-\",\"name\":\"Math-\"}}}],\"created_at\":\"2026-10-20T14:34:48Z\",\"updated_at\":\"2026-10-20T14:37:19Z\",\"actor\":{\"login\":\"d6g8k5htny-coder\",\"id\":249851642,\"node_id\":\"U_kgDODuRu-g\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/249851642?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/d6g8k5htny-coder\",\"html_url\":\"https://github.com/d6g8k5htny-coder\",\"followers_url\":\"https://api.github.com/users/d6g8k5htny-coder/followers\",\"following_url\":\"https://api.github.com/users/d6g8k5htny-coder/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/d6g8k5htny-coder/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/d6g8k5htny-coder/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/d6g8k5htny-coder/subscriptions\",\"organizations_url\":\"https://api.github.com/users/d6g8k5htny-coder/orgs\",\"repos_url\":\"https://api.github.com/users/d6g8k5htny-coder/repos\",\"events_url\":\"https://api.github.com/users/d6g8k5htny-coder/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/d6g8k5htny-coder/received_events\",\"type\":\"User\",\"user_view_type\":\"public\",\"site_admin\":false},\"run_attempt\":1,\"referenced_workflows\":[],\"run_started_at\":\"2026-10-20T14:34:48Z\",\"triggering_actor\":{\"login\":\"d6g8k5htny-coder\",\"id\":249851642,\"node_id\":\"U_kgDODuRu-g\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/249851642?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/d6g8k5htny-coder\",\"html_url\":\"https://github.com/d6g8k5htny-coder\",\"followers_url\":\"https://api.github.com/users/d6g8k5htny-coder/followers\",\"following_url\":\"https://api.github.com/users/d6g8k5htny-coder/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/d6g8k5htny-coder/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/d6g8k5htny-coder/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/d6g8k5htny-coder/subscriptions\",\"organizations_url\":\"https://api.github.com/users/d6g8k5htny-coder/orgs\",\"repos_url\":\"https://api.github.com/users/d6g8k5htny-coder/repos\",\"events_url\":\"https://api.github.com/users/d6g8k5htny-coder/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/d6g8k5htny-coder/received_events\",\"type\":\"User\",\"user_view_type\":\"public\",\"site_admin\":false},\"jobs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39440510935/jobs\",\"logs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39440510935/logs\",\"check_suite_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/check-suites/106877090802\",\"artifacts_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39440510935/artifacts\",\"cancel_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39440510935/cancel\",\"rerun_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39440510935/rerun\",\"previous_attempt_url\":null,\"workflow_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/workflows/390636492\",\"head_commit\":{\"id\":\"8336bb7c16e34db69837b10e3678fb1bc894179c\",\"tree_id\":\"9107a867c26bc718c94a18e6e9e763a55169fb53\",\"message\":\"Repair C299 elaboration against actual hosted diagnostics\\n\\nPreserve candidate2 failure and exact nonauthor source repair review. Public interfaces unchanged; hosted verification remains pending.\",\"timestamp\":\"2026-10-20T14:34:40Z\",\"author\":{\"name\":\"Dylan Roy\",\"email\":\"249851642+d6g8k5htny-coder@users.noreply.github.com\"},\"committer\":{\"name\":\"Dylan Roy\",\"email\":\"249851642+d6g8k5htny-coder@users.noreply.github.com\"}},\"repository\":{\"id\":1385716596,\"node_id\":\"R_kgDOUphbdA\",\"name\":\"Math-\",\"full_name\":\"d6g8k5htny-coder/Math-\",\"private\":false,\"owner\":{\"login\":\"d6g8k5htny-coder\",\"id\":249851642,\"node_id\":\"U_kgDODuRu-g\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/249851642?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/d6g8k5htny-coder\",\"html_url\":\"https://github.com/d6g8k5htny-coder\",\"followers_url\":\"https://api.github.com/users/d6g8k5htny-coder/followers\",\"following_url\":\"https://api.github.com/users/d6g8k5htny-coder/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/d6g8k5htny-coder/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/d6g8k5htny-coder/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/d6g8k5htny-coder/subscriptions\",\"organizations_url\":\"https://api.github.com/users/d6g8k5htny-coder/orgs\",\"repos_url\":\"https://api.github.com/users/d6g8k5htny-coder/repos\",\"events_url\":\"https://api.github.com/users/d6g8k5htny-coder/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/d6g8k5htny-coder/received_events\",\"type\":\"User\",\"user_view_type\":\"public\",\"site_admin\":false},\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-\",\"description\":\"Proof vault for Gaussian random fields and persistent homology: full arguments, exact computations, source-bound reviews, and explicit open obligations.\",\"fork\":false,\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-\",\"forks_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/forks\",\"keys_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/teams\",\"hooks_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/hooks\",\"issue_events_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/events\",\"assignees_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/tags\",\"blobs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/languages\",\"stargazers_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/stargazers\",\"contributors_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/contributors\",\"subscribers_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/subscribers\",\"subscription_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/subscription\",\"commits_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/merges\",\"archive_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/downloads\",\"issues_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/labels{/name}\",\"releases_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/releases{/id}\",\"deployments_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/deployments\"},\"head_repository\":{\"id\":1385716596,\"node_id\":\"R_kgDOUphbdA\",\"name\":\"Math-\",\"full_name\":\"d6g8k5htny-coder/Math-\",\"private\":false,\"owner\":{\"login\":\"d6g8k5htny-coder\",\"id\":249851642,\"node_id\":\"U_kgDODuRu-g\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/249851642?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/d6g8k5htny-coder\",\"html_url\":\"https://github.com/d6g8k5htny-coder\",\"followers_url\":\"https://api.github.com/users/d6g8k5htny-coder/followers\",\"following_url\":\"https://api.github.com/users/d6g8k5htny-coder/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/d6g8k5htny-coder/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/d6g8k5htny-coder/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/d6g8k5htny-coder/subscriptions\",\"organizations_url\":\"https://api.github.com/users/d6g8k5htny-coder/orgs\",\"repos_url\":\"https://api.github.com/users/d6g8k5htny-coder/repos\",\"events_url\":\"https://api.github.com/users/d6g8k5htny-coder/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/d6g8k5htny-coder/received_events\",\"type\":\"User\",\"user_view_type\":\"public\",\"site_admin\":false},\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-\",\"description\":\"Proof vault for Gaussian random fields and persistent homology: full arguments, exact computations, source-bound reviews, and explicit open obligations.\",\"fork\":false,\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-\",\"forks_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/forks\",\"keys_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/teams\",\"hooks_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/hooks\",\"issue_events_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/events\",\"assignees_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/tags\",\"blobs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/languages\",\"stargazers_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/stargazers\",\"contributors_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/contributors\",\"subscribers_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/subscribers\",\"subscription_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/subscription\",\"commits_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/merges\",\"archive_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/downloads\",\"issues_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/labels{/name}\",\"releases_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/releases{/id}\",\"deployments_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/deployments\"}}", + "title": "39440510935", + "modified_date": null, + "url": "https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39440510935", + "display_url": "https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39440510935", + "display_title": "39440510935", + "structuredContent": { + "title": "39440510935", + "content": "{\"id\":39440510935,\"name\":\"C299 critical ridge (hosted Lean, no scientific promotion)\",\"node_id\":\"WFR_kwLOUphbdM8AAAAJLtZv1w\",\"head_branch\":\"codex/c299-critical-ridge-20261020\",\"head_sha\":\"8336bb7c16e34db69837b10e3678fb1bc894179c\",\"path\":\".github/workflows/c299-critical-ridge.yml\",\"display_title\":\"C299: construct the actual negative partial-gradient ridge\",\"run_number\":2,\"event\":\"pull_request\",\"status\":\"completed\",\"conclusion\":\"failure\",\"workflow_id\":390636492,\"check_suite_id\":106877090802,\"check_suite_node_id\":\"CS_kwDOUphbdM8AAAAY4l778g\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39440510935\",\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-/actions/runs/39440510935\",\"pull_requests\":[{\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/pulls/491\",\"id\":4937180021,\"number\":491,\"head\":{\"ref\":\"codex/c299-critical-ridge-20261020\",\"sha\":\"8336bb7c16e34db69837b10e3678fb1bc894179c\",\"repo\":{\"id\":1385716596,\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-\",\"name\":\"Math-\"}},\"base\":{\"ref\":\"main\",\"sha\":\"8c226134ac0a0169dbb43311082e5353ed5c922c\",\"repo\":{\"id\":1385716596,\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-\",\"name\":\"Math-\"}}}],\"created_at\":\"2026-10-20T14:34:48Z\",\"updated_at\":\"2026-10-20T14:37:19Z\",\"actor\":{\"login\":\"d6g8k5htny-coder\",\"id\":249851642,\"node_id\":\"U_kgDODuRu-g\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/249851642?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/d6g8k5htny-coder\",\"html_url\":\"https://github.com/d6g8k5htny-coder\",\"followers_url\":\"https://api.github.com/users/d6g8k5htny-coder/followers\",\"following_url\":\"https://api.github.com/users/d6g8k5htny-coder/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/d6g8k5htny-coder/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/d6g8k5htny-coder/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/d6g8k5htny-coder/subscriptions\",\"organizations_url\":\"https://api.github.com/users/d6g8k5htny-coder/orgs\",\"repos_url\":\"https://api.github.com/users/d6g8k5htny-coder/repos\",\"events_url\":\"https://api.github.com/users/d6g8k5htny-coder/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/d6g8k5htny-coder/received_events\",\"type\":\"User\",\"user_view_type\":\"public\",\"site_admin\":false},\"run_attempt\":1,\"referenced_workflows\":[],\"run_started_at\":\"2026-10-20T14:34:48Z\",\"triggering_actor\":{\"login\":\"d6g8k5htny-coder\",\"id\":249851642,\"node_id\":\"U_kgDODuRu-g\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/249851642?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/d6g8k5htny-coder\",\"html_url\":\"https://github.com/d6g8k5htny-coder\",\"followers_url\":\"https://api.github.com/users/d6g8k5htny-coder/followers\",\"following_url\":\"https://api.github.com/users/d6g8k5htny-coder/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/d6g8k5htny-coder/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/d6g8k5htny-coder/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/d6g8k5htny-coder/subscriptions\",\"organizations_url\":\"https://api.github.com/users/d6g8k5htny-coder/orgs\",\"repos_url\":\"https://api.github.com/users/d6g8k5htny-coder/repos\",\"events_url\":\"https://api.github.com/users/d6g8k5htny-coder/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/d6g8k5htny-coder/received_events\",\"type\":\"User\",\"user_view_type\":\"public\",\"site_admin\":false},\"jobs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39440510935/jobs\",\"logs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39440510935/logs\",\"check_suite_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/check-suites/106877090802\",\"artifacts_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39440510935/artifacts\",\"cancel_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39440510935/cancel\",\"rerun_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39440510935/rerun\",\"previous_attempt_url\":null,\"workflow_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/workflows/390636492\",\"head_commit\":{\"id\":\"8336bb7c16e34db69837b10e3678fb1bc894179c\",\"tree_id\":\"9107a867c26bc718c94a18e6e9e763a55169fb53\",\"message\":\"Repair C299 elaboration against actual hosted diagnostics\\n\\nPreserve candidate2 failure and exact nonauthor source repair review. Public interfaces unchanged; hosted verification remains pending.\",\"timestamp\":\"2026-10-20T14:34:40Z\",\"author\":{\"name\":\"Dylan Roy\",\"email\":\"249851642+d6g8k5htny-coder@users.noreply.github.com\"},\"committer\":{\"name\":\"Dylan Roy\",\"email\":\"249851642+d6g8k5htny-coder@users.noreply.github.com\"}},\"repository\":{\"id\":1385716596,\"node_id\":\"R_kgDOUphbdA\",\"name\":\"Math-\",\"full_name\":\"d6g8k5htny-coder/Math-\",\"private\":false,\"owner\":{\"login\":\"d6g8k5htny-coder\",\"id\":249851642,\"node_id\":\"U_kgDODuRu-g\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/249851642?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/d6g8k5htny-coder\",\"html_url\":\"https://github.com/d6g8k5htny-coder\",\"followers_url\":\"https://api.github.com/users/d6g8k5htny-coder/followers\",\"following_url\":\"https://api.github.com/users/d6g8k5htny-coder/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/d6g8k5htny-coder/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/d6g8k5htny-coder/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/d6g8k5htny-coder/subscriptions\",\"organizations_url\":\"https://api.github.com/users/d6g8k5htny-coder/orgs\",\"repos_url\":\"https://api.github.com/users/d6g8k5htny-coder/repos\",\"events_url\":\"https://api.github.com/users/d6g8k5htny-coder/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/d6g8k5htny-coder/received_events\",\"type\":\"User\",\"user_view_type\":\"public\",\"site_admin\":false},\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-\",\"description\":\"Proof vault for Gaussian random fields and persistent homology: full arguments, exact computations, source-bound reviews, and explicit open obligations.\",\"fork\":false,\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-\",\"forks_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/forks\",\"keys_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/teams\",\"hooks_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/hooks\",\"issue_events_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/events\",\"assignees_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/tags\",\"blobs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/languages\",\"stargazers_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/stargazers\",\"contributors_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/contributors\",\"subscribers_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/subscribers\",\"subscription_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/subscription\",\"commits_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/merges\",\"archive_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/downloads\",\"issues_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/labels{/name}\",\"releases_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/releases{/id}\",\"deployments_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/deployments\"},\"head_repository\":{\"id\":1385716596,\"node_id\":\"R_kgDOUphbdA\",\"name\":\"Math-\",\"full_name\":\"d6g8k5htny-coder/Math-\",\"private\":false,\"owner\":{\"login\":\"d6g8k5htny-coder\",\"id\":249851642,\"node_id\":\"U_kgDODuRu-g\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/249851642?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/d6g8k5htny-coder\",\"html_url\":\"https://github.com/d6g8k5htny-coder\",\"followers_url\":\"https://api.github.com/users/d6g8k5htny-coder/followers\",\"following_url\":\"https://api.github.com/users/d6g8k5htny-coder/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/d6g8k5htny-coder/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/d6g8k5htny-coder/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/d6g8k5htny-coder/subscriptions\",\"organizations_url\":\"https://api.github.com/users/d6g8k5htny-coder/orgs\",\"repos_url\":\"https://api.github.com/users/d6g8k5htny-coder/repos\",\"events_url\":\"https://api.github.com/users/d6g8k5htny-coder/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/d6g8k5htny-coder/received_events\",\"type\":\"User\",\"user_view_type\":\"public\",\"site_admin\":false},\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-\",\"description\":\"Proof vault for Gaussian random fields and persistent homology: full arguments, exact computations, source-bound reviews, and explicit open obligations.\",\"fork\":false,\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-\",\"forks_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/forks\",\"keys_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/teams\",\"hooks_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/hooks\",\"issue_events_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/events\",\"assignees_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/tags\",\"blobs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/languages\",\"stargazers_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/stargazers\",\"contributors_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/contributors\",\"subscribers_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/subscribers\",\"subscription_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/subscription\",\"commits_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/merges\",\"archive_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/downloads\",\"issues_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/labels{/name}\",\"releases_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/releases{/id}\",\"deployments_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/deployments\"}}", + "display_url": "https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39440510935" + } + }, + "isError": false +} diff --git a/frontiers/critical_ridge_20261020/hosted-development2/native/c299_downstream2_jobs.json b/frontiers/critical_ridge_20261020/hosted-development2/native/c299_downstream2_jobs.json new file mode 100644 index 000000000..b2e2543b4 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development2/native/c299_downstream2_jobs.json @@ -0,0 +1,199 @@ +{ + "content": [ + { + "type": "text", + "text": "Action completed." + } + ], + "structuredContent": { + "jobs": [ + { + "id": 118688788328, + "name": "formal / formal-evidence", + "status": "completed", + "conclusion": "success", + "run_id": 39440510917, + "logs_url": null, + "steps": [ + { + "name": "Set up job", + "status": "completed", + "conclusion": "success", + "number": 1 + }, + { + "name": "Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1", + "status": "completed", + "conclusion": "success", + "number": 2 + }, + { + "name": "Gate tests and exact source identity", + "status": "completed", + "conclusion": "success", + "number": 3 + }, + { + "name": "Install pinned Lean and retrieve dependency cache", + "status": "completed", + "conclusion": "success", + "number": 4 + }, + { + "name": "Build, recheck, audit axioms and execute negative controls", + "status": "completed", + "conclusion": "success", + "number": 5 + }, + { + "name": "Bind current-run receipt to required check", + "status": "completed", + "conclusion": "success", + "number": 6 + }, + { + "name": "Preserve logs and exact-run receipt", + "status": "completed", + "conclusion": "success", + "number": 7 + }, + { + "name": "Post Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1", + "status": "completed", + "conclusion": "success", + "number": 14 + }, + { + "name": "Complete job", + "status": "completed", + "conclusion": "success", + "number": 15 + } + ] + }, + { + "id": 118688789281, + "name": "downstream-replay", + "status": "completed", + "conclusion": "success", + "run_id": 39440510917, + "logs_url": null, + "steps": [ + { + "name": "Set up job", + "status": "completed", + "conclusion": "success", + "number": 1 + }, + { + "name": "Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1", + "status": "completed", + "conclusion": "success", + "number": 2 + }, + { + "name": "Run actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97", + "status": "completed", + "conclusion": "success", + "number": 3 + }, + { + "name": "Required-check integration controls in both Python modes", + "status": "completed", + "conclusion": "success", + "number": 4 + }, + { + "name": "Validation timeout evidence controls in both Python modes", + "status": "completed", + "conclusion": "success", + "number": 5 + }, + { + "name": "Verify exact sources, transition inputs and regressions", + "status": "completed", + "conclusion": "success", + "number": 6 + }, + { + "name": "P-C paired A/B source-bound conformance", + "status": "completed", + "conclusion": "success", + "number": 7 + }, + { + "name": "Retain evidence even on failure", + "status": "completed", + "conclusion": "success", + "number": 8 + }, + { + "name": "Bind existing checks to tested commit", + "status": "completed", + "conclusion": "success", + "number": 9 + }, + { + "name": "Post Run actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97", + "status": "completed", + "conclusion": "success", + "number": 17 + }, + { + "name": "Post Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1", + "status": "completed", + "conclusion": "success", + "number": 18 + }, + { + "name": "Complete job", + "status": "completed", + "conclusion": "success", + "number": 19 + } + ] + }, + { + "id": 118690628420, + "name": "math-downstream-gates", + "status": "completed", + "conclusion": "success", + "run_id": 39440510917, + "logs_url": null, + "steps": [ + { + "name": "Set up job", + "status": "completed", + "conclusion": "success", + "number": 1 + }, + { + "name": "Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1", + "status": "completed", + "conclusion": "success", + "number": 2 + }, + { + "name": "Require both checks and source-bound current-run formal success", + "status": "completed", + "conclusion": "success", + "number": 3 + }, + { + "name": "Post Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1", + "status": "completed", + "conclusion": "success", + "number": 6 + }, + { + "name": "Complete job", + "status": "completed", + "conclusion": "success", + "number": 7 + } + ] + } + ] + }, + "isError": false +} diff --git a/frontiers/critical_ridge_20261020/hosted-development2/native/c299_tested_merge2.json b/frontiers/critical_ridge_20261020/hosted-development2/native/c299_tested_merge2.json new file mode 100644 index 000000000..ee96fe2a6 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development2/native/c299_tested_merge2.json @@ -0,0 +1,22 @@ +{ + "content": [ + { + "type": "text", + "text": "Action completed." + } + ], + "structuredContent": { + "content": "{\"sha\":\"55ad6bad497da1a9c7ddd6002ba0c718994c26e1\",\"node_id\":\"C_kwDOUphbdNoAKDU1YWQ2YmFkNDk3ZGExYTljN2RkZDYwMDJiYTBjNzE4OTk0YzI2ZTE\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/55ad6bad497da1a9c7ddd6002ba0c718994c26e1\",\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-/commit/55ad6bad497da1a9c7ddd6002ba0c718994c26e1\",\"author\":{\"name\":\"Dylan Roy\",\"email\":\"249851642+d6g8k5htny-coder@users.noreply.github.com\",\"date\":\"2026-10-20T14:34:45Z\"},\"committer\":{\"name\":\"GitHub\",\"email\":\"noreply@github.com\",\"date\":\"2026-10-20T14:34:45Z\"},\"tree\":{\"sha\":\"9107a867c26bc718c94a18e6e9e763a55169fb53\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/trees/9107a867c26bc718c94a18e6e9e763a55169fb53\"},\"message\":\"Merge 8336bb7c16e34db69837b10e3678fb1bc894179c into 8c226134ac0a0169dbb43311082e5353ed5c922c\",\"parents\":[{\"sha\":\"8c226134ac0a0169dbb43311082e5353ed5c922c\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/8c226134ac0a0169dbb43311082e5353ed5c922c\",\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-/commit/8c226134ac0a0169dbb43311082e5353ed5c922c\"},{\"sha\":\"8336bb7c16e34db69837b10e3678fb1bc894179c\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/8336bb7c16e34db69837b10e3678fb1bc894179c\",\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-/commit/8336bb7c16e34db69837b10e3678fb1bc894179c\"}],\"verification\":{\"verified\":true,\"reason\":\"valid\",\"signature\":\"-----BEGIN PGP SIGNATURE-----\\n\\nwsFcBAABCAAQBQJq13wFCRC1aQ7uu5UhlAAAIQgQAC+e2UpgHUxzW9AL+gx4jpQh\\nF4pdABXAMhGwQbQ6TdjgLCwGmkS4BUNGty506AmHtFjRFGSYPyNP14+jreEVBftF\\n3uS3GH2mp5iDyCmSkkh+xfzW4SbKyDwRY8eYoZ9lyiZflt32L0giwYlomu8tOvGc\\nwRspivXehQB2UNUtaZffh2mbqWi/2DK2SP61G/EWeEVHRQU7s3orgoqFFNkD5EgL\\n01jW0EMdQffbYjdITfJYc8U0g3tIWDU2NrFC40hVJ4rts+Pe9YvoXVKFPp0Hp+1M\\nmsroh1V3MEzC2lwUSUlyIrTvGDSGhOLzLlecfBU5KtKAmXmOY1LsFbTR8VWvRqPk\\n6jcnrs5+Nh0jZF2IfqLguBxhom9LLvBQ/mpw2OlCeWLumCp82wUke7teHpaa7XEr\\nUU807h3m/LirOl9oYhncok9SYuGvpRdsRhn2+QRjSOmaZuY8gcN21j4RfUnZ2t+q\\nvh5pz6sN5j0Ie+4D0TXSxgix8qAOodwVNoiF5xptdYjyIaRL3A3hj9Q/iJKAjjkN\\nYABr/PtvWtVeH0nh+KXCxGK68Pze8kpmPlZzXuYp5Yy1UCokr3n8DmcZyhB8VzIN\\nap8lLWXhtp9fipPFFzYovaToLfFmX/nib2HMPLiUqDlz44gjS799xMnqsNmzeUx0\\n9oLpLBQuR7taB4BS9zD9\\n=ikmD\\n-----END PGP SIGNATURE-----\\n\",\"payload\":\"tree 9107a867c26bc718c94a18e6e9e763a55169fb53\\nparent 8c226134ac0a0169dbb43311082e5353ed5c922c\\nparent 8336bb7c16e34db69837b10e3678fb1bc894179c\\nauthor Dylan Roy <249851642+d6g8k5htny-coder@users.noreply.github.com> 1792506885 +0000\\ncommitter GitHub 1792506885 +0000\\n\\nMerge 8336bb7c16e34db69837b10e3678fb1bc894179c into 8c226134ac0a0169dbb43311082e5353ed5c922c\\n\",\"verified_at\":\"2026-10-20T14:35:42Z\"}}", + "title": "55ad6bad497da1a9c7ddd6002ba0c718994c26e1", + "modified_date": null, + "url": "https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/55ad6bad497da1a9c7ddd6002ba0c718994c26e1", + "display_url": "https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/55ad6bad497da1a9c7ddd6002ba0c718994c26e1", + "display_title": "55ad6bad497da1a9c7ddd6002ba0c718994c26e1", + "structuredContent": { + "title": "55ad6bad497da1a9c7ddd6002ba0c718994c26e1", + "content": "{\"sha\":\"55ad6bad497da1a9c7ddd6002ba0c718994c26e1\",\"node_id\":\"C_kwDOUphbdNoAKDU1YWQ2YmFkNDk3ZGExYTljN2RkZDYwMDJiYTBjNzE4OTk0YzI2ZTE\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/55ad6bad497da1a9c7ddd6002ba0c718994c26e1\",\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-/commit/55ad6bad497da1a9c7ddd6002ba0c718994c26e1\",\"author\":{\"name\":\"Dylan Roy\",\"email\":\"249851642+d6g8k5htny-coder@users.noreply.github.com\",\"date\":\"2026-10-20T14:34:45Z\"},\"committer\":{\"name\":\"GitHub\",\"email\":\"noreply@github.com\",\"date\":\"2026-10-20T14:34:45Z\"},\"tree\":{\"sha\":\"9107a867c26bc718c94a18e6e9e763a55169fb53\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/trees/9107a867c26bc718c94a18e6e9e763a55169fb53\"},\"message\":\"Merge 8336bb7c16e34db69837b10e3678fb1bc894179c into 8c226134ac0a0169dbb43311082e5353ed5c922c\",\"parents\":[{\"sha\":\"8c226134ac0a0169dbb43311082e5353ed5c922c\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/8c226134ac0a0169dbb43311082e5353ed5c922c\",\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-/commit/8c226134ac0a0169dbb43311082e5353ed5c922c\"},{\"sha\":\"8336bb7c16e34db69837b10e3678fb1bc894179c\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/8336bb7c16e34db69837b10e3678fb1bc894179c\",\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-/commit/8336bb7c16e34db69837b10e3678fb1bc894179c\"}],\"verification\":{\"verified\":true,\"reason\":\"valid\",\"signature\":\"-----BEGIN PGP SIGNATURE-----\\n\\nwsFcBAABCAAQBQJq13wFCRC1aQ7uu5UhlAAAIQgQAC+e2UpgHUxzW9AL+gx4jpQh\\nF4pdABXAMhGwQbQ6TdjgLCwGmkS4BUNGty506AmHtFjRFGSYPyNP14+jreEVBftF\\n3uS3GH2mp5iDyCmSkkh+xfzW4SbKyDwRY8eYoZ9lyiZflt32L0giwYlomu8tOvGc\\nwRspivXehQB2UNUtaZffh2mbqWi/2DK2SP61G/EWeEVHRQU7s3orgoqFFNkD5EgL\\n01jW0EMdQffbYjdITfJYc8U0g3tIWDU2NrFC40hVJ4rts+Pe9YvoXVKFPp0Hp+1M\\nmsroh1V3MEzC2lwUSUlyIrTvGDSGhOLzLlecfBU5KtKAmXmOY1LsFbTR8VWvRqPk\\n6jcnrs5+Nh0jZF2IfqLguBxhom9LLvBQ/mpw2OlCeWLumCp82wUke7teHpaa7XEr\\nUU807h3m/LirOl9oYhncok9SYuGvpRdsRhn2+QRjSOmaZuY8gcN21j4RfUnZ2t+q\\nvh5pz6sN5j0Ie+4D0TXSxgix8qAOodwVNoiF5xptdYjyIaRL3A3hj9Q/iJKAjjkN\\nYABr/PtvWtVeH0nh+KXCxGK68Pze8kpmPlZzXuYp5Yy1UCokr3n8DmcZyhB8VzIN\\nap8lLWXhtp9fipPFFzYovaToLfFmX/nib2HMPLiUqDlz44gjS799xMnqsNmzeUx0\\n9oLpLBQuR7taB4BS9zD9\\n=ikmD\\n-----END PGP SIGNATURE-----\\n\",\"payload\":\"tree 9107a867c26bc718c94a18e6e9e763a55169fb53\\nparent 8c226134ac0a0169dbb43311082e5353ed5c922c\\nparent 8336bb7c16e34db69837b10e3678fb1bc894179c\\nauthor Dylan Roy <249851642+d6g8k5htny-coder@users.noreply.github.com> 1792506885 +0000\\ncommitter GitHub 1792506885 +0000\\n\\nMerge 8336bb7c16e34db69837b10e3678fb1bc894179c into 8c226134ac0a0169dbb43311082e5353ed5c922c\\n\",\"verified_at\":\"2026-10-20T14:35:42Z\"}}", + "display_url": "https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/55ad6bad497da1a9c7ddd6002ba0c718994c26e1" + } + }, + "isError": false +} diff --git a/frontiers/critical_ridge_20261020/hosted-development2/runtime-print-prefix.receipt.json b/frontiers/critical_ridge_20261020/hosted-development2/runtime-print-prefix.receipt.json new file mode 100644 index 000000000..07c529728 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development2/runtime-print-prefix.receipt.json @@ -0,0 +1,32 @@ +{ + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "--print-prefix" + ], + "cwd": "/home/runner/work/Math-/Math-/formal", + "duration_seconds": 0.031953, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:36:47.965945+00:00", + "name": "runtime-print-prefix", + "object_validation_error": null, + "objects_after": null, + "objects_before": null, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:36:47.934016+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 58, + "stdout_sha256": "e0e72101499ee5e5a1967519d9955a093a555b85d5073da4bdba8bdd4cb12617", + "timed_out": false, + "timeout_seconds": 30, + "unexpected_override_names": [] +} diff --git a/frontiers/critical_ridge_20261020/hosted-development2/runtime-print-prefix.stderr b/frontiers/critical_ridge_20261020/hosted-development2/runtime-print-prefix.stderr new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development2/runtime-print-prefix.stdout b/frontiers/critical_ridge_20261020/hosted-development2/runtime-print-prefix.stdout new file mode 100644 index 000000000..ea59f6ca2 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development2/runtime-print-prefix.stdout @@ -0,0 +1 @@ +/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1 diff --git a/frontiers/critical_ridge_20261020/hosted-development2/runtime-version.receipt.json b/frontiers/critical_ridge_20261020/hosted-development2/runtime-version.receipt.json new file mode 100644 index 000000000..2d606f6e8 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development2/runtime-version.receipt.json @@ -0,0 +1,32 @@ +{ + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "--version" + ], + "cwd": "/home/runner/work/Math-/Math-/formal", + "duration_seconds": 0.03193, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:36:48.017821+00:00", + "name": "runtime-version", + "object_validation_error": null, + "objects_after": null, + "objects_before": null, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:36:47.985912+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 106, + "stdout_sha256": "355a9a028f81641782d75d6e6b58dec70f29d2f61238a9e271690259d9bf5680", + "timed_out": false, + "timeout_seconds": 30, + "unexpected_override_names": [] +} diff --git a/frontiers/critical_ridge_20261020/hosted-development2/runtime-version.stderr b/frontiers/critical_ridge_20261020/hosted-development2/runtime-version.stderr new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development2/runtime-version.stdout b/frontiers/critical_ridge_20261020/hosted-development2/runtime-version.stdout new file mode 100644 index 000000000..3bdff924e --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development2/runtime-version.stdout @@ -0,0 +1 @@ +Lean (version 4.34.1, x86_64-unknown-linux-gnu, commit 5045d0056413266e57c625dcd7c365b10e377c52, Release) diff --git a/frontiers/critical_ridge_20261020/project/CriticalRidge.lean b/frontiers/critical_ridge_20261020/project/CriticalRidge.lean index 81182af88..a711e4511 100644 --- a/frontiers/critical_ridge_20261020/project/CriticalRidge.lean +++ b/frontiers/critical_ridge_20261020/project/CriticalRidge.lean @@ -108,6 +108,7 @@ theorem negativePartialGradient_contDiff (f : E d → ℝ) (p : E d) exact (hD.comp (contDiff_const.add (ridgeAddition V).contDiff)).clm_comp contDiff_const +set_option backward.isDefEq.respectTransparency false in theorem negativePartialGradient_hasFDerivAt (f : E d → ℝ) (p : E d) (V : Submodule ℝ (E d)) (hsmooth : IsSmooth d f) : HasFDerivAt (negativePartialGradient f p V) @@ -124,12 +125,10 @@ theorem negativePartialGradient_hasFDerivAt (f : E d → ℝ) (p : E d) (p + ridgeAddition V (0 : E d × V)) := by simpa only [map_zero, add_zero] using hDp have hcomp := hDp'.comp (0 : E d × V) hadd - change HasFDerivAt (fun q : E d × V => - (fderiv ℝ f (p + ridgeAddition V q)).comp V.subtypeL) _ _ - convert hcomp.clm_comp (hasFDerivAt_const V.subtypeL (0 : E d × V)) using 1 - ext q z - simp [restrictCovector] + simpa only [negativePartialGradient, Function.comp_def] using + (restrictCovector V).hasFDerivAt.comp (0 : E d × V) hcomp +set_option backward.isDefEq.respectTransparency false in /-- One actual ridge and all four conclusions for the same chosen function. The equation is in the actual ambient function and actual subspace. -/ theorem exists_negative_partial_gradient_ridge @@ -169,7 +168,10 @@ theorem exists_negative_partial_gradient_ridge show fderiv ℝ f p = 0 from hcritical] have heq : (fun w => G (w, r w)) =ᶠ[𝓝 (0 : E d)] (fun _ => (0 : V →L[ℝ] ℝ)) := by - simpa [r, hG0] using hG.eventually_apply_implicitFunction (by norm_num) hinv + have h := hG.eventually_apply_implicitFunction (by norm_num) hinv + change ∀ᶠ w in 𝓝 (0 : E d), G (w, r w) = G (0 : E d × V) at h + change ∀ᶠ w in 𝓝 (0 : E d), G (w, r w) = 0 + exact h.mono fun _ hw => hw.trans hG0 refine ⟨r, hr0, hrC, ?_, ?_⟩ · filter_upwards [heq] with w hw intro z @@ -186,7 +188,8 @@ theorem exists_negative_partial_gradient_ridge have hchain : HasFDerivAt (fun w : E d => G (w, r w)) (D.comp ((ContinuousLinearMap.id ℝ (E d)).prod (fderiv ℝ r 0))) 0 := by have hd : HasFDerivAt G D ((0 : E d), r 0) := by - simpa only [hr0] using hDG + rw [hr0] + exact hDG exact hd.comp 0 hgraph have hid := hchain.unique hzero intro w z diff --git a/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_candidate4_source_addendum.md b/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_candidate4_source_addendum.md new file mode 100644 index 000000000..90c8c7c2f --- /dev/null +++ b/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_candidate4_source_addendum.md @@ -0,0 +1,48 @@ +# C299 candidate4 nonauthor source-repair addendum + +Review time: 2026-10-20 14:52:36 UTC. Actual reviewer: OpenAI Codex `/root/c299_nonauthor_review`, delegated by `/root` for Dylan Roy. Actual mathematical author: `/root/adapter_feasibility_c292`. Same-provider, source-exposed nonauthor review; organizational/provider independence credit 0, human review credit 0, scientific effect NONE. + +**Disposition: ACCEPT_SCOPED_SOURCE_REPAIR for candidate4 at the exact identity below.** The bounded successor diff addresses the actual candidate3 diagnostics without changing the mathematical hypotheses or conclusions. I found no new source blocker to the next root-owned, declared hosted development attempt. Compilation, kernel verification, full origin census and actual negative diagnostics are unconfirmed for candidate4. This disposition is not a formal PASS. + +This addendum preserves the earlier source reviews and actual failures. Candidate3's prior source acceptance did not establish successful elaboration; its actual hosted attempt failed. I did not author or edit this repair. + +## Exact source and actual failure + +Fresh native byte/hash reads establish: + +| Item | Bytes | SHA-256 | +|---|---:|---| +| `project/CriticalRidge.lean`, candidate4 | 8664 | f3a515bd0a984c8a8affbfc79f4768e7a357b7798eee8990a5a34adbdcf6f0f7 | +| `execution/author/CANDIDATE4.diff` | 2160 | 1b02ee505c6d1bd4a3ad86ef92c4fa12fd7e92747fc3d8bd25f6ffce6f15c180 | +| `execution/author/CANDIDATE4_FREEZE.json` | 1302 | d5f98f98928b053de563a1ed637cffdc2e8b8eb0baa286e265d12c72a156aef1 | +| Actual candidate3 `build-CriticalRidge.stdout` | 3059 | a784390b5d21162fef912eb6fefc803a57dfd4ca887a8d2402ce453b275746d6 | + +The separately frozen candidate4 source snapshot also hashes to `f3a515bd0a984c8a8affbfc79f4768e7a357b7798eee8990a5a34adbdcf6f0f7`. I directly compared it with the retained candidate3 snapshot `2a93240fa5034544a1dbcf5ec0a10ab11be1ca5d05f60b4df0e2663fa769f442`; the actual diff agrees with the handoff. + +The actual candidate3 failure is run **39440510935**, attempt 1, PR491 head `8336bb7c16e34db69837b10e3678fb1bc894179c`, tested merge `55ad6bad497da1a9c7ddd6002ba0c718994c26e1`. The root disposition identifies its original artifact as 480098 bytes, SHA-256 `da3a551f550fb50eea816f1ad00c3f0f6532f4192ba99ac5805bd58522c72a46`; original artifact custody is root's verified evidence, not a new remote fetch by me. + +I read the complete failing stdout and phase receipt under `hosted-development2/extracted/`, plus `hosted-development2/DISPOSITION.json`. The phase receipt hashes to `08e1d5320a15693c7b2c68a8b82c7b28eb374b6c3703b326596fa7db377db0ac`; the disposition to `6749268f876cfe6a1f0bfc5e8a142c68e6dab9a678b22508bc38b330734e31dc`. The failure was exit 1 after **12.745656 seconds**, with empty stderr and no timeout. Its object inventory remains the three upstream objects. No CriticalRidge object was produced, and no audit build, kernel phase or negative fixture was reached. Passing other CI jobs does not repair that failed phase. + +## Changed proof reconstruction + +The actual derivative failure left an equality between the intended restricted Hessian chain and the bilinear CLM-composition derivative containing an extra zero summand and `compL.flip`. Candidate4 removes that expansion. It uses the derivative of the already-defined continuous linear restriction map and composes it directly with `hcomp`, the derivative of `q ↦ Df(p + ridgeAddition V q)`. The pinned `ContinuousLinearMap.hasFDerivAt` theorem gives the restriction map itself as derivative; the pinned chain rule gives exactly its composition with `hcomp`'s derivative. Unfolding `negativePartialGradient` and function composition identifies the same original function. This preserves the literal Hessian derivative and removes the failed `convert`/extensional-simplification branch, including the unused-simp warning reported under warning-as-error. + +Two `set_option backward.isDefEq.respectTransparency false in` commands are new, scoped to `negativePartialGradient_hasFDerivAt` and the endpoint theorem. This changes elaboration's definitional-equality transparency handling; it is not a new hypothesis, axiom, admitted proof, changed theorem type, disabled warning policy or bypass of the eventual kernel gate. I checked actual declaration-local precedents in pinned Mathlib `FDeriv/Congr.lean` and `FDeriv/Basic.lean`, and examples where the same local command precedes a theorem documentation comment. The option's use is plausible for the displayed product/topological instance-coherence failures. I do not claim that source inspection proves it resolves every elaboration failure: that requires the next actual compilation. An optional lookup at an assumed local elan core-source path was absent; no Lean-core source inspection or compiler invocation is claimed. + +The actual IFT failure displayed eventual pointwise equality on one side and `EventuallyEq` on the other. Candidate4 explicitly changes the IFT result to + +`∀ᶠ w in 𝓝 0, G (w, r w) = G 0` + +and the target to the corresponding equality with zero. It then uses `h.mono` and equality transitivity with the already-proved `hG0`. This is the same local IFT equation for the same chosen `r`; no extra local equation is assumed, no neighborhood is strengthened and no local statement is promoted to a global statement. + +The final chain-rule failure concerned the base point `((0 : E d), r 0)` versus product zero. Candidate4 rewrites `hr0` in that goal before applying `hDG`, then uses the unchanged graph derivative and chain rule. The resulting differentiated equation is still `D ∘ (id, Dr 0) = 0`, evaluated on arbitrary ambient `w` and `z : V`. The actual endpoint remains `hessian d f p (w + Dr(0)w) z = 0` using the same ridge. + +## Preserved scope and verification boundary + +Direct snapshot comparison shows no edits to any declaration's binders or result type. There remain four definitions and five theorems. No `sorry`, `admit`, axiom, opaque placeholder, unsafe declaration, new assumed ridge/chart/inverse certificate, or altered import is introduced by this repair. The two elaborator settings are local. The public endpoint still derives one ambient-parameter ridge from literal `IsSmooth`, actual criticality at `p` and strict negative definiteness on the literal subspace. + +The earlier mathematical reconstruction and its nonorthogonal cross-block, zero-subspace, degenerate restriction and missing-criticality checks remain applicable because the types and mathematical construction are unchanged. I did not rerun or broaden those unchanged reviews. Full origin census, generated declarations and transitive axioms still require actual audit output; the nine textual public declarations are not that census. + +I performed source/diff/hash/receipt reads and read relevant pinned Mathlib APIs only. I did not invoke Lean, tests, mathematical programs, a workflow or the artifact master; did not edit author/support sources; and performed no claims, publication, CI, merge or access action. This addendum covers candidate4 proof source. Any new manifest/workflow publication identities need root's separate exact-byte binding. + +The next evidence gate is actual hosted candidate4 compilation followed, if it succeeds, by the declared audit/kernel/negative phases. Final diagnostic qualification and final collector/master evidence remain separate gates. Full critical basis, quotient/full LPC, C294 hclosedLPC, bars and broader scientific obligations remain OPEN. diff --git a/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_master_source_review.md b/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_master_source_review.md new file mode 100644 index 000000000..ab66cb304 --- /dev/null +++ b/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_master_source_review.md @@ -0,0 +1,82 @@ +# C299 nonauthor review of the frozen artifact-master source + +Review time: 2026-10-20 14:37:49 UTC. Reviewer: OpenAI Codex `/root/c299_nonauthor_review`, delegated by `/root` for Dylan Roy. Engineering author: `/root/c297_hosted_verifier`; mathematical source author: `/root/adapter_feasibility_c292`. This is an actual nonauthor source review with same-provider source exposure. Organizational/provider independence credit 0, human review credit 0, scientific effect NONE. I did not author or modify the master, tests, collector, fixtures, or mathematical sources. + +**Disposition: PASS_SCOPED_MASTER_SOURCE_REVIEW for the exact frozen source below.** I found no source blocker to retaining this bounded artifact verifier for final evidence assembly. This accepts its source checks and documented limits; it does not establish a successful complete master invocation, successful candidate3 compilation, actual negative diagnostic qualification, final hosted acceptance, or completed private custody. The complete master must remain uninvoked until the actual reviewed final inputs exist and root freezes its execution scope. Any code change needed to match actual diagnostic rendering requires a new source-bound review. + +This report is additive. The five earlier C299 reviews, including the candidate2 hosted failure and candidate3 source-repair disposition, remain unchanged. + +## Exact source and method + +All paths in this section are under `engineering-preflight/master/`. I read the complete executable, complete tests, notes and handoff; freshly checked these byte counts and SHA-256 identities: + +| File | Bytes | SHA-256 | +|---|---:|---| +| final_master.py | 53145 | dffb5c7575f0f177154ca48c6e2022d4a3c1d65e7da464293edc20df8b341c21 | +| FINAL_MASTER_NOTES.md | 12049 | 5cd11ebf8bcd99b8b8ad5f421af51c88923e8605d77a520c38af55e9fc01787d | +| test_final_master.py | 10113 | 7b6315774999938692c88ae1291a3d0f222b36afa8d791dbed397d7c09b8b13f | +| HANDOFF.md | 4527 | b2d9cd88afb8c91fb7a586d1415ccb987247ffaff47660a70d6114268aef3322 | +| IDENTITIES.json | 2824 | 56786333444e50dcdd983e2c2302a7c01fc06507c6f61377ad48f9b63ce2916b | +| C297_TO_C299_MASTER.diff | 49725 | 1cf30c1bcb67317b9f7a080e1e9f12b2165e0ff842db74b8037aadeb53c9ccc0 | + +The adaptation diff was identity-checked as retained history; my substantive review used the complete current source rather than relying on a diff-only reading or assuming the C297 predecessor's acceptance transferred. + +I performed source, receipt, stream, byte-count and hash reads only. I did not import or run the Python tests, invoke `main` or the complete `Master.verify`, run Lean/kernel checks, execute mathematical programs, build an archive, fetch remote data, or change public state. The controls described below were executed by the engineering author, not independently rerun by this reviewer. + +## Reconstructed acceptance path + +The master has no subprocess, network, Git-command, Lean or canonical-builder invocation. Its command entry point exclusively creates `FINAL_MASTER_START.json` and `FINAL_MASTER.json`, refuses repetition when either exists, starts in HOLD, and catches failed acceptance into a retained nonpassing result. The exact executable bytes are compared with the bound reviewed source. Checks use explicit exceptions rather than Python assertions, so optimization does not remove production checks. + +The input envelope supplies actual final head/base/tree/tested-merge/run/attempt values, reviewed support hashes, measured census counts and qualified diagnostic sections. These fields are shape-checked and repeated exactly in root's scoped acceptance. They are not fabricated defaults or historical hardcoded run identities. Source-bound semantics remain fixed in the code: five modules, two fixtures, four audited origins, thirteen required interfaces including nine C299 interfaces, exact dependency pins, exact phase sequence and the two omitted-premise/four-part-ridge conclusions. + +Publication verification compares every declared native file with the retained raw remote bytes, its SHA-256 and Git blob, then binds that blob to the actual current tree. It checks the complete native publication-directory membership, declared publication-input list, current commit/ref/PR identities, base and repository. A reduced tree projection must be explicitly labeled and cover exactly all used delivery and formal-config paths. A reused old raw read must retain its honest ref and have the same current Git blob. These are checks over supplied native records; the master does not itself contact GitHub or prove that the root's source readback was obtained honestly. + +The source manifest must contain exactly five modules and two controls, and its bytes must match the published manifest. All three input origins have raw-source equality and Git-blob checks. Final hosted driver, tests and workflow hashes must match the frozen expected record. Five distinct, nonempty, bound review files and their root-assessed role labels are required. Root's author/reviewer identities must differ, with human and organizational credit zero and scientific effect NONE. + +The root role labels are projections of the substantive reviews, as the notes explicitly state. Hashing a review file does not reproduce its judgment or prove that prose refers to the current bytes. Root still has to assess the actual reviews honestly, including source-repair addenda and the future actual-diagnostic/hosted review. The master does not rewrite this review or prior historical verdict wording. + +## Hosted execution checks + +The original downloaded ZIP is bound to a contained extraction, with unique members, path/regular-file checks, byte limits and exact extracted membership. Every consumed file is reread through the nonsymlink, contained, stable-byte reader. + +The full ordered sequence is two runtime probes, five fresh module builds, four named kernels and two negatives. The four named kernels are TorusTopology, MorseFiniteCritical, CriticalRidge and CriticalRidgeAxiomAudit; Lifetime is freshly built and included in the origin census but is not a fifth named kernel claim. + +For all thirteen phases the master compares the aggregate and separate receipt, stdout/stderr identities, status, exit/resource conditions and selected environment contract. The first build must begin with an empty object inventory. Each build may introduce only its own permitted output suffixes, must produce its main object, and must retain all prior imported-object identities. Kernel and negative phases must preserve that final inventory. Final downloaded objects, source snapshots, support snapshots and exact hosted member set must agree with the records. + +Commands, paths and working directories are reconstructed from the actual checkout/source location. Formal phases have the specified 900-second cap; probes have the 30-second cap. Build commands include the source-specific warning setting and exact output location. Runtime binary paths must derive from the measured print-prefix output; same-path launcher/runtime records cannot disagree. + +E1 is independently checked: exact selected-environment policy and canonical digest, fresh-object prefix before the inherited Lake search path, thread count 2, selected PATH, permitted sorted removed-variable names, no unexpected override names, and every per-phase digest/contract binding. This checks the declared selected environment and collector's measured records. Other inherited variables remain available and unrecorded under the disclosed policy; no full-environment isolation or reproduction claim follows. + +The audit parser is separate from the collector's state-machine implementation. It consumes wrapped axiom arrays and checks all four origins in order, unique declarations, counts, required interfaces, allowed transitive axioms and completion. Marker counts reject malformed or interrupted records and unknown marker names. Actual module counts must equal the frozen final expected counts. The code does not substitute the nine authored declaration count for the full origin census. + +The final CI record must bind the exact current PR head/base, tested merge tree and two parents, exact run/attempt, successful dedicated workflow/job/steps, correct artifact metadata and actual ZIP identity. Applicable supplied jobs must all succeed at the same head and include the required names. The scope of the applicable-check inventory is supplied by root; this offline verifier cannot independently discover a check omitted from those native records. Complete current native inventory remains root's evidence obligation. + +## Negative qualification and non-bypass boundary + +The master cannot accept the current development collector unchanged. It requires final aggregate `PASS_HOSTED_C299_EXACT_TARGETS`, `negative_predicates_qualified=true`, no classification errors, and per-fixture intended-rejection true / pending false / candidate-parser true. The current collector deliberately leaves these final gates unsatisfied. + +The independent negative parser binds both raw stream hashes and the whitespace-normalized expression, actual type and expected type to the frozen reviewed observations. It then independently requires a single Type-mismatch diagnostic for the named fixture, exit code 1, no unrelated importer/parser/resource/sorry failure, the actual theorem lambda/application, the particular omitted premise and the entire same-ridge four-part conclusion. Merely changing envelope hashes or sections cannot replace that semantic check. + +The displayed grammar remains prospective. Its synthetic examples are not evidence that Lean prints exactly that grammar, or that either actual negative has reached its intended missing-premise failure. Future actual output must be read substantively. A display mismatch may require a narrow reviewed parser amendment; it may not be accepted by weakening the envelope alone. Missing criticality and missing negative definiteness remain actual separate hypotheses, as reconstructed in the mathematical source review. + +## Custody, history and residual trust + +Before custody the verifier records every actual accepted native file. Explicit unique native-to-PACKET bindings must cover all of them except the fixed current cyclic controls and declared external archive/receipt/verification files. A binding cannot source from PACKET or those external controls. Native source bytes, packet bytes and archive bytes must agree. The canonical manifest's digest/count and every payload's size/hash must match exact PACKET membership. Extra payloads also receive manifest/byte checks. + +The complete archive must byte-match its retained raw private download and the owner-only custody receipt. Canonical structural verification is an already-performed root action whose exact result is bound here; this master does not execute or reimplement that verifier. Current master input/start/result/streams and current archive/custody records remain outside the packet, avoiding the self-hash cycle. All observed native bytes are checked again before success. + +Historical hosted attempts must remain distinct HOLD records with their actual report bytes inside their original ZIPs; their run/attempt/head are checked. Other declared failures and coordination inputs are retained by identity. Which full historical set to declare remains root's responsibility: the code does not infer undocumented attempts or interpret retained narrative conclusions. + +Runtime hashes remain executor-measured records; the master does not independently fetch or reproduce those binaries. It does not rebuild or rehash all cached dependency objects. Offline consistency checks do not themselves establish external service honesty, human review, organizational independence, mathematical generalization or scientific acceptance. + +## Retained engineering controls + +I read and freshly hash-checked `PREEXEC_GREEN.json` (1414 bytes, SHA-256 `363b16d2aa2e35841c0e1cd385142d87149ab8ebd167c25a74bacd6510334abc`), both passing command receipts and both complete stderr streams. The declaration binds this exact source/test/notes triple before two 30-second-capped inert unittest commands, normal and `-O`, with `-B -S`. + +Both author receipts record exit 0 without timeout at 14:32:24 UTC. Each stderr stream reports eight tests passing; both stdout streams are empty. GREEN1 receipt SHA-256 is `dca4f203a78c1fc6ed606507374df8c876a9b5c72b3b22927d3c5dea52f8a3b5`, stderr `80e0e5e6383f3ce67c84ada20992742c0cdc3f9c8308c8b86610b9083551b061`. GREEN2 receipt is `de02af3c066d1862b60b923f966bfb7c1504b155e3379cd47e40985493efdfeb`, stderr `ef09dff4fa382778fa85fc3e1afe4d2569db5285c2a614545890f35ac8639a0a`. + +The tests exercise relevant failure paths: pending/missing final expectations, negative-section mutation even after rebound stream hashes, wrong omitted premise or conclusion, environment/loader/path/digest mutation, runtime divergence, nonpassing or duplicate review roles, malformed/forbidden/missing audit targets, changed native bytes, and a packet that omits an accepted input or attempts a cyclic binding. They never call the complete master or claim complete end-to-end coverage. + +I also read and hash-checked the retained RED receipt and full stream: three expected failures for missing final-admission, negative-qualification and environment predicates, exit 1. The handoff distinguishes the unexecuted invalid-bytes-literal draft and later reconstructed RED test snapshot from actual pre-execution snapshots. No passing-history rewrite is inferred. These controls support bounded engineering behavior; they do not replace the still-pending actual final artifact invocation. + +The remaining final gates are actual candidate compilation/kernel/census/negative output, substantive diagnostic qualification, final collector and any master amendment review, complete current-head evidence, root acceptance and custody, and one declared complete artifact-master invocation. Full critical basis, quotient/full LPC, C294 hclosedLPC, bars and broader scientific obligations remain OPEN. From 3111e77c882b4e441b3b4c5ed6f01da46cf8e34c Mon Sep 17 00:00:00 2001 From: Dylan Roy <249851642+d6g8k5htny-coder@users.noreply.github.com> Date: Tue, 20 Oct 2026 10:06:06 -0500 Subject: [PATCH 4/5] fix(C299): narrow derivative instance conversions without increasing caps Remove broad transparency options, preserve nine public interfaces and all three actual hosted failures. Candidate5 source review is development-scoped; compilation remains pending. AI work delegated for Dylan Roy; human review0. --- .github/workflows/c299-critical-ridge.yml | 2 +- .../HOSTED_SOURCE_MANIFEST.json | 4 +- .../execution/author/AUTHOR_NOTES.md | 242 +++++++++ .../execution/author/CANDIDATE5.diff | 50 ++ .../execution/author/CANDIDATE5_FREEZE.json | 27 + ...34ecf6cda5ccec125e2bac279f9e49e1a4aae.lean | 208 ++++++++ .../hosted-development3/ARCHIVE_MEMBERS.json | 167 ++++++ .../hosted-development3/DISPOSITION.json | 60 +++ .../HOSTED_SOURCE_MANIFEST.json | 48 ++ .../hosted-development3/RESULT.json | 476 ++++++++++++++++++ .../build-CriticalRidge.receipt.json | 63 +++ .../build-CriticalRidge.stderr | 0 .../build-CriticalRidge.stdout | 54 ++ .../build-Lifetime.receipt.json | 45 ++ .../hosted-development3/build-Lifetime.stderr | 0 .../hosted-development3/build-Lifetime.stdout | 0 .../build-MorseFiniteCritical.receipt.json | 63 +++ .../build-MorseFiniteCritical.stderr | 0 .../build-MorseFiniteCritical.stdout | 0 .../build-TorusTopology.receipt.json | 55 ++ .../build-TorusTopology.stderr | 0 .../build-TorusTopology.stdout | 0 .../native/c299_dev_artifacts3.json | 32 ++ .../native/c299_dev_jobs3_final.json | 71 +++ .../native/c299_dev_logs3.json | 12 + .../native/c299_dev_run3.json | 22 + .../native/c299_downstream3_jobs.json | 199 ++++++++ .../native/c299_tested_merge3.json | 22 + .../runtime-print-prefix.receipt.json | 32 ++ .../runtime-print-prefix.stderr | 0 .../runtime-print-prefix.stdout | 1 + .../runtime-version.receipt.json | 32 ++ .../runtime-version.stderr | 0 .../runtime-version.stdout | 1 + .../project/CriticalRidge.lean | 25 +- ...99_nonauthor_candidate5_source_addendum.md | 41 ++ 36 files changed, 2043 insertions(+), 11 deletions(-) create mode 100644 frontiers/critical_ridge_20261020/execution/author/AUTHOR_NOTES.md create mode 100644 frontiers/critical_ridge_20261020/execution/author/CANDIDATE5.diff create mode 100644 frontiers/critical_ridge_20261020/execution/author/CANDIDATE5_FREEZE.json create mode 100644 frontiers/critical_ridge_20261020/execution/author/source-attempts/669b94138531a694f134d24ee9d34ecf6cda5ccec125e2bac279f9e49e1a4aae.lean create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/ARCHIVE_MEMBERS.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/DISPOSITION.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/HOSTED_SOURCE_MANIFEST.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/RESULT.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/build-CriticalRidge.receipt.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/build-CriticalRidge.stderr create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/build-CriticalRidge.stdout create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/build-Lifetime.receipt.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/build-Lifetime.stderr create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/build-Lifetime.stdout create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/build-MorseFiniteCritical.receipt.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/build-MorseFiniteCritical.stderr create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/build-MorseFiniteCritical.stdout create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/build-TorusTopology.receipt.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/build-TorusTopology.stderr create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/build-TorusTopology.stdout create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/native/c299_dev_artifacts3.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/native/c299_dev_jobs3_final.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/native/c299_dev_logs3.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/native/c299_dev_run3.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/native/c299_downstream3_jobs.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/native/c299_tested_merge3.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/runtime-print-prefix.receipt.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/runtime-print-prefix.stderr create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/runtime-print-prefix.stdout create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/runtime-version.receipt.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/runtime-version.stderr create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/runtime-version.stdout create mode 100644 frontiers/critical_ridge_20261020/reviews/c299_nonauthor_candidate5_source_addendum.md diff --git a/.github/workflows/c299-critical-ridge.yml b/.github/workflows/c299-critical-ridge.yml index f00dc2251..86668f030 100644 --- a/.github/workflows/c299-critical-ridge.yml +++ b/.github/workflows/c299-critical-ridge.yml @@ -31,7 +31,7 @@ jobs: env: LEAN_NUM_THREADS: '2' # Exact frozen five-module and two-control source manifest. - C299_MANIFEST_SHA256: 'f7ffc5724de5d45b0518fe09f4396e6d2b817af920da0a63694ac97276e879ec' + C299_MANIFEST_SHA256: '6904d83df51715bdf52cbfaa56d3f68725cfed2dcfde66a69799ac5982e55a84' steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with: diff --git a/frontiers/critical_ridge_20261020/HOSTED_SOURCE_MANIFEST.json b/frontiers/critical_ridge_20261020/HOSTED_SOURCE_MANIFEST.json index 3d1261d99..efb872a51 100644 --- a/frontiers/critical_ridge_20261020/HOSTED_SOURCE_MANIFEST.json +++ b/frontiers/critical_ridge_20261020/HOSTED_SOURCE_MANIFEST.json @@ -9,8 +9,8 @@ "sha256": "ad204aee211aa3074621f56eeaf8e1a3f3a522b7c7cbe2bbdd67f3759833feb9" }, "project/CriticalRidge.lean": { - "bytes": 8664, - "sha256": "f3a515bd0a984c8a8affbfc79f4768e7a357b7798eee8990a5a34adbdcf6f0f7" + "bytes": 8966, + "sha256": "669b94138531a694f134d24ee9d34ecf6cda5ccec125e2bac279f9e49e1a4aae" }, "project/CriticalRidgeAxiomAudit.lean": { "bytes": 2728, diff --git a/frontiers/critical_ridge_20261020/execution/author/AUTHOR_NOTES.md b/frontiers/critical_ridge_20261020/execution/author/AUTHOR_NOTES.md new file mode 100644 index 000000000..944c1426e --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/author/AUTHOR_NOTES.md @@ -0,0 +1,242 @@ +# C299 author record — negative partial-gradient ridge + +Actual author: OpenAI/Codex delegated agent `/root/adapter_feasibility_c292`. +Root coordinates source ownership, review, final execution, publication and +custody. This author has source exposure and is not a nonauthor reviewer of this +unit. Organizational independence 0; human mathematical reading is not claimed. +Scientific effect NONE. + +The authorized bounded endpoint is one actual ridge `r : E d → V`, obtained from +the literal smooth function and negative definite restriction of its literal +Hessian. The same function must satisfy `r 0 = 0`, `ContDiffAt ℝ 2 r 0`, an +eventual vanishing equation for the actual restricted gradient, and the literal +differentiated Hessian equation. Reduced-Hessian positivity, uniform signs, +concavity, tubes, paths, quotient transport and full closed-superlevel LPC are +outside this endpoint and remain open. + +The direct ridge route replaces the prior orientation's self-adjoint congruence +proposal for this unit. The complete 6961-byte paper proposal was read from +Math-#487 comment 6292079965, along with relevant sections of its distinct paper +review and API follow-up 6292239804. The formal handoff is Main#419 comment +6292136858. An initial attempt to fetch that last comment from Math- returned +404; fetching its actual Main repository succeeded. No source-owner acceptance +was inferred from the paper publication. Root subsequently supplied the fresh +C299 claim and explicit authorization. + +## Literal inputs and minimal dependency reuse + +`INPUT_REUSE.json` records fresh byte hashes and copies of exactly the C293 +`final-project` sources Lifetime, TorusTopology and MorseFiniteCritical. Their +copied compiled objects are bound to C293's successful final build receipt +`20261018T030043Z-build-MorseFiniteCritical-84e29842/RECEIPT.json`; every source +and object hash was freshly compared before copying. The copied files are read +only. This is development reuse, not a new dependency rebuild. + +The relevant previously proved bridge is +`TorusMorseFinite.literal_hessian_eq_fderiv`. C293's finite critical-set theorem +is not reopened or reproved. The proof pattern for the restricted-block inverse +uses the existing finite-dimensional Riesz equivalence and injective-endomorphism +construction. It does not infer invertibility of a restriction from invertibility +of the full Hessian. + +The pin is Mathlib `d13f23b723b8a846827a245b89c10fc7d3f11612`, Lean 4.34.1. +Pinned `ImplicitContDiff.lean` was fully read; its +`ContDiffAt.implicitFunction`, value, eventual equation, derivative and C2 +regularity APIs are actual library declarations. The proof instantiates them +with the actual partial gradient instead of assuming its inverse certificate. + +## Construction and hypotheses + +For a subspace `V`, restrict ambient continuous covectors with the continuous +linear map obtained by composition with `V.subtypeL`. Define + +`G(w,v) = (Df(p+w+v))|V`. + +Its derivative in `v` at zero is the literal Hessian restricted to `V × V`. +If that block annihilates `v`, evaluating the resulting covector on `v` +contradicts strict negativity unless `v = 0`. Riesz identifies the continuous +dual with `V`; injectivity of a finite-dimensional endomorphism then constructs +the exact continuous linear equivalence used by IFT. + +The all-finite literal smoothness predicate supplies C3 of `f`, hence C2 of +`G`, and IFT produces a C2 ridge. Criticality supplies `G(0,0)=0`. Differentiating +the eventual ridge equation gives the Hessian equation; no differentiation of +an unproved identity is used. + +The ambient parameter is intentional. Restricting it later to the actual +complementary positive subspace gives the paper's `W → V` ridge. This first +unit needs neither a complement nor its positivity, so it assumes neither. +No Hessian-orthogonality, dimension positivity, sphere nonemptiness, periodicity, +global compactness, critical-value distinctness, stochastic input, numerical +normalizer or limit interchange is introduced. The zero subspace is covered by +the same injectivity/finite-dimensional construction. + +## Execution discipline and initial state + +`run_lean.py` writes the exact candidate source snapshot and a +`PRE_EXECUTION_CONTRACT.json` before each Lean spawn. The record includes source, +runtime, source-bound reused objects, pinned dependency revisions, command, +working directory, environment policy, resource caps and expected result. +The author cap is 600 seconds, two threads and Lean's 4096 MB option. Lean/Lake +and loader override keys are stripped before setting the explicit import path. +Shared caches are read only; no package update is permitted. + +Candidate 1 has SHA256 +`729b57030c9d595b6ee9061b7cc6c730a6de713044ab0f7509637ed029771375`. +Its bounded compile began at 2026-10-20T13:48:43Z in author run +`20261020T134843Z-89c13163`. At the time of this initial note no terminal result +has been observed. No compilation, kernel, control, final review or scientific +success is claimed here. Every actual failed attempt and full stream is retained +under the author execution directory. + +## Additive terminal record and candidate 2 + +Candidate 1 terminated at 2026-10-20T13:58:43.933989Z with return code -15 +after the contracted 600 seconds (observed 600.041933625 seconds). Both streams +were empty, the source was unchanged, and no object was produced. The retained +one-second native process sample at 13:52:03Z shows 791 of 792 samples in +`read()` during module/IR import. This is an import capability timeout, with no +observed proof elaboration verdict. Its receipt and raw sample remain intact. + +After that receipt, and under Root's explicit permission, the author made only +the two source-reading repairs also independently identified by the reviewer: +transport the derivative base point using `map_zero` and `add_zero`, and use +explicit simplification instead of `rfl` to identify the negative derivative +block. These were not falsely attributed to compiler diagnostics. + +Candidate 2 is 8149 bytes, SHA256 +`b3c22e590f761953ba322ad2903978e3982179204ad5c4a166dffc5fa1558322`. +`CANDIDATE2_FREEZE.json`, `CANDIDATE2.diff` and its separate source snapshot bind +the exact changes. No public binder or conclusion changed; the module still has +four definitions and five theorems. No candidate-2 Lean execution or native +retry has occurred at this record. Candidate 2 is held unchanged for the next +source-bound execution route coordinated by Root. + +## Additive hosted failure and candidate 3 + +Root supplied the actual hosted development result from run `39438543701`, +head prefix `c8d66bde`, and authorized repairs only in C299. The author fully +read `hosted-development1/extracted/build-CriticalRidge.stdout` and its receipt. +The build reached elaboration and failed with exit code 1 after 17.856697 +seconds, without a timeout or new object. The three fresh upstream builds had +produced the same source-bound object hashes recorded in the development reuse +manifest. This hosted execution belongs to its actual executor; it is not +claimed as a local author run. + +The complete 4227-byte diagnostic stream has SHA256 +`6287a34ab9f1cfb469f5152c2e523c7f3f1bbc9ab7573f7f01e924120b10877a`. +It identifies the initial concrete nested-operator instance/unification failure +in the direct `compL.flip` construction of `restrictCovector`; subsequent +evaluation/calculus declarations also failed. Independent diagnostics identify +the obsolete `ContinuousLinearMap.zero_apply` name, insufficient unfolding of +the selected ridge/product zero in the eventual IFT equation, and reversed +arguments to `hasFDerivAt_const` (whose actual pinned order is constant, point). +The final diagnostic that a declaration uses `sorry` is elaborator recovery +from failed declarations. The submitted source itself contains no `sorry`, +`admit` or `axiom`. + +The author used the systematic-debugging workflow: full actual diagnostics +first, then the pinned construction and derivative APIs, then a bounded repair. +Relevant actual reads include `Operator/Bilinear.lean`'s +`Continuous.clm_comp_const` and composition map, `ContDiff/Comp.lean`'s +`ContDiff.clm_comp`, `FDeriv/CompCLM.lean`'s `HasFDerivAt.clm_comp`, +`FDeriv/Const.lean:115`, and the actual IFT equations. + +Candidate 3 constructs the same restriction map directly as a continuous +linear map with `toFun ℓ := ℓ.comp V.subtypeL`, pointwise linearity, and the +existing continuity theorem. Its calculus proofs use the library's direct +composition rules with the constant inclusion. This avoids the failing +polymorphic `flip` term and does not change the mathematical map. It also makes +the three independent diagnostic corrections described above. No hypothesis, +conclusion, public binder, declaration name or declaration count changed. + +Candidate 3 is 8485 bytes, SHA256 +`2a93240fa5034544a1dbcf5ec0a10ab11be1ca5d05f60b4df0e2663fa769f442`. +Its exact source snapshot, full diff and failure bindings are retained in +`CANDIDATE3_FREEZE.json` and `CANDIDATE3.diff`. It was frozen at +2026-10-20T14:30:52.127723Z and sent directly to the designated nonauthor +reviewer, as Root requested. No candidate-3 compilation, native retry or +external mutation was performed by this author. Elaboration of this repair +remains to be tested by the separately coordinated hosted route. + + +## Additive second hosted failure and candidate 4 + +The author read the complete candidate-3 diagnostic stream and actual receipt +from hosted run `39440510935`. Elaboration failed with exit code 1 after +12.745656 seconds, without timeout or a new object. The 3059-byte +stdout has SHA256 `a784390b5d21162fef912eb6fefc803a57dfd4ca887a8d2402ce453b275746d6`. +The raw hosted failure, original candidate-3 snapshot and its earlier records +remain unchanged. This was the separate hosted executor's run, not an author +local run. + +The residual derivative proof used a bilinear composition rule with a constant +second argument. Ordinary `convert` generated dependent equalities for product +group/module/topology instances and a separate derivative equality; the next +tactics did not discharge all of them. Candidate 4 removes that unnecessary +bilinear expansion: the already-defined continuous linear restriction map is +differentiated directly and composed with the existing chain derivative. + +The two affected declarations now use declaration-local +`backward.isDefEq.respectTransparency false`, an elaboration setting used by +the pinned Mathlib itself at `Analysis/Calculus/FDeriv/Congr.lean:222` and +`Analysis/Calculus/FDeriv/Basic.lean:517`. It permits the elaborator to unfold +definitionally equal concrete instances; it introduces no premise or axiom and +does not relax kernel checking. The option is not installed globally. The +actual constant restriction derivative API is +`ContinuousLinearMap.hasFDerivAt` in `FDeriv/Linear.lean:57`, followed by the +chain rule `HasFDerivAt.comp` in `FDeriv/Comp.lean:107`. + +The IFT's eventual equality is normalized explicitly to the selected ridge and +actual product zero, then composed pointwise with `hG0`. The final graph +base-point proof explicitly rewrites `hr0` before using the known derivative. +These changes address the actual displayed equality/instance mismatches; they +do not replace the IFT or differentiated identity. The unused-simp diagnostic +disappears with the removed bilinear proof rather than a disabled linter. + +Candidate 4 was frozen at `2026-10-20T14:51:33.461601+00:00`: 8664 bytes, +SHA256 `f3a515bd0a984c8a8affbfc79f4768e7a357b7798eee8990a5a34adbdcf6f0f7`. Exact source-signature text equality was checked for all nine +public declarations against candidate 3. The snapshot, full diff and actual +failure identities are recorded in `CANDIDATE4_FREEZE.json`. No Lean execution, +native retry, remote write, compile success or kernel success is claimed for +this candidate. The actual next hosted check remains necessary. + + +## Additive third hosted failure and candidate 5 + +Actual hosted run `39443604910` tested candidate 4 and failed at elaboration +with exit code 1 after 17.057773 seconds. No object was produced; +this was not a wall-clock timeout. The complete 3405-byte diagnostic stdout +has SHA256 `dd5794a1cb3365b1f4a25e170496e0b697b5b45f4f6a8b5cd9350fbde1946351`. The author read the complete +stream and receipt. The direct restriction-CLM chain application still failed +to align its generalized and normed instances. The declaration-local broad +transparency setting also caused new typeclass/definitional-reduction heartbeat +failures. The earlier source review was a source verdict and did not establish +elaboration. All candidate-4 source, review and failure evidence is retained. + +Candidate 5 removes both broad transparency settings, without raising any +resource cap. The restricted-gradient derivative returns to the candidate-3 +bilinear composition application, which actually elaborated. Its conversion +now uses the pinned `convert!` default-transparency congruence strategy and +discharges every generated goal: definitional instance equalities by `rfl`, +and the derivative-map equality by removing the zero composite then +pointwise extensionality. This is a narrow conversion site, not a module or +declaration-wide transparency change. Pinned `Tactic/Convert.lean` documents +that `convert!` uses default rather than reducible post-transparency, and +`ImplicitContDiff.lean:44` uses this tactic for product derivative conversion. + +The graph chain rule now names its actual function and derivative arguments +explicitly and supplies proof holes in the exact types expected by the normed +chain-rule API. Each hole converts the already-proved derivative; the graph +base point follows from `Prod.ext rfl hr0`. This avoids passing a generalized +`HasFDerivAt` value directly into an unresolved normed application. The IFT +eventual-equality normalization from candidate 4 remains. + +Candidate 5 was frozen at `2026-10-20T15:02:54.565085+00:00`: 8966 bytes, +SHA256 `669b94138531a694f134d24ee9d34ecf6cda5ccec125e2bac279f9e49e1a4aae`. All nine public declaration-signature texts are exactly +unchanged. The full diff, source snapshot, and actual preceding failure +identities are in `CANDIDATE5_FREEZE.json`. No native retry, Lean execution, +external mutation, cap increase, compile PASS or kernel PASS is claimed for +this candidate. This is a bounded uncompiled repair; if the separately +coordinated hosted attempt still fails, the current formal unit remains HOLD +at its actual finite disposition rather than being presented as complete. diff --git a/frontiers/critical_ridge_20261020/execution/author/CANDIDATE5.diff b/frontiers/critical_ridge_20261020/execution/author/CANDIDATE5.diff new file mode 100644 index 000000000..00ab5455a --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/author/CANDIDATE5.diff @@ -0,0 +1,50 @@ +--- candidate4/CriticalRidge.lean ++++ candidate5/CriticalRidge.lean +@@ -108,7 +108,6 @@ + exact (hD.comp (contDiff_const.add (ridgeAddition V).contDiff)).clm_comp + contDiff_const + +-set_option backward.isDefEq.respectTransparency false in + theorem negativePartialGradient_hasFDerivAt (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (hsmooth : IsSmooth d f) : + HasFDerivAt (negativePartialGradient f p V) +@@ -125,10 +124,14 @@ + (p + ridgeAddition V (0 : E d × V)) := by + simpa only [map_zero, add_zero] using hDp + have hcomp := hDp'.comp (0 : E d × V) hadd +- simpa only [negativePartialGradient, Function.comp_def] using +- (restrictCovector V).hasFDerivAt.comp (0 : E d × V) hcomp +- +-set_option backward.isDefEq.respectTransparency false in ++ change HasFDerivAt (fun q : E d × V => ++ (fderiv ℝ f (p + ridgeAddition V q)).comp V.subtypeL) _ _ ++ convert! hcomp.clm_comp (hasFDerivAt_const V.subtypeL (0 : E d × V)) using 1 <;> ++ first ++ | rfl ++ | (simp only [ContinuousLinearMap.comp_zero, zero_add] <;> ++ (ext q z; rfl)) ++ + /-- One actual ridge and all four conclusions for the same chosen function. + The equation is in the actual ambient function and actual subspace. -/ + theorem exists_negative_partial_gradient_ridge +@@ -187,10 +190,16 @@ + (hasFDerivAt_const (0 : V →L[ℝ] ℝ) (0 : E d)).congr_of_eventuallyEq heq + have hchain : HasFDerivAt (fun w : E d => G (w, r w)) + (D.comp ((ContinuousLinearMap.id ℝ (E d)).prod (fderiv ℝ r 0))) 0 := by +- have hd : HasFDerivAt G D ((0 : E d), r 0) := by +- rw [hr0] +- exact hDG +- exact hd.comp 0 hgraph ++ convert! (HasFDerivAt.comp ++ (g := G) (g' := D) (f := fun w : E d => (w, r w)) ++ (f' := (ContinuousLinearMap.id ℝ (E d)).prod (fderiv ℝ r 0)) ++ (0 : E d) ++ (by ++ convert! hDG using 1 <;> ++ first ++ | rfl ++ | exact Prod.ext rfl hr0) ++ (by convert! hgraph using 1 <;> rfl)) using 1 <;> rfl + have hid := hchain.unique hzero + intro w z + have h := congrArg (fun C : E d →L[ℝ] (V →L[ℝ] ℝ) => C w z) hid diff --git a/frontiers/critical_ridge_20261020/execution/author/CANDIDATE5_FREEZE.json b/frontiers/critical_ridge_20261020/execution/author/CANDIDATE5_FREEZE.json new file mode 100644 index 000000000..18e2b113d --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/author/CANDIDATE5_FREEZE.json @@ -0,0 +1,27 @@ +{ + "schema": "c299-candidate5-freeze-v1", + "created_utc": "2026-10-20T15:02:54.565085+00:00", + "source": "project/CriticalRidge.lean", + "bytes": 8966, + "sha256": "669b94138531a694f134d24ee9d34ecf6cda5ccec125e2bac279f9e49e1a4aae", + "source_snapshot": "execution/author/source-attempts/669b94138531a694f134d24ee9d34ecf6cda5ccec125e2bac279f9e49e1a4aae.lean", + "predecessor_sha256": "f3a515bd0a984c8a8affbfc79f4768e7a357b7798eee8990a5a34adbdcf6f0f7", + "failure_stdout": "hosted-development3/extracted/build-CriticalRidge.stdout", + "failure_stdout_sha256": "dd5794a1cb3365b1f4a25e170496e0b697b5b45f4f6a8b5cd9350fbde1946351", + "failure_receipt": "hosted-development3/extracted/build-CriticalRidge.receipt.json", + "failure_receipt_sha256": "58be4e1e89eb9fce6ac069faade532a6592c9135093a77c463576cbe30f647b1", + "failure_duration_seconds": 17.057773, + "failure_exit_code": 1, + "failure_timed_out": false, + "hosted_development_run": 39443604910, + "diff": "execution/author/CANDIDATE5.diff", + "diff_sha256": "df231756fa1c33bacf3745127bcbac0b3fd0aa98e64254519a54af6c02664200", + "public_binder_changes": false, + "public_declaration_count": 9, + "public_signature_text_equality": true, + "candidate5_compilation_performed": false, + "native_retry_performed": false, + "resource_caps_increased": false, + "declaration_or_global_transparency_options": false, + "scientific_effect": "NONE" +} diff --git a/frontiers/critical_ridge_20261020/execution/author/source-attempts/669b94138531a694f134d24ee9d34ecf6cda5ccec125e2bac279f9e49e1a4aae.lean b/frontiers/critical_ridge_20261020/execution/author/source-attempts/669b94138531a694f134d24ee9d34ecf6cda5ccec125e2bac279f9e49e1a4aae.lean new file mode 100644 index 000000000..a17058a0b --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/author/source-attempts/669b94138531a694f134d24ee9d34ecf6cda5ccec125e2bac279f9e49e1a4aae.lean @@ -0,0 +1,208 @@ +import MorseFiniteCritical +import Mathlib.Analysis.Calculus.ImplicitContDiff + +/-! +# The actual negative partial-gradient ridge + +C299 constructs a local ridge from literal smoothness, criticality and a +negative definite restriction of the literal Hessian. The parameter is ambient +`E d`; it may subsequently be restricted to the supplied positive complement. +No complement is assumed orthogonal. No ridge, inverse certificate, Morse chart, +closed-superlevel local path connectivity or finite event list is an input. + +The construction follows the reviewed direct-ridge paper published at +Math-#487, issuecomment-6292079965. This module covers only its partial-gradient +implicit-function step and differentiated equation. Reduced positivity, +uniform signs, fiber concavity, tubes, paths, the quotient and full LPC remain +separate obligations. +-/ + +noncomputable section + +open Set Topology +open UniversalLaw.Spec.Lifetime TorusMorseFinite + +namespace TorusCriticalRidge + +variable {d : ℕ} + +/-- Restrict an ambient continuous covector to the literal subspace. -/ +def restrictCovector (V : Submodule ℝ (E d)) : + (E d →L[ℝ] ℝ) →L[ℝ] (V →L[ℝ] ℝ) where + toFun ℓ := ℓ.comp V.subtypeL + map_add' ℓ₁ ℓ₂ := by + ext z + rfl + map_smul' c ℓ := by + ext z + rfl + cont := (continuous_id : Continuous (fun ℓ : E d →L[ℝ] ℝ => ℓ)).clm_comp_const + V.subtypeL + +/-- Addition of an ambient parameter and a vector in the negative subspace. -/ +def ridgeAddition (V : Submodule ℝ (E d)) : + (E d × V) →L[ℝ] E d := + ContinuousLinearMap.fst ℝ (E d) V + + V.subtypeL.comp (ContinuousLinearMap.snd ℝ (E d) V) + +/-- The covector-valued partial gradient, with a fixed base point. -/ +def negativePartialGradient (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (q : E d × V) : V →L[ℝ] ℝ := + restrictCovector V (fderiv ℝ f (p + ridgeAddition V q)) + +/-- The actual Hessian restricted to both negative-subspace arguments. -/ +def negativeHessianBlock (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) : V →L[ℝ] (V →L[ℝ] ℝ) := + (restrictCovector V).comp + ((fderiv ℝ (fderiv ℝ f) p).comp V.subtypeL) + +theorem negativeHessianBlock_apply (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (v z : V) : + negativeHessianBlock f p V v z = hessian d f p v z := by + rw [literal_hessian_eq_fderiv] + rfl + +/-- Negative definiteness supplies the exact continuous inverse required by IFT. +This includes the zero subspace, without a unit-sphere argument. -/ +theorem negativeHessianBlock_isInvertible (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) + (hneg : ∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0) : + (negativeHessianBlock f p V).IsInvertible := by + let C := negativeHessianBlock f p V + have hz : ∀ v : V, C v = 0 → v = 0 := by + intro v hv + by_contra hne + have hvne : (v : E d) ≠ 0 := by + intro h + apply hne + exact Subtype.ext h + have hn := hneg v v.property hvne + have he : hessian d f p v v = 0 := by + have h := congrArg (fun k : V →L[ℝ] ℝ => k v) hv + simpa only [C, negativeHessianBlock_apply, zero_apply] using h + linarith + have hC : Function.Injective C := by + intro u v huv + apply sub_eq_zero.mp + apply hz + simp [map_sub, huv] + let J : V ≃L[ℝ] (V →L[ℝ] ℝ) := + (InnerProductSpace.toDual ℝ V).toContinuousLinearEquiv + let A : V →L[ℝ] V := J.symm.toContinuousLinearMap.comp C + have hA : Function.Injective A := J.symm.injective.comp hC + let eA : V ≃L[ℝ] V := + (LinearEquiv.ofInjectiveEndo A.toLinearMap hA).toContinuousLinearEquiv + refine ⟨eA.trans J, ?_⟩ + apply ContinuousLinearMap.ext + intro v + change J (J.symm (C v)) = C v + exact J.apply_symm_apply (C v) + +theorem negativePartialGradient_contDiff (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (hsmooth : IsSmooth d f) : + ContDiff ℝ 2 (negativePartialGradient f p V) := by + have hD : ContDiff ℝ 2 (fderiv ℝ f) := + (contDiff_succ_iff_fderiv.mp (hsmooth 3)).2.2 + change ContDiff ℝ 2 (fun q : E d × V => + (fderiv ℝ f (p + ridgeAddition V q)).comp V.subtypeL) + exact (hD.comp (contDiff_const.add (ridgeAddition V).contDiff)).clm_comp + contDiff_const + +theorem negativePartialGradient_hasFDerivAt (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (hsmooth : IsSmooth d f) : + HasFDerivAt (negativePartialGradient f p V) + ((restrictCovector V).comp + ((fderiv ℝ (fderiv ℝ f) p).comp (ridgeAddition V))) + (0 : E d × V) := by + have hD : ContDiff ℝ 1 (fderiv ℝ f) := + (contDiff_succ_iff_fderiv.mp (hsmooth 2)).2.2 + have hDp := (hD.differentiable (by norm_num) p).hasFDerivAt + have hadd : HasFDerivAt (fun q : E d × V => p + ridgeAddition V q) + (ridgeAddition V) 0 := by + simpa using ((ridgeAddition V).hasFDerivAt.const_add p) + have hDp' : HasFDerivAt (fderiv ℝ f) (fderiv ℝ (fderiv ℝ f) p) + (p + ridgeAddition V (0 : E d × V)) := by + simpa only [map_zero, add_zero] using hDp + have hcomp := hDp'.comp (0 : E d × V) hadd + change HasFDerivAt (fun q : E d × V => + (fderiv ℝ f (p + ridgeAddition V q)).comp V.subtypeL) _ _ + convert! hcomp.clm_comp (hasFDerivAt_const V.subtypeL (0 : E d × V)) using 1 <;> + first + | rfl + | (simp only [ContinuousLinearMap.comp_zero, zero_add] <;> + (ext q z; rfl)) + +/-- One actual ridge and all four conclusions for the same chosen function. +The equation is in the actual ambient function and actual subspace. -/ +theorem exists_negative_partial_gradient_ridge + (f : E d → ℝ) (p : E d) (V : Submodule ℝ (E d)) + (hsmooth : IsSmooth d f) (hcritical : IsCriticalPoint d f p) + (hneg : ∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0) : + ∃ r : E d → V, + r 0 = 0 ∧ + ContDiffAt ℝ 2 r 0 ∧ + (∀ᶠ w in 𝓝 (0 : E d), ∀ z : V, + fderiv ℝ f (p + w + (r w : E d)) z = 0) ∧ + (∀ (w : E d) (z : V), + hessian d f p (w + (fderiv ℝ r 0 w : E d)) z = 0) := by + let G := negativePartialGradient f p V + let D := (restrictCovector V).comp + ((fderiv ℝ (fderiv ℝ f) p).comp (ridgeAddition V)) + have hG : ContDiffAt ℝ 2 G (0 : E d × V) := + (negativePartialGradient_contDiff f p V hsmooth).contDiffAt + have hDG : HasFDerivAt G D (0 : E d × V) := + negativePartialGradient_hasFDerivAt f p V hsmooth + have hblock : fderiv ℝ G (0 : E d × V) ∘L + ContinuousLinearMap.inr ℝ (E d) V = negativeHessianBlock f p V := by + rw [hDG.fderiv] + ext v z + simp [D, negativeHessianBlock, ridgeAddition, restrictCovector] + have hinv : (fderiv ℝ G (0 : E d × V) ∘L + ContinuousLinearMap.inr ℝ (E d) V).IsInvertible := by + rw [hblock] + exact negativeHessianBlock_isInvertible f p V hneg + let r : E d → V := hG.implicitFunction (by norm_num) hinv + have hr0 : r 0 = 0 := hG.implicitFunction_apply_self (by norm_num) hinv + have hrC : ContDiffAt ℝ 2 r 0 := + hG.contDiffAt_implicitFunction (by norm_num) hinv + have hG0 : G (0 : E d × V) = 0 := by + ext z + simp [G, negativePartialGradient, ridgeAddition, restrictCovector, + show fderiv ℝ f p = 0 from hcritical] + have heq : (fun w => G (w, r w)) =ᶠ[𝓝 (0 : E d)] + (fun _ => (0 : V →L[ℝ] ℝ)) := by + have h := hG.eventually_apply_implicitFunction (by norm_num) hinv + change ∀ᶠ w in 𝓝 (0 : E d), G (w, r w) = G (0 : E d × V) at h + change ∀ᶠ w in 𝓝 (0 : E d), G (w, r w) = 0 + exact h.mono fun _ hw => hw.trans hG0 + refine ⟨r, hr0, hrC, ?_, ?_⟩ + · filter_upwards [heq] with w hw + intro z + have hz := congrArg (fun k : V →L[ℝ] ℝ => k z) hw + simpa [G, negativePartialGradient, ridgeAddition, restrictCovector, add_assoc] using hz + · have hdr : HasFDerivAt r (fderiv ℝ r 0) 0 := + (hrC.differentiableAt (by norm_num)).hasFDerivAt + have hgraph : HasFDerivAt (fun w : E d => (w, r w)) + ((ContinuousLinearMap.id ℝ (E d)).prod (fderiv ℝ r 0)) 0 := + (hasFDerivAt_id (0 : E d)).prodMk hdr + have hzero : HasFDerivAt (fun w : E d => G (w, r w)) + (0 : E d →L[ℝ] (V →L[ℝ] ℝ)) 0 := + (hasFDerivAt_const (0 : V →L[ℝ] ℝ) (0 : E d)).congr_of_eventuallyEq heq + have hchain : HasFDerivAt (fun w : E d => G (w, r w)) + (D.comp ((ContinuousLinearMap.id ℝ (E d)).prod (fderiv ℝ r 0))) 0 := by + convert! (HasFDerivAt.comp + (g := G) (g' := D) (f := fun w : E d => (w, r w)) + (f' := (ContinuousLinearMap.id ℝ (E d)).prod (fderiv ℝ r 0)) + (0 : E d) + (by + convert! hDG using 1 <;> + first + | rfl + | exact Prod.ext rfl hr0) + (by convert! hgraph using 1 <;> rfl)) using 1 <;> rfl + have hid := hchain.unique hzero + intro w z + have h := congrArg (fun C : E d →L[ℝ] (V →L[ℝ] ℝ) => C w z) hid + simpa [D, restrictCovector, ridgeAddition, literal_hessian_eq_fderiv] using h + +end TorusCriticalRidge diff --git a/frontiers/critical_ridge_20261020/hosted-development3/ARCHIVE_MEMBERS.json b/frontiers/critical_ridge_20261020/hosted-development3/ARCHIVE_MEMBERS.json new file mode 100644 index 000000000..010499bef --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development3/ARCHIVE_MEMBERS.json @@ -0,0 +1,167 @@ +[ + { + "path": "HOSTED_SOURCE_MANIFEST.json", + "bytes": 1731, + "sha256": "f7ffc5724de5d45b0518fe09f4396e6d2b817af920da0a63694ac97276e879ec" + }, + { + "path": "build-CriticalRidge.receipt.json", + "bytes": 4332, + "sha256": "58be4e1e89eb9fce6ac069faade532a6592c9135093a77c463576cbe30f647b1" + }, + { + "path": "RESULT.json", + "bytes": 34425, + "sha256": "dd96177bc6af90f2e22d9bde2d3c0b1212d8eabb0e4891d41ba095785e8426c6" + }, + { + "path": "build-CriticalRidge.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-CriticalRidge.stdout", + "bytes": 3405, + "sha256": "dd5794a1cb3365b1f4a25e170496e0b697b5b45f4f6a8b5cd9350fbde1946351" + }, + { + "path": "build-Lifetime.receipt.json", + "bytes": 3639, + "sha256": "1a6eb0cef7767b4a7c1297dab5199de199b45f7570fc06cb456021a452c8e692" + }, + { + "path": "build-Lifetime.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-Lifetime.stdout", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-MorseFiniteCritical.receipt.json", + "bytes": 4272, + "sha256": "3527c87b924ecc07a6172ca0fab7500c32b79478e53dae8a0db04508b259e153" + }, + { + "path": "build-MorseFiniteCritical.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-MorseFiniteCritical.stdout", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-TorusTopology.receipt.json", + "bytes": 3964, + "sha256": "ef7d81076a9baecf8e6277155697277f9197180fc4e9e6178239713b1e859945" + }, + { + "path": "build-TorusTopology.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-TorusTopology.stdout", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "objects/Lifetime.olean", + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + { + "path": "objects/MorseFiniteCritical.olean", + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + { + "path": "objects/TorusTopology.olean", + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + }, + { + "path": "runtime-print-prefix.receipt.json", + "bytes": 3160, + "sha256": "418e042de0b83a5c6cb37219b5473ddafa00dab03ffb7ab4e591d1453933f670" + }, + { + "path": "runtime-print-prefix.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "runtime-print-prefix.stdout", + "bytes": 58, + "sha256": "e0e72101499ee5e5a1967519d9955a093a555b85d5073da4bdba8bdd4cb12617" + }, + { + "path": "runtime-version.receipt.json", + "bytes": 3151, + "sha256": "3efdfbb1b8043fc90efdc2511931a7d24b87df0ac417771f56be1ed0797d3e5e" + }, + { + "path": "runtime-version.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "runtime-version.stdout", + "bytes": 106, + "sha256": "355a9a028f81641782d75d6e6b58dec70f29d2f61238a9e271690259d9bf5680" + }, + { + "path": "source-snapshot/negative-project/WithoutCriticality.lean", + "bytes": 944, + "sha256": "6ebc44de843b951c312add4848962d76c4788cc10bdacf17002eb69fd370f1d2" + }, + { + "path": "source-snapshot/negative-project/WithoutNegativeDefiniteness.lean", + "bytes": 872, + "sha256": "ad204aee211aa3074621f56eeaf8e1a3f3a522b7c7cbe2bbdd67f3759833feb9" + }, + { + "path": "source-snapshot/project/CriticalRidge.lean", + "bytes": 8664, + "sha256": "f3a515bd0a984c8a8affbfc79f4768e7a357b7798eee8990a5a34adbdcf6f0f7" + }, + { + "path": "source-snapshot/project/CriticalRidgeAxiomAudit.lean", + "bytes": 2728, + "sha256": "cff55f5b7721a621530ae1020b81e6cc89ce5c405396145e1ca5d3cfba4b2fb7" + }, + { + "path": "source-snapshot/project/Lifetime.lean", + "bytes": 51383, + "sha256": "90f4892608e953ecc696bb32ea159d1c178ceb8a1c6edfd11acfceb14af462c6" + }, + { + "path": "source-snapshot/project/MorseFiniteCritical.lean", + "bytes": 9445, + "sha256": "95a660134eda49eecfe6181884bd23b4e4ca210e228d2463de29e5f821df047b" + }, + { + "path": "source-snapshot/project/TorusTopology.lean", + "bytes": 12257, + "sha256": "ddb145b3f791c181d4f2a51e54e711937297bd6476ba55bcd5252b7ddb57cfe1" + }, + { + "path": "source-snapshot/repository/.github/workflows/c299-critical-ridge.yml", + "bytes": 3030, + "sha256": "3c2424b126ec89a40ef31db18d30dc83d3a3d872f9568531eb28277eb0ae3fdc" + }, + { + "path": "source-snapshot/repository/frontiers/critical_ridge_20261020/c299_hosted_verify.py", + "bytes": 32069, + "sha256": "e4c5b9dd02e2ba2f98da27707c42ef861d9039b52864833d2164a3114f318f49" + }, + { + "path": "source-snapshot/repository/frontiers/critical_ridge_20261020/test_c299_hosted_verify.py", + "bytes": 17863, + "sha256": "62400129fda7b863d692397deac2a9d83b7f1101d98b53ed1043f0ef8cfd604e" + } +] diff --git a/frontiers/critical_ridge_20261020/hosted-development3/DISPOSITION.json b/frontiers/critical_ridge_20261020/hosted-development3/DISPOSITION.json new file mode 100644 index 000000000..a872796eb --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development3/DISPOSITION.json @@ -0,0 +1,60 @@ +{ + "checkpoint": "2026-10-20T15:00:24.603142+00:00", + "actual_executor": "GitHub Actions ubuntu-24.04 via OpenAI Codex root publication; delegated for Dylan Roy", + "source_author": "OpenAI Codex /root/adapter_feasibility_c292", + "head": "5e63005bd6d8288695fbbc974e40336dca87e77f", + "tested_merge": "011a9683382b474cfcf0046ebaec365452277654", + "tree": "b2c081da3914ec070fbeeb2e83109672e3b5757c", + "run": 39443604910, + "attempt": 1, + "job": 118699588256, + "artifact": 12274363865, + "artifact_bytes": 479747, + "artifact_sha256": "73c7f4a1c1cc83fc74408bc9f885969e9704a7d6c6af32fa6aed071aaddcff5a", + "candidate_bytes": 8664, + "candidate_sha256": "f3a515bd0a984c8a8affbfc79f4768e7a357b7798eee8990a5a34adbdcf6f0f7", + "result": "HOLD_NOT_COMPLETED", + "phase_results": [ + { + "name": "runtime-print-prefix", + "exit_code": 0, + "timed_out": false, + "status": "PASS" + }, + { + "name": "runtime-version", + "exit_code": 0, + "timed_out": false, + "status": "PASS" + }, + { + "name": "build-Lifetime", + "exit_code": 0, + "timed_out": false, + "status": "PASS" + }, + { + "name": "build-TorusTopology", + "exit_code": 0, + "timed_out": false, + "status": "PASS" + }, + { + "name": "build-MorseFiniteCritical", + "exit_code": 0, + "timed_out": false, + "status": "PASS" + }, + { + "name": "build-CriticalRidge", + "exit_code": 1, + "timed_out": false, + "status": "FAIL" + } + ], + "actual_failure": "Candidate4 still has restriction CLM derivative-composition application mismatch at line129. Broad declaration-local respectTransparency=false also reached compiler-internal deterministic typeclass20000 and isDefEq/whnf200000 limits; process17.057773s exit1 without outer timeout. Three input modules freshly compiled. Ridge object absent; no kernel/census/negative controls reached. Current-head downstream3checks succeeded but do not accept C299.", + "diagnostic_bytes": 3405, + "diagnostic_sha256": "dd5794a1cb3365b1f4a25e170496e0b697b5b45f4f6a8b5cd9350fbde1946351", + "repair_scope": "Source author must address actual coherent instances and narrow elaboration without merely raising resource caps. Separate source review required; no native retry or unchanged hosted retry.", + "scientific_effect": "NONE" +} diff --git a/frontiers/critical_ridge_20261020/hosted-development3/HOSTED_SOURCE_MANIFEST.json b/frontiers/critical_ridge_20261020/hosted-development3/HOSTED_SOURCE_MANIFEST.json new file mode 100644 index 000000000..3d1261d99 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development3/HOSTED_SOURCE_MANIFEST.json @@ -0,0 +1,48 @@ +{ + "files": { + "negative-project/WithoutCriticality.lean": { + "bytes": 944, + "sha256": "6ebc44de843b951c312add4848962d76c4788cc10bdacf17002eb69fd370f1d2" + }, + "negative-project/WithoutNegativeDefiniteness.lean": { + "bytes": 872, + "sha256": "ad204aee211aa3074621f56eeaf8e1a3f3a522b7c7cbe2bbdd67f3759833feb9" + }, + "project/CriticalRidge.lean": { + "bytes": 8664, + "sha256": "f3a515bd0a984c8a8affbfc79f4768e7a357b7798eee8990a5a34adbdcf6f0f7" + }, + "project/CriticalRidgeAxiomAudit.lean": { + "bytes": 2728, + "sha256": "cff55f5b7721a621530ae1020b81e6cc89ce5c405396145e1ca5d3cfba4b2fb7" + }, + "project/Lifetime.lean": { + "bytes": 51383, + "sha256": "90f4892608e953ecc696bb32ea159d1c178ceb8a1c6edfd11acfceb14af462c6" + }, + "project/MorseFiniteCritical.lean": { + "bytes": 9445, + "sha256": "95a660134eda49eecfe6181884bd23b4e4ca210e228d2463de29e5f821df047b" + }, + "project/TorusTopology.lean": { + "bytes": 12257, + "sha256": "ddb145b3f791c181d4f2a51e54e711937297bd6476ba55bcd5252b7ddb57cfe1" + } + }, + "schema_version": 1, + "scientific_effect": "NONE", + "source_origins": { + "Lifetime": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/Lifetime.lean" + }, + "MorseFiniteCritical": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/MorseFiniteCritical.lean" + }, + "TorusTopology": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/TorusTopology.lean" + } + } +} diff --git a/frontiers/critical_ridge_20261020/hosted-development3/RESULT.json b/frontiers/critical_ridge_20261020/hosted-development3/RESULT.json new file mode 100644 index 000000000..369665e7e --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development3/RESULT.json @@ -0,0 +1,476 @@ +{ + "context": { + "executor": "GitHub-hosted runner executing C299 verification code", + "github_event_name": "pull_request", + "github_job": "c299-hosted-formal", + "github_repository": "d6g8k5htny-coder/Math-", + "github_run_attempt": "1", + "github_run_id": "39443604910", + "github_sha": "011a9683382b474cfcf0046ebaec365452277654", + "github_workflow": "C299 critical ridge (hosted Lean, no scientific promotion)", + "human_review_credit": 0, + "pull_request": { + "base_sha": "8c226134ac0a0169dbb43311082e5353ed5c922c", + "head_sha": "5e63005bd6d8288695fbbc974e40336dca87e77f", + "number": 491 + }, + "tested_commit": "011a9683382b474cfcf0046ebaec365452277654", + "tested_parents": [], + "tested_tree": "53a29f7806cb06bd3f4971b13d574697d4e2cf40" + }, + "environment_contract": { + "policy": "Remove inherited LEAN*, LAKE*, LD_* and DYLD_* overrides, except the Lake-provided LEAN_PATH; prepend the fresh local object directory to that path and set LEAN_NUM_THREADS=2. Retain declared PATH for launcher lookup. Other inherited variables remain available but are not recorded. Record only selected non-secret path/thread values and removed variable names.", + "removed_variable_names": [ + "LAKE", + "LAKE_ARTIFACT_CACHE", + "LAKE_CACHE_DIR", + "LAKE_CONFIG", + "LAKE_HOME", + "LAKE_NO_CACHE", + "LAKE_PKG_URL_MAP", + "LAKE_RESTORE_ARTIFACTS", + "LD_LIBRARY_PATH", + "LEAN", + "LEAN_AR", + "LEAN_GITHASH", + "LEAN_NUM_THREADS", + "LEAN_RECURSION_COUNT", + "LEAN_SRC_PATH", + "LEAN_SYSROOT" + ], + "retained_lake_lean_path": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461" + }, + "failure": "RuntimeError('C299 build-CriticalRidge unexpected exit: 1; timed_out=False; spawn_error=None; object_error=build must add only its own target object outputs; environment_error=None')", + "lean_launcher": { + "bytes": 9024, + "path": "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "sha256": "e8baaa71855a616dc351028f3ad2200051b0671f423a1696a100e809302d5550" + }, + "lean_version_output": "Lean (version 4.34.1, x86_64-unknown-linux-gnu, commit 5045d0056413266e57c625dcd7c365b10e377c52, Release)\n\n", + "machine": { + "machine": "x86_64", + "platform": "Linux-6.17.0-1022-azure-x86_64-with-glibc2.39", + "python": "3.12.3" + }, + "memory_limit": "-M14000", + "memory_limit_reason": "Explicit Linux execution budget; not a claim that C299 requires this amount.", + "packages_before": { + "Cli": "e92c9f15fdfacc8536f31cfb3b7ad26c3c8cd204", + "LeanSearchClient": "ddf04cf3949fa556442341e87d47f9f6e6074707", + "Qq": "6a489d9af5d0c47e5b259e2e8bcdfc1811b5a259", + "aesop": "355695d523e41d0554926416cba2a2b3544fbbc9", + "batteries": "f2effa3d803fda822b1f97b806c47cf2adfbcbc2", + "importGraph": "e928b72544873815af278d38681b31c0293588e3", + "mathlib": "d13f23b723b8a846827a245b89c10fc7d3f11612", + "plausible": "118aa17ee84656b8bd727fef7c458ee8c833385c", + "proofwidgets": "106ff4fafc74ef4ac99d81dbf3ab399118f497a5" + }, + "phase_results": [ + { + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "--print-prefix" + ], + "cwd": "/home/runner/work/Math-/Math-/formal", + "duration_seconds": 0.032161, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:57:02.833237+00:00", + "name": "runtime-print-prefix", + "object_validation_error": null, + "objects_after": null, + "objects_before": null, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:57:02.801098+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 58, + "stdout_sha256": "e0e72101499ee5e5a1967519d9955a093a555b85d5073da4bdba8bdd4cb12617", + "timed_out": false, + "timeout_seconds": 30, + "unexpected_override_names": [] + }, + { + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "--version" + ], + "cwd": "/home/runner/work/Math-/Math-/formal", + "duration_seconds": 0.031911, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:57:02.886226+00:00", + "name": "runtime-version", + "object_validation_error": null, + "objects_after": null, + "objects_before": null, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:57:02.854334+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 106, + "stdout_sha256": "355a9a028f81641782d75d6e6b58dec70f29d2f61238a9e271690259d9bf5680", + "timed_out": false, + "timeout_seconds": 30, + "unexpected_override_names": [] + }, + { + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/Lifetime.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/Lifetime.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 5.427366, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:57:08.356057+00:00", + "name": "build-Lifetime", + "object": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "object_validation_error": null, + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + } + }, + "objects_before": {}, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:57:02.928710+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] + }, + { + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-DwarningAsError=true", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/TorusTopology.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/TorusTopology.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 4.626473, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:57:13.060714+00:00", + "name": "build-TorusTopology", + "object": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + }, + "object_validation_error": null, + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "objects_before": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + } + }, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:57:08.434259+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] + }, + { + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-DwarningAsError=true", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/MorseFiniteCritical.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/MorseFiniteCritical.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 6.532124, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:57:19.596627+00:00", + "name": "build-MorseFiniteCritical", + "object": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "object_validation_error": null, + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "MorseFiniteCritical.olean": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "objects_before": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:57:13.064519+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] + }, + { + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-DwarningAsError=true", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/CriticalRidge.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 17.057773, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 1, + "finished_at": "2026-10-20T14:57:36.658480+00:00", + "name": "build-CriticalRidge", + "object_validation_error": "build must add only its own target object outputs", + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "MorseFiniteCritical.olean": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "objects_before": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "MorseFiniteCritical.olean": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:57:19.600726+00:00", + "status": "FAIL", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 3405, + "stdout_sha256": "dd5794a1cb3365b1f4a25e170496e0b697b5b45f4f6a8b5cd9350fbde1946351", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] + } + ], + "phase_timeout_seconds": 900, + "replay_limit": "Not a --fresh replay or rebuild of the full dependency closure.", + "runtimes": { + "lean": { + "bytes": 9024, + "path": "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "sha256": "e8baaa71855a616dc351028f3ad2200051b0671f423a1696a100e809302d5550" + }, + "leanchecker": { + "bytes": 51080, + "path": "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/leanchecker", + "sha256": "ccef1bfe9bfeecea65137d94a69033c1a89f360711f50fa3178e7ba3e696fcbe" + } + }, + "scientific_effect": "NONE", + "source_identity": { + "dependency_pins": { + "Cli": "e92c9f15fdfacc8536f31cfb3b7ad26c3c8cd204", + "LeanSearchClient": "ddf04cf3949fa556442341e87d47f9f6e6074707", + "Qq": "6a489d9af5d0c47e5b259e2e8bcdfc1811b5a259", + "aesop": "355695d523e41d0554926416cba2a2b3544fbbc9", + "batteries": "f2effa3d803fda822b1f97b806c47cf2adfbcbc2", + "importGraph": "e928b72544873815af278d38681b31c0293588e3", + "mathlib": "d13f23b723b8a846827a245b89c10fc7d3f11612", + "plausible": "118aa17ee84656b8bd727fef7c458ee8c833385c", + "proofwidgets": "106ff4fafc74ef4ac99d81dbf3ab399118f497a5" + }, + "files": { + "negative-project/WithoutCriticality.lean": { + "bytes": 944, + "sha256": "6ebc44de843b951c312add4848962d76c4788cc10bdacf17002eb69fd370f1d2" + }, + "negative-project/WithoutNegativeDefiniteness.lean": { + "bytes": 872, + "sha256": "ad204aee211aa3074621f56eeaf8e1a3f3a522b7c7cbe2bbdd67f3759833feb9" + }, + "project/CriticalRidge.lean": { + "bytes": 8664, + "sha256": "f3a515bd0a984c8a8affbfc79f4768e7a357b7798eee8990a5a34adbdcf6f0f7" + }, + "project/CriticalRidgeAxiomAudit.lean": { + "bytes": 2728, + "sha256": "cff55f5b7721a621530ae1020b81e6cc89ce5c405396145e1ca5d3cfba4b2fb7" + }, + "project/Lifetime.lean": { + "bytes": 51383, + "sha256": "90f4892608e953ecc696bb32ea159d1c178ceb8a1c6edfd11acfceb14af462c6" + }, + "project/MorseFiniteCritical.lean": { + "bytes": 9445, + "sha256": "95a660134eda49eecfe6181884bd23b4e4ca210e228d2463de29e5f821df047b" + }, + "project/TorusTopology.lean": { + "bytes": 12257, + "sha256": "ddb145b3f791c181d4f2a51e54e711937297bd6476ba55bcd5252b7ddb57cfe1" + } + }, + "formal_config": { + "formal/lake-manifest.json": { + "bytes": 3553, + "sha256": "d63753befccc21923783a5085148e3ff028d97134ea52f5a08bd87ecf1b0b043" + }, + "formal/lakefile.toml": { + "bytes": 274, + "sha256": "d629891716c169404d1f0d76492441c8dd66f1e790b1b8b0819e51c8d5059255" + }, + "formal/lean-toolchain": { + "bytes": 25, + "sha256": "d5edba4e4b8faad9c1baeadb265716d20d03be4d1a2647dc5e35b0c0325bea7b" + } + }, + "manifest": { + "bytes": 1731, + "sha256": "f7ffc5724de5d45b0518fe09f4396e6d2b817af920da0a63694ac97276e879ec" + }, + "source_origin_limit": "Remote origin byte equality is a separate owner custody check.", + "source_origins": { + "Lifetime": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/Lifetime.lean" + }, + "MorseFiniteCritical": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/MorseFiniteCritical.lean" + }, + "TorusTopology": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/TorusTopology.lean" + } + }, + "support_files": { + ".github/workflows/c299-critical-ridge.yml": { + "bytes": 3030, + "sha256": "3c2424b126ec89a40ef31db18d30dc83d3a3d872f9568531eb28277eb0ae3fdc" + }, + "frontiers/critical_ridge_20261020/c299_hosted_verify.py": { + "bytes": 32069, + "sha256": "e4c5b9dd02e2ba2f98da27707c42ef861d9039b52864833d2164a3114f318f49" + }, + "frontiers/critical_ridge_20261020/test_c299_hosted_verify.py": { + "bytes": 17863, + "sha256": "62400129fda7b863d692397deac2a9d83b7f1101d98b53ed1043f0ef8cfd604e" + } + } + }, + "started_at": "2026-10-20T14:55:13.112888+00:00", + "started_execution_at": "2026-10-20T14:57:02.268644+00:00", + "status": "HOLD_NOT_COMPLETED", + "threads": 2, + "verification_scope": "Five fresh local objects; four standard named-module kernel replays; full four-module axiom census; two omitted-premise interface controls." +} diff --git a/frontiers/critical_ridge_20261020/hosted-development3/build-CriticalRidge.receipt.json b/frontiers/critical_ridge_20261020/hosted-development3/build-CriticalRidge.receipt.json new file mode 100644 index 000000000..b7cbb2bdf --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development3/build-CriticalRidge.receipt.json @@ -0,0 +1,63 @@ +{ + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-DwarningAsError=true", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/CriticalRidge.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 17.057773, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 1, + "finished_at": "2026-10-20T14:57:36.658480+00:00", + "name": "build-CriticalRidge", + "object_validation_error": "build must add only its own target object outputs", + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "MorseFiniteCritical.olean": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "objects_before": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "MorseFiniteCritical.olean": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:57:19.600726+00:00", + "status": "FAIL", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 3405, + "stdout_sha256": "dd5794a1cb3365b1f4a25e170496e0b697b5b45f4f6a8b5cd9350fbde1946351", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] +} diff --git a/frontiers/critical_ridge_20261020/hosted-development3/build-CriticalRidge.stderr b/frontiers/critical_ridge_20261020/hosted-development3/build-CriticalRidge.stderr new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development3/build-CriticalRidge.stdout b/frontiers/critical_ridge_20261020/hosted-development3/build-CriticalRidge.stdout new file mode 100644 index 000000000..e7ef1ac7d --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development3/build-CriticalRidge.stdout @@ -0,0 +1,54 @@ +/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean:129:4: error: Application type mismatch: The argument + ContinuousLinearMap.hasFDerivAt (restrictCovector V) +has type + HasFDerivAt (⇑(restrictCovector V)) (restrictCovector V) ?m.289 +but is expected to have type + HasFDerivAt ?m.305 ?m.306 ((fderiv ℝ f ∘ fun q => p + (ridgeAddition V) q) 0) +in the application + HasFDerivAt.comp 0 (ContinuousLinearMap.hasFDerivAt (restrictCovector V)) +/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean:154:8: error: failed to synthesize + ContinuousSMul ℝ (E d × ↥V) +(deterministic) timeout at `typeclass`, maximum number of heartbeats (20000) has been reached + +Note: Use `set_option synthInstance.maxHeartbeats ` to set the limit. + +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. + +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. +/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean:161:21: error: failed to synthesize + CompleteSpace (↥V →L[ℝ] ℝ) +(deterministic) timeout at `typeclass`, maximum number of heartbeats (20000) has been reached + +Note: Use `set_option synthInstance.maxHeartbeats ` to set the limit. + +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. + +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. +/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean:162:24: error: failed to synthesize + CompleteSpace (↥V →L[ℝ] ℝ) +(deterministic) timeout at `typeclass`, maximum number of heartbeats (20000) has been reached + +Note: Use `set_option synthInstance.maxHeartbeats ` to set the limit. + +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. + +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. +/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean:164:4: error: failed to synthesize + CompleteSpace (↥V →L[ℝ] ℝ) +(deterministic) timeout at `typeclass`, maximum number of heartbeats (20000) has been reached + +Note: Use `set_option synthInstance.maxHeartbeats ` to set the limit. + +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. + +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. +/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean:171:14: error: (deterministic) timeout at `isDefEq`, maximum number of heartbeats (200000) has been reached + +Note: Use `set_option maxHeartbeats ` to set the limit. + +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. +/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean:132:0: error: (deterministic) timeout at `whnf`, maximum number of heartbeats (200000) has been reached + +Note: Use `set_option maxHeartbeats ` to set the limit. + +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. diff --git a/frontiers/critical_ridge_20261020/hosted-development3/build-Lifetime.receipt.json b/frontiers/critical_ridge_20261020/hosted-development3/build-Lifetime.receipt.json new file mode 100644 index 000000000..e1c5c2c56 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development3/build-Lifetime.receipt.json @@ -0,0 +1,45 @@ +{ + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/Lifetime.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/Lifetime.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 5.427366, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:57:08.356057+00:00", + "name": "build-Lifetime", + "object": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "object_validation_error": null, + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + } + }, + "objects_before": {}, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:57:02.928710+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] +} diff --git a/frontiers/critical_ridge_20261020/hosted-development3/build-Lifetime.stderr b/frontiers/critical_ridge_20261020/hosted-development3/build-Lifetime.stderr new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development3/build-Lifetime.stdout b/frontiers/critical_ridge_20261020/hosted-development3/build-Lifetime.stdout new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development3/build-MorseFiniteCritical.receipt.json b/frontiers/critical_ridge_20261020/hosted-development3/build-MorseFiniteCritical.receipt.json new file mode 100644 index 000000000..0847f19e1 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development3/build-MorseFiniteCritical.receipt.json @@ -0,0 +1,63 @@ +{ + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-DwarningAsError=true", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/MorseFiniteCritical.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/MorseFiniteCritical.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 6.532124, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:57:19.596627+00:00", + "name": "build-MorseFiniteCritical", + "object": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "object_validation_error": null, + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "MorseFiniteCritical.olean": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "objects_before": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:57:13.064519+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] +} diff --git a/frontiers/critical_ridge_20261020/hosted-development3/build-MorseFiniteCritical.stderr b/frontiers/critical_ridge_20261020/hosted-development3/build-MorseFiniteCritical.stderr new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development3/build-MorseFiniteCritical.stdout b/frontiers/critical_ridge_20261020/hosted-development3/build-MorseFiniteCritical.stdout new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development3/build-TorusTopology.receipt.json b/frontiers/critical_ridge_20261020/hosted-development3/build-TorusTopology.receipt.json new file mode 100644 index 000000000..42e94b034 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development3/build-TorusTopology.receipt.json @@ -0,0 +1,55 @@ +{ + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-DwarningAsError=true", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/TorusTopology.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/TorusTopology.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 4.626473, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:57:13.060714+00:00", + "name": "build-TorusTopology", + "object": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + }, + "object_validation_error": null, + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "objects_before": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + } + }, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:57:08.434259+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] +} diff --git a/frontiers/critical_ridge_20261020/hosted-development3/build-TorusTopology.stderr b/frontiers/critical_ridge_20261020/hosted-development3/build-TorusTopology.stderr new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development3/build-TorusTopology.stdout b/frontiers/critical_ridge_20261020/hosted-development3/build-TorusTopology.stdout new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development3/native/c299_dev_artifacts3.json b/frontiers/critical_ridge_20261020/hosted-development3/native/c299_dev_artifacts3.json new file mode 100644 index 000000000..4c9dcf5ec --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development3/native/c299_dev_artifacts3.json @@ -0,0 +1,32 @@ +{ + "content": [ + { + "type": "text", + "text": "Action completed." + } + ], + "structuredContent": { + "artifacts": [ + { + "id": 12274363865, + "name": "c299-hosted-39443604910-1", + "size_in_bytes": 479747, + "url": "https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/artifacts/12274363865", + "archive_download_url": "https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/artifacts/12274363865/zip", + "expired": false, + "created_at": "2026-10-20T14:57:37Z", + "expires_at": "2027-01-18T14:55:04Z", + "updated_at": "2026-10-20T14:57:37Z", + "digest": "sha256:73c7f4a1c1cc83fc74408bc9f885969e9704a7d6c6af32fa6aed071aaddcff5a", + "workflow_run": { + "id": 39443604910, + "repository_id": 1385716596, + "head_repository_id": 1385716596, + "head_branch": "codex/c299-critical-ridge-20261020", + "head_sha": "5e63005bd6d8288695fbbc974e40336dca87e77f" + } + } + ] + }, + "isError": false +} diff --git a/frontiers/critical_ridge_20261020/hosted-development3/native/c299_dev_jobs3_final.json b/frontiers/critical_ridge_20261020/hosted-development3/native/c299_dev_jobs3_final.json new file mode 100644 index 000000000..ac31b2f43 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development3/native/c299_dev_jobs3_final.json @@ -0,0 +1,71 @@ +{ + "content": [ + { + "type": "text", + "text": "Action completed." + } + ], + "structuredContent": { + "jobs": [ + { + "id": 118699588256, + "name": "c299-hosted-formal", + "status": "completed", + "conclusion": "failure", + "run_id": 39443604910, + "logs_url": null, + "steps": [ + { + "name": "Set up job", + "status": "completed", + "conclusion": "success", + "number": 1 + }, + { + "name": "Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1", + "status": "completed", + "conclusion": "success", + "number": 2 + }, + { + "name": "Bind frozen source manifest and verify engineering failure controls", + "status": "completed", + "conclusion": "success", + "number": 3 + }, + { + "name": "Install pinned Lean and retrieve dependency cache", + "status": "completed", + "conclusion": "success", + "number": 4 + }, + { + "name": "Fresh five-module build, four kernel checks, complete audit and two controls", + "status": "completed", + "conclusion": "failure", + "number": 5 + }, + { + "name": "Retain exact C299 tested-run sources, objects, streams and failure receipts", + "status": "completed", + "conclusion": "success", + "number": 6 + }, + { + "name": "Post Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1", + "status": "completed", + "conclusion": "success", + "number": 12 + }, + { + "name": "Complete job", + "status": "completed", + "conclusion": "success", + "number": 13 + } + ] + } + ] + }, + "isError": false +} diff --git a/frontiers/critical_ridge_20261020/hosted-development3/native/c299_dev_logs3.json b/frontiers/critical_ridge_20261020/hosted-development3/native/c299_dev_logs3.json new file mode 100644 index 000000000..ac5c8b33f --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development3/native/c299_dev_logs3.json @@ -0,0 +1,12 @@ +{ + "content": [ + { + "type": "text", + "text": "Action completed." + } + ], + "structuredContent": { + "content": "2026-10-20T14:55:08.0066515Z Current runner version: '2.337.0'\n2026-10-20T14:55:08.0095796Z ##[group]Runner Image Provisioner\n2026-10-20T14:55:08.0096831Z Hosted Compute Agent\n2026-10-20T14:55:08.0097524Z Version: 20261012.601\n2026-10-20T14:55:08.0098424Z Commit: f3dc54e1fb89da6852db922499a0233137369e1d\n2026-10-20T14:55:08.0099351Z Build Date: 2026-10-12T17:48:21Z\n2026-10-20T14:55:08.0100180Z Worker ID: {2bb6bd63-e30a-482a-b186-1e9784b4ee44}\n2026-10-20T14:55:08.0101177Z Region: eastus\n2026-10-20T14:55:08.0101859Z Cloud: Azure\n2026-10-20T14:55:08.0102608Z ##[endgroup]\n2026-10-20T14:55:08.0104613Z ##[group]Operating System\n2026-10-20T14:55:08.0105427Z Ubuntu\n2026-10-20T14:55:08.0106186Z 24.04.5\n2026-10-20T14:55:08.0106784Z LTS\n2026-10-20T14:55:08.0107516Z ##[endgroup]\n2026-10-20T14:55:08.0108188Z ##[group]Runner Image\n2026-10-20T14:55:08.0108975Z Image: ubuntu-24.04\n2026-10-20T14:55:08.0109673Z Version: 20261012.334.1\n2026-10-20T14:55:08.0111307Z Included Software: https://github.com/actions/runner-images/blob/ubuntu24/20261012.334/images/ubuntu/Ubuntu2404-Readme.md\n2026-10-20T14:55:08.0113291Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu24%2F20261012.334\n2026-10-20T14:55:08.0114851Z ##[endgroup]\n2026-10-20T14:55:08.0116161Z ##[group]GITHUB_TOKEN Permissions\n2026-10-20T14:55:08.0118538Z Contents: read\n2026-10-20T14:55:08.0119254Z Metadata: read\n2026-10-20T14:55:08.0120036Z ##[endgroup]\n2026-10-20T14:55:08.0122336Z Secret source: Actions\n2026-10-20T14:55:08.0123537Z Cache mode: write\n2026-10-20T14:55:08.0124881Z Prepare workflow directory\n2026-10-20T14:55:08.2171972Z Prepare all required actions\n2026-10-20T14:55:08.2226369Z Getting action download info\n2026-10-20T14:55:09.0709673Z Download action repository 'actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1' (SHA:3d3c42e5aac5ba805825da76410c181273ba90b1)\n2026-10-20T14:55:09.5748400Z Download action repository 'leanprover/lean-action@f061402b660e0c34644504b324e830f2991d4865' (SHA:f061402b660e0c34644504b324e830f2991d4865)\n2026-10-20T14:55:10.0978928Z Download action repository 'actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9' (SHA:cf430e030ddbb5b0abf93d22962f4752f3646cd9)\n2026-10-20T14:55:10.4358433Z Getting action download info\n2026-10-20T14:55:10.7356808Z Download action repository 'actions/cache@caa296126883cff596d87d8935842f9db880ef25' (SHA:caa296126883cff596d87d8935842f9db880ef25)\n2026-10-20T14:55:11.0125754Z Complete job name: c299-hosted-formal\n2026-10-20T14:55:11.0691278Z ##[group]Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1\n2026-10-20T14:55:11.0691814Z with:\n2026-10-20T14:55:11.0692001Z persist-credentials: false\n2026-10-20T14:55:11.0692210Z fetch-depth: 1\n2026-10-20T14:55:11.0692405Z repository: d6g8k5htny-coder/Math-\n2026-10-20T14:55:11.0694247Z token: ***\n2026-10-20T14:55:11.0694656Z ssh-strict: true\n2026-10-20T14:55:11.0694833Z ssh-user: git\n2026-10-20T14:55:11.0695010Z clean: true\n2026-10-20T14:55:11.0695202Z sparse-checkout-cone-mode: true\n2026-10-20T14:55:11.0695430Z fetch-tags: false\n2026-10-20T14:55:11.0695642Z show-progress: true\n2026-10-20T14:55:11.0695816Z lfs: false\n2026-10-20T14:55:11.0695976Z submodules: false\n2026-10-20T14:55:11.0696152Z set-safe-directory: true\n2026-10-20T14:55:11.0696363Z allow-unsafe-pr-checkout: false\n2026-10-20T14:55:11.0696720Z env:\n2026-10-20T14:55:11.0696879Z LEAN_NUM_THREADS: 2\n2026-10-20T14:55:11.0697229Z C299_MANIFEST_SHA256: f7ffc5724de5d45b0518fe09f4396e6d2b817af920da0a63694ac97276e879ec\n2026-10-20T14:55:11.0697578Z ##[endgroup]\n2026-10-20T14:55:11.1513385Z Syncing repository: d6g8k5htny-coder/Math-\n2026-10-20T14:55:11.1515354Z ##[group]Getting Git version info\n2026-10-20T14:55:11.1515846Z Working directory is '/home/runner/work/Math-/Math-'\n2026-10-20T14:55:11.1516628Z [command]/usr/bin/git version\n2026-10-20T14:55:11.1585443Z git version 2.55.0\n2026-10-20T14:55:11.1611682Z ##[endgroup]\n2026-10-20T14:55:11.1621488Z Temporarily overriding HOME='/home/runner/work/_temp/43beffd4-7765-47d3-90c2-31dbb675f384' before making global git config changes\n2026-10-20T14:55:11.1623037Z Adding repository directory to the temporary git global config as a safe directory\n2026-10-20T14:55:11.1625144Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/Math-/Math-\n2026-10-20T14:55:11.1668716Z Deleting the contents of '/home/runner/work/Math-/Math-'\n2026-10-20T14:55:11.1676526Z ##[group]Determining repository object format\n2026-10-20T14:55:11.1684972Z ##[endgroup]\n2026-10-20T14:55:11.1686110Z ##[group]Initializing the repository\n2026-10-20T14:55:11.1686886Z [command]/usr/bin/git init /home/runner/work/Math-/Math-\n2026-10-20T14:55:11.1784247Z hint: Using 'master' as the name for the initial branch. This default branch name\n2026-10-20T14:55:11.1785159Z hint: will change to \"main\" in Git 3.0. To configure the initial branch name\n2026-10-20T14:55:11.1785871Z hint: to use in all of your new repositories, which will suppress this warning,\n2026-10-20T14:55:11.1786386Z hint: call:\n2026-10-20T14:55:11.1786624Z hint:\n2026-10-20T14:55:11.1787002Z hint: \tgit config --global init.defaultBranch \n2026-10-20T14:55:11.1787461Z hint:\n2026-10-20T14:55:11.1787859Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and\n2026-10-20T14:55:11.1788529Z hint: 'development'. The just-created branch can be renamed via this command:\n2026-10-20T14:55:11.1789073Z hint:\n2026-10-20T14:55:11.1789334Z hint: \tgit branch -m \n2026-10-20T14:55:11.1789635Z hint:\n2026-10-20T14:55:11.1790088Z hint: Disable this message with \"git config set advice.defaultBranchName false\"\n2026-10-20T14:55:11.1790783Z Initialized empty Git repository in /home/runner/work/Math-/Math-/.git/\n2026-10-20T14:55:11.1796066Z [command]/usr/bin/git remote add origin https://github.com/d6g8k5htny-coder/Math-\n2026-10-20T14:55:11.1845752Z ##[endgroup]\n2026-10-20T14:55:11.1846171Z ##[group]Disabling automatic garbage collection\n2026-10-20T14:55:11.1855297Z [command]/usr/bin/git config --local gc.auto 0\n2026-10-20T14:55:11.1881608Z ##[endgroup]\n2026-10-20T14:55:11.1882461Z ##[group]Setting up auth\n2026-10-20T14:55:11.1883132Z Removing SSH command configuration\n2026-10-20T14:55:11.1888400Z [command]/usr/bin/git config --local --name-only --get-regexp core\\.sshCommand\n2026-10-20T14:55:11.1917998Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'core\\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :\"\n2026-10-20T14:55:11.2260476Z Removing HTTP extra header\n2026-10-20T14:55:11.2265343Z [command]/usr/bin/git config --local --name-only --get-regexp http\\.https\\:\\/\\/github\\.com\\/\\.extraheader\n2026-10-20T14:55:11.2298514Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'http\\.https\\:\\/\\/github\\.com\\/\\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :\"\n2026-10-20T14:55:11.2492404Z Removing includeIf entries pointing to credentials config files\n2026-10-20T14:55:11.2497917Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\\.gitdir:\n2026-10-20T14:55:11.2530078Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url\n2026-10-20T14:55:11.2729412Z [command]/usr/bin/git config --file /home/runner/work/_temp/git-credentials-5e31c7ab-a3fd-4a85-853c-a1a1e0b2ea6a.config http.https://github.com/.extraheader AUTHORIZATION: basic ***\n2026-10-20T14:55:11.2765385Z [command]/usr/bin/git config --local includeIf.gitdir:/home/runner/work/Math-/Math-/.git.path /home/runner/work/_temp/git-credentials-5e31c7ab-a3fd-4a85-853c-a1a1e0b2ea6a.config\n2026-10-20T14:55:11.2796299Z [command]/usr/bin/git config --local includeIf.gitdir:/home/runner/work/Math-/Math-/.git/worktrees/*.path /home/runner/work/_temp/git-credentials-5e31c7ab-a3fd-4a85-853c-a1a1e0b2ea6a.config\n2026-10-20T14:55:11.2830008Z [command]/usr/bin/git config --local includeIf.gitdir:/github/workspace/.git.path /github/runner_temp/git-credentials-5e31c7ab-a3fd-4a85-853c-a1a1e0b2ea6a.config\n2026-10-20T14:55:11.2860804Z [command]/usr/bin/git config --local includeIf.gitdir:/github/workspace/.git/worktrees/*.path /github/runner_temp/git-credentials-5e31c7ab-a3fd-4a85-853c-a1a1e0b2ea6a.config\n2026-10-20T14:55:11.3358607Z ##[endgroup]\n2026-10-20T14:55:11.3358989Z ##[group]Fetching the repository\n2026-10-20T14:55:11.3365721Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +011a9683382b474cfcf0046ebaec365452277654:refs/remotes/pull/491/merge\n2026-10-20T14:55:12.5210870Z From https://github.com/d6g8k5htny-coder/Math-\n2026-10-20T14:55:12.5211477Z * [new ref] 011a9683382b474cfcf0046ebaec365452277654 -> pull/491/merge\n2026-10-20T14:55:12.5215881Z ##[endgroup]\n2026-10-20T14:55:12.5216481Z ##[group]Determining the checkout info\n2026-10-20T14:55:12.5217321Z ##[endgroup]\n2026-10-20T14:55:12.5222617Z [command]/usr/bin/git sparse-checkout disable\n2026-10-20T14:55:12.6653662Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig\n2026-10-20T14:55:12.6688549Z ##[group]Checking out the ref\n2026-10-20T14:55:12.6693348Z [command]/usr/bin/git checkout --progress --force refs/remotes/pull/491/merge\n2026-10-20T14:55:12.9070041Z Note: switching to 'refs/remotes/pull/491/merge'.\n2026-10-20T14:55:12.9070342Z \n2026-10-20T14:55:12.9070558Z You are in 'detached HEAD' state. You can look around, make experimental\n2026-10-20T14:55:12.9070978Z changes and commit them, and you can discard any commits you make in this\n2026-10-20T14:55:12.9071356Z state without impacting any branches by switching back to a branch.\n2026-10-20T14:55:12.9071601Z \n2026-10-20T14:55:12.9071782Z If you want to create a new branch to retain commits you create, you may\n2026-10-20T14:55:12.9072139Z do so (now or later) by using -c with the switch command. Example:\n2026-10-20T14:55:12.9072340Z \n2026-10-20T14:55:12.9072437Z git switch -c \n2026-10-20T14:55:12.9072571Z \n2026-10-20T14:55:12.9072676Z Or undo this operation with:\n2026-10-20T14:55:12.9072813Z \n2026-10-20T14:55:12.9073100Z git switch -\n2026-10-20T14:55:12.9073246Z \n2026-10-20T14:55:12.9095646Z Turn off this advice by setting config variable advice.detachedHead to false\n2026-10-20T14:55:12.9096169Z \n2026-10-20T14:55:12.9096690Z HEAD is now at 011a968 Merge 5e63005bd6d8288695fbbc974e40336dca87e77f into dcf7d555b0311e5c10529b5160490c6b61f27833\n2026-10-20T14:55:12.9098058Z ##[endgroup]\n2026-10-20T14:55:12.9138896Z [command]/usr/bin/git log -1 --format=%H\n2026-10-20T14:55:12.9169404Z 011a9683382b474cfcf0046ebaec365452277654\n2026-10-20T14:55:12.9179755Z ##[group]Removing auth\n2026-10-20T14:55:12.9180125Z Removing SSH command configuration\n2026-10-20T14:55:12.9204948Z [command]/usr/bin/git config --local --name-only --get-regexp core\\.sshCommand\n2026-10-20T14:55:12.9218317Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'core\\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :\"\n2026-10-20T14:55:12.9416632Z Removing HTTP extra header\n2026-10-20T14:55:12.9419938Z [command]/usr/bin/git config --local --name-only --get-regexp http\\.https\\:\\/\\/github\\.com\\/\\.extraheader\n2026-10-20T14:55:12.9453029Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'http\\.https\\:\\/\\/github\\.com\\/\\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :\"\n2026-10-20T14:55:12.9655825Z Removing includeIf entries pointing to credentials config files\n2026-10-20T14:55:12.9658742Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\\.gitdir:\n2026-10-20T14:55:12.9687472Z includeif.gitdir:/home/runner/work/Math-/Math-/.git.path\n2026-10-20T14:55:12.9688281Z includeif.gitdir:/home/runner/work/Math-/Math-/.git/worktrees/*.path\n2026-10-20T14:55:12.9688834Z includeif.gitdir:/github/workspace/.git.path\n2026-10-20T14:55:12.9689273Z includeif.gitdir:/github/workspace/.git/worktrees/*.path\n2026-10-20T14:55:12.9696223Z [command]/usr/bin/git config --local --get-all includeif.gitdir:/home/runner/work/Math-/Math-/.git.path\n2026-10-20T14:55:12.9721614Z /home/runner/work/_temp/git-credentials-5e31c7ab-a3fd-4a85-853c-a1a1e0b2ea6a.config\n2026-10-20T14:55:12.9730292Z [command]/usr/bin/git config --local --unset includeif.gitdir:/home/runner/work/Math-/Math-/.git.path \\/home\\/runner\\/work\\/_temp\\/git\\-credentials\\-5e31c7ab\\-a3fd\\-4a85\\-853c\\-a1a1e0b2ea6a\\.config\n2026-10-20T14:55:12.9766287Z [command]/usr/bin/git config --local --get-all includeif.gitdir:/home/runner/work/Math-/Math-/.git/worktrees/*.path\n2026-10-20T14:55:12.9798804Z /home/runner/work/_temp/git-credentials-5e31c7ab-a3fd-4a85-853c-a1a1e0b2ea6a.config\n2026-10-20T14:55:12.9815319Z [command]/usr/bin/git config --local --unset includeif.gitdir:/home/runner/work/Math-/Math-/.git/worktrees/*.path \\/home\\/runner\\/work\\/_temp\\/git\\-credentials\\-5e31c7ab\\-a3fd\\-4a85\\-853c\\-a1a1e0b2ea6a\\.config\n2026-10-20T14:55:12.9847542Z [command]/usr/bin/git config --local --get-all includeif.gitdir:/github/workspace/.git.path\n2026-10-20T14:55:12.9876631Z /github/runner_temp/git-credentials-5e31c7ab-a3fd-4a85-853c-a1a1e0b2ea6a.config\n2026-10-20T14:55:12.9883888Z [command]/usr/bin/git config --local --unset includeif.gitdir:/github/workspace/.git.path \\/github\\/runner_temp\\/git\\-credentials\\-5e31c7ab\\-a3fd\\-4a85\\-853c\\-a1a1e0b2ea6a\\.config\n2026-10-20T14:55:12.9920370Z [command]/usr/bin/git config --local --get-all includeif.gitdir:/github/workspace/.git/worktrees/*.path\n2026-10-20T14:55:12.9947390Z /github/runner_temp/git-credentials-5e31c7ab-a3fd-4a85-853c-a1a1e0b2ea6a.config\n2026-10-20T14:55:12.9996056Z [command]/usr/bin/git config --local --unset includeif.gitdir:/github/workspace/.git/worktrees/*.path \\/github\\/runner_temp\\/git\\-credentials\\-5e31c7ab\\-a3fd\\-4a85\\-853c\\-a1a1e0b2ea6a\\.config\n2026-10-20T14:55:13.0039961Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url\n2026-10-20T14:55:13.0249494Z Removing credentials config '/home/runner/work/_temp/git-credentials-5e31c7ab-a3fd-4a85-853c-a1a1e0b2ea6a.config'\n2026-10-20T14:55:13.0259098Z ##[endgroup]\n2026-10-20T14:55:13.0436774Z ##[group]Run python3 -B -S frontiers/critical_ridge_20261020/c299_hosted_verify.py source --manifest-sha256 \"$C299_MANIFEST_SHA256\"\n2026-10-20T14:55:13.0437605Z \u001b[36;1mpython3 -B -S frontiers/critical_ridge_20261020/c299_hosted_verify.py source --manifest-sha256 \"$C299_MANIFEST_SHA256\"\u001b[0m\n2026-10-20T14:55:13.0438250Z \u001b[36;1mpython3 -B -S -m unittest discover -s frontiers/critical_ridge_20261020 -p test_c299_hosted_verify.py -v\u001b[0m\n2026-10-20T14:55:13.0438829Z \u001b[36;1mpython3 -B -O -S -m unittest discover -s frontiers/critical_ridge_20261020 -p test_c299_hosted_verify.py -v\u001b[0m\n2026-10-20T14:55:13.0704801Z shell: /usr/bin/bash -e {0}\n2026-10-20T14:55:13.0705106Z env:\n2026-10-20T14:55:13.0705294Z LEAN_NUM_THREADS: 2\n2026-10-20T14:55:13.0705636Z C299_MANIFEST_SHA256: f7ffc5724de5d45b0518fe09f4396e6d2b817af920da0a63694ac97276e879ec\n2026-10-20T14:55:13.0705996Z ##[endgroup]\n2026-10-20T14:55:13.1980272Z test_amended_phase_receipt_matches_aggregate (test_c299_hosted_verify.HostedVerifierTests.test_amended_phase_receipt_matches_aggregate)\n2026-10-20T14:55:13.2145865Z C299 valid-phase: exit=0 timeout=False seconds=0.015843\n2026-10-20T14:55:13.2228189Z Semantic/object metadata must not exist only in the aggregate receipt. ... ok\n2026-10-20T14:55:13.2228861Z test_audit_cannot_omit_required_target_or_hide_axiom (test_c299_hosted_verify.HostedVerifierTests.test_audit_cannot_omit_required_target_or_hide_axiom)\n2026-10-20T14:55:13.2232627Z Count-only validation would accept a substituted target or sorryAx. ... ok\n2026-10-20T14:55:13.2233312Z test_build_allows_only_its_own_outputs (test_c299_hosted_verify.HostedVerifierTests.test_build_allows_only_its_own_outputs)\n2026-10-20T14:55:13.2233870Z A build may add its target object, not an unrelated replacement. ... ok\n2026-10-20T14:55:13.2234712Z test_environment_contract_strips_overrides_and_uses_declared_path (test_c299_hosted_verify.HostedVerifierTests.test_environment_contract_strips_overrides_and_uses_declared_path)\n2026-10-20T14:55:13.2239934Z An inherited tool/loader override must not survive or leak its value. ... ok\n2026-10-20T14:55:13.2240612Z test_failed_phase_receipt_and_exact_streams_survive_abort (test_c299_hosted_verify.HostedVerifierTests.test_failed_phase_receipt_and_exact_streams_survive_abort)\n2026-10-20T14:55:13.2405344Z C299 deliberate-failure: exit=7 timeout=False seconds=0.015855\n2026-10-20T14:55:13.2409408Z Raising before persistence would discard the actual failing phase. ... ok\n2026-10-20T14:55:13.2410473Z test_inactive_draft_negative_sections_reject_forged_fields (test_c299_hosted_verify.HostedVerifierTests.test_inactive_draft_negative_sections_reject_forged_fields)\n2026-10-20T14:55:13.2436862Z Section/token-only matching would accept unrelated existential fields. ... ok\n2026-10-20T14:55:13.2437758Z test_modified_source_bytes_are_rejected (test_c299_hosted_verify.HostedVerifierTests.test_modified_source_bytes_are_rejected)\n2026-10-20T14:55:13.2498025Z Dropping size/hash verification would accept the modified file. ... ok\n2026-10-20T14:55:13.2498994Z test_pending_final_acceptance_fails_closed (test_c299_hosted_verify.HostedVerifierTests.test_pending_final_acceptance_fails_closed)\n2026-10-20T14:55:13.2499892Z Collecting diagnostics must not silently qualify final acceptance. ... ok\n2026-10-20T14:55:13.2500935Z test_phase_environment_mutation_is_blocked_and_receipted (test_c299_hosted_verify.HostedVerifierTests.test_phase_environment_mutation_is_blocked_and_receipted)\n2026-10-20T14:55:13.2665235Z C299 environment-valid: exit=0 timeout=False seconds=0.015842\n2026-10-20T14:55:13.2670188Z C299 environment-mutated-0: exit=None timeout=False seconds=0.000137\n2026-10-20T14:55:13.2677815Z C299 environment-mutated-1: exit=None timeout=False seconds=0.00011\n2026-10-20T14:55:13.2683212Z A changed search path or injected loader must fail before the child runs. ... ok\n2026-10-20T14:55:13.2684146Z test_phase_rejects_imported_object_mutation (test_c299_hosted_verify.HostedVerifierTests.test_phase_rejects_imported_object_mutation)\n2026-10-20T14:55:13.3013664Z C299 deliberate-object-mutation: exit=0 timeout=False seconds=0.03216\n2026-10-20T14:55:13.3017903Z A successful compiler process may not alter a prior input object. ... ok\n2026-10-20T14:55:13.3018895Z test_pinned_lean_multiline_axiom_records (test_c299_hosted_verify.HostedVerifierTests.test_pinned_lean_multiline_axiom_records)\n2026-10-20T14:55:13.3019803Z Actual pinned Lean wraps the unchanged Lifetime axiom arrays. ... ok\n2026-10-20T14:55:13.3020856Z test_source_preflight_can_collect_before_final_predicate_qualification (test_c299_hosted_verify.HostedVerifierTests.test_source_preflight_can_collect_before_final_predicate_qualification)\n2026-10-20T14:55:13.3057813Z An early final-acceptance gate would block needed actual diagnostics. ... ok\n2026-10-20T14:55:13.3058844Z test_timeout_preserves_partial_stream_and_receipt (test_c299_hosted_verify.HostedVerifierTests.test_timeout_preserves_partial_stream_and_receipt)\n2026-10-20T14:55:13.4084694Z C299 deliberate-timeout: exit=-15 timeout=True seconds=0.101872\n2026-10-20T14:55:13.4085956Z Timeout handling must not discard the child output or phase result. ... ok\n2026-10-20T14:55:13.4086313Z \n2026-10-20T14:55:13.4086522Z ----------------------------------------------------------------------\n2026-10-20T14:55:13.4086898Z Ran 13 tests in 0.217s\n2026-10-20T14:55:13.4087019Z \n2026-10-20T14:55:13.4087222Z OK\n2026-10-20T14:55:13.7419033Z test_amended_phase_receipt_matches_aggregate (test_c299_hosted_verify.HostedVerifierTests.test_amended_phase_receipt_matches_aggregate)\n2026-10-20T14:55:13.7588080Z C299 valid-phase: exit=0 timeout=False seconds=0.015949\n2026-10-20T14:55:13.7596519Z Semantic/object metadata must not exist only in the aggregate receipt. ... ok\n2026-10-20T14:55:13.7601872Z test_audit_cannot_omit_required_target_or_hide_axiom (test_c299_hosted_verify.HostedVerifierTests.test_audit_cannot_omit_required_target_or_hide_axiom)\n2026-10-20T14:55:13.7602828Z Count-only validation would accept a substituted target or sorryAx. ... ok\n2026-10-20T14:55:13.7603997Z test_build_allows_only_its_own_outputs (test_c299_hosted_verify.HostedVerifierTests.test_build_allows_only_its_own_outputs)\n2026-10-20T14:55:13.7604993Z A build may add its target object, not an unrelated replacement. ... ok\n2026-10-20T14:55:13.7606020Z test_environment_contract_strips_overrides_and_uses_declared_path (test_c299_hosted_verify.HostedVerifierTests.test_environment_contract_strips_overrides_and_uses_declared_path)\n2026-10-20T14:55:13.7609880Z An inherited tool/loader override must not survive or leak its value. ... ok\n2026-10-20T14:55:13.7610917Z test_failed_phase_receipt_and_exact_streams_survive_abort (test_c299_hosted_verify.HostedVerifierTests.test_failed_phase_receipt_and_exact_streams_survive_abort)\n2026-10-20T14:55:13.7777579Z C299 deliberate-failure: exit=7 timeout=False seconds=0.015861\n2026-10-20T14:55:13.7780385Z Raising before persistence would discard the actual failing phase. ... ok\n2026-10-20T14:55:13.7781451Z test_inactive_draft_negative_sections_reject_forged_fields (test_c299_hosted_verify.HostedVerifierTests.test_inactive_draft_negative_sections_reject_forged_fields)\n2026-10-20T14:55:13.7808406Z Section/token-only matching would accept unrelated existential fields. ... ok\n2026-10-20T14:55:13.7809017Z test_modified_source_bytes_are_rejected (test_c299_hosted_verify.HostedVerifierTests.test_modified_source_bytes_are_rejected)\n2026-10-20T14:55:13.7825520Z Dropping size/hash verification would accept the modified file. ... ok\n2026-10-20T14:55:13.7826153Z test_pending_final_acceptance_fails_closed (test_c299_hosted_verify.HostedVerifierTests.test_pending_final_acceptance_fails_closed)\n2026-10-20T14:55:13.7826860Z Collecting diagnostics must not silently qualify final acceptance. ... ok\n2026-10-20T14:55:13.7827477Z test_phase_environment_mutation_is_blocked_and_receipted (test_c299_hosted_verify.HostedVerifierTests.test_phase_environment_mutation_is_blocked_and_receipted)\n2026-10-20T14:55:13.7992395Z C299 environment-valid: exit=0 timeout=False seconds=0.015815\n2026-10-20T14:55:13.7997946Z C299 environment-mutated-0: exit=None timeout=False seconds=0.000137\n2026-10-20T14:55:13.8005443Z C299 environment-mutated-1: exit=None timeout=False seconds=0.000115\n2026-10-20T14:55:13.8010740Z A changed search path or injected loader must fail before the child runs. ... ok\n2026-10-20T14:55:13.8011641Z test_phase_rejects_imported_object_mutation (test_c299_hosted_verify.HostedVerifierTests.test_phase_rejects_imported_object_mutation)\n2026-10-20T14:55:13.8341209Z C299 deliberate-object-mutation: exit=0 timeout=False seconds=0.032228\n2026-10-20T14:55:13.8345972Z A successful compiler process may not alter a prior input object. ... ok\n2026-10-20T14:55:13.8346864Z test_pinned_lean_multiline_axiom_records (test_c299_hosted_verify.HostedVerifierTests.test_pinned_lean_multiline_axiom_records)\n2026-10-20T14:55:13.8347871Z Actual pinned Lean wraps the unchanged Lifetime axiom arrays. ... ok\n2026-10-20T14:55:13.8348633Z test_source_preflight_can_collect_before_final_predicate_qualification (test_c299_hosted_verify.HostedVerifierTests.test_source_preflight_can_collect_before_final_predicate_qualification)\n2026-10-20T14:55:13.8383648Z An early final-acceptance gate would block needed actual diagnostics. ... ok\n2026-10-20T14:55:13.8384716Z test_timeout_preserves_partial_stream_and_receipt (test_c299_hosted_verify.HostedVerifierTests.test_timeout_preserves_partial_stream_and_receipt)\n2026-10-20T14:55:13.9410715Z C299 deliberate-timeout: exit=-15 timeout=True seconds=0.101891\n2026-10-20T14:55:13.9412906Z Timeout handling must not discard the child output or phase result. ... ok\n2026-10-20T14:55:13.9413345Z \n2026-10-20T14:55:13.9413724Z ----------------------------------------------------------------------\n2026-10-20T14:55:13.9414163Z Ran 13 tests in 0.222s\n2026-10-20T14:55:13.9414508Z \n2026-10-20T14:55:13.9414594Z OK\n2026-10-20T14:55:13.9743789Z ##[group]Run leanprover/lean-action@f061402b660e0c34644504b324e830f2991d4865\n2026-10-20T14:55:13.9744108Z with:\n2026-10-20T14:55:13.9744607Z lake-package-directory: formal\n2026-10-20T14:55:13.9744816Z auto-config: false\n2026-10-20T14:55:13.9744987Z build: false\n2026-10-20T14:55:13.9745147Z test: false\n2026-10-20T14:55:13.9745306Z lint: false\n2026-10-20T14:55:13.9745467Z use-mathlib-cache: true\n2026-10-20T14:55:13.9745654Z use-github-cache: false\n2026-10-20T14:55:13.9745833Z mk_all-check: false\n2026-10-20T14:55:13.9746029Z check-reservoir-eligibility: false\n2026-10-20T14:55:13.9746246Z leanchecker: false\n2026-10-20T14:55:13.9746411Z lean4checker: false\n2026-10-20T14:55:13.9746576Z nanoda: false\n2026-10-20T14:55:13.9746745Z nanoda-allow-sorry: true\n2026-10-20T14:55:13.9746935Z axiom-audit: false\n2026-10-20T14:55:13.9747159Z axiom-audit-allow: propext,Classical.choice,Quot.sound\n2026-10-20T14:55:13.9747443Z reinstall-transient-toolchain: false\n2026-10-20T14:55:13.9747703Z env:\n2026-10-20T14:55:13.9747864Z LEAN_NUM_THREADS: 2\n2026-10-20T14:55:13.9748162Z C299_MANIFEST_SHA256: f7ffc5724de5d45b0518fe09f4396e6d2b817af920da0a63694ac97276e879ec\n2026-10-20T14:55:13.9748503Z ##[endgroup]\n2026-10-20T14:55:13.9800936Z ##[start-action display=install elan;id=__leanprover_lean-action.__run]\n2026-10-20T14:55:13.9826978Z ##[group]Run : Install Elan\n2026-10-20T14:55:13.9827217Z \u001b[36;1m: Install Elan\u001b[0m\n2026-10-20T14:55:13.9827493Z \u001b[36;1m${GITHUB_ACTION_PATH}/scripts/install_elan.sh\u001b[0m\n2026-10-20T14:55:13.9885584Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}\n2026-10-20T14:55:13.9885874Z env:\n2026-10-20T14:55:13.9886039Z LEAN_NUM_THREADS: 2\n2026-10-20T14:55:13.9886348Z C299_MANIFEST_SHA256: f7ffc5724de5d45b0518fe09f4396e6d2b817af920da0a63694ac97276e879ec\n2026-10-20T14:55:13.9886688Z ##[endgroup]\n2026-10-20T14:55:13.9985624Z ##[group]Elan Installation Output\n2026-10-20T14:55:14.0454712Z info: downloading installer\n2026-10-20T14:55:14.5070887Z info: downloading https://releases.lean-lang.org/lean4/v4.34.1/lean-4.34.1-linux.tar.zst\n2026-10-20T14:55:20.4917526Z info: installing /home/runner/.elan/toolchains/leanprover--lean4---v4.34.1\n2026-10-20T14:55:28.2935925Z Lean (version 4.34.1, x86_64-unknown-linux-gnu, commit 5045d0056413266e57c625dcd7c365b10e377c52, Release)\n2026-10-20T14:55:28.3352177Z Lake version 5.0.0-src+5045d00 (Lean version 4.34.1)\n2026-10-20T14:55:28.3383107Z ##[endgroup]\n2026-10-20T14:55:28.3383275Z \n2026-10-20T14:55:28.3401689Z ##[end-action id=__leanprover_lean-action.__run;outcome=success;conclusion=success;duration_ms=14359]\n2026-10-20T14:55:28.3405814Z ##[start-action display=configure `lean-action`;id=__leanprover_lean-action.config]\n2026-10-20T14:55:28.3632176Z ##[group]Run : Configure Lean Action\n2026-10-20T14:55:28.3632449Z \u001b[36;1m: Configure Lean Action\u001b[0m\n2026-10-20T14:55:28.3632691Z \u001b[36;1m${GITHUB_ACTION_PATH}/scripts/config.sh\u001b[0m\n2026-10-20T14:55:28.3693248Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}\n2026-10-20T14:55:28.3693570Z env:\n2026-10-20T14:55:28.3693745Z LEAN_NUM_THREADS: 2\n2026-10-20T14:55:28.3694056Z C299_MANIFEST_SHA256: f7ffc5724de5d45b0518fe09f4396e6d2b817af920da0a63694ac97276e879ec\n2026-10-20T14:55:28.3694519Z AUTO_CONFIG: false\n2026-10-20T14:55:28.3694699Z BUILD: false\n2026-10-20T14:55:28.3694862Z TEST: false\n2026-10-20T14:55:28.3695012Z LINT: false\n2026-10-20T14:55:28.3695168Z ##[endgroup]\n2026-10-20T14:55:28.4186932Z ##[group]Configure lean-action\n2026-10-20T14:55:28.4233753Z ##[end-action id=__leanprover_lean-action.config;outcome=success;conclusion=success;duration_ms=82]\n2026-10-20T14:55:28.4238279Z ##[start-action display=reinstall transient toolchain;id=__leanprover_lean-action.__run_2]\n2026-10-20T14:55:28.4253051Z ##[end-action id=__leanprover_lean-action.__run_2;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T14:55:28.4255619Z ##[start-action display=ensure all files are imported;id=__leanprover_lean-action.mk_all]\n2026-10-20T14:55:28.4260362Z ##[end-action id=__leanprover_lean-action.mk_all;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T14:55:28.4262830Z ##[start-action display=Run actions/cache/restore@caa296126883cff596d87d8935842f9db880ef25;id=__leanprover_lean-action.__actions_cache]\n2026-10-20T14:55:28.4284875Z ##[end-action id=__leanprover_lean-action.__actions_cache;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T14:55:28.4287438Z ##[start-action display=detect mathlib;id=__leanprover_lean-action.detect-mathlib]\n2026-10-20T14:55:28.4291155Z ##[end-action id=__leanprover_lean-action.detect-mathlib;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T14:55:28.4292670Z ##[start-action display=get mathlib cache;id=__leanprover_lean-action.__run_3]\n2026-10-20T14:55:28.5463662Z ##[group]Run : Get Mathlib Cache\n2026-10-20T14:55:28.5463932Z \u001b[36;1m: Get Mathlib Cache\u001b[0m\n2026-10-20T14:55:28.5464138Z \u001b[36;1mecho \"::group::Mathlib Cache\"\u001b[0m\n2026-10-20T14:55:28.5464552Z \u001b[36;1mlake exe cache get\u001b[0m\n2026-10-20T14:55:28.5464801Z \u001b[36;1mecho \"::endgroup::\"\u001b[0m\n2026-10-20T14:55:28.5464998Z \u001b[36;1mecho\u001b[0m\n2026-10-20T14:55:28.5521864Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}\n2026-10-20T14:55:28.5522182Z env:\n2026-10-20T14:55:28.5522352Z LEAN_NUM_THREADS: 2\n2026-10-20T14:55:28.5522658Z C299_MANIFEST_SHA256: f7ffc5724de5d45b0518fe09f4396e6d2b817af920da0a63694ac97276e879ec\n2026-10-20T14:55:28.5523002Z ##[endgroup]\n2026-10-20T14:55:28.5845344Z ##[group]Mathlib Cache\n2026-10-20T14:55:28.6229714Z info: mathlib: cloning https://github.com/leanprover-community/mathlib4.git\n2026-10-20T14:55:57.4379529Z info: mathlib: checking out revision 'd13f23b723b8a846827a245b89c10fc7d3f11612'\n2026-10-20T14:55:59.3134107Z info: plausible: cloning https://github.com/leanprover-community/plausible\n2026-10-20T14:55:59.5267340Z info: plausible: checking out revision '118aa17ee84656b8bd727fef7c458ee8c833385c'\n2026-10-20T14:55:59.5399519Z info: LeanSearchClient: cloning https://github.com/leanprover-community/LeanSearchClient\n2026-10-20T14:55:59.7201113Z info: LeanSearchClient: checking out revision 'ddf04cf3949fa556442341e87d47f9f6e6074707'\n2026-10-20T14:55:59.7324551Z info: importGraph: cloning https://github.com/leanprover-community/import-graph\n2026-10-20T14:56:00.9291711Z info: importGraph: checking out revision 'e928b72544873815af278d38681b31c0293588e3'\n2026-10-20T14:56:00.9475729Z info: proofwidgets: cloning https://github.com/leanprover-community/ProofWidgets4\n2026-10-20T14:56:01.3012004Z info: proofwidgets: checking out revision '106ff4fafc74ef4ac99d81dbf3ab399118f497a5'\n2026-10-20T14:56:01.8305378Z info: aesop: cloning https://github.com/leanprover-community/aesop\n2026-10-20T14:56:02.6424005Z info: aesop: checking out revision '355695d523e41d0554926416cba2a2b3544fbbc9'\n2026-10-20T14:56:02.6612250Z info: Qq: cloning https://github.com/leanprover-community/quote4\n2026-10-20T14:56:02.9650021Z info: Qq: checking out revision '6a489d9af5d0c47e5b259e2e8bcdfc1811b5a259'\n2026-10-20T14:56:02.9778079Z info: batteries: cloning https://github.com/leanprover-community/batteries\n2026-10-20T14:56:10.0565348Z info: batteries: checking out revision 'f2effa3d803fda822b1f97b806c47cf2adfbcbc2'\n2026-10-20T14:56:10.0898742Z info: Cli: cloning https://github.com/leanprover/lean4-cli\n2026-10-20T14:56:10.3985422Z info: Cli: checking out revision 'e92c9f15fdfacc8536f31cfb3b7ad26c3c8cd204'\n2026-10-20T14:56:10.8119679Z ✔ [1/12] Built Cache.Cli (312ms)\n2026-10-20T14:56:10.8120539Z ✔ [2/12] Built Cache.Lean (374ms)\n2026-10-20T14:56:11.1123496Z ✔ [5/12] Built Cache.Env (299ms)\n2026-10-20T14:56:11.5127566Z ✔ [7/42] Built Cache.Infra (397ms)\n2026-10-20T14:56:11.6130003Z ✔ [8/42] Built Batteries.Tactic.OpenPrivate (809ms)\n2026-10-20T14:56:11.6130618Z ✔ [9/42] Built Cache.Cli:c.o (102ms)\n2026-10-20T14:56:11.7132459Z ✔ [10/42] Built Cache.Lean:c.o (115ms)\n2026-10-20T14:56:11.8134734Z ✔ [11/42] Built Cache.Env:c.o (120ms)\n2026-10-20T14:56:11.9135940Z ✔ [12/42] Built Cache.Infra:c.o (174ms)\n2026-10-20T14:56:12.8152967Z ✔ [13/42] Built Batteries.Tactic.OpenPrivate:c.o (1.1s)\n2026-10-20T14:56:13.1176480Z ✔ [14/42] Built Cache.IO (1.2s)\n2026-10-20T14:56:13.8166331Z ✔ [15/42] Built Cache.Hashing (710ms)\n2026-10-20T14:56:14.2162295Z ✔ [16/42] Built Cache.Hashing:c.o (341ms)\n2026-10-20T14:56:14.4164858Z ✔ [17/42] Built Cache.IO:c.o (1.3s)\n2026-10-20T14:56:15.6175830Z ✔ [18/42] Built Cache.Requests (1.5s)\n2026-10-20T14:56:16.2210459Z ✔ [19/42] Built Cache.Marker (537ms)\n2026-10-20T14:56:16.2213977Z ✔ [20/42] Built Cache.Marker:c.o (91ms)\n2026-10-20T14:56:16.9215766Z ✔ [21/42] Built Cache.Query (675ms)\n2026-10-20T14:56:17.5211325Z ✔ [22/42] Built Cache.Upload.Dest (557ms)\n2026-10-20T14:56:17.7215882Z ✔ [23/42] Built Cache.Query:c.o (233ms)\n2026-10-20T14:56:17.8216931Z ✔ [24/42] Built Cache.Upload.Dest:c.o (98ms)\n2026-10-20T14:56:17.9218603Z ✔ [25/42] Built Cache.Requests:c.o (2.3s)\n2026-10-20T14:56:18.4239647Z ✔ [26/42] Built Cache.Warning (615ms)\n2026-10-20T14:56:18.5228852Z ✔ [27/42] Built Cache.Upload.Rclone (597ms)\n2026-10-20T14:56:18.7232397Z ✔ [28/42] Built Cache.Warning:c.o (201ms)\n2026-10-20T14:56:18.9234243Z ✔ [29/42] Built Cache.Upload.Rclone:c.o (145ms)\n2026-10-20T14:56:19.0236071Z ✔ [30/42] Built Cache.Upload.Curl (546ms)\n2026-10-20T14:56:19.1255973Z ✔ [31/42] Built Cache.Upload.Curl:c.o (157ms)\n2026-10-20T14:56:19.5242811Z ✔ [32/42] Built Cache.Upload.Azure (538ms)\n2026-10-20T14:56:19.6244315Z ✔ [33/42] Built Cache.Upload.Azure:c.o (122ms)\n2026-10-20T14:56:19.8247393Z ✔ [34/42] Built Cache.Upload.S3 (664ms)\n2026-10-20T14:56:20.1250455Z ✔ [35/42] Built Cache.Upload.S3:c.o (267ms)\n2026-10-20T14:56:20.3259856Z ✔ [36/42] Built Cache.Upload.Defs (553ms)\n2026-10-20T14:56:20.5266401Z ✔ [37/42] Built Cache.Upload.Defs:c.o (136ms)\n2026-10-20T14:56:20.9261158Z ✔ [38/42] Built Cache.Upload (513ms)\n2026-10-20T14:56:21.0262467Z ✔ [39/42] Built Cache.Upload:c.o (101ms)\n2026-10-20T14:56:21.8270365Z ✔ [40/42] Built Cache.Main (980ms)\n2026-10-20T14:56:22.6280025Z ✔ [41/42] Built Cache.Main:c.o (740ms)\n2026-10-20T14:56:23.2298331Z ✔ [42/42] Built cache:exe (670ms)\n2026-10-20T14:56:25.8104545Z Current branch: HEAD\n2026-10-20T14:56:25.8104975Z Using cache from origin: (some leanprover-community/mathlib4)\n2026-10-20T14:56:25.8105699Z Attempting to download 8908 file(s) from leanprover-community/mathlib4 cache at https://cache.mathlib.org/mathlib4-master\n2026-10-20T14:56:26.0624147Z \n2026-10-20T14:56:26.1658840Z Downloaded: 1 file(s) [attempted 1/8908 = 0%, 28 KB/s], Decompressed: 0\n2026-10-20T14:56:26.2637040Z Downloaded: 89 file(s) [attempted 89/8908 = 0%, 619 KB/s], Decompressed: 15\n2026-10-20T14:56:26.3637569Z Downloaded: 218 file(s) [attempted 218/8908 = 2%, 1346 KB/s], Decompressed: 43\n2026-10-20T14:56:26.4655638Z Downloaded: 357 file(s) [attempted 357/8908 = 4%, 390 KB/s], Decompressed: 43\n2026-10-20T14:56:26.5646094Z Downloaded: 507 file(s) [attempted 507/8908 = 5%, 2343 KB/s], Decompressed: 125\n2026-10-20T14:56:26.6654606Z Downloaded: 658 file(s) [attempted 658/8908 = 7%, 287 KB/s], Decompressed: 125\n2026-10-20T14:56:26.7652954Z Downloaded: 810 file(s) [attempted 810/8908 = 9%, 343 KB/s], Decompressed: 125\n2026-10-20T14:56:26.8665759Z Downloaded: 906 file(s) [attempted 906/8908 = 10%, 893 KB/s], Decompressed: 125\n2026-10-20T14:56:26.9647578Z Downloaded: 1067 file(s) [attempted 1067/8908 = 11%, 1881 KB/s], Decompressed: 125\n2026-10-20T14:56:27.0685750Z Downloaded: 1225 file(s) [attempted 1225/8908 = 13%, 258 KB/s], Decompressed: 125\n2026-10-20T14:56:27.1667693Z Downloaded: 1391 file(s) [attempted 1391/8908 = 15%, 199 KB/s], Decompressed: 125\n2026-10-20T14:56:27.2730259Z Downloaded: 1533 file(s) [attempted 1533/8908 = 17%, 532 KB/s], Decompressed: 125\n2026-10-20T14:56:27.3719788Z Downloaded: 1646 file(s) [attempted 1646/8908 = 18%, 615 KB/s], Decompressed: 125\n2026-10-20T14:56:27.4780888Z Downloaded: 1811 file(s) [attempted 1811/8908 = 20%, 906 KB/s], Decompressed: 125\n2026-10-20T14:56:27.5785623Z Downloaded: 1967 file(s) [attempted 1967/8908 = 22%, 547 KB/s], Decompressed: 476\n2026-10-20T14:56:27.6811994Z Downloaded: 2042 file(s) [attempted 2042/8908 = 22%, 797 KB/s], Decompressed: 476\n2026-10-20T14:56:27.7811396Z Downloaded: 2085 file(s) [attempted 2085/8908 = 23%, 200 KB/s], Decompressed: 476\n2026-10-20T14:56:27.8868058Z Downloaded: 2151 file(s) [attempted 2151/8908 = 24%, 793 KB/s], Decompressed: 476\n2026-10-20T14:56:27.9890659Z Downloaded: 2279 file(s) [attempted 2279/8908 = 25%, 1159 KB/s], Decompressed: 476\n2026-10-20T14:56:28.0962335Z Downloaded: 2419 file(s) [attempted 2419/8908 = 27%, 506 KB/s], Decompressed: 476\n2026-10-20T14:56:28.2045991Z Downloaded: 2529 file(s) [attempted 2529/8908 = 28%, 106 KB/s], Decompressed: 476\n2026-10-20T14:56:28.3033031Z Downloaded: 2687 file(s) [attempted 2687/8908 = 30%, 126 KB/s], Decompressed: 476\n2026-10-20T14:56:28.4035972Z Downloaded: 2858 file(s) [attempted 2858/8908 = 32%, 456 KB/s], Decompressed: 476\n2026-10-20T14:56:28.5099336Z Downloaded: 3035 file(s) [attempted 3035/8908 = 34%, 156 KB/s], Decompressed: 476\n2026-10-20T14:56:28.6175862Z Downloaded: 3172 file(s) [attempted 3172/8908 = 35%, 895 KB/s], Decompressed: 476\n2026-10-20T14:56:28.7166930Z Downloaded: 3328 file(s) [attempted 3328/8908 = 37%, 802 KB/s], Decompressed: 476\n2026-10-20T14:56:28.8199870Z Downloaded: 3439 file(s) [attempted 3439/8908 = 38%, 542 KB/s], Decompressed: 476\n2026-10-20T14:56:28.9272385Z Downloaded: 3585 file(s) [attempted 3585/8908 = 40%, 2215 KB/s], Decompressed: 476\n2026-10-20T14:56:29.0258707Z Downloaded: 3770 file(s) [attempted 3770/8908 = 42%, 395 KB/s], Decompressed: 476\n2026-10-20T14:56:29.1292511Z Downloaded: 3950 file(s) [attempted 3950/8908 = 44%, 223 KB/s], Decompressed: 476\n2026-10-20T14:56:29.2273328Z Downloaded: 4127 file(s) [attempted 4127/8908 = 46%, 12455 KB/s], Decompressed: 476\n2026-10-20T14:56:29.3266451Z Downloaded: 4279 file(s) [attempted 4279/8908 = 48%, 309 KB/s], Decompressed: 476\n2026-10-20T14:56:29.4306341Z Downloaded: 4452 file(s) [attempted 4452/8908 = 49%, 1169 KB/s], Decompressed: 476\n2026-10-20T14:56:29.5288630Z Downloaded: 4512 file(s) [attempted 4512/8908 = 50%, 319 KB/s], Decompressed: 476\n2026-10-20T14:56:29.6307974Z Downloaded: 4648 file(s) [attempted 4648/8908 = 52%, 245 KB/s], Decompressed: 476\n2026-10-20T14:56:29.7385840Z Downloaded: 4724 file(s) [attempted 4724/8908 = 53%, 227 KB/s], Decompressed: 476\n2026-10-20T14:56:29.8385811Z Downloaded: 4879 file(s) [attempted 4879/8908 = 54%, 610 KB/s], Decompressed: 476\n2026-10-20T14:56:29.9425849Z Downloaded: 5044 file(s) [attempted 5044/8908 = 56%, 2927 KB/s], Decompressed: 476\n2026-10-20T14:56:30.0406950Z Downloaded: 5191 file(s) [attempted 5191/8908 = 58%, 131 KB/s], Decompressed: 476\n2026-10-20T14:56:30.1411242Z Downloaded: 5364 file(s) [attempted 5364/8908 = 60%, 222 KB/s], Decompressed: 476\n2026-10-20T14:56:30.2408491Z Downloaded: 5508 file(s) [attempted 5508/8908 = 61%, 1649 KB/s], Decompressed: 476\n2026-10-20T14:56:30.3409073Z Downloaded: 5656 file(s) [attempted 5656/8908 = 63%, 5231 KB/s], Decompressed: 476\n2026-10-20T14:56:30.4420704Z Downloaded: 5759 file(s) [attempted 5759/8908 = 64%, 52 KB/s], Decompressed: 476\n2026-10-20T14:56:30.5436065Z Downloaded: 5885 file(s) [attempted 5885/8908 = 66%, 625 KB/s], Decompressed: 476\n2026-10-20T14:56:30.6436065Z Downloaded: 5973 file(s) [attempted 5973/8908 = 67%, 1373 KB/s], Decompressed: 476\n2026-10-20T14:56:30.7488713Z Downloaded: 6073 file(s) [attempted 6073/8908 = 68%, 964 KB/s], Decompressed: 476\n2026-10-20T14:56:30.8515714Z Downloaded: 6228 file(s) [attempted 6228/8908 = 69%, 905 KB/s], Decompressed: 476\n2026-10-20T14:56:30.9792071Z Downloaded: 6396 file(s) [attempted 6396/8908 = 71%, 969 KB/s], Decompressed: 476\n2026-10-20T14:56:31.0810296Z Downloaded: 6510 file(s) [attempted 6510/8908 = 73%, 551 KB/s], Decompressed: 476\n2026-10-20T14:56:31.1815789Z Downloaded: 6655 file(s) [attempted 6655/8908 = 74%, 698 KB/s], Decompressed: 476\n2026-10-20T14:56:31.2839892Z Downloaded: 6785 file(s) [attempted 6785/8908 = 76%, 1213 KB/s], Decompressed: 476\n2026-10-20T14:56:31.3859549Z Downloaded: 6955 file(s) [attempted 6955/8908 = 78%, 1655 KB/s], Decompressed: 1821\n2026-10-20T14:56:31.4874653Z Downloaded: 7101 file(s) [attempted 7101/8908 = 79%, 1342 KB/s], Decompressed: 1821\n2026-10-20T14:56:31.5864714Z Downloaded: 7214 file(s) [attempted 7214/8908 = 80%, 1363 KB/s], Decompressed: 1821\n2026-10-20T14:56:31.6916155Z Downloaded: 7341 file(s) [attempted 7341/8908 = 82%, 250 KB/s], Decompressed: 1821\n2026-10-20T14:56:31.7905234Z Downloaded: 7484 file(s) [attempted 7484/8908 = 84%, 2412 KB/s], Decompressed: 1821\n2026-10-20T14:56:31.9098962Z Downloaded: 7618 file(s) [attempted 7618/8908 = 85%, 589 KB/s], Decompressed: 1821\n2026-10-20T14:56:32.0159195Z Downloaded: 7766 file(s) [attempted 7766/8908 = 87%, 300 KB/s], Decompressed: 1821\n2026-10-20T14:56:32.1135662Z Downloaded: 7872 file(s) [attempted 7872/8908 = 88%, 4434 KB/s], Decompressed: 1821\n2026-10-20T14:56:32.2136237Z Downloaded: 7970 file(s) [attempted 7970/8908 = 89%, 728 KB/s], Decompressed: 1821\n2026-10-20T14:56:32.3158950Z Downloaded: 8090 file(s) [attempted 8090/8908 = 90%, 152 KB/s], Decompressed: 1821\n2026-10-20T14:56:32.4192232Z Downloaded: 8179 file(s) [attempted 8179/8908 = 91%, 861 KB/s], Decompressed: 1821\n2026-10-20T14:56:32.5295984Z Downloaded: 8342 file(s) [attempted 8342/8908 = 93%, 746 KB/s], Decompressed: 1821\n2026-10-20T14:56:32.6298814Z Downloaded: 8462 file(s) [attempted 8462/8908 = 94%, 661 KB/s], Decompressed: 1821\n2026-10-20T14:56:32.7315780Z Downloaded: 8604 file(s) [attempted 8604/8908 = 96%, 2323 KB/s], Decompressed: 1821\n2026-10-20T14:56:32.8371714Z Downloaded: 8748 file(s) [attempted 8748/8908 = 98%, 321 KB/s], Decompressed: 1821\n2026-10-20T14:56:32.8535845Z Downloaded: 8899 file(s) [attempted 8899/8908 = 99%, 873 KB/s], Decompressed: 1821\n2026-10-20T14:56:32.8565590Z Downloaded: 8908 file(s) [attempted 8908/8908 = 100%, 873 KB/s], Decompressed: 1821\n2026-10-20T14:57:01.4236447Z Decompressed 8908 file(s)\n2026-10-20T14:57:01.4236764Z Already decompressed 8908 file(s)\n2026-10-20T14:57:01.4861894Z ##[endgroup]\n2026-10-20T14:57:01.4862086Z \n2026-10-20T14:57:01.4871682Z ##[end-action id=__leanprover_lean-action.__run_3;outcome=success;conclusion=success;duration_ms=93057]\n2026-10-20T14:57:01.4898314Z ##[start-action display=build d6g8k5htny-coder/Math-;id=__leanprover_lean-action.build]\n2026-10-20T14:57:01.4902617Z ##[end-action id=__leanprover_lean-action.build;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T14:57:01.4904854Z ##[start-action display=Run actions/cache/save@caa296126883cff596d87d8935842f9db880ef25;id=__leanprover_lean-action.__actions_cache_2]\n2026-10-20T14:57:01.4909116Z ##[end-action id=__leanprover_lean-action.__actions_cache_2;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T14:57:01.4912683Z ##[start-action display=test d6g8k5htny-coder/Math-;id=__leanprover_lean-action.test]\n2026-10-20T14:57:01.4917870Z ##[end-action id=__leanprover_lean-action.test;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T14:57:01.4921018Z ##[start-action display=lint d6g8k5htny-coder/Math-;id=__leanprover_lean-action.lint]\n2026-10-20T14:57:01.4926190Z ##[end-action id=__leanprover_lean-action.lint;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T14:57:01.4927690Z ##[start-action display=check reservoir eligibility;id=__leanprover_lean-action.__run_4]\n2026-10-20T14:57:01.4930333Z ##[end-action id=__leanprover_lean-action.__run_4;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T14:57:01.4932483Z ##[start-action display=check environment with leanchecker;id=__leanprover_lean-action.__run_5]\n2026-10-20T14:57:01.4936453Z ##[end-action id=__leanprover_lean-action.__run_5;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T14:57:01.4938127Z ##[start-action display=check environment with nanoda;id=__leanprover_lean-action.nanoda]\n2026-10-20T14:57:01.4940708Z ##[end-action id=__leanprover_lean-action.nanoda;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T14:57:01.4942436Z ##[start-action display=audit axioms with axiom-audit;id=__leanprover_lean-action.axiom-audit]\n2026-10-20T14:57:01.4945314Z ##[end-action id=__leanprover_lean-action.axiom-audit;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T14:57:01.5412253Z ##[group]Run cd formal\n2026-10-20T14:57:01.5412506Z \u001b[36;1mcd formal\u001b[0m\n2026-10-20T14:57:01.5412953Z \u001b[36;1mlake env python3 -B -S ../frontiers/critical_ridge_20261020/c299_hosted_verify.py execute --manifest-sha256 \"$C299_MANIFEST_SHA256\"\u001b[0m\n2026-10-20T14:57:01.5469612Z shell: /usr/bin/bash -e {0}\n2026-10-20T14:57:01.5469831Z env:\n2026-10-20T14:57:01.5469996Z LEAN_NUM_THREADS: 2\n2026-10-20T14:57:01.5470309Z C299_MANIFEST_SHA256: f7ffc5724de5d45b0518fe09f4396e6d2b817af920da0a63694ac97276e879ec\n2026-10-20T14:57:01.5470656Z ##[endgroup]\n2026-10-20T14:57:02.8522248Z C299 runtime-print-prefix: exit=0 timeout=False seconds=0.032161\n2026-10-20T14:57:02.9286748Z C299 runtime-version: exit=0 timeout=False seconds=0.031911\n2026-10-20T14:57:08.3746200Z C299 build-Lifetime: exit=0 timeout=False seconds=5.427366\n2026-10-20T14:57:13.0617080Z C299 build-TorusTopology: exit=0 timeout=False seconds=4.626473\n2026-10-20T14:57:19.5976555Z C299 build-MorseFiniteCritical: exit=0 timeout=False seconds=6.532124\n2026-10-20T14:57:36.6597468Z C299 build-CriticalRidge: exit=1 timeout=False seconds=17.057773\n2026-10-20T14:57:36.6665334Z Traceback (most recent call last):\n2026-10-20T14:57:36.6667334Z File \"/home/runner/work/Math-/Math-/formal/../frontiers/critical_ridge_20261020/c299_hosted_verify.py\", line 626, in \n2026-10-20T14:57:36.6668246Z main()\n2026-10-20T14:57:36.6668938Z File \"/home/runner/work/Math-/Math-/formal/../frontiers/critical_ridge_20261020/c299_hosted_verify.py\", line 622, in main\n2026-10-20T14:57:36.6669638Z execute(root, args.manifest_sha256)\n2026-10-20T14:57:36.6670308Z File \"/home/runner/work/Math-/Math-/formal/../frontiers/critical_ridge_20261020/c299_hosted_verify.py\", line 540, in execute\n2026-10-20T14:57:36.6671163Z rec, output, _ = run_phase('build-' + module, args, packet / 'project', env, evidence, report,\n2026-10-20T14:57:36.6671736Z ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n2026-10-20T14:57:36.6672266Z File \"/home/runner/work/Math-/Math-/formal/../frontiers/critical_ridge_20261020/c299_hosted_verify.py\", line 413, in run_phase\n2026-10-20T14:57:36.6672784Z raise RuntimeError(f'C299 {name} unexpected exit: {code}; timed_out={timed_out}; '\n2026-10-20T14:57:36.6673465Z RuntimeError: C299 build-CriticalRidge unexpected exit: 1; timed_out=False; spawn_error=None; object_error=build must add only its own target object outputs; environment_error=None\n2026-10-20T14:57:36.7007245Z ##[error]Process completed with exit code 1.\n2026-10-20T14:57:36.7080266Z ##[group]Run actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9\n2026-10-20T14:57:36.7080592Z with:\n2026-10-20T14:57:36.7080759Z name: c299-hosted-39443604910-1\n2026-10-20T14:57:36.7080979Z path: .lake/c299-hosted-evidence/\n2026-10-20T14:57:36.7081202Z include-hidden-files: true\n2026-10-20T14:57:36.7081396Z if-no-files-found: warn\n2026-10-20T14:57:36.7081577Z retention-days: 90\n2026-10-20T14:57:36.7081752Z compression-level: 6\n2026-10-20T14:57:36.7081930Z overwrite: false\n2026-10-20T14:57:36.7082093Z archive: true\n2026-10-20T14:57:36.7082249Z env:\n2026-10-20T14:57:36.7082399Z LEAN_NUM_THREADS: 2\n2026-10-20T14:57:36.7082702Z C299_MANIFEST_SHA256: f7ffc5724de5d45b0518fe09f4396e6d2b817af920da0a63694ac97276e879ec\n2026-10-20T14:57:36.7083051Z ##[endgroup]\n2026-10-20T14:57:36.8300318Z With the provided path, there will be 33 files uploaded\n2026-10-20T14:57:36.8300924Z Artifact name is valid!\n2026-10-20T14:57:36.8301125Z Root directory input is valid!\n2026-10-20T14:57:37.0399006Z Uploading artifact: c299-hosted-39443604910-1.zip\n2026-10-20T14:57:37.0442886Z Beginning upload of artifact content to blob storage\n2026-10-20T14:57:37.1867293Z Uploaded bytes 479747\n2026-10-20T14:57:37.1982792Z Finished uploading artifact content to blob storage!\n2026-10-20T14:57:37.1983474Z SHA256 digest of uploaded artifact is 73c7f4a1c1cc83fc74408bc9f885969e9704a7d6c6af32fa6aed071aaddcff5a\n2026-10-20T14:57:37.1984090Z Finalizing artifact upload\n2026-10-20T14:57:37.4514670Z Artifact c299-hosted-39443604910-1 successfully finalized. Artifact ID 12274363865\n2026-10-20T14:57:37.4515655Z Artifact c299-hosted-39443604910-1 has been successfully uploaded! Final size is 479747 bytes. Artifact ID is 12274363865\n2026-10-20T14:57:37.4518673Z Artifact download URL: https://github.com/d6g8k5htny-coder/Math-/actions/runs/39443604910/artifacts/12274363865\n2026-10-20T14:57:37.4879219Z Post job cleanup.\n2026-10-20T14:57:37.5669267Z [command]/usr/bin/git version\n2026-10-20T14:57:37.5707827Z git version 2.55.0\n2026-10-20T14:57:37.5743341Z Temporarily overriding HOME='/home/runner/work/_temp/673f5574-1222-4f09-91f2-a15710f81901' before making global git config changes\n2026-10-20T14:57:37.5746117Z Adding repository directory to the temporary git global config as a safe directory\n2026-10-20T14:57:37.5758974Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/Math-/Math-\n2026-10-20T14:57:37.5831660Z Removing SSH command configuration\n2026-10-20T14:57:37.5851058Z [command]/usr/bin/git config --local --name-only --get-regexp core\\.sshCommand\n2026-10-20T14:57:37.5994787Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'core\\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :\"\n2026-10-20T14:57:37.6237408Z Removing HTTP extra header\n2026-10-20T14:57:37.6243168Z [command]/usr/bin/git config --local --name-only --get-regexp http\\.https\\:\\/\\/github\\.com\\/\\.extraheader\n2026-10-20T14:57:37.6276109Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'http\\.https\\:\\/\\/github\\.com\\/\\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :\"\n2026-10-20T14:57:37.6493479Z Removing includeIf entries pointing to credentials config files\n2026-10-20T14:57:37.6500129Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\\.gitdir:\n2026-10-20T14:57:37.6539690Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url\n2026-10-20T14:57:37.7132862Z Cleaning up orphan processes\n" + }, + "isError": false +} diff --git a/frontiers/critical_ridge_20261020/hosted-development3/native/c299_dev_run3.json b/frontiers/critical_ridge_20261020/hosted-development3/native/c299_dev_run3.json new file mode 100644 index 000000000..6c8e73a62 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development3/native/c299_dev_run3.json @@ -0,0 +1,22 @@ +{ + "content": [ + { + "type": "text", + "text": "Action completed." + } + ], + "structuredContent": { + "content": "{\"id\":39443604910,\"name\":\"C299 critical ridge (hosted Lean, no scientific promotion)\",\"node_id\":\"WFR_kwLOUphbdM8AAAAJLwWlrg\",\"head_branch\":\"codex/c299-critical-ridge-20261020\",\"head_sha\":\"5e63005bd6d8288695fbbc974e40336dca87e77f\",\"path\":\".github/workflows/c299-critical-ridge.yml\",\"display_title\":\"C299: construct the actual negative partial-gradient ridge\",\"run_number\":3,\"event\":\"pull_request\",\"status\":\"completed\",\"conclusion\":\"failure\",\"workflow_id\":390636492,\"check_suite_id\":106885875056,\"check_suite_node_id\":\"CS_kwDOUphbdM8AAAAY4uUFcA\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39443604910\",\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-/actions/runs/39443604910\",\"pull_requests\":[{\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/pulls/491\",\"id\":4937180021,\"number\":491,\"head\":{\"ref\":\"codex/c299-critical-ridge-20261020\",\"sha\":\"5e63005bd6d8288695fbbc974e40336dca87e77f\",\"repo\":{\"id\":1385716596,\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-\",\"name\":\"Math-\"}},\"base\":{\"ref\":\"main\",\"sha\":\"8c226134ac0a0169dbb43311082e5353ed5c922c\",\"repo\":{\"id\":1385716596,\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-\",\"name\":\"Math-\"}}}],\"created_at\":\"2026-10-20T14:55:04Z\",\"updated_at\":\"2026-10-20T14:57:40Z\",\"actor\":{\"login\":\"d6g8k5htny-coder\",\"id\":249851642,\"node_id\":\"U_kgDODuRu-g\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/249851642?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/d6g8k5htny-coder\",\"html_url\":\"https://github.com/d6g8k5htny-coder\",\"followers_url\":\"https://api.github.com/users/d6g8k5htny-coder/followers\",\"following_url\":\"https://api.github.com/users/d6g8k5htny-coder/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/d6g8k5htny-coder/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/d6g8k5htny-coder/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/d6g8k5htny-coder/subscriptions\",\"organizations_url\":\"https://api.github.com/users/d6g8k5htny-coder/orgs\",\"repos_url\":\"https://api.github.com/users/d6g8k5htny-coder/repos\",\"events_url\":\"https://api.github.com/users/d6g8k5htny-coder/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/d6g8k5htny-coder/received_events\",\"type\":\"User\",\"user_view_type\":\"public\",\"site_admin\":false},\"run_attempt\":1,\"referenced_workflows\":[],\"run_started_at\":\"2026-10-20T14:55:04Z\",\"triggering_actor\":{\"login\":\"d6g8k5htny-coder\",\"id\":249851642,\"node_id\":\"U_kgDODuRu-g\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/249851642?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/d6g8k5htny-coder\",\"html_url\":\"https://github.com/d6g8k5htny-coder\",\"followers_url\":\"https://api.github.com/users/d6g8k5htny-coder/followers\",\"following_url\":\"https://api.github.com/users/d6g8k5htny-coder/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/d6g8k5htny-coder/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/d6g8k5htny-coder/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/d6g8k5htny-coder/subscriptions\",\"organizations_url\":\"https://api.github.com/users/d6g8k5htny-coder/orgs\",\"repos_url\":\"https://api.github.com/users/d6g8k5htny-coder/repos\",\"events_url\":\"https://api.github.com/users/d6g8k5htny-coder/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/d6g8k5htny-coder/received_events\",\"type\":\"User\",\"user_view_type\":\"public\",\"site_admin\":false},\"jobs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39443604910/jobs\",\"logs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39443604910/logs\",\"check_suite_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/check-suites/106885875056\",\"artifacts_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39443604910/artifacts\",\"cancel_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39443604910/cancel\",\"rerun_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39443604910/rerun\",\"previous_attempt_url\":null,\"workflow_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/workflows/390636492\",\"head_commit\":{\"id\":\"5e63005bd6d8288695fbbc974e40336dca87e77f\",\"tree_id\":\"b2c081da3914ec070fbeeb2e83109672e3b5757c\",\"message\":\"fix(C299): compose restriction derivative and normalize product instances\\n\\nPreserve all nine public interfaces and the two actual hosted failures.\\nRetain nonauthor source-repair review; compilation remains pending.\\nAI work by OpenAI Codex agents delegated for Dylan Roy; no human review claimed.\",\"timestamp\":\"2026-10-20T14:54:20Z\",\"author\":{\"name\":\"Dylan Roy\",\"email\":\"249851642+d6g8k5htny-coder@users.noreply.github.com\"},\"committer\":{\"name\":\"Dylan Roy\",\"email\":\"249851642+d6g8k5htny-coder@users.noreply.github.com\"}},\"repository\":{\"id\":1385716596,\"node_id\":\"R_kgDOUphbdA\",\"name\":\"Math-\",\"full_name\":\"d6g8k5htny-coder/Math-\",\"private\":false,\"owner\":{\"login\":\"d6g8k5htny-coder\",\"id\":249851642,\"node_id\":\"U_kgDODuRu-g\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/249851642?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/d6g8k5htny-coder\",\"html_url\":\"https://github.com/d6g8k5htny-coder\",\"followers_url\":\"https://api.github.com/users/d6g8k5htny-coder/followers\",\"following_url\":\"https://api.github.com/users/d6g8k5htny-coder/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/d6g8k5htny-coder/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/d6g8k5htny-coder/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/d6g8k5htny-coder/subscriptions\",\"organizations_url\":\"https://api.github.com/users/d6g8k5htny-coder/orgs\",\"repos_url\":\"https://api.github.com/users/d6g8k5htny-coder/repos\",\"events_url\":\"https://api.github.com/users/d6g8k5htny-coder/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/d6g8k5htny-coder/received_events\",\"type\":\"User\",\"user_view_type\":\"public\",\"site_admin\":false},\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-\",\"description\":\"Proof vault for Gaussian random fields and persistent homology: full arguments, exact computations, source-bound reviews, and explicit open obligations.\",\"fork\":false,\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-\",\"forks_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/forks\",\"keys_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/teams\",\"hooks_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/hooks\",\"issue_events_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/events\",\"assignees_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/tags\",\"blobs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/languages\",\"stargazers_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/stargazers\",\"contributors_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/contributors\",\"subscribers_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/subscribers\",\"subscription_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/subscription\",\"commits_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/merges\",\"archive_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/downloads\",\"issues_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/labels{/name}\",\"releases_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/releases{/id}\",\"deployments_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/deployments\"},\"head_repository\":{\"id\":1385716596,\"node_id\":\"R_kgDOUphbdA\",\"name\":\"Math-\",\"full_name\":\"d6g8k5htny-coder/Math-\",\"private\":false,\"owner\":{\"login\":\"d6g8k5htny-coder\",\"id\":249851642,\"node_id\":\"U_kgDODuRu-g\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/249851642?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/d6g8k5htny-coder\",\"html_url\":\"https://github.com/d6g8k5htny-coder\",\"followers_url\":\"https://api.github.com/users/d6g8k5htny-coder/followers\",\"following_url\":\"https://api.github.com/users/d6g8k5htny-coder/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/d6g8k5htny-coder/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/d6g8k5htny-coder/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/d6g8k5htny-coder/subscriptions\",\"organizations_url\":\"https://api.github.com/users/d6g8k5htny-coder/orgs\",\"repos_url\":\"https://api.github.com/users/d6g8k5htny-coder/repos\",\"events_url\":\"https://api.github.com/users/d6g8k5htny-coder/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/d6g8k5htny-coder/received_events\",\"type\":\"User\",\"user_view_type\":\"public\",\"site_admin\":false},\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-\",\"description\":\"Proof vault for Gaussian random fields and persistent homology: full arguments, exact computations, source-bound reviews, and explicit open obligations.\",\"fork\":false,\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-\",\"forks_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/forks\",\"keys_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/teams\",\"hooks_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/hooks\",\"issue_events_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/events\",\"assignees_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/tags\",\"blobs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/languages\",\"stargazers_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/stargazers\",\"contributors_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/contributors\",\"subscribers_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/subscribers\",\"subscription_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/subscription\",\"commits_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/merges\",\"archive_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/downloads\",\"issues_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/labels{/name}\",\"releases_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/releases{/id}\",\"deployments_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/deployments\"}}", + "title": "39443604910", + "modified_date": null, + "url": "https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39443604910", + "display_url": "https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39443604910", + "display_title": "39443604910", + "structuredContent": { + "title": "39443604910", + "content": "{\"id\":39443604910,\"name\":\"C299 critical ridge (hosted Lean, no scientific promotion)\",\"node_id\":\"WFR_kwLOUphbdM8AAAAJLwWlrg\",\"head_branch\":\"codex/c299-critical-ridge-20261020\",\"head_sha\":\"5e63005bd6d8288695fbbc974e40336dca87e77f\",\"path\":\".github/workflows/c299-critical-ridge.yml\",\"display_title\":\"C299: construct the actual negative partial-gradient ridge\",\"run_number\":3,\"event\":\"pull_request\",\"status\":\"completed\",\"conclusion\":\"failure\",\"workflow_id\":390636492,\"check_suite_id\":106885875056,\"check_suite_node_id\":\"CS_kwDOUphbdM8AAAAY4uUFcA\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39443604910\",\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-/actions/runs/39443604910\",\"pull_requests\":[{\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/pulls/491\",\"id\":4937180021,\"number\":491,\"head\":{\"ref\":\"codex/c299-critical-ridge-20261020\",\"sha\":\"5e63005bd6d8288695fbbc974e40336dca87e77f\",\"repo\":{\"id\":1385716596,\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-\",\"name\":\"Math-\"}},\"base\":{\"ref\":\"main\",\"sha\":\"8c226134ac0a0169dbb43311082e5353ed5c922c\",\"repo\":{\"id\":1385716596,\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-\",\"name\":\"Math-\"}}}],\"created_at\":\"2026-10-20T14:55:04Z\",\"updated_at\":\"2026-10-20T14:57:40Z\",\"actor\":{\"login\":\"d6g8k5htny-coder\",\"id\":249851642,\"node_id\":\"U_kgDODuRu-g\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/249851642?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/d6g8k5htny-coder\",\"html_url\":\"https://github.com/d6g8k5htny-coder\",\"followers_url\":\"https://api.github.com/users/d6g8k5htny-coder/followers\",\"following_url\":\"https://api.github.com/users/d6g8k5htny-coder/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/d6g8k5htny-coder/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/d6g8k5htny-coder/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/d6g8k5htny-coder/subscriptions\",\"organizations_url\":\"https://api.github.com/users/d6g8k5htny-coder/orgs\",\"repos_url\":\"https://api.github.com/users/d6g8k5htny-coder/repos\",\"events_url\":\"https://api.github.com/users/d6g8k5htny-coder/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/d6g8k5htny-coder/received_events\",\"type\":\"User\",\"user_view_type\":\"public\",\"site_admin\":false},\"run_attempt\":1,\"referenced_workflows\":[],\"run_started_at\":\"2026-10-20T14:55:04Z\",\"triggering_actor\":{\"login\":\"d6g8k5htny-coder\",\"id\":249851642,\"node_id\":\"U_kgDODuRu-g\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/249851642?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/d6g8k5htny-coder\",\"html_url\":\"https://github.com/d6g8k5htny-coder\",\"followers_url\":\"https://api.github.com/users/d6g8k5htny-coder/followers\",\"following_url\":\"https://api.github.com/users/d6g8k5htny-coder/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/d6g8k5htny-coder/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/d6g8k5htny-coder/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/d6g8k5htny-coder/subscriptions\",\"organizations_url\":\"https://api.github.com/users/d6g8k5htny-coder/orgs\",\"repos_url\":\"https://api.github.com/users/d6g8k5htny-coder/repos\",\"events_url\":\"https://api.github.com/users/d6g8k5htny-coder/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/d6g8k5htny-coder/received_events\",\"type\":\"User\",\"user_view_type\":\"public\",\"site_admin\":false},\"jobs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39443604910/jobs\",\"logs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39443604910/logs\",\"check_suite_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/check-suites/106885875056\",\"artifacts_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39443604910/artifacts\",\"cancel_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39443604910/cancel\",\"rerun_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39443604910/rerun\",\"previous_attempt_url\":null,\"workflow_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/workflows/390636492\",\"head_commit\":{\"id\":\"5e63005bd6d8288695fbbc974e40336dca87e77f\",\"tree_id\":\"b2c081da3914ec070fbeeb2e83109672e3b5757c\",\"message\":\"fix(C299): compose restriction derivative and normalize product instances\\n\\nPreserve all nine public interfaces and the two actual hosted failures.\\nRetain nonauthor source-repair review; compilation remains pending.\\nAI work by OpenAI Codex agents delegated for Dylan Roy; no human review claimed.\",\"timestamp\":\"2026-10-20T14:54:20Z\",\"author\":{\"name\":\"Dylan Roy\",\"email\":\"249851642+d6g8k5htny-coder@users.noreply.github.com\"},\"committer\":{\"name\":\"Dylan Roy\",\"email\":\"249851642+d6g8k5htny-coder@users.noreply.github.com\"}},\"repository\":{\"id\":1385716596,\"node_id\":\"R_kgDOUphbdA\",\"name\":\"Math-\",\"full_name\":\"d6g8k5htny-coder/Math-\",\"private\":false,\"owner\":{\"login\":\"d6g8k5htny-coder\",\"id\":249851642,\"node_id\":\"U_kgDODuRu-g\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/249851642?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/d6g8k5htny-coder\",\"html_url\":\"https://github.com/d6g8k5htny-coder\",\"followers_url\":\"https://api.github.com/users/d6g8k5htny-coder/followers\",\"following_url\":\"https://api.github.com/users/d6g8k5htny-coder/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/d6g8k5htny-coder/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/d6g8k5htny-coder/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/d6g8k5htny-coder/subscriptions\",\"organizations_url\":\"https://api.github.com/users/d6g8k5htny-coder/orgs\",\"repos_url\":\"https://api.github.com/users/d6g8k5htny-coder/repos\",\"events_url\":\"https://api.github.com/users/d6g8k5htny-coder/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/d6g8k5htny-coder/received_events\",\"type\":\"User\",\"user_view_type\":\"public\",\"site_admin\":false},\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-\",\"description\":\"Proof vault for Gaussian random fields and persistent homology: full arguments, exact computations, source-bound reviews, and explicit open obligations.\",\"fork\":false,\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-\",\"forks_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/forks\",\"keys_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/teams\",\"hooks_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/hooks\",\"issue_events_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/events\",\"assignees_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/tags\",\"blobs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/languages\",\"stargazers_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/stargazers\",\"contributors_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/contributors\",\"subscribers_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/subscribers\",\"subscription_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/subscription\",\"commits_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/merges\",\"archive_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/downloads\",\"issues_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/labels{/name}\",\"releases_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/releases{/id}\",\"deployments_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/deployments\"},\"head_repository\":{\"id\":1385716596,\"node_id\":\"R_kgDOUphbdA\",\"name\":\"Math-\",\"full_name\":\"d6g8k5htny-coder/Math-\",\"private\":false,\"owner\":{\"login\":\"d6g8k5htny-coder\",\"id\":249851642,\"node_id\":\"U_kgDODuRu-g\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/249851642?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/d6g8k5htny-coder\",\"html_url\":\"https://github.com/d6g8k5htny-coder\",\"followers_url\":\"https://api.github.com/users/d6g8k5htny-coder/followers\",\"following_url\":\"https://api.github.com/users/d6g8k5htny-coder/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/d6g8k5htny-coder/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/d6g8k5htny-coder/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/d6g8k5htny-coder/subscriptions\",\"organizations_url\":\"https://api.github.com/users/d6g8k5htny-coder/orgs\",\"repos_url\":\"https://api.github.com/users/d6g8k5htny-coder/repos\",\"events_url\":\"https://api.github.com/users/d6g8k5htny-coder/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/d6g8k5htny-coder/received_events\",\"type\":\"User\",\"user_view_type\":\"public\",\"site_admin\":false},\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-\",\"description\":\"Proof vault for Gaussian random fields and persistent homology: full arguments, exact computations, source-bound reviews, and explicit open obligations.\",\"fork\":false,\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-\",\"forks_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/forks\",\"keys_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/teams\",\"hooks_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/hooks\",\"issue_events_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/events\",\"assignees_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/tags\",\"blobs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/languages\",\"stargazers_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/stargazers\",\"contributors_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/contributors\",\"subscribers_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/subscribers\",\"subscription_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/subscription\",\"commits_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/merges\",\"archive_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/downloads\",\"issues_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/labels{/name}\",\"releases_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/releases{/id}\",\"deployments_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/deployments\"}}", + "display_url": "https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39443604910" + } + }, + "isError": false +} diff --git a/frontiers/critical_ridge_20261020/hosted-development3/native/c299_downstream3_jobs.json b/frontiers/critical_ridge_20261020/hosted-development3/native/c299_downstream3_jobs.json new file mode 100644 index 000000000..13b506b9f --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development3/native/c299_downstream3_jobs.json @@ -0,0 +1,199 @@ +{ + "content": [ + { + "type": "text", + "text": "Action completed." + } + ], + "structuredContent": { + "jobs": [ + { + "id": 118699589137, + "name": "downstream-replay", + "status": "completed", + "conclusion": "success", + "run_id": 39443604909, + "logs_url": null, + "steps": [ + { + "name": "Set up job", + "status": "completed", + "conclusion": "success", + "number": 1 + }, + { + "name": "Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1", + "status": "completed", + "conclusion": "success", + "number": 2 + }, + { + "name": "Run actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97", + "status": "completed", + "conclusion": "success", + "number": 3 + }, + { + "name": "Required-check integration controls in both Python modes", + "status": "completed", + "conclusion": "success", + "number": 4 + }, + { + "name": "Validation timeout evidence controls in both Python modes", + "status": "completed", + "conclusion": "success", + "number": 5 + }, + { + "name": "Verify exact sources, transition inputs and regressions", + "status": "completed", + "conclusion": "success", + "number": 6 + }, + { + "name": "P-C paired A/B source-bound conformance", + "status": "completed", + "conclusion": "success", + "number": 7 + }, + { + "name": "Retain evidence even on failure", + "status": "completed", + "conclusion": "success", + "number": 8 + }, + { + "name": "Bind existing checks to tested commit", + "status": "completed", + "conclusion": "success", + "number": 9 + }, + { + "name": "Post Run actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97", + "status": "completed", + "conclusion": "success", + "number": 17 + }, + { + "name": "Post Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1", + "status": "completed", + "conclusion": "success", + "number": 18 + }, + { + "name": "Complete job", + "status": "completed", + "conclusion": "success", + "number": 19 + } + ] + }, + { + "id": 118699589374, + "name": "formal / formal-evidence", + "status": "completed", + "conclusion": "success", + "run_id": 39443604909, + "logs_url": null, + "steps": [ + { + "name": "Set up job", + "status": "completed", + "conclusion": "success", + "number": 1 + }, + { + "name": "Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1", + "status": "completed", + "conclusion": "success", + "number": 2 + }, + { + "name": "Gate tests and exact source identity", + "status": "completed", + "conclusion": "success", + "number": 3 + }, + { + "name": "Install pinned Lean and retrieve dependency cache", + "status": "completed", + "conclusion": "success", + "number": 4 + }, + { + "name": "Build, recheck, audit axioms and execute negative controls", + "status": "completed", + "conclusion": "success", + "number": 5 + }, + { + "name": "Bind current-run receipt to required check", + "status": "completed", + "conclusion": "success", + "number": 6 + }, + { + "name": "Preserve logs and exact-run receipt", + "status": "completed", + "conclusion": "success", + "number": 7 + }, + { + "name": "Post Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1", + "status": "completed", + "conclusion": "success", + "number": 14 + }, + { + "name": "Complete job", + "status": "completed", + "conclusion": "success", + "number": 15 + } + ] + }, + { + "id": 118702006747, + "name": "math-downstream-gates", + "status": "completed", + "conclusion": "success", + "run_id": 39443604909, + "logs_url": null, + "steps": [ + { + "name": "Set up job", + "status": "completed", + "conclusion": "success", + "number": 1 + }, + { + "name": "Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1", + "status": "completed", + "conclusion": "success", + "number": 2 + }, + { + "name": "Require both checks and source-bound current-run formal success", + "status": "completed", + "conclusion": "success", + "number": 3 + }, + { + "name": "Post Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1", + "status": "completed", + "conclusion": "success", + "number": 6 + }, + { + "name": "Complete job", + "status": "completed", + "conclusion": "success", + "number": 7 + } + ] + } + ] + }, + "isError": false +} diff --git a/frontiers/critical_ridge_20261020/hosted-development3/native/c299_tested_merge3.json b/frontiers/critical_ridge_20261020/hosted-development3/native/c299_tested_merge3.json new file mode 100644 index 000000000..4fc9b403a --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development3/native/c299_tested_merge3.json @@ -0,0 +1,22 @@ +{ + "content": [ + { + "type": "text", + "text": "Action completed." + } + ], + "structuredContent": { + "content": "{\"sha\":\"011a9683382b474cfcf0046ebaec365452277654\",\"node_id\":\"C_kwDOUphbdNoAKDAxMWE5NjgzMzgyYjQ3NGNmY2YwMDQ2ZWJhZWMzNjU0NTIyNzc2NTQ\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/011a9683382b474cfcf0046ebaec365452277654\",\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-/commit/011a9683382b474cfcf0046ebaec365452277654\",\"author\":{\"name\":\"Dylan Roy\",\"email\":\"249851642+d6g8k5htny-coder@users.noreply.github.com\",\"date\":\"2026-10-20T14:55:00Z\"},\"committer\":{\"name\":\"GitHub\",\"email\":\"noreply@github.com\",\"date\":\"2026-10-20T14:55:00Z\"},\"tree\":{\"sha\":\"53a29f7806cb06bd3f4971b13d574697d4e2cf40\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/trees/53a29f7806cb06bd3f4971b13d574697d4e2cf40\"},\"message\":\"Merge 5e63005bd6d8288695fbbc974e40336dca87e77f into dcf7d555b0311e5c10529b5160490c6b61f27833\",\"parents\":[{\"sha\":\"dcf7d555b0311e5c10529b5160490c6b61f27833\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/dcf7d555b0311e5c10529b5160490c6b61f27833\",\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-/commit/dcf7d555b0311e5c10529b5160490c6b61f27833\"},{\"sha\":\"5e63005bd6d8288695fbbc974e40336dca87e77f\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/5e63005bd6d8288695fbbc974e40336dca87e77f\",\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-/commit/5e63005bd6d8288695fbbc974e40336dca87e77f\"}],\"verification\":{\"verified\":true,\"reason\":\"valid\",\"signature\":\"-----BEGIN PGP SIGNATURE-----\\n\\nwsFcBAABCAAQBQJq14DECRC1aQ7uu5UhlAAAnBAQAFzTOzB3sfKWxn1tU5QpmZ9B\\nzDEZmRkbLrbTv4mUqFZfq1l+8CjP+sgiVrsbXexQw2p/4KRxtQzZMfsiHWTgYXvr\\n4XJotL6ePDPiU+Zhv0arsfF+N6neMKN8A8bfY7V7UGGfgobR+exMerPC5V/oHJ4c\\npYv2V845rDsjq5GjgiuPh7QHzyli1TyM9HBnRlGEo9wMIh9F9lnWqaoqHZX1SidM\\n24cie6zulBV7Cu5mY3VwQqC//53ywSsOVz79XDh8u6ZDNKUFfIJvrDzfhYLEwL+J\\nSC3SkVrnQJXpQokCAHY8esol4BeJhEYB1xcO65s6Tpi377owDMC2yiUTm/7N1Kn3\\nrL1Saf4yPre5+BR4Tg24YfIdhBCaOzxwJYU4pmqZvH5ojc7wiyLAZa32xCc8I+wW\\nj1DF16Q8Za3NdTxLgAy14QiBVjbh621B8/t5bOtJa+QKOHR22df/HU7yYXA+aIBi\\nDHeNRo5wLEUxcIUNvzBbXljjySKNtGF0eOCwF3gBoXgOFnPiqaoDBTzwdhhkwWuQ\\nU/DUFZ4YdbICS18flUBa9lUR3LWwMuDg/h5sYYp5VK64w90bJKLfmpRrVAuziuTA\\nwxLSQIMF7qsNxeG3Rjyex/Tgjr1JOoSgv+S8QjG7IA9nMEz1DQ46mtnFh50s0U1z\\nn2rIz88dBSwv/+RfyGME\\n=cK4m\\n-----END PGP SIGNATURE-----\\n\",\"payload\":\"tree 53a29f7806cb06bd3f4971b13d574697d4e2cf40\\nparent dcf7d555b0311e5c10529b5160490c6b61f27833\\nparent 5e63005bd6d8288695fbbc974e40336dca87e77f\\nauthor Dylan Roy <249851642+d6g8k5htny-coder@users.noreply.github.com> 1792508100 +0000\\ncommitter GitHub 1792508100 +0000\\n\\nMerge 5e63005bd6d8288695fbbc974e40336dca87e77f into dcf7d555b0311e5c10529b5160490c6b61f27833\\n\",\"verified_at\":\"2026-10-20T14:59:57Z\"}}", + "title": "011a9683382b474cfcf0046ebaec365452277654", + "modified_date": null, + "url": "https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/011a9683382b474cfcf0046ebaec365452277654", + "display_url": "https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/011a9683382b474cfcf0046ebaec365452277654", + "display_title": "011a9683382b474cfcf0046ebaec365452277654", + "structuredContent": { + "title": "011a9683382b474cfcf0046ebaec365452277654", + "content": "{\"sha\":\"011a9683382b474cfcf0046ebaec365452277654\",\"node_id\":\"C_kwDOUphbdNoAKDAxMWE5NjgzMzgyYjQ3NGNmY2YwMDQ2ZWJhZWMzNjU0NTIyNzc2NTQ\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/011a9683382b474cfcf0046ebaec365452277654\",\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-/commit/011a9683382b474cfcf0046ebaec365452277654\",\"author\":{\"name\":\"Dylan Roy\",\"email\":\"249851642+d6g8k5htny-coder@users.noreply.github.com\",\"date\":\"2026-10-20T14:55:00Z\"},\"committer\":{\"name\":\"GitHub\",\"email\":\"noreply@github.com\",\"date\":\"2026-10-20T14:55:00Z\"},\"tree\":{\"sha\":\"53a29f7806cb06bd3f4971b13d574697d4e2cf40\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/trees/53a29f7806cb06bd3f4971b13d574697d4e2cf40\"},\"message\":\"Merge 5e63005bd6d8288695fbbc974e40336dca87e77f into dcf7d555b0311e5c10529b5160490c6b61f27833\",\"parents\":[{\"sha\":\"dcf7d555b0311e5c10529b5160490c6b61f27833\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/dcf7d555b0311e5c10529b5160490c6b61f27833\",\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-/commit/dcf7d555b0311e5c10529b5160490c6b61f27833\"},{\"sha\":\"5e63005bd6d8288695fbbc974e40336dca87e77f\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/5e63005bd6d8288695fbbc974e40336dca87e77f\",\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-/commit/5e63005bd6d8288695fbbc974e40336dca87e77f\"}],\"verification\":{\"verified\":true,\"reason\":\"valid\",\"signature\":\"-----BEGIN PGP SIGNATURE-----\\n\\nwsFcBAABCAAQBQJq14DECRC1aQ7uu5UhlAAAnBAQAFzTOzB3sfKWxn1tU5QpmZ9B\\nzDEZmRkbLrbTv4mUqFZfq1l+8CjP+sgiVrsbXexQw2p/4KRxtQzZMfsiHWTgYXvr\\n4XJotL6ePDPiU+Zhv0arsfF+N6neMKN8A8bfY7V7UGGfgobR+exMerPC5V/oHJ4c\\npYv2V845rDsjq5GjgiuPh7QHzyli1TyM9HBnRlGEo9wMIh9F9lnWqaoqHZX1SidM\\n24cie6zulBV7Cu5mY3VwQqC//53ywSsOVz79XDh8u6ZDNKUFfIJvrDzfhYLEwL+J\\nSC3SkVrnQJXpQokCAHY8esol4BeJhEYB1xcO65s6Tpi377owDMC2yiUTm/7N1Kn3\\nrL1Saf4yPre5+BR4Tg24YfIdhBCaOzxwJYU4pmqZvH5ojc7wiyLAZa32xCc8I+wW\\nj1DF16Q8Za3NdTxLgAy14QiBVjbh621B8/t5bOtJa+QKOHR22df/HU7yYXA+aIBi\\nDHeNRo5wLEUxcIUNvzBbXljjySKNtGF0eOCwF3gBoXgOFnPiqaoDBTzwdhhkwWuQ\\nU/DUFZ4YdbICS18flUBa9lUR3LWwMuDg/h5sYYp5VK64w90bJKLfmpRrVAuziuTA\\nwxLSQIMF7qsNxeG3Rjyex/Tgjr1JOoSgv+S8QjG7IA9nMEz1DQ46mtnFh50s0U1z\\nn2rIz88dBSwv/+RfyGME\\n=cK4m\\n-----END PGP SIGNATURE-----\\n\",\"payload\":\"tree 53a29f7806cb06bd3f4971b13d574697d4e2cf40\\nparent dcf7d555b0311e5c10529b5160490c6b61f27833\\nparent 5e63005bd6d8288695fbbc974e40336dca87e77f\\nauthor Dylan Roy <249851642+d6g8k5htny-coder@users.noreply.github.com> 1792508100 +0000\\ncommitter GitHub 1792508100 +0000\\n\\nMerge 5e63005bd6d8288695fbbc974e40336dca87e77f into dcf7d555b0311e5c10529b5160490c6b61f27833\\n\",\"verified_at\":\"2026-10-20T14:59:57Z\"}}", + "display_url": "https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/011a9683382b474cfcf0046ebaec365452277654" + } + }, + "isError": false +} diff --git a/frontiers/critical_ridge_20261020/hosted-development3/runtime-print-prefix.receipt.json b/frontiers/critical_ridge_20261020/hosted-development3/runtime-print-prefix.receipt.json new file mode 100644 index 000000000..17d5cd1fe --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development3/runtime-print-prefix.receipt.json @@ -0,0 +1,32 @@ +{ + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "--print-prefix" + ], + "cwd": "/home/runner/work/Math-/Math-/formal", + "duration_seconds": 0.032161, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:57:02.833237+00:00", + "name": "runtime-print-prefix", + "object_validation_error": null, + "objects_after": null, + "objects_before": null, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:57:02.801098+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 58, + "stdout_sha256": "e0e72101499ee5e5a1967519d9955a093a555b85d5073da4bdba8bdd4cb12617", + "timed_out": false, + "timeout_seconds": 30, + "unexpected_override_names": [] +} diff --git a/frontiers/critical_ridge_20261020/hosted-development3/runtime-print-prefix.stderr b/frontiers/critical_ridge_20261020/hosted-development3/runtime-print-prefix.stderr new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development3/runtime-print-prefix.stdout b/frontiers/critical_ridge_20261020/hosted-development3/runtime-print-prefix.stdout new file mode 100644 index 000000000..ea59f6ca2 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development3/runtime-print-prefix.stdout @@ -0,0 +1 @@ +/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1 diff --git a/frontiers/critical_ridge_20261020/hosted-development3/runtime-version.receipt.json b/frontiers/critical_ridge_20261020/hosted-development3/runtime-version.receipt.json new file mode 100644 index 000000000..9e409770f --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development3/runtime-version.receipt.json @@ -0,0 +1,32 @@ +{ + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "--version" + ], + "cwd": "/home/runner/work/Math-/Math-/formal", + "duration_seconds": 0.031911, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T14:57:02.886226+00:00", + "name": "runtime-version", + "object_validation_error": null, + "objects_after": null, + "objects_before": null, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T14:57:02.854334+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 106, + "stdout_sha256": "355a9a028f81641782d75d6e6b58dec70f29d2f61238a9e271690259d9bf5680", + "timed_out": false, + "timeout_seconds": 30, + "unexpected_override_names": [] +} diff --git a/frontiers/critical_ridge_20261020/hosted-development3/runtime-version.stderr b/frontiers/critical_ridge_20261020/hosted-development3/runtime-version.stderr new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development3/runtime-version.stdout b/frontiers/critical_ridge_20261020/hosted-development3/runtime-version.stdout new file mode 100644 index 000000000..3bdff924e --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development3/runtime-version.stdout @@ -0,0 +1 @@ +Lean (version 4.34.1, x86_64-unknown-linux-gnu, commit 5045d0056413266e57c625dcd7c365b10e377c52, Release) diff --git a/frontiers/critical_ridge_20261020/project/CriticalRidge.lean b/frontiers/critical_ridge_20261020/project/CriticalRidge.lean index a711e4511..a17058a0b 100644 --- a/frontiers/critical_ridge_20261020/project/CriticalRidge.lean +++ b/frontiers/critical_ridge_20261020/project/CriticalRidge.lean @@ -108,7 +108,6 @@ theorem negativePartialGradient_contDiff (f : E d → ℝ) (p : E d) exact (hD.comp (contDiff_const.add (ridgeAddition V).contDiff)).clm_comp contDiff_const -set_option backward.isDefEq.respectTransparency false in theorem negativePartialGradient_hasFDerivAt (f : E d → ℝ) (p : E d) (V : Submodule ℝ (E d)) (hsmooth : IsSmooth d f) : HasFDerivAt (negativePartialGradient f p V) @@ -125,10 +124,14 @@ theorem negativePartialGradient_hasFDerivAt (f : E d → ℝ) (p : E d) (p + ridgeAddition V (0 : E d × V)) := by simpa only [map_zero, add_zero] using hDp have hcomp := hDp'.comp (0 : E d × V) hadd - simpa only [negativePartialGradient, Function.comp_def] using - (restrictCovector V).hasFDerivAt.comp (0 : E d × V) hcomp + change HasFDerivAt (fun q : E d × V => + (fderiv ℝ f (p + ridgeAddition V q)).comp V.subtypeL) _ _ + convert! hcomp.clm_comp (hasFDerivAt_const V.subtypeL (0 : E d × V)) using 1 <;> + first + | rfl + | (simp only [ContinuousLinearMap.comp_zero, zero_add] <;> + (ext q z; rfl)) -set_option backward.isDefEq.respectTransparency false in /-- One actual ridge and all four conclusions for the same chosen function. The equation is in the actual ambient function and actual subspace. -/ theorem exists_negative_partial_gradient_ridge @@ -187,10 +190,16 @@ theorem exists_negative_partial_gradient_ridge (hasFDerivAt_const (0 : V →L[ℝ] ℝ) (0 : E d)).congr_of_eventuallyEq heq have hchain : HasFDerivAt (fun w : E d => G (w, r w)) (D.comp ((ContinuousLinearMap.id ℝ (E d)).prod (fderiv ℝ r 0))) 0 := by - have hd : HasFDerivAt G D ((0 : E d), r 0) := by - rw [hr0] - exact hDG - exact hd.comp 0 hgraph + convert! (HasFDerivAt.comp + (g := G) (g' := D) (f := fun w : E d => (w, r w)) + (f' := (ContinuousLinearMap.id ℝ (E d)).prod (fderiv ℝ r 0)) + (0 : E d) + (by + convert! hDG using 1 <;> + first + | rfl + | exact Prod.ext rfl hr0) + (by convert! hgraph using 1 <;> rfl)) using 1 <;> rfl have hid := hchain.unique hzero intro w z have h := congrArg (fun C : E d →L[ℝ] (V →L[ℝ] ℝ) => C w z) hid diff --git a/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_candidate5_source_addendum.md b/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_candidate5_source_addendum.md new file mode 100644 index 000000000..e8d85abf0 --- /dev/null +++ b/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_candidate5_source_addendum.md @@ -0,0 +1,41 @@ +# C299 candidate5 nonauthor source-repair addendum + +Review time: 2026-10-20 15:04:04 UTC. Reviewer: OpenAI Codex `/root/c299_nonauthor_review`, delegated by `/root` for Dylan Roy. Source author: `/root/adapter_feasibility_c292`. Actual nonauthor review, same-provider source exposure, organizational/provider independence credit 0, human review credit 0, scientific effect NONE. + +**Disposition: ACCEPT_SCOPED_SOURCE_REPAIR for the exact candidate5 bytes, limited to the next declared hosted development attempt.** I found no concrete source blocker in this finite repair after reconstructing its equality obligations against the actual prior diagnostic and the pinned tactic implementation. Candidate5 remains entirely uncompiled. This review does not certify that the compiler will discharge all generated instance equalities or that the proof has passed any formal gate. + +Candidate4 is concretely blocked as written by its actual hosted failure. The earlier candidate4 source review remains historical and is not retrospectively rewritten as compilation success. + +## Identities and actual negative evidence + +Fresh native reads establish candidate5 `project/CriticalRidge.lean` at **8966 bytes**, SHA-256 `669b94138531a694f134d24ee9d34ecf6cda5ccec125e2bac279f9e49e1a4aae`. Its separate source-attempt snapshot has the same hash. `execution/author/CANDIDATE5.diff` is 2162 bytes, SHA-256 `df231756fa1c33bacf3745127bcbac0b3fd0aa98e64254519a54af6c02664200`; `CANDIDATE5_FREEZE.json` is 1393 bytes, SHA-256 `cc3eedc74710c0c90e5663fec859640c48b3836bfeaa0514a53a0babc9b4c7de`. Direct frozen-snapshot comparison reproduces the declared change from candidate4 `f3a515bd0a984c8a8affbfc79f4768e7a357b7798eee8990a5a34adbdcf6f0f7`. + +Actual hosted3 ran candidate4 at PR491 head `5e63005bd6d8288695fbbc974e40336dca87e77f`, tested merge `011a9683382b474cfcf0046ebaec365452277654`, run **39443604910**, attempt 1. Root's retained disposition identifies its original artifact as 479747 bytes, SHA-256 `73c7f4a1c1cc83fc74408bc9f885969e9704a7d6c6af32fa6aed071aaddcff5a`. + +I read and hash-checked the complete actual failing phase stdout and receipt: stdout 3405 bytes, SHA-256 `dd5794a1cb3365b1f4a25e170496e0b697b5b45f4f6a8b5cd9350fbde1946351`; receipt SHA-256 `58be4e1e89eb9fce6ac069faade532a6592c9135093a77c463576cbe30f647b1`. The process exited 1 after **17.057773 seconds**, with no outer timeout and empty stderr. It reported the still-invalid direct restriction derivative composition, deterministic typeclass limits at 20000 heartbeats and deterministic `isDefEq`/`whnf` limits at 200000. These compiler-internal failures are not an outer process timeout. Three upstream builds passed; the ridge object is absent and no audit/kernel/negative phases were reached. + +I subsequently read `hosted-development3/DISPOSITION.json`, SHA-256 `5628c92d06eba0868e030c389f4ccecce019d93ac682db45818e9c9a846d5236`. That file was absent during my first preparation read and was available for this final addendum. Original artifact/remote custody remains root's verification; I made no new remote fetch. + +## Source-level reasoning for the changed tactics + +Candidate5 removes both declaration-wide `backward.isDefEq.respectTransparency false` settings and introduces no replacement declaration/global option or increased resource cap. This removes the setting associated with the additional hosted3 typeclass/definitional-equality regression. It does not itself prove that compilation will now stay within limits. + +The derivative proof returns to the bilinear `.clm_comp` expression that actually elaborated in candidate3. That earlier run displayed a remaining equality between the intended derivative and + +`compL (Df at the base point) ∘ 0 + (compL.flip V.subtypeL) ∘ (D²f p ∘ ridgeAddition V)`. + +Candidate5 handles that specific obligation: `ContinuousLinearMap.comp_zero` and `zero_add` remove the first summand; extensionality on the ambient-product direction and `z : V` reduces the second summand to the defining application of `restrictCovector`. I checked the pinned definitions and their reflexive `flip_apply` and `compL_apply` lemmas. Their value-level reduction is the same covector restriction, with no new derivative or Hessian assumption. + +The change from `convert` to `convert!` is also material. I read the actual pinned `Mathlib/Tactic/Convert.lean`: the expensive variant uses default transparency in its post-step and allows congruence between different head constants. It still builds an equality proof and casts with equality; all generated side goals must be discharged. It does not admit equality or bypass kernel checking. The proof now applies its `first` branches to **every** generated goal using `<;>`. Reflexive instance-coherence goals are attempted with `rfl`; the derivative equality receives the zero-composition simplification and extensional reduction above. This directly addresses the extra instance-equality branches and leftover derivative equality seen in candidate3, rather than repeating candidate4's failed direct application. + +For the final graph chain rule, candidate5 explicitly supplies outer function `G`, derivative `D`, graph function `w ↦ (w, r w)` and graph derivative `(id, Dr 0)` to the pinned `HasFDerivAt.comp`. It then converts each premise into the theorem's expected instance types. The only nonreflexive point equality intended there is `(0, r 0) = (0, 0)`, proved by `Prod.ext rfl hr0`; its orientation matches target-to-source conversion. The graph derivative and final function-composition identifications use reflexivity. This is the same chain-rule argument at the same base point, with the instance reconciliation made explicit at the application. + +These source reductions explain why the new terms target the observed failures. Successful elaboration remains an empirical gate: I did not run a goal-state probe, compiler or test, so I cannot certify the precise goals that `convert!` will generate in this concrete environment. Should an unhandled goal or internal limit remain, its actual failure must be retained and this source disposition must not be reported as a repair PASS. + +## Unchanged mathematical and execution boundary + +The frozen diff changes no declaration binder or result type. There remain four definitions and five theorems. No import, axiom, `sorry`, `admit`, unsafe declaration, assumed ridge/chart/inverse, warning suppression or cap increase is introduced. The same literal hypotheses still derive one ridge with all four original conclusions. The explicit IFT eventual-equation proof from candidate4 remains unchanged. + +The prior mathematical review, including the nonorthogonal cross-block, zero-subspace, degenerate restriction and missing-criticality cases, still applies. No broader theorem is asserted. Full module-origin/private/generated census and allowed transitive axioms require actual audit evidence; nine public source declarations do not supply that evidence. + +I performed source/diff/hash/receipt reads and pinned API/tactic source inspection only. I wrote this review file; I did not edit author or support sources, execute Lean/tests/mathematical programs, invoke a workflow/master, or mutate public state. Root owns publication identity checks and the next declared hosted attempt. Final compilation, kernel/census/negative diagnostics, actual negative qualification, final support review, evidence acceptance and custody remain pending. Critical basis, quotient/full LPC, C294 hclosedLPC, bars and scientific promotion remain OPEN. From deccada38a1510fb8330bc205890ba6e98527818 Mon Sep 17 00:00:00 2001 From: Dylan Roy <249851642+d6g8k5htny-coder@users.noreply.github.com> Date: Tue, 20 Oct 2026 10:22:37 -0500 Subject: [PATCH 5/5] C299 candidate6: explicit map extensionality and preserve hosted4 failure evidence AI-authored by OpenAI Codex agents, delegated for Dylan Roy. Nine public types unchanged. Source review only; formal HOLD until actual execution. No human review claim. --- .github/workflows/c299-critical-ridge.yml | 2 +- .../HOSTED_SOURCE_MANIFEST.json | 4 +- .../execution/author/AUTHOR_NOTES.md | 35 + .../execution/author/CANDIDATE6.diff | 24 + .../execution/author/CANDIDATE6_FREEZE.json | 26 + ...821b3af6bdd131740d93bf229354a81e19c38.lean | 212 +++ .../TESTED_BASE_CORRECTION.json | 16 + .../hosted-development4/ARCHIVE_MEMBERS.json | 167 +++ .../hosted-development4/DISPOSITION.json | 96 ++ .../HOSTED_SOURCE_MANIFEST.json | 48 + .../hosted-development4/RESULT.json | 476 +++++++ .../hosted-development4/VERIFICATION.json | 1150 +++++++++++++++++ .../build-CriticalRidge.receipt.json | 63 + .../build-CriticalRidge.stderr | 0 .../build-CriticalRidge.stdout | 27 + .../build-Lifetime.receipt.json | 45 + .../hosted-development4/build-Lifetime.stderr | 0 .../hosted-development4/build-Lifetime.stdout | 0 .../build-MorseFiniteCritical.receipt.json | 63 + .../build-MorseFiniteCritical.stderr | 0 .../build-MorseFiniteCritical.stdout | 0 .../build-TorusTopology.receipt.json | 55 + .../build-TorusTopology.stderr | 0 .../build-TorusTopology.stdout | 0 .../native/c299_dev_artifacts4.json | 32 + .../native/c299_dev_jobs4_final.json | 71 + .../native/c299_dev_logs4.json | 12 + .../native/c299_dev_run4.json | 22 + .../native/c299_downstream4_jobs.json | 199 +++ .../native/c299_tested_merge4.json | 22 + .../runtime-print-prefix.receipt.json | 32 + .../runtime-print-prefix.stderr | 0 .../runtime-print-prefix.stdout | 1 + .../runtime-version.receipt.json | 32 + .../runtime-version.stderr | 0 .../runtime-version.stdout | 1 + .../project/CriticalRidge.lean | 8 +- ...99_nonauthor_candidate6_source_addendum.md | 33 + 38 files changed, 2969 insertions(+), 5 deletions(-) create mode 100644 frontiers/critical_ridge_20261020/execution/author/CANDIDATE6.diff create mode 100644 frontiers/critical_ridge_20261020/execution/author/CANDIDATE6_FREEZE.json create mode 100644 frontiers/critical_ridge_20261020/execution/author/source-attempts/9ff65416927182f6dad06646f04821b3af6bdd131740d93bf229354a81e19c38.lean create mode 100644 frontiers/critical_ridge_20261020/hosted-development3/TESTED_BASE_CORRECTION.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/ARCHIVE_MEMBERS.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/DISPOSITION.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/HOSTED_SOURCE_MANIFEST.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/RESULT.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/VERIFICATION.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/build-CriticalRidge.receipt.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/build-CriticalRidge.stderr create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/build-CriticalRidge.stdout create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/build-Lifetime.receipt.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/build-Lifetime.stderr create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/build-Lifetime.stdout create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/build-MorseFiniteCritical.receipt.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/build-MorseFiniteCritical.stderr create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/build-MorseFiniteCritical.stdout create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/build-TorusTopology.receipt.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/build-TorusTopology.stderr create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/build-TorusTopology.stdout create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/native/c299_dev_artifacts4.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/native/c299_dev_jobs4_final.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/native/c299_dev_logs4.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/native/c299_dev_run4.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/native/c299_downstream4_jobs.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/native/c299_tested_merge4.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/runtime-print-prefix.receipt.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/runtime-print-prefix.stderr create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/runtime-print-prefix.stdout create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/runtime-version.receipt.json create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/runtime-version.stderr create mode 100644 frontiers/critical_ridge_20261020/hosted-development4/runtime-version.stdout create mode 100644 frontiers/critical_ridge_20261020/reviews/c299_nonauthor_candidate6_source_addendum.md diff --git a/.github/workflows/c299-critical-ridge.yml b/.github/workflows/c299-critical-ridge.yml index 86668f030..32a5e01ce 100644 --- a/.github/workflows/c299-critical-ridge.yml +++ b/.github/workflows/c299-critical-ridge.yml @@ -31,7 +31,7 @@ jobs: env: LEAN_NUM_THREADS: '2' # Exact frozen five-module and two-control source manifest. - C299_MANIFEST_SHA256: '6904d83df51715bdf52cbfaa56d3f68725cfed2dcfde66a69799ac5982e55a84' + C299_MANIFEST_SHA256: '13deb8d5c9a2c50ee419c15bcefaabb4855be16cedf060400fbbf5775a616519' steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with: diff --git a/frontiers/critical_ridge_20261020/HOSTED_SOURCE_MANIFEST.json b/frontiers/critical_ridge_20261020/HOSTED_SOURCE_MANIFEST.json index efb872a51..18d257064 100644 --- a/frontiers/critical_ridge_20261020/HOSTED_SOURCE_MANIFEST.json +++ b/frontiers/critical_ridge_20261020/HOSTED_SOURCE_MANIFEST.json @@ -9,8 +9,8 @@ "sha256": "ad204aee211aa3074621f56eeaf8e1a3f3a522b7c7cbe2bbdd67f3759833feb9" }, "project/CriticalRidge.lean": { - "bytes": 8966, - "sha256": "669b94138531a694f134d24ee9d34ecf6cda5ccec125e2bac279f9e49e1a4aae" + "bytes": 9053, + "sha256": "9ff65416927182f6dad06646f04821b3af6bdd131740d93bf229354a81e19c38" }, "project/CriticalRidgeAxiomAudit.lean": { "bytes": 2728, diff --git a/frontiers/critical_ridge_20261020/execution/author/AUTHOR_NOTES.md b/frontiers/critical_ridge_20261020/execution/author/AUTHOR_NOTES.md index 944c1426e..2ff05ba73 100644 --- a/frontiers/critical_ridge_20261020/execution/author/AUTHOR_NOTES.md +++ b/frontiers/critical_ridge_20261020/execution/author/AUTHOR_NOTES.md @@ -240,3 +240,38 @@ external mutation, cap increase, compile PASS or kernel PASS is claimed for this candidate. This is a bounded uncompiled repair; if the separately coordinated hosted attempt still fails, the current formal unit remains HOLD at its actual finite disposition rather than being presented as complete. + + +## Additive fourth hosted failure and candidate 6 + +The author read the full hosted-development4 diagnostic stdout and receipt. +Candidate 5 failed with exit code 1 after 21.013988 seconds, with +no new object or wall-clock timeout. The complete 1601-byte stdout has SHA256 +`1cc98e9540608d20c0f1a9b66a0fdb3fcb4b5910ec671da7b1e8624c508d4d7c`. It reports one remaining derivative +value equality (`case hr`) and two unreachable-tactic warnings promoted to +errors. There is no reported internal typeclass or reduction resource limit +in this attempt. Prior sources and all actual failures remain preserved. + +The remaining `hr` branch is explained by the actual pinned +`ContinuousLinearMap.prod_ext`, registered as an extensionality theorem at +`Topology/Algebra/Module/ContinuousLinearMap/PiProd.lean:342`: product-domain +extensionality generates left and right inclusion cases. The prior sequential +`ext q z; rfl` closed only the first. Candidate 6 instead applies +`ContinuousLinearMap.ext` explicitly twice, first to one actual product +argument and then one covector argument. The resulting value equality reduces +by the definitions of restriction, composition, flip and `compL`; no product +branch is left by the generic extensionality tactic. Actual definitions and +value equations were read in `ContinuousLinearMap/Basic.lean:460-489` and +`Analysis/Normed/Operator/Bilinear.lean:146-160,304-312`. + +The two trailing `<;> rfl` calls at the final graph conversion were removed +exactly where the compiler reported them unreachable. No linter was disabled; +no option, cap, new theorem or new hypothesis was introduced. + +Candidate 6 was frozen at `2026-10-20T15:15:17.859057+00:00`: 9053 bytes, SHA256 +`9ff65416927182f6dad06646f04821b3af6bdd131740d93bf229354a81e19c38`. All nine public declaration-signature texts are exactly unchanged. +Its full diff and actual preceding failure bindings are in +`CANDIDATE6_FREEZE.json`, with a separate immutable source snapshot. This +source-only repair has no compilation or kernel verdict; no native retry or +external write was performed. The authorized final development attempt and +its actual evidence remain Root's responsibility. diff --git a/frontiers/critical_ridge_20261020/execution/author/CANDIDATE6.diff b/frontiers/critical_ridge_20261020/execution/author/CANDIDATE6.diff new file mode 100644 index 000000000..9e216265e --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/author/CANDIDATE6.diff @@ -0,0 +1,24 @@ +--- candidate5/CriticalRidge.lean ++++ candidate6/CriticalRidge.lean +@@ -130,7 +130,11 @@ + first + | rfl + | (simp only [ContinuousLinearMap.comp_zero, zero_add] <;> +- (ext q z; rfl)) ++ (apply ContinuousLinearMap.ext ++ intro q ++ apply ContinuousLinearMap.ext ++ intro z ++ rfl)) + + /-- One actual ridge and all four conclusions for the same chosen function. + The equation is in the actual ambient function and actual subspace. -/ +@@ -199,7 +203,7 @@ + first + | rfl + | exact Prod.ext rfl hr0) +- (by convert! hgraph using 1 <;> rfl)) using 1 <;> rfl ++ (by convert! hgraph using 1)) using 1 + have hid := hchain.unique hzero + intro w z + have h := congrArg (fun C : E d →L[ℝ] (V →L[ℝ] ℝ) => C w z) hid diff --git a/frontiers/critical_ridge_20261020/execution/author/CANDIDATE6_FREEZE.json b/frontiers/critical_ridge_20261020/execution/author/CANDIDATE6_FREEZE.json new file mode 100644 index 000000000..67105d138 --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/author/CANDIDATE6_FREEZE.json @@ -0,0 +1,26 @@ +{ + "schema": "c299-candidate6-freeze-v1", + "created_utc": "2026-10-20T15:15:17.859057+00:00", + "source": "project/CriticalRidge.lean", + "bytes": 9053, + "sha256": "9ff65416927182f6dad06646f04821b3af6bdd131740d93bf229354a81e19c38", + "source_snapshot": "execution/author/source-attempts/9ff65416927182f6dad06646f04821b3af6bdd131740d93bf229354a81e19c38.lean", + "predecessor_sha256": "669b94138531a694f134d24ee9d34ecf6cda5ccec125e2bac279f9e49e1a4aae", + "failure_stdout": "hosted-development4/extracted/build-CriticalRidge.stdout", + "failure_stdout_sha256": "1cc98e9540608d20c0f1a9b66a0fdb3fcb4b5910ec671da7b1e8624c508d4d7c", + "failure_receipt": "hosted-development4/extracted/build-CriticalRidge.receipt.json", + "failure_receipt_sha256": "b9a4454c5356a65f64d129141ddce26a6f8efd6673ef65f53f64592f23276406", + "failure_duration_seconds": 21.013988, + "failure_exit_code": 1, + "failure_timed_out": false, + "diff": "execution/author/CANDIDATE6.diff", + "diff_sha256": "115d82a173293d95d418d2950724775c4a4152c55982c1dcaf32b366ae9732d8", + "public_binder_changes": false, + "public_declaration_count": 9, + "public_signature_text_equality": true, + "candidate6_compilation_performed": false, + "native_retry_performed": false, + "resource_caps_increased": false, + "transparency_options_or_linter_suppression": false, + "scientific_effect": "NONE" +} diff --git a/frontiers/critical_ridge_20261020/execution/author/source-attempts/9ff65416927182f6dad06646f04821b3af6bdd131740d93bf229354a81e19c38.lean b/frontiers/critical_ridge_20261020/execution/author/source-attempts/9ff65416927182f6dad06646f04821b3af6bdd131740d93bf229354a81e19c38.lean new file mode 100644 index 000000000..458917f51 --- /dev/null +++ b/frontiers/critical_ridge_20261020/execution/author/source-attempts/9ff65416927182f6dad06646f04821b3af6bdd131740d93bf229354a81e19c38.lean @@ -0,0 +1,212 @@ +import MorseFiniteCritical +import Mathlib.Analysis.Calculus.ImplicitContDiff + +/-! +# The actual negative partial-gradient ridge + +C299 constructs a local ridge from literal smoothness, criticality and a +negative definite restriction of the literal Hessian. The parameter is ambient +`E d`; it may subsequently be restricted to the supplied positive complement. +No complement is assumed orthogonal. No ridge, inverse certificate, Morse chart, +closed-superlevel local path connectivity or finite event list is an input. + +The construction follows the reviewed direct-ridge paper published at +Math-#487, issuecomment-6292079965. This module covers only its partial-gradient +implicit-function step and differentiated equation. Reduced positivity, +uniform signs, fiber concavity, tubes, paths, the quotient and full LPC remain +separate obligations. +-/ + +noncomputable section + +open Set Topology +open UniversalLaw.Spec.Lifetime TorusMorseFinite + +namespace TorusCriticalRidge + +variable {d : ℕ} + +/-- Restrict an ambient continuous covector to the literal subspace. -/ +def restrictCovector (V : Submodule ℝ (E d)) : + (E d →L[ℝ] ℝ) →L[ℝ] (V →L[ℝ] ℝ) where + toFun ℓ := ℓ.comp V.subtypeL + map_add' ℓ₁ ℓ₂ := by + ext z + rfl + map_smul' c ℓ := by + ext z + rfl + cont := (continuous_id : Continuous (fun ℓ : E d →L[ℝ] ℝ => ℓ)).clm_comp_const + V.subtypeL + +/-- Addition of an ambient parameter and a vector in the negative subspace. -/ +def ridgeAddition (V : Submodule ℝ (E d)) : + (E d × V) →L[ℝ] E d := + ContinuousLinearMap.fst ℝ (E d) V + + V.subtypeL.comp (ContinuousLinearMap.snd ℝ (E d) V) + +/-- The covector-valued partial gradient, with a fixed base point. -/ +def negativePartialGradient (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (q : E d × V) : V →L[ℝ] ℝ := + restrictCovector V (fderiv ℝ f (p + ridgeAddition V q)) + +/-- The actual Hessian restricted to both negative-subspace arguments. -/ +def negativeHessianBlock (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) : V →L[ℝ] (V →L[ℝ] ℝ) := + (restrictCovector V).comp + ((fderiv ℝ (fderiv ℝ f) p).comp V.subtypeL) + +theorem negativeHessianBlock_apply (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (v z : V) : + negativeHessianBlock f p V v z = hessian d f p v z := by + rw [literal_hessian_eq_fderiv] + rfl + +/-- Negative definiteness supplies the exact continuous inverse required by IFT. +This includes the zero subspace, without a unit-sphere argument. -/ +theorem negativeHessianBlock_isInvertible (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) + (hneg : ∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0) : + (negativeHessianBlock f p V).IsInvertible := by + let C := negativeHessianBlock f p V + have hz : ∀ v : V, C v = 0 → v = 0 := by + intro v hv + by_contra hne + have hvne : (v : E d) ≠ 0 := by + intro h + apply hne + exact Subtype.ext h + have hn := hneg v v.property hvne + have he : hessian d f p v v = 0 := by + have h := congrArg (fun k : V →L[ℝ] ℝ => k v) hv + simpa only [C, negativeHessianBlock_apply, zero_apply] using h + linarith + have hC : Function.Injective C := by + intro u v huv + apply sub_eq_zero.mp + apply hz + simp [map_sub, huv] + let J : V ≃L[ℝ] (V →L[ℝ] ℝ) := + (InnerProductSpace.toDual ℝ V).toContinuousLinearEquiv + let A : V →L[ℝ] V := J.symm.toContinuousLinearMap.comp C + have hA : Function.Injective A := J.symm.injective.comp hC + let eA : V ≃L[ℝ] V := + (LinearEquiv.ofInjectiveEndo A.toLinearMap hA).toContinuousLinearEquiv + refine ⟨eA.trans J, ?_⟩ + apply ContinuousLinearMap.ext + intro v + change J (J.symm (C v)) = C v + exact J.apply_symm_apply (C v) + +theorem negativePartialGradient_contDiff (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (hsmooth : IsSmooth d f) : + ContDiff ℝ 2 (negativePartialGradient f p V) := by + have hD : ContDiff ℝ 2 (fderiv ℝ f) := + (contDiff_succ_iff_fderiv.mp (hsmooth 3)).2.2 + change ContDiff ℝ 2 (fun q : E d × V => + (fderiv ℝ f (p + ridgeAddition V q)).comp V.subtypeL) + exact (hD.comp (contDiff_const.add (ridgeAddition V).contDiff)).clm_comp + contDiff_const + +theorem negativePartialGradient_hasFDerivAt (f : E d → ℝ) (p : E d) + (V : Submodule ℝ (E d)) (hsmooth : IsSmooth d f) : + HasFDerivAt (negativePartialGradient f p V) + ((restrictCovector V).comp + ((fderiv ℝ (fderiv ℝ f) p).comp (ridgeAddition V))) + (0 : E d × V) := by + have hD : ContDiff ℝ 1 (fderiv ℝ f) := + (contDiff_succ_iff_fderiv.mp (hsmooth 2)).2.2 + have hDp := (hD.differentiable (by norm_num) p).hasFDerivAt + have hadd : HasFDerivAt (fun q : E d × V => p + ridgeAddition V q) + (ridgeAddition V) 0 := by + simpa using ((ridgeAddition V).hasFDerivAt.const_add p) + have hDp' : HasFDerivAt (fderiv ℝ f) (fderiv ℝ (fderiv ℝ f) p) + (p + ridgeAddition V (0 : E d × V)) := by + simpa only [map_zero, add_zero] using hDp + have hcomp := hDp'.comp (0 : E d × V) hadd + change HasFDerivAt (fun q : E d × V => + (fderiv ℝ f (p + ridgeAddition V q)).comp V.subtypeL) _ _ + convert! hcomp.clm_comp (hasFDerivAt_const V.subtypeL (0 : E d × V)) using 1 <;> + first + | rfl + | (simp only [ContinuousLinearMap.comp_zero, zero_add] <;> + (apply ContinuousLinearMap.ext + intro q + apply ContinuousLinearMap.ext + intro z + rfl)) + +/-- One actual ridge and all four conclusions for the same chosen function. +The equation is in the actual ambient function and actual subspace. -/ +theorem exists_negative_partial_gradient_ridge + (f : E d → ℝ) (p : E d) (V : Submodule ℝ (E d)) + (hsmooth : IsSmooth d f) (hcritical : IsCriticalPoint d f p) + (hneg : ∀ v ∈ V, v ≠ 0 → hessian d f p v v < 0) : + ∃ r : E d → V, + r 0 = 0 ∧ + ContDiffAt ℝ 2 r 0 ∧ + (∀ᶠ w in 𝓝 (0 : E d), ∀ z : V, + fderiv ℝ f (p + w + (r w : E d)) z = 0) ∧ + (∀ (w : E d) (z : V), + hessian d f p (w + (fderiv ℝ r 0 w : E d)) z = 0) := by + let G := negativePartialGradient f p V + let D := (restrictCovector V).comp + ((fderiv ℝ (fderiv ℝ f) p).comp (ridgeAddition V)) + have hG : ContDiffAt ℝ 2 G (0 : E d × V) := + (negativePartialGradient_contDiff f p V hsmooth).contDiffAt + have hDG : HasFDerivAt G D (0 : E d × V) := + negativePartialGradient_hasFDerivAt f p V hsmooth + have hblock : fderiv ℝ G (0 : E d × V) ∘L + ContinuousLinearMap.inr ℝ (E d) V = negativeHessianBlock f p V := by + rw [hDG.fderiv] + ext v z + simp [D, negativeHessianBlock, ridgeAddition, restrictCovector] + have hinv : (fderiv ℝ G (0 : E d × V) ∘L + ContinuousLinearMap.inr ℝ (E d) V).IsInvertible := by + rw [hblock] + exact negativeHessianBlock_isInvertible f p V hneg + let r : E d → V := hG.implicitFunction (by norm_num) hinv + have hr0 : r 0 = 0 := hG.implicitFunction_apply_self (by norm_num) hinv + have hrC : ContDiffAt ℝ 2 r 0 := + hG.contDiffAt_implicitFunction (by norm_num) hinv + have hG0 : G (0 : E d × V) = 0 := by + ext z + simp [G, negativePartialGradient, ridgeAddition, restrictCovector, + show fderiv ℝ f p = 0 from hcritical] + have heq : (fun w => G (w, r w)) =ᶠ[𝓝 (0 : E d)] + (fun _ => (0 : V →L[ℝ] ℝ)) := by + have h := hG.eventually_apply_implicitFunction (by norm_num) hinv + change ∀ᶠ w in 𝓝 (0 : E d), G (w, r w) = G (0 : E d × V) at h + change ∀ᶠ w in 𝓝 (0 : E d), G (w, r w) = 0 + exact h.mono fun _ hw => hw.trans hG0 + refine ⟨r, hr0, hrC, ?_, ?_⟩ + · filter_upwards [heq] with w hw + intro z + have hz := congrArg (fun k : V →L[ℝ] ℝ => k z) hw + simpa [G, negativePartialGradient, ridgeAddition, restrictCovector, add_assoc] using hz + · have hdr : HasFDerivAt r (fderiv ℝ r 0) 0 := + (hrC.differentiableAt (by norm_num)).hasFDerivAt + have hgraph : HasFDerivAt (fun w : E d => (w, r w)) + ((ContinuousLinearMap.id ℝ (E d)).prod (fderiv ℝ r 0)) 0 := + (hasFDerivAt_id (0 : E d)).prodMk hdr + have hzero : HasFDerivAt (fun w : E d => G (w, r w)) + (0 : E d →L[ℝ] (V →L[ℝ] ℝ)) 0 := + (hasFDerivAt_const (0 : V →L[ℝ] ℝ) (0 : E d)).congr_of_eventuallyEq heq + have hchain : HasFDerivAt (fun w : E d => G (w, r w)) + (D.comp ((ContinuousLinearMap.id ℝ (E d)).prod (fderiv ℝ r 0))) 0 := by + convert! (HasFDerivAt.comp + (g := G) (g' := D) (f := fun w : E d => (w, r w)) + (f' := (ContinuousLinearMap.id ℝ (E d)).prod (fderiv ℝ r 0)) + (0 : E d) + (by + convert! hDG using 1 <;> + first + | rfl + | exact Prod.ext rfl hr0) + (by convert! hgraph using 1)) using 1 + have hid := hchain.unique hzero + intro w z + have h := congrArg (fun C : E d →L[ℝ] (V →L[ℝ] ℝ) => C w z) hid + simpa [D, restrictCovector, ridgeAddition, literal_hessian_eq_fderiv] using h + +end TorusCriticalRidge diff --git a/frontiers/critical_ridge_20261020/hosted-development3/TESTED_BASE_CORRECTION.json b/frontiers/critical_ridge_20261020/hosted-development3/TESTED_BASE_CORRECTION.json new file mode 100644 index 000000000..d98b7c534 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development3/TESTED_BASE_CORRECTION.json @@ -0,0 +1,16 @@ +{ + "time": "2026-10-20T15:07:56.498927+00:00", + "scope": "additive correction to hosted3 root attribution; historical files/comments preserved", + "head": "5e63005bd6d8288695fbbc974e40336dca87e77f", + "head_tree": "b2c081da3914ec070fbeeb2e83109672e3b5757c", + "recorded_event_base": "8c226134ac0a0169dbb43311082e5353ed5c922c", + "tested_commit": "011a9683382b474cfcf0046ebaec365452277654", + "tested_tree": "53a29f7806cb06bd3f4971b13d574697d4e2cf40", + "actual_tested_parents": [ + "dcf7d555b0311e5c10529b5160490c6b61f27833", + "5e63005bd6d8288695fbbc974e40336dca87e77f" + ], + "source": "native/c299_tested_merge3.json and hosted-development3/extracted/RESULT.json", + "withdrawal": "Any implication in root6293943199 or DISPOSITION.tree that the publication tree equals the tested merge tree is withdrawn. tree in old disposition is the head tree. Event base is not actual tested base. Root originally saved full native commit but did not inspect these fields before drafting that statement; engineering author detected distinction, root now confirmed.", + "effect": "No successful formal/master claim; actual failing ridge source and artifact identities unchanged. Final success would require one coherent actual event/tested-base binding or explicit unmet gate, never silently normalizing these values." +} diff --git a/frontiers/critical_ridge_20261020/hosted-development4/ARCHIVE_MEMBERS.json b/frontiers/critical_ridge_20261020/hosted-development4/ARCHIVE_MEMBERS.json new file mode 100644 index 000000000..bd8420338 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development4/ARCHIVE_MEMBERS.json @@ -0,0 +1,167 @@ +[ + { + "path": "HOSTED_SOURCE_MANIFEST.json", + "bytes": 1731, + "sha256": "6904d83df51715bdf52cbfaa56d3f68725cfed2dcfde66a69799ac5982e55a84" + }, + { + "path": "RESULT.json", + "bytes": 34425, + "sha256": "8c5e26142ef8d5ad5e25af5bb8629e32f03c093138620109b5ee20d8154070a4" + }, + { + "path": "build-CriticalRidge.receipt.json", + "bytes": 4332, + "sha256": "b9a4454c5356a65f64d129141ddce26a6f8efd6673ef65f53f64592f23276406" + }, + { + "path": "build-CriticalRidge.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-CriticalRidge.stdout", + "bytes": 1601, + "sha256": "1cc98e9540608d20c0f1a9b66a0fdb3fcb4b5910ec671da7b1e8624c508d4d7c" + }, + { + "path": "build-Lifetime.receipt.json", + "bytes": 3639, + "sha256": "2c929ab07246f08894b0e3f2cf061e22329e2a37c9fa15656bc7b148d174afcd" + }, + { + "path": "build-Lifetime.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-Lifetime.stdout", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-MorseFiniteCritical.receipt.json", + "bytes": 4272, + "sha256": "2f875235306d7a317f21042c2b14db1c3b7b8cd0b6647c8a0a6d3a1cff80a604" + }, + { + "path": "build-MorseFiniteCritical.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-MorseFiniteCritical.stdout", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-TorusTopology.receipt.json", + "bytes": 3964, + "sha256": "910ec7c5a332ac4d708b3b1a078fdaae1c74492fccc030a9db2832ef616190e3" + }, + { + "path": "build-TorusTopology.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-TorusTopology.stdout", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "objects/Lifetime.olean", + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + { + "path": "objects/MorseFiniteCritical.olean", + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + { + "path": "objects/TorusTopology.olean", + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + }, + { + "path": "runtime-print-prefix.receipt.json", + "bytes": 3160, + "sha256": "d0a4e49961d42a54043891139e0c26e210d1edc9a3836bb23896991fab681fe0" + }, + { + "path": "runtime-print-prefix.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "runtime-version.receipt.json", + "bytes": 3151, + "sha256": "86da0fba247a0c1664b05ec5558282a26f8a41e4d1dbfd5513669798af9bd790" + }, + { + "path": "runtime-print-prefix.stdout", + "bytes": 58, + "sha256": "e0e72101499ee5e5a1967519d9955a093a555b85d5073da4bdba8bdd4cb12617" + }, + { + "path": "runtime-version.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "runtime-version.stdout", + "bytes": 106, + "sha256": "355a9a028f81641782d75d6e6b58dec70f29d2f61238a9e271690259d9bf5680" + }, + { + "path": "source-snapshot/negative-project/WithoutCriticality.lean", + "bytes": 944, + "sha256": "6ebc44de843b951c312add4848962d76c4788cc10bdacf17002eb69fd370f1d2" + }, + { + "path": "source-snapshot/negative-project/WithoutNegativeDefiniteness.lean", + "bytes": 872, + "sha256": "ad204aee211aa3074621f56eeaf8e1a3f3a522b7c7cbe2bbdd67f3759833feb9" + }, + { + "path": "source-snapshot/project/CriticalRidge.lean", + "bytes": 8966, + "sha256": "669b94138531a694f134d24ee9d34ecf6cda5ccec125e2bac279f9e49e1a4aae" + }, + { + "path": "source-snapshot/project/CriticalRidgeAxiomAudit.lean", + "bytes": 2728, + "sha256": "cff55f5b7721a621530ae1020b81e6cc89ce5c405396145e1ca5d3cfba4b2fb7" + }, + { + "path": "source-snapshot/project/Lifetime.lean", + "bytes": 51383, + "sha256": "90f4892608e953ecc696bb32ea159d1c178ceb8a1c6edfd11acfceb14af462c6" + }, + { + "path": "source-snapshot/project/MorseFiniteCritical.lean", + "bytes": 9445, + "sha256": "95a660134eda49eecfe6181884bd23b4e4ca210e228d2463de29e5f821df047b" + }, + { + "path": "source-snapshot/project/TorusTopology.lean", + "bytes": 12257, + "sha256": "ddb145b3f791c181d4f2a51e54e711937297bd6476ba55bcd5252b7ddb57cfe1" + }, + { + "path": "source-snapshot/repository/.github/workflows/c299-critical-ridge.yml", + "bytes": 3030, + "sha256": "ff3ce59c3678e6270116dd7a818a6c3e6529005ac28430af473532cf4e39f046" + }, + { + "path": "source-snapshot/repository/frontiers/critical_ridge_20261020/c299_hosted_verify.py", + "bytes": 32069, + "sha256": "e4c5b9dd02e2ba2f98da27707c42ef861d9039b52864833d2164a3114f318f49" + }, + { + "path": "source-snapshot/repository/frontiers/critical_ridge_20261020/test_c299_hosted_verify.py", + "bytes": 17863, + "sha256": "62400129fda7b863d692397deac2a9d83b7f1101d98b53ed1043f0ef8cfd604e" + } +] diff --git a/frontiers/critical_ridge_20261020/hosted-development4/DISPOSITION.json b/frontiers/critical_ridge_20261020/hosted-development4/DISPOSITION.json new file mode 100644 index 000000000..d88fd5381 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development4/DISPOSITION.json @@ -0,0 +1,96 @@ +{ + "schema_version": 1, + "checkpoint_utc": "2026-10-20T15:21:31.008805+00:00", + "actual_executor": "OpenAI Codex /root/c297_hosted_verifier, delegated for Dylan Roy; native Python byte/record audit only", + "exposure": "C299 engineering author and prior failure evidence exposure; no source-author or independent-provider credit", + "human_review_credit": 0, + "organizational_independence_credit": 0, + "scientific_effect": "NONE", + "formal_status": "HOLD_NOT_COMPLETED", + "result": "HOLD_NOT_COMPLETED", + "head": "3111e77c882b4e441b3b4c5ed6f01da46cf8e34c", + "head_tree": "13365ac225eff028c2937459f01e3c4dcda9cab8", + "recorded_event_base": "8c226134ac0a0169dbb43311082e5353ed5c922c", + "tested_commit": "d93ff50e029d0c6edb3f94f1889fcd991b85721b", + "tested_tree": "568d2fb36e8098ae437a1616b21f5644f4eb3343", + "tested_base": "5e20834d7daccb8d6bf8b89036e8eb9eb98a1452", + "actual_tested_parents": [ + "5e20834d7daccb8d6bf8b89036e8eb9eb98a1452", + "3111e77c882b4e441b3b4c5ed6f01da46cf8e34c" + ], + "shallow_reported_parents": [], + "run": 39445649166, + "attempt": 1, + "job": 118706708545, + "artifact": 12276641293, + "artifact_bytes": 479791, + "artifact_sha256": "48d0b2d8e894e64df5af2be860d82cee8965e41aef33bf7f7c405bcd69e330a0", + "candidate_identity": { + "bytes": 8966, + "sha256": "669b94138531a694f134d24ee9d34ecf6cda5ccec125e2bac279f9e49e1a4aae" + }, + "phase_results": [ + { + "name": "runtime-print-prefix", + "status": "PASS", + "exit_code": 0, + "timed_out": false, + "duration_seconds": 0.064259 + }, + { + "name": "runtime-version", + "status": "PASS", + "exit_code": 0, + "timed_out": false, + "duration_seconds": 0.064045 + }, + { + "name": "build-Lifetime", + "status": "PASS", + "exit_code": 0, + "timed_out": false, + "duration_seconds": 5.628061 + }, + { + "name": "build-TorusTopology", + "status": "PASS", + "exit_code": 0, + "timed_out": false, + "duration_seconds": 5.077087 + }, + { + "name": "build-MorseFiniteCritical", + "status": "PASS", + "exit_code": 0, + "timed_out": false, + "duration_seconds": 8.036327 + }, + { + "name": "build-CriticalRidge", + "status": "FAIL", + "exit_code": 1, + "timed_out": false, + "duration_seconds": 21.013988 + } + ], + "diagnostic": { + "path": "hosted-development4/extracted/build-CriticalRidge.stdout", + "bytes": 1601, + "sha256": "1cc98e9540608d20c0f1a9b66a0fdb3fcb4b5910ec671da7b1e8624c508d4d7c" + }, + "actual_failure": "Candidate5 failed with an unsolved coherent-instance restriction-map equality at line116 and warnings-as-errors for two unreachable tactics at line202. Exit1 after21.013988 seconds; no outer timeout. Three upstream objects built and preserved; ridge object absent.", + "unreached": [ + "build-CriticalRidgeAxiomAudit", + "four named-module kernel checks", + "four-module axiom census", + "WithoutCriticality", + "WithoutNegativeDefiniteness" + ], + "next_action": "Source owner candidate6 changed-source repair and separately authorized bounded hosted attempt; no same-input retry or resource-cap increase. If it fails, close a verified failure-evidence handoff with formal status HOLD.", + "verification": { + "path": "hosted-development4/VERIFICATION.json", + "bytes": 34599, + "sha256": "2cd86d6b02067a92e786832be458db4d1ecea9db15a50230fc727477386caa98" + }, + "limits": "No formal acceptance, theorem completion, current-main freshness, merge readiness, new remote observation, or custody completion. Git author metadata is not human-review evidence." +} diff --git a/frontiers/critical_ridge_20261020/hosted-development4/HOSTED_SOURCE_MANIFEST.json b/frontiers/critical_ridge_20261020/hosted-development4/HOSTED_SOURCE_MANIFEST.json new file mode 100644 index 000000000..efb872a51 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development4/HOSTED_SOURCE_MANIFEST.json @@ -0,0 +1,48 @@ +{ + "files": { + "negative-project/WithoutCriticality.lean": { + "bytes": 944, + "sha256": "6ebc44de843b951c312add4848962d76c4788cc10bdacf17002eb69fd370f1d2" + }, + "negative-project/WithoutNegativeDefiniteness.lean": { + "bytes": 872, + "sha256": "ad204aee211aa3074621f56eeaf8e1a3f3a522b7c7cbe2bbdd67f3759833feb9" + }, + "project/CriticalRidge.lean": { + "bytes": 8966, + "sha256": "669b94138531a694f134d24ee9d34ecf6cda5ccec125e2bac279f9e49e1a4aae" + }, + "project/CriticalRidgeAxiomAudit.lean": { + "bytes": 2728, + "sha256": "cff55f5b7721a621530ae1020b81e6cc89ce5c405396145e1ca5d3cfba4b2fb7" + }, + "project/Lifetime.lean": { + "bytes": 51383, + "sha256": "90f4892608e953ecc696bb32ea159d1c178ceb8a1c6edfd11acfceb14af462c6" + }, + "project/MorseFiniteCritical.lean": { + "bytes": 9445, + "sha256": "95a660134eda49eecfe6181884bd23b4e4ca210e228d2463de29e5f821df047b" + }, + "project/TorusTopology.lean": { + "bytes": 12257, + "sha256": "ddb145b3f791c181d4f2a51e54e711937297bd6476ba55bcd5252b7ddb57cfe1" + } + }, + "schema_version": 1, + "scientific_effect": "NONE", + "source_origins": { + "Lifetime": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/Lifetime.lean" + }, + "MorseFiniteCritical": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/MorseFiniteCritical.lean" + }, + "TorusTopology": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/TorusTopology.lean" + } + } +} diff --git a/frontiers/critical_ridge_20261020/hosted-development4/RESULT.json b/frontiers/critical_ridge_20261020/hosted-development4/RESULT.json new file mode 100644 index 000000000..c73f35d90 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development4/RESULT.json @@ -0,0 +1,476 @@ +{ + "context": { + "executor": "GitHub-hosted runner executing C299 verification code", + "github_event_name": "pull_request", + "github_job": "c299-hosted-formal", + "github_repository": "d6g8k5htny-coder/Math-", + "github_run_attempt": "1", + "github_run_id": "39445649166", + "github_sha": "d93ff50e029d0c6edb3f94f1889fcd991b85721b", + "github_workflow": "C299 critical ridge (hosted Lean, no scientific promotion)", + "human_review_credit": 0, + "pull_request": { + "base_sha": "8c226134ac0a0169dbb43311082e5353ed5c922c", + "head_sha": "3111e77c882b4e441b3b4c5ed6f01da46cf8e34c", + "number": 491 + }, + "tested_commit": "d93ff50e029d0c6edb3f94f1889fcd991b85721b", + "tested_parents": [], + "tested_tree": "568d2fb36e8098ae437a1616b21f5644f4eb3343" + }, + "environment_contract": { + "policy": "Remove inherited LEAN*, LAKE*, LD_* and DYLD_* overrides, except the Lake-provided LEAN_PATH; prepend the fresh local object directory to that path and set LEAN_NUM_THREADS=2. Retain declared PATH for launcher lookup. Other inherited variables remain available but are not recorded. Record only selected non-secret path/thread values and removed variable names.", + "removed_variable_names": [ + "LAKE", + "LAKE_ARTIFACT_CACHE", + "LAKE_CACHE_DIR", + "LAKE_CONFIG", + "LAKE_HOME", + "LAKE_NO_CACHE", + "LAKE_PKG_URL_MAP", + "LAKE_RESTORE_ARTIFACTS", + "LD_LIBRARY_PATH", + "LEAN", + "LEAN_AR", + "LEAN_GITHASH", + "LEAN_NUM_THREADS", + "LEAN_RECURSION_COUNT", + "LEAN_SRC_PATH", + "LEAN_SYSROOT" + ], + "retained_lake_lean_path": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461" + }, + "failure": "RuntimeError('C299 build-CriticalRidge unexpected exit: 1; timed_out=False; spawn_error=None; object_error=build must add only its own target object outputs; environment_error=None')", + "lean_launcher": { + "bytes": 9024, + "path": "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "sha256": "e8baaa71855a616dc351028f3ad2200051b0671f423a1696a100e809302d5550" + }, + "lean_version_output": "Lean (version 4.34.1, x86_64-unknown-linux-gnu, commit 5045d0056413266e57c625dcd7c365b10e377c52, Release)\n\n", + "machine": { + "machine": "x86_64", + "platform": "Linux-6.17.0-1022-azure-x86_64-with-glibc2.39", + "python": "3.12.3" + }, + "memory_limit": "-M14000", + "memory_limit_reason": "Explicit Linux execution budget; not a claim that C299 requires this amount.", + "packages_before": { + "Cli": "e92c9f15fdfacc8536f31cfb3b7ad26c3c8cd204", + "LeanSearchClient": "ddf04cf3949fa556442341e87d47f9f6e6074707", + "Qq": "6a489d9af5d0c47e5b259e2e8bcdfc1811b5a259", + "aesop": "355695d523e41d0554926416cba2a2b3544fbbc9", + "batteries": "f2effa3d803fda822b1f97b806c47cf2adfbcbc2", + "importGraph": "e928b72544873815af278d38681b31c0293588e3", + "mathlib": "d13f23b723b8a846827a245b89c10fc7d3f11612", + "plausible": "118aa17ee84656b8bd727fef7c458ee8c833385c", + "proofwidgets": "106ff4fafc74ef4ac99d81dbf3ab399118f497a5" + }, + "phase_results": [ + { + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "--print-prefix" + ], + "cwd": "/home/runner/work/Math-/Math-/formal", + "duration_seconds": 0.064259, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T15:10:12.312091+00:00", + "name": "runtime-print-prefix", + "object_validation_error": null, + "objects_after": null, + "objects_before": null, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T15:10:12.247852+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 58, + "stdout_sha256": "e0e72101499ee5e5a1967519d9955a093a555b85d5073da4bdba8bdd4cb12617", + "timed_out": false, + "timeout_seconds": 30, + "unexpected_override_names": [] + }, + { + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "--version" + ], + "cwd": "/home/runner/work/Math-/Math-/formal", + "duration_seconds": 0.064045, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T15:10:12.379353+00:00", + "name": "runtime-version", + "object_validation_error": null, + "objects_after": null, + "objects_before": null, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T15:10:12.315326+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 106, + "stdout_sha256": "355a9a028f81641782d75d6e6b58dec70f29d2f61238a9e271690259d9bf5680", + "timed_out": false, + "timeout_seconds": 30, + "unexpected_override_names": [] + }, + { + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/Lifetime.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/Lifetime.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 5.628061, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T15:10:18.008445+00:00", + "name": "build-Lifetime", + "object": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "object_validation_error": null, + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + } + }, + "objects_before": {}, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T15:10:12.380401+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] + }, + { + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-DwarningAsError=true", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/TorusTopology.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/TorusTopology.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 5.077087, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T15:10:23.093258+00:00", + "name": "build-TorusTopology", + "object": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + }, + "object_validation_error": null, + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "objects_before": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + } + }, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T15:10:18.016186+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] + }, + { + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-DwarningAsError=true", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/MorseFiniteCritical.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/MorseFiniteCritical.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 8.036327, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T15:10:31.134719+00:00", + "name": "build-MorseFiniteCritical", + "object": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "object_validation_error": null, + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "MorseFiniteCritical.olean": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "objects_before": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T15:10:23.098407+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] + }, + { + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-DwarningAsError=true", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/CriticalRidge.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 21.013988, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 1, + "finished_at": "2026-10-20T15:10:52.153799+00:00", + "name": "build-CriticalRidge", + "object_validation_error": "build must add only its own target object outputs", + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "MorseFiniteCritical.olean": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "objects_before": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "MorseFiniteCritical.olean": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T15:10:31.139826+00:00", + "status": "FAIL", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 1601, + "stdout_sha256": "1cc98e9540608d20c0f1a9b66a0fdb3fcb4b5910ec671da7b1e8624c508d4d7c", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] + } + ], + "phase_timeout_seconds": 900, + "replay_limit": "Not a --fresh replay or rebuild of the full dependency closure.", + "runtimes": { + "lean": { + "bytes": 9024, + "path": "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "sha256": "e8baaa71855a616dc351028f3ad2200051b0671f423a1696a100e809302d5550" + }, + "leanchecker": { + "bytes": 51080, + "path": "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/leanchecker", + "sha256": "ccef1bfe9bfeecea65137d94a69033c1a89f360711f50fa3178e7ba3e696fcbe" + } + }, + "scientific_effect": "NONE", + "source_identity": { + "dependency_pins": { + "Cli": "e92c9f15fdfacc8536f31cfb3b7ad26c3c8cd204", + "LeanSearchClient": "ddf04cf3949fa556442341e87d47f9f6e6074707", + "Qq": "6a489d9af5d0c47e5b259e2e8bcdfc1811b5a259", + "aesop": "355695d523e41d0554926416cba2a2b3544fbbc9", + "batteries": "f2effa3d803fda822b1f97b806c47cf2adfbcbc2", + "importGraph": "e928b72544873815af278d38681b31c0293588e3", + "mathlib": "d13f23b723b8a846827a245b89c10fc7d3f11612", + "plausible": "118aa17ee84656b8bd727fef7c458ee8c833385c", + "proofwidgets": "106ff4fafc74ef4ac99d81dbf3ab399118f497a5" + }, + "files": { + "negative-project/WithoutCriticality.lean": { + "bytes": 944, + "sha256": "6ebc44de843b951c312add4848962d76c4788cc10bdacf17002eb69fd370f1d2" + }, + "negative-project/WithoutNegativeDefiniteness.lean": { + "bytes": 872, + "sha256": "ad204aee211aa3074621f56eeaf8e1a3f3a522b7c7cbe2bbdd67f3759833feb9" + }, + "project/CriticalRidge.lean": { + "bytes": 8966, + "sha256": "669b94138531a694f134d24ee9d34ecf6cda5ccec125e2bac279f9e49e1a4aae" + }, + "project/CriticalRidgeAxiomAudit.lean": { + "bytes": 2728, + "sha256": "cff55f5b7721a621530ae1020b81e6cc89ce5c405396145e1ca5d3cfba4b2fb7" + }, + "project/Lifetime.lean": { + "bytes": 51383, + "sha256": "90f4892608e953ecc696bb32ea159d1c178ceb8a1c6edfd11acfceb14af462c6" + }, + "project/MorseFiniteCritical.lean": { + "bytes": 9445, + "sha256": "95a660134eda49eecfe6181884bd23b4e4ca210e228d2463de29e5f821df047b" + }, + "project/TorusTopology.lean": { + "bytes": 12257, + "sha256": "ddb145b3f791c181d4f2a51e54e711937297bd6476ba55bcd5252b7ddb57cfe1" + } + }, + "formal_config": { + "formal/lake-manifest.json": { + "bytes": 3553, + "sha256": "d63753befccc21923783a5085148e3ff028d97134ea52f5a08bd87ecf1b0b043" + }, + "formal/lakefile.toml": { + "bytes": 274, + "sha256": "d629891716c169404d1f0d76492441c8dd66f1e790b1b8b0819e51c8d5059255" + }, + "formal/lean-toolchain": { + "bytes": 25, + "sha256": "d5edba4e4b8faad9c1baeadb265716d20d03be4d1a2647dc5e35b0c0325bea7b" + } + }, + "manifest": { + "bytes": 1731, + "sha256": "6904d83df51715bdf52cbfaa56d3f68725cfed2dcfde66a69799ac5982e55a84" + }, + "source_origin_limit": "Remote origin byte equality is a separate owner custody check.", + "source_origins": { + "Lifetime": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/Lifetime.lean" + }, + "MorseFiniteCritical": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/MorseFiniteCritical.lean" + }, + "TorusTopology": { + "commit": "7af365e8c8db1ae0275d4efe08a70a678f153ca2", + "path": "frontiers/critical_level_attainment_20261020/final-project/TorusTopology.lean" + } + }, + "support_files": { + ".github/workflows/c299-critical-ridge.yml": { + "bytes": 3030, + "sha256": "ff3ce59c3678e6270116dd7a818a6c3e6529005ac28430af473532cf4e39f046" + }, + "frontiers/critical_ridge_20261020/c299_hosted_verify.py": { + "bytes": 32069, + "sha256": "e4c5b9dd02e2ba2f98da27707c42ef861d9039b52864833d2164a3114f318f49" + }, + "frontiers/critical_ridge_20261020/test_c299_hosted_verify.py": { + "bytes": 17863, + "sha256": "62400129fda7b863d692397deac2a9d83b7f1101d98b53ed1043f0ef8cfd604e" + } + } + }, + "started_at": "2026-10-20T15:08:26.740233+00:00", + "started_execution_at": "2026-10-20T15:10:11.972872+00:00", + "status": "HOLD_NOT_COMPLETED", + "threads": 2, + "verification_scope": "Five fresh local objects; four standard named-module kernel replays; full four-module axiom census; two omitted-premise interface controls." +} diff --git a/frontiers/critical_ridge_20261020/hosted-development4/VERIFICATION.json b/frontiers/critical_ridge_20261020/hosted-development4/VERIFICATION.json new file mode 100644 index 000000000..a42231f9b --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development4/VERIFICATION.json @@ -0,0 +1,1150 @@ +{ + "schema_version": 1, + "checkpoint_utc": "2026-10-20T15:21:31.008805+00:00", + "actual_executor": "OpenAI Codex /root/c297_hosted_verifier, delegated for Dylan Roy; native Python byte/record audit only", + "exposure": "C299 engineering author and prior failure evidence exposure; no source-author or independent-provider credit", + "human_review_credit": 0, + "organizational_independence_credit": 0, + "scientific_effect": "NONE", + "formal_status": "HOLD_NOT_COMPLETED", + "status": "VERIFIED_FAILED_EXECUTION_RECORDS", + "started_at": "2026-10-20T15:21:30.993807+00:00", + "scope": "Original hosted ZIP versus every extracted file, all six aggregate/individual receipts, twelve stream identities, retained object chain, source/support snapshots, and stored native run/artifact/merge identities. Not final formal acceptance, new Lean execution, remote refresh, tested-tree source-closure audit, or Drive custody.", + "archive": { + "path": "hosted-development4/artifact.zip", + "bytes": 479791, + "sha256": "48d0b2d8e894e64df5af2be860d82cee8965e41aef33bf7f7c405bcd69e330a0" + }, + "extracted_files": 33, + "receipts": 6, + "streams": 12, + "checks_passed": 175, + "checks": [ + { + "check": "exclusive new DISPOSITION.json", + "pass": true + }, + { + "check": "exclusive new VERIFICATION.json", + "pass": true + }, + { + "check": "unique archive names", + "pass": true + }, + { + "check": "safe regular member HOSTED_SOURCE_MANIFEST.json", + "pass": true + }, + { + "check": "ZIP/extracted exact HOSTED_SOURCE_MANIFEST.json", + "pass": true + }, + { + "check": "safe regular member RESULT.json", + "pass": true + }, + { + "check": "ZIP/extracted exact RESULT.json", + "pass": true + }, + { + "check": "safe regular member build-CriticalRidge.receipt.json", + "pass": true + }, + { + "check": "ZIP/extracted exact build-CriticalRidge.receipt.json", + "pass": true + }, + { + "check": "safe regular member build-CriticalRidge.stderr", + "pass": true + }, + { + "check": "ZIP/extracted exact build-CriticalRidge.stderr", + "pass": true + }, + { + "check": "safe regular member build-CriticalRidge.stdout", + "pass": true + }, + { + "check": "ZIP/extracted exact build-CriticalRidge.stdout", + "pass": true + }, + { + "check": "safe regular member build-Lifetime.receipt.json", + "pass": true + }, + { + "check": "ZIP/extracted exact build-Lifetime.receipt.json", + "pass": true + }, + { + "check": "safe regular member build-Lifetime.stderr", + "pass": true + }, + { + "check": "ZIP/extracted exact build-Lifetime.stderr", + "pass": true + }, + { + "check": "safe regular member build-Lifetime.stdout", + "pass": true + }, + { + "check": "ZIP/extracted exact build-Lifetime.stdout", + "pass": true + }, + { + "check": "safe regular member build-MorseFiniteCritical.receipt.json", + "pass": true + }, + { + "check": "ZIP/extracted exact build-MorseFiniteCritical.receipt.json", + "pass": true + }, + { + "check": "safe regular member build-MorseFiniteCritical.stderr", + "pass": true + }, + { + "check": "ZIP/extracted exact build-MorseFiniteCritical.stderr", + "pass": true + }, + { + "check": "safe regular member build-MorseFiniteCritical.stdout", + "pass": true + }, + { + "check": "ZIP/extracted exact build-MorseFiniteCritical.stdout", + "pass": true + }, + { + "check": "safe regular member build-TorusTopology.receipt.json", + "pass": true + }, + { + "check": "ZIP/extracted exact build-TorusTopology.receipt.json", + "pass": true + }, + { + "check": "safe regular member build-TorusTopology.stderr", + "pass": true + }, + { + "check": "ZIP/extracted exact build-TorusTopology.stderr", + "pass": true + }, + { + "check": "safe regular member build-TorusTopology.stdout", + "pass": true + }, + { + "check": "ZIP/extracted exact build-TorusTopology.stdout", + "pass": true + }, + { + "check": "safe regular member objects/Lifetime.olean", + "pass": true + }, + { + "check": "ZIP/extracted exact objects/Lifetime.olean", + "pass": true + }, + { + "check": "safe regular member objects/MorseFiniteCritical.olean", + "pass": true + }, + { + "check": "ZIP/extracted exact objects/MorseFiniteCritical.olean", + "pass": true + }, + { + "check": "safe regular member objects/TorusTopology.olean", + "pass": true + }, + { + "check": "ZIP/extracted exact objects/TorusTopology.olean", + "pass": true + }, + { + "check": "safe regular member runtime-print-prefix.receipt.json", + "pass": true + }, + { + "check": "ZIP/extracted exact runtime-print-prefix.receipt.json", + "pass": true + }, + { + "check": "safe regular member runtime-print-prefix.stderr", + "pass": true + }, + { + "check": "ZIP/extracted exact runtime-print-prefix.stderr", + "pass": true + }, + { + "check": "safe regular member runtime-version.receipt.json", + "pass": true + }, + { + "check": "ZIP/extracted exact runtime-version.receipt.json", + "pass": true + }, + { + "check": "safe regular member runtime-print-prefix.stdout", + "pass": true + }, + { + "check": "ZIP/extracted exact runtime-print-prefix.stdout", + "pass": true + }, + { + "check": "safe regular member runtime-version.stderr", + "pass": true + }, + { + "check": "ZIP/extracted exact runtime-version.stderr", + "pass": true + }, + { + "check": "safe regular member runtime-version.stdout", + "pass": true + }, + { + "check": "ZIP/extracted exact runtime-version.stdout", + "pass": true + }, + { + "check": "safe regular member source-snapshot/negative-project/WithoutCriticality.lean", + "pass": true + }, + { + "check": "ZIP/extracted exact source-snapshot/negative-project/WithoutCriticality.lean", + "pass": true + }, + { + "check": "safe regular member source-snapshot/negative-project/WithoutNegativeDefiniteness.lean", + "pass": true + }, + { + "check": "ZIP/extracted exact source-snapshot/negative-project/WithoutNegativeDefiniteness.lean", + "pass": true + }, + { + "check": "safe regular member source-snapshot/project/CriticalRidge.lean", + "pass": true + }, + { + "check": "ZIP/extracted exact source-snapshot/project/CriticalRidge.lean", + "pass": true + }, + { + "check": "safe regular member source-snapshot/project/CriticalRidgeAxiomAudit.lean", + "pass": true + }, + { + "check": "ZIP/extracted exact source-snapshot/project/CriticalRidgeAxiomAudit.lean", + "pass": true + }, + { + "check": "safe regular member source-snapshot/project/Lifetime.lean", + "pass": true + }, + { + "check": "ZIP/extracted exact source-snapshot/project/Lifetime.lean", + "pass": true + }, + { + "check": "safe regular member source-snapshot/project/MorseFiniteCritical.lean", + "pass": true + }, + { + "check": "ZIP/extracted exact source-snapshot/project/MorseFiniteCritical.lean", + "pass": true + }, + { + "check": "safe regular member source-snapshot/project/TorusTopology.lean", + "pass": true + }, + { + "check": "ZIP/extracted exact source-snapshot/project/TorusTopology.lean", + "pass": true + }, + { + "check": "safe regular member source-snapshot/repository/.github/workflows/c299-critical-ridge.yml", + "pass": true + }, + { + "check": "ZIP/extracted exact source-snapshot/repository/.github/workflows/c299-critical-ridge.yml", + "pass": true + }, + { + "check": "safe regular member source-snapshot/repository/frontiers/critical_ridge_20261020/c299_hosted_verify.py", + "pass": true + }, + { + "check": "ZIP/extracted exact source-snapshot/repository/frontiers/critical_ridge_20261020/c299_hosted_verify.py", + "pass": true + }, + { + "check": "safe regular member source-snapshot/repository/frontiers/critical_ridge_20261020/test_c299_hosted_verify.py", + "pass": true + }, + { + "check": "ZIP/extracted exact source-snapshot/repository/frontiers/critical_ridge_20261020/test_c299_hosted_verify.py", + "pass": true + }, + { + "check": "all 33 extracted files exact", + "pass": true + }, + { + "check": "exact observed six-phase prefix", + "pass": true + }, + { + "check": "aggregate formal HOLD", + "pass": true + }, + { + "check": "aggregate/individual receipt runtime-print-prefix", + "pass": true + }, + { + "check": "stream runtime-print-prefix.stdout", + "pass": true + }, + { + "check": "stream runtime-print-prefix.stderr", + "pass": true + }, + { + "check": "actual phase result runtime-print-prefix", + "pass": true + }, + { + "check": "environment record runtime-print-prefix", + "pass": true + }, + { + "check": "runtime no object claim runtime-print-prefix", + "pass": true + }, + { + "check": "aggregate/individual receipt runtime-version", + "pass": true + }, + { + "check": "stream runtime-version.stdout", + "pass": true + }, + { + "check": "stream runtime-version.stderr", + "pass": true + }, + { + "check": "actual phase result runtime-version", + "pass": true + }, + { + "check": "environment record runtime-version", + "pass": true + }, + { + "check": "runtime no object claim runtime-version", + "pass": true + }, + { + "check": "aggregate/individual receipt build-Lifetime", + "pass": true + }, + { + "check": "stream build-Lifetime.stdout", + "pass": true + }, + { + "check": "stream build-Lifetime.stderr", + "pass": true + }, + { + "check": "actual phase result build-Lifetime", + "pass": true + }, + { + "check": "environment record build-Lifetime", + "pass": true + }, + { + "check": "object continuity build-Lifetime", + "pass": true + }, + { + "check": "one fresh expected object build-Lifetime", + "pass": true + }, + { + "check": "produced object record build-Lifetime", + "pass": true + }, + { + "check": "aggregate/individual receipt build-TorusTopology", + "pass": true + }, + { + "check": "stream build-TorusTopology.stdout", + "pass": true + }, + { + "check": "stream build-TorusTopology.stderr", + "pass": true + }, + { + "check": "actual phase result build-TorusTopology", + "pass": true + }, + { + "check": "environment record build-TorusTopology", + "pass": true + }, + { + "check": "object continuity build-TorusTopology", + "pass": true + }, + { + "check": "one fresh expected object build-TorusTopology", + "pass": true + }, + { + "check": "produced object record build-TorusTopology", + "pass": true + }, + { + "check": "aggregate/individual receipt build-MorseFiniteCritical", + "pass": true + }, + { + "check": "stream build-MorseFiniteCritical.stdout", + "pass": true + }, + { + "check": "stream build-MorseFiniteCritical.stderr", + "pass": true + }, + { + "check": "actual phase result build-MorseFiniteCritical", + "pass": true + }, + { + "check": "environment record build-MorseFiniteCritical", + "pass": true + }, + { + "check": "object continuity build-MorseFiniteCritical", + "pass": true + }, + { + "check": "one fresh expected object build-MorseFiniteCritical", + "pass": true + }, + { + "check": "produced object record build-MorseFiniteCritical", + "pass": true + }, + { + "check": "aggregate/individual receipt build-CriticalRidge", + "pass": true + }, + { + "check": "stream build-CriticalRidge.stdout", + "pass": true + }, + { + "check": "stream build-CriticalRidge.stderr", + "pass": true + }, + { + "check": "actual phase result build-CriticalRidge", + "pass": true + }, + { + "check": "environment record build-CriticalRidge", + "pass": true + }, + { + "check": "object continuity build-CriticalRidge", + "pass": true + }, + { + "check": "failed ridge preserves objects", + "pass": true + }, + { + "check": "exact three retained objects", + "pass": true + }, + { + "check": "object bytes Lifetime.olean", + "pass": true + }, + { + "check": "object bytes MorseFiniteCritical.olean", + "pass": true + }, + { + "check": "object bytes TorusTopology.olean", + "pass": true + }, + { + "check": "manifest record", + "pass": true + }, + { + "check": "source snapshot negative-project/WithoutCriticality.lean", + "pass": true + }, + { + "check": "source snapshot negative-project/WithoutNegativeDefiniteness.lean", + "pass": true + }, + { + "check": "source snapshot project/CriticalRidge.lean", + "pass": true + }, + { + "check": "source snapshot project/CriticalRidgeAxiomAudit.lean", + "pass": true + }, + { + "check": "source snapshot project/Lifetime.lean", + "pass": true + }, + { + "check": "source snapshot project/MorseFiniteCritical.lean", + "pass": true + }, + { + "check": "source snapshot project/TorusTopology.lean", + "pass": true + }, + { + "check": "support snapshot .github/workflows/c299-critical-ridge.yml", + "pass": true + }, + { + "check": "support snapshot frontiers/critical_ridge_20261020/c299_hosted_verify.py", + "pass": true + }, + { + "check": "support snapshot frontiers/critical_ridge_20261020/test_c299_hosted_verify.py", + "pass": true + }, + { + "check": "run/head binding", + "pass": true + }, + { + "check": "job failure bound", + "pass": true + }, + { + "check": "artifact native digest and attempt", + "pass": true + }, + { + "check": "actual tested merge tree/ordered parents", + "pass": true + }, + { + "check": "separate recorded event base", + "pass": true + }, + { + "check": "head tree distinct from tested tree", + "pass": true + }, + { + "check": "stable input hosted-development4/artifact.zip", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/HOSTED_SOURCE_MANIFEST.json", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/RESULT.json", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/build-CriticalRidge.receipt.json", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/build-CriticalRidge.stderr", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/build-CriticalRidge.stdout", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/build-Lifetime.receipt.json", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/build-Lifetime.stderr", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/build-Lifetime.stdout", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/build-MorseFiniteCritical.receipt.json", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/build-MorseFiniteCritical.stderr", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/build-MorseFiniteCritical.stdout", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/build-TorusTopology.receipt.json", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/build-TorusTopology.stderr", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/build-TorusTopology.stdout", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/objects/Lifetime.olean", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/objects/MorseFiniteCritical.olean", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/objects/TorusTopology.olean", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/runtime-print-prefix.receipt.json", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/runtime-print-prefix.stderr", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/runtime-version.receipt.json", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/runtime-print-prefix.stdout", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/runtime-version.stderr", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/runtime-version.stdout", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/source-snapshot/negative-project/WithoutCriticality.lean", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/source-snapshot/negative-project/WithoutNegativeDefiniteness.lean", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/source-snapshot/project/CriticalRidge.lean", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/source-snapshot/project/CriticalRidgeAxiomAudit.lean", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/source-snapshot/project/Lifetime.lean", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/source-snapshot/project/MorseFiniteCritical.lean", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/source-snapshot/project/TorusTopology.lean", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/source-snapshot/repository/.github/workflows/c299-critical-ridge.yml", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/source-snapshot/repository/frontiers/critical_ridge_20261020/c299_hosted_verify.py", + "pass": true + }, + { + "check": "stable input hosted-development4/extracted/source-snapshot/repository/frontiers/critical_ridge_20261020/test_c299_hosted_verify.py", + "pass": true + }, + { + "check": "stable input native/c299_dev_run4.json", + "pass": true + }, + { + "check": "stable input native/c299_dev_jobs4_final.json", + "pass": true + }, + { + "check": "stable input native/c299_dev_artifacts4.json", + "pass": true + }, + { + "check": "stable input native/c299_tested_merge4.json", + "pass": true + }, + { + "check": "stable input closing/TREE4_BYTE_EQUALITY.json", + "pass": true + } + ], + "inputs": [ + { + "path": "closing/TREE4_BYTE_EQUALITY.json", + "bytes": 252, + "sha256": "5b8f3b748dedd6afcd8e9de298d1f74ec22c52df0335a8d61555a4f7be91b514" + }, + { + "path": "hosted-development4/artifact.zip", + "bytes": 479791, + "sha256": "48d0b2d8e894e64df5af2be860d82cee8965e41aef33bf7f7c405bcd69e330a0" + }, + { + "path": "hosted-development4/extracted/HOSTED_SOURCE_MANIFEST.json", + "bytes": 1731, + "sha256": "6904d83df51715bdf52cbfaa56d3f68725cfed2dcfde66a69799ac5982e55a84" + }, + { + "path": "hosted-development4/extracted/RESULT.json", + "bytes": 34425, + "sha256": "8c5e26142ef8d5ad5e25af5bb8629e32f03c093138620109b5ee20d8154070a4" + }, + { + "path": "hosted-development4/extracted/build-CriticalRidge.receipt.json", + "bytes": 4332, + "sha256": "b9a4454c5356a65f64d129141ddce26a6f8efd6673ef65f53f64592f23276406" + }, + { + "path": "hosted-development4/extracted/build-CriticalRidge.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "hosted-development4/extracted/build-CriticalRidge.stdout", + "bytes": 1601, + "sha256": "1cc98e9540608d20c0f1a9b66a0fdb3fcb4b5910ec671da7b1e8624c508d4d7c" + }, + { + "path": "hosted-development4/extracted/build-Lifetime.receipt.json", + "bytes": 3639, + "sha256": "2c929ab07246f08894b0e3f2cf061e22329e2a37c9fa15656bc7b148d174afcd" + }, + { + "path": "hosted-development4/extracted/build-Lifetime.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "hosted-development4/extracted/build-Lifetime.stdout", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "hosted-development4/extracted/build-MorseFiniteCritical.receipt.json", + "bytes": 4272, + "sha256": "2f875235306d7a317f21042c2b14db1c3b7b8cd0b6647c8a0a6d3a1cff80a604" + }, + { + "path": "hosted-development4/extracted/build-MorseFiniteCritical.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "hosted-development4/extracted/build-MorseFiniteCritical.stdout", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "hosted-development4/extracted/build-TorusTopology.receipt.json", + "bytes": 3964, + "sha256": "910ec7c5a332ac4d708b3b1a078fdaae1c74492fccc030a9db2832ef616190e3" + }, + { + "path": "hosted-development4/extracted/build-TorusTopology.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "hosted-development4/extracted/build-TorusTopology.stdout", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "hosted-development4/extracted/objects/Lifetime.olean", + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + { + "path": "hosted-development4/extracted/objects/MorseFiniteCritical.olean", + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + { + "path": "hosted-development4/extracted/objects/TorusTopology.olean", + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + }, + { + "path": "hosted-development4/extracted/runtime-print-prefix.receipt.json", + "bytes": 3160, + "sha256": "d0a4e49961d42a54043891139e0c26e210d1edc9a3836bb23896991fab681fe0" + }, + { + "path": "hosted-development4/extracted/runtime-print-prefix.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "hosted-development4/extracted/runtime-print-prefix.stdout", + "bytes": 58, + "sha256": "e0e72101499ee5e5a1967519d9955a093a555b85d5073da4bdba8bdd4cb12617" + }, + { + "path": "hosted-development4/extracted/runtime-version.receipt.json", + "bytes": 3151, + "sha256": "86da0fba247a0c1664b05ec5558282a26f8a41e4d1dbfd5513669798af9bd790" + }, + { + "path": "hosted-development4/extracted/runtime-version.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "hosted-development4/extracted/runtime-version.stdout", + "bytes": 106, + "sha256": "355a9a028f81641782d75d6e6b58dec70f29d2f61238a9e271690259d9bf5680" + }, + { + "path": "hosted-development4/extracted/source-snapshot/negative-project/WithoutCriticality.lean", + "bytes": 944, + "sha256": "6ebc44de843b951c312add4848962d76c4788cc10bdacf17002eb69fd370f1d2" + }, + { + "path": "hosted-development4/extracted/source-snapshot/negative-project/WithoutNegativeDefiniteness.lean", + "bytes": 872, + "sha256": "ad204aee211aa3074621f56eeaf8e1a3f3a522b7c7cbe2bbdd67f3759833feb9" + }, + { + "path": "hosted-development4/extracted/source-snapshot/project/CriticalRidge.lean", + "bytes": 8966, + "sha256": "669b94138531a694f134d24ee9d34ecf6cda5ccec125e2bac279f9e49e1a4aae" + }, + { + "path": "hosted-development4/extracted/source-snapshot/project/CriticalRidgeAxiomAudit.lean", + "bytes": 2728, + "sha256": "cff55f5b7721a621530ae1020b81e6cc89ce5c405396145e1ca5d3cfba4b2fb7" + }, + { + "path": "hosted-development4/extracted/source-snapshot/project/Lifetime.lean", + "bytes": 51383, + "sha256": "90f4892608e953ecc696bb32ea159d1c178ceb8a1c6edfd11acfceb14af462c6" + }, + { + "path": "hosted-development4/extracted/source-snapshot/project/MorseFiniteCritical.lean", + "bytes": 9445, + "sha256": "95a660134eda49eecfe6181884bd23b4e4ca210e228d2463de29e5f821df047b" + }, + { + "path": "hosted-development4/extracted/source-snapshot/project/TorusTopology.lean", + "bytes": 12257, + "sha256": "ddb145b3f791c181d4f2a51e54e711937297bd6476ba55bcd5252b7ddb57cfe1" + }, + { + "path": "hosted-development4/extracted/source-snapshot/repository/.github/workflows/c299-critical-ridge.yml", + "bytes": 3030, + "sha256": "ff3ce59c3678e6270116dd7a818a6c3e6529005ac28430af473532cf4e39f046" + }, + { + "path": "hosted-development4/extracted/source-snapshot/repository/frontiers/critical_ridge_20261020/c299_hosted_verify.py", + "bytes": 32069, + "sha256": "e4c5b9dd02e2ba2f98da27707c42ef861d9039b52864833d2164a3114f318f49" + }, + { + "path": "hosted-development4/extracted/source-snapshot/repository/frontiers/critical_ridge_20261020/test_c299_hosted_verify.py", + "bytes": 17863, + "sha256": "62400129fda7b863d692397deac2a9d83b7f1101d98b53ed1043f0ef8cfd604e" + }, + { + "path": "native/c299_dev_artifacts4.json", + "bytes": 1041, + "sha256": "81e49e39ba707200f065b9097de9ecc27ad4e55b6dee962edf67dd01f8471472" + }, + { + "path": "native/c299_dev_jobs4_final.json", + "bytes": 1970, + "sha256": "6cd5cf29498eb35f3282d4db63b98b1f1ffbf54cdb8b977a109d5180a538e1c4" + }, + { + "path": "native/c299_dev_run4.json", + "bytes": 29921, + "sha256": "78df6115cb21d94ae3f3bae6f4c5fb73924bd3be2fe2af3f41615e4c7358bbdf" + }, + { + "path": "native/c299_tested_merge4.json", + "bytes": 6444, + "sha256": "a1ae9eb011c88fbde181a1db1a0154084a1c39586becaff4301da586ea29df79" + } + ], + "members": [ + { + "path": "HOSTED_SOURCE_MANIFEST.json", + "bytes": 1731, + "sha256": "6904d83df51715bdf52cbfaa56d3f68725cfed2dcfde66a69799ac5982e55a84" + }, + { + "path": "RESULT.json", + "bytes": 34425, + "sha256": "8c5e26142ef8d5ad5e25af5bb8629e32f03c093138620109b5ee20d8154070a4" + }, + { + "path": "build-CriticalRidge.receipt.json", + "bytes": 4332, + "sha256": "b9a4454c5356a65f64d129141ddce26a6f8efd6673ef65f53f64592f23276406" + }, + { + "path": "build-CriticalRidge.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-CriticalRidge.stdout", + "bytes": 1601, + "sha256": "1cc98e9540608d20c0f1a9b66a0fdb3fcb4b5910ec671da7b1e8624c508d4d7c" + }, + { + "path": "build-Lifetime.receipt.json", + "bytes": 3639, + "sha256": "2c929ab07246f08894b0e3f2cf061e22329e2a37c9fa15656bc7b148d174afcd" + }, + { + "path": "build-Lifetime.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-Lifetime.stdout", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-MorseFiniteCritical.receipt.json", + "bytes": 4272, + "sha256": "2f875235306d7a317f21042c2b14db1c3b7b8cd0b6647c8a0a6d3a1cff80a604" + }, + { + "path": "build-MorseFiniteCritical.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-MorseFiniteCritical.stdout", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-TorusTopology.receipt.json", + "bytes": 3964, + "sha256": "910ec7c5a332ac4d708b3b1a078fdaae1c74492fccc030a9db2832ef616190e3" + }, + { + "path": "build-TorusTopology.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-TorusTopology.stdout", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "objects/Lifetime.olean", + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + { + "path": "objects/MorseFiniteCritical.olean", + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + { + "path": "objects/TorusTopology.olean", + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + }, + { + "path": "runtime-print-prefix.receipt.json", + "bytes": 3160, + "sha256": "d0a4e49961d42a54043891139e0c26e210d1edc9a3836bb23896991fab681fe0" + }, + { + "path": "runtime-print-prefix.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "runtime-print-prefix.stdout", + "bytes": 58, + "sha256": "e0e72101499ee5e5a1967519d9955a093a555b85d5073da4bdba8bdd4cb12617" + }, + { + "path": "runtime-version.receipt.json", + "bytes": 3151, + "sha256": "86da0fba247a0c1664b05ec5558282a26f8a41e4d1dbfd5513669798af9bd790" + }, + { + "path": "runtime-version.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "runtime-version.stdout", + "bytes": 106, + "sha256": "355a9a028f81641782d75d6e6b58dec70f29d2f61238a9e271690259d9bf5680" + }, + { + "path": "source-snapshot/negative-project/WithoutCriticality.lean", + "bytes": 944, + "sha256": "6ebc44de843b951c312add4848962d76c4788cc10bdacf17002eb69fd370f1d2" + }, + { + "path": "source-snapshot/negative-project/WithoutNegativeDefiniteness.lean", + "bytes": 872, + "sha256": "ad204aee211aa3074621f56eeaf8e1a3f3a522b7c7cbe2bbdd67f3759833feb9" + }, + { + "path": "source-snapshot/project/CriticalRidge.lean", + "bytes": 8966, + "sha256": "669b94138531a694f134d24ee9d34ecf6cda5ccec125e2bac279f9e49e1a4aae" + }, + { + "path": "source-snapshot/project/CriticalRidgeAxiomAudit.lean", + "bytes": 2728, + "sha256": "cff55f5b7721a621530ae1020b81e6cc89ce5c405396145e1ca5d3cfba4b2fb7" + }, + { + "path": "source-snapshot/project/Lifetime.lean", + "bytes": 51383, + "sha256": "90f4892608e953ecc696bb32ea159d1c178ceb8a1c6edfd11acfceb14af462c6" + }, + { + "path": "source-snapshot/project/MorseFiniteCritical.lean", + "bytes": 9445, + "sha256": "95a660134eda49eecfe6181884bd23b4e4ca210e228d2463de29e5f821df047b" + }, + { + "path": "source-snapshot/project/TorusTopology.lean", + "bytes": 12257, + "sha256": "ddb145b3f791c181d4f2a51e54e711937297bd6476ba55bcd5252b7ddb57cfe1" + }, + { + "path": "source-snapshot/repository/.github/workflows/c299-critical-ridge.yml", + "bytes": 3030, + "sha256": "ff3ce59c3678e6270116dd7a818a6c3e6529005ac28430af473532cf4e39f046" + }, + { + "path": "source-snapshot/repository/frontiers/critical_ridge_20261020/c299_hosted_verify.py", + "bytes": 32069, + "sha256": "e4c5b9dd02e2ba2f98da27707c42ef861d9039b52864833d2164a3114f318f49" + }, + { + "path": "source-snapshot/repository/frontiers/critical_ridge_20261020/test_c299_hosted_verify.py", + "bytes": 17863, + "sha256": "62400129fda7b863d692397deac2a9d83b7f1101d98b53ed1043f0ef8cfd604e" + } + ], + "stream_identities": [ + { + "path": "runtime-print-prefix.stdout", + "bytes": 58, + "sha256": "e0e72101499ee5e5a1967519d9955a093a555b85d5073da4bdba8bdd4cb12617" + }, + { + "path": "runtime-print-prefix.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "runtime-version.stdout", + "bytes": 106, + "sha256": "355a9a028f81641782d75d6e6b58dec70f29d2f61238a9e271690259d9bf5680" + }, + { + "path": "runtime-version.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-Lifetime.stdout", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-Lifetime.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-TorusTopology.stdout", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-TorusTopology.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-MorseFiniteCritical.stdout", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-MorseFiniteCritical.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "build-CriticalRidge.stdout", + "bytes": 1601, + "sha256": "1cc98e9540608d20c0f1a9b66a0fdb3fcb4b5910ec671da7b1e8624c508d4d7c" + }, + { + "path": "build-CriticalRidge.stderr", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + ] +} diff --git a/frontiers/critical_ridge_20261020/hosted-development4/build-CriticalRidge.receipt.json b/frontiers/critical_ridge_20261020/hosted-development4/build-CriticalRidge.receipt.json new file mode 100644 index 000000000..c81763e4f --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development4/build-CriticalRidge.receipt.json @@ -0,0 +1,63 @@ +{ + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-DwarningAsError=true", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/CriticalRidge.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 21.013988, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 1, + "finished_at": "2026-10-20T15:10:52.153799+00:00", + "name": "build-CriticalRidge", + "object_validation_error": "build must add only its own target object outputs", + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "MorseFiniteCritical.olean": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "objects_before": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "MorseFiniteCritical.olean": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T15:10:31.139826+00:00", + "status": "FAIL", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 1601, + "stdout_sha256": "1cc98e9540608d20c0f1a9b66a0fdb3fcb4b5910ec671da7b1e8624c508d4d7c", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] +} diff --git a/frontiers/critical_ridge_20261020/hosted-development4/build-CriticalRidge.stderr b/frontiers/critical_ridge_20261020/hosted-development4/build-CriticalRidge.stderr new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development4/build-CriticalRidge.stdout b/frontiers/critical_ridge_20261020/hosted-development4/build-CriticalRidge.stdout new file mode 100644 index 000000000..ffda0ee85 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development4/build-CriticalRidge.stdout @@ -0,0 +1,27 @@ +/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean:116:23: error: unsolved goals +case hr +d : ℕ +f : E d → ℝ +p : E d +V : Submodule ℝ (E d) +hsmooth : IsSmooth d f +hD : ContDiff ℝ 1 (fderiv ℝ f) +hDp : HasFDerivAt (fderiv ℝ f) (fderiv ℝ (fderiv ℝ f) p) p +hadd : HasFDerivAt (fun q => p + (ridgeAddition V) q) (ridgeAddition V) 0 +hDp' : HasFDerivAt (fderiv ℝ f) (fderiv ℝ (fderiv ℝ f) p) (p + (ridgeAddition V) 0) +hcomp : HasFDerivAt (fderiv ℝ f ∘ fun q => p + (ridgeAddition V) q) (fderiv ℝ (fderiv ℝ f) p ∘SL ridgeAddition V) 0 +e_4✝ : Prod.instAddCommGroup = Prod.normedAddCommGroup.toAddCommGroup +he✝ : Prod.instModule = Prod.normedSpace.toModule +e_6✝ : instTopologicalSpaceProd = PseudoMetricSpace.toUniformSpace.toTopologicalSpace +q z : ↥V +⊢ (((restrictCovector V ∘SL fderiv ℝ (fderiv ℝ f) p ∘SL ridgeAddition V) ∘SL ContinuousLinearMap.inr ℝ (E d) ↥V) q) z = + ((((ContinuousLinearMap.compL ℝ (↥V) (E d) ℝ).flip V.subtypeL ∘SL fderiv ℝ (fderiv ℝ f) p ∘SL ridgeAddition V) ∘SL + ContinuousLinearMap.inr ℝ (E d) ↥V) + q) + z +/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean:202:40: error: this tactic is never executed + +Note: This linter can be disabled with `set_option linter.unreachableTactic false` +/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/CriticalRidge.lean:202:58: error: this tactic is never executed + +Note: This linter can be disabled with `set_option linter.unreachableTactic false` diff --git a/frontiers/critical_ridge_20261020/hosted-development4/build-Lifetime.receipt.json b/frontiers/critical_ridge_20261020/hosted-development4/build-Lifetime.receipt.json new file mode 100644 index 000000000..782057fe1 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development4/build-Lifetime.receipt.json @@ -0,0 +1,45 @@ +{ + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/Lifetime.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/Lifetime.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 5.628061, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T15:10:18.008445+00:00", + "name": "build-Lifetime", + "object": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "object_validation_error": null, + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + } + }, + "objects_before": {}, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T15:10:12.380401+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] +} diff --git a/frontiers/critical_ridge_20261020/hosted-development4/build-Lifetime.stderr b/frontiers/critical_ridge_20261020/hosted-development4/build-Lifetime.stderr new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development4/build-Lifetime.stdout b/frontiers/critical_ridge_20261020/hosted-development4/build-Lifetime.stdout new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development4/build-MorseFiniteCritical.receipt.json b/frontiers/critical_ridge_20261020/hosted-development4/build-MorseFiniteCritical.receipt.json new file mode 100644 index 000000000..5529e46e7 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development4/build-MorseFiniteCritical.receipt.json @@ -0,0 +1,63 @@ +{ + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-DwarningAsError=true", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/MorseFiniteCritical.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/MorseFiniteCritical.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 8.036327, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T15:10:31.134719+00:00", + "name": "build-MorseFiniteCritical", + "object": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "object_validation_error": null, + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "MorseFiniteCritical.olean": { + "bytes": 493256, + "sha256": "34ff2a9ed529609dd48a22204b8eacc66eeb943805e2d6e8dee4481cde8ef4e2" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "objects_before": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T15:10:23.098407+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] +} diff --git a/frontiers/critical_ridge_20261020/hosted-development4/build-MorseFiniteCritical.stderr b/frontiers/critical_ridge_20261020/hosted-development4/build-MorseFiniteCritical.stderr new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development4/build-MorseFiniteCritical.stdout b/frontiers/critical_ridge_20261020/hosted-development4/build-MorseFiniteCritical.stdout new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development4/build-TorusTopology.receipt.json b/frontiers/critical_ridge_20261020/hosted-development4/build-TorusTopology.receipt.json new file mode 100644 index 000000000..b442bdfeb --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development4/build-TorusTopology.receipt.json @@ -0,0 +1,55 @@ +{ + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "-j2", + "-M14000", + "-DwarningAsError=true", + "-o", + "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects/TorusTopology.olean", + "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project/TorusTopology.lean" + ], + "cwd": "/home/runner/work/Math-/Math-/frontiers/critical_ridge_20261020/project", + "duration_seconds": 5.077087, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T15:10:23.093258+00:00", + "name": "build-TorusTopology", + "object": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + }, + "object_validation_error": null, + "objects_after": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + }, + "TorusTopology.olean": { + "bytes": 307176, + "sha256": "ccb13e9469d55da8b5202706a1f013fa7a2755b2184542b8a0534f722d993125" + } + }, + "objects_before": { + "Lifetime.olean": { + "bytes": 472528, + "sha256": "b3e14c2951b452222ca0c7b1448458cf785225971da704e4e3e6f0cc93107da4" + } + }, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T15:10:18.016186+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "timed_out": false, + "timeout_seconds": 900, + "unexpected_override_names": [] +} diff --git a/frontiers/critical_ridge_20261020/hosted-development4/build-TorusTopology.stderr b/frontiers/critical_ridge_20261020/hosted-development4/build-TorusTopology.stderr new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development4/build-TorusTopology.stdout b/frontiers/critical_ridge_20261020/hosted-development4/build-TorusTopology.stdout new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development4/native/c299_dev_artifacts4.json b/frontiers/critical_ridge_20261020/hosted-development4/native/c299_dev_artifacts4.json new file mode 100644 index 000000000..f4767acbe --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development4/native/c299_dev_artifacts4.json @@ -0,0 +1,32 @@ +{ + "content": [ + { + "type": "text", + "text": "Action completed." + } + ], + "structuredContent": { + "artifacts": [ + { + "id": 12276641293, + "name": "c299-hosted-39445649166-1", + "size_in_bytes": 479791, + "url": "https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/artifacts/12276641293", + "archive_download_url": "https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/artifacts/12276641293/zip", + "expired": false, + "created_at": "2026-10-20T15:10:53Z", + "expires_at": "2027-01-18T15:08:20Z", + "updated_at": "2026-10-20T15:10:53Z", + "digest": "sha256:48d0b2d8e894e64df5af2be860d82cee8965e41aef33bf7f7c405bcd69e330a0", + "workflow_run": { + "id": 39445649166, + "repository_id": 1385716596, + "head_repository_id": 1385716596, + "head_branch": "codex/c299-critical-ridge-20261020", + "head_sha": "3111e77c882b4e441b3b4c5ed6f01da46cf8e34c" + } + } + ] + }, + "isError": false +} diff --git a/frontiers/critical_ridge_20261020/hosted-development4/native/c299_dev_jobs4_final.json b/frontiers/critical_ridge_20261020/hosted-development4/native/c299_dev_jobs4_final.json new file mode 100644 index 000000000..32d3de452 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development4/native/c299_dev_jobs4_final.json @@ -0,0 +1,71 @@ +{ + "content": [ + { + "type": "text", + "text": "Action completed." + } + ], + "structuredContent": { + "jobs": [ + { + "id": 118706708545, + "name": "c299-hosted-formal", + "status": "completed", + "conclusion": "failure", + "run_id": 39445649166, + "logs_url": null, + "steps": [ + { + "name": "Set up job", + "status": "completed", + "conclusion": "success", + "number": 1 + }, + { + "name": "Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1", + "status": "completed", + "conclusion": "success", + "number": 2 + }, + { + "name": "Bind frozen source manifest and verify engineering failure controls", + "status": "completed", + "conclusion": "success", + "number": 3 + }, + { + "name": "Install pinned Lean and retrieve dependency cache", + "status": "completed", + "conclusion": "success", + "number": 4 + }, + { + "name": "Fresh five-module build, four kernel checks, complete audit and two controls", + "status": "completed", + "conclusion": "failure", + "number": 5 + }, + { + "name": "Retain exact C299 tested-run sources, objects, streams and failure receipts", + "status": "completed", + "conclusion": "success", + "number": 6 + }, + { + "name": "Post Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1", + "status": "completed", + "conclusion": "success", + "number": 12 + }, + { + "name": "Complete job", + "status": "completed", + "conclusion": "success", + "number": 13 + } + ] + } + ] + }, + "isError": false +} diff --git a/frontiers/critical_ridge_20261020/hosted-development4/native/c299_dev_logs4.json b/frontiers/critical_ridge_20261020/hosted-development4/native/c299_dev_logs4.json new file mode 100644 index 000000000..85a58fe79 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development4/native/c299_dev_logs4.json @@ -0,0 +1,12 @@ +{ + "content": [ + { + "type": "text", + "text": "Action completed." + } + ], + "structuredContent": { + "content": "2026-10-20T15:08:23.4513458Z Current runner version: '2.337.0'\n2026-10-20T15:08:23.4546807Z ##[group]Runner Image Provisioner\n2026-10-20T15:08:23.4548431Z Hosted Compute Agent\n2026-10-20T15:08:23.4549407Z Version: 20261012.601\n2026-10-20T15:08:23.4550675Z Commit: f3dc54e1fb89da6852db922499a0233137369e1d\n2026-10-20T15:08:23.4551921Z Build Date: 2026-10-12T17:48:21Z\n2026-10-20T15:08:23.4553255Z Worker ID: {363d9c53-3114-40f3-b80e-e7380e963731}\n2026-10-20T15:08:23.4554448Z Region: eastus\n2026-10-20T15:08:23.4555303Z Cloud: Azure\n2026-10-20T15:08:23.4556377Z ##[endgroup]\n2026-10-20T15:08:23.4558796Z ##[group]Operating System\n2026-10-20T15:08:23.4560085Z Ubuntu\n2026-10-20T15:08:23.4560955Z 24.04.5\n2026-10-20T15:08:23.4561735Z LTS\n2026-10-20T15:08:23.4562729Z ##[endgroup]\n2026-10-20T15:08:23.4563721Z ##[group]Runner Image\n2026-10-20T15:08:23.4564896Z Image: ubuntu-24.04\n2026-10-20T15:08:23.4565844Z Version: 20261012.334.1\n2026-10-20T15:08:23.4568335Z Included Software: https://github.com/actions/runner-images/blob/ubuntu24/20261012.334/images/ubuntu/Ubuntu2404-Readme.md\n2026-10-20T15:08:23.4571055Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu24%2F20261012.334\n2026-10-20T15:08:23.4572962Z ##[endgroup]\n2026-10-20T15:08:23.4574732Z ##[group]GITHUB_TOKEN Permissions\n2026-10-20T15:08:23.4577700Z Contents: read\n2026-10-20T15:08:23.4578624Z Metadata: read\n2026-10-20T15:08:23.4579767Z ##[endgroup]\n2026-10-20T15:08:23.4582607Z Secret source: Actions\n2026-10-20T15:08:23.4584312Z Cache mode: write\n2026-10-20T15:08:23.4585391Z Prepare workflow directory\n2026-10-20T15:08:23.5087688Z Prepare all required actions\n2026-10-20T15:08:23.5135889Z Getting action download info\n2026-10-20T15:08:23.7382197Z Download action repository 'actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1' (SHA:3d3c42e5aac5ba805825da76410c181273ba90b1)\n2026-10-20T15:08:23.8365069Z Download action repository 'leanprover/lean-action@f061402b660e0c34644504b324e830f2991d4865' (SHA:f061402b660e0c34644504b324e830f2991d4865)\n2026-10-20T15:08:23.9660387Z Download action repository 'actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9' (SHA:cf430e030ddbb5b0abf93d22962f4752f3646cd9)\n2026-10-20T15:08:24.2420020Z Getting action download info\n2026-10-20T15:08:24.3042027Z Download action repository 'actions/cache@caa296126883cff596d87d8935842f9db880ef25' (SHA:caa296126883cff596d87d8935842f9db880ef25)\n2026-10-20T15:08:24.5134597Z Complete job name: c299-hosted-formal\n2026-10-20T15:08:24.5932257Z ##[group]Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1\n2026-10-20T15:08:24.5933586Z with:\n2026-10-20T15:08:24.5934076Z persist-credentials: false\n2026-10-20T15:08:24.5934634Z fetch-depth: 1\n2026-10-20T15:08:24.5935141Z repository: d6g8k5htny-coder/Math-\n2026-10-20T15:08:24.5939680Z token: ***\n2026-10-20T15:08:24.5940160Z ssh-strict: true\n2026-10-20T15:08:24.5940635Z ssh-user: git\n2026-10-20T15:08:24.5941086Z clean: true\n2026-10-20T15:08:24.5941556Z sparse-checkout-cone-mode: true\n2026-10-20T15:08:24.5942132Z fetch-tags: false\n2026-10-20T15:08:24.5942645Z show-progress: true\n2026-10-20T15:08:24.5943125Z lfs: false\n2026-10-20T15:08:24.5943573Z submodules: false\n2026-10-20T15:08:24.5944108Z set-safe-directory: true\n2026-10-20T15:08:24.5944650Z allow-unsafe-pr-checkout: false\n2026-10-20T15:08:24.5945524Z env:\n2026-10-20T15:08:24.5945976Z LEAN_NUM_THREADS: 2\n2026-10-20T15:08:24.5946838Z C299_MANIFEST_SHA256: 6904d83df51715bdf52cbfaa56d3f68725cfed2dcfde66a69799ac5982e55a84\n2026-10-20T15:08:24.5947957Z ##[endgroup]\n2026-10-20T15:08:24.6960447Z Syncing repository: d6g8k5htny-coder/Math-\n2026-10-20T15:08:24.6963615Z ##[group]Getting Git version info\n2026-10-20T15:08:24.6964858Z Working directory is '/home/runner/work/Math-/Math-'\n2026-10-20T15:08:24.6966603Z [command]/usr/bin/git version\n2026-10-20T15:08:24.7060946Z git version 2.55.0\n2026-10-20T15:08:24.7085879Z ##[endgroup]\n2026-10-20T15:08:24.7098599Z Temporarily overriding HOME='/home/runner/work/_temp/a543dec0-dd06-489e-8a98-2b8f17db8baf' before making global git config changes\n2026-10-20T15:08:24.7108788Z Adding repository directory to the temporary git global config as a safe directory\n2026-10-20T15:08:24.7111658Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/Math-/Math-\n2026-10-20T15:08:24.7166375Z Deleting the contents of '/home/runner/work/Math-/Math-'\n2026-10-20T15:08:24.7170437Z ##[group]Determining repository object format\n2026-10-20T15:08:24.7172103Z ##[endgroup]\n2026-10-20T15:08:24.7172915Z ##[group]Initializing the repository\n2026-10-20T15:08:24.7178079Z [command]/usr/bin/git init /home/runner/work/Math-/Math-\n2026-10-20T15:08:24.7328297Z hint: Using 'master' as the name for the initial branch. This default branch name\n2026-10-20T15:08:24.7330326Z hint: will change to \"main\" in Git 3.0. To configure the initial branch name\n2026-10-20T15:08:24.7332043Z hint: to use in all of your new repositories, which will suppress this warning,\n2026-10-20T15:08:24.7333728Z hint: call:\n2026-10-20T15:08:24.7334560Z hint:\n2026-10-20T15:08:24.7335971Z hint: \tgit config --global init.defaultBranch \n2026-10-20T15:08:24.7337442Z hint:\n2026-10-20T15:08:24.7338724Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and\n2026-10-20T15:08:24.7340549Z hint: 'development'. The just-created branch can be renamed via this command:\n2026-10-20T15:08:24.7342172Z hint:\n2026-10-20T15:08:24.7343165Z hint: \tgit branch -m \n2026-10-20T15:08:24.7347732Z hint:\n2026-10-20T15:08:24.7349454Z hint: Disable this message with \"git config set advice.defaultBranchName false\"\n2026-10-20T15:08:24.7351464Z Initialized empty Git repository in /home/runner/work/Math-/Math-/.git/\n2026-10-20T15:08:24.7354729Z [command]/usr/bin/git remote add origin https://github.com/d6g8k5htny-coder/Math-\n2026-10-20T15:08:24.7408902Z ##[endgroup]\n2026-10-20T15:08:24.7410438Z ##[group]Disabling automatic garbage collection\n2026-10-20T15:08:24.7413069Z [command]/usr/bin/git config --local gc.auto 0\n2026-10-20T15:08:24.7450337Z ##[endgroup]\n2026-10-20T15:08:24.7451848Z ##[group]Setting up auth\n2026-10-20T15:08:24.7453207Z Removing SSH command configuration\n2026-10-20T15:08:24.7456800Z [command]/usr/bin/git config --local --name-only --get-regexp core\\.sshCommand\n2026-10-20T15:08:24.7494691Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'core\\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :\"\n2026-10-20T15:08:24.7908802Z Removing HTTP extra header\n2026-10-20T15:08:24.7914389Z [command]/usr/bin/git config --local --name-only --get-regexp http\\.https\\:\\/\\/github\\.com\\/\\.extraheader\n2026-10-20T15:08:24.7952432Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'http\\.https\\:\\/\\/github\\.com\\/\\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :\"\n2026-10-20T15:08:24.8172111Z Removing includeIf entries pointing to credentials config files\n2026-10-20T15:08:24.8177296Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\\.gitdir:\n2026-10-20T15:08:24.8214609Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url\n2026-10-20T15:08:24.8439991Z [command]/usr/bin/git config --file /home/runner/work/_temp/git-credentials-e769900a-cbaf-4a56-baff-54db6e8ecab4.config http.https://github.com/.extraheader AUTHORIZATION: basic ***\n2026-10-20T15:08:24.8481675Z [command]/usr/bin/git config --local includeIf.gitdir:/home/runner/work/Math-/Math-/.git.path /home/runner/work/_temp/git-credentials-e769900a-cbaf-4a56-baff-54db6e8ecab4.config\n2026-10-20T15:08:24.8517750Z [command]/usr/bin/git config --local includeIf.gitdir:/home/runner/work/Math-/Math-/.git/worktrees/*.path /home/runner/work/_temp/git-credentials-e769900a-cbaf-4a56-baff-54db6e8ecab4.config\n2026-10-20T15:08:24.8560630Z [command]/usr/bin/git config --local includeIf.gitdir:/github/workspace/.git.path /github/runner_temp/git-credentials-e769900a-cbaf-4a56-baff-54db6e8ecab4.config\n2026-10-20T15:08:24.8597902Z [command]/usr/bin/git config --local includeIf.gitdir:/github/workspace/.git/worktrees/*.path /github/runner_temp/git-credentials-e769900a-cbaf-4a56-baff-54db6e8ecab4.config\n2026-10-20T15:08:24.8630545Z ##[endgroup]\n2026-10-20T15:08:24.8631951Z ##[group]Fetching the repository\n2026-10-20T15:08:24.8637110Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +d93ff50e029d0c6edb3f94f1889fcd991b85721b:refs/remotes/pull/491/merge\n2026-10-20T15:08:26.2030467Z From https://github.com/d6g8k5htny-coder/Math-\n2026-10-20T15:08:26.2032931Z * [new ref] d93ff50e029d0c6edb3f94f1889fcd991b85721b -> pull/491/merge\n2026-10-20T15:08:26.2038147Z ##[endgroup]\n2026-10-20T15:08:26.2039708Z ##[group]Determining the checkout info\n2026-10-20T15:08:26.2042006Z ##[endgroup]\n2026-10-20T15:08:26.2043017Z [command]/usr/bin/git sparse-checkout disable\n2026-10-20T15:08:26.2104657Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig\n2026-10-20T15:08:26.2141953Z ##[group]Checking out the ref\n2026-10-20T15:08:26.2145955Z [command]/usr/bin/git checkout --progress --force refs/remotes/pull/491/merge\n2026-10-20T15:08:26.5106175Z Note: switching to 'refs/remotes/pull/491/merge'.\n2026-10-20T15:08:26.5106749Z \n2026-10-20T15:08:26.5107433Z You are in 'detached HEAD' state. You can look around, make experimental\n2026-10-20T15:08:26.5108136Z changes and commit them, and you can discard any commits you make in this\n2026-10-20T15:08:26.5108757Z state without impacting any branches by switching back to a branch.\n2026-10-20T15:08:26.5109090Z \n2026-10-20T15:08:26.5109346Z If you want to create a new branch to retain commits you create, you may\n2026-10-20T15:08:26.5109865Z do so (now or later) by using -c with the switch command. Example:\n2026-10-20T15:08:26.5110162Z \n2026-10-20T15:08:26.5110304Z git switch -c \n2026-10-20T15:08:26.5110521Z \n2026-10-20T15:08:26.5110663Z Or undo this operation with:\n2026-10-20T15:08:26.5110854Z \n2026-10-20T15:08:26.5110974Z git switch -\n2026-10-20T15:08:26.5111165Z \n2026-10-20T15:08:26.5111426Z Turn off this advice by setting config variable advice.detachedHead to false\n2026-10-20T15:08:26.5111776Z \n2026-10-20T15:08:26.5112176Z HEAD is now at d93ff50 Merge 3111e77c882b4e441b3b4c5ed6f01da46cf8e34c into 5e20834d7daccb8d6bf8b89036e8eb9eb98a1452\n2026-10-20T15:08:26.5132674Z ##[endgroup]\n2026-10-20T15:08:26.5184286Z [command]/usr/bin/git log -1 --format=%H\n2026-10-20T15:08:26.5213502Z d93ff50e029d0c6edb3f94f1889fcd991b85721b\n2026-10-20T15:08:26.5225923Z ##[group]Removing auth\n2026-10-20T15:08:26.5226529Z Removing SSH command configuration\n2026-10-20T15:08:26.5231067Z [command]/usr/bin/git config --local --name-only --get-regexp core\\.sshCommand\n2026-10-20T15:08:26.5292834Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'core\\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :\"\n2026-10-20T15:08:26.5500840Z Removing HTTP extra header\n2026-10-20T15:08:26.5501529Z [command]/usr/bin/git config --local --name-only --get-regexp http\\.https\\:\\/\\/github\\.com\\/\\.extraheader\n2026-10-20T15:08:26.5539325Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'http\\.https\\:\\/\\/github\\.com\\/\\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :\"\n2026-10-20T15:08:26.5769229Z Removing includeIf entries pointing to credentials config files\n2026-10-20T15:08:26.5772891Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\\.gitdir:\n2026-10-20T15:08:26.5805632Z includeif.gitdir:/home/runner/work/Math-/Math-/.git.path\n2026-10-20T15:08:26.5806754Z includeif.gitdir:/home/runner/work/Math-/Math-/.git/worktrees/*.path\n2026-10-20T15:08:26.5807955Z includeif.gitdir:/github/workspace/.git.path\n2026-10-20T15:08:26.5808518Z includeif.gitdir:/github/workspace/.git/worktrees/*.path\n2026-10-20T15:08:26.5815921Z [command]/usr/bin/git config --local --get-all includeif.gitdir:/home/runner/work/Math-/Math-/.git.path\n2026-10-20T15:08:26.5843202Z /home/runner/work/_temp/git-credentials-e769900a-cbaf-4a56-baff-54db6e8ecab4.config\n2026-10-20T15:08:26.5852250Z [command]/usr/bin/git config --local --unset includeif.gitdir:/home/runner/work/Math-/Math-/.git.path \\/home\\/runner\\/work\\/_temp\\/git\\-credentials\\-e769900a\\-cbaf\\-4a56\\-baff\\-54db6e8ecab4\\.config\n2026-10-20T15:08:26.5890212Z [command]/usr/bin/git config --local --get-all includeif.gitdir:/home/runner/work/Math-/Math-/.git/worktrees/*.path\n2026-10-20T15:08:26.5951856Z /home/runner/work/_temp/git-credentials-e769900a-cbaf-4a56-baff-54db6e8ecab4.config\n2026-10-20T15:08:26.5960392Z [command]/usr/bin/git config --local --unset includeif.gitdir:/home/runner/work/Math-/Math-/.git/worktrees/*.path \\/home\\/runner\\/work\\/_temp\\/git\\-credentials\\-e769900a\\-cbaf\\-4a56\\-baff\\-54db6e8ecab4\\.config\n2026-10-20T15:08:26.5995982Z [command]/usr/bin/git config --local --get-all includeif.gitdir:/github/workspace/.git.path\n2026-10-20T15:08:26.6026027Z /github/runner_temp/git-credentials-e769900a-cbaf-4a56-baff-54db6e8ecab4.config\n2026-10-20T15:08:26.6035362Z [command]/usr/bin/git config --local --unset includeif.gitdir:/github/workspace/.git.path \\/github\\/runner_temp\\/git\\-credentials\\-e769900a\\-cbaf\\-4a56\\-baff\\-54db6e8ecab4\\.config\n2026-10-20T15:08:26.6072220Z [command]/usr/bin/git config --local --get-all includeif.gitdir:/github/workspace/.git/worktrees/*.path\n2026-10-20T15:08:26.6099885Z /github/runner_temp/git-credentials-e769900a-cbaf-4a56-baff-54db6e8ecab4.config\n2026-10-20T15:08:26.6129527Z [command]/usr/bin/git config --local --unset includeif.gitdir:/github/workspace/.git/worktrees/*.path \\/github\\/runner_temp\\/git\\-credentials\\-e769900a\\-cbaf\\-4a56\\-baff\\-54db6e8ecab4\\.config\n2026-10-20T15:08:26.6169576Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url\n2026-10-20T15:08:26.6406646Z Removing credentials config '/home/runner/work/_temp/git-credentials-e769900a-cbaf-4a56-baff-54db6e8ecab4.config'\n2026-10-20T15:08:26.6417808Z ##[endgroup]\n2026-10-20T15:08:26.6623993Z ##[group]Run python3 -B -S frontiers/critical_ridge_20261020/c299_hosted_verify.py source --manifest-sha256 \"$C299_MANIFEST_SHA256\"\n2026-10-20T15:08:26.6625122Z \u001b[36;1mpython3 -B -S frontiers/critical_ridge_20261020/c299_hosted_verify.py source --manifest-sha256 \"$C299_MANIFEST_SHA256\"\u001b[0m\n2026-10-20T15:08:26.6626034Z \u001b[36;1mpython3 -B -S -m unittest discover -s frontiers/critical_ridge_20261020 -p test_c299_hosted_verify.py -v\u001b[0m\n2026-10-20T15:08:26.6627184Z \u001b[36;1mpython3 -B -O -S -m unittest discover -s frontiers/critical_ridge_20261020 -p test_c299_hosted_verify.py -v\u001b[0m\n2026-10-20T15:08:26.6924707Z shell: /usr/bin/bash -e {0}\n2026-10-20T15:08:26.6925044Z env:\n2026-10-20T15:08:26.6925297Z LEAN_NUM_THREADS: 2\n2026-10-20T15:08:26.6925765Z C299_MANIFEST_SHA256: 6904d83df51715bdf52cbfaa56d3f68725cfed2dcfde66a69799ac5982e55a84\n2026-10-20T15:08:26.6926276Z ##[endgroup]\n2026-10-20T15:08:26.8394301Z test_amended_phase_receipt_matches_aggregate (test_c299_hosted_verify.HostedVerifierTests.test_amended_phase_receipt_matches_aggregate)\n2026-10-20T15:08:26.8725768Z C299 valid-phase: exit=0 timeout=False seconds=0.032146\n2026-10-20T15:08:26.8735473Z Semantic/object metadata must not exist only in the aggregate receipt. ... ok\n2026-10-20T15:08:26.8737582Z test_audit_cannot_omit_required_target_or_hide_axiom (test_c299_hosted_verify.HostedVerifierTests.test_audit_cannot_omit_required_target_or_hide_axiom)\n2026-10-20T15:08:26.8742711Z Count-only validation would accept a substituted target or sorryAx. ... ok\n2026-10-20T15:08:26.8744287Z test_build_allows_only_its_own_outputs (test_c299_hosted_verify.HostedVerifierTests.test_build_allows_only_its_own_outputs)\n2026-10-20T15:08:26.8745709Z A build may add its target object, not an unrelated replacement. ... ok\n2026-10-20T15:08:26.8747857Z test_environment_contract_strips_overrides_and_uses_declared_path (test_c299_hosted_verify.HostedVerifierTests.test_environment_contract_strips_overrides_and_uses_declared_path)\n2026-10-20T15:08:26.8754347Z An inherited tool/loader override must not survive or leak its value. ... ok\n2026-10-20T15:08:26.8756332Z test_failed_phase_receipt_and_exact_streams_survive_abort (test_c299_hosted_verify.HostedVerifierTests.test_failed_phase_receipt_and_exact_streams_survive_abort)\n2026-10-20T15:08:26.9082263Z C299 deliberate-failure: exit=7 timeout=False seconds=0.032056\n2026-10-20T15:08:26.9086022Z Raising before persistence would discard the actual failing phase. ... ok\n2026-10-20T15:08:26.9088296Z test_inactive_draft_negative_sections_reject_forged_fields (test_c299_hosted_verify.HostedVerifierTests.test_inactive_draft_negative_sections_reject_forged_fields)\n2026-10-20T15:08:26.9121640Z Section/token-only matching would accept unrelated existential fields. ... ok\n2026-10-20T15:08:26.9123084Z test_modified_source_bytes_are_rejected (test_c299_hosted_verify.HostedVerifierTests.test_modified_source_bytes_are_rejected)\n2026-10-20T15:08:26.9131919Z Dropping size/hash verification would accept the modified file. ... ok\n2026-10-20T15:08:26.9133314Z test_pending_final_acceptance_fails_closed (test_c299_hosted_verify.HostedVerifierTests.test_pending_final_acceptance_fails_closed)\n2026-10-20T15:08:26.9134679Z Collecting diagnostics must not silently qualify final acceptance. ... ok\n2026-10-20T15:08:26.9136223Z test_phase_environment_mutation_is_blocked_and_receipted (test_c299_hosted_verify.HostedVerifierTests.test_phase_environment_mutation_is_blocked_and_receipted)\n2026-10-20T15:08:26.9462201Z C299 environment-valid: exit=0 timeout=False seconds=0.032039\n2026-10-20T15:08:26.9469262Z C299 environment-mutated-0: exit=None timeout=False seconds=0.00019\n2026-10-20T15:08:26.9478575Z C299 environment-mutated-1: exit=None timeout=False seconds=0.000157\n2026-10-20T15:08:26.9484206Z A changed search path or injected loader must fail before the child runs. ... ok\n2026-10-20T15:08:26.9485670Z test_phase_rejects_imported_object_mutation (test_c299_hosted_verify.HostedVerifierTests.test_phase_rejects_imported_object_mutation)\n2026-10-20T15:08:26.9818557Z C299 deliberate-object-mutation: exit=0 timeout=False seconds=0.032436\n2026-10-20T15:08:26.9823286Z A successful compiler process may not alter a prior input object. ... ok\n2026-10-20T15:08:26.9824623Z test_pinned_lean_multiline_axiom_records (test_c299_hosted_verify.HostedVerifierTests.test_pinned_lean_multiline_axiom_records)\n2026-10-20T15:08:26.9826060Z Actual pinned Lean wraps the unchanged Lifetime axiom arrays. ... ok\n2026-10-20T15:08:26.9828136Z test_source_preflight_can_collect_before_final_predicate_qualification (test_c299_hosted_verify.HostedVerifierTests.test_source_preflight_can_collect_before_final_predicate_qualification)\n2026-10-20T15:08:26.9881364Z An early final-acceptance gate would block needed actual diagnostics. ... ok\n2026-10-20T15:08:26.9882939Z test_timeout_preserves_partial_stream_and_receipt (test_c299_hosted_verify.HostedVerifierTests.test_timeout_preserves_partial_stream_and_receipt)\n2026-10-20T15:08:27.0908878Z C299 deliberate-timeout: exit=-15 timeout=True seconds=0.102021\n2026-10-20T15:08:27.0912475Z Timeout handling must not discard the child output or phase result. ... ok\n2026-10-20T15:08:27.0913026Z \n2026-10-20T15:08:27.0913298Z ----------------------------------------------------------------------\n2026-10-20T15:08:27.0913864Z Ran 13 tests in 0.260s\n2026-10-20T15:08:27.0914079Z \n2026-10-20T15:08:27.0914186Z OK\n2026-10-20T15:08:27.4665556Z test_amended_phase_receipt_matches_aggregate (test_c299_hosted_verify.HostedVerifierTests.test_amended_phase_receipt_matches_aggregate)\n2026-10-20T15:08:27.4995266Z C299 valid-phase: exit=0 timeout=False seconds=0.03203\n2026-10-20T15:08:27.5005740Z Semantic/object metadata must not exist only in the aggregate receipt. ... ok\n2026-10-20T15:08:27.5007497Z test_audit_cannot_omit_required_target_or_hide_axiom (test_c299_hosted_verify.HostedVerifierTests.test_audit_cannot_omit_required_target_or_hide_axiom)\n2026-10-20T15:08:27.5012657Z Count-only validation would accept a substituted target or sorryAx. ... ok\n2026-10-20T15:08:27.5014263Z test_build_allows_only_its_own_outputs (test_c299_hosted_verify.HostedVerifierTests.test_build_allows_only_its_own_outputs)\n2026-10-20T15:08:27.5015523Z A build may add its target object, not an unrelated replacement. ... ok\n2026-10-20T15:08:27.5017383Z test_environment_contract_strips_overrides_and_uses_declared_path (test_c299_hosted_verify.HostedVerifierTests.test_environment_contract_strips_overrides_and_uses_declared_path)\n2026-10-20T15:08:27.5028111Z An inherited tool/loader override must not survive or leak its value. ... ok\n2026-10-20T15:08:27.5029592Z test_failed_phase_receipt_and_exact_streams_survive_abort (test_c299_hosted_verify.HostedVerifierTests.test_failed_phase_receipt_and_exact_streams_survive_abort)\n2026-10-20T15:08:27.5354556Z C299 deliberate-failure: exit=7 timeout=False seconds=0.032163\n2026-10-20T15:08:27.5377854Z Raising before persistence would discard the actual failing phase. ... ok\n2026-10-20T15:08:27.5379462Z test_inactive_draft_negative_sections_reject_forged_fields (test_c299_hosted_verify.HostedVerifierTests.test_inactive_draft_negative_sections_reject_forged_fields)\n2026-10-20T15:08:27.5419612Z Section/token-only matching would accept unrelated existential fields. ... ok\n2026-10-20T15:08:27.5420987Z test_modified_source_bytes_are_rejected (test_c299_hosted_verify.HostedVerifierTests.test_modified_source_bytes_are_rejected)\n2026-10-20T15:08:27.5429686Z Dropping size/hash verification would accept the modified file. ... ok\n2026-10-20T15:08:27.5431060Z test_pending_final_acceptance_fails_closed (test_c299_hosted_verify.HostedVerifierTests.test_pending_final_acceptance_fails_closed)\n2026-10-20T15:08:27.5432420Z Collecting diagnostics must not silently qualify final acceptance. ... ok\n2026-10-20T15:08:27.5433937Z test_phase_environment_mutation_is_blocked_and_receipted (test_c299_hosted_verify.HostedVerifierTests.test_phase_environment_mutation_is_blocked_and_receipted)\n2026-10-20T15:08:27.5759068Z C299 environment-valid: exit=0 timeout=False seconds=0.031967\n2026-10-20T15:08:27.5766479Z C299 environment-mutated-0: exit=None timeout=False seconds=0.00018\n2026-10-20T15:08:27.5775498Z C299 environment-mutated-1: exit=None timeout=False seconds=0.000173\n2026-10-20T15:08:27.5781290Z A changed search path or injected loader must fail before the child runs. ... ok\n2026-10-20T15:08:27.5782700Z test_phase_rejects_imported_object_mutation (test_c299_hosted_verify.HostedVerifierTests.test_phase_rejects_imported_object_mutation)\n2026-10-20T15:08:27.6114231Z C299 deliberate-object-mutation: exit=0 timeout=False seconds=0.03237\n2026-10-20T15:08:27.6119048Z A successful compiler process may not alter a prior input object. ... ok\n2026-10-20T15:08:27.6120357Z test_pinned_lean_multiline_axiom_records (test_c299_hosted_verify.HostedVerifierTests.test_pinned_lean_multiline_axiom_records)\n2026-10-20T15:08:27.6121641Z Actual pinned Lean wraps the unchanged Lifetime axiom arrays. ... ok\n2026-10-20T15:08:27.6123324Z test_source_preflight_can_collect_before_final_predicate_qualification (test_c299_hosted_verify.HostedVerifierTests.test_source_preflight_can_collect_before_final_predicate_qualification)\n2026-10-20T15:08:27.6173388Z An early final-acceptance gate would block needed actual diagnostics. ... ok\n2026-10-20T15:08:27.6174851Z test_timeout_preserves_partial_stream_and_receipt (test_c299_hosted_verify.HostedVerifierTests.test_timeout_preserves_partial_stream_and_receipt)\n2026-10-20T15:08:27.7199179Z C299 deliberate-timeout: exit=-15 timeout=True seconds=0.101852\n2026-10-20T15:08:27.7202864Z Timeout handling must not discard the child output or phase result. ... ok\n2026-10-20T15:08:27.7203464Z \n2026-10-20T15:08:27.7203622Z ----------------------------------------------------------------------\n2026-10-20T15:08:27.7203980Z Ran 13 tests in 0.279s\n2026-10-20T15:08:27.7204137Z \n2026-10-20T15:08:27.7204217Z OK\n2026-10-20T15:08:27.7622071Z ##[group]Run leanprover/lean-action@f061402b660e0c34644504b324e830f2991d4865\n2026-10-20T15:08:27.7622490Z with:\n2026-10-20T15:08:27.7622878Z lake-package-directory: formal\n2026-10-20T15:08:27.7623136Z auto-config: false\n2026-10-20T15:08:27.7623345Z build: false\n2026-10-20T15:08:27.7623534Z test: false\n2026-10-20T15:08:27.7623727Z lint: false\n2026-10-20T15:08:27.7623922Z use-mathlib-cache: true\n2026-10-20T15:08:27.7624158Z use-github-cache: false\n2026-10-20T15:08:27.7624384Z mk_all-check: false\n2026-10-20T15:08:27.7624617Z check-reservoir-eligibility: false\n2026-10-20T15:08:27.7624882Z leanchecker: false\n2026-10-20T15:08:27.7625090Z lean4checker: false\n2026-10-20T15:08:27.7625295Z nanoda: false\n2026-10-20T15:08:27.7625498Z nanoda-allow-sorry: true\n2026-10-20T15:08:27.7625724Z axiom-audit: false\n2026-10-20T15:08:27.7626005Z axiom-audit-allow: propext,Classical.choice,Quot.sound\n2026-10-20T15:08:27.7626368Z reinstall-transient-toolchain: false\n2026-10-20T15:08:27.7626654Z env:\n2026-10-20T15:08:27.7626845Z LEAN_NUM_THREADS: 2\n2026-10-20T15:08:27.7627424Z C299_MANIFEST_SHA256: 6904d83df51715bdf52cbfaa56d3f68725cfed2dcfde66a69799ac5982e55a84\n2026-10-20T15:08:27.7627872Z ##[endgroup]\n2026-10-20T15:08:27.7691229Z ##[start-action display=install elan;id=__leanprover_lean-action.__run]\n2026-10-20T15:08:27.7720256Z ##[group]Run : Install Elan\n2026-10-20T15:08:27.7720528Z \u001b[36;1m: Install Elan\u001b[0m\n2026-10-20T15:08:27.7720801Z \u001b[36;1m${GITHUB_ACTION_PATH}/scripts/install_elan.sh\u001b[0m\n2026-10-20T15:08:27.7783947Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}\n2026-10-20T15:08:27.7784292Z env:\n2026-10-20T15:08:27.7784484Z LEAN_NUM_THREADS: 2\n2026-10-20T15:08:27.7784872Z C299_MANIFEST_SHA256: 6904d83df51715bdf52cbfaa56d3f68725cfed2dcfde66a69799ac5982e55a84\n2026-10-20T15:08:27.7785315Z ##[endgroup]\n2026-10-20T15:08:27.7890944Z ##[group]Elan Installation Output\n2026-10-20T15:08:27.8460090Z info: downloading installer\n2026-10-20T15:08:28.5912801Z info: downloading https://releases.lean-lang.org/lean4/v4.34.1/lean-4.34.1-linux.tar.zst\n2026-10-20T15:08:31.9801371Z info: installing /home/runner/.elan/toolchains/leanprover--lean4---v4.34.1\n2026-10-20T15:08:38.9566012Z Lean (version 4.34.1, x86_64-unknown-linux-gnu, commit 5045d0056413266e57c625dcd7c365b10e377c52, Release)\n2026-10-20T15:08:38.9963095Z Lake version 5.0.0-src+5045d00 (Lean version 4.34.1)\n2026-10-20T15:08:38.9964536Z ##[endgroup]\n2026-10-20T15:08:38.9964734Z \n2026-10-20T15:08:38.9985331Z ##[end-action id=__leanprover_lean-action.__run;outcome=success;conclusion=success;duration_ms=11229]\n2026-10-20T15:08:38.9989966Z ##[start-action display=configure `lean-action`;id=__leanprover_lean-action.config]\n2026-10-20T15:08:39.0318854Z ##[group]Run : Configure Lean Action\n2026-10-20T15:08:39.0319168Z \u001b[36;1m: Configure Lean Action\u001b[0m\n2026-10-20T15:08:39.0319463Z \u001b[36;1m${GITHUB_ACTION_PATH}/scripts/config.sh\u001b[0m\n2026-10-20T15:08:39.0384033Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}\n2026-10-20T15:08:39.0384396Z env:\n2026-10-20T15:08:39.0384583Z LEAN_NUM_THREADS: 2\n2026-10-20T15:08:39.0384977Z C299_MANIFEST_SHA256: 6904d83df51715bdf52cbfaa56d3f68725cfed2dcfde66a69799ac5982e55a84\n2026-10-20T15:08:39.0385439Z AUTO_CONFIG: false\n2026-10-20T15:08:39.0385648Z BUILD: false\n2026-10-20T15:08:39.0385838Z TEST: false\n2026-10-20T15:08:39.0386024Z LINT: false\n2026-10-20T15:08:39.0386210Z ##[endgroup]\n2026-10-20T15:08:39.1270720Z ##[group]Configure lean-action\n2026-10-20T15:08:39.1327690Z ##[end-action id=__leanprover_lean-action.config;outcome=success;conclusion=success;duration_ms=133]\n2026-10-20T15:08:39.1332802Z ##[start-action display=reinstall transient toolchain;id=__leanprover_lean-action.__run_2]\n2026-10-20T15:08:39.1350969Z ##[end-action id=__leanprover_lean-action.__run_2;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T15:08:39.1353997Z ##[start-action display=ensure all files are imported;id=__leanprover_lean-action.mk_all]\n2026-10-20T15:08:39.1360321Z ##[end-action id=__leanprover_lean-action.mk_all;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T15:08:39.1363258Z ##[start-action display=Run actions/cache/restore@caa296126883cff596d87d8935842f9db880ef25;id=__leanprover_lean-action.__actions_cache]\n2026-10-20T15:08:39.1387297Z ##[end-action id=__leanprover_lean-action.__actions_cache;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T15:08:39.1389452Z ##[start-action display=detect mathlib;id=__leanprover_lean-action.detect-mathlib]\n2026-10-20T15:08:39.1392956Z ##[end-action id=__leanprover_lean-action.detect-mathlib;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T15:08:39.1394801Z ##[start-action display=get mathlib cache;id=__leanprover_lean-action.__run_3]\n2026-10-20T15:08:39.1745895Z ##[group]Run : Get Mathlib Cache\n2026-10-20T15:08:39.1746180Z \u001b[36;1m: Get Mathlib Cache\u001b[0m\n2026-10-20T15:08:39.1746430Z \u001b[36;1mecho \"::group::Mathlib Cache\"\u001b[0m\n2026-10-20T15:08:39.1746703Z \u001b[36;1mlake exe cache get\u001b[0m\n2026-10-20T15:08:39.1747272Z \u001b[36;1mecho \"::endgroup::\"\u001b[0m\n2026-10-20T15:08:39.1747524Z \u001b[36;1mecho\u001b[0m\n2026-10-20T15:08:39.1808849Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}\n2026-10-20T15:08:39.1809210Z env:\n2026-10-20T15:08:39.1809399Z LEAN_NUM_THREADS: 2\n2026-10-20T15:08:39.1809783Z C299_MANIFEST_SHA256: 6904d83df51715bdf52cbfaa56d3f68725cfed2dcfde66a69799ac5982e55a84\n2026-10-20T15:08:39.1810228Z ##[endgroup]\n2026-10-20T15:08:39.2187988Z ##[group]Mathlib Cache\n2026-10-20T15:08:39.2588281Z info: mathlib: cloning https://github.com/leanprover-community/mathlib4.git\n2026-10-20T15:09:12.3953034Z info: mathlib: checking out revision 'd13f23b723b8a846827a245b89c10fc7d3f11612'\n2026-10-20T15:09:14.5195050Z info: plausible: cloning https://github.com/leanprover-community/plausible\n2026-10-20T15:09:14.7395273Z info: plausible: checking out revision '118aa17ee84656b8bd727fef7c458ee8c833385c'\n2026-10-20T15:09:14.7520898Z info: LeanSearchClient: cloning https://github.com/leanprover-community/LeanSearchClient\n2026-10-20T15:09:14.9694857Z info: LeanSearchClient: checking out revision 'ddf04cf3949fa556442341e87d47f9f6e6074707'\n2026-10-20T15:09:14.9813678Z info: importGraph: cloning https://github.com/leanprover-community/import-graph\n2026-10-20T15:09:15.2332602Z info: importGraph: checking out revision 'e928b72544873815af278d38681b31c0293588e3'\n2026-10-20T15:09:15.2510853Z info: proofwidgets: cloning https://github.com/leanprover-community/ProofWidgets4\n2026-10-20T15:09:15.6119780Z info: proofwidgets: checking out revision '106ff4fafc74ef4ac99d81dbf3ab399118f497a5'\n2026-10-20T15:09:16.2708230Z info: aesop: cloning https://github.com/leanprover-community/aesop\n2026-10-20T15:09:16.7083121Z info: aesop: checking out revision '355695d523e41d0554926416cba2a2b3544fbbc9'\n2026-10-20T15:09:16.7276086Z info: Qq: cloning https://github.com/leanprover-community/quote4\n2026-10-20T15:09:16.9772543Z info: Qq: checking out revision '6a489d9af5d0c47e5b259e2e8bcdfc1811b5a259'\n2026-10-20T15:09:16.9897833Z info: batteries: cloning https://github.com/leanprover-community/batteries\n2026-10-20T15:09:22.9218845Z info: batteries: checking out revision 'f2effa3d803fda822b1f97b806c47cf2adfbcbc2'\n2026-10-20T15:09:22.9584154Z info: Cli: cloning https://github.com/leanprover/lean4-cli\n2026-10-20T15:09:23.1698893Z info: Cli: checking out revision 'e92c9f15fdfacc8536f31cfb3b7ad26c3c8cd204'\n2026-10-20T15:09:23.5833435Z ✔ [1/5] Built Cache.Cli (387ms)\n2026-10-20T15:09:23.6833846Z ✔ [2/5] Built Cache.Lean (423ms)\n2026-10-20T15:09:24.1839664Z ✔ [5/12] Built Cache.Env (378ms)\n2026-10-20T15:09:24.5845244Z ✔ [7/42] Built Cache.Infra (412ms)\n2026-10-20T15:09:24.6889555Z ✔ [8/42] Built Batteries.Tactic.OpenPrivate (954ms)\n2026-10-20T15:09:24.6890458Z ✔ [9/42] Built Cache.Cli:c.o (141ms)\n2026-10-20T15:09:24.8883130Z ✔ [10/42] Built Cache.Lean:c.o (164ms)\n2026-10-20T15:09:24.8884344Z ✔ [11/42] Built Cache.Env:c.o (169ms)\n2026-10-20T15:09:25.0889594Z ✔ [12/42] Built Cache.Infra:c.o (234ms)\n2026-10-20T15:09:26.2906169Z ✔ [13/42] Built Batteries.Tactic.OpenPrivate:c.o (1.4s)\n2026-10-20T15:09:26.5909787Z ✔ [14/42] Built Cache.IO (1.4s)\n2026-10-20T15:09:27.2929600Z ✔ [15/42] Built Cache.Hashing (781ms)\n2026-10-20T15:09:27.7936316Z ✔ [16/42] Built Cache.Hashing:c.o (440ms)\n2026-10-20T15:09:28.1940828Z ✔ [17/42] Built Cache.IO:c.o (1.7s)\n2026-10-20T15:09:29.4955624Z ✔ [18/42] Built Cache.Requests (1.8s)\n2026-10-20T15:09:30.0971002Z ✔ [19/42] Built Cache.Marker (568ms)\n2026-10-20T15:09:30.1979600Z ✔ [20/42] Built Cache.Marker:c.o (120ms)\n2026-10-20T15:09:30.9002079Z ✔ [21/42] Built Cache.Query (708ms)\n2026-10-20T15:09:31.5016536Z ✔ [22/42] Built Cache.Upload.Dest (613ms)\n2026-10-20T15:09:31.9018311Z ✔ [23/42] Built Cache.Query:c.o (316ms)\n2026-10-20T15:09:32.0042104Z ✔ [24/42] Built Cache.Upload.Dest:c.o (129ms)\n2026-10-20T15:09:32.3024846Z ✔ [25/42] Built Cache.Requests:c.o (2.8s)\n2026-10-20T15:09:32.7020087Z ✔ [26/42] Built Cache.Warning (680ms)\n2026-10-20T15:09:33.0024640Z ✔ [27/42] Built Cache.Upload.Rclone (642ms)\n2026-10-20T15:09:33.3029147Z ✔ [28/42] Built Cache.Upload.Curl (648ms)\n2026-10-20T15:09:33.3030408Z ✔ [29/42] Built Cache.Warning:c.o (304ms)\n2026-10-20T15:09:33.5022742Z ✔ [30/42] Built Cache.Upload.Curl:c.o (200ms)\n2026-10-20T15:09:33.5023959Z ✔ [31/42] Built Cache.Upload.Rclone:c.o (192ms)\n2026-10-20T15:09:34.1029506Z ✔ [32/42] Built Cache.Upload.Azure (599ms)\n2026-10-20T15:09:34.2032971Z ✔ [33/42] Built Cache.Upload.Azure:c.o (168ms)\n2026-10-20T15:09:34.3034951Z ✔ [34/42] Built Cache.Upload.S3 (753ms)\n2026-10-20T15:09:34.6038677Z ✔ [35/42] Built Cache.Upload.S3:c.o (341ms)\n2026-10-20T15:09:34.9042212Z ✔ [36/42] Built Cache.Upload.Defs (589ms)\n2026-10-20T15:09:35.0043644Z ✔ [37/42] Built Cache.Upload.Defs:c.o (172ms)\n2026-10-20T15:09:35.4058244Z ✔ [38/42] Built Cache.Upload (551ms)\n2026-10-20T15:09:35.5049531Z ✔ [39/42] Built Cache.Upload:c.o (136ms)\n2026-10-20T15:09:36.5060288Z ✔ [40/42] Built Cache.Main (1.1s)\n2026-10-20T15:09:37.5071780Z ✔ [41/42] Built Cache.Main:c.o (965ms)\n2026-10-20T15:09:38.2090881Z ✔ [42/42] Built cache:exe (738ms)\n2026-10-20T15:09:41.1701290Z Current branch: HEAD\n2026-10-20T15:09:41.1701880Z Using cache from origin: (some leanprover-community/mathlib4)\n2026-10-20T15:09:41.1703053Z Attempting to download 8908 file(s) from leanprover-community/mathlib4 cache at https://cache.mathlib.org/mathlib4-master\n2026-10-20T15:09:41.2712893Z \n2026-10-20T15:09:41.3729022Z Downloaded: 1 file(s) [attempted 1/8908 = 0%, 87 KB/s], Decompressed: 0\n2026-10-20T15:09:41.4730494Z Downloaded: 80 file(s) [attempted 80/8908 = 0%, 357 KB/s], Decompressed: 10\n2026-10-20T15:09:41.5778487Z Downloaded: 214 file(s) [attempted 214/8908 = 2%, 3665 KB/s], Decompressed: 36\n2026-10-20T15:09:41.6789244Z Downloaded: 337 file(s) [attempted 337/8908 = 3%, 972 KB/s], Decompressed: 36\n2026-10-20T15:09:41.7848497Z Downloaded: 463 file(s) [attempted 463/8908 = 5%, 402 KB/s], Decompressed: 36\n2026-10-20T15:09:41.8899050Z Downloaded: 571 file(s) [attempted 571/8908 = 6%, 1567 KB/s], Decompressed: 36\n2026-10-20T15:09:41.9968436Z Downloaded: 674 file(s) [attempted 674/8908 = 7%, 947 KB/s], Decompressed: 36\n2026-10-20T15:09:42.0968426Z Downloaded: 780 file(s) [attempted 780/8908 = 8%, 1297 KB/s], Decompressed: 36\n2026-10-20T15:09:42.1962397Z Downloaded: 891 file(s) [attempted 891/8908 = 10%, 589 KB/s], Decompressed: 174\n2026-10-20T15:09:42.2982373Z Downloaded: 992 file(s) [attempted 992/8908 = 11%, 1718 KB/s], Decompressed: 174\n2026-10-20T15:09:42.4018207Z Downloaded: 1091 file(s) [attempted 1091/8908 = 12%, 390 KB/s], Decompressed: 174\n2026-10-20T15:09:42.4999807Z Downloaded: 1235 file(s) [attempted 1235/8908 = 13%, 4025 KB/s], Decompressed: 174\n2026-10-20T15:09:42.6079369Z Downloaded: 1346 file(s) [attempted 1346/8908 = 15%, 2109 KB/s], Decompressed: 174\n2026-10-20T15:09:42.7041193Z Downloaded: 1468 file(s) [attempted 1468/8908 = 16%, 986 KB/s], Decompressed: 174\n2026-10-20T15:09:42.8109618Z Downloaded: 1586 file(s) [attempted 1586/8908 = 17%, 1287 KB/s], Decompressed: 174\n2026-10-20T15:09:42.9162280Z Downloaded: 1738 file(s) [attempted 1738/8908 = 19%, 1180 KB/s], Decompressed: 174\n2026-10-20T15:09:43.0378534Z Downloaded: 1846 file(s) [attempted 1846/8908 = 20%, 124 KB/s], Decompressed: 174\n2026-10-20T15:09:43.1420961Z Downloaded: 1956 file(s) [attempted 1956/8908 = 21%, 2216 KB/s], Decompressed: 174\n2026-10-20T15:09:43.2428095Z Downloaded: 2040 file(s) [attempted 2040/8908 = 22%, 1253 KB/s], Decompressed: 174\n2026-10-20T15:09:43.3682163Z Downloaded: 2113 file(s) [attempted 2113/8908 = 23%, 1845 KB/s], Decompressed: 174\n2026-10-20T15:09:43.4699961Z Downloaded: 2168 file(s) [attempted 2168/8908 = 24%, 575 KB/s], Decompressed: 174\n2026-10-20T15:09:43.5737115Z Downloaded: 2255 file(s) [attempted 2255/8908 = 25%, 2507 KB/s], Decompressed: 174\n2026-10-20T15:09:43.6830782Z Downloaded: 2348 file(s) [attempted 2348/8908 = 26%, 1521 KB/s], Decompressed: 174\n2026-10-20T15:09:43.7809386Z Downloaded: 2454 file(s) [attempted 2454/8908 = 27%, 509 KB/s], Decompressed: 174\n2026-10-20T15:09:43.8848085Z Downloaded: 2543 file(s) [attempted 2543/8908 = 28%, 4031 KB/s], Decompressed: 174\n2026-10-20T15:09:43.9897819Z Downloaded: 2610 file(s) [attempted 2610/8908 = 29%, 1558 KB/s], Decompressed: 174\n2026-10-20T15:09:44.0894505Z Downloaded: 2707 file(s) [attempted 2707/8908 = 30%, 844 KB/s], Decompressed: 174\n2026-10-20T15:09:44.1884379Z Downloaded: 2788 file(s) [attempted 2788/8908 = 31%, 4000 KB/s], Decompressed: 174\n2026-10-20T15:09:44.2938450Z Downloaded: 2870 file(s) [attempted 2870/8908 = 32%, 172 KB/s], Decompressed: 174\n2026-10-20T15:09:44.3938259Z Downloaded: 2966 file(s) [attempted 2966/8908 = 33%, 682 KB/s], Decompressed: 174\n2026-10-20T15:09:44.4942452Z Downloaded: 3035 file(s) [attempted 3035/8908 = 34%, 239 KB/s], Decompressed: 174\n2026-10-20T15:09:44.5968083Z Downloaded: 3105 file(s) [attempted 3105/8908 = 34%, 535 KB/s], Decompressed: 174\n2026-10-20T15:09:44.7077452Z Downloaded: 3176 file(s) [attempted 3176/8908 = 35%, 70 KB/s], Decompressed: 174\n2026-10-20T15:09:44.8097676Z Downloaded: 3265 file(s) [attempted 3265/8908 = 36%, 839 KB/s], Decompressed: 174\n2026-10-20T15:09:44.9203610Z Downloaded: 3342 file(s) [attempted 3342/8908 = 37%, 2662 KB/s], Decompressed: 174\n2026-10-20T15:09:45.0203237Z Downloaded: 3397 file(s) [attempted 3397/8908 = 38%, 1052 KB/s], Decompressed: 174\n2026-10-20T15:09:45.1267999Z Downloaded: 3476 file(s) [attempted 3476/8908 = 39%, 55 KB/s], Decompressed: 849\n2026-10-20T15:09:45.2259630Z Downloaded: 3565 file(s) [attempted 3565/8908 = 40%, 1086 KB/s], Decompressed: 849\n2026-10-20T15:09:45.3478057Z Downloaded: 3658 file(s) [attempted 3658/8908 = 41%, 171 KB/s], Decompressed: 849\n2026-10-20T15:09:45.4591416Z Downloaded: 3755 file(s) [attempted 3755/8908 = 42%, 2205 KB/s], Decompressed: 849\n2026-10-20T15:09:45.5708043Z Downloaded: 3854 file(s) [attempted 3854/8908 = 43%, 131 KB/s], Decompressed: 849\n2026-10-20T15:09:45.6713424Z Downloaded: 3964 file(s) [attempted 3964/8908 = 44%, 176 KB/s], Decompressed: 849\n2026-10-20T15:09:45.7746132Z Downloaded: 4073 file(s) [attempted 4073/8908 = 45%, 472 KB/s], Decompressed: 849\n2026-10-20T15:09:45.8798214Z Downloaded: 4159 file(s) [attempted 4159/8908 = 46%, 708 KB/s], Decompressed: 849\n2026-10-20T15:09:45.9758346Z Downloaded: 4248 file(s) [attempted 4248/8908 = 47%, 262 KB/s], Decompressed: 849\n2026-10-20T15:09:46.0954675Z Downloaded: 4354 file(s) [attempted 4354/8908 = 48%, 904 KB/s], Decompressed: 849\n2026-10-20T15:09:46.1968359Z Downloaded: 4438 file(s) [attempted 4438/8908 = 49%, 405 KB/s], Decompressed: 849\n2026-10-20T15:09:46.3074745Z Downloaded: 4537 file(s) [attempted 4537/8908 = 50%, 488 KB/s], Decompressed: 849\n2026-10-20T15:09:46.4088031Z Downloaded: 4616 file(s) [attempted 4616/8908 = 51%, 220 KB/s], Decompressed: 849\n2026-10-20T15:09:46.5154962Z Downloaded: 4652 file(s) [attempted 4652/8908 = 52%, 274 KB/s], Decompressed: 849\n2026-10-20T15:09:46.6156203Z Downloaded: 4720 file(s) [attempted 4720/8908 = 52%, 598 KB/s], Decompressed: 849\n2026-10-20T15:09:46.7172513Z Downloaded: 4804 file(s) [attempted 4804/8908 = 53%, 321 KB/s], Decompressed: 849\n2026-10-20T15:09:46.8208782Z Downloaded: 4876 file(s) [attempted 4876/8908 = 54%, 3320 KB/s], Decompressed: 849\n2026-10-20T15:09:46.9189941Z Downloaded: 4948 file(s) [attempted 4948/8908 = 55%, 681 KB/s], Decompressed: 849\n2026-10-20T15:09:47.0200204Z Downloaded: 5041 file(s) [attempted 5041/8908 = 56%, 1719 KB/s], Decompressed: 849\n2026-10-20T15:09:47.1263971Z Downloaded: 5145 file(s) [attempted 5145/8908 = 57%, 757 KB/s], Decompressed: 849\n2026-10-20T15:09:47.2419218Z Downloaded: 5237 file(s) [attempted 5237/8908 = 58%, 106 KB/s], Decompressed: 849\n2026-10-20T15:09:47.3445240Z Downloaded: 5328 file(s) [attempted 5328/8908 = 59%, 236 KB/s], Decompressed: 849\n2026-10-20T15:09:47.4458937Z Downloaded: 5439 file(s) [attempted 5439/8908 = 61%, 299 KB/s], Decompressed: 849\n2026-10-20T15:09:47.5464131Z Downloaded: 5513 file(s) [attempted 5513/8908 = 61%, 148 KB/s], Decompressed: 849\n2026-10-20T15:09:47.6530557Z Downloaded: 5621 file(s) [attempted 5621/8908 = 63%, 1319 KB/s], Decompressed: 849\n2026-10-20T15:09:47.7588422Z Downloaded: 5730 file(s) [attempted 5730/8908 = 64%, 202 KB/s], Decompressed: 849\n2026-10-20T15:09:47.8788585Z Downloaded: 5838 file(s) [attempted 5838/8908 = 65%, 1885 KB/s], Decompressed: 849\n2026-10-20T15:09:47.9811069Z Downloaded: 5917 file(s) [attempted 5917/8908 = 66%, 652 KB/s], Decompressed: 849\n2026-10-20T15:09:48.0894851Z Downloaded: 5980 file(s) [attempted 5980/8908 = 67%, 309 KB/s], Decompressed: 849\n2026-10-20T15:09:48.1922906Z Downloaded: 6073 file(s) [attempted 6073/8908 = 68%, 1475 KB/s], Decompressed: 849\n2026-10-20T15:09:48.2912081Z Downloaded: 6172 file(s) [attempted 6172/8908 = 69%, 1348 KB/s], Decompressed: 849\n2026-10-20T15:09:48.3957699Z Downloaded: 6273 file(s) [attempted 6273/8908 = 70%, 107 KB/s], Decompressed: 849\n2026-10-20T15:09:48.4960253Z Downloaded: 6381 file(s) [attempted 6381/8908 = 71%, 453 KB/s], Decompressed: 849\n2026-10-20T15:09:48.6015153Z Downloaded: 6485 file(s) [attempted 6485/8908 = 72%, 561 KB/s], Decompressed: 849\n2026-10-20T15:09:48.7018862Z Downloaded: 6571 file(s) [attempted 6571/8908 = 73%, 596 KB/s], Decompressed: 849\n2026-10-20T15:09:48.8081744Z Downloaded: 6679 file(s) [attempted 6679/8908 = 74%, 114 KB/s], Decompressed: 849\n2026-10-20T15:09:48.9085830Z Downloaded: 6802 file(s) [attempted 6802/8908 = 76%, 93 KB/s], Decompressed: 849\n2026-10-20T15:09:49.0088272Z Downloaded: 6925 file(s) [attempted 6925/8908 = 77%, 653 KB/s], Decompressed: 849\n2026-10-20T15:09:49.1093155Z Downloaded: 7077 file(s) [attempted 7077/8908 = 79%, 250 KB/s], Decompressed: 849\n2026-10-20T15:09:49.2168072Z Downloaded: 7218 file(s) [attempted 7218/8908 = 81%, 4332 KB/s], Decompressed: 849\n2026-10-20T15:09:49.3168329Z Downloaded: 7326 file(s) [attempted 7326/8908 = 82%, 3560 KB/s], Decompressed: 849\n2026-10-20T15:09:49.4175360Z Downloaded: 7473 file(s) [attempted 7473/8908 = 83%, 2415 KB/s], Decompressed: 849\n2026-10-20T15:09:49.5260416Z Downloaded: 7605 file(s) [attempted 7605/8908 = 85%, 1288 KB/s], Decompressed: 849\n2026-10-20T15:09:49.6283193Z Downloaded: 7680 file(s) [attempted 7680/8908 = 86%, 2430 KB/s], Decompressed: 849\n2026-10-20T15:09:49.7284706Z Downloaded: 7796 file(s) [attempted 7796/8908 = 87%, 5575 KB/s], Decompressed: 849\n2026-10-20T15:09:49.8300033Z Downloaded: 7959 file(s) [attempted 7959/8908 = 89%, 2890 KB/s], Decompressed: 849\n2026-10-20T15:09:49.9328377Z Downloaded: 8096 file(s) [attempted 8096/8908 = 90%, 234 KB/s], Decompressed: 849\n2026-10-20T15:09:50.0899660Z Downloaded: 8214 file(s) [attempted 8214/8908 = 92%, 775 KB/s], Decompressed: 849\n2026-10-20T15:09:50.1959776Z Downloaded: 8300 file(s) [attempted 8300/8908 = 93%, 1338 KB/s], Decompressed: 849\n2026-10-20T15:09:50.2993442Z Downloaded: 8425 file(s) [attempted 8425/8908 = 94%, 1341 KB/s], Decompressed: 849\n2026-10-20T15:09:50.4038382Z Downloaded: 8524 file(s) [attempted 8524/8908 = 95%, 345 KB/s], Decompressed: 849\n2026-10-20T15:09:50.5070916Z Downloaded: 8634 file(s) [attempted 8634/8908 = 96%, 655 KB/s], Decompressed: 849\n2026-10-20T15:09:50.6075890Z Downloaded: 8743 file(s) [attempted 8743/8908 = 98%, 511 KB/s], Decompressed: 849\n2026-10-20T15:09:50.7656641Z Downloaded: 8798 file(s) [attempted 8798/8908 = 98%, 4586 KB/s], Decompressed: 849\n2026-10-20T15:09:50.7719625Z Downloaded: 8906 file(s) [attempted 8906/8908 = 99%, 298 KB/s], Decompressed: 849\n2026-10-20T15:09:50.7721266Z Downloaded: 8908 file(s) [attempted 8908/8908 = 100%, 298 KB/s], Decompressed: 849\n2026-10-20T15:10:11.1472775Z Decompressed 8908 file(s)\n2026-10-20T15:10:11.1473116Z Already decompressed 8908 file(s)\n2026-10-20T15:10:11.2052429Z ##[endgroup]\n2026-10-20T15:10:11.2052600Z \n2026-10-20T15:10:11.2064272Z ##[end-action id=__leanprover_lean-action.__run_3;outcome=success;conclusion=success;duration_ms=92066]\n2026-10-20T15:10:11.2095793Z ##[start-action display=build d6g8k5htny-coder/Math-;id=__leanprover_lean-action.build]\n2026-10-20T15:10:11.2100876Z ##[end-action id=__leanprover_lean-action.build;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T15:10:11.2103142Z ##[start-action display=Run actions/cache/save@caa296126883cff596d87d8935842f9db880ef25;id=__leanprover_lean-action.__actions_cache_2]\n2026-10-20T15:10:11.2107118Z ##[end-action id=__leanprover_lean-action.__actions_cache_2;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T15:10:11.2111097Z ##[start-action display=test d6g8k5htny-coder/Math-;id=__leanprover_lean-action.test]\n2026-10-20T15:10:11.2115309Z ##[end-action id=__leanprover_lean-action.test;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T15:10:11.2118404Z ##[start-action display=lint d6g8k5htny-coder/Math-;id=__leanprover_lean-action.lint]\n2026-10-20T15:10:11.2122616Z ##[end-action id=__leanprover_lean-action.lint;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T15:10:11.2124431Z ##[start-action display=check reservoir eligibility;id=__leanprover_lean-action.__run_4]\n2026-10-20T15:10:11.2128185Z ##[end-action id=__leanprover_lean-action.__run_4;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T15:10:11.2130945Z ##[start-action display=check environment with leanchecker;id=__leanprover_lean-action.__run_5]\n2026-10-20T15:10:11.2135457Z ##[end-action id=__leanprover_lean-action.__run_5;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T15:10:11.2138102Z ##[start-action display=check environment with nanoda;id=__leanprover_lean-action.nanoda]\n2026-10-20T15:10:11.2141401Z ##[end-action id=__leanprover_lean-action.nanoda;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T15:10:11.2143777Z ##[start-action display=audit axioms with axiom-audit;id=__leanprover_lean-action.axiom-audit]\n2026-10-20T15:10:11.2147277Z ##[end-action id=__leanprover_lean-action.axiom-audit;outcome=skipped;conclusion=skipped;duration_ms=0]\n2026-10-20T15:10:11.2203628Z ##[group]Run cd formal\n2026-10-20T15:10:11.2203907Z \u001b[36;1mcd formal\u001b[0m\n2026-10-20T15:10:11.2204464Z \u001b[36;1mlake env python3 -B -S ../frontiers/critical_ridge_20261020/c299_hosted_verify.py execute --manifest-sha256 \"$C299_MANIFEST_SHA256\"\u001b[0m\n2026-10-20T15:10:11.2267557Z shell: /usr/bin/bash -e {0}\n2026-10-20T15:10:11.2267802Z env:\n2026-10-20T15:10:11.2267992Z LEAN_NUM_THREADS: 2\n2026-10-20T15:10:11.2268377Z C299_MANIFEST_SHA256: 6904d83df51715bdf52cbfaa56d3f68725cfed2dcfde66a69799ac5982e55a84\n2026-10-20T15:10:11.2268819Z ##[endgroup]\n2026-10-20T15:10:12.3132091Z C299 runtime-print-prefix: exit=0 timeout=False seconds=0.064259\n2026-10-20T15:10:12.3804565Z C299 runtime-version: exit=0 timeout=False seconds=0.064045\n2026-10-20T15:10:18.0095503Z C299 build-Lifetime: exit=0 timeout=False seconds=5.628061\n2026-10-20T15:10:23.0943611Z C299 build-TorusTopology: exit=0 timeout=False seconds=5.077087\n2026-10-20T15:10:31.1358221Z C299 build-MorseFiniteCritical: exit=0 timeout=False seconds=8.036327\n2026-10-20T15:10:52.1550503Z C299 build-CriticalRidge: exit=1 timeout=False seconds=21.013988\n2026-10-20T15:10:52.1557910Z Traceback (most recent call last):\n2026-10-20T15:10:52.1558513Z File \"/home/runner/work/Math-/Math-/formal/../frontiers/critical_ridge_20261020/c299_hosted_verify.py\", line 626, in \n2026-10-20T15:10:52.1559740Z main()\n2026-10-20T15:10:52.1560406Z File \"/home/runner/work/Math-/Math-/formal/../frontiers/critical_ridge_20261020/c299_hosted_verify.py\", line 622, in main\n2026-10-20T15:10:52.1562121Z execute(root, args.manifest_sha256)\n2026-10-20T15:10:52.1563339Z File \"/home/runner/work/Math-/Math-/formal/../frontiers/critical_ridge_20261020/c299_hosted_verify.py\", line 540, in execute\n2026-10-20T15:10:52.1565173Z rec, output, _ = run_phase('build-' + module, args, packet / 'project', env, evidence, report,\n2026-10-20T15:10:52.1566136Z ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n2026-10-20T15:10:52.1567574Z File \"/home/runner/work/Math-/Math-/formal/../frontiers/critical_ridge_20261020/c299_hosted_verify.py\", line 413, in run_phase\n2026-10-20T15:10:52.1568765Z raise RuntimeError(f'C299 {name} unexpected exit: {code}; timed_out={timed_out}; '\n2026-10-20T15:10:52.1570262Z RuntimeError: C299 build-CriticalRidge unexpected exit: 1; timed_out=False; spawn_error=None; object_error=build must add only its own target object outputs; environment_error=None\n2026-10-20T15:10:52.1990189Z ##[error]Process completed with exit code 1.\n2026-10-20T15:10:52.2100307Z ##[group]Run actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9\n2026-10-20T15:10:52.2100756Z with:\n2026-10-20T15:10:52.2100960Z name: c299-hosted-39445649166-1\n2026-10-20T15:10:52.2101226Z path: .lake/c299-hosted-evidence/\n2026-10-20T15:10:52.2101497Z include-hidden-files: true\n2026-10-20T15:10:52.2101739Z if-no-files-found: warn\n2026-10-20T15:10:52.2101963Z retention-days: 90\n2026-10-20T15:10:52.2102172Z compression-level: 6\n2026-10-20T15:10:52.2102392Z overwrite: false\n2026-10-20T15:10:52.2102593Z archive: true\n2026-10-20T15:10:52.2102784Z env:\n2026-10-20T15:10:52.2102973Z LEAN_NUM_THREADS: 2\n2026-10-20T15:10:52.2103359Z C299_MANIFEST_SHA256: 6904d83df51715bdf52cbfaa56d3f68725cfed2dcfde66a69799ac5982e55a84\n2026-10-20T15:10:52.2103801Z ##[endgroup]\n2026-10-20T15:10:52.3698265Z With the provided path, there will be 33 files uploaded\n2026-10-20T15:10:52.3699590Z Artifact name is valid!\n2026-10-20T15:10:52.3700999Z Root directory input is valid!\n2026-10-20T15:10:52.5809469Z Uploading artifact: c299-hosted-39445649166-1.zip\n2026-10-20T15:10:52.5850578Z Beginning upload of artifact content to blob storage\n2026-10-20T15:10:52.8020375Z Uploaded bytes 479791\n2026-10-20T15:10:52.8176734Z Finished uploading artifact content to blob storage!\n2026-10-20T15:10:52.8178046Z SHA256 digest of uploaded artifact is 48d0b2d8e894e64df5af2be860d82cee8965e41aef33bf7f7c405bcd69e330a0\n2026-10-20T15:10:52.8178921Z Finalizing artifact upload\n2026-10-20T15:10:53.1297943Z Artifact c299-hosted-39445649166-1 successfully finalized. Artifact ID 12276641293\n2026-10-20T15:10:53.1299300Z Artifact c299-hosted-39445649166-1 has been successfully uploaded! Final size is 479791 bytes. Artifact ID is 12276641293\n2026-10-20T15:10:53.1300804Z Artifact download URL: https://github.com/d6g8k5htny-coder/Math-/actions/runs/39445649166/artifacts/12276641293\n2026-10-20T15:10:53.1522423Z Post job cleanup.\n2026-10-20T15:10:53.2379156Z [command]/usr/bin/git version\n2026-10-20T15:10:53.2435812Z git version 2.55.0\n2026-10-20T15:10:53.2477651Z Temporarily overriding HOME='/home/runner/work/_temp/9e993735-822e-440a-a6bd-745a0f106d54' before making global git config changes\n2026-10-20T15:10:53.2479185Z Adding repository directory to the temporary git global config as a safe directory\n2026-10-20T15:10:53.2483752Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/Math-/Math-\n2026-10-20T15:10:53.2524267Z Removing SSH command configuration\n2026-10-20T15:10:53.2532378Z [command]/usr/bin/git config --local --name-only --get-regexp core\\.sshCommand\n2026-10-20T15:10:53.2560768Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'core\\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :\"\n2026-10-20T15:10:53.2844844Z Removing HTTP extra header\n2026-10-20T15:10:53.2850791Z [command]/usr/bin/git config --local --name-only --get-regexp http\\.https\\:\\/\\/github\\.com\\/\\.extraheader\n2026-10-20T15:10:53.2889735Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'http\\.https\\:\\/\\/github\\.com\\/\\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :\"\n2026-10-20T15:10:53.3145755Z Removing includeIf entries pointing to credentials config files\n2026-10-20T15:10:53.3154229Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\\.gitdir:\n2026-10-20T15:10:53.3192366Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url\n2026-10-20T15:10:53.3618140Z Cleaning up orphan processes\n" + }, + "isError": false +} diff --git a/frontiers/critical_ridge_20261020/hosted-development4/native/c299_dev_run4.json b/frontiers/critical_ridge_20261020/hosted-development4/native/c299_dev_run4.json new file mode 100644 index 000000000..7ad9dc021 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development4/native/c299_dev_run4.json @@ -0,0 +1,22 @@ +{ + "content": [ + { + "type": "text", + "text": "Action completed." + } + ], + "structuredContent": { + "content": "{\"id\":39445649166,\"name\":\"C299 critical ridge (hosted Lean, no scientific promotion)\",\"node_id\":\"WFR_kwLOUphbdM8AAAAJLyTXDg\",\"head_branch\":\"codex/c299-critical-ridge-20261020\",\"head_sha\":\"3111e77c882b4e441b3b4c5ed6f01da46cf8e34c\",\"path\":\".github/workflows/c299-critical-ridge.yml\",\"display_title\":\"C299: construct the actual negative partial-gradient ridge\",\"run_number\":4,\"event\":\"pull_request\",\"status\":\"completed\",\"conclusion\":\"failure\",\"workflow_id\":390636492,\"check_suite_id\":106891713210,\"check_suite_node_id\":\"CS_kwDOUphbdM8AAAAY4z4aug\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39445649166\",\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-/actions/runs/39445649166\",\"pull_requests\":[{\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/pulls/491\",\"id\":4937180021,\"number\":491,\"head\":{\"ref\":\"codex/c299-critical-ridge-20261020\",\"sha\":\"3111e77c882b4e441b3b4c5ed6f01da46cf8e34c\",\"repo\":{\"id\":1385716596,\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-\",\"name\":\"Math-\"}},\"base\":{\"ref\":\"main\",\"sha\":\"8c226134ac0a0169dbb43311082e5353ed5c922c\",\"repo\":{\"id\":1385716596,\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-\",\"name\":\"Math-\"}}}],\"created_at\":\"2026-10-20T15:08:20Z\",\"updated_at\":\"2026-10-20T15:10:55Z\",\"actor\":{\"login\":\"d6g8k5htny-coder\",\"id\":249851642,\"node_id\":\"U_kgDODuRu-g\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/249851642?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/d6g8k5htny-coder\",\"html_url\":\"https://github.com/d6g8k5htny-coder\",\"followers_url\":\"https://api.github.com/users/d6g8k5htny-coder/followers\",\"following_url\":\"https://api.github.com/users/d6g8k5htny-coder/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/d6g8k5htny-coder/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/d6g8k5htny-coder/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/d6g8k5htny-coder/subscriptions\",\"organizations_url\":\"https://api.github.com/users/d6g8k5htny-coder/orgs\",\"repos_url\":\"https://api.github.com/users/d6g8k5htny-coder/repos\",\"events_url\":\"https://api.github.com/users/d6g8k5htny-coder/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/d6g8k5htny-coder/received_events\",\"type\":\"User\",\"user_view_type\":\"public\",\"site_admin\":false},\"run_attempt\":1,\"referenced_workflows\":[],\"run_started_at\":\"2026-10-20T15:08:20Z\",\"triggering_actor\":{\"login\":\"d6g8k5htny-coder\",\"id\":249851642,\"node_id\":\"U_kgDODuRu-g\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/249851642?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/d6g8k5htny-coder\",\"html_url\":\"https://github.com/d6g8k5htny-coder\",\"followers_url\":\"https://api.github.com/users/d6g8k5htny-coder/followers\",\"following_url\":\"https://api.github.com/users/d6g8k5htny-coder/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/d6g8k5htny-coder/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/d6g8k5htny-coder/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/d6g8k5htny-coder/subscriptions\",\"organizations_url\":\"https://api.github.com/users/d6g8k5htny-coder/orgs\",\"repos_url\":\"https://api.github.com/users/d6g8k5htny-coder/repos\",\"events_url\":\"https://api.github.com/users/d6g8k5htny-coder/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/d6g8k5htny-coder/received_events\",\"type\":\"User\",\"user_view_type\":\"public\",\"site_admin\":false},\"jobs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39445649166/jobs\",\"logs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39445649166/logs\",\"check_suite_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/check-suites/106891713210\",\"artifacts_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39445649166/artifacts\",\"cancel_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39445649166/cancel\",\"rerun_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39445649166/rerun\",\"previous_attempt_url\":null,\"workflow_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/workflows/390636492\",\"head_commit\":{\"id\":\"3111e77c882b4e441b3b4c5ed6f01da46cf8e34c\",\"tree_id\":\"13365ac225eff028c2937459f01e3c4dcda9cab8\",\"message\":\"fix(C299): narrow derivative instance conversions without increasing caps\\n\\nRemove broad transparency options, preserve nine public interfaces and all\\nthree actual hosted failures. Candidate5 source review is development-scoped;\\ncompilation remains pending. AI work delegated for Dylan Roy; human review0.\",\"timestamp\":\"2026-10-20T15:06:06Z\",\"author\":{\"name\":\"Dylan Roy\",\"email\":\"249851642+d6g8k5htny-coder@users.noreply.github.com\"},\"committer\":{\"name\":\"Dylan Roy\",\"email\":\"249851642+d6g8k5htny-coder@users.noreply.github.com\"}},\"repository\":{\"id\":1385716596,\"node_id\":\"R_kgDOUphbdA\",\"name\":\"Math-\",\"full_name\":\"d6g8k5htny-coder/Math-\",\"private\":false,\"owner\":{\"login\":\"d6g8k5htny-coder\",\"id\":249851642,\"node_id\":\"U_kgDODuRu-g\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/249851642?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/d6g8k5htny-coder\",\"html_url\":\"https://github.com/d6g8k5htny-coder\",\"followers_url\":\"https://api.github.com/users/d6g8k5htny-coder/followers\",\"following_url\":\"https://api.github.com/users/d6g8k5htny-coder/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/d6g8k5htny-coder/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/d6g8k5htny-coder/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/d6g8k5htny-coder/subscriptions\",\"organizations_url\":\"https://api.github.com/users/d6g8k5htny-coder/orgs\",\"repos_url\":\"https://api.github.com/users/d6g8k5htny-coder/repos\",\"events_url\":\"https://api.github.com/users/d6g8k5htny-coder/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/d6g8k5htny-coder/received_events\",\"type\":\"User\",\"user_view_type\":\"public\",\"site_admin\":false},\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-\",\"description\":\"Proof vault for Gaussian random fields and persistent homology: full arguments, exact computations, source-bound reviews, and explicit open obligations.\",\"fork\":false,\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-\",\"forks_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/forks\",\"keys_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/teams\",\"hooks_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/hooks\",\"issue_events_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/events\",\"assignees_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/tags\",\"blobs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/languages\",\"stargazers_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/stargazers\",\"contributors_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/contributors\",\"subscribers_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/subscribers\",\"subscription_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/subscription\",\"commits_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/merges\",\"archive_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/downloads\",\"issues_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/labels{/name}\",\"releases_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/releases{/id}\",\"deployments_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/deployments\"},\"head_repository\":{\"id\":1385716596,\"node_id\":\"R_kgDOUphbdA\",\"name\":\"Math-\",\"full_name\":\"d6g8k5htny-coder/Math-\",\"private\":false,\"owner\":{\"login\":\"d6g8k5htny-coder\",\"id\":249851642,\"node_id\":\"U_kgDODuRu-g\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/249851642?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/d6g8k5htny-coder\",\"html_url\":\"https://github.com/d6g8k5htny-coder\",\"followers_url\":\"https://api.github.com/users/d6g8k5htny-coder/followers\",\"following_url\":\"https://api.github.com/users/d6g8k5htny-coder/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/d6g8k5htny-coder/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/d6g8k5htny-coder/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/d6g8k5htny-coder/subscriptions\",\"organizations_url\":\"https://api.github.com/users/d6g8k5htny-coder/orgs\",\"repos_url\":\"https://api.github.com/users/d6g8k5htny-coder/repos\",\"events_url\":\"https://api.github.com/users/d6g8k5htny-coder/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/d6g8k5htny-coder/received_events\",\"type\":\"User\",\"user_view_type\":\"public\",\"site_admin\":false},\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-\",\"description\":\"Proof vault for Gaussian random fields and persistent homology: full arguments, exact computations, source-bound reviews, and explicit open obligations.\",\"fork\":false,\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-\",\"forks_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/forks\",\"keys_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/teams\",\"hooks_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/hooks\",\"issue_events_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/events\",\"assignees_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/tags\",\"blobs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/languages\",\"stargazers_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/stargazers\",\"contributors_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/contributors\",\"subscribers_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/subscribers\",\"subscription_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/subscription\",\"commits_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/merges\",\"archive_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/downloads\",\"issues_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/labels{/name}\",\"releases_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/releases{/id}\",\"deployments_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/deployments\"}}", + "title": "39445649166", + "modified_date": null, + "url": "https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39445649166", + "display_url": "https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39445649166", + "display_title": "39445649166", + "structuredContent": { + "title": "39445649166", + "content": "{\"id\":39445649166,\"name\":\"C299 critical ridge (hosted Lean, no scientific promotion)\",\"node_id\":\"WFR_kwLOUphbdM8AAAAJLyTXDg\",\"head_branch\":\"codex/c299-critical-ridge-20261020\",\"head_sha\":\"3111e77c882b4e441b3b4c5ed6f01da46cf8e34c\",\"path\":\".github/workflows/c299-critical-ridge.yml\",\"display_title\":\"C299: construct the actual negative partial-gradient ridge\",\"run_number\":4,\"event\":\"pull_request\",\"status\":\"completed\",\"conclusion\":\"failure\",\"workflow_id\":390636492,\"check_suite_id\":106891713210,\"check_suite_node_id\":\"CS_kwDOUphbdM8AAAAY4z4aug\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39445649166\",\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-/actions/runs/39445649166\",\"pull_requests\":[{\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/pulls/491\",\"id\":4937180021,\"number\":491,\"head\":{\"ref\":\"codex/c299-critical-ridge-20261020\",\"sha\":\"3111e77c882b4e441b3b4c5ed6f01da46cf8e34c\",\"repo\":{\"id\":1385716596,\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-\",\"name\":\"Math-\"}},\"base\":{\"ref\":\"main\",\"sha\":\"8c226134ac0a0169dbb43311082e5353ed5c922c\",\"repo\":{\"id\":1385716596,\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-\",\"name\":\"Math-\"}}}],\"created_at\":\"2026-10-20T15:08:20Z\",\"updated_at\":\"2026-10-20T15:10:55Z\",\"actor\":{\"login\":\"d6g8k5htny-coder\",\"id\":249851642,\"node_id\":\"U_kgDODuRu-g\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/249851642?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/d6g8k5htny-coder\",\"html_url\":\"https://github.com/d6g8k5htny-coder\",\"followers_url\":\"https://api.github.com/users/d6g8k5htny-coder/followers\",\"following_url\":\"https://api.github.com/users/d6g8k5htny-coder/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/d6g8k5htny-coder/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/d6g8k5htny-coder/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/d6g8k5htny-coder/subscriptions\",\"organizations_url\":\"https://api.github.com/users/d6g8k5htny-coder/orgs\",\"repos_url\":\"https://api.github.com/users/d6g8k5htny-coder/repos\",\"events_url\":\"https://api.github.com/users/d6g8k5htny-coder/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/d6g8k5htny-coder/received_events\",\"type\":\"User\",\"user_view_type\":\"public\",\"site_admin\":false},\"run_attempt\":1,\"referenced_workflows\":[],\"run_started_at\":\"2026-10-20T15:08:20Z\",\"triggering_actor\":{\"login\":\"d6g8k5htny-coder\",\"id\":249851642,\"node_id\":\"U_kgDODuRu-g\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/249851642?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/d6g8k5htny-coder\",\"html_url\":\"https://github.com/d6g8k5htny-coder\",\"followers_url\":\"https://api.github.com/users/d6g8k5htny-coder/followers\",\"following_url\":\"https://api.github.com/users/d6g8k5htny-coder/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/d6g8k5htny-coder/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/d6g8k5htny-coder/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/d6g8k5htny-coder/subscriptions\",\"organizations_url\":\"https://api.github.com/users/d6g8k5htny-coder/orgs\",\"repos_url\":\"https://api.github.com/users/d6g8k5htny-coder/repos\",\"events_url\":\"https://api.github.com/users/d6g8k5htny-coder/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/d6g8k5htny-coder/received_events\",\"type\":\"User\",\"user_view_type\":\"public\",\"site_admin\":false},\"jobs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39445649166/jobs\",\"logs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39445649166/logs\",\"check_suite_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/check-suites/106891713210\",\"artifacts_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39445649166/artifacts\",\"cancel_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39445649166/cancel\",\"rerun_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39445649166/rerun\",\"previous_attempt_url\":null,\"workflow_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/workflows/390636492\",\"head_commit\":{\"id\":\"3111e77c882b4e441b3b4c5ed6f01da46cf8e34c\",\"tree_id\":\"13365ac225eff028c2937459f01e3c4dcda9cab8\",\"message\":\"fix(C299): narrow derivative instance conversions without increasing caps\\n\\nRemove broad transparency options, preserve nine public interfaces and all\\nthree actual hosted failures. Candidate5 source review is development-scoped;\\ncompilation remains pending. AI work delegated for Dylan Roy; human review0.\",\"timestamp\":\"2026-10-20T15:06:06Z\",\"author\":{\"name\":\"Dylan Roy\",\"email\":\"249851642+d6g8k5htny-coder@users.noreply.github.com\"},\"committer\":{\"name\":\"Dylan Roy\",\"email\":\"249851642+d6g8k5htny-coder@users.noreply.github.com\"}},\"repository\":{\"id\":1385716596,\"node_id\":\"R_kgDOUphbdA\",\"name\":\"Math-\",\"full_name\":\"d6g8k5htny-coder/Math-\",\"private\":false,\"owner\":{\"login\":\"d6g8k5htny-coder\",\"id\":249851642,\"node_id\":\"U_kgDODuRu-g\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/249851642?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/d6g8k5htny-coder\",\"html_url\":\"https://github.com/d6g8k5htny-coder\",\"followers_url\":\"https://api.github.com/users/d6g8k5htny-coder/followers\",\"following_url\":\"https://api.github.com/users/d6g8k5htny-coder/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/d6g8k5htny-coder/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/d6g8k5htny-coder/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/d6g8k5htny-coder/subscriptions\",\"organizations_url\":\"https://api.github.com/users/d6g8k5htny-coder/orgs\",\"repos_url\":\"https://api.github.com/users/d6g8k5htny-coder/repos\",\"events_url\":\"https://api.github.com/users/d6g8k5htny-coder/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/d6g8k5htny-coder/received_events\",\"type\":\"User\",\"user_view_type\":\"public\",\"site_admin\":false},\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-\",\"description\":\"Proof vault for Gaussian random fields and persistent homology: full arguments, exact computations, source-bound reviews, and explicit open obligations.\",\"fork\":false,\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-\",\"forks_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/forks\",\"keys_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/teams\",\"hooks_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/hooks\",\"issue_events_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/events\",\"assignees_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/tags\",\"blobs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/languages\",\"stargazers_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/stargazers\",\"contributors_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/contributors\",\"subscribers_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/subscribers\",\"subscription_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/subscription\",\"commits_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/merges\",\"archive_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/downloads\",\"issues_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/labels{/name}\",\"releases_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/releases{/id}\",\"deployments_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/deployments\"},\"head_repository\":{\"id\":1385716596,\"node_id\":\"R_kgDOUphbdA\",\"name\":\"Math-\",\"full_name\":\"d6g8k5htny-coder/Math-\",\"private\":false,\"owner\":{\"login\":\"d6g8k5htny-coder\",\"id\":249851642,\"node_id\":\"U_kgDODuRu-g\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/249851642?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/d6g8k5htny-coder\",\"html_url\":\"https://github.com/d6g8k5htny-coder\",\"followers_url\":\"https://api.github.com/users/d6g8k5htny-coder/followers\",\"following_url\":\"https://api.github.com/users/d6g8k5htny-coder/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/d6g8k5htny-coder/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/d6g8k5htny-coder/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/d6g8k5htny-coder/subscriptions\",\"organizations_url\":\"https://api.github.com/users/d6g8k5htny-coder/orgs\",\"repos_url\":\"https://api.github.com/users/d6g8k5htny-coder/repos\",\"events_url\":\"https://api.github.com/users/d6g8k5htny-coder/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/d6g8k5htny-coder/received_events\",\"type\":\"User\",\"user_view_type\":\"public\",\"site_admin\":false},\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-\",\"description\":\"Proof vault for Gaussian random fields and persistent homology: full arguments, exact computations, source-bound reviews, and explicit open obligations.\",\"fork\":false,\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-\",\"forks_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/forks\",\"keys_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/teams\",\"hooks_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/hooks\",\"issue_events_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/events\",\"assignees_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/tags\",\"blobs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/languages\",\"stargazers_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/stargazers\",\"contributors_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/contributors\",\"subscribers_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/subscribers\",\"subscription_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/subscription\",\"commits_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/merges\",\"archive_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/downloads\",\"issues_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/labels{/name}\",\"releases_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/releases{/id}\",\"deployments_url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/deployments\"}}", + "display_url": "https://api.github.com/repos/d6g8k5htny-coder/Math-/actions/runs/39445649166" + } + }, + "isError": false +} diff --git a/frontiers/critical_ridge_20261020/hosted-development4/native/c299_downstream4_jobs.json b/frontiers/critical_ridge_20261020/hosted-development4/native/c299_downstream4_jobs.json new file mode 100644 index 000000000..a6cda0291 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development4/native/c299_downstream4_jobs.json @@ -0,0 +1,199 @@ +{ + "content": [ + { + "type": "text", + "text": "Action completed." + } + ], + "structuredContent": { + "jobs": [ + { + "id": 118706708812, + "name": "downstream-replay", + "status": "completed", + "conclusion": "success", + "run_id": 39445649131, + "logs_url": null, + "steps": [ + { + "name": "Set up job", + "status": "completed", + "conclusion": "success", + "number": 1 + }, + { + "name": "Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1", + "status": "completed", + "conclusion": "success", + "number": 2 + }, + { + "name": "Run actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97", + "status": "completed", + "conclusion": "success", + "number": 3 + }, + { + "name": "Required-check integration controls in both Python modes", + "status": "completed", + "conclusion": "success", + "number": 4 + }, + { + "name": "Validation timeout evidence controls in both Python modes", + "status": "completed", + "conclusion": "success", + "number": 5 + }, + { + "name": "Verify exact sources, transition inputs and regressions", + "status": "completed", + "conclusion": "success", + "number": 6 + }, + { + "name": "P-C paired A/B source-bound conformance", + "status": "completed", + "conclusion": "success", + "number": 7 + }, + { + "name": "Retain evidence even on failure", + "status": "completed", + "conclusion": "success", + "number": 8 + }, + { + "name": "Bind existing checks to tested commit", + "status": "completed", + "conclusion": "success", + "number": 9 + }, + { + "name": "Post Run actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97", + "status": "completed", + "conclusion": "success", + "number": 17 + }, + { + "name": "Post Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1", + "status": "completed", + "conclusion": "success", + "number": 18 + }, + { + "name": "Complete job", + "status": "completed", + "conclusion": "success", + "number": 19 + } + ] + }, + { + "id": 118706709162, + "name": "formal / formal-evidence", + "status": "completed", + "conclusion": "success", + "run_id": 39445649131, + "logs_url": null, + "steps": [ + { + "name": "Set up job", + "status": "completed", + "conclusion": "success", + "number": 1 + }, + { + "name": "Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1", + "status": "completed", + "conclusion": "success", + "number": 2 + }, + { + "name": "Gate tests and exact source identity", + "status": "completed", + "conclusion": "success", + "number": 3 + }, + { + "name": "Install pinned Lean and retrieve dependency cache", + "status": "completed", + "conclusion": "success", + "number": 4 + }, + { + "name": "Build, recheck, audit axioms and execute negative controls", + "status": "completed", + "conclusion": "success", + "number": 5 + }, + { + "name": "Bind current-run receipt to required check", + "status": "completed", + "conclusion": "success", + "number": 6 + }, + { + "name": "Preserve logs and exact-run receipt", + "status": "completed", + "conclusion": "success", + "number": 7 + }, + { + "name": "Post Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1", + "status": "completed", + "conclusion": "success", + "number": 14 + }, + { + "name": "Complete job", + "status": "completed", + "conclusion": "success", + "number": 15 + } + ] + }, + { + "id": 118708387039, + "name": "math-downstream-gates", + "status": "completed", + "conclusion": "success", + "run_id": 39445649131, + "logs_url": null, + "steps": [ + { + "name": "Set up job", + "status": "completed", + "conclusion": "success", + "number": 1 + }, + { + "name": "Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1", + "status": "completed", + "conclusion": "success", + "number": 2 + }, + { + "name": "Require both checks and source-bound current-run formal success", + "status": "completed", + "conclusion": "success", + "number": 3 + }, + { + "name": "Post Run actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1", + "status": "completed", + "conclusion": "success", + "number": 6 + }, + { + "name": "Complete job", + "status": "completed", + "conclusion": "success", + "number": 7 + } + ] + } + ] + }, + "isError": false +} diff --git a/frontiers/critical_ridge_20261020/hosted-development4/native/c299_tested_merge4.json b/frontiers/critical_ridge_20261020/hosted-development4/native/c299_tested_merge4.json new file mode 100644 index 000000000..0e497b7fe --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development4/native/c299_tested_merge4.json @@ -0,0 +1,22 @@ +{ + "content": [ + { + "type": "text", + "text": "Action completed." + } + ], + "structuredContent": { + "content": "{\"sha\":\"d93ff50e029d0c6edb3f94f1889fcd991b85721b\",\"node_id\":\"C_kwDOUphbdNoAKGQ5M2ZmNTBlMDI5ZDBjNmVkYjNmOTRmMTg4OWZjZDk5MWI4NTcyMWI\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/d93ff50e029d0c6edb3f94f1889fcd991b85721b\",\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-/commit/d93ff50e029d0c6edb3f94f1889fcd991b85721b\",\"author\":{\"name\":\"Dylan Roy\",\"email\":\"249851642+d6g8k5htny-coder@users.noreply.github.com\",\"date\":\"2026-10-20T15:08:16Z\"},\"committer\":{\"name\":\"GitHub\",\"email\":\"noreply@github.com\",\"date\":\"2026-10-20T15:08:16Z\"},\"tree\":{\"sha\":\"568d2fb36e8098ae437a1616b21f5644f4eb3343\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/trees/568d2fb36e8098ae437a1616b21f5644f4eb3343\"},\"message\":\"Merge 3111e77c882b4e441b3b4c5ed6f01da46cf8e34c into 5e20834d7daccb8d6bf8b89036e8eb9eb98a1452\",\"parents\":[{\"sha\":\"5e20834d7daccb8d6bf8b89036e8eb9eb98a1452\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/5e20834d7daccb8d6bf8b89036e8eb9eb98a1452\",\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-/commit/5e20834d7daccb8d6bf8b89036e8eb9eb98a1452\"},{\"sha\":\"3111e77c882b4e441b3b4c5ed6f01da46cf8e34c\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/3111e77c882b4e441b3b4c5ed6f01da46cf8e34c\",\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-/commit/3111e77c882b4e441b3b4c5ed6f01da46cf8e34c\"}],\"verification\":{\"verified\":true,\"reason\":\"valid\",\"signature\":\"-----BEGIN PGP SIGNATURE-----\\n\\nwsFcBAABCAAQBQJq14PgCRC1aQ7uu5UhlAAAPyoQAGc/ffNq+LEs8TH55Q1ffVWj\\nqoCkHlS0m3qB6MitZmE7XYXvojRzXkIcW+Ov2jtVH9ivyAO3M0PecCPZWbX4U2ds\\n99P1qdSF51LVb1EA5NvkkuUVmsBTlU7rxBfU7XqzZNrv4iqIXlLjnAMU/ppqxOUK\\nuZoWripYeVUZbNaVfXTEbE3g3Pr+WdWjnb4yjdgidMZ/o7cYZ7YPX5J+pPOjviP7\\nJ0rn+SipfgATqMvAzhco6KlpGEUEv81oOiBcbhM0exy1ISeYrpupBB58Fu755Bu/\\nqMzecj9pWE2NzsZYF6ZO6j2KVFdrGBkacde37j7sx5972/vy0NWbmuvkYOrq3qs6\\nb7pvkMuvjSvYHCLcVaJRX3unAbS+TeZzrezaIl5uERXj2nLL3DE0RZDQbLalO1bY\\nim/85Vq5ka0oLaAuUuBRwIM5GyCR494eK1qBhqQ3MesEj9/OVSEfHdWXyj2X5xKG\\nxjN2m4sOWpSJenr+5a7RKYK1p0d4zk8INpwSQd0i2FcNU1OCWHTQ8GsKrtOHsqfh\\nXaE6qF7aEyDr07rm0rcA/NJpCGDaoF/MuXgLDxoELtHc9kqy88qyVO5JyWHniLUD\\n2w9aAB83f4cCavj0eLBZ/TFelDrdCZgRi9Y7N6UENKjElRqbzwzUgtAL/AGfALy8\\n27vbA4kwAbxZAGxbGgsz\\n=oAIv\\n-----END PGP SIGNATURE-----\\n\",\"payload\":\"tree 568d2fb36e8098ae437a1616b21f5644f4eb3343\\nparent 5e20834d7daccb8d6bf8b89036e8eb9eb98a1452\\nparent 3111e77c882b4e441b3b4c5ed6f01da46cf8e34c\\nauthor Dylan Roy <249851642+d6g8k5htny-coder@users.noreply.github.com> 1792508896 +0000\\ncommitter GitHub 1792508896 +0000\\n\\nMerge 3111e77c882b4e441b3b4c5ed6f01da46cf8e34c into 5e20834d7daccb8d6bf8b89036e8eb9eb98a1452\\n\",\"verified_at\":\"2026-10-20T15:09:06Z\"}}", + "title": "d93ff50e029d0c6edb3f94f1889fcd991b85721b", + "modified_date": null, + "url": "https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/d93ff50e029d0c6edb3f94f1889fcd991b85721b", + "display_url": "https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/d93ff50e029d0c6edb3f94f1889fcd991b85721b", + "display_title": "d93ff50e029d0c6edb3f94f1889fcd991b85721b", + "structuredContent": { + "title": "d93ff50e029d0c6edb3f94f1889fcd991b85721b", + "content": "{\"sha\":\"d93ff50e029d0c6edb3f94f1889fcd991b85721b\",\"node_id\":\"C_kwDOUphbdNoAKGQ5M2ZmNTBlMDI5ZDBjNmVkYjNmOTRmMTg4OWZjZDk5MWI4NTcyMWI\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/d93ff50e029d0c6edb3f94f1889fcd991b85721b\",\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-/commit/d93ff50e029d0c6edb3f94f1889fcd991b85721b\",\"author\":{\"name\":\"Dylan Roy\",\"email\":\"249851642+d6g8k5htny-coder@users.noreply.github.com\",\"date\":\"2026-10-20T15:08:16Z\"},\"committer\":{\"name\":\"GitHub\",\"email\":\"noreply@github.com\",\"date\":\"2026-10-20T15:08:16Z\"},\"tree\":{\"sha\":\"568d2fb36e8098ae437a1616b21f5644f4eb3343\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/trees/568d2fb36e8098ae437a1616b21f5644f4eb3343\"},\"message\":\"Merge 3111e77c882b4e441b3b4c5ed6f01da46cf8e34c into 5e20834d7daccb8d6bf8b89036e8eb9eb98a1452\",\"parents\":[{\"sha\":\"5e20834d7daccb8d6bf8b89036e8eb9eb98a1452\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/5e20834d7daccb8d6bf8b89036e8eb9eb98a1452\",\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-/commit/5e20834d7daccb8d6bf8b89036e8eb9eb98a1452\"},{\"sha\":\"3111e77c882b4e441b3b4c5ed6f01da46cf8e34c\",\"url\":\"https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/3111e77c882b4e441b3b4c5ed6f01da46cf8e34c\",\"html_url\":\"https://github.com/d6g8k5htny-coder/Math-/commit/3111e77c882b4e441b3b4c5ed6f01da46cf8e34c\"}],\"verification\":{\"verified\":true,\"reason\":\"valid\",\"signature\":\"-----BEGIN PGP SIGNATURE-----\\n\\nwsFcBAABCAAQBQJq14PgCRC1aQ7uu5UhlAAAPyoQAGc/ffNq+LEs8TH55Q1ffVWj\\nqoCkHlS0m3qB6MitZmE7XYXvojRzXkIcW+Ov2jtVH9ivyAO3M0PecCPZWbX4U2ds\\n99P1qdSF51LVb1EA5NvkkuUVmsBTlU7rxBfU7XqzZNrv4iqIXlLjnAMU/ppqxOUK\\nuZoWripYeVUZbNaVfXTEbE3g3Pr+WdWjnb4yjdgidMZ/o7cYZ7YPX5J+pPOjviP7\\nJ0rn+SipfgATqMvAzhco6KlpGEUEv81oOiBcbhM0exy1ISeYrpupBB58Fu755Bu/\\nqMzecj9pWE2NzsZYF6ZO6j2KVFdrGBkacde37j7sx5972/vy0NWbmuvkYOrq3qs6\\nb7pvkMuvjSvYHCLcVaJRX3unAbS+TeZzrezaIl5uERXj2nLL3DE0RZDQbLalO1bY\\nim/85Vq5ka0oLaAuUuBRwIM5GyCR494eK1qBhqQ3MesEj9/OVSEfHdWXyj2X5xKG\\nxjN2m4sOWpSJenr+5a7RKYK1p0d4zk8INpwSQd0i2FcNU1OCWHTQ8GsKrtOHsqfh\\nXaE6qF7aEyDr07rm0rcA/NJpCGDaoF/MuXgLDxoELtHc9kqy88qyVO5JyWHniLUD\\n2w9aAB83f4cCavj0eLBZ/TFelDrdCZgRi9Y7N6UENKjElRqbzwzUgtAL/AGfALy8\\n27vbA4kwAbxZAGxbGgsz\\n=oAIv\\n-----END PGP SIGNATURE-----\\n\",\"payload\":\"tree 568d2fb36e8098ae437a1616b21f5644f4eb3343\\nparent 5e20834d7daccb8d6bf8b89036e8eb9eb98a1452\\nparent 3111e77c882b4e441b3b4c5ed6f01da46cf8e34c\\nauthor Dylan Roy <249851642+d6g8k5htny-coder@users.noreply.github.com> 1792508896 +0000\\ncommitter GitHub 1792508896 +0000\\n\\nMerge 3111e77c882b4e441b3b4c5ed6f01da46cf8e34c into 5e20834d7daccb8d6bf8b89036e8eb9eb98a1452\\n\",\"verified_at\":\"2026-10-20T15:09:06Z\"}}", + "display_url": "https://api.github.com/repos/d6g8k5htny-coder/Math-/git/commits/d93ff50e029d0c6edb3f94f1889fcd991b85721b" + } + }, + "isError": false +} diff --git a/frontiers/critical_ridge_20261020/hosted-development4/runtime-print-prefix.receipt.json b/frontiers/critical_ridge_20261020/hosted-development4/runtime-print-prefix.receipt.json new file mode 100644 index 000000000..61f1b4f21 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development4/runtime-print-prefix.receipt.json @@ -0,0 +1,32 @@ +{ + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "--print-prefix" + ], + "cwd": "/home/runner/work/Math-/Math-/formal", + "duration_seconds": 0.064259, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T15:10:12.312091+00:00", + "name": "runtime-print-prefix", + "object_validation_error": null, + "objects_after": null, + "objects_before": null, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T15:10:12.247852+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 58, + "stdout_sha256": "e0e72101499ee5e5a1967519d9955a093a555b85d5073da4bdba8bdd4cb12617", + "timed_out": false, + "timeout_seconds": 30, + "unexpected_override_names": [] +} diff --git a/frontiers/critical_ridge_20261020/hosted-development4/runtime-print-prefix.stderr b/frontiers/critical_ridge_20261020/hosted-development4/runtime-print-prefix.stderr new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development4/runtime-print-prefix.stdout b/frontiers/critical_ridge_20261020/hosted-development4/runtime-print-prefix.stdout new file mode 100644 index 000000000..ea59f6ca2 --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development4/runtime-print-prefix.stdout @@ -0,0 +1 @@ +/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1 diff --git a/frontiers/critical_ridge_20261020/hosted-development4/runtime-version.receipt.json b/frontiers/critical_ridge_20261020/hosted-development4/runtime-version.receipt.json new file mode 100644 index 000000000..d70e36afd --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development4/runtime-version.receipt.json @@ -0,0 +1,32 @@ +{ + "command": [ + "/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin/lean", + "--version" + ], + "cwd": "/home/runner/work/Math-/Math-/formal", + "duration_seconds": 0.064045, + "environment_contract_sha256": "21131e64946a76b63b7979ab4e115aecebd9b452aa3da6cc661b7fa0f172c461", + "environment_sha256": "8447a19de42d9be71841e85ce65a7758efcd2045207590273a0430bc79f24adc", + "environment_validation_error": null, + "exit_code": 0, + "finished_at": "2026-10-20T15:10:12.379353+00:00", + "name": "runtime-version", + "object_validation_error": null, + "objects_after": null, + "objects_before": null, + "selected_environment": { + "LEAN_NUM_THREADS": "2", + "LEAN_PATH": "/home/runner/work/Math-/Math-/.lake/c299-hosted-evidence/objects:/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/lib/lean:/home/runner/work/Math-/Math-/formal/.lake/build/lib/lean:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/lib/lean", + "PATH": "/home/runner/work/Math-/Math-/formal/.lake/packages/Cli/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/batteries/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/Qq/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/aesop/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/proofwidgets/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/importGraph/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/LeanSearchClient/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/plausible/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/packages/mathlib/.lake/build/bin:/home/runner/work/Math-/Math-/formal/.lake/build/bin:/home/runner/.elan/toolchains/leanprover--lean4---v4.34.1/bin:/home/runner/.elan/bin:/home/runner/.elan/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" + }, + "spawn_error": null, + "started_at": "2026-10-20T15:10:12.315326+00:00", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 106, + "stdout_sha256": "355a9a028f81641782d75d6e6b58dec70f29d2f61238a9e271690259d9bf5680", + "timed_out": false, + "timeout_seconds": 30, + "unexpected_override_names": [] +} diff --git a/frontiers/critical_ridge_20261020/hosted-development4/runtime-version.stderr b/frontiers/critical_ridge_20261020/hosted-development4/runtime-version.stderr new file mode 100644 index 000000000..e69de29bb diff --git a/frontiers/critical_ridge_20261020/hosted-development4/runtime-version.stdout b/frontiers/critical_ridge_20261020/hosted-development4/runtime-version.stdout new file mode 100644 index 000000000..3bdff924e --- /dev/null +++ b/frontiers/critical_ridge_20261020/hosted-development4/runtime-version.stdout @@ -0,0 +1 @@ +Lean (version 4.34.1, x86_64-unknown-linux-gnu, commit 5045d0056413266e57c625dcd7c365b10e377c52, Release) diff --git a/frontiers/critical_ridge_20261020/project/CriticalRidge.lean b/frontiers/critical_ridge_20261020/project/CriticalRidge.lean index a17058a0b..458917f51 100644 --- a/frontiers/critical_ridge_20261020/project/CriticalRidge.lean +++ b/frontiers/critical_ridge_20261020/project/CriticalRidge.lean @@ -130,7 +130,11 @@ theorem negativePartialGradient_hasFDerivAt (f : E d → ℝ) (p : E d) first | rfl | (simp only [ContinuousLinearMap.comp_zero, zero_add] <;> - (ext q z; rfl)) + (apply ContinuousLinearMap.ext + intro q + apply ContinuousLinearMap.ext + intro z + rfl)) /-- One actual ridge and all four conclusions for the same chosen function. The equation is in the actual ambient function and actual subspace. -/ @@ -199,7 +203,7 @@ theorem exists_negative_partial_gradient_ridge first | rfl | exact Prod.ext rfl hr0) - (by convert! hgraph using 1 <;> rfl)) using 1 <;> rfl + (by convert! hgraph using 1)) using 1 have hid := hchain.unique hzero intro w z have h := congrArg (fun C : E d →L[ℝ] (V →L[ℝ] ℝ) => C w z) hid diff --git a/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_candidate6_source_addendum.md b/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_candidate6_source_addendum.md new file mode 100644 index 000000000..99ea594ae --- /dev/null +++ b/frontiers/critical_ridge_20261020/reviews/c299_nonauthor_candidate6_source_addendum.md @@ -0,0 +1,33 @@ +# C299 candidate6 nonauthor source-repair addendum + +Review time: 2026-10-20 15:15:51 UTC. Reviewer: OpenAI Codex `/root/c299_nonauthor_review`, delegated by `/root` for Dylan Roy. Source author: `/root/adapter_feasibility_c292`. Actual nonauthor review with same-provider source exposure; organizational/provider independence credit 0, human review credit 0, scientific effect NONE. + +**Disposition: ACCEPT_SCOPED_SOURCE_REPAIR for exact candidate6, limited to the final bounded hosted development attempt authorized by root.** The two diff hunks directly address the actual remaining candidate5 errors. I found no new source blocker. Candidate6 remains uncompiled, and this disposition does not establish a ridge object, kernel/census result, negative qualification or final acceptance. + +## Exact binding and failed predecessor + +Candidate6 `project/CriticalRidge.lean` is **9053 bytes**, SHA-256 `9ff65416927182f6dad06646f04821b3af6bdd131740d93bf229354a81e19c38`. The separately frozen source-attempt copy has the same freshly checked hash. `execution/author/CANDIDATE6.diff` is 821 bytes, SHA-256 `115d82a173293d95d418d2950724775c4a4152c55982c1dcaf32b366ae9732d8`; `CANDIDATE6_FREEZE.json` is 1352 bytes, SHA-256 `939794111ac7c956d9d9b1c2e98783f1059b24505883d6d00ea3710ffa2305b3`. Direct snapshot comparison with candidate5 `669b94138531a694f134d24ee9d34ecf6cda5ccec125e2bac279f9e49e1a4aae` reproduces exactly these hunks. + +The retained actual hosted4 result names run **39445649166**, attempt 1, PR491 head `3111e77c882b4e441b3b4c5ed6f01da46cf8e34c`, tested merge `d93ff50e029d0c6edb3f94f1889fcd991b85721b`, and status `HOLD_NOT_COMPLETED`. I read its context plus the full failing phase stdout and receipt. + +The stdout is 1601 bytes, SHA-256 `1cc98e9540608d20c0f1a9b66a0fdb3fcb4b5910ec671da7b1e8624c508d4d7c`; the phase receipt hashes to `b9a4454c5356a65f64d129141ddce26a6f8efd6673ef65f53f64592f23276406`. Actual candidate5 execution exited 1 after **21.013988 seconds**, without outer timeout or reported internal heartbeat failure. Three upstream objects remain; no ridge object or subsequent audit/kernel/negative evidence was produced. + +The complete diagnostic reports one unsolved `case hr`, a derivative-map equality precomposed with `ContinuousLinearMap.inr`, and two unreachable-tactic errors at line 202 columns 40 and 58. The source-author freeze binds that actual failure. `hosted-development4/DISPOSITION.json` was absent during this review; I do not claim to have read a separate disposition or newly verified the original remote archive. + +## Exact repair assessment + +I checked the pinned `ContinuousLinearMap.prod_ext` theorem in `PiProd.lean`: its registered extensionality rule splits equality of maps out of a product into `inl` and `inr` obligations. This explains the actual `hr` remaining after the prior generic `ext q z; rfl` sequence. My candidate5 review reconstructed the value-level equality but did not establish coverage of every tactic-generated branch; the actual failed run supplies that correction to the review record. + +Candidate6 replaces generic `ext` with two explicit applications of `ContinuousLinearMap.ext`. The first introduces one arbitrary argument of the actual product domain `E d × V`, without selecting the registered product-splitting rule. The second introduces one argument of the covector domain `V`. This gives one pointwise value equality for the nested linear maps, rather than separate left/right product obligations. After the existing `comp_zero` and `zero_add` reduction, both values are definitionally the application of `D²f p` to `ridgeAddition V q` and then to `z`, through the same subtype inclusion. The final `rfl` therefore targets the actual pointwise equality. I checked the pinned explicit extensionality signature, which requires only `∀ x, f x = g x`, and retained the earlier inspection of `compL`/`flip` application definitions. + +The second hunk removes exactly the two trailing `<;> rfl` sequences that the actual compiler identified as unreachable: one after converting `hgraph`, and one after the outer graph-chain-rule conversion. Their `convert!` invocations remain. No premise, derivative term, graph function, point equality or mathematical conclusion is removed. The actual diagnostic gives specific evidence that those trailing tactics were not being executed in candidate5; removing them preserves the proof work already performed and preserves the warning-as-error policy. + +The diff changes no public signature, import or mathematical definition. All nine declaration names/types remain unchanged. It adds no option, cap increase, linter suppression, axiom, `sorry`, `admit`, unsafe declaration or assumed ridge. The earlier mathematical construction and adversarial cases therefore retain their original scope. + +## Remaining gates + +This review is source-level evidence for the two exact edits, not a compiler observation for candidate6. The next hosted attempt must still demonstrate fresh successful compilation before any ridge formal claim. The full audit, four named kernels, actual negative fixtures and diagnostic qualification remain separate requirements. The final artifact master remains a source-reviewed verifier whose complete invocation is unobserved in this review. + +I performed source/diff/hash/receipt/API reads and wrote only this additive review. No author/support source was edited; no Lean, test, mathematical program, workflow or complete master was executed by me; no remote action occurred. Root owns publication byte binding, the declared hosted attempt and final custody. + +All earlier failed attempts and source dispositions remain immutable historical evidence. Critical basis, quotient/full LPC, C294 hclosedLPC, bars and broader scientific promotion remain OPEN.