The single issue that replaces #294 and #296, both closed as shipped. Everything larger has landed:
spec.suspend, status.placement, the ambiguous-root refusal and the reconcile-request annotation
(#326), useKustomize and serializeNamespace (#328), the commitWindow / commit.message move and
the source-scope deletion (#330), the reference collapse onto meta.LocalObjectReference, the
ClusterWatchRule.spec.rules[].scope removal and the by_type / default metric split (#333).
What is left is small and additive. None of it needs a breaking release.
Legibility (from #296)
Riders (from #294)
Decided, and dropped
The single issue that replaces #294 and #296, both closed as shipped. Everything larger has landed:
spec.suspend,status.placement, the ambiguous-root refusal and the reconcile-request annotation(#326),
useKustomizeandserializeNamespace(#328), thecommitWindow/commit.messagemove andthe source-scope deletion (#330), the reference collapse onto
meta.LocalObjectReference, theClusterWatchRule.spec.rules[].scoperemoval and theby_type/defaultmetric split (#333).What is left is small and additive. None of it needs a breaking release.
Legibility (from #296)
RenderPlacementTemplate,pinned byte-for-byte against
ResourceIdentifier.ToGitPath()across cluster-scoped, core,grouped and sensitive identities. Retires the hand-written
canonicalPathininternal/manifestanalyzer/placement.go.{kindLower}as a placement template variable, plus the single-namespace recipe and itsidentity caveat in
docs/configuration.md.docs/architecture.md,docs/configuration.mdand theCRD comments: "canonical", since
placement.defaultis a user declaration.Riders (from #294)
CommitRequest.spec.author, SAR-guarded (consumer ask ci(deps): Bump softprops/action-gh-release from 1 to 2 #5).CommitRequestlifecycle hole: a TTL or an ownerRef, and thedeleteverb (F10).defaultClusterProvidernot-found message (B6).Decided, and dropped
corev1.Eventon the GitTarget for a fall-back to canonical. The metric names the target andthe missing
byTypekey, andstatus.placementis the durable record. Two surfaces are enough.TooManyStreamscap. It was queued to bound the per-namespace fan-out ofsourceNamespace: "*",which feat(api)!: move commit batching onto GitTarget, delete allowedSourceNamespaces, and make sourceNamespace "*" cluster-wide #330 deleted outright. It was never in code; the docs no longer promise it.
status.observedDestination).gitProviderRef,branchand
pathstay immutable; a folder moves by delete-and-recreate.