◉ANTIGRAVITY LABJP
Articles/Agents & Manager
◈ Agents & Manager/2026-10-22Advanced

17 Dead References in My Handover Docs Turned Out to Be 2 Files, and the Real Risk Was a Different Site's Playbook Mixed In

The full Python script I use to check the root .md files an agent reads. My naive version counted 17 dead references; fixed, it was 7 across 2 files. Then it missed the real problem. Here is how I found it.

Antigravity395handover docsagents149Python23indie developer17preflight

✦ Premium Article

I had put the repository in a fresh working directory and was about to hand it to an agent. First I listed the root. Six .md files, 68,943 bytes in total.

I opened HANDOVER.md and stopped at the first line. It was the heading of a playbook for building a different site, not this one.

This repository was branched from the template of another site I run. The documents I carried over at the time were still sitting in the root. It is the kind of state that builds up quietly when you are an indie developer moving fast.

Here is the conclusion up front. A count of broken references says nothing about how much needs fixing, and a reference check alone misses the most dangerous document. I rewrote the checker three times to learn that, and I'm leaving the full script here.

The six documents I checked

The scope is the .md files in the root of this site's repository. That is the first place an agent looks, so I wanted to know whether it would be safe for an agent to take them at their word.

FileSizeWhat it is
CONTENT_LOG.md30,371 BWork history (mostly external links)
HANDOVER.md14,317 BA playbook for standing up another site
MIGRATION_GUIDE.md11,406 BNotes for moving the template over
SKILL.md9,903 BWorking procedure
REMAINING_TASKS.md2,846 BOpen-items memo
README.md100 BA one-line description

What caught my eye: of the 68,943 bytes, those two heavy documents, the playbook and the migration notes, take 25,723 bytes, or 37.3 %. It was not the tiny README. The heaviest documents were the ones talking about another project.

The naive version counted 17 "broken references"

My first version was very short. It pulled out path-looking strings wrapped in backticks and checked whether each one existed in the repository.

DocumentReferences foundMissing
HANDOVER.md277
MIGRATION_GUIDE.md269
REMAINING_TASKS.md61
SKILL.md20
Total6117

Seventeen out of 61 is 28 %. Read at face value, more than a quarter of the documents were broken.

Opening them one by one told a different story. Many were bare file names with no directory, like Header.tsx or layout.tsx, and my script was looking for them at the repository root. They existed under src/components/layout/.

✦

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
✦You'll be able to check, in under a tenth of a second, whether the root .md files in a repository carry dead references or another project's instructions before an agent reads them
✦You'll be able to stop trusting raw dead-reference counts and separate false positives, intentional future-tense mentions, and real fixes, so you only touch what needs touching
✦You'll be able to catch, before handing the repository over, the case where an agent reads a playbook inherited from a template and starts making changes meant for a different site
Secure payment via Stripe · Cancel anytime
✦

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Antigravity Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • ✦Copy-paste ready implementation code
  • ✦New advanced guides published daily
  • ✦$5/mo or $10 for lifetime access
View Membership →

Related Articles

◈ Agents & Manager2026-10-16
Before Handing an Agent a .zip: Dropping .git Cut 29 MB to 15 MB, and 28 Secret Warnings Turned Out to Be Noise
Antigravity app v2.23.0 lets you attach a .zip. I packed my own repository to count what .git weighs and how many secret-scan warnings are false alarms, and I leave the full Python script that excludes, scans, and writes a manifest.
◈ Agents & Manager2026-10-14
When the App Reads an API Response by Position, I Put a Gate in Front of the Upload So Shipped Versions Don't Crash at Launch
A client that reads a server list by index, as a wallpaper app does, leaves old shipped versions in the wild for a long time. Deleting or reordering a field can crash them at launch. This note shows an append-only check and a hash ledger that freezes shipped version directories, with the output from actually running them.
◈ Agents & Manager2026-10-14
I Expected Agent PRs to Wait Longer Than Human PRs, but 246 Public Pull Requests Showed the Opposite
A count of 246 July-August 2026 PRs in dotnet/runtime, comparing time to the first human reaction on agent-opened PRs and human-opened PRs. Includes the measurement script and a stale-PR check for solo projects.