Skip to content

Documentation audit

This documentation system was reconstructed on 2026-07-26 from the repository at and after commit 31efd35. The previous corpus is preserved verbatim under docs/legacy/ and in Git history. It is excluded from current navigation, search, lint, build, and link guarantees.

Audited implementation surfaces

The audit covered every tracked project area:

SurfaceVerified sources
API and authorizationcore/routes, controllers, middleware, requests, resources, policies, API tests
Durable stateevery Laravel migration and model
Async workflowsjobs, actions, operation model, Horizon configuration, scheduler
Administrator UIpanel provider, pages, resources, relation managers, Blade views
Domain-user UIpanel provider, pages, domain resource/actions, relation managers
DNSrecord/zone support, PowerDNS client/rendering, DNSdist, PowerDNS config/schema/migration
Edgeedge controllers/models/jobs, Go agent and tests, Nginx/OpenResty/Lua runtime
TLS/cache/securitycontrollers, support validators, jobs, runtime, feature and E2E tests
TelemetryVector transforms/sinks, ClickHouse DDL, analytics queries, metrics and alerts
ConfigurationLaravel configs, both example environments, Compose interpolation, scripts
Infrastructuredevelopment/production Compose, every production overlay, Dockerfiles, Caddy
Development and CIMake targets, shell scripts, PHP/Go/Python tests, GitHub workflow/forms
Existing documentationall legacy Markdown, generated OpenAPI, root guides, pull-request template

The repository contains roughly 62,000 tracked lines including lockfiles, legacy documentation, generated OpenAPI, tests, and runtime configuration. The audit used file inventories, route registry output, environment-key extraction, class/function indexes, migration constraints, Compose-rendered services, and targeted full-file review. Generated dependency lockfiles were treated as dependency evidence, not prose to paraphrase.

Outdated or incorrect legacy assumptions

Legacy claim or patternVerified implementation
Create the first administrator through artisan tinker and direct model creation.cdnf:admin:create is the supported interactive, password-history-safe command.
A successful backup restore leaves maintenance mode active.RestoreControlBackup runs migrations, queues reconciliation, then calls artisan up; only failure leaves maintenance active.
The cumulative make dev-e2e covers phases 1–5.The Make target now includes security, analytics, operations, and runtime programs through the current phase 8 boundary.
A link-only checker was sufficient documentation validation.The old checker checked target-file existence only; it did not validate anchors, duplicate headings, Markdown, required pages, route catalog drift, or the site build.
The raw docs/openapi.json was the API documentation.The generator describes routes but has intentionally generic bodies/responses. A generated human endpoint catalog and authored conventions/feature guides are also required.
core/README.md described the project.It was the generic Laravel skeleton README and did not document CDNFoundry.
Historical phase test counts were current qualification status.Counts such as 118 or 140 tests apply only to their recorded commits; the current suite contains more tests and must be rerun.
Roadmap future stages, current operation, agent rules, and qualification evidence belonged in one public guide.Governance and owner qualification are repository concerns, not public product documentation; legacy keeps the original proposal history.
Telemetry retention settings automatically define runtime TTLs.Masking/finalization are active application policy, while shipped ClickHouse TTLs are static in docker/clickhouse/init.sql and require an operator migration to change.

Duplication and conflicts removed

  • Installation, development, production, scaling, architecture, and phase files repeated the same commands with different completeness and dates. Shared command, configuration, service, and limit references now own exact values.
  • Cache, TLS, DNS, edge, security, and telemetry failures were split into many one-page runbooks. One incident-runbook page now links to focused symptom-based troubleshooting.
  • API routes appeared in the roadmap, authentication guide, frontend coverage, and generated JSON. The route-derived catalog is the single endpoint list.
  • Production certificate steps appeared in quick start and operations files. One internal-certificate guide now owns generation, distribution, and rotation.
  • The root README, installation guide, and development guide used different first-administrator procedures. They now use cdnf:admin:create.
  • Old relative links assumed all pages lived in one flat docs/ directory. Current pages use explicit portable .md paths that work on GitHub and in VitePress; source and rendered anchors are validated.

Areas not fully documented by executable contracts

These are implementation or operator gaps, not invitations to invent behaviour:

  • OpenAPI request and success schemas remain generic; controller validation is authoritative. The endpoint catalog is complete, but a fully typed schema for every request/response is not generated.
  • The repository builds and validates the documentation but does not contain a GitHub Pages publication workflow or a confirmed custom documentation domain.
  • The project has no committed dedicated-pool Compose template; operators must repeat the bounded cell service shape with unique bindings and volumes.
  • PostgreSQL/Valkey/ClickHouse clustering, load balancers, provider firewalls, DNSSEC, registrar APIs, off-host object storage, and upstream volumetric DDoS services are deployment-owner choices.
  • Alertmanager's committed receiver is a local placeholder.
  • Private service certificates use manual long-lived internal PKI scripts; no automatic private-CA renewal service exists.
  • The built-in registrable-domain suffix list is deliberately small, not the complete Public Suffix List.
  • Raw dnstap fallback events may have domain_id=0; no authoritative name-to-ID enrichment stage is committed.
  • No formal API backward-compatibility/versioning policy beyond the current /api and artifact compatibility envelope is implemented.
  • No fixed security-response SLA or supported-version matrix is encoded.
  • Owner-run browser, public multi-vantage Geo-DNS, real IPv6, external off-host restore, and production RPO/RTO evidence remain environment-owned.

Maintenance rule

When code and documentation disagree, fix the current Markdown from verified implementation and record a product defect separately if the code violates AGENTS.md or the repository product contract. Do not silently change legacy files; their value is historical traceability.

CDNFoundry documentation