Skip to content

docs: add AGENTS.md orientation for AI agents - #149

Merged
incendiary merged 1 commit into
mainfrom
docs/agent-handoff
Jul 30, 2026
Merged

docs: add AGENTS.md orientation for AI agents#149
incendiary merged 1 commit into
mainfrom
docs/agent-handoff

Conversation

@incendiary

Copy link
Copy Markdown
Owner

Adds AGENTS.md at repo root — the file OpenAI Codex looks for — so an agent picking this project up starts from the right premise.

Why

The purpose of this tool is not recoverable from the code, and the obvious reading gets it wrong. Dangling CNAME detection is prominent in the README and the class names, so it reads as the point, and the cloud IP matching looks like a secondary attribute. In value it is the other way round.

A dangling CNAME names a service, so intent can be read straight from DNS. A bare A record cannot. If that address is a cloud IP the owner released, whoever allocates it next controls what is served for that hostname — and DNS offers no signal that this is the case. Establishing which A records land in cloud ranges worth grinding, and in which region, is the part other tooling does not do.

Two consequences follow, and neither is obvious from the source:

  • provider, region and service are the essential payload, not decoration;
  • the output files are machine-readable interfaces for a downstream tool, not reports for a human.

This misreading is not hypothetical. A full codebase review was carried out against the wrong value proposition and had to be reframed.

Contents

  • What the tool is for, both jobs, and why the second one is the interesting one
  • That it identifies targets and never claims them — no cloud API calls belong here
  • The firm DNS-only scope boundary, and which limitations are accepted consequences of it
  • Architecture and module responsibilities
  • Output contracts, described as interfaces
  • Two correctness rules recovered from shipped bugs: a takeover candidate requires an actual CNAME, and self_referential only applies below the top of a CNAME chain
  • Environment traps: the broken interpreter shim, and needing both requirements files
  • Conventions that have bitten before: never create a tag, do not bump VERSION per PR, secret scanning is strict, branch protection requires job names rather than workflow names
  • Testing standards, including why coverage rose ten points while catching none of the defects that mattered
  • What is in flight on feat/cloud-region-service

Documentation only. No source changed; baseline and full suite pass.

The purpose of this tool is not recoverable from the code, and reading it
the obvious way gets it wrong. Dangling CNAME detection is visible and
prominent, so it reads as the point; the cloud IP matching looks like an
attribute. It is the other way round in value.

A dangling CNAME names a service, so intent can be read from DNS. A bare A
record does not. If the address is a released cloud IP, whoever allocates it
next controls what is served for that hostname, and DNS gives no signal that
this is so. Finding which A records land in cloud ranges worth grinding, and
where, is the differentiator. That makes provider, region and service the
essential payload rather than decoration, and it makes the output files
machine-readable interfaces for a downstream tool rather than reports.

Also records the boundary that this tool identifies targets and never claims
them, the two correctness rules recovered from shipped bugs, the output
contracts, the environment traps (broken interpreter shim, both requirements
files), the conventions that have bitten before (never tag, do not bump
VERSION per PR, secret scanning is strict, branch protection wants job names),
and the accepted limitations that follow from staying DNS-only.

Named AGENTS.md as that is the file OpenAI Codex looks for at repo root.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@incendiary
incendiary merged commit 48cf942 into main Jul 30, 2026
5 checks passed
@incendiary
incendiary deleted the docs/agent-handoff branch July 30, 2026 17:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant