JER on X: "https://t.co/KbwvXDAO6v" / X<br>Post
Log inSign up
Post
JER
@lifeofjer
We started tracking which AI model wrote every line, and you should too<br>We've been building the same app for over a year with AI agents @atlas_v_erified.<br>Not one model. A bunch of them. Testing models, QA models, building models, design models. Frontend, backend, schema, architecture — all of it. Cursor keeps shipping new ones (theirs and other labs) and we keep trying them.<br>And for most of that year period we had no real way to answer a pretty basic question: which model actually wrote this code or which model created this plan?<br>We had anecdotes.<br>Take for example Opus 4.7. Promising, but we learned after heavy use that it would say the work was done and only complete part of it. Partial implementations. We figured that out fast and moved to a different model. But that's still just a feeling. Anecdote, not hard data.<br>So I built model tracking into the repo.<br>Every time an agent touches a file, it has to leave a byline. Machine-readable. Same session, same sprint.<br>Here is what we record:<br>the coding model that made the edit<br>the planner model, if planning was a different model<br>the exact hunks that changed<br>the plan those changes came from<br>and if it's a bug fix, which earlier change it's fixing (when we actually know)<br>On a normal TypeScript file it looks like this at the top:<br>Here are a few rules that matter when implemented:<br>Newest byline only in the file. Next edit replaces it. Git keeps the history.<br>Hunks don't include the provenance block itself, or the line numbers get useless the second the header moves.<br>If Cursor doesn't expose the real model id / max mode / context window, we write not_exposed. Agents are not allowed to invent it.<br>Planner and coder are separate fields on purpose. A lot of our work is planned by one model and implemented by another.<br>JSON, lockfiles, binaries can't take comments — those go as one line into .cursor/agent-provenance.jsonl. That sidecar is not a loophole for "this .ts file was big."<br>Docs weren't enough<br>Now, here is where it gets interesting. First attempt was the schema and a hard rule in our AGENTS.md (yes, I know that prompts are NOT rules or security or requirements, but it's a fast test).<br>The agents ignored it when it got inconvenient. Left hunks: pending. Skipped headers at the end of large plans and sprints.<br>So I made it into something they can't skip, and it's working great.<br>How we force it<br>Four layers:<br>Always-on Cursor rule — short reminder every turn<br>Cursor hooks — track every edit, nag after writes, and on stop force one cleanup turn if anything is missing<br>Pre-commit — checker blocks the commit<br>CI — same checker on the PR diff<br>The stop hook is the one that actually changed behavior.<br>Agent thinks it's done → we re-check every file from that session → if provenance is missing, it gets forced back in:<br>PROVENANCE GATE: You edited files without valid atlas-agent-provenance/v1 attribution. Do not start new feature work. Fix provenance on every file below, then stop.<br>One loop max. Pre-commit and CI catch the rest.<br>Rules (or .md) are optional to a model. Hooks and CI are not.<br>Why bother<br>Once this is all the way through our codebase, we can actually debug where bugs or architectural changes were planned and implement by model.<br>which coding models create the most rework<br>which planner → coder combos ship clean on the first pass<br>when we fix a bug, can we walk it back to the change_id and the model that introduced it<br>is the "said it was done, only did half" failure mode concentrated in specific models<br>Publicly available<br>I really wish I had this data back to the start of this project. It would be incredibly valuable to us. Imagine running a plan to review ALL code generated by a specific model (in loops), or tracing back every issue and running data on which models produce the least issues (even segmenting by back-end, front-end, db schema, etc).<br>So, I'm going to drop the public repo here so anyone can utilize this, and I have submitted this to Cursor Marketplace for anyone to one-click add (if they approve, 🤞 @cursor_ai).<br>Drop a comment below with what you are building using Cursor (@cursor_ai). Would love to see what is being built.<br>Public Repo<br>https://github.com/atlas-verified/agent-model-provenance
span:not(:empty)~span:not(:empty)]:before:content-['·'] [&>span:not(:empty)~span:not(:empty)]:before:px-1 [&>span:not(:empty)~span:not(:empty)]:before:shrink-0">6:32 PM · Aug 12, 202621Views
span:not(:empty)~span:not(:empty)]:before:content-['·'] [&>span:not(:empty)~span:not(:empty)]:before:px-1 [&>span:not(:empty)~span:not(:empty)]:before:shrink-0 min-w-0 overflow-hidden">JER
@lifeofjer
33m
Add to Cursor here:
GitHub - atlas-verified/agent-model-provenance: Cursor plugin: force model bylines (coder + planner...
From github.com
11
Log in or sign up for X<br>See what’s happening and join the conversation<br>Continue with phoneContinue with AppleContinue with Google<br>or<br>Log in with username or...