Skip to content

Commit 7dbd13f

Browse files
committed
Restore facts the README cut dropped or made false
- a.1: a module catalog or fully proved container reaches no source, a bare number cites nothing, and a last-component match counts any identifier, so a generic name can hide the citation warning. - a.2: a row or cell under a `hidden` attribute is not published, and CSS hides nothing. - a.3: the remote order for the default workflow pin, and that any installed plugin copy must match. - a.4: `project new` writes modes 0755/0644 whatever the umask. - b.1: a module catalog may be allowed open declarations (only `mathlib: true` and strict-policy articles are allowed nothing), and a pending catalog drops names a non-catalog article lists. - b.2: only a link to an existing regular Markdown file in the blueprint is a note; any other local link with a line fragment is a locator. - b.3: a `local` token or a differently scoped token can make the probe misread comments in a packet. - b.4: a catalog's Lean row shows its first eight names; a moved Markdown link keeps its decoded spelling and gets `./` before a colon. - b.6: packets omit local instances. - other.1: `work list` and `work context` refuse an article whose bytes changed after the graph loaded.
1 parent 5b88cc8 commit 7dbd13f

1 file changed

Lines changed: 54 additions & 40 deletions

File tree

‎autoform_cli/README.md‎

Lines changed: 54 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -263,10 +263,11 @@ module and imports), not a lowercase rename.
263263

264264
Generated workflows pin `--autoform-ref` or, by default, the HEAD commit of the
265265
Autoform checkout running the command (or of the marketplace checkout an
266-
installed plugin was copied from), when a safe remote has a cached tracking ref
267-
containing it, tracked files are clean, and the templates match it; an explicit
268-
`--autoform-source` gets no default ref. Without a ref the CI workflows are
269-
omitted.
266+
installed plugin was copied from), when a safe remote (Autoform's canonical
267+
repository, then `origin`, then `upstream`, then a unique remaining one) has a
268+
cached tracking ref containing it, tracked files are clean, and the templates
269+
and any installed plugin copy match it; an explicit `--autoform-source` gets no
270+
default ref. Without a ref the CI workflows are omitted.
270271

271272
### project
272273

