Source: https://guthlabs.ai/docs/instruments/exposure-bracketing-hdr-stops-planner/

instrument / verified-clean

# Exposure Bracketing / HDR Stops Planner

The current ledger marks this instrument verified clean within the source-bound verification corpus.

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

## Inspectable records

[01**Overview**Purpose and lifecycle](<https://guthlabs.ai/docs/instruments/exposure-bracketing-hdr-stops-planner/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/exposure-bracketing-hdr-stops-planner/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/exposure-bracketing-hdr-stops-planner/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/exposure-bracketing-hdr-stops-planner/qualification/>)

## Ledger state

The current ledger marks this instrument verified clean within the source-bound verification corpus.

**Area**: Audio, Music, Photography & Color

**Tranche**: tranche-4

**Evidence ID**: t4-252

**Ledger rows**: 1

No ledger note is attached.

## Review findings

The core exposure-duration formula is mathematically correct, but the instrument cannot be verified as fully specified until the frame-indexing convention, duration-versus-reciprocal input representation, frame-count constraints, and camera rounding behavior are defined.

### Formula and scope findings

- The multiplier formula base*2^(n*stopStep) is correct for exposure duration in seconds: each positive stop doubles the duration and each negative stop halves it.

- The specification does not define how n is assigned from number of frames. To produce brackets around the base exposure, n must be explicitly centered, such as -(frames-1)/2 through +(frames-1)/2.

- Even frame counts require fractional n values under centered indexing; this is valid mathematically but must be specified.

- The formula assumes shutter speed means exposure duration. If shutter speed is represented as the denominator in notation such as 1/125, applying the formula directly reverses the intended direction.

- The specification does not state whether the base exposure must be included, whether frames must be a positive integer, or whether one-frame and zero-stop-step requests are allowed.

### Unit assumptions

- base is an exposure duration, not a reciprocal shutter-speed denominator; all shutter durations must use one consistent unit.

- The test vectors use seconds or milliseconds consistently within each vector; multiplying by a dimensionless stop factor preserves that unit.

- A one-stop increase means multiplying exposure duration by 2; a one-stop decrease means multiplying by 1/2.

- The vectors assume centered n values ordered from darkest/shortest exposure to brightest/longest exposure.

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

The extreme valid-number input produces a non-finite Infinity output, and the specification does not define validation or rejection behavior. The unspecified frame-index and shutter-direction conventions can also produce reversed or differently centered bracket lists.

## Errata and corrections

No applied erratum is attached to this unique-name record.

## Inspectable example

4 review vectors are recorded. One source-bound sample is shown below.

````
{
  "inputs": {
    "base_seconds": 0.008,
    "number_of_frames": 3,
    "stop_step": 1,
    "n_indices": [
      -1,
      0,
      1
    ]
  },
  "expected_outputs": {
    "shutter_seconds": [
      0.004,
      0.008,
      0.016
    ]
  },
  "working": "For n=-1: 0.008*2^(-1*1)=0.008*(1/2)=0.004 s. For n=0: 0.008*2^(0*1)=0.008*1=0.008 s. For n=1: 0.008*2^(1*1)=0.008*2=0.016 s."
}
````

## Related workflows

[Photographer's Exposure BenchHDR](<https://guthlabs.ai/docs/instrument-workflows/exposure-bench/>)

## Sources and evidence

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

- `VERIFIED_LEDGER.json · VERIFIED_CLEAN`

- `evidence-tranche4/tranche4-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
