@glassmkr/crucible 0.10.4 → 0.12.0

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 (48) hide show
  1. package/dist/collect/__tests__/c11-c18.test.d.ts +1 -0
  2. package/dist/collect/__tests__/c11-c18.test.js +375 -0
  3. package/dist/collect/__tests__/c11-c18.test.js.map +1 -0
  4. package/dist/collect/__tests__/c7-c10.test.d.ts +1 -0
  5. package/dist/collect/__tests__/c7-c10.test.js +271 -0
  6. package/dist/collect/__tests__/c7-c10.test.js.map +1 -0
  7. package/dist/collect/__tests__/systemd.test.js +10 -1
  8. package/dist/collect/__tests__/systemd.test.js.map +1 -1
  9. package/dist/collect/bonding.d.ts +37 -0
  10. package/dist/collect/bonding.js +246 -0
  11. package/dist/collect/bonding.js.map +1 -0
  12. package/dist/collect/conntrack.d.ts +19 -0
  13. package/dist/collect/conntrack.js +82 -1
  14. package/dist/collect/conntrack.js.map +1 -1
  15. package/dist/collect/cve.d.ts +51 -0
  16. package/dist/collect/cve.js +327 -0
  17. package/dist/collect/cve.js.map +1 -0
  18. package/dist/collect/dmesg-events.d.ts +32 -0
  19. package/dist/collect/dmesg-events.js +196 -0
  20. package/dist/collect/dmesg-events.js.map +1 -0
  21. package/dist/collect/ethtool.d.ts +29 -0
  22. package/dist/collect/ethtool.js +99 -0
  23. package/dist/collect/ethtool.js.map +1 -0
  24. package/dist/collect/fd.d.ts +46 -0
  25. package/dist/collect/fd.js +148 -0
  26. package/dist/collect/fd.js.map +1 -1
  27. package/dist/collect/ipmi.d.ts +19 -1
  28. package/dist/collect/ipmi.js +39 -2
  29. package/dist/collect/ipmi.js.map +1 -1
  30. package/dist/collect/lvm.d.ts +39 -0
  31. package/dist/collect/lvm.js +102 -0
  32. package/dist/collect/lvm.js.map +1 -0
  33. package/dist/collect/smart.d.ts +25 -0
  34. package/dist/collect/smart.js +36 -0
  35. package/dist/collect/smart.js.map +1 -1
  36. package/dist/collect/softnet.d.ts +17 -0
  37. package/dist/collect/softnet.js +82 -0
  38. package/dist/collect/softnet.js.map +1 -0
  39. package/dist/collect/systemd.d.ts +27 -2
  40. package/dist/collect/systemd.js +98 -5
  41. package/dist/collect/systemd.js.map +1 -1
  42. package/dist/collect/tcp-stats.d.ts +37 -0
  43. package/dist/collect/tcp-stats.js +153 -0
  44. package/dist/collect/tcp-stats.js.map +1 -0
  45. package/dist/index.js +48 -1
  46. package/dist/index.js.map +1 -1
  47. package/dist/lib/types.d.ts +197 -1
  48. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ipmi.js","sourceRoot":"","sources":["../../src/collect/ipmi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ipmi.js","sourceRoot":"","sources":["../../src/collect/ipmi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ export interface LvmThinPool {
2
+ lv_name: string;
3
+ vg_name: string;
4
+ data_percent: number;
5
+ metadata_percent: number;
6
+ }
7
+ export interface LvmSnapshot {
8
+ available: boolean;
9
+ reason?: string;
10
+ thin_pools: LvmThinPool[];
11
+ }
12
+ export declare function collectLvm(): Promise<LvmSnapshot>;
13
+ /**
14
+ * `lvs --reportformat=json` returns a structure like:
15
+ * {
16
+ * "report": [
17
+ * { "lv": [
18
+ * { "lv_name": "thinpool", "vg_name": "vg0",
19
+ * "lv_attr": "twi-aotz--", "data_percent": "45.20",
20
+ * "metadata_percent": "12.30" },
21
+ * ...
22
+ * ] }
23
+ * ]
24
+ * }
25
+ *
26
+ * lv_attr position 0 is the volume type: `t` = thin pool, `V` = thin
27
+ * volume, `o` = origin, etc. We only care about thin pools here.
28
+ *
29
+ * Empty pool sets (host has LVM but no thin pools) return an empty
30
+ * array with available: true; that's a useful signal to the
31
+ * dashboard ("LVM here, just nothing to alert on").
32
+ */
33
+ export declare function parseLvsJson(raw: string): LvmThinPool[] | null;
34
+ declare function parsePercent(v: unknown): number;
35
+ export declare const __test_only: {
36
+ parseLvsJson: typeof parseLvsJson;
37
+ parsePercent: typeof parsePercent;
38
+ };
39
+ export {};
@@ -0,0 +1,102 @@
1
+ // LVM thin pool metadata collection.
2
+ //
3
+ // LVM thin pools use a separate metadata volume from data. Metadata
4
+ // exhaustion is silent and catastrophic; writes fail in unpredictable
5
+ // ways once the metadata volume fills. Dashboard's
6
+ // lvm_thinpool_metadata_high rule pages on this.
7
+ //
8
+ // Capability gating: `lvs` binary absent (no LVM on the host) yields
9
+ // available: false; we never error on a host that simply doesn't run
10
+ // LVM.
11
+ //
12
+ // Per CC_SPEC_CRUCIBLE_C11_C18_FULL_BUNDLE_2026-05-19.md §1.2.
13
+ import { run } from "../lib/exec.js";
14
+ export async function collectLvm() {
15
+ const out = await run("lvs", [
16
+ "--reportformat=json",
17
+ "--options=lv_name,vg_name,lv_attr,data_percent,metadata_percent",
18
+ "--units=b",
19
+ "--noheadings",
20
+ ]);
21
+ if (!out) {
22
+ return {
23
+ available: false,
24
+ reason: "lvs not available (LVM not installed?)",
25
+ thin_pools: [],
26
+ };
27
+ }
28
+ const parsed = parseLvsJson(out);
29
+ if (parsed === null) {
30
+ return {
31
+ available: false,
32
+ reason: "lvs output did not parse",
33
+ thin_pools: [],
34
+ };
35
+ }
36
+ return { available: true, thin_pools: parsed };
37
+ }
38
+ /**
39
+ * `lvs --reportformat=json` returns a structure like:
40
+ * {
41
+ * "report": [
42
+ * { "lv": [
43
+ * { "lv_name": "thinpool", "vg_name": "vg0",
44
+ * "lv_attr": "twi-aotz--", "data_percent": "45.20",
45
+ * "metadata_percent": "12.30" },
46
+ * ...
47
+ * ] }
48
+ * ]
49
+ * }
50
+ *
51
+ * lv_attr position 0 is the volume type: `t` = thin pool, `V` = thin
52
+ * volume, `o` = origin, etc. We only care about thin pools here.
53
+ *
54
+ * Empty pool sets (host has LVM but no thin pools) return an empty
55
+ * array with available: true; that's a useful signal to the
56
+ * dashboard ("LVM here, just nothing to alert on").
57
+ */
58
+ export function parseLvsJson(raw) {
59
+ let parsed;
60
+ try {
61
+ parsed = JSON.parse(raw);
62
+ }
63
+ catch {
64
+ return null;
65
+ }
66
+ const report = parsed?.report;
67
+ if (!Array.isArray(report) || report.length === 0)
68
+ return [];
69
+ const lvs = report[0]?.lv;
70
+ if (!Array.isArray(lvs))
71
+ return [];
72
+ const pools = [];
73
+ for (const entry of lvs) {
74
+ const attr = typeof entry.lv_attr === "string" ? entry.lv_attr : "";
75
+ if (attr.charAt(0) !== "t")
76
+ continue; // not a thin pool
77
+ const lvName = typeof entry.lv_name === "string" ? entry.lv_name : "";
78
+ const vgName = typeof entry.vg_name === "string" ? entry.vg_name : "";
79
+ const dataPct = parsePercent(entry.data_percent);
80
+ const metaPct = parsePercent(entry.metadata_percent);
81
+ if (!lvName || !vgName)
82
+ continue;
83
+ pools.push({
84
+ lv_name: lvName,
85
+ vg_name: vgName,
86
+ data_percent: dataPct,
87
+ metadata_percent: metaPct,
88
+ });
89
+ }
90
+ return pools;
91
+ }
92
+ function parsePercent(v) {
93
+ if (typeof v === "number")
94
+ return v;
95
+ if (typeof v === "string") {
96
+ const n = Number.parseFloat(v);
97
+ return Number.isFinite(n) ? n : 0;
98
+ }
99
+ return 0;
100
+ }
101
+ export const __test_only = { parseLvsJson, parsePercent };
102
+ //# sourceMappingURL=lvm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lvm.js","sourceRoot":"","sources":["../../src/collect/lvm.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,10 @@ export declare function parseSmartctlJson(data: Record<string, unknown> & {
15
15
  nvme_smart_health_information_log?: {
16
16
  percentage_used?: number;
17
17
  temperature?: number;
18
+ /** NVMe Critical Warning byte (NVM Express spec §5.21). */
19
+ critical_warning?: number;
20
+ available_spare?: number;
21
+ available_spare_threshold?: number;
18
22
  };
