# Project export: SketchyCut

This document was generated by HackStack to give an AI agent context about a hackathon project. Sections are labeled with their provenance; content marked as truncated was cut to keep this document small.

## Project metadata

- Hackathon: OpenAI Build Week
- Tagline: Describe your 3D idea, provide 1–3 images, and SketchyCut will provide an SVG cut file that you can use for laser cutting, then piece together into a 3D structure. Now you can just... build things.
- Devpost: https://devpost.com/software/sketchycut-idea-to-laser-cut-3d-construction
- GitHub: https://github.com/earlyspark/sketchycut
- Demo: https://sketchycut.earlyspark.com/
- Video: https://www.youtube.com/embed/jsq_vaQXklU?enablejsapi=1&hl=en_US&rel=0&start=&version=3&wmode=transparent
- Team: 1 GitHub contributor(s) — rayana (17 commits)

## Devpost submission (written by the team)

### Inspiration

I recently bought a laser cutter and have so many ideas on what I want to make -- but i don't know how to make it come to life. Existing tools can turn an image into a 2D file for cutting or engraving but I wanted to tackle the harder missing step: interpreting a custom idea as a three-dimensional construction and deriving the individual parts needed to assemble it into a 3D structure. Turning an idea into laser-cut wooden pieces that actually fit together requires CAD experience, joinery knowledge, material measurements, cut-width compensation, sheet layout, and assembly planning. SketchyCut is my attempt to help me move from “I wish I could build that” to something I can inspect, cut, and assemble. Now I can just... build things.

### What it does

