first commit
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
# ModelDiagnosticVerifier Lessons
|
||||
|
||||
This file records diagnosis failures and the rule that prevents repeating them.
|
||||
|
||||
## Failure 2026-06-19: `装配体2.SLDASM` was wrongly diagnosed as problem
|
||||
|
||||
Context:
|
||||
|
||||
- `装配体2.SLDASM` is the textbook `b` pass case for the tight-fit sleeve disassembly rule.
|
||||
- The correct diagnosis is `pass` because the sleeve has an exposed axial push face, matching image example `b`.
|
||||
|
||||
Root cause:
|
||||
|
||||
- `SectionBrepExtractor` produced the important feature in `SketchGraph.Dimensions`, not in `SketchGraph.Relations`.
|
||||
- The verifier consumed section relations but ignored dimension-derived candidates.
|
||||
- Therefore `external_push_access` stayed incomplete and the final decision became `problem`.
|
||||
|
||||
Corrected behavior:
|
||||
|
||||
- `SketchGraph.Dimensions` is now read.
|
||||
- `exposed_sleeve_end_height_candidate` with role `exposed_push_face_candidate` can be promoted to model evidence.
|
||||
- The promoted evidence satisfies the `b_external_push_access` image 2D structure template.
|
||||
|
||||
Promotion rule currently used:
|
||||
|
||||
```text
|
||||
exposed_sleeve_end_height_candidate
|
||||
+ target sketch edge belongs to a sleeve
|
||||
+ height is meaningful
|
||||
=> exposed_axial_push_face
|
||||
=> outside_accessible_force_path
|
||||
=> owned_by(push_face, sleeve_material)
|
||||
=> force_direction_parallel_to_axis(push_face, sleeve_axis)
|
||||
=> can_push_or_strike(outside, push_face)
|
||||
=> adjacent_to_outside(push_face, outside)
|
||||
```
|
||||
|
||||
## Rules To Prevent Repeating This Failure
|
||||
|
||||
### 1. A model-side 2D structure instance is not only relations
|
||||
|
||||
- A model-side 2D structure instance is not only relations.
|
||||
- It must also consume dimensions, roles, anchors, and candidate annotations when they are produced by the extractor.
|
||||
- A candidate can be promoted to pass evidence only through an explicit promotion rule.
|
||||
|
||||
### 2. Candidate is not failure
|
||||
|
||||
Failure pattern:
|
||||
|
||||
- Treating an incomplete pass template as absent too early makes the final rule report `problem`.
|
||||
- In mechanical diagnosis, candidate evidence should remain visible in the result so the missing bridge can be debugged.
|
||||
|
||||
Correct rule:
|
||||
|
||||
- Keep `candidate`, `found`, and `missing` separate.
|
||||
- Only final decision uses `found`; debugging output must preserve candidates and missing relations.
|
||||
|
||||
### 3. Image template relations must map to model evidence names
|
||||
|
||||
Failure pattern:
|
||||
|
||||
- Image template requires `external_push_access`.
|
||||
- Model evidence may expose lower-level facts such as `exposed_sleeve_end_height_candidate`.
|
||||
- If there is no mapping, the verifier appears to "not understand" a correct model.
|
||||
|
||||
Correct rule:
|
||||
|
||||
- Every pass evidence type needs a model-evidence promotion path.
|
||||
- Do not rely only on literal relation name equality.
|
||||
|
||||
### 4. Merge duplicate sources before diagnosis
|
||||
|
||||
Failure pattern:
|
||||
|
||||
- When section evidence and structural evidence are both loaded, the same component or scene can appear twice.
|
||||
- Duplicate scenes make reports noisy and can mask which evidence actually caused a decision.
|
||||
|
||||
Correct rule:
|
||||
|
||||
- Merge components by component id.
|
||||
- Merge scenes by `(sceneType, target, host)`.
|
||||
- Preserve stronger confidence and union of evidence labels.
|
||||
|
||||
### 5. Do not let encoding damage classification
|
||||
|
||||
Failure pattern:
|
||||
|
||||
- Some older code had mojibake Chinese tokens for component classification.
|
||||
- Correct Chinese names such as `套筒` can be missed if only garbled tokens remain.
|
||||
|
||||
Correct rule:
|
||||
|
||||
- Keep component category inference robust:
|
||||
- use normal Chinese terms
|
||||
- use English aliases
|
||||
- prefer metadata from extractors when available
|
||||
- avoid depending on name classification when B-rep evidence already identifies owner/category
|
||||
|
||||
## Development Checklist For Each New Fault Rule
|
||||
|
||||
Before trusting a new rule, check all items below.
|
||||
|
||||
- Image side has a semantic rule and at least one image 2D structure template for every pass/problem example.
|
||||
- Each pass template lists both structure relations and required model evidence.
|
||||
- Every required model evidence item has a documented extraction or promotion path.
|
||||
- The model verifier consumes all extractor layers used by that path: components, contacts, section edges, section relations, dimensions, regions, roles, and annotations.
|
||||
- The report shows `found`, `candidate`, and `missing` for both model evidence and 2D structure relations.
|
||||
- Known positive and known negative examples are tested before generalizing the rule.
|
||||
- A `problem` result is not accepted until the missing evidence chain has been inspected.
|
||||
Reference in New Issue
Block a user