Summary
When a staged central config fails probation and rolls back, the event is written only to the daemon log and config-control/state.json (bad_etag / last_rollback). Nothing surfaces at the CLI unless the user runs hyp status. A rollback can strip plugins and functionality with no user-facing signal.
Evidence
state.json observed on a real machine:
{
"bad_etag": { "etag": "...", "reason": "probation_expired", "recorded_at": "..." },
"last_rollback": { "etag": "...", "reason": "probation_expired", "at": "..." }
}
This made an empty hyp backfill ("No backfill providers registered") baffling: the active config had effectively lost its plugin set for a window, and no command said so.
Proposed
- Echo a one-line rollback notice on the next CLI command after a rollback (etag + reason + remedy), similar to how sink-materialization warnings already surface.
- Consider a standard "config health" line in a CLI banner for non-
--json output.
Summary
When a staged central config fails probation and rolls back, the event is written only to the daemon log and
config-control/state.json(bad_etag/last_rollback). Nothing surfaces at the CLI unless the user runshyp status. A rollback can strip plugins and functionality with no user-facing signal.Evidence
state.jsonobserved on a real machine:{ "bad_etag": { "etag": "...", "reason": "probation_expired", "recorded_at": "..." }, "last_rollback": { "etag": "...", "reason": "probation_expired", "at": "..." } }This made an empty
hyp backfill("No backfill providers registered") baffling: the active config had effectively lost its plugin set for a window, and no command said so.Proposed
--jsonoutput.