@reicek/neataptic-ts 0.1.25 → 0.1.26

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 (210) hide show
  1. package/.github/copilot-instructions.md +11 -0
  2. package/.github/skills/trace-analyzer-extension/SKILL.md +3 -3
  3. package/.github/skills/trace-analyzer-extension/assets/extension-checklist.md +1 -1
  4. package/.github/skills/trace-analyzer-extension/references/analyzer-extension-workflow.md +1 -1
  5. package/.github/skills/trace-audit-reporting/SKILL.md +3 -3
  6. package/.github/skills/trace-audit-reporting/references/trace-analysis-workflow.md +1 -1
  7. package/package.json +19 -13
  8. package/plans/Flappy_Bird_Folder_Documentation_Pass.md +4 -4
  9. package/plans/README.md +24 -0
  10. package/plans/Roadmap.md +62 -40
  11. package/plans/analyze-trace-solid-split.plans.md +66 -0
  12. package/plans/architecture-solid-split.plans.md +9 -15
  13. package/plans/asciiMaze-typescript-repair.plans.md +1 -1
  14. package/plans/generate-docs-solid-split.plans.md +87 -0
  15. package/plans/methods-docs.plans.md +25 -1
  16. package/plans/methods-solid-split.plans.md +14 -14
  17. package/plans/neat-docs.plans.md +9 -1
  18. package/plans/neat-test-surface-repair.plans.md +1 -1
  19. package/plans/render-docs-html-solid-split.plans.md +68 -0
  20. package/plans/src-no-explicit-any-cleanup.plans.md +1 -1
  21. package/plans/utils-docs.plans.md +6 -1
  22. package/scripts/analyze-trace/analyze-trace.analysis.ts +479 -0
  23. package/scripts/analyze-trace/analyze-trace.constants.ts +35 -0
  24. package/scripts/analyze-trace/analyze-trace.io.ts +69 -0
  25. package/scripts/analyze-trace/analyze-trace.report.ts +100 -0
  26. package/scripts/analyze-trace/analyze-trace.shared.ts +116 -0
  27. package/scripts/analyze-trace/analyze-trace.ts +45 -0
  28. package/scripts/analyze-trace/analyze-trace.types.ts +72 -0
  29. package/scripts/assets/theme.css +80 -23
  30. package/scripts/copy-examples.ts +239 -0
  31. package/scripts/export-onnx.ts +223 -0
  32. package/scripts/generate-bench-tables.ts +378 -37
  33. package/scripts/generate-docs/generate-docs.constants.ts +107 -0
  34. package/scripts/generate-docs/generate-docs.order.ts +355 -0
  35. package/scripts/generate-docs/generate-docs.state.ts +31 -0
  36. package/scripts/generate-docs/generate-docs.targets.ts +165 -0
  37. package/scripts/generate-docs/generate-docs.ts +63 -0
  38. package/scripts/generate-docs/generate-docs.types.ts +112 -0
  39. package/scripts/generate-docs/output/generate-docs.output.folder-index.utils.ts +167 -0
  40. package/scripts/generate-docs/output/generate-docs.output.ordering.utils.ts +353 -0
  41. package/scripts/generate-docs/output/generate-docs.output.readme.utils.ts +420 -0
  42. package/scripts/generate-docs/output/generate-docs.output.ts +123 -0
  43. package/scripts/generate-docs/output/generate-docs.output.warnings.utils.ts +219 -0
  44. package/scripts/generate-docs/symbols/generate-docs.symbols.collection.utils.ts +365 -0
  45. package/scripts/generate-docs/symbols/generate-docs.symbols.jsdoc.utils.ts +373 -0
  46. package/scripts/generate-docs/symbols/generate-docs.symbols.normalize.utils.ts +155 -0
  47. package/scripts/generate-docs/symbols/generate-docs.symbols.render.utils.ts +149 -0
  48. package/scripts/generate-docs/symbols/generate-docs.symbols.signature.utils.ts +289 -0
  49. package/scripts/generate-docs/symbols/generate-docs.symbols.ts +11 -0
  50. package/scripts/mermaid-cli.mjs +102 -22
  51. package/scripts/mermaid-cli.ts +736 -0
  52. package/scripts/render-docs-html/render-docs-html.assets.ts +54 -0
  53. package/scripts/render-docs-html/render-docs-html.mermaid.ts +245 -0
  54. package/scripts/{render-docs-html.sidebar.ts → render-docs-html/render-docs-html.navigation.ts} +141 -144
  55. package/scripts/render-docs-html/render-docs-html.pages.ts +333 -0
  56. package/scripts/render-docs-html/render-docs-html.shared.ts +333 -0
  57. package/scripts/render-docs-html/render-docs-html.types.ts +42 -0
  58. package/scripts/render-docs-html.ts +23 -587
  59. package/scripts/run-docs.ts +238 -0
  60. package/scripts/write-dist-docs-pkg.ts +40 -0
  61. package/src/README.md +75 -75
  62. package/src/architecture/connection/README.md +5 -5
  63. package/src/architecture/layer/README.md +508 -508
  64. package/src/architecture/network/README.md +1458 -1458
  65. package/src/architecture/network/activate/README.md +694 -694
  66. package/src/architecture/network/bootstrap/README.md +77 -77
  67. package/src/architecture/network/connect/README.md +74 -74
  68. package/src/architecture/network/deterministic/README.md +135 -135
  69. package/src/architecture/network/evolve/README.md +364 -364
  70. package/src/architecture/network/gating/README.md +130 -130
  71. package/src/architecture/network/genetic/README.md +399 -399
  72. package/src/architecture/network/mutate/README.md +897 -897
  73. package/src/architecture/network/onnx/README.md +720 -720
  74. package/src/architecture/network/onnx/export/README.md +728 -728
  75. package/src/architecture/network/onnx/export/layers/README.md +450 -450
  76. package/src/architecture/network/onnx/import/README.md +618 -618
  77. package/src/architecture/network/onnx/schema/README.md +32 -32
  78. package/src/architecture/network/prune/README.md +245 -245
  79. package/src/architecture/network/remove/README.md +135 -135
  80. package/src/architecture/network/runtime/README.md +106 -106
  81. package/src/architecture/network/serialize/README.md +542 -542
  82. package/src/architecture/network/slab/README.md +608 -608
  83. package/src/architecture/network/standalone/README.md +212 -212
  84. package/src/architecture/network/stats/README.md +84 -84
  85. package/src/architecture/network/topology/README.md +465 -465
  86. package/src/architecture/network/training/README.md +200 -200
  87. package/src/architecture/node/README.md +5 -5
  88. package/src/architecture/nodePool/README.md +14 -14
  89. package/src/methods/README.md +99 -99
  90. package/src/methods/activation/README.md +189 -189
  91. package/src/methods/cost/README.md +131 -131
  92. package/src/methods/rate/README.md +86 -86
  93. package/src/multithreading/README.md +77 -77
  94. package/src/multithreading/workers/browser/README.md +8 -8
  95. package/src/multithreading/workers/node/README.md +8 -8
  96. package/src/neat/README.md +148 -148
  97. package/src/neat/adaptive/README.md +120 -120
  98. package/src/neat/adaptive/acceptance/README.md +40 -40
  99. package/src/neat/adaptive/complexity/README.md +137 -137
  100. package/src/neat/adaptive/core/README.md +197 -197
  101. package/src/neat/adaptive/lineage/README.md +90 -90
  102. package/src/neat/adaptive/mutation/README.md +284 -284
  103. package/src/neat/compat/README.md +43 -43
  104. package/src/neat/compat/core/README.md +90 -90
  105. package/src/neat/diversity/README.md +35 -35
  106. package/src/neat/diversity/core/README.md +88 -88
  107. package/src/neat/evaluate/README.md +85 -85
  108. package/src/neat/evaluate/auto-distance/README.md +75 -75
  109. package/src/neat/evaluate/entropy-compat/README.md +37 -37
  110. package/src/neat/evaluate/entropy-sharing/README.md +43 -43
  111. package/src/neat/evaluate/fitness/README.md +23 -23
  112. package/src/neat/evaluate/novelty/README.md +120 -120
  113. package/src/neat/evaluate/objectives/README.md +17 -17
  114. package/src/neat/evaluate/shared/README.md +94 -94
  115. package/src/neat/evolve/README.md +96 -96
  116. package/src/neat/evolve/adaptive/README.md +60 -60
  117. package/src/neat/evolve/objectives/README.md +63 -63
  118. package/src/neat/evolve/offspring/README.md +56 -56
  119. package/src/neat/evolve/population/README.md +171 -171
  120. package/src/neat/evolve/runtime/README.md +79 -79
  121. package/src/neat/evolve/speciation/README.md +74 -74
  122. package/src/neat/evolve/warnings/README.md +10 -10
  123. package/src/neat/export/README.md +114 -114
  124. package/src/neat/helpers/README.md +50 -50
  125. package/src/neat/init/README.md +9 -9
  126. package/src/neat/lineage/core/README.md +101 -101
  127. package/src/neat/multiobjective/category/README.md +74 -74
  128. package/src/neat/multiobjective/crowding/README.md +272 -272
  129. package/src/neat/multiobjective/dominance/README.md +171 -171
  130. package/src/neat/multiobjective/fronts/README.md +68 -68
  131. package/src/neat/multiobjective/metrics/README.md +43 -43
  132. package/src/neat/multiobjective/objectives/README.md +31 -31
  133. package/src/neat/multiobjective/shared/README.md +27 -27
  134. package/src/neat/mutation/README.md +97 -97
  135. package/src/neat/mutation/add-conn/README.md +115 -115
  136. package/src/neat/mutation/add-node/README.md +126 -126
  137. package/src/neat/mutation/flow/README.md +149 -149
  138. package/src/neat/mutation/repair/README.md +185 -185
  139. package/src/neat/mutation/select/README.md +117 -117
  140. package/src/neat/mutation/shared/README.md +32 -32
  141. package/src/neat/objectives/README.md +25 -25
  142. package/src/neat/objectives/core/README.md +67 -67
  143. package/src/neat/pruning/README.md +40 -40
  144. package/src/neat/pruning/core/README.md +171 -171
  145. package/src/neat/pruning/facade/README.md +32 -32
  146. package/src/neat/rng/README.md +104 -104
  147. package/src/neat/rng/core/README.md +137 -137
  148. package/src/neat/rng/facade/README.md +50 -50
  149. package/src/neat/selection/README.md +111 -111
  150. package/src/neat/selection/core/README.md +227 -227
  151. package/src/neat/selection/facade/README.md +61 -61
  152. package/src/neat/shared/README.md +163 -163
  153. package/src/neat/speciation/README.md +31 -31
  154. package/src/neat/speciation/threshold/README.md +35 -35
  155. package/src/neat/species/README.md +25 -25
  156. package/src/neat/species/core/README.md +20 -20
  157. package/src/neat/species/core/shared/README.md +18 -18
  158. package/src/neat/species/history/context/README.md +22 -22
  159. package/src/neat/telemetry/accessors/README.md +58 -58
  160. package/src/neat/telemetry/exports/README.md +233 -233
  161. package/src/neat/telemetry/facade/README.md +252 -252
  162. package/src/neat/telemetry/facade/archive/README.md +57 -57
  163. package/src/neat/telemetry/facade/buffer/README.md +43 -43
  164. package/src/neat/telemetry/facade/lineage/README.md +12 -12
  165. package/src/neat/telemetry/facade/objectives/README.md +44 -44
  166. package/src/neat/telemetry/facade/runtime/README.md +26 -26
  167. package/src/neat/telemetry/facade/species/README.md +27 -27
  168. package/src/neat/telemetry/metrics/README.md +696 -696
  169. package/src/neat/telemetry/recorder/README.md +57 -57
  170. package/src/neat/telemetry/types/README.md +32 -32
  171. package/src/neat/topology-intent/README.md +75 -75
  172. package/src/utils/README.md +193 -193
  173. package/test/examples/asciiMaze/browser-entry/README.md +92 -92
  174. package/test/examples/asciiMaze/dashboardManager/README.md +109 -109
  175. package/test/examples/asciiMaze/dashboardManager/telemetry/README.md +28 -28
  176. package/test/examples/asciiMaze/evolutionEngine/README.md +1527 -1527
  177. package/test/examples/asciiMaze/mazeMovement/README.md +105 -105
  178. package/test/examples/asciiMaze/mazeMovement/finalization/README.md +16 -16
  179. package/test/examples/asciiMaze/mazeMovement/policy/README.md +57 -57
  180. package/test/examples/asciiMaze/mazeMovement/runtime/README.md +52 -52
  181. package/test/examples/asciiMaze/mazeMovement/shaping/README.md +46 -46
  182. package/test/examples/flappy_bird/browser-entry/README.md +508 -508
  183. package/test/examples/flappy_bird/browser-entry/host/README.md +101 -101
  184. package/test/examples/flappy_bird/browser-entry/host/resize/README.md +144 -144
  185. package/test/examples/flappy_bird/browser-entry/network-view/README.md +194 -194
  186. package/test/examples/flappy_bird/browser-entry/playback/README.md +278 -278
  187. package/test/examples/flappy_bird/browser-entry/playback/background/README.md +129 -129
  188. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/README.md +502 -502
  189. package/test/examples/flappy_bird/browser-entry/playback/frame-render/README.md +139 -139
  190. package/test/examples/flappy_bird/browser-entry/playback/snapshot/README.md +10 -10
  191. package/test/examples/flappy_bird/browser-entry/playback/trail/README.md +43 -43
  192. package/test/examples/flappy_bird/browser-entry/playback/worker-channel/README.md +30 -30
  193. package/test/examples/flappy_bird/browser-entry/runtime/README.md +59 -59
  194. package/test/examples/flappy_bird/browser-entry/visualization/README.md +276 -276
  195. package/test/examples/flappy_bird/browser-entry/worker-channel/README.md +16 -16
  196. package/test/examples/flappy_bird/constants/README.md +1070 -1070
  197. package/test/examples/flappy_bird/environment/README.md +22 -22
  198. package/test/examples/flappy_bird/evaluation/README.md +32 -32
  199. package/test/examples/flappy_bird/evaluation/rollout/README.md +141 -141
  200. package/test/examples/flappy_bird/flappy-evolution-worker/README.md +425 -425
  201. package/test/examples/flappy_bird/simulation-shared/README.md +170 -170
  202. package/test/examples/flappy_bird/simulation-shared/observation/README.md +109 -109
  203. package/test/examples/flappy_bird/trainer/README.md +325 -325
  204. package/test/examples/flappy_bird/trainer/evaluation/README.md +74 -74
  205. package/scripts/analyze-trace.ts +0 -590
  206. package/scripts/copy-examples.mjs +0 -114
  207. package/scripts/export-onnx.mjs +0 -86
  208. package/scripts/generate-bench-tables.mjs +0 -182
  209. package/scripts/generate-docs.ts +0 -2900
  210. package/scripts/write-dist-docs-pkg.mjs +0 -16
