Catch agent drift.
You asked for one thing. The agent built it. And more.
$ curl https://tern.sh/install | bashcontent_copyCopy install commandSee what your agent decided on its own.
Tern ties every code change to the prompt that asked for it, and flags the decisions the agent made on its own. The decisions, not a paragraph about them.
func GetUser(id) (*UserV1, error) { u, err := store.Get(id) if err != nil { return nil, err // fall back to v2 r, _ := v2.Get(ctx, id) return v2ToV1(r.User), nil } return toV1(u), nil}// toV1 maps a user to the v1 shape.func toV1(u *User) *UserV1 { return &UserV1{ID: u.ID}}On a store miss it returns whatever the v2 service hands back, coupling v1 to v2 at runtime.
Before you open the PR, know what you're shipping.
Reads what you meant.
Your prompts and your plan, not just the diff. The intent behind the change, pulled from the session you already ran.
Before you open the PR, know what you're shipping.
Reads what you meant.
Your prompts and your plan, not just the diff. The intent behind the change, pulled from the session you already ran.
Maps it to your intent.
Every piece, tied to the prompt behind it, and the one nobody asked for standing on its own. Move through it at your speed.
Outlives the review.
The map is a real artifact: your intent, the catch, the code. Hand it to a reviewer, the security team, whoever inherits it, no re-explaining.
Install Tern.
curl https://tern.sh/install | bashcontent_copytern tourcontent_copy30 seconds. No email. No code leaves your machine.



