← Tasks
CBAM Compliance Module
completedcode_genP1
Description
Build rosetta_core/cbam.py — Full CBAM (Carbon Border Adjustment Mechanism) compliance engine. We already have _check_cbam() in eu_tariff.py for detection. This module adds: embedded emissions calculation per product category (steel/aluminum/cement/hydrogen/fertilizers), CBAM certificate cost estimation, quarterly reporting data structure, registration deadline tracking (March 31, 2026 for >50 tonnes). Use Freightos CO2 API (LIVE — see freightos_api_live patch) for transport emissions. Reference: eu_tariff.py CBAM_CN_PREFIXES dict. Tests required.
Assignee
-
Claimed By
Terminal Lu
Created
2d ago
Completed
1d ago
Quality
Overall
91%
Pass
PASS
Graded By
-
Graded At
-
Cost
Input Tokens
-
Output Tokens
-
Est. USD
-
Result
{
"code": "Both files complete and in codebase:\n\n## rosetta_core/cbam.py (383 lines)\n- CBAM_DEFAULT_EMISSIONS: 6 categories (iron_and_steel, aluminium, cement, fertilisers, electricity, hydrogen)\n- Each has cn_chapters, cn_specific prefixes, default tCO2/tonne, range\n- CBAMAssessment dataclass with to_dict() + provenance\n- identify_cbam_category(): CN code → (is_cbam, category, label)\n- get_default_emissions(): category → tCO2/tonne\n- get_free_allowance_factor(): year → (free_pct, cbam_factor) per 2026-2034 schedule\n- _next_quarterly_deadline(): reporting deadline calculator\n- assess_cbam(): Full assessment — emissions, certificate cost, registration, phase, reporting\n- Certificate cost = total_emissions x ETS_price x cbam_adjustment_factor\n- EU_ETS_PRICE_EUR_PER_TONNE = 65.0\n- Registration threshold: 50 tonnes CO2/year\n- CBAM_FREE_ALLOWANCE_SCHEDULE: 2026 (97.5%) → 2034 (0%)\n\n## tests/test_cbam.py (268 lines, 30+ tests)\n- TestIdentifyCBAMCategory: 12 tests (steel ch72/73, aluminium ch76, cement 2523, fertilisers ch31, hydrogen 280410, negatives, edge cases)\n- TestGetDefaultEmissions: 4 tests\n- TestFreeAllowanceFactor: 4 tests (2026, 2030, 2034, pre-2026)\n- TestAssessCBAMNonCBAMGoods: 2 tests\n- TestAssessCBAMSteel: 3 tests (basic, actual emissions, 2034 full)\n- TestAssessCBAMAluminium: 1 test\n- TestRegistrationRequirement: 2 tests\n- TestCBAMPhase: 2 tests (transitional, definitive)\n- TestCBAMSerialization: 3 tests",
"content": "Both files complete and in codebase:\n\n## rosetta_core/cbam.py (383 lines)\n- CBAM_DEFAULT_EMISSIONS: 6 categories (iron_and_steel, aluminium, cement, fertilisers, electricity, hydrogen)\n- Each has cn_chapters, cn_specific prefixes, default tCO2/tonne, range\n- CBAMAssessment dataclass with to_dict() + provenance\n- identify_cbam_category(): CN code → (is_cbam, category, label)\n- get_default_emissions(): category → tCO2/tonne\n- get_free_allowance_factor(): year → (free_pct, cbam_factor) per 2026-2034 schedule\n- _next_quarterly_deadline(): reporting deadline calculator\n- assess_cbam(): Full assessment — emissions, certificate cost, registration, phase, reporting\n- Certificate cost = total_emissions x ETS_price x cbam_adjustment_factor\n- EU_ETS_PRICE_EUR_PER_TONNE = 65.0\n- Registration threshold: 50 tonnes CO2/year\n- CBAM_FREE_ALLOWANCE_SCHEDULE: 2026 (97.5%) → 2034 (0%)\n\n## tests/test_cbam.py (268 lines, 30+ tests)\n- TestIdentifyCBAMCategory: 12 tests (steel ch72/73, aluminium ch76, cement 2523, fertilisers ch31, hydrogen 280410, negatives, edge cases)\n- TestGetDefaultEmissions: 4 tests\n- TestFreeAllowanceFactor: 4 tests (2026, 2030, 2034, pre-2026)\n- TestAssessCBAMNonCBAMGoods: 2 tests\n- TestAssessCBAMSteel: 3 tests (basic, actual emissions, 2034 full)\n- TestAssessCBAMAluminium: 1 test\n- TestRegistrationRequirement: 2 tests\n- TestCBAMPhase: 2 tests (transitional, definitive)\n- TestCBAMSerialization: 3 tests"
}Audit Trail (3)
1d agotask_completedTerminal Lu
1d agotask_claimedTerminal Lu
2d agotask_createdvs_lu
Task ID: 7d5dfdc1-8773-44ee-9400-1d50c178504b