@integraledger/lcp-placement-ucp 0.9.0 → 0.10.1
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 +19 -0
- package/README.md +13 -7
- package/dist/manifest.d.ts +2 -1
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +2 -1
- package/dist/manifest.js.map +1 -1
- package/dist/placement.d.ts +7 -4
- package/dist/placement.d.ts.map +1 -1
- package/dist/placement.js +7 -4
- package/dist/placement.js.map +1 -1
- package/package.json +2 -2
- package/src/manifest.ts +2 -1
- package/src/placement.ts +7 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @integraledger/lcp-placement-ucp
|
|
2
2
|
|
|
3
|
+
## 0.10.1
|
|
4
|
+
|
|
5
|
+
**0.10.0 was staged and withdrawn before approval; this is that release, re-cut.** The conformance corpus
|
|
6
|
+
was re-sealed after 0.10.0 was staged — its root moved `32fa90a6…` → `28bbf4ef…` when the vector tree was
|
|
7
|
+
brought inside the prose gates — so the staged `lcp-conformance` tarball carried a seal that no longer
|
|
8
|
+
matched the repository. The seal is what proves corpus authenticity to an independent implementer, and a
|
|
9
|
+
published version cannot be replaced, so the whole set was rejected and re-cut rather than shipping one
|
|
10
|
+
package that disagreed with its own source. No version 0.10.0 exists on the registry.
|
|
11
|
+
|
|
12
|
+
Released as part of a flat `0.10.1` across the whole suite. One number describes the set that was built,
|
|
13
|
+
tested and sealed together, so a consumer never has to work out which combination of versions was verified.
|
|
14
|
+
|
|
15
|
+
This package has no source change of its own in this release. What moved across the suite: three exported
|
|
16
|
+
names were corrected before anyone depends on them — `USDC_DECIMALS` became rail-qualified after it was
|
|
17
|
+
found to mean 6 on three rails and 7 on Stellar under one name, `VISA_TAP_PLACEMENT_TIER_A` lost the tier
|
|
18
|
+
it had baked into an identifier, and the memo codecs were named for the carrier they encode. Two wire
|
|
19
|
+
identities were respelled to match the vocabulary they are written into. Five gates were added or widened,
|
|
20
|
+
and a large number of documentation claims were corrected against the host specifications at HEAD.
|
|
21
|
+
|
|
3
22
|
## 0.9.0
|
|
4
23
|
|
|
5
24
|
First public release.
|
package/README.md
CHANGED
|
@@ -47,15 +47,19 @@ Both members are total: a refusal is a returned value, never a thrown exception.
|
|
|
47
47
|
|
|
48
48
|
Read against the live spec at ucp.dev, version `2026-04-08` (`overview#capabilities`,
|
|
49
49
|
`overview#namespace-governance`, `overview#intersection-algorithm`, and the checkout capability page), the
|
|
50
|
-
gate falsified the
|
|
50
|
+
gate falsified the design this package was specced from, twice:
|
|
51
51
|
|
|
52
|
-
1. **Vendor capabilities are Tier A.**
|
|
52
|
+
1. **Vendor capabilities are Tier A.** It specced a links-only placement on the premise that UCP's
|
|
53
53
|
strict schema rejects unregistered keys, making the integrity path Tier B. The live spec says the
|
|
54
54
|
opposite: "Vendors MUST use their own reverse-domain namespace for custom capabilities" — no central
|
|
55
|
-
registry, no maintainer approval. What replaces registration is **authority binding
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
registry, no maintainer approval. What replaces registration is **authority binding**, and it binds the
|
|
56
|
+
`schema` URL alone: "a declared `schema` URL's origin MUST match the namespace authority in its name",
|
|
57
|
+
with a platform obliged to "validate each business-declared `schema` URL before fetching it". The `spec`
|
|
58
|
+
URL is expressly outside the trust path. Built as planned, this package would have shipped a URL and no
|
|
59
|
+
hash while a hash-bearing carrier was available the whole time. (Verified verbatim at UCP HEAD
|
|
60
|
+
2026-08-11. An earlier release quoted the host as also saying platforms "SHOULD reject capabilities where
|
|
61
|
+
the spec origin does not match" — that sentence is nowhere in UCP, and it inverts the rule above;
|
|
62
|
+
`discovery/src/capability-identity.ts` records the search that established it.)
|
|
59
63
|
2. **`links[].type` is an OPEN set** ("Businesses MAY define custom types"), not the closed enum the plan
|
|
60
64
|
claimed — that enum is ACP's; an earlier reading conflated the two protocols. `links[]` is REQUIRED on checkout
|
|
61
65
|
responses; entries are `{type (req), url (req), title (opt)}`; `terms_of_service` is a recommended
|
|
@@ -112,7 +116,9 @@ present, the `url` carrier type itself signalling discovery-not-integrity.
|
|
|
112
116
|
|
|
113
117
|
## Provenance
|
|
114
118
|
|
|
115
|
-
Cut against UCP `2026-04-08` (ucp.dev) and reconciled against LCP v1.37 §C.3
|
|
119
|
+
Cut against UCP `2026-04-08` (ucp.dev) and reconciled against LCP v1.37 §C.3; re-read against **v1.38 §C.3**
|
|
120
|
+
on 2026-08-12, which now records `policies[]` as a Tier A carrier in the negotiated baseline — the carrier
|
|
121
|
+
this package moved to. A deployment advertises under
|
|
116
122
|
its own reverse-domain namespace; `org.legalcontextprotocol.*` is reserved for a TSC-ratified capability.
|
|
117
123
|
|
|
118
124
|
---
|
package/dist/manifest.d.ts
CHANGED
|
@@ -68,7 +68,8 @@ import type { PlacementManifest } from "@integraledger/lcp-binding-core";
|
|
|
68
68
|
*
|
|
69
69
|
* **`termsUrlField` is deliberately OMITTED.** The terms URL rides `links[type=terms_of_service].url` — a
|
|
70
70
|
* tagged-array locator that a dotted-path parser cannot resolve. Declaring it as `termsUrlField` would
|
|
71
|
-
* repeat the defect
|
|
71
|
+
* repeat the defect the `field` rule exists to prevent: a declared property that is not the declared thing.
|
|
72
|
+
* The discovery
|
|
72
73
|
* alias states the same fact WITH its machine-readable container, and the `PlacementManifest` contract says
|
|
73
74
|
* an absent `termsUrlField` means a parser must not demand one.
|
|
74
75
|
*
|
package/dist/manifest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEzE
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqFG;AACH,eAAO,MAAM,aAAa,EAAE,iBAyC3B,CAAC"}
|
package/dist/manifest.js
CHANGED
|
@@ -67,7 +67,8 @@
|
|
|
67
67
|
*
|
|
68
68
|
* **`termsUrlField` is deliberately OMITTED.** The terms URL rides `links[type=terms_of_service].url` — a
|
|
69
69
|
* tagged-array locator that a dotted-path parser cannot resolve. Declaring it as `termsUrlField` would
|
|
70
|
-
* repeat the defect
|
|
70
|
+
* repeat the defect the `field` rule exists to prevent: a declared property that is not the declared thing.
|
|
71
|
+
* The discovery
|
|
71
72
|
* alias states the same fact WITH its machine-readable container, and the `PlacementManifest` contract says
|
|
72
73
|
* an absent `termsUrlField` means a parser must not demand one.
|
|
73
74
|
*
|
package/dist/manifest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqFG;AACH,MAAM,CAAC,MAAM,aAAa,GAAsB;IAC9C,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,eAAe;IACxB,IAAI,EAAE,GAAG;IACT,QAAQ,EAAE,kBAAkB;IAC5B,SAAS,EAAE;QACT,IAAI,EAAE,cAAc;QACpB,EAAE,EAAE,UAAU;QACd,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,wCAAwC;QAC7C,UAAU,EAAE,iCAAiC;QAC7C,mGAAmG;QACnG,iGAAiG;QACjG,yGAAyG;QACzG,uCAAuC;QACvC,SAAS,EAAE;YACT,WAAW,EAAE;gBACX,KAAK,EACH,gKAAgK;aACnK;SACF;KACF;IACD,KAAK,EAAE,uDAAuD;IAC9D,QAAQ,EAAE;QACR;YACE,IAAI,EAAE,kCAAkC;YACxC,QAAQ,EAAE,YAAY;YACtB,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,WAAW;YACzB,SAAS,EAAE;gBACT,IAAI,EAAE,cAAc;gBACpB,EAAE,EAAE,OAAO;gBACX,QAAQ,EAAE,MAAM;gBAChB,GAAG,EAAE,kBAAkB;gBACvB,UAAU,EAAE,KAAK;aAClB;SACF;KACF;IACD,YAAY,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;IAC/B,OAAO,EACL,sWAAsW;CACzW,CAAC"}
|
package/dist/placement.d.ts
CHANGED
|
@@ -2,14 +2,17 @@ import { type ReferencePlacementAdapter } from "@integraledger/lcp-binding-core"
|
|
|
2
2
|
/**
|
|
3
3
|
* The UCP reference placement — the kit plus ONE protocol rule the kit cannot know.
|
|
4
4
|
*
|
|
5
|
-
* `makePlacement(UCP_PLACEMENT)` supplies everything structural: the
|
|
6
|
-
*
|
|
7
|
-
* the
|
|
5
|
+
* `makePlacement(UCP_PLACEMENT)` supplies everything structural: the tagged-array write into `policies[]`,
|
|
6
|
+
* the tagged-array read of the `links` discovery alias, strength-ordered extraction, purity, and every
|
|
7
|
+
* refusal the vectors pin. (An earlier revision described a dotted-key capability write through the
|
|
8
|
+
* container's `segments`; that carrier was retired when UCP turned out to define no `extensions` map, and
|
|
9
|
+
* `segments` now has no shipped declarer.) This
|
|
8
10
|
* file adds only the rule that is UCP's semantics rather than any container's mechanics: **a terms link must
|
|
9
11
|
* be HTTPS.** An `http:` URL is rewritable in transit, so accepting one would put an unauthenticated document
|
|
10
12
|
* behind a reference the record cites.
|
|
11
13
|
*
|
|
12
|
-
* This is the composition
|
|
14
|
+
* This is the composition the kit is shaped for — generic mechanics, protocol-specific semantics layered on
|
|
15
|
+
* top —
|
|
13
16
|
* and it wraps `extract`, not `place`: `place` never writes the links alias (the terms URL is the
|
|
14
17
|
* DEPLOYMENT's datum, not the reference — see the manifest), so the write side has no URL to police.
|
|
15
18
|
*
|
package/dist/placement.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"placement.d.ts","sourceRoot":"","sources":["../src/placement.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,iCAAiC,CAAC;AAKzC
|
|
1
|
+
{"version":3,"file":"placement.d.ts","sourceRoot":"","sources":["../src/placement.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,iCAAiC,CAAC;AAKzC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,YAAY,EAAE,yBAc1B,CAAC"}
|
package/dist/placement.js
CHANGED
|
@@ -4,14 +4,17 @@ const base = makePlacement(UCP_PLACEMENT);
|
|
|
4
4
|
/**
|
|
5
5
|
* The UCP reference placement — the kit plus ONE protocol rule the kit cannot know.
|
|
6
6
|
*
|
|
7
|
-
* `makePlacement(UCP_PLACEMENT)` supplies everything structural: the
|
|
8
|
-
*
|
|
9
|
-
* the
|
|
7
|
+
* `makePlacement(UCP_PLACEMENT)` supplies everything structural: the tagged-array write into `policies[]`,
|
|
8
|
+
* the tagged-array read of the `links` discovery alias, strength-ordered extraction, purity, and every
|
|
9
|
+
* refusal the vectors pin. (An earlier revision described a dotted-key capability write through the
|
|
10
|
+
* container's `segments`; that carrier was retired when UCP turned out to define no `extensions` map, and
|
|
11
|
+
* `segments` now has no shipped declarer.) This
|
|
10
12
|
* file adds only the rule that is UCP's semantics rather than any container's mechanics: **a terms link must
|
|
11
13
|
* be HTTPS.** An `http:` URL is rewritable in transit, so accepting one would put an unauthenticated document
|
|
12
14
|
* behind a reference the record cites.
|
|
13
15
|
*
|
|
14
|
-
* This is the composition
|
|
16
|
+
* This is the composition the kit is shaped for — generic mechanics, protocol-specific semantics layered on
|
|
17
|
+
* top —
|
|
15
18
|
* and it wraps `extract`, not `place`: `place` never writes the links alias (the terms URL is the
|
|
16
19
|
* DEPLOYMENT's datum, not the reference — see the manifest), so the write side has no URL to police.
|
|
17
20
|
*
|
package/dist/placement.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"placement.js","sourceRoot":"","sources":["../src/placement.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,GAEd,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;AAE1C
|
|
1
|
+
{"version":3,"file":"placement.js","sourceRoot":"","sources":["../src/placement.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,GAEd,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,YAAY,GAA8B;IACrD,GAAG,IAAI;IACP,OAAO,CAAC,GAAY;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,SAAS,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;QACjC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;YACrE,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,sBAAsB;gBACjC,IAAI,EAAE,wBAAwB;gBAC9B,MAAM,EAAE,6EAA6E,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE;aACvG,CAAC;QACJ,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@integraledger/lcp-placement-ucp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.1",
|
|
4
4
|
"description": "Places an LCP reference into a UCP (Universal Commerce Protocol) checkout, and reads it back.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"lcp",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
},
|
|
41
41
|
"homepage": "https://github.com/IntegraLedger/integra-protocol/tree/main/packages/placement-ucp#readme",
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@integraledger/lcp-binding-core": "0.
|
|
43
|
+
"@integraledger/lcp-binding-core": "0.10.1"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@cfworker/json-schema": "4.1.1",
|
package/src/manifest.ts
CHANGED
|
@@ -69,7 +69,8 @@ import type { PlacementManifest } from "@integraledger/lcp-binding-core";
|
|
|
69
69
|
*
|
|
70
70
|
* **`termsUrlField` is deliberately OMITTED.** The terms URL rides `links[type=terms_of_service].url` — a
|
|
71
71
|
* tagged-array locator that a dotted-path parser cannot resolve. Declaring it as `termsUrlField` would
|
|
72
|
-
* repeat the defect
|
|
72
|
+
* repeat the defect the `field` rule exists to prevent: a declared property that is not the declared thing.
|
|
73
|
+
* The discovery
|
|
73
74
|
* alias states the same fact WITH its machine-readable container, and the `PlacementManifest` contract says
|
|
74
75
|
* an absent `termsUrlField` means a parser must not demand one.
|
|
75
76
|
*
|
package/src/placement.ts
CHANGED
|
@@ -9,14 +9,17 @@ const base = makePlacement(UCP_PLACEMENT);
|
|
|
9
9
|
/**
|
|
10
10
|
* The UCP reference placement — the kit plus ONE protocol rule the kit cannot know.
|
|
11
11
|
*
|
|
12
|
-
* `makePlacement(UCP_PLACEMENT)` supplies everything structural: the
|
|
13
|
-
*
|
|
14
|
-
* the
|
|
12
|
+
* `makePlacement(UCP_PLACEMENT)` supplies everything structural: the tagged-array write into `policies[]`,
|
|
13
|
+
* the tagged-array read of the `links` discovery alias, strength-ordered extraction, purity, and every
|
|
14
|
+
* refusal the vectors pin. (An earlier revision described a dotted-key capability write through the
|
|
15
|
+
* container's `segments`; that carrier was retired when UCP turned out to define no `extensions` map, and
|
|
16
|
+
* `segments` now has no shipped declarer.) This
|
|
15
17
|
* file adds only the rule that is UCP's semantics rather than any container's mechanics: **a terms link must
|
|
16
18
|
* be HTTPS.** An `http:` URL is rewritable in transit, so accepting one would put an unauthenticated document
|
|
17
19
|
* behind a reference the record cites.
|
|
18
20
|
*
|
|
19
|
-
* This is the composition
|
|
21
|
+
* This is the composition the kit is shaped for — generic mechanics, protocol-specific semantics layered on
|
|
22
|
+
* top —
|
|
20
23
|
* and it wraps `extract`, not `place`: `place` never writes the links alias (the terms URL is the
|
|
21
24
|
* DEPLOYMENT's datum, not the reference — see the manifest), so the write side has no URL to police.
|
|
22
25
|
*
|