@@ -170,6 +170,25 @@ Parameters:
170
170
 
171
171
  Returns: Nothing.
172
172
 
173
+ ### resolveNextPhase
174
+
175
+ ```ts
176
+ resolveNextPhase(
177
+ currentPhase: string,
178
+ ): string
179
+ ```
180
+
181
+ Resolve next phase name.
182
+
183
+ The phase cycle is intentionally binary so the controller can alternate
184
+ between growth and simplification without inventing additional intermediate
185
+ moods here.
186
+
187
+ Parameters:
188
+ - `currentPhase` - - Current phase label.
189
+
190
+ Returns: Next phase label.
191
+
173
192
  ### togglePhaseIfNeeded
174
193
 
175
194
  ```ts
@@ -192,25 +211,6 @@ Parameters:
192
211
 
193
212
  Returns: Nothing.
194
213
 
195
- ### resolveNextPhase
196
-
197
- ```ts
198
- resolveNextPhase(
199
- currentPhase: string,
200
- ): string
201
- ```
202
-
203
- Resolve next phase name.
204
-
205
- The phase cycle is intentionally binary so the controller can alternate
206
- between growth and simplification without inventing additional intermediate
207
- moods here.
208
-
209
- Parameters:
210
- - `currentPhase` - - Current phase label.
211
-
212
- Returns: Next phase label.
213
-
214
214
  ## neat/adaptive/complexity/adaptive.complexity.utils.ts
215
215
 
216
216
  Schedule helpers for adaptive complexity budgets.
@@ -227,27 +227,62 @@ The schedule pipeline is intentionally compact:
227
227
  3. resolve adaptive or linear budget updates,
228
228
  4. clamp the result back onto controller state.
229
229
 
230
- ### applyComplexityBudgetSchedule
230
+ ### adjustConnectionBudget
231
231
 
232
232
  ```ts
