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>
9.5 KiB
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_CASAN5là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ọicasan-harness.sh ... -- node scripts/casan-step.mjs <step> <attempt>. Ghidocs/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ọimodel-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.mdmụ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=2khi chặn — giữ nguyên). - Chạy được offline (không Ollama) và có Ollama (
127.0.0.1:11434, modelornith: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:
- 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ẳngsecurity-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. - Sau battery, chạy một lát cắt pipeline thật: ít nhất STEP1 (
okr.srs) đi quacasan-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"). - Đồ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. - Rà soát
run-all.shvà liệt kê mọi chỗ đang "đi tắt" không qua wrapper; chuyển sang gọi quacasan-harness.shkhi 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.shchạy trọn, mọi verdict/exit do wrapper/pipeline thật sinh;audit.jsonlvàprovider-usage.jsonlcó 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:
- 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.
- Agent step (
scripts/casan-step.mjs): ởdebuglog judge verdict + note, checkpoint/rollback, lời gọi model (role, tokens). - Harness wrapper (
.specify/scripts/bash/casan-harness.sh): ởdebuglog từng phaH4-in → H5 → H6 → exec → H4-outvới rc mỗi pha (đúng sequence diagram mục 2). Dùng biếnCASAN_LOG_LEVELchung; viết một hàm log bash gọn (in ra stderr, có prefix[LEVEL]+ timestamp). - 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 (vdjqlọ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à ởtracephả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=infogọn;errorgần như im..specify/logs/pipeline-run.jsonlcó 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
- 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ế đó.
- Implement Việc 1 và Việc 2.
- 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-harnessREAL=1 bash optimize-docs/video-steps/run-all.sh(hoặcAUTO=1 STEP_DELAY=0) — xác nhận đi qua wrapper thật + audit/telemetry có bản ghi mớitail -3 .specify/logs/pipeline-run.jsonl
- 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.