@integraledger/lcp-binding-evm-mpp 0.9.0 → 0.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,75 @@
1
1
  # @integraledger/lcp-binding-evm-mpp
2
2
 
3
+ ## 0.10.2
4
+
5
+ ### Patch Changes
6
+
7
+ - b2ffecc: Report the class a record actually supports, place a terms URL on UCP, and stop refusing a conformant UCP
8
+ profile — the remediation of the 2026-08-19 conformance re-audit.
9
+
10
+ **`verify` now computes `supportedClass` instead of echoing the claim.** It was `anyFailed ? "TC-0" :
11
+ claimedClass`, so a record proving nothing — no settlement, no acceptance, no authority chain — reported
12
+ whatever class the caller named, while the field's own published docblock promised "what the record
13
+ honestly supports, not what the caller asked for". It is now the highest class every one of whose required
14
+ steps is `proved`, `TC-0` on any failure, computed from the steps alone: neither capped by the claim (rungs
15
+ that reach TC-3 read TC-3 where the caller claimed TC-2) nor lifted by it. White paper #4 §5 defines the
16
+ class of a transaction as "the highest class whose criteria it fully meets", and this is that.
17
+
18
+ The claim is not discarded — the report gains **`claimedClass`**, a required member, because `verified`
19
+ answers "did the record reach the class it claimed?" and cannot be read without it. The two fields are the
20
+ report's two halves: an input echoed, and a finding computed. Where they differ, the record did not reach
21
+ its own shape. An out-of-taxonomy claim now lands only in the echo and can no longer masquerade as a
22
+ finding.
23
+
24
+ **UCP can advertise a terms URL.** Its policy object declares `url` — "Optional link to the full policy
25
+ document", `format: uri` — on the very entry this placement writes, and §C.3's illustration carries `url`
26
+ and `atrHash` side by side there. The manifest previously said the protocol had no slot, citing `links[]`,
27
+ which §C.3 separates as "a standing page, not a per-transaction record". The obstacle was mechanical:
28
+ `termsUrlFields` addresses document paths, and a tagged-array entry's index is chosen at write time. The
29
+ `tagged-array` container therefore gains `termsUrlField`, written onto the same entry in the same write, and
30
+ read back through the same first-match rule. UCP was the last shipped protocol that refused an
31
+ advertisement carrying its own locator (integra-protocol#8).
32
+
33
+ **`readUcpProfile` no longer refuses a conformant business profile.** `requireHttps` mapped an ABSENT `spec`
34
+ to the same branch as a malformed one, and the live host requires `spec` only of a platform declaration —
35
+ as this repository's own README already said. It is now `requireHttpsIfDeclared`: absence is absence, and a
36
+ declared value is still held to the host's https MUST.
37
+
38
+ Also: `requireWritten` replaces an unchecked cast in the x402 override, so a broken postcondition throws
39
+ instead of returning a success carrying no document; six x402 citations move to the revision that actually
40
+ touches the file they name, and a new gate refuses any `owner/repo@sha` in source that `spec-pins.json` does
41
+ not record; four spec citations move from line anchors to section anchors; the escrow binding states why it
42
+ declares no §8.3.1 off-canonical variant, and asserts it; and §C.3's `policies[]` illustration is recorded as
43
+ invalid against the live UCP schema, which shows `description` as a bare string where the host requires an
44
+ object — owed upstream, not a defect here.
45
+
46
+ Corpus 844 → 847, root `ec4ad1b02a81538b…`.
47
+
48
+ - Updated dependencies [b2ffecc]
49
+ - Updated dependencies [822190a]
50
+ - @integraledger/lcp-binding-core@0.11.0
51
+ - @integraledger/lcp-binding-evm-common@0.10.2
52
+ - @integraledger/lcp-kernel@0.11.0
53
+
54
+ ## 0.10.1
55
+
56
+ **0.10.0 was staged and withdrawn before approval; this is that release, re-cut.** The conformance corpus
57
+ was re-sealed after 0.10.0 was staged — its root moved `32fa90a6…` → `28bbf4ef…` when the vector tree was
58
+ brought inside the prose gates — so the staged `lcp-conformance` tarball carried a seal that no longer
59
+ matched the repository. The seal is what proves corpus authenticity to an independent implementer, and a
60
+ published version cannot be replaced, so the whole set was rejected and re-cut rather than shipping one
61
+ package that disagreed with its own source. No version 0.10.0 exists on the registry.
62
+
63
+ Released as part of a flat `0.10.1` across the whole suite. One number describes the set that was built,
64
+ tested and sealed together, so a consumer never has to work out which combination of versions was verified.
65
+
66
+ This package has no source change of its own in this release. What moved across the suite: three exported
67
+ names were corrected before anyone depends on them — `USDC_DECIMALS` became rail-qualified after it was
68
+ found to mean 6 on three rails and 7 on Stellar under one name, `VISA_TAP_PLACEMENT_TIER_A` lost the tier
69
+ it had baked into an identifier, and the memo codecs were named for the carrier they encode. Two wire
70
+ identities were respelled to match the vocabulary they are written into. Five gates were added or widened,
71
+ and a large number of documentation claims were corrected against the host specifications at HEAD.
72
+
3
73
  ## 0.9.0
4
74
 
5
75
  First public release.
package/README.md CHANGED
@@ -83,7 +83,8 @@ Read against the host protocol's own live specifications, not LCP's Appendix C.
83
83
 
84
84
  **Two drifts found, recorded rather than smoothed over.**
85
85
 
86
- - **The core draft's identifier.** LCP v1.37 §C.1 and the completion plan both cite
86
+ - **The core draft's identifier.** (Discharged: v1.38 §C.1 now records both identities and cites
87
+ `draft-httpauth-payment-00` as the family's own publication.) LCP v1.37 §C.1 cited
87
88
  `draft-ryan-httpauth-payment-01` (the IETF individual submission). paymentauth.org's own document index
88
89
  publishes the core scheme as **`draft-httpauth-payment-00.html`**. Both were read for this gate; they agree
89
90
  on §5.1.1 and on the seven slots. Treat the paymentauth.org copy as the live one — it is the family's own
@@ -168,7 +169,8 @@ from it, never occupied by it.
168
169
  ## Provenance
169
170
 
170
171
  Cut against `draft-evm-charge-00` and the core `Payment` scheme at paymentauth.org, gate discharged
171
- 2026-07-30, and reconciled against LCP v1.37 §C.1 and §8.3.5 the same day. The derivation oracles in
172
+ 2026-07-30, and reconciled against LCP v1.37 §C.1 and §8.3.5 the same day; re-read against **v1.38 §C.1** on
173
+ 2026-08-12, which adopted the identifier finding below. The derivation oracles in
172
174
  `vectors/binding/mpp-evm-id-reuse.json` were produced by two independent keccak-256 implementations
173
175
  (pycryptodome and Foundry `cast keccak`), and `abi.encodePacked`'s string semantics were confirmed against
174
176
  Foundry's own encoder — neither of them the implementation under test.
@@ -13,8 +13,8 @@
13
13
  *
14
14
  * **WHAT MAKES THAT SOUND IS NOT UNIQUENESS, AND AN EARLIER DOCBLOCK SAID IT WAS.** It argued that MPP's
15
15
  * "Unique challenge identifier" requirement (`draft-httpauth-payment` §5.1.1) was satisfied by making each
16
- * ATR unique per transaction. Every citation in it was exact; the sufficiency was not. LCP v1.38 §C.1
17
- * (:1282-1289):
16
+ * ATR unique per transaction. Every citation in it was exact; the sufficiency was not. LCP v1.38 §C.1,
17
+ * under "Id-Reuse on MPP-EVM, and its limit":
18
18
  *
19
19
  * > **It is not simply available, and §8.3.5's uniqueness advice is not sufficient for it.** MPP requires
20
20
  * > the server to bind the challenge `id` *to the challenge parameters* … expressly to prevent a client
@@ -37,7 +37,8 @@
37
37
  * its challenge-binding section. §C.1 names that inconsistency rather than resolving it, and so does this.
38
38
  *
39
39
  * **Zero-party-recoverable on-chain binding on this rail still requires an Overlay Contract per §8.3.2**
40
- * (§C.1:1289). Nothing here recovers an atrHash, and nothing may be added that does — see the closing note.
40
+ * (§C.1's own closing sentence under "Id-Reuse on MPP-EVM, and its limit"). Nothing here recovers an
41
+ * atrHash, and nothing may be added that does — see the closing note.
41
42
  *
42
43
  * **`abi.encodePacked` over two strings is raw UTF-8 concatenation** — no length prefix, no padding. That was
43
44
  * confirmed against Foundry's own encoder rather than assumed, and every oracle in
@@ -1 +1 @@
1
- {"version":3,"file":"id-reuse.d.ts","sourceRoot":"","sources":["../src/id-reuse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAExE,OAAO,EAAU,KAAK,GAAG,EAA4B,MAAM,MAAM,CAAC;AAKlE,oGAAoG;AACpG,MAAM,WAAW,sBAAsB;IACrC,uFAAuF;IACvF,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC;IAC1B,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,mGAAmG;IACnG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;CACrB;AAED,yGAAyG;AACzG,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;IACtB,kGAAkG;IAClG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAU3E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,sBAAsB,CAOxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,SAAS,MAAM,EAAE,GAChC,OAAO,CAAC,2BAA2B,CAAC,CAsCtC;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,IAAI,OAAO,CAQtD"}
1
+ {"version":3,"file":"id-reuse.d.ts","sourceRoot":"","sources":["../src/id-reuse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAExE,OAAO,EAAU,KAAK,GAAG,EAA4B,MAAM,MAAM,CAAC;AAKlE,oGAAoG;AACpG,MAAM,WAAW,sBAAsB;IACrC,uFAAuF;IACvF,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC;IAC1B,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,mGAAmG;IACnG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;CACrB;AAED,yGAAyG;AACzG,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;IACtB,kGAAkG;IAClG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAU3E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,sBAAsB,CAOxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,SAAS,MAAM,EAAE,GAChC,OAAO,CAAC,2BAA2B,CAAC,CAsCtC;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,IAAI,OAAO,CAQtD"}
package/dist/id-reuse.js CHANGED
@@ -13,8 +13,8 @@
13
13
  *
14
14
  * **WHAT MAKES THAT SOUND IS NOT UNIQUENESS, AND AN EARLIER DOCBLOCK SAID IT WAS.** It argued that MPP's
15
15
  * "Unique challenge identifier" requirement (`draft-httpauth-payment` §5.1.1) was satisfied by making each
16
- * ATR unique per transaction. Every citation in it was exact; the sufficiency was not. LCP v1.38 §C.1
17
- * (:1282-1289):
16
+ * ATR unique per transaction. Every citation in it was exact; the sufficiency was not. LCP v1.38 §C.1,
17
+ * under "Id-Reuse on MPP-EVM, and its limit":
18
18
  *
19
19
  * > **It is not simply available, and §8.3.5's uniqueness advice is not sufficient for it.** MPP requires
20
20
  * > the server to bind the challenge `id` *to the challenge parameters* … expressly to prevent a client
@@ -37,7 +37,8 @@
37
37
  * its challenge-binding section. §C.1 names that inconsistency rather than resolving it, and so does this.
38
38
  *
39
39
  * **Zero-party-recoverable on-chain binding on this rail still requires an Overlay Contract per §8.3.2**
40
- * (§C.1:1289). Nothing here recovers an atrHash, and nothing may be added that does — see the closing note.
40
+ * (§C.1's own closing sentence under "Id-Reuse on MPP-EVM, and its limit"). Nothing here recovers an
41
+ * atrHash, and nothing may be added that does — see the closing note.
41
42
  *
42
43
  * **`abi.encodePacked` over two strings is raw UTF-8 concatenation** — no length prefix, no padding. That was
43
44
  * confirmed against Foundry's own encoder rather than assumed, and every oracle in
@@ -1 +1 @@
1
- {"version":3,"file":"id-reuse.js","sourceRoot":"","sources":["../src/id-reuse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAY,SAAS,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAElE,iGAAiG;AACjG,MAAM,OAAO,GAAG,qBAAqB,CAAC;AAuBtC;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAmB,EAAE,KAAa;IACpE,IAAI,WAAW,KAAK,EAAE;QACpB,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;IACJ,IAAI,KAAK,KAAK,EAAE;QACd,MAAM,IAAI,KAAK,CACb,wHAAwH,CACzH,CAAC;IACJ,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,WAAW,CACzB,OAAe,EACf,KAAa;IAEb,MAAM,WAAW,GAAG,gBAAgB,CAClC,OAAO,EACP,aAAa,EACb,iIAAiI,CAC3H,CAAC;IACT,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;AAChF,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,KAAa,EACb,cAAiC;IAEjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QACxB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,sBAAsB;YACjC,IAAI,EAAE,6BAA6B;YACnC,MAAM,EAAE,gGAAgG,OAAO,GAAG;SACnH,CAAC;IACJ,KAAK,MAAM,QAAQ,IAAI,cAAc;QACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;YACzB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,sBAAsB;gBACjC,IAAI,EAAE,yBAAyB;gBAC/B,MAAM,EAAE,wEAAwE,QAAQ,GAAG;aAC5F,CAAC;IACN,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;QAC7B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,sBAAsB;YACjC,IAAI,EAAE,6BAA6B;YACnC,MAAM,EACJ,2GAA2G;SAC9G,CAAC;IACJ,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,CAAQ,CAAC;IACrE,MAAM,KAAK,GAAG,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;IACtE,IAAI,OAAO,KAAK,SAAS;QACvB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,sBAAsB;YACjC,IAAI,EAAE,4BAA4B;YAClC,MAAM,EAAE,8CAA8C,SAAS,OAAO,KAAK,SAAS,KAAK,EAAE;SAC5F,CAAC;IACJ,OAAO;QACL,EAAE,EAAE,IAAI;QACR,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE;KAC7D,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO;QACL,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,sBAAsB;QACjC,IAAI,EAAE,yCAAyC;QAC/C,MAAM,EACJ,8NAA8N;KACjO,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"id-reuse.js","sourceRoot":"","sources":["../src/id-reuse.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integraledger/lcp-binding-evm-mpp",
3
- "version": "0.9.0",
3
+ "version": "0.10.2",
4
4
  "description": "Welds an LCP record into an MPP settlement on EVM by Id-Reuse (LCP §8.3.5).",
5
5
  "keywords": [
6
6
  "lcp",
@@ -43,9 +43,9 @@
43
43
  "homepage": "https://github.com/IntegraLedger/integra-protocol/tree/main/packages/binding-evm-mpp#readme",
44
44
  "dependencies": {
45
45
  "viem": "2.55.11",
46
- "@integraledger/lcp-binding-core": "0.9.0",
47
- "@integraledger/lcp-binding-evm-common": "0.9.0",
48
- "@integraledger/lcp-kernel": "0.9.0"
46
+ "@integraledger/lcp-binding-core": "0.11.0",
47
+ "@integraledger/lcp-binding-evm-common": "0.10.2",
48
+ "@integraledger/lcp-kernel": "0.11.0"
49
49
  },
50
50
  "devDependencies": {
51
51
  "@types/node": "24.13.3",
package/src/id-reuse.ts CHANGED
@@ -13,8 +13,8 @@
13
13
  *
14
14
  * **WHAT MAKES THAT SOUND IS NOT UNIQUENESS, AND AN EARLIER DOCBLOCK SAID IT WAS.** It argued that MPP's
15
15
  * "Unique challenge identifier" requirement (`draft-httpauth-payment` §5.1.1) was satisfied by making each
16
- * ATR unique per transaction. Every citation in it was exact; the sufficiency was not. LCP v1.38 §C.1
17
- * (:1282-1289):
16
+ * ATR unique per transaction. Every citation in it was exact; the sufficiency was not. LCP v1.38 §C.1,
17
+ * under "Id-Reuse on MPP-EVM, and its limit":
18
18
  *
19
19
  * > **It is not simply available, and §8.3.5's uniqueness advice is not sufficient for it.** MPP requires
20
20
  * > the server to bind the challenge `id` *to the challenge parameters* … expressly to prevent a client
@@ -37,7 +37,8 @@
37
37
  * its challenge-binding section. §C.1 names that inconsistency rather than resolving it, and so does this.
38
38
  *
39
39
  * **Zero-party-recoverable on-chain binding on this rail still requires an Overlay Contract per §8.3.2**
40
- * (§C.1:1289). Nothing here recovers an atrHash, and nothing may be added that does — see the closing note.
40
+ * (§C.1's own closing sentence under "Id-Reuse on MPP-EVM, and its limit"). Nothing here recovers an
41
+ * atrHash, and nothing may be added that does — see the closing note.
41
42
  *
42
43
  * **`abi.encodePacked` over two strings is raw UTF-8 concatenation** — no length prefix, no padding. That was
43
44
  * confirmed against Foundry's own encoder rather than assumed, and every oracle in