Selvedge vs. BlamePrompt
BlamePrompt records the prompt behind a line. Selvedge records the full structured change event — entity, change type, diff, the agent’s reasoning, and the changeset it belongs to — and lets the agent query it back.
| Selvedge | BlamePrompt | |
|---|---|---|
| Reasoning source | Captured live, by the agent in the same context that produced the change | Prompt-only |
| Granularity | Entity — DB column, table, env var, dep, API route, function | Line |
| Mechanism | MCP server — the agent calls it as work happens | Git hook |
| Grouping | Changesets — named feature/task slugs across many entities | None |
| Prior attempts | Yes — prior_attempts surfaces tried-and-rejected paths | None |
| Storage | SQLite, zero deps | Local |
Where Selvedge is different
Section titled “Where Selvedge is different”- Reasoning vs. raw prompt. BlamePrompt keeps the prompt text. Selvedge keeps the agent’s intent for this change, validated for quality (empty / generic reasoning is flagged in
selvedge stats). - Entity-level attribution with prefix queries, not line attribution that decays as code moves.
- The agent can read its history via
prior_attempts/blame/diffbefore it acts. - Changesets group a feature’s events across files; BlamePrompt has no grouping.
When BlamePrompt might fit you better
Section titled “When BlamePrompt might fit you better”If you only want the prompt-of-record stapled to a line and nothing more, BlamePrompt is the minimal version of the idea.