@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.
- package/API.md +37 -4
- package/CHANGELOG.md +30 -0
- package/README.md +4 -3
- package/cli-spec.json +1 -1
- package/docs/README.md +1 -1
- package/docs/architecture/current-contracts.md +108 -7
- package/docs/concepts/compilation-and-lowering.md +1 -1
- package/docs/concepts/contracts-and-providers.md +2 -2
- package/docs/concepts/effects-and-continuations.md +57 -0
- package/docs/concepts/package-owned-lowering.md +1 -1
- package/docs/concepts/targets-and-hosts.md +10 -2
- package/docs/contributing/adding-core-provider.md +1 -1
- package/docs/contributing/adding-first-party-lowerer.md +1 -1
- package/docs/contributing/package-lowerer-contract.md +2 -2
- package/docs/guides/migrating-from-express.md +3 -3
- package/docs/guides/routing.md +19 -1
- package/docs/maintainers/documentation-deployment.md +4 -4
- package/docs/maintainers/documentation-versioning.md +1 -1
- package/docs/maintainers/maintainer-charter.md +17 -1
- package/docs/maintainers/maintenance-policy.json +34 -3
- package/docs/maintainers/maintenance-policy.md +3 -3
- package/docs/maintainers/npm-publishing.md +34 -6
- package/docs/maintainers/plugin-readiness.json +1 -1
- package/docs/maintainers/plugin-readiness.md +1 -1
- package/docs/maintainers/release-acceptance.md +51 -8
- package/docs/maintainers/release-manifest.md +23 -22
- package/docs/maintainers/scope-policy.md +13 -1
- package/docs/maintainers/testing.md +47 -1
- package/docs/packages/README.md +25 -24
- package/docs/packages/assets.md +1 -1
- package/docs/packages/crypto.md +8 -1
- package/docs/packages/entities.md +1 -1
- package/docs/packages/grip.md +1 -1
- package/docs/packages/implementation-packages.md +10 -1
- package/docs/packages/jwt.md +1 -1
- package/docs/packages/provider-fastly.md +29 -3
- package/docs/packages/pulse.md +1 -1
- package/docs/packages/runtime.md +10 -1
- package/docs/packages/s3.md +101 -0
- package/docs/preview-scope.md +2 -2
- package/docs/reference/cli-spec.json +1 -1
- package/docs/reference/cli.md +1 -1
- package/docs/reference/compatibility-matrix.md +2 -2
- package/docs/reference/diagnostics.md +5 -5
- package/docs/reference/documentation-versions.json +19 -3
- package/docs/reference/handler-authoring.md +1 -1
- package/docs/reference/project-config.md +33 -5
- package/docs/reference/project-config.schema.json +70 -7
- package/docs/reference/release-manifest.json +37 -23
- package/documentation-site.json +8 -1
- package/documentation-versions.json +19 -3
- package/examples/01-hello-json/README.md +1 -1
- package/examples/01-hello-json/package.json +2 -2
- package/examples/02-request-schema/README.md +1 -1
- package/examples/02-request-schema/package.json +2 -2
- package/examples/03-fetch-composition/README.md +1 -1
- package/examples/03-fetch-composition/package.json +2 -2
- package/examples/05-fastly-capabilities/README.md +2 -2
- package/examples/05-fastly-capabilities/package.json +4 -4
- package/examples/07-opaque-proxy/README.md +2 -2
- package/examples/07-opaque-proxy/package.json +3 -3
- package/examples/09-router-lowering/README.md +1 -1
- package/examples/09-router-lowering/package.json +3 -3
- package/examples/10-entities-tools/package.json +3 -3
- package/examples/11-events/README.md +1 -1
- package/examples/11-events/package.json +2 -2
- package/examples/12-mcp-proxy/README.md +1 -1
- package/examples/12-mcp-proxy/package.json +2 -2
- package/examples/13-jwt-es256/README.md +1 -1
- package/examples/13-jwt-es256/package.json +3 -3
- package/package.json +7 -7
- package/project-config.schema.json +70 -7
- package/release-manifest.json +37 -23
- package/src/documentation.js +1 -1
- package/src/project-config-schema.js +3 -3
- 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.
|
|
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":
|
|
4
|
-
"releaseVersion": "1.0.0-beta.
|
|
5
|
-
"reviewedAt": "2026-
|
|
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:** `
|
|
9
|
-
- **Release:** `1.0.0-beta.
|
|
10
|
-
- **Reviewed:** `2026-
|
|
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.
|
|
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.
|
|
48
|
-
-f release_tag=v1.0.0-beta.
|
|
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
|
|
70
|
-
|
|
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.
|
|
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:
|
|
@@ -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.
|
|
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
|
|
11
|
-
synchronized at version `1.0.0-beta.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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.
|
|
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.
|
|
10
|
-
- **Version:** `1.0.0-beta.
|
|
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.
|
|
19
|
+
- **Exact documentation:** `https://pulsecompute.io/v1.0.0-beta.3/`
|
|
20
20
|
- **Runtime targets:** 3
|
|
21
|
-
- **Packages:**
|
|
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/
|
|
79
|
-
| `@pulse-compute/wasm-
|
|
80
|
-
| `@pulse-compute/wasm-
|
|
81
|
-
| `@pulse-compute/wasm-
|
|
82
|
-
| `@pulse-compute/wasm-
|
|
83
|
-
| `@pulse-compute/wasm-
|
|
84
|
-
| `@pulse-compute/
|
|
85
|
-
| `@pulse-compute/
|
|
86
|
-
| `@pulse-compute/wasm-
|
|
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
|
|
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.
|
|
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.
|
package/docs/packages/README.md
CHANGED
|
@@ -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.
|
|
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/
|
|
19
|
-
| [`@pulse-compute/wasm-
|
|
20
|
-
| [`@pulse-compute/wasm-
|
|
21
|
-
| [`@pulse-compute/wasm-
|
|
22
|
-
| [`@pulse-compute/wasm-
|
|
23
|
-
| [`@pulse-compute/wasm-
|
|
24
|
-
| [`@pulse-compute/
|
|
25
|
-
| [`@pulse-compute/
|
|
26
|
-
| [`@pulse-compute/wasm-
|
|
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.
|
|
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.
|
|
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;
|
package/docs/packages/assets.md
CHANGED
package/docs/packages/crypto.md
CHANGED
|
@@ -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.
|
|
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
|