Files
thanhnvandClaude Opus 4.8 36a4812ef3 refactor(structure): promote app to repo root + remove redundant workspace cruft
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>
2026-07-08 13:26:36 +09:00

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.log
  • docs/output/casan/app-evidence/backend-npm-build.log
  • docs/output/casan/app-evidence/frontend-npm-test.log
  • docs/output/casan/app-evidence/frontend-npm-build.log
  • docs/output/casan/app-evidence/backend-golden-deliberate-fail.log
  • docs/output/casan/app-evidence/backend-golden-deliberate-fail.exit
  • docs/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.yaml
  • docs/output/output_logs/001-okr-web-app/00-boss.log.md
  • docs/output/ipa-docs/srs/srs-mod01-okr-management.md
  • docs/output/specs/001-okr-web-app/spec.md
  • docs/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.ts
  • backend/test/e2e.test.ts
  • backend/test/golden/objectives.manager.json
  • docs/output/casan/app-evidence/backend-npm-test.log
  • docs/output/casan/app-evidence/backend-golden-deliberate-fail.log
  • docs/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-*.json
  • docs/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-*.json
  • docs/output/output_logs/001-okr-web-app/reports/06-review-plan-report-attempt-1.md
  • docs/output/output_logs/001-okr-web-app/reports/06-review-plan-report-attempt-2.md
  • docs/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-*.json
  • docs/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.md
  • docs/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.jsonl
  • docs/output/casan/app-evidence/rollback-before.txt
  • docs/output/casan/app-evidence/rollback-changed.txt
  • docs/output/casan/app-evidence/rollback-after.txt
  • docs/output/casan/app-evidence/rollback-record.stdout
  • docs/output/casan/app-evidence/rollback-execute.stdout

Reproduce:

node scripts/run-casan-pipeline.mjs