v0.1.3
Fixes
- The transitive lookup-cost counter added in v0.1.2 (for correctly costing passthrough include:/redirect: entries) had no breadth cap, unlike the main flattening walk. A wide (not just deep) tree of unique hostnames in a passthrough include's chain could cause unbounded serial DNS queries with nothing stopping it, hanging any plan/apply run that referenced it. Now enforces the same chain-size cap the main walk already used.
- Config's bare-"all" passthrough guard only checked whole-entry equality, so a multi-token entry like "ip4:1.2.3.4 all" bypassed it and got spliced whole into the built record, silently terminating SPF evaluation early. Passthrough entries containing any whitespace are now rejected outright.
- The NXDOMAIN-softening fix from v0.1.2 (correct for a genuinely decommissioned a:/mx: hostname) had an unintended interaction with this tool's lack of SPF macro support: an unexpandable macro mechanism like a:%{i}.example always NXDOMAINs, so it silently resolved to no addresses instead of failing loudly, meaning an authorized sending path could vanish from the flattened output with no signal at all. a:/mx: mechanisms containing macro syntax now raise instead of silently dropping.
269 tests passing, no known regressions.