@camstack/types 1.2.115 → 1.2.116

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.
@@ -1178,6 +1178,34 @@ export interface AddonExecution {
1178
1178
  * `0` means "no ceiling for this addon" and, being the maximum, lifts the whole runner's cap.
1179
1179
  */
1180
1180
  readonly maxOldSpaceMb?: number;
1181
+ /**
1182
+ * Whole-process RSS budget in MB — the number the memory watchdog alarms on.
1183
+ *
1184
+ * This is NOT a second heap ceiling and it enforces nothing: it is the
1185
+ * footprint this addon's role considers legitimate, and crossing it emits one
1186
+ * WARN carrying the breakdown (`heapUsed` / `external` / native residue) so the
1187
+ * operator learns WHICH KIND of growth it is.
1188
+ *
1189
+ * It exists because every other bound is blind to most of a process.
1190
+ * {@link AddonExecution.maxOldSpaceMb} bounds V8's old space and nothing else,
1191
+ * and the watchdog's `stranded` metric subtracts `external` by construction.
1192
+ * `hub/pipeline-analytics` was OOM-killed at 11.4GB on 2026-08-27 with a
1193
+ * 1024MB old-space ceiling in force the entire time, holding a 536MB heap and
1194
+ * 4264MB of `external` — 96% of the growth was never V8's, and nothing warned.
1195
+ * RSS is what the host's OOM killer reads, so RSS is what needs a declared
1196
+ * ceiling.
1197
+ *
1198
+ * OMITTED (the common case) → this addon declares no budget. If NO co-located
1199
+ * addon declares one, the runner reports itself UNWATCHED once at boot; there
1200
+ * is deliberately no class default, because the legitimate footprint differs by
1201
+ * an order of magnitude by role (a recorder holding a 1.5GB segment index is
1202
+ * behaving correctly; analytics holding 1.5GB is not). Declare it from a
1203
+ * MEASURED peak RSS, never from a heap number.
1204
+ *
1205
+ * A runner's budget is the MAXIMUM declared by any co-located addon —
1206
+ * co-location must never silence the hungriest member (D2/D29).
1207
+ */
1208
+ readonly rssBudgetMb?: number;
1181
1209
  /**
1182
1210
  * `@camstack/system` builtin ONLY: run this builtin in its OWN forked runner
1183
1211
  * instead of in-process on the hub root.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/types",
3
- "version": "1.2.115",
3
+ "version": "1.2.116",
4
4
  "description": "Shared types, interfaces, and model catalogs for the CamStack detection ecosystem",
5
5
  "keywords": [
6
6
  "camstack",