Skip to content

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.

SelvedgeBlamePrompt
Reasoning sourceCaptured live, by the agent in the same context that produced the changePrompt-only
GranularityEntity — DB column, table, env var, dep, API route, functionLine
MechanismMCP server — the agent calls it as work happensGit hook
GroupingChangesets — named feature/task slugs across many entitiesNone
Prior attemptsYesprior_attempts surfaces tried-and-rejected pathsNone
StorageSQLite, zero depsLocal
  • 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 / diff before it acts.
  • Changesets group a feature’s events across files; BlamePrompt has no grouping.

If you only want the prompt-of-record stapled to a line and nothing more, BlamePrompt is the minimal version of the idea.