pi-smart-router 0.20.0 → 0.21.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 (54) hide show
  1. package/.pi/extensions/smart-router/session-lifecycle.ts +59 -0
  2. package/README.md +18 -0
  3. package/config/benchmark-profiles.json +2 -3
  4. package/dist/api/middleware/pi-router-middleware.d.ts +8 -0
  5. package/dist/api/middleware/pi-router-middleware.d.ts.map +1 -1
  6. package/dist/api/middleware/pi-router-middleware.js +12 -0
  7. package/dist/api/middleware/pi-router-middleware.js.map +1 -1
  8. package/dist/api/session-eviction.d.ts +27 -0
  9. package/dist/api/session-eviction.d.ts.map +1 -0
  10. package/dist/api/session-eviction.js +21 -0
  11. package/dist/api/session-eviction.js.map +1 -0
  12. package/dist/cli/smart-router-cli.d.ts +9 -5
  13. package/dist/cli/smart-router-cli.d.ts.map +1 -1
  14. package/dist/cli/smart-router-cli.js +23 -16
  15. package/dist/cli/smart-router-cli.js.map +1 -1
  16. package/dist/domain/matching/hydra-matcher.d.ts +47 -0
  17. package/dist/domain/matching/hydra-matcher.d.ts.map +1 -1
  18. package/dist/domain/matching/hydra-matcher.js +53 -0
  19. package/dist/domain/matching/hydra-matcher.js.map +1 -1
  20. package/dist/domain/matching/missing-weights-reason-codes.d.ts +18 -0
  21. package/dist/domain/matching/missing-weights-reason-codes.d.ts.map +1 -0
  22. package/dist/domain/matching/missing-weights-reason-codes.js +17 -0
  23. package/dist/domain/matching/missing-weights-reason-codes.js.map +1 -0
  24. package/dist/domain/matching/modernbert-heads.d.ts +6 -0
  25. package/dist/domain/matching/modernbert-heads.d.ts.map +1 -1
  26. package/dist/domain/matching/modernbert-heads.js +4 -0
  27. package/dist/domain/matching/modernbert-heads.js.map +1 -1
  28. package/dist/domain/pipeline/router-pipeline.d.ts.map +1 -1
  29. package/dist/domain/pipeline/router-pipeline.js +37 -2
  30. package/dist/domain/pipeline/router-pipeline.js.map +1 -1
  31. package/dist/domain/types/schemas.d.ts +2 -0
  32. package/dist/domain/types/schemas.d.ts.map +1 -1
  33. package/dist/domain/types/schemas.js +11 -0
  34. package/dist/domain/types/schemas.js.map +1 -1
  35. package/dist/index.d.ts +2 -0
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +1 -0
  38. package/dist/index.js.map +1 -1
  39. package/dist/infra/telemetry.d.ts +15 -7
  40. package/dist/infra/telemetry.d.ts.map +1 -1
  41. package/dist/infra/telemetry.js +33 -13
  42. package/dist/infra/telemetry.js.map +1 -1
  43. package/package.json +1 -1
  44. package/specs/001-build-smart-router/contracts/telemetry-contrib.schema.json +3 -3
  45. package/src/api/middleware/pi-router-middleware.ts +14 -0
  46. package/src/api/session-eviction.ts +36 -0
  47. package/src/cli/smart-router-cli.ts +23 -13
  48. package/src/domain/matching/hydra-matcher.ts +85 -0
  49. package/src/domain/matching/missing-weights-reason-codes.ts +22 -0
  50. package/src/domain/matching/modernbert-heads.ts +12 -0
  51. package/src/domain/pipeline/router-pipeline.ts +50 -1
  52. package/src/domain/types/schemas.ts +11 -0
  53. package/src/index.ts +2 -0
  54. package/src/infra/telemetry.ts +38 -9
@@ -1,5 +1,6 @@
1
1
  import type { ExtensionAPI, ExtensionContext } from '@earendil-works/pi-coding-agent';
2
2
 
3
+ import { evictInMemorySessionState } from '../../../src/api/session-eviction.js';
3
4
  import { SessionPinner } from '../../../src/domain/pinning/session-pinner.js';