19
23
  ata_smart_attributes?: {
20
24
  table?: Array<{
@@ -26,3 +30,24 @@ export declare function parseSmartctlJson(data: Record<string, unknown> & {
26
30
  }>;
27
31
  };
28
32
  }, device: string): SmartInfo;
33
+ /**
34
+ * Decode the NVMe Critical Warning byte (NVM Express spec §5.21):
35
+ * bit 0: available spare below threshold
36
+ * bit 1: temperature outside operating range
37
+ * bit 2: NVM subsystem reliability degraded
38
+ * bit 3: media in read-only mode
39
+ * bit 4: volatile memory backup device has failed
40
+ * bit 5: persistent memory region became read-only (NVMe 1.4+)
41
+ *
42
+ * Bit ordering differs across docs; this implementation follows the
43
+ * spec verbatim. Any non-zero bit is a vendor-recommended immediate-
44
+ * action signal.
45
+ */
46
+ export declare function decodeNvmeCriticalWarning(byte: number): {
47
+ available_spare_low: boolean;
48
+ temperature_threshold: boolean;
49
+ reliability_degraded: boolean;
50
+ read_only: boolean;
51
+ volatile_memory_backup_failed: boolean;
52
+ persistent_memory_readonly: boolean;
53
+ };
@@ -42,6 +42,19 @@ export function parseSmartctlJson(data, device) {
42
42
  const nvme = data.nvme_smart_health_information_log;
43
43
  info.percentage_used = nvme.percentage_used;
44
44
  info.temperature_c = nvme.temperature;
45
+ // C17 (2026-05-19): expose the raw Critical Warning byte + per-bit
46
+ // decoded flags so Dashboard's nvme_critical_warning rule can fire
47
+ // on the specific failure modes. Per NVM Express spec §5.21.
48
+ if (typeof nvme.critical_warning === "number") {
49
+ info.critical_warning_raw = nvme.critical_warning;
50
+ info.critical_warning_decoded = decodeNvmeCriticalWarning(nvme.critical_warning);
51
+ }
52
+ if (typeof nvme.available_spare === "number") {
53
+ info.nvme_available_spare = nvme.available_spare;
54
+ }
55
+ if (typeof nvme.available_spare_threshold === "number") {
56
+ info.nvme_available_spare_threshold = nvme.available_spare_threshold;
57
+ }
45
58
  }
