1use crate::CodeMeta;
9
10pub const WARN_AUBE_PNPMFILE_NOT_FOUND: &str = "WARN_AUBE_PNPMFILE_NOT_FOUND";
12pub const WARN_AUBE_PNPMFILE_STDERR_FORWARDER: &str = "WARN_AUBE_PNPMFILE_STDERR_FORWARDER";
13pub const WARN_AUBE_PNPMFILE_CHECKSUM_FAILED: &str = "WARN_AUBE_PNPMFILE_CHECKSUM_FAILED";
14pub const WARN_AUBE_HOOK_IMPORTER_MUTATED: &str = "WARN_AUBE_HOOK_IMPORTER_MUTATED";
15pub const WARN_AUBE_HOOK_IMPORTER_ADDED: &str = "WARN_AUBE_HOOK_IMPORTER_ADDED";
16pub const WARN_AUBE_HOOK_IDENTITY_REWRITTEN: &str = "WARN_AUBE_HOOK_IDENTITY_REWRITTEN";
17pub const WARN_AUBE_HOOK_PACKAGE_ADDED: &str = "WARN_AUBE_HOOK_PACKAGE_ADDED";
18
19pub const WARN_AUBE_IGNORED_BUILD_SCRIPTS: &str = "WARN_AUBE_IGNORED_BUILD_SCRIPTS";
21#[rustfmt::skip] pub const WARN_AUBE_SUSPICIOUS_LIFECYCLE_SCRIPT: &str = "WARN_AUBE_SUSPICIOUS_LIFECYCLE_SCRIPT";
22#[rustfmt::skip] pub const WARN_AUBE_WINDOWS_JOB_OBJECT_UNAVAILABLE: &str = "WARN_AUBE_WINDOWS_JOB_OBJECT_UNAVAILABLE";
23pub const WARN_AUBE_MISSING_INTEGRITY: &str = "WARN_AUBE_MISSING_INTEGRITY";
24pub const WARN_AUBE_CACHE_WRITE_FAILED: &str = "WARN_AUBE_CACHE_WRITE_FAILED";
25pub const WARN_AUBE_CLONE_STRATEGY_FALLBACK: &str = "WARN_AUBE_CLONE_STRATEGY_FALLBACK";
26pub const WARN_AUBE_LTHASH_MISMATCH: &str = "WARN_AUBE_LTHASH_MISMATCH";
27pub const WARN_AUBE_DELTA_INVALIDATE_FAILED: &str = "WARN_AUBE_DELTA_INVALIDATE_FAILED";
28pub const WARN_AUBE_GVS_INCOMPATIBLE: &str = "WARN_AUBE_GVS_INCOMPATIBLE";
29pub const WARN_AUBE_GVS_MODE_CHANGED: &str = "WARN_AUBE_GVS_MODE_CHANGED";
30
31pub const WARN_AUBE_INVALID_CONCURRENCY: &str = "WARN_AUBE_INVALID_CONCURRENCY";
33pub const WARN_AUBE_INVALID_TRUST_POLICY: &str = "WARN_AUBE_INVALID_TRUST_POLICY";
34pub const WARN_AUBE_INVALID_MINIMUM_RELEASE_AGE_EXCLUDE: &str =
35 "WARN_AUBE_INVALID_MINIMUM_RELEASE_AGE_EXCLUDE";
36pub const WARN_AUBE_OVERRIDE_MISSING_DEP: &str = "WARN_AUBE_OVERRIDE_MISSING_DEP";
37pub const WARN_AUBE_OVERRIDE_DOLLAR_REF_DEPRECATED: &str =
38 "WARN_AUBE_OVERRIDE_DOLLAR_REF_DEPRECATED";
39pub const WARN_AUBE_INVALID_PEER_PATTERN: &str = "WARN_AUBE_INVALID_PEER_PATTERN";
40pub const WARN_AUBE_INVALID_SAVE_PREFIX: &str = "WARN_AUBE_INVALID_SAVE_PREFIX";
41pub const WARN_AUBE_CONCURRENCY_ENV_INVALID: &str = "WARN_AUBE_CONCURRENCY_ENV_INVALID";
42pub const WARN_AUBE_MANAGED_CONFIG_ENFORCED: &str = "WARN_AUBE_MANAGED_CONFIG_ENFORCED";
43
44pub const WARN_AUBE_PRERELEASE_CHECK_SKIPPED: &str = "WARN_AUBE_PRERELEASE_CHECK_SKIPPED";
46pub const WARN_AUBE_WORKSPACE_PACKAGE_MISSING_NAME: &str =
47 "WARN_AUBE_WORKSPACE_PACKAGE_MISSING_NAME";
48
49pub const WARN_AUBE_AUDIT_FETCH_FAILED: &str = "WARN_AUBE_AUDIT_FETCH_FAILED";
51pub const WARN_AUBE_TOKEN_CHMOD_FAILED: &str = "WARN_AUBE_TOKEN_CHMOD_FAILED";
52
53pub const WARN_AUBE_UNTRUSTED_PROXY: &str = "WARN_AUBE_UNTRUSTED_PROXY";
55pub const WARN_AUBE_UNTRUSTED_STRICT_SSL_DISABLE: &str = "WARN_AUBE_UNTRUSTED_STRICT_SSL_DISABLE";
56pub const WARN_AUBE_INVALID_LOCAL_ADDRESS: &str = "WARN_AUBE_INVALID_LOCAL_ADDRESS";
57pub const WARN_AUBE_INVALID_MAXSOCKETS: &str = "WARN_AUBE_INVALID_MAXSOCKETS";
58pub const WARN_AUBE_UNSCOPED_AUTH_RESCOPED: &str = "WARN_AUBE_UNSCOPED_AUTH_RESCOPED";
59pub const WARN_AUBE_UNTRUSTED_AUTH_ENV: &str = "WARN_AUBE_UNTRUSTED_AUTH_ENV";
60pub const WARN_AUBE_UNTRUSTED_TOKEN_HELPER: &str = "WARN_AUBE_UNTRUSTED_TOKEN_HELPER";
61pub const WARN_AUBE_INVALID_TOKEN_HELPER: &str = "WARN_AUBE_INVALID_TOKEN_HELPER";
62pub const WARN_AUBE_TOKEN_HELPER_SPAWN_FAILED: &str = "WARN_AUBE_TOKEN_HELPER_SPAWN_FAILED";
63pub const WARN_AUBE_TOKEN_HELPER_NON_ZERO_EXIT: &str = "WARN_AUBE_TOKEN_HELPER_NON_ZERO_EXIT";
64
65pub const WARN_AUBE_HTTP_RETRY_TRANSIENT: &str = "WARN_AUBE_HTTP_RETRY_TRANSIENT";
67pub const WARN_AUBE_HTTP_RETRY_TRANSPORT: &str = "WARN_AUBE_HTTP_RETRY_TRANSPORT";
68pub const WARN_AUBE_HTTP_RETRY_BODY_READ: &str = "WARN_AUBE_HTTP_RETRY_BODY_READ";
69pub const WARN_AUBE_HTTP_RETRY_BODY_DECODE: &str = "WARN_AUBE_HTTP_RETRY_BODY_DECODE";
70
71pub const WARN_AUBE_PACKUMENT_CACHE_WRITE: &str = "WARN_AUBE_PACKUMENT_CACHE_WRITE";
73pub const WARN_AUBE_SLOW_METADATA: &str = "WARN_AUBE_SLOW_METADATA";
74pub const WARN_AUBE_SLOW_TARBALL: &str = "WARN_AUBE_SLOW_TARBALL";
75
76pub const WARN_AUBE_INVALID_HTTPS_PROXY: &str = "WARN_AUBE_INVALID_HTTPS_PROXY";
78pub const WARN_AUBE_INVALID_HTTP_PROXY: &str = "WARN_AUBE_INVALID_HTTP_PROXY";
79pub const WARN_AUBE_INVALID_CA: &str = "WARN_AUBE_INVALID_CA";
80pub const WARN_AUBE_INVALID_CAFILE: &str = "WARN_AUBE_INVALID_CAFILE";
81pub const WARN_AUBE_UNREADABLE_CAFILE: &str = "WARN_AUBE_UNREADABLE_CAFILE";
82pub const WARN_AUBE_INVALID_CLIENT_CERT: &str = "WARN_AUBE_INVALID_CLIENT_CERT";
83
84pub const WARN_AUBE_UNSUPPORTED_PLATFORM_INSTALL: &str = "WARN_AUBE_UNSUPPORTED_PLATFORM_INSTALL";
86pub const WARN_AUBE_EXOTIC_SUBDEP_SKIPPED: &str = "WARN_AUBE_EXOTIC_SUBDEP_SKIPPED";
87pub const WARN_AUBE_PEER_DEDUPE_COLLISION: &str = "WARN_AUBE_PEER_DEDUPE_COLLISION";
88
89pub const WARN_AUBE_LOCKFILE_MERGE_CONFLICT: &str = "WARN_AUBE_LOCKFILE_MERGE_CONFLICT";
91pub const WARN_AUBE_LOCKFILE_MERGE_CLEANUP_FAILED: &str = "WARN_AUBE_LOCKFILE_MERGE_CLEANUP_FAILED";
92pub const WARN_AUBE_LOCKFILE_CONFLICT_MARKERS: &str = "WARN_AUBE_LOCKFILE_CONFLICT_MARKERS";
93pub const WARN_AUBE_YARN_BERRY_UNSUPPORTED: &str = "WARN_AUBE_YARN_BERRY_UNSUPPORTED";
94pub const WARN_AUBE_LOCKFILE_MALFORMED_PEER_SUFFIX: &str =
95 "WARN_AUBE_LOCKFILE_MALFORMED_PEER_SUFFIX";
96pub const WARN_AUBE_GLOBAL_OUTDATED_NO_LOCKFILE: &str = "WARN_AUBE_GLOBAL_OUTDATED_NO_LOCKFILE";
97
98pub const WARN_AUBE_PROGRESS_OVERFLOW: &str = "WARN_AUBE_PROGRESS_OVERFLOW";
100
101pub const WARN_AUBE_WORKSPACE_TOPO_CYCLE: &str = "WARN_AUBE_WORKSPACE_TOPO_CYCLE";
103
104pub const WARN_AUBE_LOW_DOWNLOAD_PACKAGE: &str = "WARN_AUBE_LOW_DOWNLOAD_PACKAGE";
106pub const WARN_AUBE_ADVISORY_CHECK_FAILED: &str = "WARN_AUBE_ADVISORY_CHECK_FAILED";
107pub const WARN_AUBE_OSV_MIRROR_REFRESH_FAILED: &str = "WARN_AUBE_OSV_MIRROR_REFRESH_FAILED";
108pub const WARN_AUBE_OSV_BLOOM_REFRESH_FAILED: &str = "WARN_AUBE_OSV_BLOOM_REFRESH_FAILED";
109pub const WARN_AUBE_SECURITY_SCANNER_FINDING: &str = "WARN_AUBE_SECURITY_SCANNER_FINDING";
110
111#[rustfmt::skip] pub const WARN_AUBE_RUNTIME_VERSION_MISMATCH: &str = "WARN_AUBE_RUNTIME_VERSION_MISMATCH";
113pub const WARN_AUBE_RUNTIME_MISE_FALLBACK: &str = "WARN_AUBE_RUNTIME_MISE_FALLBACK";
114#[rustfmt::skip] pub const WARN_AUBE_RUNTIME_PIN_NOT_RECORDED: &str = "WARN_AUBE_RUNTIME_PIN_NOT_RECORDED";
115
116pub mod category {
119 pub const PNPMFILE_HOOKS: &str = "pnpmfile / hooks";
120 pub const INSTALL_LIFECYCLE: &str = "Install lifecycle";
121 pub const SETTINGS_CONFIG: &str = "Settings / config validation";
122 pub const UPDATE_PRERELEASE: &str = "Update / prerelease";
123 pub const AUDIT_NPMRC: &str = "Audit / npmrc";
124 pub const REGISTRY_CONFIG: &str = "Registry config (trust gates)";
125 pub const HTTP_RETRIES: &str = "Registry HTTP retries";
126 pub const REGISTRY_PERF: &str = "Registry caching / perf";
127 pub const REGISTRY_TLS: &str = "Registry TLS / proxy";
128 pub const RESOLVER: &str = "Resolver";
129 pub const LOCKFILE: &str = "Lockfile";
130 pub const PROGRESS_UI: &str = "Progress UI";
131 pub const WORKSPACE_RECURSION: &str = "Workspace recursion";
132 pub const SUPPLY_CHAIN: &str = "Supply chain (add-time)";
133 pub const NODE_RUNTIME: &str = "Node runtime";
134}
135
136pub const ALL: &[CodeMeta] = &[
140 CodeMeta {
142 name: WARN_AUBE_PNPMFILE_NOT_FOUND,
143 category: category::PNPMFILE_HOOKS,
144 description: "A pnpmfile path (CLI arg, workspace setting, global) pointed at a missing file.",
145 exit_code: None,
146 },
147 CodeMeta {
148 name: WARN_AUBE_PNPMFILE_STDERR_FORWARDER,
149 category: category::PNPMFILE_HOOKS,
150 description: "The background task forwarding pnpmfile stderr panicked.",
151 exit_code: None,
152 },
153 CodeMeta {
154 name: WARN_AUBE_PNPMFILE_CHECKSUM_FAILED,
155 category: category::PNPMFILE_HOOKS,
156 description: "Reading the local pnpmfile for checksum computation failed; the lockfile's `pnpmfileChecksum` field is omitted so a later install will re-resolve instead of trusting a stale value.",
157 exit_code: None,
158 },
159 CodeMeta {
160 name: WARN_AUBE_HOOK_IMPORTER_MUTATED,
161 category: category::PNPMFILE_HOOKS,
162 description: "A pnpmfile `afterAllResolved` hook mutated `importers[...]`; aube ignored the edit.",
163 exit_code: None,
164 },
165 CodeMeta {
166 name: WARN_AUBE_HOOK_IMPORTER_ADDED,
167 category: category::PNPMFILE_HOOKS,
168 description: "A pnpmfile `afterAllResolved` hook added a new `importers[...]` entry; aube ignored it.",
169 exit_code: None,
170 },
171 CodeMeta {
172 name: WARN_AUBE_HOOK_IDENTITY_REWRITTEN,
173 category: category::PNPMFILE_HOOKS,
174 description: "A pnpmfile hook rewrote a package's `(name, version)` identity; aube reverted the edit.",
175 exit_code: None,
176 },
177 CodeMeta {
178 name: WARN_AUBE_HOOK_PACKAGE_ADDED,
179 category: category::PNPMFILE_HOOKS,
180 description: "A pnpmfile hook added a wholly-new package entry; aube ignored it.",
181 exit_code: None,
182 },
183 CodeMeta {
185 name: WARN_AUBE_IGNORED_BUILD_SCRIPTS,
186 category: category::INSTALL_LIFECYCLE,
187 description: "Dep had `preinstall`/`install`/`postinstall` scripts but isn't on the `allowBuilds` allowlist. Run `aube approve-builds`.",
188 exit_code: None,
189 },
190 CodeMeta {
191 name: WARN_AUBE_SUSPICIOUS_LIFECYCLE_SCRIPT,
192 category: category::INSTALL_LIFECYCLE,
193 description: "A dependency's lifecycle script matched a dangerous-shape heuristic (curl|sh, eval+atob, credential-file read, secret-env exfil, exfil endpoint, bare-IP HTTP). Advisory only; the `allowBuilds` allowlist still gates execution. Inspect the script before approving the build.",
194 exit_code: None,
195 },
196 CodeMeta {
197 name: WARN_AUBE_WINDOWS_JOB_OBJECT_UNAVAILABLE,
198 category: category::INSTALL_LIFECYCLE,
199 description: "Windows: couldn't create or assign a kill-on-job-close job object for a lifecycle script. The script still runs, but on abort/failure its grandchildren (node-gyp / MSBuild / node) may be orphaned. Usually caused by a restrictive parent job or enterprise policy.",
200 exit_code: None,
201 },
202 CodeMeta {
203 name: WARN_AUBE_MISSING_INTEGRITY,
204 category: category::INSTALL_LIFECYCLE,
205 description: "Lockfile entry / registry response had no `dist.integrity`; importing without verification. Set `strict-store-integrity=true` to refuse.",
206 exit_code: None,
207 },
208 CodeMeta {
209 name: WARN_AUBE_CACHE_WRITE_FAILED,
210 category: category::INSTALL_LIFECYCLE,
211 description: "Couldn't write a package index to the on-disk cache. Non-fatal.",
212 exit_code: None,
213 },
214 CodeMeta {
215 name: WARN_AUBE_CLONE_STRATEGY_FALLBACK,
216 category: category::INSTALL_LIFECYCLE,
217 description: "`package-import-method=clone` will silently fall back to copy if the filesystem doesn't support reflinks.",
218 exit_code: None,
219 },
220 CodeMeta {
221 name: WARN_AUBE_LTHASH_MISMATCH,
222 category: category::INSTALL_LIFECYCLE,
223 description: "Incremental and full LtHash digests disagreed — homomorphic invariant broken. Real bug signal.",
224 exit_code: None,
225 },
226 CodeMeta {
227 name: WARN_AUBE_DELTA_INVALIDATE_FAILED,
228 category: category::INSTALL_LIFECYCLE,
229 description: "Delta install couldn't invalidate a package directory during cleanup.",
230 exit_code: None,
231 },
232 CodeMeta {
233 name: WARN_AUBE_GVS_INCOMPATIBLE,
234 category: category::INSTALL_LIFECYCLE,
235 description: "A package isn't compatible with aube's global virtual store; installed per-project instead.",
236 exit_code: None,
237 },
238 CodeMeta {
239 name: WARN_AUBE_GVS_MODE_CHANGED,
240 category: category::INSTALL_LIFECYCLE,
241 description: "Switching between gvs-on and gvs-off; removing `node_modules` and reinstalling from scratch.",
242 exit_code: None,
243 },
244 CodeMeta {
246 name: WARN_AUBE_INVALID_CONCURRENCY,
247 category: category::SETTINGS_CONFIG,
248 description: "`network-concurrency` or `link-concurrency` was 0 (must be ≥ 1).",
249 exit_code: None,
250 },
251 CodeMeta {
252 name: WARN_AUBE_INVALID_TRUST_POLICY,
253 category: category::SETTINGS_CONFIG,
254 description: "A `trustPolicyExclude` entry was malformed and skipped.",
255 exit_code: None,
256 },
257 CodeMeta {
258 name: WARN_AUBE_INVALID_MINIMUM_RELEASE_AGE_EXCLUDE,
259 category: category::SETTINGS_CONFIG,
260 description: "A `minimumReleaseAgeExclude` entry was malformed and skipped.",
261 exit_code: None,
262 },
263 CodeMeta {
264 name: WARN_AUBE_OVERRIDE_MISSING_DEP,
265 category: category::SETTINGS_CONFIG,
266 description: "An `overrides` `$ref` pointed at a package not in any of the importer's dependency lists.",
267 exit_code: None,
268 },
269 CodeMeta {
270 name: WARN_AUBE_OVERRIDE_DOLLAR_REF_DEPRECATED,
271 category: category::SETTINGS_CONFIG,
272 description: "An `overrides` entry used pnpm's deprecated `$` version reference syntax.",
273 exit_code: None,
274 },
275 CodeMeta {
276 name: WARN_AUBE_INVALID_PEER_PATTERN,
277 category: category::SETTINGS_CONFIG,
278 description: "A `peerDependencyRules` pattern was unparseable and skipped.",
279 exit_code: None,
280 },
281 CodeMeta {
282 name: WARN_AUBE_INVALID_SAVE_PREFIX,
283 category: category::SETTINGS_CONFIG,
284 description: "`save-prefix` was something other than `^`, `~`, or empty. Falling back to `^`.",
285 exit_code: None,
286 },
287 CodeMeta {
288 name: WARN_AUBE_CONCURRENCY_ENV_INVALID,
289 category: category::SETTINGS_CONFIG,
290 description: "The `AUBE_CONCURRENCY` env var was outside the `[floor, ceiling]` range or non-numeric.",
291 exit_code: None,
292 },
293 CodeMeta {
294 name: WARN_AUBE_MANAGED_CONFIG_ENFORCED,
295 category: category::SETTINGS_CONFIG,
296 description: "Managed hardening config enforced a stricter value than local config, env, or CLI requested.",
297 exit_code: None,
298 },
299 CodeMeta {
301 name: WARN_AUBE_PRERELEASE_CHECK_SKIPPED,
302 category: category::UPDATE_PRERELEASE,
303 description: "`aube update` couldn't fetch the packument or got a non-semver `latest` tag; preserved-prerelease check skipped for that package.",
304 exit_code: None,
305 },
306 CodeMeta {
307 name: WARN_AUBE_WORKSPACE_PACKAGE_MISSING_NAME,
308 category: category::UPDATE_PRERELEASE,
309 description: "A discovered workspace package had no `name` field, so update skipped local workspace version registration for it.",
310 exit_code: None,
311 },
312 CodeMeta {
314 name: WARN_AUBE_AUDIT_FETCH_FAILED,
315 category: category::AUDIT_NPMRC,
316 description: "`aube audit --ignore-unfixable` couldn't fetch a packument; advisories for that package are kept verbatim.",
317 exit_code: None,
318 },
319 CodeMeta {
320 name: WARN_AUBE_TOKEN_CHMOD_FAILED,
321 category: category::AUDIT_NPMRC,
322 description: "`chmod 0600` on the auth token file failed; the file may be world-readable.",
323 exit_code: None,
324 },
325 CodeMeta {
327 name: WARN_AUBE_UNTRUSTED_PROXY,
328 category: category::REGISTRY_CONFIG,
329 description: "A `*-proxy` setting came from a source aube doesn't trust (committed `.npmrc` can't set proxies).",
330 exit_code: None,
331 },
332 CodeMeta {
333 name: WARN_AUBE_UNTRUSTED_STRICT_SSL_DISABLE,
334 category: category::REGISTRY_CONFIG,
335 description: "`strict-ssl=false` came from a source aube doesn't trust. TLS validation stays on.",
336 exit_code: None,
337 },
338 CodeMeta {
339 name: WARN_AUBE_INVALID_LOCAL_ADDRESS,
340 category: category::REGISTRY_CONFIG,
341 description: "`local-address` setting wasn't a valid IP.",
342 exit_code: None,
343 },
344 CodeMeta {
345 name: WARN_AUBE_INVALID_MAXSOCKETS,
346 category: category::REGISTRY_CONFIG,
347 description: "`maxsockets` was 0 or non-numeric.",
348 exit_code: None,
349 },
350 CodeMeta {
351 name: WARN_AUBE_UNSCOPED_AUTH_RESCOPED,
352 category: category::REGISTRY_CONFIG,
353 description: "An unscoped registry credential was pinned to the registry declared by the same config source.",
354 exit_code: None,
355 },
356 CodeMeta {
357 name: WARN_AUBE_UNTRUSTED_AUTH_ENV,
358 category: category::REGISTRY_CONFIG,
359 description: "An auth setting from project-controlled `.npmrc` contained an environment variable reference and was ignored.",
360 exit_code: None,
361 },
362 CodeMeta {
363 name: WARN_AUBE_UNTRUSTED_TOKEN_HELPER,
364 category: category::REGISTRY_CONFIG,
365 description: "`tokenHelper` came from an untrusted source (CVE-2025-69262 class).",
366 exit_code: None,
367 },
368 CodeMeta {
369 name: WARN_AUBE_INVALID_TOKEN_HELPER,
370 category: category::REGISTRY_CONFIG,
371 description: "`tokenHelper` value wasn't a sanitized absolute path.",
372 exit_code: None,
373 },
374 CodeMeta {
375 name: WARN_AUBE_TOKEN_HELPER_SPAWN_FAILED,
376 category: category::REGISTRY_CONFIG,
377 description: "`tokenHelper` couldn't be spawned.",
378 exit_code: None,
379 },
380 CodeMeta {
381 name: WARN_AUBE_TOKEN_HELPER_NON_ZERO_EXIT,
382 category: category::REGISTRY_CONFIG,
383 description: "`tokenHelper` exited non-zero.",
384 exit_code: None,
385 },
386 CodeMeta {
388 name: WARN_AUBE_HTTP_RETRY_TRANSIENT,
389 category: category::HTTP_RETRIES,
390 description: "Retrying after a transient HTTP status (429, 5xx).",
391 exit_code: None,
392 },
393 CodeMeta {
394 name: WARN_AUBE_HTTP_RETRY_TRANSPORT,
395 category: category::HTTP_RETRIES,
396 description: "Retrying after a transport / connection error.",
397 exit_code: None,
398 },
399 CodeMeta {
400 name: WARN_AUBE_HTTP_RETRY_BODY_READ,
401 category: category::HTTP_RETRIES,
402 description: "Retrying after a response-body read error (timeout, partial body).",
403 exit_code: None,
404 },
405 CodeMeta {
406 name: WARN_AUBE_HTTP_RETRY_BODY_DECODE,
407 category: category::HTTP_RETRIES,
408 description: "Retrying after a JSON decode error on the response body.",
409 exit_code: None,
410 },
411 CodeMeta {
413 name: WARN_AUBE_PACKUMENT_CACHE_WRITE,
414 category: category::REGISTRY_PERF,
415 description: "Couldn't write a packument to the on-disk cache after a successful fetch. Non-fatal; next install will refetch.",
416 exit_code: None,
417 },
418 CodeMeta {
419 name: WARN_AUBE_SLOW_METADATA,
420 category: category::REGISTRY_PERF,
421 description: "One or more packument fetches exceeded `fetchWarnTimeoutMs`. Emitted as a grouped summary so a burst of slow fetches produces one warning, not one per fetch.",
422 exit_code: None,
423 },
424 CodeMeta {
425 name: WARN_AUBE_SLOW_TARBALL,
426 category: category::REGISTRY_PERF,
427 description: "A tarball download fell below `fetchMinSpeedKiBps`.",
428 exit_code: None,
429 },
430 CodeMeta {
432 name: WARN_AUBE_INVALID_HTTPS_PROXY,
433 category: category::REGISTRY_TLS,
434 description: "`https-proxy` URL didn't parse.",
435 exit_code: None,
436 },
437 CodeMeta {
438 name: WARN_AUBE_INVALID_HTTP_PROXY,
439 category: category::REGISTRY_TLS,
440 description: "`http-proxy` URL didn't parse.",
441 exit_code: None,
442 },
443 CodeMeta {
444 name: WARN_AUBE_INVALID_CA,
445 category: category::REGISTRY_TLS,
446 description: "Per-registry CA PEM didn't parse.",
447 exit_code: None,
448 },
449 CodeMeta {
450 name: WARN_AUBE_INVALID_CAFILE,
451 category: category::REGISTRY_TLS,
452 description: "`cafile` couldn't be parsed as a PEM bundle.",
453 exit_code: None,
454 },
455 CodeMeta {
456 name: WARN_AUBE_UNREADABLE_CAFILE,
457 category: category::REGISTRY_TLS,
458 description: "`cafile` couldn't be read from disk.",
459 exit_code: None,
460 },
461 CodeMeta {
462 name: WARN_AUBE_INVALID_CLIENT_CERT,
463 category: category::REGISTRY_TLS,
464 description: "Per-registry client `cert`/`key` PEM pair didn't parse.",
465 exit_code: None,
466 },
467 CodeMeta {
469 name: WARN_AUBE_UNSUPPORTED_PLATFORM_INSTALL,
470 category: category::RESOLVER,
471 description: "A required (non-optional) dep declared a platform aube doesn't satisfy; installing anyway.",
472 exit_code: None,
473 },
474 CodeMeta {
475 name: WARN_AUBE_EXOTIC_SUBDEP_SKIPPED,
476 category: category::RESOLVER,
477 description: "An optional or peer dep used an exotic specifier and was skipped under `blockExoticSubdeps=true`.",
478 exit_code: None,
479 },
480 CodeMeta {
481 name: WARN_AUBE_PEER_DEDUPE_COLLISION,
482 category: category::RESOLVER,
483 description: "`dedupe-peers=true` would have collapsed a distinct peer-variant; preserved the longer form to avoid dropping it.",
484 exit_code: None,
485 },
486 CodeMeta {
488 name: WARN_AUBE_LOCKFILE_MERGE_CONFLICT,
489 category: category::LOCKFILE,
490 description: "Branch-lockfile merge had conflicting entries for the same dep_path; one was chosen.",
491 exit_code: None,
492 },
493 CodeMeta {
494 name: WARN_AUBE_LOCKFILE_MERGE_CLEANUP_FAILED,
495 category: category::LOCKFILE,
496 description: "After a successful merge, removing one of the merged branch lockfiles failed.",
497 exit_code: None,
498 },
499 CodeMeta {
500 name: WARN_AUBE_LOCKFILE_CONFLICT_MARKERS,
501 category: category::LOCKFILE,
502 description: "The active lockfile contains Git conflict markers; aube is regenerating it from package.json.",
503 exit_code: None,
504 },
505 CodeMeta {
506 name: WARN_AUBE_YARN_BERRY_UNSUPPORTED,
507 category: category::LOCKFILE,
508 description: "A Yarn Berry `patch:` / `portal:` / `exec:` protocol — or any unrecognized protocol — was found in `yarn.lock`. Entry was skipped.",
509 exit_code: None,
510 },
511 CodeMeta {
512 name: WARN_AUBE_LOCKFILE_MALFORMED_PEER_SUFFIX,
513 category: category::LOCKFILE,
514 description: "A pnpm dep_path peer suffix had unbalanced parentheses (a truncated or hand-corrupted lockfile entry). The key is preserved verbatim instead of silently dropping everything after the `(`, so a later install surfaces the bad entry rather than mis-resolving it.",
515 exit_code: None,
516 },
517 CodeMeta {
518 name: WARN_AUBE_GLOBAL_OUTDATED_NO_LOCKFILE,
519 category: category::LOCKFILE,
520 description: "`aube outdated -g` found a global install without a lockfile and skipped that install.",
521 exit_code: None,
522 },
523 CodeMeta {
525 name: WARN_AUBE_PROGRESS_OVERFLOW,
526 category: category::PROGRESS_UI,
527 description: "Install progress numerator exceeded the resolved-package denominator. Display clamps to total; the warning surfaces the bookkeeping mismatch so the underlying race can be diagnosed.",
528 exit_code: None,
529 },
530 CodeMeta {
532 name: WARN_AUBE_WORKSPACE_TOPO_CYCLE,
533 category: category::WORKSPACE_RECURSION,
534 description: "Topological sort of `aube run -r` / `aube exec -r` selected packages found a dependency cycle. Cycle members run in workspace-listing order after the rest of the topo-sorted set.",
535 exit_code: None,
536 },
537 CodeMeta {
539 name: WARN_AUBE_LOW_DOWNLOAD_PACKAGE,
540 category: category::SUPPLY_CHAIN,
541 description: "`aube add` flagged a package whose weekly downloads fall below `lowDownloadThreshold`. Interactive sessions prompt for confirmation; non-interactive contexts fail with `ERR_AUBE_LOW_DOWNLOAD_PACKAGE` unless `--allow-low-downloads` is passed.",
542 exit_code: None,
543 },
544 CodeMeta {
545 name: WARN_AUBE_ADVISORY_CHECK_FAILED,
546 category: category::SUPPLY_CHAIN,
547 description: "OSV `MAL-*` advisory check couldn't reach the API. With `advisoryCheck=on` (default) install continues; with `advisoryCheck=required` install fails closed.",
548 exit_code: None,
549 },
550 CodeMeta {
551 name: WARN_AUBE_OSV_MIRROR_REFRESH_FAILED,
552 category: category::SUPPLY_CHAIN,
553 description: "OSV advisory mirror used by `advisoryCheckOnInstall` failed to refresh (download, ETag, or zip parse error). With `advisoryCheckOnInstall=on` install proceeds against the previously cached index if any; with `advisoryCheckOnInstall=required` install fails closed with `ERR_AUBE_ADVISORY_CHECK_FAILED`.",
554 exit_code: None,
555 },
556 CodeMeta {
557 name: WARN_AUBE_OSV_BLOOM_REFRESH_FAILED,
558 category: category::SUPPLY_CHAIN,
559 description: "OSV bloom-filter prefilter used by `advisoryBloomCheck` failed to refresh (download or format-decode error). With `advisoryBloomCheck=on` install proceeds against the previously cached filter if any; with `advisoryBloomCheck=required` install fails closed with `ERR_AUBE_ADVISORY_CHECK_FAILED`.",
560 exit_code: None,
561 },
562 CodeMeta {
563 name: WARN_AUBE_SECURITY_SCANNER_FINDING,
564 category: category::SUPPLY_CHAIN,
565 description: "User-configured `securityScanner` returned a `warn`-level advisory. Install continues — only `fatal`-level advisories block.",
566 exit_code: None,
567 },
568 CodeMeta {
570 name: WARN_AUBE_RUNTIME_VERSION_MISMATCH,
571 category: category::NODE_RUNTIME,
572 description: "The active Node.js doesn't satisfy the project's runtime requirement and `onFail: \"warn\"` keeps execution on the unsatisfying version.",
573 exit_code: None,
574 },
575 CodeMeta {
576 name: WARN_AUBE_RUNTIME_MISE_FALLBACK,
577 category: category::NODE_RUNTIME,
578 description: "`runtimeInstaller=auto` tried delegating a Node.js install to mise but mise failed; aube fell back to its own nodejs.org download.",
579 exit_code: None,
580 },
581 CodeMeta {
582 name: WARN_AUBE_RUNTIME_PIN_NOT_RECORDED,
583 category: category::NODE_RUNTIME,
584 description: "`devEngines.runtime` resolved to an exact Node.js version but the project's lockfile format (npm/yarn/bun) has no runtime entry shape, so the pin wasn't recorded. Subsequent runs re-resolve the range.",
585 exit_code: None,
586 },
587];