# add-country: the repeatable shape for onboarding a country #178
No reviewers
Labels
No labels
blocked
claude-wip
map-report
map:is
map:se
needs-review
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
art/ismap!178
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "add-country-skill"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
add-country: the repeatable shape for onboarding a country
Distilled from the Greece work (#171 catalogue, #172 pilot, #173 glyphs) — the
first country added since the four that established the mechanism. The skill is
the country-level plan those per-layer issues are the pieces of.
What it captures
verification of load-bearing endpoints, per-layer GO/ABSENT verdicts, and the
docs/country-.md catalogue in the reference shape (R129–R136).
(R107), acceptance tests (R119/R34/R22/R120) in the same commit.
in config or URL.
transient API statuses (a default-to-error poll fails on "Queued"), column
casing as a schema property (Code_18 → code_18), portal-vs-dataset licence
gaps (R2), and never two country-work subagents in one checkout.
Cross-linked from the top of docs/country-requirements.md and registered in
AGENTS.md's skills index.
Review pass — pushed one commit. The skill is the right thing to write; the problem is that
it was distilled from the Greece catalogue while that catalogue's central verdict was wrong,
so it propagated both the wrong numbers and the wrong lesson.
The numbers. It said Greece landed "five shared layers (mask, borders, cover, water)" —
which names four — and "seven absences" while naming six. It is seven shared layers and
four absences, because
roadsandrailwaysare not absences (#179, #180, correctedcatalogue in #183).
The lesson. The gate this skill codifies is exactly the step that failed on Greece, so it
now carries the two rules that would have caught it:
geodata.gov.gris an AAAA-only host and the research boxhas no IPv6 route — it could only ever time out there. "The geoportal is offline" was a
fact about the network path recorded as a fact about the source, and the same inference was
applied to
ktimanet.gr, which answers HTTP 200. The step names the checks now(
getent ahostsv4/ahostsv6,ip -6 route show default, a second vantage, the ArchiveCDX API for dating a real outage).
Every Greek transport source was indexed on data.europa.eu the whole time; a ministry-first
search missed them because the publishers are state-owned operators under their own names
(Egnatia Odos, GAIAOSE).
Plus two pitfalls worth carrying forward: an ABSENT verdict is never tested by anything
downstream the way a GO verdict is tested by the import that follows it, so absences deserve
the higher standard of evidence; and a PR body written against the first commit and never
updated costs more trust than it saves — #177 shipped one saying its live download had not
run, hours after it had.
Also folded in from the #177 review: wire a provider into both
fetchandlistand updatethe docs for both, and re-mint the session token rather than holding one for the whole fetch.