bulletin-deploy 0.7.19 → 0.7.20-rc.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/README.md CHANGED
@@ -53,7 +53,7 @@ bulletin-deploy <build-dir> <domain.dot>
53
53
  Examples:
54
54
 
55
55
  ```bash
56
- # Basic deploy (defaults to --env paseo-next)
56
+ # Basic deploy (defaults to --env paseo-next-v2)
57
57
  bulletin-deploy ./dist my-app00.dot
58
58
 
59
59
  # Pick a different environment
@@ -63,7 +63,7 @@ bulletin-deploy ./dist my-app00.dot --env paseo-review
63
63
  bulletin-deploy --list-environments
64
64
 
65
65
  # Refresh the environments cache before deploying
66
- bulletin-deploy ./dist my-app00.dot --refresh-environments --env paseo-next
66
+ bulletin-deploy ./dist my-app00.dot --refresh-environments --env paseo-next-v2
67
67
 
68
68
  # Direct signer deploy
69
69
  bulletin-deploy ./dist my-app00.dot --mnemonic "..."
@@ -78,10 +78,10 @@ bulletin-deploy ./dist my-app00.dot --rpc wss://custom-bulletin.example.com
78
78
 
79
79
  | Env id | Network | Bulletin available? |
80
80
  |---|---|---|
81
- | `paseo-next` (default) | testnet | yes |
82
- | `paseo-next-v2` | testnet | yes |
81
+ | `paseo-next-v2` (default) | testnet | yes |
82
+ | `paseo-next` | testnet | yes |
83
83
  | `paseo-review` | testnet | yes |
84
- | `preview` | testnet | yes |
84
+ | `previewnet` | testnet | yes |
85
85
  | `polkadot` | mainnet | not yet |
86
86
  | `kusama` | mainnet | not yet |
87
87
 
@@ -93,7 +93,7 @@ The runtime uses a 24-hour cache at `${XDG_CACHE_HOME:-~/.cache}/bulletin-deploy
93
93
 
94
94
  | Flag | What it does |
95
95
  |---|---|
96
- | `--env <id>` | Target environment. Default: `paseo-next`. See `--list-environments` for valid ids. |
96
+ | `--env <id>` | Target environment. Default: `paseo-next-v2`. See `--list-environments` for valid ids. |
97
97
  | `--list-environments` | Print the environments table and exit. |
98
98
  | `--refresh-environments` | Bust the cache and re-fetch environments.json. Composes with `--env` (refresh-then-deploy) or runs solo. |
99
99
  | `--rpc wss://...` | Override the Bulletin RPC endpoint within the chosen `--env`. Also readable from `BULLETIN_RPC`. |
@@ -180,17 +180,20 @@ Use it when you want to validate or consume the mirror feature. The source of tr
180
180
 
181
181
  ## Automatic Mirror to paseo-next-v2
182
182
 
183
- When you deploy to `paseo-next` (the default), `bulletin-deploy` automatically runs a second deploy to `paseo-next-v2` using the same build artefact. This keeps both environments in sync without any extra steps during the period when `paseo-next-v2` is being validated alongside the existing testnet.
183
+ When you explicitly deploy to `paseo-next`, `bulletin-deploy` automatically runs a second deploy to `paseo-next-v2` using the same build artefact. Deploys that already target the default `paseo-next-v2` environment are not mirrored.
184
184
 
185
185
  ```bash
186
- # Standard deploy — mirrors to paseo-next-v2 automatically
186
+ # Legacy paseo-next deploy — mirrors to paseo-next-v2 automatically
187
+ bulletin-deploy ./dist my-app00.dot --env paseo-next
188
+
189
+ # Default deploy — already targets paseo-next-v2
187
190
  bulletin-deploy ./dist my-app00.dot
188
191
 
189
- # Opt out of the mirror
190
- bulletin-deploy ./dist my-app00.dot --skip-automated-deployment-to-paseo-next-v2
192
+ # Opt out of the mirror for a legacy paseo-next deploy
193
+ bulletin-deploy ./dist my-app00.dot --env paseo-next --skip-automated-deployment-to-paseo-next-v2
191
194
 
192
195
  # Treat a mirror failure as a hard error instead of a warning
193
- bulletin-deploy ./dist my-app00.dot --fail-on-mirror-error
196
+ bulletin-deploy ./dist my-app00.dot --env paseo-next --fail-on-mirror-error
194
197
  ```
195
198
 
