Home Features Desktop App CLI Reference Tutorial Reports Manufacturing Tolerance 3D Analysis Collaboration Integrations Why Plain Text? GitHub

Manufacturing Control Loop

A closed-loop quality system connecting process definitions, controls, work instructions, production lots, and corrective actions — all as traceable plain-text YAML under git version control.

1. The Control Loop

Tessera's manufacturing module implements a closed-loop quality system. Every process is controlled, every lot is traceable, and every non-conformance feeds back into the system as corrective action.

PROC CTRL WORK LOT NCR CAPA Process Control Work Instr. Lot / DHR Non-Conf. Corrective feedback loop

The six entity types form the manufacturing backbone:

EntityPrefixRole
ProcessPROCDefines how something is made — steps, equipment, parameters
ControlCTRLInspection/measurement checkpoints within a process
Work InstructionWORKStep-by-step operator instructions with safety and tooling
LotLOTProduction batch with Device History Record (DHR) traceability
Non-ConformanceNCRDocuments when product/process doesn't meet spec
CAPACAPARoot cause analysis and corrective/preventive actions

Additionally, Deviations (DEV) allow authorized temporary departures from established processes without triggering a non-conformance.

Closed-Loop Quality

When a lot fails inspection (NCR), the resulting CAPA feeds changes back into the process definition or control plan. Every link is tracked in YAML and versioned in git — giving you a complete audit trail from root cause to resolution.

2. Process Definition

A Process (PROC) defines a manufacturing operation: its steps, equipment, parameters, and operation sequencing. Processes are the foundation of your control loop.

Create a Process

bash
# Create a CNC machining process
tdt proc new --title "CNC Housing Machining" \
  -T machining --op-number "OP-010" --no-edit

# Create an assembly process
tdt proc new --title "Final Assembly" \
  -T assembly --op-number "OP-020" --no-edit

# Create an inspection process
tdt proc new --title "Final Inspection" \
  -T inspection --op-number "OP-030" --no-edit

Add Equipment and Parameters

Equipment, parameters, and other detailed fields are added by editing the YAML directly:

bash
# Open process in your editor to add equipment and parameters
tdt proc edit PROC@1

Process YAML Structure

Here's what a complete process file looks like:

yaml
id: PROC-01KC8FF2X3Y4Z5A6B7C8D9E0
title: "CNC Housing Machining"
status: active
process_type: machining
operation_number: "OP-010"
equipment:
  - name: "Haas VF-2SS"
    equipment_id: "EQ-001"
    capability: "3-axis CNC mill"
parameters:
  - name: "Spindle Speed"
    value: 8000
    units: "RPM"
    min: 7500
    max: 8500
links:
  produces:
    - CMP-01KC8FF...
  controls:
    - CTRL-01KC8FF...
  work_instructions:
    - WORK-01KC8FF...

Process Types

TypeDescriptionExamples
machiningMaterial removal operationsCNC milling, turning, drilling
assemblyJoining components togetherMechanical assembly, soldering
inspectionMeasurement and verificationCMM, visual inspection
testFunctional/performance testingBurn-in, environmental testing
finishingSurface treatment operationsAnodizing, painting, plating
packagingFinal packaging and labelingClean room packaging, labeling
handlingMaterial handling and transportTransfer, staging, storage
heat_treatThermal processingHardening, annealing, tempering
weldingJoining by fusionTIG, MIG, spot welding
coatingSurface coating operationsPowder coating, PVD, CVD
Tip: Use operation_number to define the manufacturing sequence. Processes are ordered by operation number when generating process flow diagrams with tdt proc flow.

3. Control Plans

A Control (CTRL) defines an inspection or measurement checkpoint within a process. Controls link a process to a feature and specify how, when, and how often to measure.

Create a Control

bash
# SPC control on a critical dimension
tdt ctrl new --title "Housing Bore Diameter SPC" \
  -T spc -p PROC@1 --feature FEAT@1 --critical --no-edit

# 100% inspection on a safety-critical feature
tdt ctrl new --title "Thread Depth Inspection" \
  -T inspection -p PROC@1 --no-edit

# Poka-yoke (error-proofing) control
tdt ctrl new --title "Orientation Pin Check" \
  -T poka-yoke -p PROC@2 --no-edit

Set Characteristic and Measurement Details

After creation, use tdt ctrl edit to add characteristic, measurement, sampling, and reaction plan details:

bash
# Open control in your editor to add measurement details
tdt ctrl edit CTRL@1

Control Types

TypeDescriptionWhen to Use
spcStatistical Process ControlHigh-volume, critical dimensions with natural variation
inspectionDirect measurement / go-no-goLower volume or simpler checks
poka-yokeError-proofing mechanismPrevent assembly errors (fixtures, sensors, guides)
visualVisual inspectionSurface defects, cosmetic criteria, labeling
functional-testFunctional verificationGo/no-go functional tests
attributeAttribute check (pass/fail)Go/no-go gauge, binary checks

