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>
This commit is contained in:
thanhnv
2026-07-08 13:26:36 +09:00
co-authored by Claude Opus 4.8
parent 7101af9fd4
commit 36a4812ef3
925 changed files with 410 additions and 18001 deletions
@@ -0,0 +1,131 @@
feature-id: 001-okr-web-app
module-id: MOD-01
module-keyword: okr-management
tech-stack: NestJS + Prisma + SQLite + React + Vite + Tailwind
steps:
- id: dry-STEP1-attempt-1
agent: okr.srs
artifact: docs/output/output_logs/001-okr-web-app/casan/dry-STEP1-attempt-1-output.md
verdict: APPROVED
trace_id: c0e29b20-887b-491f-9aca-8c512badf937
trace_file: .specify/logs/trace/agentops-c0e29b20-887b-491f-9aca-8c512badf937.json
status: success
- id: dry-STEP2-attempt-1
agent: okr.bd
artifact: docs/output/output_logs/001-okr-web-app/casan/dry-STEP2-attempt-1-output.md
verdict: APPROVED
trace_id: 19bc0b84-31d9-4c4f-a5fc-d655f43251de
trace_file: .specify/logs/trace/agentops-19bc0b84-31d9-4c4f-a5fc-d655f43251de.json
status: success
- id: dry-STEP3-attempt-1
agent: speckit.specify
artifact: docs/output/output_logs/001-okr-web-app/casan/dry-STEP3-attempt-1-output.md
verdict: APPROVED
trace_id: e5adaec8-f256-4708-bffa-29f34c59f4b4
trace_file: .specify/logs/trace/agentops-e5adaec8-f256-4708-bffa-29f34c59f4b4.json
status: success
- id: dry-STEP4-attempt-1
agent: speckit.clarify
artifact: docs/output/output_logs/001-okr-web-app/casan/dry-STEP4-attempt-1-output.md
verdict: APPROVED
trace_id: 3a3f7ea9-c13c-4f16-9837-551f322f93d1
trace_file: .specify/logs/trace/agentops-3a3f7ea9-c13c-4f16-9837-551f322f93d1.json
status: success
- id: dry-STEP5-attempt-1
agent: okr.reviewspec
artifact: docs/output/output_logs/001-okr-web-app/casan/dry-STEP5-attempt-1-output.md
verdict: APPROVED
trace_id: d850181b-8d2b-4c61-8cb4-631add10d84f
trace_file: .specify/logs/trace/agentops-d850181b-8d2b-4c61-8cb4-631add10d84f.json
status: success
- id: dry-STEP6-attempt-1
agent: speckit.plan
artifact: docs/output/output_logs/001-okr-web-app/casan/dry-STEP6-attempt-1-output.md
verdict: APPROVED
trace_id: 6ad94ddf-28e7-4ea2-ab41-e4d94c7c9285
trace_file: .specify/logs/trace/agentops-6ad94ddf-28e7-4ea2-ab41-e4d94c7c9285.json
status: success
- id: dry-STEP7-attempt-1
agent: okr.reviewplan
artifact: docs/output/output_logs/001-okr-web-app/casan/dry-STEP7-attempt-1-output.md
verdict: REJECTED
trace_id: 725acaf1-c3ad-4039-858b-b02dbfbe6d50
trace_file: .specify/logs/trace/agentops-725acaf1-c3ad-4039-858b-b02dbfbe6d50.json
status: success
- id: dry-STEP6-attempt-2
agent: speckit.plan
artifact: docs/output/output_logs/001-okr-web-app/casan/dry-STEP6-attempt-2-output.md
verdict: APPROVED
trace_id: 2fc20286-0d64-4245-8a16-c3c4c475deae
trace_file: .specify/logs/trace/agentops-2fc20286-0d64-4245-8a16-c3c4c475deae.json
status: success
- id: dry-STEP7-attempt-2
agent: okr.reviewplan
artifact: docs/output/output_logs/001-okr-web-app/casan/dry-STEP7-attempt-2-output.md
verdict: APPROVED
trace_id: 8db4a714-5f7d-4a3d-8ba8-994b86248704
trace_file: .specify/logs/trace/agentops-8db4a714-5f7d-4a3d-8ba8-994b86248704.json
status: success
- id: dry-STEP8-attempt-1
agent: okr.dd
artifact: docs/output/output_logs/001-okr-web-app/casan/dry-STEP8-attempt-1-output.md
verdict: APPROVED
trace_id: d5a0b848-a7a1-425e-bb6c-8051ee09f180
trace_file: .specify/logs/trace/agentops-d5a0b848-a7a1-425e-bb6c-8051ee09f180.json
status: success
- id: dry-STEP8b-attempt-1
agent: okr.testkit
artifact: docs/output/output_logs/001-okr-web-app/casan/dry-STEP8b-attempt-1-output.md
verdict: APPROVED
trace_id: 88e01a1e-963e-42cd-88f2-9819c0d04078
trace_file: .specify/logs/trace/agentops-88e01a1e-963e-42cd-88f2-9819c0d04078.json
status: success
- id: dry-STEP9-attempt-1
agent: speckit.tasks
artifact: docs/output/output_logs/001-okr-web-app/casan/dry-STEP9-attempt-1-output.md
verdict: APPROVED
trace_id: 0e7dc111-b2dc-4679-9296-e277ae437257
trace_file: .specify/logs/trace/agentops-0e7dc111-b2dc-4679-9296-e277ae437257.json
status: success
- id: dry-STEP10-attempt-1
agent: speckit.implement
artifact: docs/output/output_logs/001-okr-web-app/casan/dry-STEP10-attempt-1-output.md
verdict: APPROVED
trace_id: 8e9a7a94-6cc1-402a-a43c-155b1c4ef1e0
trace_file: .specify/logs/trace/agentops-8e9a7a94-6cc1-402a-a43c-155b1c4ef1e0.json
status: success
- id: dry-STEP11-attempt-1
agent: okr.reviewcode
artifact: docs/output/output_logs/001-okr-web-app/casan/dry-STEP11-attempt-1-output.md
verdict: APPROVED
trace_id: 7fd41242-1271-4dfe-b744-2b0f7d2bc2e3
trace_file: .specify/logs/trace/agentops-7fd41242-1271-4dfe-b744-2b0f7d2bc2e3.json
status: success
- id: dry-STEP12-attempt-1
agent: okr.testkit run-tests
artifact: docs/output/output_logs/001-okr-web-app/casan/dry-STEP12-attempt-1-output.md
verdict: FAIL
trace_id: 4b919251-4cdd-4d6b-a074-b9e821b4183c
trace_file: .specify/logs/trace/agentops-4b919251-4cdd-4d6b-a074-b9e821b4183c.json
status: success
- id: dry-STEP6-attempt-3
agent: speckit.plan
artifact: docs/output/output_logs/001-okr-web-app/casan/dry-STEP6-attempt-3-output.md
verdict: APPROVED
trace_id: 5662b4f4-f19f-4c41-9a3c-61694741784d
trace_file: .specify/logs/trace/agentops-5662b4f4-f19f-4c41-9a3c-61694741784d.json
status: success
- id: dry-STEP12-attempt-2
agent: okr.testkit run-tests
artifact: docs/output/output_logs/001-okr-web-app/casan/dry-STEP12-attempt-2-output.md
verdict: PASS
trace_id: 51695317-2224-45dc-9fcf-1bb7f85d0d05
trace_file: .specify/logs/trace/agentops-51695317-2224-45dc-9fcf-1bb7f85d0d05.json
status: success
- id: dry-STEP13-attempt-1
agent: deploy
artifact: docs/output/output_logs/001-okr-web-app/casan/dry-STEP13-attempt-1-output.md
verdict: APPROVED
trace_id: b247f82b-e8aa-4eab-8919-45e3da8b961a
trace_file: .specify/logs/trace/agentops-b247f82b-e8aa-4eab-8919-45e3da8b961a.json
status: success