46
59
  // SATA specific
47
60
  if (data.ata_smart_attributes?.table) {
@@ -56,4 +69,27 @@ export function parseSmartctlJson(data, device) {
56
69
  }
57
70
  return info;
58
71
  }
72
+ /**
73
+ * Decode the NVMe Critical Warning byte (NVM Express spec §5.21):
74
+ * bit 0: available spare below threshold
75
+ * bit 1: temperature outside operating range
76
+ * bit 2: NVM subsystem reliability degraded
77
+ * bit 3: media in read-only mode
78
+ * bit 4: volatile memory backup device has failed
79
+ * bit 5: persistent memory region became read-only (NVMe 1.4+)
80
+ *
81
+ * Bit ordering differs across docs; this implementation follows the
82
+ * spec verbatim. Any non-zero bit is a vendor-recommended immediate-
83
+ * action signal.
84
+ */
85
+ export function decodeNvmeCriticalWarning(byte) {
86
+ return {
87
+ available_spare_low: (byte & 0x01) !== 0,
88
+ temperature_threshold: (byte & 0x02) !== 0,
89
+ reliability_degraded: (byte & 0x04) !== 0,
90
+ read_only: (byte & 0x08) !== 0,
91
+ volatile_memory_backup_failed: (byte & 0x10) !== 0,
92
+ persistent_memory_readonly: (byte & 0x20) !== 0,
93
+ };
94
+ }
59
95
  //# sourceMappingURL=smart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"smart.js","sourceRoot":"","sources":["../../src/collect/smart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAGjC,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,qBAAqB;IACrB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;QAC1C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjF,OAAO,CAAC,IAAI,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,MAAM;YAAE,SAAS;QAEtB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,oCAAoC;QACtC,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAQjC,EAAE,MAAc;IACf,MAAM,IAAI,GAAc;QACtB,MAAM;QACN,KAAK,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,IAAI,SAAS;QACxD,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;QACvD,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO;QACxC,cAAc,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK;KAC1C,CAAC;IAEF,gBAAgB;IAChB,IAAI,IAAI,CAAC,iCAAiC,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,iCAAiC,CAAC;QACpD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC;IACxC,CAAC;IAED,gBAAgB;IAChB,IAAI,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,CAAC;QACrC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;YACnD,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;gBAC3D,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC;YAClD,CAAC;YACD,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;gBAC9D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"smart.js","sourceRoot":"","sources":["../../src/collect/smart.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export interface SoftnetSnapshot {
