Files
cadSet/text-to-cad/skills/sdf/references/implementation-notes.md
T
2026-07-22 19:38:36 +08:00

2.4 KiB

SDF implementation notes

These notes describe the intended runtime shape after the rewrite. Keep this file accurate when implementation changes.

Implemented behavior

The SDF skill should:

  • generate explicit targets only;
  • validate generated XML before writing;
  • preserve existing gen_sdf() return compatibility: XML element, XML string, or envelope dict with xml;
  • accept envelope assumptions, warnings, and metadata fields;
  • support --strict warning-as-failure behavior;
  • optionally run gz sdf --check through --gz-check auto|required|never;
  • provide optional stdlib-only authoring helpers;
  • parse SDF XML from files or in-memory strings;
  • resolve local mesh files relative to the generated output location;
  • accept external mesh URI schemes without local filesystem resolution;
  • allow pure world files when structurally valid.

Intended bundled validation scope

The bundled validator should check common structural and numeric errors:

  • root element and version;
  • document shape and pure world support;
  • required names and duplicate names in local scopes;
  • pose value counts, rotation formats, finite values, degrees usage, quaternion normalization, and local relative_to resolution;
  • named frame attachment references and cycles;
  • joint type set, parent/child references, axis/axis2 values, limits, and dynamics numbers;
  • visual/collision owner names and geometry presence;
  • primitive geometry dimensions and mesh URI/scale;
  • local mesh path existence;
  • inertial mass and inertia tensor plausibility;
  • sensor name/type/update-rate structure;
  • plugin name/filename structure.

Remaining limitations

The bundled validator is still not a full libsdformat or simulator validator. It should not claim to fully validate:

  • every version-specific SDFormat schema rule;
  • all nested-model frame semantics;
  • transform math or resolved poses;
  • mesh unit conventions;
  • arbitrary mesh inertia or collision quality;
  • simulator-specific physics settings;
  • plugin schemas and runtime availability;
  • sensor runtime behavior;
  • target simulator support for every element.

Use the design ledger, structured diagnostics, gz sdf --check, simulator load tests, and explicit reporting of skipped checks.

Execution safety

The current launcher imports generator modules in-process. Generator Python files execute code and must be trusted project sources.