Skip to content

docs: Document the telemetry architecture as built - #271

Merged
0xmc merged 3 commits into
mainfrom
docs/architecture-port
Nov 10, 2026
Merged

0xmc merged 3 commits into
mainfrom
docs/architecture-port

Conversation

@0xmc

@0xmc 0xmc commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

Summary

The only architecture docs for this system were design proposals that had drifted far from the code.

This adds architecture docs for ingest, edge-to-hub trust, log storage and retention, the query API, and export policies, each with a C4 container diagram, with every claim checked against the code and a running deployment. Unbuilt designs follow in a separate pull request.

Markdown in the docs is now linted in CI, and a private issue reference is dropped from a collector config.

Test plan

  • Lint, unit, and e2e checks pass, including the new docs lint
  • The docs lint fails on a line over 80 columns
  • Every relative link and anchor in the docs resolves

Fixes #270

🤖 Generated with Claude Code

0xmc and others added 3 commits November 10, 2026 16:43
The batch processor comment cited an issue in a private deployment
repository, which readers of this public repository can't open. The
comment already explains the sizing, so the reference adds nothing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The repository is gaining architecture docs under docs/, and nothing
checked their formatting. task docs:lint runs markdownlint-cli2 from
its pinned Docker image, the same way the docs task already renders
the PlantUML diagrams, so the repository takes on no Node tooling.
The root lint task, and so task ci, now includes it, and a Docs
workflow runs it on every pull request.

Prose wraps at 80 columns. Tables, code blocks, and headings are
exempt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The telemetry architecture was documented only as design proposals in
another repository, written before most of the system was built, and
those had drifted from the code. These docs describe the system as
built: ingest from the edge collectors through NATS, edge-to-hub
trust, log storage and retention in ClickHouse, the query API and its
clients, and export policies, with one C4 container diagram for each.

Each claim was checked against the code at this commit and against a
running deployment, and content describing unbuilt work was removed.
The unbuilt designs need major revisions and will follow separately.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@0xmc
0xmc force-pushed the docs/architecture-port branch from 1a2b95e to cb39a02 Compare November 10, 2026 22:07
@0xmc
0xmc marked this pull request as ready for review November 10, 2026 22:25
@0xmc
0xmc requested a review from a team as a code owner November 10, 2026 22:25
@0xmc
0xmc enabled auto-merge November 10, 2026 22:25

@ecv ecv left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approve.

Spot-checked the most specific claims against the code at head and found none false. The sink-collector.yaml change only drops the "(infra#5519)" reference from a comment.

  • Verified against code: queryapi defaults (limit 100 clamped to 5000, 30s timeout, 31-day max range, 32 MiB response cap, CLICKHOUSE_USER default queryapi); retention migration 000003 (internal 1d cold and 30d delete, others 7d, 36500d sentinel); nkey-generator user table (edge publish o11y.{logs,metrics,traces}.<cluster>.*, subscribe _INBOX.>; nack and sink CN mappings and permissions); ExportPolicy 1 to 20 items and 63-char DNS-label names; gateway collector 2 replicas on 4317; handshake_first in config/collectors/nats.yaml; internal project assignment in transform/milo_project_id.
  • Not checkable in this repo: hub port 7422, the 10-minute CronJob schedule, and the Let's Encrypt and DNS-01 setup. The docs already say the CronJob manifest lives outside the repo (#145), so these rest on the deployment rather than on code.
  • .github/workflows/docs.yml has permissions: contents: read and a pinned arduino/setup-task SHA, but actions/checkout@v7 is a tag. That matches the repo's other workflows (lint.yml uses tags too), so not a regression.

Follow-ups:

  • Pin actions/checkout by SHA in docs.yml, ideally across the workflows together.
  • The docs correctly state that no test shows the hub refusing a forged publish; worth filing as a test gap.

@0xmc
0xmc merged commit 195c16f into main Nov 10, 2026
31 of 40 checks passed
@0xmc
0xmc deleted the docs/architecture-port branch November 10, 2026 22:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Architecture docs don't match the built telemetry system

2 participants