79 lines
2.5 KiB
Python
79 lines
2.5 KiB
Python
#!/usr/bin/env python3
|
|
"""Verify 0.1 is complete and 0.2 readiness notes are present."""
|
|
|
|
from pathlib import Path
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
ROADMAP = ROOT / "AGRARIAN_DEVELOPMENT_ROADMAP.md"
|
|
REVIEW = ROOT / "Docs" / "CodebaseReadinessReview.md"
|
|
|
|
REQUIRED_ROADMAP_SNIPPETS = [
|
|
"# Version 0.2 - Persistent Homesteading",
|
|
"Engineering posture for 0.2:",
|
|
"Define claim data schema with claim ID",
|
|
"Define crop data asset schema",
|
|
"Define animal data asset schema",
|
|
"Define storage data schema",
|
|
"Define structure piece data asset schema",
|
|
"Define transaction record schema",
|
|
"Convert the 0.1.R knowledge foundation into first data records",
|
|
"## 0.2.I 0.1 Hardening And Technical Debt",
|
|
"Split `AgrarianEditorAutomationLibrary.cpp`",
|
|
"Create a grouped verifier runner",
|
|
"Separate admin/dev console command authority",
|
|
"## 0.2.J Homesteading Visual And Biome Realism Pass",
|
|
"Replace tan/flat terrain presentation",
|
|
"Add investor visual QA screenshots",
|
|
]
|
|
|
|
REQUIRED_REVIEW_SNIPPETS = [
|
|
"# Codebase Readiness Review",
|
|
"All `0.1.A` through `0.1.R` roadmap checkboxes are complete.",
|
|
"AgrarianEditorAutomationLibrary.cpp` is doing too much",
|
|
"Low-Risk Cleanup Applied",
|
|
"Removed duplicate `SavingAndQuit` branch logic",
|
|
"0.2 Engineering Priorities",
|
|
]
|
|
|
|
|
|
def get_0_1_text(roadmap: str) -> str:
|
|
start = roadmap.find("## 0.1.A ")
|
|
end = roadmap.find("# Version 0.2")
|
|
if start == -1 or end == -1 or end <= start:
|
|
raise SystemExit("FAILED: could not isolate 0.1 roadmap section")
|
|
return roadmap[start:end]
|
|
|
|
|
|
def main() -> None:
|
|
roadmap = ROADMAP.read_text(encoding="utf-8")
|
|
review = REVIEW.read_text(encoding="utf-8")
|
|
|
|
failures: list[str] = []
|
|
|
|
section_0_1 = get_0_1_text(roadmap)
|
|
unchecked_0_1 = [
|
|
line.strip()
|
|
for line in section_0_1.splitlines()
|
|
if line.strip().startswith("- [ ]")
|
|
]
|
|
if unchecked_0_1:
|
|
failures.append("0.1 has unchecked items: " + "; ".join(unchecked_0_1[:5]))
|
|
|
|
for snippet in REQUIRED_ROADMAP_SNIPPETS:
|
|
if snippet not in roadmap:
|
|
failures.append(f"roadmap missing {snippet!r}")
|
|
|
|
for snippet in REQUIRED_REVIEW_SNIPPETS:
|
|
if snippet not in review:
|
|
failures.append(f"readiness review missing {snippet!r}")
|
|
|
|
if failures:
|
|
raise SystemExit("FAILED: " + "; ".join(failures))
|
|
|
|
print("OK: 0.1 completion and 0.2 readiness are documented.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|