#!/usr/bin/env python3 """Validate heroku-to-aws migration-report.html (thin stakeholder report). Required sections: decision-summary, exec-costs, cost-optimization, next-steps. Conditional: what-if-scenarios when scenarios/index.json has ≥2 entries. Footer must contain "draft for review". Also enforces the report's own decision-UX and a11y contract (ported subset of the gcp-to-aws report validator, #223 — gated to what the Heroku one-pager actually emits): - decision-summary must NOT contain any badge-verdict-* pill (the skeleton mandates a typography-first `verdict-headline`; color-only verdict carriers are banned). - when estimation-infra.json declares recommendation.outcome, decision-summary must contain a `verdict-headline` element. - must declare a lang attribute; any must declare scope=col|row; any
must carry aria-label +
. Deliberately NOT enforced (would false-fail the intentionally-thin Heroku report, whose skeleton puts