@artblocks/abx-cli 0.1.0-alpha.28 → 0.1.0-alpha.29
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 +144 -0
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +12 -5
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/project.d.ts +0 -32
- package/dist/commands/project.d.ts.map +1 -1
- package/dist/commands/project.js +61 -34
- package/dist/commands/project.js.map +1 -1
- package/dist/commands/service.js +2 -2
- package/dist/commands/service.js.map +1 -1
- package/dist/conformance.d.ts.map +1 -1
- package/dist/conformance.js +3 -0
- package/dist/conformance.js.map +1 -1
- package/dist/ownerops.d.ts.map +1 -1
- package/dist/ownerops.js +5 -3
- package/dist/ownerops.js.map +1 -1
- package/dist/remote.d.ts +2 -2
- package/dist/remote.d.ts.map +1 -1
- package/dist/remote.js +13 -3
- package/dist/remote.js.map +1 -1
- package/dist/riskgate.d.ts.map +1 -1
- package/dist/riskgate.js +16 -2
- package/dist/riskgate.js.map +1 -1
- package/package.json +6 -6
- package/skill/SKILL.md +10 -3
- package/skill/reference/hosting.md +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,149 @@
|
|
|
1
1
|
# @artblocks/abx-cli
|
|
2
2
|
|
|
3
|
+
## 0.1.0-alpha.29
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- c9f7aeb: Fold the burn, and make "canonically ABX v2" sayable — from abx-services' 2026-08-20 reply
|
|
8
|
+
(`reviews/2026-08/services-reply-docs-23.md`). All off-chain: no contract changed, no address moved.
|
|
9
|
+
|
|
10
|
+
**SDK — `foldSpine` now folds an ERC-721 burn, and `TokenState.minted` is replaced by `lifecycle`
|
|
11
|
+
(BREAKING).** A burn wrote the zero address into `TokenState.owner` — where nothing downstream could
|
|
12
|
+
tell it from a holder — and `minted` latched `true` at mint and was never recomputed, so a burned
|
|
13
|
+
token reconstructed as live. `lifecycle: 'unminted' | 'live' | 'burned' | 'no-live-copies'` replaces it,
|
|
14
|
+
and `owner` is `null` for a burned id rather than a sentinel. An enum rather than the `minted` +
|
|
15
|
+
`burned` pair the report asked for: a boolean whose `false` has two meanings leaves the burn case one
|
|
16
|
+
forgotten field away from rendering as "not yet minted", which is exactly what our own CLI did.
|
|
17
|
+
|
|
18
|
+
**`'burned'` is terminal and ERC-721-only; an edition at zero live copies is `'no-live-copies'`.** The
|
|
19
|
+
first cut of this enum shared `'burned'` across both standards, on the grounds that "one vocabulary on
|
|
20
|
+
both lanes" was the honest shape. It wasn't: the correct _response_ to destruction differs by standard
|
|
21
|
+
(a 721 id is gone forever and must `410`; an edition id can mint again and must not), so a shared word
|
|
22
|
+
put every consumer one forgotten `contractType` branch away from serving `410 Gone` for a token the
|
|
23
|
+
contract still resolves — and our own migration note told the first consumer to map the shared word
|
|
24
|
+
straight onto their `410` sites. abx-services caught it in review before it published. Splitting the
|
|
25
|
+
word moves the rule out of prose and into the type: **`lifecycle === 'burned'` is safe to treat as
|
|
26
|
+
permanent on either standard, with no carve-out**, which let the reference resolver's `isEditionState`
|
|
27
|
+
guard go away entirely. Pinned from both ends — no edition history can fold to `'burned'`, and the
|
|
28
|
+
route asserts its own standard-blindness.
|
|
29
|
+
|
|
30
|
+
**The two lanes now agree id-for-id.** The same review found `TokenRow.lifecycle` (head reads) reporting
|
|
31
|
+
`'unknown'` for a fully-burned edition id while the fold reported `'burned'` for that same id — under a
|
|
32
|
+
docstring claiming the two lanes used the same words. That is the sibling-drift class this repo treats
|
|
33
|
+
as a bug (see `TokenState.maxSupply`'s note, the last time one field name carried two meanings). Both
|
|
34
|
+
lanes now answer `'no-live-copies'` there: the fold _could_ distinguish never-minted from fully-burned
|
|
35
|
+
and deliberately does not, because the distinction has no consumer. `'unknown'` survives for the one
|
|
36
|
+
case where a head read genuinely cannot say — a 1/1 has no mint frontier, so a reverting `ownerOf`
|
|
37
|
+
there is evidence of nothing.
|
|
38
|
+
|
|
39
|
+
What the latched boolean was costing, all in our own tree: the effects harness re-rendered destroyed
|
|
40
|
+
tokens on every sweep, forever; `onchain-uri`'s probe reads the LOWEST live id, so burning token 0 made
|
|
41
|
+
a healthy collection's on-chain-URI lane report as **broken**; the resolver served metadata — and the
|
|
42
|
+
pre-mint _warming placeholder_, i.e. "still loading" forever — for ids the contract disowns; `mintedCount`
|
|
43
|
+
never went down; and `abx state` printed "not yet minted" for a token that had been destroyed.
|
|
44
|
+
|
|
45
|
+
**SDK — `BurnConfigured` and `MaxRoyaltyBpsUpdated` fold into `ProjectState.burnable` /
|
|
46
|
+
`.maxRoyaltyBps`.** Both events shipped in the ABI and in `SPINE_EVENT_DOC` and reached no field of
|
|
47
|
+
state; the upgrade memo then told consumers the doc entry _was_ the fold, which it has never been (it
|
|
48
|
+
supplies `register`/`what` on the event record, full stop). Both are tri-state: `null` means the spine
|
|
49
|
+
never stated it — an implementation with no `burn` entrypoint and an unpublished ceiling — which is not
|
|
50
|
+
`false`, and not 10%. The ceiling is deliberately not nested inside `royalty`, since clearing a royalty
|
|
51
|
+
nulls that field while the ceiling stays binding on chain.
|
|
52
|
+
|
|
53
|
+
**SDK — a fold-coverage guard, because this was the second instance in four days.** `DefaultMaxSupplySet`
|
|
54
|
+
did the same thing on 2026-08-17. `SPINE_EVENT_NO_FOLD` now lists the events that deliberately reach no
|
|
55
|
+
state _and why_ (a ping whose value is a head read, a factory's own log, a minter sibling, an allowance),
|
|
56
|
+
and `spine-fold-coverage.test.ts` asserts every decodable event is either folded or excused. A new event
|
|
57
|
+
is unfolded and unexcused until someone decides which.
|
|
58
|
+
|
|
59
|
+
**SDK — a burned 1/1 no longer vanishes from `listTokens`.** The id range fell back to `totalSupply`
|
|
60
|
+
(live: mints − burns) when a token type exposes no `nextTokenId`, so burning a 1/1's only token made the
|
|
61
|
+
listing enumerate ZERO ids — `abx tokens` printed nothing at all, indistinguishable from a collection
|
|
62
|
+
with no tokens. A 1/1's id space is `{0}` forever regardless of what is live. Found by burning a real
|
|
63
|
+
token on Sepolia rather than by any fixture, which is the only way this one surfaces.
|
|
64
|
+
|
|
65
|
+
**SDK — head reads can now say `burned`.** `nextTokenId` is a mint frontier that only rises, so an id
|
|
66
|
+
below it whose `ownerOf` reverts was minted and destroyed. `TokenRow.lifecycle` (`'live'` / `'burned'` /
|
|
67
|
+
`'unminted'` / `'unknown'`) and `TokenListing.burnedCount` (`nextTokenId − totalSupply`) drop out of that,
|
|
68
|
+
with no event log. `'unknown'` stays a real member where the chain declines to say: a 1/1 has no frontier,
|
|
69
|
+
and an edition's `supply == 0` cannot distinguish never-minted from fully-burned.
|
|
70
|
+
|
|
71
|
+
**SDK — `burned` joins `ServiceErrorCode`, paired with `410 Gone`.** A remote token API had nothing
|
|
72
|
+
honest to say about a destroyed id and was sending `410` with `code: 'not_registered'` — a statement
|
|
73
|
+
about the _contract_. The rule behind the pairing is the general one: **a resolver answers what the
|
|
74
|
+
contract's own URI getter answers.** A burned 721's `tokenURI` reverts `NonexistentToken`, so serving a
|
|
75
|
+
document would contradict the contract; an ERC-1155's `uri(id)` has no existence gate and a zero-supply
|
|
76
|
+
id can mint again, so **an edition never 410s** — it serves, with `supply: 0`.
|
|
77
|
+
|
|
78
|
+
**SDK — `readCollectionPolicy`, `canonicalFactories`, `verifyProvenance`: protocol knowledge moves out
|
|
79
|
+
of the CLI.** The CLI was declaring its own ABI fragments for `burnable`/`maxRoyaltyBps` and reading
|
|
80
|
+
them itself in two places, so no other integrator could reach either fact. `canonicalFactories(chainId)`
|
|
81
|
+
replaces two copies of the six-anchor enumeration inside `anchors.ts` — the list whose completeness _is_
|
|
82
|
+
the trust model. `verifyCanonical` gains `opts.factories`, which **replaces** the manifest set rather
|
|
83
|
+
than appending to it, so a multi-tenant operator's pinned allowlist can drive the gate without silently
|
|
84
|
+
widening it.
|
|
85
|
+
|
|
86
|
+
**SDK — anchor generations: "canonically ABX v2", not a bare `false`.** `verifyCanonical` reported
|
|
87
|
+
"deployed by an ABX factory since replaced" and "deployed outside the toolkit entirely" identically —
|
|
88
|
+
its own docstring admitted it — and the first is a perfectly good collection. `ANCHOR_GENERATIONS` keys
|
|
89
|
+
each generation of the six trust anchors by the **on-chain core version** its clones report, and
|
|
90
|
+
`verifyProvenance` returns `{canonical, generation: 'current' | 'prior' | null, coreVersion, factory,
|
|
91
|
+
anchorsAnswered}`. The version is on the clone itself, so the answer is chain-verified rather than a
|
|
92
|
+
manifest claim, and it keeps working after a factory retires. Retired generations never feed
|
|
93
|
+
`verifyCanonical`: provenance is not trust — a superseded generation can predate a security remediation.
|
|
94
|
+
Pre-launch testnet generations are deliberately not backfilled.
|
|
95
|
+
|
|
96
|
+
**Redeploy process — a token-layer runtime change is a new anchor generation.** It bumps
|
|
97
|
+
`AbxVersion.CORE_VERSION` and moves the SDK's `isCurrent*` probes in lockstep. That is now a checklist
|
|
98
|
+
step (`contracts/README.md`, `CLAUDE.md`) _enforced by_ `deployments.test.ts`: recorded generations must
|
|
99
|
+
have unique, increasing core versions and the newest must match the constant in `AbxVersion.sol`, so a
|
|
100
|
+
batch cannot record a generation without bumping or bump without recording. The gap that prompted it: the
|
|
101
|
+
2026-08-20 batch added `burn()`, `burnable()`, `maxRoyaltyBps()` and `reduceMaxRoyaltyBps()` to the CORE
|
|
102
|
+
base — burn is not an extension, so no extension version moved either — and left the constant at 2, so
|
|
103
|
+
`abxVersion() == 2` cannot tell a burn-capable token from a pre-burn one.
|
|
104
|
+
|
|
105
|
+
**CLI — the royalty ceiling is shown with its rate, and headroom is named.** A ceiling above the live
|
|
106
|
+
rate is royalty the owner can add unilaterally, and a listing page never shows it. `abx state` prints the
|
|
107
|
+
pair and, when there is headroom, says the useful thing: reducing the cap **to** the current rate is what
|
|
108
|
+
turns "5% today" into "5%, provably, forever". (Named by abx-services as their `royalty-headroom` flag —
|
|
109
|
+
a marketplace can compute it, so a creator should hear it from us first.)
|
|
110
|
+
|
|
111
|
+
**Reference stack — the same fixes, so the reference is exemplary rather than the counter-example.**
|
|
112
|
+
`mintedCount` keeps its name and counts LIVE ids, with `burnedCount` added only when non-zero (so a
|
|
113
|
+
project with no burns serves byte-identical JSON, and a consumer's fixtures keep telling the truth);
|
|
114
|
+
the indexer projection carries `lifecycle`; the effects status route and the render sweep skip destroyed
|
|
115
|
+
ids; the dashboard badges a burned token instead of calling it minted; and `abx verify` / the migrate and
|
|
116
|
+
re-point probes never choose a burned token as their subject.
|
|
117
|
+
|
|
118
|
+
**CLI — `--send` is accepted on the deploy paths, and two lane flags is refused.** Every deploy's help
|
|
119
|
+
advertises the signing lanes as `--send hot/env key · --sign wallet page · --unsigned print tx`, in 25
|
|
120
|
+
places, and `--send` was the one of the three the deploy allowlist rejected: typing what the help showed
|
|
121
|
+
produced `unrecognized flag(s): --send` from the guard whose whole purpose is catching flags that would
|
|
122
|
+
be silently ignored — the guard firing on the tool's own documentation. Found by using the CLI as a cold
|
|
123
|
+
reader of its own `--help` while setting up an on-chain test. While there, lane resolution moved from
|
|
124
|
+
truthiness to **presence** (`--sign=` parses to `''`, which is falsy, so a caller who explicitly named
|
|
125
|
+
the wallet lane was routed to the unattended env key — the one direction of that bug that costs
|
|
126
|
+
something), and naming two lanes at once now refuses instead of resolving by an undocumented precedence.
|
|
127
|
+
|
|
128
|
+
**Packaging — every published tarball ships its CHANGELOG.** `files` was `['dist', 'LICENSE']` on the
|
|
129
|
+
SDK, indexer, storage, effects and token-api, so the only package whose release notes reached consumers
|
|
130
|
+
was the CLI. A downstream team upgrading the SDK had no CHANGELOG in the tarball and diffed two `dist/`
|
|
131
|
+
trees to find out what moved — then reported the release notes as missing, which cost a whole exchange
|
|
132
|
+
to adjudicate. One line each.
|
|
133
|
+
|
|
134
|
+
**Docs + spec.** The event spine gains a Burn section and the `MaxRoyaltyBpsUpdated` row, both with the
|
|
135
|
+
fold rules an indexer relies on; three stale deploy-event-order lists are corrected; the remote-services
|
|
136
|
+
error taxonomy gains the `410 burned` row and the edition carve-out; `owner-powers` explains headroom and
|
|
137
|
+
burn permanence; and `indexing-notes` states plainly that documenting an event is not folding it.
|
|
138
|
+
|
|
139
|
+
### Patch Changes
|
|
140
|
+
|
|
141
|
+
- Updated dependencies [c9f7aeb]
|
|
142
|
+
- @artblocks/abx-sdk@0.1.0-alpha.21
|
|
143
|
+
- @artblocks/abx-storage@0.1.0-alpha.21
|
|
144
|
+
- @artblocks/abx-indexer@0.1.0-alpha.22
|
|
145
|
+
- @artblocks/abx-token-api@0.1.0-alpha.24
|
|
146
|
+
|
|
3
147
|
## 0.1.0-alpha.28
|
|
4
148
|
|
|
5
149
|
### Patch Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/deploy.js
CHANGED
|
@@ -2776,7 +2776,7 @@ export function projectionFingerprint(s) {
|
|
|
2776
2776
|
royalty: s.royalty ? { bps: s.royalty.bps, receiver: s.royalty.receiver.toLowerCase() } : null,
|
|
2777
2777
|
extensions: s.extensions.map((e) => e.name).sort(),
|
|
2778
2778
|
collectionFields: s.collectionFields.map((f) => `${f.field}=${f.value}`).sort(),
|
|
2779
|
-
tokens: s.tokens.map((t) => ({ id: t.tokenId,
|
|
2779
|
+
tokens: s.tokens.map((t) => ({ id: t.tokenId, lifecycle: t.lifecycle, owner: t.owner?.toLowerCase() ?? null })),
|
|
2780
2780
|
events: s.events.map((e) => `${e.blockNumber}:${e.logIndex}:${e.name}`),
|
|
2781
2781
|
};
|
|
2782
2782
|
return createHash('sha256').update(JSON.stringify(canonical)).digest('hex');
|
|
@@ -2844,8 +2844,8 @@ export async function walkthroughRebuild(indexer, address, before) {
|
|
|
2844
2844
|
export async function walkthroughReadBack(state, baseUrl, onChainUri) {
|
|
2845
2845
|
step('Read it back the way a marketplace would');
|
|
2846
2846
|
const token = state.tokens[0];
|
|
2847
|
-
if (
|
|
2848
|
-
info('no minted token to read yet.');
|
|
2847
|
+
if (token?.lifecycle !== 'live') {
|
|
2848
|
+
info(token?.lifecycle === 'burned' ? 'token #0 was burned — nothing to read back.' : 'no minted token to read yet.');
|
|
2849
2849
|
return;
|
|
2850
2850
|
}
|
|
2851
2851
|
if (onChainUri) {
|
|
@@ -2912,8 +2912,8 @@ export const DEPLOY_CODE_FLAGS = new Set([
|
|
|
2912
2912
|
'public-base-url', 'onchain-uri', 'generator', 'renderer', 'port',
|
|
2913
2913
|
// storage (directory mode) — mirrors storageOverrides()
|
|
2914
2914
|
'backend', 'endpoint', 'bucket', 'region', 'prefix', 'public-base', 'gateway', 'mode', 'api-url', 'upload-url', 'provider', 'storage-signer',
|
|
2915
|
-
// signing lane + safety + trust anchor
|
|
2916
|
-
'sign', 'unsigned', 'for', 'salt', 'factory', 'bootstrap-factory', 'sign-url-file',
|
|
2915
|
+
// signing lane + safety + trust anchor ('send' = the default lane, stated explicitly; see SHARED_DEPLOY_FLAGS)
|
|
2916
|
+
'send', 'sign', 'unsigned', 'for', 'salt', 'factory', 'bootstrap-factory', 'sign-url-file',
|
|
2917
2917
|
// preview / confirm
|
|
2918
2918
|
'dry-run', 'confirm', 'yes',
|
|
2919
2919
|
'json', // B19: the deployed ADDRESS as data, narration to stderr
|
|
@@ -2927,6 +2927,13 @@ export const SHARED_DEPLOY_FLAGS = [
|
|
|
2927
2927
|
// which is where the CLI uploads and probes; `--gateway` seeds these for the backend in use, and
|
|
2928
2928
|
// these override it when the two should differ. Every deploy path takes them.
|
|
2929
2929
|
'ipfs-gateway', 'arweave-gateway',
|
|
2930
|
+
// `--send` is the DEFAULT lane, and it is accepted explicitly because every deploy's own help
|
|
2931
|
+
// advertises it by name ("signing: --send hot/env key · --sign wallet page · --unsigned print tx").
|
|
2932
|
+
// It was the one of the three the parser rejected, so a reader who typed what the help showed got
|
|
2933
|
+
// `unrecognized flag(s): --send` from the guard whose whole job is catching flags that would be
|
|
2934
|
+
// ignored — the guard firing on the tool's own documentation. Explicit is also better than bare for
|
|
2935
|
+
// a script or an agent: the lane that signs and sends is worth stating out loud.
|
|
2936
|
+
'send',
|
|
2930
2937
|
'sign', 'unsigned', 'for', 'sign-url-file', 'dry-run', 'confirm', 'yes', 'salt', 'factory', 'bootstrap-factory', 'port', 'renderer', 'public-base-url',
|
|
2931
2938
|
'721c', // opt-in ERC-721C enrollment (recommended | 0x…) — every deploy path takes it
|
|
2932
2939
|
'json', // B19: the deployed ADDRESS as data, narration to stderr — every deploy path takes it
|