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"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user