4
5
  import {
5
6
  bindSharedModelRegistry,
@@ -15,6 +16,15 @@ export const FLEET_MODE_ENTRY_TYPE = 'smart-router-fleet-mode' as const;
15
16
  const SMART_ROUTER_PROVIDER = 'smart-router' as const;
16
17
  const SMART_ROUTER_AUTO_ID = 'auto' as const;
17
18
 
19
+ /**
20
+ * Orphan-session TTL fallback (SP-248, #145). `session_shutdown` is the primary
21
+ * teardown signal; if pi ever shuts a session down without delivering it
22
+ * (extension reload races, missed events), the session's in-memory routing
23
+ * state is evicted once it has been idle for ORPHAN_SESSION_TTL_MS. The sweep
24
+ * runs on `session_start` and fails open — eviction must never break startup.
25
+ */
26
+ export const ORPHAN_SESSION_TTL_MS = 24 * 60 * 60 * 1000; // 24 hours
27
+
18
28
  export function isSmartRouterActive(model: { provider: string; id: string }): boolean {
19
29
  return model.provider === SMART_ROUTER_PROVIDER && model.id === SMART_ROUTER_AUTO_ID;
20
30
  }
@@ -97,6 +107,39 @@ export function setupSessionHooks(
97
107
  ): void {
98
108
  let activeModel: { provider: string; id: string } | undefined;
99
109
 
110
+ // Last-seen stamp per session for the orphan-TTL fallback (SP-248).
111
+ const lastSeenBySession = new Map<string, number>();
112
+
113
+ /** Evict all in-memory routing state for one session via the SP-247 helper. */
114
+ function evictSessionState(sessionId: string | undefined): void {
115
+ // Fail open: a missing/empty session id must never break teardown.
116
+ if (sessionId === undefined || sessionId === '') {
117
+ return;
118
+ }
119
+ evictInMemorySessionState(sessionId, {
120
+ executionLedger: runtime.executionLedger,
121
+ lifecycleHookState: runtime.lifecycleHookState,
122
+ sessionRouting: runtime.sessionRouting,
123
+ });
124
+ lastSeenBySession.delete(sessionId);
125
+ }
126
+
127
+ /** Drop sessions idle longer than ORPHAN_SESSION_TTL_MS (never throws). */
128
+ function sweepOrphanedSessions(now: number): void {
129
+ try {
130
+ for (const [sessionId, lastSeen] of lastSeenBySession) {
131
+ if (now - lastSeen > ORPHAN_SESSION_TTL_MS) {
132
+ evictSessionState(sessionId);
133
+ }
134
+ }
135
+ } catch (error) {
136
+ console.warn(
137
+ '[smart-router] orphan session sweep failed (fail open)',
138
+ error instanceof Error ? error.message : String(error),
139
+ );
140
+ }
141
+ }
142
+
100
143
  pi.on('session_start', async (_event, ctx) => {
101
144
  activeModel = ctx.model;
102
145
  bindSharedModelRegistry(runtime, ctx.modelRegistry);
@@ -128,6 +171,10 @@ export function setupSessionHooks(
128
171
  datasetNotify.fn = runtime.notifyDatasetEnabled;
129
172
 
130
173
  const sessionId = ctx.sessionManager.getSessionId();
174
+ const now = Date.now();
175
+ lastSeenBySession.set(sessionId, now);
176
+ sweepOrphanedSessions(now);
177
+
131
178
  await sessionPinner.restoreSessionPin(sessionId);
132
179
 
133
180
  if (ctx.model !== undefined && isSmartRouterActive(ctx.model)) {
@@ -158,5 +205,17 @@ export function setupSessionHooks(
158
205
  delete runtime.streamDeps.ensureFleetFresh;
159
206
  datasetNotify.fn = undefined;
160
207
  ctx.ui.setStatus('smart-router-lmu', undefined);
208
+
209
+ // SP-248 (#145): drop per-session routing state so long-running pi
210
+ // processes do not retain ledger/lifecycle/routing maps forever.
211
+ // Fail open — teardown cleanup must never crash the host agent.
212
+ try {
213
+ evictSessionState(ctx.sessionManager.getSessionId());
214
+ } catch (error) {
215
+ console.warn(
216
+ '[smart-router] session teardown eviction failed (fail open)',
217
+ error instanceof Error ? error.message : String(error),
218
+ );
219
+ }
161
220
  });
162
221
  }
package/README.md CHANGED
@@ -489,6 +489,8 @@ v0.2.0 adds **Session-Aware Agentic Routing (SAAR)** pin knobs ([#72](https://gi
489
489
 
490
490
  See [routing-roadmap.md](docs/routing-roadmap.md) §2 P0 for design context.
491
491
 
492
+ **Long-running pi sessions — in-memory state eviction (v0.21.0, [#145](https://github.com/beettlle/pi-smart-router/issues/145)).** Session pins and in-memory routing snapshots live in process memory, not in the SQLite telemetry store. When pi ends a session, the extension's `session_shutdown` handler (reason: `quit` / `reload` / `new` / `resume` / `fork`) calls `evictInMemorySessionState` (`src/api/session-eviction.ts`) and drops **all** in-memory routing state for that session — pins, cache-breakeven snapshots, turn metadata. A new session starts cold: no stale pin, no warm-cache assumption carries over. Persistent telemetry in `.pi-smart-router/state.db` is untouched. As a safety net for orphaned sessions (e.g. a crashed pi process that never emitted `session_shutdown`), a sweep on `session_start` evicts sessions idle longer than `ORPHAN_SESSION_TTL_MS` (**24 hours**, exported from `.pi/extensions/smart-router/session-lifecycle.ts`); the sweep fails open — a missing session id or sweep error never blocks session start.
493
+
492
494
  ### Planning delegate (v0.4.0 Delegate)
493
495
 
494
496
  When a **planning** turn would route primary inference to frontier while a warm **economical** session pin is active, smart-router prefers **cache-preserving delegation** ([#71](https://github.com/beettlle/pi-smart-router/issues/71)):
@@ -570,6 +572,16 @@ Explain/telemetry expose `route_path` (`neural` \| `learned` \| `heuristic` \| `
570
572
  | `learned_min_confidence` | `0.6` | Minimum learned-entry confidence to honor a tier suggestion |
571
573
  | `learned_max_entries` | `512` | Learned-map cap per key space (FIFO eviction) |
572
574
  | `pattern_tool_use_ceiling` | `0.3` | Tool-use cue ceiling for honoring cheaper-tier learned/pattern suggestions |
575
+ | `fail_closed_on_missing_weights` | `false` | When `true`, missing/placeholder neural weights fail **closed**: the matcher throws before paying embedding cost and the pipeline routes through the degraded sandwich (`neural_misconfigured`) with the SP-251 reason codes on the decision. When `false` (default), routing stays fail-open — placeholder weights score with neutral defaults and the reason codes are advisory telemetry only |
576
+
577
+ **Missing-weights reason codes (v0.21.0, [#148](https://github.com/beettlle/pi-smart-router/issues/148)).** When the HyDRA matcher cannot load real neural weights, the decision surfaces structured reason codes (`src/domain/matching/missing-weights-reason-codes.ts`) on the routing decision / `requirement_reason_codes` — visible in explain (`pi router explain` / `POST /v1/route/explain`), `/smart-router history`, and telemetry — not stderr-only:
578
+
579
+ | Reason code | Meaning | Operator action |
580
+ |-------------|---------|-----------------|
581
+ | `hydra_weights_missing` | HyDRA projection-head weights artifact is absent or unloadable, so neural scoring is running on fallback behavior | Restore the weights artifact (see [HyDRA model cache](#hydra-model-cache)); routing continues fail-open unless `fail_closed_on_missing_weights` is set |
582
+ | `k4_heads_placeholder` | ModernBERT K4 heads are placeholder (untrained) weights — scores are neutral defaults, not learned predictions | Regenerate/install the trained K4 heads artifact; treat current K4 scores as non-authoritative |
583
+
584
+ With the default fail-open behavior these codes are advisory: the route proceeds with safe defaults. Set `degraded_route.fail_closed_on_missing_weights: true` when you prefer an explicit degraded-route decision (sandwich chain above, `route_path` records the branch taken) over silently routing on placeholder neural scores.
573
585
 
574
586
  Distinct from soft heat affinity (healthy-path bias): this is failover / skip-expensive-stage only. Routing remains **pre-generation** — no FrugalGPT-style cascades (see [routing-roadmap.md](docs/routing-roadmap.md) §1).
575
587
 
@@ -764,6 +776,12 @@ npx pi-smart-router export telemetry-contrib [--limit N]
764
776
 
765
777
  This writes schema-valid JSON to `.pi-smart-router/exports/telemetry-contrib-<timestamp>.json`. Each row conforms to [`telemetry-contrib.schema.json`](specs/001-build-smart-router/contracts/telemetry-contrib.schema.json).
766
778
 
779
+ **Export schema v2 — session-hash migration (v0.21.0, [#146](https://github.com/beettlle/pi-smart-router/issues/146)).** The contrib export schema was bumped **v1 → v2** (`TELEMETRY_CONTRIB_VERSION = 2` in `src/cli/smart-router-cli.ts`). In v1, `session_id_hash` was an **unsalted SHA-256** of the raw session id; in v2 it is an **HMAC-SHA256 keyed with an install-local pepper** (`hashSessionIdForTelemetryExport` in `src/infra/telemetry.ts`). The pepper is generated once per install at `.pi-smart-router/.dataset-key` (mode 0600) and is **never** included in export payloads — ingest strips pepper fields before aggregation. Consequences for operators comparing exports:
780
+
781
+ - Hashes are **stable per install** (same session → same hash within one install/cwd) but **not correlatable across installs** — two machines routing the same prompt produce different hashes.
782
+ - **v1 hashes are not comparable with v2 hashes.** If you maintain baselines that join or diff older v1 contrib exports, **re-baseline** on v2 output — do not mix rows across the version boundary.
783
+ - Raw `session_id` / `request_id` values never appear in the JSONL in either version.
784
+
767
785
  **How to contribute**
768
786
 
769
787
  1. Opt in to dataset capture (`SMART_ROUTER_DATASET=1`) and dogfood with `/model smart-router/auto` for several sessions.
@@ -7,8 +7,8 @@
7
7
  "livecodebench": "https://livecodebench.github.io/leaderboard.html",
8
8
  "bfcl": "https://gorilla.cs.berkeley.edu/leaderboard.html"
9
9
  },
10
- "scrape_date": "2026-08-30",
11
- "catalog_freeze_date": "2026-08-30"
10
+ "scrape_date": "2026-09-03",
11
+ "catalog_freeze_date": "2026-09-03"
12
12
  },
13
13
  "aliases": {
14
14
  "anthropic/claude-opus-4": "claude-opus-4-5",
@@ -39,7 +39,6 @@
39
39
  "gemini-2.5-flash-lite": "gemini-2.5-flash",
40
40
  "gemini-2.5-flash-preview": "gemini-2.5-flash",
41
41
  "gemini-flash-8b": "gemini-2.5-flash",
42
- "gemini-flash-latest": "gemini-2.5-flash",
43
42
  "github-copilot/claude-3.5-sonnet": "claude-sonnet-4-6",
44
43
  "github-copilot/claude-sonnet-4": "claude-sonnet-4-6",
45
44
  "github-copilot/claude-sonnet-4.5": "claude-sonnet-4-6",
@@ -62,6 +62,14 @@ export declare class LifecycleHookState {
62
62
  private getOrCreate;
63
63
  markCompaction(sessionId: string): void;
64
64
  setForceModel(sessionId: string, modelId: string): void;
65
+ /**
66
+ * Evict all lifecycle state for a session (SP-247, #145).
67
+ * Unlike `consume`, this deletes the session bucket outright so long-lived
68
+ * pi processes can drop per-session routing state at session teardown.
69
+ */
70
+ evict(sessionId: string): void;
71
+ /** Whether lifecycle state is currently retained for a session. */
72
+ has(sessionId: string): boolean;
65
73
  /**
66
74
  * Consume lifecycle flags for the next routing request.
67
75
  * Compaction is one-shot; force_model_id is one-shot per consume.
@@ -1 +1 @@
1
- {"version":3,"file":"pi-router-middleware.d.ts","sourceRoot":"","sources":["../../../src/api/middleware/pi-router-middleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pi-router-middleware.d.ts","sourceRoot":"","sources":["../../../src/api/middleware/pi-router-middleware.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,18 @@ export class LifecycleHookState {
32
32
  const state = this.getOrCreate(sessionId);
33
33
  state.forceModelId = modelId;
34
34
  }
35
+ /**
36
+ * Evict all lifecycle state for a session (SP-247, #145).
37
+ * Unlike `consume`, this deletes the session bucket outright so long-lived
38
+ * pi processes can drop per-session routing state at session teardown.
39
+ */
40
+ evict(sessionId) {
41
+ this.sessions.delete(sessionId);
42
+ }
43
+ /** Whether lifecycle state is currently retained for a session. */
44
+ has(sessionId) {
45
+ return this.sessions.has(sessionId);
46
+ }
35
47
  /**
36
48
  * Consume lifecycle flags for the next routing request.
37
49
  * Compaction is one-shot; force_model_id is one-shot per consume.
@@ -1 +1 @@
1
- {"version":3,"file":"pi-router-middleware.js","sourceRoot":"","sources":["../../../src/api/middleware/pi-router-middleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pi-router-middleware.js","sourceRoot":"","sources":["../../../src/api/middleware/pi-router-middleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * In-memory session-state eviction — SP-247 (partial #145).
3
+ *
4
+ * Long-lived pi processes accumulate per-session routing state across several
5
+ * in-memory maps (execution ledger, lifecycle hook flags, extension session
6
+ * routing snapshots). `evictInMemorySessionState` drops all of it for one
7
+ * session id in a single call so extension code (SP-248) can wire session
8
+ * teardown without re-implementing each clear.
9
+ */
10
+ import type { ExecutionLedger } from '../domain/delegation/execution-ledger.js';
11
+ import type { LifecycleHookState } from './middleware/pi-router-middleware.js';
12
+ export interface SessionEvictionTargets {
13
+ /** Per-session last-executing-model ledger. */
14
+ readonly executionLedger: ExecutionLedger;
15
+ /** Per-session compaction / force-model lifecycle flags. */
16
+ readonly lifecycleHookState: LifecycleHookState;
17
+ /** Optional extension-owned routing snapshot map (cleared when provided). */
18
+ readonly sessionRouting?: Map<string, unknown>;
19
+ }
20
+ /**
21
+ * Delete all in-memory routing state retained for `sessionId`.
22
+ *
23
+ * Unknown session ids are a no-op per target. Clearing is idempotent: calling
24
+ * eviction twice for the same session is safe.
25
+ */
26
+ export declare function evictInMemorySessionState(sessionId: string, targets: SessionEvictionTargets): void;
27
+ //# sourceMappingURL=session-eviction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-eviction.d.ts","sourceRoot":"","sources":["../../src/api/session-eviction.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,MAAM,WAAW,sBAAsB;IACrC,+CAA+C;IAC/C,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,4DAA4D;IAC5D,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD,6EAA6E;IAC7E,QAAQ,CAAC,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChD;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,sBAAsB,GAC9B,IAAI,CAIN"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * In-memory session-state eviction — SP-247 (partial #145).
3
+ *
4
+ * Long-lived pi processes accumulate per-session routing state across several
5
+ * in-memory maps (execution ledger, lifecycle hook flags, extension session
6
+ * routing snapshots). `evictInMemorySessionState` drops all of it for one
7
+ * session id in a single call so extension code (SP-248) can wire session
8
+ * teardown without re-implementing each clear.
9
+ */
10
+ /**
11
+ * Delete all in-memory routing state retained for `sessionId`.
12
+ *
13
+ * Unknown session ids are a no-op per target. Clearing is idempotent: calling
14
+ * eviction twice for the same session is safe.
15
+ */
16
+ export function evictInMemorySessionState(sessionId, targets) {
17
+ targets.executionLedger.clear(sessionId);
18
+ targets.lifecycleHookState.evict(sessionId);
19
+ targets.sessionRouting?.delete(sessionId);
20
+ }
21
+ //# sourceMappingURL=session-eviction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-eviction.js","sourceRoot":"","sources":["../../src/api/session-eviction.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAcH;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,SAAiB,EACjB,OAA+B;IAE/B,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACzC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5C,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AAC5C,CAAC"}
@@ -9,7 +9,12 @@ import type { RoutingDatasetRecord, RoutingOutcomeRecord } from '../domain/types
9
9
  import type { StorePort } from '../domain/types/store-port.js';
10
10
  export declare const UNPIN_SUBCOMMAND: "unpin";
11
11
  export declare const EXPORT_TELEMETRY_CONTRIB_COMMAND: "export telemetry-contrib";
12
- export declare const TELEMETRY_CONTRIB_VERSION: 1;
12
+ /**
13
+ * Contrib export format version. v2 (SP-250): session_id_hash switched from
14
+ * unsalted SHA-256 to install-pepper-keyed HMAC-SHA256 (SP-249 helper), so
15
+ * hashes are stable per install/cwd but not correlatable across installs.
16
+ */
17
+ export declare const TELEMETRY_CONTRIB_VERSION: 2;
13
18
  export declare const TELEMETRY_CONTRIB_SCHEMA_PATH = "specs/001-build-smart-router/contracts/telemetry-contrib.schema.json";
14
19
  export declare const DEFAULT_TELEMETRY_CONTRIB_EXPORT_DIR = ".pi-smart-router/exports";
15
20
  export declare const DEFAULT_TELEMETRY_CONTRIB_EXPORT_LIMIT = 10000;
@@ -65,19 +70,18 @@ export declare function parseExportTelemetryContribArgs(args: string): {
65
70
  * Does not modify SessionPinner break rules — operator-initiated unpin only.
66
71
  */
67
72
  export declare function executeUnpinCommand(ctx: UnpinCommandContext): UnpinCommandResult;
68
- export declare function hashSessionIdForContribExport(sessionId: string): string;
69
73
  /** Map a dataset row plus linked outcomes to a privacy-safe telemetry contrib record. */
70
- export declare function toTelemetryContribRecord(record: RoutingDatasetRecord, outcomes?: readonly RoutingOutcomeRecord[]): Record<string, unknown>;
74
+ export declare function toTelemetryContribRecord(record: RoutingDatasetRecord, outcomes?: readonly RoutingOutcomeRecord[], pepper?: Buffer): Record<string, unknown>;
71
75
  export declare function formatTelemetryContribJson(records: readonly Record<string, unknown>[]): string;
72
76
  export declare function formatTelemetryContribJsonl(records: readonly Record<string, unknown>[]): string;
73
77
  export declare function formatTelemetryContribExportTimestamp(date?: Date): string;
74
78
  export declare function getTelemetryContribExportPath(cwd: string, timestamp: string): string;
75
79
  /** Defense-in-depth validation using SP-116 contrib safety checks. */
76
80
  export declare function validateTelemetryContribRecord(record: unknown, context?: string): Record<string, unknown>;
77
- export declare function buildTelemetryContribRecords(datasetRecords: readonly RoutingDatasetRecord[], outcomeRecords?: readonly RoutingOutcomeRecord[]): Record<string, unknown>[];
81
+ export declare function buildTelemetryContribRecords(datasetRecords: readonly RoutingDatasetRecord[], outcomeRecords?: readonly RoutingOutcomeRecord[], pepper?: Buffer): Record<string, unknown>[];
78
82
  export declare function exportTelemetryContrib(ctx: TelemetryContribExportContext, options?: Pick<ExportTelemetryContribOptions, 'writeFile'>): Promise<ExportTelemetryContribResult>;
79
83
  /** Join dataset export shape with outcome labels, then strip to contrib-safe fields. */
80
- export declare function datasetExportRowToTelemetryContrib(exportRecord: Record<string, unknown>, outcomes: readonly RoutingOutcomeRecord[]): Record<string, unknown>;
84
+ export declare function datasetExportRowToTelemetryContrib(exportRecord: Record<string, unknown>, outcomes: readonly RoutingOutcomeRecord[], pepper?: Buffer): Record<string, unknown>;
81
85
  export declare const smartRouterCliSubcommands: {
82
86
  readonly unpin: typeof executeUnpinCommand;
83
87
  readonly exportTelemetryContrib: typeof exportTelemetryContrib;
@@ -1 +1 @@
1
- {"version":3,"file":"smart-router-cli.d.ts","sourceRoot":"","sources":["../../src/cli/smart-router-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smart-router-cli.d.ts","sourceRoot":"","sources":["../../src/cli/smart-router-cli.ts"],"names":[],"mappings":"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"}
@@ -4,14 +4,20 @@
4
4
  * Extension wiring lives in `.pi/extensions/smart-router/commands.ts`;
5
5
  * this module holds reusable subcommand logic for dogfooding and tests.
6
6
  */
7
- import { createHash } from 'node:crypto';
8
7
  import { mkdirSync, writeFileSync } from 'node:fs';
9
8
  import { join } from 'node:path';
10
9
  import { attachOutcomeLabelsToExport, deriveSuccessLabel, indexOutcomesByRequestId, } from '../domain/routing/p-success-classifier.js';
11
10
  import { DATASET_MAX_ENTRIES } from '../infrastructure/telemetry/dataset-limits.js';
11
+ import { loadOrCreateDatasetPepper } from '../infrastructure/telemetry/dataset-recorder.js';
12
+ import { hashSessionIdForTelemetryExport } from '../infra/telemetry.js';
12
13
  export const UNPIN_SUBCOMMAND = 'unpin';
13
14
  export const EXPORT_TELEMETRY_CONTRIB_COMMAND = 'export telemetry-contrib';
14
- export const TELEMETRY_CONTRIB_VERSION = 1;
15
+ /**
16
+ * Contrib export format version. v2 (SP-250): session_id_hash switched from
17
+ * unsalted SHA-256 to install-pepper-keyed HMAC-SHA256 (SP-249 helper), so
18
+ * hashes are stable per install/cwd but not correlatable across installs.
19
+ */
20
+ export const TELEMETRY_CONTRIB_VERSION = 2;
15
21
  export const TELEMETRY_CONTRIB_SCHEMA_PATH = 'specs/001-build-smart-router/contracts/telemetry-contrib.schema.json';
16
22
  export const DEFAULT_TELEMETRY_CONTRIB_EXPORT_DIR = '.pi-smart-router/exports';
17
23
  export const DEFAULT_TELEMETRY_CONTRIB_EXPORT_LIMIT = DATASET_MAX_ENTRIES;
@@ -164,27 +170,24 @@ export function executeUnpinCommand(ctx) {
164
170
  level: 'info',
165
171
  };
166
172
  }
167
- export function hashSessionIdForContribExport(sessionId) {
168
- return createHash('sha256').update(sessionId).digest('hex');
169
- }
170
- function resolveSessionIdHash(record, outcomes) {
173
+ function resolveSessionIdHash(record, outcomes, pepper) {
171
174
  const sessionId = outcomes[0]?.session_id;
172
175
  if (typeof sessionId === 'string' && sessionId.length > 0) {
173
- return hashSessionIdForContribExport(sessionId);
176
+ return hashSessionIdForTelemetryExport(sessionId, pepper);
174
177
  }
175
178
  const raw = record;
176
179
  if (typeof raw.session_id === 'string' && raw.session_id.length > 0) {
177
- return hashSessionIdForContribExport(raw.session_id);
180
+ return hashSessionIdForTelemetryExport(raw.session_id, pepper);
178
181
  }
179
- return hashSessionIdForContribExport('');
182
+ return hashSessionIdForTelemetryExport('', pepper);
180
183
  }
181
184
  /** Map a dataset row plus linked outcomes to a privacy-safe telemetry contrib record. */
182
- export function toTelemetryContribRecord(record, outcomes = []) {
185
+ export function toTelemetryContribRecord(record, outcomes = [], pepper) {
183
186
  const { success, outcome_signals } = deriveSuccessLabel(outcomes);
184
187
  const contrib = {
185
188
  version: TELEMETRY_CONTRIB_VERSION,
186
189
  timestamp: record.timestamp,
187
- session_id_hash: resolveSessionIdHash(record, outcomes),
190
+ session_id_hash: resolveSessionIdHash(record, outcomes, pepper),
188
191
  turn_type: record.turn_type,
189
192
  stage: record.stage,
190
193
  reason_code: record.reason_code,
@@ -243,11 +246,11 @@ export function validateTelemetryContribRecord(record, context) {
243
246
  assertTelemetryContribRecordSafe(record, context);
244
247
  return sanitizeTelemetryContribRecord(record);
245
248
  }
246
- export function buildTelemetryContribRecords(datasetRecords, outcomeRecords = []) {
249
+ export function buildTelemetryContribRecords(datasetRecords, outcomeRecords = [], pepper) {
247
250
  const outcomesByRequest = indexOutcomesByRequestId(outcomeRecords);
248
251
  return datasetRecords.map((record) => {
249
252
  const linkedOutcomes = outcomesByRequest.get(record.request_id) ?? [];
250
- const contrib = toTelemetryContribRecord(record, linkedOutcomes);
253
+ const contrib = toTelemetryContribRecord(record, linkedOutcomes, pepper);
251
254
  validateTelemetryContribRecord(contrib, record.request_id);
252
255
  return contrib;
253
256
  });
@@ -255,7 +258,11 @@ export function buildTelemetryContribRecords(datasetRecords, outcomeRecords = []
255
258
  export async function exportTelemetryContrib(ctx, options) {
256
259
  const datasetRecords = await ctx.store.listDatasetRecords({ limit: ctx.limit });
257
260
  const outcomeRecords = await ctx.store.listOutcomeRecords({ limit: ctx.limit });
258
- const records = buildTelemetryContribRecords(datasetRecords, outcomeRecords);
261
+ // Install-local pepper keyed to the export cwd so hashes are stable per
262
+ // install but never correlatable across installs (SP-249/SP-250). Loaded
263
+ // lazily — no pepper file is created when there is nothing to export.
264
+ const pepper = datasetRecords.length > 0 ? loadOrCreateDatasetPepper(ctx.cwd) : undefined;
265
+ const records = buildTelemetryContribRecords(datasetRecords, outcomeRecords, pepper);
259
266
  const json = formatTelemetryContribJson(records);
260
267
  if (records.length === 0 || options?.writeFile === false) {
261
268
  return { path: null, recordCount: records.length, json };
@@ -268,7 +275,7 @@ export async function exportTelemetryContrib(ctx, options) {
268
275
  return { path: exportPath, recordCount: records.length, json };
269
276
  }
270
277
  /** Join dataset export shape with outcome labels, then strip to contrib-safe fields. */
271
- export function datasetExportRowToTelemetryContrib(exportRecord, outcomes) {
278
+ export function datasetExportRowToTelemetryContrib(exportRecord, outcomes, pepper) {
272
279
  const joined = attachOutcomeLabelsToExport(exportRecord, outcomes);
273
280
  const contrib = {
274
281
  version: TELEMETRY_CONTRIB_VERSION,
@@ -281,7 +288,7 @@ export function datasetExportRowToTelemetryContrib(exportRecord, outcomes) {
281
288
  contrib.session_id_hash = exportRecord.session_id_hash;
282
289
  }
283
290
  else if (typeof exportRecord.session_id === 'string') {
284
- contrib.session_id_hash = hashSessionIdForContribExport(exportRecord.session_id);
291
+ contrib.session_id_hash = hashSessionIdForTelemetryExport(exportRecord.session_id, pepper);
285
292
  }
286
293
  delete contrib.session_id;
287
294
  return validateTelemetryContribRecord(contrib);
@@ -1 +1 @@
1
- {"version":3,"file":"smart-router-cli.js","sourceRoot":"","sources":["../../src/cli/smart-router-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smart-router-cli.js","sourceRoot":"","sources":["../../src/cli/smart-router-cli.ts"],"names":[],"mappings":"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"}
@@ -23,12 +23,27 @@ export interface RequirementVector {
23
23
  }
24
24
  export interface EmbeddingProvider {
25
25
  extractRequirements(text: string): Promise<RequirementVector>;
26
+ /**
27
+ * Reason codes describing degraded requirement extraction (SP-251, #148) —
28
+ * e.g. `k4_heads_placeholder` when learned K=4 head weights are missing.
29
+ * Absent/empty when learned weights are active.
30
+ */
31
+ requirementReasonCodes?(): readonly string[];
26
32
  dispose(): Promise<void>;
27
33
  }
28
34
  export interface MatchResult {
29
35
  readonly selected: CandidateScore | null;
30
36
  readonly candidates: readonly CandidateScore[];
31
37
  readonly requirements: RequirementVector;
38
+ /**
39
+ * Decision metadata reason codes for degraded requirement extraction
40
+ * (SP-251, #148): `hydra_weights_missing` when the learned projection
41
+ * artifact is missing/invalid, `k4_heads_placeholder` when ModernBERT K=4
42
+ * head weights are missing/invalid. Empty when learned weights are active.
43
+ * Optional on the type for legacy literal constructions; HydraMatcher.match
44
+ * always populates it.
45
+ */
46
+ readonly requirement_reason_codes?: readonly string[];
32
47
  readonly elapsedMs: number;
33
48
  readonly budgetExceeded: boolean;
34
49
  }
@@ -40,6 +55,24 @@ export interface HydraMatcherConfig {
40
55
  readonly frugality?: FrugalityWeights;
41
56
  readonly projectionWeightsPath?: string;
42
57
  readonly k4HeadWeightsPath?: string;
58
+ /**
59
+ * SP-252 / #148: when true, match() refuses to score with placeholder
60
+ * requirement heads and throws {@link MissingWeightsFailClosedError} carrying
61
+ * the SP-251 reason codes. Default false keeps fail-open placeholders.
62
+ */
63
+ readonly failClosedOnMissingWeights?: boolean;
64
+ }
65
+ /**
66
+ * Thrown by HydraMatcher.match when `failClosedOnMissingWeights` is enabled and
67
+ * learned weight artifacts are missing/invalid (SP-252, #148). Carries the
68
+ * SP-251 reason codes so callers (the router pipeline) can route through the
69
+ * degraded sandwich with the codes visible on the decision path.
70
+ */
71
+ export declare class MissingWeightsFailClosedError extends Error {
72
+ readonly name = "MissingWeightsFailClosedError";
73
+ /** SP-251 reason codes (e.g. `hydra_weights_missing`, `k4_heads_placeholder`). */
74
+ readonly reasonCodes: readonly string[];
75
+ constructor(reasonCodes: readonly string[]);
43
76
  }
44
77
  export declare const DEFAULT_HYDRA_PROJECTION_WEIGHTS_PATH: string;
45
78
  export declare const HYDRA_PROJECTION_OUTPUT_DIM = 3;
@@ -101,13 +134,27 @@ export declare class HydraMatcher {
101
134
  private readonly frugality;
102
135
  private readonly hydraHeads;
103
136
  private readonly projectionWeights;
137
+ private readonly requirementReasonCodes;
138
+ private readonly failClosedOnMissingWeights;
104
139
  constructor(provider: EmbeddingProvider, config: HydraMatcherConfig);
140
+ /**
141
+ * Decision-metadata reason codes for the requirement extraction path
142
+ * (SP-251, #148). Placeholder fallback stays fail-open; the codes make the
143
+ * degraded weight state explicit instead of stderr-only.
144
+ */
145
+ private computeRequirementReasonCodes;
105
146
  /** Active requirement head mode from operator hydra config. */
106
147
  hydraHeadsMode(): HydraHeads;
107
148
  /** Whether ModernBERT K=4 heads mode is active. */
108
149
  usesModernBertK4(): boolean;
109
150
  /** Whether learned SP-115 projection weights were loaded at init. */
110
151
  usesLearnedProjection(): boolean;
152
+ /**
153
+ * Reason codes emitted into decision metadata when requirement extraction
154
+ * fell back to placeholders because learned weight artifacts were
155
+ * missing/invalid (SP-251, #148). Empty when learned weights are active.
156
+ */
157
+ missingWeightsReasonCodes(): readonly string[];
111
158
  match(request: RoutingRequest, fleet: readonly ModelProfile[]): Promise<MatchResult>;
112
159
  dispose(): Promise<void>;
113
160
  private validateRequirements;
@@ -1 +1 @@
1
- {"version":3,"file":"hydra-matcher.d.ts","sourceRoot":"","sources":["../../../src/domain/matching/hydra-matcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hydra-matcher.d.ts","sourceRoot":"","sources":["../../../src/domain/matching/hydra-matcher.ts"],"names":[],"mappings":"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"}