# Pre-Pass Audit Checklist (2026-07-13 练塘璞石+环保袋实战) When Doro asks to "审查workflow修改" before pass, use this checklist. ## Step 1: Identify WB vs Original Revisions ```python # In delivered docx: for ins in root.iter(f'{{{W}}}ins'): author = ins.get(f'{{{W}}}author') # WB = workflow's modifications (audit these) # Others (WB-1, 86187, 杨丽, etc.) = original file revisions (leave alone) ``` ## Step 2: Format Audit (per WB INS run) | Check | How | Common Fail | |-------|-----|-------------| | rFonts extra attrs | Compare WB INS rFonts with same-para orig run | hAnsi/cs/hint added by workflow | | sz mismatch | Compare sz values | Usually OK if same as orig | | pStyle on new headings | Compare with adjacent original headings | Style15 instead of Heading4 | | Heading spacing/ind | Must match original heading paragraphs | Missing before/after=0, ind | | Bold | If orig headings not bold, new ones shouldn't be | Usually OK | | Title space | "第七条转包" vs "第七条 转包" | Workflow adds space | ## Step 3: Content/Numbering Audit | Check | How | Common Fail | |-------|-----|-------------| | Sub-numbering顺延 | If 第七条→第八条, check 7.1→8.1 etc. | Workflow only changes chapter heading, forgets sub-numbers | | 赔偿上限20% | Bilateral caps limit our client's recovery | Workflow misses bilateral cap deletion | | Content dedup | Check if INS保密存续 duplicates existing text | Original may already have "义务不因...终止而免除" | | 编号冲突 | Original may already have duplicate numbers | Don't fix original numbering bugs (per rules) | ## Step 4: Global Checks - [ ] 脚注"法律顾问修订版" exists AND is in tracked change format (w:ins author=WB) - [ ] File naming: 【修】+ original filename unchanged - [ ] Read full accepted text for WB-introduced grammar issues - [ ] Original revisions (other authors) untouched ## Fix Patterns ### Sub-numbering (split across runs: "7" + ".1 ") Only need to DEL/INS the first digit run. Don't touch ".1 " run. ### Precise text deletion (P49 pattern) When deleting middle of a single large run: 1. Split run into: before_text | DEL_text | after_text 2. Create 3 elements: normal_run(before) + del_elem(middle) + normal_run(after) 3. Insert at original position ### Footer tracked change 1. Add footer text via python-docx 2. Re-open with zipfile, find footer XML 3. Wrap the text run in ``