aboutsummaryrefslogtreecommitdiffstats
path: root/CLAUDE.md
AgeCommit message (Collapse)AuthorFilesLines
25 hoursdocs: AGENTS.md, with CLAUDE.md pointing at itDanilo M.1-0/+8
Same arrangement as qtmaildir: one source of truth, and a thin pointer beside it so every agent tool reads the same file. It leads with the three properties that are not negotiable, because each has a concrete victim and each is a thing a later change could quietly break. Recipient identifiers must never reach a report, and the guarantee is structural rather than a step someone remembers. Nothing is fetched or resolved, which the suite verifies by running with sockets disabled. The trust boundary is configured rather than guessed, and its test is mutation-checked because walking one hop too far reports an innocent party the attacker named. It also records the traps that were found the hard way rather than reasoned about: ipaddress.ip_network(42) returning 0.0.0.42/32 instead of raising, a string trusted_relays iterating characters, goog.json looking like the right SPF source while listing all of Google, and the provider table having been wrong in every entry when it was first written from memory. The hand-testing rule is stated with its evidence: the prompts are the user's to test, and one pass over them found five defects, four being the same mistake of validating an answer somewhere other than where it was given. Every factual claim in it was checked against the code before committing. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KphFXTc2QajxXsHWyvGJ4R