Repository navigation
fix: the update strategy is named for the field, and absence claims nothing (ADR 0048 §2) - #82
Merged
Merged
Conversation
…othing (ADR 0048 §2)
Two corrections to a decision that was a day old, both found by running the
agent against a real cluster rather than by review.
`rollout` is renamed `update_strategy`. `Rollout` is the kind name of the Argo
custom resource, which the agent already reports in `workload_kind`; a record
carrying `workload_kind: Rollout` beside a field called `rollout` put two
meanings of one word in one object. `updateStrategy` is Kubernetes' own field
name on StatefulSet and DaemonSet.
The `unread` marker is removed. It claimed that a workload of an unknown kind
has a strategy the agent failed to read — a judgement the agent cannot make, and
one that needs a complete list of owner kinds that do not update themselves. The
list omitted `Node`, so every static control-plane pod on this kind cluster was
reported as having an unread strategy:
"workload_kind": "Node", "container": "kube-apiserver",
"workload": { "rollout": { "unread": true } }
Absence now means the agent did not read a strategy, and nothing more. What
distinguishes a Job from an Argo Rollout is `workload_kind`, which already
ships; what a kind implies is a rendering (ADR 0004).
ADR 0048 §2 is corrected in place with a dated note, per the owner's decision;
`security.md` and `backend-requirements.md` follow.
make test, lint, chart-lint: green.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011YRKuL97KRndaopfpixrhp
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two corrections to ADR 0048 §2, which landed yesterday in #81. Both were found
by running the agent against a real cluster, neither by review.
rollout→update_strategyRolloutis the kind name of the Argo custom resource, and the agent alreadyreports it in
workload_kind. So a record read like this:{ "workload_kind": "Rollout", "workload": { "rollout": { … } } }Two meanings of one word in one object, and the generic English noun is the one
that loses.
updateStrategyis Kubernetes' own field name on StatefulSet andDaemonSet, so it is borrowed rather than invented. The field is unreleased and
no backend exists, so the rename costs nothing today and would be a protocol
migration later — the same argument that applies to
deployment_revisions.The
unreadmarker is removedIt claimed that a workload of a kind the agent does not read has a strategy
the agent failed to read. That is a judgement the agent cannot make: whether an
unknown custom resource updates its replicas is not something it observes, and
this agent reduces rather than concludes (ADR 0004).
Worse, the claim needed a complete list of owner kinds that do not update
themselves, which nobody has. The list omitted
Node— static pods are owned bythe Node object — so on this kind cluster every control-plane component was
reported as having an unread strategy:
On a managed control plane that is invisible; on kubeadm, kops or bare metal it
is four or five false entries per cluster, inflating any "share of the fleet we
could not read" figure with the control plane. Patching the list would have
removed the symptom and kept the unsound construction.
Absence now means the agent did not read a strategy, and claims nothing beyond
that. What separates a Job from an Argo Rollout is
workload_kind, which shipsin the record key; what a kind implies is a rendering.
ADR 0048 is corrected in place
The repository's rule is that an accepted ADR's body is immutable and a change
of mind produces a new record. The owner decided to correct 0048 instead, on the
grounds that it was a day old, unreleased, and wrong on arrival. The correction
carries a dated note above §2 so a reader sees that the ground moved rather than
finding a body that never said anything else.
Evidence
make test,make lint,make chart-lint: green.The defect and its fix, both read from the same kind cluster (Kubernetes
1.36.1) — before:
after:
policy-e2epasses with the renamed field:The unit test now asserts absence for
Job,RolloutandNodetogether —Nodeis the regression this PR exists for.🤖 Generated with Claude Code
https://claude.ai/code/session_011YRKuL97KRndaopfpixrhp