233
- applyComplexityBudgetSchedule(
233
+ adjustConnectionBudget(
234
234
  engine: NeatLikeWithAdaptive,
235
235
  config: { enabled?: boolean | undefined; mode?: string | undefined; improvementWindow?: number | undefined; increaseFactor?: number | undefined; stagnationFactor?: number | undefined; maxNodesStart?: number | undefined; maxNodesEnd?: number | undefined; minNodes?: number | undefined; maxConnsStart?: number | undefined; maxConnsEnd?: number | undefined; horizon?: number | undefined; },
236
+ trends: { improvement: number; slope: number; },
237
+ factors: { increaseFactor: number; stagnationFactor: number; },
238
+ noveltyFactor: number,
239
+ history: number[],
236
240
  ): void
237
241
  ```
238
242
 
239
- Apply the complexity budget schedule for the configured mode.
243
+ Adjust connection budget based on trends and factors.
240
244
 
241
- This is the main dispatcher for the complexity subtree. It keeps the public
242
- entrypoint easy to scan by delegating immediately into either the adaptive
243
- schedule or the linear schedule, depending on the configured policy.
245
+ Connection-budget adjustment mirrors the node-budget path so both structural
246
+ ceilings respond coherently to the same improvement and stagnation signals.
244
247
 
245
248
  Parameters:
246
249
  - `engine` - - NEAT engine instance.
247
250
  - `config` - - Complexity budget configuration.
251
+ - `trends` - - Improvement and slope metrics.
252
+ - `factors` - - Adjustment factors.
253
+ - `noveltyFactor` - - Novelty multiplier.
254
+ - `history` - - Rolling history for window checks.
248
255
 
249
256
  Returns: Nothing.
250
257
 
258
+ ### adjustNodeBudget
259
+
260
+ ```ts
261
+ adjustNodeBudget(
262
+ engine: NeatLikeWithAdaptive,
263
+ config: { enabled?: boolean | undefined; mode?: string | undefined; improvementWindow?: number | undefined; increaseFactor?: number | undefined; stagnationFactor?: number | undefined; maxNodesStart?: number | undefined; maxNodesEnd?: number | undefined; minNodes?: number | undefined; maxConnsStart?: number | undefined; maxConnsEnd?: number | undefined; horizon?: number | undefined; },
264
+ trends: { improvement: number; slope: number; },
265
+ factors: { increaseFactor: number; stagnationFactor: number; },
266
+ noveltyFactor: number,
267
+ history: number[],
268
+ ): void
269
+ ```
270
+
271
+ Adjust node budget based on trends and factors.
272
+
273
+ Node-budget adjustment is where the adaptive policy becomes concrete. When
274
+ improvement or positive slope is present, the helper expands the budget up to
275
+ the configured ceiling; when the observation window is full and the search is
276
+ flat, it contracts back toward the configured minimum.
277
+
278
+ Parameters:
279
+ - `engine` - - NEAT engine instance.
280
+ - `config` - - Complexity budget configuration.
281
+ - `trends` - - Improvement and slope metrics.
282
+ - `factors` - - Adjustment factors.
283
+ - `noveltyFactor` - - Novelty multiplier.
284
+ - `history` - - Rolling history for window checks.
285
+
251
286
  ### applyAdaptiveSchedule
252
287
 
253
288
  ```ts
@@ -270,20 +305,20 @@ Parameters:
270
305
 
271
306
  Returns: Nothing.
272
307
 
273
- ### applyLinearSchedule
308
+ ### applyComplexityBudgetSchedule
274
309
 
275
310
  ```ts
276
- applyLinearSchedule(
311
+ applyComplexityBudgetSchedule(
277
312
  engine: NeatLikeWithAdaptive,
278
313
  config: { enabled?: boolean | undefined; mode?: string | undefined; improvementWindow?: number | undefined; increaseFactor?: number | undefined; stagnationFactor?: number | undefined; maxNodesStart?: number | undefined; maxNodesEnd?: number | undefined; minNodes?: number | undefined; maxConnsStart?: number | undefined; maxConnsEnd?: number | undefined; horizon?: number | undefined; },
279
314
  ): void
280
315
  ```
281
316
 
282
- Apply linear complexity budget scheduling.
317
+ Apply the complexity budget schedule for the configured mode.
283
318
 
284
- The linear schedule is the deterministic counterpart to the adaptive mode.
285
- It ignores run-time improvement signals and simply interpolates between a
286
- start and end budget across a configured horizon.
319
+ This is the main dispatcher for the complexity subtree. It keeps the public
320
+ entrypoint easy to scan by delegating immediately into either the adaptive
321
+ schedule or the linear schedule, depending on the configured policy.
287
322
 
288
323
  Parameters:
289
324
  - `engine` - - NEAT engine instance.
@@ -291,62 +326,46 @@ Parameters:
291
326
 
292
327
  Returns: Nothing.
293
328
 
294
- ### updateScoreHistory
329
+ ### applyLinearSchedule
295
330
 
296
331
  ```ts
297
- updateScoreHistory(
332
+ applyLinearSchedule(
298
333
  engine: NeatLikeWithAdaptive,
299
334
  config: { enabled?: boolean | undefined; mode?: string | undefined; improvementWindow?: number | undefined; increaseFactor?: number | undefined; stagnationFactor?: number | undefined; maxNodesStart?: number | undefined; maxNodesEnd?: number | undefined; minNodes?: number | undefined; maxConnsStart?: number | undefined; maxConnsEnd?: number | undefined; horizon?: number | undefined; },
300
- ): number[]
335
+ ): void
301
336
  ```
302
337
 
303
- Update rolling score history with current best score.
338
+ Apply linear complexity budget scheduling.
304
339
 
305
- Score history is the minimum evidence the adaptive scheduler needs in order
306
- to talk about improvement or stagnation. The helper keeps that history bounded
307
- to the configured window so later slope and delta calculations stay local to
308
- recent generations.
340
+ The linear schedule is the deterministic counterpart to the adaptive mode.
341
+ It ignores run-time improvement signals and simply interpolates between a
342
+ start and end budget across a configured horizon.
309
343
 
310
344
  Parameters:
311
345
  - `engine` - - NEAT engine instance.
312
346
  - `config` - - Complexity budget configuration.
313
347
 
314
- Returns: Rolling history array after update.
348
+ Returns: Nothing.
315
349
 
316
- ### computeTrends
350
+ ### clampNodeBudget
317
351
 
318
352
  ```ts
319
- computeTrends(
320
- history: number[],
321
- ): { improvement: number; slope: number; }
353
+ clampNodeBudget(
354
+ engine: NeatLikeWithAdaptive,
355
+ config: { enabled?: boolean | undefined; mode?: string | undefined; improvementWindow?: number | undefined; increaseFactor?: number | undefined; stagnationFactor?: number | undefined; maxNodesStart?: number | undefined; maxNodesEnd?: number | undefined; minNodes?: number | undefined; maxConnsStart?: number | undefined; maxConnsEnd?: number | undefined; horizon?: number | undefined; },
356
+ ): void
322
357
  ```
323
358
 
324
- Compute improvement and slope trends from score history.
325
-
326
- Improvement answers whether the window ended above where it started; slope
327
- answers how strongly the trajectory points upward or downward across the
328
- window as a whole. The adaptive scheduler uses both so it can distinguish a
329
- noisy plateau from sustained progress.
330
-
331
- Parameters:
332
- - `history` - - Rolling history of best scores.
333
-
334
- Returns: Trend metrics (improvement and slope).
335
-
336
- ### computeSlope
337
-
338
- ```ts
339
- computeSlope(
340
- history: number[],
341
- ): number
342
- ```
359
+ Clamp node budget to configured minimum.
343
360
 
344
- Compute linear regression slope using ordinary least squares.
361
+ This final guard keeps the adaptive loop from shrinking below the smallest
362
+ topology the controller can reasonably support.
345
363
 
346
364
  Parameters:
347
- - `history` - - Rolling history of best scores.
365
+ - `engine` - - NEAT engine instance.
366
+ - `config` - - Complexity budget configuration.
348
367
 
349
- Returns: OLS slope estimate.
368
+ Returns: Nothing.
350
369
 
351
370
  ### computeAdjustmentFactors
352
371
 
@@ -371,23 +390,6 @@ Parameters:
371
390
 
372
391
  Returns: Adjustment factors (increase and stagnation multipliers).
373
392
 
374
- ### normalizeSlope
375
-
376
- ```ts
377
- normalizeSlope(
378
- slope: number,
379
- initialScore: number,
380
- ): number
381
- ```
382
-
383
- Normalize slope magnitude relative to initial score.
384
-
385
- Parameters:
386
- - `slope` - - Raw OLS slope.
387
- - `initialScore` - - First score in history window.
388
-
389
- Returns: Normalized slope clamped to [-2, 2].
390
-
391
393
  ### computeNoveltyFactor
392
394
 
393
395
  ```ts
@@ -407,62 +409,54 @@ Parameters:
407
409
 
408
410
  Returns: Novelty multiplier (0.9 if archive small, 1.0 otherwise).
409
411
 
410
- ### initializeNodeBudget
412
+ ### computeSlope
411
413
 
412
414
  ```ts
413
- initializeNodeBudget(
414
- engine: NeatLikeWithAdaptive,
415
- config: { enabled?: boolean | undefined; mode?: string | undefined; improvementWindow?: number | undefined; increaseFactor?: number | undefined; stagnationFactor?: number | undefined; maxNodesStart?: number | undefined; maxNodesEnd?: number | undefined; minNodes?: number | undefined; maxConnsStart?: number | undefined; maxConnsEnd?: number | undefined; horizon?: number | undefined; },
416
- ): void
415
+ computeSlope(
416
+ history: number[],
417
+ ): number
417
418
  ```
418
419
 
419
- Initialize node budget if undefined.
420
+ Compute linear regression slope using ordinary least squares.
420
421
 
421
422
  Parameters:
422
- - `engine` - - NEAT engine instance.
423
- - `config` - - Complexity budget configuration.
423
+ - `history` - - Rolling history of best scores.
424
424
 
425
- ### adjustNodeBudget
425
+ Returns: OLS slope estimate.
426
+
427
+ ### computeTrends
426
428
 
427
429
  ```ts
428
- adjustNodeBudget(
429
- engine: NeatLikeWithAdaptive,
430
- config: { enabled?: boolean | undefined; mode?: string | undefined; improvementWindow?: number | undefined; increaseFactor?: number | undefined; stagnationFactor?: number | undefined; maxNodesStart?: number | undefined; maxNodesEnd?: number | undefined; minNodes?: number | undefined; maxConnsStart?: number | undefined; maxConnsEnd?: number | undefined; horizon?: number | undefined; },
431
- trends: { improvement: number; slope: number; },
432
- factors: { increaseFactor: number; stagnationFactor: number; },
433
- noveltyFactor: number,
430
+ computeTrends(
434
431
  history: number[],
435
- ): void
432
+ ): { improvement: number; slope: number; }
436
433
  ```
437
434
 
438
- Adjust node budget based on trends and factors.
435
+ Compute improvement and slope trends from score history.
439
436
 
440
- Node-budget adjustment is where the adaptive policy becomes concrete. When
441
- improvement or positive slope is present, the helper expands the budget up to
442
- the configured ceiling; when the observation window is full and the search is
443
- flat, it contracts back toward the configured minimum.
437
+ Improvement answers whether the window ended above where it started; slope
438
+ answers how strongly the trajectory points upward or downward across the
439
+ window as a whole. The adaptive scheduler uses both so it can distinguish a
440
+ noisy plateau from sustained progress.
444
441
 
445
442
  Parameters:
446
- - `engine` - - NEAT engine instance.
447
- - `config` - - Complexity budget configuration.
448
- - `trends` - - Improvement and slope metrics.
449
- - `factors` - - Adjustment factors.
450
- - `noveltyFactor` - - Novelty multiplier.
451
- - `history` - - Rolling history for window checks.
443
+ - `history` - - Rolling history of best scores.
452
444
 
453
- ### clampNodeBudget
445
+ Returns: Trend metrics (improvement and slope).
446
+
447
+ ### initializeConnectionBudget
454
448
 
455
449
  ```ts
456
- clampNodeBudget(
450
+ initializeConnectionBudget(
457
451
  engine: NeatLikeWithAdaptive,
458
452
  config: { enabled?: boolean | undefined; mode?: string | undefined; improvementWindow?: number | undefined; increaseFactor?: number | undefined; stagnationFactor?: number | undefined; maxNodesStart?: number | undefined; maxNodesEnd?: number | undefined; minNodes?: number | undefined; maxConnsStart?: number | undefined; maxConnsEnd?: number | undefined; horizon?: number | undefined; },
459
453
  ): void
460
454
  ```
461
455
 
462
- Clamp node budget to configured minimum.
456
+ Initialize connection budget if undefined.
463
457
 
464
- This final guard keeps the adaptive loop from shrinking below the smallest
465
- topology the controller can reasonably support.
458
+ Connection budgets are optional, so the helper only seeds this state when the
459
+ configuration explicitly opts into a connection-cap schedule.
466
460
 
467
461
  Parameters:
468
462
  - `engine` - - NEAT engine instance.
@@ -470,50 +464,56 @@ Parameters:
470
464
 
471
465
  Returns: Nothing.
472
466
 
473
- ### initializeConnectionBudget
467
+ ### initializeNodeBudget
474
468
 
475
469
  ```ts
476
- initializeConnectionBudget(
470
+ initializeNodeBudget(
477
471
  engine: NeatLikeWithAdaptive,
478
472
  config: { enabled?: boolean | undefined; mode?: string | undefined; improvementWindow?: number | undefined; increaseFactor?: number | undefined; stagnationFactor?: number | undefined; maxNodesStart?: number | undefined; maxNodesEnd?: number | undefined; minNodes?: number | undefined; maxConnsStart?: number | undefined; maxConnsEnd?: number | undefined; horizon?: number | undefined; },
479
473
  ): void
480
474
  ```
481
475
 
482
- Initialize connection budget if undefined.
483
-
484
- Connection budgets are optional, so the helper only seeds this state when the
485
- configuration explicitly opts into a connection-cap schedule.
476
+ Initialize node budget if undefined.
486
477
 
487
478
  Parameters:
488
479
  - `engine` - - NEAT engine instance.
489
480
  - `config` - - Complexity budget configuration.
490
481
 
491
- Returns: Nothing.
482
+ ### normalizeSlope
492
483
 
493
- ### adjustConnectionBudget
484
+ ```ts
485
+ normalizeSlope(
486
+ slope: number,
487
+ initialScore: number,
488
+ ): number
489
+ ```
490
+
491
+ Normalize slope magnitude relative to initial score.
492
+
493
+ Parameters:
494
+ - `slope` - - Raw OLS slope.
495
+ - `initialScore` - - First score in history window.
496
+
497
+ Returns: Normalized slope clamped to [-2, 2].
498
+
499
+ ### updateScoreHistory
494
500
 
495
501
  ```ts
496
- adjustConnectionBudget(
502
+ updateScoreHistory(
497
503
  engine: NeatLikeWithAdaptive,
498
504
  config: { enabled?: boolean | undefined; mode?: string | undefined; improvementWindow?: number | undefined; increaseFactor?: number | undefined; stagnationFactor?: number | undefined; maxNodesStart?: number | undefined; maxNodesEnd?: number | undefined; minNodes?: number | undefined; maxConnsStart?: number | undefined; maxConnsEnd?: number | undefined; horizon?: number | undefined; },
499
- trends: { improvement: number; slope: number; },
500
- factors: { increaseFactor: number; stagnationFactor: number; },
501
- noveltyFactor: number,
502
- history: number[],
503
- ): void
505
+ ): number[]
504
506
  ```
505
507
 
506
- Adjust connection budget based on trends and factors.
508
+ Update rolling score history with current best score.
507
509
 
508
- Connection-budget adjustment mirrors the node-budget path so both structural
509
- ceilings respond coherently to the same improvement and stagnation signals.
510
+ Score history is the minimum evidence the adaptive scheduler needs in order
511
+ to talk about improvement or stagnation. The helper keeps that history bounded
512
+ to the configured window so later slope and delta calculations stay local to
513
+ recent generations.
510
514
 
511
515
  Parameters:
512
516
  - `engine` - - NEAT engine instance.
513
517
  - `config` - - Complexity budget configuration.
514
- - `trends` - - Improvement and slope metrics.
515
- - `factors` - - Adjustment factors.
516
- - `noveltyFactor` - - Novelty multiplier.
517
- - `history` - - Rolling history for window checks.
518
518
 
519
- Returns: Nothing.
519
+ Returns: Rolling history array after update.