@pulse-compute/cli 0.0.0 → 1.0.0-beta.1

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 (190) hide show
  1. package/API.md +539 -0
  2. package/CHANGELOG.md +47 -0
  3. package/README.md +70 -1
  4. package/bin/pulse.js +15 -0
  5. package/bin/pulsewasm-extract.js +22 -0
  6. package/cli-spec.json +575 -0
  7. package/completions/_pulse +106 -0
  8. package/completions/pulse.bash +31 -0
  9. package/completions/pulse.fish +76 -0
  10. package/docs/README.md +77 -0
  11. package/docs/architecture/current-contracts.md +381 -0
  12. package/docs/architecture/overview.md +93 -0
  13. package/docs/architecture/vision.md +515 -0
  14. package/docs/concepts/bodies.md +186 -0
  15. package/docs/concepts/compilation-and-lowering.md +496 -0
  16. package/docs/concepts/contracts-and-providers.md +158 -0
  17. package/docs/concepts/effects-and-continuations.md +243 -0
  18. package/docs/concepts/entities-and-adapters.md +71 -0
  19. package/docs/concepts/package-owned-lowering.md +175 -0
  20. package/docs/concepts/targets-and-hosts.md +62 -0
  21. package/docs/contributing/README.md +38 -0
  22. package/docs/contributing/adding-core-provider.md +315 -0
  23. package/docs/contributing/adding-first-party-lowerer.md +327 -0
  24. package/docs/contributing/entities-lowering.md +91 -0
  25. package/docs/contributing/package-lowerer-contract.md +383 -0
  26. package/docs/contributing/pulse-aware-packages.md +149 -0
  27. package/docs/examples.md +112 -0
  28. package/docs/fixtures/inspect-fetch-composition.selected.json +181 -0
  29. package/docs/getting-started.md +128 -0
  30. package/docs/guides/compatibility-imports.md +60 -0
  31. package/docs/guides/deploying-fastly.md +188 -0
  32. package/docs/guides/deploying-node.md +143 -0
  33. package/docs/guides/events.md +233 -0
  34. package/docs/guides/fastly-capabilities.md +153 -0
  35. package/docs/guides/fetching-and-composition.md +101 -0
  36. package/docs/guides/grip.md +94 -0
  37. package/docs/guides/json-schemas.md +233 -0
  38. package/docs/guides/migrating-from-express.md +192 -0
  39. package/docs/guides/project-lifecycle.md +143 -0
  40. package/docs/guides/routing.md +184 -0
  41. package/docs/guides/troubleshooting.md +47 -0
  42. package/docs/maintainers/README.md +60 -0
  43. package/docs/maintainers/codex-maintainer.md +71 -0
  44. package/docs/maintainers/documentation-deployment.md +147 -0
  45. package/docs/maintainers/documentation-system.md +58 -0
  46. package/docs/maintainers/documentation-versioning.md +65 -0
  47. package/docs/maintainers/maintainer-charter.md +84 -0
  48. package/docs/maintainers/maintenance-policy.json +778 -0
  49. package/docs/maintainers/maintenance-policy.md +124 -0
  50. package/docs/maintainers/npm-publishing.md +154 -0
  51. package/docs/maintainers/plugin-readiness.json +19 -0
  52. package/docs/maintainers/plugin-readiness.md +31 -0
  53. package/docs/maintainers/public-site.md +158 -0
  54. package/docs/maintainers/release-acceptance.md +250 -0
  55. package/docs/maintainers/release-manifest.md +88 -0
  56. package/docs/maintainers/repository-setup.md +145 -0
  57. package/docs/maintainers/scope-policy.md +93 -0
  58. package/docs/maintainers/support-and-triage.md +74 -0
  59. package/docs/maintainers/testing.md +288 -0
  60. package/docs/packages/README.md +59 -0
  61. package/docs/packages/assets.md +85 -0
  62. package/docs/packages/cli.md +190 -0
  63. package/docs/packages/crypto.md +71 -0
  64. package/docs/packages/entities.md +129 -0
  65. package/docs/packages/grip.md +82 -0
  66. package/docs/packages/implementation-packages.md +113 -0
  67. package/docs/packages/jwt.md +55 -0
  68. package/docs/packages/provider-fastly.md +217 -0
  69. package/docs/packages/pulse.md +159 -0
  70. package/docs/packages/runtime.md +256 -0
  71. package/docs/preview-scope.md +142 -0
  72. package/docs/reference/README.md +33 -0
  73. package/docs/reference/cli-spec.json +575 -0
  74. package/docs/reference/cli.md +457 -0
  75. package/docs/reference/compatibility-matrix.md +169 -0
  76. package/docs/reference/diagnostics.md +1872 -0
  77. package/docs/reference/documentation-versions.json +14 -0
  78. package/docs/reference/environment.md +347 -0
  79. package/docs/reference/handler-authoring.md +264 -0
  80. package/docs/reference/project-config.md +554 -0
  81. package/docs/reference/project-config.schema.json +918 -0
  82. package/docs/reference/release-manifest.json +427 -0
  83. package/docs/reference/shell-completion.md +23 -0
  84. package/documentation-site.json +661 -0
  85. package/documentation-versions.json +14 -0
  86. package/examples/01-hello-json/.pulse/.gitignore +3 -0
  87. package/examples/01-hello-json/.pulse/config.ts +16 -0
  88. package/examples/01-hello-json/README.md +119 -0
  89. package/examples/01-hello-json/package.json +20 -0
  90. package/examples/01-hello-json/src/index.ts +9 -0
  91. package/examples/01-hello-json/tests/pulse.harness.ts +22 -0
  92. package/examples/01-hello-json/tsconfig.json +14 -0
  93. package/examples/02-request-schema/.pulse/.gitignore +3 -0
  94. package/examples/02-request-schema/.pulse/config.ts +17 -0
  95. package/examples/02-request-schema/README.md +145 -0
  96. package/examples/02-request-schema/package.json +20 -0
  97. package/examples/02-request-schema/src/index.ts +18 -0
  98. package/examples/02-request-schema/src/schemas.ts +20 -0
  99. package/examples/02-request-schema/tests/pulse.harness.ts +37 -0
  100. package/examples/02-request-schema/tsconfig.json +14 -0
  101. package/examples/03-fetch-composition/.pulse/.gitignore +3 -0
  102. package/examples/03-fetch-composition/.pulse/config.ts +31 -0
  103. package/examples/03-fetch-composition/README.md +210 -0
  104. package/examples/03-fetch-composition/package.json +20 -0
  105. package/examples/03-fetch-composition/src/index.ts +60 -0
  106. package/examples/03-fetch-composition/tests/pulse.harness.ts +47 -0
  107. package/examples/03-fetch-composition/tsconfig.json +14 -0
  108. package/examples/05-fastly-capabilities/.pulse/.gitignore +3 -0
  109. package/examples/05-fastly-capabilities/.pulse/config.ts +57 -0
  110. package/examples/05-fastly-capabilities/README.md +257 -0
  111. package/examples/05-fastly-capabilities/package.json +22 -0
  112. package/examples/05-fastly-capabilities/src/index.ts +55 -0
  113. package/examples/05-fastly-capabilities/tests/pulse.harness.ts +66 -0
  114. package/examples/05-fastly-capabilities/tsconfig.json +14 -0
  115. package/examples/07-opaque-proxy/.pulse/.gitignore +3 -0
  116. package/examples/07-opaque-proxy/.pulse/config.ts +38 -0
  117. package/examples/07-opaque-proxy/README.md +150 -0
  118. package/examples/07-opaque-proxy/package.json +21 -0
  119. package/examples/07-opaque-proxy/src/index.ts +9 -0
  120. package/examples/07-opaque-proxy/tests/pulse.harness.ts +25 -0
  121. package/examples/07-opaque-proxy/tsconfig.json +14 -0
  122. package/examples/09-router-lowering/.pulse/.gitignore +3 -0
  123. package/examples/09-router-lowering/.pulse/config.ts +22 -0
  124. package/examples/09-router-lowering/README.md +287 -0
  125. package/examples/09-router-lowering/package.json +22 -0
  126. package/examples/09-router-lowering/src/index.ts +65 -0
  127. package/examples/09-router-lowering/tests/pulse.harness.ts +91 -0
  128. package/examples/09-router-lowering/tsconfig.json +14 -0
  129. package/examples/10-entities-tools/.pulse/.gitignore +4 -0
  130. package/examples/10-entities-tools/.pulse/config.ts +23 -0
  131. package/examples/10-entities-tools/README.md +165 -0
  132. package/examples/10-entities-tools/package.json +21 -0
  133. package/examples/10-entities-tools/src/handlers.ts +15 -0
  134. package/examples/10-entities-tools/src/index.ts +31 -0
  135. package/examples/10-entities-tools/src/schemas.ts +18 -0
  136. package/examples/10-entities-tools/tests/pulse.harness.ts +40 -0
  137. package/examples/10-entities-tools/tools-facade.cjs +158 -0
  138. package/examples/10-entities-tools/tsconfig.json +14 -0
  139. package/examples/11-events/.pulse/.gitignore +4 -0
  140. package/examples/11-events/.pulse/config.ts +24 -0
  141. package/examples/11-events/README.md +194 -0
  142. package/examples/11-events/package.json +20 -0
  143. package/examples/11-events/src/index.ts +27 -0
  144. package/examples/11-events/src/schemas.ts +19 -0
  145. package/examples/11-events/tests/pulse.harness.ts +34 -0
  146. package/examples/11-events/tsconfig.json +15 -0
  147. package/examples/12-mcp-proxy/.pulse/.gitignore +3 -0
  148. package/examples/12-mcp-proxy/.pulse/config.ts +25 -0
  149. package/examples/12-mcp-proxy/README.md +149 -0
  150. package/examples/12-mcp-proxy/package.json +20 -0
  151. package/examples/12-mcp-proxy/src/index.ts +17 -0
  152. package/examples/12-mcp-proxy/tests/pulse.harness.ts +29 -0
  153. package/examples/12-mcp-proxy/tsconfig.json +14 -0
  154. package/examples/13-jwt-es256/.pulse/config.ts +19 -0
  155. package/examples/13-jwt-es256/README.md +195 -0
  156. package/examples/13-jwt-es256/package.json +21 -0
  157. package/examples/13-jwt-es256/src/index.ts +21 -0
  158. package/examples/13-jwt-es256/tests/pulse.harness.ts +54 -0
  159. package/examples/13-jwt-es256/tsconfig.json +14 -0
  160. package/examples/README.md +36 -0
  161. package/package.json +66 -6
  162. package/project-config.schema.json +918 -0
  163. package/release-manifest.json +427 -0
  164. package/src/command-spec.js +279 -0
  165. package/src/completion.js +113 -0
  166. package/src/diagnostics.js +350 -0
  167. package/src/documentation.js +45 -0
  168. package/src/index.d.ts +133 -0
  169. package/src/index.js +15 -0
  170. package/src/internal/command-executor.d.ts +29 -0
  171. package/src/internal/command-executor.js +143 -0
  172. package/src/internal/command-plan.d.ts +9 -0
  173. package/src/internal/command-plan.js +73 -0
  174. package/src/internal/command-reporter.d.ts +15 -0
  175. package/src/internal/command-reporter.js +133 -0
  176. package/src/internal/command-request.d.ts +35 -0
  177. package/src/internal/command-request.js +154 -0
  178. package/src/internal/node-http.js +54 -0
  179. package/src/internal/project-context.d.ts +66 -0
  180. package/src/internal/project-context.js +175 -0
  181. package/src/project-config-reference.js +4 -0
  182. package/src/project-config-schema.d.ts +23 -0
  183. package/src/project-config-schema.js +271 -0
  184. package/src/project-config.js +724 -0
  185. package/src/project-execution.js +2930 -0
  186. package/src/provider-drivers.js +3 -0
  187. package/src/target-support.js +3 -0
  188. package/src/typescript-module-loader.js +269 -0
  189. package/src/workflow.js +78 -0
  190. package/src/workspace.js +82 -0