@@ -286,13 +287,15 @@ manifest, blueprint, and site) in a private sibling directory and publishes it
286287
atomically: the target must be absent, nothing is overwritten, and a failed or
287288
concurrent creation leaves no partial target. A failure or interrupt after
288289
staging can leave a hidden `.autoform-new-*` directory in the parent, which the
289-
error mentions; inspect it before removing it. Its `lakefile.toml` sets
290-
`enableArtifactCache = true` and `restoreAllArtifacts = true`, so checkouts on
291-
the same toolchain share builds through Lake's artifact cache while each
292-
module's `.olean` stays in `.lake/build`. Package names cannot shadow Mathlib
293-
libraries such as `Archive` or `Counterexamples`. Workflows are pinned as
294-
[`init`](#init) pins them. Apart from local Git reads, the command runs no
295-
subprocesses, Lake, Lean, or network operations. Its errors name a code:
290+
error mentions; inspect it before removing it. The published tree has modes
291+
0755 for directories and executables and 0644 for other files, whatever the
292+
umask. Its `lakefile.toml` sets `enableArtifactCache = true` and
293+
`restoreAllArtifacts = true`, so checkouts on the same toolchain share builds
294+
through Lake's artifact cache while each module's `.olean` stays in
295+
`.lake/build`. Package names cannot shadow Mathlib libraries such as `Archive`
296+
or `Counterexamples`. Workflows are pinned as [`init`](#init) pins them. Apart
297+
from local Git reads, the command runs no subprocesses, Lake, Lean, or network
298+
operations. Its errors name a code:
296299

297300
- `project-parent-inaccessible` or `project-path-is-symlink`: the parent and
298301
its ancestors must be readable real directories, not links; on macOS, use
@@ -419,7 +422,10 @@ in an implementation note, a page under `blueprint/sources/` or one a
419422
component. Declarations citing a source only through their module docstring
420423
share one warning, silenced by naming the module, or in full a citing
421424
declaration; importing the module names it, importing only an umbrella module
422-
above it does not. Reuse such a declaration and name it in the note of each
425+
above it does not. A module catalog, or a container whose scope is all proved,
426+
reaches nothing; a bare number cites nothing; and a last-component match counts
427+
any identifier, comments and strings included, so a generic one such as `symm`
428+
can hide the warning. Reuse such a declaration and name it in the note of each
423429
article using it; when it does not apply, name it on the source's page under
424430
`blueprint/sources/` with why, which outlasts the notes.
425431

@@ -468,10 +474,11 @@ every catalog below it.
468474
The contract is read as published Markdown and fails closed; `coverage.py`
469475
gives the edge cases:
470476

471-
- A table in an HTML comment, a code block, or under a `hidden` attribute is not
472-
the contract. A table that does not publish, such as one a paragraph runs
473-
into, is rejected, and a published one the audit does not recognise, such as
474-
one without outer pipes, is named.
477+
- A table in an HTML comment or a code block is not the contract, nor is a
478+
table, row, or cell under its own or an ancestor's `hidden` attribute; CSS,
479+
such as a class or `display: none`, hides nothing. A table that does not
480+
publish, such as one a paragraph runs into, is rejected, and a published one
481+
the audit does not recognise, such as one without outer pipes, is named.
475482
- A comment or code block between rows is reported, with the rows stranded
476483
below it, rather than truncating the contract. A row holding an unclosed
477484
`<style>`, or evidence with a raw `<table>`, is refused.
@@ -525,12 +532,12 @@ whose definitions are the trusted base and are not expanded.
525532
This is the one command that runs Lean: for each module that declares a
526533
selected target it runs a probe with `lake env lean` against the built project,
527534
so a packet reads as it does to a file importing that module, without the
528-
declaration's local notation, `open`, or `set_option`. Lake must first confirm,
529-
without rebuilding, that every probed module is fresh: a missing
530-
`lake-manifest.json`, stale artifacts, or a source tree that changes during
531-
extraction fails the command, and since the check rewrites Lake's `.hash` files,
532-
`.lake` must be writable. The helper module `autoform-skeleton-helper` and its
533-
`AutoformSkeleton` namespace are reserved; a module that takes one, on
535+
declaration's local notation, local instances, `open`, or `set_option`. Lake
536+
must first confirm, without rebuilding, that every probed module is fresh: a
537+
missing `lake-manifest.json`, stale artifacts, or a source tree that changes
538+
during extraction fails the command, and since the check rewrites Lake's `.hash`
539+
files, `.lake` must be writable. The helper module `autoform-skeleton-helper`
540+
and its `AutoformSkeleton` namespace are reserved; a module that takes one, on
534541
`LEAN_PATH` or not, breaks the probes that import it.
535542

536543
A `partial def` in a trusted closure is refused, and so is a declaration with
@@ -580,19 +587,20 @@ its value), and the source of every project definition the statement rests on,
580587
with comments and docstrings removed. Source that may hide a comment the probe
581588
cannot find, such as a body using `local notation`, is withheld, as is an
582589
equation-style statement that cannot be parsed outside its file; both are
583-
marked `-- source not shown`, and the article stays resolved. Source text is
584-
not notation-proof; only the kernel material is.
590+
marked `-- source not shown`, and the article stays resolved. A `local` token,
591+
or a token the file had in scope differently from the probe, can make the probe
592+
show code as a comment or a comment as code. Source text is not notation-proof;
593+
only the kernel material is.
585594

586-
A `## Sources` link to a non-Markdown file inside the blueprint with a
587-
`#L<start>-L<end>` fragment, such as
595+
A local `## Sources` link with a `#L<start>-L<end>` fragment, such as
588596
`../../../sources/lebl-ra/ch-real-nums.tex#L693-L714`, is a locator naming the
589-
statement's source passage; the same link to a Markdown file is a note. A first
590-
local locator that names no readable, regular, UTF-8 lines inside the
591-
blueprint leaves its article's declarations unresolved. `--passages DIR`, which
592-
requires `--packets`, writes each article's passage to its own managed
593-
directory beside `article.lean`, the joint packet of the article's
594-
declarations: a faithfulness judge gets the article packet and passage, an
595-
auditor of one declaration only its packet.
597+
statement's source passage, unless it names an existing regular Markdown file
598+
in the blueprint, which is a note. A first local locator that names no
599+
readable, regular, UTF-8 lines inside the blueprint leaves its article's
600+
declarations unresolved. `--passages DIR`, which requires `--packets`, writes
601+
each article's passage to its own managed directory beside `article.lean`, the
602+
joint packet of the article's declarations: a faithfulness judge gets the
603+
article packet and passage, an auditor of one declaration only its packet.
596604

597605
#### Skeleton hashes
598606

@@ -755,7 +763,8 @@ article recording `statement: retracted` is a revision: JSON `revision` is true,
755763
and the text adds a `revision:` (list) or `Revision:` (context) line saying to
756764
start from `autoform work impact` (see the [revision
757765
contract](reference/claims-and-revisions.md#revision-contract)). Both commands
758-
are read-only.
766+
are read-only, and refuse an article whose bytes changed after the graph loaded;
767+
rerun once the project is idle.
759768

760769
Under the open policy the text of `work list` starts with an `Open statements:
761770
allowed` line and adds an `assumes:` line under each item resting on open
@@ -778,9 +787,11 @@ assumes open statements. `--json` writes the `autoform-assumptions/v1` contract
778787
CI audits the build against: every article whose `lean:` names a declaration,
779788
with `open`, `assumes`, and `allowed_open_declarations` (the open declarations
780789
its Lean may reach, plus its own when it is open). A `mathlib: true` article
781-
(state `mathlib`) and a module catalog are never open and are allowed nothing,
782-
nor is any article under the strict policy; CI checks that every listed name
783-
exists. It reads Markdown only and needs no Lean build.
790+
(state `mathlib`) is never open and is allowed nothing, nor is any article under
791+
the strict policy. A module catalog is never open; under the open policy, one
792+
that is not proved keeps only the names no non-catalog article's `lean:` lists,
793+
and is left out when none remain. CI checks that every listed name exists. It
794+
reads Markdown only and needs no Lean build.
784795

785796
#### work impact
786797

@@ -1022,9 +1033,12 @@ to the bundled viewer, and their schemas may change. Every generated site
10221033
projection uses the same JSON-derived explorer. A formal statement links to the
10231034
smallest scope holding it, as `<scope>.html#node=<id>`; only a legacy
10241035
`dependencies/full.html#node=<id>` link redirects. A `lean:` declaration that
1025-
resolves to a repository permalink gets a source link. The explorer shows a
1026-
title as typed, and render percent-encodes each link it writes from file and
1027-
folder names, so no name can make a `javascript:` URL.
1036+
resolves to a repository permalink gets a source link; a catalog's Lean row
1037+
shows its first eight names and counts the rest. The explorer shows a title as
1038+
typed, and render percent-encodes each link it writes from file and folder
1039+
names, such as the book's previous and next links, while a Markdown link it
1040+
moves keeps its decoded spelling and starts with `./` when its first segment
1041+
holds a colon, so no name can make a `javascript:` URL.
10281042

10291043
Render writes no Mermaid graph of its own. Authored Mermaid remains supported in
10301044
the vault and book, drawn in strict mode with plain-text labels and loaded only

0 commit comments

Comments
 (0)