Skip to content

Control → Evidence Map (this repo)

FieldValue
TypeSkill Resource
Source~/.copilot/skills/security/references/ato/control-evidence-map.md
DescriptionNot specified

Source Content

Control → Evidence Map (this repo)

The authoritative, repo-specific map of which engineering practice satisfies which control, what evidence it produces, and whether it is currently Aligned or Partial. Mirror this — do not contradict it. Source of truth: docs/engineering-practices/ato-control-alignment.mdx (keep that page and this reference in sync; the page wins on conflict).

A control you can’t evidence is a control you don’t have

The verdict rule the whole skill turns on: a control is Aligned only when the behavior is implemented and the evidence falls out as a by-product of normal work (a SARIF export, a signed commit, an ArgoCD sync record, a restore-test report). If producing the evidence needs a manual spreadsheet or a quarterly scramble, the control is at best Partial.

Control coverage (as of the source page)

Control(s)Practice pageEvidence producedStatus
AC-2Security — AuthorizationAccess requests, quarterly access reviews, account disablement recordsPartial
AC-3Security — Authorization; GitOps — EnvironmentsRole matrix, environment reviewer settings, boundary recordsAligned
AC-5GitOps — Branch Protections / Code Review; Security — AuthorizationNon-author approval, protected-branch rules, author/reviewer/promoter separationAligned
AC-6Security — Authorization / Secrets; GitOps — EnvironmentsLeast-privilege role matrix, secret-access reports, environment-scoped permsPartial
AU-2/3/6/11/12Security — Monitoring; GitOps — DeploymentsAudit event taxonomy, log samples, retention policy, deployment historyPartial
CA-3How We Work — VendorsIntegration inventory, data-flow record, boundary-crossing recordPartial
CA-7Security — Monitoring / ComplianceMonthly monitoring review, SARIF exports, POA&M-linked findingsPartial
CM-3/4/5GitOps — Deployments / Branch Protections; Definition of DonePR approvals, workflow runs, environment approvals, ArgoCD sync historyAligned
CM-6Security — CompliancePolicy-as-code records, Kyverno policies, Cloud Custodian rulesAligned
CP-9/10Security — Disaster RecoveryBackup policy, encryption evidence, quarterly restore-test reportPartial
IA-2/5Security — Authorization / SecretsSSO policy, MFA report, credential rotation record, IAM assumption logsPartial
IR-4/5/6/8GitOps — Incidents; Security — Disaster RecoveryIncident record, priority label, notification record, post-incident reviewPartial
MP-2, SC-28GitOps — EnvironmentsSynthetic lower-environment data confirmation, environment values diffPartial
RA-5, SA-11, SI-2GitOps — Dependency Management; Security — Compliance; Definition of DoneVulnerability scans, SARIF exports, CI scan status, remediation PRsAligned
SA-9, SR-3/4/5How We Work — Vendors; GitOps — Dependency ManagementVendor register, FedRAMP status, dependency inventory, SBOM exportPartial
SC-5/7/8Security — NetworkingBoundary diagram, WAF policy, firewall policy, TLS config, flow logsAligned
SC-12/13Security — SecretsKey management, rotation record, IAM and secret-manager logsPartial
SI-4Security — Monitoring / ComplianceAlert routing table, monitoring review, runtime findingsPartial

When you read this from the skill, re-check the live status in ato-control-alignment.mdx — these flip from Partial to Aligned as remediation lands. The known open gaps the page tracks: stale-account automation (AC-2), the monthly ConMon packet, a hard vendor-inventory merge gate (CA-3), annual incident tabletop evidence (IR), lower-environment synthetic-data attestation (MP-2), and release-level SBOM retention (SR).

The ato_* frontmatter convention

Every engineering-practice page that satisfies a control carries this block. When your change adds or strengthens a control, extend the relevant page’s frontmatter to match:

---
last_verified: 2026-06-07
tags: [engineering-practices, security, compliance]
ato_controls: [CA-7, CM-6, RA-5, SA-11, SI-2] # the control ids this page evidences
ato_families: [CA, CM, RA, SA, SI] # their families
ato_evidence: # the artifacts a reader can collect here
- SARIF finding export
- Vulnerability scan report
- Policy-as-code repository record
- POA&M remediation item
ato_status: "60%" # derived percentage — see "The ato_status percentage" below
---

The ato_status percentage

ato_status is a derived score, not a hand-picked label. It rolls the per-control verdicts in this table up into one number, so every page is scored identically:

ato_status% = round( 100 × ( Σ control_score ) ÷ control_count )
control_score: Aligned = 1.0 Partial = 0.5 Gap = 0.0

The scores come from the Coverage column of ato-control-alignment.mdx, applied to the page’s ato_controls. Conventions:

  • Write it quoted with a percent sign: ato_status: "60%".
  • A page with no controls keeps ato_status: not_applicable — a percentage over zero controls is meaningless.
  • The badge maps the number to a band: 100% → Aligned, 1–99% → Partial, 0% → Gap.
  • Don’t hand-edit it. Run node scripts/compute-ato-status.mjs (or --check in CI) to recompute every page after any Coverage or ato_controls change.

And an ## ATO evidence section near the end, with an Evidence → Supports table tying each artifact to a control id:

## ATO evidence
| Evidence | Supports |
|---|---|
| Monthly vulnerability scan and SARIF export | `RA-5`, `SI-2` |
| Policy-as-code repository record | `CM-6`, `CA-7` |
| Remediation PR or POA&M item | `SA-11`, `SI-2` |

Where evidence is actually enforced (compliance-as-code)

Compliance here is code that runs continuously, not a quarterly audit. The toolchain (from security/compliance.mdx) — each tool owns a layer and produces auditable evidence:

ToolLayerProducesControls
KyvernoK8s admissionClusterPolicy manifests in Git, synced by ArgoCDCM-6, AC-6, SC-7
FalcoRuntimeRuntime anomaly alerts → SARIFSI-4
TrivyImage + IaC (pre-deploy)Vulnerability scan / SARIF, gatingRA-5, SI-2
Dependabot / RenovateDependenciesAlerts + remediation PRsRA-5, SA-11, SI-2
Cloud CustodianAWS resourcesContinuous drift correction, encryption/tag policyCM-6, CA-7
ArgoCDDeliverySync history, signed-commit gateCM-3, CM-4

Findings export in SARIF into GitHub Advanced Security; developers fix, discuss, or dismiss through auditable PRs; false positives are annotated and recorded, not discarded. That paper trail is the ConMon evidence. The Kyverno NIST policy set lives at docs/kubernetes/p3-compliance/kyverno-policies/ and the OSCAL component definition at docs/kubernetes/p3-compliance/oscal/component-definition.mdx.

The monthly ConMon packet

Authorization is not one-and-done — FedRAMP requires Continuous Monitoring. The repo’s target packet (an open gap being standardized) bundles, monthly:

  • Audit-log samples (the AU-* required fields)
  • SARIF exports from every scanner
  • Vulnerability scan reports (OS / web / DB / container / IaC)
  • POA&M status (open findings + remediation dates, by SI-2 severity SLA)
  • Flow-log samples (SC-7)
  • Reviewer sign-off

When a change touches a continuously-monitored control, make sure its evidence is collectible into this packet without manual archaeology.

Sources

ClaimSource
Control → practice → evidence → status mapdocs/engineering-practices/ato-control-alignment.mdx
ato_* frontmatter + “ATO evidence” section patterndocs/engineering-practices/security/compliance.mdx and siblings
Compliance-as-code toolchaindocs/engineering-practices/security/compliance.mdx
ConMon requirementdocs/compliance/ato/security/fedramp.mdx