@@ -0,0 +1,1872 @@
1
+ # Diagnostics and remediation
2
+
3
+ <!-- Generated by wasm/scripts/sync-reference-docs.cjs. Edit the source catalog, not this file. -->
4
+
5
+ Pulse 1.0.0-beta.1 treats the 114 codes on this page as the stable public CLI diagnostic catalog. Code, category, summary, remediation intent, exit class, and anchor are generated from the same source used by the CLI. Human wording may improve compatibly.
6
+
7
+ Every catalogued failure links to a versioned installed artifact under:
8
+
9
+ `https://pulsecompute.io/v1.0.0-beta.1/reference/diagnostics/`
10
+
11
+ Uncatalogued/internal or forward-compatible codes link to that reference root instead of inventing a nonexistent anchor. Internal `PULSEWASM_*` proof/compiler tokens are not part of this public catalog.
12
+
13
+ Source-form eligibility, trusted awaits, `ctx.parallel` static
14
+ shape, Router terminal transfer, and body ownership are centralized in
15
+ [Managed handler TypeScript and JavaScript](handler-authoring.md). Four-mode
16
+ target claims are centralized in [Provider and target
17
+ compatibility](compatibility-matrix.md).
18
+ A Native eligibility diagnostic never authorizes automatic JavaScript fallback.
19
+
20
+ ## JSON failure envelope
21
+
22
+ ```json
23
+ {
24
+ "status": "error",
25
+ "version": "1.0.0-beta.1",
26
+ "error": {
27
+ "name": "PulseProjectError",
28
+ "code": "PULSE_BUILD_OUT_UNSAFE",
29
+ "title": "Build Out Unsafe",
30
+ "summary": "The resolved build output can escape or alias outside the project root.",
31
+ "category": "safety",
32
+ "message": "Pulse build output must be a child directory of the project root.",
33
+ "remediation": [
34
+ "Choose an output directory that is a real child of the project root."
35
+ ],
36
+ "stability": "preview-stable",
37
+ "scope": "public",
38
+ "docs": "https://pulsecompute.io/v1.0.0-beta.1/reference/diagnostics/#pulse-build-out-unsafe"
39
+ }
40
+ }
41
+ ```
42
+
43
+ Configured secret values are redacted before diagnostics are serialized.
44
+
45
+ ## Fastly local execution boundary
46
+
47
+ Pulse executes generated `bin/main.wasm` through an inspected local Compute launcher. `PULSE_FASTLY_BIN` selects CLI-owned `fastly compute serve --file`; `PULSE_VICEROY_BIN` selects direct `viceroy serve` when no explicit Fastly CLI launcher is selected. External Fastly execution remains an explicit environment-dependent gate.
48
+
49
+ ## Exit codes
50
+
51
+ | Exit | Meaning |
52
+ |---:|---|
53
+ | `0` | Command completed successfully. |
54
+ | `1` | Completed doctor/test failure where documented, or uncatalogued internal failure. |
55
+ | `2` | Usage, project configuration, provider selection, or output-safety error. |
56
+ | `3` | Canonical/schema/package-lowering/provider-binding failure. |
57
+ | `4` | Request, test, runtime, fetch, or continuation failure. |
58
+ | `5` | External toolchain or Fastly local-execution failure. |
59
+
60
+ ## Development HTTP responses
61
+
62
+ When a diagnostic is converted into a response by `pulse dev`, an explicitly catalogued HTTP status takes precedence. Catalogued codes without an explicit HTTP mapping use `500` as a fail-closed development-server fallback. CLI exit codes remain independent from HTTP status.
63
+
64
+ | HTTP status | Explicitly mapped public diagnostics |
65
+ |---:|---|
66
+ | `400` | `PULSE_SCHEMA_JSON_MALFORMED`, `PULSE_BODY_DECODE`, `PULSE_SCHEMA_DECODE`, `PULSE_OPAQUE_BODY_INSPECTION`, `PULSE_FETCH_URL_INVALID` |
67
+ | `413` | `PULSE_BODY_TOO_LARGE`, `PULSE_REQUEST_BODY_TOO_LARGE` |
68
+ | `415` | `PULSE_SCHEMA_CONTENT_TYPE` |
69
+ | `500` | `PULSE_SCHEMA_ID_INVALID`, `PULSE_SCHEMA_REQUIRED`, `PULSE_SCHEMA_REFERENCE`, `PULSE_SCHEMA_CODECS_UNAVAILABLE`, `PULSE_RESPONSE_CASE_REFERENCE`, `PULSE_RESPONSE_DESCRIPTOR_INVALID`, `PULSE_FETCH_SCHEMA_WITHOUT_JSON`, `PULSE_BODY_UNAVAILABLE`, `PULSE_RESPONSE_ENCODE`, `PULSE_SCHEMA_ENCODE`, `PULSE_CONTINUATION_DOUBLE_RESUME` |
70
+ | `501` | `PULSE_PROVIDER_CAPABILITY_MISSING`, `PULSE_PROVIDER_CAPABILITY_UNSUPPORTED`, `PULSE_EVENT_TARGET_UNSUPPORTED`, `PULSE_FASTLY_EVENT_INGRESS_UNSUPPORTED`, `PULSE_FASTLY_EVENT_EMIT_UNSUPPORTED` |
71
+ | `502` | `PULSE_FETCH_NETWORK` |
72
+ | `504` | `PULSE_FETCH_TIMEOUT`, `PULSE_CONTINUATION_EXPIRED`, `PULSE_FASTLY_REQUEST_TIMEOUT` |
73
+
74
+ ## Executable schema failure example
75
+
76
+ The documented schema project includes an intentionally invalid case:
77
+
78
+ <!-- pulse-doc-run {"args":["test","examples/02-request-schema","--case","invalid-user","--json"],"display":"pulse test examples/02-request-schema --case invalid-user --json"} -->
79
+ ```bash
80
+ pulse test examples/02-request-schema --case invalid-user --json
81
+ ```
82
+ ```json
83
+ {
84
+ "status": "passed",
85
+ "cases": [
86
+ {
87
+ "name": "invalid-user",
88
+ "status": "passed",
89
+ "expectedError": {
90
+ "code": "PULSE_SCHEMA_DECODE",
91
+ "category": "request",
92
+ "docs": "https://pulsecompute.io/v1.0.0-beta.1/reference/diagnostics/#pulse-schema-decode"
93
+ }
94
+ }
95
+ ]
96
+ }
97
+ ```
98
+
99
+ ## Complete public catalog
100
+
101
+ ## Usage diagnostics
102
+
103
+ <a id="pulse-command-unknown"></a>
104
+ ### `PULSE_COMMAND_UNKNOWN` — Command Unknown
105
+
106
+ The requested pulse command is not part of the supported CLI.
107
+
108
+ - **Category:** `usage`
109
+ - **CLI exit class:** `2`
110
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
111
+ - **Stability/scope:** `preview-stable` / `public`
112
+ - **Related reference:** [CLI reference](cli.md)
113
+
114
+ **Remediation**
115
+
116
+ 1. Run `pulse --help` and choose one of the documented commands.
117
+
118
+ <a id="pulse-argument-missing"></a>
119
+ ### `PULSE_ARGUMENT_MISSING` — Argument Missing
120
+
121
+ A command-line option that requires a value was supplied without one.
122
+
123
+ - **Category:** `usage`
124
+ - **CLI exit class:** `2`
125
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
126
+ - **Stability/scope:** `preview-stable` / `public`
127
+ - **Related reference:** [CLI reference](cli.md)
128
+
129
+ **Remediation**
130
+
131
+ 1. Provide the missing flag value and rerun the command.
132
+ 2. Run `pulse --help` for the command signature.
133
+
134
+ <a id="pulse-argument-unexpected"></a>
135
+ ### `PULSE_ARGUMENT_UNEXPECTED` — Argument Unexpected
136
+
137
+ The command received an option or positional argument it does not accept.
138
+
139
+ - **Category:** `usage`
140
+ - **CLI exit class:** `2`
141
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
142
+ - **Stability/scope:** `preview-stable` / `public`
143
+ - **Related reference:** [CLI reference](cli.md)
144
+
145
+ **Remediation**
146
+
147
+ 1. Remove the unsupported argument or use the documented flag.
148
+ 2. Run `pulse --help` for the command signature.
149
+
150
+ <a id="pulse-provider-flag-removed"></a>
151
+ ### `PULSE_PROVIDER_FLAG_REMOVED` — Provider Flag Removed
152
+
153
+ Provider selection is project configuration, not a command-line override.
154
+
155
+ - **Category:** `usage`
156
+ - **CLI exit class:** `2`
157
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
158
+ - **Stability/scope:** `preview-stable` / `public`
159
+ - **Related reference:** [CLI reference](cli.md)
160
+
161
+ **Remediation**
162
+
163
+ 1. Select `host` and `target` in a `.pulse/config.ts` profile.
164
+ 2. Use `pulse compile` for provider-neutral Wasm or `pulse build` for the configured deployment target.
165
+
166
+ <a id="pulse-source-only-removed"></a>
167
+ ### `PULSE_SOURCE_ONLY_REMOVED` — Source Only Removed
168
+
169
+ The former source-only JavaScript packaging mode is no longer part of native builds.
170
+
171
+ - **Category:** `usage`
172
+ - **CLI exit class:** `2`
173
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
174
+ - **Stability/scope:** `preview-stable` / `public`
175
+ - **Related reference:** [CLI reference](cli.md)
176
+
177
+ **Remediation**
178
+
179
+ 1. Run `pulse build`; native builds emit generated source and provider Wasm together.
180
+
181
+ ## Project diagnostics
182
+
183
+ <a id="pulse-config-not-found"></a>
184
+ ### `PULSE_CONFIG_NOT_FOUND` — Config Not Found
185
+
186
+ Project discovery did not find an explicit Pulse configuration file.
187
+
188
+ - **Category:** `project`
189
+ - **CLI exit class:** `2`
190
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
191
+ - **Stability/scope:** `preview-stable` / `public`
192
+ - **Related reference:** [Project configuration](project-config.md)
193
+
194
+ **Remediation**
195
+
196
+ 1. Run `pulse init` to create `.pulse/config.ts`.
197
+ 2. Ensure the command runs inside the intended project directory.
198
+
199
+ <a id="pulse-profile-selection-required"></a>
200
+ ### `PULSE_PROFILE_SELECTION_REQUIRED` — Profile Selection Required
201
+
202
+ No project profile was selected by CLI, environment, or default configuration.
203
+
204
+ - **Category:** `project`
205
+ - **CLI exit class:** `2`
206
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
207
+ - **Stability/scope:** `preview-stable` / `public`
208
+ - **Related reference:** [Project configuration](project-config.md)
209
+
210
+ **Remediation**
211
+
212
+ 1. Pass `--profile`, set `PULSE_PROFILE`, or configure `pulse.defaultProfile`.
213
+
214
+ <a id="pulse-profile-unknown"></a>
215
+ ### `PULSE_PROFILE_UNKNOWN` — Profile Unknown
216
+
217
+ The selected profile is absent from the project declaration.
218
+
219
+ - **Category:** `project`
220
+ - **CLI exit class:** `2`
221
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
222
+ - **Stability/scope:** `preview-stable` / `public`
223
+ - **Related reference:** [Project configuration](project-config.md)
224
+
225
+ **Remediation**
226
+
227
+ 1. Select one of the profiles declared next to the reserved `pulse` object.
228
+
229
+ <a id="pulse-config-plan-parity-failed"></a>
230
+ ### `PULSE_CONFIG_PLAN_PARITY_FAILED` — Config Plan Parity Failed
231
+
232
+ Static and runtime configuration normalization produced different canonical plans.
233
+
234
+ - **Category:** `project`
235
+ - **CLI exit class:** `3`
236
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
237
+ - **Stability/scope:** `preview-stable` / `public`
238
+ - **Related reference:** [Project configuration](project-config.md)
239
+
240
+ **Remediation**
241
+
242
+ 1. Keep the config factory within the sealed static grammar and report the divergent plan hashes.
243
+
244
+ <a id="pulse-javascript-application-plan-invalid"></a>
245
+ ### `PULSE_JAVASCRIPT_APPLICATION_PLAN_INVALID` — Javascript Application Plan Invalid
246
+
247
+ The JavaScript loader received a value outside the normalized application-plan contract.
248
+
249
+ - **Category:** `project`
250
+ - **CLI exit class:** `3`
251
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
252
+ - **Stability/scope:** `preview-stable` / `public`
253
+ - **Related reference:** [Project configuration](project-config.md)
254
+
255
+ **Remediation**
256
+
257
+ 1. Rebuild the JavaScript application plan from the configured entry and sealed reachable graph.
258
+
259
+ <a id="pulse-javascript-application-entry-invalid"></a>
260
+ ### `PULSE_JAVASCRIPT_APPLICATION_ENTRY_INVALID` — Javascript Application Entry Invalid
261
+
262
+ The JavaScript plan entry is not a project-owned application module.
263
+
264
+ - **Category:** `project`
265
+ - **CLI exit class:** `3`
266
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
267
+ - **Stability/scope:** `preview-stable` / `public`
268
+ - **Related reference:** [Project configuration](project-config.md)
269
+
270
+ **Remediation**
271
+
272
+ 1. Default-export a Router, Pulse application, or managed handler from a project-owned entry module.
273
+
274
+ <a id="pulse-javascript-application-export-invalid"></a>
275
+ ### `PULSE_JAVASCRIPT_APPLICATION_EXPORT_INVALID` — Javascript Application Export Invalid
276
+
277
+ The JavaScript entry does not export a managed Pulse application.
278
+
279
+ - **Category:** `project`
280
+ - **CLI exit class:** `3`
281
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
282
+ - **Stability/scope:** `preview-stable` / `public`
283
+ - **Related reference:** [Project configuration](project-config.md)
284
+
285
+ **Remediation**
286
+
287
+ 1. Default-export a Router, Pulse application, or managed handler.
288
+
289
+ <a id="pulse-javascript-module-not-found"></a>
290
+ ### `PULSE_JAVASCRIPT_MODULE_NOT_FOUND` — Javascript Module Not Found
291
+
292
+ A graph-owned project module is absent at JavaScript load time.
293
+
294
+ - **Category:** `project`
295
+ - **CLI exit class:** `3`
296
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
297
+ - **Stability/scope:** `preview-stable` / `public`
298
+ - **Related reference:** [Project configuration](project-config.md)
299
+
300
+ **Remediation**
301
+
302
+ 1. Restore the graph-owned project module or rebuild the plan after the source change.
303
+
304
+ <a id="pulse-runtime-application-export-invalid"></a>
305
+ ### `PULSE_RUNTIME_APPLICATION_EXPORT_INVALID` — Runtime Application Export Invalid
306
+
307
+ The application value is not a Router, Pulse application, or managed handler.
308
+
309
+ - **Category:** `project`
310
+ - **CLI exit class:** `3`
311
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
312
+ - **Stability/scope:** `preview-stable` / `public`
313
+ - **Related reference:** [Project configuration](project-config.md)
314
+
315
+ **Remediation**
316
+
317
+ 1. Default-export a Router, Pulse application, or managed handler.
318
+
319
+ <a id="pulse-config-load-failed"></a>
320
+ ### `PULSE_CONFIG_LOAD_FAILED` — Config Load Failed
321
+
322
+ The selected project configuration threw or failed while being loaded.
323
+
324
+ - **Category:** `project`
325
+ - **CLI exit class:** `2`
326
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
327
+ - **Stability/scope:** `preview-stable` / `public`
328
+ - **Related reference:** [Project configuration](project-config.md)
329
+
330
+ **Remediation**
331
+
332
+ 1. Fix the config import or runtime error.
333
+ 2. Use `pulse doctor --json` to inspect the underlying cause.
334
+
335
+ <a id="pulse-entry-not-found"></a>
336
+ ### `PULSE_ENTRY_NOT_FOUND` — Entry Not Found
337
+
338
+ The configured canonical handler entry file does not exist.
339
+
340
+ - **Category:** `project`
341
+ - **CLI exit class:** `2`
342
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
343
+ - **Stability/scope:** `preview-stable` / `public`
344
+ - **Related reference:** [Project configuration](project-config.md)
345
+
346
+ **Remediation**
347
+
348
+ 1. Create the configured entry file or correct `pulse.entry` in `.pulse/config.ts`.
349
+
350
+ <a id="pulse-project-root-missing"></a>
351
+ ### `PULSE_PROJECT_ROOT_MISSING` — Project Root Missing
352
+
353
+ The selected project directory does not exist.
354
+
355
+ - **Category:** `project`
356
+ - **CLI exit class:** `2`
357
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
358
+ - **Stability/scope:** `preview-stable` / `public`
359
+ - **Related reference:** [Project configuration](project-config.md)
360
+
361
+ **Remediation**
362
+
363
+ 1. Create or correct the positional project directory.
364
+
365
+ <a id="pulse-init-not-empty"></a>
366
+ ### `PULSE_INIT_NOT_EMPTY` — Init Not Empty
367
+
368
+ Project initialization would write into a non-empty directory without explicit force.
369
+
370
+ - **Category:** `project`
371
+ - **CLI exit class:** `2`
372
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
373
+ - **Stability/scope:** `preview-stable` / `public`
374
+ - **Related reference:** [Project configuration](project-config.md)
375
+
376
+ **Remediation**
377
+
378
+ 1. Choose an empty directory or pass `--force` only when overwriting is intentional.
379
+
380
+ <a id="pulse-init-file-exists"></a>
381
+ ### `PULSE_INIT_FILE_EXISTS` — Init File Exists
382
+
383
+ Project initialization would replace an existing file that is not safe to overwrite.
384
+
385
+ - **Category:** `project`
386
+ - **CLI exit class:** `2`
387
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
388
+ - **Stability/scope:** `preview-stable` / `public`
389
+ - **Related reference:** [Project configuration](project-config.md)
390
+
391
+ **Remediation**
392
+
393
+ 1. Remove the conflicting file or choose another target directory.
394
+
395
+ <a id="pulse-config-implicit"></a>
396
+ ### `PULSE_CONFIG_IMPLICIT` — Config Implicit
397
+
398
+ A command is relying on an implicit project shape instead of an explicit configuration.
399
+
400
+ - **Category:** `project`
401
+ - **CLI exit class:** `2`
402
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
403
+ - **Stability/scope:** `preview-stable` / `public`
404
+ - **Related reference:** [Project configuration](project-config.md)
405
+
406
+ **Remediation**
407
+
408
+ 1. Run `pulse init` or create `.pulse/config.ts` to make workspace ownership explicit.
409
+
410
+ ## Test diagnostics
411
+
412
+ <a id="pulse-test-harness-not-found"></a>
413
+ ### `PULSE_TEST_HARNESS_NOT_FOUND` — Test Harness Not Found
414
+
415
+ The configured workspace-relative test harness does not exist.
416
+
417
+ - **Category:** `test`
418
+ - **CLI exit class:** `2`
419
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
420
+ - **Stability/scope:** `preview-stable` / `public`
421
+ - **Related reference:** [CLI test behavior](cli.md#pulse-test)
422
+
423
+ **Remediation**
424
+
425
+ 1. Create the workspace-relative file configured by `pulse.tests`.
426
+
427
+ <a id="pulse-test-harness-export-invalid"></a>
428
+ ### `PULSE_TEST_HARNESS_EXPORT_INVALID` — Test Harness Export Invalid
429
+
430
+ The configured harness does not export the required ordered case collection.
431
+
432
+ - **Category:** `test`
433
+ - **CLI exit class:** `2`
434
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
435
+ - **Stability/scope:** `preview-stable` / `public`
436
+ - **Related reference:** [CLI test behavior](cli.md#pulse-test)
437
+
438
+ **Remediation**
439
+
440
+ 1. Export an ordered case array or an object containing a `cases` array.
441
+
442
+ <a id="pulse-test-expect-invalid"></a>
443
+ ### `PULSE_TEST_EXPECT_INVALID` — Test Expect Invalid
444
+
445
+ A project test case uses an invalid expectation shape for its HTTP or event discriminant.
446
+
447
+ - **Category:** `test`
448
+ - **CLI exit class:** `2`
449
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
450
+ - **Stability/scope:** `preview-stable` / `public`
451
+ - **Related reference:** [CLI test behavior](cli.md#pulse-test)
452
+
453
+ **Remediation**
454
+
455
+ 1. Use the documented expectation shape for the selected HTTP or event case.
456
+ 2. Event emitted-frame expectations must be ordered arrays of canonical frames.
457
+
458
+ <a id="pulse-test-event-invalid"></a>
459
+ ### `PULSE_TEST_EVENT_INVALID` — Test Event Invalid
460
+
461
+ A discriminated event test case is missing or violates the canonical bounded event-frame shape.
462
+
463
+ - **Category:** `test`
464
+ - **CLI exit class:** `2`
465
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
466
+ - **Stability/scope:** `preview-stable` / `public`
467
+ - **Related reference:** [CLI test behavior](cli.md#pulse-test)
468
+
469
+ **Remediation**
470
+
471
+ 1. Use a discriminated `kind: "event"` case with one bounded type, schema or schemaId, and schema-dependent payload.
472
+ 2. Inspect the event catalog with `pulse inspect --json`.
473
+
474
+ ## Capability diagnostics
475
+
476
+ <a id="pulse-target-implementation-pending"></a>
477
+ ### `PULSE_TARGET_IMPLEMENTATION_PENDING` — Target Implementation Pending
478
+
479
+ The selected execution target is explicit but not implemented for this command.
480
+
481
+ - **Category:** `capability`
482
+ - **CLI exit class:** `3`
483
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
484
+ - **Stability/scope:** `preview-stable` / `public`
485
+ - **Related reference:** [Provider restrictions](cli.md#provider-restrictions-and-build-products)
486
+
487
+ **Remediation**
488
+
489
+ 1. Select a native profile for build, test, or dev.
490
+ 2. Use inspect or doctor to retain the JavaScript selection without fallback.
491
+
492
+ <a id="pulse-javascript-application-unavailable"></a>
493
+ ### `PULSE_JAVASCRIPT_APPLICATION_UNAVAILABLE` — Javascript Application Unavailable
494
+
495
+ The selected JavaScript application has one or more explicit target blockers.
496
+
497
+ - **Category:** `capability`
498
+ - **CLI exit class:** `3`
499
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
500
+ - **Stability/scope:** `preview-stable` / `public`
501
+ - **Related reference:** [Provider restrictions](cli.md#provider-restrictions-and-build-products)
502
+
503
+ **Remediation**
504
+
505
+ 1. Inspect the application-plan blockers and select only explicitly realized package and provider capabilities.
506
+ 2. Pulse will not fall back to native or another target automatically.
507
+
508
+ <a id="pulse-javascript-package-realization-unavailable"></a>
509
+ ### `PULSE_JAVASCRIPT_PACKAGE_REALIZATION_UNAVAILABLE` — Javascript Package Realization Unavailable
510
+
511
+ A reachable Pulse-aware package has no JavaScript realization for the selected target.
512
+
513
+ - **Category:** `capability`
514
+ - **CLI exit class:** `3`
515
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
516
+ - **Stability/scope:** `preview-stable` / `public`
517
+ - **Related reference:** [Provider restrictions](cli.md#provider-restrictions-and-build-products)
518
+
519
+ **Remediation**
520
+
521
+ 1. Use a package with an explicit JavaScript realization or select a native target.
522
+ 2. Inspect package target support with `pulse inspect --json`.
523
+
524
+ <a id="pulse-package-javascript-realization-not-implemented"></a>
525
+ ### `PULSE_PACKAGE_JAVASCRIPT_REALIZATION_NOT_IMPLEMENTED` — Package Javascript Realization Not Implemented
526
+
527
+ A reachable Pulse-aware package explicitly declares that its JavaScript realization is not implemented.
528
+
529
+ - **Category:** `capability`
530
+ - **CLI exit class:** `3`
531
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
532
+ - **Stability/scope:** `preview-stable` / `public`
533
+ - **Related reference:** [Provider restrictions](cli.md#provider-restrictions-and-build-products)
534
+
535
+ **Remediation**
536
+
537
+ 1. Select the native target for this package or wait for its declared JavaScript realization.
538
+ 2. No automatic fallback occurs.
539
+
540
+ <a id="pulse-javascript-package-esm-unsupported"></a>
541
+ ### `PULSE_JAVASCRIPT_PACKAGE_ESM_UNSUPPORTED` — Javascript Package Esm Unsupported
542
+
543
+ The current graph-backed Node loader cannot require the selected ESM-only package entry.
544
+
545
+ - **Category:** `capability`
546
+ - **CLI exit class:** `3`
547
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
548
+ - **Stability/scope:** `preview-stable` / `public`
549
+ - **Related reference:** [Provider restrictions](cli.md#provider-restrictions-and-build-products)
550
+
551
+ **Remediation**
552
+
553
+ 1. Use a CommonJS-compatible package entry for the current Node loader or defer the package to a later JavaScript bundling contract.
554
+
555
+ <a id="pulse-javascript-package-module-unavailable"></a>
556
+ ### `PULSE_JAVASCRIPT_PACKAGE_MODULE_UNAVAILABLE` — Javascript Package Module Unavailable
557
+
558
+ The graph-selected JavaScript package module cannot be loaded from the application workspace.
559
+
560
+ - **Category:** `capability`
561
+ - **CLI exit class:** `3`
562
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
563
+ - **Stability/scope:** `preview-stable` / `public`
564
+ - **Related reference:** [Provider restrictions](cli.md#provider-restrictions-and-build-products)
565
+
566
+ **Remediation**
567
+
568
+ 1. Install the exact package selected by the reachable graph in the application workspace.
569
+
570
+ <a id="pulse-javascript-external-module-unavailable"></a>
571
+ ### `PULSE_JAVASCRIPT_EXTERNAL_MODULE_UNAVAILABLE` — Javascript External Module Unavailable
572
+
573
+ A declared external module is unavailable to the JavaScript application loader.
574
+
575
+ - **Category:** `capability`
576
+ - **CLI exit class:** `3`
577
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
578
+ - **Stability/scope:** `preview-stable` / `public`
579
+ - **Related reference:** [Provider restrictions](cli.md#provider-restrictions-and-build-products)
580
+
581
+ **Remediation**
582
+
583
+ 1. Install or explicitly declare the external module required by the JavaScript target.
584
+
585
+ <a id="pulse-experimental-native-size-unsupported"></a>
586
+ ### `PULSE_EXPERIMENTAL_NATIVE_SIZE_UNSUPPORTED` — Experimental Native Size Unsupported
587
+
588
+ The experimental Native size optimizer cannot be used for a JavaScript build target.
589
+
590
+ - **Category:** `capability`
591
+ - **CLI exit class:** `2`
592
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
593
+ - **Stability/scope:** `preview-stable` / `public`
594
+ - **Related reference:** [Provider restrictions](cli.md#provider-restrictions-and-build-products)
595
+
596
+ **Remediation**
597
+
598
+ 1. Select a profile with `target: "native"` or use `pulse compile`.
599
+ 2. Remove `--experimental-native-size` for JavaScript build output.
600
+
601
+ <a id="pulse-provider-compile-only"></a>
602
+ ### `PULSE_PROVIDER_COMPILE_ONLY` — Provider Compile Only
603
+
604
+ The none provider cannot execute development-server or project-test behavior.
605
+
606
+ - **Category:** `capability`
607
+ - **CLI exit class:** `2`
608
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
609
+ - **Stability/scope:** `preview-stable` / `public`
610
+ - **Related reference:** [Provider restrictions](cli.md#provider-restrictions-and-build-products)
611
+
612
+ **Remediation**
613
+
614
+ 1. Select an executable provider before running `pulse dev` or `pulse test`.
615
+
616
+ <a id="pulse-test-provider-required"></a>
617
+ ### `PULSE_TEST_PROVIDER_REQUIRED` — Test Provider Required
618
+
619
+ Project tests require an executable provider.
620
+
621
+ - **Category:** `capability`
622
+ - **CLI exit class:** `2`
623
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
624
+ - **Stability/scope:** `preview-stable` / `public`
625
+ - **Related reference:** [Provider restrictions](cli.md#provider-restrictions-and-build-products)
626
+
627
+ **Remediation**
628
+
629
+ 1. Select an executable provider for `pulse test`.
630
+
631
+ <a id="pulse-dev-provider-unsupported"></a>
632
+ ### `PULSE_DEV_PROVIDER_UNSUPPORTED` — Dev Provider Unsupported
633
+
634
+ The development server requires an executable provider.
635
+
636
+ - **Category:** `capability`
637
+ - **CLI exit class:** `2`
638
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
639
+ - **Stability/scope:** `preview-stable` / `public`
640
+ - **Related reference:** [Provider restrictions](cli.md#provider-restrictions-and-build-products)
641
+
642
+ **Remediation**
643
+
644
+ 1. Select an executable provider for `pulse dev`.
645
+
646
+ <a id="pulse-provider-capability-missing"></a>
647
+ ### `PULSE_PROVIDER_CAPABILITY_MISSING` — Provider Capability Missing
648
+
649
+ The selected provider lacks a binding required by the compiled application.
650
+
651
+ - **Category:** `capability`
652
+ - **CLI exit class:** `3`
653
+ - **Development HTTP status:** `501`
654
+ - **Stability/scope:** `preview-stable` / `public`
655
+ - **Related reference:** [Provider restrictions](cli.md#provider-restrictions-and-build-products)
656
+
657
+ **Remediation**
658
+
659
+ 1. Configure the required provider binding or select a provider that implements the capability.
660
+ 2. Run `pulse inspect --json` to view required capabilities and bindings.
661
+
662
+ <a id="pulse-provider-capability-unsupported"></a>
663
+ ### `PULSE_PROVIDER_CAPABILITY_UNSUPPORTED` — Provider Capability Unsupported
664
+
665
+ The selected provider cannot realize a capability required by the application.
666
+
667
+ - **Category:** `capability`
668
+ - **CLI exit class:** `3`
669
+ - **Development HTTP status:** `501`
670
+ - **Stability/scope:** `preview-stable` / `public`
671
+ - **Related reference:** [Provider restrictions](cli.md#provider-restrictions-and-build-products)
672
+
673
+ **Remediation**
674
+
675
+ 1. Remove the unsupported capability or select a compatible provider.
676
+
677
+ <a id="pulse-event-target-unsupported"></a>
678
+ ### `PULSE_EVENT_TARGET_UNSUPPORTED` — Event Target Unsupported
679
+
680
+ The selected provider target cannot realize or test the reachable event plane.
681
+
682
+ - **Category:** `capability`
683
+ - **CLI exit class:** `3`
684
+ - **Development HTTP status:** `501`
685
+ - **Stability/scope:** `preview-stable` / `public`
686
+ - **Related reference:** [Provider restrictions](cli.md#provider-restrictions-and-build-products)
687
+
688
+ **Remediation**
689
+
690
+ 1. Select a target whose descriptor and provider event driver satisfy every reachable event requirement.
691
+ 2. Use `pulse inspect --json` to review event target support; Pulse will not select another target automatically.
692
+
693
+ ## Compile diagnostics
694
+
695
+ <a id="pulse-javascript-application-graph-failed"></a>
696
+ ### `PULSE_JAVASCRIPT_APPLICATION_GRAPH_FAILED` — Javascript Application Graph Failed
697
+
698
+ The sealed reachable graph could not be built for JavaScript application loading.
699
+
700
+ - **Category:** `compile`
701
+ - **CLI exit class:** `3`
702
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
703
+ - **Stability/scope:** `preview-stable` / `public`
704
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
705
+
706
+ **Remediation**
707
+
708
+ 1. Fix the first reachable-graph diagnostic before loading the JavaScript application.
709
+
710
+ <a id="pulse-javascript-import-not-in-graph"></a>
711
+ ### `PULSE_JAVASCRIPT_IMPORT_NOT_IN_GRAPH` — Javascript Import Not In Graph
712
+
713
+ Runtime evaluation requested an import absent from the sealed reachable graph.
714
+
715
+ - **Category:** `compile`
716
+ - **CLI exit class:** `3`
717
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
718
+ - **Stability/scope:** `preview-stable` / `public`
719
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
720
+
721
+ **Remediation**
722
+
723
+ 1. Keep runtime imports within the sealed reachable graph and avoid evaluation-time dynamic loading.
724
+
725
+ <a id="pulse-javascript-module-compile-failed"></a>
726
+ ### `PULSE_JAVASCRIPT_MODULE_COMPILE_FAILED` — Javascript Module Compile Failed
727
+
728
+ A graph-owned TypeScript or JavaScript module could not be transpiled for the Node loader.
729
+
730
+ - **Category:** `compile`
731
+ - **CLI exit class:** `3`
732
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
733
+ - **Stability/scope:** `preview-stable` / `public`
734
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
735
+
736
+ **Remediation**
737
+
738
+ 1. Fix the TypeScript or JavaScript syntax in the graph-owned project module.
739
+
740
+ <a id="pulse-handler-async-required"></a>
741
+ ### `PULSE_HANDLER_ASYNC_REQUIRED` — Handler Async Required
742
+
743
+ A managed handler in a conventional Pulse project is missing its required async wrapper.
744
+
745
+ - **Category:** `compile`
746
+ - **CLI exit class:** `3`
747
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
748
+ - **Stability/scope:** `preview-stable` / `public`
749
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
750
+
751
+ **Remediation**
752
+
753
+ 1. Declare every managed handler, middleware function, and error handler with `async`.
754
+ 2. Native lowering erases the wrapper; no Promise runtime or Asyncify support is added.
755
+
756
+ <a id="pulse-project-compile-failed"></a>
757
+ ### `PULSE_PROJECT_COMPILE_FAILED` — Project Compile Failed
758
+
759
+ Whole-project compilation failed and contains one or more nested diagnostics.
760
+
761
+ - **Category:** `compile`
762
+ - **CLI exit class:** `3`
763
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
764
+ - **Stability/scope:** `preview-stable` / `public`
765
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
766
+
767
+ **Remediation**
768
+
769
+ 1. Read the nested diagnostics and fix the first reported source or schema error.
770
+ 2. Run `pulse inspect --json` or `pulse doctor --json` for structured diagnostics.
771
+
772
+ <a id="pulse-canonical-compile-failed"></a>
773
+ ### `PULSE_CANONICAL_COMPILE_FAILED` — Canonical Compile Failed
774
+
775
+ The handler uses a source form outside the canonical Beta authoring subset.
776
+
777
+ - **Category:** `compile`
778
+ - **CLI exit class:** `3`
779
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
780
+ - **Stability/scope:** `preview-stable` / `public`
781
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
782
+
783
+ **Remediation**
784
+
785
+ 1. Rewrite the handler using the documented canonical API subset.
786
+ 2. Run `pulse inspect --json` to see unsupported source forms.
787
+
788
+ <a id="pulse-canonical-native-plan-failed"></a>
789
+ ### `PULSE_CANONICAL_NATIVE_PLAN_FAILED` — Canonical Native Plan Failed
790
+
791
+ The canonical handler could not be represented by the provider-neutral native execution-plan contract.
792
+
793
+ - **Category:** `compile`
794
+ - **CLI exit class:** `3`
795
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
796
+ - **Stability/scope:** `preview-stable` / `public`
797
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
798
+
799
+ **Remediation**
800
+
801
+ 1. Inspect the native-plan diagnostics and rewrite unsupported canonical control flow.
802
+ 2. Run `pulse inspect --json` to view the provider-neutral plan boundary.
803
+
804
+ <a id="pulse-canonical-native-as-generation-failed"></a>
805
+ ### `PULSE_CANONICAL_NATIVE_AS_GENERATION_FAILED` — Canonical Native As Generation Failed
806
+
807
+ The validated native plan could not be rendered into the bounded AssemblyScript state-machine source.
808
+
809
+ - **Category:** `compile`
810
+ - **CLI exit class:** `3`
811
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
812
+ - **Stability/scope:** `preview-stable` / `public`
813
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
814
+
815
+ **Remediation**
816
+
817
+ 1. Inspect the generated-native diagnostic and rewrite unsupported canonical expressions.
818
+ 2. Retain the plan hash and diagnostic detail when reporting a compiler defect.
819
+
820
+ <a id="pulse-package-lowering-failed"></a>
821
+ ### `PULSE_PACKAGE_LOWERING_FAILED` — Package Lowering Failed
822
+
823
+ A package-owned API call could not be lowered into its canonical effect contract.
824
+
825
+ - **Category:** `compile`
826
+ - **CLI exit class:** `3`
827
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
828
+ - **Stability/scope:** `preview-stable` / `public`
829
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
830
+
831
+ **Remediation**
832
+
833
+ 1. Fix the package-owned API call shape reported in the nested diagnostic.
834
+ 2. Keep package effects in the documented static positions.
835
+
836
+ <a id="pulse-native-import-unsupported"></a>
837
+ ### `PULSE_NATIVE_IMPORT_UNSUPPORTED` — Native Import Unsupported
838
+
839
+ A reachable runtime import has no trusted Pulse native contract.
840
+
841
+ - **Category:** `compile`
842
+ - **CLI exit class:** `3`
843
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
844
+ - **Stability/scope:** `preview-stable` / `public`
845
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
846
+
847
+ **Remediation**
848
+
849
+ 1. Remove or isolate the runtime dependency, use a trusted Pulse capability, or select an explicit JavaScript target when available.
850
+ 2. Pulse will not change targets automatically.
851
+
852
+ <a id="pulse-package-subpath-unsupported"></a>
853
+ ### `PULSE_PACKAGE_SUBPATH_UNSUPPORTED` — Package Subpath Unsupported
854
+
855
+ A Pulse-aware package was imported through a subpath that is not native-lowerable.
856
+
857
+ - **Category:** `compile`
858
+ - **CLI exit class:** `3`
859
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
860
+ - **Stability/scope:** `preview-stable` / `public`
861
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
862
+
863
+ **Remediation**
864
+
865
+ 1. Import the package through its documented Pulse lowerable facade, or keep the package behind a JavaScript-only boundary.
866
+ 2. Run `pulse inspect --json` to review package ownership and native eligibility.
867
+
868
+ <a id="pulse-package-reexport-lowering-deferred"></a>
869
+ ### `PULSE_PACKAGE_REEXPORT_LOWERING_DEFERRED` — Package Reexport Lowering Deferred
870
+
871
+ A package-owned helper is graph-owned but reaches application code through a project re-export whose lowering remains deferred.
872
+
873
+ - **Category:** `compile`
874
+ - **CLI exit class:** `3`
875
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
876
+ - **Stability/scope:** `preview-stable` / `public`
877
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
878
+
879
+ **Remediation**
880
+
881
+ 1. Import the package-owned facade directly until helper/re-export lowering is enabled by the package contract.
882
+ 2. The graph records the owning package; no fallback occurs.
883
+
884
+ <a id="pulse-application-entry-lifecycle-side-effect"></a>
885
+ ### `PULSE_APPLICATION_ENTRY_LIFECYCLE_SIDE_EFFECT` — Application Entry Lifecycle Side Effect
886
+
887
+ The configured application entry graph starts a known provider lifecycle during module evaluation.
888
+
889
+ - **Category:** `compile`
890
+ - **CLI exit class:** `3`
891
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
892
+ - **Stability/scope:** `preview-stable` / `public`
893
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
894
+
895
+ **Remediation**
896
+
897
+ 1. Keep the configured application entry import-safe and move provider lifecycle startup to a separate runner.
898
+ 2. Use the provider lifecycle through CLI delegation rather than starting infrastructure during application import.
899
+
900
+ <a id="pulse-package-binding-ownership-ambiguous"></a>
901
+ ### `PULSE_PACKAGE_BINDING_OWNERSHIP_AMBIGUOUS` — Package Binding Ownership Ambiguous
902
+
903
+ A project binding or re-export resolves to more than one package-owned symbol.
904
+
905
+ - **Category:** `compile`
906
+ - **CLI exit class:** `3`
907
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
908
+ - **Stability/scope:** `preview-stable` / `public`
909
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
910
+
911
+ **Remediation**
912
+
913
+ 1. Remove the ambiguous re-export or give each package-owned helper one unambiguous source owner.
914
+
915
+ <a id="pulse-package-contract-not-recognized"></a>
916
+ ### `PULSE_PACKAGE_CONTRACT_NOT_RECOGNIZED` — Package Contract Not Recognized
917
+
918
+ The graph selected a trusted package contract that the package recognizer did not recover from its owning source module.
919
+
920
+ - **Category:** `compile`
921
+ - **CLI exit class:** `3`
922
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
923
+ - **Stability/scope:** `preview-stable` / `public`
924
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
925
+
926
+ **Remediation**
927
+
928
+ 1. Verify the trusted package manifest and direct facade import, then retain the graph and package diagnostics when reporting the issue.
929
+
930
+ ## Internal diagnostics
931
+
932
+ <a id="pulse-javascript-package-plan-missing"></a>
933
+ ### `PULSE_JAVASCRIPT_PACKAGE_PLAN_MISSING` — Javascript Package Plan Missing
934
+
935
+ The graph selected a package module that is absent from the JavaScript application plan.
936
+
937
+ - **Category:** `internal`
938
+ - **CLI exit class:** `3`
939
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
940
+ - **Stability/scope:** `preview-stable` / `public`
941
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
942
+
943
+ **Remediation**
944
+
945
+ 1. Rebuild the JavaScript plan and retain the graph and plan hashes when reporting the inconsistency.
946
+
947
+ <a id="pulse-javascript-graph-edge-ambiguous"></a>
948
+ ### `PULSE_JAVASCRIPT_GRAPH_EDGE_AMBIGUOUS` — Javascript Graph Edge Ambiguous
949
+
950
+ The sealed JavaScript graph contains more than one runtime edge for the same import.
951
+
952
+ - **Category:** `internal`
953
+ - **CLI exit class:** `3`
954
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
955
+ - **Stability/scope:** `preview-stable` / `public`
956
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
957
+
958
+ **Remediation**
959
+
960
+ 1. Retain the graph manifest and report the duplicate runtime edge.
961
+
962
+ <a id="pulse-javascript-graph-module-missing"></a>
963
+ ### `PULSE_JAVASCRIPT_GRAPH_MODULE_MISSING` — Javascript Graph Module Missing
964
+
965
+ A JavaScript graph edge or entry references a missing graph module.
966
+
967
+ - **Category:** `internal`
968
+ - **CLI exit class:** `3`
969
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
970
+ - **Stability/scope:** `preview-stable` / `public`
971
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
972
+
973
+ **Remediation**
974
+
975
+ 1. Rebuild the JavaScript plan from the exact source tree and retain the graph manifest.
976
+
977
+ <a id="pulse-javascript-module-kind-unsupported"></a>
978
+ ### `PULSE_JAVASCRIPT_MODULE_KIND_UNSUPPORTED` — Javascript Module Kind Unsupported
979
+
980
+ The JavaScript loader encountered a module kind outside its sealed contract.
981
+
982
+ - **Category:** `internal`
983
+ - **CLI exit class:** `3`
984
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
985
+ - **Stability/scope:** `preview-stable` / `public`
986
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
987
+
988
+ **Remediation**
989
+
990
+ 1. Retain the application plan and report the unsupported module kind.
991
+
992
+ ## Safety diagnostics
993
+
994
+ <a id="pulse-javascript-module-outside-workspace"></a>
995
+ ### `PULSE_JAVASCRIPT_MODULE_OUTSIDE_WORKSPACE` — Javascript Module Outside Workspace
996
+
997
+ A graph-owned project module escapes the authoritative workspace.
998
+
999
+ - **Category:** `safety`
1000
+ - **CLI exit class:** `3`
1001
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1002
+ - **Stability/scope:** `preview-stable` / `public`
1003
+ - **Related reference:** [CLI build behavior](cli.md#pulse-build)
1004
+
1005
+ **Remediation**
1006
+
1007
+ 1. Keep every graph-owned project module inside the authoritative Pulse workspace.
1008
+
1009
+ <a id="pulse-javascript-module-source-changed"></a>
1010
+ ### `PULSE_JAVASCRIPT_MODULE_SOURCE_CHANGED` — Javascript Module Source Changed
1011
+
1012
+ A graph-owned project module changed after the JavaScript plan was created.
1013
+
1014
+ - **Category:** `safety`
1015
+ - **CLI exit class:** `3`
1016
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1017
+ - **Stability/scope:** `preview-stable` / `public`
1018
+ - **Related reference:** [CLI build behavior](cli.md#pulse-build)
1019
+
1020
+ **Remediation**
1021
+
1022
+ 1. Rebuild the JavaScript application plan after changing a project module.
1023
+
1024
+ <a id="pulse-build-out-unsafe"></a>
1025
+ ### `PULSE_BUILD_OUT_UNSAFE` — Build Out Unsafe
1026
+
1027
+ The resolved build output can escape or alias outside the project root.
1028
+
1029
+ - **Category:** `safety`
1030
+ - **CLI exit class:** `2`
1031
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1032
+ - **Stability/scope:** `preview-stable` / `public`
1033
+ - **Related reference:** [CLI build behavior](cli.md#pulse-build)
1034
+
1035
+ **Remediation**
1036
+
1037
+ 1. Choose an output directory that is a real child of the project root.
1038
+ 2. Do not use `..`, external absolute paths, or symbolic-link traversal.
1039
+
1040
+ ## Provider diagnostics
1041
+
1042
+ <a id="pulse-provider-unsupported"></a>
1043
+ ### `PULSE_PROVIDER_UNSUPPORTED` — Provider Unsupported
1044
+
1045
+ The selected provider value is not a supported shorthand or package selection.
1046
+
1047
+ - **Category:** `provider`
1048
+ - **CLI exit class:** `2`
1049
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1050
+ - **Stability/scope:** `preview-stable` / `public`
1051
+ - **Related reference:** [Fastly provider configuration](project-config.md#fastly-provider-options)
1052
+
1053
+ **Remediation**
1054
+
1055
+ 1. Select a bare provider id or an exact installed scoped provider package name.
1056
+
1057
+ <a id="pulse-provider-package-not-found"></a>
1058
+ ### `PULSE_PROVIDER_PACKAGE_NOT_FOUND` — Provider Package Not Found
1059
+
1060
+ The exact configured provider package does not expose a resolvable toolchain entry.
1061
+
1062
+ - **Category:** `provider`
1063
+ - **CLI exit class:** `2`
1064
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1065
+ - **Stability/scope:** `preview-stable` / `public`
1066
+ - **Related reference:** [Fastly provider configuration](project-config.md#fastly-provider-options)
1067
+
1068
+ **Remediation**
1069
+
1070
+ 1. Install the exact configured provider package in the project.
1071
+ 2. Confirm that its package manifest exports `./toolchain`.
1072
+
1073
+ <a id="pulse-provider-toolchain-load-failed"></a>
1074
+ ### `PULSE_PROVIDER_TOOLCHAIN_LOAD_FAILED` — Provider Toolchain Load Failed
1075
+
1076
+ The selected provider package toolchain failed while loading.
1077
+
1078
+ - **Category:** `provider`
1079
+ - **CLI exit class:** `3`
1080
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1081
+ - **Stability/scope:** `preview-stable` / `public`
1082
+ - **Related reference:** [Fastly provider configuration](project-config.md#fastly-provider-options)
1083
+
1084
+ **Remediation**
1085
+
1086
+ 1. Inspect the selected provider package and its dependency installation.
1087
+ 2. Treat provider toolchains as trusted project build code.
1088
+
1089
+ <a id="pulse-provider-toolchain-invalid"></a>
1090
+ ### `PULSE_PROVIDER_TOOLCHAIN_INVALID` — Provider Toolchain Invalid
1091
+
1092
+ The selected provider package does not satisfy the versioned toolchain contract.
1093
+
1094
+ - **Category:** `provider`
1095
+ - **CLI exit class:** `3`
1096
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1097
+ - **Stability/scope:** `preview-stable` / `public`
1098
+ - **Related reference:** [Fastly provider configuration](project-config.md#fastly-provider-options)
1099
+
1100
+ **Remediation**
1101
+
1102
+ 1. Use a provider package implementing `pulse.provider-toolchain.v1` at `./toolchain`.
1103
+ 2. Confirm the declared package name, provider id, and driver shape.
1104
+
1105
+ <a id="pulse-build-provider-required"></a>
1106
+ ### `PULSE_BUILD_PROVIDER_REQUIRED` — Build Provider Required
1107
+
1108
+ pulse build requires a configured deployment provider; provider-neutral output belongs to pulse compile.
1109
+
1110
+ - **Category:** `provider`
1111
+ - **CLI exit class:** `2`
1112
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1113
+ - **Stability/scope:** `preview-stable` / `public`
1114
+ - **Related reference:** [Fastly provider configuration](project-config.md#fastly-provider-options)
1115
+
1116
+ **Remediation**
1117
+
1118
+ 1. Select an executable host in the active `.pulse/config.ts` profile.
1119
+ 2. Use `pulse compile` when only provider-neutral Wasm is required.
1120
+
1121
+ <a id="pulse-fastly-event-ingress-unsupported"></a>
1122
+ ### `PULSE_FASTLY_EVENT_INGRESS_UNSUPPORTED` — Fastly Event Ingress Unsupported
1123
+
1124
+ Fastly does not expose the host-neutral event ingress required by the application.
1125
+
1126
+ - **Category:** `provider`
1127
+ - **CLI exit class:** `3`
1128
+ - **Development HTTP status:** `501`
1129
+ - **Stability/scope:** `preview-stable` / `public`
1130
+ - **Related reference:** [Fastly provider configuration](project-config.md#fastly-provider-options)
1131
+
1132
+ **Remediation**
1133
+
1134
+ 1. Select Node JavaScript or Node Native for event execution, or use `none` for compile-only inspection.
1135
+ 2. Do not map event ingress through HTTP or GRIP.
1136
+
1137
+ <a id="pulse-fastly-event-emit-unsupported"></a>
1138
+ ### `PULSE_FASTLY_EVENT_EMIT_UNSUPPORTED` — Fastly Event Emit Unsupported
1139
+
1140
+ Fastly does not expose the host-neutral event acceptance operation required by the application.
1141
+
1142
+ - **Category:** `provider`
1143
+ - **CLI exit class:** `3`
1144
+ - **Development HTTP status:** `501`
1145
+ - **Stability/scope:** `preview-stable` / `public`
1146
+ - **Related reference:** [Fastly provider configuration](project-config.md#fastly-provider-options)
1147
+
1148
+ **Remediation**
1149
+
1150
+ 1. Remove the reachable event.emit requirement or select Node JavaScript or Node Native.
1151
+ 2. Pulse will not substitute logging, HTTP, GRIP, or another target.
1152
+
1153
+ <a id="pulse-fastly-backend-required"></a>
1154
+ ### `PULSE_FASTLY_BACKEND_REQUIRED` — Fastly Backend Required
1155
+
1156
+ A static Fastly outbound origin has no configured backend and dynamic backends are disabled.
1157
+
1158
+ - **Category:** `provider`
1159
+ - **CLI exit class:** `3`
1160
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1161
+ - **Stability/scope:** `preview-stable` / `public`
1162
+ - **Related reference:** [Fastly provider configuration](project-config.md#fastly-provider-options)
1163
+
1164
+ **Remediation**
1165
+
1166
+ 1. Declare a static Fastly backend binding for the requested origin, or explicitly enable dynamic backends.
1167
+
1168
+ <a id="pulse-fastly-backend-bindings-invalid"></a>
1169
+ ### `PULSE_FASTLY_BACKEND_BINDINGS_INVALID` — Fastly Backend Bindings Invalid
1170
+
1171
+ The Fastly backend binding map is not a valid string-to-string mapping.
1172
+
1173
+ - **Category:** `provider`
1174
+ - **CLI exit class:** `2`
1175
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1176
+ - **Stability/scope:** `preview-stable` / `public`
1177
+ - **Related reference:** [Fastly provider configuration](project-config.md#fastly-provider-options)
1178
+
1179
+ **Remediation**
1180
+
1181
+ 1. Correct the Fastly `backends` map in the active `.pulse/config.ts` profile.
1182
+
1183
+ <a id="pulse-fastly-kv-bindings-invalid"></a>
1184
+ ### `PULSE_FASTLY_KV_BINDINGS_INVALID` — Fastly KV Bindings Invalid
1185
+
1186
+ The Fastly KV binding map is not a valid string-to-string mapping.
1187
+
1188
+ - **Category:** `provider`
1189
+ - **CLI exit class:** `2`
1190
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1191
+ - **Stability/scope:** `preview-stable` / `public`
1192
+ - **Related reference:** [Fastly provider configuration](project-config.md#fastly-provider-options)
1193
+
1194
+ **Remediation**
1195
+
1196
+ 1. Correct the Fastly `kv` binding map in the active `.pulse/config.ts` profile.
1197
+
1198
+ <a id="pulse-fastly-grip-fanout-backend-required"></a>
1199
+ ### `PULSE_FASTLY_GRIP_FANOUT_BACKEND_REQUIRED` — Fastly GRIP Fanout Backend Required
1200
+
1201
+ A GRIP hold operation requires a configured Fastly Fanout backend.
1202
+
1203
+ - **Category:** `provider`
1204
+ - **CLI exit class:** `3`
1205
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1206
+ - **Stability/scope:** `preview-stable` / `public`
1207
+ - **Related reference:** [Fastly provider configuration](project-config.md#fastly-provider-options)
1208
+
1209
+ **Remediation**
1210
+
1211
+ 1. Configure the Fastly Fanout backend required by `grip.hold`.
1212
+
1213
+ <a id="pulse-fastly-grip-publish-binding-required"></a>
1214
+ ### `PULSE_FASTLY_GRIP_PUBLISH_BINDING_REQUIRED` — Fastly GRIP Publish Binding Required
1215
+
1216
+ A GRIP publish operation requires configured Fastly publish URL and backend bindings.
1217
+
1218
+ - **Category:** `provider`
1219
+ - **CLI exit class:** `3`
1220
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1221
+ - **Stability/scope:** `preview-stable` / `public`
1222
+ - **Related reference:** [Fastly provider configuration](project-config.md#fastly-provider-options)
1223
+
1224
+ **Remediation**
1225
+
1226
+ 1. Configure the Fastly GRIP publish backend and URL binding.
1227
+
1228
+ ## Toolchain diagnostics
1229
+
1230
+ <a id="pulse-node-version-unsupported"></a>
1231
+ ### `PULSE_NODE_VERSION_UNSUPPORTED` — Node Version Unsupported
1232
+
1233
+ The active Node.js version is outside the supported release range.
1234
+
1235
+ - **Category:** `toolchain`
1236
+ - **CLI exit class:** `5`
1237
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1238
+ - **Stability/scope:** `preview-stable` / `public`
1239
+ - **Related reference:** [CLI doctor behavior](cli.md#pulse-doctor)
1240
+
1241
+ **Remediation**
1242
+
1243
+ 1. Use a Node.js version matching `^22.14.0 || ^24.0.0` and rerun `pulse doctor`.
1244
+
1245
+ <a id="pulse-fetch-implementation-unavailable"></a>
1246
+ ### `PULSE_FETCH_IMPLEMENTATION_UNAVAILABLE` — Fetch Implementation Unavailable
1247
+
1248
+ No supported local fetch implementation is available for the requested operation.
1249
+
1250
+ - **Category:** `toolchain`
1251
+ - **CLI exit class:** `5`
1252
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1253
+ - **Stability/scope:** `preview-stable` / `public`
1254
+ - **Related reference:** [CLI doctor behavior](cli.md#pulse-doctor)
1255
+
1256
+ **Remediation**
1257
+
1258
+ 1. Use a Node.js version matching `^22.14.0 || ^24.0.0`, or disable live network fetch and configure deterministic fetch fixtures.
1259
+
1260
+ <a id="pulse-canonical-native-compile-failed"></a>
1261
+ ### `PULSE_CANONICAL_NATIVE_COMPILE_FAILED` — Canonical Native Compile Failed
1262
+
1263
+ The provider-neutral native plan could not be compiled into Pulse-owned WebAssembly.
1264
+
1265
+ - **Category:** `toolchain`
1266
+ - **CLI exit class:** `5`
1267
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1268
+ - **Stability/scope:** `preview-stable` / `public`
1269
+ - **Related reference:** [CLI doctor behavior](cli.md#pulse-doctor)
1270
+
1271
+ **Remediation**
1272
+
1273
+ 1. Restore the lockfile-pinned AssemblyScript dependency and rerun `pulse doctor`.
1274
+ 2. Retain the generated diagnostic detail if AssemblyScript rejects valid Pulse output.
1275
+
1276
+ <a id="pulse-fastly-cli-unavailable"></a>
1277
+ ### `PULSE_FASTLY_CLI_UNAVAILABLE` — Fastly CLI Unavailable
1278
+
1279
+ The Fastly executable required for local target execution is unavailable.
1280
+
1281
+ - **Category:** `toolchain`
1282
+ - **CLI exit class:** `5`
1283
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1284
+ - **Stability/scope:** `preview-stable` / `public`
1285
+ - **Related reference:** [CLI doctor behavior](cli.md#pulse-doctor)
1286
+
1287
+ **Remediation**
1288
+
1289
+ 1. Install the Fastly CLI with Homebrew, a supported package manager, or an official release.
1290
+ 2. Ensure `fastly` is on PATH, or set `PULSE_FASTLY_BIN` in CI.
1291
+
1292
+ <a id="pulse-fastly-cli-inspection-failed"></a>
1293
+ ### `PULSE_FASTLY_CLI_INSPECTION_FAILED` — Fastly CLI Inspection Failed
1294
+
1295
+ Pulse could not inspect the installed Fastly CLI version.
1296
+
1297
+ - **Category:** `toolchain`
1298
+ - **CLI exit class:** `5`
1299
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1300
+ - **Stability/scope:** `preview-stable` / `public`
1301
+ - **Related reference:** [CLI doctor behavior](cli.md#pulse-doctor)
1302
+
1303
+ **Remediation**
1304
+
1305
+ 1. Run `fastly version` directly and fix the Fastly CLI installation.
1306
+
1307
+ <a id="pulse-viceroy-unavailable"></a>
1308
+ ### `PULSE_VICEROY_UNAVAILABLE` — Viceroy Unavailable
1309
+
1310
+ The explicitly selected Viceroy override is unavailable.
1311
+
1312
+ - **Category:** `toolchain`
1313
+ - **CLI exit class:** `5`
1314
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1315
+ - **Stability/scope:** `preview-stable` / `public`
1316
+ - **Related reference:** [CLI doctor behavior](cli.md#pulse-doctor)
1317
+
1318
+ **Remediation**
1319
+
1320
+ 1. Unset `PULSE_VICEROY_BIN` to let the Fastly CLI manage its local Compute engine.
1321
+ 2. If an override is required, point `PULSE_VICEROY_BIN` at an executable Viceroy binary.
1322
+
1323
+ <a id="pulse-viceroy-inspection-failed"></a>
1324
+ ### `PULSE_VICEROY_INSPECTION_FAILED` — Viceroy Inspection Failed
1325
+
1326
+ Pulse could not inspect the explicitly selected Viceroy override.
1327
+
1328
+ - **Category:** `toolchain`
1329
+ - **CLI exit class:** `5`
1330
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1331
+ - **Stability/scope:** `preview-stable` / `public`
1332
+ - **Related reference:** [CLI doctor behavior](cli.md#pulse-doctor)
1333
+
1334
+ **Remediation**
1335
+
1336
+ 1. Inspect or replace the explicitly selected Viceroy override, or unset it to restore Fastly CLI ownership.
1337
+
1338
+ <a id="pulse-fastly-serve-start-failed"></a>
1339
+ ### `PULSE_FASTLY_SERVE_START_FAILED` — Fastly Serve Start Failed
1340
+
1341
+ The Fastly local Compute service failed before becoming ready.
1342
+
1343
+ - **Category:** `toolchain`
1344
+ - **CLI exit class:** `5`
1345
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1346
+ - **Stability/scope:** `preview-stable` / `public`
1347
+ - **Related reference:** [CLI doctor behavior](cli.md#pulse-doctor)
1348
+
1349
+ **Remediation**
1350
+
1351
+ 1. Run `fastly compute serve` directly in the generated package and inspect its output.
1352
+
1353
+ <a id="pulse-fastly-serve-start-timeout"></a>
1354
+ ### `PULSE_FASTLY_SERVE_START_TIMEOUT` — Fastly Serve Start Timeout
1355
+
1356
+ The Fastly local Compute service did not become ready before its startup timeout.
1357
+
1358
+ - **Category:** `toolchain`
1359
+ - **CLI exit class:** `5`
1360
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1361
+ - **Stability/scope:** `preview-stable` / `public`
1362
+ - **Related reference:** [CLI doctor behavior](cli.md#pulse-doctor)
1363
+
1364
+ **Remediation**
1365
+
1366
+ 1. Inspect Fastly CLI output and local port availability, then retry.
1367
+
1368
+ <a id="pulse-fastly-request-timeout"></a>
1369
+ ### `PULSE_FASTLY_REQUEST_TIMEOUT` — Fastly Request Timeout
1370
+
1371
+ A request to the local Fastly Compute service exceeded its timeout.
1372
+
1373
+ - **Category:** `toolchain`
1374
+ - **CLI exit class:** `5`
1375
+ - **Development HTTP status:** `504`
1376
+ - **Stability/scope:** `preview-stable` / `public`
1377
+ - **Related reference:** [CLI doctor behavior](cli.md#pulse-doctor)
1378
+
1379
+ **Remediation**
1380
+
1381
+ 1. Inspect the local Fastly Compute service and backend fixture before retrying.
1382
+
1383
+ ## Schema diagnostics
1384
+
1385
+ <a id="pulse-schema-compile-failed"></a>
1386
+ ### `PULSE_SCHEMA_COMPILE_FAILED` — Schema Compile Failed
1387
+
1388
+ An explicitly declared JSON schema could not be compiled.
1389
+
1390
+ - **Category:** `schema`
1391
+ - **CLI exit class:** `3`
1392
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1393
+ - **Stability/scope:** `preview-stable` / `public`
1394
+ - **Related reference:** [Project schema configuration](project-config.md#json-schema-policy)
1395
+
1396
+ **Remediation**
1397
+
1398
+ 1. Fix the declared schema source, exported type, or supported field shape.
1399
+ 2. Run `pulse doctor --json` to inspect schema diagnostics.
1400
+
1401
+ <a id="pulse-canonical-schema-missing"></a>
1402
+ ### `PULSE_CANONICAL_SCHEMA_MISSING` — Canonical Schema Missing
1403
+
1404
+ The handler references a schema ID that is absent from project configuration.
1405
+
1406
+ - **Category:** `schema`
1407
+ - **CLI exit class:** `3`
1408
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1409
+ - **Stability/scope:** `preview-stable` / `public`
1410
+ - **Related reference:** [Project schema configuration](project-config.md#json-schema-policy)
1411
+
1412
+ **Remediation**
1413
+
1414
+ 1. Declare the referenced schema ID in the default-exported registry selected by pulse.schema.
1415
+
1416
+ <a id="pulse-schema-json-declarations-retired"></a>
1417
+ ### `PULSE_SCHEMA_JSON_DECLARATIONS_RETIRED` — Schema JSON Declarations Retired
1418
+
1419
+ Legacy jsonSchemas declarations are no longer accepted as schema authority.
1420
+
1421
+ - **Category:** `schema`
1422
+ - **CLI exit class:** `2`
1423
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1424
+ - **Stability/scope:** `preview-stable` / `public`
1425
+ - **Related reference:** [Project schema configuration](project-config.md#json-schema-policy)
1426
+
1427
+ **Remediation**
1428
+
1429
+ 1. Move schema declarations into a default-exported defineSchemaRegistry(...) module.
1430
+ 2. Point pulse.schema at that workspace-relative module.
1431
+
1432
+ <a id="pulse-schema-codec-realization-pending"></a>
1433
+ ### `PULSE_SCHEMA_CODEC_REALIZATION_PENDING` — Schema Codec Realization Pending
1434
+
1435
+ The selected schema shape cannot be realized by every configured execution target.
1436
+
1437
+ - **Category:** `schema`
1438
+ - **CLI exit class:** `3`
1439
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1440
+ - **Stability/scope:** `preview-stable` / `public`
1441
+ - **Related reference:** [Project schema configuration](project-config.md#json-schema-policy)
1442
+
1443
+ **Remediation**
1444
+
1445
+ 1. Rebuild from the authoritative pulse.schema registry with a compiler that realizes the declared shape on both targets.
1446
+ 2. Pulse will not fall back to generic JSON automatically.
1447
+
1448
+ <a id="pulse-canonical-schema-id-literal-required"></a>
1449
+ ### `PULSE_CANONICAL_SCHEMA_ID_LITERAL_REQUIRED` — Canonical Schema Id Literal Required
1450
+
1451
+ A schema operation uses a value that is not a static string literal ID.
1452
+
1453
+ - **Category:** `schema`
1454
+ - **CLI exit class:** `3`
1455
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1456
+ - **Stability/scope:** `preview-stable` / `public`
1457
+ - **Related reference:** [Project schema configuration](project-config.md#json-schema-policy)
1458
+
1459
+ **Remediation**
1460
+
1461
+ 1. Use a static string literal for the schema ID.
1462
+
1463
+ <a id="pulse-schema-id-invalid"></a>
1464
+ ### `PULSE_SCHEMA_ID_INVALID` — Schema Id Invalid
1465
+
1466
+ A schema-bound operation received an invalid schema ID.
1467
+
1468
+ - **Category:** `schema`
1469
+ - **CLI exit class:** `3`
1470
+ - **Development HTTP status:** `500`
1471
+ - **Stability/scope:** `preview-stable` / `public`
1472
+ - **Related reference:** [Project schema configuration](project-config.md#json-schema-policy)
1473
+
1474
+ **Remediation**
1475
+
1476
+ 1. Use a non-empty schema ID declared by the authoritative pulse.schema registry.
1477
+
1478
+ <a id="pulse-schema-required"></a>
1479
+ ### `PULSE_SCHEMA_REQUIRED` — Schema Required
1480
+
1481
+ Strict JSON operation omitted its required registered schema ID.
1482
+
1483
+ - **Category:** `schema`
1484
+ - **CLI exit class:** `3`
1485
+ - **Development HTTP status:** `500`
1486
+ - **Stability/scope:** `preview-stable` / `public`
1487
+ - **Related reference:** [Project schema configuration](project-config.md#json-schema-policy)
1488
+
1489
+ **Remediation**
1490
+
1491
+ 1. Supply a statically declared schema ID at every strict JSON boundary.
1492
+
1493
+ <a id="pulse-schema-reference"></a>
1494
+ ### `PULSE_SCHEMA_REFERENCE` — Schema Reference
1495
+
1496
+ A JSON operation references a schema absent from the compiled codec table.
1497
+
1498
+ - **Category:** `schema`
1499
+ - **CLI exit class:** `3`
1500
+ - **Development HTTP status:** `500`
1501
+ - **Stability/scope:** `preview-stable` / `public`
1502
+ - **Related reference:** [Project schema configuration](project-config.md#json-schema-policy)
1503
+
1504
+ **Remediation**
1505
+
1506
+ 1. Reference an ID declared by the authoritative pulse.schema registry.
1507
+
1508
+ <a id="pulse-schema-codecs-unavailable"></a>
1509
+ ### `PULSE_SCHEMA_CODECS_UNAVAILABLE` — Schema Codecs Unavailable
1510
+
1511
+ A schema-bound JSON operation has no compiled codec table.
1512
+
1513
+ - **Category:** `schema`
1514
+ - **CLI exit class:** `3`
1515
+ - **Development HTTP status:** `500`
1516
+ - **Stability/scope:** `preview-stable` / `public`
1517
+ - **Related reference:** [Project schema configuration](project-config.md#json-schema-policy)
1518
+
1519
+ **Remediation**
1520
+
1521
+ 1. Rebuild or redeploy the application with its generated schema codec table.
1522
+
1523
+ <a id="pulse-response-case-missing"></a>
1524
+ ### `PULSE_RESPONSE_CASE_MISSING` — Response Case Missing
1525
+
1526
+ The handler references a response case absent from pulse.schema.
1527
+
1528
+ - **Category:** `schema`
1529
+ - **CLI exit class:** `3`
1530
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1531
+ - **Stability/scope:** `preview-stable` / `public`
1532
+ - **Related reference:** [Project schema configuration](project-config.md#json-schema-policy)
1533
+
1534
+ **Remediation**
1535
+
1536
+ 1. Declare the referenced response case in pulse.schema.
1537
+
1538
+ <a id="pulse-response-case-reference"></a>
1539
+ ### `PULSE_RESPONSE_CASE_REFERENCE` — Response Case Reference
1540
+
1541
+ A runtime JSON response references an unknown compiled response case.
1542
+
1543
+ - **Category:** `schema`
1544
+ - **CLI exit class:** `3`
1545
+ - **Development HTTP status:** `500`
1546
+ - **Stability/scope:** `preview-stable` / `public`
1547
+ - **Related reference:** [Project schema configuration](project-config.md#json-schema-policy)
1548
+
1549
+ **Remediation**
1550
+
1551
+ 1. Use a response-case ID declared by pulse.schema.
1552
+
1553
+ <a id="pulse-response-descriptor-invalid"></a>
1554
+ ### `PULSE_RESPONSE_DESCRIPTOR_INVALID` — Response Descriptor Invalid
1555
+
1556
+ A runtime JSON response received an invalid descriptor.
1557
+
1558
+ - **Category:** `schema`
1559
+ - **CLI exit class:** `3`
1560
+ - **Development HTTP status:** `500`
1561
+ - **Stability/scope:** `preview-stable` / `public`
1562
+ - **Related reference:** [Project schema configuration](project-config.md#json-schema-policy)
1563
+
1564
+ **Remediation**
1565
+
1566
+ 1. Pass an object descriptor or a registered response-case string to ctx.json.
1567
+
1568
+ <a id="pulse-response-descriptor-literal-required"></a>
1569
+ ### `PULSE_RESPONSE_DESCRIPTOR_LITERAL_REQUIRED` — Response Descriptor Literal Required
1570
+
1571
+ A JSON response descriptor cannot be resolved statically.
1572
+
1573
+ - **Category:** `schema`
1574
+ - **CLI exit class:** `3`
1575
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1576
+ - **Stability/scope:** `preview-stable` / `public`
1577
+ - **Related reference:** [Project schema configuration](project-config.md#json-schema-policy)
1578
+
1579
+ **Remediation**
1580
+
1581
+ 1. Use an object literal or a registered response-case string literal as the ctx.json response descriptor.
1582
+
1583
+ <a id="pulse-schema-id-duplicate"></a>
1584
+ ### `PULSE_SCHEMA_ID_DUPLICATE` — Schema Id Duplicate
1585
+
1586
+ Two or more configured schema declarations use the same stable ID.
1587
+
1588
+ - **Category:** `schema`
1589
+ - **CLI exit class:** `3`
1590
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1591
+ - **Stability/scope:** `preview-stable` / `public`
1592
+ - **Related reference:** [Project schema configuration](project-config.md#json-schema-policy)
1593
+
1594
+ **Remediation**
1595
+
1596
+ 1. Give every declared schema a unique stable ID.
1597
+
1598
+ <a id="pulse-schema-source-required"></a>
1599
+ ### `PULSE_SCHEMA_SOURCE_REQUIRED` — Schema Source Required
1600
+
1601
+ A schema declaration is missing its project-relative TypeScript source file.
1602
+
1603
+ - **Category:** `schema`
1604
+ - **CLI exit class:** `3`
1605
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1606
+ - **Stability/scope:** `preview-stable` / `public`
1607
+ - **Related reference:** [Project schema configuration](project-config.md#json-schema-policy)
1608
+
1609
+ **Remediation**
1610
+
1611
+ 1. Set the schema declaration `source` to a project-relative TypeScript file.
1612
+
1613
+ <a id="pulse-schema-type-required"></a>
1614
+ ### `PULSE_SCHEMA_TYPE_REQUIRED` — Schema Type Required
1615
+
1616
+ A schema declaration is missing its exported TypeScript type name.
1617
+
1618
+ - **Category:** `schema`
1619
+ - **CLI exit class:** `3`
1620
+ - **Development HTTP status:** `500 fallback when surfaced by the development server`
1621
+ - **Stability/scope:** `preview-stable` / `public`
1622
+ - **Related reference:** [Project schema configuration](project-config.md#json-schema-policy)
1623
+
1624
+ **Remediation**
1625
+
1626
+ 1. Set the schema declaration `type` to an exported TypeScript type name.
1627
+
1628
+ ## Request diagnostics
1629
+
1630
+ <a id="pulse-schema-content-type"></a>
1631
+ ### `PULSE_SCHEMA_CONTENT_TYPE` — Schema Content Type
1632
+
1633
+ A schema-bound JSON input uses a content type rejected by policy.
1634
+
1635
+ - **Category:** `request`
1636
+ - **CLI exit class:** `4`
1637
+ - **Development HTTP status:** `415`
1638
+ - **Stability/scope:** `preview-stable` / `public`
1639
+ - **Related reference:** [Body and schema troubleshooting](../guides/troubleshooting.md)
1640
+
1641
+ **Remediation**
1642
+
1643
+ 1. Send a JSON content type accepted by the configured schema policy.
1644
+
1645
+ <a id="pulse-schema-json-malformed"></a>
1646
+ ### `PULSE_SCHEMA_JSON_MALFORMED` — Schema JSON Malformed
1647
+
1648
+ A schema-bound JSON input is not syntactically valid JSON.
1649
+
1650
+ - **Category:** `request`
1651
+ - **CLI exit class:** `4`
1652
+ - **Development HTTP status:** `400`
1653
+ - **Stability/scope:** `preview-stable` / `public`
1654
+ - **Related reference:** [Body and schema troubleshooting](../guides/troubleshooting.md)
1655
+
1656
+ **Remediation**
1657
+
1658
+ 1. Send syntactically valid JSON before schema validation.
1659
+
1660
+ <a id="pulse-body-decode"></a>
1661
+ ### `PULSE_BODY_DECODE` — Body Decode
1662
+
1663
+ A structured request body could not be decoded in the requested representation.
1664
+
1665
+ - **Category:** `request`
1666
+ - **CLI exit class:** `4`
1667
+ - **Development HTTP status:** `400`
1668
+ - **Stability/scope:** `preview-stable` / `public`
1669
+ - **Related reference:** [Body and schema troubleshooting](../guides/troubleshooting.md)
1670
+
1671
+ **Remediation**
1672
+
1673
+ 1. Send valid JSON or text matching the documented request shape.
1674
+
1675
+ <a id="pulse-schema-decode"></a>
1676
+ ### `PULSE_SCHEMA_DECODE` — Schema Decode
1677
+
1678
+ JSON input did not satisfy the explicitly declared schema and content-type policy.
1679
+
1680
+ - **Category:** `request`
1681
+ - **CLI exit class:** `4`
1682
+ - **Development HTTP status:** `400`
1683
+ - **Stability/scope:** `preview-stable` / `public`
1684
+ - **Related reference:** [Body and schema troubleshooting](../guides/troubleshooting.md)
1685
+
1686
+ **Remediation**
1687
+
1688
+ 1. Send JSON with the required content type and schema fields.
1689
+ 2. Use `pulse test` with a failing case to reproduce the validation error locally.
1690
+
1691
+ <a id="pulse-body-too-large"></a>
1692
+ ### `PULSE_BODY_TOO_LARGE` — Body Too Large
1693
+
1694
+ A structured body exceeded the configured bounded-body limit.
1695
+
1696
+ - **Category:** `request`
1697
+ - **CLI exit class:** `4`
1698
+ - **Development HTTP status:** `413`
1699
+ - **Stability/scope:** `preview-stable` / `public`
1700
+ - **Related reference:** [Body and schema troubleshooting](../guides/troubleshooting.md)
1701
+
1702
+ **Remediation**
1703
+
1704
+ 1. Reduce the request payload or increase the configured structured-body limit deliberately.
1705
+
1706
+ <a id="pulse-request-body-too-large"></a>
1707
+ ### `PULSE_REQUEST_BODY_TOO_LARGE` — Request Body Too Large
1708
+
1709
+ An incoming development request exceeded dev.maxBodyBytes.
1710
+
1711
+ - **Category:** `request`
1712
+ - **CLI exit class:** `4`
1713
+ - **Development HTTP status:** `413`
1714
+ - **Stability/scope:** `preview-stable` / `public`
1715
+ - **Related reference:** [Body and schema troubleshooting](../guides/troubleshooting.md)
1716
+
1717
+ **Remediation**
1718
+
1719
+ 1. Reduce the request payload or increase `dev.maxBodyBytes` deliberately.
1720
+
1721
+ ## Runtime diagnostics
1722
+
1723
+ <a id="pulse-fetch-schema-without-json"></a>
1724
+ ### `PULSE_FETCH_SCHEMA_WITHOUT_JSON` — Fetch Schema Without JSON
1725
+
1726
+ An outbound fetch schema was supplied without a semantic JSON payload.
1727
+
1728
+ - **Category:** `runtime`
1729
+ - **CLI exit class:** `4`
1730
+ - **Development HTTP status:** `500`
1731
+ - **Stability/scope:** `preview-stable` / `public`
1732
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
1733
+
1734
+ **Remediation**
1735
+
1736
+ 1. Use schema only together with the outbound fetch json field.
1737
+
1738
+ <a id="pulse-body-unavailable"></a>
1739
+ ### `PULSE_BODY_UNAVAILABLE` — Body Unavailable
1740
+
1741
+ A structured body was requested when the provider had not supplied one.
1742
+
1743
+ - **Category:** `runtime`
1744
+ - **CLI exit class:** `4`
1745
+ - **Development HTTP status:** `500`
1746
+ - **Stability/scope:** `preview-stable` / `public`
1747
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
1748
+
1749
+ **Remediation**
1750
+
1751
+ 1. Ensure the provider supplied a structured body snapshot before decoding it.
1752
+
1753
+ <a id="pulse-opaque-body-inspection"></a>
1754
+ ### `PULSE_OPAQUE_BODY_INSPECTION` — Opaque Body Inspection
1755
+
1756
+ Application code attempted to inspect or transform an opaque host-owned body.
1757
+
1758
+ - **Category:** `runtime`
1759
+ - **CLI exit class:** `4`
1760
+ - **Development HTTP status:** `400`
1761
+ - **Stability/scope:** `preview-stable` / `public`
1762
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
1763
+
1764
+ **Remediation**
1765
+
1766
+ 1. Return or proxy the opaque response directly; do not call JSON, text, bytes, or transform helpers.
1767
+
1768
+ <a id="pulse-response-encode"></a>
1769
+ ### `PULSE_RESPONSE_ENCODE` — Response Encode
1770
+
1771
+ The selected response encoder cannot represent the returned value.
1772
+
1773
+ - **Category:** `runtime`
1774
+ - **CLI exit class:** `4`
1775
+ - **Development HTTP status:** `500`
1776
+ - **Stability/scope:** `preview-stable` / `public`
1777
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
1778
+
1779
+ **Remediation**
1780
+
1781
+ 1. Return a value supported by the selected response or schema encoder.
1782
+
1783
+ <a id="pulse-schema-encode"></a>
1784
+ ### `PULSE_SCHEMA_ENCODE` — Schema Encode
1785
+
1786
+ The returned value does not satisfy its declared response schema.
1787
+
1788
+ - **Category:** `runtime`
1789
+ - **CLI exit class:** `4`
1790
+ - **Development HTTP status:** `500`
1791
+ - **Stability/scope:** `preview-stable` / `public`
1792
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
1793
+
1794
+ **Remediation**
1795
+
1796
+ 1. Return a value that satisfies the declared response schema.
1797
+
1798
+ <a id="pulse-fetch-timeout"></a>
1799
+ ### `PULSE_FETCH_TIMEOUT` — Fetch Timeout
1800
+
1801
+ An outbound fetch did not complete before its timeout.
1802
+
1803
+ - **Category:** `runtime`
1804
+ - **CLI exit class:** `4`
1805
+ - **Development HTTP status:** `504`
1806
+ - **Stability/scope:** `preview-stable` / `public`
1807
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
1808
+
1809
+ **Remediation**
1810
+
1811
+ 1. Check the origin and timeout policy, then retry.
1812
+ 2. Use a configured fetch fixture in tests for deterministic reproduction.
1813
+
1814
+ <a id="pulse-fetch-network"></a>
1815
+ ### `PULSE_FETCH_NETWORK` — Fetch Network
1816
+
1817
+ An outbound fetch failed because the origin or network was unavailable.
1818
+
1819
+ - **Category:** `runtime`
1820
+ - **CLI exit class:** `4`
1821
+ - **Development HTTP status:** `502`
1822
+ - **Stability/scope:** `preview-stable` / `public`
1823
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
1824
+
1825
+ **Remediation**
1826
+
1827
+ 1. Check the origin URL, backend binding, and local network access.
1828
+
1829
+ <a id="pulse-fetch-url-invalid"></a>
1830
+ ### `PULSE_FETCH_URL_INVALID` — Fetch URL Invalid
1831
+
1832
+ An outbound fetch uses an invalid or unsupported URL.
1833
+
1834
+ - **Category:** `runtime`
1835
+ - **CLI exit class:** `4`
1836
+ - **Development HTTP status:** `400`
1837
+ - **Stability/scope:** `preview-stable` / `public`
1838
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
1839
+
1840
+ **Remediation**
1841
+
1842
+ 1. Use an absolute supported URL or a correctly configured provider backend.
1843
+
1844
+ <a id="pulse-continuation-expired"></a>
1845
+ ### `PULSE_CONTINUATION_EXPIRED` — Continuation Expired
1846
+
1847
+ A pending continuation exceeded its configured lifetime before resumption.
1848
+
1849
+ - **Category:** `runtime`
1850
+ - **CLI exit class:** `4`
1851
+ - **Development HTTP status:** `504`
1852
+ - **Stability/scope:** `preview-stable` / `public`
1853
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
1854
+
1855
+ **Remediation**
1856
+
1857
+ 1. Increase the continuation TTL only if the provider operation is expected to take longer.
1858
+
1859
+ <a id="pulse-continuation-double-resume"></a>
1860
+ ### `PULSE_CONTINUATION_DOUBLE_RESUME` — Continuation Double Resume
1861
+
1862
+ A provider attempted to resume the same continuation more than once.
1863
+
1864
+ - **Category:** `runtime`
1865
+ - **CLI exit class:** `4`
1866
+ - **Development HTTP status:** `500`
1867
+ - **Stability/scope:** `preview-stable` / `public`
1868
+ - **Related reference:** [Troubleshooting](../guides/troubleshooting.md)
1869
+
1870
+ **Remediation**
1871
+
1872
+ 1. Report this as a Pulse runtime/provider bug with the continuation trace.