Control Plan YAML Structure

yaml
id: CTRL-01KC8FF2X3Y4Z5A6B7C8D9E0
title: "Housing Bore Diameter SPC"
status: active
control_type: spc
characteristic:
  name: "Bore Diameter"
  nominal: 25.000
  upper_limit: 25.013
  lower_limit: 24.987
  units: "mm"
  critical: true
measurement:
  method: "Bore Gauge"
  equipment: "BG-2024-001"
  gage_rr_percent: 12.5
sampling:
  type: continuous
  frequency: "Every 25 parts"
  sample_size: 5
reaction_plan: "Stop production. Quarantine suspect parts..."
links:
  process: PROC-01KC8FF...
  feature: FEAT-01KC8FF...

Control Plans and PFMEA

Controls are the bridge between your risk analysis (FMEA) and the shop floor. Link controls to risks with tdt link add CTRL@1 RISK@1 — TDT auto-infers the link type and updates both entities. Entity order doesn't matter.

4. Work Instructions

Work Instructions (WORK) provide step-by-step operator guidance for executing a process. Each instruction links to its parent process and includes safety notes, required tools, and materials.

Create a Work Instruction

bash
# Create work instruction for the machining process
tdt work new --title "CNC Housing Machining Procedure" \
  --process PROC@1 \
  --no-edit

Add Steps

Steps can be added from the CLI or by editing the YAML directly:

bash
# Add steps from the CLI
tdt work step add WORK@1 --action "Load raw stock into vise" \
  --verification "Part seated firmly against parallels" \
  --caution "Wear safety glasses" --time 5

tdt work step add WORK@1 --action "Run CNC program O1001" --time 45

# Add a quality hold point requiring approval
tdt work step add WORK@1 --action "Final dimensional inspection" \
  --verification "All dims within tolerance" \
  --require-approval --hold-point

# List all steps
tdt work step list WORK@1

# Or edit the YAML directly
tdt work edit WORK@1

Work Instruction YAML Structure

yaml
id: WORK-01KC8FF2X3Y4Z5A6B7C8D9E0
title: "CNC Housing Machining Procedure"
status: active
tools_required:
  - name: "3/8 carbide end mill"
    part_number: "TL-2024-042"
  - name: "Deburring tool"
  - name: "Bore gauge BG-2024-001"
materials_required:
  - name: "Isopropyl alcohol"
  - name: "Anti-static bags"
procedure:
  - step: 1
    action: "Load raw stock into vise..."
    caution: "Wear safety glasses and hearing protection"
  - step: 2
    action: "Run Program O1001..."
  - step: 3
    action: "Deburr all edges and verify bore diameter..."
  - step: 4
    action: "Clean part with IPA and bag..."
links:
  process: PROC-01KC8FF...
Tip: Work instructions are version-controlled by git. When a process changes, update the work instruction and the diff shows exactly what changed for operator re-training.

5. Production Lots / DHR

A Lot (LOT) represents a production batch and serves as the Device History Record (DHR). Lots link to the product being manufactured and track step-by-step execution with operator signatures.

Create a Production Lot

bash
# Create a lot from the product's routing
tdt lot new --title "Housing Lot 2024-037" \
  --product ASM@1 \
  --quantity 100 \
  --lot-number "LOT-2024-037" \
  --from-routing \
  --no-edit

The --from-routing flag automatically populates the lot steps from the assembly's linked processes, ordered by operation number.

Electronic Router Status

Use tdt lot router to see the current step status, what's pending, and what needs approval:

bash
# View full router/traveler status
tdt lot router LOT@1

# Show only pending steps
tdt lot router LOT@1 --pending

# Show steps needing quality approval
tdt lot router LOT@1 --approval-needed

Execute Work Instruction Steps

The tdt lot wi-step command records step execution with operator identity, measurement data, equipment traceability, and optional electronic signature:

bash
# Complete a work instruction step with operator sign-off
tdt lot wi-step LOT@1 -w WORK@1 -s 1 --complete \
  -O "J. Smith" --sign \
  -d "bore_dia_mm=25.003" \
  -E "Bore Gauge=BG-2024-001" \
  -n "First article approved. Cpk 1.67 on bore diameter."

# Complete step 2 with approval required
tdt lot wi-step LOT@1 -w WORK@1 -s 2 --complete \
  -O "M. Chen" --sign --require-approval \
  -n "Assembly complete. Torque values within spec."

# For lots created with --from-routing, specify the process index
tdt lot wi-step LOT@1 --process 1 -w WORK@1 -s 1 --complete

