Skip to content

[FEATURE] Residue of the layout and GitTarget API-wave work #339

Closed

Description

@sunib

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)

  • Express the canonical path as a template constant rendered through RenderPlacementTemplate,
    pinned byte-for-byte against ResourceIdentifier.ToGitPath() across cluster-scoped, core,
    grouped and sensitive identities. Retires the hand-written canonicalPath in
    internal/manifestanalyzer/placement.go.
  • {kindLower} as a placement template variable, plus the single-namespace recipe and its
    identity caveat in docs/configuration.md.
  • One name for the built-in path across docs/architecture.md, docs/configuration.md and the
    CRD comments: "canonical", since placement.default is a user declaration.

Riders (from #294)

Decided, and dropped

Activity

  1. sunib commented on Sep 29, 2026

    @sunib
    ContributorAuthor

    Everything on this issue is now resolved; #400 closes it on merge.

    Legibility

    Riders

    • ❌ CommitRequest.spec.author is declined. The principle is now written down in docs/spec/attribution.md: authorship is established, never asserted. A commit names the identity the API server authenticated, or says it is unknown. A name in a spec is only a claim, even behind a permission check, and it travels with the object when it is applied from Git. To commit under your own name, authenticate as yourself, for example through OIDC.
    • ✅ CommitRequest lifecycle. When a request finishes, the controller writes configbutler.ai/delete-after: <RFC 3339> onto it (--commit-request-ttl, default 48h) and deletes the request once that time has passed. Remove or edit the annotation to keep a request or move its deletion, or set it at creation. Requests that finished before the upgrade carry no annotation and are kept. (feat!: expire finished CommitRequests and name the placement fallback the built-in path #400)
    • ✅ The default ClusterProvider not-found message already names the fix, since fix(watch): enforce ClusterProvider admission wherever rules compile #258.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions