"The census doesn't ask what should be true. It goes and looks."
What the Census Actually Measures
The census is Firelink's act of looking. For each member it measures a specific set of read-only facts: disk and repository presence; Git branch, dirty paths, upstream and divergence; GitHub presence; version discovery; the installed native bundle and whether its process is running; registered service state; web endpoint health; launchd ownership; and the Tailscale Serve mapping. None of these are declared — they're all observed, right now, from the host. That's the difference between a hub that knows and a hub that remembers.
The one that catches people most often is Git dirtiness. 'Which repo has uncommitted work I forgot on another Mac?' — the census answers that by actually running the Git equivalent of a status check and reporting dirty paths, ahead/behind counts, and divergence. That was one of the original hub questions from the very first lesson, and it's answered here by measurement, not memory.
Drift Is Where Observed Meets Declared
Every observed fact is compared against what was declared, and the gaps become the drift report: a managed repo missing from the roster, a network declaration absent or contradictory, an operational manifest missing or invalid, a declared service not installed, a GitHub repo absent, a version unknown, a launch target unavailable on this client. Drift isn't failure — it's the honest accounting of where the map and the territory disagree, surfaced so a human can decide what to do about it.
The Census Only Looks — It Never Fixes
Every probe is read-only. The census observes and timestamps; it never writes back silently, never auto-deletes, never retires, never rewrites, never guesses product intent. It will happily tell you a repo is dirty, a service is missing, a version is unknown — and then stop, because deciding what to do about any of those is a human's call. Looking is the census's entire job, and looking without touching is what makes it safe to run constantly.