Page actions
instrument mechanism / verified-clean
Smoking Pack-Year Calculator mechanism
The inspectable method record for Smoking Pack-Year Calculator, kept separate from implementation and qualification.
Model scope
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.
- 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.
Units and conventions
- 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.
Inspectable vector
One of 4 source-bound review vectors:
{
"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."
}Failure boundary
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.
Other records
Sources and evidence
These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.
VERIFIED_LEDGER.jsonevidence-tranche5/tranche5-results.jsonBOUNDARY_HAZARD_CATALOG.json