for the last few releases selvedge has been a write-only thing. an AI agent edits a column, calls log_change, and the reasoning gets captured into a little SQLite file under .selvedge/ next to your code. useful, but one-directional. the agent wrote to the store and then never looked at it again.
v0.3.7 is the release where that flips. there's a new MCP tool called prior_attempts, and the whole point of it is that the agent calls it before it changes something — not after. before editing users.email, the agent asks selvedge: what happened the last time someone touched this? who tried what, when, and why was it reverted?
this is the brand-defining release, so let me walk through why it's built the way it is.
the default flow used to be one-directional
here's what selvedge looked like through v0.3.6. an agent refactors users.email, and on its way out it calls log_change with a reasoning string — "tightened the email validator to reject plus-addressing per the billing team's request." that reasoning lands in the store. later, a human runs selvedge blame users.email from the CLI and reads it back.






