Skip to content

Make check and audit see the blueprint render publishes - #380

Merged
Deicyde merged 4 commits into
mainfrom
fix/check-hidden-paths-like-render
Oct 19, 2026
Merged

Deicyde merged 4 commits into
mainfrom
fix/check-hidden-paths-like-render

Conversation

@Deicyde

@Deicyde Deicyde commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Fixes #206. Render reads a copy of the vault that leaves out hidden paths and the root views it generates, while check and audit read the vault itself, so the two disagreed. On main eadde9b, with the bundled example:

case check / audit render
a dependency on roadmap/.../.draft.md passes (11 articles) fails: "dependency target does not exist"
coverage evidence links ../structure.md passes, no finding fails: "coverage link does not resolve to a file"
an unreferenced hidden page .helper.md counted (11 articles) silently left out (7 nodes, as without it)
an Emacs lock symlink .#eligibility.md fails: "roadmap contains a symbolic link" passes

check and audit now apply render's rule:

  • Hidden entries under roadmap/ are no part of the roadmap. These are files and folders with a part starting with ..
    • They are not articles, and a hidden folder, or one holding only hidden pages, needs no chapter page.
    • A symbolic link among them, such as an editor's lock file, no longer fails check.
    • An implementation note keyed to a hidden page now names no article in check too, as it already did in render.
  • A dependency on a hidden page fails with "dependency target names a hidden path, which render omits". So does one that steps through a hidden folder and back out, such as .x/../b.md, since render's copy has no .x to step through.
  • An .implementation-notes folder anywhere under roadmap/ fails with its own message: nothing reads it there. audit names the folder itself. Before, it was caught only because its notes parsed as broken articles.
  • Links to the views generated at the blueprint root (dependencies.md, structure.md, progress.md, dependencies.html, graph.html) are rejected: "names a generated view, which render omits".
    • Render omits the vault's copies: it writes dependencies.md and structure.md itself, and none of the retired views. So a link to one is checked against nothing render reads, and a view is no coverage evidence.
    • check and audit reject such a ## Sources link. audit and render reject such coverage evidence; check reads no coverage, here as on main.
    • This settles the question check/audit and render disagree on hidden and generated-view targets (#165) #206 left open.
    • The list moves to markdown.GENERATED_VIEWS, so the link check and render share it.
  • audit skips hidden coverage files, which render never publishes.
  • Removed exemption: a hidden article citing a hidden path used to be exempt from the hidden-target check. No hidden article is loaded any more, so that exemption goes.

Still open, from before this PR

  • Coverage evidence that steps through an existing hidden folder and back out, such as ../.x/../roadmap/a.md, passes audit and 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.
  • On macOS, coverage evidence ../Structure.md beside a vault structure.md passes audit and fails render, which matches view names case-sensitively.

Tests

  • New, each failing on main eadde9b:
    • 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;
    • in test_local_targets_are_resolved_against_the_boundary: links to structure.md and dependencies.md, and sources/structure.md, which is no view.
  • Changed: test_audit_reports_a_misplaced_notes_directory_where_it_is expects the finding at the folder itself, at roadmap/ and at roadmap/chapter/.
  • An independent review's mutants are now killed: the hidden-only chapter, the view rule at any depth, the nested notes folder and the hidden step each fail a test when reverted.
  • Runs:
    • at 29f6fe5: test_graph, test_markdown, test_audit, test_coverage, test_runtime, test_visualization, test_render, test_skill_examples, test_cli, test_doctor, test_search and test_work pass on Python 3.13; the first five pass on 3.10;
    • at 4d57a6d: test_graph, test_markdown, test_audit and test_coverage pass on 3.13 (420); ddf13e3 adds only a README wrap and moves GENERATED_VIEWS back beside resolved_path, clear of the stack's new constants;
    • ruff check autoform_cli servers tests is 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:

Next

The other option you asked for in #206, a folder that check validates but render does not publish, is #381, stacked on this one.

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.
@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Meta Open Source bot. label Oct 18, 2026
- 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.
@Deicyde

Deicyde commented Oct 19, 2026

Copy link
Copy Markdown
Contributor Author

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. check and audit now skip what render's capture skips, and the body's cases agree across all three commands. The independent review found four real problems, fixed in 4d57a6d:

  • audit gave a nested misplaced .implementation-notes folder a path that does not exist.
  • The generated-view message said render generates progress.md, graph.html and dependencies.html, which it no longer writes. It now says render omits the vault's copy.
  • The body and README said check rejects coverage links, but check reads no coverage.
  • A dependency that steps through a hidden folder and back out (.x/../b.md) still passed check and failed render.

Tests now kill the two mutants that survived. Two coverage gaps from before this PR remain, and the body lists them: ../.x/../ evidence, and case variants of view names on macOS. Neither is a regression.

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 _GENERATED_FILES; the body gives the resolutions. Mark it ready and merge it before #381.

Posted by Claude Code (348 worker session).

@Deicyde
Deicyde marked this pull request as ready for review October 19, 2026 02:30
@Deicyde
Deicyde merged commit b608784 into main Oct 19, 2026
7 checks passed
@Deicyde
Deicyde deleted the fix/check-hidden-paths-like-render branch October 19, 2026 02:31
Deicyde added a commit that referenced this pull request Oct 19, 2026
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.
Deicyde added a commit that referenced this pull request Oct 19, 2026
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.
Deicyde added a commit that referenced this pull request Oct 21, 2026
…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.
@Deicyde Deicyde mentioned this pull request Oct 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Meta Open Source bot.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

check/audit and render disagree on hidden and generated-view targets (#165)

1 participant