Skip to main contentA-REX Foundation

决策记录 · ADR-018

ADR-018: A declared product carbon footprint under extensions.pact_pcf

A batch may carry a product carbon footprint that a named third party calculated, copied from a WBCSD PACT footprint into extensions.pact_pcf of the metadata document and validated by a published fragment. The reference implementation never calculates, sums or propagates one.

**Proposed** (2026-10-23). Not accepted: it needs the confirmation of two independent implementers ([GOVERNANCE.md](../GOVERNANCE.md))
文档 ID
ADR-018
日期
2026-10-23
仅提供英文版
本页为英文。白皮书章节、示意图和平台页面已翻译;帮助文章遵循控制台帮助所提供的语言。规范性标准留在仓库中;请使用申请提前访问获取该文本。系统设计指南和决策记录保持英文。
FieldValue
IDADR-018
Subject areaSustainability, metadata schema
StatusProposed (2026-10-23). Not accepted: it needs the confirmation of two independent implementers (GOVERNANCE.md)
Date2026-10-23
OwnersA-REX Contributors; requested by the A-REX Platform (UNTP export and declared footprints)
Related requirementsAREX-CORE §3.5 (metadata); ADR-014 (carbon), ADR-017 (extensions)
Supersedes / superseded by—

Context

Buyers of agricultural lots increasingly ask for a product carbon footprint: manufacturers that will issue a Digital Product Passport for textiles, furniture or tyres, and companies reporting Scope 3 emissions. The footprints exist outside the token. A grower, a ginner or a mill commissions a life-cycle study, and the result is published in the WBCSD PACT format (Technical Specifications 3.0.3).

A-REX already records carbon in one way: credits immobilised in their registry and linked to a lot (ADR-014). A footprint is a different thing, an emission figure per unit of product. The two must not be confused, and Directive (EU) 2024/825 treats environmental claims based on offsetting, or not substantiated, as unfair commercial practices.

Issue

How can a batch carry a footprint that buyers can rely on, without the token or its implementations becoming the party that calculates or vouches for it?

Assumptions

  • Footprints are calculated by a third party (or by the issuer with a third-party method) and published in PACT 3.x.
  • The metadata document is committed on chain by metadataHash; changing it means a new document (setBatchMetadata).
  • ADR-017 namespacing applies: fields contributed by an extension live under extensions.<key>.

Constraints

  • Directive (EU) 2024/825 (environmental claims, offset-based claims).
  • ADR-014: carbon credits are never issued or netted by the token.
  • The PACT licence allows sharing a Separate Derivative commercially with a notice, but not a reproduction of the specification. The fragment is A-REX's own work and copies no PACT file.
  • No personal data in public documents (AREX-CORE §3.5).

Alternatives considered

AlternativeForAgainstOutcome
Calculate a footprint from the batch data (commodity, quantities, transformations)no third party neededthe token has none of the activity data; the result would be an unsubstantiated claim by the platformRejected
Sum or average the footprints of input batches into output batchesfollows lineage automaticallyit is a calculation; allocation and mass balance make it wrong in generalRejected
Free top-level fields (carbonFootprint: 1.8)simpleno unit, no method, no source, no verifier; collides with other usesRejected
Store the whole PACT ProductFootprint documentlosslesslarge; carries fields a batch does not need; ties the schema to PACT's full modelRejected (the source stays reachable through footprintId and source)
A closed object under extensions.pact_pcf with the PACT fields a reader needs, plus the source, the issuer and an explicit verification statussmall, validated, names every party, keeps the source reachableone more fragment to maintain against PACT releasesProposed

Decision (proposed)

The key pact_pcf is reserved under extensions. Its object is validated by interop/pact-pcf.schema.json ($id https://arex.ag/schema/extensions/pact-pcf/0.1.0), explained field by field in interop/PACT.md. It carries the declared value per declared unit, the declared unit, the reference period, the methodology standards, the primary data share, the boundary, the issuer and the calculator, the verification status and verifier, and the source footprint id.

Rules:

  • The value is declared, never computed. The reference implementation and any implementation claiming this fragment copy it from the source footprint; they never calculate, estimate or adjust it.
  • The issuer is named (issuer.name). A footprint that is verified names its verifier (verification.providerName).
  • verification.status is required (verified or not_verified), so a reader never mistakes an unverified footprint for a verified one.
  • Wording derived from it never says "carbon neutral", "climate positive", "net zero", "offset" or "compensated".
  • It is distinct from ADR-014 credits. Credits linked to a lot are never subtracted from, combined with or presented as reducing a footprint.
  • A footprint on an input batch does not flow to the batches made from it, and footprints of different batches are never summed or averaged. Under mass balance, the goods of an output cannot be attributed to specific inputs, so an output's footprint is calculated by a third party for the output and declared on the output.
  • A footprint that is superseded is replaced with setBatchMetadata: a new document and a new hash. The previous document stays in the batch's history.
  • Until ADR-017 is accepted, documents carry extensions.pact_pcf under schema 1.2.0, which allows additional top-level properties.

Argument

The value a buyer needs is someone's measurement, not the token's. Keeping the token to a faithful, committed copy with named sources gives buyers what they can check: the metadata hash proves the copy has not changed since it was declared, footprintId and source lead to the original, and the verifier is named or the absence of one is stated. Following PACT field names keeps the copy readable by PACT tools without a translation table.

Consequences

Positive

  • A batch can feed a manufacturer's Digital Product Passport (UNTP performanceClaim, interop/UNTP.md) and an EPCIS export with the same declared figure.
  • No implementation takes on the liability of calculating or certifying a footprint.

Negative

  • A footprint attached after creation needs a metadata update, which is a role-gated on-chain transaction.
  • Fields of PACT not in the fragment (the full emission breakdown, data quality ratings) are only in the source footprint.

Obligations it creates

  • test/pact-pcf.test.mjs: the example is valid; missing verification, a verified footprint without a verifier, malformed decimals and extra properties are rejected.
  • The fragment follows PACT 3.x; a PACT 4.0 needs a new fragment version.

Implementation and evidence

WhatWhere
Fragmentinterop/pact-pcf.schema.json
Field mapping, licence noticeinterop/PACT.md
Exampleexamples/batch-metadata.pact-pcf.example.json
Teststest/pact-pcf.test.mjs
First consumerA-REX Platform (declared footprint on a lot, UNTP and EPCIS exports)
  • ADR-008: no coordinates or natural-person identifiers in the batch record
  • ADR-014: carbon credits as records of immobilised registry credits (never netted against a footprint)
  • ADR-017: namespaced extensions in batch metadata (proposed)