Backup Page Freshness Preview Step 4 Implementation Summary

Stage 1 - Define backup snapshot summary

  • Changes:

    • Added a bounded five-item backup preview limit.

    • Added the canonical Backup snapshot summary contract using existing read-model rebuilt_at, repository_head, and content activity data.

    • Passed the summary into the canonical Backup page context without changing download routes.

  • Verification:

    • php -l src/ForumRewrite/Application.php — passed.

    • php tests/run.php LocalAppSmokeTest — all tests passed.

  • Notes:

    • The timestamp currently represents the read-model rebuild time, paired with the repository head recorded in the same metadata set.

Stage 2 - Render freshness and preview

  • Changes:

    • Extended the canonical Backup page with snapshot freshness metadata and repository identity.

    • Added recent included-item links, bounded-preview messaging, and an explicit empty-state message.

    • Added focused smoke assertions for the new Backup page content.

  • Verification:

    • php -l templates/pages/instance.php — passed.

    • php -l tests/LocalAppSmokeTest.php — passed.

    • php tests/run.php LocalAppSmokeTest::testApplicationRendersCoreRoutes — passed.

  • Notes:

    • Existing repository archive and SQLite download links remain unchanged.

Stage 3 - Invalidate static freshness artifacts

  • Changes:

    • Extended content-related static invalidation to remove Backup and Activity artifacts.

    • Covered both flat public artifacts and alternate Apache-friendly index layouts.

    • Added regression coverage for board, reply, identity-link, and approval invalidations.

  • Verification:

    • php tests/run.php LocalAppSmokeTest::testBackupStaticArtifactsAreInvalidatedByContentWrites LocalAppSmokeTest::testStaticArtifactBuilderWritesApacheFriendlyArtifactLayout LocalAppSmokeTest::testFrontControllerServesStaticArtifactForBackupAlias — all passed.

  • Notes:

    • Existing /backup/ and /tools/backup/ resolution already maps to the canonical instance artifact; no duplicate route artifact was introduced.

Stage 4 - Final verification

  • Changes:

    • Completed final regression coverage and manual static-artifact inspection.

  • Verification:

    • php tests/run.php LocalAppSmokeTest — all tests passed.

    • php tests/run.php — full repository test suite passed.

    • ./v3 build-static tests/fixtures/parity_minimal_v1 <temporary database> <temporary artifact root> followed by inspection of instance.html — freshness timestamp, repository snapshot, recent-items heading, and preview disclaimer all present.

  • Notes:

    • The feature is implemented without database schema changes or changes to download endpoint behavior.

  • Changes:

    • Added a direct link from the Backup freshness preview to the full Activity page.

    • Added a smoke assertion for the new navigation link.

  • Verification:

    • php -l templates/pages/instance.php — passed.

    • php -l tests/LocalAppSmokeTest.php — passed.

    • php tests/run.php LocalAppSmokeTest::testApplicationRendersCoreRoutes — passed.

  • Notes:

    • This is navigation only; snapshot metadata, preview limits, and download behavior are unchanged.