55 lines
1.8 KiB
Markdown
55 lines
1.8 KiB
Markdown
# Case JSON input contract
|
|
|
|
Case JSON is private evidence used only during induction. It may contain exact
|
|
parameters, but the inducer never copies those fields into published experience.
|
|
Store source STEP files in `cad-experience-plugin/parser/input` and generated
|
|
case JSON in `cad-experience-plugin/parser/output`.
|
|
|
|
Do not pass either folder or a case JSON to cad-router or a CAD backend.
|
|
Creation, modification, and reconstruction may consume only the promoted public
|
|
experience library.
|
|
|
|
Supported fields:
|
|
|
|
```json
|
|
{
|
|
"provenance": {"source_sha256": "..."},
|
|
"design_ir": {
|
|
"part_family": "flanged_hub_adapter",
|
|
"features": [{"type": "base_flange"}, {"type": "hollow_sleeve"}],
|
|
"constraints": [{"id": "coaxial_stack", "type": "coaxial"}],
|
|
"normalized_observations": [
|
|
{
|
|
"name": "sleeve_od_to_base_od",
|
|
"value": 0.35,
|
|
"numerator_role": "sleeve_outer_diameter",
|
|
"denominator_role": "base_outer_diameter"
|
|
}
|
|
]
|
|
},
|
|
"experience": {
|
|
"rules": [
|
|
{
|
|
"id": "bound_counterbore_to_host",
|
|
"scope": ["counterbore"],
|
|
"statement": "Terminate a counterbore at its host boundary.",
|
|
"repair": "Bind the cutter extent to the host feature."
|
|
}
|
|
],
|
|
"validation_targets": [
|
|
{
|
|
"id": "counterbore_host_boundary",
|
|
"check": "A counterbore does not cross an unrelated adjacent feature."
|
|
}
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
Rules and checks containing numeric literals are rejected because they are
|
|
likely instance answers. Ratios are accepted only through
|
|
`normalized_observations`, with an explicit numerator and denominator role.
|
|
|
|
Legacy distilled JSON can be used when it contains the fields above. Exact
|
|
`parameters`, `evidence`, centers, axes, and surface references are ignored.
|