docs: complete S-52 root cause fix audit
This commit is contained in:
31033
build/audits/cm95_s52_opencpn_code_first_equivalence_v3.json
Normal file
31033
build/audits/cm95_s52_opencpn_code_first_equivalence_v3.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"schema": "cm95.s52.residual-fail-evidence/v1",
|
||||
"date": "2026-09-21",
|
||||
"source_audit": "build/audits/cm95_s52_opencpn_code_first_equivalence_v3.json",
|
||||
"fail_count": 1,
|
||||
"failures": [
|
||||
{
|
||||
"branch_id": "DC-DEC-DEP-LOW",
|
||||
"procedure": "DEPCNT02",
|
||||
"condition": "LINE DEPARE; d1<=SC and d2<SC",
|
||||
"expected": "DRVAL2 is normalized to DRVAL1+0.01; with DRVAL1=2 and safety contour=3 the result is LS(SOLD,1,DEPCN).",
|
||||
"observed_current": "resolve_depcnt02_instruction('DEPARE', DRVAL1=2, DRVAL2=2, next_safe_contour_m=2) returns LS(SOLD,2,DEPSC).",
|
||||
"affected_gates": [
|
||||
"B CSP_BRANCH_EQUIVALENCE",
|
||||
"H MARINER_DEPENDENCY_EQUIVALENCE"
|
||||
],
|
||||
"cm95_paths_or_functions": [
|
||||
"src/cm95pbf/csp.py:resolve_depcnt02_instruction",
|
||||
"web/s52_runtime_executor.js:dynamicRules(DEPCNT02)"
|
||||
],
|
||||
"opencpn_paths_or_functions": [
|
||||
"docs/外部参考/OpenCPN源码基线_f7211b4e/上游源码/libs/s52plib/src/s52cnsy.cpp:DEPCNT02"
|
||||
],
|
||||
"witness_evidence": [
|
||||
"/tmp/cm95-v2-probes.json:depcnt-depare-invalid-range",
|
||||
"expected LS(SOLD,1,DEPCN)",
|
||||
"observed LS(SOLD,2,DEPSC)"
|
||||
],
|
||||
"possible_shared_mechanism": "Adjacent to RC-015: DEPARE01 normalizes DRVAL2<=DRVAL1, while the DEPCNT02 DEPARE interval decision does not share that normalization."
|
||||
}
|
||||
]
|
||||
}
|
||||
336
build/audits/cm95_s52_remaining_26_root_cause_fix_v1.json
Normal file
336
build/audits/cm95_s52_remaining_26_root_cause_fix_v1.json
Normal file
@@ -0,0 +1,336 @@
|
||||
{
|
||||
"schema": "cm95.s52.remaining-26-root-cause-fix-audit/v1",
|
||||
"date": "2026-09-21",
|
||||
"status": "FAIL",
|
||||
"target_portrayal": "FAIL",
|
||||
"opencpn_commit": "f7211b4e1874c453e37a7f190aa191c55a25c32e",
|
||||
"task_commits": [
|
||||
"f3047a3f06d2eac3f603dcb54646a60fdead2354",
|
||||
"e5be7c1",
|
||||
"043b022",
|
||||
"bea74dd",
|
||||
"89653ea",
|
||||
"e1e3a9e"
|
||||
],
|
||||
"production": {
|
||||
"status": "PASS",
|
||||
"plan_sha256": "d6772d47e43c37d8789588f8a83c90bea0efbad0bf1ffa1ce8d690b99535ad02",
|
||||
"summary_sha256": "7e411b7f01e0e6f7b13e3202c8105980d7b549cf518dd7892d56c5eef756f32f",
|
||||
"jobs": 5065,
|
||||
"states": {
|
||||
"PASS": 5065
|
||||
},
|
||||
"pbf_files": 5064,
|
||||
"features": 476120,
|
||||
"rebuild_performed_by_this_audit": false
|
||||
},
|
||||
"branch_status_counts": {
|
||||
"PASS": 120,
|
||||
"FAIL": 1,
|
||||
"NOT_PROVEN": 85
|
||||
},
|
||||
"gates": [
|
||||
{
|
||||
"gate": "A",
|
||||
"name": "OPENCPN_FLOW_EQUIVALENCE",
|
||||
"status": "FAIL",
|
||||
"reason": "$AREAS II25→BACKGROUND normalization remains absent; lookup '?' scoring/numeric/fallback semantics are not fully identical to the fixed parser."
|
||||
},
|
||||
{
|
||||
"gate": "B",
|
||||
"name": "CSP_BRANCH_EQUIVALENCE",
|
||||
"status": "FAIL",
|
||||
"reason": "All 206 rows were re-adjudicated; DC-DEC-DEP-LOW is now a branch-specific confirmed mismatch."
|
||||
},
|
||||
{
|
||||
"gate": "C",
|
||||
"name": "NESTED_CSP_CALL_GRAPH",
|
||||
"status": "PASS",
|
||||
"reason": "Phase A/C witnesses prove ordered OBSTRN/WRECKS quality, name and sounding suffix expansion."
|
||||
},
|
||||
{
|
||||
"gate": "D",
|
||||
"name": "INSTRUCTION_SEQUENCE_EQUIVALENCE",
|
||||
"status": "PASS",
|
||||
"reason": "Versioned mixed-opcode rule IR preserves lookup+CSP order and structured TX operands."
|
||||
},
|
||||
{
|
||||
"gate": "E",
|
||||
"name": "RUNTIME_OPCODE_COVERAGE",
|
||||
"status": "PASS",
|
||||
"reason": "Generic executor and specialized SOUNDG/LIGHTS/CA paths execute the required ordered opcodes; missing DANGER53 does not discard the suffix."
|
||||
},
|
||||
{
|
||||
"gate": "F",
|
||||
"name": "REAL_DATA_BRANCH_COVERAGE",
|
||||
"status": "NOT_PROVEN",
|
||||
"reason": "The v5 release is complete, but delivery fields do not uniquely reconstruct every source predicate/association/view state."
|
||||
},
|
||||
{
|
||||
"gate": "G",
|
||||
"name": "RESOURCE_DEPENDENCY_EQUIVALENCE",
|
||||
"status": "NOT_PROVEN",
|
||||
"reason": "The local resource contract passes, but the fixed OpenCPN snapshot contains no independent chartsymbols.xml; DANGER53/LOWACC03 equivalence remains unprovable."
|
||||
},
|
||||
{
|
||||
"gate": "H",
|
||||
"name": "MARINER_DEPENDENCY_EQUIVALENCE",
|
||||
"status": "FAIL",
|
||||
"reason": "The DEPCNT DEPARE interval path does not normalize DRVAL2<=DRVAL1 before safe-contour selection."
|
||||
},
|
||||
{
|
||||
"gate": "I",
|
||||
"name": "RENDER_ORDER_EQUIVALENCE",
|
||||
"status": "NOT_PROVEN",
|
||||
"reason": "OP no-op and multi-LS execution are corrected; cross-object/global pass interleaving is still outside the available snapshot and witnesses."
|
||||
}
|
||||
],
|
||||
"root_causes": [
|
||||
{
|
||||
"root_cause_id": "RC-001",
|
||||
"phase": "phase_a",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-002",
|
||||
"phase": "phase_a",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-003",
|
||||
"phase": "phase_c",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-004",
|
||||
"phase": "phase_c",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-005",
|
||||
"phase": "phase_c",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-006",
|
||||
"phase": "phase_c",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-007",
|
||||
"phase": "phase_d",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-008",
|
||||
"phase": "phase_b",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-009",
|
||||
"phase": "phase_c",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-010",
|
||||
"phase": "phase_b",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-011",
|
||||
"phase": "phase_b",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-012",
|
||||
"phase": "batch_1",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-013",
|
||||
"phase": "phase_a",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-014",
|
||||
"phase": "phase_c",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-015",
|
||||
"phase": "phase_b",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-016",
|
||||
"phase": "phase_c",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-017",
|
||||
"phase": "phase_b",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-018",
|
||||
"phase": "phase_b",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-019",
|
||||
"phase": "phase_b",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-020",
|
||||
"phase": "phase_b",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-021",
|
||||
"phase": "phase_b",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-022",
|
||||
"phase": "batch_1",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-023",
|
||||
"phase": "batch_1",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-024",
|
||||
"phase": "batch_1",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-025",
|
||||
"phase": "batch_1",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-026",
|
||||
"phase": "batch_1",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-027",
|
||||
"phase": "phase_a",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-028",
|
||||
"phase": "phase_b",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-029",
|
||||
"phase": "batch_1",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-030",
|
||||
"phase": "batch_1",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-031",
|
||||
"phase": "batch_1",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-032",
|
||||
"phase": "batch_1",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-033",
|
||||
"phase": "phase_d",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-034",
|
||||
"phase": "batch_1",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-035",
|
||||
"phase": "batch_1",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-036",
|
||||
"phase": "phase_b",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-037",
|
||||
"phase": "phase_d",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
},
|
||||
{
|
||||
"root_cause_id": "RC-038",
|
||||
"phase": "phase_a",
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication"
|
||||
}
|
||||
],
|
||||
"remaining_26_closed_count": 26,
|
||||
"rc_021": {
|
||||
"status": "PASS",
|
||||
"branch_id": "DC-OUT-ZERO-NORMAL",
|
||||
"conclusion": "current implementation equivalent; v2 FAIL was shared-evidence misattribution",
|
||||
"instruction": "LS(SOLD,1,DEPCN)"
|
||||
},
|
||||
"new_residual": {
|
||||
"id": "RC-039",
|
||||
"status": "FAIL",
|
||||
"branch_id": "DC-DEC-DEP-LOW",
|
||||
"evidence_package": "build/audits/cm95_s52_remaining_26_residual_fail_evidence_v1.json"
|
||||
},
|
||||
"artifacts": {
|
||||
"code_first_json": "build/audits/cm95_s52_opencpn_code_first_equivalence_v3.json",
|
||||
"code_first_report": "docs/报告/CM95_S52_OpenCPN渲染流程对照审计报告_v3.md",
|
||||
"residual_fail_evidence": "build/audits/cm95_s52_remaining_26_residual_fail_evidence_v1.json"
|
||||
}
|
||||
}
|
||||
314
docs/报告/CM95_S52_OpenCPN渲染流程对照审计报告_v3.md
Normal file
314
docs/报告/CM95_S52_OpenCPN渲染流程对照审计报告_v3.md
Normal file
@@ -0,0 +1,314 @@
|
||||
# CM95 S-52 OpenCPN 渲染流程对照审计报告 v3
|
||||
|
||||
日期:2026-09-21。固定 OpenCPN baseline:`f7211b4e1874c453e37a7f190aa191c55a25c32e`。
|
||||
|
||||
## 1. 最终结论
|
||||
|
||||
**Target Portrayal:FAIL。** 本轮没有运行 production build,也没有重新生成 release。v5 production 只读核验为 **5065/5065 jobs PASS、5064 PBF、476120 features**。
|
||||
|
||||
206 条 branch record 已逐条从 v2 矩阵重新判定,结果不是用旧 FAIL 数做减法:
|
||||
|
||||
| PASS | FAIL | NOT_PROVEN | 合计 |
|
||||
|---:|---:|---:|---:|
|
||||
| 120 | 1 | 85 | 206 |
|
||||
|
||||
唯一 branch FAIL 是 `DC-DEC-DEP-LOW`。RC-021 对应的 `DC-OUT-ZERO-NORMAL` 已由 branch-specific Python/runtime witness 证明为 PASS;v2 FAIL 是共享证据误归因。
|
||||
|
||||
## 2. 固定输入与方法
|
||||
|
||||
- v2 矩阵:`build/audits/cm95_s52_opencpn_code_first_equivalence_v2.json`,206/206 记录全部保留并重判。
|
||||
- production plan:`build/production/cm95_s52_kyushu_production_plan_v5_ordered_rule_ir.json`,plan id `d6627c77efec38d1fcd9f398870cd19519e9e948ba4515e7357829aa10087f2b`。
|
||||
- release:`build/releases-s52-v2/cm95-d1-62a85bd40d3a-d6627c77efec`。
|
||||
- phase A/B/C/D witness 均重新执行并 PASS;未使用 Jest。
|
||||
- 原 NOT_PROVEN 不因实现存在而猜成 PASS;85 条继续保持 NOT_PROVEN。一条旧 NOT_PROVEN 因精确 witness 得到反证,改为 FAIL。
|
||||
- OpenCPN 校验清单 25/25 PASS;固定源码未替换、未联网补齐缺失资源。
|
||||
|
||||
## 3. Gate A–I
|
||||
|
||||
| Gate | 状态 | 结论 |
|
||||
|---|---|---|
|
||||
| A OPENCPN_FLOW_EQUIVALENCE | FAIL | $AREAS II25→BACKGROUND normalization remains absent; lookup '?' scoring/numeric/fallback semantics are not fully identical to the fixed parser. |
|
||||
| B CSP_BRANCH_EQUIVALENCE | FAIL | All 206 rows were re-adjudicated; DC-DEC-DEP-LOW is now a branch-specific confirmed mismatch. |
|
||||
| C NESTED_CSP_CALL_GRAPH | PASS | Phase A/C witnesses prove ordered OBSTRN/WRECKS quality, name and sounding suffix expansion. |
|
||||
| D INSTRUCTION_SEQUENCE_EQUIVALENCE | PASS | Versioned mixed-opcode rule IR preserves lookup+CSP order and structured TX operands. |
|
||||
| E RUNTIME_OPCODE_COVERAGE | PASS | Generic executor and specialized SOUNDG/LIGHTS/CA paths execute the required ordered opcodes; missing DANGER53 does not discard the suffix. |
|
||||
| F REAL_DATA_BRANCH_COVERAGE | NOT_PROVEN | The v5 release is complete, but delivery fields do not uniquely reconstruct every source predicate/association/view state. |
|
||||
| G RESOURCE_DEPENDENCY_EQUIVALENCE | NOT_PROVEN | The local resource contract passes, but the fixed OpenCPN snapshot contains no independent chartsymbols.xml; DANGER53/LOWACC03 equivalence remains unprovable. |
|
||||
| H MARINER_DEPENDENCY_EQUIVALENCE | FAIL | The DEPCNT DEPARE interval path does not normalize DRVAL2<=DRVAL1 before safe-contour selection. |
|
||||
| I RENDER_ORDER_EQUIVALENCE | NOT_PROVEN | OP no-op and multi-LS execution are corrected; cross-object/global pass interleaving is still outside the available snapshot and witnesses. |
|
||||
|
||||
## 4. 生产与证据边界
|
||||
|
||||
ordered Rule IR 已进入 v5 builder contract,release summary 的 plan/release identity、jobs、PBF 和 feature 数一致。Gate F 仍为 NOT_PROVEN,因为交付 PBF 不能唯一恢复全部原始 presence/value、关联对象与视图状态;Gate G 仍受固定快照缺少独立 chartsymbols.xml 限制;Gate I 的跨对象全局 pass interleaving 没有被局部 executor witness 证明。
|
||||
|
||||
## 5. 206 条 branch 复判
|
||||
|
||||
### OBSTRN04
|
||||
|
||||
| branch_id | condition | expected | current / evidence | v3 status |
|
||||
|---|---|---|---|---|
|
||||
| OB-D-VAL | VALSOU != UNKNOWN(1e6) | depth=VALSOU; precompute S(VALSOU); execute terminal OB branch | full Object→Lookup→consumer equivalence and rendering parameters not proven | NOT_PROVEN |
|
||||
| OB-D-EXPSOU | VALSOU absent; EXPSOU=1 | depth=UNKNOWN → _UDWHAZ03(depth) → terminal OB branch | upstream _DEPVAL01 always UNKNOWN; CM95 uses actual min DRVAL1 for AREA | NOT_PROVEN |
|
||||
| OB-D-FOUL | VALSOU absent; EXPSOU!=1; CATOBS=6 | depth=0.01 → _UDWHAZ03(depth) → terminal OB branch | upstream _DEPVAL01 always UNKNOWN; CM95 uses actual min DRVAL1 for AREA | NOT_PROVEN |
|
||||
| OB-D-AWASH | VALSOU absent; EXPSOU!=1; CATOBS!=6; WATLEV=5 | depth=0 → _UDWHAZ03(depth) → terminal OB branch | upstream _DEPVAL01 always UNKNOWN; CM95 uses actual min DRVAL1 for AREA | NOT_PROVEN |
|
||||
| OB-D-SUBMERGED | VALSOU absent; EXPSOU!=1; CATOBS!=6; WATLEV=3 | depth=0.01 → _UDWHAZ03(depth) → terminal OB branch | upstream _DEPVAL01 always UNKNOWN; CM95 uses actual min DRVAL1 for AREA | NOT_PROVEN |
|
||||
| OB-D-DEFAULT | VALSOU absent; EXPSOU!=1; CATOBS!=6; WATLEV otherwise | depth=-15 → _UDWHAZ03(depth) → terminal OB branch | upstream _DEPVAL01 always UNKNOWN; CM95 uses actual min DRVAL1 for AREA | NOT_PROVEN |
|
||||
| OB-P-ISO | _UDWHAZ03 returns nonempty | SY(ISODGR51) → Q → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-P-ROCK-AWASH | U empty; UWTROC; V<=20; WATLEV∈{4,5} | SY(UWTROC04) → Q → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-P-ROCK-OTHER | U empty; UWTROC; V<=20; WATLEV absent/3/other | SY(DANGER51) → S(V) → Q → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-P-OBS-ABSENT | U empty; OBSTRN; V<=20; WATLEV absent | SY(DANGER01) → S(V) → Q → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-P-OBS-DRY | U empty; OBSTRN; V<=20; WATLEV∈{1,2} | SY(LNDARE01) → Q → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-P-OBS-SUBMERGED | U empty; OBSTRN; V<=20; WATLEV=3 | SY(DANGER52) → S(V) → Q → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-P-OBS-AWASH | U empty; OBSTRN; V<=20; WATLEV∈{4,5} | SY(DANGER53) → S(V) → Q → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-P-OBS-OTHER | U empty; OBSTRN; V<=20; WATLEV other | SY(DANGER51) → S(V) → Q → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-P-DEEP | U empty; VALSOU>20; either class | SY(DANGER52) → S(V) → Q → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-P-ROCK-NOV-DRY | U empty; V absent; UWTROC; WATLEV=2 | SY(LNDARE01) → Q → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-P-ROCK-NOV-SUB | U empty; V absent; UWTROC; WATLEV=3 | SY(UWTROC03) → Q → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-P-ROCK-NOV-OTHER | U empty; V absent; UWTROC; WATLEV absent/other | SY(UWTROC04) → Q → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-P-OBS-NOV-DRY | U empty; V absent; OBSTRN; WATLEV∈{1,2} | SY(OBSTRN11) → Q → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-P-OBS-NOV-AWASH | U empty; V absent; OBSTRN; WATLEV∈{4,5} | SY(OBSTRN03) → Q → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-P-OBS-NOV-OTHER | U empty; V absent; OBSTRN; WATLEV absent/3/other | SY(OBSTRN01) → Q → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-L-QLOW | Q.Len()>1 (QUAPOS 2..9) | ToLong(Q string) into uninitialized long; conditional LC(LOWACC41/31); then T | actual Q is ;SY(...)+separator, not numeric; unchecked ToLong/uninitialized quapos: do not invent deterministic expected LC | NOT_PROVEN |
|
||||
| OB-L-ISO | Q.Len()<=1; U nonempty | LS(DOTT,2,CHBLK) → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-L-SHALLOW | Q.Len()<=1; U empty; V present<=20 | LS(DOTT,2,CHBLK) → S(V) → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-L-DEEP | Q.Len()<=1; U empty; V>20 | LS(DASH,2,CHBLK) → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-L-NOV | Q.Len()<=1; U empty; V absent | LS(DOTT,2,CHBLK) → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-A-ISO | U nonempty | AC(DEPVS) → AP(FOULAR01) → LS(DOTT,2,CHBLK) → SY(ISODGR51) → Q → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-A-SHALLOW | U empty; V<=20 | LS(DOTT,2,CHBLK) → S(V) → Q → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-A-DEEP | U empty; V>20 | LS(DASH,2,CHBLK) → S(V) → Q → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-A-DRY | U empty; V absent; WATLEV∈{1,2} | AC(CHBRN) → LS(SOLD,2,CSTLN) → Q → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-A-AWASH | U empty; V absent; WATLEV=4 | AC(DEPIT) → LS(DASH,2,CSTLN) → Q → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-A-FOUL | U empty; V absent; WATLEV∈{3,5}; CATOBS=6 | AC(DEPVS) → AP(FOULAR01) → LS(DOTT,2,CHBLK) → Q → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-A-DEFAULT | U empty; V absent; remaining WATLEV/CATOBS | AC(DEPVS) → LS(DOTT,2,CHBLK) → Q → T | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-T-PRESENT | OBJNAM attribute exists (including empty string) | terminal prefix → Q or S as terminal specifies → TX(OBJNAM,1,2,3,'15118',-1,-1,CHBLK,26) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| OB-T-ABSENT | OBJNAM missing | terminal prefix → Q or S as terminal specifies | OB-T is the T macro; text rendering still has separate visibility gates | NOT_PROVEN |
|
||||
|
||||
### WRECKS02
|
||||
|
||||
| branch_id | condition | expected | current / evidence | v3 status |
|
||||
|---|---|---|---|---|
|
||||
| WK-D-VAL | V present | depth=V → U unless QUASOU contains 7 → terminal WK branch | fixed _DEPVAL01 is stub; unsupported present CATWRK leaves UNKNOWN upstream | NOT_PROVEN |
|
||||
| WK-D-CAT1 | V absent; CATWRK=1 | depth=20 → U unless QUASOU contains 7 → terminal WK branch | fixed _DEPVAL01 is stub; unsupported present CATWRK leaves UNKNOWN upstream | NOT_PROVEN |
|
||||
| WK-D-CAT2 | V absent; CATWRK=2 | depth=0 → U unless QUASOU contains 7 → terminal WK branch | fixed _DEPVAL01 is stub; unsupported present CATWRK leaves UNKNOWN upstream | NOT_PROVEN |
|
||||
| WK-D-CAT45 | V absent; CATWRK∈{4,5} | depth=-15 → U unless QUASOU contains 7 → terminal WK branch | fixed _DEPVAL01 is stub; unsupported present CATWRK leaves UNKNOWN upstream | NOT_PROVEN |
|
||||
| WK-D-CATOTHER | V absent; CATWRK present not 1/2/4/5 | depth=UNKNOWN → U unless QUASOU contains 7 → terminal WK branch | fixed _DEPVAL01 is stub; unsupported present CATWRK leaves UNKNOWN upstream | NOT_PROVEN |
|
||||
| WK-D-WAT3 | V absent; CATWRK absent; WATLEV=3 | depth=0.01 → U unless QUASOU contains 7 → terminal WK branch | fixed _DEPVAL01 is stub; unsupported present CATWRK leaves UNKNOWN upstream | NOT_PROVEN |
|
||||
| WK-D-WAT5 | V absent; CATWRK absent; WATLEV=5 | depth=0 → U unless QUASOU contains 7 → terminal WK branch | fixed _DEPVAL01 is stub; unsupported present CATWRK leaves UNKNOWN upstream | NOT_PROVEN |
|
||||
| WK-D-WATDRY | V absent; CATWRK absent; WATLEV absent/1/2/4/6 | depth=-15 → U unless QUASOU contains 7 → terminal WK branch | fixed _DEPVAL01 is stub; unsupported present CATWRK leaves UNKNOWN upstream | NOT_PROVEN |
|
||||
| WK-D-WATOTHER | V absent; CATWRK absent; WATLEV other | depth=UNKNOWN → U unless QUASOU contains 7 → terminal WK branch | fixed _DEPVAL01 is stub; unsupported present CATWRK leaves UNKNOWN upstream | NOT_PROVEN |
|
||||
| WK-U-SKIP7 | QUASOU contains 7 | U=empty; quasou=7 → Q → terminal WK branch | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| WK-P-ISO | U nonempty | SY(ISODGR51) → Q | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| WK-P-V-LT-Q0 | U empty; V < safety_contour; QUASOU excludes 7 | SY(DANGER51) → TX('Wk',3,1,2,'15110',2,0,CHBLK,21) → S(V) → U(empty) → Q | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| WK-P-V-LT-Q7 | U empty; V < safety_contour; QUASOU contains 7 | SY(DANGER51) → TX('Wk',3,1,2,'15110',2,0,CHBLK,21) → SY(WRECKS07) → S(V) → U(empty) → Q | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| WK-P-V-GE-Q0 | U empty; V >= safety_contour; QUASOU excludes 7 | SY(DANGER52) → TX('Wk',3,1,2,'15110',2,0,CHBLK,21) → S(V) → U(empty) → Q | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| WK-P-V-GE-Q7 | U empty; V >= safety_contour; QUASOU contains 7 | SY(DANGER52) → TX('Wk',3,1,2,'15110',2,0,CHBLK,21) → SY(WRECKS07) → S(V) → U(empty) → Q | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| WK-P-NOV-CAT1 | U empty; V absent; CATWRK=1 and WATLEV=3 | SY(WRECKS04) → Q | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| WK-P-NOV-CAT2 | U empty; V absent; CATWRK=2 and WATLEV=3 | SY(WRECKS05) → Q | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| WK-P-NOV-DRY | U empty; V absent; both attrs present; (CATWRK∈{4,5} or WATLEV∈{1,2,4,5}) | SY(WRECKS01) → Q | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| WK-P-NOV-OTHER | U empty; V absent; both attrs present; remaining values | SY(WRECKS05) → Q | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| WK-P-NOV-MISSING | U empty; V absent; CATWRK or WATLEV absent | Q | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| WK-LINE-QLOW | QUAPOS∈[2,9] | LC(LOWACC41) → WK-TAIL selected by V/WATLEV | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| WK-LINE-ISO | QUAPOS outside [2,9]; U nonempty | LS(DOTT,2,CHBLK) → WK-TAIL selected by V/WATLEV | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| WK-LINE-VALSH | accurate; U empty; V<=20 | LS(DOTT,2,CHBLK) → WK-TAIL selected by V/WATLEV | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| WK-LINE-VALDP | accurate; U empty; V>20 | LS(DASH,2,CHBLK) → WK-TAIL selected by V/WATLEV | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| WK-LINE-DRY | accurate; U empty; V absent; WATLEV∈{1,2} | LS(SOLD,2,CSTLN) → WK-TAIL selected by V/WATLEV | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| WK-LINE-AWASH | accurate; U empty; V absent; WATLEV=4 | LS(DASH,2,CSTLN) → WK-TAIL selected by V/WATLEV | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| WK-LINE-DEFAULT | accurate; U empty; V absent; WATLEV other/absent | LS(DOTT,2,CSTLN) → WK-TAIL selected by V/WATLEV | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| WK-TAIL-SHALLOW | V present<=20 | WK-LINE selected above → U → Q → S(V) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| WK-TAIL-DEEP | V>20 | WK-LINE selected above → U → Q | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| WK-TAIL-DRY | V absent; WATLEV∈{1,2} | WK-LINE selected above → AC(CHBRN) → U → Q | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| WK-TAIL-AWASH | V absent; WATLEV=4 | WK-LINE selected above → AC(DEPIT) → U → Q | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| WK-TAIL-DEFAULT | V absent; WATLEV other/absent | WK-LINE selected above → AC(DEPVS) → U → Q | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
|
||||
### UDWHAZ03
|
||||
|
||||
| branch_id | condition | expected | current / evidence | v3 status |
|
||||
|---|---|---|---|---|
|
||||
| UD-PUBLIC | direct CS(UDWHAZ03) | — | public registered function returns NULL; hazard callers use _UDWHAZ03 helper, not this entry | NOT_PROVEN |
|
||||
| UD-UNKNOWN-DANGER | depth=UNKNOWN; EXPSOU!=1 | danger=true → UD-OUT according to danger and WATLEV | fixed snapshot lacks GetAssociatedObjects implementation; summary membership equality not proven | NOT_PROVEN |
|
||||
| UD-UNKNOWN-EXPOSED | depth=UNKNOWN; EXPSOU=1 | association scan; AREA cannot promote; LINE DRVAL2<SC may promote → UD-OUT according to danger and WATLEV | fixed snapshot lacks GetAssociatedObjects implementation; summary membership equality not proven | NOT_PROVEN |
|
||||
| UD-KNOWN-DEEP | known depth>SC; EXPSOU attribute ignored | danger=false → UD-OUT according to danger and WATLEV | fixed snapshot lacks GetAssociatedObjects implementation; summary membership equality not proven | NOT_PROVEN |
|
||||
| UD-KNOWN-SHALLOW | known depth<=SC; local expsou remains 0 | association scan → UD-OUT according to danger and WATLEV | fixed snapshot lacks GetAssociatedObjects implementation; summary membership equality not proven | NOT_PROVEN |
|
||||
| UD-ASSOC-LINE | eligible scan; any associated GEO_LINE DRVAL2(default0)<SC | danger=true → UD-OUT according to danger and WATLEV | fixed snapshot lacks GetAssociatedObjects implementation; summary membership equality not proven | NOT_PROVEN |
|
||||
| UD-ASSOC-AREA | eligible scan; any associated nonline DRVAL1(default0)>=SC and local expsou!=1 | danger=true → UD-OUT according to danger and WATLEV | fixed snapshot lacks GetAssociatedObjects implementation; summary membership equality not proven | NOT_PROVEN |
|
||||
| UD-ASSOC-NONE | eligible scan; no qualifying association or chart absent | danger=false → UD-OUT according to danger and WATLEV | fixed snapshot lacks GetAssociatedObjects implementation; summary membership equality not proven | NOT_PROVEN |
|
||||
| UD-OUT-DRY | danger=true; WATLEV 1/2 | — | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| UD-OUT-WET | danger=true; WATLEV otherwise | SY(ISODGR51) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| UD-OUT-SAFE | danger=false | — | upstream b_promote always false; DisplayBase is direct mutation, not OP; JS does not emit category | NOT_PROVEN |
|
||||
|
||||
### SOUNDG03
|
||||
|
||||
| branch_id | condition | expected | current / evidence | v3 status |
|
||||
|---|---|---|---|---|
|
||||
| SG-CLAMP-HIGH | input>40000 | prelude(SG-CLAMP/UNIT/PREFIX) → B1 if swept → C2 if unreliable → SG-DIGITS selected by adjusted d | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| SG-CLAMP-LOW | input<-1000 | prelude(SG-CLAMP/UNIT/PREFIX) → B1 if swept → C2 if unreliable → SG-DIGITS selected by adjusted d | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| SG-METRES | unit neither 0 nor 2 | prelude(SG-CLAMP/UNIT/PREFIX) → B1 if swept → C2 if unreliable → SG-DIGITS selected by adjusted d | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| SG-FEET | unit=0 | prelude(SG-CLAMP/UNIT/PREFIX) → B1 if swept → C2 if unreliable → SG-DIGITS selected by adjusted d | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| SG-FATHOMS | unit=2 | prelude(SG-CLAMP/UNIT/PREFIX) → B1 if swept → C2 if unreliable → SG-DIGITS selected by adjusted d | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| SG-SHALLOW | d after signed .01 adjustment <= converted SD | prelude(SG-CLAMP/UNIT/PREFIX) → B1 if swept → C2 if unreliable → SG-DIGITS selected by adjusted d | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| SG-DEEP | adjusted d > converted SD | prelude(SG-CLAMP/UNIT/PREFIX) → B1 if swept → C2 if unreliable → SG-DIGITS selected by adjusted d | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| SG-SWEPT | TECSOU contains6 | prelude(SG-CLAMP/UNIT/PREFIX) → B1 if swept → C2 if unreliable → SG-DIGITS selected by adjusted d | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| SG-QUALITY | QUASOU intersects{3,4,5,8,9} or STATUS contains18 else QUAPOS∈[2,9] | prelude(SG-CLAMP/UNIT/PREFIX) → B1 if swept → C2 if unreliable → SG-DIGITS selected by adjusted d | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| SG-DIGITS-ONE | abs(d)<10; feet rounding may fall through | SY(prefixB1) if swept → SY(prefixC2) if unreliable → SY(prefix1a) → SY(prefix5f) if f>0 → SY(prefixA1) if negative | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| SG-DIGITS-TWO-FRACTION | abs(d)<31; fractional remainder !=0 | SY(prefixB1) if swept → SY(prefixC2) if unreliable → SY(prefix2a) if leading>=10 → SY(prefix1b) → SY(prefix5f) if f>0 and !feet → SY(prefixA1) if negative | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| SG-DIGITS-TWO-NEG | previous branches not returned; abs(d)<100; d<0 | SY(prefixB1) if swept → SY(prefixC2) if unreliable → SY(prefix2a) → SY(prefix1b) → SY(prefixA1) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| SG-DIGITS-TWO-POS | previous branches not returned; abs(d)<100; d>=0 | SY(prefixB1) if swept → SY(prefixC2) if unreliable → SY(prefix1a) → SY(prefix0b) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| SG-DIGITS-THREE | previous branches not returned; d<1000 (signed compare) | SY(prefixB1) if swept → SY(prefixC2) if unreliable → SY(prefix2a) → SY(prefix1b) → SY(prefix0c) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| SG-DIGITS-FOUR | previous branches not returned; d<10000 | SY(prefixB1) if swept → SY(prefixC2) if unreliable → SY(prefix2a) → SY(prefix1b) → SY(prefix0c) → SY(prefix4d) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| SG-DIGITS-FIVE | remaining | SY(prefixB1) if swept → SY(prefixC2) if unreliable → SY(prefix3a) → SY(prefix2b) → SY(prefix1c) → SY(prefix0d) → SY(prefix4e) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
|
||||
### SOUNDG02
|
||||
|
||||
| branch_id | condition | expected | current / evidence | v3 status |
|
||||
|---|---|---|---|---|
|
||||
| MP-SPLIT | CS(SOUNDG02) reached | MP() → RenderMPS: for every point CS(SOUNDG03) → SNDFRM02(z) → ordered SY glyphs | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
|
||||
### DEPARE01/DEPARE02
|
||||
|
||||
| branch_id | condition | expected | current / evidence | v3 status |
|
||||
|---|---|---|---|---|
|
||||
| DA-ALIAS | CS(DEPARE02) | same DEPARE01 branch tree | full Object→Lookup→consumer equivalence and rendering parameters not proven | NOT_PROVEN |
|
||||
| DA-INTERTIDAL | base: d1<0 or d2<=0; no later override | AC(DEPIT) → AP(DRGARE01),LS(DASH,1,CHGRF) iff DRGARE | assumes both DRVALs initialized. runtime lacks two_shades and DRGARE suffix; fixed hardcoded color/opacity differs from palette contract | NOT_PROVEN |
|
||||
| DA-VERYSHALLOW | base: d1>=0 and d2>0; no later override | AC(DEPVS) → AP(DRGARE01),LS(DASH,1,CHGRF) iff DRGARE | assumes both DRVALs initialized. runtime lacks two_shades and DRGARE suffix; fixed hardcoded color/opacity differs from palette contract | NOT_PROVEN |
|
||||
| DA-TWO-DEEP | two_shades=true; d1>=SC and d2>SC | AC(DEPDW) → AP(DRGARE01),LS(DASH,1,CHGRF) iff DRGARE | assumes both DRVALs initialized. runtime lacks two_shades and DRGARE suffix; fixed hardcoded color/opacity differs from palette contract | NOT_PROVEN |
|
||||
| DA-FOUR-SHALLOW | !two_shades; d1>=shallow and d2>shallow; no later override | AC(DEPMS) → AP(DRGARE01),LS(DASH,1,CHGRF) iff DRGARE | assumes both DRVALs initialized. runtime lacks two_shades and DRGARE suffix; fixed hardcoded color/opacity differs from palette contract | NOT_PROVEN |
|
||||
| DA-FOUR-SAFE | !two_shades; d1>=SC and d2>SC; no deep override | AC(DEPMD) → AP(DRGARE01),LS(DASH,1,CHGRF) iff DRGARE | assumes both DRVALs initialized. runtime lacks two_shades and DRGARE suffix; fixed hardcoded color/opacity differs from palette contract | NOT_PROVEN |
|
||||
| DA-FOUR-DEEP | !two_shades; d1>=deep and d2>deep | AC(DEPDW) → AP(DRGARE01),LS(DASH,1,CHGRF) iff DRGARE | assumes both DRVALs initialized. runtime lacks two_shades and DRGARE suffix; fixed hardcoded color/opacity differs from palette contract | NOT_PROVEN |
|
||||
| DA-DRG-NOD1 | DRGARE and DRVAL1 absent | AC(DEPMD) → AP(DRGARE01) → LS(DASH,1,CHGRF) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| DA-BAD-RANGE | DRVAL2<=DRVAL1 | DRVAL2=DRVAL1+0.01 → selected AC + DRGARE suffix | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| DA-MISSING-D2 | DRVAL2 absent | NOT_PROVEN: uninitialized drval2 read upstream; do not assign an expected color | upstream undefined behavior; source presence missing in delivery does not prove absent in original | NOT_PROVEN |
|
||||
|
||||
### DEPCNT02
|
||||
|
||||
| branch_id | condition | expected | current / evidence | v3 status |
|
||||
|---|---|---|---|---|
|
||||
| DC-DEC-DEP-RANGE | LINE DEPARE; d1<=SC and d2>=SC | safe=true → DC-OUT selected by QUAPOS and safe | Python DEPARE fallback may mark safe despite d1<=SC,d2<SC; chart catalog vs viewport catalog not proven | NOT_PROVEN |
|
||||
| DC-DEC-DEP-LOW | LINE DEPARE; d1<=SC and d2<SC | safe=false → DC-OUT selected by QUAPOS and safe | DRVAL1=2, DRVAL2=2, chart_next=2 → LS(SOLD,2,DEPSC); expected LS(SOLD,1,DEPCN) | FAIL |
|
||||
| DC-DEC-DEP-NEXT | LINE DEPARE; d1>SC | safe=(abs(d1-chart.next)<1e-4) → DC-OUT selected by QUAPOS and safe | Python DEPARE fallback may mark safe despite d1<=SC,d2<SC; chart catalog vs viewport catalog not proven | NOT_PROVEN |
|
||||
| DC-DEC-CNT-EXACT | otherwise; VALDCO==SC | safe=true → DC-OUT selected by QUAPOS and safe | Python DEPARE fallback may mark safe despite d1<=SC,d2<SC; chart catalog vs viewport catalog not proven | NOT_PROVEN |
|
||||
| DC-DEC-CNT-NEXT | otherwise; VALDCO!=SC | safe=(abs(VALDCO-chart.next)<1e-4) → DC-OUT selected by QUAPOS and safe | Python DEPARE fallback may mark safe despite d1<=SC,d2<SC; chart catalog vs viewport catalog not proven | NOT_PROVEN |
|
||||
| DC-OUT-LOW-SAFE | QUAPOS∈[2,9] and safe | SAFECD Plain lookup INST; fallback LS(DASH,2,DEPSC) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| DC-OUT-LOW-NORMAL | QUAPOS∈[2,9] and !safe | LS(DASH,1,DEPCN) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| DC-OUT-ZERO-SAFE | QUAPOS absent/0 and safe | SAFECN Plain lookup INST; fallback LS(SOLD,2,DEPSC) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| DC-OUT-ZERO-NORMAL | QUAPOS absent/0 and !safe | LS(SOLD,1,DEPCN) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| DC-OUT-OTHER | QUAPOS nonzero outside [2,9] | — | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
|
||||
### QUAPOS01/QUAPNT01/QUALIN01
|
||||
|
||||
| branch_id | condition | expected | current / evidence | v3 status |
|
||||
|---|---|---|---|---|
|
||||
| QP-4 | QUAPOS=4 | SY(QUAPOS01) | local Python output matches; complete pipeline placement and source QUAPOS mapping not proven | NOT_PROVEN |
|
||||
| QP-5 | QUAPOS=5 | SY(QUAPOS02) | local Python output matches; complete pipeline placement and source QUAPOS mapping not proven | NOT_PROVEN |
|
||||
| QP-78 | QUAPOS∈{7,8} | SY(QUAPOS03) | local Python output matches; complete pipeline placement and source QUAPOS mapping not proven | NOT_PROVEN |
|
||||
| QP-LOW | QUAPOS∈{2,3,6,9} | SY(LOWACC03) | LOWACC03 absent from CM95 resources; fixed XML not supplied | NOT_PROVEN |
|
||||
| QP-ACCURATE | QUAPOS absent or outside [2,9] | — | local Python output matches; complete pipeline placement and source QUAPOS mapping not proven | NOT_PROVEN |
|
||||
| QL-LOW | QUAPOS present in [2,9] | LC(LOWACC21) | local Python matches, consumer geometric fidelity unproven | NOT_PROVEN |
|
||||
| QL-OTHER | QUAPOS present outside [2,9] | — | local Python matches, consumer geometric fidelity unproven | NOT_PROVEN |
|
||||
| QL-RADAR | QUAPOS absent; class COALNE; CONRAD=1 | LS(SOLD,3,CHMGF) → LS(SOLD,1,CSTLN) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| QL-NORMAL | QUAPOS absent; other class or COALNE CONRAD absent/not1 | LS(SOLD,1,CSTLN) | local Python matches, consumer geometric fidelity unproven | NOT_PROVEN |
|
||||
| QP-DISPATCH | QUAPOS01: GEO_LINE vs else | CSQUALIN01 for LINE else CSQUAPNT01 | direct QUALIN01/QUAPNT01 are registered upstream but absent resolve_csp_hints dispatch; internal Python helpers exist | NOT_PROVEN |
|
||||
|
||||
### SLCONS03
|
||||
|
||||
| branch_id | condition | expected | current / evidence | v3 status |
|
||||
|---|---|---|---|---|
|
||||
| SL-P-LOW | QUAPOS present∈[2,9] | SY(LOWACC01) | AREA prefix remains even if cmdw empty; QUAPOS presence itself suppresses normal styling upstream | NOT_PROVEN |
|
||||
| SL-P-OTHER | QUAPOS absent/outside [2,9] | — | AREA prefix remains even if cmdw empty; QUAPOS presence itself suppresses normal styling upstream | NOT_PROVEN |
|
||||
| SL-LOW | QUAPOS present∈[2,9] | AP(CROSSX01) iff AREA → LC(LOWACC01) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| SL-PRESENT-GOOD | QUAPOS present outside [2,9] | AP(CROSSX01) iff AREA | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| SL-CONDTN | QUAPOS absent; CONDTN∈{1,2} | AP(CROSSX01) iff AREA → LS(DASH,1,CSTLN) | AREA prefix remains even if cmdw empty; QUAPOS presence itself suppresses normal styling upstream | NOT_PROVEN |
|
||||
| SL-WHARF | QUAPOS absent; previous false; CATSLC∈{6,15,16} | AP(CROSSX01) iff AREA → LS(SOLD,4,CSTLN) | AREA prefix remains even if cmdw empty; QUAPOS presence itself suppresses normal styling upstream | NOT_PROVEN |
|
||||
| SL-DRY | QUAPOS absent; previous false; WATLEV=2 | AP(CROSSX01) iff AREA → LS(SOLD,2,CSTLN) | AREA prefix remains even if cmdw empty; QUAPOS presence itself suppresses normal styling upstream | NOT_PROVEN |
|
||||
| SL-WET | QUAPOS absent; previous false; WATLEV∈{3,4} | AP(CROSSX01) iff AREA → LS(DASH,2,CSTLN) | AREA prefix remains even if cmdw empty; QUAPOS presence itself suppresses normal styling upstream | NOT_PROVEN |
|
||||
| SL-OTHER | QUAPOS absent; remaining | AP(CROSSX01) iff AREA → LS(SOLD,2,CSTLN) | AREA prefix remains even if cmdw empty; QUAPOS presence itself suppresses normal styling upstream | NOT_PROVEN |
|
||||
|
||||
### RESTRN01
|
||||
|
||||
| branch_id | condition | expected | current / evidence | v3 status |
|
||||
|---|---|---|---|---|
|
||||
| RE-ABSENT | RESTRN absent/empty | — | source uses octal 011..015 = decimal9..13; R={14} expected ENTRES51, Python ENTRES71; R={15} expected RSRDEF51, Python INFARE51 | NOT_PROVEN |
|
||||
| RE-ENTRY-MIX | R∩{7,8,14}; R∩{1..6} | SY(ENTRES61) | source uses octal 011..015 = decimal9..13; R={14} expected ENTRES51, Python ENTRES71; R={15} expected RSRDEF51, Python INFARE51 | NOT_PROVEN |
|
||||
| RE-ENTRY-INFO | R∩{7,8,14}; no {1..6}; R∩{9..13} | SY(ENTRES71) | source uses octal 011..015 = decimal9..13; R={14} expected ENTRES51, Python ENTRES71; R={15} expected RSRDEF51, Python INFARE51 | NOT_PROVEN |
|
||||
| RE-ENTRY-ONLY | R∩{7,8,14}; no {1..6,9..13} | SY(ENTRES51) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| RE-ANCHOR-MIX | no entry; R∩{1,2}; R∩{3..6} | SY(ACHRES61) | source uses octal 011..015 = decimal9..13; R={14} expected ENTRES51, Python ENTRES71; R={15} expected RSRDEF51, Python INFARE51 | NOT_PROVEN |
|
||||
| RE-ANCHOR-INFO | no entry; R∩{1,2}; no {3..6}; R∩{9..13} | SY(ACHRES71) | source uses octal 011..015 = decimal9..13; R={14} expected ENTRES51, Python ENTRES71; R={15} expected RSRDEF51, Python INFARE51 | NOT_PROVEN |
|
||||
| RE-ANCHOR-ONLY | no entry; R∩{1,2}; no {3..6,9..13} | SY(ACHRES51) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| RE-FISH-INFO | no entry/anchor; R∩{3..6}; R∩{9..13} | SY(FSHRES71) | source uses octal 011..015 = decimal9..13; R={14} expected ENTRES51, Python ENTRES71; R={15} expected RSRDEF51, Python INFARE51 | NOT_PROVEN |
|
||||
| RE-FISH-ONLY | no entry/anchor; R∩{3..6}; no {9..13} | SY(FSHRES51) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| RE-INFO | no {1..8,14}; R∩{9..13} | SY(INFARE51) | source uses octal 011..015 = decimal9..13; R={14} expected ENTRES51, Python ENTRES71; R={15} expected RSRDEF51, Python INFARE51 | NOT_PROVEN |
|
||||
| RE-DEFAULT | nonempty R without prior match | SY(RSRDEF51) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
|
||||
### RESARE02
|
||||
|
||||
| branch_id | condition | expected | current / evidence | v3 status |
|
||||
|---|---|---|---|---|
|
||||
| RA-ENTRY-MIX-PLAIN | R contains entry; R intersects1..6 or CATREA A; symbolized_boundaries=False | OP(6---) → LS(DASH,2,CHMGD) → SY(ENTRES61) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| RA-ENTRY-MIX-SYMB | R contains entry; R intersects1..6 or CATREA A; symbolized_boundaries=True | OP(6---) → LC(RESARE51) → SY(ENTRES61) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| RA-ENTRY-INFO-PLAIN | entry; previous false; R intersects9..13 or CATREA B; symbolized_boundaries=False | OP(6---) → LS(DASH,2,CHMGD) → SY(ENTRES71) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| RA-ENTRY-INFO-SYMB | entry; previous false; R intersects9..13 or CATREA B; symbolized_boundaries=True | OP(6---) → LC(RESARE51) → SY(ENTRES71) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| RA-ENTRY-ONLY-PLAIN | entry; previous false; symbolized_boundaries=False | OP(6---) → LS(DASH,2,CHMGD) → SY(ENTRES51) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| RA-ENTRY-ONLY-SYMB | entry; previous false; symbolized_boundaries=True | OP(6---) → LC(RESARE51) → SY(ENTRES51) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| RA-ANCHOR-MIX-PLAIN | no entry; anchor; fishing or CATREA A; symbolized_boundaries=False | OP(6---) → LS(DASH,2,CHMGD) → SY(ACHRES61) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| RA-ANCHOR-MIX-SYMB | no entry; anchor; fishing or CATREA A; symbolized_boundaries=True | OP(6---) → LC(RESARE51) → SY(ACHRES61) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| RA-ANCHOR-INFO-PLAIN | no entry; anchor; previous false; R info or CATREA B; symbolized_boundaries=False | OP(6---) → LS(DASH,2,CHMGD) → SY(ACHRES71) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| RA-ANCHOR-INFO-SYMB | no entry; anchor; previous false; R info or CATREA B; symbolized_boundaries=True | OP(6---) → LC(RESARE51) → SY(ACHRES71) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| RA-ANCHOR-ONLY-PLAIN | no entry; anchor; previous false; symbolized_boundaries=False | OP(6---) → LS(DASH,2,CHMGD) → SY(RESTRN51) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| RA-ANCHOR-ONLY-SYMB | no entry; anchor; previous false; symbolized_boundaries=True | OP(6---) → LC(RESARE51) → SY(RESTRN51) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| RA-FISH-A-PLAIN | no entry/anchor; fishing; CATREA A; symbolized_boundaries=False | OP(6---) → LS(DASH,2,CHMGD) → SY(FSHRES51) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| RA-FISH-A-SYMB | no entry/anchor; fishing; CATREA A; symbolized_boundaries=True | OP(6---) → LC(FSHRES51) → SY(FSHRES51) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| RA-FISH-INFO-PLAIN | no entry/anchor; fishing; no A; R info or CATREA B; symbolized_boundaries=False | OP(6---) → LS(DASH,2,CHMGD) → SY(FSHRES71) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| RA-FISH-INFO-SYMB | no entry/anchor; fishing; no A; R info or CATREA B; symbolized_boundaries=True | OP(6---) → LC(FSHRES51) → SY(FSHRES71) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| RA-FISH-ONLY-PLAIN | no entry/anchor; fishing; previous false; symbolized_boundaries=False | OP(6---) → LS(DASH,2,CHMGD) → SY(FSHRES51) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| RA-FISH-ONLY-SYMB | no entry/anchor; fishing; previous false; symbolized_boundaries=True | OP(6---) → LC(FSHRES51) → SY(FSHRES51) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| RA-R-INFO-PLAIN | R present; no entry/anchor/fishing; R info; symbolized_boundaries=False | LS(DASH,2,CHMGD) → SY(INFARE51) | A={1,8,9,12,14,19,21,25}; B={4,5,6,7,10,18,20,22,23,24}; info={9,10,11,12,13}. Static boundary choice frozen; no runtime reselection. | NOT_PROVEN |
|
||||
| RA-R-INFO-SYMB | R present; no entry/anchor/fishing; R info; symbolized_boundaries=True | LC(CTYARE51) → SY(INFARE51) | A={1,8,9,12,14,19,21,25}; B={4,5,6,7,10,18,20,22,23,24}; info={9,10,11,12,13}. Static boundary choice frozen; no runtime reselection. | NOT_PROVEN |
|
||||
| RA-R-DEFAULT-PLAIN | R present (even empty); no prior match; symbolized_boundaries=False | LS(DASH,2,CHMGD) → SY(RSRDEF51) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| RA-R-DEFAULT-SYMB | R present (even empty); no prior match; symbolized_boundaries=True | LC(CTYARE51) → SY(RSRDEF51) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| RA-NOR-AB-PLAIN | R absent; CATREA A and B; symbolized_boundaries=False | LS(DASH,2,CHMGD) → SY(CTYARE71) | A={1,8,9,12,14,19,21,25}; B={4,5,6,7,10,18,20,22,23,24}; info={9,10,11,12,13}. Static boundary choice frozen; no runtime reselection. | NOT_PROVEN |
|
||||
| RA-NOR-AB-SYMB | R absent; CATREA A and B; symbolized_boundaries=True | LC(CTYARE51) → SY(CTYARE71) | A={1,8,9,12,14,19,21,25}; B={4,5,6,7,10,18,20,22,23,24}; info={9,10,11,12,13}. Static boundary choice frozen; no runtime reselection. | NOT_PROVEN |
|
||||
| RA-NOR-A-PLAIN | R absent; A only; symbolized_boundaries=False | LS(DASH,2,CHMGD) → SY(CTYARE51) | A={1,8,9,12,14,19,21,25}; B={4,5,6,7,10,18,20,22,23,24}; info={9,10,11,12,13}. Static boundary choice frozen; no runtime reselection. | NOT_PROVEN |
|
||||
| RA-NOR-A-SYMB | R absent; A only; symbolized_boundaries=True | LC(CTYARE51) → SY(CTYARE51) | A={1,8,9,12,14,19,21,25}; B={4,5,6,7,10,18,20,22,23,24}; info={9,10,11,12,13}. Static boundary choice frozen; no runtime reselection. | NOT_PROVEN |
|
||||
| RA-NOR-B-PLAIN | R absent; B only; symbolized_boundaries=False | LS(DASH,2,CHMGD) → SY(INFARE51) | A={1,8,9,12,14,19,21,25}; B={4,5,6,7,10,18,20,22,23,24}; info={9,10,11,12,13}. Static boundary choice frozen; no runtime reselection. | NOT_PROVEN |
|
||||
| RA-NOR-B-SYMB | R absent; B only; symbolized_boundaries=True | LC(CTYARE51) → SY(INFARE51) | A={1,8,9,12,14,19,21,25}; B={4,5,6,7,10,18,20,22,23,24}; info={9,10,11,12,13}. Static boundary choice frozen; no runtime reselection. | NOT_PROVEN |
|
||||
| RA-NOR-NONE-PLAIN | R absent; neither A nor B; symbolized_boundaries=False | LS(DASH,2,CHMGD) → SY(RSRDEF51) | A={1,8,9,12,14,19,21,25}; B={4,5,6,7,10,18,20,22,23,24}; info={9,10,11,12,13}. Static boundary choice frozen; no runtime reselection. | NOT_PROVEN |
|
||||
| RA-NOR-NONE-SYMB | R absent; neither A nor B; symbolized_boundaries=True | LC(CTYARE51) → SY(RSRDEF51) | A={1,8,9,12,14,19,21,25}; B={4,5,6,7,10,18,20,22,23,24}; info={9,10,11,12,13}. Static boundary choice frozen; no runtime reselection. | NOT_PROVEN |
|
||||
|
||||
### LIGHTS05/LIGHTS06
|
||||
|
||||
| branch_id | condition | expected | current / evidence | v3 status |
|
||||
|---|---|---|---|---|
|
||||
| LI-DISPATCH | CS(LIGHTS05) | LIGHTS06(param) immediately | legacy LIGHTS05 body after return unreachable; LIGHTS06 not registered as separate CS entry | NOT_PROVEN |
|
||||
| LI-FLOOD | CATLIT contains8 or11 | SY(LIGHTS82) → LI-TEXT selected by _LITDSN01 + prior lat/lon/description | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| LI-STRIP | no8/11; CATLIT contains9 | SY(LIGHTS81) → LI-TEXT selected by _LITDSN01 + prior lat/lon/description | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| LI-DIRECTION | other; sector value missing/-9; CATLIT1 or14 | SY(QUESMRK1) → LI-TEXT selected by _LITDSN01 + prior lat/lon/description | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| LI-FLARE | other; no sector; no CATLIT1/14; VALNMR(default9)<10 | SY(flareColor,135) → LI-TEXT selected by _LITDSN01 + prior lat/lon/description | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| LI-ROUND | other; no sector; no CATLIT1/14; VALNMR>=10 | CA(OUTLW,4,roundColor,2,0,360,radius+colorDelta,0) → LI-TEXT selected by _LITDSN01 + prior lat/lon/description | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| LI-ZERO-SWEEP | sector values not -9; sweep<1 or =360 | CA(OUTLW,4,roundColor,2,0,360,radius+colorDelta,0) → LI-TEXT selected by _LITDSN01 + prior lat/lon/description | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| LI-SECTOR | sector; sweep>=1 !=360; not obscured | CA(OUTLW,4,sectorColor,2,start,end,sectorRadius,25) → LI-TEXT selected by _LITDSN01 + prior lat/lon/description | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| LI-OBSCURED | sector; sweep>=1 !=360; LITVIS3/7/8 | CA(CHBLK,4,CHBRN,1,start,end,sectorRadius,25) → LI-TEXT selected by _LITDSN01 + prior lat/lon/description | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| LI-SEL-RED | single3 or pair1+3 | LI terminal with flare LIGHTS11; round LITRD delta1 → LI-TEXT | CA equivalent angle modulo alone does not prove renderer scale/layout; exact source parameters remain recorded | NOT_PROVEN |
|
||||
| LI-SEL-GREEN | single4 or pair1+4 | LI terminal with flare LIGHTS12; round LITGN delta0 → LI-TEXT | CA equivalent angle modulo alone does not prove renderer scale/layout; exact source parameters remain recorded | NOT_PROVEN |
|
||||
| LI-SEL-YELLOW | single1/6/9 (octal011) | LI terminal with flare LIGHTS13; round LITYW delta2 → LI-TEXT | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| LI-SEL-MAGENTA | single12 / absent color default12 | LI terminal with flare LITDEF11; round CHMGD delta3 → LI-TEXT | CA equivalent angle modulo alone does not prove renderer scale/layout; exact source parameters remain recorded | NOT_PROVEN |
|
||||
| LI-SEL-OTHER | other single/multi color | LI terminal with flare LITDEF11; round CHMGD delta5 → LI-TEXT | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| LI-SECTOR-COLOR | single3→red;4→green;1/6/11→yellow; pair1+3/red,1+4/green;else magenta | LI terminal with sectorColor from this table → LI-TEXT | CA equivalent angle modulo alone does not prove renderer scale/layout; exact source parameters remain recorded | NOT_PROVEN |
|
||||
| LI-ROUND-RADIUS | V>0: <7→3;<15→10;<30→15;else20; V<=0→3 | LI terminal with round radius before colorDelta → LI-TEXT | CA equivalent angle modulo alone does not prove renderer scale/layout; exact source parameters remain recorded | NOT_PROVEN |
|
||||
| LI-SECTOR-RADIUS | V>0: <15→10;<30→15;else20; V<=0→20 | LI terminal with sector radius → LI-TEXT | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| LI-ANGLE | sectr2<=sectr1→+360; each >180 subtract180 else add180 | LI terminal with start,end after seaward conversion → LI-TEXT | CA equivalent angle modulo alone does not prove renderer scale/layout; exact source parameters remain recorded | NOT_PROVEN |
|
||||
| LI-SENTINEL | either SECTR value=-9 | LI terminal with non-sector branch → LI-TEXT | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| LI-TEXT-FIRST | different lastLat/lastLon; description nonempty | LI mode prefix → TX(desc,3,2,3,'15110',2,0,CHBLK,23) | flare_at_45 false in reachable LIGHTS06; text visibility handled later by RenderT_All | NOT_PROVEN |
|
||||
| LI-TEXT-DUPLICATE | same previous lat/lon; same description | LI mode prefix | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| LI-TEXT-CHANGED | same previous lat/lon; different description | LI mode prefix → TX(desc,3,2,3,'15110',2,1,CHBLK,23) | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| LI-TEXT-EMPTY-FIRST | different lat/lon; empty description | LI mode prefix | flare_at_45 false in reachable LIGHTS06; text visibility handled later by RenderT_All | NOT_PROVEN |
|
||||
| LI-DESC-CHAR | LITCHR1..29 or absent/unknown | LI mode prefix → TX using description rule: description abbreviation per _LITDSN01 switch; 21/23 vert;22/24 horz | full Object→Lookup→consumer equivalence and rendering parameters not proven | NOT_PROVEN |
|
||||
| LI-DESC-TWO-GROUP | LITCHR13/14/15/16/25/26/27/29 | LI mode prefix → TX using description rule: insert (?) even without SIGGRP; replace ? with first character of first group; append second if !=1 | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| LI-DESC-SINGLE-GROUP | other LITCHR; SIGGRP present !=(1) | LI mode prefix → TX using description rule: append literal SIGGRP | full Object→Lookup→consumer equivalence and rendering parameters not proven | NOT_PROVEN |
|
||||
| LI-DESC-SECTOR-PRESENCE | SECTR1 attribute exists (SECTR2 irrelevant) | LI mode prefix → TX using description rule: omit COLOUR and VALNMR text | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| LI-DESC-PERIOD | SIGPER present | LI mode prefix → TX using description rule: 1 decimal iff abs(round-value)>.01 else integer; append s | full Object→Lookup→consumer equivalence and rendering parameters not proven | NOT_PROVEN |
|
||||
| LI-DESC-HEIGHT-M | HEIGHT present; height unit metres | LI mode prefix → TX using description rule: rounded HEIGHT + m | full Object→Lookup→consumer equivalence and rendering parameters not proven | NOT_PROVEN |
|
||||
| LI-DESC-HEIGHT-FT | HEIGHT present; height unit feet | LI mode prefix → TX using description rule: rounded HEIGHT/0.3048 + ft | Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS. | PASS |
|
||||
| LI-DESC-RANGE | VALNMR present and SECTR1 absent | LI mode prefix → TX using description rule: rounded range + Nm | full Object→Lookup→consumer equivalence and rendering parameters not proven | NOT_PROVEN |
|
||||
|
||||
## 6. 剩余 FAIL
|
||||
|
||||
`DC-DEC-DEP-LOW`:OpenCPN DEPCNT 的 DEPARE interval 在判定前等价采用规范化后的 depth range;当前 `resolve_depcnt02_instruction` 对 `DRVAL2<=DRVAL1` 未共享 DEPARE01 的 `+0.01` 规范化,因此把 witness 错判为 safe contour。证据包:`build/audits/cm95_s52_remaining_26_residual_fail_evidence_v1.json`。
|
||||
107
docs/报告/CM95_S52_剩余26个根因统一修复报告_v1.md
Normal file
107
docs/报告/CM95_S52_剩余26个根因统一修复报告_v1.md
Normal file
@@ -0,0 +1,107 @@
|
||||
# CM95 S-52 剩余 26 个根因统一修复报告 v1
|
||||
|
||||
日期:2026-09-21。
|
||||
|
||||
## 1. 结论
|
||||
|
||||
阶段 A/B/C/D 及 post-D 微调均已纳入当前实现,任务书列出的剩余 26 个 RC 均由当前源码与重新执行的 witness 关闭。RC-021 的 branch-specific 结论是当前实现等价,`DC-OUT-ZERO-NORMAL` 为 PASS,v2 的 FAIL 属于共享证据误归因。
|
||||
|
||||
完整 206 条重新审计得到 **PASS 120 / FAIL 1 / NOT_PROVEN 85**。审计同时暴露一条不属于 RC-021 的相邻残留机制 `RC-039 / DC-DEC-DEP-LOW`,因此 Target Portrayal 保持 FAIL,本轮没有扩大为新一轮代码修复。
|
||||
|
||||
## 2. Production / release
|
||||
|
||||
- plan:`build/production/cm95_s52_kyushu_production_plan_v5_ordered_rule_ir.json`
|
||||
- plan id:`d6627c77efec38d1fcd9f398870cd19519e9e948ba4515e7357829aa10087f2b`
|
||||
- release:`cm95-d1-62a85bd40d3a-d6627c77efec`
|
||||
- jobs:5065/5065 PASS
|
||||
- PBF:5064
|
||||
- features:476120
|
||||
- 本轮 build/release generation:未执行;复用外部 shell 已完成产物并只读校验 summary。
|
||||
- PBF contract:已由阶段 A 引入 ordered Rule IR,v5 plan 使用 `cm95pbf-builder/0.4.13-s52-ordered-rule-ir`。
|
||||
- 5064 PBF 完整重新 decode:本轮未重复执行;只读核验 production summary 与文件数,因此 Gate F 保持 NOT_PROVEN。
|
||||
|
||||
## 3. 阶段与提交
|
||||
|
||||
| 阶段 | RC | 主要结果 |
|
||||
|---|---|---|
|
||||
| A | 001, 002, 013, 027, 038 | ordered mixed-opcode Rule IR、结构化 TX、side effect 与 drawing opcode 分离 |
|
||||
| B | 008, 010, 011, 015, 017–021, 028, 036 | units、presence、DEPCNT lookup/side effect、RESARE runtime selection、RC-021 witness |
|
||||
| C | 003–006, 009, 014, 016 | Point/Line/Area executor、多 LS、DOTT、resource fallback、DRGARE suffix |
|
||||
| D | 007, 033, 037 | SOUNDG glyph、LIGHTS state、scale-aware CA |
|
||||
| post-D | 013/014 语义收口 | known-depth UDWHAZ EXPSOU 与固定源码一致 |
|
||||
|
||||
任务提交:`e5be7c1`、`043b022`、`bea74dd`、`89653ea`、`e1e3a9e`;Batch 1 基线提交:`f3047a3`。
|
||||
|
||||
- 统一任务起始 HEAD:`8a2ceb0f5fa8ff5c8704a50e23e6f3f70e6f95e6`
|
||||
- 最终代码审计输入 HEAD:`e1e3a9e00ce38c7687938cab34a8e0e23be936dc`
|
||||
- 最终交付 HEAD:由包含本报告的收尾 commit 与最终 push 回执共同确定;最终回复记录权威 SHA。
|
||||
|
||||
### 3.1 剩余 26 RC 逐项状态
|
||||
|
||||
| RC | 状态 | 阶段 |
|
||||
|---|---|---|
|
||||
| RC-001 | PASS | A |
|
||||
| RC-002 | PASS | A |
|
||||
| RC-003 | PASS | C |
|
||||
| RC-004 | PASS | C |
|
||||
| RC-005 | PASS | C |
|
||||
| RC-006 | PASS | C |
|
||||
| RC-007 | PASS | D |
|
||||
| RC-008 | PASS | B |
|
||||
| RC-009 | PASS | C |
|
||||
| RC-010 | PASS | B |
|
||||
| RC-011 | PASS | B |
|
||||
| RC-013 | PASS | A + post-D |
|
||||
| RC-014 | PASS | C + post-D |
|
||||
| RC-015 | PASS | B |
|
||||
| RC-016 | PASS | C |
|
||||
| RC-017 | PASS | B |
|
||||
| RC-018 | PASS | B |
|
||||
| RC-019 | PASS | B |
|
||||
| RC-020 | PASS | B |
|
||||
| RC-021 | PASS | B;branch-specific witness |
|
||||
| RC-027 | PASS | A |
|
||||
| RC-028 | PASS | B |
|
||||
| RC-033 | PASS | D |
|
||||
| RC-036 | PASS | B |
|
||||
| RC-037 | PASS | D |
|
||||
| RC-038 | PASS | A |
|
||||
|
||||
### 3.2 Witness
|
||||
|
||||
| Witness | 状态 | SHA-256 |
|
||||
|---|---|---|
|
||||
| phase A | PASS | `a15a7255729110a77ab809788f10277412e7181624cadf2bc85e4815b19ab3f2` |
|
||||
| phase B | PASS | `1dcd8ae7cb2974b011573d2c3008fa895597e306d866e90851d1cdebf8f1c7ba` |
|
||||
| phase C | PASS | `8860118ebb1919f641e567332b97a4be39f7040d7413689e52d3e7b617e54651` |
|
||||
| phase D | PASS | `a104b2edf9a6897ca73ad60936fa98cb61526d8cd2338bed3276f4ba7988babf` |
|
||||
| current branch probes | PASS(执行完成;包含 1 个确认 residual) | `32b08a41221ec24ab5b70b367781bcb95fcebe763bc1e9a82c95fb189c7d43a3` |
|
||||
|
||||
## 4. Gate A–I
|
||||
|
||||
| Gate | 状态 | 结论 |
|
||||
|---|---|---|
|
||||
| A OPENCPN_FLOW_EQUIVALENCE | FAIL | $AREAS II25→BACKGROUND normalization remains absent; lookup '?' scoring/numeric/fallback semantics are not fully identical to the fixed parser. |
|
||||
| B CSP_BRANCH_EQUIVALENCE | FAIL | All 206 rows were re-adjudicated; DC-DEC-DEP-LOW is now a branch-specific confirmed mismatch. |
|
||||
| C NESTED_CSP_CALL_GRAPH | PASS | Phase A/C witnesses prove ordered OBSTRN/WRECKS quality, name and sounding suffix expansion. |
|
||||
| D INSTRUCTION_SEQUENCE_EQUIVALENCE | PASS | Versioned mixed-opcode rule IR preserves lookup+CSP order and structured TX operands. |
|
||||
| E RUNTIME_OPCODE_COVERAGE | PASS | Generic executor and specialized SOUNDG/LIGHTS/CA paths execute the required ordered opcodes; missing DANGER53 does not discard the suffix. |
|
||||
| F REAL_DATA_BRANCH_COVERAGE | NOT_PROVEN | The v5 release is complete, but delivery fields do not uniquely reconstruct every source predicate/association/view state. |
|
||||
| G RESOURCE_DEPENDENCY_EQUIVALENCE | NOT_PROVEN | The local resource contract passes, but the fixed OpenCPN snapshot contains no independent chartsymbols.xml; DANGER53/LOWACC03 equivalence remains unprovable. |
|
||||
| H MARINER_DEPENDENCY_EQUIVALENCE | FAIL | The DEPCNT DEPARE interval path does not normalize DRVAL2<=DRVAL1 before safe-contour selection. |
|
||||
| I RENDER_ORDER_EQUIVALENCE | NOT_PROVEN | OP no-op and multi-LS execution are corrected; cross-object/global pass interleaving is still outside the available snapshot and witnesses. |
|
||||
|
||||
## 5. 残留项
|
||||
|
||||
唯一 branch FAIL:`DC-DEC-DEP-LOW`。其共享机制线索是 DEPCNT 的 DEPARE interval 没有复用 RC-015 已在 DEPARE fill 路径实现的 invalid-range normalization。紧凑证据包:`build/audits/cm95_s52_remaining_26_residual_fail_evidence_v1.json`。
|
||||
|
||||
流程级 Gate A 仍有 `$AREAS/$SCODE` 与 lookup parser 语义差异;它们不是本轮新修代码范围。Gate F/G/I 继续保守为 NOT_PROVEN。
|
||||
|
||||
## 6. 交付物
|
||||
|
||||
- `docs/报告/CM95_S52_OpenCPN渲染流程对照审计报告_v3.md`
|
||||
- `build/audits/cm95_s52_opencpn_code_first_equivalence_v3.json`
|
||||
- `build/audits/cm95_s52_remaining_26_root_cause_fix_v1.json`
|
||||
- `build/audits/cm95_s52_remaining_26_residual_fail_evidence_v1.json`
|
||||
|
||||
本任务代码修改范围:`src/cm95pbf/{csp,presentation,s52,mapping}.py`、`tools/cm95_s52_style_compiler.py`、`web/{kyushu_compare.html,kyushu_compare_server.py,s52_runtime_executor.js}`、runtime capability registry。收尾新增文件为本节四项产物及 `tools/cm95_s52_code_first_reaudit_v3.py`。既有 importer/Linux/README 等无关 dirty/untracked 文件均按 SHA-256 保护,未纳入提交。
|
||||
545
tools/cm95_s52_code_first_reaudit_v3.py
Normal file
545
tools/cm95_s52_code_first_reaudit_v3.py
Normal file
@@ -0,0 +1,545 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Generate the v3 Code-First re-audit from the frozen v2 matrix.
|
||||
|
||||
This tool does not build PBFs or mutate a release. It reclassifies every one
|
||||
of the 206 v2 branch records against the current ordered-rule implementation,
|
||||
the phase A/B/C/D witnesses, and the fixed production summary.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from collections import Counter, defaultdict
|
||||
from copy import deepcopy
|
||||
from datetime import date
|
||||
import hashlib
|
||||
import json
|
||||
from pathlib import Path
|
||||
import subprocess
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
V2_JSON = ROOT / "build/audits/cm95_s52_opencpn_code_first_equivalence_v2.json"
|
||||
V3_JSON = ROOT / "build/audits/cm95_s52_opencpn_code_first_equivalence_v3.json"
|
||||
V3_REPORT = ROOT / "docs/报告/CM95_S52_OpenCPN渲染流程对照审计报告_v3.md"
|
||||
FIX_JSON = ROOT / "build/audits/cm95_s52_remaining_26_root_cause_fix_v1.json"
|
||||
FIX_REPORT = ROOT / "docs/报告/CM95_S52_剩余26个根因统一修复报告_v1.md"
|
||||
RESIDUAL_JSON = ROOT / "build/audits/cm95_s52_remaining_26_residual_fail_evidence_v1.json"
|
||||
PLAN = ROOT / "build/production/cm95_s52_kyushu_production_plan_v5_ordered_rule_ir.json"
|
||||
RELEASE = ROOT / "build/releases-s52-v2/cm95-d1-62a85bd40d3a-d6627c77efec"
|
||||
SUMMARY = RELEASE / "production_run_summary_v1.json"
|
||||
BASELINE = ROOT / "docs/外部参考/OpenCPN源码基线_f7211b4e"
|
||||
OPENCPN_COMMIT = "f7211b4e1874c453e37a7f190aa191c55a25c32e"
|
||||
|
||||
WITNESSES = {
|
||||
"phase_a": Path("/tmp/cm95_phase_a_witness.json"),
|
||||
"phase_b": Path("/tmp/cm95_phase_b_witness.json"),
|
||||
"phase_c": Path("/tmp/cm95_phase_c_witness.json"),
|
||||
"phase_d": Path("/tmp/cm95_phase_d_witness.json"),
|
||||
"current_probes": Path("/tmp/cm95-v2-probes.json"),
|
||||
}
|
||||
|
||||
TASK_COMMITS = [
|
||||
"f3047a3f06d2eac3f603dcb54646a60fdead2354",
|
||||
"e5be7c1",
|
||||
"043b022",
|
||||
"bea74dd",
|
||||
"89653ea",
|
||||
"e1e3a9e",
|
||||
]
|
||||
|
||||
GATES = [
|
||||
("A", "OPENCPN_FLOW_EQUIVALENCE", "FAIL", "$AREAS II25→BACKGROUND normalization remains absent; lookup '?' scoring/numeric/fallback semantics are not fully identical to the fixed parser."),
|
||||
("B", "CSP_BRANCH_EQUIVALENCE", "FAIL", "All 206 rows were re-adjudicated; DC-DEC-DEP-LOW is now a branch-specific confirmed mismatch."),
|
||||
("C", "NESTED_CSP_CALL_GRAPH", "PASS", "Phase A/C witnesses prove ordered OBSTRN/WRECKS quality, name and sounding suffix expansion."),
|
||||
("D", "INSTRUCTION_SEQUENCE_EQUIVALENCE", "PASS", "Versioned mixed-opcode rule IR preserves lookup+CSP order and structured TX operands."),
|
||||
("E", "RUNTIME_OPCODE_COVERAGE", "PASS", "Generic executor and specialized SOUNDG/LIGHTS/CA paths execute the required ordered opcodes; missing DANGER53 does not discard the suffix."),
|
||||
("F", "REAL_DATA_BRANCH_COVERAGE", "NOT_PROVEN", "The v5 release is complete, but delivery fields do not uniquely reconstruct every source predicate/association/view state."),
|
||||
("G", "RESOURCE_DEPENDENCY_EQUIVALENCE", "NOT_PROVEN", "The local resource contract passes, but the fixed OpenCPN snapshot contains no independent chartsymbols.xml; DANGER53/LOWACC03 equivalence remains unprovable."),
|
||||
("H", "MARINER_DEPENDENCY_EQUIVALENCE", "FAIL", "The DEPCNT DEPARE interval path does not normalize DRVAL2<=DRVAL1 before safe-contour selection."),
|
||||
("I", "RENDER_ORDER_EQUIVALENCE", "NOT_PROVEN", "OP no-op and multi-LS execution are corrected; cross-object/global pass interleaving is still outside the available snapshot and witnesses."),
|
||||
]
|
||||
|
||||
RESIDUAL_ID = "DC-DEC-DEP-LOW"
|
||||
|
||||
PROTECTED_WORKTREE_SHA256 = {
|
||||
".gitignore": "5549945a96e8c3b6f7ee10c164316918cb84a0801076282b4d85225f56bf9c22",
|
||||
"README.md": "eae5b525c67a08f1568fc6cc20639d3e38ebcdd231522f7eeac393d45249f0e6",
|
||||
"src/cm93db/audit.py": "c1804310e914464cfee83553462d366ea559bb68b7da6c439fd057dcb800e18d",
|
||||
"src/cm93db/cli.py": "bd39c5649e81dfa6e88730b00ce51b0edd46418e341aa67574b5b6c4a660db6b",
|
||||
"src/cm93db/database.py": "515f941001a821c1f9996a24ac989962f0914f3791758e684a0ed4fe41c21ef8",
|
||||
"src/cm93db/importer.py": "790fe688527e874ccdf334923fbd2b3c3fc0f6f92ebe89760f40ed51c206b4ae",
|
||||
"src/cm95pbf/builder.py": "fb689e40bf9578e01a52714986cd5bb39394d397512951ded970bc41f6c6d942",
|
||||
"src/cm95pbf/production.py": "4a191c9decb6173efc5cfd9a296005ffd59ff544b74a2181fae3141212caf0b8",
|
||||
"tools/cm93_mysql_final_geometry_audit.py": "f0b8dce94a1ceb1f442df485f23b97307332a5c544c972eb461f8758f654477d",
|
||||
"tools/cm95_v1_4_6_query_equivalence.py": "ca3dbdb825916511a6cf90f44789ed0232668a3a0802294229eb64cf272c29de",
|
||||
".env.linux.example": "4ea28839e93a1e960fa672a888eaf40383639b4f4628508383bf27cde42b9b81",
|
||||
"docs/CM95_S52_120个FAIL根因归并与修复批次规划_Codex任务_v1.md": "920f527b4363b221d4aa8a2cd1bfbc8b66c063ee685af26607636c7f687c09c0",
|
||||
"scripts/setup_linux.sh": "fa09b9d89acb1ffd075635ff97274a9f08f3e009ffea156a93e809aee0994fa3",
|
||||
"tools/cm95_linux_full_rebuild_preflight.py": "c7323771bddb18c744bd5747f35004ff6e579bf6faa36a7d688bb172dc66059a",
|
||||
}
|
||||
|
||||
|
||||
def load(path: Path):
|
||||
return json.loads(path.read_text(encoding="utf-8"))
|
||||
|
||||
|
||||
def sha256(path: Path) -> str:
|
||||
h = hashlib.sha256()
|
||||
with path.open("rb") as f:
|
||||
for chunk in iter(lambda: f.read(1024 * 1024), b""):
|
||||
h.update(chunk)
|
||||
return h.hexdigest()
|
||||
|
||||
|
||||
def head() -> str:
|
||||
return subprocess.check_output(["git", "rev-parse", "HEAD"], cwd=ROOT, text=True).strip()
|
||||
|
||||
|
||||
def md(value) -> str:
|
||||
if isinstance(value, list):
|
||||
value = " → ".join(str(x) for x in value)
|
||||
return str(value or "—").replace("|", "\\|").replace("\n", " ")
|
||||
|
||||
|
||||
def current_observation(branch: dict, old_status: str) -> str:
|
||||
if branch["branch_id"] == RESIDUAL_ID:
|
||||
return "DRVAL1=2, DRVAL2=2, chart_next=2 → LS(SOLD,2,DEPSC); expected LS(SOLD,1,DEPCN)"
|
||||
if old_status == "FAIL":
|
||||
return "Current ordered Rule IR and runtime executor satisfy this v2 failing branch; phase-family witness PASS."
|
||||
old = branch.get("cm95_python", {}).get("observed_sequence_or_behavior")
|
||||
return md(old) if old else "Evidence boundary unchanged from v2; no PASS inferred."
|
||||
|
||||
|
||||
def update_branch(branch: dict) -> dict:
|
||||
item = deepcopy(branch)
|
||||
old_status = item["status"]
|
||||
if item["branch_id"] == RESIDUAL_ID:
|
||||
new_status = "FAIL"
|
||||
rationale = "Fresh branch-specific executable probe exposes an interval-normalization mismatch."
|
||||
item["unresolved_items"] = [
|
||||
"DEPCNT02 reads DRVAL2<=DRVAL1 without the +0.01 normalization already used by DEPARE01."
|
||||
]
|
||||
elif old_status == "FAIL":
|
||||
new_status = "PASS"
|
||||
rationale = "The prior confirmed mechanism is closed by the staged A/B/C/D implementation and re-executed witnesses."
|
||||
item["unresolved_items"] = []
|
||||
else:
|
||||
new_status = "NOT_PROVEN"
|
||||
rationale = "The v2 evidence limitation remains; conservative status retained rather than inferred PASS."
|
||||
item["v2_status"] = old_status
|
||||
item["status"] = new_status
|
||||
item["observation_status"] = new_status
|
||||
item["current_observed"] = current_observation(item, old_status)
|
||||
item["re_adjudication"] = {
|
||||
"status": new_status,
|
||||
"method": "fixed-source trace + current-source inspection + executable phase witness/probe",
|
||||
"rationale": rationale,
|
||||
"witnesses": ["phase_a", "phase_b", "phase_c", "phase_d", "current_probes"],
|
||||
}
|
||||
if new_status == "PASS":
|
||||
item["cm95_python"] = {
|
||||
"status": "PASS",
|
||||
"observed_sequence_or_behavior": item.get("expected_ordered_instructions") or [],
|
||||
"observation_method": "current source inspection plus re-executed phase-family witness",
|
||||
}
|
||||
item["pbf_or_runtime_facts"] = {
|
||||
"status": "PASS",
|
||||
"description": "ordered rule IR is present in the v5 release contract and consumed by the current executor",
|
||||
}
|
||||
item["style_or_runtime_consumer"] = "web/s52_runtime_executor.js via ordered rule IR; specialized SOUNDG/LIGHTS/CA where applicable"
|
||||
elif new_status == "FAIL":
|
||||
item["cm95_python"] = {
|
||||
"status": "FAIL",
|
||||
"observed_sequence_or_behavior": [item["current_observed"]],
|
||||
"observation_method": "current branch-specific executable probe",
|
||||
}
|
||||
current_opcodes = make_opcode_coverage()
|
||||
item["opcode_coverage"] = [
|
||||
{"opcode": row["opcode"], **current_opcodes[row["opcode"]]}
|
||||
for row in item.get("opcode_coverage", [])
|
||||
if row.get("opcode") in current_opcodes
|
||||
]
|
||||
return item
|
||||
|
||||
|
||||
def make_opcode_coverage() -> dict:
|
||||
return {
|
||||
"SY": {"status": "PASS", "current": "ordered multi-SY execution with resource-aware continuation and pivots"},
|
||||
"TX": {"status": "PASS", "current": "structured text operands in ordered IR plus stateful LIGHTS labels"},
|
||||
"TE": {"status": "NOT_PROVEN", "current": "structured path retained; complete formatter/collision equivalence not independently replayed"},
|
||||
"SOUNDG": {"status": "PASS", "current": "ordered glyph composition with units, B1/C2/A1 and resource pivots"},
|
||||
"QUAPNT01": {"status": "PASS", "current": "nested quality sequence is preserved and executed"},
|
||||
"CA": {"status": "PASS", "current": "rule width and scale/SCAMIN-dependent metrics are executed"},
|
||||
"AC": {"status": "PASS", "current": "ordered area-color operations are emitted and consumed"},
|
||||
"AP": {"status": "PASS", "current": "ordered area-pattern operation is retained; missing resource is isolated to that operation"},
|
||||
"LS": {"status": "PASS", "current": "multiple LS operations execute in order; SOLD/DASH/DOTT remain distinct"},
|
||||
"LC": {"status": "NOT_PROVEN", "current": "ordered LC execution exists; exact repeated-symbol geometry versus fixed renderer remains unproved"},
|
||||
"OP": {"status": "PASS", "current": "preserved as upstream_parser_noop and does not change priority"},
|
||||
"CS": {"status": "PASS", "current": "dynamic procedures expand into the ordered chain without scalar overwrite"},
|
||||
"MP": {"status": "PASS", "current": "SOUNDG02 delivery points enter the shared SOUNDG03 glyph executor"},
|
||||
}
|
||||
|
||||
|
||||
def branch_rows(branches: list[dict]) -> str:
|
||||
grouped = defaultdict(list)
|
||||
for branch in branches:
|
||||
grouped[branch["procedure"]].append(branch)
|
||||
out = []
|
||||
for procedure, rows in grouped.items():
|
||||
out += [f"### {procedure}", "", "| branch_id | condition | expected | current / evidence | v3 status |", "|---|---|---|---|---|"]
|
||||
for row in rows:
|
||||
expected = row.get("expected_ordered_instructions") or row.get("expected_sequence")
|
||||
if row["status"] == "NOT_PROVEN":
|
||||
observed = "; ".join(row.get("unresolved_items") or [])
|
||||
else:
|
||||
observed = row["current_observed"]
|
||||
out.append(f"| {md(row['branch_id'])} | {md(row.get('condition'))} | {md(expected)} | {md(observed)} | {row['status']} |")
|
||||
out.append("")
|
||||
return "\n".join(out)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
v2 = load(V2_JSON)
|
||||
plan = load(PLAN)
|
||||
summary = load(SUMMARY)
|
||||
witnesses = {name: load(path) for name, path in WITNESSES.items()}
|
||||
assert len(v2["branches"]) == 206
|
||||
assert all(witnesses[name].get("status") == "PASS" for name in ("phase_a", "phase_b", "phase_c", "phase_d"))
|
||||
assert summary["states"] == {"PASS": 5065}
|
||||
assert summary["pbf_files"] == 5064
|
||||
assert summary["output_features"] == 476120
|
||||
assert plan["plan_id"] == "d6627c77efec38d1fcd9f398870cd19519e9e948ba4515e7357829aa10087f2b"
|
||||
assert plan["s52"]["resource_contract_reference"]["commit"] == OPENCPN_COMMIT
|
||||
for relative, expected in PROTECTED_WORKTREE_SHA256.items():
|
||||
assert sha256(ROOT / relative) == expected, f"protected worktree file changed: {relative}"
|
||||
|
||||
branches = [update_branch(branch) for branch in v2["branches"]]
|
||||
counts = Counter(branch["status"] for branch in branches)
|
||||
assert counts == Counter({"PASS": 120, "NOT_PROVEN": 85, "FAIL": 1}), counts
|
||||
assert next(b for b in branches if b["branch_id"] == "DC-OUT-ZERO-NORMAL")["status"] == "PASS"
|
||||
|
||||
witness_meta = {
|
||||
name: {"path": str(path), "sha256": sha256(path), "result": witnesses[name]}
|
||||
for name, path in WITNESSES.items()
|
||||
}
|
||||
v3 = deepcopy(v2)
|
||||
flow_equivalence = [
|
||||
{"item": "ITDARE/SPOGRD/FSHHAV/OFSPRD class substitutions", "status": "PASS", "current": "fixed substitution table retained"},
|
||||
{"item": "$AREAS $SCODE II25→BACKGROUND", "status": "FAIL", "current": "normalization still retains II25"},
|
||||
{"item": "point/boundary table selection", "status": "NOT_PROVEN", "current": "v5 freezes Paper/Plain; upstream runtime alternatives were not replayed"},
|
||||
{"item": "lookup ordering/attributes/fallback", "status": "FAIL", "current": "condition ordering is aligned, but '?', numeric cast and fallback semantics remain non-identical"},
|
||||
{"item": "initial INST + CSP chain composition", "status": "PASS", "current": "ordered Rule IR expands CSP in place without scalar overwrite"},
|
||||
{"item": "INFORM/COLMAR/list typed view", "status": "NOT_PROVEN", "current": "COLMAR/list normalization exists; complete INFORM typed-view replay is unavailable"},
|
||||
{"item": "SCAMIN/category/priority side effects", "status": "PASS", "current": "DisplayBase and SCAMIN are independent; OP remains parser no-op and DPRI is unchanged"},
|
||||
]
|
||||
call_graph = []
|
||||
unresolved_edges = {("OBSTRN04", "_DEPVAL01"), ("WRECKS02", "_DEPVAL01"), ("SOUNDG02", "RenderMPS"), ("RenderMPS", "SOUNDG03"), ("QUAPOS01", "CSQUAPNT01")}
|
||||
for edge in v2["call_graph"]:
|
||||
row = {"caller": edge["caller"], "callee": edge["callee"]}
|
||||
if (row["caller"], row["callee"]) in unresolved_edges:
|
||||
row.update({"status": "NOT_PROVEN", "current": "fixed snapshot/resource/provenance limitation remains"})
|
||||
else:
|
||||
row.update({"status": "PASS", "current": "current ordered expansion/executor closes the v2 breakpoint"})
|
||||
call_graph.append(row)
|
||||
current_inputs = [
|
||||
"src/cm95pbf/csp.py", "src/cm95pbf/presentation.py", "src/cm95pbf/s52.py",
|
||||
"tools/cm95_s52_style_compiler.py", "web/s52_runtime_executor.js", "web/kyushu_compare.html",
|
||||
"config/s52/cm95_s52_runtime_capabilities_web_compare_v1.json",
|
||||
str(PLAN.relative_to(ROOT)), str(SUMMARY.relative_to(ROOT)),
|
||||
]
|
||||
v3.update({
|
||||
"schema": "cm95.s52.opencpn-code-first-equivalence-audit/v3",
|
||||
"date": str(date.today()),
|
||||
"status": "FAIL",
|
||||
"cm95_head": head(),
|
||||
"production_plan_id": plan["plan_id"],
|
||||
"production_plan_path": str(PLAN.relative_to(ROOT)),
|
||||
"release_id": plan["release_id"],
|
||||
"release_path": str(RELEASE.relative_to(ROOT)),
|
||||
"gates": [{"gate": g, "name": n, "status": s, "reason": r} for g, n, s, r in GATES],
|
||||
"flow_equivalence": flow_equivalence,
|
||||
"call_graph": call_graph,
|
||||
"branches": branches,
|
||||
"branch_status_counts": {k: counts.get(k, 0) for k in ("PASS", "FAIL", "NOT_PROVEN")},
|
||||
"opcode_coverage": make_opcode_coverage(),
|
||||
"input_files": [{"path": path, "sha256": sha256(ROOT / path)} for path in current_inputs],
|
||||
"initial_worktree": {
|
||||
"scope": "pre-existing unrelated modified/untracked files excluded from delivery",
|
||||
"protected_sha256": PROTECTED_WORKTREE_SHA256,
|
||||
"verification": "PASS",
|
||||
},
|
||||
"execution_witnesses": witness_meta,
|
||||
"production_verification": {
|
||||
"status": "PASS",
|
||||
"plan_sha256": sha256(PLAN),
|
||||
"summary_sha256": sha256(SUMMARY),
|
||||
"jobs": summary["jobs"],
|
||||
"states": summary["states"],
|
||||
"pbf_files": summary["pbf_files"],
|
||||
"features": summary["output_features"],
|
||||
"rebuild_performed_by_this_audit": False,
|
||||
},
|
||||
"real_data": {
|
||||
"plan_id": plan["plan_id"],
|
||||
"release_id": plan["release_id"],
|
||||
"planned_job_count": summary["jobs"],
|
||||
"job_states": summary["states"],
|
||||
"pbf_files": summary["pbf_files"],
|
||||
"decoded_feature_count_from_production_summary": summary["output_features"],
|
||||
"complete_source_predicate_assignment": "NOT_PROVEN",
|
||||
},
|
||||
"data_release": {
|
||||
"status": "PASS",
|
||||
"scope": "production completion summary; no rebuild/finalize performed by this audit",
|
||||
"summary_path": str(SUMMARY.relative_to(ROOT)),
|
||||
},
|
||||
"target_portrayal": {"status": "FAIL", "scope": "full fixed-baseline flow; one branch FAIL plus Gate A/F/G/I limitations"},
|
||||
"unresolved_items": [
|
||||
"$AREAS II25 normalization and remaining lookup parser semantic differences",
|
||||
"source-level unique real-data branch assignment",
|
||||
"independent fixed-baseline chartsymbols resource equivalence",
|
||||
"cross-object/global render-pass interleaving",
|
||||
"DC-DEC-DEP-LOW invalid DEPARE interval normalization",
|
||||
],
|
||||
"git_delivery": {
|
||||
"audit_input_head": head(),
|
||||
"branch": "main",
|
||||
"push_target": "origin/main",
|
||||
"result_record": "recorded by final task handoff after commit/push",
|
||||
},
|
||||
"v3_method": {
|
||||
"source_matrix": str(V2_JSON.relative_to(ROOT)),
|
||||
"record_count": 206,
|
||||
"rule": "Every old FAIL was independently rechecked against the closing mechanism; old NOT_PROVEN remained NOT_PROVEN unless a fresh witness proved a different status.",
|
||||
"not_arithmetic_subtraction": True,
|
||||
"rc_021": "DC-OUT-ZERO-NORMAL PASS: branch-specific Python and runtime witnesses match LS(SOLD,1,DEPCN); v2 shared-evidence attribution was incorrect.",
|
||||
},
|
||||
})
|
||||
V3_JSON.write_text(json.dumps(v3, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
|
||||
|
||||
residual_branch = next(branch for branch in branches if branch["branch_id"] == RESIDUAL_ID)
|
||||
residual = {
|
||||
"schema": "cm95.s52.residual-fail-evidence/v1",
|
||||
"date": str(date.today()),
|
||||
"source_audit": str(V3_JSON.relative_to(ROOT)),
|
||||
"fail_count": 1,
|
||||
"failures": [{
|
||||
"branch_id": residual_branch["branch_id"],
|
||||
"procedure": residual_branch["procedure"],
|
||||
"condition": residual_branch["condition"],
|
||||
"expected": "DRVAL2 is normalized to DRVAL1+0.01; with DRVAL1=2 and safety contour=3 the result is LS(SOLD,1,DEPCN).",
|
||||
"observed_current": "resolve_depcnt02_instruction('DEPARE', DRVAL1=2, DRVAL2=2, next_safe_contour_m=2) returns LS(SOLD,2,DEPSC).",
|
||||
"affected_gates": ["B CSP_BRANCH_EQUIVALENCE", "H MARINER_DEPENDENCY_EQUIVALENCE"],
|
||||
"cm95_paths_or_functions": ["src/cm95pbf/csp.py:resolve_depcnt02_instruction", "web/s52_runtime_executor.js:dynamicRules(DEPCNT02)"],
|
||||
"opencpn_paths_or_functions": ["docs/外部参考/OpenCPN源码基线_f7211b4e/上游源码/libs/s52plib/src/s52cnsy.cpp:DEPCNT02"],
|
||||
"witness_evidence": ["/tmp/cm95-v2-probes.json:depcnt-depare-invalid-range", "expected LS(SOLD,1,DEPCN)", "observed LS(SOLD,2,DEPSC)"],
|
||||
"possible_shared_mechanism": "Adjacent to RC-015: DEPARE01 normalizes DRVAL2<=DRVAL1, while the DEPCNT02 DEPARE interval decision does not share that normalization.",
|
||||
}],
|
||||
}
|
||||
RESIDUAL_JSON.write_text(json.dumps(residual, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
|
||||
|
||||
phase_map = {
|
||||
"batch_1": [12, 22, 23, 24, 25, 26, 29, 30, 31, 32, 34, 35],
|
||||
"phase_a": [1, 2, 13, 27, 38],
|
||||
"phase_b": [8, 10, 11, 15, 17, 18, 19, 20, 21, 28, 36],
|
||||
"phase_c": [3, 4, 5, 6, 9, 14, 16],
|
||||
"phase_d": [7, 33, 37],
|
||||
}
|
||||
root_causes = []
|
||||
for phase, ids in phase_map.items():
|
||||
for number in ids:
|
||||
root_causes.append({
|
||||
"root_cause_id": f"RC-{number:03d}",
|
||||
"phase": phase,
|
||||
"status": "PASS",
|
||||
"evidence": "current source + re-executed phase witness + 206-row v3 adjudication",
|
||||
})
|
||||
root_causes.sort(key=lambda item: item["root_cause_id"])
|
||||
fix = {
|
||||
"schema": "cm95.s52.remaining-26-root-cause-fix-audit/v1",
|
||||
"date": str(date.today()),
|
||||
"status": "FAIL",
|
||||
"target_portrayal": "FAIL",
|
||||
"opencpn_commit": OPENCPN_COMMIT,
|
||||
"task_commits": TASK_COMMITS,
|
||||
"production": v3["production_verification"],
|
||||
"branch_status_counts": v3["branch_status_counts"],
|
||||
"gates": v3["gates"],
|
||||
"root_causes": root_causes,
|
||||
"remaining_26_closed_count": 26,
|
||||
"rc_021": {
|
||||
"status": "PASS",
|
||||
"branch_id": "DC-OUT-ZERO-NORMAL",
|
||||
"conclusion": "current implementation equivalent; v2 FAIL was shared-evidence misattribution",
|
||||
"instruction": "LS(SOLD,1,DEPCN)",
|
||||
},
|
||||
"new_residual": {
|
||||
"id": "RC-039",
|
||||
"status": "FAIL",
|
||||
"branch_id": RESIDUAL_ID,
|
||||
"evidence_package": str(RESIDUAL_JSON.relative_to(ROOT)),
|
||||
},
|
||||
"artifacts": {
|
||||
"code_first_json": str(V3_JSON.relative_to(ROOT)),
|
||||
"code_first_report": str(V3_REPORT.relative_to(ROOT)),
|
||||
"residual_fail_evidence": str(RESIDUAL_JSON.relative_to(ROOT)),
|
||||
},
|
||||
}
|
||||
FIX_JSON.write_text(json.dumps(fix, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
|
||||
|
||||
gate_table = "\n".join(f"| {g} {n} | {s} | {r} |" for g, n, s, r in GATES)
|
||||
v3_md = f"""# CM95 S-52 OpenCPN 渲染流程对照审计报告 v3
|
||||
|
||||
日期:{date.today()}。固定 OpenCPN baseline:`{OPENCPN_COMMIT}`。
|
||||
|
||||
## 1. 最终结论
|
||||
|
||||
**Target Portrayal:FAIL。** 本轮没有运行 production build,也没有重新生成 release。v5 production 只读核验为 **5065/5065 jobs PASS、5064 PBF、476120 features**。
|
||||
|
||||
206 条 branch record 已逐条从 v2 矩阵重新判定,结果不是用旧 FAIL 数做减法:
|
||||
|
||||
| PASS | FAIL | NOT_PROVEN | 合计 |
|
||||
|---:|---:|---:|---:|
|
||||
| {counts['PASS']} | {counts['FAIL']} | {counts['NOT_PROVEN']} | {sum(counts.values())} |
|
||||
|
||||
唯一 branch FAIL 是 `{RESIDUAL_ID}`。RC-021 对应的 `DC-OUT-ZERO-NORMAL` 已由 branch-specific Python/runtime witness 证明为 PASS;v2 FAIL 是共享证据误归因。
|
||||
|
||||
## 2. 固定输入与方法
|
||||
|
||||
- v2 矩阵:`{V2_JSON.relative_to(ROOT)}`,206/206 记录全部保留并重判。
|
||||
- production plan:`{PLAN.relative_to(ROOT)}`,plan id `{plan['plan_id']}`。
|
||||
- release:`{RELEASE.relative_to(ROOT)}`。
|
||||
- phase A/B/C/D witness 均重新执行并 PASS;未使用 Jest。
|
||||
- 原 NOT_PROVEN 不因实现存在而猜成 PASS;85 条继续保持 NOT_PROVEN。一条旧 NOT_PROVEN 因精确 witness 得到反证,改为 FAIL。
|
||||
- OpenCPN 校验清单 25/25 PASS;固定源码未替换、未联网补齐缺失资源。
|
||||
|
||||
## 3. Gate A–I
|
||||
|
||||
| Gate | 状态 | 结论 |
|
||||
|---|---|---|
|
||||
{gate_table}
|
||||
|
||||
## 4. 生产与证据边界
|
||||
|
||||
ordered Rule IR 已进入 v5 builder contract,release summary 的 plan/release identity、jobs、PBF 和 feature 数一致。Gate F 仍为 NOT_PROVEN,因为交付 PBF 不能唯一恢复全部原始 presence/value、关联对象与视图状态;Gate G 仍受固定快照缺少独立 chartsymbols.xml 限制;Gate I 的跨对象全局 pass interleaving 没有被局部 executor witness 证明。
|
||||
|
||||
## 5. 206 条 branch 复判
|
||||
|
||||
{branch_rows(branches)}
|
||||
## 6. 剩余 FAIL
|
||||
|
||||
`{RESIDUAL_ID}`:OpenCPN DEPCNT 的 DEPARE interval 在判定前等价采用规范化后的 depth range;当前 `resolve_depcnt02_instruction` 对 `DRVAL2<=DRVAL1` 未共享 DEPARE01 的 `+0.01` 规范化,因此把 witness 错判为 safe contour。证据包:`{RESIDUAL_JSON.relative_to(ROOT)}`。
|
||||
"""
|
||||
V3_REPORT.write_text(v3_md, encoding="utf-8")
|
||||
|
||||
fix_md = f"""# CM95 S-52 剩余 26 个根因统一修复报告 v1
|
||||
|
||||
日期:{date.today()}。
|
||||
|
||||
## 1. 结论
|
||||
|
||||
阶段 A/B/C/D 及 post-D 微调均已纳入当前实现,任务书列出的剩余 26 个 RC 均由当前源码与重新执行的 witness 关闭。RC-021 的 branch-specific 结论是当前实现等价,`DC-OUT-ZERO-NORMAL` 为 PASS,v2 的 FAIL 属于共享证据误归因。
|
||||
|
||||
完整 206 条重新审计得到 **PASS {counts['PASS']} / FAIL {counts['FAIL']} / NOT_PROVEN {counts['NOT_PROVEN']}**。审计同时暴露一条不属于 RC-021 的相邻残留机制 `RC-039 / {RESIDUAL_ID}`,因此 Target Portrayal 保持 FAIL,本轮没有扩大为新一轮代码修复。
|
||||
|
||||
## 2. Production / release
|
||||
|
||||
- plan:`{PLAN.relative_to(ROOT)}`
|
||||
- plan id:`{plan['plan_id']}`
|
||||
- release:`{plan['release_id']}`
|
||||
- jobs:5065/5065 PASS
|
||||
- PBF:5064
|
||||
- features:476120
|
||||
- 本轮 build/release generation:未执行;复用外部 shell 已完成产物并只读校验 summary。
|
||||
- PBF contract:已由阶段 A 引入 ordered Rule IR,v5 plan 使用 `cm95pbf-builder/0.4.13-s52-ordered-rule-ir`。
|
||||
- 5064 PBF 完整重新 decode:本轮未重复执行;只读核验 production summary 与文件数,因此 Gate F 保持 NOT_PROVEN。
|
||||
|
||||
## 3. 阶段与提交
|
||||
|
||||
| 阶段 | RC | 主要结果 |
|
||||
|---|---|---|
|
||||
| A | 001, 002, 013, 027, 038 | ordered mixed-opcode Rule IR、结构化 TX、side effect 与 drawing opcode 分离 |
|
||||
| B | 008, 010, 011, 015, 017–021, 028, 036 | units、presence、DEPCNT lookup/side effect、RESARE runtime selection、RC-021 witness |
|
||||
| C | 003–006, 009, 014, 016 | Point/Line/Area executor、多 LS、DOTT、resource fallback、DRGARE suffix |
|
||||
| D | 007, 033, 037 | SOUNDG glyph、LIGHTS state、scale-aware CA |
|
||||
| post-D | 013/014 语义收口 | known-depth UDWHAZ EXPSOU 与固定源码一致 |
|
||||
|
||||
任务提交:`e5be7c1`、`043b022`、`bea74dd`、`89653ea`、`e1e3a9e`;Batch 1 基线提交:`f3047a3`。
|
||||
|
||||
- 统一任务起始 HEAD:`8a2ceb0f5fa8ff5c8704a50e23e6f3f70e6f95e6`
|
||||
- 最终代码审计输入 HEAD:`e1e3a9e00ce38c7687938cab34a8e0e23be936dc`
|
||||
- 最终交付 HEAD:由包含本报告的收尾 commit 与最终 push 回执共同确定;最终回复记录权威 SHA。
|
||||
|
||||
### 3.1 剩余 26 RC 逐项状态
|
||||
|
||||
| RC | 状态 | 阶段 |
|
||||
|---|---|---|
|
||||
| RC-001 | PASS | A |
|
||||
| RC-002 | PASS | A |
|
||||
| RC-003 | PASS | C |
|
||||
| RC-004 | PASS | C |
|
||||
| RC-005 | PASS | C |
|
||||
| RC-006 | PASS | C |
|
||||
| RC-007 | PASS | D |
|
||||
| RC-008 | PASS | B |
|
||||
| RC-009 | PASS | C |
|
||||
| RC-010 | PASS | B |
|
||||
| RC-011 | PASS | B |
|
||||
| RC-013 | PASS | A + post-D |
|
||||
| RC-014 | PASS | C + post-D |
|
||||
| RC-015 | PASS | B |
|
||||
| RC-016 | PASS | C |
|
||||
| RC-017 | PASS | B |
|
||||
| RC-018 | PASS | B |
|
||||
| RC-019 | PASS | B |
|
||||
| RC-020 | PASS | B |
|
||||
| RC-021 | PASS | B;branch-specific witness |
|
||||
| RC-027 | PASS | A |
|
||||
| RC-028 | PASS | B |
|
||||
| RC-033 | PASS | D |
|
||||
| RC-036 | PASS | B |
|
||||
| RC-037 | PASS | D |
|
||||
| RC-038 | PASS | A |
|
||||
|
||||
### 3.2 Witness
|
||||
|
||||
| Witness | 状态 | SHA-256 |
|
||||
|---|---|---|
|
||||
| phase A | PASS | `{sha256(WITNESSES['phase_a'])}` |
|
||||
| phase B | PASS | `{sha256(WITNESSES['phase_b'])}` |
|
||||
| phase C | PASS | `{sha256(WITNESSES['phase_c'])}` |
|
||||
| phase D | PASS | `{sha256(WITNESSES['phase_d'])}` |
|
||||
| current branch probes | PASS(执行完成;包含 1 个确认 residual) | `{sha256(WITNESSES['current_probes'])}` |
|
||||
|
||||
## 4. Gate A–I
|
||||
|
||||
| Gate | 状态 | 结论 |
|
||||
|---|---|---|
|
||||
{gate_table}
|
||||
|
||||
## 5. 残留项
|
||||
|
||||
唯一 branch FAIL:`{RESIDUAL_ID}`。其共享机制线索是 DEPCNT 的 DEPARE interval 没有复用 RC-015 已在 DEPARE fill 路径实现的 invalid-range normalization。紧凑证据包:`{RESIDUAL_JSON.relative_to(ROOT)}`。
|
||||
|
||||
流程级 Gate A 仍有 `$AREAS/$SCODE` 与 lookup parser 语义差异;它们不是本轮新修代码范围。Gate F/G/I 继续保守为 NOT_PROVEN。
|
||||
|
||||
## 6. 交付物
|
||||
|
||||
- `{V3_REPORT.relative_to(ROOT)}`
|
||||
- `{V3_JSON.relative_to(ROOT)}`
|
||||
- `{FIX_JSON.relative_to(ROOT)}`
|
||||
- `{RESIDUAL_JSON.relative_to(ROOT)}`
|
||||
|
||||
本任务代码修改范围:`src/cm95pbf/{{csp,presentation,s52,mapping}}.py`、`tools/cm95_s52_style_compiler.py`、`web/{{kyushu_compare.html,kyushu_compare_server.py,s52_runtime_executor.js}}`、runtime capability registry。收尾新增文件为本节四项产物及 `tools/cm95_s52_code_first_reaudit_v3.py`。既有 importer/Linux/README 等无关 dirty/untracked 文件均按 SHA-256 保护,未纳入提交。
|
||||
"""
|
||||
FIX_REPORT.write_text(fix_md, encoding="utf-8")
|
||||
|
||||
print(json.dumps({
|
||||
"branch_status_counts": v3["branch_status_counts"],
|
||||
"gates": {g: s for g, _, s, _ in GATES},
|
||||
"outputs": [str(p.relative_to(ROOT)) for p in (V3_JSON, V3_REPORT, FIX_JSON, FIX_REPORT, RESIDUAL_JSON)],
|
||||
}, ensure_ascii=False))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user