instar 1.3.830 → 1.3.832

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 (114) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +83 -12
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/core/AutonomousRealCheckAnnotator.d.ts +105 -0
  5. package/dist/core/AutonomousRealCheckAnnotator.d.ts.map +1 -0
  6. package/dist/core/AutonomousRealCheckAnnotator.js +122 -0
  7. package/dist/core/AutonomousRealCheckAnnotator.js.map +1 -0
  8. package/dist/core/AutonomousRunStore.d.ts +29 -0
  9. package/dist/core/AutonomousRunStore.d.ts.map +1 -1
  10. package/dist/core/AutonomousRunStore.js +38 -0
  11. package/dist/core/AutonomousRunStore.js.map +1 -1
  12. package/dist/core/BackupManager.d.ts.map +1 -1
  13. package/dist/core/BackupManager.js +47 -1
  14. package/dist/core/BackupManager.js.map +1 -1
  15. package/dist/core/CircuitBreakingIntelligenceProvider.d.ts +12 -0
  16. package/dist/core/CircuitBreakingIntelligenceProvider.d.ts.map +1 -1
  17. package/dist/core/CircuitBreakingIntelligenceProvider.js +56 -4
  18. package/dist/core/CircuitBreakingIntelligenceProvider.js.map +1 -1
  19. package/dist/core/CompletionEvaluator.d.ts +62 -2
  20. package/dist/core/CompletionEvaluator.d.ts.map +1 -1
  21. package/dist/core/CompletionEvaluator.js +124 -6
  22. package/dist/core/CompletionEvaluator.js.map +1 -1
  23. package/dist/core/DecisionQualityRecorderImpl.d.ts +192 -0
  24. package/dist/core/DecisionQualityRecorderImpl.d.ts.map +1 -0
  25. package/dist/core/DecisionQualityRecorderImpl.js +363 -0
  26. package/dist/core/DecisionQualityRecorderImpl.js.map +1 -0
  27. package/dist/core/IntelligenceRouter.d.ts +33 -0
  28. package/dist/core/IntelligenceRouter.d.ts.map +1 -1
  29. package/dist/core/IntelligenceRouter.js +240 -54
  30. package/dist/core/IntelligenceRouter.js.map +1 -1
  31. package/dist/core/JudgmentProvenanceLog.d.ts +102 -2
  32. package/dist/core/JudgmentProvenanceLog.d.ts.map +1 -1
  33. package/dist/core/JudgmentProvenanceLog.js +239 -11
  34. package/dist/core/JudgmentProvenanceLog.js.map +1 -1
  35. package/dist/core/MessagingToneGate.d.ts +30 -0
  36. package/dist/core/MessagingToneGate.d.ts.map +1 -1
  37. package/dist/core/MessagingToneGate.js +63 -0
  38. package/dist/core/MessagingToneGate.js.map +1 -1
  39. package/dist/core/PostUpdateMigrator.d.ts +11 -0
  40. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  41. package/dist/core/PostUpdateMigrator.js +32 -0
  42. package/dist/core/PostUpdateMigrator.js.map +1 -1
  43. package/dist/core/WriteDomainRegistry.d.ts.map +1 -1
  44. package/dist/core/WriteDomainRegistry.js +24 -0
  45. package/dist/core/WriteDomainRegistry.js.map +1 -1
  46. package/dist/core/decisionGradingPass.d.ts +89 -0
  47. package/dist/core/decisionGradingPass.d.ts.map +1 -0
  48. package/dist/core/decisionGradingPass.js +188 -0
  49. package/dist/core/decisionGradingPass.js.map +1 -0
  50. package/dist/core/decisionQualityTypes.d.ts +170 -0
  51. package/dist/core/decisionQualityTypes.d.ts.map +1 -0
  52. package/dist/core/decisionQualityTypes.js +85 -0
  53. package/dist/core/decisionQualityTypes.js.map +1 -0
  54. package/dist/core/devGatedFeatures.d.ts.map +1 -1
  55. package/dist/core/devGatedFeatures.js +6 -0
  56. package/dist/core/devGatedFeatures.js.map +1 -1
  57. package/dist/core/machineCoherenceManifest.d.ts.map +1 -1
  58. package/dist/core/machineCoherenceManifest.js +4 -0
  59. package/dist/core/machineCoherenceManifest.js.map +1 -1
  60. package/dist/core/types.d.ts +69 -4
  61. package/dist/core/types.d.ts.map +1 -1
  62. package/dist/core/types.js.map +1 -1
  63. package/dist/data/provenanceCoverage.d.ts +156 -0
  64. package/dist/data/provenanceCoverage.d.ts.map +1 -0
  65. package/dist/data/provenanceCoverage.js +674 -0
  66. package/dist/data/provenanceCoverage.js.map +1 -0
  67. package/dist/monitoring/ExternalHogDecisionStore.d.ts +256 -0
  68. package/dist/monitoring/ExternalHogDecisionStore.d.ts.map +1 -0
  69. package/dist/monitoring/ExternalHogDecisionStore.js +481 -0
  70. package/dist/monitoring/ExternalHogDecisionStore.js.map +1 -0
  71. package/dist/monitoring/ExternalHogRealAdapters.d.ts +6 -2
  72. package/dist/monitoring/ExternalHogRealAdapters.d.ts.map +1 -1
  73. package/dist/monitoring/ExternalHogRealAdapters.js +2 -2
  74. package/dist/monitoring/ExternalHogRealAdapters.js.map +1 -1
  75. package/dist/monitoring/ExternalHogScanTick.d.ts +95 -3
  76. package/dist/monitoring/ExternalHogScanTick.d.ts.map +1 -1
  77. package/dist/monitoring/ExternalHogScanTick.js +102 -9
  78. package/dist/monitoring/ExternalHogScanTick.js.map +1 -1
  79. package/dist/monitoring/ExternalHogSentinel.d.ts +71 -3
  80. package/dist/monitoring/ExternalHogSentinel.d.ts.map +1 -1
  81. package/dist/monitoring/ExternalHogSentinel.js +126 -2
  82. package/dist/monitoring/ExternalHogSentinel.js.map +1 -1
  83. package/dist/monitoring/ExternalHogServerPrimitives.d.ts +10 -2
  84. package/dist/monitoring/ExternalHogServerPrimitives.d.ts.map +1 -1
  85. package/dist/monitoring/ExternalHogServerPrimitives.js +1 -1
  86. package/dist/monitoring/ExternalHogServerPrimitives.js.map +1 -1
  87. package/dist/monitoring/FeatureMetricsLedger.d.ts +304 -0
  88. package/dist/monitoring/FeatureMetricsLedger.d.ts.map +1 -1
  89. package/dist/monitoring/FeatureMetricsLedger.js +731 -0
  90. package/dist/monitoring/FeatureMetricsLedger.js.map +1 -1
  91. package/dist/scaffold/templates.d.ts.map +1 -1
  92. package/dist/scaffold/templates.js +2 -1
  93. package/dist/scaffold/templates.js.map +1 -1
  94. package/dist/server/AgentServer.d.ts.map +1 -1
  95. package/dist/server/AgentServer.js +55 -1
  96. package/dist/server/AgentServer.js.map +1 -1
  97. package/dist/server/CapabilityIndex.d.ts.map +1 -1
  98. package/dist/server/CapabilityIndex.js +15 -1
  99. package/dist/server/CapabilityIndex.js.map +1 -1
  100. package/dist/server/fileRoutes.d.ts.map +1 -1
  101. package/dist/server/fileRoutes.js +9 -0
  102. package/dist/server/fileRoutes.js.map +1 -1
  103. package/dist/server/routes.d.ts.map +1 -1
  104. package/dist/server/routes.js +334 -5
  105. package/dist/server/routes.js.map +1 -1
  106. package/package.json +1 -1
  107. package/src/data/builtin-manifest.json +65 -65
  108. package/src/data/provenanceCoverage.ts +850 -0
  109. package/src/scaffold/templates/jobs/instar/llm-decision-grading.md +32 -0
  110. package/src/scaffold/templates.ts +2 -1
  111. package/upgrades/1.3.831.md +30 -0
  112. package/upgrades/1.3.832.md +22 -0
  113. package/upgrades/side-effects/llm-decision-quality-meter.md +95 -0
  114. package/upgrades/side-effects/messaging-tone-gate-provenance-enrollment.md +68 -0
