Skip to content

History rewrite: purge retired books, generated output, and legacy project blobs #3

Description

@DataForSolution

Why this issue exists

Current main has been cleaned through PR #10. Ordinary commits have removed generated output, redistributed third-party material, duplicate notebooks, local environments, and unreferenced binary assets from the live branch, but those objects may still exist in reachable Git history.

A one-time controlled history rewrite is therefore still required to make the repository materially smaller and to remove confirmed retired third-party/generated blobs from historical commits.

Current rewrite baseline

As of 2026-08-21 after PR #10:

  • main: 6282f0af7591761b6922140d1b6bc9adba91be42
  • GitHub-reported repository size: 1,118,991 KB (about 1.07 GiB)
  • open pull requests: none
  • the nine merged cleanup branch refs were force-moved to the current main commit, so they no longer point to earlier cleanup tips
  • tag enumeration remains pending local mirror inspection
  • deployment checks from Netlify/Vercel remain a separate pre-existing configuration issue

The remaining branch names are retained only for audit continuity; all observed cleanup branches now resolve to the same current main commit. During the local mirror preflight, verify every branch/tag ref before and after filtering.

Confirmed history-purge paths

Remove these paths from rewritten reachable history:

  • assets/books/
  • _site/
  • _site - Copy/
  • _projects-Tempo/
  • _projects/
  • projects/
  • venv/
  • flask_app/
  • LLmachinPath.txt
  • allfileshas.txt
  • rebuild.md
  • test.html
  • test.md
  • index-old.md
  • assets/pdfs/2025-06-17-flexible-analytical-life-cycle.pdf
  • toolkits/cheatsheets/
  • toolkits/notebooks/

These are confirmed generated/local, redistributed third-party, temporary/duplicate, or superseded historical paths. Current main now uses canonical portfolio projects, official documentation, and publisher links instead of those copies.

Retired from live main, but preserve historical copies until archive/provenance classification

PR #10 removed these four unreferenced binaries from the live site and added exact ignore rules, but their historical objects must not be purged until they have been inspected and, if appropriate, archived independently:

  • assets/documents/chest-cancer-detection.pdf
  • assets/videos/background-video.mp4
  • assets/videos/llmachine.mp4
  • assets/toolkits/study_planners/ML_Study_Planner_60Days.pdf

No maintained page referenced them. Exact copies were not located in the connected Drive archive. Their absence from Drive is not evidence that they are disposable. Before filtering history, recover them from the untouched mirror, inspect provenance, and copy any original/valuable material to an independent archive or canonical project location.

Also preserve unless positively identified as obsolete:

  • 176a0dc33af44f8289727353bf462244.txt — resembles an external verification token
  • projects-new.html — intentionally redirects the legacy project route to /projects/

Required preflight

  1. Current-branch cleanup: completed through PR Retire unreferenced binary assets from the live site #10.
  2. Clone a fresh local mirror of the repository from GitHub.
  3. Record main, every branch, every tag, and remote configuration.
  4. Make an independent untouched mirror backup before rewriting.
  5. From that mirror, enumerate historical paths and largest blobs.
  6. Recover and classify/archive the four PR Retire unreferenced binary assets from the live site #10 binaries before deciding whether to add them to the purge command.
  7. Capture repository size and largest-blob baseline. GitHub baseline recorded above; local mirror/object size still required.
  8. Verify the Jekyll source builds from current main without committed generated output.
  9. Confirm no credentials, private/local paths, redistributed material, or other unwanted data remain in reachable history.
  10. Use git filter-repo; do not perform piecemeal history edits.
  11. Re-clone the rewritten repository into a clean directory and validate it before force-pushing.
  12. Coordinate every branch/tag ref; do not rewrite only main while stale refs preserve the old graph.
  13. Keep the untouched rollback mirror until GitHub Pages and repository validation are complete.

Post-rewrite validation

  • clean clone/fetch succeeds
  • git fsck --full passes
  • Jekyll source builds successfully
  • GitHub Pages renders the expected site
  • /projects/ shows only the curated ten-project portfolio
  • /projects-new/ redirects to /projects/
  • /ebooks/ remains the retirement/resource notice
  • the Flexible Analytical Life Cycle post links to the publisher rather than hosting the publisher PDF
  • /toolkits/ links to official documentation and the canonical Chest CT project
  • every confirmed purge path is absent from rewritten reachable history
  • archived/provenance-unknown assets are preserved independently before any historical removal
  • cleanup branch/tag refs do not retain the pre-rewrite graph
  • repository size is materially lower than the 1,118,991 KB GitHub baseline and the recorded local mirror baseline

Deployment integration note

Netlify and Vercel status checks are failing on cleanup PRs and were confirmed to be pre-existing rather than introduced by the latest content changes. Treat that as separate deployment-configuration debt. It does not replace local Jekyll build and clean-reclone validation for the history rewrite.

Coordination note

A history rewrite changes commit IDs and requires force-updating Git refs. Anyone with an existing clone must re-clone or deliberately reset afterward. Perform the rewrite from a verified local mirror/backup, not through GitHub file APIs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions