[{"data":1,"prerenderedAt":2034},["ShallowReactive",2],{"post-audit-mode-drift-detection-akidevrule":3,"content-query-lI0TmaD8Xu":1134},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"categoryKey":11,"readTime":12,"body":13,"_type":641,"_id":1129,"_source":1130,"_file":1131,"_stem":1132,"_extension":1133},"\u002Fposts\u002Faudit-mode-drift-detection-akidevrule","posts",false,"","Audit Mode & Drift Detection Trong AkiDevRule: Quét Bất Biến An Toàn","Phương pháp vận hành Audit Mode trong AkiDevRule tuân thủ quy tắc agent.B5: Chỉ đọc, không tự ý sửa đổi git state.","2026-07-29","ai","6 min",{"type":14,"children":15,"toc":1114},"root",[16,25,48,60,64,78,98,125,132,188,191,197,209,438,441,447,458,560,566,609,612,618,623,637,1019,1022,1028,1033,1082,1108],{"type":17,"tag":18,"props":19,"children":21},"element","h1",{"id":20},"audit-mode-drift-detection-trong-akidevrule-phương-pháp-quét-bất-biến-chuẩn-xác",[22],{"type":23,"value":24},"text","Audit Mode & Drift Detection Trong AkiDevRule: Phương Pháp Quét Bất Biến Chuẩn Xác",{"type":17,"tag":26,"props":27,"children":28},"p",{},[29,31,46],{"type":23,"value":30},"Chế độ Audit Mode trong bộ quy chuẩn AkiDevRule vận hành dưới một ràng buộc cốt lõi bất biến: ",{"type":17,"tag":32,"props":33,"children":34},"strong",{},[35,37,44],{"type":23,"value":36},"Chỉ xuất báo cáo phân tích và phân loại mức độ nghiêm trọng; tuyệt đối không tự ý thay đổi git state hoặc tự động sửa mã nguồn (",{"type":17,"tag":38,"props":39,"children":41},"code",{"className":40},[],[42],{"type":23,"value":43},"agent.B5",{"type":23,"value":45},")",{"type":23,"value":47},".",{"type":17,"tag":26,"props":49,"children":50},{},[51,53,58],{"type":23,"value":52},"Trong quá trình phát triển các hệ thống phần mềm lớn bằng AI Agent, hiện tượng ",{"type":17,"tag":32,"props":54,"children":55},{},[56],{"type":23,"value":57},"Drift (Sự trôi dạt ngữ nghĩa\u002Fkiến trúc)",{"type":23,"value":59}," xảy ra liên tục: tài liệu không khớp với code thực tế, giao diện UI lệch khỏi chuẩn thiết kế, hoặc các quy tắc bảo mật bị nới lỏng ngầm. Nếu cho phép AI Agent vừa đi kiểm tra vừa tự ý \"sửa giúp\", hậu quả thường là các commit rác, vỡ build và mất kiểm soát git working tree.",{"type":17,"tag":61,"props":62,"children":63},"hr",{},[],{"type":17,"tag":65,"props":66,"children":68},"h2",{"id":67},"_1-quy-tắc-cốt-lõi-agentb5-giới-hạn-phạm-vi-kiểm-toán-chỉ-đọc-read-only-audit",[69,71,76],{"type":23,"value":70},"1. Quy tắc cốt lõi ",{"type":17,"tag":38,"props":72,"children":74},{"className":73},[],[75],{"type":23,"value":43},{"type":23,"value":77},": Giới Hạn Phạm Vi Kiểm Toán Chỉ Đọc (Read-Only Audit)",{"type":17,"tag":26,"props":79,"children":80},{},[81,83,88,90,96],{"type":23,"value":82},"Quy tắc ",{"type":17,"tag":38,"props":84,"children":86},{"className":85},[],[87],{"type":23,"value":43},{"type":23,"value":89}," trong ",{"type":17,"tag":38,"props":91,"children":93},{"className":92},[],[94],{"type":23,"value":95},"~\u002F.aki\u002Fakidevrule\u002FRULE-agent-behavior.md",{"type":23,"value":97}," được thiết lập như một bức tường lửa bảo vệ mã nguồn:",{"type":17,"tag":99,"props":100,"children":101},"blockquote",{},[102],{"type":17,"tag":26,"props":103,"children":104},{},[105,111,123],{"type":17,"tag":106,"props":107,"children":108},"span",{},[109],{"type":23,"value":110},"!CAUTION",{"type":17,"tag":32,"props":112,"children":113},{},[114,116,121],{"type":23,"value":115},"RULE ",{"type":17,"tag":38,"props":117,"children":119},{"className":118},[],[120],{"type":23,"value":43},{"type":23,"value":122}," (Read-only Audits)",{"type":23,"value":124},": When tasked with auditing, verifying, or assessing a codebase, the agent MUST remain strictly read-only. NEVER invoke write\u002Freplace tools or commit changes during an audit pass. Output findings as a structured report only.",{"type":17,"tag":126,"props":127,"children":129},"h3",{"id":128},"tại-sao-lại-cấm-ai-agent-tự-sửa-code-trong-lúc-audit",[130],{"type":23,"value":131},"Tại sao lại cấm AI Agent tự sửa code trong lúc Audit?",{"type":17,"tag":133,"props":134,"children":135},"ol",{},[136,155,165],{"type":17,"tag":137,"props":138,"children":139},"li",{},[140,145,147,153],{"type":17,"tag":32,"props":141,"children":142},{},[143],{"type":23,"value":144},"Tránh nhiễu Git History",{"type":23,"value":146},": Tự động sửa hàng loạt lỗi nhỏ (cosmetic) làm lộn xộn ",{"type":17,"tag":38,"props":148,"children":150},{"className":149},[],[151],{"type":23,"value":152},"git diff",{"type":23,"value":154},", khiến người reviewer thật không thể phân biệt đâu là logic nghiệp vụ chính.",{"type":17,"tag":137,"props":156,"children":157},{},[158,163],{"type":17,"tag":32,"props":159,"children":160},{},[161],{"type":23,"value":162},"Nguy cơ vỡ Side Effect",{"type":23,"value":164},": Một thay đổi \"sửa doc\" hoặc \"chuẩn hóa format\" có thể âm thầm phá vỡ reflection, type declaration hoặc regex parsing ở chỗ khác.",{"type":17,"tag":137,"props":166,"children":167},{},[168,173,175,180,182,187],{"type":17,"tag":32,"props":169,"children":170},{},[171],{"type":23,"value":172},"Phân định trách nhiệm (Separation of Concerns)",{"type":23,"value":174},": Pha Audit dùng để ",{"type":17,"tag":32,"props":176,"children":177},{},[178],{"type":23,"value":179},"phát hiện sự thật (Fact-finding)",{"type":23,"value":181},", pha Fix dùng để ",{"type":17,"tag":32,"props":183,"children":184},{},[185],{"type":23,"value":186},"thực thi thay đổi (Execution)",{"type":23,"value":47},{"type":17,"tag":61,"props":189,"children":190},{},[],{"type":17,"tag":65,"props":192,"children":194},{"id":193},"_2-ma-trận-phân-vùng-audit-theo-tên-miền-domain-read-only-specialists",[195],{"type":23,"value":196},"2. Ma trận Phân Vùng Audit Theo Tên Miền (Domain Read-only Specialists)",{"type":17,"tag":26,"props":198,"children":199},{},[200,202,207],{"type":23,"value":201},"Để việc kiểm tra đạt độ bao phủ sâu mà không gây tràn ngữ cảnh, ",{"type":17,"tag":32,"props":203,"children":204},{},[205],{"type":23,"value":206},"AkiDevRule",{"type":23,"value":208}," chia nhỏ pha Audit thành 6 miền chuyên biệt:",{"type":17,"tag":210,"props":211,"children":212},"table",{},[213,237],{"type":17,"tag":214,"props":215,"children":216},"thead",{},[217],{"type":17,"tag":218,"props":219,"children":220},"tr",{},[221,227,232],{"type":17,"tag":222,"props":223,"children":224},"th",{},[225],{"type":23,"value":226},"Specialist Domain",{"type":17,"tag":222,"props":228,"children":229},{},[230],{"type":23,"value":231},"Phạm Vi Quét Tự Động",{"type":17,"tag":222,"props":233,"children":234},{},[235],{"type":23,"value":236},"Tín Hiệu Phát Hiện Drift",{"type":17,"tag":238,"props":239,"children":240},"tbody",{},[241,270,312,348,376,404],{"type":17,"tag":218,"props":242,"children":243},{},[244,260,265],{"type":17,"tag":245,"props":246,"children":247},"td",{},[248],{"type":17,"tag":32,"props":249,"children":250},{},[251,253,259],{"type":23,"value":252},"Docs Drift (",{"type":17,"tag":38,"props":254,"children":256},{"className":255},[],[257],{"type":23,"value":258},"docs-auditor",{"type":23,"value":45},{"type":17,"tag":245,"props":261,"children":262},{},[263],{"type":23,"value":264},"So sánh comment\u002FJSDoc với function signature thực tế",{"type":17,"tag":245,"props":266,"children":267},{},[268],{"type":23,"value":269},"Code đã đổi tham số nhưng JSDoc vẫn giữ kiểu cũ",{"type":17,"tag":218,"props":271,"children":272},{},[273,288,299],{"type":17,"tag":245,"props":274,"children":275},{},[276],{"type":17,"tag":32,"props":277,"children":278},{},[279,281,287],{"type":23,"value":280},"UI Drift (",{"type":17,"tag":38,"props":282,"children":284},{"className":283},[],[285],{"type":23,"value":286},"ui-auditor",{"type":23,"value":45},{"type":17,"tag":245,"props":289,"children":290},{},[291,293],{"type":23,"value":292},"Kiểm tra CSS utility, spacing, token màu so với ",{"type":17,"tag":38,"props":294,"children":296},{"className":295},[],[297],{"type":23,"value":298},"RULE-pattern-core.md",{"type":17,"tag":245,"props":300,"children":301},{},[302,304,310],{"type":23,"value":303},"Dùng inline style cứng ",{"type":17,"tag":38,"props":305,"children":307},{"className":306},[],[308],{"type":23,"value":309},"padding: 13px",{"type":23,"value":311}," thay vì Tailwind class",{"type":17,"tag":218,"props":313,"children":314},{},[315,330,335],{"type":17,"tag":245,"props":316,"children":317},{},[318],{"type":17,"tag":32,"props":319,"children":320},{},[321,323,329],{"type":23,"value":322},"Flow Drift (",{"type":17,"tag":38,"props":324,"children":326},{"className":325},[],[327],{"type":23,"value":328},"flow-auditor",{"type":23,"value":45},{"type":17,"tag":245,"props":331,"children":332},{},[333],{"type":23,"value":334},"Kiểm tra luồng điều hướng, error handling, try\u002Fcatch",{"type":17,"tag":245,"props":336,"children":337},{},[338,340,346],{"type":23,"value":339},"Nuốt exception ngầm (",{"type":17,"tag":38,"props":341,"children":343},{"className":342},[],[344],{"type":23,"value":345},"catch {}",{"type":23,"value":347},") mà không log lỗi",{"type":17,"tag":218,"props":349,"children":350},{},[351,366,371],{"type":17,"tag":245,"props":352,"children":353},{},[354],{"type":17,"tag":32,"props":355,"children":356},{},[357,359,365],{"type":23,"value":358},"Release Drift (",{"type":17,"tag":38,"props":360,"children":362},{"className":361},[],[363],{"type":23,"value":364},"release-auditor",{"type":23,"value":45},{"type":17,"tag":245,"props":367,"children":368},{},[369],{"type":23,"value":370},"Quét file build, wrangler.toml, package.json, env vars",{"type":17,"tag":245,"props":372,"children":373},{},[374],{"type":23,"value":375},"Chưa bump version hoặc dùng dependency không đúng allowlist",{"type":17,"tag":218,"props":377,"children":378},{},[379,394,399],{"type":17,"tag":245,"props":380,"children":381},{},[382],{"type":17,"tag":32,"props":383,"children":384},{},[385,387,393],{"type":23,"value":386},"UX Drift (",{"type":17,"tag":38,"props":388,"children":390},{"className":389},[],[391],{"type":23,"value":392},"ux-auditor",{"type":23,"value":45},{"type":17,"tag":245,"props":395,"children":396},{},[397],{"type":23,"value":398},"Kiểm tra trạng thái Loading, Empty State, Error State",{"type":17,"tag":245,"props":400,"children":401},{},[402],{"type":23,"value":403},"Trang fetch API thiếu màn hình chờ hoặc thiếu nút thử lại",{"type":17,"tag":218,"props":405,"children":406},{},[407,422,433],{"type":17,"tag":245,"props":408,"children":409},{},[410],{"type":17,"tag":32,"props":411,"children":412},{},[413,415,421],{"type":23,"value":414},"Business Drift (",{"type":17,"tag":38,"props":416,"children":418},{"className":417},[],[419],{"type":23,"value":420},"biz-auditor",{"type":23,"value":45},{"type":17,"tag":245,"props":423,"children":424},{},[425,427],{"type":23,"value":426},"Kiểm tra USP, thông điệp CTA theo ",{"type":17,"tag":38,"props":428,"children":430},{"className":429},[],[431],{"type":23,"value":432},"RULE-biz.md",{"type":17,"tag":245,"props":434,"children":435},{},[436],{"type":23,"value":437},"Sử dụng từ ngữ quảng cáo mông quạnh, thiếu chứng minh thực tế",{"type":17,"tag":61,"props":439,"children":440},{},[],{"type":17,"tag":65,"props":442,"children":444},{"id":443},"_3-quy-trình-triage-của-lead-trên-model-mạnh",[445],{"type":23,"value":446},"3. Quy Trình Triage Của Lead Trên Model Mạnh",{"type":17,"tag":26,"props":448,"children":449},{},[450,452,456],{"type":23,"value":451},"Một sai lầm thường gặp là giao việc phân loại mức độ nghiêm trọng của lỗi cho các AI Model giá rẻ. Trong ",{"type":17,"tag":32,"props":453,"children":454},{},[455],{"type":23,"value":206},{"type":23,"value":457},", hạ tầng vận hành theo mô hình hai tầng linh hoạt:",{"type":17,"tag":459,"props":460,"children":464},"pre",{"className":461,"code":462,"language":463,"meta":7,"style":7},"language-mermaid shiki shiki-themes night-owl","graph TD\n    A[Domain Read-only Specialists] -->|Mechanical Sweeps \u002F Cheap Model| B[Raw Audit Logs]\n    B -->|Triage & Impact Assessment| C[Lead Agent \u002F Strong Model pro]\n    C --> D1[CRITICAL: Sai Logic \u002F Lỗ Hổng Bảo Mật]\n    C --> D2[STALE: Tài Liệu Cũ Cần Cập Nhật]\n    C --> D3[INCOMPLETE: Thiếu Trạng Thái Edge Case]\n    C --> D4[COSMETIC: Lỗi Định Dạng Giao Diện Nhỏ]\n    \n    style C fill:#8b5cf6,stroke:#7c3aed,color:#fff\n    style D1 fill:#ef4444,stroke:#dc2626,color:#fff\n","mermaid",[465],{"type":17,"tag":38,"props":466,"children":467},{"__ignoreMap":7},[468,479,488,497,506,515,524,533,542,551],{"type":17,"tag":106,"props":469,"children":472},{"class":470,"line":471},"line",1,[473],{"type":17,"tag":106,"props":474,"children":476},{"style":475},"--shiki-default:#D6DEEB",[477],{"type":23,"value":478},"graph TD\n",{"type":17,"tag":106,"props":480,"children":482},{"class":470,"line":481},2,[483],{"type":17,"tag":106,"props":484,"children":485},{"style":475},[486],{"type":23,"value":487},"    A[Domain Read-only Specialists] -->|Mechanical Sweeps \u002F Cheap Model| B[Raw Audit Logs]\n",{"type":17,"tag":106,"props":489,"children":491},{"class":470,"line":490},3,[492],{"type":17,"tag":106,"props":493,"children":494},{"style":475},[495],{"type":23,"value":496},"    B -->|Triage & Impact Assessment| C[Lead Agent \u002F Strong Model pro]\n",{"type":17,"tag":106,"props":498,"children":500},{"class":470,"line":499},4,[501],{"type":17,"tag":106,"props":502,"children":503},{"style":475},[504],{"type":23,"value":505},"    C --> D1[CRITICAL: Sai Logic \u002F Lỗ Hổng Bảo Mật]\n",{"type":17,"tag":106,"props":507,"children":509},{"class":470,"line":508},5,[510],{"type":17,"tag":106,"props":511,"children":512},{"style":475},[513],{"type":23,"value":514},"    C --> D2[STALE: Tài Liệu Cũ Cần Cập Nhật]\n",{"type":17,"tag":106,"props":516,"children":518},{"class":470,"line":517},6,[519],{"type":17,"tag":106,"props":520,"children":521},{"style":475},[522],{"type":23,"value":523},"    C --> D3[INCOMPLETE: Thiếu Trạng Thái Edge Case]\n",{"type":17,"tag":106,"props":525,"children":527},{"class":470,"line":526},7,[528],{"type":17,"tag":106,"props":529,"children":530},{"style":475},[531],{"type":23,"value":532},"    C --> D4[COSMETIC: Lỗi Định Dạng Giao Diện Nhỏ]\n",{"type":17,"tag":106,"props":534,"children":536},{"class":470,"line":535},8,[537],{"type":17,"tag":106,"props":538,"children":539},{"style":475},[540],{"type":23,"value":541},"    \n",{"type":17,"tag":106,"props":543,"children":545},{"class":470,"line":544},9,[546],{"type":17,"tag":106,"props":547,"children":548},{"style":475},[549],{"type":23,"value":550},"    style C fill:#8b5cf6,stroke:#7c3aed,color:#fff\n",{"type":17,"tag":106,"props":552,"children":554},{"class":470,"line":553},10,[555],{"type":17,"tag":106,"props":556,"children":557},{"style":475},[558],{"type":23,"value":559},"    style D1 fill:#ef4444,stroke:#dc2626,color:#fff\n",{"type":17,"tag":126,"props":561,"children":563},{"id":562},"_4-cấp-độ-phân-loại-severity-triage-classification",[564],{"type":23,"value":565},"4 Cấp độ Phân Loại Severity (Triage Classification):",{"type":17,"tag":133,"props":567,"children":568},{},[569,579,589,599],{"type":17,"tag":137,"props":570,"children":571},{},[572,577],{"type":17,"tag":32,"props":573,"children":574},{},[575],{"type":23,"value":576},"WRONG (Sai sót nghiêm trọng)",{"type":23,"value":578},": Code chạy sai contract, hở security hoặc crash runtime. Bắt buộc sửa trước khi release.",{"type":17,"tag":137,"props":580,"children":581},{},[582,587],{"type":17,"tag":32,"props":583,"children":584},{},[585],{"type":23,"value":586},"STALE (Lỗi thời)",{"type":23,"value":588},": Tài liệu hoặc comment chưa cập nhật theo code mới. Thấp hơn ưu tiên sửa code.",{"type":17,"tag":137,"props":590,"children":591},{},[592,597],{"type":17,"tag":32,"props":593,"children":594},{},[595],{"type":23,"value":596},"INCOMPLETE (Chưa hoàn thiện)",{"type":23,"value":598},": Thiếu handling cho edge-cases (VD: offline network, 404 response).",{"type":17,"tag":137,"props":600,"children":601},{},[602,607],{"type":17,"tag":32,"props":603,"children":604},{},[605],{"type":23,"value":606},"COSMETIC (Hình thức)",{"type":23,"value":608},": Thừa khoảng trắng, thụt lùi dòng không đều. Mức ưu tiên thấp nhất.",{"type":17,"tag":61,"props":610,"children":611},{},[],{"type":17,"tag":65,"props":613,"children":615},{"id":614},"_4-định-dạng-báo-cáo-audit-theo-từng-giai-đoạn",[616],{"type":23,"value":617},"4. Định Dạng Báo Cáo Audit Theo Từng Giai Đoạn",{"type":17,"tag":26,"props":619,"children":620},{},[621],{"type":23,"value":622},"Output của một phiên Audit Mode không được là một đoạn văn bản tự do, mà phải xuất ra file báo cáo theo đúng template chuẩn:",{"type":17,"tag":126,"props":624,"children":626},{"id":625},"template-báo-cáo-audit-docsresearchaudit-report-yyyymmddmd",[627,629,635],{"type":23,"value":628},"Template Báo Cáo Audit (",{"type":17,"tag":38,"props":630,"children":632},{"className":631},[],[633],{"type":23,"value":634},"docs\u002Fresearch\u002Faudit-report-YYYY.MM.DD.md",{"type":23,"value":636},"):",{"type":17,"tag":459,"props":638,"children":642},{"className":639,"code":640,"language":641,"meta":7,"style":7},"language-markdown shiki shiki-themes night-owl","# Audit Report: [Tên Hệ Thống \u002F Module]\nDate: YYYY-MM-DD | Auditor: agent.B5 Read-Only Sweep | Status: TRIAGED\n\n## I. Summary Statistics\n- Total Files Scanned: 42\n- Critical Findings (WRONG): 2\n- Documentation Drifts (STALE): 5\n- Edge-Case Gaps (INCOMPLETE): 3\n\n## II. Detailed Triaged Findings\n\n### 1. [WRONG] Missing Webhook Signature Validation\n- **Location**: `web\u002Fdev.akitao.com\u002Fapp\u002Fserver\u002Fapi\u002Fstripe.ts#L45`\n- **Rule Violated**: `coding.B3` (External Action Completeness)\n- **Empirical Evidence**: Route Handler nhận request body trực tiếp không qua `stripe.webhooks.constructEvent`.\n- **Recommended Action**: Wrap body parsing trong Stripe SDK signature check.\n\n### 2. [STALE] Outdated JSDoc Parameters in lessons.ts\n- **Location**: `web\u002Fdev.akitao.com\u002Fapp\u002Fdata\u002Flessons.ts#L12`\n- **Rule Violated**: `docs.A1` (Single Source of Truth)\n- **Empirical Evidence**: Comment ghi 29 lessons nhưng mảng thực tế có 33 lessons.\n","markdown",[643],{"type":17,"tag":38,"props":644,"children":645},{"__ignoreMap":7},[646,655,663,672,680,694,706,718,730,737,745,753,772,807,842,878,904,912,931,960,994],{"type":17,"tag":106,"props":647,"children":648},{"class":470,"line":471},[649],{"type":17,"tag":106,"props":650,"children":652},{"style":651},"--shiki-default:#82B1FF",[653],{"type":23,"value":654},"# Audit Report: [Tên Hệ Thống \u002F Module]\n",{"type":17,"tag":106,"props":656,"children":657},{"class":470,"line":481},[658],{"type":17,"tag":106,"props":659,"children":660},{"style":475},[661],{"type":23,"value":662},"Date: YYYY-MM-DD | Auditor: agent.B5 Read-Only Sweep | Status: TRIAGED\n",{"type":17,"tag":106,"props":664,"children":665},{"class":470,"line":490},[666],{"type":17,"tag":106,"props":667,"children":669},{"emptyLinePlaceholder":668},true,[670],{"type":23,"value":671},"\n",{"type":17,"tag":106,"props":673,"children":674},{"class":470,"line":499},[675],{"type":17,"tag":106,"props":676,"children":677},{"style":651},[678],{"type":23,"value":679},"## I. Summary Statistics\n",{"type":17,"tag":106,"props":681,"children":682},{"class":470,"line":508},[683,689],{"type":17,"tag":106,"props":684,"children":686},{"style":685},"--shiki-default:#D9F5DD",[687],{"type":23,"value":688},"-",{"type":17,"tag":106,"props":690,"children":691},{"style":475},[692],{"type":23,"value":693}," Total Files Scanned: 42\n",{"type":17,"tag":106,"props":695,"children":696},{"class":470,"line":517},[697,701],{"type":17,"tag":106,"props":698,"children":699},{"style":685},[700],{"type":23,"value":688},{"type":17,"tag":106,"props":702,"children":703},{"style":475},[704],{"type":23,"value":705}," Critical Findings (WRONG): 2\n",{"type":17,"tag":106,"props":707,"children":708},{"class":470,"line":526},[709,713],{"type":17,"tag":106,"props":710,"children":711},{"style":685},[712],{"type":23,"value":688},{"type":17,"tag":106,"props":714,"children":715},{"style":475},[716],{"type":23,"value":717}," Documentation Drifts (STALE): 5\n",{"type":17,"tag":106,"props":719,"children":720},{"class":470,"line":535},[721,725],{"type":17,"tag":106,"props":722,"children":723},{"style":685},[724],{"type":23,"value":688},{"type":17,"tag":106,"props":726,"children":727},{"style":475},[728],{"type":23,"value":729}," Edge-Case Gaps (INCOMPLETE): 3\n",{"type":17,"tag":106,"props":731,"children":732},{"class":470,"line":544},[733],{"type":17,"tag":106,"props":734,"children":735},{"emptyLinePlaceholder":668},[736],{"type":23,"value":671},{"type":17,"tag":106,"props":738,"children":739},{"class":470,"line":553},[740],{"type":17,"tag":106,"props":741,"children":742},{"style":651},[743],{"type":23,"value":744},"## II. Detailed Triaged Findings\n",{"type":17,"tag":106,"props":746,"children":748},{"class":470,"line":747},11,[749],{"type":17,"tag":106,"props":750,"children":751},{"emptyLinePlaceholder":668},[752],{"type":23,"value":671},{"type":17,"tag":106,"props":754,"children":756},{"class":470,"line":755},12,[757,762,767],{"type":17,"tag":106,"props":758,"children":759},{"style":651},[760],{"type":23,"value":761},"### 1. [",{"type":17,"tag":106,"props":763,"children":764},{"style":475},[765],{"type":23,"value":766},"WRONG",{"type":17,"tag":106,"props":768,"children":769},{"style":651},[770],{"type":23,"value":771},"] Missing Webhook Signature Validation\n",{"type":17,"tag":106,"props":773,"children":775},{"class":470,"line":774},13,[776,780,786,792,797,802],{"type":17,"tag":106,"props":777,"children":778},{"style":685},[779],{"type":23,"value":688},{"type":17,"tag":106,"props":781,"children":783},{"style":782},"--shiki-default:#C5E478",[784],{"type":23,"value":785}," **",{"type":17,"tag":106,"props":787,"children":789},{"style":788},"--shiki-default:#C5E478;--shiki-default-font-weight:bold",[790],{"type":23,"value":791},"Location",{"type":17,"tag":106,"props":793,"children":794},{"style":782},[795],{"type":23,"value":796},"**",{"type":17,"tag":106,"props":798,"children":799},{"style":475},[800],{"type":23,"value":801},": ",{"type":17,"tag":106,"props":803,"children":804},{"style":782},[805],{"type":23,"value":806},"`web\u002Fdev.akitao.com\u002Fapp\u002Fserver\u002Fapi\u002Fstripe.ts#L45`\n",{"type":17,"tag":106,"props":808,"children":810},{"class":470,"line":809},14,[811,815,819,824,828,832,837],{"type":17,"tag":106,"props":812,"children":813},{"style":685},[814],{"type":23,"value":688},{"type":17,"tag":106,"props":816,"children":817},{"style":782},[818],{"type":23,"value":785},{"type":17,"tag":106,"props":820,"children":821},{"style":788},[822],{"type":23,"value":823},"Rule Violated",{"type":17,"tag":106,"props":825,"children":826},{"style":782},[827],{"type":23,"value":796},{"type":17,"tag":106,"props":829,"children":830},{"style":475},[831],{"type":23,"value":801},{"type":17,"tag":106,"props":833,"children":834},{"style":782},[835],{"type":23,"value":836},"`coding.B3`",{"type":17,"tag":106,"props":838,"children":839},{"style":475},[840],{"type":23,"value":841}," (External Action Completeness)\n",{"type":17,"tag":106,"props":843,"children":845},{"class":470,"line":844},15,[846,850,854,859,863,868,873],{"type":17,"tag":106,"props":847,"children":848},{"style":685},[849],{"type":23,"value":688},{"type":17,"tag":106,"props":851,"children":852},{"style":782},[853],{"type":23,"value":785},{"type":17,"tag":106,"props":855,"children":856},{"style":788},[857],{"type":23,"value":858},"Empirical Evidence",{"type":17,"tag":106,"props":860,"children":861},{"style":782},[862],{"type":23,"value":796},{"type":17,"tag":106,"props":864,"children":865},{"style":475},[866],{"type":23,"value":867},": Route Handler nhận request body trực tiếp không qua ",{"type":17,"tag":106,"props":869,"children":870},{"style":782},[871],{"type":23,"value":872},"`stripe.webhooks.constructEvent`",{"type":17,"tag":106,"props":874,"children":875},{"style":475},[876],{"type":23,"value":877},".\n",{"type":17,"tag":106,"props":879,"children":881},{"class":470,"line":880},16,[882,886,890,895,899],{"type":17,"tag":106,"props":883,"children":884},{"style":685},[885],{"type":23,"value":688},{"type":17,"tag":106,"props":887,"children":888},{"style":782},[889],{"type":23,"value":785},{"type":17,"tag":106,"props":891,"children":892},{"style":788},[893],{"type":23,"value":894},"Recommended Action",{"type":17,"tag":106,"props":896,"children":897},{"style":782},[898],{"type":23,"value":796},{"type":17,"tag":106,"props":900,"children":901},{"style":475},[902],{"type":23,"value":903},": Wrap body parsing trong Stripe SDK signature check.\n",{"type":17,"tag":106,"props":905,"children":907},{"class":470,"line":906},17,[908],{"type":17,"tag":106,"props":909,"children":910},{"emptyLinePlaceholder":668},[911],{"type":23,"value":671},{"type":17,"tag":106,"props":913,"children":915},{"class":470,"line":914},18,[916,921,926],{"type":17,"tag":106,"props":917,"children":918},{"style":651},[919],{"type":23,"value":920},"### 2. [",{"type":17,"tag":106,"props":922,"children":923},{"style":475},[924],{"type":23,"value":925},"STALE",{"type":17,"tag":106,"props":927,"children":928},{"style":651},[929],{"type":23,"value":930},"] Outdated JSDoc Parameters in lessons.ts\n",{"type":17,"tag":106,"props":932,"children":934},{"class":470,"line":933},19,[935,939,943,947,951,955],{"type":17,"tag":106,"props":936,"children":937},{"style":685},[938],{"type":23,"value":688},{"type":17,"tag":106,"props":940,"children":941},{"style":782},[942],{"type":23,"value":785},{"type":17,"tag":106,"props":944,"children":945},{"style":788},[946],{"type":23,"value":791},{"type":17,"tag":106,"props":948,"children":949},{"style":782},[950],{"type":23,"value":796},{"type":17,"tag":106,"props":952,"children":953},{"style":475},[954],{"type":23,"value":801},{"type":17,"tag":106,"props":956,"children":957},{"style":782},[958],{"type":23,"value":959},"`web\u002Fdev.akitao.com\u002Fapp\u002Fdata\u002Flessons.ts#L12`\n",{"type":17,"tag":106,"props":961,"children":963},{"class":470,"line":962},20,[964,968,972,976,980,984,989],{"type":17,"tag":106,"props":965,"children":966},{"style":685},[967],{"type":23,"value":688},{"type":17,"tag":106,"props":969,"children":970},{"style":782},[971],{"type":23,"value":785},{"type":17,"tag":106,"props":973,"children":974},{"style":788},[975],{"type":23,"value":823},{"type":17,"tag":106,"props":977,"children":978},{"style":782},[979],{"type":23,"value":796},{"type":17,"tag":106,"props":981,"children":982},{"style":475},[983],{"type":23,"value":801},{"type":17,"tag":106,"props":985,"children":986},{"style":782},[987],{"type":23,"value":988},"`docs.A1`",{"type":17,"tag":106,"props":990,"children":991},{"style":475},[992],{"type":23,"value":993}," (Single Source of Truth)\n",{"type":17,"tag":106,"props":995,"children":997},{"class":470,"line":996},21,[998,1002,1006,1010,1014],{"type":17,"tag":106,"props":999,"children":1000},{"style":685},[1001],{"type":23,"value":688},{"type":17,"tag":106,"props":1003,"children":1004},{"style":782},[1005],{"type":23,"value":785},{"type":17,"tag":106,"props":1007,"children":1008},{"style":788},[1009],{"type":23,"value":858},{"type":17,"tag":106,"props":1011,"children":1012},{"style":782},[1013],{"type":23,"value":796},{"type":17,"tag":106,"props":1015,"children":1016},{"style":475},[1017],{"type":23,"value":1018},": Comment ghi 29 lessons nhưng mảng thực tế có 33 lessons.\n",{"type":17,"tag":61,"props":1020,"children":1021},{},[],{"type":17,"tag":65,"props":1023,"children":1025},{"id":1024},"_5-hướng-dẫn-tích-hợp-audit-mode-vào-cicd-pipeline",[1026],{"type":23,"value":1027},"5. Hướng Dẫn Tích Hợp Audit Mode Vào CI\u002FCD Pipeline",{"type":17,"tag":26,"props":1029,"children":1030},{},[1031],{"type":23,"value":1032},"Để duy trì tính toàn vẹn của mã nguồn liên tục, bạn có thể thiết lập lệnh Audit Mode chạy tự động trong các phiên kiểm thử định kỳ trước khi Merge Code:",{"type":17,"tag":459,"props":1034,"children":1038},{"className":1035,"code":1036,"language":1037,"meta":7,"style":7},"language-bash shiki shiki-themes night-owl","# Lệnh chạy Audit Sweep An Toàn (Read-Only) với AkiDevRule\nnpx akirule audit --domain=docs,ui,flow --strict-read-only\n","bash",[1039],{"type":17,"tag":38,"props":1040,"children":1041},{"__ignoreMap":7},[1042,1051],{"type":17,"tag":106,"props":1043,"children":1044},{"class":470,"line":471},[1045],{"type":17,"tag":106,"props":1046,"children":1048},{"style":1047},"--shiki-default:#637777;--shiki-default-font-style:italic",[1049],{"type":23,"value":1050},"# Lệnh chạy Audit Sweep An Toàn (Read-Only) với AkiDevRule\n",{"type":17,"tag":106,"props":1052,"children":1053},{"class":470,"line":481},[1054,1060,1066,1071,1077],{"type":17,"tag":106,"props":1055,"children":1057},{"style":1056},"--shiki-default:#82AAFF;--shiki-default-font-style:italic",[1058],{"type":23,"value":1059},"npx",{"type":17,"tag":106,"props":1061,"children":1063},{"style":1062},"--shiki-default:#ECC48D",[1064],{"type":23,"value":1065}," akirule",{"type":17,"tag":106,"props":1067,"children":1068},{"style":1062},[1069],{"type":23,"value":1070}," audit",{"type":17,"tag":106,"props":1072,"children":1074},{"style":1073},"--shiki-default:#82AAFF",[1075],{"type":23,"value":1076}," --domain=docs,ui,flow",{"type":17,"tag":106,"props":1078,"children":1079},{"style":1073},[1080],{"type":23,"value":1081}," --strict-read-only\n",{"type":17,"tag":99,"props":1083,"children":1084},{},[1085],{"type":17,"tag":26,"props":1086,"children":1087},{},[1088,1093,1098,1100,1106],{"type":17,"tag":106,"props":1089,"children":1090},{},[1091],{"type":23,"value":1092},"!TIP",{"type":17,"tag":32,"props":1094,"children":1095},{},[1096],{"type":23,"value":1097},"Best Practice",{"type":23,"value":1099},": Kết hợp Audit Mode với ",{"type":17,"tag":38,"props":1101,"children":1103},{"className":1102},[],[1104],{"type":23,"value":1105},"git status --porcelain",{"type":23,"value":1107}," ở cuối script pipeline. Nếu phát hiện bất kỳ file nào bị biến đổi sau lệnh audit, script sẽ ngay lập tức raise exit code 1 và hủy tiến trình deployment.",{"type":17,"tag":1109,"props":1110,"children":1111},"style",{},[1112],{"type":23,"value":1113},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":7,"searchDepth":481,"depth":481,"links":1115},[1116,1120,1121,1124,1128],{"id":67,"depth":481,"text":1117,"children":1118},"1. Quy tắc cốt lõi agent.B5: Giới Hạn Phạm Vi Kiểm Toán Chỉ Đọc (Read-Only Audit)",[1119],{"id":128,"depth":490,"text":131},{"id":193,"depth":481,"text":196},{"id":443,"depth":481,"text":446,"children":1122},[1123],{"id":562,"depth":490,"text":565},{"id":614,"depth":481,"text":617,"children":1125},[1126],{"id":625,"depth":490,"text":1127},"Template Báo Cáo Audit (docs\u002Fresearch\u002Faudit-report-YYYY.MM.DD.md):",{"id":1024,"depth":481,"text":1027},"content:posts:audit-mode-drift-detection-akidevrule.md","content","posts\u002Faudit-mode-drift-detection-akidevrule.md","posts\u002Faudit-mode-drift-detection-akidevrule","md",{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"categoryKey":11,"readTime":12,"body":1135,"_type":641,"_id":1129,"_source":1130,"_file":1131,"_stem":1132,"_extension":1133},{"type":14,"children":1136,"toc":2021},[1137,1141,1156,1165,1168,1178,1194,1215,1219,1262,1265,1269,1278,1468,1471,1475,1484,1560,1564,1599,1602,1606,1610,1620,1949,1952,1956,1960,1996,2017],{"type":17,"tag":18,"props":1138,"children":1139},{"id":20},[1140],{"type":23,"value":24},{"type":17,"tag":26,"props":1142,"children":1143},{},[1144,1145,1155],{"type":23,"value":30},{"type":17,"tag":32,"props":1146,"children":1147},{},[1148,1149,1154],{"type":23,"value":36},{"type":17,"tag":38,"props":1150,"children":1152},{"className":1151},[],[1153],{"type":23,"value":43},{"type":23,"value":45},{"type":23,"value":47},{"type":17,"tag":26,"props":1157,"children":1158},{},[1159,1160,1164],{"type":23,"value":52},{"type":17,"tag":32,"props":1161,"children":1162},{},[1163],{"type":23,"value":57},{"type":23,"value":59},{"type":17,"tag":61,"props":1166,"children":1167},{},[],{"type":17,"tag":65,"props":1169,"children":1170},{"id":67},[1171,1172,1177],{"type":23,"value":70},{"type":17,"tag":38,"props":1173,"children":1175},{"className":1174},[],[1176],{"type":23,"value":43},{"type":23,"value":77},{"type":17,"tag":26,"props":1179,"children":1180},{},[1181,1182,1187,1188,1193],{"type":23,"value":82},{"type":17,"tag":38,"props":1183,"children":1185},{"className":1184},[],[1186],{"type":23,"value":43},{"type":23,"value":89},{"type":17,"tag":38,"props":1189,"children":1191},{"className":1190},[],[1192],{"type":23,"value":95},{"type":23,"value":97},{"type":17,"tag":99,"props":1195,"children":1196},{},[1197],{"type":17,"tag":26,"props":1198,"children":1199},{},[1200,1204,1214],{"type":17,"tag":106,"props":1201,"children":1202},{},[1203],{"type":23,"value":110},{"type":17,"tag":32,"props":1205,"children":1206},{},[1207,1208,1213],{"type":23,"value":115},{"type":17,"tag":38,"props":1209,"children":1211},{"className":1210},[],[1212],{"type":23,"value":43},{"type":23,"value":122},{"type":23,"value":124},{"type":17,"tag":126,"props":1216,"children":1217},{"id":128},[1218],{"type":23,"value":131},{"type":17,"tag":133,"props":1220,"children":1221},{},[1222,1236,1244],{"type":17,"tag":137,"props":1223,"children":1224},{},[1225,1229,1230,1235],{"type":17,"tag":32,"props":1226,"children":1227},{},[1228],{"type":23,"value":144},{"type":23,"value":146},{"type":17,"tag":38,"props":1231,"children":1233},{"className":1232},[],[1234],{"type":23,"value":152},{"type":23,"value":154},{"type":17,"tag":137,"props":1237,"children":1238},{},[1239,1243],{"type":17,"tag":32,"props":1240,"children":1241},{},[1242],{"type":23,"value":162},{"type":23,"value":164},{"type":17,"tag":137,"props":1245,"children":1246},{},[1247,1251,1252,1256,1257,1261],{"type":17,"tag":32,"props":1248,"children":1249},{},[1250],{"type":23,"value":172},{"type":23,"value":174},{"type":17,"tag":32,"props":1253,"children":1254},{},[1255],{"type":23,"value":179},{"type":23,"value":181},{"type":17,"tag":32,"props":1258,"children":1259},{},[1260],{"type":23,"value":186},{"type":23,"value":47},{"type":17,"tag":61,"props":1263,"children":1264},{},[],{"type":17,"tag":65,"props":1266,"children":1267},{"id":193},[1268],{"type":23,"value":196},{"type":17,"tag":26,"props":1270,"children":1271},{},[1272,1273,1277],{"type":23,"value":201},{"type":17,"tag":32,"props":1274,"children":1275},{},[1276],{"type":23,"value":206},{"type":23,"value":208},{"type":17,"tag":210,"props":1279,"children":1280},{},[1281,1299],{"type":17,"tag":214,"props":1282,"children":1283},{},[1284],{"type":17,"tag":218,"props":1285,"children":1286},{},[1287,1291,1295],{"type":17,"tag":222,"props":1288,"children":1289},{},[1290],{"type":23,"value":226},{"type":17,"tag":222,"props":1292,"children":1293},{},[1294],{"type":23,"value":231},{"type":17,"tag":222,"props":1296,"children":1297},{},[1298],{"type":23,"value":236},{"type":17,"tag":238,"props":1300,"children":1301},{},[1302,1326,1361,1391,1415,1439],{"type":17,"tag":218,"props":1303,"children":1304},{},[1305,1318,1322],{"type":17,"tag":245,"props":1306,"children":1307},{},[1308],{"type":17,"tag":32,"props":1309,"children":1310},{},[1311,1312,1317],{"type":23,"value":252},{"type":17,"tag":38,"props":1313,"children":1315},{"className":1314},[],[1316],{"type":23,"value":258},{"type":23,"value":45},{"type":17,"tag":245,"props":1319,"children":1320},{},[1321],{"type":23,"value":264},{"type":17,"tag":245,"props":1323,"children":1324},{},[1325],{"type":23,"value":269},{"type":17,"tag":218,"props":1327,"children":1328},{},[1329,1342,1351],{"type":17,"tag":245,"props":1330,"children":1331},{},[1332],{"type":17,"tag":32,"props":1333,"children":1334},{},[1335,1336,1341],{"type":23,"value":280},{"type":17,"tag":38,"props":1337,"children":1339},{"className":1338},[],[1340],{"type":23,"value":286},{"type":23,"value":45},{"type":17,"tag":245,"props":1343,"children":1344},{},[1345,1346],{"type":23,"value":292},{"type":17,"tag":38,"props":1347,"children":1349},{"className":1348},[],[1350],{"type":23,"value":298},{"type":17,"tag":245,"props":1352,"children":1353},{},[1354,1355,1360],{"type":23,"value":303},{"type":17,"tag":38,"props":1356,"children":1358},{"className":1357},[],[1359],{"type":23,"value":309},{"type":23,"value":311},{"type":17,"tag":218,"props":1362,"children":1363},{},[1364,1377,1381],{"type":17,"tag":245,"props":1365,"children":1366},{},[1367],{"type":17,"tag":32,"props":1368,"children":1369},{},[1370,1371,1376],{"type":23,"value":322},{"type":17,"tag":38,"props":1372,"children":1374},{"className":1373},[],[1375],{"type":23,"value":328},{"type":23,"value":45},{"type":17,"tag":245,"props":1378,"children":1379},{},[1380],{"type":23,"value":334},{"type":17,"tag":245,"props":1382,"children":1383},{},[1384,1385,1390],{"type":23,"value":339},{"type":17,"tag":38,"props":1386,"children":1388},{"className":1387},[],[1389],{"type":23,"value":345},{"type":23,"value":347},{"type":17,"tag":218,"props":1392,"children":1393},{},[1394,1407,1411],{"type":17,"tag":245,"props":1395,"children":1396},{},[1397],{"type":17,"tag":32,"props":1398,"children":1399},{},[1400,1401,1406],{"type":23,"value":358},{"type":17,"tag":38,"props":1402,"children":1404},{"className":1403},[],[1405],{"type":23,"value":364},{"type":23,"value":45},{"type":17,"tag":245,"props":1408,"children":1409},{},[1410],{"type":23,"value":370},{"type":17,"tag":245,"props":1412,"children":1413},{},[1414],{"type":23,"value":375},{"type":17,"tag":218,"props":1416,"children":1417},{},[1418,1431,1435],{"type":17,"tag":245,"props":1419,"children":1420},{},[1421],{"type":17,"tag":32,"props":1422,"children":1423},{},[1424,1425,1430],{"type":23,"value":386},{"type":17,"tag":38,"props":1426,"children":1428},{"className":1427},[],[1429],{"type":23,"value":392},{"type":23,"value":45},{"type":17,"tag":245,"props":1432,"children":1433},{},[1434],{"type":23,"value":398},{"type":17,"tag":245,"props":1436,"children":1437},{},[1438],{"type":23,"value":403},{"type":17,"tag":218,"props":1440,"children":1441},{},[1442,1455,1464],{"type":17,"tag":245,"props":1443,"children":1444},{},[1445],{"type":17,"tag":32,"props":1446,"children":1447},{},[1448,1449,1454],{"type":23,"value":414},{"type":17,"tag":38,"props":1450,"children":1452},{"className":1451},[],[1453],{"type":23,"value":420},{"type":23,"value":45},{"type":17,"tag":245,"props":1456,"children":1457},{},[1458,1459],{"type":23,"value":426},{"type":17,"tag":38,"props":1460,"children":1462},{"className":1461},[],[1463],{"type":23,"value":432},{"type":17,"tag":245,"props":1465,"children":1466},{},[1467],{"type":23,"value":437},{"type":17,"tag":61,"props":1469,"children":1470},{},[],{"type":17,"tag":65,"props":1472,"children":1473},{"id":443},[1474],{"type":23,"value":446},{"type":17,"tag":26,"props":1476,"children":1477},{},[1478,1479,1483],{"type":23,"value":451},{"type":17,"tag":32,"props":1480,"children":1481},{},[1482],{"type":23,"value":206},{"type":23,"value":457},{"type":17,"tag":459,"props":1485,"children":1486},{"className":461,"code":462,"language":463,"meta":7,"style":7},[1487],{"type":17,"tag":38,"props":1488,"children":1489},{"__ignoreMap":7},[1490,1497,1504,1511,1518,1525,1532,1539,1546,1553],{"type":17,"tag":106,"props":1491,"children":1492},{"class":470,"line":471},[1493],{"type":17,"tag":106,"props":1494,"children":1495},{"style":475},[1496],{"type":23,"value":478},{"type":17,"tag":106,"props":1498,"children":1499},{"class":470,"line":481},[1500],{"type":17,"tag":106,"props":1501,"children":1502},{"style":475},[1503],{"type":23,"value":487},{"type":17,"tag":106,"props":1505,"children":1506},{"class":470,"line":490},[1507],{"type":17,"tag":106,"props":1508,"children":1509},{"style":475},[1510],{"type":23,"value":496},{"type":17,"tag":106,"props":1512,"children":1513},{"class":470,"line":499},[1514],{"type":17,"tag":106,"props":1515,"children":1516},{"style":475},[1517],{"type":23,"value":505},{"type":17,"tag":106,"props":1519,"children":1520},{"class":470,"line":508},[1521],{"type":17,"tag":106,"props":1522,"children":1523},{"style":475},[1524],{"type":23,"value":514},{"type":17,"tag":106,"props":1526,"children":1527},{"class":470,"line":517},[1528],{"type":17,"tag":106,"props":1529,"children":1530},{"style":475},[1531],{"type":23,"value":523},{"type":17,"tag":106,"props":1533,"children":1534},{"class":470,"line":526},[1535],{"type":17,"tag":106,"props":1536,"children":1537},{"style":475},[1538],{"type":23,"value":532},{"type":17,"tag":106,"props":1540,"children":1541},{"class":470,"line":535},[1542],{"type":17,"tag":106,"props":1543,"children":1544},{"style":475},[1545],{"type":23,"value":541},{"type":17,"tag":106,"props":1547,"children":1548},{"class":470,"line":544},[1549],{"type":17,"tag":106,"props":1550,"children":1551},{"style":475},[1552],{"type":23,"value":550},{"type":17,"tag":106,"props":1554,"children":1555},{"class":470,"line":553},[1556],{"type":17,"tag":106,"props":1557,"children":1558},{"style":475},[1559],{"type":23,"value":559},{"type":17,"tag":126,"props":1561,"children":1562},{"id":562},[1563],{"type":23,"value":565},{"type":17,"tag":133,"props":1565,"children":1566},{},[1567,1575,1583,1591],{"type":17,"tag":137,"props":1568,"children":1569},{},[1570,1574],{"type":17,"tag":32,"props":1571,"children":1572},{},[1573],{"type":23,"value":576},{"type":23,"value":578},{"type":17,"tag":137,"props":1576,"children":1577},{},[1578,1582],{"type":17,"tag":32,"props":1579,"children":1580},{},[1581],{"type":23,"value":586},{"type":23,"value":588},{"type":17,"tag":137,"props":1584,"children":1585},{},[1586,1590],{"type":17,"tag":32,"props":1587,"children":1588},{},[1589],{"type":23,"value":596},{"type":23,"value":598},{"type":17,"tag":137,"props":1592,"children":1593},{},[1594,1598],{"type":17,"tag":32,"props":1595,"children":1596},{},[1597],{"type":23,"value":606},{"type":23,"value":608},{"type":17,"tag":61,"props":1600,"children":1601},{},[],{"type":17,"tag":65,"props":1603,"children":1604},{"id":614},[1605],{"type":23,"value":617},{"type":17,"tag":26,"props":1607,"children":1608},{},[1609],{"type":23,"value":622},{"type":17,"tag":126,"props":1611,"children":1612},{"id":625},[1613,1614,1619],{"type":23,"value":628},{"type":17,"tag":38,"props":1615,"children":1617},{"className":1616},[],[1618],{"type":23,"value":634},{"type":23,"value":636},{"type":17,"tag":459,"props":1621,"children":1622},{"className":639,"code":640,"language":641,"meta":7,"style":7},[1623],{"type":17,"tag":38,"props":1624,"children":1625},{"__ignoreMap":7},[1626,1633,1640,1647,1654,1665,1676,1687,1698,1705,1712,1719,1734,1761,1792,1823,1846,1853,1868,1895,1926],{"type":17,"tag":106,"props":1627,"children":1628},{"class":470,"line":471},[1629],{"type":17,"tag":106,"props":1630,"children":1631},{"style":651},[1632],{"type":23,"value":654},{"type":17,"tag":106,"props":1634,"children":1635},{"class":470,"line":481},[1636],{"type":17,"tag":106,"props":1637,"children":1638},{"style":475},[1639],{"type":23,"value":662},{"type":17,"tag":106,"props":1641,"children":1642},{"class":470,"line":490},[1643],{"type":17,"tag":106,"props":1644,"children":1645},{"emptyLinePlaceholder":668},[1646],{"type":23,"value":671},{"type":17,"tag":106,"props":1648,"children":1649},{"class":470,"line":499},[1650],{"type":17,"tag":106,"props":1651,"children":1652},{"style":651},[1653],{"type":23,"value":679},{"type":17,"tag":106,"props":1655,"children":1656},{"class":470,"line":508},[1657,1661],{"type":17,"tag":106,"props":1658,"children":1659},{"style":685},[1660],{"type":23,"value":688},{"type":17,"tag":106,"props":1662,"children":1663},{"style":475},[1664],{"type":23,"value":693},{"type":17,"tag":106,"props":1666,"children":1667},{"class":470,"line":517},[1668,1672],{"type":17,"tag":106,"props":1669,"children":1670},{"style":685},[1671],{"type":23,"value":688},{"type":17,"tag":106,"props":1673,"children":1674},{"style":475},[1675],{"type":23,"value":705},{"type":17,"tag":106,"props":1677,"children":1678},{"class":470,"line":526},[1679,1683],{"type":17,"tag":106,"props":1680,"children":1681},{"style":685},[1682],{"type":23,"value":688},{"type":17,"tag":106,"props":1684,"children":1685},{"style":475},[1686],{"type":23,"value":717},{"type":17,"tag":106,"props":1688,"children":1689},{"class":470,"line":535},[1690,1694],{"type":17,"tag":106,"props":1691,"children":1692},{"style":685},[1693],{"type":23,"value":688},{"type":17,"tag":106,"props":1695,"children":1696},{"style":475},[1697],{"type":23,"value":729},{"type":17,"tag":106,"props":1699,"children":1700},{"class":470,"line":544},[1701],{"type":17,"tag":106,"props":1702,"children":1703},{"emptyLinePlaceholder":668},[1704],{"type":23,"value":671},{"type":17,"tag":106,"props":1706,"children":1707},{"class":470,"line":553},[1708],{"type":17,"tag":106,"props":1709,"children":1710},{"style":651},[1711],{"type":23,"value":744},{"type":17,"tag":106,"props":1713,"children":1714},{"class":470,"line":747},[1715],{"type":17,"tag":106,"props":1716,"children":1717},{"emptyLinePlaceholder":668},[1718],{"type":23,"value":671},{"type":17,"tag":106,"props":1720,"children":1721},{"class":470,"line":755},[1722,1726,1730],{"type":17,"tag":106,"props":1723,"children":1724},{"style":651},[1725],{"type":23,"value":761},{"type":17,"tag":106,"props":1727,"children":1728},{"style":475},[1729],{"type":23,"value":766},{"type":17,"tag":106,"props":1731,"children":1732},{"style":651},[1733],{"type":23,"value":771},{"type":17,"tag":106,"props":1735,"children":1736},{"class":470,"line":774},[1737,1741,1745,1749,1753,1757],{"type":17,"tag":106,"props":1738,"children":1739},{"style":685},[1740],{"type":23,"value":688},{"type":17,"tag":106,"props":1742,"children":1743},{"style":782},[1744],{"type":23,"value":785},{"type":17,"tag":106,"props":1746,"children":1747},{"style":788},[1748],{"type":23,"value":791},{"type":17,"tag":106,"props":1750,"children":1751},{"style":782},[1752],{"type":23,"value":796},{"type":17,"tag":106,"props":1754,"children":1755},{"style":475},[1756],{"type":23,"value":801},{"type":17,"tag":106,"props":1758,"children":1759},{"style":782},[1760],{"type":23,"value":806},{"type":17,"tag":106,"props":1762,"children":1763},{"class":470,"line":809},[1764,1768,1772,1776,1780,1784,1788],{"type":17,"tag":106,"props":1765,"children":1766},{"style":685},[1767],{"type":23,"value":688},{"type":17,"tag":106,"props":1769,"children":1770},{"style":782},[1771],{"type":23,"value":785},{"type":17,"tag":106,"props":1773,"children":1774},{"style":788},[1775],{"type":23,"value":823},{"type":17,"tag":106,"props":1777,"children":1778},{"style":782},[1779],{"type":23,"value":796},{"type":17,"tag":106,"props":1781,"children":1782},{"style":475},[1783],{"type":23,"value":801},{"type":17,"tag":106,"props":1785,"children":1786},{"style":782},[1787],{"type":23,"value":836},{"type":17,"tag":106,"props":1789,"children":1790},{"style":475},[1791],{"type":23,"value":841},{"type":17,"tag":106,"props":1793,"children":1794},{"class":470,"line":844},[1795,1799,1803,1807,1811,1815,1819],{"type":17,"tag":106,"props":1796,"children":1797},{"style":685},[1798],{"type":23,"value":688},{"type":17,"tag":106,"props":1800,"children":1801},{"style":782},[1802],{"type":23,"value":785},{"type":17,"tag":106,"props":1804,"children":1805},{"style":788},[1806],{"type":23,"value":858},{"type":17,"tag":106,"props":1808,"children":1809},{"style":782},[1810],{"type":23,"value":796},{"type":17,"tag":106,"props":1812,"children":1813},{"style":475},[1814],{"type":23,"value":867},{"type":17,"tag":106,"props":1816,"children":1817},{"style":782},[1818],{"type":23,"value":872},{"type":17,"tag":106,"props":1820,"children":1821},{"style":475},[1822],{"type":23,"value":877},{"type":17,"tag":106,"props":1824,"children":1825},{"class":470,"line":880},[1826,1830,1834,1838,1842],{"type":17,"tag":106,"props":1827,"children":1828},{"style":685},[1829],{"type":23,"value":688},{"type":17,"tag":106,"props":1831,"children":1832},{"style":782},[1833],{"type":23,"value":785},{"type":17,"tag":106,"props":1835,"children":1836},{"style":788},[1837],{"type":23,"value":894},{"type":17,"tag":106,"props":1839,"children":1840},{"style":782},[1841],{"type":23,"value":796},{"type":17,"tag":106,"props":1843,"children":1844},{"style":475},[1845],{"type":23,"value":903},{"type":17,"tag":106,"props":1847,"children":1848},{"class":470,"line":906},[1849],{"type":17,"tag":106,"props":1850,"children":1851},{"emptyLinePlaceholder":668},[1852],{"type":23,"value":671},{"type":17,"tag":106,"props":1854,"children":1855},{"class":470,"line":914},[1856,1860,1864],{"type":17,"tag":106,"props":1857,"children":1858},{"style":651},[1859],{"type":23,"value":920},{"type":17,"tag":106,"props":1861,"children":1862},{"style":475},[1863],{"type":23,"value":925},{"type":17,"tag":106,"props":1865,"children":1866},{"style":651},[1867],{"type":23,"value":930},{"type":17,"tag":106,"props":1869,"children":1870},{"class":470,"line":933},[1871,1875,1879,1883,1887,1891],{"type":17,"tag":106,"props":1872,"children":1873},{"style":685},[1874],{"type":23,"value":688},{"type":17,"tag":106,"props":1876,"children":1877},{"style":782},[1878],{"type":23,"value":785},{"type":17,"tag":106,"props":1880,"children":1881},{"style":788},[1882],{"type":23,"value":791},{"type":17,"tag":106,"props":1884,"children":1885},{"style":782},[1886],{"type":23,"value":796},{"type":17,"tag":106,"props":1888,"children":1889},{"style":475},[1890],{"type":23,"value":801},{"type":17,"tag":106,"props":1892,"children":1893},{"style":782},[1894],{"type":23,"value":959},{"type":17,"tag":106,"props":1896,"children":1897},{"class":470,"line":962},[1898,1902,1906,1910,1914,1918,1922],{"type":17,"tag":106,"props":1899,"children":1900},{"style":685},[1901],{"type":23,"value":688},{"type":17,"tag":106,"props":1903,"children":1904},{"style":782},[1905],{"type":23,"value":785},{"type":17,"tag":106,"props":1907,"children":1908},{"style":788},[1909],{"type":23,"value":823},{"type":17,"tag":106,"props":1911,"children":1912},{"style":782},[1913],{"type":23,"value":796},{"type":17,"tag":106,"props":1915,"children":1916},{"style":475},[1917],{"type":23,"value":801},{"type":17,"tag":106,"props":1919,"children":1920},{"style":782},[1921],{"type":23,"value":988},{"type":17,"tag":106,"props":1923,"children":1924},{"style":475},[1925],{"type":23,"value":993},{"type":17,"tag":106,"props":1927,"children":1928},{"class":470,"line":996},[1929,1933,1937,1941,1945],{"type":17,"tag":106,"props":1930,"children":1931},{"style":685},[1932],{"type":23,"value":688},{"type":17,"tag":106,"props":1934,"children":1935},{"style":782},[1936],{"type":23,"value":785},{"type":17,"tag":106,"props":1938,"children":1939},{"style":788},[1940],{"type":23,"value":858},{"type":17,"tag":106,"props":1942,"children":1943},{"style":782},[1944],{"type":23,"value":796},{"type":17,"tag":106,"props":1946,"children":1947},{"style":475},[1948],{"type":23,"value":1018},{"type":17,"tag":61,"props":1950,"children":1951},{},[],{"type":17,"tag":65,"props":1953,"children":1954},{"id":1024},[1955],{"type":23,"value":1027},{"type":17,"tag":26,"props":1957,"children":1958},{},[1959],{"type":23,"value":1032},{"type":17,"tag":459,"props":1961,"children":1962},{"className":1035,"code":1036,"language":1037,"meta":7,"style":7},[1963],{"type":17,"tag":38,"props":1964,"children":1965},{"__ignoreMap":7},[1966,1973],{"type":17,"tag":106,"props":1967,"children":1968},{"class":470,"line":471},[1969],{"type":17,"tag":106,"props":1970,"children":1971},{"style":1047},[1972],{"type":23,"value":1050},{"type":17,"tag":106,"props":1974,"children":1975},{"class":470,"line":481},[1976,1980,1984,1988,1992],{"type":17,"tag":106,"props":1977,"children":1978},{"style":1056},[1979],{"type":23,"value":1059},{"type":17,"tag":106,"props":1981,"children":1982},{"style":1062},[1983],{"type":23,"value":1065},{"type":17,"tag":106,"props":1985,"children":1986},{"style":1062},[1987],{"type":23,"value":1070},{"type":17,"tag":106,"props":1989,"children":1990},{"style":1073},[1991],{"type":23,"value":1076},{"type":17,"tag":106,"props":1993,"children":1994},{"style":1073},[1995],{"type":23,"value":1081},{"type":17,"tag":99,"props":1997,"children":1998},{},[1999],{"type":17,"tag":26,"props":2000,"children":2001},{},[2002,2006,2010,2011,2016],{"type":17,"tag":106,"props":2003,"children":2004},{},[2005],{"type":23,"value":1092},{"type":17,"tag":32,"props":2007,"children":2008},{},[2009],{"type":23,"value":1097},{"type":23,"value":1099},{"type":17,"tag":38,"props":2012,"children":2014},{"className":2013},[],[2015],{"type":23,"value":1105},{"type":23,"value":1107},{"type":17,"tag":1109,"props":2018,"children":2019},{},[2020],{"type":23,"value":1113},{"title":7,"searchDepth":481,"depth":481,"links":2022},[2023,2026,2027,2030,2033],{"id":67,"depth":481,"text":1117,"children":2024},[2025],{"id":128,"depth":490,"text":131},{"id":193,"depth":481,"text":196},{"id":443,"depth":481,"text":446,"children":2028},[2029],{"id":562,"depth":490,"text":565},{"id":614,"depth":481,"text":617,"children":2031},[2032],{"id":625,"depth":490,"text":1127},{"id":1024,"depth":481,"text":1027},1788893805830]