Files
CASAN/optimize-docs/FABLE5_PROMPT.md
T
thanhnvandClaude Opus 4.8 fbcef967e5 chore(freeze): snapshot demo state before Plan-07 hardening work
Freeze current submission/demo baseline:
- casan-next-plans/: full task-level plan set (Plan 00 index + 02/04/06/07/08/09/12, QA, slide deck)
- optimize-docs/video-steps/: per-vector scene breakdown (commands/screen-text/script) + start-tmux
- run-all.sh / scorecard.sh / map-live.sh: REAL=1 live-battery wiring
- regenerated evidence + audit/telemetry logs from live REAL=1 run
- submission README + video recording guide updates
- dry-run pipeline logs for 001-okr-web-app

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 22:03:44 +09:00

89 lines
9.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Prompt gửi Fable 5 — Tối ưu "live demo" giống chạy thật + Log level cho full pipeline
> Copy toàn bộ phần trong khung dưới đây gửi cho Fable 5 (đang mở repo `AINative_OKR_CASAN5` làm context).
---
Bạn là senior engineer làm việc trực tiếp trong repo `AINative_OKR_CASAN5` (đã có sẵn trong context). Tôi cần bạn làm **2 việc** trên chính codebase này, ưu tiên **không phá vỡ gate/exit code/test hiện có** và **tương thích ngược** (hành vi mặc định giữ nguyên).
## Bối cảnh kiến trúc (đọc trước khi sửa)
Pipeline thật là **AI-SDLC bọc trong CASAN Harness**. Hãy đọc các file sau để nắm luồng:
- `scripts/run-casan-pipeline.mjs` — **Boss orchestrator**: chạy tuần tự 13 STEP, mỗi step gọi `casan-harness.sh ... -- node scripts/casan-step.mjs <step> <attempt>`. Ghi `docs/output/output_logs/001-okr-web-app/00-boss.log.md`, `pipeline-context.yaml`, và đọc trace ở `.specify/logs/trace/agentops-*.json`.
- `scripts/casan-step.mjs` — **logic một agent step**: judge (H3, gọi `model-router.sh`), checkpoint/rollback (`rollback-manager.sh`), sinh artifact.
- `.specify/scripts/bash/casan-harness.sh` — **wrapper bọc mọi lời gọi agent**: thứ tự `H4 input security → H5 governance → H6 metrics (quanh exec) → chạy command → H4 output filter`. Idempotency cache ở `.specify/logs/idempotency`.
- `.specify/scripts/bash/*.sh` — các control: `security-check.sh`, `artifact-scan.sh`, `governance-check.sh`, `verify-audit-chain.sh`, `sign-audit-head.sh`, `cost-spike-detect.sh`, `drift-detect.sh`, `model-router.sh`, `validate-tool-input.sh`, `tool-exec.sh`, `circuit-breaker-check.sh`, `secrets-scan.sh`, `verify-tool-audit.sh`, `hallucination-scan.py`, `agent-metrics.sh`.
- Log/evidence hiện có: `.specify/logs/audit/audit.jsonl` (hash-chain + ký RSA head), `.specify/logs/audit/tool-calls.jsonl`, `.specify/logs/level5/provider-usage.jsonl` (token thật), `.specify/logs/trace/agentops-*.json`.
- **Sơ đồ FULL** (`optimize-docs/CASAN_PIPELINE_WORKFLOW.md` mục 1–2): 13 STEP với 2 vòng lặp tự sửa — STEP5 review-spec (REJECTED→STEP3), STEP7 review-plan (BACK-TO-PLAN→STEP6), STEP11 review-code (REJECTED→STEP10), STEP12 run-tests (FAIL→STEP6). Mỗi lời gọi agent đi xuyên 7 harness rồi mới sinh artifact.
- **Demo "live"** hiện tại nằm ở `optimize-docs/video-steps/`: `run-all.sh` (battery tấn công H4/H5/H6 + cross-layer + `scorecard.sh`), `map-live.sh` (bản đồ tiến độ), `scorecard.sh` (chấm điểm), `start-tmux.sh`, `LAYOUT.md`.
**Ràng buộc chung:**
- KHÔNG được làm hỏng: `bash .specify/scripts/bash/security-gate.sh`, `.specify/tests/adversarial-harness-tests.sh`, vitest, và mọi exit code hiện tại (nhiều control cố ý trả `exit=2` khi chặn — giữ nguyên).
- Chạy được **offline** (không Ollama) và **có Ollama** (`127.0.0.1:11434`, model `ornith:9b`). Khi thiếu model thì degrade rõ ràng (SKIP/mock), không crash.
- Giữ tính **deterministic** cho phần logic; token/verdict model là dữ liệu thật.
- Mặc định hành vi cũ **không đổi**; tính năng mới bật qua env/flag.
- Không thêm dependency nặng; ưu tiên Node built-in + bash sẵn có.
---
## VIỆC 1 — Làm "live demo" chạy đúng đường sản xuất nhất có thể
**Vấn đề:** `optimize-docs/video-steps/run-all.sh` hiện gọi trực tiếp từng sub-script với input tự nạp. Nó dùng gate thật nhưng **không đi qua entry-point sản xuất** (`casan-harness.sh` / `casan-step.mjs`), nên chưa phản ánh đúng luồng Boss→harness→verdict.
**Yêu cầu:** thêm chế độ `REAL=1` (giữ chế độ hiện tại làm mặc định) cho `run-all.sh` sao cho:
1. Mỗi vector tấn công được nạp làm **input của một agent step chạy qua `casan-harness.sh`** (đúng đường sản xuất), thay vì gọi thẳng `security-check.sh`. Kết quả BLOCK/PASS phải do chính wrapper sinh ra → giống hệt lúc pipeline thật gặp input độc.
2. Sau battery, chạy **một lát cắt pipeline thật**: ít nhất STEP1 (`okr.srs`) đi qua `casan-harness.sh -- node scripts/casan-step.mjs`, cho thấy: artifact thật được sinh, `audit.jsonl` + `provider-usage.jsonl` được ghi thêm THẬT, verdict thật. Nếu không có model → dùng mock step nhưng vẫn đi qua wrapper (ghi rõ "mock agent, harness thật").
3. Đồng bộ `map-live.sh`: khi ở `REAL=1`, ngoài A/B/D còn hiển thị được các STEP thật (STEP1…) nếu có chạy lát cắt pipeline.
4. Rà soát `run-all.sh` và liệt kê mọi chỗ đang "đi tắt" không qua wrapper; chuyển sang gọi qua `casan-harness.sh` khi hợp lý, hoặc ghi chú rõ vì sao giữ gọi trực tiếp (vd để minh hoạ một control đơn lẻ).
**Nghiệm thu Việc 1:**
- `REAL=1 bash optimize-docs/video-steps/run-all.sh` chạy trọn, mọi verdict/exit do wrapper/pipeline thật sinh; `audit.jsonl` và `provider-usage.jsonl` có bản ghi mới sau khi chạy.
- Chế độ mặc định (không `REAL`) vẫn y như cũ.
- Nêu bảng đối chiếu "vector demo → entry-point sản xuất tương ứng".
---
## VIỆC 2 — Log level cho full pipeline + xem log theo từng bước
**Vấn đề:** hiện chưa có log level. Cần thấy rõ pipeline đi qua **STEP nào**, mỗi step qua **harness nào**, verdict/thời gian/token, và ở mức `debug` xem được log chi tiết từng bước theo đúng sơ đồ FULL.
**Yêu cầu:** thêm biến `CASAN_LOG_LEVEL` (thang: `error < warn < info < debug < trace`, mặc định `info`) xuyên suốt 3 tầng:
1. **Boss** (`scripts/run-casan-pipeline.mjs`):
- `info`: mỗi STEP một dòng gọn — `STEP<id> · <agent> · verdict=<...> · <ms>ms · attempt=<n>`, và log rõ khi vòng lặp kích hoạt (STEP5 retry, STEP7 BACK-TO-PLAN, STEP11 retry, STEP12 FAIL→STEP6).
- `debug`: thêm input/output path, `trace_id`, kết quả từng harness, quyết định đi tiếp/lặp.
- `trace`: thêm trích payload (đã **redact secret/PII**).
- Cuối run: in **bảng tổng kết per-step** (khớp 13 STEP của sơ đồ) + vòng lặp nào đã chạy.
2. **Agent step** (`scripts/casan-step.mjs`): ở `debug` log judge verdict + note, checkpoint/rollback, lời gọi model (role, tokens).
3. **Harness wrapper** (`.specify/scripts/bash/casan-harness.sh`): ở `debug` log từng pha `H4-in → H5 → H6 → exec → H4-out` với rc mỗi pha (đúng sequence diagram mục 2). Dùng biến `CASAN_LOG_LEVEL` chung; viết một hàm log bash gọn (in ra stderr, có prefix `[LEVEL]` + timestamp).
4. **Log máy đọc được**: ngoài log người-đọc, ghi thêm một dòng JSONL/step vào `.specify/logs/pipeline-run.jsonl` (step id, agent, verdict, rc từng harness, ms, tokens, trace_id) để có thể **replay/xem lại theo từng bước**. Cung cấp cách xem nhanh (vd `jq` lọc theo step).
**Ràng buộc Việc 2:**
- Mặc định `info` → output không ồn hơn hiện tại đáng kể; `stdio:'inherit'` và exit code giữ nguyên.
- Không log secret/PII ở bất kỳ mức nào ngoài `trace`, và ở `trace` phải redact.
- Thống nhất một taxonomy log level dùng chung cho cả Node lẫn bash.
**Nghiệm thu Việc 2:**
- `CASAN_LOG_LEVEL=debug node scripts/run-casan-pipeline.mjs` (hoặc chế độ `--dry-run`/mock nếu full run cần model/lâu) in log **từng STEP + từng harness**; `CASAN_LOG_LEVEL=info` gọn; `error` gần như im.
- `.specify/logs/pipeline-run.jsonl` có 1 dòng/step, xem lại được.
- Nếu full run cần model, hãy thêm `--dry-run` (stub mọi lời gọi agent, đi đúng 13 STEP + wrapper) để minh hoạ log level **deterministic, offline**.
---
## Việc cần làm & bàn giao
1. **Trước tiên**: đọc các file nêu trên, rồi trình bày ngắn (a) taxonomy log level thống nhất, (b) bảng map "log line ↔ STEP/harness của sơ đồ FULL", (c) danh sách file sẽ sửa. Chờ không cần — cứ implement luôn theo thiết kế đó.
2. Implement Việc 1 và Việc 2.
3. **Tự verify và dán kết quả**:
- `bash .specify/scripts/bash/security-gate.sh | tail -6` (phải vẫn PASS, FAIL=0)
- `bash .specify/tests/adversarial-harness-tests.sh; echo exit=$?`
- `CASAN_LOG_LEVEL=debug <lệnh chạy pipeline hoặc --dry-run>` — dán ~30 dòng log minh hoạ per-step + per-harness
- `REAL=1 bash optimize-docs/video-steps/run-all.sh` (hoặc `AUTO=1 STEP_DELAY=0`) — xác nhận đi qua wrapper thật + audit/telemetry có bản ghi mới
- `tail -3 .specify/logs/pipeline-run.jsonl`
4. Liệt kê rõ file đã đổi và tóm tắt cách bật tính năng mới. Nếu có chỗ buộc phải đánh đổi (vd full run cần Ollama), nói rõ và cung cấp đường mock/dry-run.
Giữ commit message rõ ràng, không đụng tới logic tính điểm/verdict của các gate. Nếu phát hiện script nào chưa hỗ trợ được yêu cầu (thiếu tham số, chưa có hook log), hãy nêu và đề xuất cách sửa tối thiểu thay vì viết lại lớn.
---
> **Ghi chú cho tôi (không gửi Fable):** prompt này giả định Fable 5 có quyền đọc/sửa repo. Nếu Fable chạy ở phiên khác không thấy repo, cần đính kèm nội dung các file: `scripts/run-casan-pipeline.mjs`, `scripts/casan-step.mjs`, `.specify/scripts/bash/casan-harness.sh`, `optimize-docs/video-steps/run-all.sh`, `optimize-docs/CASAN_PIPELINE_WORKFLOW.md`.