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>
90 lines
3.8 KiB
YAML
90 lines
3.8 KiB
YAML
feature-id: 001-okr-web-app
|
|
module-id: MOD-01
|
|
module-keyword: okr-management
|
|
tech-stack: NestJS + Prisma + SQLite + React + Vite + Tailwind
|
|
steps:
|
|
- id: 01-srs
|
|
agent: okr.srs
|
|
artifact: docs/output/output_logs/001-okr-web-app/casan/01-srs-output.md
|
|
verdict: APPROVED
|
|
trace_id: bfc3c58d-608e-4402-bbb6-fe4bc59240a5
|
|
trace_file: .specify/logs/trace/agentops-bfc3c58d-608e-4402-bbb6-fe4bc59240a5.json
|
|
status: success
|
|
- id: 02-bd
|
|
agent: okr.bd
|
|
artifact: docs/output/output_logs/001-okr-web-app/casan/02-bd-output.md
|
|
verdict: APPROVED
|
|
trace_id: e027bfef-b0ff-4742-87e6-1732ec2afd62
|
|
trace_file: .specify/logs/trace/agentops-e027bfef-b0ff-4742-87e6-1732ec2afd62.json
|
|
status: success
|
|
- id: 03-spec
|
|
agent: speckit.specify
|
|
artifact: docs/output/output_logs/001-okr-web-app/casan/03-spec-output.md
|
|
verdict: APPROVED
|
|
trace_id: c87816d4-df32-4b35-8086-25a535cd281b
|
|
trace_file: .specify/logs/trace/agentops-c87816d4-df32-4b35-8086-25a535cd281b.json
|
|
status: success
|
|
- id: 04-reviewspec
|
|
agent: okr.reviewspec
|
|
artifact: docs/output/output_logs/001-okr-web-app/casan/04-reviewspec-output.md
|
|
verdict: REJECTED
|
|
trace_id: 1de117a4-f96e-4129-b2d3-02a2788fabb2
|
|
trace_file: .specify/logs/trace/agentops-1de117a4-f96e-4129-b2d3-02a2788fabb2.json
|
|
status: success
|
|
- id: 05-plan-attempt-1
|
|
agent: speckit.plan
|
|
artifact: docs/output/output_logs/001-okr-web-app/casan/05-plan-attempt-1-output.md
|
|
verdict: APPROVED
|
|
trace_id: 432aa34d-f4eb-4296-bb46-94b89ba8cc78
|
|
trace_file: .specify/logs/trace/agentops-432aa34d-f4eb-4296-bb46-94b89ba8cc78.json
|
|
status: success
|
|
- id: 06-reviewplan-attempt-1
|
|
agent: okr.reviewplan
|
|
artifact: docs/output/output_logs/001-okr-web-app/casan/06-reviewplan-attempt-1-output.md
|
|
verdict: REJECTED
|
|
trace_id: b928df2d-0260-49ce-81eb-1ce3f1be2b26
|
|
trace_file: .specify/logs/trace/agentops-b928df2d-0260-49ce-81eb-1ce3f1be2b26.json
|
|
status: success
|
|
- id: 07-plan-attempt-2
|
|
agent: speckit.plan
|
|
artifact: docs/output/output_logs/001-okr-web-app/casan/07-plan-attempt-2-output.md
|
|
verdict: APPROVED
|
|
trace_id: 0e0c2637-d5b4-447a-a45e-e7be2c75c1bc
|
|
trace_file: .specify/logs/trace/agentops-0e0c2637-d5b4-447a-a45e-e7be2c75c1bc.json
|
|
status: success
|
|
- id: 08-reviewplan-attempt-2
|
|
agent: okr.reviewplan
|
|
artifact: docs/output/output_logs/001-okr-web-app/casan/08-reviewplan-attempt-2-output.md
|
|
verdict: REJECTED
|
|
trace_id: d0718391-7a6a-4f63-9a2a-2522984ecf06
|
|
trace_file: .specify/logs/trace/agentops-d0718391-7a6a-4f63-9a2a-2522984ecf06.json
|
|
status: success
|
|
- id: 09-dd
|
|
agent: okr.dd
|
|
artifact: docs/output/output_logs/001-okr-web-app/casan/09-dd-output.md
|
|
verdict: APPROVED
|
|
trace_id: ecf095a8-75ca-4940-8c69-d152679e0d88
|
|
trace_file: .specify/logs/trace/agentops-ecf095a8-75ca-4940-8c69-d152679e0d88.json
|
|
status: success
|
|
- id: 10-testkit
|
|
agent: okr.testkit
|
|
artifact: docs/output/output_logs/001-okr-web-app/casan/10-testkit-output.md
|
|
verdict: APPROVED
|
|
trace_id: e2f397b8-e1ce-4256-84c4-948f0486663a
|
|
trace_file: .specify/logs/trace/agentops-e2f397b8-e1ce-4256-84c4-948f0486663a.json
|
|
status: success
|
|
- id: 11-tasks
|
|
agent: speckit.tasks
|
|
artifact: docs/output/output_logs/001-okr-web-app/casan/11-tasks-output.md
|
|
verdict: APPROVED
|
|
trace_id: 134de506-7f2a-4435-86db-50eb32a4febd
|
|
trace_file: .specify/logs/trace/agentops-134de506-7f2a-4435-86db-50eb32a4febd.json
|
|
status: success
|
|
- id: 12-reviewcode
|
|
agent: okr.reviewcode
|
|
artifact: docs/output/output_logs/001-okr-web-app/casan/12-reviewcode-output.md
|
|
verdict: REJECTED
|
|
trace_id: 1b1be6e9-0894-487a-ba0e-c369d243da58
|
|
trace_file: .specify/logs/trace/agentops-1b1be6e9-0894-487a-ba0e-c369d243da58.json
|
|
status: success
|