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>
150 lines
5.8 KiB
Markdown
150 lines
5.8 KiB
Markdown
# 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
|