Source: https://guthlabs.ai/docs/instruments/diffraction-grating-calculator/mechanism/

instrument mechanism / verified-clean

# Diffraction Grating Calculator mechanism

The inspectable method record for Diffraction Grating Calculator, kept separate from implementation and qualification.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Model scope

NEEDS_REVIEW because the incidence geometry is unspecified: the supplied equation assumes normal incidence, while oblique incidence requires the incident-angle term. The angle unit and signed-versus-magnitude output convention are also unspecified. The honest_label field is n/a; the interface should honestly state the normal-incidence assumption, unit requirements, integer-order restriction, and non-propagating-order behavior.

- The stated equation d sin(theta) = m lambda is correct only for normal incidence and a transmission/reflection geometry with the appropriate sign convention; the general grating equation is d(sin(theta_m) - sin(theta_i)) = m lambda.

- To compute an angle, the implementation must explicitly use theta_m = arcsin(m lambda / d).

- The maximum observable integer order is |m|max = floor(d/lambda) for positive d and lambda, subject to the diffraction condition |m lambda/d| <= 1.

- The specification does not define whether reported angles are signed angles, positive magnitudes, or both symmetric angles ±theta for a nonzero order.

- The specification does not state the angle output unit; the test vectors below assume degrees.

## Units and conventions

- d and lambda must use identical length units before evaluating m lambda/d.

- When d is supplied in lines/mm, the spacing is d = 1/(lines per mm) mm; for example, 800 lines/mm = 0.00125 mm = 1250 nm.

- m is a dimensionless integer diffraction order, including m = 0.

- The test-vector angles are reported in degrees, with arcsin values rounded to 4 decimal places where necessary.

- The calculations assume normal incidence, so theta_i = 0.

## Inspectable vector

One of 4 source-bound review vectors:

````
{
  "inputs": {
    "grating_spacing": {
      "value": 1,
      "unit": "micrometres"
    },
    "wavelength": {
      "value": 500,
      "unit": "nanometres"
    },
    "order": 1
  },
  "expected_outputs": {
    "diffraction_angles_degrees": [
      -30,
      30
    ],
    "maximum_visible_order": 2
  },
  "working": "Convert d: 1.0 micrometre = 1000 nm. Compute sin(theta) = m lambda/d = (1 x 500 nm)/1000 nm = 0.5. Therefore theta = arcsin(0.5) = 30 degrees, giving symmetric angles -30 degrees and +30 degrees. Maximum order = floor(d/lambda) = floor(1000/500) = floor(2) = 2."
}
````

## Failure boundary

**BREAK_CLAIMED** · SELF_FLAGGED

A zero grating spacing produces division by zero and must be rejected. The specification also requires an explicit branch for orders with |mλ/d|>1, which have no real diffraction angle, and an explicit sign convention for negative orders.

## Other records

[01**Overview**](<https://guthlabs.ai/docs/instruments/diffraction-grating-calculator/>)[03**Implementation**](<https://guthlabs.ai/docs/instruments/diffraction-grating-calculator/implementation/>)[04**Qualification**](<https://guthlabs.ai/docs/instruments/diffraction-grating-calculator/qualification/>)

## Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

- `VERIFIED_LEDGER.json`

- `evidence-tranche5/tranche5-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