2
+ available: boolean;
3
+ reason?: string;
4
+ /** Sum of column-2 drops across CPUs, cumulative since boot. */
5
+ total_dropped_cumulative: number;
6
+ /** Per-CPU drops; index is CPU ordinal. Empty when unavailable. */
7
+ per_cpu_dropped: number[];
8
+ /** Per-second drop rate over the most recent interval; null on
9
+ * first snapshot or after a counter reset. */
10
+ total_dropped_rate_per_sec: number | null;
11
+ }
12
+ export declare function collectSoftnet(): SoftnetSnapshot;
13
+ export declare const __test_only: {
14
+ TIME_SQUEEZE_COL: number;
15
+ DROPPED_COL: number;
16
+ resetForTests: () => void;
17
+ };
@@ -0,0 +1,82 @@
1
+ // /proc/net/softnet_stat per-CPU NET_RX softirq counters.
2
+ //
3
+ // Per-CPU rows (hex values). Columns observed in modern Linux:
4
+ // col 0: packets processed
5
+ // col 1: packets dropped due to NET_RX softirq budget exhaustion
6
+ // (time_squeeze; rarely the signal we want)
7
+ // col 2: packets dropped because the per-CPU input backlog filled
8
+ // (input_queue_dropped; the real "softnet drops" signal)
9
+ // col 3+: varies by kernel version (squeezed_count, received_rps,
10
+ // flow_limit_count, ...)
11
+ //
12
+ // Column 2 is what we surface as `dropped` per Dashboard's
13
+ // softnet_drops rule. Different sources/blogs disagree on column
14
+ // indexing; we anchor on the kernel source (net/core/dev.c
15
+ // softnet_seq_show) where the order is: total processed, time_squeeze,
16
+ // dropped (cpu_collision), then per-version extensions.
17
+ //
18
+ // Per CC_SPEC_CRUCIBLE_C11_C18_FULL_BUNDLE_2026-05-19.md §1.4.
19
+ import { readProcFile } from "../lib/parse.js";
20
+ let previous = null;
21
+ const TIME_SQUEEZE_COL = 1;
22
+ const DROPPED_COL = 2;
23
+ export function collectSoftnet() {
24
+ const raw = readProcFile("/proc/net/softnet_stat");
25
+ if (!raw) {
26
+ return {
27
+ available: false,
28
+ reason: "/proc/net/softnet_stat not readable",
29
+ total_dropped_cumulative: 0,
30
+ per_cpu_dropped: [],
31
+ total_dropped_rate_per_sec: null,
32
+ };
33
+ }
34
+ const perCpu = [];
35
+ let total = 0;
36
+ for (const line of raw.split("\n")) {
37
+ const fields = line.trim().split(/\s+/).filter((f) => f.length > 0);
38
+ if (fields.length <= DROPPED_COL)
39
+ continue;
40
+ const dropped = Number.parseInt(fields[DROPPED_COL], 16);
41
+ if (!Number.isFinite(dropped))
42
+ continue;
43
+ perCpu.push(dropped);
44
+ total += dropped;
45
+ }
46
+ if (perCpu.length === 0) {
47
+ return {
48
+ available: false,
49
+ reason: "/proc/net/softnet_stat parsed but no rows",
50
+ total_dropped_cumulative: 0,
51
+ per_cpu_dropped: [],
52
+ total_dropped_rate_per_sec: null,
53
+ };
54
+ }
55
+ const nowMs = Date.now();
56
+ let ratePerSec = null;
57
+ if (previous) {
58
+ const elapsedSec = (nowMs - previous.capturedAtMs) / 1000;
59
+ if (elapsedSec > 0) {
60
+ const delta = total - previous.totalDropped;
61
+ // Negative delta = counter reset (host reboot, etc.); leave rate
62
+ // null this tick and reset baseline.
63
+ if (delta >= 0)
64
+ ratePerSec = delta / elapsedSec;
65
+ }
66
+ }
67
+ previous = { totalDropped: total, capturedAtMs: nowMs };
68
+ return {
69
+ available: true,
70
+ total_dropped_cumulative: total,
71
+ per_cpu_dropped: perCpu,
72
+ total_dropped_rate_per_sec: ratePerSec,
73
+ };
74
+ }
75
+ export const __test_only = {
76
+ TIME_SQUEEZE_COL,
77
+ DROPPED_COL,
78
+ resetForTests: () => {
79
+ previous = null;
80
+ },
81
+ };
82
+ //# sourceMappingURL=softnet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"softnet.js","sourceRoot":"","sources":["../../src/collect/softnet.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,EAAE;AACF,+DAA+D;AAC/D,6BAA6B;AAC7B,mEAAmE;AACnE,qDAAqD;AACrD,oEAAoE;AACpE,kEAAkE;AAClE,oEAAoE;AACpE,kCAAkC;AAClC,EAAE;AACF,2DAA2D;AAC3D,iEAAiE;AACjE,2DAA2D;AAC3D,uEAAuE;AACvE,wDAAwD;AACxD,EAAE;AACF,+DAA+D;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAmB/C,IAAI,QAAQ,GAA2B,IAAI,CAAC;AAE5C,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB,MAAM,UAAU,cAAc;IAC5B,MAAM,GAAG,GAAG,YAAY,CAAC,wBAAwB,CAAC,CAAC;IACnD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,qCAAqC;YAC7C,wBAAwB,EAAE,CAAC;YAC3B,eAAe,EAAE,EAAE;YACnB,0BAA0B,EAAE,IAAI;SACjC,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpE,IAAI,MAAM,CAAC,MAAM,IAAI,WAAW;YAAE,SAAS;QAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,SAAS;QACxC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrB,KAAK,IAAI,OAAO,CAAC;IACnB,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,2CAA2C;YACnD,wBAAwB,EAAE,CAAC;YAC3B,eAAe,EAAE,EAAE;YACnB,0BAA0B,EAAE,IAAI;SACjC,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,UAAU,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;QAC1D,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACnB,MAAM,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC;YAC5C,iEAAiE;YACjE,qCAAqC;YACrC,IAAI,KAAK,IAAI,CAAC;gBAAE,UAAU,GAAG,KAAK,GAAG,UAAU,CAAC;QAClD,CAAC;IACH,CAAC;IACD,QAAQ,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IAExD,OAAO;QACL,SAAS,EAAE,IAAI;QACf,wBAAwB,EAAE,KAAK;QAC/B,eAAe,EAAE,MAAM;QACvB,0BAA0B,EAAE,UAAU;KACvC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,gBAAgB;IAChB,WAAW;IACX,aAAa,EAAE,GAAG,EAAE;QAClB,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;CACF,CAAC"}
@@ -1,11 +1,36 @@
1
+ export type SystemdUnitResult = "success" | "protocol" | "timeout" | "exit-code" | "signal" | "core-dump" | "watchdog" | "start-limit-hit" | "resources" | "oom-kill" | "unknown";
2
+ export interface SystemdFailedUnit {
3
+ name: string;
4
+ /** systemd's failure-cause classifier from `systemctl show -p Result`.
5
+ * Unknown when the property is empty or the show command fails. */
6
+ result: SystemdUnitResult;
7
+ /** ActiveState from systemctl show. Typically "failed" when this unit
8
+ * is in this list, but kept for cross-checks. */
9
+ active_state: string;
10
+ /** SubState (more granular than ActiveState; e.g. "auto-restart"). */
11
+ sub_state: string;
12
+ /** NRestarts from systemctl show; cumulative since last successful
13
+ * start. Crude flapping signal — service_flapping rule's primary
14
+ * history source remains cross-snapshot, but this is the per-snap
15
+ * number a single emission carries. */
16
+ n_restarts: number;
17
+ }
1
18
  export interface SystemdData {
2
19
  failed_units: string[];
3
20
  failed_count: number;
4
21
  /** Last 5 journal lines per failed unit. Populated only when units
5
22
  * are present so the happy path stays cheap. Keys match
6
- * `failed_units`. Codex experiment 2026-05-12 P2 closes the
7
- * "service failed what went wrong" seam without forcing the
23
+ * `failed_units`. Codex experiment 2026-05-12 P2; closes the
24
+ * "service failed -> what went wrong" seam without forcing the
8
25
  * customer to SSH to the box. */
9
26
  journal_excerpts?: Record<string, string[]>;
27
+ /** C12 structured per-unit failure metadata. Keys match
28
+ * `failed_units`; absent on pre-0.12.0 agents. Dashboard's TUNE
29
+ * + new rules consume `failed_unit_details[unit].result` etc. */
30
+ failed_unit_details?: Record<string, SystemdFailedUnit>;
10
31
  }