SketchyCut turns a written description and up to three reference images into a 3D construction project. GPT-5.6 interprets what the maker wants, including the object’s purpose, major bodies, relationships, proportions, openings, movement, and visual intent. SketchyCut then passes that structured semantic intent into a deterministic parametric CAD and fabrication pipeline. For supported designs, SketchyCut can produce: An interactive assembled, moving, and exploded 3D preview Exact parts and sheet layouts Editable dimensions, material thickness, fit, and supported decorative treatments A bill of materials and linked parts legend Numbered assembly instructions Geometry, assembly, motion, and fabrication validation findings Plain millimetre-based SVG sheets for laser cutting An explicit xTool Studio handoff and optional cut-width fit test The 3D preview is not an approximation of a separate SVG: the parts, joints, meshes, instructions, and fabrication paths all share the same source identities and deterministic hashes. SketchyCut also knows when not to produce a cut file. If a request’s core function is unsupported or deterministic validation fails, it explains the limitation and withholds fabrication export. Unsupported decoration may be omitted only when the functional design remains intact, and that simplification is disclosed. How I built it I built SketchyCut with Codex and GPT-5.6 during OpenAI Build Week. I used GPT-5.6 Sol at Ultra reasoning during brainstorming and architecture work, then GPT-5.6 Sol at Extra High reasoning during implementation. Codex was involved throughout the project -- from research and planning to coding, testing, debugging, visual review, and release verification. The central architectural decision was to give AI and deterministic software different responsibilities: The model handles ambiguity; deterministic code handles precision. The runtime GPT-5.6 model makes one constrained multimodal interpretation request. It returns structured semantic intent, not SVG, coordinates, joints, kerf values, transforms, or fabrication claims. Deterministic code then: Resolves measurements and qualitative proportions. Maps semantic bodies, interfaces, and requirements to registered capabilities. Selects and composes versioned parametric construction operators. Generates exact panels, joints, clearances, fits, and supported motion. Validates geometry, assembly, fabrication, and mechanism constraints. Creates one canonical design document. Projects the 3D scene, SVG sheets, BOM, legend, instructions, and evidence from that document. I researched prior work, research papers, and maintained geometry and CAD implementations before building novel components. SketchyCut uses a narrow polygon-kernel adapter, integer-micrometre internal geometry, strict schemas, deterministic hashes, golden fixtures, and operator-owned motion proofs. A normal generation makes at most one paid model request so that I could stay economical with my API requests. There is no retry, candidate fan-out, automatic model repair, or silent paid-model fallback. Numeric, material, fit, and supported motif-placement edits are deterministic and require no additional model call. Challenges I ran into The hardest architectural challenge was preventing SketchyCut from becoming a collection of polished templates and heuristics that only worked for the examples I had already built. I addressed that in three ways: Designs are represented as semantic bodies, interfaces, requirements, and relationships instead of product-family names. Exact geometry is generated by a registry of reusable parametric construction operators. Operators must pass deliberately off-family fixtures through the same compiler, validators, and projections. For example, the captured-slide operator used by the public Sliding preview must also work on a drawer-in-sleeve proof. Other operators are tested on objects such as an open tray, divided organizer, open-front cubby, and hinged flap. Automated architecture guards reject product-family selectors in deterministic core code, unregistered operators, missing proof fixtures, and version differences between named and off-family cases. Physical fabrication exposed another important challenge: software validation is not the same as physical proof. Physical Hinged and Sliding builds exposed construction problems that the previous software checks had not justified overlooking. Instead of presenting those builds as successes, I tightened the deterministic invariants and withheld Hinged and Sliding fabrication exports. They remain interactive design previews until redesigned artifacts pass matching physical tests. Not only did I burn a lot of tokens in Codex and API usage, but I also burned a lot of basswood sheets to validate the physical designs. Reference-image interpretation was also difficult. Images can contain background objects, text overlays, conflicting viewpoints, ambiguous scale, and decorative features outside the current construction vocabulary. I built explicit reference roles, evidence-linked realization states, deterministic conflict handling, and clear distinctions between what was observed, realized, simplified, unsupported, or uncertain. Accomplishments that I'm proud of I’m proud that SketchyCut is a working product experience rather than only a model prompt or geometry demonstration. The part I am most proud of though is seeing my idea come to life: creating an assemblable physical object that GPT-5.6 helped construct. It was seeing SketchyCut progress from an idea into generated geometry, a coherent product experience, and physical test pieces. What I learned I knew going into this that generative AI and deterministic engineering could be complementary, and this is living proof as to how that can be achieved. GPT-5.6 is valuable for interpreting an ambiguous human idea, reasoning about semantic relationships, and understanding text and images. But a plausible model response is not enough when the output will become a physical object. Even when the 3D model in the web app looks right, it might not actually make sense in the physical world. I also learned that scrapping a project and starting over has a cost, but is not completely unreasonable. After getting completely stuck the first time around, i started over completely but leveraged the failed first iteration's lessons into the second attempt -- it felt like a waste of tokens, honestly, but thanks to Tibo's resets, it didn't feel so bad :P Finally, working with Codex was most effective as an iterative engineering collaboration. I supplied the goals, constraints, corrections, tradeoffs, and acceptance decisions. Codex helped investigate alternatives, implement those decisions, detect inconsistencies, and build repeatable evidence. The quality came from that feedback loop and not from handing the project to an agent and accepting its first answer.

### What's next

My immediate priority is to deepen physical confidence in the current release: Redesign, recut, and cycle-test the Hinged and Sliding constructions before restoring their fabrication exports Continue strengthening the places where physical behavior exceeds what software geometry alone can prove From there, I want to expand SketchyCut’s deterministic construction vocabulary without sacrificing generality, correctness, or fabrication reliability. Planned areas include non-rectangular profiles, retained layered constructions, additional openings and decorative cut-throughs, and eventually functioning sheet-built mechanisms such as gears, cranks, cams, linkages, carousels, and automata. The goal is not to ask a model to invent arbitrary CAD. It is to grow a reusable vocabulary of deterministic, testable construction capabilities that GPT-5.6 can compose from a maker’s intent. I want SketchyCut to make increasingly ambitious physical creation approachable, while remaining honest about exactly what has been interpreted, calculated, validated, cut, and physically proven.

## README (from the GitHub repository)

# SketchyCut

<p align="center">
  <a href="https://www.youtube.com/watch?v=jsq_vaQXklU">
    <img src="https://img.youtube.com/vi/jsq_vaQXklU/maxresdefault.jpg" alt="Watch the SketchyCut project video on YouTube" width="760">
  </a>
