BaseHalf
All posts

Learn DNS fundamentals with BaseHalf and AI

We opened the real dns-fundamentals folder in BaseHalf, laid resolution, record-type, and TTL notes out as cards, wrote upstream into the practice note, and had Claude Code in the Agent Area grade four example.com records as correct.

A short set of DNS records is easier to check when each idea lives on its own card and an agent can see both the cards and the practice note. We made an ordinary Desktop folder, dropped six short Markdown notes into it, and opened that folder in BaseHalf. The window title became dns-fundamentals. The sidebar listed every file. Each note became a card. We started Claude Code in the Agent Area on the right, with the practice card selected.

The folder on disk was Desktop/basehalf-learn-sessions/dns-fundamentals/. These were the files on the canvas:

dns-fundamentals/
  00-goal.md
  01-resolution.md
  02-record-types.md
  03-ttl.md
  04-practice.md
  sources.md

BaseHalf window titled dns-fundamentals: sidebar lists 00-goal through sources; canvas shows the goal, three concept cards, sources, and 04-practice, with connection lines from the concept cards and sources into the practice note.

What each card held

00-goal.md set the boundary: read a hostname lookup as a path through resolvers and nameservers, name the common record types a small site needs, and check one practice zone.

01-resolution.md described the path: a stub resolver on your machine asks a recursive resolver; if that resolver has no cached answer, it starts at a root nameserver, then a TLD nameserver (the "com" in example.com), then the domain's authoritative nameserver, which holds the records.

02-record-types.md pinned A as a name to an IPv4 address, AAAA as a name to an IPv6 address, CNAME as an alias whose owner should hold no other data, MX as a preference (lower is tried first) plus a host name rather than an IP, NS as an authoritative nameserver, and TXT as text, often used for verification.

03-ttl.md kept TTL as a time in seconds: how long a resolver may cache a record before it must fetch a fresh copy.

sources.md linked the MDN DNS glossary, Cloudflare Learning on what DNS is and DNS server types, and RFC 1034. Those pages were the source of truth for the folder, not the model.

Upstream on the practice note

We connected the practice note to the three concept cards and to sources.md. On the canvas, lines from 01-resolution, 02-record-types, 03-ttl, and sources run into 04-practice. After that, 04-practice.md began with:

upstream:
  - 01-resolution.md
  - 02-record-types.md
  - 03-ttl.md
  - sources.md

That list sticks in the file. Selection does not: it lives in .bh/cache/selection.yaml only while BaseHalf is open. We selected the practice card, and the status bar showed 04-practice, before asking Claude Code to grade it.

The example.com practice

The practice card asked: write the records for a documentation site on example.com, so that example.com resolves to IPv4 203.0.113.10, www.example.com is an alias of example.com, mail for example.com goes to mail.example.com with preference 10, and mail.example.com resolves to IPv4 203.0.113.20. The addresses are from the documentation range in RFC 5737, not a live site.

Our answer:

example.com.        A      203.0.113.10
www.example.com.    CNAME  example.com.
mail.example.com.   A      203.0.113.20
example.com.        MX  10 mail.example.com.

We kept A and MX on example.com, and put the CNAME only on www, because a name with a CNAME should not also hold other data. The MX target is a host with an A record, not an IP and not an alias.

dns-fundamentals canvas plus Agent Area: Claude Code grades the four records as correct, walks each one back to the record-type card and RFC 1034, and says it edited nothing.

What Claude Code actually said

Treat the reply as a draft. In this session Claude Code (v2.1.322, shown in the window as Fable 5.2 with xhigh effort, Claude Ultra) said the answer was correct, that all four records matched the task, that both sentences of our reasoning held, and that it found no mistakes. It did not edit any files. The run lasted 2 minutes 59 seconds.

It walked each record back to a card and a docs line: the two A records to "A maps a name to an IPv4 address" on card 02 and RFC 1034 §3.6 (a host address, 32-bit); the CNAME to "owner is the alias" on card 02 and RFC 1034 §3.6.2; the MX to "a preference, then a host name" on card 02 and the same section of RFC 1034, where lower is better.

It agreed that a CNAME belongs only on www, quoting RFC 1034 §3.6.2: if a CNAME is present at a name, "no other data should be present."

The same Claude Code session, scrolled to the caveats: no TTL is fine as notation, a servable zone would also need SOA and NS, and the two Cloudflare pages had to be read in Chrome after a plain fetch was refused.

It also listed caveats, not deductions. The firm rule that an MX must not point at an alias is RFC 2181 §10.3, which was not in sources.md; Claude Code checked that RFC and said it agreed with us. The answer omits TTL and class, which RFC 1034 §3.6.1 says are often left out of examples; a live record still needs a TTL, and the TTL card was upstream but unused. A servable zone would also need SOA and NS at example.com; the task did not ask for them. A mail lookup for www.example.com follows the CNAME and gets the MX of example.com. The trailing dots are complete names, as RFC 1034 §3.1 describes.

On the sources themselves: RFC 1034 backed every record in the answer. The two Cloudflare pages backed the resolution-path card; on records they only say an A record holds the IP and a CNAME is an alias that triggers a new lookup. The MDN glossary defines DNS and lookups and does not cover record types. AAAA and TXT appear on the record-type card but not in those four pages, and the answer does not use them. A plain fetch of the Cloudflare pages was refused, so Claude Code read them in a Chrome tab and closed it afterwards.

When the agent disagrees with the links in sources.md, keep the docs and fix the note on the canvas.

Same product, a real practice path

BaseHalf did not invent a DNS tutor for us. We opened a Desktop folder, arranged ordinary Markdown, wrote upstream into the practice file, and let Claude Code grade from those files and the linked pages. Card places stay under .bh/; the connections that matter stay in the files. This post is written from that session on the dns-fundamentals canvas, not from a fictional syllabus tree.