# Wake: Every Deleted Line Had a Reason (An Archival Git Necropolis)

> Source: <https://dev.to/shreyansh_agrahari_2009db/wake-every-deleted-line-had-a-reason-an-archival-git-necropolis-510o>
> Published: 2026-10-31 04:42:21+00:00

*This is a submission for the [Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine](https://dev.to/challenges/hacktoberfest-week4-2026-10-26).*

In commit `7e6f7eeac0c16d9abed2cb84ac4b2891a51fa3dc`, an open-source maintainer quietly removed `CONTRIBUTING.md` from `expressjs/cors`. 

It was 33 lines of history. If you look at Git log today, that file is just gone. But if you open **Wake**, that deletion is preserved forever on a stone slab:

**Born:** 2017-10-04 (Commit `78dd894`)

**Died:** 2025-11-30 (Commit `7e6f7ee`)

**Lifespan:** 2,979 days

**Last Words:** `"docs: revamp content (#374)"`

**Grounded Obituary:** *"Removed CONTRIBUTING.md after 2979 days. Purged 33 lines of historical code."*

**Citations:** `commit 7e6f7ee` *(clickable chip that expands the author, timestamp, and diff inline)* 

And then comes the twist.

When you look below the headstone, a solitary amber-gold warning appears: **`STILL HAUNTING`**. Wake's regex engine traced active survivor files across the repository and found that a living documentation file still contained a dangling markdown link pointing to that dead file.

This is **Wake**: an archival necropolis for dead code, and an exorcist for the ghosts left behind.

**Wake** is an end-to-end, local-first web application that inspects Git repositories, deterministically tracks deleted files, writes grounded obituaries using a local open-weight model (`gemma3:1b`), and locates the "ghosts"—active code, documentation, and configuration files that still reference things that died.

Wake was built around a strict principle of **Honest AI**:

`[TEMPLATE]`.` git apply`.` oklch(16% 0.01 260)`), hairline borders, 2px radii, self-hosted IBM Plex typography, and a single accent—Marigold (`oklch(78% 0.15 75)`)—strictly and solely reserved for active hauntings.
**Hosted Interactive Necropolis (Render Live):**

👉 [https://wake-necropolis.onrender.com](https://wake-necropolis.onrender.com)

*(Serves authentic precomputed real scans from `samples/wake.json` and `samples/cors.json` since free cloud containers lack local Ollama/GPU runtimes).*

**Video Walkthrough (1:12 Full HD 1080p with AI Narration):**

*Click the thumbnail above to play or download the 1080p MP4 walkthrough: [wake_demo_walkthrough.mp4](https://github.com/Shreyansh00987/Wake/raw/main/wake_demo_walkthrough.mp4)*

Wake was engineered with a modern, fully offline-capable stack:

`node:sqlite` (Node.js 22+ built-in C-SQLite engine with zero external compile dependencies).`child_process.spawn`) with `-M` rename detection. When a file is moved (e.g. `test/cors.js` -> `test/test.js`), Wake tracks the rename lineage and never falsely classifies it as a death.`@vscode/ripgrep` bundled binary executed with strict argument arrays (never shell-interpolated strings).`gemma3:1b` (806 MB, Q4_K_M quantization, licensed under the `@fontsource/ibm-plex-sans` and `@fontsource/ibm-plex-mono` for 100% offline functionality.

```
[Git Repo] 
   │
   ├─► git ls-files (Load surviving files)
   ├─► git log -M --name-status (Extract deletions & trace renames)
   │
   ▼
[Evidence Extraction] 
   │ (diffstat, birth SHA, death SHA, lifespan, authors, last words)
   │
   ▼
[Ollama Inference: gemma3:1b] ◄── [Structured JSON Schema]
   │
   ▼
[SHA Citation Verifier]
   ├── Valid citations? ──► [Verified Grounded Obituary]
   └── Hallucinated SHA? ──► [Deterministic Template Fallback]
   │
   ▼
[Ripgrep Haunting Detector]
   ├── Scan surviving code, docs, configs (excluding node_modules, lockfiles)
   └── Detect dangling imports & references
   │
   ▼
[Exorcise Engine] ──► Produces Copy-Only Unified Diff
```

To maintain total credibility, I evaluated Wake against **25 hand-labeled historical deletions** across three popular open-source repositories: `expressjs/cors` (MIT), `sindresorhus/is` (MIT), and `chalk/chalk` (MIT).

Here are the real, unvarnished measurements from `eval/RESULTS.md`:

| System / Model | Cases | Citation Validity Rate | Cause Accuracy | Avg Latency | Fallback Rate | 
|---|---|---|---|---|---|
| **Deterministic Template Engine** | 25 | **100.0%** (25/25) | **80.0%** (20/25) | < 1ms | 0% | 
| **gemma3:1b (Open-Weight)** | 25 | **80.0%** (20/25) | **28.0%** (7/25) | 1,964ms | 20% (5/25) | 
| **qwen2.5-coder:1.5b** | 25 | *Tested in prototype* | *Tested in prototype* | *N/A* | *N/A* | 

Building Wake entirely on open-source software and open-weight models was not a compromise—it was the only design that makes ethical sense for software developers:

`refactor` and an `abandoned_experiment` solely from short Git commit messages is noisy (28% exact cause match). The deterministic regex engine actually outperformed the 1B LLM on category categorization. However, the LLM excels at synthesizing the human summary.`test.js` or `data.ts`, searching for `test` across a codebase triggers hundreds of false positives. Wake mitigates this by requiring token lengths >= 4 characters and filtering common programming keywords, but maintainers must always review confidence scores.`samples/wake.json` and `samples/cors.json`). True real-time local scanning is intended for developers running `npm run dev` or `docker-compose up` on their own machines.
Code is written by humans. Every deleted file represented someone's late night, an architecture that served its time, or a lesson learned the hard way. Wake treats code history not as an untangled pile of diffs, but as a dignified cemetery.

And when you exorcise that final lingering ghost from your `README.md` or `package.json`, you give that deleted line the peace it deserves.
