Repository navigation
Conversation
Articles are the informal book: frontmatter and mathematics. Formalize's execution notes, and the Lean names, Mathlib gaps, and prior art agents already write into articles, were published as Lean commentary in the book. Give them one place per roadmap directory instead: an agents.md beside the articles, one section per article under a heading naming its file, deleted once the article is proved. The graph and its chapter check, the render copy, the publication revision, and both structure pages skip agents.md, matched ignoring case, so the notes are never nodes, never published, and editing them does not mark a site stale. Formalize and Roadmap write their notes there and nowhere else. A project whose CI pins an older AUTOFORM_REF reads agents.md as an article and fails check, so until the pin moves the skills keep notes in the report.
|
Superseded by the review of f13757c after the per-article notes redesign: #172 (comment) Review of #172 at 8e372ad. The graph, render, and hash changes are sound, but coverage still accepts the notes file as article evidence, and the old-pin caveat is wrong for notes files with an H1. Should fix
Golf
Nits
Checked, no change needed
Posted by PR swarm: PR Swarm Lead |
|
Review of #172 at f13757c (replaces the review of 8e372ad). The per-article hidden-notes design is sound and nothing blocks the merge, but audit reports note errors at wrong paths and the revision contract conflicts with the new audit rule. The earlier coverage, old-pin, dead- Should fix
Golf These edits, applied together with the audit fix and two new tests, keep the suites passing: test_graph 61 (the drop is the 2 agents.md cases), test_audit 27, test_render 78, test_skill_examples 26, ruff clean.
Nits
Checked, no change needed
Posted by PR swarm: PR Swarm Lead |
|
Re-checked at c2528c7. All four should-fix items from the review of f13757c5 are fixed, and each fix has a test that fails without it. Nothing blocks the merge.
The nits are closed too:
Optional golf, still open
Validation at c2528c7: test_audit 29, test_graph 69 and test_skill_examples 26 pass locally. Both mutations above were run against those tests. The CI test jobs are green; real Lean was still running at the time of writing. Posted by PR swarm: PR Swarm Lead |
|
Supersedes the “not ready” review of Final exact-head review at
Validation at this exact head:
|
|
Gap in the stale-note audit: In hartshorne and hatcher-at, the 9 Lean-side notes left after cleaning proved articles are all on chapter READMEs, and some are already stale. Possible fix: flag a container's note once every article it contains is proved. |
|
Supersedes the container stale-note gap reported here: #172 (comment) Fixed at exact head The roll-up is computed once, bottom-up and iteratively. A 1,200-level containment regression verifies that the audit does not recurse or rescan each subtree. Validation at this exact head:
#172 is ready for human review. |
Nothing told an agent whether the blueprint already held a result, so a Roadmap pass could add a second article for it and Formalize could prove a helper twice. `autoform search TARGET QUERY` answers in one local, read-only call, and each hit carries what a reuse decision needs: the statement as authored, the derived state, the Lean targets with file and line, the sources, and the articles that already depend on it. An article is a hit when every term occurs in one of its fields, after folding case, width, accents, typographic punctuation and invisible characters. Filler words such as "of" are dropped from the query and a word of letters loses a common ending, so "recovered" finds "recovers". An article holding the words as typed is listed before one that only a shortened word reaches, so shortening never hides a hit. Fields rank title, Lean name, the article's own path segment, statement, then containing titles. Full path IDs and qualified Lean names rank last, so a chapter directory or a namespace does not bury a statement match. The statement is matched as the site publishes it. Ordering adds one tie-break to the issue's: between hits with the same best field, the one whose weakest term sits in a better field is first. `## Execution notes` is not searched, because facebookresearch#172 moves those notes out of the article. Search keeps no index: each call reads every article and renders its statement. It rereads each article and refuses bytes other than those the graph was built from, so a hit belongs to the reported source revision. `--json` writes `autoform-search/v1`. Part of facebookresearch#143. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nothing told an agent whether the blueprint already held a result, so a Roadmap pass could add a second article for it and Formalize could prove a helper twice. `autoform search TARGET QUERY` answers in one local, read-only call, and each hit carries what a reuse decision needs: the statement as authored, the derived state, the Lean targets with file and line, the sources, and the articles that already depend on it. An article is a hit when every term occurs in one of its fields, after folding case, width, accents, typographic punctuation and invisible characters. Filler words such as "of" are dropped from the query and a word of letters loses a common ending, so "recovered" finds "recovers". A term sheds the sentence punctuation and quotation marks around it. An article holding the words as typed is listed before one that only a shortened word reaches, so shortening never hides a hit. Fields rank title, Lean name, the article's own path segment, statement, then containing titles. Full path IDs and qualified Lean names rank last, so a chapter directory or a namespace does not bury a statement match. Titles and the statement are matched as the site publishes them. Ordering adds one tie-break to the issue's: between hits with the same best field, the one whose weakest term sits in a better field is first. `## Execution notes` is not searched, because facebookresearch#172 moves those notes out of the article. Search keeps no index: each call reads every article and renders its statement. It rereads each article and refuses bytes other than those the graph was built from, so a hit belongs to the reported source revision. `--json` writes `autoform-search/v1`. Part of facebookresearch#143. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Correction to my earlier comment: its suggested fix ("every article it contains is proved") misses 5 of the 9 book notes, because sub-container READMEs and other non-formalizable pages don't derive Two gaps remain at
|
Nothing told an agent whether the blueprint already held a result, so a Roadmap pass could add a second article for it and Formalize could prove a helper twice. `autoform search TARGET QUERY` answers in one local, read-only call, and each hit carries what a reuse decision needs: the statement as authored, the derived state, the Lean targets with file and line, the sources, and the articles that already depend on it. An article is a hit when every term occurs in one of its fields, after folding case, width, accents, typographic punctuation and invisible characters. Filler words such as "of" are dropped from the query and a word of letters loses a common ending, so "recovered" finds "recovers". A term sheds the sentence punctuation, quotation marks, backticks and wrapping emphasis around it. Only the query is shortened, so shortening adds hits and never removes one. Fields rank title, Lean name, the article's own path segment, statement, then containing titles. Full path IDs and qualified Lean names rank last, so a chapter directory or a namespace does not bury a statement match. Titles and the statement are matched as the site publishes them. Ordering adds two tie-breaks to the issue's. Between hits with the same best field, one holding the words as typed is before one reached only through a shortened word, and then the one whose weakest term sits in a better field is first. `## Execution notes` is not searched, because facebookresearch#172 moves those notes out of the article. Search keeps no index: each call reads every article and renders its statement. It rereads each article and refuses bytes other than those the graph was built from, so a hit belongs to the reported source revision. `--json` writes `autoform-search/v1`. Part of facebookresearch#143. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nothing told an agent whether the blueprint already held a result, so a Roadmap pass could add a second article for it and Formalize could prove a helper twice. `autoform search TARGET QUERY` answers in one local, read-only call, and each hit carries what a reuse decision needs: the statement as authored, the derived state, the Lean targets with file and line, the sources, and the articles that already depend on it. An article is a hit when every term occurs in one of its fields, after folding case, width, accents, typographic punctuation and invisible characters. Filler words such as "of" are dropped from the query and a word of letters loses a common ending, so "recovered" finds "recovers". A term sheds the sentence punctuation, quotation marks, backticks and wrapping emphasis around it. Only the query is shortened, so shortening adds hits and never removes one. Fields rank title, Lean name, the article's own path segment, statement, then containing titles. Full path IDs and qualified Lean names rank last, so a chapter directory or a namespace does not bury a statement match. Titles and the statement are matched as the site publishes them. Ordering adds two tie-breaks to the issue's. Between hits with the same best field, one holding the words as typed is before one reached only through a shortened word, and then the one whose weakest term sits in a better field is first. `## Execution notes` is not searched, because facebookresearch#172 moves those notes out of the article. Search keeps no index: each call reads every article and renders its statement. It rereads each article and refuses bytes other than those the graph was built from, so a hit belongs to the reported source revision. `--json` writes `autoform-search/v1`. Part of facebookresearch#143. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nothing told an agent whether the blueprint already held a result, so a Roadmap pass could add a second article for it and Formalize could prove a helper twice. `autoform search TARGET QUERY` answers in one local, read-only call, and each hit carries what a reuse decision needs: the statement as authored, the derived state, the Lean targets with file and line, the sources, and the articles that already depend on it. An article is a hit when every term occurs in one of its fields, after folding case, width, accents, typographic punctuation and invisible characters. Filler words such as "of" are dropped from the query and a word of letters loses a common ending, so "recovered" finds "recovers". A term sheds the sentence punctuation, quotation marks, backticks and wrapping emphasis around it. Only the query is shortened, so shortening adds hits and never removes one. Fields rank title, Lean name, the article's own path segment, statement, then containing titles. Full path IDs and qualified Lean names rank last, so a chapter directory or a namespace does not bury a statement match. Titles and the statement are matched as the site publishes them. Ordering adds two tie-breaks to the issue's. Between hits with the same best field, one holding the words as typed is before one reached only through a shortened word, and then the one whose weakest term sits in a better field is first. `## Execution notes` is not searched, because facebookresearch#172 moves those notes out of the article. Search keeps no index: each call reads every article and renders its statement. It rereads each article and refuses bytes other than those the graph was built from, so a hit belongs to the reported source revision. `--json` writes `autoform-search/v1`. Part of facebookresearch#143. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Fixed the two gaps from the comment above:
Separately, |
Summary
blueprint/.implementation-notes/<article_id>.mdarticle_id, so article moves preserve them and independent article claims never share a note fileautoform checkreject noncanonical, malformed, empty, symlinked, unreadable, or orphaned notesautoform auditreport a note left after its article is proved, or after every formalizable descendant of a container is provedagents.mdand standardAGENTS.mduntouched as normal content/instructionsWhy this design
Implementation details should not clutter the mathematical wiki, but a shared
agents.mdcreated a reserved-name collision, cross-worker merge hotspot, filename-based stale state, and a hard migration for older pinned projects.The hidden per-article directory avoids those problems. Existing and older graph loaders scan only
blueprint/roadmap/, while existing renderers and structure views already omit hidden path components. No renderer exception or pin migration is required.Contract
.mdValidation
At exact implementation head before the final clean merge from current
main:make lintandmake check-example: passedAfter merging current
main, the focused tests, lint, diff check, andexample build pass. GitHub CI at
b032c03fwas green, including both Windowsand real-Lean jobs.
At
3e95335, which has Formalize delete stale notes, states the container rule exactly in the README and Roadmap skill, and passes a statement string to_ArticleShapein the deep-containment test to matchmain:make lintpasses locally, and GitHub CI is green for both the push and the merge withmain, including the Python 3.10 and 3.13 test jobs (lint, full suite, example build), Windows, and real-Lean jobs.