Date: 2026-05-11
Time: 15:40
This is an FTL2 AI-loop rule that ensures the Cloudflare DNS A record for stargate.catbeez18.com points to the correct Linode public IPv4 address with Cloudflare proxy disabled (DNS-only mode), so that Caddy can terminate TLS directly. It was auto-generated by the ftl2-ai-loop system.
This rule follows the observe → condition → action pattern used by FTL2 AI-loop rules:
1. Observe: Runs dig +short stargate.catbeez18.com A via the command module to get the current DNS resolution.
2. Condition: Compares the observed IP against the expected IP stored in FTL2 state (state.statefile.resources.stargate.ipv4[0]). Returns True (triggering action) when they don't match.
3. Action: Calls the cloudflare_dns module to create/update the A record.
# The action call pattern:
await ftl.community.general.cloudflare_dns(
zone="catbeez18.com",
record="stargate",
type="A",
value=ip,
proxied=False,
state="present",
)
state.statefile.resources.stargate.ipv4 — requires a prior rule (likely ensurestargatelinode) to have provisioned the Linode and stored its IP in state.community.general.cloudflare_dns (FQCN pattern) with params: zone, record, type, value, proxied, state.command module with cmd parameter for running shell commands.ipv4 list is empty), the condition returns False — deferring to the Linode provisioning rule. This prevents the DNS rule from running before infrastructure exists.proxied=False is deliberate — Caddy handles TLS termination, so Cloudflare proxy must be off to avoid certificate conflicts.ensurestargatelinode) that populates state.statefile.resources.stargate.ipv4.ftl.community.general.cloudflare_dns module — Cloudflare API credentials must be configured (likely via Vault or environment).command module for DNS observation via dig.cloudflare-stargate deployment in ftl2-deployments, managing DNS for the Stargate infrastructure.