WST-INT
Waste Intensity Calculator
1. Identity
Depends on module:
Purpose
Computes waste intensity by normalizing waste generated (total, hazardous, or non-hazardous) against an activity denominator (typically revenue), producing disclosure-ready intensity series aligned with ESRS E5 reporting patterns.
This engine is the Waste analogue of:
MEID_CALC_ENERGY_INTMEID_CALC_WATER_INTMEID_CALC_GHG_INT
Typical usage
- Total waste generated per € revenue (t/€m)
- Hazardous waste per € revenue
- Non-hazardous waste per € revenue
- Inputs to benchmarking and trend analytics
2. Contract References (ZAR)
2.1 Input Schema
ZAR Address: schema.compute.waste.intensity.inputs.v1_0_0
Required conceptual fields:
waste: scalar or time-series (absolute waste quantity)denominator: scalar or time-series (e.g., revenue in EURm, production volume)intensity_basis:TOTAL|HAZARDOUS|NON_HAZARDOUS(defaultTOTAL)alignment:BY_YEAR|BY_INDEX(defaultBY_YEAR)
Optional:
unit_waste: defaulttonneunit_denominator: e.g.EURmwaste_by_category: optional map category → series (for future extensions)
Note: v1 focuses on a single intensity output per request. Per-category intensity can be introduced later without changing the core formula.
2.2 Options Schema
ZAR Address: schema.compute.waste.intensity.options.v1_0_0
Common options:
denominator_floor: default1e-9missing_policy:ERROR|SKIProunding: optional digitsoutput_unit_style:t_per_EURm|t_per_EUR|auto(defaultauto)non_positive_denominator_policy:ERROR|FLOOR_AT_EPS(defaultERROR)
2.3 Output Schema
ZAR Address: schema.compute.waste.intensity.output.v1_0_0
Outputs include:
waste_intensitymetadata(basis, floors applied, alignment info, units)
3. Accepted Input Shapes
A. Total waste intensity (scalar)
{
"waste": 1285,
"denominator": 250,
"intensity_basis": "TOTAL"
}
B. Hazardous waste intensity (time-series)
{
"waste": [[2025, 85], [2026, 82]],
"denominator": [[2025, 250], [2026, 260]],
"intensity_basis": "HAZARDOUS",
"alignment": "BY_YEAR"
}
C. Total + hazard split resolved upstream
{
"waste": {
"total": [[2025, 1285]],
"hazardous": [[2025, 85]],
"non_hazardous": [[2025, 1200]]
},
"denominator": [[2025, 250]],
"intensity_basis": "NON_HAZARDOUS"
}
All supported shapes MUST be normalized internally to:
Map<period, waste_value> + Map<period, denominator_value>
4. Compute Semantics (Normative)
For each aligned period :
4.1. Select waste basis
Let be the selected waste series corresponding to intensity_basis:
- TOTAL:
- HAZARDOUS:
- NON_HAZARDOUS: