Ensure completed analyses in the database always have a static HTML page under site/analyses/, and prevent the analyses index from linking to pages that do not exist.
Add a validation/backfill pass in post_process.py that:
site/analyses/*.html are backfilled during dashboard regeneration.site/analyses/index.html.ensure_completed_analysis_html() to validate static coverage for completed analyses._write_analysis_summary_html() so missing completed analyses can still get a minimal HTML page from DB state.regenerate_dashboard() to run the coverage check first and skip links for analyses absent from the static inventory.tests/test_post_process_analysis_html.py to lock in the regression coverage.post_process.py contains the missing completed-analysis backfill path, and ran focused verification of the two regression cases plus py_compile.