@pulse-compute/cli 1.0.0-beta.1 → 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 (76) hide show
  1. package/API.md +37 -4
  2. package/CHANGELOG.md +30 -0
  3. package/README.md +4 -3
  4. package/cli-spec.json +1 -1
  5. package/docs/README.md +1 -1
  6. package/docs/architecture/current-contracts.md +108 -7
  7. package/docs/concepts/compilation-and-lowering.md +1 -1
  8. package/docs/concepts/contracts-and-providers.md +2 -2
  9. package/docs/concepts/effects-and-continuations.md +57 -0
  10. package/docs/concepts/package-owned-lowering.md +1 -1
  11. package/docs/concepts/targets-and-hosts.md +10 -2
  12. package/docs/contributing/adding-core-provider.md +1 -1
  13. package/docs/contributing/adding-first-party-lowerer.md +1 -1
  14. package/docs/contributing/package-lowerer-contract.md +2 -2
  15. package/docs/guides/migrating-from-express.md +3 -3
  16. package/docs/guides/routing.md +19 -1
  17. package/docs/maintainers/documentation-deployment.md +4 -4
  18. package/docs/maintainers/documentation-versioning.md +1 -1
  19. package/docs/maintainers/maintainer-charter.md +17 -1
  20. package/docs/maintainers/maintenance-policy.json +34 -3
  21. package/docs/maintainers/maintenance-policy.md +3 -3
  22. package/docs/maintainers/npm-publishing.md +34 -6
  23. package/docs/maintainers/plugin-readiness.json +1 -1
  24. package/docs/maintainers/plugin-readiness.md +1 -1
  25. package/docs/maintainers/release-acceptance.md +51 -8
  26. package/docs/maintainers/release-manifest.md +23 -22
  27. package/docs/maintainers/scope-policy.md +13 -1
  28. package/docs/maintainers/testing.md +47 -1
  29. package/docs/packages/README.md +25 -24
  30. package/docs/packages/assets.md +1 -1
  31. package/docs/packages/crypto.md +8 -1
  32. package/docs/packages/entities.md +1 -1
  33. package/docs/packages/grip.md +1 -1
  34. package/docs/packages/implementation-packages.md +10 -1
  35. package/docs/packages/jwt.md +1 -1
  36. package/docs/packages/provider-fastly.md +29 -3
  37. package/docs/packages/pulse.md +1 -1
  38. package/docs/packages/runtime.md +10 -1
  39. package/docs/packages/s3.md +101 -0
  40. package/docs/preview-scope.md +2 -2
  41. package/docs/reference/cli-spec.json +1 -1
  42. package/docs/reference/cli.md +1 -1
  43. package/docs/reference/compatibility-matrix.md +2 -2
  44. package/docs/reference/diagnostics.md +5 -5
  45. package/docs/reference/documentation-versions.json +19 -3
  46. package/docs/reference/handler-authoring.md +1 -1
  47. package/docs/reference/project-config.md +33 -5
  48. package/docs/reference/project-config.schema.json +70 -7
  49. package/docs/reference/release-manifest.json +37 -23
  50. package/documentation-site.json +8 -1
  51. package/documentation-versions.json +19 -3
  52. package/examples/01-hello-json/README.md +1 -1
  53. package/examples/01-hello-json/package.json +2 -2
  54. package/examples/02-request-schema/README.md +1 -1
  55. package/examples/02-request-schema/package.json +2 -2
  56. package/examples/03-fetch-composition/README.md +1 -1
  57. package/examples/03-fetch-composition/package.json +2 -2
  58. package/examples/05-fastly-capabilities/README.md +2 -2
  59. package/examples/05-fastly-capabilities/package.json +4 -4
  60. package/examples/07-opaque-proxy/README.md +2 -2
  61. package/examples/07-opaque-proxy/package.json +3 -3
  62. package/examples/09-router-lowering/README.md +1 -1
  63. package/examples/09-router-lowering/package.json +3 -3
  64. package/examples/10-entities-tools/package.json +3 -3
  65. package/examples/11-events/README.md +1 -1
  66. package/examples/11-events/package.json +2 -2
  67. package/examples/12-mcp-proxy/README.md +1 -1
  68. package/examples/12-mcp-proxy/package.json +2 -2
  69. package/examples/13-jwt-es256/README.md +1 -1
  70. package/examples/13-jwt-es256/package.json +3 -3
  71. package/package.json +7 -7
  72. package/project-config.schema.json +70 -7
  73. package/release-manifest.json +37 -23
  74. package/src/documentation.js +1 -1
  75. package/src/project-config-schema.js +3 -3
  76. package/src/project-execution.js +64 -30
@@ -29,6 +29,13 @@ The human maintainer owns decisions that change what Pulse is:
29
29
 
30
30
  A direct task can authorize implementation, but approval must remain visible in the pull request when a protected boundary changes.
31
31
 
32
+ Once that direction is supplied, Codex may complete the necessary implementation,
33
+ tests, canonical documentation, regeneration and PR preparation within its scope.
34
+ It records the authorization rather than requesting it again. A protected-path
35
+ touch requires declaration and review; a semantic change beyond the authorized
36
+ scope requires a new decision. Implementation direction does not authorize merge,
37
+ publication, deployment or self-approval.
38
+
32
39
  ### Codex resident maintainer
33
40
 
