docs: add unified S-52 root cause repair task
This commit is contained in:
721
docs/CM95_S52_剩余26个根因统一修复_Codex任务_v1.md
Normal file
721
docs/CM95_S52_剩余26个根因统一修复_Codex任务_v1.md
Normal file
@@ -0,0 +1,721 @@
|
|||||||
|
# CM95 S-52 剩余 26 个根因统一修复 Codex 任务 v1
|
||||||
|
|
||||||
|
## 1. 任务性质
|
||||||
|
|
||||||
|
这是一次 **统一修复任务**,不是新的审计任务,也不是继续拆成多个独立 Codex 任务。
|
||||||
|
|
||||||
|
当前已完成:
|
||||||
|
|
||||||
|
- OpenCPN Code-First S-52 等价审计;
|
||||||
|
- 206 条 branch 审计;
|
||||||
|
- 120 FAIL / 86 NOT_PROVEN;
|
||||||
|
- 120 FAIL 已归并为 38 个 Root Cause;
|
||||||
|
- Batch 1 已修复并提交 12 个低风险局部根因:
|
||||||
|
- RC-012
|
||||||
|
- RC-022
|
||||||
|
- RC-023
|
||||||
|
- RC-024
|
||||||
|
- RC-025
|
||||||
|
- RC-026
|
||||||
|
- RC-029
|
||||||
|
- RC-030
|
||||||
|
- RC-031
|
||||||
|
- RC-032
|
||||||
|
- RC-034
|
||||||
|
- RC-035
|
||||||
|
- Batch 1 提交:
|
||||||
|
- `f3047a3f06d2eac3f603dcb54646a60fdead2354`
|
||||||
|
- `fix: align local S-52 CSP decisions with OpenCPN`
|
||||||
|
|
||||||
|
本任务必须在 **同一次 Codex 工作流程中** 继续处理剩余 26 个根因:
|
||||||
|
|
||||||
|
- 25 个已确认代码根因;
|
||||||
|
- 1 个证据不足根因 RC-021。
|
||||||
|
|
||||||
|
不得把本任务退化为“只写规划”“只写报告”“只修一两个 RC 后停止”。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. 仓库与固定基线
|
||||||
|
|
||||||
|
仓库:
|
||||||
|
|
||||||
|
`/root/sourceserver/cm95`
|
||||||
|
|
||||||
|
分支:
|
||||||
|
|
||||||
|
`main`
|
||||||
|
|
||||||
|
本任务开始基线至少应包含:
|
||||||
|
|
||||||
|
`f3047a3f06d2eac3f603dcb54646a60fdead2354`
|
||||||
|
|
||||||
|
OpenCPN 固定参考:
|
||||||
|
|
||||||
|
`docs/外部参考/OpenCPN源码基线_f7211b4e/`
|
||||||
|
|
||||||
|
OpenCPN commit:
|
||||||
|
|
||||||
|
`f7211b4e1874c453e37a7f190aa191c55a25c32e`
|
||||||
|
|
||||||
|
主要审计输入:
|
||||||
|
|
||||||
|
- `docs/报告/CM95_S52_OpenCPN渲染流程对照审计报告_v2.md`
|
||||||
|
- `docs/CM95_S52_语义守恒与运行时能力审计标准_v2.md`
|
||||||
|
- `build/audits/cm95_s52_opencpn_code_first_equivalence_v2.json`
|
||||||
|
|
||||||
|
当前 Production Plan ID:
|
||||||
|
|
||||||
|
`57e72826db1d3e3e69f0b3b084bef4fb9469b5edc47dc0030fc2ec3e46adecf9`
|
||||||
|
|
||||||
|
当前正式 release:
|
||||||
|
|
||||||
|
`cm95-d1-62a85bd40d3a-57e72826db1d`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. 最高优先级约束
|
||||||
|
|
||||||
|
1. OpenCPN 固定源码是 Source of Truth。
|
||||||
|
2. 修的是 **完整 Rule Chain 等价性**,不是只让画面“看起来接近”。
|
||||||
|
3. 不得通过删除审计、放宽 Gate、改 FAIL 定义、跳过分支来获得 PASS。
|
||||||
|
4. 不得把 PREVIEW_ONLY 直接改成 IMPLEMENTED,除非对应 runtime consumer 确实完成并有可执行 witness。
|
||||||
|
5. 不得为了 DANGER53 发明 OpenCPN 中不存在的图形资源。
|
||||||
|
6. 不得修改与本任务无关的数据库/importer/Linux 环境文件。
|
||||||
|
7. 当前工作区已有无关未提交修改,必须在开始前记录 SHA-256,并在每个阶段结束后确认未变化。
|
||||||
|
8. 不得使用 `git add .`。
|
||||||
|
9. 所有阶段必须显式 stage 任务相关文件。
|
||||||
|
10. 无法证明时保守保留 FAIL / NOT_PROVEN,不允许猜测。
|
||||||
|
11. 截图只可作为最终视觉回归,不得作为主要逻辑验收依据。
|
||||||
|
12. 不要每修一个小点就做一次完整 5064 PBF 重扫;需要全量重建/重扫时集中到最终集成阶段一次完成。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. 剩余 26 个 Root Cause
|
||||||
|
|
||||||
|
### RC-001
|
||||||
|
**Python hazard resolvers return incomplete ordered nested instruction chains**
|
||||||
|
|
||||||
|
- Layer: NESTED_CSP_CHAIN
|
||||||
|
- Risk: MEDIUM
|
||||||
|
- 影响约 49 FAIL
|
||||||
|
- 目标:
|
||||||
|
- OBSTRN04/WRECKS02 恢复完整有序 nested suffix;
|
||||||
|
- QUAPNT01;
|
||||||
|
- OBJNAM TX;
|
||||||
|
- SOUNDG;
|
||||||
|
- WRECKS tail;
|
||||||
|
- 正确顺序守恒。
|
||||||
|
- 注意:Wk TX / WRECKS07 的 Python 生成能力已存在,不要重复归因。
|
||||||
|
|
||||||
|
### RC-002
|
||||||
|
**Scalar presentation hints do not preserve the executable mixed-opcode chain**
|
||||||
|
|
||||||
|
- Layer: INSTRUCTION_IR
|
||||||
|
- Risk: HIGH
|
||||||
|
- 影响约 20 FAIL
|
||||||
|
- 目标:
|
||||||
|
- 建立可执行、有序、带参数的 Rule Chain / Runtime Rule IR;
|
||||||
|
- 不能继续只依赖 first-per-kind scalar hints;
|
||||||
|
- initial Lookup + CSP composition 必须守恒;
|
||||||
|
- Web/runtime 可消费该 IR。
|
||||||
|
|
||||||
|
### RC-003
|
||||||
|
**Point hazard runtime emits one main symbol and depth text instead of the full chain**
|
||||||
|
|
||||||
|
- Layer: RUNTIME_EXECUTOR
|
||||||
|
- Risk: HIGH
|
||||||
|
- 影响约 26 FAIL
|
||||||
|
- 目标:
|
||||||
|
- Point hazard 执行完整 ordered chain;
|
||||||
|
- 不再只执行一个 SY + 普通 depth text;
|
||||||
|
- 支持 TX、nested Q、Wk/WRECKS07 等。
|
||||||
|
|
||||||
|
### RC-004
|
||||||
|
**Hazard runtime rejects line and area geometries before portrayal**
|
||||||
|
|
||||||
|
- Layer: RUNTIME_EXECUTOR
|
||||||
|
- Risk: HIGH
|
||||||
|
- 影响约 23 FAIL
|
||||||
|
- 目标:
|
||||||
|
- hazard runtime 支持 Point / Line / Area;
|
||||||
|
- LS / LC / AC / AP / SY / TX / SOUNDG 按顺序执行。
|
||||||
|
|
||||||
|
### RC-005
|
||||||
|
**Style compiler executes only the first LS despite a preserved line sequence**
|
||||||
|
|
||||||
|
- Layer: STYLE_COMPILER
|
||||||
|
- Risk: MEDIUM
|
||||||
|
- 影响约 1 FAIL
|
||||||
|
- 目标:
|
||||||
|
- 多 LS 顺序执行;
|
||||||
|
- QUALIN radar double-line 等组合不得丢失。
|
||||||
|
|
||||||
|
### RC-006
|
||||||
|
**LS style translation collapses DOTT to a solid stroke**
|
||||||
|
|
||||||
|
- Layer: STYLE_COMPILER
|
||||||
|
- Risk: MEDIUM
|
||||||
|
- 影响约 10 FAIL
|
||||||
|
- 目标:
|
||||||
|
- SOLD / DASH / DOTT 语义分离;
|
||||||
|
- 不能把 DOTT 退化成 solid。
|
||||||
|
|
||||||
|
### RC-007
|
||||||
|
**SOUNDG runtime substitutes ordinary text for the ordered sounding glyph renderer**
|
||||||
|
|
||||||
|
- Layer: RUNTIME_EXECUTOR
|
||||||
|
- Risk: HIGH
|
||||||
|
- 影响约 34 FAIL
|
||||||
|
- 目标:
|
||||||
|
- 实现真正 SOUNDG glyph composition;
|
||||||
|
- 支持 digit glyph、fraction/depth placement、quality/swept marks;
|
||||||
|
- standalone SOUNDG02 与 hazard nested SOUNDG03 共用。
|
||||||
|
|
||||||
|
### RC-008
|
||||||
|
**SOUNDG decisions have no feet/fathoms conversion and unit-specific rounding**
|
||||||
|
|
||||||
|
- Layer: MARINER_STATE
|
||||||
|
- Risk: MEDIUM
|
||||||
|
- 影响约 2 FAIL
|
||||||
|
- 目标:
|
||||||
|
- metres / feet / fathoms;
|
||||||
|
- safety depth 阈值同步转换;
|
||||||
|
- 单位特定 rounding 与 glyph 选择一致。
|
||||||
|
|
||||||
|
### RC-009
|
||||||
|
**Missing DANGER53 causes whole hazard feature rejection instead of resource fallback**
|
||||||
|
|
||||||
|
- Layer: RESOURCE_CONTRACT
|
||||||
|
- Risk: MEDIUM
|
||||||
|
- 影响约 1 FAIL
|
||||||
|
- 目标:
|
||||||
|
- DANGER53 缺失仍按 upstream resource missing 处理;
|
||||||
|
- 不得发明 DANGER53;
|
||||||
|
- 不能因此丢弃该 feature 的其他有效 ordered instructions。
|
||||||
|
|
||||||
|
### RC-010
|
||||||
|
**Runtime wreck isolated-danger decision ignores QUASOU containing 7**
|
||||||
|
|
||||||
|
- Layer: CSP_DECISION
|
||||||
|
- Risk: MEDIUM
|
||||||
|
- 影响约 3 FAIL
|
||||||
|
- 目标:
|
||||||
|
- runtime WRECKS 与 Python/OpenCPN 相同处理 QUASOU=7 guard。
|
||||||
|
|
||||||
|
### RC-011
|
||||||
|
**Wreck no-depth decision invents a symbol when required attributes are absent**
|
||||||
|
|
||||||
|
- Layer: CSP_DECISION
|
||||||
|
- Risk: MEDIUM
|
||||||
|
- 影响约 1 FAIL
|
||||||
|
- 目标:
|
||||||
|
- 保留 CATWRK/WATLEV source presence;
|
||||||
|
- 缺必要属性时不得发明 main symbol;
|
||||||
|
- Python 与 runtime 统一。
|
||||||
|
|
||||||
|
### RC-013
|
||||||
|
**Python UDWHAZ DisplayBase promotion also changes display priority**
|
||||||
|
|
||||||
|
- Layer: RENDER_ORDER_PRIORITY
|
||||||
|
- Risk: HIGH
|
||||||
|
- 影响约 2 FAIL
|
||||||
|
- 目标:
|
||||||
|
- DisplayBase category 与 display priority 解耦;
|
||||||
|
- 固定 upstream 中 UDWHAZ 不应顺带改变 DPRI。
|
||||||
|
|
||||||
|
### RC-014
|
||||||
|
**Runtime UDWHAZ does not propagate the DisplayBase category side effect**
|
||||||
|
|
||||||
|
- Layer: RUNTIME_EXECUTOR
|
||||||
|
- Risk: HIGH
|
||||||
|
- 影响约 2 FAIL
|
||||||
|
- 目标:
|
||||||
|
- runtime side effect 独立于是否输出 symbol;
|
||||||
|
- dry WATLEV 抑制 symbol 时仍保持正确 category side effect。
|
||||||
|
|
||||||
|
### RC-015
|
||||||
|
**Runtime DEPARE uses invalid supplied depth ranges without normalization**
|
||||||
|
|
||||||
|
- Layer: CSP_DECISION
|
||||||
|
- Risk: LOW
|
||||||
|
- 影响约 1 FAIL
|
||||||
|
- 目标:
|
||||||
|
- runtime 与 Python 相同处理 DRVAL2 <= DRVAL1。
|
||||||
|
|
||||||
|
### RC-016
|
||||||
|
**Runtime DRGARE fill path omits the dredged-area pattern and boundary suffix**
|
||||||
|
|
||||||
|
- Layer: RUNTIME_EXECUTOR
|
||||||
|
- Risk: MEDIUM
|
||||||
|
- 影响约 1 FAIL
|
||||||
|
- 目标:
|
||||||
|
- AC + AP(DRGARE01) + LS(DASH,1,CHGRF) 完整执行。
|
||||||
|
|
||||||
|
### RC-017
|
||||||
|
**DEPCNT safe-line generation bypasses SAFECD/SAFECN lookup instructions**
|
||||||
|
|
||||||
|
- Layer: NORMALIZATION_LOOKUP
|
||||||
|
- Risk: MEDIUM
|
||||||
|
- 影响约 2 FAIL
|
||||||
|
- 目标:
|
||||||
|
- 优先执行 SAFECD/SAFECN Lookup INST;
|
||||||
|
- fixed LS 只作为 lookup 缺失时 fallback。
|
||||||
|
|
||||||
|
### RC-018
|
||||||
|
**Runtime DEPCNT ignores quality-dependent dashed line selection**
|
||||||
|
|
||||||
|
- Layer: CSP_DECISION
|
||||||
|
- Risk: MEDIUM
|
||||||
|
- 影响约 2 FAIL
|
||||||
|
- 目标:
|
||||||
|
- QUAPOS 2..9 → DASH;
|
||||||
|
- runtime 与 resolver 一致。
|
||||||
|
|
||||||
|
### RC-019
|
||||||
|
**Safe DEPCNT side effects omit DisplayBase and SCAMIN override**
|
||||||
|
|
||||||
|
- Layer: MARINER_STATE
|
||||||
|
- Risk: HIGH
|
||||||
|
- 影响约 2 FAIL
|
||||||
|
- 目标:
|
||||||
|
- safe contour 正确传播 DisplayBase;
|
||||||
|
- SCAMIN override;
|
||||||
|
- 不额外改变 DPRI。
|
||||||
|
|
||||||
|
### RC-020
|
||||||
|
**DEPCNT nonzero unsupported QUAPOS falls through to an unwanted solid line**
|
||||||
|
|
||||||
|
- Layer: CSP_DECISION
|
||||||
|
- Risk: LOW
|
||||||
|
- 影响约 1 FAIL
|
||||||
|
- 目标:
|
||||||
|
- absent/zero QUAPOS 与 unsupported nonzero 分离;
|
||||||
|
- unsupported nonzero 不输出错误 solid line。
|
||||||
|
|
||||||
|
### RC-021
|
||||||
|
**UNKNOWN_ROOT_CAUSE: normal non-safe DEPCNT FAIL lacks branch-specific evidence**
|
||||||
|
|
||||||
|
- Layer: EVIDENCE_GAP
|
||||||
|
- Risk: UNKNOWN
|
||||||
|
- 影响 1 FAIL
|
||||||
|
- 目标:
|
||||||
|
- 建立 branch-specific executable witness;
|
||||||
|
- 若当前实现等价,则修正该 branch 的审计状态;
|
||||||
|
- 若 witness 找到真实缺陷,则在本任务中新增最小 RC 说明并修复;
|
||||||
|
- 不得为了清零 FAIL 强行改判。
|
||||||
|
|
||||||
|
### RC-027
|
||||||
|
**RESARE OP is materialized as a priority change absent in the fixed upstream parser**
|
||||||
|
|
||||||
|
- Layer: RENDER_ORDER_PRIORITY
|
||||||
|
- Risk: HIGH
|
||||||
|
- 影响约 18 FAIL
|
||||||
|
- 目标:
|
||||||
|
- 对固定 upstream 基线,OP 不得产生 upstream parser 不存在的 priority side effect;
|
||||||
|
- 保留 raw instruction 事实但不要错误改变 DPRI。
|
||||||
|
|
||||||
|
### RC-028
|
||||||
|
**RESARE boundary mode is frozen at materialization instead of being reselected**
|
||||||
|
|
||||||
|
- Layer: MARINER_STATE
|
||||||
|
- Risk: MEDIUM
|
||||||
|
- 影响约 20 FAIL
|
||||||
|
- 目标:
|
||||||
|
- symbolized/plain boundary mode 在 runtime/setting change 时可重选;
|
||||||
|
- 不冻结为构建时 profile。
|
||||||
|
|
||||||
|
### RC-033
|
||||||
|
**LIGHTS label emission lacks previous-position/description state**
|
||||||
|
|
||||||
|
- Layer: MARINER_STATE
|
||||||
|
- Risk: HIGH
|
||||||
|
- 影响约 10 FAIL
|
||||||
|
- 目标:
|
||||||
|
- 同位置同描述抑制重复;
|
||||||
|
- 同位置不同描述使用正确 offset;
|
||||||
|
- 状态只影响 label emission,不破坏 light geometry/arc。
|
||||||
|
|
||||||
|
### RC-036
|
||||||
|
**LIGHTS height description ignores the selected height unit**
|
||||||
|
|
||||||
|
- Layer: MARINER_STATE
|
||||||
|
- Risk: MEDIUM
|
||||||
|
- 影响约 1 FAIL
|
||||||
|
- 目标:
|
||||||
|
- metres/feet;
|
||||||
|
- feet 使用 HEIGHT / 0.3048 rounding;
|
||||||
|
- 与 OpenCPN LitDSN 语义一致。
|
||||||
|
|
||||||
|
### RC-037
|
||||||
|
**CA canvas renderer does not execute scale-dependent arc metrics and width**
|
||||||
|
|
||||||
|
- Layer: RUNTIME_EXECUTOR
|
||||||
|
- Risk: HIGH
|
||||||
|
- 影响约 5 FAIL
|
||||||
|
- 目标:
|
||||||
|
- 使用 s52_arc_width;
|
||||||
|
- scale/SCAMIN-dependent radius/width;
|
||||||
|
- bearing/pan/zoom/resize 后保持正确;
|
||||||
|
- 不回退成固定 CSS px/mm。
|
||||||
|
|
||||||
|
### RC-038
|
||||||
|
**Resolved CSP text bypasses structured text-hint materialization**
|
||||||
|
|
||||||
|
- Layer: PRESENTATION_MATERIALIZATION
|
||||||
|
- Risk: MEDIUM
|
||||||
|
- 影响约 6 FAIL
|
||||||
|
- 目标:
|
||||||
|
- resolved CSP TX/TE 进入结构化 text operands;
|
||||||
|
- 保留 placement、font、offset、color、group;
|
||||||
|
- 与 ordered Rule IR 兼容。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. 统一实施顺序
|
||||||
|
|
||||||
|
这是一个总任务,但内部必须按依赖顺序推进。
|
||||||
|
|
||||||
|
### 阶段 A:有序 Rule Chain 与 Presentation Contract
|
||||||
|
|
||||||
|
优先处理:
|
||||||
|
|
||||||
|
- RC-001
|
||||||
|
- RC-002
|
||||||
|
- RC-038
|
||||||
|
- RC-013
|
||||||
|
- RC-027
|
||||||
|
|
||||||
|
目标:
|
||||||
|
|
||||||
|
1. 完整 ordered chain 可表达;
|
||||||
|
2. initial Lookup + CSP expansion 不丢顺序;
|
||||||
|
3. TX/TE、SY、LS、LC、AC、AP、CA、OP/side effect 能保持参数;
|
||||||
|
4. category、priority、SCAMIN 等 side effect 与 drawing opcode 分离;
|
||||||
|
5. 不再由 first-per-kind scalar 字段承担完整执行语义。
|
||||||
|
|
||||||
|
完成后建立临时 witness:
|
||||||
|
|
||||||
|
- OBSTRN;
|
||||||
|
- WRECKS;
|
||||||
|
- RESARE;
|
||||||
|
- UDWHAZ;
|
||||||
|
- CSP-generated TX。
|
||||||
|
|
||||||
|
### 阶段 B:Lookup / CSP / Mariner 语义
|
||||||
|
|
||||||
|
处理:
|
||||||
|
|
||||||
|
- RC-008
|
||||||
|
- RC-010
|
||||||
|
- RC-011
|
||||||
|
- RC-015
|
||||||
|
- RC-017
|
||||||
|
- RC-018
|
||||||
|
- RC-019
|
||||||
|
- RC-020
|
||||||
|
- RC-028
|
||||||
|
- RC-036
|
||||||
|
- RC-021
|
||||||
|
|
||||||
|
RC-021 在本阶段必须先得到结论。
|
||||||
|
|
||||||
|
完成后建立临时 witness:
|
||||||
|
|
||||||
|
- SOUNDG units;
|
||||||
|
- WRECKS QUASOU/presence;
|
||||||
|
- DEPARE bad range;
|
||||||
|
- DEPCNT SAFECD/SAFECN + QUAPOS + category/SCAMIN;
|
||||||
|
- RESARE runtime boundary mode;
|
||||||
|
- LIGHTS height units;
|
||||||
|
- DC-OUT-ZERO-NORMAL。
|
||||||
|
|
||||||
|
### 阶段 C:Generic Runtime Rule Executor
|
||||||
|
|
||||||
|
处理:
|
||||||
|
|
||||||
|
- RC-003
|
||||||
|
- RC-004
|
||||||
|
- RC-005
|
||||||
|
- RC-006
|
||||||
|
- RC-009
|
||||||
|
- RC-014
|
||||||
|
- RC-016
|
||||||
|
|
||||||
|
目标:
|
||||||
|
|
||||||
|
1. Point / Line / Area 都能执行 ordered rules;
|
||||||
|
2. 多 SY、多 LS、TX、LC、AC、AP 不丢;
|
||||||
|
3. DOTT/DASH/SOLD 分离;
|
||||||
|
4. resource missing fail-closed 但不丢整个 chain;
|
||||||
|
5. side effect 可独立执行;
|
||||||
|
6. DRGARE suffix 完整。
|
||||||
|
|
||||||
|
不得在 Web runtime 再复制一套与 Python 不同的 OBSTRN/WRECKS 业务判断;应优先消费统一 IR/运行时事实。
|
||||||
|
|
||||||
|
### 阶段 D:Specialized Renderer / Stateful Renderer
|
||||||
|
|
||||||
|
处理:
|
||||||
|
|
||||||
|
- RC-007
|
||||||
|
- RC-033
|
||||||
|
- RC-037
|
||||||
|
|
||||||
|
目标:
|
||||||
|
|
||||||
|
- SOUNDG glyph renderer;
|
||||||
|
- LIGHTS previous-position/description state;
|
||||||
|
- CA scale-aware renderer。
|
||||||
|
|
||||||
|
这三项属于专用渲染能力,但必须挂在统一 Rule Executor / IR 上,不建立第三套业务规则。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. 允许修改范围
|
||||||
|
|
||||||
|
根据实际依赖,允许修改以下范围内与 26 RC 直接相关的文件:
|
||||||
|
|
||||||
|
- `src/cm95pbf/csp.py`
|
||||||
|
- `src/cm95pbf/presentation.py`
|
||||||
|
- `src/cm95pbf/s52.py`
|
||||||
|
- 与 ordered rule/runtime facts 直接相关的 `src/cm95pbf/` 文件
|
||||||
|
- `tools/cm95_s52_style_compiler.py`
|
||||||
|
- `tools/cm95_s52_runtime_capability_audit.py`
|
||||||
|
- 与本任务 Gate/审计输出直接相关的 S-52 audit 工具
|
||||||
|
- `config/s52/` 下 runtime capability / contract 配置
|
||||||
|
- `web/kyushu_compare.html`
|
||||||
|
- 必要的 S-52 PBF/runtime contract 定义
|
||||||
|
- 本任务产生的中文报告与机器审计 JSON
|
||||||
|
|
||||||
|
如果需要修改 PBF schema / runtime contract:
|
||||||
|
|
||||||
|
1. 先说明为什么 RC-002/side effect 无法在现有 schema 中守恒;
|
||||||
|
2. 只做最小必要变化;
|
||||||
|
3. 更新 schema/version/consumer;
|
||||||
|
4. 最终阶段统一做一次 production rebuild / release audit;
|
||||||
|
5. 不为局部 RC 单独重复全量 5064 PBF。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. 禁止修改范围
|
||||||
|
|
||||||
|
除非某个 Root Cause 有直接证据要求,否则不得修改:
|
||||||
|
|
||||||
|
- CM93 importer 数据库逻辑;
|
||||||
|
- MySQL 导入;
|
||||||
|
- Linux setup;
|
||||||
|
- 与 S-52 无关的 README;
|
||||||
|
- 与本任务无关的 production/importer 工具;
|
||||||
|
- NavSea;
|
||||||
|
- 任何与 CM95 S-52 portrayal 无关的模块。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. 每阶段验证
|
||||||
|
|
||||||
|
每个阶段结束必须:
|
||||||
|
|
||||||
|
1. 用临时 `/tmp` witness 精确验证本阶段 RC;
|
||||||
|
2. 检查语法/静态结构;
|
||||||
|
3. 运行现有相关非破坏性审计工具;
|
||||||
|
4. 对照 OpenCPN 固定源码;
|
||||||
|
5. 确认原工作区无关 SHA-256 未变化;
|
||||||
|
6. 记录哪些 branch 已具备重新判定条件;
|
||||||
|
7. 不得只凭函数实现“看起来正确”就关闭 FAIL。
|
||||||
|
|
||||||
|
阶段性提交允许,但必须显式 stage,仅包含本阶段任务文件。
|
||||||
|
|
||||||
|
建议提交信息:
|
||||||
|
|
||||||
|
- 阶段 A:`feat: preserve ordered S-52 runtime rule chains`
|
||||||
|
- 阶段 B:`fix: align S-52 lookup and mariner semantics`
|
||||||
|
- 阶段 C:`feat: execute ordered S-52 runtime rules`
|
||||||
|
- 阶段 D:`feat: complete S-52 sounding lights and arc runtime`
|
||||||
|
|
||||||
|
如实际文件耦合使阶段不能独立提交,可合并提交,但最终完成报告中必须按阶段列出修改。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9. 最终统一回归
|
||||||
|
|
||||||
|
所有代码根因处理完成后,必须重新执行 Code-First 等价审计。
|
||||||
|
|
||||||
|
至少重新验证:
|
||||||
|
|
||||||
|
- OPENCPN_FLOW_EQUIVALENCE
|
||||||
|
- CSP_BRANCH_EQUIVALENCE
|
||||||
|
- NESTED_CSP_CALL_GRAPH
|
||||||
|
- INSTRUCTION_SEQUENCE_EQUIVALENCE
|
||||||
|
- RUNTIME_OPCODE_COVERAGE
|
||||||
|
- REAL_DATA_BRANCH_COVERAGE
|
||||||
|
- RESOURCE_DEPENDENCY_EQUIVALENCE
|
||||||
|
- MARINER_DEPENDENCY_EQUIVALENCE
|
||||||
|
- RENDER_ORDER_EQUIVALENCE
|
||||||
|
- RENDER_CHAIN_CONSERVATION
|
||||||
|
|
||||||
|
必须重新生成 branch 状态统计。
|
||||||
|
|
||||||
|
禁止直接用:
|
||||||
|
|
||||||
|
`120 - “预计减少值”`
|
||||||
|
|
||||||
|
作为新 FAIL 数。
|
||||||
|
|
||||||
|
新 FAIL 数必须来自重新运行后的实际 branch audit。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 10. Production / PBF 全量重建策略
|
||||||
|
|
||||||
|
只有在以下情况之一发生时,最终阶段才做 production rebuild:
|
||||||
|
|
||||||
|
- ordered Rule IR 新字段进入 PBF;
|
||||||
|
- runtime facts contract 改变;
|
||||||
|
- presentation materialization 输出发生发布数据变化;
|
||||||
|
- style compiler 需要新的 PBF property;
|
||||||
|
- release Gate 需要验证新 contract。
|
||||||
|
|
||||||
|
若只改 Web runtime 且交付数据不变,则不得为了形式重复完整 production rebuild。
|
||||||
|
|
||||||
|
若确需全量:
|
||||||
|
|
||||||
|
- 只在全部 26 RC 实施结束后集中执行一次;
|
||||||
|
- 完整 5064 PBF 扫描只做一次;
|
||||||
|
- 记录 decode error、branch signature、resource contract、presentation conservation。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 11. RC-021 特殊规则
|
||||||
|
|
||||||
|
RC-021 不能按普通代码 Bug 处理。
|
||||||
|
|
||||||
|
必须为:
|
||||||
|
|
||||||
|
`DC-OUT-ZERO-NORMAL`
|
||||||
|
|
||||||
|
建立 branch-specific witness。
|
||||||
|
|
||||||
|
允许结果:
|
||||||
|
|
||||||
|
### A. 当前代码正确
|
||||||
|
|
||||||
|
则:
|
||||||
|
|
||||||
|
- 记录 witness;
|
||||||
|
- 将该 branch 从 FAIL 修正为合适状态;
|
||||||
|
- 说明原 v2 FAIL 为什么属于证据归因错误;
|
||||||
|
- 不修改无关产品代码。
|
||||||
|
|
||||||
|
### B. 找到真实缺陷
|
||||||
|
|
||||||
|
则:
|
||||||
|
|
||||||
|
- 创建最小新增 Root Cause 标识;
|
||||||
|
- 记录机制;
|
||||||
|
- 在本任务中修复;
|
||||||
|
- witness 后再更新 branch 状态。
|
||||||
|
|
||||||
|
不得为了让剩余 FAIL 归零而直接改成 PASS。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 12. 最终正式输出
|
||||||
|
|
||||||
|
本任务完成后生成:
|
||||||
|
|
||||||
|
1. `docs/报告/CM95_S52_剩余26个根因统一修复报告_v1.md`
|
||||||
|
2. `build/audits/cm95_s52_remaining_26_root_cause_fix_v1.json`
|
||||||
|
3. 更新后的 Code-First 等价审计机器结果(使用现有同主题版本策略递增,不覆盖历史 v2)
|
||||||
|
4. 如审计标准本身因新 IR/contract 需要补充,则同主题版本递增;如果标准没变,不新建重复文档。
|
||||||
|
|
||||||
|
报告至少包含:
|
||||||
|
|
||||||
|
- 起始 HEAD;
|
||||||
|
- 最终 HEAD;
|
||||||
|
- OpenCPN commit;
|
||||||
|
- 26 RC 逐项状态;
|
||||||
|
- RC-021 最终结论;
|
||||||
|
- 修改文件列表;
|
||||||
|
- 阶段 A/B/C/D 提交;
|
||||||
|
- 每阶段 witness;
|
||||||
|
- 是否改 PBF contract;
|
||||||
|
- 是否 production rebuild;
|
||||||
|
- 是否完整扫描 5064 PBF;
|
||||||
|
- 最终 PASS / FAIL / NOT_PROVEN 数;
|
||||||
|
- 仍未解决的 branch;
|
||||||
|
- 仍未解决的 Root Cause;
|
||||||
|
- Target Portrayal 最终状态。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 13. 工作区保护
|
||||||
|
|
||||||
|
当前已有无关工作区修改。
|
||||||
|
|
||||||
|
开始前:
|
||||||
|
|
||||||
|
1. `git status --short`
|
||||||
|
2. 对所有已有 modified/untracked 路径记录 SHA-256;
|
||||||
|
3. 排除本任务 MD 自身。
|
||||||
|
|
||||||
|
每阶段结束:
|
||||||
|
|
||||||
|
- 重算 SHA-256;
|
||||||
|
- 无关文件必须完全一致。
|
||||||
|
|
||||||
|
最终提交前:
|
||||||
|
|
||||||
|
- `git diff --cached --name-only`
|
||||||
|
- `git diff --cached --stat`
|
||||||
|
- `git diff --cached --check`
|
||||||
|
|
||||||
|
严禁把已有无关工作区修改提交。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 14. 完成条件
|
||||||
|
|
||||||
|
只有同时满足以下条件才允许报告“完成”:
|
||||||
|
|
||||||
|
- [ ] 25 个已确认代码 Root Cause 都有实际修复或有明确阻塞证据;
|
||||||
|
- [ ] RC-021 已完成 branch-specific witness;
|
||||||
|
- [ ] 统一 ordered Rule Chain/IR 不再丢 mixed opcode;
|
||||||
|
- [ ] Point/Line/Area hazard runtime 不再只支持 Point;
|
||||||
|
- [ ] SOUNDG 不再以普通 text 代替 glyph chain;
|
||||||
|
- [ ] 多 LS 与 DOTT 可正确执行;
|
||||||
|
- [ ] UDWHAZ / DEPCNT / RESARE category/priority/SCAMIN side effect 与 upstream 对齐;
|
||||||
|
- [ ] runtime boundary mode 可重新选择;
|
||||||
|
- [ ] LIGHTS stateful label 与 height unit 对齐;
|
||||||
|
- [ ] CA scale-aware;
|
||||||
|
- [ ] resource missing 不导致 whole-chain 丢失;
|
||||||
|
- [ ] 重新运行 Code-First branch audit;
|
||||||
|
- [ ] 新 FAIL/PASS/NOT_PROVEN 数来自实际 audit;
|
||||||
|
- [ ] 原无关工作区 SHA-256 未变化;
|
||||||
|
- [ ] 所有任务相关 commit 已 push 到 `origin/main`。
|
||||||
|
|
||||||
|
如果仍有 FAIL:
|
||||||
|
|
||||||
|
- 明确列 branch_id;
|
||||||
|
- 明确对应 RC;
|
||||||
|
- 明确为什么本任务不能安全解决;
|
||||||
|
- 不得声称 Target Portrayal PASS。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 15. 最终 Git 收尾
|
||||||
|
|
||||||
|
最终阶段必须:
|
||||||
|
|
||||||
|
1. 显式 stage 任务相关文件;
|
||||||
|
2. 不使用全量 add;
|
||||||
|
3. 检查 staged;
|
||||||
|
4. commit;
|
||||||
|
5. push `origin/main`;
|
||||||
|
6. 确认 `HEAD == origin/main`;
|
||||||
|
7. 最终回复给出:
|
||||||
|
- final HEAD;
|
||||||
|
- 各阶段 commit;
|
||||||
|
- push 状态;
|
||||||
|
- 26 RC 状态;
|
||||||
|
- 新 branch audit 统计;
|
||||||
|
- Target Portrayal 状态。
|
||||||
Reference in New Issue
Block a user