196
199
  The mirror runs after the primary deploy succeeds. By default, a mirror failure prints a warning and exits zero so it does not block your pipeline. Pass `--fail-on-mirror-error` if you want the process to exit non-zero on mirror failure.
@@ -8,7 +8,24 @@
8
8
  "backend": "https://polkadot-app-stg.parity.io/",
9
9
  "ipfs": "https://previewnet.substrate.dev/ipfs/",
10
10
  "autoAccountMapping": true,
11
- "bulletinAuthorizeV2": true
11
+ "bulletinAuthorizeV2": true,
12
+ "contracts": {
13
+ "DOTNS_PROTOCOL_REGISTRY": "0xc07A2F24387DA27283CD87b9F24573b74C9e0c9b",
14
+ "DOTNS_REGISTRAR": "0x6c40817cdb96Ab57A4d9E9fa21D0eEa8307BDDE8",
15
+ "DOTNS_REGISTRAR_CONTROLLER": "0x732C38082CFAebed505A46e4e2D6414154694580",
16
+ "DOTNS_REGISTRY": "0xE6c0fB6D5492666144A8a4a015E25a98ACa604cA",
17
+ "DOTNS_POP_CONTROLLER": "0xfE1e25E8d521CaaA8055301CA61Ec3557263Ca76",
18
+ "DOTNS_RESOLVER": "0x5E174c960F5276Bd0387F200cE42f98fe927E220",
19
+ "DOTNS_CONTENT_RESOLVER": "0x108376A5B6DDc6BE3201C94Fd169BE444f220076",
20
+ "DOTNS_REVERSE_RESOLVER": "0xd5C3dcC7CE44593fEB1D72017A3539c4dB14e54a",
21
+ "DOTNS_POP_RESOLVER": "0x29Ace5d2C57109c82A30Db175e645880572c6369",
22
+ "DOTNS_NAME_ESCROW": "0x034b072eB8AF5cEfd820390bfe239bD911174ad2",
23
+ "POP_RULES": "0x5f2Dd23Ee3ceD39B293701ccE8355DdDd83Cd324",
24
+ "STORE_FACTORY": "0x9C38DFec452391696a8f0D3daFE71F7Eb29e08f8",
25
+ "LABEL_STORE_BEACON": "0x6B609A89Fec9898B441E17f1618670bdD08c437e",
26
+ "USER_STORE_BEACON": "0xbeb79e8BB2bC610822e8748e5439B9D890d88FF5"
27
+ },
28
+ "skipDotnsCli": true
12
29
  },
13
30
  {
14
31
  "id": "paseo-next",
@@ -41,14 +58,21 @@
41
58
  "bulletinAuthorizeV2": true,
42
59
  "nativeToEthRatio": 100000000,
43
60
  "contracts": {
44
- "DOTNS_REGISTRAR": "0xE67B22B285912FFfaE23BdfAc8C80c779d99B3e0",
45
- "DOTNS_REGISTRAR_CONTROLLER": "0x8403e49Ec12F4EA5788f7bc0C0c2F649205774cC",
46
- "DOTNS_REGISTRY": "0xDeFE1AAE21eC2455bd04b213a51C16d4b426c7ef",
47
- "DOTNS_RESOLVER": "0xB436A271Beff1DBa6abDf2dbCc7E6d723d505EE6",
48
- "DOTNS_CONTENT_RESOLVER": "0xBcFa907Ff85dFc62a21b41d48F23D7A73aC42914",
49
- "DOTNS_REVERSE_RESOLVER": "0x4Ca32Dd0233D8c1B1709e20D9E4edBF2a77D21c3",
50
- "POP_RULES": "0xd3F059FA65dA566B294b5d755a06054d4bE7ce7C",
51
- "STORE_FACTORY": "0x4f1885fB6e0b154dCf9C2A8661e578B94aD50775"
61
+ "DOTNS_PROTOCOL_REGISTRY": "0x5Caef84563fc980178e28417414aa65bA32f6B4e",
62
+ "DOTNS_REGISTRAR": "0x885b8085bA92A31c4ef52076f77379E647ECC399",
63
+ "DOTNS_REGISTRAR_CONTROLLER": "0x320b72c6e70D5a631d835FfD95915B288b26E6Be",
64
+ "DOTNS_REGISTRY": "0x8877344A885682523B4613779C95688ed7037BfD",
65
+ "DOTNS_POP_CONTROLLER": "0xaC8A28b60832E6E22bC19bD9Ee273C008576Bde4",
66
+ "ROOT_GATEWAY_DISPATCHER": "0xF470Dd693ED557b33f8775476776532D99Fb60d9",
67
+ "DOTNS_RESOLVER": "0x0cCdfea1a5E62DE116BF6cA79D397798d49e351E",
68
+ "DOTNS_CONTENT_RESOLVER": "0x2c9FF5D9136DBE5814C7B4FDbeDC15273a776663",
69
+ "DOTNS_REVERSE_RESOLVER": "0x025D5c4b10bD9723DeA2F4518aeD5B761DE08CDc",
70
+ "DOTNS_POP_RESOLVER": "0xB992e74cBeaf1Fd71310f85D1944d3A0c15C4c73",
71
+ "DOTNS_NAME_ESCROW": "0x6F7068c04487a90BFB42b128B84231c252b3017a",
72
+ "POP_RULES": "0x2002C1c15b88632Ad01c7770f6EbE1Ca05c8472E",
73
+ "STORE_FACTORY": "0x0DE5De70d61cc6b44B45d6595afDe8dB9b55bc31",
74
+ "LABEL_STORE_BEACON": "0xD033F7Ada687E8BC776928AB239505F9f0479Ce7",
75
+ "USER_STORE_BEACON": "0x7eD9b7D137Fa535965048F93b3B0248fEd2fcd32"
52
76
  },
53
77
  "skipDotnsCli": true
54
78
  },