@@ -0,0 +1,481 @@
1
+ /**
2
+ * ExternalHogDecisionStore — the DURABLE per-ledgerKey decision record behind the external-hog
3
+ * kill/leave grading (docs/specs/llm-decision-quality-meter.md §5.3 + §5.4.5; the review
4
+ * established the carrier this grading needs did not exist: the P19 kill-ledger state is
5
+ * in-memory-only, kill-records-only, with a 1h retention — shorter than the 6h evidence window).
6
+ *
7
+ * On-disk: `<stateDir>/state/external-hog-decisions.json` — the `.instar/state/` runtime-state
8
+ * subdir (rides the existing gitignore; the same subdir the judgment-provenance log uses).
9
+ * At-rest posture mirrors ExternalHogArmStore exactly: 0600 via atomic tmp + fsync + rename
10
+ * writes, FAIL-CLOSED reads (missing / unreadable / corrupt / wrong-shape → empty store, never a
11
+ * throw; a malformed individual record is dropped, never half-trusted). Contents are content-free
12
+ * (hashes, pids, timestamps, enums) — never argv, never model output. The file is
13
+ * backup-excluded (BLOCKED_PATH_PREFIXES + NEVER_BACKUP_PATH_SEGMENTS, P1) and NEVER_SERVED
14
+ * (fileRoutes, P1): it is grading GROUND TRUTH — serve-deny implies edit-deny.
15
+ *
16
+ * SLOT SEMANTICS (§5.3, ADV r3): per ledgerKey the store holds the LATEST decision PLUS the most
17
+ * recent in-window ENACTED-kill decision retained ALONGSIDE — a kill's evidence slot is never
18
+ * evicted by later same-key decisions before its window closes, so a same-commandHash flood
19
+ * cannot force a premature `unknown` on a kill.
20
+ *
21
+ * GRADE-ON-SUPERSEDE (§5.3, ADV/DC r3): writing a new decision for ledgerKey K FIRST applies the
22
+ * positive-evidence rules against the OUTGOING record(s) — the supersede event IS the
23
+ * positive-evidence event for the recurrence rules; within-tick ordering is pinned, not assumed —
24
+ * and returns any grade results to the caller BEFORE replacement. A superseded record whose rules
25
+ * yield nothing ages out as `unknown` (stated, not silent).
26
+ *
27
+ * RETENTION (§5.3, DC r3): pruned on write at
28
+ * `max(evidenceWindowMs + gradingSlackMs, killLedgerBreakerWindowMs)` — the grading slack
29
+ * (default 2h ≥ 2× the grading job's hourly cadence) closes the race where an entry becomes
30
+ * gradeable at exactly the age it becomes prunable; the evidence window is the config knob
31
+ * (`provenance.quality.evidenceWindowHours`, inline default 6h — deliberately unseeded, §5.7) and
32
+ * retention DERIVES from it, so tuning the window can never silently outrun the carrier.
33
+ *
34
+ * CLOCK: the store keeps its OWN injected WALL clock (epoch ms, default Date.now) — the scan
35
+ * tick's monotonic hrtime clock must never be persisted (it restarts at 0 with the process).
36
+ *
37
+ * The pure evidence-rule predicates (§5.4.5) are exported at module level: the positive-evidence
38
+ * rules (`hog-respawn-wrong-v1`, `hog-leave-recurrence-v1`) run in scan ticks via
39
+ * grade-on-supersede here; the window-close rule (`hog-sustained-right-v1`, owner
40
+ * `DecisionGrading`) is exported for the P9 grading endpoint to drive over `list()` — this store
41
+ * NEVER emits sustained-right events itself (the sentinel is not that rule's registered owner).
42
+ */
43
+ import fs from 'node:fs';
44
+ import path from 'node:path';
45
+ import { lstartToEpochMs } from './ExternalHogFactBuilder.js';
46
+ import { getRule } from '../data/provenanceCoverage.js';
47
+ // ── Registered evidence-rule ids (§5.4.5 — immutable, versioned) ────────────
48
+ export const HOG_RESPAWN_WRONG_RULE_ID = 'hog-respawn-wrong-v1';
49
+ export const HOG_LEAVE_RECURRENCE_RULE_ID = 'hog-leave-recurrence-v1';
50
+ export const HOG_SUSTAINED_RIGHT_RULE_ID = 'hog-sustained-right-v1';
51
+ export const HOG_ENACTED_DISPOSITION_RULE_ID = 'hog-enacted-disposition-v1';
52
+ /** The sentinel's registered owning component for its rules (§5.4.2 — the
53
+ * annotate chokepoint rejects an annotation whose gradedBy.component is not
54
+ * the ruleId's registered owner; a unit test pins this against RULE_REGISTRY). */
55
+ export const EXTERNAL_HOG_SENTINEL_COMPONENT = 'ExternalHogSentinel';
56
+ /**
57
+ * Sanity guard the tests pin: the sentinel-emitted rules must be registered to
58
+ * EXTERNAL_HOG_SENTINEL_COMPONENT (and sustained-right must NOT be — it belongs
59
+ * to the grading job). Drift here would silently zero the hog grades at the
60
+ * chokepoint's owner check.
61
+ */
62
+ export function hogRuleRegistryAgrees() {
63
+ const sentinelOwned = [HOG_RESPAWN_WRONG_RULE_ID, HOG_LEAVE_RECURRENCE_RULE_ID, HOG_ENACTED_DISPOSITION_RULE_ID]
64
+ .every((id) => getRule(id)?.owningComponent === EXTERNAL_HOG_SENTINEL_COMPONENT);
65
+ const gradingOwned = getRule(HOG_SUSTAINED_RIGHT_RULE_ID)?.owningComponent === 'DecisionGrading';
66
+ return sentinelOwned && gradingOwned;
67
+ }
68
+ // ── Record + evidence types ─────────────────────────────────────────────────
69
+ /** Enacted dispositions that COUNT as an enacted kill (§5.3 — the ONLY entries
70
+ * to the kill-grading rules; everything else ages out `unknown`). */
71
+ export const HOG_KILL_ENACTED = new Set(['killed', 'sigterm-exited']);
72
+ /** Build the evidence view from one tick's outcomes + the tick's parsed table. */
73
+ export function buildScanEvidenceView(outcomes, table) {
74
+ const candidates = outcomes.map((o) => ({
75
+ pid: o.decision.targetTuple.pid,
76
+ startTimeMs: o.decision.targetTuple.startTimeMs,
77
+ commandHash: o.decision.commandHash,
78
+ }));
79
+ return {
80
+ candidates,
81
+ aliveStartTimeMs: (pid) => {
82
+ const row = table.find((r) => r.pid === pid);
83
+ if (!row)
84
+ return undefined; // no live process at that pid
85
+ return lstartToEpochMs(row.startTime); // number = orderable; null = un-orderable
86
+ },
87
+ };
88
+ }
89
+ // ── The pure §5.4.5 evidence-rule predicates ────────────────────────────────
90
+ /** Are these the SAME stored decision? (Reference equality dies at hydration —
91
+ * latest and kill may be two parses of one record; compare identity fields.) */
92
+ function sameStoredDecision(a, b) {
93
+ return a.atMs === b.atMs && a.correlationId === b.correlationId
94
+ && a.enacted === b.enacted && a.commandHash === b.commandHash
95
+ && a.targetTuple.pid === b.targetTuple.pid;
96
+ }
97
+ /** Is `candidate` provably the SAME process as the record's target (pid + orderable equal start)? */
98
+ function isSameProcess(candidate, target) {
99
+ return candidate.pid === target.pid
100
+ && candidate.startTimeMs !== null
101
+ && target.startTimeMs !== null
102
+ && candidate.startTimeMs === target.startTimeMs;
103
+ }
104
+ /** Is the record's evidence window still open at `nowMs`? (Negative/skewed clocks fail closed → not in window.) */
105
+ function inWindow(record, nowMs) {
106
+ const age = nowMs - record.atMs;
107
+ return Number.isFinite(age) && age >= 0 && age <= record.effectiveWindowMs;
108
+ }
109
+ /**
110
+ * `hog-respawn-wrong-v1` (deterministic-proof; §5.4.5): a kill is graded `wrong` ONLY IF, within
111
+ * the bounded window, a same-commandHash CANDIDATE respawns AND the kill-time ordering test
112
+ * re-runs TRUE at evidence time — a currently-alive process sits at the killed process's recorded
113
+ * parent pid with a start-time ≤ the killed child's recorded start-time, proving the orphan
114
+ * determination was false. Spoof-proof in both directions (start-times cannot be forged old):
115
+ * a respawn under a genuinely NEW owner (the operator reopened the editor — the live parent
116
+ * started AFTER the killed child, or no live parent exists) fails the ordering test and grades
117
+ * `unknown`, never `wrong`; un-orderable start-times → `unknown`.
118
+ *
119
+ * Preconditions: verdict 'kill' actually ENACTED (`killed`/`sigterm-exited`) — would-kill /
120
+ * deferred / aborted / decider-unavailable / breaker-held decisions are NEVER graded by this rule
121
+ * (they age out `unknown`). Returns null when no evidence event applies (no respawn, out of
122
+ * window, preconditions unmet).
123
+ */
124
+ export function evaluateHogRespawnWrong(record, scan, nowMs) {
125
+ if (record.verdict !== 'kill')
126
+ return null; // grades attribute to the LLM verdict (§5.3)
127
+ if (!HOG_KILL_ENACTED.has(record.enacted))
128
+ return null; // only ENACTED kills enter kill-grading
129
+ if (!inWindow(record, nowMs))
130
+ return null; // out of window → the window-close rule's territory
131
+ // Trigger: a same-commandHash CANDIDATE that is not provably the killed process itself.
132
+ const respawned = scan.candidates.some((c) => c.commandHash === record.commandHash && !isSameProcess(c, record.targetTuple));
133
+ if (!respawned)
134
+ return null; // no evidence event
135
+ // The kill-time ordering test, re-run at evidence time.
136
+ const parentPid = record.ownerTuple.parentPid;
137
+ if (parentPid === undefined)
138
+ return 'unknown'; // un-evaluable (never occurs on enacted kills by construction)
139
+ const aliveParentStartMs = scan.aliveStartTimeMs(parentPid);
140
+ if (aliveParentStartMs === undefined)
141
+ return 'unknown'; // no live parent → new/ownerless respawn → never wrong
142
+ if (aliveParentStartMs === null || record.targetTuple.startTimeMs === null)
143
+ return 'unknown'; // un-orderable
144
+ return aliveParentStartMs <= record.targetTuple.startTimeMs ? 'wrong' : 'unknown';
145
+ }
146
+ /**
147
+ * `hog-sustained-right-v1` (negative-evidence; §5.4.5): a kill whose commandHash did NOT re-flag
148
+ * as a CANDIDATE within the window, where the floor recorded the owner dead at kill time
149
+ * (floorPermitted ⟹ the owner-dead invariant held), grades `right` at WINDOW CLOSE. Sensor
150
+ * bound, stated: candidate visibility is sustained-CPU processes only — a quiet respawn is
151
+ * invisible, so this grade carries negative-evidence strength, never proof.
152
+ *
153
+ * Owner: `DecisionGrading` (the P9 grading endpoint drives this over `list()`); the sentinel
154
+ * never emits it. Returns null while the window is open, on any non-enacted-kill record, or when
155
+ * a re-flag was recorded inside the window.
156
+ */
157
+ export function evaluateHogSustainedRight(record, nowMs) {
158
+ if (record.verdict !== 'kill')
159
+ return null;
160
+ if (!HOG_KILL_ENACTED.has(record.enacted))
161
+ return null;
162
+ if (!record.floorPermitted)
163
+ return null; // precondition: floor recorded owner dead at kill time
164
+ const age = nowMs - record.atMs;
165
+ if (!Number.isFinite(age) || age <= record.effectiveWindowMs)
166
+ return null; // window not closed yet
167
+ if (record.reFlaggedAtMs !== undefined && record.reFlaggedAtMs - record.atMs <= record.effectiveWindowMs) {
168
+ return null; // a same-key candidate re-flagged in-window → negative evidence destroyed
169
+ }
170
+ return 'right';
171
+ }
172
+ /**
173
+ * `hog-leave-recurrence-v1` (recurrence-proxy; §5.4.5): applies ONLY to decisions where
174
+ * `verdict === 'leave'` AND `enacted === 'alert-only-model-spared'` (a kill-verdict held by the
175
+ * breaker/governor/floor is NEVER graded against the classifier) AND `floorPermitted` was true at
176
+ * decision time (sparing an owner-alive hog is correct behavior with no gradeable
177
+ * counterfactual). Within those preconditions: the SAME PROCESS (matching targetTuple pid +
178
+ * start-time) re-flagging as a sustained hog within the window grades the leave `wrong`; a
179
+ * DIFFERENT process with the same commandHash grades `unknown` (a lookalike spawned by any
180
+ * same-uid process is not a counterfactual for the specific process the classifier spared — and
181
+ * cannot fabricate a `wrong`). No-recurrence `right` at window close belongs to the grading job,
182
+ * not this predicate.
183
+ *
184
+ * `nowMs` bounds the check to the record's evidence window (additive to the spec's pinned
185
+ * signature — the predicate is window-bounded by §5.4.5 and must not rely on caller discipline).
186
+ */
187
+ export function evaluateHogLeaveRecurrence(record, currentCandidateSignature, nowMs) {
188
+ if (record.verdict !== 'leave')
189
+ return null;
190
+ if (record.enacted !== 'alert-only-model-spared')
191
+ return null;
192
+ if (!record.floorPermitted)
193
+ return null;
194
+ if (!inWindow(record, nowMs))
195
+ return null;
196
+ if (currentCandidateSignature.commandHash !== record.commandHash)
197
+ return null; // not an evidence event
198
+ if (isSameProcess(currentCandidateSignature, record.targetTuple))
199
+ return 'wrong';
200
+ // Same commandHash but a different process — or same pid with un-orderable
201
+ // start-times (same-ness unconfirmable) → lookalike, never a counterfactual.
202
+ return 'unknown';
203
+ }
204
+ export function hogDecisionStorePath(stateDir) {
205
+ return path.join(stateDir, 'state', 'external-hog-decisions.json');
206
+ }
207
+ const HOUR_MS = 60 * 60 * 1000;
208
+ const VERDICTS = new Set(['kill', 'leave', 'alert', 'decider-unavailable']);
209
+ const ENACTED = new Set([
210
+ 'killed', 'sigterm-exited', 'would-kill', 'deferred', 'aborted',
211
+ 'alert-only-model-spared', 'alert-only-floor-veto', 'alert-only-breaker-held',
212
+ 'alert-only-governor-hold', 'decider-unavailable',
213
+ ]);
214
+ /** A positive-hours config value, else the inline default (never seeded into config — §5.7). */
215
+ function hoursOrDefault(v, defaultHours) {
216
+ return typeof v === 'number' && Number.isFinite(v) && v > 0 ? v : defaultHours;
217
+ }
218
+ /** Validate one parsed record member-wise; null = malformed → dropped (fail closed per record). */
219
+ function coerceRecord(raw) {
220
+ if (!raw || typeof raw !== 'object')
221
+ return null;
222
+ const r = raw;
223
+ if (typeof r.verdict !== 'string' || !VERDICTS.has(r.verdict))
224
+ return null;
225
+ if (typeof r.enacted !== 'string' || !ENACTED.has(r.enacted))
226
+ return null;
227
+ if (r.correlationId !== null && typeof r.correlationId !== 'string')
228
+ return null;
229
+ if (typeof r.atMs !== 'number' || !Number.isFinite(r.atMs))
230
+ return null;
231
+ if (typeof r.floorPermitted !== 'boolean')
232
+ return null;
233
+ if (typeof r.commandHash !== 'string' || r.commandHash.length === 0)
234
+ return null;
235
+ if (typeof r.effectiveWindowMs !== 'number' || !Number.isFinite(r.effectiveWindowMs) || r.effectiveWindowMs <= 0)
236
+ return null;
237
+ const t = r.targetTuple;
238
+ if (!t || typeof t !== 'object' || typeof t.pid !== 'number' || !Number.isInteger(t.pid))
239
+ return null;
240
+ if (t.startTimeMs !== null && (typeof t.startTimeMs !== 'number' || !Number.isFinite(t.startTimeMs)))
241
+ return null;
242
+ const o = r.ownerTuple;
243
+ if (!o || typeof o !== 'object')
244
+ return null;
245
+ if (o.parentPid !== undefined && (typeof o.parentPid !== 'number' || !Number.isInteger(o.parentPid)))
246
+ return null;
247
+ if (o.parentStartTimeMs !== undefined && (typeof o.parentStartTimeMs !== 'number' || !Number.isFinite(o.parentStartTimeMs)))
248
+ return null;
249
+ if (r.reFlaggedAtMs !== undefined && (typeof r.reFlaggedAtMs !== 'number' || !Number.isFinite(r.reFlaggedAtMs)))
250
+ return null;
251
+ return {
252
+ verdict: r.verdict,
253
+ enacted: r.enacted,
254
+ correlationId: r.correlationId,
255
+ atMs: r.atMs,
256
+ targetTuple: { pid: t.pid, startTimeMs: t.startTimeMs },
257
+ ownerTuple: {
258
+ ...(o.parentPid !== undefined ? { parentPid: o.parentPid } : {}),
259
+ ...(o.parentStartTimeMs !== undefined ? { parentStartTimeMs: o.parentStartTimeMs } : {}),
260
+ },
261
+ floorPermitted: r.floorPermitted,
262
+ commandHash: r.commandHash,
263
+ effectiveWindowMs: r.effectiveWindowMs,
264
+ ...(r.reFlaggedAtMs !== undefined ? { reFlaggedAtMs: r.reFlaggedAtMs } : {}),
265
+ };
266
+ }
267
+ export class ExternalHogDecisionStore {
268
+ file;
269
+ clock;
270
+ slots = new Map();
271
+ /** The evidence window in force (config-derived; recorded per record). */
272
+ evidenceWindowMs;
273
+ gradingSlackMs;
274
+ /** §5.3 derivation: max(evidenceWindowMs + gradingSlackMs, killLedgerBreakerWindowMs). */
275
+ retentionMs;
276
+ /** Seam dry-run (§5.2): suppresses the durable persist; grade-on-supersede still runs in-memory. */
277
+ dryRun;
278
+ log;
279
+ constructor(opts) {
280
+ this.file = hogDecisionStorePath(opts.stateDir);
281
+ this.clock = opts.nowMs ?? Date.now;
282
+ const quality = opts.config?.provenance?.quality;
283
+ this.evidenceWindowMs = hoursOrDefault(quality?.evidenceWindowHours, 6) * HOUR_MS;
284
+ this.gradingSlackMs = hoursOrDefault(quality?.gradingSlackHours, 2) * HOUR_MS;
285
+ const breakerMs = Number.isFinite(opts.killLedgerBreakerWindowMs) && opts.killLedgerBreakerWindowMs > 0
286
+ ? opts.killLedgerBreakerWindowMs : 0;
287
+ this.retentionMs = Math.max(this.evidenceWindowMs + this.gradingSlackMs, breakerMs);
288
+ // §5.2/§5.7: dryRun defaults TRUE (the recorder's `!== false` safe default) —
289
+ // a store built without the flag suppresses durable writes rather than
290
+ // silently persisting on a dark seam.
291
+ this.dryRun = opts.dryRun !== false;
292
+ this.log = opts.log ?? (() => { });
293
+ this.hydrate(); // fail-closed: any anomaly → empty store
294
+ }
295
+ /** FAIL-CLOSED hydration (the ArmStore posture): missing / unreadable /
296
+ * corrupt / wrong-shape file → empty; a malformed record is dropped. */
297
+ hydrate() {
298
+ try {
299
+ if (!fs.existsSync(this.file))
300
+ return;
301
+ const parsed = JSON.parse(fs.readFileSync(this.file, 'utf-8'));
302
+ if (!parsed || typeof parsed !== 'object')
303
+ return;
304
+ const slots = parsed.slots;
305
+ if (!slots || typeof slots !== 'object' || Array.isArray(slots))
306
+ return;
307
+ for (const [key, raw] of Object.entries(slots)) {
308
+ if (!raw || typeof raw !== 'object')
309
+ continue;
310
+ const latest = coerceRecord(raw.latest);
311
+ const kill = coerceRecord(raw.kill);
312
+ if (!latest && !kill)
313
+ continue;
314
+ this.slots.set(key, { ...(latest ? { latest } : {}), ...(kill ? { kill } : {}) });
315
+ }
316
+ }
317
+ catch {
318
+ // @silent-fallback-ok: FAIL-CLOSED read is this store's documented contract (the
319
+ // ExternalHogArmStore posture, spec §5.3): a damaged decision file yields an EMPTY
320
+ // store — decisions then age out `unknown` (honest) rather than grading over
321
+ // half-parsed ground truth. Never a throw into sentinel construction.
322
+ this.slots.clear();
323
+ }
324
+ }
325
+ /** The on-disk shape for the current in-memory slots (shared by persist + the dryRun would-write sizer). */
326
+ buildShape() {
327
+ const shape = { version: 1, slots: {} };
328
+ for (const [key, slot] of this.slots) {
329
+ shape.slots[key] = {
330
+ ...(slot.latest ? { latest: slot.latest } : {}),
331
+ ...(slot.kill ? { kill: slot.kill } : {}),
332
+ };
333
+ }
334
+ return shape;
335
+ }
336
+ /** Atomic + durable persist (tmp → fsync → rename, 0600) — the ArmStore write posture. */
337
+ persist() {
338
+ const dir = path.dirname(this.file);
339
+ fs.mkdirSync(dir, { recursive: true });
340
+ const shape = this.buildShape();
341
+ const tmp = `${this.file}.tmp-${process.pid}`;
342
+ const fd = fs.openSync(tmp, 'w', 0o600);
343
+ try {
344
+ fs.writeSync(fd, JSON.stringify(shape, null, 2));
345
+ fs.fsyncSync(fd); // durable: content on disk before the rename publishes it
346
+ }
347
+ finally {
348
+ fs.closeSync(fd);
349
+ }
350
+ fs.renameSync(tmp, this.file); // atomic overwrite — a reader sees old-or-new, never partial
351
+ }
352
+ /**
353
+ * §5.2 dryRun stage: the durable persist is suppressed, so emit a METADATA-ONLY
354
+ * would-write line instead — ledgerKey count + serialized byte size, NEVER the
355
+ * record content (the same posture the recorder's would-write line keeps). The
356
+ * in-memory slots have already been mutated by `record()`, so this reflects what
357
+ * WOULD have been written.
358
+ */
359
+ logWouldPersist() {
360
+ let bytes = -1;
361
+ try {
362
+ bytes = Buffer.byteLength(JSON.stringify(this.buildShape()), 'utf8');
363
+ }
364
+ catch {
365
+ // @silent-fallback-ok: byte sizing feeds a metadata-only would-write log line
366
+ // (the write is already suppressed); an unserializable shape reports -1 rather
367
+ // than throwing into the scan tick the store observes.
368
+ bytes = -1;
369
+ }
370
+ this.log(`[decision-quality] dryRun would-persist hog-store: ledgerKeys=${this.slots.size} bytes=${bytes}`);
371
+ }
372
+ /** Prune on write at the derived retention (per record; empty keys dropped). */
373
+ prune(nowMs) {
374
+ for (const [key, slot] of this.slots) {
375
+ if (slot.latest && nowMs - slot.latest.atMs > this.retentionMs)
376
+ delete slot.latest;
377
+ if (slot.kill && nowMs - slot.kill.atMs > this.retentionMs)
378
+ delete slot.kill;
379
+ if (!slot.latest && !slot.kill)
380
+ this.slots.delete(key);
381
+ }
382
+ }
383
+ /** The retained slots for one ledgerKey (grading/test read). */
384
+ get(ledgerKey) {
385
+ const slot = this.slots.get(ledgerKey);
386
+ if (!slot)
387
+ return undefined;
388
+ return { ...(slot.latest ? { latest: slot.latest } : {}), ...(slot.kill ? { kill: slot.kill } : {}) };
389
+ }
390
+ /** Every retained record with its key + slot — the P9 grading endpoint's read
391
+ * (window-close evaluation via evaluateHogSustainedRight over these rows). */
392
+ list() {
393
+ const out = [];
394
+ for (const [ledgerKey, slot] of this.slots) {
395
+ if (slot.latest)
396
+ out.push({ ledgerKey, slot: 'latest', record: slot.latest });
397
+ if (slot.kill && !(slot.latest && sameStoredDecision(slot.kill, slot.latest)))
398
+ out.push({ ledgerKey, slot: 'kill', record: slot.kill });
399
+ }
400
+ return out;
401
+ }
402
+ /**
403
+ * Write ONE decision (grade-on-supersede FIRST, §5.3): evaluates the positive-evidence
404
+ * predicates against the OUTGOING record(s) for this ledgerKey — the incoming decision IS the
405
+ * same-commandHash re-flag event — and returns the grade events to the caller BEFORE the slot
406
+ * is replaced. Also stamps the retained in-window kill slot's `reFlaggedAtMs` (destroying the
407
+ * window-close negative evidence honestly), applies the slot semantics (an incoming ENACTED
408
+ * kill takes the kill slot; a non-kill NEVER evicts it), prunes at retention, and persists
409
+ * atomically. Throws only on a persist failure (the caller — the sentinel shell — contains it).
410
+ */
411
+ record(seed, scan) {
412
+ const nowMs = this.clock();
413
+ const events = [];
414
+ const incoming = {
415
+ verdict: seed.verdict,
416
+ enacted: seed.enacted,
417
+ correlationId: seed.correlationId,
418
+ atMs: nowMs,
419
+ targetTuple: seed.targetTuple,
420
+ ownerTuple: seed.ownerTuple,
421
+ floorPermitted: seed.floorPermitted,
422
+ commandHash: seed.commandHash,
423
+ effectiveWindowMs: this.evidenceWindowMs,
424
+ };
425
+ const slot = this.slots.get(seed.ledgerKey);
426
+ if (slot) {
427
+ // ── Grade-on-supersede: the OUTGOING records are graded BEFORE replacement. ──
428
+ if (slot.kill) {
429
+ const grade = evaluateHogRespawnWrong(slot.kill, scan, nowMs);
430
+ if (grade) {
431
+ events.push({
432
+ ruleId: HOG_RESPAWN_WRONG_RULE_ID, grade,
433
+ correlationId: slot.kill.correlationId, ledgerKey: seed.ledgerKey,
434
+ windowMs: slot.kill.effectiveWindowMs,
435
+ evidenceNote: `same-commandHash respawn at supersede; enacted=${slot.kill.enacted}; ordering-test=${grade === 'wrong' ? 'true' : 'false-or-unorderable'}`,
436
+ });
437
+ }
438
+ // The supersede IS a same-key re-flag: stamp it while the kill's window is open
439
+ // so hog-sustained-right-v1 can never grade a re-flagged kill `right`.
440
+ if (inWindow(slot.kill, nowMs) && slot.kill.reFlaggedAtMs === undefined) {
441
+ slot.kill = { ...slot.kill, reFlaggedAtMs: nowMs };
442
+ }
443
+ }
444
+ // (The leave-recurrence preconditions — verdict 'leave' — make a latest-that-IS-the-kill
445
+ // a structural no-op here; the guard just skips the redundant evaluation.)
446
+ if (slot.latest && !(slot.kill && sameStoredDecision(slot.latest, slot.kill))) {
447
+ const grade = evaluateHogLeaveRecurrence(slot.latest, { pid: seed.targetTuple.pid, startTimeMs: seed.targetTuple.startTimeMs, commandHash: seed.commandHash }, nowMs);
448
+ if (grade) {
449
+ events.push({
450
+ ruleId: HOG_LEAVE_RECURRENCE_RULE_ID, grade,
451
+ correlationId: slot.latest.correlationId, ledgerKey: seed.ledgerKey,
452
+ windowMs: slot.latest.effectiveWindowMs,
453
+ evidenceNote: `same-commandHash re-flag at supersede; same-process=${grade === 'wrong' ? 'true' : 'false-or-unconfirmable'}`,
454
+ });
455
+ }
456
+ }
457
+ }
458
+ // ── Replace: latest always; the kill slot ONLY for an incoming ENACTED kill
459
+ // (a same-key flood of non-kill decisions can never evict a kill's
460
+ // evidence slot before its window closes — ADV r3). ──
461
+ const next = this.slots.get(seed.ledgerKey) ?? {};
462
+ next.latest = incoming;
463
+ if (HOG_KILL_ENACTED.has(seed.enacted))
464
+ next.kill = incoming;
465
+ this.slots.set(seed.ledgerKey, next);
466
+ this.prune(nowMs);
467
+ // §5.2/§5.7: while dryRun holds, ALL durable writes are suppressed (spec
468
+ // Testing: "dry-run suppresses all durable writes") — the hog store's persist
469
+ // included. Grade-on-supersede already ran IN-MEMORY above, so the annotate
470
+ // seam's would-write soak stays complete; only the disk write is withheld
471
+ // until the operator flips dryRun:false.
472
+ if (this.dryRun) {
473
+ this.logWouldPersist();
474
+ }
475
+ else {
476
+ this.persist();
477
+ }
478
+ return events;
479
+ }
480
+ }
481
+ //# sourceMappingURL=ExternalHogDecisionStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExternalHogDecisionStore.js","sourceRoot":"","sources":["../../src/monitoring/ExternalHogDecisionStore.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@
14
14
  */
