name: CI on: pull_request: push: branches: - main - "feature/**" jobs: verify: runs-on: ubuntu-latest steps: - name: Check out repository uses: actions/checkout@v7 - name: Set up Python uses: actions/setup-python@v6 with: python-version: "3.11" cache: pip - name: Install dependencies run: | python -m pip install --upgrade pip pip install -e ".[dev,integrations]" - name: Integration readiness run: python scripts/check_integrations.py - name: Genblaze SDK contract run: python scripts/genblaze_contract_check.py - name: Lint run: ruff check . - name: Tests run: pytest - name: API smoke run: | uvicorn proofframe.app:app --host 127.0.0.1 --port 8088 > /tmp/proofframe-uvicorn.log 2>&1 & echo $! > /tmp/proofframe-uvicorn.pid for i in {1..30}; do curl -fsS http://127.0.0.1:8088/api/health && break sleep 1 done python scripts/api_smoke.py --base-url http://127.0.0.1:8088 kill "$(cat /tmp/proofframe-uvicorn.pid)" - name: Docker smoke run: python scripts/docker_smoke.py - name: Secret scan run: python scripts/secret_scan.py - name: Public claim lint run: python scripts/claim_lint.py - name: Live credential handoff run: python scripts/live_env_handoff.py - name: Final env wizard run: python scripts/final_env_wizard.py --check-only - name: B2 key scope checklist run: python scripts/b2_key_scope_checklist.py - name: Devpost form kit run: python scripts/devpost_form_kit.py - name: Devpost submission checklist run: python scripts/devpost_submission_checklist.py - name: Judge brief run: python scripts/judge_brief.py - name: Judge crosswalk run: python scripts/judge_crosswalk.py - name: Judge evidence index run: python scripts/judge_evidence_index.py - name: Judge decision brief run: python scripts/judge_decision_brief.py - name: Devpost event snapshot run: python scripts/devpost_event_snapshot.py --validate-committed - name: Agent handoff consistency run: python scripts/agent_handoff_check.py - name: Public Space upload dry run run: python scripts/public_space_upload.py - name: Public Space sync run: | for attempt in 1 2 3; do python scripts/public_space_sync.py && exit 0 echo "Public Space sync failed on attempt ${attempt}; retrying after 30s..." sleep 30 done python scripts/public_space_sync.py - name: Demo storyboard run: python scripts/demo_storyboard.py - name: Public video check run: python scripts/public_video_check.py - name: Final video publish kit run: python scripts/final_video_publish_kit.py - name: Sponsor fit audit run: python scripts/sponsor_fit_audit.py - name: Demo readiness run: python scripts/demo_readiness.py - name: Recording assets run: python scripts/recording_assets.py - name: Award readiness run: python scripts/award_readiness.py --min-score 75 - name: Final submission control run: python scripts/final_submission_control.py - name: Final closeout status run: python scripts/final_closeout_status.py - name: Final operator brief run: python scripts/final_operator_brief.py - name: Final launch plan run: python scripts/final_launch_plan.py - name: Submission audit run: python scripts/submission_audit.py - name: Devpost submission preview run: python scripts/devpost_submission_preview.py - name: Devpost submission receipt run: python scripts/devpost_submission_receipt.py - name: Submission bundle run: python scripts/submission_bundle.py