{"slug": "commitmortem-a-post-mortem-for-abandoned-code", "title": "Commitmortem: a post-mortem for abandoned code", "summary": "A developer built Commitmortem, a tool that turns abandoned public GitHub repositories into memorial pages, lets users question an AI imitation of the maintainer with answers that must cite real commits or issues, generates a technical-debt \"haunting report\" with file and line references, and attempts small fixes in a sandboxed copy without pushing anything. The project, submitted to the Ghost in the Machine challenge, uses Gemma 4 models (gemma-4-31b-it for reasoning and gemma-4-26b-a4b-it for fast tasks) via the Gemini API, with deterministic offline fallbacks for every model step and an open harness that loads seven SKILL.md agent skills. The developer says ghost output is labeled \"AI imitation based on public commits\" and uses only public data.", "body_md": "Submission for the Ghost in the Machine challenge\n\n**What I Built**\n\nEvery abandoned repository is a kind of ghost: the intent, the arguments and the people behind it are buried in commits nobody reads. Commitmortem turns a dead public repo into a digital ofrenda (the Día de los Muertos memorial altar), lets you talk to an AI imitation of its maintainer, and then tries to bring the project back to life.\n\nPaste a GitHub URL or a local path, and Commitmortem:\n\nRemembers. It reads the full commit history and issues and builds a memorial page. Each milestone commit becomes a candle, each contributor gets a portrait frame with marigolds sized by activity, and open issues appear as “unanswered prayers”. A short calavera epitaph teases the project, never its people.\n\nAnswers through a séance. You ask the ghost questions. Every answer must cite real commits or issues ([commit:abc1234], [issue:#7]). If nothing in the history matches, it says it doesn’t remember instead of guessing.\n\nHaunts. A haunting report turns technical debt into hauntings, with a severity, a real file and line, and a suggested fix.\n\nResurrects. In a sandbox copy, the agent runs the project’s checks and tries up to three small fixes. It shows the steps, the logs and a diff, and it never pushes anything.\n\n**Screenshots:**\n\n**Code:**\n\n**A post-mortem for abandoned code.** Commitmortem turns a dead public repository into a digital *ofrenda*, lets you question an AI imitation of its maintainer, and then tries to bring the project back to life in a sandbox.\n\nBuilt for the **Ghost in the Machine** challenge with **Gemma 4** and an open skill harness.\n\n| Process | What you get | \n|---|---|\n| **I. Ofrenda** | A memorial page: calavera epitaph, a candle per milestone commit, a portrait frame per contributor with marigolds sized by activity, and open issues as \"unanswered prayers\" | \n| **II. Séance** | Ask the ghost a question. Every answer cites real commits or issues ( `[commit:abc1234]` ,`[issue:#7]` ). If nothing matches, it says it does not remember | \n| **III. Haunting report** | Technical debt phrased as hauntings, each with a severity, a real file and line, and a suggested fix | \n| **IV. Resurrect** | An agent copies the repo into a sandbox, runs | \n\npython3 demo/make_fixture.py\n\npython3 -m server.app demo/sample-dead-repo\n\n**How I Used Gemma 4**\n\nGemma 4 is called through the Gemini API (gemma-4-31b-it for reasoning, gemma-4-26b-a4b-it for fast tasks). It does four jobs:\n\nTask    What Gemma does\n\nSéance Answers in the maintainer’s commit-message style from retrieved commits and issues, with citations\n\nOfrenda Writes a short remembrance for each contributor using only facts from the data\n\nCalavera    Writes a respectful, humorous verse in the calavera tradition\n\nResurrection    Reads the failing build log and the source files and proposes the smallest patch\n\n[After your real Gemma run, add one line with what you measured, for example how many séance answers passed the citation check on the first try, and the response time.]\n\nKeeping the ghost honest. Every claim must cite a retrieved commit or issue. A post-check regenerates an answer with no valid citation once, then falls back to a plain answer built straight from the retrieved items. Ghost output always carries the label “AI imitation based on public commits”, and the tool uses public data only.\n\nBuilt to survive failure. Every Gemma step has a deterministic offline fallback, so the demo still runs with no API key or network. That is how I tested it end to end.\n\n**Open-source harness and skills**\n\nThe repo includes seven agent skills as SKILL.md files (scan-repo, ofrenda-builder, seance, haunting-report, calavera, resurrect, oral-history). A small open harness (harness/) loads them, routes each call to its module, caps the number of steps and writes a trace of every call. Resurrection is sandboxed: temporary copy only, allow-listed commands, a step cap, and nothing is pushed or published.\n\n**Limits and what’s next**\n\nOffline fixes cover Python only. Other languages need Gemma to propose patches.\n\nThe oral-history interview mode (a Gemma-led interview that saves a maintainer’s own story) is specified but not built.\n\nNext: a hosted demo and deeper issue and diff summarization.\n\n**Prize categories**\n\nBest Use of Gemma 4\n\nDigitalOcean Best Open-Source AI Project", "url": "https://wpnews.pro/news/commitmortem-a-post-mortem-for-abandoned-code", "canonical_source": "https://dev.to/aniruddha_shirke_10/commitmortem-a-post-mortem-for-abandoned-code-1k28", "published_at": "2026-10-31 16:41:42+00:00", "updated_at": "2026-10-31 16:52:22.010499+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "large-language-models", "developer-tools"], "entities": ["Commitmortem", "Gemma 4", "Gemini API", "GitHub", "Ghost in the Machine"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/commitmortem-a-post-mortem-for-abandoned-code", "markdown": "https://wpnews.pro/news/commitmortem-a-post-mortem-for-abandoned-code.md", "text": "https://wpnews.pro/news/commitmortem-a-post-mortem-for-abandoned-code.txt", "jsonld": "https://wpnews.pro/news/commitmortem-a-post-mortem-for-abandoned-code.jsonld"}}