A Design Document defines the approved implementation architecture for one Epic or system boundary. Architecture-sensitive work is blocked until its DD is Accepted (governance §4).
- Naming:
DD-NNN-<slug>.md(e.g.,DD-001-toolpath-ir-and-capability-model.md). - Template:
DD-000-template.md. - Lifecycle: create the Epic → create the
DD: …child issue → draft the DD via a docs PR → review → merge → mark the Epic's DD gate satisfied → begin implementation issues. - Accepted DDs change only through a reviewable docs PR; a major reversal is an ADR or a superseding DD.
| ID | Title | Epic | Milestone | Status |
|---|---|---|---|---|
| DD-001 | ToolpathIR and Capability Model | E1 | M1 | Accepted 2026-07-22 (#26) |
| DD-002 | Package Boundaries and Public API Versioning | E1 | M1 | Accepted 2026-07-22 (#27) |
| DD-003 | Worker Parsing, Streaming, Transfer, and Resource Limits | E2 | M2 | Accepted 2026-07-22 with amendments (#41) |
| DD-004 | Three.js Rendering, Geometry, Layer Clipping, and Quality Modes | E3 | M2 | Accepted 2026-07-22 (#53) |
| DD-005 | Dialect Plugin and Container Adapter Contracts | E4 | M3 | Accepted 2026-07-22 with amendments (#70) |
| DD-006 | Normalized Live Progress and Source-Position Mapping | E5 | M4 | Accepted 2026-07-23 (#87) |
| DD-007 | Vue Integration and AnyBridge Consumer Boundary | E6 | M4 | Accepted 2026-07-23 with amendments (#101) |
| DD-008 | Release, Publication Readiness, Versioning & Support Policy | E7 | M5 | Accepted 2026-07-23 with amendments (#125) |
| DD-009 | Toolpath Annotations & Renderer Options | E9 | Future | Accepted 2026-07-23 (D1–D7 as recommended) (#160) |
| DD-010 | Motion-Model Correctness (extruder/positioning mode, arc planes, coordinate systems) | E10 | Future | Accepted 2026-07-24 (revised D1–D6) (#191) |
| DD-011 | Binary G-code (.bgcode) Decode Adapter |
E-bgcode (#188) | Future | Accepted 2026-07-27 (D1–D7 as recommended; D4 amended — metadata/thumbnails in-scope) — new @chestnutlabs/gcode-bgcode container adapter; heatshrink ISC-port + MeatPack clean-room (AGPL-clean, per RR-003); gated by §7.3 review + golden-equivalence |
| DD-012 | Non-extrusion toolpath (CNC/laser/plotter) & modal tool-state channels | #189 | Future | Accepted 2026-07-28 (D1–D8 as recommended) — additive MoveKind.Cut + one opt-in ModalChannel mechanism (owns tool-state and #180/RR-002 color channels → DD-015 retired), canned-cycle (G81–89) expansion, validation-tiered dialects; per RR-004 |
| DD-013 | Documentation, SDK Reference & Published Manual | E11 | Future | Accepted 2026-07-25 (D1–D7 as recommended) (#197) |
| DD-014 | Low-Resource Layer Mode (2D/adjacent-layer renderer over IR) | E8 (#9) | Future | Accepted 2026-07-26 (D1–D5 as recommended; D6 build-now on the AnyBridge evidence artifact) |
| DD-016 | Annotation-Derived Move Kinds (Wipe & Seam) | E9 (#182) | Future | Accepted 2026-07-27 (D1–D6 as recommended; D2 = narrow additive DD-005 sink amendment so a slicer-comment signal can set Wipe; seam a non-goal) |
| DD-017 | RS274NGC Parametric Programs (parameters, expressions & O-word flow) | #189 phase 7 | Shipped | Accepted — phases 1–3 built & shipped v0.18.0 (2026-08-27): parameters + expressions (#410), O-word control flow (#413), in-file subroutines (#415). On-demand interpreter engaged only on #/[/O-words (FDM byte-identical); bounded by maxProgramIterations/maxCallDepth; honesty-tiered parametricProgram. Phase 4 (capability/docs) done. Only the optional docs-polish tail + return-value propagation remain. Per RR-004 §9 |
| DD-020 | Interaction-aware render quality (progressive LOD) | #306 | M1 | Accepted 2026-08-24 — opt-in interactionQuality:'auto': reduce render detail (pixel ratio, bounded frame-time step) while the camera moves, restore on settle; keeps the vertex-budget fallback; consumer maps High/Balanced/Performance. Additive, default off. |
| DD-018 | ModelRenderer — source-model presentation rendering (STL/3MF) | ModelRenderer (new epic) | M1 | Accepted 2026-08-23 (all sections as proposed; §14 v1 = both STL+3MF sequential; §12 shared stage stays in gcode-renderer-three short-term) — new sibling @chestnutlabs/gcode-model-renderer for presentation/thumbnail renders of source STL/3MF (distinct from toolpath inspection); shared "stage" extraction, headless/offscreen (SwiftShader) contract with transparent+themed bg, multi-object + material-capable scene model from day one, deterministic export + (sourceHash, options, envId) cache key; consumer: AnyBridge thumbnail sidecar |
| DD-021 | Interactive source-model viewer (ModelViewer) |
ModelRenderer (DD-018 line) | M2 | Accepted 2026-08-24 (maintainer; AnyBridge boundary-reviewed, no blockers) — a distinct interactive createModelViewer(canvas) handle (orbit/zoom/pan of source STL/3MF, the live analogue of renderModelStill); reuses the shared stage + ModelRenderer scene core + the toolpath camera/controls + DD-020 quality; generic open-kind model-source loader registry (STL/3MF first, OBJ/STEP/PLY later w/o API change); distinct from ToolpathRenderer / <GcodePreview>; handle in gcode-model-renderer, shared-control extraction into gcode-renderer-three; components a later phase; consumer: AnyBridge "View in 3D" |
| DD-022 | Instance-aware source-model rendering (GPU instancing + LOD) | ModelRenderer (DD-018 line) | M3 | Accepted 2026-08-25 (both-owner gate satisfied — maintainer + AnyBridge product owner on §4 + §8, incl. the headless/SwiftShader fix). Full-plate source .3mf reuses master meshes via production-extension components / repeated build items, but parse3mf bakes every instance → ~26 M triangles → E_MODEL_TOO_MANY_TRIANGLES after ~10 s (proof: Baby_Opossum full sheet). Per the AnyBridge owner's 6 constraints (NOT "raise the limit"): instance-aware ModelScene (additive instances? on ModelObject) drawn via InstancedMesh, byte-estimate fast-reject, LOD/decimation for huge unique meshes (disclosed, an RR-006 analogue), a hard ceiling as final guardrail (now on unique triangles), and client-capability-aware interactive degradation (software-WebGL degrades harder; headless assumes server GPU). Renderer-owned in gcode-model-renderer; consumer: AnyBridge "View in 3D" |
Reserved: DD-015 was the candidate number for a standalone modal-state color-channels DD (RR-002, #180). It is now likely unnecessary: the shared
ModalChannelmechanism is owned by DD-012 (above), which #180's color channels consume — see DD-012 §4.3. (DD-012 non-extrusion toolpath, #189, is now drafted — above.)