Task · SKT-0144

Expose per-blueprint emitting flags on the public readiness probe

Description

Optional and lower priority. An operator that holds no control token cannot tell whether a given blueprint is emitting: GET /control/readiness is deliberately public so Docker can call it, and its probe form omits topology, errors, filesystem paths and operational reasons (internal/control/http.go:344-357, ReadinessProbe and Probe() in internal/control/readiness.go:108). It carries only aggregate blueprint counts (loaded, skipped, active, readiness.go:14-18). Everything per blueprint sits behind CONTROL_TOKEN on GET /control/status and GET /control/inventory.

Trade-off to settle in this task, not assume. Per-blueprint emitting flags make the public probe name blueprints, and blueprint names are topology and can carry operator meaning, so adding them to the default probe would weaken the sanitization on purpose. Options the implementer should weigh: an opt-in setting that is off by default and leaves the probe byte-identical when off, a flag set keyed by an opaque or hashed identifier, or leaving this to authenticated routes and closing the task. If the cost to the sanitization contract outweighs the value, close the task as not needed with the reasoning recorded. Related: the live apply and remove operation, which makes a per-blueprint flag more useful.

Acceptance Criteria

Definition of Done

Implementation Notes

Owner ruling 2026-10-17: build this as the opt-in setting, off by default with the probe byte-identical when off. A downstream operator that holds no control token will enable it and read only the public probe for per-blueprint emission, so do not close it as not needed. The naming choice (plain name or opaque id) is still this task’s call, recorded per AC #3.

Landed a4ce297 in loop50 (rc v1.6.0-rc.201). Naming: plain blueprint name, recorded in docs/control-plane.md. DoD #3 just dump not run: no renderer change.

References

View the source file on GitHub