Repository navigation
Make check and audit see the blueprint render publishes - #380
Conversation
Render reads a copy of the vault without hidden paths or the root views it rebuilds; check and audit read the vault itself, so the two disagreed (#206). They now apply render's rule: - Hidden files and folders under roadmap/ are no part of the roadmap: they hold no articles, need no chapter page, and a symbolic link among them, such as an editor's lock file, no longer fails check. A dependency on a hidden page names the hidden path. - An .implementation-notes folder under roadmap/ fails with its own message; before, only its notes parsing as broken articles caught it. - A Sources or coverage link to a root view render writes fails in check, audit and render alike. The list is markdown.GENERATED_VIEWS, shared with render. - audit skips hidden coverage files, which render never publishes. - No hidden article is loaded any more, so the exemption for one citing a hidden path goes.
- audit names a misplaced .implementation-notes folder at any depth under roadmap/, not only directly under it. - The generated-view message says render omits the vault's copy: render writes dependencies.md and structure.md itself and writes none of the retired views. The README says check rejects such Sources links, and audit and render such coverage evidence; check reads no coverage. - A dependency that steps through a hidden folder and back out fails, as it does in render, whose copy has no hidden folder. - Tests pin the hidden-only chapter, a nested sources/structure.md, the nested notes folder and the hidden step; long lines and stale docstrings.
|
Review: ready to merge (reviewed at ddf13e3). The session that wrote this PR also wrote this review; an independent reviewer checked 29f6fe5 first. The design holds.
Tests now kill the two mutants that survived. Two coverage gaps from before this PR remain, and the body lists them: CI is green on every job, and the PR merges cleanly with main 8f778bc. Its conflicts with #90, #378 and the #215 stack are import lines and Posted by Claude Code (348 worker session). |
Conflicts, resolved by keeping both sides: - graph.py and render.py import lists; - render's _GENERATED_FILES: main's GENERATED_VIEWS plus this branch's graph_pages.PROJECT_PAYLOAD and the manifest; - load_publication_source: this branch's atlas.json prefix with #381's unpublished article IDs.
Main brought #380 (check and audit see the blueprint render publishes) and #381 (published: false folders are checked, not rendered). render.py's imports gain GENERATED_VIEWS, and _GENERATED_FILES is main's GENERATED_VIEWS | {PUBLICATION_MANIFEST} beside the static-file allowlist. _capture_blueprint now also returns the unpublished folders' article IDs, so publication_issues unpacks it; the page check skips those folders, as render does.
…complete the changelog --version now prints debrief_orchestrator.autoform_version(), the string a debrief records, so a plugin checkout shows its commit beside the version main keeps between releases. A custom action reads it only when --version is given, since it runs git. The release test monkeypatches the version lookup instead of skipping when autoform is not installed, checks that only --version reads the version, and checks that the changelog's newest release heading names the project version. The changelog adds the dashboard (#91), implementation notes (#172), unpublished folders (#381), --version, and #376, #380, #392, #394 and #406; corrects the library line; and regroups #362, #365 and #67. The CLI reference documents --version.
Summary
Fixes #206. Render reads a copy of the vault that leaves out hidden paths and the root views it generates, while
checkandauditread the vault itself, so the two disagreed. On main eadde9b, with the bundled example:check/auditrenderroadmap/.../.draft.md../structure.md.helper.md.#eligibility.mdcheckandauditnow apply render's rule:roadmap/are no part of the roadmap. These are files and folders with a part starting with..check.checktoo, as it already did in render..x/../b.md, since render's copy has no.xto step through..implementation-notesfolder anywhere underroadmap/fails with its own message: nothing reads it there.auditnames the folder itself. Before, it was caught only because its notes parsed as broken articles.dependencies.md,structure.md,progress.md,dependencies.html,graph.html) are rejected: "names a generated view, which render omits".dependencies.mdandstructure.mditself, and none of the retired views. So a link to one is checked against nothing render reads, and a view is no coverage evidence.checkandauditreject such a## Sourceslink.auditand render reject such coverage evidence;checkreads no coverage, here as on main.markdown.GENERATED_VIEWS, so the link check and render share it.auditskips hidden coverage files, which render never publishes.Still open, from before this PR
../.x/../roadmap/a.md, passesauditand fails render, which opens it in its copy. A Sources link of that form is fine, because render rewrites it as text. Fixing this needs a coverage-only rule in the shared link check and reverses an assertion from Make check reject Sources links to hidden paths #321, so it is left for a decision.../Structure.mdbeside a vaultstructure.mdpassesauditand fails render, which matches view names case-sensitively.Tests
test_check_ignores_hidden_roadmap_entries_as_render_does: a hidden page, a hidden folder without a chapter page, a folder holding only a hidden page, and a lock symlink;test_a_dependency_on_a_hidden_page_names_the_hidden_path, including.x/../cited.md;test_check_rejects_a_sources_link_to_a_generated_view;test_an_implementation_note_for_a_hidden_page_names_no_article;test_audit_skips_a_hidden_coverage_file_as_render_does;test_local_targets_are_resolved_against_the_boundary: links tostructure.mdanddependencies.md, andsources/structure.md, which is no view.test_audit_reports_a_misplaced_notes_directory_where_it_isexpects the finding at the folder itself, atroadmap/and atroadmap/chapter/.GENERATED_VIEWSback besideresolved_path, clear of the stack's new constants;ruff check autoform_cli servers testsis clean, and no added code line is over 120 columns.Overlap
Merges cleanly with main 90f6cd1. Against open PRs it adds only import and constant conflicts:
from .markdown import (...)list: keep both, adding_is_hidden_path;from .markdown importlines: keep both, addingGENERATED_VIEWS;_GENERATED_FILES, where Scale roadmap inventories and the full DAG explorer #90 addsgraph_pages.PROJECT_PAYLOAD(dependencies.json). Add"dependencies.json"tomarkdown.GENERATED_VIEWS, so links to it fail too, and keep_GENERATED_FILES = GENERATED_VIEWS | {PUBLICATION_MANIFEST}.markdown.py's__all__, where this addsGENERATED_VIEWSand the stack addsFORMULA_CLASS: keep both;from .markdown import, where this addsGENERATED_VIEWS: add it to the stack's list.Next
The other option you asked for in #206, a folder that
checkvalidates but render does not publish, is #381, stacked on this one.