@@ -278,4 +302,4 @@
278
302
  }
279
303
  ],
280
304
  "source": "https://docs.google.com/document/d/1xQoAmWDpbjhuXKT79DTNKFzv7ZkFr5npjo0BvrxXDIw"
281
- }
305
+ }
@@ -83,7 +83,7 @@ Usage:
83
83
  bulletin-deploy <build-dir> <domain.dot> Deploy an app
84
84
 
85
85
  Options:
86
- --env <id> Target environment from environments.json (default: paseo-next).
86
+ --env <id> Target environment from environments.json (default: paseo-next-v2).
87
87
  Drives both the bulletin RPC and the asset-hub RPC used
88
88
  by DotNS. See --list-environments for valid ids.
89
89
  --list-environments Print the environments table and exit.
@@ -9,10 +9,10 @@ import {
9
9
  offerBugReport,
10
10
  scrubSecrets,
11
11
  setDeployContext
12
- } from "./chunk-I5ZGHKNT.js";
13
- import "./chunk-VQBSWH77.js";
14
- import "./chunk-KQ352MBU.js";
15
- import "./chunk-3BOARQQO.js";
12
+ } from "./chunk-UPXJA4RR.js";
13
+ import "./chunk-DKWGGXWX.js";
14
+ import "./chunk-6BMTNMLQ.js";
15
+ import "./chunk-2OFRCVQE.js";
16
16
  import "./chunk-QGM4M3NI.js";