34
41
  Codex provides first-line maintenance capacity:
@@ -48,12 +55,21 @@ Codex does not receive standing authority to expand scope. It does not merge or
48
55
 
49
56
  ### Preserve host sovereignty
50
57
 
51
- The guest receives bounded inputs and declared capabilities. Consequential authority remains with the host and is represented through explicit effects or bindings. A maintenance change must not introduce ambient filesystem, network, secret, store, provider SDK, or process authority into canonical user code.
58
+ The Native guest receives bounded inputs and declared capabilities. Pulse host
59
+ authority is represented through explicit effects or bindings. A maintenance
60
+ change must not introduce ambient filesystem, network, secret, store, provider
61
+ SDK or process authority into the Native guest or the Pulse handler context.
52
62
 
53
63
  ### Compile only what can be proven
54
64
 
55
65
  Unsupported behavior fails visibly. A convenience change must not add a hidden JavaScript fallback, reinterpret a rejected program under another runtime, or make provider behavior diverge silently.
56
66
 
67
+ Explicit JavaScript targets retain the original source graph, resolved static
68
+ imports and ordinary awaited calls while preserving canonical application and
69
+ Pulse effect validation. Inspection describes recognized Pulse effects; it does
70
+ not prove dependency internals, grant lowerer trust or imply sandbox enforcement
71
+ for ordinary JavaScript. Native eligibility remains independent.
72
+
57
73
  ### Separate evidence from promises
58
74
 
59
75
  A reproduction, benchmark, experiment, or external use case can be valuable without becoming a roadmap item. Incoming evidence is recorded first. A compatibility or support promise requires an explicit scope decision.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": "pulse.maintenance-policy.v2",
3
- "policyVersion": 6,
4
- "releaseVersion": "1.0.0-beta.1",
5
- "reviewedAt": "2026-08-01",
3
+ "policyVersion": 7,
4
+ "releaseVersion": "1.0.0-beta.3",
5
+ "reviewedAt": "2026-09-13",
6
6
  "maintainerModel": {
7
7
  "residentMaintainer": "Codex",
8
8
  "architectureAuthority": "human",
@@ -435,6 +435,37 @@
435
435
  ],
436
436
  "risk": "critical"
437
437
  },
