Source: https://guthlabs.ai/docs/instruments/smoking-pack-year-calculator/

instrument / verified-clean

# Smoking Pack-Year Calculator

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/smoking-pack-year-calculator/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/smoking-pack-year-calculator/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/smoking-pack-year-calculator/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/smoking-pack-year-calculator/qualification/>)

## Ledger state

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

**Area**: Biology, Medicine & Pharmacology (educational estimates only — every panel labeled not-medical-advice)

**Tranche**: tranche-5

**Evidence ID**: t5-068

**Ledger rows**: 1

No ledger note is attached.

## Review findings

The honest-label language is appropriate, but the specification must resolve the exact ambiguity between cigarettes/day and packs/day and explicitly define the pack-size assumption before release.

### Formula and scope findings

- The stated formula is correct only when the input is packs per day, but the specified input is cigarettes per day; cigarettes/day must be divided by cigarettes per pack first.

- The pack size is unspecified. A 20-cigarette pack is a common convention, but pack sizes vary, so the instrument must state or collect the assumed pack size.

- For multiple smoking periods, the formula must sum each period: total pack-years = sum((cigarettes/day ÷ cigarettes/pack) × years) rather than applying one undifferentiated period formula.

### Unit assumptions

- Unless otherwise specified, one pack is assumed to contain 20 cigarettes.

- Years smoked are elapsed years and must be nonnegative; fractional years are allowed.

- Cigarettes/day must be nonnegative and cigarettes/pack must be a positive integer.

- Pack-years means packs per day multiplied by years, with output units of pack-years.

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

The specification does not define the cigarettes-per-pack conversion, so the same cigarette history can produce different totals. Extreme finite inputs also overflow ordinary JavaScript arithmetic to Infinity, which requires validation or rejection.

## 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": {
    "cigarettes_per_day": 20,
    "years_smoked": 15,
    "assumed_cigarettes_per_pack": 20
  },
  "expected_outputs": {
    "total_pack_years": 15
  },
  "working": "packs/day = 20 cigarettes/day ÷ 20 cigarettes/pack = 1 pack/day; pack-years = 1 × 15 years = 15 pack-years."
}
````

## 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_CLEAN`

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

- `BOUNDARY_HAZARD_CATALOG.json`
