@seanhogg/builderforce-memory-engine 2026.10.1 → 2026.10.3

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 (149) hide show
  1. package/dist/evermind/adapt.d.ts +7 -0
  2. package/dist/evermind/adapt.d.ts.map +1 -1
  3. package/dist/evermind/adapt.js +1 -1
  4. package/dist/evermind/adapt.js.map +1 -1
  5. package/dist/evermind/delta_wire.d.ts +16 -1
  6. package/dist/evermind/delta_wire.d.ts.map +1 -1
  7. package/dist/evermind/delta_wire.js +22 -2
  8. package/dist/evermind/delta_wire.js.map +1 -1
  9. package/dist/evermind/index.d.ts +2 -2
  10. package/dist/evermind/index.d.ts.map +1 -1
  11. package/dist/evermind/index.js +1 -1
  12. package/dist/evermind/index.js.map +1 -1
  13. package/dist/evermind/merge.d.ts +5 -2
  14. package/dist/evermind/merge.d.ts.map +1 -1
  15. package/dist/evermind/merge.js +5 -2
  16. package/dist/evermind/merge.js.map +1 -1
  17. package/dist/evermind/ml_head.d.ts +28 -0
  18. package/dist/evermind/ml_head.d.ts.map +1 -0
  19. package/dist/evermind/ml_head.js +47 -0
  20. package/dist/evermind/ml_head.js.map +1 -0
  21. package/dist/evermind/package.d.ts +2 -2
  22. package/dist/evermind/package.d.ts.map +1 -1
  23. package/dist/evermind/package.js +1 -1
  24. package/dist/evermind/package.js.map +1 -1
  25. package/dist/experience/index.d.ts +2 -2
  26. package/dist/experience/index.d.ts.map +1 -1
  27. package/dist/experience/index.js.map +1 -1
  28. package/dist/experience/store.d.ts +19 -1
  29. package/dist/experience/store.d.ts.map +1 -1
  30. package/dist/experience/store.js +14 -2
  31. package/dist/experience/store.js.map +1 -1
  32. package/dist/experience/types.d.ts +18 -0
  33. package/dist/experience/types.d.ts.map +1 -1
  34. package/dist/experience/types.js.map +1 -1
  35. package/dist/index.d.ts +2 -2
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +1 -1
  38. package/dist/index.js.map +1 -1
  39. package/dist/kernels/weight_update.d.ts.map +1 -1
  40. package/dist/kernels/weight_update.js +12 -0
  41. package/dist/kernels/weight_update.js.map +1 -1
  42. package/dist/limbic/limbic_model.d.ts.map +1 -1
  43. package/dist/limbic/limbic_model.js +1 -3
  44. package/dist/limbic/limbic_model.js.map +1 -1
  45. package/dist/ml/classical/anomaly_composite.d.ts +32 -0
  46. package/dist/ml/classical/anomaly_composite.d.ts.map +1 -0
  47. package/dist/ml/classical/anomaly_composite.js +29 -0
  48. package/dist/ml/classical/anomaly_composite.js.map +1 -0
  49. package/dist/ml/classical/ewma.d.ts +7 -1
  50. package/dist/ml/classical/ewma.d.ts.map +1 -1
  51. package/dist/ml/classical/ewma.js +6 -4
  52. package/dist/ml/classical/ewma.js.map +1 -1
  53. package/dist/ml/classical/gbm.d.ts.map +1 -1
  54. package/dist/ml/classical/gbm.js +2 -1
  55. package/dist/ml/classical/gbm.js.map +1 -1
  56. package/dist/ml/classical/index.d.ts +6 -2
  57. package/dist/ml/classical/index.d.ts.map +1 -1
  58. package/dist/ml/classical/index.js +5 -1
  59. package/dist/ml/classical/index.js.map +1 -1
  60. package/dist/ml/classical/kmeans.d.ts.map +1 -1
  61. package/dist/ml/classical/kmeans.js +23 -4
  62. package/dist/ml/classical/kmeans.js.map +1 -1
  63. package/dist/ml/classical/knn.d.ts +15 -5
  64. package/dist/ml/classical/knn.d.ts.map +1 -1
  65. package/dist/ml/classical/knn.js +28 -7
  66. package/dist/ml/classical/knn.js.map +1 -1
  67. package/dist/ml/classical/logistic.d.ts +1 -9
  68. package/dist/ml/classical/logistic.d.ts.map +1 -1
  69. package/dist/ml/classical/logistic.js +17 -9
  70. package/dist/ml/classical/logistic.js.map +1 -1
  71. package/dist/ml/classical/naive_bayes.d.ts +5 -1
  72. package/dist/ml/classical/naive_bayes.d.ts.map +1 -1
  73. package/dist/ml/classical/naive_bayes.js +8 -3
  74. package/dist/ml/classical/naive_bayes.js.map +1 -1
  75. package/dist/ml/classical/robust_z.d.ts +15 -1
  76. package/dist/ml/classical/robust_z.d.ts.map +1 -1
  77. package/dist/ml/classical/robust_z.js +6 -1
  78. package/dist/ml/classical/robust_z.js.map +1 -1
  79. package/dist/ml/eval_loss.d.ts +15 -0
  80. package/dist/ml/eval_loss.d.ts.map +1 -0
  81. package/dist/ml/eval_loss.js +20 -0
  82. package/dist/ml/eval_loss.js.map +1 -0
  83. package/dist/ml/federate.d.ts +11 -25
  84. package/dist/ml/federate.d.ts.map +1 -1
  85. package/dist/ml/federate.js +15 -38
  86. package/dist/ml/federate.js.map +1 -1
  87. package/dist/ml/head_trainer.d.ts +16 -2
  88. package/dist/ml/head_trainer.d.ts.map +1 -1
  89. package/dist/ml/head_trainer.js +64 -27
  90. package/dist/ml/head_trainer.js.map +1 -1
  91. package/dist/ml/run.d.ts +11 -2
  92. package/dist/ml/run.d.ts.map +1 -1
  93. package/dist/ml/run.js +56 -17
  94. package/dist/ml/run.js.map +1 -1
  95. package/dist/ml/tasks/experience.d.ts +95 -13
  96. package/dist/ml/tasks/experience.d.ts.map +1 -1
  97. package/dist/ml/tasks/experience.js +172 -20
  98. package/dist/ml/tasks/experience.js.map +1 -1
  99. package/dist/ml/tasks/run_anomaly.d.ts +37 -19
  100. package/dist/ml/tasks/run_anomaly.d.ts.map +1 -1
  101. package/dist/ml/tasks/run_anomaly.js +50 -31
  102. package/dist/ml/tasks/run_anomaly.js.map +1 -1
  103. package/dist/ml/train.d.ts +8 -7
  104. package/dist/ml/train.d.ts.map +1 -1
  105. package/dist/ml/train.js +21 -30
  106. package/dist/ml/train.js.map +1 -1
  107. package/dist/ml/types.d.ts +6 -3
  108. package/dist/ml/types.d.ts.map +1 -1
  109. package/dist/ml/types.js +3 -2
  110. package/dist/ml/types.js.map +1 -1
  111. package/dist/optim/adamw.d.ts +11 -5
  112. package/dist/optim/adamw.d.ts.map +1 -1
  113. package/dist/optim/adamw.js +19 -4
  114. package/dist/optim/adamw.js.map +1 -1
  115. package/package.json +1 -1
  116. package/src/evermind/adapt.ts +8 -2
  117. package/src/evermind/delta_wire.ts +173 -148
  118. package/src/evermind/index.ts +36 -35
  119. package/src/evermind/merge.ts +10 -4
  120. package/src/evermind/ml_head.ts +63 -0
  121. package/src/evermind/package.ts +488 -488
  122. package/src/experience/index.ts +2 -1
  123. package/src/experience/store.ts +35 -3
  124. package/src/experience/types.ts +19 -0
  125. package/src/index.ts +2 -0
  126. package/src/kernels/weight_update.ts +12 -0
  127. package/src/limbic/limbic_model.ts +1 -4
  128. package/src/limbic/limbic_trainer.ts +91 -91
  129. package/src/ml/classical/anomaly_composite.ts +46 -0
  130. package/src/ml/classical/ewma.ts +8 -2
  131. package/src/ml/classical/gbm.ts +144 -143
  132. package/src/ml/classical/index.ts +8 -2
  133. package/src/ml/classical/kmeans.ts +22 -4
  134. package/src/ml/classical/knn.ts +31 -8
  135. package/src/ml/classical/logistic.ts +9 -9
  136. package/src/ml/classical/math.ts +93 -93
  137. package/src/ml/classical/naive_bayes.ts +10 -3
  138. package/src/ml/classical/robust_z.ts +21 -2
  139. package/src/ml/eval_loss.ts +27 -0
  140. package/src/ml/federate.ts +22 -52
  141. package/src/ml/head_trainer.ts +66 -48
  142. package/src/ml/registry.ts +44 -44
  143. package/src/ml/run.ts +57 -13
  144. package/src/ml/tasks/experience.ts +222 -23
  145. package/src/ml/tasks/run_anomaly.ts +62 -37
  146. package/src/ml/train.ts +34 -31
  147. package/src/ml/types.ts +135 -132
  148. package/src/optim/adamw.ts +21 -5
  149. package/src/training/cpu_ops.ts +141 -141
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/ml/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/ml/run.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,11 @@
5
5
  * instead of every transcript. Curation only drops documents; it never rewrites one.
