Skip to content

[FEATURE] One breaking GitTarget API wave: the folder is described on the GitTarget #294

Description

@sunib

Tracking issue for one breaking wave on GitTarget. Design:
docs/design/gittarget-api-wave.md.

Why one wave rather than six changes

The consumer pins us three ways (image, Go module, require line), so each breaking release costs a
coordinated bump. That argues for batching, and it is the weaker half of the argument.

The stronger half: four of these items are the same design decision seen from different angles, and
building them separately means deciding it four times, inconsistently.

The folder is described on the GitTarget. The connection describes only the connection.

Ship spec.layout alone and the principle is asserted by one field while commitWindow still
contradicts it.

Contents

Two interactions that change the design rather than accompanying it

  • spec.mode: Observe is how a layout is adopted safely. The layout model's weakest point is
    adoption: placement only ever affects new documents, so there is nothing to preview by
    inspection. Observe plus status.layout is that preview — the operator scans, resolves the
    layout, publishes what it would do, and writes nothing. That turns "declare a layout and hope"
    into a dry run, and gives Observe a purpose beyond "a safety switch nobody uses".
  • spec.interval is what keeps the layout observation fresh for a target that writes nothing.

spec.suspend is a precondition rather than a rider: a layout that can create a kustomization.yaml
needs a stop button. The maintainer review's bottom line stands — this controller writes to a Git
repository and there is no way to make it stop that is not deleting the object.

Deliberately outside the wave

  • F9 (the scope: Namespaced status-write envtest) stays out, because its answer constrains the
    enum work.
  • The version stays v1alpha3, with loud rejections rather than paying for a conversion path.
  • Tier 1 work (the deps(deps): Bump k8s.io/api from 0.33.0 to 0.33.4 #15 audit-route condition, the removal-wait decision) is not breaking and must
    not wait for this.

Not in 0.41.0

Postponed deliberately. 0.41.0 carries the attribution model and the placement break already.

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