The plan set (Plan-00..18, backlog/hardening/QA status, team allocation) is the ONGOING roadmap, not a finished competition artifact — restored from history into docs/plans/. Plan-01 (restructure) marked ✅ done; the rest remain to do. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.4 KiB
3.4 KiB
CASAN PLAN 05 — CI/CD & Release Gate
Status 2026-07-06: CI gate MVP implemented + locally syntax/filter verified. A reusable local/CI gate script now exists, and a Gitea Actions workflow is wired to run it on
mainpush/PR. Package publishing/release automation is still planned.
Delivered
| Capability | Where | Verification |
|---|---|---|
| One-command harness CI gate | .specify/scripts/bash/ci-harness-gate.sh |
bash -n; local suites are callable in safe order |
| Safe test order | run-casan4 runs first because it rewrites .specify/logs; hardening suites run after |
script order |
| Per-suite timeout | CASAN_CI_STEP_TIMEOUT_SEC protects CI from hung model/security subprocesses |
full gate attempt exposed a long A6 run; timeout wrapper added |
| Filtered local verification | `CASAN_CI_SUITE_FILTER='phase2-sourcegen | phase10-traceability'` |
| Source-gen gate included | phase2-sourcegen-tests.sh included |
sourcegen 3/0 |
| Traceability gate included | phase10-traceability-tests.sh included |
traceability 3/0 |
| Frontend runtime tests included | npm test -w frontend when npm is present |
frontend Vitest path |
| Optional Docker local-prod lab | CASAN_CI_RUN_INFRA_LAB=1 runs phase-prod-infra-lab-tests.sh only when Docker Compose is available |
skip-aware by default |
| Gitea Actions workflow | .gitea/workflows/harness-ci.yml |
workflow calls ci-harness-gate.sh |
Gate contents
Required gate:
run-casan4-harness-tests.shadversarial-harness-tests.shphase1-track-a-tests.shphase2-track-c-tests.shphase2-sourcegen-tests.shphase3-evidence-pack-tests.shphase3-model-router-tests.shphase-h5-approval-tests.shphase-h5-infra-tests.shphase-h6-agentops-tests.shphase-c7-incident-tests.shphase-h4-multilingual-tests.shphase-c6-sandbox-tests.shphase-h4-split-inject-tests.shphase10-traceability-tests.shnpm test -w frontendwhen npm is available
Optional gate:
phase-prod-infra-lab-tests.shwhenCASAN_CI_RUN_INFRA_LAB=1and Docker Compose is available.
Remaining work
| Priority | Work | Done when |
|---|---|---|
| P1 | Run the workflow on the real Gitea runner | Gitea run shows green CASAN Harness CI on main |
| P2 | Investigate slow/hung A6 full-gate local run | phase1-track-a-tests.sh A6 completes under timeout consistently on Mac/runner |
| P3 | Decide Docker availability on runner | CASAN_CI_RUN_INFRA_LAB=1 is enabled only if runner mounts Docker safely |
| P4 | Package/release automation | npm pack or release artifact for fpt-casan-sdd-harness is generated and versioned |
| P5 | Backend full npm test unblock |
Prisma/MySQL-vs-SQLite test-infra mismatch is resolved or split into a proper MySQL service job |
| P6 | Branch protection | Merge requires green CI gate |
Local commands
cd AINative_OKR_CASAN5
bash -n .specify/scripts/bash/ci-harness-gate.sh
CASAN_CI_RUN_FRONTEND=1 CASAN_CI_RUN_INFRA_LAB=0 bash .specify/scripts/bash/ci-harness-gate.sh
CASAN_CI_RUN_INFRA_LAB=1 bash .specify/tests/phase-prod-infra-lab-tests.sh
Notes
backend npm testis not part of the required CI gate yet because the current repo has a known pre-existing mismatch:schema.prismais MySQL-oriented butbackend/scripts/setup-sqlite.mjsapplies migrations to SQLite.- The workflow installs Node 20 inside the Gitea job if the runner image does
not already provide
node/npm.