Realign the roadmap with what is already built

Three of the roadmap's claims were contradicted by the repository
itself.

Fleet management was Phase 11, "Planned", and positioning.md said config
still flowed to the agent from the host rather than from the platform.
agent-management-design.md has recorded the opposite for some time:
punch list complete, verified live, with central authoring, versioning,
rollout on the next check-in, observation, and a restart command a real
agent picks up and acts on. There is no Phase 11 now. Its remainder is
either already named there -- stop/uninstall, per-host multi-row
alerting, a rule-per-host generator -- or belongs to Phase 8, since
distributing rules is the one genuinely new thing the mechanism has to
carry, and a rule language nobody can push to a fleet is not worth
having.

That inverts the old ordering argument, which put fleet last on the
grounds that it manages configuration the earlier phases define. Sound
reasoning; the world went the other way and built the mechanism first.
Recorded rather than quietly dropped, because the instinct behind it is
a good one that happened not to apply.

Retention was listed as a question Phase 10 would finally have to
answer. Half of it is answered: api/logretention serves operator-driven
preview and delete with an owner-only per-agent floor. What is missing
is an automatic TTL, so Phase 10 owns tiering and automatic TTL rather
than retention from nothing.

The rule-language recommendation is now settled rather than proposed,
and not on its own authority: DesiredOverride is already a closed typed
shape that cannot carry arbitrary code, so no channel exists that would
deliver JavaScript to an agent even if the language argument had gone
the other way.

That surfaced a requirement nothing had written down. Agent management
rests on an invariant it states outright -- every editable field
degrades behaviour without cutting off the agent's ability to receive
the next correction. Processing rules break it: a rule that panics or
loops strands the agent exactly the way a corrupted ingest endpoint
would, across every host it reached first. Phase 8 now owes either total
evaluation or apply-then-verify with rollback, chosen deliberately
rather than discovered mid-rollout.

Signed-off-by: John Coffey <[email protected]>
This commit is contained in:
2026-09-04 19:16:01 -07:00
parent 9e1efba38f
commit 18a55ccd5a
4 changed files with 114 additions and 29 deletions
+8 -5
View File
@@ -271,11 +271,14 @@ defense against application-layer bugs, not an operational control.
## Open questions for you to resolve
- Retention/TTL policy for the ClickHouse `logs` table — not specified yet.
This was deferred until storage sizing became a real concern; Phase 10's
archive/replay work is where it stops being deferrable, since tiering to
object storage and reading back from it is the same question asked from
the other side. See [positioning.md](positioning.md).
- **Automatic** retention/TTL policy for the ClickHouse `logs` table — not
specified yet. The operator-driven half exists: `api/logretention` serves
preview and delete, with an owner-only per-agent floor. What is missing is
a policy that expires data without somebody asking it to. Deferred until
storage sizing became a real concern; Phase 10's archive/replay work is
where it stops being deferrable, since tiering to object storage and
reading back from it is the same question asked from the other side. See
[positioning.md](positioning.md).
- Exact OTel log schema field mapping (which OTel resource/log attributes
map to which ClickHouse columns) — Phase 0 uses a minimal subset
(timestamp, host, service, severity, message, attributes map); full