Files
cadSet/text-to-cad/skills/cad-router/references/backend-contract.md
T
2026-07-27 17:40:16 +08:00

3.5 KiB

Backend and artifact contract

Router input

Capture these fields when known:

  • Natural-language request and normalized part family.
  • Units and dimensions.
  • STEP is the fixed geometry artifact format.
  • New model versus modification, and existing source/artifact paths.
  • Part versus assembly, standard components, mating requirements, and motion relationships.
  • Required parameter controls, replay, or semantic tags.
  • 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 or simplecadapi.
  • 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.
  • 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:

{
  "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"],
    "workflow_profiles": ["requirement_refinement", "visual_repair"]
  },
  "source": {
    "path": "connecting_rod.py",
    "format": "python",
    "backend": "build123d"
  },
  "artifacts": [
    {"path": "connecting_rod.step", "role": "primary"}
  ],
  "parameters": {},
  "experience": {
    "library": "../../../designir-pipeline/output/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 *.designir.json that owns its coordinate system, datums, parameters, expressions, features, constraints, edit interface, and validation contract. See designir-2.0.md.

For an uploaded STEP, keep teacher geometry in designir-pipeline/input/ and all private evidence, DesignIR candidates, rebuilds, and acceptance reports in designir-pipeline/runs/. The reconstruction task receives evidence but no teacher STEP or imported B-Rep.

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.