01 · Ask for it
One command, one PDF.
The posture report is generated on demand. It walks every manifest
in every writable repository, the same corpus the repo scanner
sees, and renders a PDF.
It creates no merge requests and no issues. The gaps it counts are
already proposed by the other agents; the report is the summary,
not a second copy of the work.
02 · Map manifests to controls
Three controls, chosen because they can be proven.
The first version covers the controls where a manifest can carry
positive evidence:
PSS-restricted:runAsNonRoot, every container, init and ephemeral container included
CIS-5.1.x:sa-token-least-privilege, service account token automount
NSA-hardening:NetworkPolicy-present, checked against a repo-wide index so a policy in a sibling file still counts
03 · Never falsely compliant
Silence is "unknown", not "satisfied".
A false "compliant" is worse than a false gap: someone may rely on it
in an audit. So a control is satisfied only when the manifest
says so explicitly. No finding is not proof. Anything the checks
cannot decide, including an error while checking, is counted as
unknown.
The report says on its face: manifest-checkable subset only, not
an attestation.
04 · The report
Satisfied, gap, unknown, and the denominator.
Each control shows how many workloads were scanned and how they
split. A reader sees at once that 140 of 212 workloads prove they
run as non-root, 31 do not, and 41 could not be decided from the
manifest alone.
ISO 27001 and SOC 2 are organisational standards; mapping down to
them is planned as a later layer.
05 · Your edge
Cloudflare zones, checked every day.
Read-only, per zone: minimum TLS version, HSTS, SSL mode, DNSSEC,
managed WAF rules and rate limiting, plus dangling CNAMEs
that point at a target that no longer resolves, a classic takeover
risk.
A zone whose plan does not include WAF or rate limiting abstains
rather than fires. A setting that could not be read is reported as
unobserved, never as fine. A separate check catches an armed edge
block that would refuse your own clusters' egress IPs.
06 · Your forge
The GitLab instance your GitOps depends on.
If someone can force-push to the deployment repo, the rest of the
chain does not matter. The assistant reviews the forge itself:
- Access: unprotected default branches, force push allowed, merge gates off, too many owners, groups without 2FA, memberships with no expiry.
- CI: committed secrets, debug tracing that prints variables, public job artifacts, over-broad job tokens.
- Runners: shared runners unlocked on protected work, runners offline for months.
07 · Google's view of your GKE clusters
The recommender, quoted word for word.
Every active GKE recommendation is read per cluster. The text is
Google's, never paraphrased. Recommendations the assistant already
covers itself (disruption budgets, memory limits, under-provisioned
workloads) are attached as supporting evidence instead of being
filed twice.
New recommendations arrive as issues. Turning them into a draft MR
against the matching manifest is built but not yet switched on.
08 · Chart signatures and pinned digests
Only verify what is actually signed. Only pin what was actually read.
Before a Flux spec.verify block is proposed, the chart's
signing is checked with cosign and cached. A verify block on a chart
that is not cosign-signed would break the release, so it is refused.
When a proposal pins an image to a @sha256: digest, that
digest needs a receipt from the registry. A digest nobody looked up
is held for review, never shipped.
09 · Issues by default
Posture findings describe a setting, not a diff.
Edge, forge and cloud settings mostly live outside your git repos,
so these findings are issues: one per cause, with the
evidence, the risk and the fix steps. Where the setting does live in
git (a CI file, a manifest), a draft MR is possible.
The full issue is below.