GeoIntel release gates / Compile, test, contracts and builds (push) Successful in 1m49s
GeoIntel release gates / Python and npm vulnerability policy (push) Successful in 21s
GeoIntel release gates / Production AI image, SBOM and container scan (push) Successful in 5m39s
GeoIntel release gates / Deploy exact gated revision to Unraid (push) Failing after 58m43s
44 lines
1.3 KiB
Python
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")
|