Vibe Rescue / Bản đồ kỹ thuật

Bản đồ mã nguồn

Từ điểm vào đến hàm, biến, chỉ dẫn agent, bộ quét, bằng chứng, phê duyệt của chủ sở hữu và nhánh lỗi. Sơ đồ được biên soạn từ mã nguồn; chỉ mục hàm là phân tích tĩnh, không chạy mã của repo đích.

Diễn giải, đánh giá và rủi roGiấy phép MIT

01 · Điều phối, cấu hình và quyền quyết định

SVG

Lệnh voyage đi qua stage theo STAGES, nạp config vai trò và hỏi owner tại PLAN, REPAIR, merge, LOCK. Những prompt trong agents/ chỉ có hiệu lực khi được lệnh gọi thực sự nạp.

01 · Điều phối, cấu hình và quyền quyết định
01 · main → parse_args

scripts/rescue_voyage.py:448 · Xác định target, stage, probe và lệnh override.

Điều kiện
Target phải có .git; stage thuộc STAGES
Đầu ra
Ctx và voyage.json state=running
Khi lỗi
Trả 2 nếu target/stage sai
Rủi ro
Chỉ kiểm .git path; chưa xác minh trust của repo
02 · load_registry → registry.toml

scripts/rescue_voyage.py:52 · Tên target, tập scanner, probe và owner mode đến từ registry.

Điều kiện
--path ưu tiên hơn tên target
Đầu ra
reg, target, scan_tools
Khi lỗi
Tên không tồn tại không tạo target
Rủi ro
Config cũ có thể lệch thực tế target
03 · load_config → build_cmd

scripts/llm_config.py:34 · Gán write, verify, audit từ config.toml hoặc VIBE_LLM_CONFIG.

Điều kiện
Merge DEFAULTS; không đọc API key từ file
Đầu ra
Chuỗi lệnh CLI theo role
Khi lỗi
CLI thiếu gây lỗi ở stage tương ứng
Rủi ro
CLI tùy ý có quyền host; model nhỏ chưa được eval
04 · Dialogue.ask → owner

scripts/dialogue.py:58 · Ghi hoặc hỏi quyết định, không tự auto-approve.

Điều kiện
ID random, nonce/binding, timeout và answer tiêu thụ một lần
Đầu ra
choice, note; QUESTION/ANSWER ở file mode
Khi lỗi
Sai/timeout ném exception, voyage block
Rủi ro
Người có quyền ghi answer directory vẫn có thể giả owner
05 · STAGE_FUNCS: map→prove→review→plan→repair→lock

scripts/rescue_voyage.py:444 · Chạy thứ tự cố định dù --stages nhập khác thứ tự.

Điều kiện
rc hoặc exception dừng vòng
Đầu ra
voyage.json done/blocked/error
Khi lỗi
Stage lỗi trả 2 và ghi state
Rủi ro
--stages cho bỏ qua stage; REPAIR tự kiểm một phần preflight
06 · _stage_plan → approval hash

scripts/rescue_voyage.py:226 · Plan do advisor/template tạo, plan_check rồi owner chấp thuận.

Điều kiện
Plan check=0 + accept mới lưu hash/SHA
Đầu ra
approvals/PLAN-*.json
Khi lỗi
Reject/3 lần lỗi dừng
Rủi ro
Approval file nằm cạnh evidence; không có chữ ký
07 · _stage_repair → second owner gate

scripts/rescue_voyage.py:285 · Kiểm hash plan/HEAD, hỏi chạy và sau đó hỏi merge.

Điều kiện
Hash + target HEAD phải khớp
Đầu ra
Candidate branch hoặc merge commit
Khi lỗi
Reject giữ/bỏ candidate, không merge
Rủi ro
Các subprocess có quyền host; worktree không sandbox
08 · _stage_lock → rulesync drift

scripts/rescue_voyage.py:403 · Owner quyết định chạy kiểm drift nếu target có rulesync.

Điều kiện
Hỏi accept/reject
Đầu ra
Drift result
Khi lỗi
Exit !=0 block khi chạy
Rủi ro
Không có config thì accept dẫn đến skip

02 · MAP, PROVE và đường bằng chứng

SVG

Luồng này tách bản đồ repo, scanner, parser, baseline và báo cáo. Từng tool có trạng thái ok/skipped/failed; kết quả scanner không đồng nghĩa coverage đầy đủ.

02 · MAP, PROVE và đường bằng chứng
01 · _stage_map → context_pack.collect

scripts/rescue_voyage.py:99 · Đóng gói context giới hạn và inventory target.

Điều kiện
Exit code phải 0
Đầu ra
session/map/
Khi lỗi
Lỗi context_pack block MAP
Rủi ro
Pack có thể chứa dữ liệu riêng tư; xem trước khi gửi LLM
02 · _stage_map → recon.assets

