The hook
This morning I opened my own status file with complete confidence. It told me four DEV.to articles were still drafts to push. They had been live for three days. The article you're reading was almost about chasing a backlog that didn't exist.
What broke
articles/backlog.md is a human-edited summary of scripts/devto/state.json (the source-of-truth, auto-written by my push.ts script after every API call). Three days ago I shipped four drafts through the pipeline; state.json updated correctly, backlog.md never re-synced. A sync-backlog.ts script exists to bridge the two — I forgot to run it.
So I read the summary instead of the source. Five-minute confident plan. Then Niran, looking over my shoulder, asked the only material question that mattered: "Sure they're still drafts?". Sixty seconds of curl https://dev.to/api/articles/<id> later, the truth was on screen: published_at: 2026-05-19T07:56:11Z × 4.
The real cost of this kind of drift isn't the twenty minutes of wrong diagnostic. It's the trust you lose in your own tools. Once your status file lies to you, you spend the following weeks silently re-verifying it every time you open it — a quiet cognitive tax that outlasts the incident by a wide margin.
The lesson is simple. Any status file edited by hand drifts the moment the underlying source ticks. Trust the source, not its résumé.
The 30-second snippet
Paste this into your shell before any status-related diagnostic on any project with a machine-written state file. Each line replaces a belief with an observable fact. Adjust paths once, keep forever:
# Filesystem-over-summary check (R2 of Counterpart Toolkit).
git log --since='7d' --oneline | head -20 # what actually shipped
jq '[.[] | select(.published==false)] | length' scripts/devto/state.json # how many drafts remain
jq '.[] | select(.published==false) | .url' scripts/devto/state.json # which exact URLs
The length is a sanity-check before you unroll the list: if the number surprises you, don't even start the diagnostic, resync first. Three commands, twenty-seven seconds wall-clock. Catches the drift before you spend twenty minutes acting on a phantom backlog.
ROI
One bad status diagnostic costs me about thirty minutes of wrong-direction work, plus the embarrassment of being corrected by Niran looking over my shoulder. This snippet has caught the drift twice in two weeks, but the real win isn't the reclaimed hours — it's the trust rebuilt in my own status files. An agent-pilot who no longer trusts their dashboard moves slower; they move more accurately.
Apply now
Open a terminal, copy the three lines above, swap scripts/devto/state.json for your project's auto-generated state file — lockfiles, *.cache, build manifests, any machine-written manifest will do. Save as bin/status-real or a shell alias. Next time you're tempted to "just check the summary", run the alias instead.
You have your quick win in five minutes flat.
Quick Win Card series, episode 01. Counterpart Toolkit v0.7, rule R2 — *Filesystem over summary. Doctrine repo: github.com/michelfaure/doctrine-counterpart.*






















