Repository navigation
Conversation
`work impact R --declaration X` skipped X when listing helpers, so when no article named X its claim set held only R's target. Two revisions of the same unowned helper from different articles then each claimed only their own article and could both edit X. A revised declaration no article names is now claimed under every owner's target, or under the `lean/<slug>-<digest>` key an unowned helper gets, and `contained` holds exactly when the revised article's target is the only one, so such a revision is never reported as safe to make in place under R's claim alone. Restored from closed #115 (cc36d27), which the split omitted, and adapted to plural helper owners.
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 and what contained now requires. How the revision contract treats such an article belongs with the contract, in the open-statements layer. Restored from closed #115 (d9f9e94) and adapted to this layer's plural helper owners and Lean source and build revision lines.
A mathlib: true article counts as stated, so one whose Markdown statement depends on the revised article was reported in unused_statement_dependencies and claimed, although its statement is a Mathlib declaration that cannot use the revised one and the loader refuses to retract it. Restored from closed #115's review follow-ups (3bc24df).
work impact checked Markdown paths only against the selected article. With --declaration X where another article T names X, or owns it when no article does, a stated article whose Markdown statement rests on T was neither reported in unused_statement_dependencies nor claimed, although inlining X changes its statement, while T and the articles depending on T were reported as missing a dependency path. Both checks now start from the revised article and every article naming a revised declaration or, when none names it, owning it; an unowned declaration adds no article.
Contributor
Author
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.
This PR restores the
work impactfixes that the split of #115 left out and applies the #136-layer parts of the review on #142. It targetssplit/revision-impactso the changes land beforeautoform-impact/v1freezes.--declarationno article names like an unowned helper: under every owner's target, or its ownlean/<slug>-<digest>key when it has no owner.containedthen requires the revised article's target to be the only claim target.unused_statement_dependencies: the stated articles whose Markdown statement rests on the revision through statement edges, but which are not statement-impacted. They joinclaim_targetsand rule outcontained. The probe follows names, so it misses a dependent whose Lean inlines a revised definition's body.mathlib: truearticles out of that list. Their statement is a Mathlib declaration, and the loader refuses to retract them.Before 70fe798,
--declaration Xchecked paths only from the selected article, which had two failures when X was named by another article T:The fff95bd port keeps this layer's plural helper owners, its exact source inventory, and its Markdown, Lean-source and build revision lines. The exact-format test now pins those revision lines (review item 4).
The revision-contract text that says how to handle an unused statement dependency belongs with the contract in the open-statements layer. It goes in the companion PR into
split/open-statements.Tests
ruff checkis clean.tests/test_impact.py,tests/test_claims.pyandtests/test_work.pygave 166 passed, 1 skipped, 1 failed. The failure istest_cas_acquire_race_has_exactly_one_winner, which timed out joining its threads under a load average above 300 and passes when run alone.AUTOFORM_REQUIRE_REAL_LEAN_TESTS=1),tests/test_impact.pygave 66 passed.