Files
cadSet/text-to-cad/skills/cad-router/references/backend-contract.md
T
2026-07-23 15:12:28 +08:00

97 lines
3.7 KiB
Markdown

# Backend and artifact contract
## Router input
Capture these fields when known:
- Natural-language request and normalized part family.
- Units and dimensions.
- Manufacturing intent: machining, printing, laser cutting, simulation, or concept.
- Required primary and secondary output formats.
- New model versus modification, and existing source/artifact paths.
- Part versus assembly, standard components, mating requirements, and motion relationships.
- Required parameter controls, replay, semantic tags, or FreeCAD interchange.
- Geometry and visual validation targets.
- Optional schema `2.0` generalized experience library. Never pass a case
DesignIR, teacher STEP, source dimensions, coordinates, or surface references
to the selected backend.
- For modification, accept only an explicitly supplied original model or
editable generator plus the promoted library. Never inspect the parser
input/output corpus or a private case JSON.
## Route decision
Record:
- `selected_backend`: `build123d`, `simplecadapi`, or `cadam`.
- Origin project and optional executable adapter.
- `runner_skill`: installed Skill responsible for generation.
- Ranked backend scores and human-readable reasons.
- Fallback order.
- Workflow profiles such as `requirement_refinement` and `visual_repair`.
- Focused downstream Skills.
- Any explicit override and its reason.
- `operation`: create or modify; for modification also record the explicit
source path and whether the route uses native parameter editing, local feature
rebuilding, or experience-guided semantic reconstruction.
## Task manifest
Write `cad-task.json` beside the task artifacts with this minimum shape:
```json
{
"schema_version": "1.0",
"request": "Create a 120 mm connecting rod",
"route": {
"selected_backend": "build123d",
"runner_skill": "cad",
"project": "text-to-cad",
"fallback_order": ["simplecadapi", "cadam"],
"workflow_profiles": ["requirement_refinement", "visual_repair"]
},
"source": {
"path": "connecting_rod.py",
"format": "python",
"backend": "build123d"
},
"artifacts": [
{"path": "connecting_rod.step", "role": "primary"},
{"path": "connecting_rod.stl", "role": "secondary"}
],
"parameters": {},
"experience": {
"library": "../../../cad-experience-library/library.json",
"context_kind": "generalized_cad_experience_query",
"methods_applied": []
},
"assumptions": [],
"validation": [],
"viewer_links": []
}
```
Paths are relative to the task directory unless an external input must remain absolute.
Do not store authoritative model parameters in `cad-task.json`. Every part must
have a sibling `model-spec.json` that owns its parameter values, reconstruction
mode, parametric modification layer, and output paths. See `model-spec.md`.
For an imported STEP, use `exact_step_base`: copy the explicitly supplied file
into the task directory, record its checksum and geometry signature, and keep
the imported B-Rep unchanged when the modification list is empty. This is an
exact geometric base contract, not recovery of the original CAD feature tree.
## Backend adapter requirements
Any future executable adapter must:
1. Accept an explicit task directory and explicit source/output paths.
2. Never scan or generate an entire workspace implicitly.
3. Preserve a human-editable source of truth.
4. Report backend name and version.
5. Return nonzero on generation failure.
6. Emit machine-readable artifact paths and validation facts.
7. Avoid importing code from sibling Skill directories; call installed tools or self-contained runtimes.
8. Keep permanent CAD artifacts under the repository `models/` root when working inside this repository.
9. Start CAD Viewer at the task directory, not the repository-wide examples directory.