438
+ {
439
+ "id": "target-compilation",
440
+ "patterns": [
441
+ "wasm/packages/cli/src/project-execution.js",
442
+ "wasm/packages/compiler/src/canonical-api-compiler.js",
443
+ "wasm/packages/compiler/src/canonical-project-compiler.js",
444
+ "wasm/packages/compiler/src/canonical-native-plan.js",
445
+ "wasm/packages/compiler/src/javascript-application-plan.js",
446
+ "wasm/packages/compiler/src/project/router-module-linker.js",
447
+ "wasm/packages/compiler/src/spine/async-surface-normalizer.js",
448
+ "wasm/packages/compiler/src/spine/plain-handler-frontend.js",
449
+ "wasm/packages/compiler/src/spine/router-handler-frontend.js"
450
+ ],
451
+ "areas": [
452
+ "compiler",
453
+ "cli"
454
+ ],
455
+ "boundaries": [
456
+ "runtime-target-fluidity"
457
+ ],
458
+ "checks": [
459
+ "documentation",
460
+ "unit",
461
+ "native",
462
+ "javascript",
463
+ "conformance",
464
+ "cli",
465
+ "build"
466
+ ],
467
+ "risk": "high"
468
+ },
438
469
  {
439
470
  "id": "configuration",
440
471
  "patterns": [
@@ -5,9 +5,9 @@
5
5
  Pulse uses a machine-readable maintenance policy so repository automation and Codex receive the same scope boundaries. The policy is advisory about product direction and mandatory about process: Codex may analyze, review, and prepare bounded patches, while a human retains architecture, merge, repository-setting, and release authority.
6
6
 
7
7
  - **Policy schema:** `pulse.maintenance-policy.v2`
8
- - **Policy version:** `6`
9
- - **Release:** `1.0.0-beta.1`
10
- - **Reviewed:** `2026-08-01`
8
+ - **Policy version:** `7`
9
+ - **Release:** `1.0.0-beta.3`
10
+ - **Reviewed:** `2026-09-13`
11
11
  - **Resident maintainer:** Codex
12
12
  - **Merge authority:** human-only
13
13
  - **Release 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.1 \
48
- -f release_tag=v1.0.0-beta.1 \
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.1",
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.1 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.
@@ -7,8 +7,8 @@ pulse-doc-meta:end -->
7
7
 
8
8
  # Release packages and clean-consumer acceptance
9
9
 
10
- The current Beta candidate contains eighteen publishable packages
11
- synchronized at version `1.0.0-beta.1`. The product-facing packages are:
10
+ The current Beta candidate contains nineteen publishable packages
11
+ synchronized at version `1.0.0-beta.3`. The product-facing packages are:
12
12
 
13
13
  ```text
14
14
  @pulse-compute/pulse
@@ -20,13 +20,56 @@ synchronized at version `1.0.0-beta.1`. The product-facing packages are:
20
20
  @pulse-compute/crypto
21
21
  @pulse-compute/jwt
22
22
  @pulse-compute/entities
23
+ @pulse-compute/s3
23
24
  ```
24
25
 
25
26
  The CLI and providers depend on additional `@pulse-compute/wasm-*`
26
27
  implementation packages. Those packages are installable transitive
27
28
  dependencies, not the handler authoring surface. The generated
28
29
  [package support policy](../packages/README.md) defines the tier, audience,
29
- direct-install guidance, and supported entry points for all 18 artifacts.
30
+ direct-install guidance, and supported entry points for all 19 artifacts.
31
+
32
+ ## S3 candidate acceptance
33
+
34
+ The S3 package root supports bounded `head`, `getText` and `putText` on Node
35
+ Native, Node JavaScript and Fastly Native. The clean-consumer gate repeats the
36
+ same read and write failure corpus using installed package exports, packaged
37
+ lowering and provider builds. It type-checks the public declarations and
38
+ compares every installed Pulse package file against its exact tarball both
39
+ before and after execution. No workspace links or installed dependency edits
40
+ are permitted. The report `s3-packed-acceptance.json` includes all tarball
41
+ SHA-256 identities and target execution counts in the acceptance task directory.
42
+
43
+ Fastly's host ABI fixture supplies the platform to compiled Wasm; no workspace
44
+ product implementation is loaded by the packed consumer. Fastly JavaScript S3
45
+ remains ineligible for its documented raw-header limitation. Local acceptance
46
+ does not claim live Object Storage behavior. That separate evidence follows
47
+ infrastructure setup (T2); package promotion does not publish npm artifacts or
48
+ change the existing registry bootstrap and release approval gates.
49
+
50
+ ## Conditional KV acceptance
51
+
52
+ Conditional KV has additional required acceptance beyond the aggregate release
53
+ profile and the generic Fastly Compute reality task:
54
+
55
+ - `node wasm/scripts/run-wasm-tests.cjs --task kv-conditional-acceptance --no-report`
56
+ installs exact candidate tarballs and executes the Native consumer through
57
+ Fastly CLI/Viceroy. An unavailable engine or semantic failure fails this gate.
58
+ - Full deployed Pulse cross-location acceptance uses the reviewed isolated
59
+ environment and probe driver described in the
60
+ [K4 acceptance record](https://github.com/pulse-compute/pulse/blob/latest/wasm/test/kv/K4.md).
61
+
62
+ The retained Viceroy 0.21.0 run fails missing-key CAS. The standalone deployed
63
+ Rust SDK probe confirms rejection for never-created and deleted keys in its
64
+ tested cases, but does not satisfy either required Pulse acceptance gate. Full
65
+ Pulse deployed cross-location evidence remains pending the isolated environment.
66
+
67
+ Report these gates separately even when `release:seal -- --require-fastly`
68
+ passes: that command does not include the dedicated K4 acceptance task or its
69
+ deployed runner. Preserve the local failure and pending deployed requirement as
70
+ release-readiness blockers. An explicit human-directed acceptance-policy change
71
+ must specify any replacement evidence and update the owning gates and current
72
+ contracts; a guidance update alone neither waives a gate nor changes CAS behavior.
30
73
 
31
74
  ## Event experimental candidate
32
75
 
@@ -79,7 +122,7 @@ From the source workspace:
79
122
  pnpm release:pack
80
123
  ```
81
124
 
82
- This builds the workspace and writes eighteen package tarballs plus `pulse-release-manifest.json` under `.pulse-release/`. It prepares release artifacts; it does not publish them to a registry.
125
+ This builds the workspace and writes nineteen package tarballs plus `pulse-release-manifest.json` under `.pulse-release/`. It prepares release artifacts; it does not publish them to a registry.
83
126
 
84
127
  Packing fails when:
85
128
 
@@ -143,7 +186,7 @@ as byte-reproducible. The candidate report distinguishes that toolchain-owned
143
186
  property from Pulse-owned deterministic input and metadata. It also records zero
144
187
  provider-reality runs, zero deployments, and zero publications.
145
188
 
146
- The task owns the eighteen publishable Pulse packages, not the packages in the
189
+ The task owns the nineteen publishable Pulse packages, not the packages in the
147
190
  development installation. It installs every exact Pulse tarball into clean
148
191
  consumer projects and verifies the installed name, version, and real path. An
149
192
  ephemeral server bound to `127.0.0.1` is the fail-closed registry for the
@@ -216,7 +259,7 @@ Before the first trusted publication, every package name must exist and authoriz
216
259
 
217
260
  ## Publication hold points
218
261
 
219
- Before publication, confirm the repository, final documentation host/base path, package policy, and issue-tracker values centralized in `release/pulse-release-manifest.json`. Pulse is licensed under Apache-2.0: the release gate requires the exact root `LICENSE`, SPDX metadata in the workspace and all eighteen publishable packages, and the same license text in every npm tarball. A dependency-license audit and its dispositions remain separate release evidence.
262
+ Before publication, confirm the repository, final documentation host/base path, package policy, and issue-tracker values centralized in `release/pulse-release-manifest.json`. Pulse is licensed under Apache-2.0: the release gate requires the exact root `LICENSE`, SPDX metadata in the workspace and all nineteen publishable packages, and the same license text in every npm tarball. A dependency-license audit and its dispositions remain separate release evidence.
220
263
 
221
264
  A human release authority must approve `npm-publish`. Codex may diagnose or prepare a patch but cannot publish, approve the environment, bootstrap package names, or mutate dist-tags.
222
265
 
@@ -228,7 +271,7 @@ The release owns a versioned hosted-documentation gate:
228
271
  pnpm docs:site:check
229
272
  ```
230
273
 
231
- The check builds the exact `v1.0.0-beta.1` 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.
232
275
 
233
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.
234
277
 
@@ -236,7 +279,7 @@ Production delivery uses the manually dispatched **Documentation deployment** wo
236
279
 
237
280
  ```text
238
281
  build and seal
239
- → upload/verify v1.0.0-beta.1 and its receipt immutably
282
+ → upload/verify v1.0.0-beta.3 and its receipt immutably
240
283
  → verify all matching npm packages and configured dist-tags
241
284
  → promote root and latest
242
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.1 — Beta
10
- - **Version:** `1.0.0-beta.1`
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,9 +16,9 @@
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.1/`
19
+ - **Exact documentation:** `https://pulsecompute.io/v1.0.0-beta.3/`
20
20
  - **Runtime targets:** 3
21
- - **Packages:** 18
21
+ - **Packages:** 19
22
22
 
23
23
  The installed CLI ships the same machine-readable data as
24
24
  `release-manifest.json`. The atomic snapshot transaction aligns
@@ -66,23 +66,24 @@ scoped package name.
66
66
 
67
67
  | Package | Support tier | Canonical guide | Direct installation |
68
68
  |---|---|---|---|
69
- | `@pulse-compute/runtime` | Canonical application surface | [Guide](../packages/runtime.md) | Yes. Install it in every Pulse application. |
70
- | `@pulse-compute/pulse` | Canonical application surface | [Guide](../packages/pulse.md) | Yes. Install it in every conventional Pulse project. |
71
- | `@pulse-compute/cli` | Canonical application surface | [Guide](../packages/cli.md) | Yes. Install the package globally or as a project development dependency. |
72
- | `@pulse-compute/provider-fastly` | Supported provider/extension surface | [Guide](../packages/provider-fastly.md) | Yes, for Fastly projects. Node-only projects do not need to import it directly. |
73
- | `@pulse-compute/grip` | Supported provider/extension surface | [Guide](../packages/grip.md) | Yes, only when the application uses GRIP/Fanout behavior. |
74
- | `@pulse-compute/assets` | Supported provider/extension surface | [Guide](../packages/assets.md) | Yes, only when the application uses the assets capability. |
75
- | `@pulse-compute/crypto` | Supported provider/extension surface | [Guide](../packages/crypto.md) | Yes, when an application uses the crypto verification surface directly; JWT applications receive it transitively. |
76
- | `@pulse-compute/jwt` | Supported provider/extension surface | [Guide](../packages/jwt.md) | Yes, when an application verifies JWTs. |
77
- | `@pulse-compute/entities` | Supported provider/extension surface | [Guide](../packages/entities.md) | Yes, when an application declares entity operations. |
78
- | `@pulse-compute/wasm-build-support` | Implementation/transitive surface | [Guide](../packages/implementation-packages.md) | No for application projects; it is installed transitively where required. |
79
- | `@pulse-compute/wasm-compiler` | Implementation/transitive surface | [Guide](../packages/implementation-packages.md) | No for application projects; use the pulse CLI. |
80
- | `@pulse-compute/wasm-guest-link` | Implementation/transitive surface | [Guide](../packages/implementation-packages.md) | No for application projects; it is an internal synchronized compiler dependency. |
81
- | `@pulse-compute/wasm-contracts` | Implementation/transitive surface | [Guide](../packages/implementation-packages.md) | Provider toolchain authors may install it for the versioned bootstrap contract; application projects receive it transitively. |
82
- | `@pulse-compute/wasm-host-runtime` | Implementation/transitive surface | [Guide](../packages/implementation-packages.md) | No for application projects; it is installed transitively. |
83
- | `@pulse-compute/wasm-library-kit` | Implementation/transitive surface | [Guide](../packages/implementation-packages.md) | No for application projects; it is installed transitively. |
84
- | `@pulse-compute/provider-node` | Implementation/transitive surface | [Guide](../packages/implementation-packages.md) | No for application projects; select provider: node through the CLI. |
85
- | `@pulse-compute/wasm-runtime-core-as` | Implementation/transitive surface | [Guide](../packages/implementation-packages.md) | No for application projects; it is installed transitively. |
86
- | `@pulse-compute/wasm-schema-json` | Implementation/transitive surface | [Guide](../packages/implementation-packages.md) | No for application projects; declare schemas in the selected .pulse/config.ts profile. |
69
+ | [`@pulse-compute/runtime`](https://www.npmjs.com/package/@pulse-compute/runtime) | Canonical application surface | [Guide](../packages/runtime.md) | Yes. Install it in every Pulse application. |
70
+ | [`@pulse-compute/pulse`](https://www.npmjs.com/package/@pulse-compute/pulse) | Canonical application surface | [Guide](../packages/pulse.md) | Yes. Install it in every conventional Pulse project. |
71
+ | [`@pulse-compute/cli`](https://www.npmjs.com/package/@pulse-compute/cli) | Canonical application surface | [Guide](../packages/cli.md) | Yes. Install the package globally or as a project development dependency. |
72
+ | [`@pulse-compute/provider-fastly`](https://www.npmjs.com/package/@pulse-compute/provider-fastly) | Supported provider/extension surface | [Guide](../packages/provider-fastly.md) | Yes, for Fastly projects. Node-only projects do not need to import it directly. |
73
+ | [`@pulse-compute/grip`](https://www.npmjs.com/package/@pulse-compute/grip) | Supported provider/extension surface | [Guide](../packages/grip.md) | Yes, only when the application uses GRIP/Fanout behavior. |
74
+ | [`@pulse-compute/assets`](https://www.npmjs.com/package/@pulse-compute/assets) | Supported provider/extension surface | [Guide](../packages/assets.md) | Yes, only when the application uses the assets capability. |
75
+ | [`@pulse-compute/crypto`](https://www.npmjs.com/package/@pulse-compute/crypto) | Supported provider/extension surface | [Guide](../packages/crypto.md) | Yes, when an application uses the crypto verification surface directly; JWT applications receive it transitively. |
76
+ | [`@pulse-compute/jwt`](https://www.npmjs.com/package/@pulse-compute/jwt) | Supported provider/extension surface | [Guide](../packages/jwt.md) | Yes, when an application verifies JWTs. |
77
+ | [`@pulse-compute/entities`](https://www.npmjs.com/package/@pulse-compute/entities) | Supported provider/extension surface | [Guide](../packages/entities.md) | Yes, when an application declares entity operations. |
78
+ | [`@pulse-compute/s3`](https://www.npmjs.com/package/@pulse-compute/s3) | Supported provider/extension surface | [Guide](../packages/s3.md) | Yes, when an application uses S3 object operations. |
79
+ | [`@pulse-compute/wasm-build-support`](https://www.npmjs.com/package/@pulse-compute/wasm-build-support) | Implementation/transitive surface | [Guide](../packages/implementation-packages.md) | No for application projects; it is installed transitively where required. |
80
+ | [`@pulse-compute/wasm-compiler`](https://www.npmjs.com/package/@pulse-compute/wasm-compiler) | Implementation/transitive surface | [Guide](../packages/implementation-packages.md) | No for application projects; use the pulse CLI. |
81
+ | [`@pulse-compute/wasm-guest-link`](https://www.npmjs.com/package/@pulse-compute/wasm-guest-link) | Implementation/transitive surface | [Guide](../packages/implementation-packages.md) | No for application projects; it is an internal synchronized compiler dependency. |
82
+ | [`@pulse-compute/wasm-contracts`](https://www.npmjs.com/package/@pulse-compute/wasm-contracts) | Implementation/transitive surface | [Guide](../packages/implementation-packages.md) | Provider toolchain authors may install it for the versioned bootstrap contract; application projects receive it transitively. |
83
+ | [`@pulse-compute/wasm-host-runtime`](https://www.npmjs.com/package/@pulse-compute/wasm-host-runtime) | Implementation/transitive surface | [Guide](../packages/implementation-packages.md) | No for application projects; it is installed transitively. |
84
+ | [`@pulse-compute/wasm-library-kit`](https://www.npmjs.com/package/@pulse-compute/wasm-library-kit) | Implementation/transitive surface | [Guide](../packages/implementation-packages.md) | No for application projects; it is installed transitively. |
85
+ | [`@pulse-compute/provider-node`](https://www.npmjs.com/package/@pulse-compute/provider-node) | Implementation/transitive surface | [Guide](../packages/implementation-packages.md) | No for application projects; select provider: node through the CLI. |
86
+ | [`@pulse-compute/wasm-runtime-core-as`](https://www.npmjs.com/package/@pulse-compute/wasm-runtime-core-as) | Implementation/transitive surface | [Guide](../packages/implementation-packages.md) | No for application projects; it is installed transitively. |
87
+ | [`@pulse-compute/wasm-schema-json`](https://www.npmjs.com/package/@pulse-compute/wasm-schema-json) | Implementation/transitive surface | [Guide](../packages/implementation-packages.md) | No for application projects; declare schemas in the selected .pulse/config.ts profile. |
87
88
 
88
89
  A package export that is absent from its manifest entry is not promoted to a supported application-author API merely because Node or npm can resolve it.
@@ -23,6 +23,12 @@ Every issue and pull request begins with one change class:
23
23
 
24
24
  The first four classes can normally move to implementation and human review. The last three require a separate human decision before implementation is treated as approved direction.
25
25
 
26
+ A direct human task can supply that decision. Record its scope in the PR and
27
+ continue the necessary implementation, tests, canonical documentation,
28
+ regeneration and PR preparation. Do not ask again for the same direction.
29
+ New semantics or authority outside that scope still require a new decision;
30
+ implementation approval does not authorize merge, publication or deployment.
31
+
26
32
  ## Declare affected boundaries
27
33
 
28
34
  Path rules conservatively infer protected boundaries, including the public API, effects and capabilities, continuations, lowerer trust, provider registry, configuration contract, compatibility surface, package publication, maintenance control plane, and release authority.
@@ -44,6 +50,12 @@ Human decision: not-required
44
50
 
45
51
  Use comma-separated boundary IDs, or `none`. Use `required` when scope, architecture, or release authority needs an explicit decision.
46
52
 
53
+ `Human decision: required` identifies the decision authority even when the human
54
+ has already supplied direction. Keep the field accurate and describe the supplied
55
+ direction and any outstanding question in prose. The classifier does not verify
56
+ or grant approval. A protected-path match alone does not require this field to be
57
+ `required` for a defect that preserves the existing contract.
58
+
47
59
  The `Maintainer scope / scope` check compares the declaration with changed paths. It has three outcomes:
48
60
 
49
61
  - **pass** — the declaration is present and consistent with the conservative path inference;
@@ -72,7 +84,7 @@ Run the classifier locally with a pull-request body saved to a file:
72
84
 
73
85
  ```bash
74
86
  node scripts/maintainer-scope.cjs \
75
- --base origin/main \
87
+ --base <actual-pr-base-ref> \
76
88
  --head HEAD \
77
89
  --declaration-file /tmp/pulse-pr-body.md \
78
90
  --check
@@ -39,6 +39,11 @@ node wasm/scripts/run-wasm-tests.cjs --task schema-codecs
39
39
  node wasm/scripts/run-wasm-tests.cjs --list
40
40
  ```
41
41
 
42
+ `wasm/test/suite/registry.cjs` owns the exact task and profile IDs. Agent
43
+ instructions, this guide, release acceptance commands and maintenance-policy
44
+ commands are checked against it by `npm run maintainer:check`. Use explicit
45
+ runner commands for named selections so stale references are detectable.
46
+
42
47
  The event mechanism has focused provider-neutral tasks, plus one project-level
43
48
  workflow task included in the `cli` and `release` profiles:
44
49
 
@@ -232,7 +237,7 @@ node wasm/scripts/run-wasm-tests.cjs --task deployment-candidates --no-report
232
237
 
233
238
  ## JWT and crypto proof seals
234
239
 
235
- The `1.0.0-beta.1` 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,
236
241
  which replays the
237
242
  configuration, JavaScript runtime, Native guest-source, shared cross-target
238
243
  corpus, and real Fastly Compute proofs. First record the one phase-boundary
@@ -279,6 +284,47 @@ anything.
279
284
 
280
285
  The runner writes `wasm/.test-results/last-run.json` atomically after every task and stores one log per task. When a task fails, task-owned `*.log` files such as npm debug logs are copied into that run's durable diagnostics directory before the temporary root is removed. On timeout it captures a Node diagnostic report, terminates the entire task process group, and reports any surviving descendants. The directory is ephemeral and should contain only evidence produced from the current tree.
281
286
 
287
+ Before reporting a run as passed, verify process exit, terminal report status,
288
+ the requested/selected task set, completed task count and each task result. A
289
+ zero exit with a missing or incomplete expected report is unresolved. When
290
+ `--no-report` is used, retain the terminal task results and aggregate summary;
291
+ exit status alone does not establish coverage.
292
+
293
+ Record the source revision and working-tree state alongside the toolchain,
294
+ command and artifact identities. The runner's Git commit identity alone does not
295
+ identify uncommitted changes. Label those runs as development evidence and retain
296
+ the tested diff or tree digest. Preserve failures when retrying, identify why the
297
+ rerun was bounded, and report the retry separately. Focused, split or resumed
298
+ development runs do not substitute for the complete clean-candidate release
299
+ replay or permit combining reports from different source trees.
300
+
301
+ On an interruption or handoff, record the branch, base/head, uncommitted work,
302
+ report/artifact paths, completed and running checks, blockers and the next action.
303
+ A task handoff must distinguish implemented, validated, pushed and merged work.
304
+
305
+ ## Provider evidence boundaries
306
+
307
+ | Evidence | Establishes | Does not establish |
308
+ | --- | --- | --- |
309
+ | Injected host or ABI fixture | Behavior under the modeled host outcomes | Real engine or deployed service behavior |
310
+ | Fastly CLI/Viceroy execution | The identified artifact ran on the identified local engine | Deployed Fastly behavior |
311
+ | Standalone live SDK probe | The tested service cases through that probe | Pulse package acceptance or untested concurrent/cross-location behavior |
312
+ | Deployed Pulse acceptance | The identified Pulse artifact passed the bounded deployed corpus | Exhaustive consistency or guarantees outside that corpus |
313
+
314
+ Report tool versions, artifact identity, execution/deployment identity where
315
+ applicable, corpus scope and pass/fail/inconclusive status separately. Executing
316
+ a real engine is not itself a passing semantic result. A caller-supplied Wasm
317
+ hash is not deployed binary attestation.
318
+
319
+ For conditional KV, the Fastly JavaScript SDK is incomplete capability mapping,
320
+ not semantic canon or an acceptance gate for other targets. Keep provider docs,
321
+ wire observations and executable behavior distinguishable when they disagree.
322
+ Retain the discrepancy and the unchanged Pulse assertion; do not compensate with
323
+ hidden retries, non-atomic prechecks or weaker expected results. Substituting one
324
+ kind of evidence for a required gate needs an explicit human-directed acceptance
325
+ policy change. See [conditional KV acceptance](./release-acceptance.md#conditional-kv-acceptance)
326
+ for the currently unresolved gates.
327
+
282
328
  ## Redundancy policy
283
329
 
284
330
  - Add a task once to `wasm/test/suite/registry.cjs`; do not add a package script per test.
@@ -2,28 +2,29 @@
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.1 publishes one synchronized 18-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
-
7
- | Package | Support tier | Install directly | Release promise |
8
- |---|---|---:|---|
9
- | [`@pulse-compute/runtime`](./runtime.md) | Canonical application surface | Yes | Supported application authoring and execution contract. |
10
- | [`@pulse-compute/pulse`](./pulse.md) | Canonical application surface | Yes | Supported conventional application, project-configuration, and schema-authoring contract. |
11
- | [`@pulse-compute/cli`](./cli.md) | Canonical application surface | Yes | Supported Beta workflow and project-configuration contract. |
12
- | [`@pulse-compute/provider-fastly`](./provider-fastly.md) | Supported provider/extension surface | Yes | The listed entry points are supported for the Beta; all other exported subpaths are implementation-only. |
13
- | [`@pulse-compute/grip`](./grip.md) | Supported provider/extension surface | Yes | The package root has bounded JavaScript and Native HTTP-framing realization plus configured Node/Fastly broadcast; /pulsewasm remains compatibility-only. |
14
- | [`@pulse-compute/assets`](./assets.md) | Supported provider/extension surface | Yes | The package root is the supported JavaScript API and canonical Native authoring surface; /pulsewasm remains a compatibility subpath, while manifest/compiler subpaths are toolchain integration. |
15
- | [`@pulse-compute/crypto`](./crypto.md) | Supported provider/extension surface | Yes | The package root is the supported bounded verification contract; realization and Native integration subpaths remain toolchain-only. |
16
- | [`@pulse-compute/jwt`](./jwt.md) | Supported provider/extension surface | Yes | The package root is the supported provider-neutral verification contract; provider and compiler integration subpaths are not application APIs. |
17
- | [`@pulse-compute/entities`](./entities.md) | Supported provider/extension surface | Yes | The package root and first-party JSON-RPC adapter are supported Beta contracts; compiler integration subpaths remain toolchain-only. |
18
- | [`@pulse-compute/wasm-build-support`](./implementation-packages.md) | Implementation/transitive surface | No | Internal release-set interface; exported modules may change with compiler implementation needs. |
19
- | [`@pulse-compute/wasm-compiler`](./implementation-packages.md) | Implementation/transitive surface | No | Internal compiler interface; no application-author compatibility guarantee. |
20
- | [`@pulse-compute/wasm-guest-link`](./implementation-packages.md) | Implementation/transitive surface | No | Internal first-party prebuilt guest-link interface synchronized with the compiler; no application-author or third-party guest compatibility guarantee. |
21
- | [`@pulse-compute/wasm-contracts`](./implementation-packages.md) | Implementation/transitive surface | No | The provider toolchain contract is versioned and supported for the Beta; other protocol and proof interfaces remain internal. |
22
- | [`@pulse-compute/wasm-host-runtime`](./implementation-packages.md) | Implementation/transitive surface | No | Internal compiler/runtime interface synchronized with this release set. |
23
- | [`@pulse-compute/wasm-library-kit`](./implementation-packages.md) | Implementation/transitive surface | No | Internal package-lowering interface synchronized with this release set. |
24
- | [`@pulse-compute/provider-node`](./implementation-packages.md) | Implementation/transitive surface | No | The listed built-in toolchain entry is synchronized with the Beta bootstrap contract; other canonical Node provider interfaces remain internal. |
25
- | [`@pulse-compute/wasm-runtime-core-as`](./implementation-packages.md) | Implementation/transitive surface | No | Internal code-generation interface synchronized with this release set. |
26
- | [`@pulse-compute/wasm-schema-json`](./implementation-packages.md) | Implementation/transitive surface | No | Internal schema compiler interface synchronized with this release set. |
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
+
7
+ | Package on npm | Guide | Support tier | Install directly | Release promise |
8
+ |---|---|---|---:|---|
9
+ | [`@pulse-compute/runtime`](https://www.npmjs.com/package/@pulse-compute/runtime) | [Guide](./runtime.md) | Canonical application surface | Yes | Supported application authoring and execution contract. |
10
+ | [`@pulse-compute/pulse`](https://www.npmjs.com/package/@pulse-compute/pulse) | [Guide](./pulse.md) | Canonical application surface | Yes | Supported conventional application, project-configuration, and schema-authoring contract. |
11
+ | [`@pulse-compute/cli`](https://www.npmjs.com/package/@pulse-compute/cli) | [Guide](./cli.md) | Canonical application surface | Yes | Supported Beta workflow and project-configuration contract. |
12
+ | [`@pulse-compute/provider-fastly`](https://www.npmjs.com/package/@pulse-compute/provider-fastly) | [Guide](./provider-fastly.md) | Supported provider/extension surface | Yes | The listed entry points are supported for the Beta; all other exported subpaths are implementation-only. |
13
+ | [`@pulse-compute/grip`](https://www.npmjs.com/package/@pulse-compute/grip) | [Guide](./grip.md) | Supported provider/extension surface | Yes | The package root has bounded JavaScript and Native HTTP-framing realization plus configured Node/Fastly broadcast; /pulsewasm remains compatibility-only. |
14
+ | [`@pulse-compute/assets`](https://www.npmjs.com/package/@pulse-compute/assets) | [Guide](./assets.md) | Supported provider/extension surface | Yes | The package root is the supported JavaScript API and canonical Native authoring surface; /pulsewasm remains a compatibility subpath, while manifest/compiler subpaths are toolchain integration. |
15
+ | [`@pulse-compute/crypto`](https://www.npmjs.com/package/@pulse-compute/crypto) | [Guide](./crypto.md) | Supported provider/extension surface | Yes | The package root is the supported bounded verification contract; realization and Native integration subpaths remain toolchain-only. |
16
+ | [`@pulse-compute/jwt`](https://www.npmjs.com/package/@pulse-compute/jwt) | [Guide](./jwt.md) | Supported provider/extension surface | Yes | The package root is the supported provider-neutral verification contract; provider and compiler integration subpaths are not application APIs. |
17
+ | [`@pulse-compute/entities`](https://www.npmjs.com/package/@pulse-compute/entities) | [Guide](./entities.md) | Supported provider/extension surface | Yes | The package root and first-party JSON-RPC adapter are supported Beta contracts; compiler integration subpaths remain toolchain-only. |
18
+ | [`@pulse-compute/s3`](https://www.npmjs.com/package/@pulse-compute/s3) | [Guide](./s3.md) | Supported provider/extension surface | Yes | The package root supports head, getText and putText on Node Native, Node JavaScript and Fastly Native. Fastly JavaScript is ineligible. Provider and lowering subpaths are toolchain-only; live origin acceptance is separate. |
19
+ | [`@pulse-compute/wasm-build-support`](https://www.npmjs.com/package/@pulse-compute/wasm-build-support) | [Guide](./implementation-packages.md) | Implementation/transitive surface | No | Internal release-set interface; exported modules may change with compiler implementation needs. |
20
+ | [`@pulse-compute/wasm-compiler`](https://www.npmjs.com/package/@pulse-compute/wasm-compiler) | [Guide](./implementation-packages.md) | Implementation/transitive surface | No | Internal compiler interface; no application-author compatibility guarantee. |
21
+ | [`@pulse-compute/wasm-guest-link`](https://www.npmjs.com/package/@pulse-compute/wasm-guest-link) | [Guide](./implementation-packages.md) | Implementation/transitive surface | No | Internal first-party prebuilt guest-link interface synchronized with the compiler; no application-author or third-party guest compatibility guarantee. |
22
+ | [`@pulse-compute/wasm-contracts`](https://www.npmjs.com/package/@pulse-compute/wasm-contracts) | [Guide](./implementation-packages.md) | Implementation/transitive surface | No | The provider toolchain contract is versioned and supported for the Beta; other protocol and proof interfaces remain internal. |
23
+ | [`@pulse-compute/wasm-host-runtime`](https://www.npmjs.com/package/@pulse-compute/wasm-host-runtime) | [Guide](./implementation-packages.md) | Implementation/transitive surface | No | Internal compiler/runtime interface synchronized with this release set. |
24
+ | [`@pulse-compute/wasm-library-kit`](https://www.npmjs.com/package/@pulse-compute/wasm-library-kit) | [Guide](./implementation-packages.md) | Implementation/transitive surface | No | Internal package-lowering interface synchronized with this release set. |
25
+ | [`@pulse-compute/provider-node`](https://www.npmjs.com/package/@pulse-compute/provider-node) | [Guide](./implementation-packages.md) | Implementation/transitive surface | No | The listed built-in toolchain entry is synchronized with the Beta bootstrap contract; other canonical Node provider interfaces remain internal. |
26
+ | [`@pulse-compute/wasm-runtime-core-as`](https://www.npmjs.com/package/@pulse-compute/wasm-runtime-core-as) | [Guide](./implementation-packages.md) | Implementation/transitive surface | No | Internal code-generation interface synchronized with this release set. |
27
+ | [`@pulse-compute/wasm-schema-json`](https://www.npmjs.com/package/@pulse-compute/wasm-schema-json) | [Guide](./implementation-packages.md) | Implementation/transitive surface | No | Internal schema compiler interface synchronized with this release set. |
27
28
 
28
29
  ## Tier definitions
29
30
 
@@ -43,9 +44,9 @@ Installable as part of the synchronized release set, without an application-auth
43
44
 
44
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.
45
46
 
46
- ## Extension and provider boundary in 1.0.0-beta.1
47
+ ## Extension and provider boundary in 1.0.0-beta.3
47
48
 
48
- 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.1` 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:
49
50
 
50
51
  - lowerer manifests are accepted only from trusted first-party release packages;
51
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.1
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.1
7
+ npm install @pulse-compute/crypto@1.0.0-beta.3
8
8
  ```
9
9
 
10
10
  ## Verification surface
@@ -58,6 +58,13 @@ realization. Target probing and automatic fallback are prohibited.
58
58
 
59
59
  ## Boundary
60
60
 
61
+ Native capability packages can also select `SHA-256` and `HMAC-SHA256` for
62
+ internal byte output. Their exact `guest-source:pulse-hmac-as` realization uses
63
+ 32-byte output, at most 32 KiB of data and 8 KiB of HMAC key material. Crypto owns
64
+ a reusable, wiped host staging frame. These operations are separate from JWT's
65
+ 32-byte minimum HMAC verification key; the application verification API retains
66
+ its existing limits. JavaScript byte-output realization is not implemented yet.
67
+
61
68
  The package root is the supported application contract. Native integration,
62
69
  guest provenance, and realization records are toolchain-owned surfaces. JWT
63
70
  owns compact-JWS parsing, key selection, and claims semantics; this package
@@ -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.1
7
+ npm install @pulse-compute/entities@1.0.0-beta.3
8
8
  ```
9
9
 
10
10
  ## Declare an entity router