@integraledger/lcp-placements 0.9.0 → 0.11.0
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 +87 -0
- package/README.md +2 -1
- package/package.json +11 -11
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,92 @@
|
|
|
1
1
|
# @integraledger/lcp-placements
|
|
2
2
|
|
|
3
|
+
## 0.11.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 822190a: Give the terms URL the write path the published set never had, and certify the composition that broke
|
|
8
|
+
without it (integra-protocol#8).
|
|
9
|
+
|
|
10
|
+
A third party assembling a seller from published parts emitted a 402 the published buyer refuses: every
|
|
11
|
+
published reader demanded `legalContextUrl` and no published writer placed it, and the schema
|
|
12
|
+
`placement-x402` inlined onto the wire (`required: ["type","value"]`, closed) contradicted the authority
|
|
13
|
+
document integraledger.com serves (`required: ["type","value","legalContextUrl"]`, closed) — two
|
|
14
|
+
definitions of one `info`, no document valid against both, each package self-consistent. Three structural
|
|
15
|
+
gaps let it ship: the manifest's `termsUrlField` was singular and read-only (declared, hygiene-checked,
|
|
16
|
+
never written — and x402's wire carries the URL in two slots, so one path could not even name the shape),
|
|
17
|
+
nothing compared the inlined schema to the authority document, and the corpus certified `place` and
|
|
18
|
+
`extract` separately but never fed one to the other.
|
|
19
|
+
|
|
20
|
+
`binding-core` — the placement seam now moves an ADVERTISEMENT, not a bare reference. `place` takes
|
|
21
|
+
`{ ref, termsUrl? }` and writes the URL at every slot the manifest's new `termsUrlFields` (plural,
|
|
22
|
+
replacing `termsUrlField`) declares; it REFUSES an integrity-bearing advertisement with no URL where slots
|
|
23
|
+
are declared (a hash no counterparty can resolve is unverifiable by construction), a URL where no slot
|
|
24
|
+
exists (silent dropping is fail-open), and a non-https URL on either side of the seam. `extract` returns
|
|
25
|
+
`{ ref, termsUrl }` with absence as a typed value — `no-field-declared` is a fact about the protocol,
|
|
26
|
+
`declared-fields-empty` a fact about the document, and the gate decides what an absence means — while two
|
|
27
|
+
slots that disagree, or a malformed value in either, refuse. The object-path writer learned to descend
|
|
28
|
+
into an EXISTING array element (never minting one, never extending a list, refusing an index segment it
|
|
29
|
+
would have to create), which is what lets x402's `accepts[0].extra` mirrors land.
|
|
30
|
+
|
|
31
|
+
`placement-x402` — the inlined wire schema now IS the authority document minus `$id` and `$defs`
|
|
32
|
+
(Bazaar forbids both on the wire), drift-gated in `lcp-conformance` where the two packages meet.
|
|
33
|
+
`termsUrlFields` declares both slots the wire carries; the bare-hash alias is written (`extra` stopped
|
|
34
|
+
being wholly scheme-private when x402 §6.1 reserved names inside it, and LCP v1.38 §C.4's own Tier A
|
|
35
|
+
illustration carries the pair there); the `url` carrier admission is withdrawn (`carrierTypes` is
|
|
36
|
+
`sha256` alone — the schema on the wire is `const: "sha256"`, and no shipped reader ever accepted a url
|
|
37
|
+
in this slot). The `place` override shrinks to composition: the kit performs the whole placement and the
|
|
38
|
+
override adds only the `{info, schema}` wrapper.
|
|
39
|
+
|
|
40
|
+
`placement-mpp` / `placement-acp` — the singular member becomes the one-entry `termsUrlFields`; the kit
|
|
41
|
+
now writes the slot their buyer parsers always demanded and refuses first at the seller.
|
|
42
|
+
|
|
43
|
+
`lcp-conformance` — the corpus grows 812 → 844: a `roundtrip` op (place then extract in one case, the
|
|
44
|
+
composition certification whose absence let two separately-conformant halves ship jointly broken),
|
|
45
|
+
advertisement-rule refusals for every manifest, and the authority↔wire drift gate. Extract expectations
|
|
46
|
+
across every placement area become the extracted advertisement.
|
|
47
|
+
|
|
48
|
+
`lcp-verify` — `referencePlacementStep` reads the advertisement (`extracted.ref.value`) and deliberately
|
|
49
|
+
ignores `termsUrl`: where the terms live is the gate's fetch concern, not a fact the record can
|
|
50
|
+
contradict.
|
|
51
|
+
|
|
52
|
+
`lcp-discovery` — the x402 authority document restates the atrHash pattern inline in both definitions
|
|
53
|
+
(no `$defs` indirection the wire copy would have to rewrite) and moves the two-definitions rationale into
|
|
54
|
+
`$defs.receipt`, so the challenge-time root is byte-derivable for the wire.
|
|
55
|
+
|
|
56
|
+
### Patch Changes
|
|
57
|
+
|
|
58
|
+
- Updated dependencies [b2ffecc]
|
|
59
|
+
- Updated dependencies [822190a]
|
|
60
|
+
- @integraledger/lcp-binding-core@0.11.0
|
|
61
|
+
- @integraledger/lcp-placement-ucp@0.11.0
|
|
62
|
+
- @integraledger/lcp-placement-x402@0.11.0
|
|
63
|
+
- @integraledger/lcp-placement-mastercard-vi@0.11.0
|
|
64
|
+
- @integraledger/lcp-placement-mpp@0.11.0
|
|
65
|
+
- @integraledger/lcp-placement-acp@0.11.0
|
|
66
|
+
- @integraledger/lcp-placement-a2a@0.11.0
|
|
67
|
+
- @integraledger/lcp-placement-ack@0.11.0
|
|
68
|
+
- @integraledger/lcp-placement-ap2@0.11.0
|
|
69
|
+
- @integraledger/lcp-placement-visa-tap@0.11.0
|
|
70
|
+
|
|
71
|
+
## 0.10.1
|
|
72
|
+
|
|
73
|
+
**0.10.0 was staged and withdrawn before approval; this is that release, re-cut.** The conformance corpus
|
|
74
|
+
was re-sealed after 0.10.0 was staged — its root moved `32fa90a6…` → `28bbf4ef…` when the vector tree was
|
|
75
|
+
brought inside the prose gates — so the staged `lcp-conformance` tarball carried a seal that no longer
|
|
76
|
+
matched the repository. The seal is what proves corpus authenticity to an independent implementer, and a
|
|
77
|
+
published version cannot be replaced, so the whole set was rejected and re-cut rather than shipping one
|
|
78
|
+
package that disagreed with its own source. No version 0.10.0 exists on the registry.
|
|
79
|
+
|
|
80
|
+
Released as part of a flat `0.10.1` across the whole suite, so this package carries the suite version even
|
|
81
|
+
though its own change is dependency-level: two placements it re-exports renamed an export, and the registry
|
|
82
|
+
itself is unchanged.
|
|
83
|
+
|
|
84
|
+
### Patch Changes
|
|
85
|
+
|
|
86
|
+
- Updated dependencies [3f2d2e3]
|
|
87
|
+
- @integraledger/lcp-placement-mastercard-vi@0.10.0
|
|
88
|
+
- @integraledger/lcp-placement-visa-tap@0.10.0
|
|
89
|
+
|
|
3
90
|
## 0.9.0
|
|
4
91
|
|
|
5
92
|
First public release.
|
package/README.md
CHANGED
|
@@ -43,7 +43,8 @@ which unit landed first.
|
|
|
43
43
|
|
|
44
44
|
## `mcp` is absent because MCP has no field carrier
|
|
45
45
|
|
|
46
|
-
Not a pending `placement-mcp`. LCP
|
|
46
|
+
Not a pending `placement-mcp`. LCP §C.9 and §10 — v1.38, and unchanged on this point from v1.37 — describe
|
|
47
|
+
an LCP-aware MCP **server** — tools,
|
|
47
48
|
resources and prompts, plus a `capabilities.extensions` negotiation map keyed by a reverse domain — and no
|
|
48
49
|
document field for a reference to ride in. MCP is a delivery surface, not a placement, so `mcp`'s absence
|
|
49
50
|
from this registry is the correct terminal state. The corpus pins it: `placement.dispatch` asserts that a
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@integraledger/lcp-placements",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "The LCP placement registry — the one place a protocol is registered.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"lcp",
|
|
@@ -40,16 +40,16 @@
|
|
|
40
40
|
},
|
|
41
41
|
"homepage": "https://github.com/IntegraLedger/integra-protocol/tree/main/packages/placements#readme",
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@integraledger/lcp-binding-core": "0.
|
|
44
|
-
"@integraledger/lcp-placement-a2a": "0.
|
|
45
|
-
"@integraledger/lcp-placement-ack": "0.
|
|
46
|
-
"@integraledger/lcp-placement-acp": "0.
|
|
47
|
-
"@integraledger/lcp-placement-ap2": "0.
|
|
48
|
-
"@integraledger/lcp-placement-mastercard-vi": "0.
|
|
49
|
-
"@integraledger/lcp-placement-mpp": "0.
|
|
50
|
-
"@integraledger/lcp-placement-ucp": "0.
|
|
51
|
-
"@integraledger/lcp-placement-visa-tap": "0.
|
|
52
|
-
"@integraledger/lcp-placement-x402": "0.
|
|
43
|
+
"@integraledger/lcp-binding-core": "0.11.0",
|
|
44
|
+
"@integraledger/lcp-placement-a2a": "0.11.0",
|
|
45
|
+
"@integraledger/lcp-placement-ack": "0.11.0",
|
|
46
|
+
"@integraledger/lcp-placement-acp": "0.11.0",
|
|
47
|
+
"@integraledger/lcp-placement-ap2": "0.11.0",
|
|
48
|
+
"@integraledger/lcp-placement-mastercard-vi": "0.11.0",
|
|
49
|
+
"@integraledger/lcp-placement-mpp": "0.11.0",
|
|
50
|
+
"@integraledger/lcp-placement-ucp": "0.11.0",
|
|
51
|
+
"@integraledger/lcp-placement-visa-tap": "0.11.0",
|
|
52
|
+
"@integraledger/lcp-placement-x402": "0.11.0"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@types/node": "24.13.3",
|