@pulse-compute/cli 1.0.0-beta.2 → 1.0.0-beta.3

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.
Files changed (70) hide show
  1. package/API.md +1 -1
  2. package/CHANGELOG.md +6 -0
  3. package/README.md +3 -3
  4. package/cli-spec.json +1 -1
  5. package/docs/README.md +1 -1
  6. package/docs/architecture/current-contracts.md +14 -2
  7. package/docs/concepts/compilation-and-lowering.md +1 -1
  8. package/docs/concepts/contracts-and-providers.md +2 -2
  9. package/docs/concepts/package-owned-lowering.md +1 -1
  10. package/docs/concepts/targets-and-hosts.md +2 -2
  11. package/docs/contributing/adding-core-provider.md +1 -1
  12. package/docs/contributing/adding-first-party-lowerer.md +1 -1
  13. package/docs/contributing/package-lowerer-contract.md +2 -2
  14. package/docs/maintainers/documentation-deployment.md +4 -4
  15. package/docs/maintainers/documentation-versioning.md +1 -1
  16. package/docs/maintainers/maintenance-policy.json +1 -1
  17. package/docs/maintainers/maintenance-policy.md +1 -1
  18. package/docs/maintainers/npm-publishing.md +34 -6
  19. package/docs/maintainers/plugin-readiness.json +1 -1
  20. package/docs/maintainers/plugin-readiness.md +1 -1
  21. package/docs/maintainers/release-acceptance.md +3 -3
  22. package/docs/maintainers/release-manifest.md +3 -3
  23. package/docs/maintainers/testing.md +1 -1
  24. package/docs/packages/README.md +3 -3
  25. package/docs/packages/assets.md +1 -1
  26. package/docs/packages/crypto.md +1 -1
  27. package/docs/packages/entities.md +1 -1
  28. package/docs/packages/grip.md +1 -1
  29. package/docs/packages/implementation-packages.md +1 -1
  30. package/docs/packages/jwt.md +1 -1
  31. package/docs/packages/provider-fastly.md +1 -1
  32. package/docs/packages/pulse.md +1 -1
  33. package/docs/packages/runtime.md +1 -1
  34. package/docs/packages/s3.md +1 -1
  35. package/docs/preview-scope.md +1 -1
  36. package/docs/reference/cli-spec.json +1 -1
  37. package/docs/reference/cli.md +1 -1
  38. package/docs/reference/compatibility-matrix.md +1 -1
  39. package/docs/reference/diagnostics.md +5 -5
  40. package/docs/reference/documentation-versions.json +11 -3
  41. package/docs/reference/project-config.md +1 -1
  42. package/docs/reference/project-config.schema.json +2 -2
  43. package/docs/reference/release-manifest.json +24 -24
  44. package/documentation-site.json +1 -1
  45. package/documentation-versions.json +11 -3
  46. package/examples/01-hello-json/README.md +1 -1
  47. package/examples/01-hello-json/package.json +2 -2
  48. package/examples/02-request-schema/README.md +1 -1
  49. package/examples/02-request-schema/package.json +2 -2
  50. package/examples/03-fetch-composition/README.md +1 -1
  51. package/examples/03-fetch-composition/package.json +2 -2
  52. package/examples/05-fastly-capabilities/README.md +1 -1
  53. package/examples/05-fastly-capabilities/package.json +4 -4
  54. package/examples/07-opaque-proxy/README.md +1 -1
  55. package/examples/07-opaque-proxy/package.json +3 -3
  56. package/examples/09-router-lowering/README.md +1 -1
  57. package/examples/09-router-lowering/package.json +3 -3
  58. package/examples/10-entities-tools/package.json +3 -3
  59. package/examples/11-events/README.md +1 -1
  60. package/examples/11-events/package.json +2 -2
  61. package/examples/12-mcp-proxy/README.md +1 -1
  62. package/examples/12-mcp-proxy/package.json +2 -2
  63. package/examples/13-jwt-es256/README.md +1 -1
  64. package/examples/13-jwt-es256/package.json +3 -3
  65. package/package.json +7 -7
  66. package/project-config.schema.json +2 -2
  67. package/release-manifest.json +24 -24
  68. package/src/documentation.js +1 -1
  69. package/src/project-config-schema.js +1 -1
  70. package/src/project-execution.js +42 -24
package/API.md CHANGED
@@ -487,7 +487,7 @@ Older `/pulsewasm` imports are compatibility-only and are isolated in the
487
487
 
488
488
  ## Entities API
489
489
 
490
- `@pulse-compute/entities` is part of the synchronized `1.0.0-beta.2` package
490
+ `@pulse-compute/entities` is part of the synchronized `1.0.0-beta.3` package
491
491
  set. The application surface has two runtime values:
492
492
 
