#!/usr/bin/env python3 """Verify the investor demo visual MVP acceptance gate is documented.""" from pathlib import Path ROOT = Path(__file__).resolve().parents[1] GATE_DOC = ROOT / "Docs" / "Investor" / "InvestorDemoAcceptanceGate.md" STATUS_DOC = ROOT / "Docs" / "Investor" / "InvestorDemoStatus.md" VISUAL_QA_DOC = ROOT / "Docs" / "Ops" / "PackagedDemoVisualQAEvidence.md" ROADMAP = ROOT / "AGRARIAN_DEVELOPMENT_ROADMAP.md" REQUIRED_GATE_SNIPPETS = [ "No packaged build should be called an investor visual MVP unless it passes", "menus are confusing", "character art is mannequin-only", "terrain still reads as flat tan placeholder ground", "foliage, shrubs, bushes, grass, and trees are absent", "water does not read as a collectable freshwater source", "primitive debug shapes", "non-ray-traced Default rendering path", "required visual QA screenshots or clips are missing", "visual-qa-summary.txt", "Agrarian systems-first investor prototype - visual MVP gate pending.", "Agrarian investor visual MVP preview - internal investor build.", ] def require(condition, message): if not condition: raise SystemExit(f"FAILED: {message}") def main(): gate = GATE_DOC.read_text(encoding="utf-8") status = STATUS_DOC.read_text(encoding="utf-8") visual_qa = VISUAL_QA_DOC.read_text(encoding="utf-8") roadmap = ROADMAP.read_text(encoding="utf-8") for snippet in REQUIRED_GATE_SNIPPETS: require(snippet in gate, f"acceptance gate doc missing {snippet!r}") for snippet in [ "InvestorDemoAcceptanceGate.md", "Current classification: systems-first investor prototype.", "visual MVP gate pending", ]: require(snippet in status, f"investor status doc missing {snippet!r}") require("visual-qa-summary.txt" in visual_qa, "visual QA evidence doc must require visual-qa-summary.txt") require( "[x] Add an investor-demo acceptance gate" in roadmap, "0.1.O investor-demo acceptance gate roadmap item is not checked off", ) print("OK: investor demo visual MVP acceptance gate is documented.") if __name__ == "__main__": main()