11
32
  export declare function collectSystemd(extraExcludes?: string[]): Promise<SystemdData>;
33
+ export declare const __test_only: {
34
+ RESULT_VALUES: ReadonlySet<SystemdUnitResult>;
35
+ parseUnitDetailsOutput: (unit: string, out: string) => SystemdFailedUnit;
36
+ };
@@ -1,9 +1,32 @@
1
+ // systemd state collection.
2
+ //
3
+ // Pre-C12: failed_units + per-unit journal_excerpts.
4
+ // C12 (2026-05-19): per-failed-unit Result + ActiveState + SubState
5
+ // from `systemctl show`. Result is systemd's classifier for *why* a
6
+ // unit failed (oom-kill, watchdog, exit-code, timeout, ...). Dashboard
7
+ // uses it to set per-unit severity and to wire the
8
+ // systemd_service_oom_killed rule + service_flapping rule.
9
+ //
10
+ // Per CC_SPEC_CRUCIBLE_C11_C18_FULL_BUNDLE_2026-05-19.md §1.1.
1
11
  import { run } from "../lib/exec.js";
2
12
  // Units commonly in failed state by design or misconfiguration
3
13
  const DEFAULT_EXCLUDES = [
4
14
  "systemd-networkd-wait-online.service",
5
15
  ];
