<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Specifications :: Gonemaster</title><link>https://pawal.codeberg.page/gonemaster/specifications/index.html</link><description>This directory contains the canonical testcase specifications for gonemaster.
The Zonemaster project may be used as an upstream reference during migration, but the documents in this tree define and describe gonemaster behavior.
Goals Document each implemented gonemaster testcase with exact behavior. Treat emitted tags as part of the testcase contract. Keep documentation aligned with code through explicit workflow and validation. Documents Testcase Specifications tests/ - Canonical per-testcase specifications (algorithm, emitted tags, arguments, severity, upstream differences). tags/ - Per-module tag catalogs with severity levels and i18n coverage. Inventories implemented-testcases.md - Authoritative list of all implemented testcases. possible-tags-by-testcase.md - All possible tags per testcase, derived from code metadata. log-args-inventory.md - Current inventory of emitted log argument keys, tags, value shapes, and producer file paths. Gap and Divergence Tracking known-intentional-gaps.md - Upstream testcase gaps that are intentionally not implemented, with rationale. known-behavior-divergences.md - Behavior divergences identified during investigation, tagged for review. Migration upstream-testcase-matrix.md - Maps upstream Zonemaster specs to gonemaster testcase IDs and migration status. Reference templates/ - Reusable templates for testcase specs and tag tables. log-args-coherency.md - Shared glossary and invariants for log argument naming/types. log-args-key-glossary.md - Canonical v1.1 key/type glossary for machine consumers. Source-Of-Truth Rules Gonemaster implementation is the runtime source of truth. docs/specifications/tests/ is the documentation source of truth for expected behavior. docs/specifications/upstream/ is reference-only and can differ from gonemaster. Any intentional divergence from upstream must be documented in the gonemaster testcase spec. Outside the plans directory tree, gonemaster docs must not reference files in plans. Update Workflow Identify testcase behavior from current gonemaster code. Compare with upstream reference when relevant. Write or update canonical spec in tests/ using the testcase template. Update tag documentation in tags/ using the tag table template. Add follow-up issues for unresolved ambiguities. Tooling Refresh generated inventories:</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://pawal.codeberg.page/gonemaster/specifications/index.xml" rel="self" type="application/rss+xml"/><item><title>API Reference</title><link>https://pawal.codeberg.page/gonemaster/specifications/api/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pawal.codeberg.page/gonemaster/specifications/api/index.html</guid><description>gonemaster-server exposes a trusted admin API and a restricted public API.
Admin API Base path: /api/v1/
Use this API from trusted clients such as the admin UI, gonemaster-client, cron jobs, and internal scripts. It can manage jobs, batches, domains, tags, runs, entries, profiles, queue state, settings, metrics, and cohorts.
Keep it private.
Public API Base path: /pub/api/v1/
Use this API for public job submission, public job lookup, public profiles, and read-only public analysis. Public job endpoints use opaque public IDs instead of internal job IDs.</description></item><item><title>Tags</title><link>https://pawal.codeberg.page/gonemaster/specifications/tags/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pawal.codeberg.page/gonemaster/specifications/tags/index.html</guid><description>This directory contains per-module tag catalogs for gonemaster.
Each catalog lists all tags that can be emitted by a module’s testcases, together with the default severity level, which testcase(s) emit the tag, and the i18n coverage status across the supported locale files.
Files File Module Tags address.md ADDRESS address01-address03 basic.md BASIC basic01-basic03 connectivity.md CONNECTIVITY connectivity01-connectivity04 consistency.md CONSISTENCY consistency01-consistency06 delegation.md DELEGATION delegation01-delegation07 dnssec.md DNSSEC dnssec01-dnssec19 nameserver.md NAMESERVER nameserver01-nameserver15 syntax.md SYNTAX syntax01-syntax08 zone.md ZONE zone01-zone12 Structure Of Each Catalog Every per-module catalog contains:</description></item><item><title>Tests</title><link>https://pawal.codeberg.page/gonemaster/specifications/tests/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pawal.codeberg.page/gonemaster/specifications/tests/index.html</guid><description>This directory contains canonical testcase specifications for gonemaster.
Each testcase spec MUST be based on current implementation behavior and SHOULD start from docs/specifications/templates/testcase-spec-template.md.
Normalization Rules One testcase specification per file. Canonical file location format: docs/specifications/tests/&lt;module>/&lt;testcase>.md Example: docs/specifications/tests/zone/zone07.md Specs describe gonemaster behavior, not desired future behavior. If upstream and implementation differ, the difference MUST be explicit. Every emitted tag documented for a testcase MUST be possible in code. Normative Language Use RFC 2119 style keywords with their normal meanings:</description></item><item><title>UI Explanations</title><link>https://pawal.codeberg.page/gonemaster/specifications/ui-explanations/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pawal.codeberg.page/gonemaster/specifications/ui-explanations/index.html</guid><description>Plain-language explanations for DNS findings shown on the public results page. One file per module, authored for a domain owner who is not a DNS operator.
The markdown files here are the source of truth. Sync them into the i18n catalogs with:
node tools/i18n/sync-ui-explanations.mjs The sync script:
Writes every managed key to ui-public/src/i18n/en.json. Existing English values are overwritten from the markdown. Never touches other locales. The t() store falls back to English for missing keys, and tools/i18n/missing-keys.sh doubles as the translator work queue for whatever has not been localized yet. Key families pub.tc_desc.&lt;testcase> - per-testcase plain-language description (1-3 sentences). Rendered under the testcase &lt;summary> on the results page. pub.tag.&lt;module>.&lt;TAG>.header - short (3-6 words) human-readable summary of a single finding tag. Rendered inline before the templated engine message. pub.tag.&lt;module>.&lt;TAG>.desc - longer (1-3 sentences) description. Rendered inside a collapsible “About this finding” disclosure under each finding row. Any of the three can be omitted; the UI degrades gracefully.</description></item></channel></rss>