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,149 @@
# Pipeline Context File
The Boss maintains a running context file updated after each step.
Sub-agents read this file instead of re-reading large source files.
## Path
```
docs/output/output_logs/<feature-id>/pipeline-context.yaml
```
## Schema
```yaml
# --- Immutable (set at STEP 0) ---
feature-id: <feature-id>
module-id: <mod-id> # e.g. mod01
module-keyword: <keyword> # e.g. OKR
module-short-name: <short-name> # e.g. xxx
mode: autonomous
language: Vietnamese
# --- Tech stack summary (extracted once from docs/technical_architecture.md) ---
tech-stack:
backend: "NestJS 10, Node.js 22, TypeScript 5"
frontend: "React 18.3, Vite 6.0"
db: "PostgreSQL 17"
cache: "Redis 7.4"
css: "Bootstrap 5 (utility classes only)"
# --- Updated after each step ---
casan-harness:
level-target: 5
h4-security:
policy: .specify/security/prompt-filter.yaml
output-policy: .specify/security/output-policy.yaml
audit-log: .specify/logs/audit/security.jsonl
h5-governance:
approval-flow: .specify/governance/approval-flow.yaml
risk-registry: .specify/governance/risk-registry.yaml
audit-log: .specify/logs/audit/audit.jsonl
h6-agentops:
metrics-policy: .specify/agentops/metrics.yaml
metrics-log: .specify/logs/cost/metrics.jsonl
alert-log: .specify/agentops/alerts.log
h2-tool-registry:
registry: .specify/level5/tool-registry.yaml
audit-log: .specify/logs/level5/tool-registry.jsonl
h7-drift:
golden-dir: .specify/level5/golden-runs/
drift-log: .specify/logs/level5/drift.jsonl
rollback:
transactions-log: .specify/logs/level5/rollback-transactions.jsonl
steps:
step-0:
status: COMPLETE
pipeline-mode: UPDATE | CREATE
casan:
h4-trace: .specify/logs/trace/security-<trace-id>.json
h4-verdict: PASS | BLOCKED # PASS = clean, BLOCKED = security violation detected
h5-trace: .specify/logs/trace/governance-<trace-id>.json
h5-verdict: APPROVED | DENIED # APPROVED = governance ok, DENIED = policy/approval rejected
h6-trace: .specify/logs/trace/agentops-<trace-id>.json
h6-verdict: OK | ALERT # OK = metrics normal, ALERT = threshold breached
step-1-srs:
status: COMPLETE | SKIPPED | FAILED
path: docs/output/ipa-docs/srs/srs-<mod-id>-<short-name>.md
report: docs/output/output_logs/<feature-id>/reports/01-srs-report.md
fea-count: <N>
tbc-count: <N>
step-2-bd:
status: COMPLETE
path: docs/output/ipa-docs/bd/bd-<mod-id>-<short-name>.md
report: docs/output/output_logs/<feature-id>/reports/02-bd-report.md
screen-count: <N>
step-3-spec:
status: COMPLETE
path: docs/output/specs/<feature-id>/spec.md
report: docs/output/output_logs/<feature-id>/reports/03-specify-report.md
branch: <branch-name>
step-4-clarify:
status: COMPLETE
qa-path: docs/output/output_logs/<feature-id>/reports/04-clarify-qa.md
report: docs/output/output_logs/<feature-id>/reports/04-clarify-report.md
tbc-resolved: <N>
step-5-review-spec:
status: COMPLETE
verdict: APPROVED | APPROVED_WITH_CONDITIONS | REJECTED
report: docs/output/output_logs/<feature-id>/reports/05-review-spec-report.md
retries: <N>
step-6-plan:
status: COMPLETE
path: docs/output/specs/<feature-id>/plan.md
data-model: docs/output/specs/<feature-id>/data-model.md
contracts: docs/output/specs/<feature-id>/contracts/
report: docs/output/output_logs/<feature-id>/reports/06-plan-report.md
step-7-review-plan:
status: COMPLETE
verdict: APPROVED
report: docs/output/output_logs/<feature-id>/reports/07-review-plan-report.md
retries: <N>
step-8-dd:
status: COMPLETE
path: docs/output/ipa-docs/dd/dd-<mod-id>-<short-name>.md
report: docs/output/output_logs/<feature-id>/reports/08-dd-report.md
step-8b-testcases:
status: COMPLETE
path: docs/output/ipa-docs/testcase/testcase-<mod-id>-<short-name>.md
report: docs/output/output_logs/<feature-id>/reports/08b-testcases-report.md
step-9-tasks:
status: COMPLETE
path: docs/output/specs/<feature-id>/tasks.md
report: docs/output/output_logs/<feature-id>/reports/09-tasks-report.md
step-10-implement:
status: COMPLETE
report: docs/output/output_logs/<feature-id>/reports/10-implement-report.md
retries: <N>
step-11-review-code:
status: COMPLETE
verdict: APPROVED
report: docs/output/output_logs/<feature-id>/reports/11-review-code-report.md
retries: <N>
step-12-testkit:
status: COMPLETE
verdict: PASS | FAIL
report: docs/output/output_logs/<feature-id>/reports/12-testkit-report.md
ipa-report: docs/output/ipa-docs/testreport/testreport-<mod-id>-<short-name>.md
back-to-plan-cycles: <N>
step-13-launch:
status: COMPLETE
fe-url: "http://localhost:5173"
be-url: "http://localhost:8081"
report: docs/output/output_logs/<feature-id>/reports/13-launch-report.md
```
## Boss Update Rules
1. **After STEP 0**: Create file with immutable section + tech-stack (read from `docs/technical_architecture.md` once)
2. **After each step**: Parse the sub-agent's `<!-- STEP-RESULT -->` block and update the corresponding `steps.step-N` section
3. **After each CASAN gate**: Append H4/H5/H6 trace paths and status under the corresponding step's `casan` key
4. **Before delegating**: Sub-agents receive the pipeline-context path in `$ARGUMENTS` and can read it for all prior step outputs
## Sub-Agent Read Rules
Sub-agents SHOULD read `pipeline-context.yaml` at startup to discover:
- `feature-id`, `module-id`, `module-keyword` (no need to re-detect)
- Artifact paths from prior steps (no need to guess)
- Tech stack (no need to re-read `docs/technical_architecture.md` for basics)
- CASAN harness evidence paths and policies for H4/H5/H6