Files
CASAN/.github/agents/protocols/pipeline-context.md
T
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

5.8 KiB

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

# --- 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