6
16
  const JOURNAL_LINES_PER_UNIT = 5;
17
+ const RESULT_VALUES = new Set([
18
+ "success",
19
+ "protocol",
20
+ "timeout",
21
+ "exit-code",
22
+ "signal",
23
+ "core-dump",
24
+ "watchdog",
25
+ "start-limit-hit",
26
+ "resources",
27
+ "oom-kill",
28
+ "unknown",
29
+ ]);
7
30
  export async function collectSystemd(extraExcludes = []) {
8
31
  const output = await run("systemctl", [
9
32
  "list-units", "--type=service", "--state=failed", "--no-legend", "--plain",
@@ -19,19 +42,22 @@ export async function collectSystemd(extraExcludes = []) {
19
42
  units.push(unit);
20
43
  }
21
44
  }
22
- // For each failed unit, collect the last N journal lines. Skipped
23
- // when there are no failed units (no journal calls on the happy
24
- // path). Per-unit failure is tolerated (an unreadable journal on
25
- // one unit doesn't drop the whole excerpt block) we surface an
26
- // empty array for that unit so the receiver knows it tried.
45
+ // For each failed unit, collect the last N journal lines + structured
46
+ // properties (C12). Per-unit failure is tolerated (an unreadable
47
+ // journal or a missing property doesn't drop the entire snapshot)
48
+ // we surface an empty journal array or `unknown` result for the
49
+ // affected unit so the receiver knows we tried.
27
50
  const journal_excerpts = {};
51
+ const failed_unit_details = {};
28
52
  for (const unit of units) {
29
53
  journal_excerpts[unit] = await readJournalExcerpt(unit);
54
+ failed_unit_details[unit] = await readUnitDetails(unit);
30
55
  }
31
56
  return {
32
57
  failed_units: units,
33
58
  failed_count: units.length,
34
59
  ...(units.length > 0 ? { journal_excerpts } : {}),
60
+ ...(units.length > 0 ? { failed_unit_details } : {}),
35
61
  };
36
62
  }
37
63
  async function readJournalExcerpt(unit) {
@@ -53,4 +79,71 @@ async function readJournalExcerpt(unit) {
53
79
  .filter((l) => l.length > 0)
54
80
  .slice(-JOURNAL_LINES_PER_UNIT);
55
81
  }
82
+ /**
83
+ * `systemctl show -p Property,Property,...` emits `Key=Value` lines.
84
+ * One call per unit; lightweight. Best-effort; on parse failure
85
+ * returns a record with unknown/empty fields so downstream code can
86
+ * still rely on key presence.
87
+ */
88
+ async function readUnitDetails(unit) {
89
+ const fallback = {
90
+ name: unit,
91
+ result: "unknown",
92
+ active_state: "",
93
+ sub_state: "",
94
+ n_restarts: 0,
95
+ };
96
+ const out = await run("systemctl", [
97
+ "show", unit,
98
+ "--no-pager",
99
+ "--property=Result,ActiveState,SubState,NRestarts",
100
+ ]);
101
+ if (!out)
102
+ return fallback;
103
+ const props = {};
104
+ for (const line of out.split("\n")) {
105
+ const eq = line.indexOf("=");
106
+ if (eq === -1)
107
+ continue;
108
+ props[line.slice(0, eq).trim()] = line.slice(eq + 1).trim();
109
+ }
110
+ const rawResult = props.Result ?? "";
111
+ const result = RESULT_VALUES.has(rawResult)
112
+ ? rawResult
113
+ : rawResult.length > 0
114
+ ? "unknown"
115
+ : "unknown";
116
+ const nRestarts = Number.parseInt(props.NRestarts ?? "0", 10);
117
+ return {
118
+ name: unit,
119
+ result,
120
+ active_state: props.ActiveState ?? "",
121
+ sub_state: props.SubState ?? "",
122
+ n_restarts: Number.isFinite(nRestarts) ? nRestarts : 0,
123
+ };
124
+ }
125
+ export const __test_only = {
126
+ RESULT_VALUES,
127
+ parseUnitDetailsOutput: (unit, out) => {
128
+ const props = {};
129
+ for (const line of out.split("\n")) {
130
+ const eq = line.indexOf("=");
131
+ if (eq === -1)
132
+ continue;
133
+ props[line.slice(0, eq).trim()] = line.slice(eq + 1).trim();
134
+ }
135
+ const rawResult = props.Result ?? "";
136
+ const result = RESULT_VALUES.has(rawResult)
137
+ ? rawResult
138
+ : "unknown";
139
+ const nRestarts = Number.parseInt(props.NRestarts ?? "0", 10);
140
+ return {
141
+ name: unit,
142
+ result,
143
+ active_state: props.ActiveState ?? "",
144
+ sub_state: props.SubState ?? "",
145
+ n_restarts: Number.isFinite(nRestarts) ? nRestarts : 0,
146
+ };
147
+ },
148
+ };
56
149
  //# sourceMappingURL=systemd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"systemd.js","sourceRoot":"","sources":["../../src/collect/systemd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAarC,+DAA+D;AAC/D,MAAM,gBAAgB,GAAG;IACvB,sCAAsC;CACvC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,gBAA0B,EAAE;IAC/D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE;QACpC,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS;KAC3E,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACpC,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;IAC/C,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,gBAAgB,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC;IAClE,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,gEAAgE;IAChE,iEAAiE;IACjE,iEAAiE;IACjE,4DAA4D;IAC5D,MAAM,gBAAgB,GAA6B,EAAE,CAAC;IACtD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO;QACL,YAAY,EAAE,KAAK;QACnB,YAAY,EAAE,KAAK,CAAC,MAAM;QAC1B,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClD,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,IAAY;IAC5C,+DAA+D;IAC/D,+DAA+D;IAC/D,iEAAiE;IACjE,gBAAgB;IAChB,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,YAAY,EAAE;QAClC,IAAI,EAAE,IAAI;QACV,YAAY;QACZ,IAAI,EAAE,MAAM,CAAC,sBAAsB,CAAC;QACpC,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IACH,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,OAAO,GAAG;SACP,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SAC3B,KAAK,CAAC,CAAC,sBAAsB,CAAC,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"systemd.js","sourceRoot":"","sources":["../../src/collect/systemd.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ export interface TcpStatsSnapshot {
2
+ available: boolean;
3
+ reason?: string;
4
+ out_segs_total?: number;
5
+ retrans_segs_total?: number;
6
+ in_segs_total?: number;
7
+ retrans_ratio?: number | null;
8
+ retrans_rate_per_sec?: number | null;
9
+ listen_overflows_total?: number;
10
+ listen_drops_total?: number;
11
+ listen_overflows_rate_per_sec?: number | null;
12
+ listen_drops_rate_per_sec?: number | null;
13
+ }
14
+ export declare function collectTcpStats(): TcpStatsSnapshot;
15
+ /**
16
+ * Parse /proc/net/snmp's `Tcp:` two-line section (header + values).
17
+ *
18
+ * Lines look like:
19
+ * Tcp: RtoAlgorithm RtoMin ... InSegs OutSegs RetransSegs InErrs OutRsts InCsumErrors
20
+ * Tcp: 1 200 ... 9876543 8765432 1234 0 100 0
21
+ */
22
+ export declare function parseTcpSnmp(): {
23
+ out_segs: number;
24
+ retrans_segs: number;
25
+ in_segs: number;
26
+ } | null;
27
+ /**
28
+ * Parse /proc/net/netstat's `TcpExt:` two-line section for the listen-
29
+ * queue counters.
30
+ */
31
+ export declare function parseTcpExt(): {
32
+ listen_overflows: number;
33
+ listen_drops: number;
34
+ } | null;
35
+ export declare const __test_only: {
36
+ resetForTests: () => void;
37
+ };