tools/meta/recon.py:117 · Đếm ngôn ngữ, file lớn, Git và tài sản agent.

Điều kiện
recon.json phải tồn tại
Đầu ra
session/map/recon.json
Khi lỗi
Thiếu artifact block MAP
Rủi ro
Recon là inventory, không chứng minh luồng runtime
03 · _stage_prove → fanout.main

scripts/rescue_voyage.py:113 · Chọn scanner rồi chạy song song.

Điều kiện
Fanout exit 0 mới merge
Đầu ra
prove/raw/*.json, run.summary.json
Khi lỗi
Tool failed block PROVE
Rủi ro
Skipped có thể vẫn được chấp nhận
04 · fanout.one → scan.main

scripts/fanout.py:63 · Một subprocess cho mỗi tool theo manifest.

Điều kiện
Thread pool; per-tool 1800s
Đầu ra
raw/<tool>.json
Khi lỗi
Output thiếu tạo failed record
Rủi ro
Tổng thời gian/cost tăng theo tool; scanner có side effect
05 · scan.precheck → cmd_for

tools/meta/scan.py:273 · Phân loại unavailable/skipped và dựng lệnh pin.

Điều kiện
Config/manifest/công cụ cần có
Đầu ra
Command hoặc skipped reason
Khi lỗi
Unknown tool bị skip
Rủi ro
Unknown tool trong danh sách không làm fanout fail
06 · scan.collect_findings → parsers

tools/meta/scan.py:357 · Chuẩn hóa output tool thành findings.

Điều kiện
Parse lỗi hoặc exit ngoài chính sách trả error
Đầu ra
findings per tool + exit_code
Khi lỗi
Parser/report thiếu hoặc fatal exit là failed
Rủi ro
Một số parser còn cần schema/coverage bytes chặt hơn
07 · merge_findings.load_raw → merge

scripts/merge_findings.py:37 · Redact text, normalize path, dedupe severity.

Điều kiện
Bỏ record không có file
Đầu ra
findings.json/.md, SARIF
Khi lỗi
Raw JSON hỏng được liệt kê errors
Rủi ro
Redaction pattern-based, không bảo đảm kín PII
08 · _coverage_problems → delta_gate

scripts/rescue_loop.py:59 · So danh sách/status scanner rồi finding mới.

Điều kiện
Mất ok coverage block; delta key tool|file|rule
Đầu ra
Baseline hoặc delta verdict
Khi lỗi
New finding trả 2
Rủi ro
Finding cũ ở dòng khác không tính new; skip→skip vẫn pass
09 · run_target.main (lối MAP+PROVE khác)

scripts/run_target.py:28 · Entry point độc lập để scan target theo registry.

Điều kiện
MAP/recon/fanout/merge phải exit 0, artifact mới và ít nhất một scanner ok
Đầu ra
reports/targets/<name>/
Khi lỗi
Bước lỗi block trước khi lưu baseline
Rủi ro
Scanner skipped còn cần required/optional policy

03 · Prompt, audit và handoff cho team

SVG

Nội dung review do vai audit viết khi CLI chạy. Template fallback mang số liệu có thật nhưng không phải audit sâu. Cross-check và number-check hiện là phụ trợ.

03 · Prompt, audit và handoff cho team
01 · _stage_review → auditor_architecture.md

scripts/rescue_voyage.py:170 · Nạp prompt audit qua PROMPT_AGENT rồi gọi review_cmd.

Điều kiện
Kiểm mtime README/REVIEW + PROPOSALS
Đầu ra
review/{README,REVIEW,PROPOSALS}.md
Khi lỗi
CLI lỗi tạo template có notice
Rủi ro
mtime là bằng chứng yếu; prompt có thể bỏ sót domain
02 · _review_templates

scripts/rescue_voyage.py:510 · Fallback khi agent không viết file mới.

Điều kiện
Gắn notice không có LLM audit
Đầu ra
Template + scanner counts
Khi lỗi
Không block REVIEW chỉ vì thiếu LLM
Rủi ro
Người đọc có thể nhầm template với audit đầy đủ
03 · check_review_numbers.check

scripts/check_review_numbers.py:292 · So các claim định lượng với evidence và source.

Điều kiện
Advisory, kết quả trong review
Đầu ra
Bảng kiểm số
Khi lỗi
Lỗi checker không block REVIEW
Rủi ro
Claim định tính/citation ngoài checker không được bảo đảm
04 · collect_evidence.main

scripts/collect_evidence.py:53 · Gom bản JSON đã mask cho handoff.

Điều kiện
Exit !=0 block REVIEW
Đầu ra
review/EVIDENCE/
Khi lỗi
Package lỗi block stage
Rủi ro
Mask là heuristic; review thủ công trước khi chia sẻ
05 · _crosscheck → crosscheck.md

scripts/rescue_voyage.py:148 · Vai verify chấm số sai, mâu thuẫn, thiếu bằng chứng.

Điều kiện
Chỉ chạy khi không custom review cmd
Đầu ra
cross-check.md nếu CLI viết
Khi lỗi
CLI thiếu/lỗi fail-open
Rủi ro
Không phải release gate; không chứng minh independent audit
06 · agents/auditor_* & orchestrator

agents/orchestrator.md:1 · Các prompt chuyên ngách mô tả vai trò và output mong muốn.

Điều kiện
Chỉ auditor_architecture nạp trực tiếp trong voyage
Đầu ra
Manual handoff nếu orchestrator gọi
Khi lỗi
Không có runtime fan-out tự động cho mọi auditor
Rủi ro
Prompt assets có thể bị nhầm là đã thực thi

04 · PLAN, candidate, reviewer và rollback

SVG

Candidate chạy trong worktree, kiểm scope/probe/scan/reviewer trước khi hỏi merge. Sau merge có probe và auto-revert có điều kiện. Đây là gate Git, không phải sandbox hệ điều hành.

04 · PLAN, candidate, reviewer và rollback
01 · advisor.md → plan_check.check_plan

scripts/plan_check.py:81 · Kiểm section, verification từng step, Scope và SHA.

Điều kiện
Trả 2 nếu plan thiếu/không khớp
Đầu ra
PLAN-*.md hợp lệ
Khi lỗi
Plan lỗi không được accept
Rủi ro
Máy không chứng minh bước Verification thật sự đủ
02 · rescue_loop.main preflight

scripts/rescue_loop.py:75 · Baseline/probe/clean target/HEAD/coverage.

Điều kiện
Cần baseline SHA đúng HEAD
Đầu ra
loop.json round 0
Khi lỗi
Vi phạm trả BLOCK
Rủi ro
Untracked target files không bị _tracked_clean phát hiện
03 · guards.run_probe before

scripts/guards.py:42 · Chụp rc + hash stdout/stderr của probe.

Điều kiện
Mọi rc=0
Đầu ra
probe_before
Khi lỗi
Baseline probe đỏ BLOCK
Rủi ro
Hash output quá nhạy với output không ổn định
04 · git worktree add → executor.md

scripts/rescue_loop.py:161 · Tạo candidate branch rồi gọi writer.

Điều kiện
Target HEAD/clean không đổi
Đầu ra
rescue/<plan-id> worktree
Khi lỗi
Worktree lỗi BLOCK
Rủi ro
Executor có filesystem/network quyền host
05 · plan_check.check_worktree

scripts/plan_check.py:129 · Diff tên file phải nằm trong Scope.

Điều kiện
Scope check trước và sau reviewer
Đầu ra
Allowed diff
Khi lỗi
Ngoài scope → REVISE
Rủi ro
Nội dung độc hại trong file được phép vẫn cần reviewer
06 · git add/commit → candidate probe

scripts/rescue_loop.py:214 · Commit candidate để merge thật rồi so probe.

Điều kiện
Probe rc+hash phải bằng before
Đầu ra
candidate_sha
Khi lỗi
Không commit/probe lệch → REVISE
Rủi ro
Probe không bao trùm mọi hành vi
07 · fanout → merge → coverage → delta

scripts/rescue_loop.py:243 · Quét candidate đúng tập scanner baseline.

Điều kiện
Không failed, không mất coverage, 0 new
Đầu ra
Round evidence
Khi lỗi
Vi phạm → REVISE
Rủi ro
Skipped baseline có thể tiếp tục skipped
08 · reviewer.md → parse_verdict

scripts/rescue_loop.py:38 · Vai verify độc lập viết verdict rõ.

Điều kiện
Candidate sạch, verdict cũ bị xóa
Đầu ra
APPROVE/REVISE/BLOCK
Khi lỗi
Unknown/REVISE lặp tới max_rounds
Rủi ro
Verdict file là text, không chứng minh reviewer đã chạy test
09 · owner merge → postmerge probe

scripts/rescue_voyage.py:350 · Owner duyệt merge, so SHA và probe sau merge.

Điều kiện
Target HEAD/candidate SHA không đổi
Đầu ra
CHANGES.log + REVERT.md
Khi lỗi
Probe lệch auto-revert nếu HEAD sạch
Rủi ro
Side effect ngoài Git không rollback

05 · Logic atlas đa ngôn ngữ và phát hành MIT

SVG

Tool phân tích target bằng static graph; repo explorer này index toàn bộ hàm Python của chính harness. Bản phát hành công khai phải lấy từ source snapshot sạch, không từ lịch sử Git cũ.

05 · Logic atlas đa ngôn ngữ và phát hành MIT
01 · logic_atlas.resolve_scope → tracked_files

scripts/logic_atlas.py:46 · Khóa scope trong target và chỉ đọc Git-tracked regular file.

Điều kiện
Reject path escape/symlink
Đầu ra
File inventory theo ngôn ngữ
Khi lỗi
Bad scope error
Rủi ro
Untracked code không được lập graph
02 · classify → Python Pyan

scripts/logic_atlas.py:69 · Python call graph tĩnh qua pin Pyan.

Điều kiện
max_files=400; uvx phải có
Đầu ra
python-calls.dot + HTML/SVG
Khi lỗi
unavailable/too_large/partial
Rủi ro
Dynamic dispatch/callback không chắc chắn
03 · _run_frontend → dependency-cruiser

scripts/logic_atlas.py:136 · JS/TS import graph, không thực thi target config.

Điều kiện
--no-config; unresolved thành unknown
Đầu ra
frontend-dependencies.json
Khi lỗi
Partial nếu unresolved/Vue/Svelte
Rủi ro
Event→HTTP/API chưa được nối
04 · syntax_map.extract → frontend functions

scripts/syntax_map.py:42 · JS/TS/JSX/TSX function, arrow variable và direct call trong cùng file.

Điều kiện
Member/dynamic call để unknown; chạy cả khi thiếu npx
Đầu ra
frontend-symbols.json + HTML/SVG
Khi lỗi
Partial nếu syntax/unknown/Vue/Svelte
Rủi ro
Chưa nối event, HTTP hoặc cross-file call
05 · syntax_map.extract → native/backend

scripts/syntax_map.py:42 · Rust/Go/Java/PHP/C# symbol và same-file call.

Điều kiện
Bỏ symlink/file >1 MB
Đầu ra
language-syntax.json
Khi lỗi
Unknown call giữ nguyên
Rủi ro
Cross-file/cfg/reflection không được giải
06 · atlas_render.write_graph

scripts/atlas_render.py:121 · Xuất HTML/SVG/PDF offline; HTML có full catalog node/cạnh/unknown.

Điều kiện
SVG preview tối đa 120 node
Đầu ra
*-map.{html,svg,pdf}
Khi lỗi
Truncated SVG gắn partial
Rủi ro
Catalog static không diễn giải end-to-end
07 · repo_explorer.index → render

scripts/repo_explorer.py:38 · Index mọi hàm, biến và call của chính harness, không cắt 120 node.

Điều kiện
Syntax parse; unknown hiển thị
Đầu ra
repo-explorer.html + 5 SVG
Khi lỗi
Parse error được liệt kê
Rủi ro
Static call chưa là runtime trace
08 · model_rescue_eval.evaluate

scripts/model_rescue_eval.py:148 · Smoke MAP/PLAN/REVIEW với fixture tổng hợp qua gateway model tiết kiệm.

Điều kiện
Schema + plan_check + unsafe verdict grader
Đầu ra
reports/model-eval/*.json
Khi lỗi
Contract fail trả 2
Rủi ro
Không phải end-to-end executor/owner test
09 · public_snapshot.build

scripts/public_snapshot.py:44 · Đóng source mới không kèm lịch sử Git/report cũ.

Điều kiện
Exclude reports/log; reject symlink
Đầu ra
tar.gz + SHA manifest
Khi lỗi
Path không an toàn abort
Rủi ro
Vẫn cần secret/license/manual content review
10 · Gitleaks allowlist → scan source snapshot

.gitleaks.toml:6 · Quét source extract; kiểm số byte scan khác 0.

Điều kiện
Không loại cả root/public snapshot
Đầu ra
Gitleaks finding report
Khi lỗi
0 byte scan là false green, block release
Rủi ro
0 secret pattern không chứng minh không có dữ liệu nhạy
11 · LICENSE + release gate

LICENSE:1 · Source dự kiến phát hành theo MIT.

Điều kiện
Không push nhánh/lịch sử cũ
Đầu ra
Candidate public source snapshot
Khi lỗi
Thiếu review thì chưa publish
Rủi ro
External tool licenses và data phải rà riêng

Toàn bộ hàm Python

Tìm bất kỳ hàm, file, call, biến hoặc tên field. Chọn một hàm để xem caller/callee, tham số, biến cục bộ, field và docstring. Source line là bằng chứng; không suy ra nhánh runtime từ graph.

Chọn hàm bên trái.

Config · prompts · rules · tests

Inventory này lấy từ working tree khi sinh atlas. Mở file để kiểm chính xác nội dung và quyền thực thi; sự tồn tại của file không có nghĩa runtime đã gọi nó.