Repository navigation
Conversation
proof: formalized without statement: formalized, or either without a lean: name, showed as proved and passed autoform check; only autoform audit flagged them, as proof-without-statement and missing-lean-target, and CI never runs audit. Routine retraction makes the half-retracted state more likely, so the loader now rejects both, under the audit's exact conditions: mathlib: true exempts neither, and lean: must yield a declaration name. Both audit findings are now unreachable and are removed, along with doctor's missing-lean-target code and work's roadmap:proof-without-statement blocker, whose only path was the same state. Tests that built such articles for other purposes now name a lean: declaration or drop the assertion; the tests of the removed findings and of the assumptions contract for a proof without its statement are gone. Status derivation needed no change: proved now implies stated.
The impact probe follows names, so a Markdown statement dependent whose Lean inlines the revised definition's body instead of naming it was not impacted, and the revision left it fully proved under the old meaning. The report now lists unused_statement_dependencies: the stated articles that reach the revised article through Markdown statement edges, transitively, but are not statement-impacted. They join claim_targets and keep the revision from being contained, and the text report prints them on one line. The README describes the field, what contained now requires, and how the revision contract treats such an article: re-reviewed under the new meaning like a statement-impacted one, keeping statement only after an Agent Review and otherwise recording statement: retracted.
The loader now refuses a formalized statement or proof without lean:, and a formalized proof without a formalized statement, so the random roadmaps stop emitting them and the invalid cases cover both refusals.
Contributor
Author
|
This cannot be retargeted or merged as-is.
Architecturally, fold H7 into #136 before |
This was referenced Oct 5, 2026
Contributor
Author
|
Replaced by #158 and #159. #158 carries the H2 commits (03bb33f, 3d1eb7d, 9446635) onto |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #115: the base is
open-statements-revision, so the diff is this PR's commits only. Retarget tomainonce #115 lands.This fixes two gaps from the #115 contract audit: H2 and H7.
What was wrong
proof: formalizedwithoutstatement: formalized, or either one without alean:name, showed as proved and passedautoform check. Onlyautoform auditflagged these states (proof-without-statement,missing-lean-target), and CI never runs audit. Open statements and a revision contract for shared Lean declarations #115 makes retraction routine, so a half-retracted article gets more likely.work impactfollows names. A Markdown statement dependent whose Lean inlines the revised definition's body, instead of naming it, was therefore not impacted, and the revision left it fully proved under the old meaning.Changes
mathlib: trueexempts neither, andlean:must yield a declaration name. The new load errors are:ID: proof: formalized needs statement: formalizedID: statement: formalized needs the lean: declaration that formalizes it(orproof:when only the proof is recorded)missing-lean-targetcode and work'sroadmap:proof-without-statementblocker, whose only path was the same state. Status derivation needed no change, since proved now implies stated.work impactreportsunused_statement_dependencies. These are the stated articles that reach the revised article through Markdown statement edges, transitively, but are not statement-impacted. They joinclaim_targetsand keep the revision from beingcontained, and the text report prints them on one line.containednow requires. It also says how the revision contract treats such an article: it is re-reviewed under the new meaning like a statement-impacted one, keepsstatementonly after an Agent Review, and otherwise recordsstatement: retracted.tests/test_contract.py, the random roadmaps now emit only states the loader accepts, and the invalid cases cover both new refusals.Tests
New:
tests/test_graph.py::test_rejects_formalized_work_the_lean_does_not_showtests/test_impact.py::test_stated_markdown_statement_dependents_the_lean_does_not_show_are_reportedtests/test_impact.py::test_an_unused_statement_dependency_alone_keeps_a_revision_from_being_containedLocal runs at
3d1eb7d:ruff check autoform_cli servers tests: clean.AUTOFORM_REQUIRE_REAL_LEAN_TESTS=1),tests/test_contract.py tests/test_impact.py: 64 passed;tests/test_lake_artifact_audit.py: 74 passed, 1 skipped. The skip istest_helper_runs_on_python_310, because python3.10 is not installed on this machine.tests/test_skeleton.pyplustests/test_project_inspect.py::test_stale_inherited_mathlib_is_ignored_by_real_lake: 162 passed.tests/test_scaffold.pypin tests. They fail only because my local clone has nooriginremote, soplugin_pin()finds no pin. In a clone withoriginthey pass (63 of 63), and they pass in CI.Caveats
lean:declaration or drop the assertion. Two tests are deleted along with the behavior they covered:test_proof_without_statement_returns_to_roadmapandtest_work_assumptions_bounds_a_proof_recorded_without_its_statement.test_audit_reports_formalizable_structure_and_inconsistent_checked_factsloses its inconsistent-facts half and is renamedtest_audit_reports_formalizable_structure.autoform checkwhere it passed before. The fix is to add thelean:name or drop the assertion, whichautoform auditalready asked for.mathlib: truearticle counts as stated. One whose Markdown statement depends on the revised article can therefore appear inunused_statement_dependenciesand inclaim_targets, although it has nothing to retract.autoform_cli/__main__.py:556still says the text report ofwork assumptionsnames conditional articles withoutlean:. After this change no such article exists, so the runtime-graph load that comment justifies is redundant. It is left as is.