17
17
  export {
18
18
  buildCliFlagsSummary,
@@ -6,7 +6,7 @@ import * as path from "path";
6
6
  // package.json
7
7
  var package_default = {
8
8
  name: "bulletin-deploy",
9
- version: "0.7.19",
9
+ version: "0.7.20-rc.2",
10
10
  private: false,
11
11
  repository: {
12
12
  type: "git",
@@ -39,7 +39,7 @@ var package_default = {
39
39
  build: "tsup src/index.ts src/deploy.ts src/dotns.ts src/pool.ts src/telemetry.ts src/memory-report.ts src/merkle.ts src/gh-pages-mirror.ts src/version-check.ts src/bug-report.ts src/run-state.ts src/environments.ts src/errors.ts src/manifest.ts src/chunk-probe.ts src/manifest-embed.ts src/manifest-fetch.ts src/manifest-roundtrip.ts src/incremental-stats.ts src/chunker.ts src/mirror.ts --format esm --dts --clean --target node22",
40
40
  "refresh-environments": "node scripts/refresh-environments.mjs",
41
41
  prepare: "npm run build",
42
- test: "npm run build && node --test test/test.js test/cli-help.test.js test/helpers/e2e-helpers.test.js test/environments.test.js",
42
+ test: "npm run build && node --test test/test.js test/cli-help.test.js test/helpers/e2e-helpers.test.js test/environments.test.js test/refresh-environments.test.js",
43
43
  "test:e2e": "npm run build && node --test test/e2e.test.js",
44
44
  "test:e2e:smoke": "bash scripts/e2e-pass.sh smoke",
45
45
  "test:e2e:pr": "bash scripts/e2e-pass.sh pr",
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  package_default,
3
3
  writeRunState
4
- } from "./chunk-3BOARQQO.js";
4
+ } from "./chunk-2OFRCVQE.js";
5
5
 
6
6
  // src/memory-report.ts
7
7
  import * as fs2 from "fs";
@@ -5,14 +5,14 @@ import {
5
5
  // src/environments.ts
6
6
  import * as fs from "fs/promises";
7
7
  import { fileURLToPath } from "url";
8
- var DEFAULT_ENV_ID = "paseo-next";
8
+ var DEFAULT_ENV_ID = "paseo-next-v2";
9
9
  var HARDCODED_FALLBACK = {
10
10
  environments: [
11
11
  {
12
- id: "paseo-next",
13
- name: "Paseo Next",
12
+ id: "paseo-next-v2",
13
+ name: "Paseo Next v2",
14
14
  network: "testnet",
15
- description: "Production testnet for Polkadot App Testflight (hardcoded fallback)"
15
+ description: "Next iteration of the Paseo Next testnet (hardcoded fallback)"
16
16
  }
17
17
  ],
18
18
  chains: [
@@ -20,9 +20,9 @@ var HARDCODED_FALLBACK = {
20
20
  id: "bulletin",
21
21
  name: "Bulletin",
22
22
  endpoints: {
23
- "paseo-next": {
24
- wss: "wss://paseo-bulletin-rpc.polkadot.io",
25
- parachainId: 5118
23
+ "paseo-next-v2": {
24
+ wss: "wss://paseo-bulletin-next-rpc.polkadot.io",
25
+ parachainId: 1501
26
26
  }
27
27
  }
28
28
  },
@@ -30,13 +30,9 @@ var HARDCODED_FALLBACK = {
30
30
  id: "asset-hub",
31
31
  name: "Asset Hub",
32
32
  endpoints: {
33
- "paseo-next": {
34
- wss: [
35
- "wss://asset-hub-paseo.dotters.network",
36
- "wss://sys.ibp.network/asset-hub-paseo",
37
- "wss://pas-rpc.stakeworld.io/assethub"
38
- ],
39
- parachainId: 1e3
33
+ "paseo-next-v2": {
34
+ wss: "wss://paseo-asset-hub-next-rpc.polkadot.io",
35
+ parachainId: 1500
40
36
  }
41
37
  }
42
38
  }
@@ -66,7 +62,7 @@ async function loadEnvironments(opts = {}) {
66
62
  });
67
63
  const bundled = await readBundled(bundledPath);
68
64
  if (bundled) return { doc: bundled, source: "bundled" };
69
- warn("bulletin-deploy: bundled environments.json unavailable; using hardcoded paseo-next fallback");
65
+ warn("bulletin-deploy: bundled environments.json unavailable; using hardcoded paseo-next-v2 fallback");
70
66
  return { doc: HARDCODED_FALLBACK, source: "hardcoded-fallback" };
71
67
  }
72
68
  function normalizeWss(value) {
@@ -118,7 +114,7 @@ function resolveEndpoints(doc, envId) {
118
114
  const assetHub = normalizeWss(assetHubChain?.endpoints?.[envId]?.wss);
119
115
  if (bulletin.length === 0) {
120
116
  throw new NonRetryableError(
121
- `Bulletin chain not yet available on environment '${envId}'. The selected environment has no bulletin endpoint in https://github.com/paritytech/triangle-status/blob/main/environments.json. Pick a testnet (paseo-next, paseo-review, preview) or wait for the mainnet rollout.`
117
+ `Bulletin chain not yet available on environment '${envId}'. The selected environment has no bulletin endpoint in https://github.com/paritytech/triangle-status/blob/main/environments.json. Pick a testnet (paseo-next-v2, paseo-next, paseo-review, previewnet) or wait for the mainnet rollout.`
122
118
  );
123
119
  }
124
120
  if (assetHub.length === 0) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-KQ352MBU.js";
3
+ } from "./chunk-6BMTNMLQ.js";
4
4
 
5
5
  // src/version-check.ts
6
6
  import { execSync, execFileSync } from "child_process";
@@ -20,10 +20,10 @@ import {
20
20
  } from "./chunk-S7EM5VMW.js";
21
21
  import {
22
22
  setDeployContext
23
- } from "./chunk-I5ZGHKNT.js";
23
+ } from "./chunk-UPXJA4RR.js";
24
24
  import {
25
25
  probeChunks
26
- } from "./chunk-EFLBLRT5.js";
26
+ } from "./chunk-MBQHVEJL.js";
27
27
  import {
28
28
  packSection
29
29
  } from "./chunk-C2TS5MER.js";
@@ -34,7 +34,7 @@ import {
34
34
  parseDomainName,
35
35
  popStatusName,
36
36
  verifyNonceAdvanced
37
- } from "./chunk-WX7MOC3Z.js";
37
+ } from "./chunk-QKK33FHY.js";
38
38
  import {
39
39
  derivePoolAccounts,
40
40
  detectTestnet,
@@ -56,12 +56,12 @@ import {
56
56
  truncateAddress,
57
57
  withDeploySpan,
58
58
  withSpan
59
- } from "./chunk-KQ352MBU.js";
59
+ } from "./chunk-6BMTNMLQ.js";
60
60
  import {
61
61
  DEFAULT_ENV_ID,
62
62
  loadEnvironments,
63
63
  resolveEndpoints
64
- } from "./chunk-O2HIPNUT.js";
64
+ } from "./chunk-BY6RULRX.js";
65
65
  import {
66
66
  NonRetryableError
67
67
  } from "./chunk-ZOC4GITL.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  captureWarning
3
- } from "./chunk-KQ352MBU.js";
3
+ } from "./chunk-6BMTNMLQ.js";
4
4
 