6
6
  */
7
7
  import { type ExperienceDocument } from "../../experience/corpus.js";
8
- import type { Episode, Run, Skill } from "../../experience/types.js";
8
+ import type { CurationRecord } from "../../experience/store.js";
9
+ import type { CuratedOut, Episode, Run, Skill } from "../../experience/types.js";
9
10
  import { type TextEmbedder } from "../features.js";
10
11
  import { type MlRunContext } from "../run.js";
11
- import type { MlTrainExample } from "../train.js";
12
+ import { type MlTrainExample } from "../train.js";
12
13
  import type { MlPrediction, MlPredictor, MlTask } from "../types.js";
13
14
  /** One learnable procedure plus the outcome fields that say how well it went. */
14
15
  export interface ExperienceQualityInput {
@@ -30,6 +31,13 @@ export declare const EXPERIENCE_QUALITY_TASK: MlTask<ExperienceQualityInput, Exp
30
31
  export declare function experienceQualityInputs(episodes: Episode[], skills: Skill[], runs?: readonly Run[]): ExperienceQualityInput[];
31
32
  /** The training label of a quality input: 1 (high) when most finished runs succeeded, 0 when not, null with no runs. */
32
33
  export declare function experienceQualityLabel(i: ExperienceQualityInput): number | null;
34
+ /**
35
+ * From this many finished runs, curation judges a procedure by its OBSERVED success
36
+ * rate (`succeeded / runs`) instead of the model: the label is then known, and better
37
+ * than any guess from neighbours. The model only scores procedures with 1–4 runs;
38
+ * never-run ones (0) are kept.
39
+ */
40
+ export declare const QUALITY_OBSERVED_MIN_RUNS = 5;
33
41
  /** Labelled examples for `experience.quality` — only the inputs that have run outcomes. */
34
42
  export declare function experienceQualityExamples(inputs: readonly ExperienceQualityInput[]): MlTrainExample<ExperienceQualityInput>[];
35
43
  export interface ExperienceDuplicate {
@@ -59,32 +67,106 @@ export interface CurationOptions {
59
67
  /** Cosine similarity at or above which a document duplicates a kept one. Default {@link DEFAULT_DEDUPE_THRESHOLD}. */
60
68
  dedupeThreshold?: number;
61
69
  /**
62
- * Quality filter through the runner. A document whose P(high) is below `minPHigh`
63
- * (default 0.5) is dropped; one the runner cannot score (no trained engine) is kept.
70
+ * Quality filter. A document whose P(high) is below `minPHigh` (default 0.5) is
71
+ * dropped. P(high) is the OBSERVED success rate once it has
72
+ * {@link QUALITY_OBSERVED_MIN_RUNS} finished runs; with 1–4 it is the runner's
73
+ * answer, and one the runner cannot score (no trained engine) is kept. An UNSCORED
74
+ * document (`runs === 0` — never run is unknown, not bad) is always kept.
64
75
  */
65
76
  quality?: {
66
77
  ctx: MlRunContext;
67
78
  input: (doc: ExperienceDocument) => ExperienceQualityInput;
68
79
  minPHigh?: number;
80
+ /**
81
+ * The ids of the documents the quality model was trained on, in training order. A
82
+ * document among them is scored LEAVE-ONE-OUT — its own example does not vote, or
83
+ * a kNN would count it at similarity 1. Exact for the kNN engine (the one
84
+ * {@link curatePendingExperience} trains); another engine answers as fitted.
85
+ */
86
+ trainedIds?: readonly string[];
69
87
  };
70
88
  /** Document ids to leave out (e.g. those whose runs `run.anomaly` flagged). */
71
89
  exclude?: ReadonlySet<string>;
90
+ /**
91
+ * Documents the model has ALREADY learned. They seed the de-duplication index, so a
92
+ * pending document that only repeats one of them is dropped (reported `of` that
93
+ * one); they are never in `kept`. Each is embedded once per call, so this is
94
+ * bounded — {@link curatePendingExperience} keeps the {@link CURATION_KNOWN_LIMIT}
95
+ * most recently learned.
96
+ */
97
+ known?: readonly ExperienceDocument[];
98
+ }
99
+ /**
100
+ * How many already-learned documents curation de-duplicates against: the most
101
+ * recently learned ones. Each costs one CPU embed per curation call, and a
102
+ * repeat of something learned long ago is cheap to relearn, so a recent window is the
103
+ * trade — 200 embeds of a small Evermind take seconds on a laptop CPU.
104
+ */
105
+ export declare const CURATION_KNOWN_LIMIT = 200;
106
+ /** One document curation left out, and why. */
107
+ export interface CurationDrop {
108
+ id: string;
109
+ reason: CuratedOut["reason"];
110
+ of?: string;
111
+ score?: number;
72
112
  }
73
113
  export interface CurationResult {
74
114
  kept: ExperienceDocument[];
75
- dropped: {
76
- id: string;
77
- reason: "duplicate" | "low-quality" | "excluded";
78
- of?: string;
79
- score?: number;
80
- }[];
115
+ dropped: CurationDrop[];
116
+ /**
117
+ * Documents an EARLIER curation left out whose verdict still stands (see
118
+ * {@link CuratedOut}) — skipped without being embedded or judged again. Only
119
+ * {@link curatePendingExperience} fills it, from the snapshot's `curated` records.
120
+ */
121
+ alreadyDropped?: CurationDrop[];
81
122
  }
82
123
  /**
83
124
  * Curate documents before they are packed into adaptation passes: drop excluded
84
125
  * ones, low-quality ones (when a quality filter is given), then near-duplicates of
85
- * an earlier kept one. Order is preserved, and the FIRST copy wins — compiled
86
- * skills come before raw demonstrations in `experienceDocuments`, so the reviewed
87
- * version is the one kept.
126
+ * an already-learned one (`known`) or an earlier kept one. Order is preserved, and
127
+ * the FIRST copy wins — compiled skills come before raw demonstrations in
128
+ * `experienceDocuments`, so the reviewed version is the one kept.
88
129
  */
89
130
  export declare function curateExperience(docs: readonly ExperienceDocument[], opts: CurationOptions): Promise<CurationResult>;
131
+ /** What {@link curatePendingExperience} reads: the experience snapshot's raw records. */
132
+ export interface ExperienceCurationSource {
133
+ episodes: Episode[];
134
+ skills: Skill[];
135
+ runs: readonly Run[];
136
+ /** Earlier curations' verdicts (the snapshot's `curated`); a standing one is skipped. */
137
+ curated?: Readonly<Record<string, CuratedOut>>;
138
+ }
139
+ /**
140
+ * Whether an earlier `curated_out` verdict still stands (see {@link CuratedOut}): a
141
+ * duplicate while what it repeats is learned (in `learnedIds`), a low-quality one
142
+ * while its finished-run count is unchanged. An exclusion is always reconsidered.
143
+ */
144
+ export declare function curationStands(verdict: CuratedOut | undefined, finishedRuns: number, learnedIds: ReadonlySet<string>): boolean;
145
+ /**
146
+ * The whole curation step a host runs in front of the adaptation passes, so every
147
+ * host wires it the same way:
148
+ *
149
+ * 1. skip each pending document whose earlier `curated_out` verdict still stands
150
+ * ({@link curationStands}) — reported in `alreadyDropped`, never re-embedded;
151
+ * 2. train `experience.quality` on the run outcomes of at most
152
+ * {@link CURATION_KNOWN_LIMIT} scored procedures — the pending ones, then the
153
+ * learned ones most recently learned first (it stays untrained below its
154
+ * `minSamples`, and then only the observed-rate rule drops for quality);
155
+ * 3. {@link curateExperience} the rest with it — leave-one-out for a document in
156
+ * that training set — de-duplicating against each other and against `known`:
157
+ * the already-learned documents, MOST RECENTLY LEARNED FIRST; only the first
158
+ * {@link CURATION_KNOWN_LIMIT} are embedded, so a host can pass its whole ledger.
159
+ */
160
+ export declare function curatePendingExperience(pending: readonly ExperienceDocument[], source: ExperienceCurationSource, opts: {
161
+ embedder: TextEmbedder;
162
+ known?: readonly ExperienceDocument[];
163
+ dedupeThreshold?: number;
164
+ minPHigh?: number;
165
+ }): Promise<CurationResult>;
166
+ /**
167
+ * The `curated_out` records a host persists (`ExperienceStore.recordCuration`) for one
168
+ * curation result: each dropped document with its verdict and finished-run count, and
169
+ * the kept ids (whose earlier verdicts clear).
170
+ */
171
+ export declare function curationRecords(result: CurationResult, source: Pick<ExperienceCurationSource, "runs">, at: number): CurationRecord;
90
172
  //# sourceMappingURL=experience.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"experience.d.ts","sourceRoot":"","sources":["../../../src/ml/tasks/experience.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"experience.d.ts","sourceRoot":"","sources":["../../../src/ml/tasks/experience.ts"],"names":[],"mappings":"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"}
@@ -6,22 +6,30 @@
6
6
  */
7
7
  import { experienceDocuments } from "../../experience/corpus.js";
8
8
  import { KnnModel } from "../classical/knn.js";
9
- import { clampRatio, logScale } from "../features.js";
10
- import { MlEngineUnavailableError, runMlTask } from "../run.js";
9
+ import { logScale } from "../features.js";
10
+ import { MlTaskRegistry } from "../registry.js";
11
+ import { InMemoryMlModels, MlEngineUnavailableError, runMlTask } from "../run.js";
12
+ import { trainMlTask } from "../train.js";
11
13
  export const EXPERIENCE_QUALITY_TASK = {
12
14
  kind: "classify",
13
15
  id: "experience.quality",
14
16
  description: "Is this procedure worth learning from (does it run, and run well)?",
15
17
  features: {
16
18
  text: (i) => i.doc.text,
17
- numeric: (i) => [logScale(i.steps, 50), logScale(i.runs, 20), clampRatio(i.succeeded, i.runs, 1), clampRatio(i.failed, i.runs, 1)],
18
- numericNames: ["steps", "runs", "successRate", "failureRate"],
19
+ // No success/failure rate: the label IS `succeeded / runs >= 0.5`, so a rate
20
+ // feature would leak it — the model would learn the label, not the procedure.
21
+ numeric: (i) => [logScale(i.steps, 50), logScale(i.runs, 20)],
22
+ numericNames: ["steps", "runs"],
19
23
  },
20
24
  engines: [
21
25
  { tier: "local", engine: "classical", algorithm: "knn" },
22
26
  { tier: "local", engine: "classical", algorithm: "logistic" },
23
27
  ],
24
- train: { minSamples: 4 },
28
+ // Below 12 labelled procedures the task stays untrained and curation keeps
29
+ // everything. At 12, after the 20% holdout ≈10 remain to fit, both classes can have
30
+ // several members, and kNN votes with k = ⌊√n⌋ = 3 neighbours rather than the whole
31
+ // set — with fewer, every point votes and the answer collapses to the class prior.
32
+ train: { minSamples: 12 },
25
33
  output: {
26
34
  labels: ["low", "high"],
27
35
  decode: (p) => ({ label: (p.scores[1] ?? 0) >= 0.5 ? "high" : "low", pHigh: p.scores[1] ?? 0 }),
@@ -54,6 +62,13 @@ export function experienceQualityLabel(i) {
54
62
  return null;
55
63
  return i.succeeded / i.runs >= 0.5 ? 1 : 0;
56
64
  }
65
+ /**
66
+ * From this many finished runs, curation judges a procedure by its OBSERVED success
67
+ * rate (`succeeded / runs`) instead of the model: the label is then known, and better
68
+ * than any guess from neighbours. The model only scores procedures with 1–4 runs;
69
+ * never-run ones (0) are kept.
70
+ */
71
+ export const QUALITY_OBSERVED_MIN_RUNS = 5;
57
72
  /** Labelled examples for `experience.quality` — only the inputs that have run outcomes. */
58
73
  export function experienceQualityExamples(inputs) {
59
74
  return inputs.flatMap((input) => {
@@ -97,6 +112,23 @@ export class DedupeIndex {
97
112
  return { scores: [n.index, n.similarity, dup ? 1 : 0], confidence: Math.abs(n.similarity) };
98
113
  }
99
114
  }
115
+ /**
116
+ * How many already-learned documents curation de-duplicates against: the most
117
+ * recently learned ones. Each costs one CPU embed per curation call, and a
118
+ * repeat of something learned long ago is cheap to relearn, so a recent window is the
119
+ * trade — 200 embeds of a small Evermind take seconds on a laptop CPU.
120
+ */
121
+ export const CURATION_KNOWN_LIMIT = 200;
122
+ /** A model store whose kNN for `taskId` leaves the point at `index` out of every vote. */
123
+ function leaveOneOut(models, taskId, index) {
124
+ return {
125
+ get: (t, e) => {
126
+ const p = models.get(t, e);
127
+ return t === taskId && p instanceof KnnModel && index < p.size ? p.excluding(index) : p;
128
+ },
129
+ set: (t, e, p) => models.set(t, e, p),
130
+ };
131
+ }
100
132
  /** Memoise an embedder for one call, so curation embeds each text once. */
101
133
  function memoEmbedder(e) {
102
134
  const cache = new Map();
@@ -111,46 +143,166 @@ function memoEmbedder(e) {
111
143
  },
112
144
  };
113
145
  }
146
+ /**
147
+ * P(high) of one quality input, or null when it cannot be judged (never run, or no
148
+ * trained engine). Observed rate from {@link QUALITY_OBSERVED_MIN_RUNS} runs; the
149
+ * runner's answer below that, leave-one-out when the document is training example
150
+ * `trainedIndex`.
151
+ */
152
+ async function qualityScore(input, ctx, trainedIndex) {
153
+ // Never run ⇒ no outcome to judge it by: keep it rather than let a guess drop it.
154
+ if (input.runs <= 0)
155
+ return null;
156
+ if (input.runs >= QUALITY_OBSERVED_MIN_RUNS)
157
+ return input.succeeded / input.runs;
158
+ const runCtx = trainedIndex == null || !ctx.models ? ctx : { ...ctx, models: leaveOneOut(ctx.models, EXPERIENCE_QUALITY_TASK.id, trainedIndex) };
159
+ try {
160
+ return (await runMlTask(EXPERIENCE_QUALITY_TASK.id, input, runCtx)).output.pHigh;
161
+ }
162
+ catch (error) {
163
+ if (!(error instanceof MlEngineUnavailableError))
164
+ throw error;
165
+ return null;
166
+ }
167
+ }
114
168
  /**
115
169
  * Curate documents before they are packed into adaptation passes: drop excluded
116
170
  * ones, low-quality ones (when a quality filter is given), then near-duplicates of
117
- * an earlier kept one. Order is preserved, and the FIRST copy wins — compiled
118
- * skills come before raw demonstrations in `experienceDocuments`, so the reviewed
119
- * version is the one kept.
171
+ * an already-learned one (`known`) or an earlier kept one. Order is preserved, and
172
+ * the FIRST copy wins — compiled skills come before raw demonstrations in
173
+ * `experienceDocuments`, so the reviewed version is the one kept.
120
174
  */
121
175
  export async function curateExperience(docs, opts) {
122
176
  const embedder = memoEmbedder(opts.embedder);
123
177
  const index = new DedupeIndex(opts.dedupeThreshold ?? DEFAULT_DEDUPE_THRESHOLD);
178
+ /** Index position → document id: the known documents first, then each kept one. */
179
+ const indexed = [];
124
180
  const kept = [];
125
181
  const dropped = [];
126
182
  const qctx = opts.quality ? { ...opts.quality.ctx, embedder } : null;
183
+ const trainedAt = new Map((opts.quality?.trainedIds ?? []).map((id, i) => [id, i]));
184
+ const embedDoc = (doc) => embedder.embed(EXPERIENCE_DEDUPE_TASK.features.text(doc));
185
+ for (const doc of opts.known ?? []) {
186
+ index.add(await embedDoc(doc));
187
+ indexed.push(doc.id);
188
+ }
127
189
  for (const doc of docs) {
128
190
  if (opts.exclude?.has(doc.id)) {
129
191
  dropped.push({ id: doc.id, reason: "excluded" });
130
192
  continue;
131
193
  }
132
194
  if (opts.quality && qctx) {
133
- try {
134
- const r = await runMlTask(EXPERIENCE_QUALITY_TASK.id, opts.quality.input(doc), qctx);
135
- if (r.output.pHigh < (opts.quality.minPHigh ?? 0.5)) {
136
- dropped.push({ id: doc.id, reason: "low-quality", score: r.output.pHigh });
137
- continue;
138
- }
139
- }
140
- catch (error) {
141
- if (!(error instanceof MlEngineUnavailableError))
142
- throw error;
195
+ const pHigh = await qualityScore(opts.quality.input(doc), qctx, trainedAt.get(doc.id));
196
+ if (pHigh != null && pHigh < (opts.quality.minPHigh ?? 0.5)) {
197
+ dropped.push({ id: doc.id, reason: "low-quality", score: pHigh });
198
+ continue;
143
199
  }
144
200
  }
145
- const x = await embedder.embed(EXPERIENCE_DEDUPE_TASK.features.text(doc));
201
+ const x = await embedDoc(doc);
146
202
  const d = EXPERIENCE_DEDUPE_TASK.output.decode(index.predict(x));
147
203
  if (d.duplicate) {
148
- dropped.push({ id: doc.id, reason: "duplicate", of: kept[d.nearest].id, score: d.similarity });
204
+ dropped.push({ id: doc.id, reason: "duplicate", of: indexed[d.nearest], score: d.similarity });
149
205
  continue;
150
206
  }
151
207
  index.add(x);
208
+ indexed.push(doc.id);
152
209
  kept.push(doc);
153
210
  }
154
211
  return { kept, dropped };
155
212
  }
213
+ /**
214
+ * Whether an earlier `curated_out` verdict still stands (see {@link CuratedOut}): a
215
+ * duplicate while what it repeats is learned (in `learnedIds`), a low-quality one
216
+ * while its finished-run count is unchanged. An exclusion is always reconsidered.
217
+ */
218
+ export function curationStands(verdict, finishedRuns, learnedIds) {
219
+ if (!verdict || verdict.status !== "curated_out")
220
+ return false;
221
+ if (verdict.reason === "duplicate")
222
+ return verdict.of != null && learnedIds.has(verdict.of);
223
+ if (verdict.reason === "low-quality")
224
+ return verdict.runs === finishedRuns;
225
+ return false;
226
+ }
227
+ /**
228
+ * The whole curation step a host runs in front of the adaptation passes, so every
229
+ * host wires it the same way:
230
+ *
231
+ * 1. skip each pending document whose earlier `curated_out` verdict still stands
232
+ * ({@link curationStands}) — reported in `alreadyDropped`, never re-embedded;
233
+ * 2. train `experience.quality` on the run outcomes of at most
234
+ * {@link CURATION_KNOWN_LIMIT} scored procedures — the pending ones, then the
235
+ * learned ones most recently learned first (it stays untrained below its
236
+ * `minSamples`, and then only the observed-rate rule drops for quality);
237
+ * 3. {@link curateExperience} the rest with it — leave-one-out for a document in
238
+ * that training set — de-duplicating against each other and against `known`:
239
+ * the already-learned documents, MOST RECENTLY LEARNED FIRST; only the first
240
+ * {@link CURATION_KNOWN_LIMIT} are embedded, so a host can pass its whole ledger.
241
+ */
242
+ export async function curatePendingExperience(pending, source, opts) {
243
+ const known = opts.known?.slice(0, CURATION_KNOWN_LIMIT);
244
+ const embedder = memoEmbedder(opts.embedder);
245
+ const inputs = experienceQualityInputs(source.episodes, source.skills, source.runs);
246
+ const byId = new Map(inputs.map((i) => [i.doc.id, i]));
247
+ // A document with no joined input (not in the snapshot) counts as never run.
248
+ const inputOf = (doc) => byId.get(doc.id) ?? { doc, steps: 0, runs: 0, succeeded: 0, failed: 0 };
249
+ const learnedIds = new Set((opts.known ?? []).map((d) => d.id));
250
+ const alreadyDropped = [];
251
+ const toCurate = [];
252
+ for (const doc of pending) {
253
+ const verdict = source.curated?.[doc.id];
254
+ if (verdict && curationStands(verdict, inputOf(doc).runs, learnedIds)) {
255
+ alreadyDropped.push({ id: doc.id, reason: verdict.reason, ...(verdict.of != null ? { of: verdict.of } : {}), ...(verdict.score != null ? { score: verdict.score } : {}) });
256
+ }
257
+ else
258
+ toCurate.push(doc);
259
+ }
260
+ // The bounded training set: newest first (pending, then most recently learned),
261
+ // scored only, then reversed — trainMlTask holds out the chronological tail.
262
+ const recentFirst = [...pending, ...(opts.known ?? [])]
263
+ .map((d) => byId.get(d.id))
264
+ .filter((i) => i != null && experienceQualityLabel(i) != null)
265
+ .slice(0, CURATION_KNOWN_LIMIT);
266
+ const train = experienceQualityExamples(recentFirst.reverse());
267
+ const registry = new MlTaskRegistry();
268
+ registry.register(EXPERIENCE_QUALITY_TASK);
269
+ const models = new InMemoryMlModels();
270
+ const fitted = await trainMlTask(EXPERIENCE_QUALITY_TASK, train, { embedder, models });
271
+ const r = await curateExperience(toCurate, {
272
+ embedder,
273
+ ...(known ? { known } : {}),
274
+ ...(opts.dedupeThreshold != null ? { dedupeThreshold: opts.dedupeThreshold } : {}),
275
+ quality: {
276
+ ctx: { registry, mode: "local-only", models },
277
+ input: inputOf,
278
+ ...(opts.minPHigh != null ? { minPHigh: opts.minPHigh } : {}),
279
+ // The refit on all examples keeps their order, so kNN point i is train[i].
280
+ ...(fitted ? { trainedIds: train.map((e) => e.input.doc.id) } : {}),
281
+ },
282
+ });
283
+ return { ...r, alreadyDropped };
284
+ }
285
+ /**
286
+ * The `curated_out` records a host persists (`ExperienceStore.recordCuration`) for one
287
+ * curation result: each dropped document with its verdict and finished-run count, and
288
+ * the kept ids (whose earlier verdicts clear).
289
+ */
290
+ export function curationRecords(result, source, at) {
291
+ const finished = new Map();
292
+ for (const run of source.runs)
293
+ if (run.status !== "running")
294
+ finished.set(run.skillId, (finished.get(run.skillId) ?? 0) + 1);
295
+ const dropped = {};
296
+ for (const d of result.dropped) {
297
+ dropped[d.id] = {
298
+ status: "curated_out",
299
+ reason: d.reason,
300
+ ...(d.of != null ? { of: d.of } : {}),
301
+ ...(d.score != null ? { score: d.score } : {}),
302
+ runs: finished.get(d.id) ?? 0,
303
+ at,
304
+ };
305
+ }
306
+ return { dropped, kept: result.kept.map((d) => d.id) };
307
+ }
156
308
  //# sourceMappingURL=experience.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"experience.js","sourceRoot":"","sources":["../../../src/ml/tasks/experience.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"experience.js","sourceRoot":"","sources":["../../../src/ml/tasks/experience.ts"],"names":[],"mappings":"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"}
@@ -3,14 +3,14 @@
3
3
  * outside its normal range. Flags runs to leave out of training and to surface as
4
4
  * Insights.
5
5
  *
6
- * Two detectors, one answer: robust z (median/MAD over the whole history — "far
7
- * from normal") and EWMA (the recent trend — "drifting away from lately"). The
8
- * score is the larger of the two, so either one can flag.
6
+ * ONE engine, `anomaly-composite`: robust z (median/MAD over the whole history —
7
+ * "far from normal") and EWMA (the recent trend — "drifting away from lately"),
8
+ * scored as the larger of the two so either one can flag. The row lists exactly
9
+ * that engine, so the key it is stored under is the key the runner asks for.
9
10
  */
10
11
  import type { Run } from "../../experience/types.js";
11
- import { EwmaModel, type EwmaOptions } from "../classical/ewma.js";
12
- import { RobustZModel, type RobustZOptions } from "../classical/robust_z.js";
13
- import type { MlPrediction, MlPredictor, MlSample, MlTask } from "../types.js";
12
+ import { AnomalyCompositeModel, type AnomalyCompositeOptions } from "../classical/anomaly_composite.js";
13
+ import type { MlSample, MlTask } from "../types.js";
14
14
  /** What a run cost and how it went — the host supplies cost; the rest is in the run log. */
15
15
  export interface RunMetrics {
16
16
  costUsd: number;
@@ -25,26 +25,44 @@ export interface RunAnomaly {
25
25
  export declare const RUN_ANOMALY_METRICS: readonly ["cost", "duration", "toolFailures"];
26
26
  /** Fixed log scales (a $10 run, a one-hour run, 50 failures map to 1). */
27
27
  export declare function runAnomalyFeatures(m: RunMetrics): number[];
28
- /** Robust z over the history, combined with EWMA over its recent trend. */
29
- export declare class RunAnomalyDetector implements MlPredictor {
30
- readonly population: RobustZModel;
31
- readonly trend: EwmaModel;
32
- constructor(population: RobustZModel, trend: EwmaModel);
28
+ /**
29
+ * The multiplicative jump in cost or duration that flags against a constant history.
30
+ * A constant history has MAD = mean-AD = 0 and EWMA σ = 0, so the floor below IS the
31
+ * scale both detectors divide by.
32
+ */
33
+ export declare const RUN_ANOMALY_FLAG_RATIO = 3;
34
+ /**
35
+ * The smallest per-metric scale (σ) both detectors use, in the fixed log units above —
36
+ * ONE PER METRIC, because each metric is divided by a different reference: a feature
37
+ * unit is log1p(ref) nats, i.e. log1p(1000) ≈ 6.909 nats for cost but log1p(3.6e6) ≈
38
+ * 15.096 nats for duration. One scalar floor (it was 0.1) therefore meant ~0.69 nats
39
+ * (2×) on cost but ~1.51 nats (4.5×) on duration, and a 10 s → 15 min run (4.5 nats,
40
+ * z ≈ 3.0) slipped under EWMA's 3.
41
+ *
42
+ * Derivation, cost and duration: for values well above 1, a k× jump moves log1p by
43
+ * ≈ ln k nats = ln k / log1p(ref) feature units. The composite flags at the smaller of
44
+ * the two thresholds (EWMA 3; robust z is 3.5), so the floor that flags a 3× jump is
45
+ * floor = ln 3 / (3 · log1p(ref))
46
+ * cost: 1.0986 / (3 · 6.9088) ≈ 0.0530 (robust z alone flags from ≈ 3.6×)
47
+ * duration: 1.0986 / (3 · 15.0964) ≈ 0.0243 (robust z alone flags from ≈ 3.6×)
48
+ * A 1.5× wobble (0.405 nats) scores z ≈ 1.1 on either — normal.
49
+ *
50
+ * Tool failures keep the absolute 0.1: from a clean history one or two failures
51
+ * (log1p(1|2)/log1p(50) ≈ 0.18 | 0.28) stay normal (z ≈ 1.8 / 2.8) and three or more
52
+ * (≈ 0.35) flag. (0.05 was too tight: it flagged a single failure.)
53
+ */
54
+ export declare const RUN_ANOMALY_MIN_SCALE: readonly number[];
55
+ /** The composite detector with `run.anomaly`'s metric names on its explanation. */
56
+ export declare class RunAnomalyDetector extends AnomalyCompositeModel {
33
57
  /** Which metrics are out of range, per detector (z / threshold, ≥ 1 = out of range). */
34
58
  explain(x: ArrayLike<number>): {
35
59
  metric: (typeof RUN_ANOMALY_METRICS)[number];
36
60
  population: number;
37
61
  trend: number;
38
62
  }[];
39
- /** Fold a finished, non-anomalous run into the trend. */
40
- observe(x: ArrayLike<number>): void;
41
- predict(x: Float32Array): MlPrediction;
42
63
  }
43
- /** Fit both detectors on a chronological history of runs (as feature vectors). */
44
- export declare function fitRunAnomaly(samples: readonly MlSample[], opts?: {
45
- robustZ?: RobustZOptions;
46
- ewma?: EwmaOptions;
47
- }): RunAnomalyDetector;
64
+ /** Fit both detectors on a chronological history of runs (as feature vectors), floored per metric at {@link RUN_ANOMALY_MIN_SCALE}. */
65
+ export declare function fitRunAnomaly(samples: readonly MlSample[], opts?: AnomalyCompositeOptions): RunAnomalyDetector;
48
66
  export declare const RUN_ANOMALY_TASK: MlTask<RunMetrics, RunAnomaly>;
49
67
  /** Duration and tool-failure count of an experience run, with the host's cost. */
50
68
  export declare function experienceRunMetrics(run: Run, costUsd?: number): RunMetrics;
@@ -1 +1 @@
1
- {"version":3,"file":"run_anomaly.d.ts","sourceRoot":"","sources":["../../../src/ml/tasks/run_anomaly.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,SAAS,EAAW,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAiC,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE5G,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE/E,4FAA4F;AAC5F,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,mBAAmB,+CAAgD,CAAC;AAEjF,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,EAAE,CAE1D;AAED,2EAA2E;AAC3E,qBAAa,kBAAmB,YAAW,WAAW;IAElD,QAAQ,CAAC,UAAU,EAAE,YAAY;IACjC,QAAQ,CAAC,KAAK,EAAE,SAAS;gBADhB,UAAU,EAAE,YAAY,EACxB,KAAK,EAAE,SAAS;IAG3B,wFAAwF;IACxF,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG;QAAE,MAAM,EAAE,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE;IAUpH,yDAAyD;IACzD,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI;IAInC,OAAO,CAAC,CAAC,EAAE,YAAY,GAAG,YAAY;CAIvC;AAED,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,EAAE,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,cAAc,CAAC;IAAC,IAAI,CAAC,EAAE,WAAW,CAAA;CAAO,GAAG,kBAAkB,CAE3I;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,CAW3D,CAAC;AAEF,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,SAAI,GAAG,UAAU,CAMtE"}
1
+ {"version":3,"file":"run_anomaly.d.ts","sourceRoot":"","sources":["../../../src/ml/tasks/run_anomaly.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,KAAK,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAIxG,OAAO,KAAK,EAAgB,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAElE,4FAA4F;AAC5F,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,mBAAmB,+CAAgD,CAAC;AAOjF,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,EAAE,CAM1D;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAIlD,CAAC;AAEF,mFAAmF;AACnF,qBAAa,kBAAmB,SAAQ,qBAAqB;IAC3D,wFAAwF;IACxF,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG;QAAE,MAAM,EAAE,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE;CAIrH;AAED,uIAAuI;AACvI,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,EAAE,IAAI,GAAE,uBAA4B,GAAG,kBAAkB,CAKlH;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,CAS3D,CAAC;AAEF,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,SAAI,GAAG,UAAU,CAMtE"}