Step Order Enforcement

Steps must be completed in order — both within a work instruction (step 1 before step 2) and across processes (process 1 before process 2). To bypass this for an approved deviation, use --deviation DEV@1.

Step Approval and Lot Completion

bash
# Approve a work instruction step (quality sign-off)
tdt lot approve LOT@1 -w WORK@1 -s 2 \
  -r "quality" --sign -c "Dimensions verified per CTRL@1"

# Or reject with reason
tdt lot approve LOT@1 -w WORK@1 -s 2 --reject \
  -c "Step 3 inspection data missing"

# View all steps needing approval
tdt lot router LOT@1 --approval-needed

# Complete the lot (with optional GPG-signed commit)
tdt lot complete LOT@1 --sign

Electronic Signatures

The --sign flag marks step execution and approvals with an electronic signature flag for 21 CFR Part 11 compliance. For cryptographic integrity, enable git commit signing in your workflow config (sign_commits: true) — each step completion creates a GPG-signed git commit with a recorded SHA.

Git-Based DHR

Each lot creates a complete audit trail through git commits:

bash
# View lot history
git log --oneline manufacturing/lots/LOT-01KC8FF*.tdt.yaml

# See exactly what changed at each step
git diff HEAD~1 manufacturing/lots/LOT-01KC8FF*.tdt.yaml

Device History Records

For regulated industries (FDA, ISO 13485), the lot entity combined with git history constitutes a complete DHR. Every step execution, every approval, every change is recorded with timestamps and author identity.

6. Deviations

A Deviation (DEV) authorizes a temporary departure from an established process or specification. Deviations have approval workflows, risk assessments, and expiration dates.

Create a Deviation

bash
# Temporary deviation (has expiration)
tdt dev new --title "Alternate supplier for housing stock" \
  -T temporary -c material -R low --no-edit

# Permanent deviation (design change)
tdt dev new --title "Increase bore tolerance to +/-0.025mm" \
  -T permanent -c specification -R medium --no-edit

Deviation Approval Workflow

bash
# Approve the deviation (engineering authorization)
tdt dev approve DEV@1 \
  --approved-by "Engineering Manager" \
  -a engineering --activate

# Link to affected entities (order doesn't matter, both updated)
tdt link add DEV@1 PROC@1
tdt link add DEV@1 CMP@1

Expiration Tracking

Temporary deviations have expiration dates. Use tdt dev list --active to find currently active deviations and monitor their expiration dates. Expired deviations must be either extended or closed.

7. Non-Conformance Reports

A Non-Conformance Report (NCR) documents when product or process doesn't meet specifications. NCRs track detection, containment, investigation, and disposition.

Create an NCR

bash
# Internal NCR (caught in-house)
tdt ncr new --title "Bore diameter out of spec on Lot 2024-037" \
  -T internal -S major -c dimensional \
  -L "component:CMP@1" -L "process:PROC@1" --no-edit

# Supplier NCR
tdt ncr new --title "Raw stock hardness below spec" \
  -T supplier -S minor -c material --no-edit

# Customer complaint
tdt ncr new --title "Field failure - housing crack" \
  -T customer -S critical --no-edit

# Link NCR to production lot (bidirectional)
tdt link add NCR@1 LOT@1

NCR Workflow

Advance an NCR through its workflow stages, then close with a disposition decision:

bash
# Advance NCR through workflow stages
tdt ncr advance NCR@1                        # Auto-advance to next stage
tdt ncr advance NCR@1 --status investigation  # Jump to specific stage

# Edit NCR to add containment, investigation, and root cause
tdt ncr edit NCR@1

# Close the NCR with disposition and rationale
tdt ncr close NCR@1 \
  -d rework \
  -r "Re-machine bore diameter on affected parts. 100% re-inspect."

NCR Severity Levels

SeverityDescriptionRequired Actions
criticalSafety or regulatory impactImmediate containment, CAPA required, management notification
majorFunctional impact, out of specContainment, investigation, CAPA typically required
minorCosmetic or minor deviationDocumented disposition (use-as-is, rework, scrap)

Disposition Options

DispositionDescription
use-as-isAccept the non-conforming material (requires engineering approval)
reworkRepair to bring into conformance
scrapDestroy or recycle the material
returnReturn to vendor for credit/replacement

8. CAPAs

Corrective and Preventive Actions (CAPA) close the manufacturing control loop. A CAPA investigates the root cause of a problem and implements changes to prevent recurrence, feeding back into processes and controls.

Create a CAPA

bash
# Corrective action linked to an NCR
tdt capa new --title "Reduce bore diameter excursions" \
  -T corrective --ncr NCR@1 --no-edit

# Preventive action (prevent potential problem)
tdt capa new --title "Add tool wear monitoring to all CNC processes" \
  -T preventive --no-edit

