01 · Ask for it
One command, one PDF.
The assistant generates the posture report on demand. It reads every manifest
in every writable repository, the same set of files that the repository scanner
sees. Then it renders a PDF.
It creates no merge requests and no issues. The other agents already propose
fixes for the gaps it counts. 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 an index of the whole repository, 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. The assistant counts anything that the checks
cannot decide as unknown, including an error while checking.
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 the assistant scanned and how they
split. A reader sees at once that 140 of 212 workloads prove they
run as non-root. Another 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.
The assistant reads each zone, read-only. It checks the minimum TLS version, HSTS, SSL mode, DNSSEC,
managed WAF rules and rate limiting. It also checks for dangling CNAMEs,
which point at a target that no longer resolves. They are a classic takeover
risk.
If a zone's plan does not include WAF or rate limiting, the check abstains
and raises no finding. The assistant reports a setting that it could not read as
unobserved, never as fine. A separate check catches an armed edge
block that would refuse the egress IPs of your own clusters.
06 · Your forge
The GitLab instance your GitOps depends on.
If someone can force-push to the deployment repository, 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.
The assistant reads every active GKE recommendation for each cluster. The text is
Google's, never paraphrased. The assistant already
covers some recommendations itself (disruption budgets, memory limits, under-provisioned
workloads). It attaches those as supporting evidence. It does not
file them twice.
New recommendations arrive as issues. The assistant can also turn them into a draft MR
against the matching manifest. This 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 the assistant proposes a Flux spec.verify block, it checks the chart's
signing with cosign (a tool that checks signatures) and caches the result. A verify block on a chart
that is not cosign-signed would break the release, so the assistant refuses it.
When a proposal pins an image to a @sha256: digest, that
digest needs a receipt from the registry. If nobody looked up the digest, the assistant holds
it for review and never ships it.
09 · Issues by default
Posture findings describe a setting, not a diff.
Edge, forge and cloud settings mostly live outside your git repositories.
So these findings are issues. There is one issue per cause, with the
evidence, the risk and the fix steps. Sometimes the setting does live in
git, for example in a CI file or a manifest. Then a draft MR is possible.
The full issue is below.