</p>

<p align="center"><a href="https://www.youtube.com/watch?v=jsq_vaQXklU"><strong>Watch the SketchyCut project video</strong></a></p>

<p align="center">
  <img src="public/readme/sketchycut-generated-workspace.png" alt="SketchyCut generated 3D assembly and laser-cut sheet layout" width="49%">
  <img src="public/readme/sketchycut-physical-build.jpg" alt="A physical laser-cut wooden box built from SketchyCut output" width="49%">
</p>

**Describe your 3D idea, provide 1–3 images, and SketchyCut will provide an SVG cut file that you can use for laser cutting, then piece together into a 3D structure.**

[Try SketchyCut](https://sketchycut.earlyspark.com/) · [Explore the examples](https://sketchycut.earlyspark.com/examples) · [How it works](https://sketchycut.earlyspark.com/about)

## Why I built it

Have you ever looked at something and thought, “How did they engineer that?”—followed by, “I wish I could design and make something like it”?

I have. The difficult part is the step between picturing an object and having pieces that actually fit together. That step usually demands CAD modeling, joinery knowledge, material measurements, cut-width compensation, sheet layout, and assembly planning.

SketchyCut is my attempt to make that expertise approachable. A maker describes an object and can add up to three reference images. SketchyCut interprets the idea, chooses a construction it can support, and produces one connected project: an interactive 3D preview, editable dimensions, a bill of materials, assembly instructions, validation findings, and—when every release gate passes—plain SVG sheets for laser cutting.

Existing image-to-SVG workflows can prepare a 2D image for cutting or engraving. The gap I wanted to address is different: how can software interpret a custom idea as a three-dimensional construction and derive the separate parts needed to assemble it?

This is not an “AI draws an SVG” tool. The model handles ambiguity; deterministic code handles precision.

## The key idea

GPT-5.6 interprets **what the maker means**. It may identify semantic bodies, relationships, requirements, proportions, reference observations, and visual intent.

It does **not** generate cut contours, exact dimensions, joints, transforms, kerf offsets, machine settings, or validation claims. SketchyCut's deterministic construction engine owns those decisions.

```mermaid
flowchart TD
    A["Description + 0–3 reference images"] --> B["GPT-5.6 semantic interpretation"]
    B --> C["Strict structured intent"]

    subgraph deterministic["Deterministic SketchyCut engine"]
        C --> D["Capability mapping"]
        D --> E["Parametric construction<br/>parts · joints · fits · motion"]
        E --> F["Geometry, assembly, and fabrication validation"]
    end

    F -->|"passes release gates"| G["Canonical design document"]
    F -->|"unsupported or invalid"| H["Explain limitations<br/>withhold fabrication export"]

    G --> I["Interactive 3D preview"]
    G --> J["Design controls + parts layout"]
    G --> K["BOM + assembly instructions"]
    G --> L["Compensated SVG sheets + handoff"]
```

Every output is projected from the same versioned canonical design document. The 3D preview is not a hand-authored approximation of a different cut file: parts, joints, meshes, fabrication paths, BOM entries, and instructions share stable identities and deterministic hashes. If a core request is unsupported or deterministic validation fails, SketchyCut explains the limitation and withholds fabrication export.

## What you can do

- Describe a project in natural language and optionally add zero to three ordered JPEG, PNG, or WebP references.
- Review what GPT-5.6 observed, what deterministic code realized, what was simplified, and what remains unsupported or uncertain.
- Explore one continuously connected **Preview**, **Design**, **Build**, and **Fabricate** workspace.
- Inspect assembled, moving, and exploded 3D states linked to the exact parts and sheets.
- Adjust exact dimensions, material thickness, fit, and supported motif placement locally with no additional model call.
- Download a BOM, parts legend, numbered instructions, validation evidence, and eligible SVG sheets.

Hackathon judges have special access to try the full live demo.

## Current release and evidence

SketchyCut currently demonstrates a shared glue-free construction vocabulary through three box-shaped proof targets:

| Construction | Current status |
| --- | --- |
| Open-top Basic | Fabrication-enabled when deterministic validation and release gates pass |
| Retained-pin Hinged | Interactive deterministic design preview; fabrication export currently withheld |
| Captured Sliding | Interactive deterministic design preview; fabrication export currently withheld |

Basic, Hinged, and Sliding are proof targets for reusable construction operators, not three templates or the intended boundary of the product. Off-family fixtures exercise the same registered operators to guard against family-name selection and fixture-specific geometry.

The current Basic geometry and fabrication path are software-validated. An earlier Basic artifact was physically cut and assembled without glue, but required excessive insertion force. The current adjusted fabrication bytes have not yet completed matching cut-and-assembly verification. Hinged and Sliding remain preview-only after their physical builds exposed construction problems that software checks alone did not justify overlooking.

Accordingly, SketchyCut distinguishes:

- **Concept only:** the request is understood, but export is withheld.
- **Fabrication candidate:** deterministic geometry, assembly, and export checks pass; physical fit is not yet claimed.
- **Cut, assembly, or motion verified:** reserved for evidence tied to the exact artifact hash.

A convincing render is not treated as proof that wood has been cut, assembled, or cycled successfully.

## How Codex and GPT-5.6 were used

### GPT-5.6 in the product

The live interpretation layer uses GPT-5.6 Sol for one constrained multimodal request. Its response must pass a strict schema and contains compact semantic intent—not fabrication geometry. Deterministic code then authorizes evidence, resolves measurements and scoped conflicts, maps requirements to registered capabilities, compiles exact construction, validates the result, and decides whether export is allowed.

Model, prompt and schema identities, request status, latency, token usage, cache provenance, and cost exposure are recorded. Ambiguous post-dispatch transport failures remain potentially billed rather than being silently retried or recorded as zero cost.

### Codex during development

During brainstorming and architecture work, I used GPT-5.6 Sol at Ultra reasoning to work through the central design problem: combining a model capable of understanding a user's words and images with a deterministic system capable of turning that intent into exact mathematics. For implementation, I used GPT-5.6 Sol at Extra High reasoning. I also used GPT-5.6 models to question the code and architecture, understand model capabilities, and prepare bounded milestone goals that Codex could execute and verify over longer work sessions.

Codex helped me:

- investigate prior art and test geometry-library behavior before implementation;
- design strict schemas and the boundary between semantic interpretation and deterministic fabrication authority;
- implement and test versioned construction operators, polygon processing, nesting, motion proofs, canonical projections, and the shared product workspace;
- build network-disabled fixtures, anti-overfitting checks, golden matrices, architecture guards, privacy checks, production builds, and browser tests;
- diagnose fai

[README truncated for size]

## Detected evidence (automated analysis)

Indexed codebase: 307 recognized source files, 2228 KB.
- CSS (language) — detected in the code
- Next.js (technology) — detected in the code
- OpenAI (technology) — detected in the code
- React (technology) — detected in the code
- TypeScript (language) — detected in the code
- Redis (technology) — claimed on Devpost, not found in the code
- Vercel (technology) — claimed on Devpost, not found in the code

## Codebase structure (from repository index)

### Files (120 of 343)

```
.gitignore
.vercelignore
eslint.config.mjs
LICENSE
next-env.d.ts
next.config.ts
package.json
playwright.config.ts
playwright.deployment.config.ts
playwright.live-probe.config.ts
public/shell-auth-state.mjs
README.md
src/app/about/page.tsx
src/app/api/create/export/route.ts
src/app/api/create/generate/route.ts
src/app/api/create/project/route.ts
src/app/api/create/upload/route.ts
src/app/api/session/route.ts
src/app/create/page.tsx
src/app/examples/page.tsx
src/app/globals.css
src/app/layout.tsx
src/app/page.tsx
src/compiler/canonical.ts
src/compiler/index.ts
src/domain/contracts.ts
src/domain/digests.ts
src/domain/fabrication-release.ts
src/domain/fabrication-setup.ts
src/domain/hash.ts
src/domain/index.ts
src/domain/input-policy.ts
src/domain/primitives.ts
src/domain/profiles.ts
src/domain/reference-diameter-gauge.ts
src/domain/retained-pin-policy.ts
src/domain/stock-catalog.ts
src/domain/units.ts
src/evaluation/calibration-campaign.ts
src/evaluation/dispatch-only-semantic-cache.ts
src/evaluation/diversity-observation.ts
src/evaluation/live-diversity-evaluation.ts
src/evaluation/live-evaluation-runner.ts
src/evaluation/live-reference-fidelity-evaluation.ts
src/evaluation/prompt-generality.ts
src/evaluation/reference-fidelity-predicates.ts
src/evaluation/reference-fidelity-study.ts
src/evaluation/semantic-diversity.ts
src/index.ts
src/interpretation/canonical-generation-document.ts
src/interpretation/capability-catalog.ts
src/interpretation/constraint-sizing-solver.ts
src/interpretation/construction-composition.ts
src/interpretation/construction-contracts.ts
src/interpretation/construction-motif.ts
src/interpretation/construction-plan-compiler.ts
src/interpretation/construction-planner.ts
src/interpretation/current-fixture-corpus.ts
src/interpretation/elicitation-telemetry.ts
src/interpretation/explicit-sizing.ts
src/interpretation/generated-fabrication.ts
src/interpretation/generated-project-contracts.ts
src/interpretation/generation-outcome-v2.ts
src/interpretation/generation-submission-v2.ts
src/interpretation/image-normalization.ts
src/interpretation/index.ts
src/interpretation/intent-graph-v2.ts
src/interpretation/ledger-append.ts
src/interpretation/live-ledger.ts
src/interpretation/mvp-safe-omission-policy.ts
src/interpretation/observation-realization.ts
src/interpretation/orchestrator-v2.ts
src/interpretation/procedural-motif-planner.ts
src/interpretation/realization-ledger.ts
src/interpretation/semantic-cache-v2.ts
src/interpretation/semantic-input-contracts.ts
src/interpretation/semantic-request-v2.ts
src/interpretation/semantic-transport.ts
src/interpretation/source-evidence.ts
src/interpretation/topology-synthesis.ts
src/kernel/geometry/clipper-adapter.ts
src/kernel/geometry/index.ts
src/kernel/geometry/metrics.ts
src/kernel/geometry/triangulate.ts
src/kernel/index.ts
src/landing/basic-demo-payload.json
src/landing/basic-demo-static-manifest.json
src/landing/payload-contract.ts
src/landing/static-manifest-contract.ts
src/operators/accumulated-kerf-calibration.ts
src/operators/accumulated-kerf-gauge.ts
src/operators/calibration-coupon.ts
src/operators/captured-panel-slide.ts
src/operators/edge-finger-mate.ts
src/operators/index.ts
src/operators/orthogonal-compiler.ts
src/operators/orthogonal-model.ts
src/operators/orthogonal-panel-layout.ts
src/operators/orthogonal-program-builders.ts
src/operators/panel-tab-slot-mate.ts
src/operators/procedural-surface-treatment.ts
src/operators/registry.ts
src/operators/retained-pin-revolute.ts
src/operators/surface-treatment.ts
src/projections/bom.ts
src/projections/bundle.ts
src/projections/evidence.ts
src/projections/fabrication/index.ts
src/projections/fabrication/manufacturing.ts
src/projections/fabrication/nesting.ts
src/projections/fabrication/sheet.ts
src/projections/fabrication/svg.ts
src/projections/handoff.ts
src/projections/import-complexity.ts
src/projections/index.ts
src/projections/instructions.ts
src/projections/legend.ts
src/projections/mesh/extrude.ts
src/projections/mesh/index.ts
src/projections/mesh/render-svg.ts
[223 more files omitted for size]
```

### Dependencies

- package.json: @eslint/js@10.0.1, @playwright/test@1.61.1, @react-three/drei@10.7.7, @react-three/fiber@9.6.1, @types/node@24.12.2, @types/react@19.2.17, @types/react-dom@19.2.3, @types/three@0.185.1, @upstash/redis@1.38.0, @xmldom/xmldom@0.9.10, clipper2-ts@2.0.1-18, earcut@3.2.3, eslint@10.7.0, fflate@0.8.3, next@16.2.10, openai@6.48.0, react@19.2.7, react-dom@19.2.7, sharp@0.35.3, three@0.185.1, tsx@4.23.1, typescript@6.0.3, typescript-eslint@8.64.0, vitest@4.1.10, zod@4.4.3

### Recent commits (newest first)

- Add project video and README images
- Refresh public project copy
- Add safe MVP omission policy
- Implement physical confidence and reference fidelity
- Implement constraint-driven generation calibration
- Consolidate current production implementation
- Implement secure M6 production generation
- Implement isolated M5 generation workflow
- Implement deterministic M4 captured-slide mechanism
- Add guided M3.2 build progression
- Add deterministic xTool Studio handoff
- Add deterministic M3.1 fabrication setup
- Implement deterministic M3 retained-pin mechanism
- Add deterministic M2.1 input and kerf validation
- Implement deterministic M2 panel workbench
- Implement deterministic fabrication kernel and M1 validation
- Initial commit

## Key source files (fetched from GitHub, selected and truncated for size)

### package.json

```
{
  "name": "sketchycut",
  "version": "0.1.0",
  "private": true,
  "type": "module",
  "description": "Deterministic flat-pack fabrication kernel for SketchyCut.",
  "license": "MIT",
  "engines": {
    "node": ">=24.0.0"
  },
  "exports": {
    ".": {
      "types": "./dist/index.d.ts",
      "import": "./dist/index.js"
    }
  },
  "files": [
    "dist"
  ],
  "scripts": {
    "authorize:generation-exposure": "node --import tsx tools/authorize-generation-exposure.ts",
    "build": "npm run build:core && npm run build:app",
    "build:app": "next build --webpack",
    "build:core": "tsc -p tsconfig.build.json",
    "clean": "node tools/clean-generated.mjs",
    "dev": "node --import tsx tools/development.ts --mode live",
    "dev:fixtures": "node --import tsx tools/development.ts --mode fixtures",
    "evaluate:live": "node --import tsx tools/run-live-diversity-evaluation.ts",
    "generate:golden": "node --import tsx tools/update-calibration-coupon-golden.ts && node --import tsx tools/update-orthogonal-panel-golden.ts && node --import tsx tools/update-retained-pin-golden.ts && node --import tsx tools/update-fabrication-evidence-golden.ts && node --import tsx tools/update-combined-motion-golden.ts",
    "lint": "eslint . --max-warnings=0",
    "probe:live": "playwright test --config playwright.live-probe.config.ts",
    "start": "next start",
    "test": "vitest run",
    "test:e2e": "node --import tsx tools/run-e2e.ts",
    "test:e2e:deployment": "playwright test --config playwright.deployment.config.ts",
    "test:golden": "vitest run tests/operators/calibration-coupon.golden.test.ts tests/operators/orthogonal-panel.golden.test.ts tests/operators/retained-pin-revolute.golden.test.ts tests/operators/captured-panel-slide.golden.test.ts",
    "test:unit": "vitest run --exclude '**/*.golden.test.ts'",
    "typecheck": "tsc --noEmit",
    "verify": "npm run typecheck && npm run lint && npm run verify:architecture && node --import tsx tools/audit-css-selectors.ts && npm run test && node --import tsx tools/verify-landing-payload.ts && node --import tsx tools/verify-current-source.ts && node --import tsx tools/verify-current-dependencies.ts && npm run build && node --import tsx tools/verify-current-build.ts && npm run test:e2e",
    "verify:architecture": "node --import tsx tools/verify-architecture-guards.ts",
    "verify:physical-observation": "node --import tsx tools/verify-physical-confidence-observation.ts",
    "verify:upstash": "node --import tsx tools/verify-upstash.ts"
  },
  "dependencies": {
    "@react-three/drei": "10.7.7",
    "@react-three/fiber": "9.6.1",
    "@upstash/redis": "1.38.0",
    "clipper2-ts": "2.0.1-18",
    "earcut": "3.2.3",
    "fflate": "0.8.3",
    "next": "16.2.10",
    "openai": "6.48.0",
    "react": "19.2.7",
    "react-dom": "19.2.7",
    "sharp": "0.35.3",
    "three": "0.185.1",
    "zod": "4.4.3"
  },
  "devDependencies": {
    "@eslint/js": "10.0.1",
    "@playwright/test": "1.61.1",
    "@types/node": "24.12.2",
    "@types/react": "19.2.17",
    "@types/react-dom": "19.2.3",
    "@types/three": "0.185.1",
    "@xmldom/xmldom": "0.9.10",
    "eslint": "10.7.0",
    "tsx": "4.23.1",
    "typescript": "6.0.3",
    "typescript-eslint": "8.64.0",
    "vitest": "4.1.10"
  },
  "overrides": {
    "postcss": "8.5.19"
  }
}

```

### src/index.ts

```typescript
export * from "./compiler/index.js";
export * from "./domain/index.js";
export * from "./interpretation/index.js";
export * from "./kernel/index.js";
export * from "./operators/index.js";
export * from "./projections/index.js";
export * from "./validation/index.js";
export * from "./version.js";

```

### src/compiler/index.ts

```typescript
export * from "./canonical.js";

```

### src/kernel/index.ts

```typescript
export * from "./geometry/index.js";

```

### src/validation/index.ts

```typescript
export * from "./assembly.js";
export * from "./geometry.js";
export * from "./prismatic.js";
export * from "./prismatic-proof.js";
export * from "./revolute.js";
export * from "./sheet.js";

```

### src/projections/index.ts

```typescript
export * from "./bom.js";
export * from "./bundle.js";
export * from "./evidence.js";
export * from "./fabrication/index.js";
export * from "./instructions.js";
export * from "./handoff.js";
export * from "./legend.js";
export * from "./mesh/index.js";

```

### src/interpretation/index.ts

```typescript
export * from "./capability-catalog.js";
export * from "./image-normalization.js";
export * from "./intent-graph-v2.js";
export * from "./ledger-append.js";
export * from "./live-ledger.js";
export * from "./orchestrator-v2.js";
export * from "./semantic-cache-v2.js";
export * from "./semantic-input-contracts.js";
export * from "./semantic-request-v2.js";

```

### src/domain/index.ts

```typescript
export * from "./contracts.js";
export * from "./fabrication-release.js";
export * from "./fabrication-setup.js";
export * from "./hash.js";
export * from "./input-policy.js";
export * from "./profiles.js";
export * from "./reference-diameter-gauge.js";
export * from "./retained-pin-policy.js";
export * from "./stock-catalog.js";
export * from "./units.js";

```

### src/operators/index.ts

```typescript
export * from "./accumulated-kerf-gauge.js";
export * from "./accumulated-kerf-calibration.js";
export * from "./calibration-coupon.js";
export * from "./captured-panel-slide.js";
export * from "./edge-finger-mate.js";
export * from "./orthogonal-compiler.js";
export * from "./orthogonal-panel-layout.js";
export * from "./panel-tab-slot-mate.js";
export * from "./procedural-surface-treatment.js";
export * from "./registry.js";
export * from "./retained-pin-revolute.js";
export * from "./surface-treatment.js";

```

### src/app/layout.tsx

```typescript
import type { Metadata } from "next";
import type { ReactNode } from "react";

import "./globals.css";

export const metadata: Metadata = {
  title: "SketchyCut · laser-cut 3D construction",
  description: "Turn a supported three-dimensional idea into linked construction geometry, an assembly preview, and inspectable fabrication files."
};

export default function RootLayout({ children }: Readonly<{ children: ReactNode }>) {
  return (
    <html lang="en" suppressHydrationWarning>
      <body>
        {children}
        <script src="/shell-auth-state.mjs" type="module" />
      </body>
    </html>
  );
}

```

[295 more indexed source files omitted to keep this export small. The full file list is in the Codebase structure section above.]