Files
STM32F4-Base/docs/images/采样有效性位图与掩码.svg
wandering1 4c74cfa825 refactor(编号·批次二): 文档侧 194 处保护功能号改成功能名,定义表 7 张首格改语义标识
批次二文档半(道 gate-docs 执行)。先纠三个数的口径账,别再拿任何旧数当准:**234 处是准数** —— 卡片写
52(Lead 用了门禁 Checker 的引用集合,它**刻意排除属主文档内部的定义位**)、道里先报 265(裸正则把
`SDL2-2.32.10` 里的 `L2-2` 当成功能号,误报 10 处)。最终边界口径 = 带左边界 + 跳过反引号代码段。

· 19 只文件 HEAD 共 234 处 → 现 40 处,**40 处 100% 落在变更记录行**(冻结历史,按 Q3 一条没动),
  非变更记录残留 **0**;改写 163 行 / 16 只文档。站点最多:规划文档 110→37、相量层单测说明 25→1、
  采集与数据处理短板评测 21→0、App/algo/README 26→0。
  (`App/algo/README.md` 由上一笔代码提交带上车,路径归属已在该笔正文注明,内容是本批改写)
· **定义表首列由编号改成语义标识**(编号规范 §3.3「表首格就是短语」的完全形态):首列原为编号的表
  共 **7 张**(不是 5 张),删掉与之重复的「语义名」列;表头标签按域词区分——三张 L3 保护**元件**表
  保留 `| 元件 |`,四张 L1/L2 表用 `| 功能名 |`(把「元件」统一洗成功能名会丢掉领域信息)。
  七张表逐张核:表头竖线数 == 分隔行 == 首条数据行 == 列数+1;与 HEAD 逐块对拍**净新增不一致块 0**,
  并且正是这个对拍抓到第一版「三张表数据行已删列、表头没删」的破表。
· 7 处删号留下的残词/重复解释括号人工收口(如「L1-5(通道标定)」→「通道标定(一次系数 + 零漂)」),
  复扫待收口站点 0;措辞逐字取自映射表,无第二种说法。
· tools/arch_diagram 三只生成器 4 处(3 处 docstring + 1 处图形文案)与产物同批:重跑后**只有位图那张
  变 2 个 text 节点的换行位置**,画布 1580x740 与总行数不变,另两张逐字节未变;改前先干跑对照证明三张
  svg 原本与生成器一致(不在 stale 基线里)——`check_generated_fresh --only docs-svg` PASS。

本笔另含 **F-* 半批的文档面**(同一轮 `git add docs tools/arch_diagram AGENTS.md` 一并收进
,非误伤):BSD
函数调用关系里 9 处反引号紧邻指针、属主文档 §7 的停发句与导读行(**12 条定义行原样保留、不删登记族**)、
以及 `gen_net_instability_svg.py` 与它的产物 `网络不稳根因总览.svg`(「唯一读者红线」那条的框宽自适应
526 → 551,右缘 1411 未越界,画布 1560x1468 不变)——该半批的**代码注释面**在下一笔。

⚠ 因 `docs/任务规划/登记簿.md` 与 `docs/任务规划/UI补齐.md` 正被另一张卡(UI 叶数复核)改动,本笔**不含
那两只文件**,批次二的 §9 存量收尾与它们同批提交。
2026-10-27 09:05:24 +08:00

