Files
geointel/scripts/validate_m14_launch_assets.py
T
Codex 79a9f9dbfc
GeoIntel release gates / Compile, test, contracts and builds (push) Canceled after 0s
GeoIntel release gates / Python and npm vulnerability policy (push) Canceled after 0s
GeoIntel release gates / GIS image, SBOM and container scan (push) Canceled after 0s
Prepare GeoIntel 1.0.0 release candidate
2026-07-18 07:59:38 +02:00

55 lines
2.0 KiB
Python

from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
required = [
'docs/40-build-launch/BUILD_SUCCESS_DEFINITION.md',
'docs/40-build-launch/SPRINT_1_SCOPE_FREEZE.md',
'docs/40-build-launch/DATA_ACQUISITION_PLAYBOOK.md',
'docs/40-build-launch/GOLDEN_DATASET_PACKAGE.md',
'docs/40-build-launch/BUILD_ORDER_GRAPH.md',
'docs/40-build-launch/MODULE_ACCEPTANCE_CRITERIA.md',
'docs/40-build-launch/CODEX_STOP_RULES.md',
'docs/40-build-launch/RELEASE_STRATEGY.md',
'docs/40-build-launch/RISK_REGISTER.md',
'docs/40-build-launch/BACKLOG_PRIORITIES_MOSCOW.md',
'docs/40-build-launch/FOLDER_OWNERSHIP.md',
'prompts/codex/m14/CODEX_FIRST_DAY_MASTER_PROMPT.md',
'checklists/SPRINT_1_OPERATOR_CHECKLIST.md',
'release/v0.1-foundation-target.md',
]
missing = [p for p in required if not (ROOT / p).exists()]
if missing:
raise SystemExit('Missing M14 launch assets:\n' + '\n'.join(missing))
prompt = (ROOT / 'prompts/codex/m14/CODEX_FIRST_DAY_MASTER_PROMPT.md').read_text(encoding='utf-8')
required_terms = [
'Sprint 1 only',
'Do not build yet',
'YOLO live inference',
'CODEX_STOP_RULES',
'BUILD_SUCCESS_DEFINITION',
]
missing_terms = [term for term in required_terms if term not in prompt]
if missing_terms:
raise SystemExit('M14 prompt missing expected control terms: ' + ', '.join(missing_terms))
start = (ROOT / 'CODEX_START.md').read_text(encoding='utf-8')
if 'prompts/codex/m14/CODEX_FIRST_DAY_MASTER_PROMPT.md' not in start:
raise SystemExit('CODEX_START.md does not point to M14 first-day prompt')
readme = (ROOT / 'README.md').read_text(encoding='utf-8')
active_terms = [
'v1.0.0-rc.1',
'docs/RC_SCOPE_FREEZE_BELGIUM_NORTH_SEA.md',
'docs/RC_ROADMAP_BELGIUM_NORTH_SEA.md',
]
missing_active_terms = [term for term in active_terms if term not in readme]
if missing_active_terms:
raise SystemExit(
'README.md is missing active release controls: '
+ ', '.join(missing_active_terms)
)
print('Historical M14 assets and active RC controls OK')