Standard production layout: the OKR app (was nested under AINative_OKR_CASAN5/) is now
the repository root. No more wrapper directory.
- Promote AINative_OKR_CASAN5/* -> repo root (backend/ frontend/ packages/ apps/
.specify/ docs/ infra/ nginx/ scripts/ + configs). Merge tool dirs: .gitea (kept the
active deploy ci.yml, added harness-ci.yml + runbooks), .claude (agents/commands +
launch.json), .github moved up.
- Remove redundant: 00_SUBMISSION_PACKAGE, scattered root notes (FPT_CASAN_Full.md,
tu-tuong-casan.md, casan-tu-sinh..., casan_harness_assessment.md, source-review...,
README_CASAN5_REFINED.md), casan-next-plans/ and optimize-docs/ (competition/planning
artifacts — roadmap + design history preserved in git log / commit messages).
- Update all references to the old layout:
- .gitea/workflows/{ci,harness-ci}.yml, .github/workflows/{ci,deploy}.yml:
working-directory .; drop AINative_OKR_CASAN5/ prefix; .specify/{tests,scripts}
-> packages/casan-harness/... (.specify/logs state kept)
- .claude/launch.json, .gitea/*-runbook.md: path prefixes
- CLAUDE.md, README.md: docs/input -> apps/okr/domain/input
- policy-bundle.yaml: 8 policy paths -> packages/casan-harness/...; manifest re-signed
- secrets-scan.sh: fixture excludes -> new package/domain paths.
Full gate from the new root: PASS=64 FAIL=0 SKIP=3.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
4.2 KiB
4.2 KiB
CASAN OKR App Evidence Manifest
Feature: 001-okr-web-app
Date: 2026-06-28
Run the app
Backend:
npm install
npm run db:setup -w backend
npm run seed -w backend
npm run dev -w backend
Frontend:
VITE_API_BASE_URL=http://localhost:3000/api/v1 npm run dev -w frontend
Open http://localhost:5173/login. Seed credentials: employee / Password@123, manager / Password@123, admin / Password@123.
Note: Prisma Client is the application ORM. In this Node 24 local environment, prisma db push returned an opaque schema-engine error even for a valid schema, so the checked-in SQLite migration SQL is applied by backend/scripts/setup-sqlite.mjs using Node 24 node:sqlite, then prisma db seed seeds through Prisma.
Run tests and builds
npm test -w backend
npm run build -w backend
npm test -w frontend
npm run build -w frontend
Captured logs:
docs/output/casan/app-evidence/backend-npm-test.logdocs/output/casan/app-evidence/backend-npm-build.logdocs/output/casan/app-evidence/frontend-npm-test.logdocs/output/casan/app-evidence/frontend-npm-build.logdocs/output/casan/app-evidence/backend-golden-deliberate-fail.logdocs/output/casan/app-evidence/backend-golden-deliberate-fail.exitdocs/output/casan/app-evidence/backend-npm-test-after-golden-restore.log
Re-run the pipeline
node scripts/run-casan-pipeline.mjs
Captured run log: docs/output/casan/app-evidence/pipeline-run.log.
H1 Context Evidence
Evidence:
docs/output/output_logs/001-okr-web-app/pipeline-context.yamldocs/output/output_logs/001-okr-web-app/00-boss.log.mddocs/output/ipa-docs/srs/srs-mod01-okr-management.mddocs/output/specs/001-okr-web-app/spec.mddocs/output/specs/001-okr-web-app/plan.md
Reproduce:
node scripts/run-casan-pipeline.mjs
H2 Tool / Policy Evidence
Evidence:
.specify/logs/audit/tool-calls.jsonl.specify/logs/level5/tool-registry.jsonl.specify/logs/audit/audit.jsonl
Reproduce:
node scripts/run-casan-pipeline.mjs
H3 Evaluation Evidence
Evidence:
backend/test/services.test.tsbackend/test/e2e.test.tsbackend/test/golden/objectives.manager.jsondocs/output/casan/app-evidence/backend-npm-test.logdocs/output/casan/app-evidence/backend-golden-deliberate-fail.logdocs/output/casan/app-evidence/backend-golden-deliberate-fail.exit
Reproduce:
npm test -w backend
cp backend/test/golden/objectives.manager.json /tmp/objectives.manager.json.bak
perl -0pi -e 's/"total": 3/"total": 999/' backend/test/golden/objectives.manager.json
npm test -w backend
cp /tmp/objectives.manager.json.bak backend/test/golden/objectives.manager.json
npm test -w backend
H4 Security Evidence
Evidence:
.specify/logs/audit/security.jsonl.specify/logs/trace/security-*.jsondocs/output/casan/app-evidence/pipeline-run.log
Reproduce:
node scripts/run-casan-pipeline.mjs
H5 Governance Evidence
Evidence:
.specify/logs/audit/audit.jsonl.specify/logs/trace/governance-*.jsondocs/output/output_logs/001-okr-web-app/reports/06-review-plan-report-attempt-1.mddocs/output/output_logs/001-okr-web-app/reports/06-review-plan-report-attempt-2.mddocs/output/output_logs/001-okr-web-app/00-boss.log.md
Reproduce:
node scripts/run-casan-pipeline.mjs
H6 AgentOps Evidence
Evidence:
.specify/logs/cost/metrics.jsonl.specify/logs/trace/agentops-*.jsondocs/output/output_logs/001-okr-web-app/pipeline-context.yaml
Reproduce:
node scripts/run-casan-pipeline.mjs
H7 Orchestration Evidence
Evidence:
docs/output/output_logs/001-okr-web-app/00-boss.log.mddocs/output/output_logs/001-okr-web-app/pipeline-context.yaml.specify/logs/level5/fallback.jsonl.specify/logs/level5/okr-plan-drift-report.json.specify/logs/level5/rollback-transactions.jsonldocs/output/casan/app-evidence/rollback-before.txtdocs/output/casan/app-evidence/rollback-changed.txtdocs/output/casan/app-evidence/rollback-after.txtdocs/output/casan/app-evidence/rollback-record.stdoutdocs/output/casan/app-evidence/rollback-execute.stdout
Reproduce:
node scripts/run-casan-pipeline.mjs