5
5
  // src/chunk-probe.ts
6
6
  import { Twox128, Blake2128Concat, decAnyMetadata, unifyMetadata } from "@polkadot-api/substrate-bindings";
@@ -5,7 +5,7 @@ import {
5
5
  captureWarning,
6
6
  setDeployAttribute,
7
7
  withSpan
8
- } from "./chunk-KQ352MBU.js";
8
+ } from "./chunk-6BMTNMLQ.js";
9
9
 
10
10
  // src/dotns.ts
11
11
  import { spawn } from "child_process";
@@ -2,11 +2,11 @@ import {
2
2
  classifyErrorArea,
3
3
  isInteractive,
4
4
  promptYesNo
5
- } from "./chunk-VQBSWH77.js";
5
+ } from "./chunk-DKWGGXWX.js";
6
6
  import {
7
7
  VERSION,
8
8
  getCurrentSentryTraceId
9
- } from "./chunk-KQ352MBU.js";
9
+ } from "./chunk-6BMTNMLQ.js";
10
10
 
11
11
  // src/bug-report.ts
12
12
  import { execSync, execFileSync } from "child_process";
@@ -5,9 +5,9 @@ import {
5
5
  _decodeStorageValue,
6
6
  _resetProbeSession,
7
7
  probeChunks
8
- } from "./chunk-EFLBLRT5.js";
9
- import "./chunk-KQ352MBU.js";
10
- import "./chunk-3BOARQQO.js";
8
+ } from "./chunk-MBQHVEJL.js";
9
+ import "./chunk-6BMTNMLQ.js";
10
+ import "./chunk-2OFRCVQE.js";
11
11
  import "./chunk-QGM4M3NI.js";