Root Cause Analysis and Action Items

Advance the CAPA through its workflow stages as you investigate and implement actions:

bash
# Advance CAPA through workflow stages
tdt capa advance CAPA@1                         # Auto-advance to next stage
tdt capa advance CAPA@1 --status implementation  # Jump to specific stage

# Edit CAPA to add root cause analysis, actions, and owners
tdt capa edit CAPA@1

Close the Loop

The CAPA feeds changes back into the process and control plan:

bash
# Link CAPA to the entities it modifies (explicit link types)
# Entity order doesn't matter - both entities are updated
tdt link add CAPA@1 PROC@1 processes_modified
tdt link add CAPA@1 CTRL@1 controls_added

# Update the control plan and process via edit
tdt ctrl edit CTRL@1   # Tighten sampling frequency
tdt proc edit PROC@1   # Add tool life parameter

# Verify effectiveness
tdt capa verify CAPA@1 -r effective \
  -e "30-day monitoring shows zero bore excursions since implementation."

Closing the Loop

This is the heart of the manufacturing control loop. An NCR in lot production triggered a CAPA, which updated the process parameters and tightened the control plan sampling. The next lot runs with improved controls, and the git history shows the complete chain from detection to resolution.

9. Traceability

Tessera's link system provides full forward and backward traceability through the manufacturing control loop. Every entity in the chain is connected.

Trace from a Process

bash
tdt trace from PROC@1
→ Tracing from: PROC@1 - CNC Housing Machining Entities that depend on this: ← CTRL@1 - Housing Bore Diameter SPC ← RISK@3 - Bore diameter out of tolerance ← CTRL@2 - Thread Depth Inspection ← WORK@1 - CNC Housing Machining Procedure ← LOT@1 - Housing Lot 2024-037 ← CAPA@1 - Reduce bore diameter excursions

Trace from an NCR

bash
tdt trace from NCR@1
→ Tracing from: NCR@1 - Bore diameter out of spec on Lot 2024-037 Entities that depend on this: ← CAPA@1 - Reduce bore diameter excursions

Trace from a CAPA

Follow the links from a CAPA back through the control loop:

bash
# Trace forward and backward links from a CAPA
tdt trace from CAPA@1
→ Tracing from: CAPA@1 - Reduce bore diameter excursions Entities that depend on this: ← NCR@1 - Bore diameter out of spec on Lot 2024-037 ← PROC@1 - CNC Housing Machining ← CTRL@1 - Housing Bore Diameter SPC

Use tdt trace from to see what depends on an entity, and tdt trace to to see what an entity depends on. Use tdt trace matrix for a complete traceability overview, and tdt trace orphans to find unlinked entities.

Tip: tdt trace from X shows entities that depend on X (incoming links). tdt trace to X shows what X depends on (outgoing links). The tdt trace matrix command generates a full traceability matrix across all entity types, and tdt trace orphans finds entities missing links.

10. Process Flow

Tessera can generate process flow diagrams showing the manufacturing sequence with associated controls and work instructions.

Generate a Process Flow

bash
# Basic process flow
tdt proc flow

# Include controls and work instructions
tdt proc flow --controls --work-instructions

# Filter to a specific process
tdt proc flow --process PROC@1 --controls
Process Flow ──────────────────────────────────────────────────────────── [OP-010] CNC Housing Machining (PROC@1) │ Type: machining | Cycle: 15 min | Setup: 30 min │ Equipment: Haas VF-2SS │ Controls: CTRL@1 "Housing Bore Diameter SPC" │ Controls: CTRL@2 "Thread Depth Inspection" │ Work Inst: WORK@1 "CNC Housing Machining Procedure" ▼ [OP-020] Final Assembly (PROC@2) │ Type: assembly │ Controls: CTRL@3 "Orientation Pin Check" │ Work Inst: WORK@2 "Final Assembly Procedure" ▼ [OP-030] Final Inspection (PROC@3) │ Type: inspection 3 processes in flow

List and Filter

bash
# List all manufacturing entities
tdt proc list                          # All processes
tdt ctrl list --process PROC@1          # Controls for a process
tdt work list --process PROC@1          # Work instructions for a process
tdt lot list --status in-progress       # Active lots
tdt ncr list -S critical                 # Critical NCRs
tdt capa list --open                     # Open CAPAs

# Validate manufacturing chain integrity
tdt validate

Next Steps

  • Explore the Tutorial for a complete end-to-end project walkthrough
  • Learn about Tolerance Analysis to connect features to controls
  • See Reports for generating manufacturing documentation
  • Use tdt <entity> --help for detailed command-line help on any entity

Get Help

For more information, visit the Tessera GitHub repository or run tdt --help for command-line help.