Verify a published ConfigHub Space Release, then prove controller and cluster convergence read-only. Use after release-publish or for "did it deploy?", "is it live?", "did Argo pick it up?", and release close-out.
Execution mode: follow references/execution-modes.md. This Skill itself is read-only and grants no automatic tool permission. Run scoped proof reads through the host's normal permission flow; route a requested fix to its owning mutation Skill.
Prove the current delivery chain, read-only: ConfigHub intent → immutable Space Release → controller source/sync → runtime target. A successful publish alone is not a live deployment.
Start with the Release ID, bundle Digest, and OCI ManifestDigest captured by the successful publish. These are different fields:
Digest identifies the bundle content;ManifestDigest identifies the OCI manifest the controller consumes; andReleaseID identifies the ConfigHub Release record.Prefer an immutable selector:
cub release get --space <variant-space> <release-id>
cub release get --space <variant-space> --oci-reference sha256:<manifest-digest>
cub release get --space <variant-space> --bundle-digest sha256:<bundle-digest>If only the Space is known, discover the newest Release with the weaker selector:
cub release get --space <variant-space> --oci-reference latestRecord the SpaceID/slug, ReleaseID/number, UnitCount, TagID if any, bundle Digest, ManifestDigest, repository/reference, and creation time. Do not infer provenance from an invented release-link field. If the user needs a previous immutable release, use its captured ID or digest; never silently substitute latest.
The public Release resource exposes no TargetID or stored OCI Manifest.
The last source-reviewed v0.2.11 profile put com.confighub.target.id in the
generated manifest committed by ManifestDigest; exact v0.2.21 implementation
is not source-reviewed here. Historical Target proof therefore needs a
digest-matching publication/registry receipt. Today's Space.ReleaseTargetID
is current state only.
The current EffectiveReleaseSet is current desired membership, not the manifest of an older Release. Heads and TargetIDs can move after publication, and a same-count member swap defeats a UnitCount comparison. Start with the governed publication receipt's ordered UnitID/RevisionID/RevisionNum/DataHash set, then cross-check every surviving Revision whose Revision.Releases map contains the exact ReleaseID:
cub revision list --space <variant-space> \
--where "Releases ? '<release-id>'" \
--select "RevisionID,RevisionNum,DataHash,Releases" -o jsonReleases is a UUID-keyed map and ? tests exact key membership. Do not use current head or current target membership as a substitute. If the receipt is absent, a linked Revision is deleted, the reconstructed set differs, or only UnitCount survives, say that the historical Release manifest is unproven. Preserve the receipt because Release deletion removes the row/bundle and later Revision deletion can erase server-side reconstruction evidence.
| Layer | Read-only proof | Verdict |
|---|---|---|
| Historical intent | governed publication receipt, digest-matching OCI manifest Target annotation, plus exact Revisions whose Releases contains ReleaseID | actual historical Target and published UnitID/RevisionID/RevisionNum/DataHash manifest are identified |
| Current intent | cub space get <variant-space>, current target membership/heads, and exact Revisions | current desired set is identified separately; drift from historical membership is named |
| Delivery | cub release get by ReleaseID, ManifestDigest, or bundle Digest | immutable OCI release and both digests are identified; UnitCount is only a cross-check |
| Controller | argocd app get <app> or flux get … | controller source/status is bound to the OCI ManifestDigest (or a documented exact equivalent) |
| Runtime | kubectl get / describe / logs plus confighub.com/origin | target resources are healthy and trace to SpaceID, UnitID, and RevisionNum |
For Kubernetes/YAML Units, the release stamps metadata.annotations["confighub.com/origin"] with JSON fields spaceId, spaceSlug, unitId, unitSlug, and revisionNum. Release identity is deliberately not in that annotation; it lives on the OCI manifest. Therefore runtime origin alone cannot prove which Release the controller consumed. Require both controller-to-ManifestDigest proof and runtime origin/health proof.
Name each unavailable layer as an explicit proof gap. Do not use successful publication as controller proof, controller sync as workload-health proof, or matching runtime data without provenance as Release proof. Never mutate kubectl, Argo, Flux, or ConfigHub from this skill.
Space.ReleaseTargetID, Target ProviderType, the EffectiveReleaseSet, and each selected revision's ApplyGates. Current publication can fail before a Release record is created.For historical bridge-era evidence only, preserve the prior diagnostic procedure:
cub unit get <unit> --space <space> -o jq=.UnitStatus
cub unit get <unit> --space <space> -o jq=.LatestUnitEvent
cub unit-event list <unit> --space <space> -o json
cub unit-action list <unit> --space <space> --where "Action = 'Apply'" -o jsonUnitStatus and LatestUnitEvent are top-level siblings in the extended cub unit get envelope, not fields of Unit; the focused jq views avoid conflating them. Interpret the latest matching event/action with UnitStatus.Status (Progressing, Completed, Failed, or Aborted) and the event Message; bind its UnitID/action/event number and revision counters. This is useful to diagnose an archived per-Unit Apply or explain old audit history. It is historical evidence only and must never be used as the primary proof for current OCI Space Release/controller/runtime convergence.
For a whole-Space/bulk closeout, compare Release UnitCount with the receipt/reconstructed historical manifest, separately show current EffectiveReleaseSet drift, then evaluate every controller/runtime resource represented by the historical manifest. Do not use the old apply-not-completed Unit filter as if it described current Release/controller convergence.
Close out as successfully proved only when the exact Release, digest-attested historical Target, and historical member manifest are identified and all requested layers agree. State the Component, Variant Space, ReleaseID, bundle Digest, ManifestDigest, historical TargetID, historical member set/UnitCount, current desired-set drift, controller result, runtime result, and any omitted proof. Otherwise report bounded convergence lag, a concrete mismatch/failure, or the focused identity/receipt decision the user must supply.
GUI handoffs retain the review experience with supported commands:
cub component open <component> --variant <variant> --print-urlcub space open <variant-space> --print-urlcub unit open <unit> --space <variant-space> --revisions --print-urlVerify object and organization identity before treating a printed URL as proof.
com.confighub.target.id attestation: do not infer the historical Target from today's Space.cub-mutate, promotion to promote-release, and a head-moving rollback to rollback-revision; then prepare a new Space Release through release-publish for external authorization.ba61249
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.