12
12
  export {
13
13
  ChainProbeCrossValidationError,
package/dist/deploy.d.ts CHANGED
@@ -185,7 +185,7 @@ interface DeployOptions {
185
185
  */
186
186
  reproducibleSource?: string;
187
187
  /**
188
- * Environment id from environments.json (e.g. "paseo-next", "paseo-review").
188
+ * Environment id from environments.json (e.g. "paseo-next-v2", "paseo-review").
189
189
  * Drives both the bulletin RPC and the asset-hub RPC. Defaults to
190
190
  * DEFAULT_ENV_ID. `--rpc` / BULLETIN_RPC still override the bulletin endpoint
191
191
  * within the chosen env.
package/dist/deploy.js CHANGED
@@ -32,20 +32,20 @@ import {
32
32
  storeDirectory,
33
33
  storeDirectoryV2,
34
34
  storeFile
35
- } from "./chunk-PBUI63YV.js";
35
+ } from "./chunk-I4K7RN5W.js";
36
36
  import "./chunk-MJTQOXBC.js";
37
37
  import "./chunk-KOSF5FDO.js";
38
38
  import "./chunk-5MRZ3V4A.js";
39
39
  import "./chunk-S7EM5VMW.js";
40
- import "./chunk-I5ZGHKNT.js";
41
- import "./chunk-VQBSWH77.js";
42
- import "./chunk-EFLBLRT5.js";
40
+ import "./chunk-UPXJA4RR.js";
41
+ import "./chunk-DKWGGXWX.js";
42
+ import "./chunk-MBQHVEJL.js";
43
43
  import "./chunk-C2TS5MER.js";
44
- import "./chunk-WX7MOC3Z.js";
44
+ import "./chunk-QKK33FHY.js";
45
45
  import "./chunk-4TS6R26J.js";
46
- import "./chunk-KQ352MBU.js";
47
- import "./chunk-3BOARQQO.js";
48
- import "./chunk-O2HIPNUT.js";
46
+ import "./chunk-6BMTNMLQ.js";
47
+ import "./chunk-2OFRCVQE.js";
48
+ import "./chunk-BY6RULRX.js";
49
49
  import {
50
50
  EXIT_CODE_NO_RETRY,
51
51
  NonRetryableError
package/dist/dotns.js CHANGED
@@ -38,10 +38,10 @@ import {
38
38
  stripTrailingDigits,
39
39
  validateDomainLabel,
40
40
  verifyNonceAdvanced
41
- } from "./chunk-WX7MOC3Z.js";
41
+ } from "./chunk-QKK33FHY.js";
42
42
  import "./chunk-4TS6R26J.js";
43
- import "./chunk-KQ352MBU.js";
44
- import "./chunk-3BOARQQO.js";
43
+ import "./chunk-6BMTNMLQ.js";
44
+ import "./chunk-2OFRCVQE.js";
45
45
  import "./chunk-QGM4M3NI.js";
46
46
  export {
47
47
  CONNECTION_TIMEOUT_MS,
@@ -1,4 +1,4 @@
1
- declare const DEFAULT_ENV_ID = "paseo-next";
1
+ declare const DEFAULT_ENV_ID = "paseo-next-v2";
2
2
  interface Environment {
3
3
  id: string;
4
4
  name: string;
@@ -5,7 +5,7 @@ import {
5
5
  listEnvironments,
6
6
  loadEnvironments,
7
7
  resolveEndpoints
8
- } from "./chunk-O2HIPNUT.js";
8
+ } from "./chunk-BY6RULRX.js";
9
9
  import "./chunk-ZOC4GITL.js";
10
10
  import "./chunk-QGM4M3NI.js";
11
11
  export {
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  deploy,
6
6
  merkleizeJS,
7
7
  merkleizeWithStableOrder
8
- } from "./chunk-PBUI63YV.js";
8
+ } from "./chunk-I4K7RN5W.js";
9
9
  import {
10
10
  computeStats,
11
11
  renderSummary,
@@ -27,16 +27,16 @@ import {
27
27
  isVolatilePath,
28
28
  parseManifest
29
29
  } from "./chunk-S7EM5VMW.js";
30
- import "./chunk-I5ZGHKNT.js";
31
- import "./chunk-VQBSWH77.js";
30
+ import "./chunk-UPXJA4RR.js";
31
+ import "./chunk-DKWGGXWX.js";
32
32
  import {
33
33
  probeChunks
34
- } from "./chunk-EFLBLRT5.js";
34
+ } from "./chunk-MBQHVEJL.js";
35
35
  import "./chunk-C2TS5MER.js";
36
36
  import {
37
37
  DotNS,
38
38
  parseDomainName
39
- } from "./chunk-WX7MOC3Z.js";
39
+ } from "./chunk-QKK33FHY.js";
40
40
  import {
41
41
  bootstrapPool,
42
42
  derivePoolAccounts,
@@ -44,7 +44,7 @@ import {
44
44
  fetchPoolAuthorizations,
45
45
  selectAccount
46
46
  } from "./chunk-4TS6R26J.js";
47
- import "./chunk-KQ352MBU.js";
47
+ import "./chunk-6BMTNMLQ.js";
48
48
  import {
49
49
  VERSION,
50
50
  loadRunState,
@@ -54,8 +54,8 @@ import {
54
54
  shouldSkipStaleWarning,
55
55
  stateFilePath,
56
56
  writeRunState
57
- } from "./chunk-3BOARQQO.js";
58
- import "./chunk-O2HIPNUT.js";
57
+ } from "./chunk-2OFRCVQE.js";
58
+ import "./chunk-BY6RULRX.js";
59
59
  import "./chunk-ZOC4GITL.js";
60
60
  import "./chunk-HOTQDYHD.js";
61
61
  import "./chunk-QGM4M3NI.js";
@@ -5,8 +5,8 @@ import {
5
5
  maybeWriteMemoryReport,
6
6
  safeHeap,
7
7
  sampleFromBytes
8
- } from "./chunk-KQ352MBU.js";
9
- import "./chunk-3BOARQQO.js";
8
+ } from "./chunk-6BMTNMLQ.js";
9
+ import "./chunk-2OFRCVQE.js";
10
10
  import "./chunk-QGM4M3NI.js";
11
11
  export {
12
12
  DEFAULT_THRESHOLD_MB,
package/dist/merkle.js CHANGED
@@ -6,20 +6,20 @@ import {
6
6
  merkleizeKuboBackend,
7
7
  merkleizeWithStableOrder,
8
8
  rebuildOrderedCarFromBytes
9
- } from "./chunk-PBUI63YV.js";
9
+ } from "./chunk-I4K7RN5W.js";
10
10
  import "./chunk-MJTQOXBC.js";
11
11
  import "./chunk-KOSF5FDO.js";
12
12
  import "./chunk-5MRZ3V4A.js";
13
13
  import "./chunk-S7EM5VMW.js";
14
- import "./chunk-I5ZGHKNT.js";
15
- import "./chunk-VQBSWH77.js";
16
- import "./chunk-EFLBLRT5.js";
14
+ import "./chunk-UPXJA4RR.js";
15
+ import "./chunk-DKWGGXWX.js";
16
+ import "./chunk-MBQHVEJL.js";
17
17
  import "./chunk-C2TS5MER.js";
18
- import "./chunk-WX7MOC3Z.js";
18
+ import "./chunk-QKK33FHY.js";
19
19
  import "./chunk-4TS6R26J.js";
20
- import "./chunk-KQ352MBU.js";
21
- import "./chunk-3BOARQQO.js";
22
- import "./chunk-O2HIPNUT.js";
20
+ import "./chunk-6BMTNMLQ.js";
21
+ import "./chunk-2OFRCVQE.js";
22
+ import "./chunk-BY6RULRX.js";
23
23
  import "./chunk-ZOC4GITL.js";
24
24
  import "./chunk-HOTQDYHD.js";
25
25
  import "./chunk-QGM4M3NI.js";
package/dist/run-state.js CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  shouldSkipStaleWarning,
8
8
  stateFilePath,
9
9
  writeRunState
10
- } from "./chunk-3BOARQQO.js";
10
+ } from "./chunk-2OFRCVQE.js";
11
11
  import "./chunk-QGM4M3NI.js";
12
12
  export {
13
13
  VERSION,
package/dist/telemetry.js CHANGED
@@ -28,8 +28,8 @@ import {
28
28
  truncateAddress,
29
29
  withDeploySpan,
30
30
  withSpan
31
- } from "./chunk-KQ352MBU.js";
32
- import "./chunk-3BOARQQO.js";
31
+ } from "./chunk-6BMTNMLQ.js";
32
+ import "./chunk-2OFRCVQE.js";
33
33
  import "./chunk-QGM4M3NI.js";
34
34
  export {
35
35
  VERSION,
@@ -9,9 +9,9 @@ import {
9
9
  isPreReleaseVersion,
10
10
  preReleaseWarning,
11
11
  promptYesNo
12
- } from "./chunk-VQBSWH77.js";
13
- import "./chunk-KQ352MBU.js";
14
- import "./chunk-3BOARQQO.js";
12
+ } from "./chunk-DKWGGXWX.js";
13
+ import "./chunk-6BMTNMLQ.js";
14
+ import "./chunk-2OFRCVQE.js";
15
15
  import "./chunk-QGM4M3NI.js";
16
16
  export {
17
17
  assessVersion,
@@ -57,7 +57,7 @@ If S3 ever fails because `e2eowned.dot` was transferred back to Alice by mistake
57
57
 
58
58
  Paseo Next v2 uses a separate Asset Hub (`wss://paseo-asset-hub-next-rpc.polkadot.io`) and Bulletin chain (`wss://paseo-bulletin-next-rpc.polkadot.io`) with different contract addresses. The `map_account` extrinsic does not exist on this chain — account mapping is triggered automatically when an account submits its first on-chain transaction.
59
59
 
60
- > **Note on PoP grants:** The paseo-next-v2 `POP_RULES` contract (`0xd3F059FA65dA566B294b5d755a06054d4bE7ce7C`) is **not permissionless** — `setUserPopStatus` can only be called by the contract owner (`0x4a519c30da0ec16aa9a73c26ea6ca6f701cce099`). This is unlike stable Paseo where any account can self-grant PoP on testnet. Steps 2 and 4 below require **chain team action**.
60
+ > **Note on PoP grants:** The paseo-next-v2 `POP_RULES` contract (`0x2002C1c15b88632Ad01c7770f6EbE1Ca05c8472E`) is **not permissionless** — `setUserPopStatus` can only be called by the contract owner (`0x4a519c30da0ec16aa9a73c26ea6ca6f701cce099`). This is unlike stable Paseo where any account can self-grant PoP on testnet. Steps 2 and 4 below require **chain team action**.
61
61
 
62
62
  ### Prerequisites
63
63
 
@@ -77,7 +77,7 @@ This grants each pool account `TransactionStorage` quota on Bulletin Next. Alice
77
77
  All DotNS labels used by E2E tests (`e2epool`, `e2edirect`, `e2eowned`) classify as PoP Full required. The `POP_RULES` contract owner must call `setUserPopStatus` for Alice:
78
78
 
79
79
  ```
80
- Contract: 0xd3F059FA65dA566B294b5d755a06054d4bE7ce7C (POP_RULES on paseo-next-v2 Asset Hub)
80
+ Contract: 0x2002C1c15b88632Ad01c7770f6EbE1Ca05c8472E (POP_RULES on paseo-next-v2 Asset Hub)
81
81
  Call: setUserPopStatus(address user, uint8 status)
82
82
  user = 0x35cdb23ff7fc86e8dccd577ca309bfea9c978d20 (Alice H160)
83
83
  status = 2 (Full)
@@ -109,7 +109,7 @@ Expected output: Bob's SS58, his H160 (`0x41dccbd49b26c50d34355ed86ff0fa9e489d1e
109
109
  Same contract owner action as step 2, for Bob's address:
110
110
 
111
111
  ```
112
- Contract: 0xd3F059FA65dA566B294b5d755a06054d4bE7ce7C (POP_RULES on paseo-next-v2 Asset Hub)
112
+ Contract: 0x2002C1c15b88632Ad01c7770f6EbE1Ca05c8472E (POP_RULES on paseo-next-v2 Asset Hub)
113
113
  Call: setUserPopStatus(address user, uint8 status)
114
114
  user = 0x41dccbd49b26c50d34355ed86ff0fa9e489d1e01 (Bob H160)
115
115
  status = 2 (Full)
@@ -121,9 +121,11 @@ Once Bob has PoP Full (step 4), register the domain using the dedicated tool (do
121
121
 
122
122
  ```bash
123
123
  node tools/register-e2eowned-paseo-next-v2.mjs
124
+ node tools/register-e2eownedns02-paseo-next-v2.mjs
124
125
  ```
125
126
 
126
127
  Expected: `e2eowned.dot registered as Bob (0x41dccbd49b26c50d34355ed86ff0fa9e489d1e01)`.
128
+ The `e2eownedns02.dot` helper is idempotent: it leaves Bob-owned state alone and transfers the label back to Bob if a failed S3 fixture run accidentally left it owned by Alice.
127
129
 
128
130
  ---
129
131
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bulletin-deploy",
3
- "version": "0.7.19",
3
+ "version": "0.7.20-rc.2",
4
4
  "private": false,
5
5
  "repository": {
6
6
  "type": "git",
@@ -33,7 +33,7 @@
33
33
  "build": "tsup src/index.ts src/deploy.ts src/dotns.ts src/pool.ts src/telemetry.ts src/memory-report.ts src/merkle.ts src/gh-pages-mirror.ts src/version-check.ts src/bug-report.ts src/run-state.ts src/environments.ts src/errors.ts src/manifest.ts src/chunk-probe.ts src/manifest-embed.ts src/manifest-fetch.ts src/manifest-roundtrip.ts src/incremental-stats.ts src/chunker.ts src/mirror.ts --format esm --dts --clean --target node22",
34
34
  "refresh-environments": "node scripts/refresh-environments.mjs",
35
35
  "prepare": "npm run build",
36
- "test": "npm run build && node --test test/test.js test/cli-help.test.js test/helpers/e2e-helpers.test.js test/environments.test.js",
36
+ "test": "npm run build && node --test test/test.js test/cli-help.test.js test/helpers/e2e-helpers.test.js test/environments.test.js test/refresh-environments.test.js",
37
37
  "test:e2e": "npm run build && node --test test/e2e.test.js",
38
38
  "test:e2e:smoke": "bash scripts/e2e-pass.sh smoke",
39
39
  "test:e2e:pr": "bash scripts/e2e-pass.sh pr",