493
493
  ```ts
package/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  Pulse follows semantic versioning for public releases. The repository begins its public history with the `1.0.0-beta.1` prerelease.
4
4
 
5
+ ## 1.0.0-beta.3 — Beta (2026-09-14)
6
+
7
+ - Fix CLI storage execution on Node Native, Node JavaScript and the Fastly Native local fixture host, including S3 response streams, bindings and conditional KV.
8
+ - Keep the last working Native application available when a development reload fails.
9
+ - Allow bounded npm registry propagation time and publish future releases directly under the `latest` npm tag while retaining the Beta release label.
10
+
5
11
  ## 1.0.0-beta.2 — Beta (2026-09-13)
6
12
 
7
13
  This candidate synchronizes the 19-package release catalog and prepares the
package/README.md CHANGED
@@ -7,13 +7,13 @@
7
7
  > **Supported entry points:** `pulse binary`, `@pulse-compute/cli`, `@pulse-compute/cli/workflow`, `@pulse-compute/cli/project-config`, `@pulse-compute/cli/project-execution`, `@pulse-compute/cli/project-config-schema`, `@pulse-compute/cli/diagnostics`, `@pulse-compute/cli/project-config.schema.json`, `@pulse-compute/cli/cli-spec.json`, `@pulse-compute/cli/release-manifest.json`, `@pulse-compute/cli/documentation-versions.json`, `@pulse-compute/cli/documentation-site.json`<br>
8
8
  > **Stability:** Supported Beta workflow and project-configuration contract.<br>
9
9
  > **npm:** [`@pulse-compute/cli`](https://www.npmjs.com/package/@pulse-compute/cli)<br>
10
- > **Canonical documentation:** [Package guide](https://pulsecompute.io/v1.0.0-beta.2/packages/cli/)
10
+ > **Canonical documentation:** [Package guide](https://pulsecompute.io/v1.0.0-beta.3/packages/cli/)
11
11
  >
12
- > This release-status block is generated from the synchronized `Pulse 1.0.0-beta.2` package policy.
12
+ > This release-status block is generated from the synchronized `Pulse 1.0.0-beta.3` package policy.
13
13
  <!-- pulse-package-status:end -->
14
14
 
15
15
  The public CLI and conventional `@pulse-compute/pulse` application root are
16
- both part of the synchronized `1.0.0-beta.2` release set. Validate the generated
16
+ both part of the synchronized `1.0.0-beta.3` release set. Validate the generated
17
17
  workflow from the repository or the exact packed acceptance set:
18
18
 
19
19
  ```bash