15
15
  import { type ExternalHogAdapters } from './ExternalHogSentinel.js';
16
16
  import { type ArmMarker } from './ExternalHogArmMarker.js';
17
+ import type { DecisionProvenanceBlock } from '../core/decisionQualityTypes.js';
17
18
  /** The raw side-effect primitives — the ONLY things that touch the real OS / network. */
18
19
  export interface ExternalHogPrimitives {
19
20
  /** Run a command off the event loop, resolve stdout. Reject/throw on non-zero exit is fine —
@@ -26,8 +27,11 @@ export interface ExternalHogPrimitives {
26
27
  * is unreadable. This is the fresh "is it STILL pinning cores, or did it go idle?" probe that
27
28
  * gates every signal — a null or below-threshold reading must abort the kill (fail-safe). */
28
29
  cpuCoresOver(pid: number, windowMs: number): Promise<number | null>;
29
- /** Call the classifier model with a prompt (wrapped by the caller in the LlmQueue background lane). */
30
- callModel(prompt: string): Promise<string>;
30
+ /** Call the classifier model with a prompt (wrapped by the caller in the LlmQueue background lane).
31
+ * `provenance` is the llm-decision-quality-meter §5.3 enrollment block — the server-side
32
+ * primitive threads it as `options.provenance` on intelligence.evaluate so the router mints +
33
+ * settles a decision row for the kill/leave verdict. */
34
+ callModel(prompt: string, provenance?: DecisionProvenanceBlock): Promise<string>;
31
35
  /** Raise ONE attention item for the coalesced notices. */
32
36
  raiseAttention(item: {
33
37
  title: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalHogRealAdapters.d.ts","sourceRoot":"","sources":["../../src/monitoring/ExternalHogRealAdapters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExternalHogRealAdapters.d.ts","sourceRoot":"","sources":["../../src/monitoring/ExternalHogRealAdapters.ts"],"names":[],"mappings":"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"}
@@ -165,11 +165,11 @@ export function createExternalHogAdapters(prims, opts) {
165
165
  function identityFor(_candidate, facts) {
166
166
  return buildIdentity(facts);
167
167
  }
168
- async function classify(facts) {
168
+ async function classify(facts, provenance) {
169
169
  const classId = matchAllowlistClass(facts.name, facts.argv);
170
170
  if (!classId)
171
171
  return null; // not an allowlist class → decider-unavailable → alert (never happens: only classified after identity)
172
- return prims.callModel(buildClassifierPrompt(facts, classId));
172
+ return prims.callModel(buildClassifierPrompt(facts, classId), provenance);
173
173
  }
174
174
  function currentClassContentHash(classId) {
175
175
  const sources = classRuleSources(classId);
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalHogRealAdapters.js","sourceRoot":"","sources":["../../src/monitoring/ExternalHogRealAdapters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExternalHogRealAdapters.js","sourceRoot":"","sources":["../../src/monitoring/ExternalHogRealAdapters.ts"],"names":[],"mappings":"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"}