# Deployment Artifact Validation Checklist

Date: 2026-03-29

Use this checklist after running `python3 construction/generate-deployment-derived-artifacts.py`.

## Structural Checks

1. `jq` can parse every rewritten JSON file.
2. `app-delivery-object-mapping.json` still has `residual_ambiguity_count == 0`.
3. `deployment-manifest-graph.json` has unique `edge_id` values.
4. `app-delivery-object-mapping.json` has unique `mapping_id` values.
5. `deployment-environment-graph.json` only counts top-level `ApplicationSet` entries, not plain ArgoCD `Application` bundle aggregators.

## Coverage Checks

1. Every top-level `app-registry/*.yaml` object is either:
   - present in `app-delivery-object-mapping.json`, or
   - listed as an explicit exclusion in the validation report.
2. Every nested bundle `app-registry/*.yaml` file appears in `deployment-bundle-decomposition.json`.
3. Every placement from scanned `ApplicationSet` files appears in `deployment-object-environment-matrix.json`.
4. Every manifest dependency edge still references known deployment objects.
5. `deployment-environment-graph.json` and `deployment-object-environment-matrix.json` agree on top-level placement totals.

## Trust Checks

1. Filtered repos from `.local/review-history/repos-filtered.txt` do not leak into generated ownership outputs.
2. Special bundle classifications such as `clinic`, `infra-etcd-backup`, and `lake-svc` retain evidence references that explain why they are package-level mappings instead of direct repo mappings.
3. `warn` checks are explainable and documented.
4. `fail` checks are treated as blockers.
5. `deployment-graph.json` remains a curated high-level view and is not mistaken for the full manifest DAG.

## Manual Spot Checks

1. Pick one direct repo object such as `account-svc` and verify:
   - mapping evidence points at both an ApplicationSet and KB repo metadata
   - the object appears in the environment matrix with the expected cluster and namespace
2. Pick one bundle object such as `clinic` and verify:
   - the bundle decomposition lists internal applications
   - placements cover root/dev/staging scopes where expected
3. Pick one control-plane package such as `infra-etcd-backup` and verify:
   - evidence points at the backup README or manifest
   - the mapping stays bundle-level rather than being forced onto a business-service repo
