Repository navigation
feat: the first-hour findings name their fields, and the agent collects them (ADR 0048) - #81
Merged
Merged
Conversation
…ts them (ADR 0048)
Four fields the five first-hour findings need and the agent did not ship:
- probe schedules per container, without what any probe checks;
- how a workload replaces its own replicas, nested in a `workload` scope block;
- the Services routing to a workload, in `workload_policy` (+1 ClusterRole grant);
- a version on every module in `go_build`, reversing ADR 0017 §2.
Reading the probe fields turned up a filter-early hole ADR 0046 missed: a probe's
exec command and its httpGet headers have been held in the informer cache since
the first informer, as have the lifecycle hooks. All are now cleared at the
transform, so they are not held rather than not shipped.
`go_build` is now a bill of materials and `security.md` §10.4 says so. §8 came
out four lines smaller; the file ceiling moves 920 → 930 (ADR 0044).
make test, lint, chart-lint, vulncheck: green. On kind (Kubernetes 1.36.1):
policy for .../web: budget web-pdb allows 0 disruptions, autoscaler web-hpa
caps at 5, service web (ClusterIP) routes to it
shape of .../web: liveness exec every 11s ×4, rollout RollingUpdate 100%/0,
and the probe command is absent
sample dependency: github.com/cespare/xxhash/v2 v2.3.0 (of 1 modules)
policy-e2e, inventory-e2e, lifecycle-e2e, node-e2e and the imageless suite all
pass.
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.
Runs the collection question backwards: name the sentence the report has to say,
then find what it needs. Five findings are meant to be true from one read of a
cluster; checking each against what ships found four fields missing.
What is collected
workload_metadata— delays, period,timeout, thresholds and the handler's kind. Nothing about what any probe
checks.
workloadscope block beside theexisting
podone (ADR 0014). Read at flush time, not at describe time: amaxUnavailableedit causes no pod event, so a value captured at describewould stay wrong indefinitely.
workload_policy. One newClusterRole grant,
services, resolved through admitted pods like a budget'sselector, degrading like every other policy source.
go_build, reversing ADR 0017 §2.The hole this turned up
ADR 0046 moved
env/args/commandto the informer transform so they arenever held, not merely never shipped. A probe's
exechandler is a commandand its
httpGethandler carrieshttpHeaders— where anAuthorizationvalue is written by hand. Both have been in the controller's cache since the
first informer, as have the
preStop/postStarthooks, which nothing reads.All are now cleared at the transform. The test enumerates every watched kind
and fails without the fix.
Two things stated rather than hidden
go_buildis now a bill of materials.security.mdclaimed it "carriesmodule paths only, so it is not and cannot be used as a vulnerability-scanning
feed". That sentence is now false; it is rewritten, and §10.4 discloses the
widening. ADR 0048 §3 argues the reversal rather than performing it quietly.
An unread controller says so. A Job does not roll; an Argo Rollout rolls in
a way the agent holds no RBAC to read. Reporting nothing for both would tell a
customer their Argo workloads have no rollout strategy. Those records carry
rollout: {unread: true}and nothing else. No CRD is read and the closedClusterRole gains no vendor resource — reading Argo properly is its own ADR.
Prose budget
security.md§8 came out four lines smaller: room was found by deleting ADRrationale that had drifted back in. The section ceiling did not move. The file
ceiling moves 920 → 930 for a grant, a field class and a disclosure the document
did not owe before (ADR 0044).
Evidence
make test,make lint,make chart-lint,make vulncheck: green.On kind (Kubernetes 1.36.1) —
policy-e2e,inventory-e2e,lifecycle-e2e,node-e2eand the imageless suite all pass:The probe fixture writes a marker into its exec command; the check greps the
whole
workload-metadata.json, not the record.Not run:
watch-e2e(18 minutes by nature — it waits for client-go tore-establish a watch). Its first half is covered:
policy-e2efails ifunavailable_sourcesis non-empty, andservicesis now in that list.🤖 Generated with Claude Code
https://claude.ai/code/session_011YRKuL97KRndaopfpixrhp