package/cli-spec.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": "pulse.cli-command-spec.v5",
3
- "cliVersion": "1.0.0-beta.2",
3
+ "cliVersion": "1.0.0-beta.3",
4
4
  "completionShells": [
5
5
  "bash",
6
6
  "zsh",
package/docs/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Pulse documentation
2
2
 
3
- Pulse documentation is organized in layers so you can stop when you have enough detail. The `1.0.0-beta.2` candidate uses async-shaped managed handlers, trusted Pulse effects, a conventional `.pulse/config.ts` workspace, and the `pulse` CLI. The synchronized 18-package release catalog remains the authority for npm availability and support tiers.
3
+ Pulse documentation is organized in layers so you can stop when you have enough detail. The `1.0.0-beta.3` candidate uses async-shaped managed handlers, trusted Pulse effects, a conventional `.pulse/config.ts` workspace, and the `pulse` CLI. The synchronized 18-package release catalog remains the authority for npm availability and support tiers.
4
4
 
5
5
  ## 1. Start and ship a first project
6
6
 
@@ -238,6 +238,18 @@ guest-link packaging authorization have already been checked. It does not
238
238
  contain a TypeScript AST/service, compiler cache, builder, mutable manifest,
239
239
  compiled-program object, raw target option bag, or alternate target.
240
240
 
241
+ CLI Native test/dev execution that needs guest crypto or conditional KV uses
242
+ an optional provider-owned `prepareNativeExecution` driver hook. It receives the
243
+ same immutable, validated invocation with action `execute-native` and returns a
244
+ local request executor. The CLI never substitutes another provider's host.
245
+ Node executes the compiled neutral Wasm with its provider adapter. Fastly
246
+ realizes its own Native artifact and runs the existing fixture ABI, including
247
+ the conditional-KV authority. Its result identifies the artifact hash and fixture
248
+ kind; unavailable effect telemetry is reported as such. This does not establish
249
+ Viceroy or deployed Fastly acceptance. S3 fixtures preserve raw response streams
250
+ inside the provider transport while ordinary fetch retains its opaque response
251
+ contract. Dev retains a last-good Native executor if recompilation fails.
252
+
241
253
  Native realization and JavaScript source packaging are normalized into
242
254
  versioned, data-only results before the CLI consumes them. Provider packaging
243
255
  must report the same artifact identity authorized by the final guest audit.
@@ -335,7 +347,7 @@ without moving package semantics into the compiler or widening the trust model.
335
347
 
336
348
  ## JWT verification
337
349
 
338
- The synchronized `1.0.0-beta.2` JWT/crypto packages compose
350
+ The synchronized `1.0.0-beta.3` JWT/crypto packages compose
339
351
  `@pulse-compute/jwt` over the lower-level, provider-neutral verification
340
352
  contract owned by `@pulse-compute/crypto`. The executable algorithm set is
341
353
  HS256 and ES256. Crypto verifies a MAC or signature over caller-supplied bytes
@@ -416,7 +428,7 @@ publish, promote, deploy, or activate the release.
416
428
 
417
429
  ## Support, release, and authority
418
430
 
419
- Pulse `1.0.0-beta.2` is a Beta intended for the `beta` channel.
431
+ Pulse `1.0.0-beta.3` is a Beta intended for the `beta` channel.
420
432
  Documented, evidence-backed behavior is intentional, but public surfaces may
421
433
  change deliberately before a compatibility-bearing release. Unsupported
422
434
  behavior fails explicitly, historical and implementation subpaths gain no
@@ -408,7 +408,7 @@ generic loader handles reachable-graph discovery and trusted invocation. Older
408
408
  `/pulsewasm` imports are isolated in the
409
409
  [compatibility migration guide](../guides/compatibility-imports.md).
410
410
 
411
- In Pulse `1.0.0-beta.2`, package-owned builders must declare `compiler.trust: 'first-party'` and ship in the synchronized release set. This is an internal contributor mechanism, not a general third-party plugin API. See [Add a first-party package-owned lowerer](../contributing/adding-first-party-lowerer.md).
411
+ In Pulse `1.0.0-beta.3`, package-owned builders must declare `compiler.trust: 'first-party'` and ship in the synchronized release set. This is an internal contributor mechanism, not a general third-party plugin API. See [Add a first-party package-owned lowerer](../contributing/adding-first-party-lowerer.md).
412
412
 
413
413
  ## Provider lowering is a second contract
414
414
 
@@ -38,7 +38,7 @@ GRIP uses the same split. `isWebSocket`, `subscribe`, and `handoff` are pure HTT
38
38
 
39
39
  ## Provider selection
40
40
 
41
- Pulse `1.0.0-beta.2` has three provider driver identifiers:
41
+ Pulse `1.0.0-beta.3` has three provider driver identifiers:
42
42
 
43
43
  | Provider | Local execution | Deployable build | Purpose |
44
44
  |---|---:|---:|---|
@@ -96,7 +96,7 @@ For Fastly, `pulse build` additionally emits a real Compute target. The explicit
96
96
 
97
97
  ## Current extension boundary
98
98
 
99
- There is no automatic provider plugin registry in `1.0.0-beta.2`. Configuration
99
+ There is no automatic provider plugin registry in `1.0.0-beta.3`. Configuration
100
100
  selects a bare host ID, internal `none`, or an exact scoped project-installed
101
101
  package name. Bare IDs resolve by the `@pulse-compute/provider-<id>` convention.
102
102
  A package is loadable only when selected and when it exports the versioned
@@ -2,7 +2,7 @@
2
2
 
3
3
  Package-owned lowering lets a synchronized Pulse package extend the canonical compiler with narrow, statically recognized operations while keeping domain rules out of compiler core.
4
4
 
5
- The synchronized `1.0.0-beta.2` release uses this pattern for Assets, GRIP,
5
+ The synchronized `1.0.0-beta.3` release uses this pattern for Assets, GRIP,
6
6
  JWT, and Entities.
7
7
  It is a **trusted first-party synchronization mechanism**, not a public
8
8
  registry that executes arbitrary npm compiler plugins.
@@ -16,7 +16,7 @@ require Native-compatible source; use `pulse build` for a JavaScript package.
16
16
 
17
17
  ## Current Beta targets
18
18
 
19
- `1.0.0-beta.2` exercises four explicit modes through one conformance corpus:
19
+ `1.0.0-beta.3` exercises four explicit modes through one conformance corpus:
20
20
 
21
21
  | Host | Target | Current release status | Build shape |
22
22
  |---|---|---|---|
@@ -45,7 +45,7 @@ adapter, lifecycle, conformance evidence, and package claim.
45
45
  The [ESP32 reference host](https://github.com/pulsecompute/pulse-esp32-host)
46
46
  tests whether the event/effect/continuation model remains useful without a
47
47
  JavaScript fallback, abundant memory, or an HTTP-centered lifecycle. It is a
48
- boundary witness, not a `1.0.0-beta.2` provider or compatibility promise. The
48
+ boundary witness, not a `1.0.0-beta.3` provider or compatibility promise. The
49
49
  [architecture vision](../architecture/vision.md#esp32-as-a-boundary-witness)
50
50
  describes the intended host-owned interrupt queue and non-reentrant Wasm entry.
51
51
 
@@ -75,7 +75,7 @@ Descriptors are normalized by the shared provider contract. A conceptual descrip
75
75
  ```js
76
76
  const EXAMPLE_PROVIDER_DESCRIPTOR = createProviderDescriptor({
77
77
  id: 'example',
78
- providerVersion: '1.0.0-beta.2',
78
+ providerVersion: '1.0.0-beta.3',
79
79
  package: '@pulse-compute/provider-example',
80
80
  runtime: 'pulse.canonical-example-runtime.v1',
81
81
  buildTarget: 'example-edge',
@@ -11,7 +11,7 @@ Start with [Pulse-aware package authoring](./pulse-aware-packages.md) to decide
11
11
  whether the package needs Native lowering at all. Ordinary target-compatible
12
12
  JavaScript packages do not require a compiler builder.
13
13
 
14
- > **Scope and trust boundary:** Pulse `1.0.0-beta.2` executes package-owned compiler builders only when their manifest declares `compiler.trust: 'first-party'` and the package is part of the synchronized release set. This is a core-repository contributor workflow, **not an external plugin** interface or a supported third-party plugin API. An external package cannot self-register arbitrary compiler code.
14
+ > **Scope and trust boundary:** Pulse `1.0.0-beta.3` executes package-owned compiler builders only when their manifest declares `compiler.trust: 'first-party'` and the package is part of the synchronized release set. This is a core-repository contributor workflow, **not an external plugin** interface or a supported third-party plugin API. An external package cannot self-register arbitrary compiler code.
15
15
 
16
16
  A package-owned lowerer lets one release package define a narrow TypeScript facade and keep its domain-specific static validation outside compiler core. GRIP is the clearest current example; assets is the second implementation proving that the generic loader is not GRIP-specific.
17
17
 
@@ -8,7 +8,7 @@ pulse-doc-meta:end -->
8
8
  # Package lowerer contract reference
9
9
 
10
10
  This reference describes the internal first-party lowerer protocol used by the
11
- synchronized `1.0.0-beta.2` release. It documents current repository
11
+ synchronized `1.0.0-beta.3` release. It documents current repository
12
12
  interfaces; it is not a third-party plugin compatibility promise. Package
13
13
  availability remains owned by the release catalog.
14
14
 
@@ -370,7 +370,7 @@ Package lowerer code must not choose `node.*`, `fastly.*`, backend names, store
370
370
 
371
371
  ## Compatibility status
372
372
 
373
- This protocol is synchronized inside the `1.0.0-beta.2` release set. It can change with compiler implementation needs. Only explicitly documented application facades carry the package support promise.
373
+ This protocol is synchronized inside the `1.0.0-beta.3` release set. It can change with compiler implementation needs. Only explicitly documented application facades carry the package support promise.
374
374
 
375
375
  A public external lowerer API would require a new contract that addresses trust, sandboxing, provenance, protocol negotiation, resource limits, lifecycle support, and semver compatibility.
376
376
 
@@ -31,7 +31,7 @@ GitHub Pages deployment is no longer part of the repository workflow. The releas
31
31
 
32
32
  ## Object classes
33
33
 
34
- The `1.0.0-beta.2` layout is:
34
+ The `1.0.0-beta.3` layout is:
35
35
 
36
36
  ```text
37
37
  <bucket>/pulse/
@@ -41,8 +41,8 @@ The `1.0.0-beta.2` layout is:
41
41
  versions.json mutable
42
42
  site-manifest.json mutable
43
43
  public-site-manifest.json mutable
44
- v1.0.0-beta.2/** immutable
45
- deployments/v1.0.0-beta.2.json immutable receipt
44
+ v1.0.0-beta.3/** immutable
45
+ deployments/v1.0.0-beta.3.json immutable receipt
46
46
  ```
47
47
 
48
48
  The exact-version tree is the archival release. Root and `latest` are convenience surfaces promoted only after exact-version verification and matching npm package verification.
@@ -72,7 +72,7 @@ npm run docs:deployment:prepare
72
72
  npm run docs:deployment:verify
73
73
  ```
74
74
 
75
- `.pulse-documentation-deployment/documentation-deployment-manifest.json` records every object key, local source, byte length, SHA-256, content type, cache class, mutability, source commit, public documentation route, and independent storage prefix. Its deterministic deployment receipt records the complete generated-site digest and the exact-version object inventory and tree digest for `deployments/v1.0.0-beta.2.json`. Candidate verification rejects any root or site file outside that sealed inventory.
75
+ `.pulse-documentation-deployment/documentation-deployment-manifest.json` records every object key, local source, byte length, SHA-256, content type, cache class, mutability, source commit, public documentation route, and independent storage prefix. Its deterministic deployment receipt records the complete generated-site digest and the exact-version object inventory and tree digest for `deployments/v1.0.0-beta.3.json`. Candidate verification rejects any root or site file outside that sealed inventory.
76
76
 
77
77
  A local adapter exercised by `npm run publication:check` proves:
78
78
 
@@ -26,7 +26,7 @@ The homepage and exact current documentation load the same assets under `/v<vers
26
26
  The canonical URL for this release begins with:
27
27
 
28
28
  ```text
29
- https://pulsecompute.io/v1.0.0-beta.2/
29
+ https://pulsecompute.io/v1.0.0-beta.3/
30
30
  ```
31
31
 
32
32
  Diagnostics, package status blocks, and package metadata use exact-version URLs. This prevents a diagnostic emitted by an older CLI from silently opening instructions for a newer contract.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "pulse.maintenance-policy.v2",
3
3
  "policyVersion": 7,
4
- "releaseVersion": "1.0.0-beta.2",
4
+ "releaseVersion": "1.0.0-beta.3",
5
5
  "reviewedAt": "2026-09-13",
6
6
  "maintainerModel": {
7
7
  "residentMaintainer": "Codex",
@@ -6,7 +6,7 @@ Pulse uses a machine-readable maintenance policy so repository automation and Co
6
6
 
7
7
  - **Policy schema:** `pulse.maintenance-policy.v2`
8
8
  - **Policy version:** `7`
9
- - **Release:** `1.0.0-beta.2`
9
+ - **Release:** `1.0.0-beta.3`
10
10
  - **Reviewed:** `2026-09-13`
11
11
  - **Resident maintainer:** Codex
12
12
  - **Merge authority:** human-only
@@ -29,7 +29,7 @@ The machine-readable publication contract is the `publication` object in `releas
29
29
  Use the manifest-owned preparation policy instead of repository-wide version replacement:
30
30
 
31
31
  ```bash
32
- pnpm release:prepare -- 1.0.0-beta.2 --channel beta --replace-unpublished
32
+ pnpm release:prepare -- 1.0.0-beta.3 --channel beta --replace-unpublished
33
33
  ```
34
34
 
35
35
  `--replace-unpublished` replaces the current candidate without inventing release history. After a version has actually shipped, use `--archive-current`; that mode requires the committed immutable documentation snapshot. The command updates only catalogued JSON, package, guest-metadata, and current-documentation owners, runs named generators, rejects newly changed paths outside its allowlist, and writes an ignored stale-version-token report for review.
@@ -44,8 +44,8 @@ For example:
44
44
 
45
45
  ```bash
46
46
  gh workflow run npm-publish.yml \
47
- --ref v1.0.0-beta.2 \
48
- -f release_tag=v1.0.0-beta.2 \
47
+ --ref v1.0.0-beta.3 \
48
+ -f release_tag=v1.0.0-beta.3 \
49
49
  -f operation=audit
50
50
  ```
51
51
 
@@ -66,10 +66,24 @@ environment: npm-publish
66
66
  ```
67
67
 
68
68
  The workflow publishes public packages directly under the dist-tag in the
69
- release manifest. OIDC is deliberately not combined with a post-publication
70
- `npm dist-tag` mutation. The protected script verifies the native GitHub tag ref
69
+ release manifest, now explicitly `latest` for future releases. The release
70
+ channel and prerelease version remain Beta; the npm tag determines what an
71
+ unqualified `npm install` selects. Release preparation preserves this tag
72
+ policy across version bumps. An explicitly configured channel tag remains
73
+ supported for a release intended for a separate preview stream.
74
+
75
+ The pinned npm CLI's trusted publishing does not support a separate
76
+ post-publication `npm dist-tag` update. Each successful `npm publish --tag latest`
77
+ therefore advances that package's default version as part of publication;
78
+ the historical `beta` alias is not also advanced. The package set is published
79
+ in dependency order, with the public CLI last, and promotion is not atomic
80
+ across packages. The protected script verifies the native GitHub tag ref
71
81
  and SHA against the sealed candidate before the first publish.
72
82
 
83
+ This policy applies to future candidate source. Finish an already-started
84
+ release using its original tag, tooling, and sealed tarballs. Do not move that
85
+ tag or rebuild the same published version to adopt a new publication policy.
86
+
73
87
  ## One-time package bootstrap
74
88
 
75
89
  An npm trusted publisher can be configured only after the package name exists under the intended owner. Before enabling production publication, run:
@@ -78,7 +92,7 @@ An npm trusted publisher can be configured only after the package name exists un
78
92
  npm run release:audit-npm
79
93
  ```
80
94
 
81
- The command derives every package name from the release manifest and writes a timestamped, manifest-digest-bound report to `.pulse-release-preflight/npm-catalog-audit.json`. That report is ignored source evidence: it never rewrites the canonical preflight policy and it performs no registry mutation. The audit is ready only when every name exists, `bootstrap` points to `0.0.0`, and `latest` is either absent or still points to the same inert `0.0.0` placeholder. A different `latest` target remains blocking and any required dist-tag remediation is an explicit human registry action.
95
+ The command derives every package name from the release manifest and writes a timestamped, manifest-digest-bound report to `.pulse-release-preflight/npm-catalog-audit.json`. That report is ignored source evidence: it never rewrites the canonical preflight policy and it performs no registry mutation. Every name must exist with the inert `0.0.0` version and `bootstrap` tag. The `latest` tag may be absent, point to that placeholder, or point to a version both present in the registry and listed in `release/documentation-versions.json`. This preserves existing releases during the next bootstrap audit. Missing versions and unknown release targets remain blocking; any remediation is an explicit human registry action.
82
96
 
83
97
  Any missing package name requires a one-time human, 2FA-protected bootstrap publication through `scripts/npm_bootstrap.sh <package-name>`. After all names exist:
84
98
 
@@ -129,6 +143,20 @@ version present with different integrity
129
143
 
130
144
  This is resumable after a partially completed synchronized-package release without pretending npm publication is transactional. A same-version integrity mismatch cannot be repaired by overwriting the registry artifact; the human release authority must investigate and choose a new version if necessary.
131
145
 
146
+ npm can accept an upload while the version is still being processed. After
147
+ each successful publish, the script polls for up to ten minutes for both the
148
+ sealed integrity and configured tag, using fresh registry reads and intervals
149
+ capped at 30 seconds. Progress goes to stderr and identifies the package,
150
+ attempt, elapsed time, and whether the version or tag is still pending.
151
+ An observed integrity conflict stops immediately.
152
+
153
+ If processing exceeds the deadline, wait for registry visibility and use
154
+ **Re-run failed jobs** on the same workflow run. Keep the release tag and sealed
155
+ candidate unchanged: matching published packages are skipped, and publication
156
+ continues with the remaining packages. No new seal is required for that retry.
157
+ If source changes and a tag is moved before any publication, start a new workflow
158
+ dispatch instead; GitHub reruns retain the original event's commit SHA.
159
+
132
160
  ## Verification
133
161
 
134
162
  The protected publish job verifies each package immediately. A separate unprivileged job then confirms:
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": "pulse.plugin-readiness.v1",
3
- "releaseVersion": "1.0.0-beta.2",
3
+ "releaseVersion": "1.0.0-beta.3",
4
4
  "publicPluginApi": false,
5
5
  "decision": "deferred",
6
6
  "requirements": {
@@ -4,7 +4,7 @@
4
4
 
5
5
  > **Decision:** Deferred. No public third-party plugin API is available in this release.
6
6
 
7
- Pulse 1.0.0-beta.2 keeps general plugin discovery and package lowering inside the synchronized trusted release. Provider bootstrap is explicit and exact. The current boundaries are:
7
+ Pulse 1.0.0-beta.3 keeps general plugin discovery and package lowering inside the synchronized trusted release. Provider bootstrap is explicit and exact. The current boundaries are:
8
8
 
9
9
  - **Lowerers:** trusted first-party release packages only.
10
10
  - **Providers:** explicit package selection through pulse.provider-toolchain.v1; bare host IDs use the @pulse-compute/provider-<id> convention, scoped names are exact, and none is internal; no scanning or self-registration.
@@ -8,7 +8,7 @@ pulse-doc-meta:end -->
8
8
  # Release packages and clean-consumer acceptance
9
9
 
10
10
  The current Beta candidate contains nineteen publishable packages
11
- synchronized at version `1.0.0-beta.2`. The product-facing packages are:
11
+ synchronized at version `1.0.0-beta.3`. The product-facing packages are:
12
12
 
13
13
  ```text
14
14
  @pulse-compute/pulse
@@ -271,7 +271,7 @@ The release owns a versioned hosted-documentation gate:
271
271
  pnpm docs:site:check
272
272
  ```
273
273
 
274
- The check builds the exact `v1.0.0-beta.2` site and `latest` tree in a temporary directory, creates one search entry per public page, validates local hosted links, verifies release/version manifests, and requires the search, version, owner, and review UI on every page.
274
+ The check builds the exact `v1.0.0-beta.3` site and `latest` tree in a temporary directory, creates one search entry per public page, validates local hosted links, verifies release/version manifests, and requires the search, version, owner, and review UI on every page.
275
275
 
276
276
  The **Documentation** workflow repeats those checks for pull requests and `main`, seals a preview deployment manifest, and uploads artifacts without production credentials. It does not deploy to GitHub Pages.
277
277
 
@@ -279,7 +279,7 @@ Production delivery uses the manually dispatched **Documentation deployment** wo
279
279
 
280
280
  ```text
281
281
  build and seal
282
- → upload/verify v1.0.0-beta.2 and its receipt immutably
282
+ → upload/verify v1.0.0-beta.3 and its receipt immutably
283
283
  → verify all matching npm packages and configured dist-tags
284
284
  → promote root and latest
285
285
  → verify representative URLs through Fastly
@@ -6,8 +6,8 @@
6
6
 
7
7
  ## Beta candidate
8
8
 
9
- - **Candidate:** Pulse 1.0.0-beta.2 — Beta
10
- - **Version:** `1.0.0-beta.2`
9
+ - **Candidate:** Pulse 1.0.0-beta.3 — Beta
10
+ - **Version:** `1.0.0-beta.3`
11
11
  - **Activation stage:** `documentation-release`
12
12
  - **License:** `Apache-2.0`
13
13
  - **Supported Node:** `^22.14.0 || ^24.0.0`
@@ -16,7 +16,7 @@
16
16
  - **Reproducible publication toolchain:** Node `24.18.0` with npm `11.15.0`
17
17
  - **Readiness register:** `release/release-preflight.json`
18
18
  - **Documentation inventory:** `release/documentation-inventory.json`
19
- - **Exact documentation:** `https://pulsecompute.io/v1.0.0-beta.2/`
19
+ - **Exact documentation:** `https://pulsecompute.io/v1.0.0-beta.3/`
20
20
  - **Runtime targets:** 3
21
21
  - **Packages:** 19
22
22
 
@@ -237,7 +237,7 @@ node wasm/scripts/run-wasm-tests.cjs --task deployment-candidates --no-report
237
237
 
238
238
  ## JWT and crypto proof seals
239
239
 
240
- The `1.0.0-beta.2` JWT/crypto packages build on the focused crypto seal,
240
+ The `1.0.0-beta.3` JWT/crypto packages build on the focused crypto seal,
241
241
  which replays the
242
242
  configuration, JavaScript runtime, Native guest-source, shared cross-target
243
243
  corpus, and real Fastly Compute proofs. First record the one phase-boundary
@@ -2,7 +2,7 @@
2
2
 
3
3
  <!-- Generated by wasm/scripts/sync-reference-docs.cjs. Edit the source catalog, not this file. -->
4
4
 
5
- Pulse 1.0.0-beta.2 publishes one synchronized 19-package release set. Publication does not make every package an application-author SDK: the support tier and listed entry points define the release promise.
5
+ Pulse 1.0.0-beta.3 publishes one synchronized 19-package release set. Publication does not make every package an application-author SDK: the support tier and listed entry points define the release promise.
6
6
 
7
7
  | Package on npm | Guide | Support tier | Install directly | Release promise |
8
8
  |---|---|---|---:|---|
@@ -44,9 +44,9 @@ Installable as part of the synchronized release set, without an application-auth
44
44
 
45
45
  Every packed README begins with a generated status block covering audience, direct-install guidance, supported entry points, and stability. An export that is not listed in that block is not automatically a supported application-author entry point.
46
46
 
47
- ## Extension and provider boundary in 1.0.0-beta.2
47
+ ## Extension and provider boundary in 1.0.0-beta.3
48
48
 
49
- Pulse supports the documented package-owned assets and GRIP facades and the documented Fastly provider entry points. Their implementation demonstrates the internal contract, but `1.0.0-beta.2` does **not** expose a general third-party plugin registry:
49
+ Pulse supports the documented package-owned assets and GRIP facades and the documented Fastly provider entry points. Their implementation demonstrates the internal contract, but `1.0.0-beta.3` does **not** expose a general third-party plugin registry:
50
50
 
51
51
  - lowerer manifests are accepted only from trusted first-party release packages;
52
52
  - arbitrary external lowerer discovery and execution are not supported;
@@ -7,7 +7,7 @@ The package root exposes the complete JavaScript asset implementation—local fi
7
7
  ## Install
8
8
 
9
9
  ```bash
10
- npm install @pulse-compute/assets@1.0.0-beta.2
10
+ npm install @pulse-compute/assets@1.0.0-beta.3
11
11
  ```
12
12
 
13
13
  ## Portable lookup surface
@@ -4,7 +4,7 @@
4
4
  verification for Pulse applications and first-party capability packages.
5
5
 
6
6
  ```bash
7
- npm install @pulse-compute/crypto@1.0.0-beta.2
7
+ npm install @pulse-compute/crypto@1.0.0-beta.3
8
8
  ```
9
9
 
10
10
  ## Verification surface
@@ -4,7 +4,7 @@
4
4
  operations through the first-party JSON-RPC adapter.
5
5
 
6
6
  ```bash
7
- npm install @pulse-compute/entities@1.0.0-beta.2
7
+ npm install @pulse-compute/entities@1.0.0-beta.3
8
8
  ```
9
9
 
10
10
  ## Declare an entity router
@@ -5,7 +5,7 @@
5
5
  ## Install
6
6
 
7
7
  ```bash
8
- npm install @pulse-compute/grip@1.0.0-beta.2
8
+ npm install @pulse-compute/grip@1.0.0-beta.3
9
9
  ```
10
10
 
11
11
  ## Package-root API
@@ -4,7 +4,7 @@
4
4
 
5
5
  These packages are synchronized parts of the release set for compiler, provider, runtime, and package-lowering maintainers. They are not application-author SDKs.
6
6
 
7
- The package status and supported entry-point lists below come from the synchronized Pulse 1.0.0-beta.2 release policy.
7
+ The package status and supported entry-point lists below come from the synchronized Pulse 1.0.0-beta.3 release policy.
8
8
 
9
9
  ## `@pulse-compute/wasm-build-support`
10
10
 
@@ -4,7 +4,7 @@
4
4
  Pulse handlers.
5
5
 
6
6
  ```bash
7
- npm install @pulse-compute/jwt@1.0.0-beta.2
7
+ npm install @pulse-compute/jwt@1.0.0-beta.3
8
8
  ```
9
9
 
10
10
  ## Verify a bearer token
@@ -10,7 +10,7 @@ Install it only in projects that select the Fastly provider.
10
10
  ## Install
11
11
 
12
12
  ```bash
13
- npm install @pulse-compute/provider-fastly@1.0.0-beta.2
13
+ npm install @pulse-compute/provider-fastly@1.0.0-beta.3
14
14
  ```
15
15
 
16
16
  ## Configure a project
@@ -8,7 +8,7 @@ provider-neutral runtime contract.
8
8
  ## Install
9
9
 
10
10
  ```bash
11
- npm install @pulse-compute/pulse@1.0.0-beta.2
11
+ npm install @pulse-compute/pulse@1.0.0-beta.3
12
12
  ```
13
13
 
14
14
  The package exposes two supported entry points:
@@ -5,7 +5,7 @@
5
5
  ## Install
6
6
 
7
7
  ```bash
8
- npm install @pulse-compute/runtime@1.0.0-beta.2
8
+ npm install @pulse-compute/runtime@1.0.0-beta.3
9
9
  ```
10
10
 
11
11
  A project created by `pulse init` depends on the public
@@ -1,7 +1,7 @@
1
1
  # `@pulse-compute/s3`
2
2
 
3
3
  S3 provides bounded exact-key `head`, `getText` and `putText` effects. It is a
4
- supported extension in the synchronized `1.0.0-beta.2` candidate. Candidate
4
+ supported extension in the synchronized `1.0.0-beta.3` candidate. Candidate
5
5
  preparation does not assert that the package has been published to npm. Consume
6
6
  the exact compatible S3, Pulse, CLI and provider tarballs from one release pack.
7
7
 
@@ -1,6 +1,6 @@
1
1
  # Beta scope
2
2
 
3
- Pulse `1.0.0-beta.2` is a Beta of one provider-neutral application contract
3
+ Pulse `1.0.0-beta.3` is a Beta of one provider-neutral application contract
4
4
  with explicit Native and JavaScript execution targets. The intended 1.0
5
5
  surface is present, but deliberate corrections may still occur before the
6
6
  stable `1.0.0` release.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": "pulse.cli-command-spec.v5",
3
- "cliVersion": "1.0.0-beta.2",
3
+ "cliVersion": "1.0.0-beta.3",
4
4
  "completionShells": [
5
5
  "bash",
6
6
  "zsh",
@@ -2,7 +2,7 @@
2
2
 
3
3
  <!-- Generated by wasm/scripts/sync-reference-docs.cjs. Edit the source catalog, not this file. -->
4
4
 
5
- The `pulse` CLI in `@pulse-compute/cli@1.0.0-beta.2` is the supported project workflow. One command specification generates this page, installed help, and the shipped Bash, Zsh, and Fish completion scripts, so a public command or option cannot drift between those surfaces.
5
+ The `pulse` CLI in `@pulse-compute/cli@1.0.0-beta.3` is the supported project workflow. One command specification generates this page, installed help, and the shipped Bash, Zsh, and Fish completion scripts, so a public command or option cannot drift between those surfaces.
6
6
 
7
7
  ## Meta invocations
8
8
 
@@ -86,7 +86,7 @@ separate ordinary-lifecycle and Fastly Native integration boundaries.
86
86
  ## JWT and crypto Beta packages
87
87
 
88
88
  This table records the sealed Phase D and E behavior of the synchronized
89
- `1.0.0-beta.2` JWT/crypto packages. Validation does not itself authorize npm
89
+ `1.0.0-beta.3` JWT/crypto packages. Validation does not itself authorize npm
90
90
  publication.
91
91
 
92
92
  | Candidate capability | Node JS | Fastly JS | Node Native | Fastly Native | Notes |
@@ -2,11 +2,11 @@
2
2
 
3
3
  <!-- Generated by wasm/scripts/sync-reference-docs.cjs. Edit the source catalog, not this file. -->
4
4
 
5
- Pulse 1.0.0-beta.2 treats the 114 codes on this page as the stable public CLI diagnostic catalog. Code, category, summary, remediation intent, exit class, and anchor are generated from the same source used by the CLI. Human wording may improve compatibly.
5
+ Pulse 1.0.0-beta.3 treats the 114 codes on this page as the stable public CLI diagnostic catalog. Code, category, summary, remediation intent, exit class, and anchor are generated from the same source used by the CLI. Human wording may improve compatibly.
6
6
 
7
7
  Every catalogued failure links to a versioned installed artifact under:
8
8
 
9
- `https://pulsecompute.io/v1.0.0-beta.2/reference/diagnostics/`
9
+ `https://pulsecompute.io/v1.0.0-beta.3/reference/diagnostics/`
10
10
 
11
11
  Uncatalogued/internal or forward-compatible codes link to that reference root instead of inventing a nonexistent anchor. Internal `PULSEWASM_*` proof/compiler tokens are not part of this public catalog.
12
12
 
@@ -22,7 +22,7 @@ A Native eligibility diagnostic never authorizes automatic JavaScript fallback.
22
22
  ```json
23
23
  {
24
24
  "status": "error",
25
- "version": "1.0.0-beta.2",
25
+ "version": "1.0.0-beta.3",
26
26
  "error": {
27
27
  "name": "PulseProjectError",
28
28
  "code": "PULSE_BUILD_OUT_UNSAFE",
@@ -35,7 +35,7 @@ A Native eligibility diagnostic never authorizes automatic JavaScript fallback.
35
35
  ],
36
36
  "stability": "preview-stable",
37
37
  "scope": "public",
38
- "docs": "https://pulsecompute.io/v1.0.0-beta.2/reference/diagnostics/#pulse-build-out-unsafe"
38
+ "docs": "https://pulsecompute.io/v1.0.0-beta.3/reference/diagnostics/#pulse-build-out-unsafe"
39
39
  }
40
40
  }
41
41
  ```
@@ -89,7 +89,7 @@ pulse test examples/02-request-schema --case invalid-user --json
89
89
  "expectedError": {
90
90
  "code": "PULSE_SCHEMA_DECODE",
91
91
  "category": "request",
92
- "docs": "https://pulsecompute.io/v1.0.0-beta.2/reference/diagnostics/#pulse-schema-decode"
92
+ "docs": "https://pulsecompute.io/v1.0.0-beta.3/reference/diagnostics/#pulse-schema-decode"
93
93
  }
94
94
  }
95
95
  ]