Task · SKT-0057

Expose bounded Fleet collector configuration receipt evidence

Description

The Fleet client records a successful GetConfig heartbeat but discards its response, so an external integration cannot distinguish collector liveness from receipt of a particular pipeline revision. Synthetic collectors intentionally do not execute the returned Alloy configuration. Add truthful, sanitized receipt evidence suitable for matching/delivery rehearsal. Existing Kubernetes mirror attributes already cover cluster, namespace, platform, release and workload dimensions; do not add arbitrary attributes or fabricated execution telemetry merely to satisfy a matcher.

Acceptance Criteria

Definition of Done

Implementation Plan

Pin the GetConfig response schema, reduce non-empty content to bounded SHA-256 receipt metadata, distinguish heartbeat from receipt and stale/error/unavailable outcomes, wire authenticated control status, validate fixtures and review with the residency batch.

Implementation Notes

Pinned Alloy Remote Config v0.0.12 response fields; content is reduced to SHA-256, opaque server hash discarded, response bounded to 1 MiB and one complete JSON value. Successful empty responses remain unavailable, not receipt. Per-collector lifecycle and receipt status are wired into authenticated control status. Test-first fixtures, integrated fleet/status/runner/control/command tests, and just check passed. CodeRabbit L1/L2 batch completed with no Fleet findings. No live Fleet call occurred; receipt never proves parsing or execution.

Final integrated just check passed and the generation pass ran once with no drift. No blueprint config struct or renderer changed. Safe inventory output was generated, but a partial catalogue-name comparison does not establish full label/envelope conformance; the dump DoD is left unchecked. Live Fleet receipt is not claimed.

Final Summary

Bounded configuration receipt diagnostics are implemented and fixture-proven. Live receipt from a real Fleet response remains unverified.

References

View the source file on GitHub