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_HOOK_IMPORTER_MUTATED: &str = "WARN_AUBE_HOOK_IMPORTER_MUTATED";
14pub const WARN_AUBE_HOOK_IMPORTER_ADDED: &str = "WARN_AUBE_HOOK_IMPORTER_ADDED";
15pub const WARN_AUBE_HOOK_IDENTITY_REWRITTEN: &str = "WARN_AUBE_HOOK_IDENTITY_REWRITTEN";
16pub const WARN_AUBE_HOOK_PACKAGE_ADDED: &str = "WARN_AUBE_HOOK_PACKAGE_ADDED";
17
18pub const WARN_AUBE_IGNORED_BUILD_SCRIPTS: &str = "WARN_AUBE_IGNORED_BUILD_SCRIPTS";
20#[rustfmt::skip] pub const WARN_AUBE_SUSPICIOUS_LIFECYCLE_SCRIPT: &str = "WARN_AUBE_SUSPICIOUS_LIFECYCLE_SCRIPT";
21#[rustfmt::skip] pub const WARN_AUBE_WINDOWS_JOB_OBJECT_UNAVAILABLE: &str = "WARN_AUBE_WINDOWS_JOB_OBJECT_UNAVAILABLE";
22pub const WARN_AUBE_MISSING_INTEGRITY: &str = "WARN_AUBE_MISSING_INTEGRITY";
23pub const WARN_AUBE_CACHE_WRITE_FAILED: &str = "WARN_AUBE_CACHE_WRITE_FAILED";
24pub const WARN_AUBE_CLONE_STRATEGY_FALLBACK: &str = "WARN_AUBE_CLONE_STRATEGY_FALLBACK";
25pub const WARN_AUBE_LTHASH_MISMATCH: &str = "WARN_AUBE_LTHASH_MISMATCH";
26pub const WARN_AUBE_DELTA_INVALIDATE_FAILED: &str = "WARN_AUBE_DELTA_INVALIDATE_FAILED";
27pub const WARN_AUBE_GVS_INCOMPATIBLE: &str = "WARN_AUBE_GVS_INCOMPATIBLE";
28pub const WARN_AUBE_GVS_MODE_CHANGED: &str = "WARN_AUBE_GVS_MODE_CHANGED";
29
30pub const WARN_AUBE_INVALID_CONCURRENCY: &str = "WARN_AUBE_INVALID_CONCURRENCY";
32pub const WARN_AUBE_INVALID_TRUST_POLICY: &str = "WARN_AUBE_INVALID_TRUST_POLICY";
33pub const WARN_AUBE_OVERRIDE_MISSING_DEP: &str = "WARN_AUBE_OVERRIDE_MISSING_DEP";
34pub const WARN_AUBE_INVALID_PEER_PATTERN: &str = "WARN_AUBE_INVALID_PEER_PATTERN";
35pub const WARN_AUBE_INVALID_SAVE_PREFIX: &str = "WARN_AUBE_INVALID_SAVE_PREFIX";
36pub const WARN_AUBE_CONCURRENCY_ENV_INVALID: &str = "WARN_AUBE_CONCURRENCY_ENV_INVALID";
37
38pub const WARN_AUBE_PRERELEASE_CHECK_SKIPPED: &str = "WARN_AUBE_PRERELEASE_CHECK_SKIPPED";
40pub const WARN_AUBE_WORKSPACE_PACKAGE_MISSING_NAME: &str =
41 "WARN_AUBE_WORKSPACE_PACKAGE_MISSING_NAME";
42
43pub const WARN_AUBE_AUDIT_FETCH_FAILED: &str = "WARN_AUBE_AUDIT_FETCH_FAILED";
45pub const WARN_AUBE_TOKEN_CHMOD_FAILED: &str = "WARN_AUBE_TOKEN_CHMOD_FAILED";
46
47pub const WARN_AUBE_UNTRUSTED_PROXY: &str = "WARN_AUBE_UNTRUSTED_PROXY";
49pub const WARN_AUBE_UNTRUSTED_STRICT_SSL_DISABLE: &str = "WARN_AUBE_UNTRUSTED_STRICT_SSL_DISABLE";
50pub const WARN_AUBE_INVALID_LOCAL_ADDRESS: &str = "WARN_AUBE_INVALID_LOCAL_ADDRESS";
51pub const WARN_AUBE_INVALID_MAXSOCKETS: &str = "WARN_AUBE_INVALID_MAXSOCKETS";
52pub const WARN_AUBE_UNSCOPED_AUTH_RESCOPED: &str = "WARN_AUBE_UNSCOPED_AUTH_RESCOPED";
53pub const WARN_AUBE_UNTRUSTED_TOKEN_HELPER: &str = "WARN_AUBE_UNTRUSTED_TOKEN_HELPER";
54pub const WARN_AUBE_INVALID_TOKEN_HELPER: &str = "WARN_AUBE_INVALID_TOKEN_HELPER";
55pub const WARN_AUBE_TOKEN_HELPER_SPAWN_FAILED: &str = "WARN_AUBE_TOKEN_HELPER_SPAWN_FAILED";
56pub const WARN_AUBE_TOKEN_HELPER_NON_ZERO_EXIT: &str = "WARN_AUBE_TOKEN_HELPER_NON_ZERO_EXIT";
57
58pub const WARN_AUBE_HTTP_RETRY_TRANSIENT: &str = "WARN_AUBE_HTTP_RETRY_TRANSIENT";
60pub const WARN_AUBE_HTTP_RETRY_TRANSPORT: &str = "WARN_AUBE_HTTP_RETRY_TRANSPORT";
61pub const WARN_AUBE_HTTP_RETRY_BODY_READ: &str = "WARN_AUBE_HTTP_RETRY_BODY_READ";
62pub const WARN_AUBE_HTTP_RETRY_BODY_DECODE: &str = "WARN_AUBE_HTTP_RETRY_BODY_DECODE";
63
64pub const WARN_AUBE_PACKUMENT_CACHE_WRITE: &str = "WARN_AUBE_PACKUMENT_CACHE_WRITE";
66pub const WARN_AUBE_SLOW_METADATA: &str = "WARN_AUBE_SLOW_METADATA";
67pub const WARN_AUBE_SLOW_TARBALL: &str = "WARN_AUBE_SLOW_TARBALL";
68
69pub const WARN_AUBE_INVALID_HTTPS_PROXY: &str = "WARN_AUBE_INVALID_HTTPS_PROXY";
71pub const WARN_AUBE_INVALID_HTTP_PROXY: &str = "WARN_AUBE_INVALID_HTTP_PROXY";
72pub const WARN_AUBE_INVALID_CA: &str = "WARN_AUBE_INVALID_CA";
73pub const WARN_AUBE_INVALID_CAFILE: &str = "WARN_AUBE_INVALID_CAFILE";
74pub const WARN_AUBE_UNREADABLE_CAFILE: &str = "WARN_AUBE_UNREADABLE_CAFILE";
75pub const WARN_AUBE_INVALID_CLIENT_CERT: &str = "WARN_AUBE_INVALID_CLIENT_CERT";
76
77pub const WARN_AUBE_UNSUPPORTED_PLATFORM_INSTALL: &str = "WARN_AUBE_UNSUPPORTED_PLATFORM_INSTALL";
79pub const WARN_AUBE_EXOTIC_SUBDEP_SKIPPED: &str = "WARN_AUBE_EXOTIC_SUBDEP_SKIPPED";
80pub const WARN_AUBE_PEER_DEDUPE_COLLISION: &str = "WARN_AUBE_PEER_DEDUPE_COLLISION";
81
82pub const WARN_AUBE_LOCKFILE_MERGE_CONFLICT: &str = "WARN_AUBE_LOCKFILE_MERGE_CONFLICT";
84pub const WARN_AUBE_LOCKFILE_MERGE_CLEANUP_FAILED: &str = "WARN_AUBE_LOCKFILE_MERGE_CLEANUP_FAILED";
85pub const WARN_AUBE_LOCKFILE_CONFLICT_MARKERS: &str = "WARN_AUBE_LOCKFILE_CONFLICT_MARKERS";
86pub const WARN_AUBE_YARN_BERRY_UNSUPPORTED: &str = "WARN_AUBE_YARN_BERRY_UNSUPPORTED";
87
88pub const WARN_AUBE_PROGRESS_OVERFLOW: &str = "WARN_AUBE_PROGRESS_OVERFLOW";
90
91pub const WARN_AUBE_WORKSPACE_TOPO_CYCLE: &str = "WARN_AUBE_WORKSPACE_TOPO_CYCLE";
93
94pub const WARN_AUBE_LOW_DOWNLOAD_PACKAGE: &str = "WARN_AUBE_LOW_DOWNLOAD_PACKAGE";
96pub const WARN_AUBE_ADVISORY_CHECK_FAILED: &str = "WARN_AUBE_ADVISORY_CHECK_FAILED";
97pub const WARN_AUBE_OSV_MIRROR_REFRESH_FAILED: &str = "WARN_AUBE_OSV_MIRROR_REFRESH_FAILED";
98pub const WARN_AUBE_OSV_BLOOM_REFRESH_FAILED: &str = "WARN_AUBE_OSV_BLOOM_REFRESH_FAILED";
99pub const WARN_AUBE_SECURITY_SCANNER_FINDING: &str = "WARN_AUBE_SECURITY_SCANNER_FINDING";
100
101pub mod category {
104 pub const PNPMFILE_HOOKS: &str = "pnpmfile / hooks";
105 pub const INSTALL_LIFECYCLE: &str = "Install lifecycle";
106 pub const SETTINGS_CONFIG: &str = "Settings / config validation";
107 pub const UPDATE_PRERELEASE: &str = "Update / prerelease";
108 pub const AUDIT_NPMRC: &str = "Audit / npmrc";
109 pub const REGISTRY_CONFIG: &str = "Registry config (trust gates)";
110 pub const HTTP_RETRIES: &str = "Registry HTTP retries";
111 pub const REGISTRY_PERF: &str = "Registry caching / perf";
112 pub const REGISTRY_TLS: &str = "Registry TLS / proxy";
113 pub const RESOLVER: &str = "Resolver";
114 pub const LOCKFILE: &str = "Lockfile";
115 pub const PROGRESS_UI: &str = "Progress UI";
116 pub const WORKSPACE_RECURSION: &str = "Workspace recursion";
117 pub const SUPPLY_CHAIN: &str = "Supply chain (add-time)";
118}
119
120pub const ALL: &[CodeMeta] = &[
124 CodeMeta {
126 name: WARN_AUBE_PNPMFILE_NOT_FOUND,
127 category: category::PNPMFILE_HOOKS,
128 description: "A pnpmfile path (CLI arg, workspace setting, global) pointed at a missing file.",
129 exit_code: None,
130 },
131 CodeMeta {
132 name: WARN_AUBE_PNPMFILE_STDERR_FORWARDER,
133 category: category::PNPMFILE_HOOKS,
134 description: "The background task forwarding pnpmfile stderr panicked.",
135 exit_code: None,
136 },
137 CodeMeta {
138 name: WARN_AUBE_HOOK_IMPORTER_MUTATED,
139 category: category::PNPMFILE_HOOKS,
140 description: "A pnpmfile `afterAllResolved` hook mutated `importers[...]`; aube ignored the edit.",
141 exit_code: None,
142 },
143 CodeMeta {
144 name: WARN_AUBE_HOOK_IMPORTER_ADDED,
145 category: category::PNPMFILE_HOOKS,
146 description: "A pnpmfile `afterAllResolved` hook added a new `importers[...]` entry; aube ignored it.",
147 exit_code: None,
148 },
149 CodeMeta {
150 name: WARN_AUBE_HOOK_IDENTITY_REWRITTEN,
151 category: category::PNPMFILE_HOOKS,
152 description: "A pnpmfile hook rewrote a package's `(name, version)` identity; aube reverted the edit.",
153 exit_code: None,
154 },
155 CodeMeta {
156 name: WARN_AUBE_HOOK_PACKAGE_ADDED,
157 category: category::PNPMFILE_HOOKS,
158 description: "A pnpmfile hook added a wholly-new package entry; aube ignored it.",
159 exit_code: None,
160 },
161 CodeMeta {
163 name: WARN_AUBE_IGNORED_BUILD_SCRIPTS,
164 category: category::INSTALL_LIFECYCLE,
165 description: "Dep had `preinstall`/`install`/`postinstall` scripts but isn't on the `allowBuilds` allowlist. Run `aube approve-builds`.",
166 exit_code: None,
167 },
168 CodeMeta {
169 name: WARN_AUBE_SUSPICIOUS_LIFECYCLE_SCRIPT,
170 category: category::INSTALL_LIFECYCLE,
171 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.",
172 exit_code: None,
173 },
174 CodeMeta {
175 name: WARN_AUBE_WINDOWS_JOB_OBJECT_UNAVAILABLE,
176 category: category::INSTALL_LIFECYCLE,
177 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.",
178 exit_code: None,
179 },
180 CodeMeta {
181 name: WARN_AUBE_MISSING_INTEGRITY,
182 category: category::INSTALL_LIFECYCLE,
183 description: "Lockfile entry / registry response had no `dist.integrity`; importing without verification. Set `strict-store-integrity=true` to refuse.",
184 exit_code: None,
185 },
186 CodeMeta {
187 name: WARN_AUBE_CACHE_WRITE_FAILED,
188 category: category::INSTALL_LIFECYCLE,
189 description: "Couldn't write a package index to the on-disk cache. Non-fatal.",
190 exit_code: None,
191 },
192 CodeMeta {
193 name: WARN_AUBE_CLONE_STRATEGY_FALLBACK,
194 category: category::INSTALL_LIFECYCLE,
195 description: "`package-import-method=clone` will silently fall back to copy if the filesystem doesn't support reflinks.",
196 exit_code: None,
197 },
198 CodeMeta {
199 name: WARN_AUBE_LTHASH_MISMATCH,
200 category: category::INSTALL_LIFECYCLE,
201 description: "Incremental and full LtHash digests disagreed — homomorphic invariant broken. Real bug signal.",
202 exit_code: None,
203 },
204 CodeMeta {
205 name: WARN_AUBE_DELTA_INVALIDATE_FAILED,
206 category: category::INSTALL_LIFECYCLE,
207 description: "Delta install couldn't invalidate a package directory during cleanup.",
208 exit_code: None,
209 },
210 CodeMeta {
211 name: WARN_AUBE_GVS_INCOMPATIBLE,
212 category: category::INSTALL_LIFECYCLE,
213 description: "A package isn't compatible with aube's global virtual store; installed per-project instead.",
214 exit_code: None,
215 },
216 CodeMeta {
217 name: WARN_AUBE_GVS_MODE_CHANGED,
218 category: category::INSTALL_LIFECYCLE,
219 description: "Switching between gvs-on and gvs-off; removing `node_modules` and reinstalling from scratch.",
220 exit_code: None,
221 },
222 CodeMeta {
224 name: WARN_AUBE_INVALID_CONCURRENCY,
225 category: category::SETTINGS_CONFIG,
226 description: "`network-concurrency` or `link-concurrency` was 0 (must be ≥ 1).",
227 exit_code: None,
228 },
229 CodeMeta {
230 name: WARN_AUBE_INVALID_TRUST_POLICY,
231 category: category::SETTINGS_CONFIG,
232 description: "A `trustPolicyExclude` entry was malformed and skipped.",
233 exit_code: None,
234 },
235 CodeMeta {
236 name: WARN_AUBE_OVERRIDE_MISSING_DEP,
237 category: category::SETTINGS_CONFIG,
238 description: "An `overrides` `$ref` pointed at a package not in any of the importer's dependency lists.",
239 exit_code: None,
240 },
241 CodeMeta {
242 name: WARN_AUBE_INVALID_PEER_PATTERN,
243 category: category::SETTINGS_CONFIG,
244 description: "A `peerDependencyRules` pattern was unparseable and skipped.",
245 exit_code: None,
246 },
247 CodeMeta {
248 name: WARN_AUBE_INVALID_SAVE_PREFIX,
249 category: category::SETTINGS_CONFIG,
250 description: "`save-prefix` was something other than `^`, `~`, or empty. Falling back to `^`.",
251 exit_code: None,
252 },
253 CodeMeta {
254 name: WARN_AUBE_CONCURRENCY_ENV_INVALID,
255 category: category::SETTINGS_CONFIG,
256 description: "The `AUBE_CONCURRENCY` env var was outside the `[floor, ceiling]` range or non-numeric.",
257 exit_code: None,
258 },
259 CodeMeta {
261 name: WARN_AUBE_PRERELEASE_CHECK_SKIPPED,
262 category: category::UPDATE_PRERELEASE,
263 description: "`aube update` couldn't fetch the packument or got a non-semver `latest` tag; preserved-prerelease check skipped for that package.",
264 exit_code: None,
265 },
266 CodeMeta {
267 name: WARN_AUBE_WORKSPACE_PACKAGE_MISSING_NAME,
268 category: category::UPDATE_PRERELEASE,
269 description: "A discovered workspace package had no `name` field, so update skipped local workspace version registration for it.",
270 exit_code: None,
271 },
272 CodeMeta {
274 name: WARN_AUBE_AUDIT_FETCH_FAILED,
275 category: category::AUDIT_NPMRC,
276 description: "`aube audit --ignore-unfixable` couldn't fetch a packument; advisories for that package are kept verbatim.",
277 exit_code: None,
278 },
279 CodeMeta {
280 name: WARN_AUBE_TOKEN_CHMOD_FAILED,
281 category: category::AUDIT_NPMRC,
282 description: "`chmod 0600` on the auth token file failed; the file may be world-readable.",
283 exit_code: None,
284 },
285 CodeMeta {
287 name: WARN_AUBE_UNTRUSTED_PROXY,
288 category: category::REGISTRY_CONFIG,
289 description: "A `*-proxy` setting came from a source aube doesn't trust (committed `.npmrc` can't set proxies).",
290 exit_code: None,
291 },
292 CodeMeta {
293 name: WARN_AUBE_UNTRUSTED_STRICT_SSL_DISABLE,
294 category: category::REGISTRY_CONFIG,
295 description: "`strict-ssl=false` came from a source aube doesn't trust. TLS validation stays on.",
296 exit_code: None,
297 },
298 CodeMeta {
299 name: WARN_AUBE_INVALID_LOCAL_ADDRESS,
300 category: category::REGISTRY_CONFIG,
301 description: "`local-address` setting wasn't a valid IP.",
302 exit_code: None,
303 },
304 CodeMeta {
305 name: WARN_AUBE_INVALID_MAXSOCKETS,
306 category: category::REGISTRY_CONFIG,
307 description: "`maxsockets` was 0 or non-numeric.",
308 exit_code: None,
309 },
310 CodeMeta {
311 name: WARN_AUBE_UNSCOPED_AUTH_RESCOPED,
312 category: category::REGISTRY_CONFIG,
313 description: "An unscoped registry credential was pinned to the registry declared by the same config source.",
314 exit_code: None,
315 },
316 CodeMeta {
317 name: WARN_AUBE_UNTRUSTED_TOKEN_HELPER,
318 category: category::REGISTRY_CONFIG,
319 description: "`tokenHelper` came from an untrusted source (CVE-2025-69262 class).",
320 exit_code: None,
321 },
322 CodeMeta {
323 name: WARN_AUBE_INVALID_TOKEN_HELPER,
324 category: category::REGISTRY_CONFIG,
325 description: "`tokenHelper` value wasn't a sanitized absolute path.",
326 exit_code: None,
327 },
328 CodeMeta {
329 name: WARN_AUBE_TOKEN_HELPER_SPAWN_FAILED,
330 category: category::REGISTRY_CONFIG,
331 description: "`tokenHelper` couldn't be spawned.",
332 exit_code: None,
333 },
334 CodeMeta {
335 name: WARN_AUBE_TOKEN_HELPER_NON_ZERO_EXIT,
336 category: category::REGISTRY_CONFIG,
337 description: "`tokenHelper` exited non-zero.",
338 exit_code: None,
339 },
340 CodeMeta {
342 name: WARN_AUBE_HTTP_RETRY_TRANSIENT,
343 category: category::HTTP_RETRIES,
344 description: "Retrying after a transient HTTP status (429, 5xx).",
345 exit_code: None,
346 },
347 CodeMeta {
348 name: WARN_AUBE_HTTP_RETRY_TRANSPORT,
349 category: category::HTTP_RETRIES,
350 description: "Retrying after a transport / connection error.",
351 exit_code: None,
352 },
353 CodeMeta {
354 name: WARN_AUBE_HTTP_RETRY_BODY_READ,
355 category: category::HTTP_RETRIES,
356 description: "Retrying after a response-body read error (timeout, partial body).",
357 exit_code: None,
358 },
359 CodeMeta {
360 name: WARN_AUBE_HTTP_RETRY_BODY_DECODE,
361 category: category::HTTP_RETRIES,
362 description: "Retrying after a JSON decode error on the response body.",
363 exit_code: None,
364 },
365 CodeMeta {
367 name: WARN_AUBE_PACKUMENT_CACHE_WRITE,
368 category: category::REGISTRY_PERF,
369 description: "Couldn't write a packument to the on-disk cache after a successful fetch. Non-fatal; next install will refetch.",
370 exit_code: None,
371 },
372 CodeMeta {
373 name: WARN_AUBE_SLOW_METADATA,
374 category: category::REGISTRY_PERF,
375 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.",
376 exit_code: None,
377 },
378 CodeMeta {
379 name: WARN_AUBE_SLOW_TARBALL,
380 category: category::REGISTRY_PERF,
381 description: "A tarball download fell below `fetchMinSpeedKiBps`.",
382 exit_code: None,
383 },
384 CodeMeta {
386 name: WARN_AUBE_INVALID_HTTPS_PROXY,
387 category: category::REGISTRY_TLS,
388 description: "`https-proxy` URL didn't parse.",
389 exit_code: None,
390 },
391 CodeMeta {
392 name: WARN_AUBE_INVALID_HTTP_PROXY,
393 category: category::REGISTRY_TLS,
394 description: "`http-proxy` URL didn't parse.",
395 exit_code: None,
396 },
397 CodeMeta {
398 name: WARN_AUBE_INVALID_CA,
399 category: category::REGISTRY_TLS,
400 description: "Per-registry CA PEM didn't parse.",
401 exit_code: None,
402 },
403 CodeMeta {
404 name: WARN_AUBE_INVALID_CAFILE,
405 category: category::REGISTRY_TLS,
406 description: "`cafile` couldn't be parsed as a PEM bundle.",
407 exit_code: None,
408 },
409 CodeMeta {
410 name: WARN_AUBE_UNREADABLE_CAFILE,
411 category: category::REGISTRY_TLS,
412 description: "`cafile` couldn't be read from disk.",
413 exit_code: None,
414 },
415 CodeMeta {
416 name: WARN_AUBE_INVALID_CLIENT_CERT,
417 category: category::REGISTRY_TLS,
418 description: "Per-registry client `cert`/`key` PEM pair didn't parse.",
419 exit_code: None,
420 },
421 CodeMeta {
423 name: WARN_AUBE_UNSUPPORTED_PLATFORM_INSTALL,
424 category: category::RESOLVER,
425 description: "A required (non-optional) dep declared a platform aube doesn't satisfy; installing anyway.",
426 exit_code: None,
427 },
428 CodeMeta {
429 name: WARN_AUBE_EXOTIC_SUBDEP_SKIPPED,
430 category: category::RESOLVER,
431 description: "An optional or peer dep used an exotic specifier and was skipped under `blockExoticSubdeps=true`.",
432 exit_code: None,
433 },
434 CodeMeta {
435 name: WARN_AUBE_PEER_DEDUPE_COLLISION,
436 category: category::RESOLVER,
437 description: "`dedupe-peers=true` would have collapsed a distinct peer-variant; preserved the longer form to avoid dropping it.",
438 exit_code: None,
439 },
440 CodeMeta {
442 name: WARN_AUBE_LOCKFILE_MERGE_CONFLICT,
443 category: category::LOCKFILE,
444 description: "Branch-lockfile merge had conflicting entries for the same dep_path; one was chosen.",
445 exit_code: None,
446 },
447 CodeMeta {
448 name: WARN_AUBE_LOCKFILE_MERGE_CLEANUP_FAILED,
449 category: category::LOCKFILE,
450 description: "After a successful merge, removing one of the merged branch lockfiles failed.",
451 exit_code: None,
452 },
453 CodeMeta {
454 name: WARN_AUBE_LOCKFILE_CONFLICT_MARKERS,
455 category: category::LOCKFILE,
456 description: "The active lockfile contains Git conflict markers; aube is regenerating it from package.json.",
457 exit_code: None,
458 },
459 CodeMeta {
460 name: WARN_AUBE_YARN_BERRY_UNSUPPORTED,
461 category: category::LOCKFILE,
462 description: "A Yarn Berry `patch:` / `portal:` / `exec:` protocol — or any unrecognized protocol — was found in `yarn.lock`. Entry was skipped.",
463 exit_code: None,
464 },
465 CodeMeta {
467 name: WARN_AUBE_PROGRESS_OVERFLOW,
468 category: category::PROGRESS_UI,
469 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.",
470 exit_code: None,
471 },
472 CodeMeta {
474 name: WARN_AUBE_WORKSPACE_TOPO_CYCLE,
475 category: category::WORKSPACE_RECURSION,
476 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.",
477 exit_code: None,
478 },
479 CodeMeta {
481 name: WARN_AUBE_LOW_DOWNLOAD_PACKAGE,
482 category: category::SUPPLY_CHAIN,
483 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.",
484 exit_code: None,
485 },
486 CodeMeta {
487 name: WARN_AUBE_ADVISORY_CHECK_FAILED,
488 category: category::SUPPLY_CHAIN,
489 description: "OSV `MAL-*` advisory check couldn't reach the API. With `advisoryCheck=on` (default) install continues; with `advisoryCheck=required` install fails closed.",
490 exit_code: None,
491 },
492 CodeMeta {
493 name: WARN_AUBE_OSV_MIRROR_REFRESH_FAILED,
494 category: category::SUPPLY_CHAIN,
495 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`.",
496 exit_code: None,
497 },
498 CodeMeta {
499 name: WARN_AUBE_OSV_BLOOM_REFRESH_FAILED,
500 category: category::SUPPLY_CHAIN,
501 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`.",
502 exit_code: None,
503 },
504 CodeMeta {
505 name: WARN_AUBE_SECURITY_SCANNER_FINDING,
506 category: category::SUPPLY_CHAIN,
507 description: "User-configured `securityScanner` returned a `warn`-level advisory. Install continues — only `fatal`-level advisories block.",
508 exit_code: None,
509 },
510];