diff --git a/04-ISSUES/074-a-mesh-test-wears-a-catalogue-modules-name/01-diagnosis.md b/04-ISSUES/074-a-mesh-test-wears-a-catalogue-modules-name/01-diagnosis.md index 03ab2ab..6801b0b 100644 --- a/04-ISSUES/074-a-mesh-test-wears-a-catalogue-modules-name/01-diagnosis.md +++ b/04-ISSUES/074-a-mesh-test-wears-a-catalogue-modules-name/01-diagnosis.md @@ -47,3 +47,14 @@ its long idleness had hidden: the consumer fixture's login exceeded a backend's upstream artifact by bare image ID, which a registry copy cannot fetch since ADR 0096 — retired, since genesis installs the catalogue's builder and proves the same. The large test as a whole has not been run end to end; its renamed tests and the tests around them have. + +*2026-09-22.* The large mesh test was run end to end, for the first time in weeks: 12 of 25 passed. +Everything that failed was the bed lagging the mesh, and one defect of the mesh's own. The bed now +derives the anchor's filter after placing it on the overlay (ADR 0088), declares the ports its +fixtures listen on, waits for an image pulled at apply, starts the hand-started host and builder +once on a warm return, and reads the resolver modules from the catalogue instead of the example +modules that moved there. Three more tests were retired for the catalogue beds that prove them +(the modules resolving together and the forge, whole-mesh-novox; the cache grant, the grant bed) +and one for what every later test proves (the hub filtered without severing the mesh). The +defect: every machine named twice over in the files the mesh writes +([issue 079](../079-every-machine-is-named-twice-over/00-report.md)). diff --git a/04-ISSUES/079-every-machine-is-named-twice-over/00-report.md b/04-ISSUES/079-every-machine-is-named-twice-over/00-report.md new file mode 100644 index 0000000..c375cb0 --- /dev/null +++ b/04-ISSUES/079-every-machine-is-named-twice-over/00-report.md @@ -0,0 +1,32 @@ +--- +status: resolved +opened: 2026-09-22 +located-in: [mesh-controller internal/catalogue (facts)] +fixed-by: mesh-controller multiple-fixes (the facts take a name as the control plane keys it, internal or bare, and write each machine once); a unit test holds both keyings to the same files +--- + +# 079 — Every machine is named twice over in the hosts file and the resolver's zones + +## Symptom + +The hosts file the mesh writes on every machine, and the zones file it hands a resolver, name each +machine as `.internal.internal`, with the intended name `.internal` in the +hosts file's second column. Names still resolve on the machine itself, because the second column +matches, so nothing noticed. A resolver serving the zones answers for `*..internal.internal` +and for nothing under `.internal`, so a service named under a machine does not resolve +from anywhere. + +Found by running the large mesh bed end to end for the first time since the mesh's knowledge became +a fact a module asks for: its name test read the zones back. No smaller bed reads them. + +## Why it matters beyond the instance + +Two functions agreed on a contract nobody wrote down: the caller keyed the map by the internal name, +the facts appended the suffix to a bare one. Each was tested alone, with its own keying, and both +passed. A file the mesh writes and nothing reads back in a test is a file that can be wrong for +as long as it takes someone to look. + +## What would close it + +The facts take either keying and write each machine once, held by a test that feeds both. And a bed +reads the files back — the large mesh bed does now. diff --git a/04-ISSUES/079-every-machine-is-named-twice-over/01-diagnosis.md b/04-ISSUES/079-every-machine-is-named-twice-over/01-diagnosis.md new file mode 100644 index 0000000..a56b7af --- /dev/null +++ b/04-ISSUES/079-every-machine-is-named-twice-over/01-diagnosis.md @@ -0,0 +1,12 @@ +# Diagnosis — 2026-09-22 + +1. The control plane collects every placed machine's name and address for a resolution keyed by + the internal name (`homer.internal`), because that is the map every container is given as its + hosts. The facts that render the hosts file and the resolver's zones took the same map as bare + names and appended `.internal` to each — their unit tests fed them bare names and passed. +2. Fixed in the facts: a name is read as either form, and each machine is written once as + `.internal` with its bare name beside it. A test feeds both keyings and holds the files + equal, and holds the zones free of a doubled suffix. + +**Located in:** the facts. Not a decision. Proven by the unit test and by the large mesh bed's name +tests, once its controller image is rebuilt from the fix.