"An observation is a measurement with a clock on it. The clock is part of the fact."
Facts, timestamped
Observed state is what a probe actually saw, and when. Not what should be true — what a bounded, read-only check found at a specific instant. Every observation carries an observed_at, because a fact without a timestamp is a rumor.
Reachability is not one signal
The biggest trap is collapsing "can I reach it?" into a single yes/no. A machine can be a visible peer on the network, accept an SSH connection, and answer a probe — and those are three independent facts. It can be a visible peer that refuses SSH. It can accept SSH but time the probe out. Store them separately, because each failure points at a different cause.
Partial is a real outcome
A probe doesn't only pass or fail. It can half-succeed: it read the OS build, then timed out before it got disk usage. Flattening that to "failed" throws away the half you have; flattening it to "passed" invents the half you don't. Partial is its own honest result.
Freshness is a fact too
A three-day-old observation is not a current one, no matter how green it looked when it landed. The moment observed_at slips past the freshness budget, the honest reading is stale — not the last value pretending to still be true.