241 lines
21 KiB
XML
Raw Permalink 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.
<svg xmlns="http://www.w3.org/2000/svg" width="1580" height="740" viewBox="0 0 1580 740" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif">
<text x="40" y="44" font-size="21" font-weight="700" fill="#0f172a">采样有效性校验 · 出口位图与消费者掩码(逐位对齐)</text>
<text x="40" y="70" font-size="13" fill="#64748b">同一 bit 在三张位图与四个掩码里始终落在同一列:位号对齐 = 消费者可以位图代打表</text>
<rect x="0" y="0" width="1580" height="740" fill="#ffffff"/>
<text x="40" y="178" font-size="12" font-weight="700" fill="#334155">判定层写出的三张位图(adc_health.c)</text>
<text x="40" y="220" font-size="12" font-weight="700" fill="#0f172a">flags 电平位</text>
<text x="40" y="238" font-size="10" fill="#64748b">adc_health_flags(),当前活跃</text>
<rect x="310" y="200" width="94" height="46" rx="8" fill="#f0fdfa" stroke="#0d9488" stroke-opacity="0.55"/>
<text x="320" y="219" font-size="11" font-weight="700" fill="#0d9488">bit0</text>
<text x="320" y="236" font-size="10" fill="#334155">TPAFE_STALL</text>
<rect x="408" y="200" width="94" height="46" rx="8" fill="#f0fdfa" stroke="#0d9488" stroke-opacity="0.55"/>
<text x="418" y="219" font-size="11" font-weight="700" fill="#0d9488">bit1</text>
<text x="418" y="236" font-size="10" fill="#334155">STM32_STALL</text>
<rect x="506" y="200" width="94" height="46" rx="8" fill="#fff1f2" stroke="#e11d48" stroke-opacity="0.55"/>
<text x="516" y="219" font-size="11" font-weight="700" fill="#e11d48">bit2</text>
<text x="516" y="236" font-size="10" fill="#334155">SEQ_BACKWARD</text>
<rect x="604" y="200" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="614" y="219" font-size="11" font-weight="700" fill="#94a3b8">bit3</text>
<text x="614" y="236" font-size="10" fill="#334155">—</text>
<rect x="702" y="200" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="712" y="219" font-size="11" font-weight="700" fill="#94a3b8">bit4</text>
<text x="712" y="236" font-size="10" fill="#334155">—</text>
<rect x="800" y="200" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="810" y="219" font-size="11" font-weight="700" fill="#94a3b8">bit5</text>
<text x="810" y="236" font-size="10" fill="#334155">—</text>
<rect x="898" y="200" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="908" y="219" font-size="11" font-weight="700" fill="#94a3b8">bit6</text>
<text x="908" y="236" font-size="10" fill="#334155">—</text>
<rect x="996" y="200" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="1006" y="219" font-size="11" font-weight="700" fill="#94a3b8">bit7</text>
<text x="1006" y="236" font-size="10" fill="#334155">—</text>
<rect x="1094" y="200" width="94" height="46" rx="8" fill="#f0fdfa" stroke="#0d9488" stroke-opacity="0.55"/>
<text x="1104" y="219" font-size="11" font-weight="700" fill="#0d9488">bit8</text>
<text x="1104" y="236" font-size="10" fill="#334155">STALE</text>
<rect x="1204" y="200" width="320" height="46" rx="8" fill="#f8fafc" stroke="#64748b" stroke-opacity="0.25"/>
<text x="1216" y="217" font-size="11" fill="#475569">protectTask 每 20 ms 读它做自检失败闭锁;bit8 </text>
<text x="1216" y="232" font-size="11" fill="#475569">由本任务自己判老后 OR 入(判定层不写)</text>
<text x="40" y="276" font-size="12" font-weight="700" fill="#0f172a">sticky 锁存位</text>
<text x="40" y="294" font-size="10" fill="#64748b">adc_health_sticky(),直到 init 才清</text>
<rect x="310" y="256" width="94" height="46" rx="8" fill="#fff1f2" stroke="#e11d48" stroke-opacity="0.55"/>
<text x="320" y="275" font-size="11" font-weight="700" fill="#e11d48">bit0</text>
<text x="320" y="292" font-size="10" fill="#334155">TPAFE_STALL</text>
<rect x="408" y="256" width="94" height="46" rx="8" fill="#fff1f2" stroke="#e11d48" stroke-opacity="0.55"/>
<text x="418" y="275" font-size="11" font-weight="700" fill="#e11d48">bit1</text>
<text x="418" y="292" font-size="10" fill="#334155">STM32_STALL</text>
<rect x="506" y="256" width="94" height="46" rx="8" fill="#fff1f2" stroke="#e11d48" stroke-opacity="0.55"/>
<text x="516" y="275" font-size="11" font-weight="700" fill="#e11d48">bit2</text>
<text x="516" y="292" font-size="10" fill="#334155">SEQ_BACKWARD</text>
<rect x="604" y="256" width="94" height="46" rx="8" fill="#fff1f2" stroke="#e11d48" stroke-opacity="0.55"/>
<text x="614" y="275" font-size="11" font-weight="700" fill="#e11d48">bit3</text>
<text x="614" y="292" font-size="10" fill="#334155">FRSTDATA</text>
<rect x="702" y="256" width="94" height="46" rx="8" fill="#fff1f2" stroke="#e11d48" stroke-opacity="0.55"/>
<text x="712" y="275" font-size="11" font-weight="700" fill="#e11d48">bit4</text>
<text x="712" y="292" font-size="10" fill="#334155">STM32_ERR</text>
<rect x="800" y="256" width="94" height="46" rx="8" fill="#fff1f2" stroke="#e11d48" stroke-opacity="0.55"/>
<text x="810" y="275" font-size="11" font-weight="700" fill="#e11d48">bit5</text>
<text x="810" y="292" font-size="10" fill="#334155">HW_ERR</text>
<rect x="898" y="256" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="908" y="275" font-size="11" font-weight="700" fill="#94a3b8">bit6</text>
<text x="908" y="292" font-size="10" fill="#334155">不入锁存</text>
<rect x="996" y="256" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="1006" y="275" font-size="11" font-weight="700" fill="#94a3b8">bit7</text>
<text x="1006" y="292" font-size="10" fill="#334155">不入锁存</text>
<rect x="1094" y="256" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="1104" y="275" font-size="11" font-weight="700" fill="#94a3b8">bit8</text>
<text x="1104" y="292" font-size="10" fill="#334155">不入锁存</text>
<rect x="1204" y="256" width="320" height="46" rx="8" fill="#f8fafc" stroke="#64748b" stroke-opacity="0.25"/>
<text x="1216" y="281" font-size="11" fill="#475569">只留痕不闭锁:曾停摆/曾出错必须可追溯</text>
<text x="40" y="332" font-size="12" font-weight="700" fill="#0f172a">events 事件位</text>
<text x="40" y="350" font-size="10" fill="#64748b">adc_health_check() 出参,仅当拍有效</text>
<rect x="310" y="312" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="320" y="331" font-size="11" font-weight="700" fill="#94a3b8">bit0</text>
<text x="320" y="348" font-size="10" fill="#334155">—</text>
<rect x="408" y="312" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="418" y="331" font-size="11" font-weight="700" fill="#94a3b8">bit1</text>
<text x="418" y="348" font-size="10" fill="#334155">—</text>
<rect x="506" y="312" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="516" y="331" font-size="11" font-weight="700" fill="#94a3b8">bit2</text>
<text x="516" y="348" font-size="10" fill="#334155">—</text>
<rect x="604" y="312" width="94" height="46" rx="8" fill="#fffbeb" stroke="#d97706" stroke-opacity="0.55"/>
<text x="614" y="331" font-size="11" font-weight="700" fill="#d97706">bit3</text>
<text x="614" y="348" font-size="10" fill="#334155">FRSTDATA</text>
<rect x="702" y="312" width="94" height="46" rx="8" fill="#fffbeb" stroke="#d97706" stroke-opacity="0.55"/>
<text x="712" y="331" font-size="11" font-weight="700" fill="#d97706">bit4</text>
<text x="712" y="348" font-size="10" fill="#334155">STM32_ERR</text>
<rect x="800" y="312" width="94" height="46" rx="8" fill="#fffbeb" stroke="#d97706" stroke-opacity="0.55"/>
<text x="810" y="331" font-size="11" font-weight="700" fill="#d97706">bit5</text>
<text x="810" y="348" font-size="10" fill="#334155">HW_ERR</text>
<rect x="898" y="312" width="94" height="46" rx="8" fill="#fffbeb" stroke="#d97706" stroke-opacity="0.55"/>
<text x="908" y="331" font-size="11" font-weight="700" fill="#d97706">bit6</text>
<text x="908" y="348" font-size="10" fill="#334155">TPAFE_GAP</text>
<rect x="996" y="312" width="94" height="46" rx="8" fill="#fffbeb" stroke="#d97706" stroke-opacity="0.55"/>
<text x="1006" y="331" font-size="11" font-weight="700" fill="#d97706">bit7</text>
<text x="1006" y="348" font-size="10" fill="#334155">STM32_GAP</text>
<rect x="1094" y="312" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="1104" y="331" font-size="11" font-weight="700" fill="#94a3b8">bit8</text>
<text x="1104" y="348" font-size="10" fill="#334155">—</text>
<rect x="1204" y="312" width="320" height="46" rx="8" fill="#f8fafc" stroke="#64748b" stroke-opacity="0.25"/>
<text x="1216" y="337" font-size="11" fill="#475569">adc_health_report() 的唯一输入:按位分三级处置</text>
<text x="40" y="394" font-size="12" font-weight="700" fill="#334155">消费者侧的掩码与记忆位图</text>
<text x="40" y="436" font-size="12" font-weight="700" fill="#0f172a">PROT_HF_LOCK_MASK</text>
<text x="40" y="454" font-size="10" fill="#64748b">protect_task.c 编译期常量</text>
<rect x="310" y="416" width="94" height="46" rx="8" fill="#f5f3ff" stroke="#7c3aed" stroke-opacity="0.55"/>
<text x="320" y="435" font-size="11" font-weight="700" fill="#7c3aed">bit0</text>
<text x="320" y="452" font-size="10" fill="#334155">闭锁</text>
<rect x="408" y="416" width="94" height="46" rx="8" fill="#f5f3ff" stroke="#7c3aed" stroke-opacity="0.55"/>
<text x="418" y="435" font-size="11" font-weight="700" fill="#7c3aed">bit1</text>
<text x="418" y="452" font-size="10" fill="#334155">闭锁</text>
<rect x="506" y="416" width="94" height="46" rx="8" fill="#f5f3ff" stroke="#7c3aed" stroke-opacity="0.55"/>
<text x="516" y="435" font-size="11" font-weight="700" fill="#7c3aed">bit2</text>
<text x="516" y="452" font-size="10" fill="#334155">闭锁</text>
<rect x="604" y="416" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="614" y="435" font-size="11" font-weight="700" fill="#94a3b8">bit3</text>
<text x="614" y="452" font-size="10" fill="#334155">不闭锁</text>
<rect x="702" y="416" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="712" y="435" font-size="11" font-weight="700" fill="#94a3b8">bit4</text>
<text x="712" y="452" font-size="10" fill="#334155">不闭锁</text>
<rect x="800" y="416" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="810" y="435" font-size="11" font-weight="700" fill="#94a3b8">bit5</text>
<text x="810" y="452" font-size="10" fill="#334155">不闭锁</text>
<rect x="898" y="416" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="908" y="435" font-size="11" font-weight="700" fill="#94a3b8">bit6</text>
<text x="908" y="452" font-size="10" fill="#334155">—</text>
<rect x="996" y="416" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="1006" y="435" font-size="11" font-weight="700" fill="#94a3b8">bit7</text>
<text x="1006" y="452" font-size="10" fill="#334155">—</text>
<rect x="1094" y="416" width="94" height="46" rx="8" fill="#f5f3ff" stroke="#7c3aed" stroke-opacity="0.55"/>
<text x="1104" y="435" font-size="11" font-weight="700" fill="#7c3aed">bit8</text>
<text x="1104" y="452" font-size="10" fill="#334155">闭锁</text>
<rect x="1204" y="416" width="320" height="46" rx="8" fill="#f8fafc" stroke="#64748b" stroke-opacity="0.25"/>
<text x="1216" y="433" font-size="11" fill="#475569">命中即 prot_elm_init() 复位元件 + 本拍不 eval;</text>
<text x="1216" y="448" font-size="11" fill="#475569">SOE 5/6 带位图</text>
<text x="40" y="492" font-size="12" font-weight="700" fill="#0f172a">serious 严重事件</text>
<text x="40" y="510" font-size="10" fill="#64748b">adc_task.c 的 adc_health_report()</text>
<rect x="310" y="472" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="320" y="491" font-size="11" font-weight="700" fill="#94a3b8">bit0</text>
<text x="320" y="508" font-size="10" fill="#334155">—</text>
<rect x="408" y="472" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="418" y="491" font-size="11" font-weight="700" fill="#94a3b8">bit1</text>
<text x="418" y="508" font-size="10" fill="#334155">—</text>
<rect x="506" y="472" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="516" y="491" font-size="11" font-weight="700" fill="#94a3b8">bit2</text>
<text x="516" y="508" font-size="10" fill="#334155">—</text>
<rect x="604" y="472" width="94" height="46" rx="8" fill="#f5f3ff" stroke="#7c3aed" stroke-opacity="0.55"/>
<text x="614" y="491" font-size="11" font-weight="700" fill="#7c3aed">bit3</text>
<text x="614" y="508" font-size="10" fill="#334155">FRSTDATA</text>
<rect x="702" y="472" width="94" height="46" rx="8" fill="#f5f3ff" stroke="#7c3aed" stroke-opacity="0.55"/>
<text x="712" y="491" font-size="11" font-weight="700" fill="#7c3aed">bit4</text>
<text x="712" y="508" font-size="10" fill="#334155">STM32_ERR</text>
<rect x="800" y="472" width="94" height="46" rx="8" fill="#f5f3ff" stroke="#7c3aed" stroke-opacity="0.55"/>
<text x="810" y="491" font-size="11" font-weight="700" fill="#7c3aed">bit5</text>
<text x="810" y="508" font-size="10" fill="#334155">HW_ERR</text>
<rect x="898" y="472" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="908" y="491" font-size="11" font-weight="700" fill="#94a3b8">bit6</text>
<text x="908" y="508" font-size="10" fill="#334155">—</text>
<rect x="996" y="472" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="1006" y="491" font-size="11" font-weight="700" fill="#94a3b8">bit7</text>
<text x="1006" y="508" font-size="10" fill="#334155">—</text>
<rect x="1094" y="472" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="1104" y="491" font-size="11" font-weight="700" fill="#94a3b8">bit8</text>
<text x="1104" y="508" font-size="10" fill="#334155">—</text>
<rect x="1204" y="472" width="320" height="46" rx="8" fill="#f8fafc" stroke="#64748b" stroke-opacity="0.25"/>
<text x="1216" y="497" font-size="11" fill="#475569">三类计数增量恒应为 0 → 每次 DBG_ERROR + 自检留痕</text>
<text x="40" y="548" font-size="12" font-weight="700" fill="#0f172a">gap 丢帧事件</text>
<text x="40" y="566" font-size="10" fill="#64748b">同一函数里的丢帧分支</text>
<rect x="310" y="528" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="320" y="547" font-size="11" font-weight="700" fill="#94a3b8">bit0</text>
<text x="320" y="564" font-size="10" fill="#334155">—</text>
<rect x="408" y="528" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="418" y="547" font-size="11" font-weight="700" fill="#94a3b8">bit1</text>
<text x="418" y="564" font-size="10" fill="#334155">—</text>
<rect x="506" y="528" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="516" y="547" font-size="11" font-weight="700" fill="#94a3b8">bit2</text>
<text x="516" y="564" font-size="10" fill="#334155">—</text>
<rect x="604" y="528" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="614" y="547" font-size="11" font-weight="700" fill="#94a3b8">bit3</text>
<text x="614" y="564" font-size="10" fill="#334155">—</text>
<rect x="702" y="528" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="712" y="547" font-size="11" font-weight="700" fill="#94a3b8">bit4</text>
<text x="712" y="564" font-size="10" fill="#334155">—</text>
<rect x="800" y="528" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="810" y="547" font-size="11" font-weight="700" fill="#94a3b8">bit5</text>
<text x="810" y="564" font-size="10" fill="#334155">—</text>
<rect x="898" y="528" width="94" height="46" rx="8" fill="#f5f3ff" stroke="#7c3aed" stroke-opacity="0.55"/>
<text x="908" y="547" font-size="11" font-weight="700" fill="#7c3aed">bit6</text>
<text x="908" y="564" font-size="10" fill="#334155">TPAFE_GAP</text>
<rect x="996" y="528" width="94" height="46" rx="8" fill="#f5f3ff" stroke="#7c3aed" stroke-opacity="0.55"/>
<text x="1006" y="547" font-size="11" font-weight="700" fill="#7c3aed">bit7</text>
<text x="1006" y="564" font-size="10" fill="#334155">STM32_GAP</text>
<rect x="1094" y="528" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="1104" y="547" font-size="11" font-weight="700" fill="#94a3b8">bit8</text>
<text x="1104" y="564" font-size="10" fill="#334155">—</text>
<rect x="1204" y="528" width="320" height="46" rx="8" fill="#f8fafc" stroke="#64748b" stroke-opacity="0.25"/>
<text x="1216" y="545" font-size="11" fill="#475569">刻意不告警:超拍是常态(启动突发期即累计 23 次),</text>
<text x="1216" y="560" font-size="11" fill="#475569">只累计</text>
<text x="40" y="604" font-size="12" font-weight="700" fill="#0f172a">s_health_logged</text>
<text x="40" y="622" font-size="10" fill="#64748b">编排层记忆位图(每类一次留痕)</text>
<rect x="310" y="584" width="94" height="46" rx="8" fill="#f5f3ff" stroke="#7c3aed" stroke-opacity="0.55"/>
<text x="320" y="603" font-size="11" font-weight="700" fill="#7c3aed">bit0</text>
<text x="320" y="620" font-size="10" fill="#334155">记过</text>
<rect x="408" y="584" width="94" height="46" rx="8" fill="#f5f3ff" stroke="#7c3aed" stroke-opacity="0.55"/>
<text x="418" y="603" font-size="11" font-weight="700" fill="#7c3aed">bit1</text>
<text x="418" y="620" font-size="10" fill="#334155">记过</text>
<rect x="506" y="584" width="94" height="46" rx="8" fill="#f5f3ff" stroke="#7c3aed" stroke-opacity="0.55"/>
<text x="516" y="603" font-size="11" font-weight="700" fill="#7c3aed">bit2</text>
<text x="516" y="620" font-size="10" fill="#334155">记过</text>
<rect x="604" y="584" width="94" height="46" rx="8" fill="#f5f3ff" stroke="#7c3aed" stroke-opacity="0.55"/>
<text x="614" y="603" font-size="11" font-weight="700" fill="#7c3aed">bit3</text>
<text x="614" y="620" font-size="10" fill="#334155">记过</text>
<rect x="702" y="584" width="94" height="46" rx="8" fill="#f5f3ff" stroke="#7c3aed" stroke-opacity="0.55"/>
<text x="712" y="603" font-size="11" font-weight="700" fill="#7c3aed">bit4</text>
<text x="712" y="620" font-size="10" fill="#334155">记过</text>
<rect x="800" y="584" width="94" height="46" rx="8" fill="#f5f3ff" stroke="#7c3aed" stroke-opacity="0.55"/>
<text x="810" y="603" font-size="11" font-weight="700" fill="#7c3aed">bit5</text>
<text x="810" y="620" font-size="10" fill="#334155">记过</text>
<rect x="898" y="584" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="908" y="603" font-size="11" font-weight="700" fill="#94a3b8">bit6</text>
<text x="908" y="620" font-size="10" fill="#334155">不记</text>
<rect x="996" y="584" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="1006" y="603" font-size="11" font-weight="700" fill="#94a3b8">bit7</text>
<text x="1006" y="620" font-size="10" fill="#334155">不记</text>
<rect x="1094" y="584" width="94" height="46" rx="8" fill="#f8fafc" stroke="#94a3b8" stroke-opacity="0.35"/>
<text x="1104" y="603" font-size="11" font-weight="700" fill="#94a3b8">bit8</text>
<text x="1104" y="620" font-size="10" fill="#334155">不记</text>
<rect x="1204" y="584" width="320" height="46" rx="8" fill="#f8fafc" stroke="#64748b" stroke-opacity="0.25"/>
<text x="1216" y="601" font-size="11" fill="#475569"> |= (serious | rise):用同一位号把 SYSLOG 压成</text>
<text x="1216" y="616" font-size="11" fill="#475569">每类每次开机一条</text>
<rect x="310" y="106" width="16" height="16" rx="4" fill="#f0fdfa" stroke="#0d9488" stroke-width="1.6"/>
<text x="332" y="118" font-size="12" fill="#475569">电平位(可自愈)</text>
<rect x="458" y="106" width="16" height="16" rx="4" fill="#fff1f2" stroke="#e11d48" stroke-width="1.6"/>
<text x="480" y="118" font-size="12" fill="#475569">锁存位(不自愈)</text>
<rect x="606" y="106" width="16" height="16" rx="4" fill="#fffbeb" stroke="#d97706" stroke-width="1.6"/>
<text x="628" y="118" font-size="12" fill="#475569">边沿事件位(仅当拍)</text>
<rect x="778" y="106" width="16" height="16" rx="4" fill="#f5f3ff" stroke="#7c3aed" stroke-width="1.6"/>
<text x="800" y="118" font-size="12" fill="#475569">消费者掩码命中 / 记忆位</text>
<rect x="970" y="106" width="16" height="16" rx="4" fill="#f8fafc" stroke="#94a3b8" stroke-width="1.6"/>
<text x="992" y="118" font-size="12" fill="#475569">不适用</text>
<rect x="40" y="682" width="1500" height="44" rx="10" fill="#fffbeb" stroke="#d97706" stroke-opacity="0.45"/>
<text x="56" y="709" font-size="11" fill="#7c2d12">bit3 / bit4 / bit5 在 events 与 sticky 中刻意用同一位号 → 消费者能把事件位直接套在锁存位图上做每类一次留痕;bit8 = 保护侧兜底门专用(判定层不写它)。详见 docs/算法/采样有效性校验设计说明.md</text>
</svg>