Files
geointel/scripts/validate_m13_codex_assets.py
T
Codex 6ea3586a3e
GeoIntel CI / docs-smoke (push) Has been cancelled
GeoIntel CI / contract-smoke (push) Has been cancelled
Initial GeoIntel V1 foundation
2026-06-16 23:36:32 +02:00

44 lines
1.3 KiB
Python

#!/usr/bin/env python3
from pathlib import Path
import sys
ROOT = Path(__file__).resolve().parents[1]
required = [
"docs/30-codex-optimization/CODEX_OPTIMIZATION_OVERVIEW.md",
"docs/30-codex-optimization/CODEX_RUN_CHECKLIST.md",
"docs/30-codex-optimization/PROMPT_DISCIPLINE.md",
"docs/30-codex-optimization/TOKEN_BUDGET_POLICY.md",
"docs/30-codex-optimization/SECRETS_AND_ENV_POLICY.md",
"docs/30-codex-optimization/PARALLEL_AGENT_STRATEGY.md",
"docs/30-codex-optimization/CODEX_SKILLS_INDEX.md",
"prompts/codex/m13/DAY_1_OPTIMIZED_MASTER_PROMPT.md",
"prompts/codex/m13/PASS_COMPLETION_REPORT_PROMPT.md",
"prompts/codex/m13/PARALLEL_AGENT_COORDINATION_PROMPT.md",
]
skills = [
"geoai-backend-build",
"postgis-migration",
"raster-pipeline",
"vector-processing",
"frontend-maplibre-workbench",
"qaqc-review",
"codex-pass-review",
]
missing = []
for item in required:
p = ROOT / item
if not p.exists() or p.stat().st_size == 0:
missing.append(item)
for skill in skills:
p = ROOT / "skills" / skill / "SKILL.md"
if not p.exists() or p.stat().st_size == 0:
missing.append(str(p.relative_to(ROOT)))
if missing:
print("M13 validation failed. Missing/empty assets:")
for item in missing:
print(f"- {item}")
sys.exit(1)
print("M13 Codex optimization assets OK")