Source: https://guthlabs.ai/docs/instruments/beat-measure-duration-song-length-estimator/mechanism/

instrument mechanism / verified-clean

# Beat/Measure Duration & Song Length Estimator mechanism

The inspectable method record for Beat/Measure Duration & Song Length Estimator, kept separate from implementation and qualification.

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

## Model scope

The duration arithmetic is standard under the stated unit assumptions, but the instrument cannot be verified unambiguously until the BPM beat unit, time-signature-to-beatsPerBar mapping, reverse formula, and whole-bar policy are specified. The empty honest_label is a concern: the label should disclose that results assume constant tempo, a fixed meter, and a defined BPM beat unit.

- The duration formula is correct only when BPM means the number of beats represented by beatsPerBar and the tempo is constant: duration_seconds = bars × beatsPerBar × 60/BPM.

- The claimed reverse operation has no formula in the specification. It should explicitly define bars = targetDurationSeconds × BPM / (beatsPerBar × 60).

- The specification does not define how BPM relates to the time signature. In compound meters such as 6/8, BPM may refer to eighth notes or dotted-quarter beats, producing different results.

- The specification does not define whether bars must be whole numbers when calculating bars needed for a target duration.

## Units and conventions

- BPM is beats per minute for the beat counted by beatsPerBar.

- 60/BPM converts one beat into seconds.

- bars is dimensionless and beatsPerBar is beats per bar.

- target duration used by the reverse calculation is in seconds; minutes must first be converted by multiplying by 60.

- For a 6/8 example using beatsPerBar = 6, BPM is explicitly treated as eighth-note BPM, not dotted-quarter BPM.

## Inspectable vector

One of 4 source-bound review vectors:

````
{
  "inputs": {
    "mode": "duration",
    "BPM": 120,
    "time_signature": "4/4",
    "beatsPerBar": 4,
    "bar_count": 16
  },
  "expected_outputs": {
    "duration_seconds": 32,
    "duration_minutes": 0.5333333333
  },
  "working": "Beat duration = 60/120 = 0.5 seconds. Beats in song = 16 × 4 = 64 beats. Duration = 64 × 0.5 = 32 seconds. Minutes = 32/60 = 0.5333333333 minutes."
}
````

## Failure boundary

**BREAK_CLAIMED** · SELF_FLAGGED

BPM = 0 makes the duration formula undefined because it divides by zero; the instrument must reject that input. The 6/8 probe also exposes a convention hazard because treating the numerator as beatsPerBar differs from conventional compound-meter grouping.

## Other records

[01**Overview**](<https://guthlabs.ai/docs/instruments/beat-measure-duration-song-length-estimator/>)[03**Implementation**](<https://guthlabs.ai/docs/instruments/beat-measure-duration-song-length-estimator/implementation/>)[04**Qualification**](<https://guthlabs.ai/docs/instruments/beat-measure-duration-song-length-estimator/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-tranche4/tranche4-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
