Source: https://guthlabs.ai/docs/instruments/doppler-effect-calculator-sound/

instrument / verified-with-binding-errata

# Doppler Effect Calculator (sound)

The current ledger marks this instrument verified with errata that must be applied at binding time.

Status: **VERIFIED_WITH_ERRATA**Lifecycle: **verified-with-binding-errata**

## Inspectable records

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

## Ledger state

The current ledger marks this instrument verified with errata that must be applied at binding time.

**Area**: Physics — Kinematics/Projectiles/Orbits, Forces/Energy/Momentum, Rotational Dynamics, Gravitation, Oscillations/Waves, Optics, E&M Fields, Relativity, Quantum, Statistical Thermo

**Tranche**: tranche-5

**Evidence ID**: t5-075

**Ledger rows**: 1

No ledger note is attached.

## Review findings

The core classical still-air Doppler formula is standard, but the specification needs explicit sign mappings, a defined shift-percent formula, unit validation, and domain constraints. The honest label is appropriate only when motion is relative to a stationary medium and relativistic, wind, and multidimensional effects are excluded.

### Formula and scope findings

- The ±/∓ signs are not explicitly mapped to approaching versus receding motion; a standard convention is approaching: f_obs=f_src(v+v_obs)/(v-v_src), receding: f_obs=f_src(v-v_obs)/(v+v_src), with velocities measured along the source-observer line relative to the still medium.

- The output shift percentage is specified but its formula is missing; it should be shift_percent=100*(f_obs-f_src)/f_src, assuming f_src is nonzero.

- The formula assumes collinear source and observer velocities and a stationary, homogeneous medium; these constraints are not stated in the input specification.

### Unit assumptions

- All velocities must use the same unit before substitution; the examples use m/s unless explicitly converted.

- The speed of sound is 343 m/s for still air at 20 °C.

- Source and observer velocities are measured relative to the medium and along the line joining source and observer.

- Shift percentage is signed relative to the emitted frequency: positive means an increase and negative means a decrease.

- The source frequency must be greater than zero.

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

The calculator breaks or must reject an exactly sonic approaching source because the Doppler denominator becomes zero. It is also vulnerable to materially incorrect results if the approaching/receding branch or velocity sign convention is inferred ambiguously.

## Errata and corrections

### Tranche errata

**observed_frequency_hz / shift_percent** · vector 2

1029.1545 / 2.9155

1030.0300 / 3.0030

used the observer-motion formula (c+v)/c for a MOVING SOURCE; her own v3 applies the correct source formula c/(c−vs)

## Inspectable example

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

````
{
  "inputs": {
    "source_frequency_hz": 440,
    "speed_of_sound_m_s": 343,
    "source_velocity_m_s": 0,
    "observer_velocity_m_s": 0,
    "motion": "stationary"
  },
  "expected_outputs": {
    "observed_frequency_hz": 440,
    "shift_percent": 0
  },
  "working": "Stationary case: f_obs=440*(343+0)/(343-0)=440*343/343=440 Hz. shift%=100*(440-440)/440=0%."
}
````

## Related workflows

No source-defined multi-instrument workflow membership is recorded.

## Sources and evidence

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

- `VERIFIED_LEDGER.json · VERIFIED_WITH_ERRATA`

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

- `BOUNDARY_HAZARD_CATALOG.json`
