@reicek/neataptic-ts 0.1.24 → 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 (215) 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/.github/workflows/ci.yml +3 -3
  8. package/.github/workflows/deploy-pages.yml +6 -6
  9. package/.github/workflows/manual_release_pipeline.yml +3 -3
  10. package/.github/workflows/publish.yml +18 -19
  11. package/.github/workflows/release_dispatch.yml +3 -3
  12. package/package.json +26 -20
  13. package/plans/Flappy_Bird_Folder_Documentation_Pass.md +4 -4
  14. package/plans/README.md +24 -0
  15. package/plans/Roadmap.md +62 -40
  16. package/plans/analyze-trace-solid-split.plans.md +66 -0
  17. package/plans/architecture-solid-split.plans.md +9 -15
  18. package/plans/asciiMaze-typescript-repair.plans.md +1 -1
  19. package/plans/generate-docs-solid-split.plans.md +87 -0
  20. package/plans/methods-docs.plans.md +25 -1
  21. package/plans/methods-solid-split.plans.md +14 -14
  22. package/plans/neat-docs.plans.md +9 -1
  23. package/plans/neat-test-surface-repair.plans.md +1 -1
  24. package/plans/render-docs-html-solid-split.plans.md +68 -0
  25. package/plans/src-no-explicit-any-cleanup.plans.md +1 -1
  26. package/plans/utils-docs.plans.md +6 -1
  27. package/scripts/analyze-trace/analyze-trace.analysis.ts +479 -0
  28. package/scripts/analyze-trace/analyze-trace.constants.ts +35 -0
  29. package/scripts/analyze-trace/analyze-trace.io.ts +69 -0
  30. package/scripts/analyze-trace/analyze-trace.report.ts +100 -0
  31. package/scripts/analyze-trace/analyze-trace.shared.ts +116 -0
  32. package/scripts/analyze-trace/analyze-trace.ts +45 -0
  33. package/scripts/analyze-trace/analyze-trace.types.ts +72 -0
  34. package/scripts/assets/theme.css +80 -23
  35. package/scripts/copy-examples.ts +239 -0
  36. package/scripts/export-onnx.ts +223 -0
  37. package/scripts/generate-bench-tables.ts +378 -37
  38. package/scripts/generate-docs/generate-docs.constants.ts +107 -0
  39. package/scripts/generate-docs/generate-docs.order.ts +355 -0
  40. package/scripts/generate-docs/generate-docs.state.ts +31 -0
  41. package/scripts/generate-docs/generate-docs.targets.ts +165 -0
  42. package/scripts/generate-docs/generate-docs.ts +63 -0
  43. package/scripts/generate-docs/generate-docs.types.ts +112 -0
  44. package/scripts/generate-docs/output/generate-docs.output.folder-index.utils.ts +167 -0
  45. package/scripts/generate-docs/output/generate-docs.output.ordering.utils.ts +353 -0
  46. package/scripts/generate-docs/output/generate-docs.output.readme.utils.ts +420 -0
  47. package/scripts/generate-docs/output/generate-docs.output.ts +123 -0
  48. package/scripts/generate-docs/output/generate-docs.output.warnings.utils.ts +219 -0
  49. package/scripts/generate-docs/symbols/generate-docs.symbols.collection.utils.ts +365 -0
  50. package/scripts/generate-docs/symbols/generate-docs.symbols.jsdoc.utils.ts +373 -0
  51. package/scripts/generate-docs/symbols/generate-docs.symbols.normalize.utils.ts +155 -0
  52. package/scripts/generate-docs/symbols/generate-docs.symbols.render.utils.ts +149 -0
  53. package/scripts/generate-docs/symbols/generate-docs.symbols.signature.utils.ts +289 -0
  54. package/scripts/generate-docs/symbols/generate-docs.symbols.ts +11 -0
  55. package/scripts/mermaid-cli.mjs +102 -22
  56. package/scripts/mermaid-cli.ts +736 -0
  57. package/scripts/render-docs-html/render-docs-html.assets.ts +54 -0
  58. package/scripts/render-docs-html/render-docs-html.mermaid.ts +245 -0
  59. package/scripts/{render-docs-html.sidebar.ts → render-docs-html/render-docs-html.navigation.ts} +141 -144
  60. package/scripts/render-docs-html/render-docs-html.pages.ts +333 -0
  61. package/scripts/render-docs-html/render-docs-html.shared.ts +333 -0
  62. package/scripts/render-docs-html/render-docs-html.types.ts +42 -0
  63. package/scripts/render-docs-html.ts +23 -587
  64. package/scripts/run-docs.ts +238 -0
  65. package/scripts/write-dist-docs-pkg.ts +40 -0
  66. package/src/README.md +75 -75
  67. package/src/architecture/connection/README.md +5 -5
  68. package/src/architecture/layer/README.md +508 -508
  69. package/src/architecture/network/README.md +1458 -1458
  70. package/src/architecture/network/activate/README.md +694 -694
  71. package/src/architecture/network/bootstrap/README.md +77 -77
  72. package/src/architecture/network/connect/README.md +74 -74
  73. package/src/architecture/network/deterministic/README.md +135 -135
  74. package/src/architecture/network/evolve/README.md +364 -364
  75. package/src/architecture/network/gating/README.md +130 -130
  76. package/src/architecture/network/genetic/README.md +399 -399
  77. package/src/architecture/network/mutate/README.md +897 -897
  78. package/src/architecture/network/onnx/README.md +720 -720
  79. package/src/architecture/network/onnx/export/README.md +728 -728
  80. package/src/architecture/network/onnx/export/layers/README.md +450 -450
  81. package/src/architecture/network/onnx/import/README.md +618 -618
  82. package/src/architecture/network/onnx/schema/README.md +32 -32
  83. package/src/architecture/network/prune/README.md +245 -245
  84. package/src/architecture/network/remove/README.md +135 -135
  85. package/src/architecture/network/runtime/README.md +106 -106
  86. package/src/architecture/network/serialize/README.md +542 -542
  87. package/src/architecture/network/slab/README.md +608 -608
  88. package/src/architecture/network/standalone/README.md +212 -212
  89. package/src/architecture/network/stats/README.md +84 -84
  90. package/src/architecture/network/topology/README.md +465 -465
  91. package/src/architecture/network/training/README.md +200 -200
  92. package/src/architecture/node/README.md +5 -5
  93. package/src/architecture/nodePool/README.md +14 -14
  94. package/src/methods/README.md +99 -99
  95. package/src/methods/activation/README.md +189 -189
  96. package/src/methods/cost/README.md +131 -131
  97. package/src/methods/rate/README.md +86 -86
  98. package/src/multithreading/README.md +77 -77
  99. package/src/multithreading/workers/browser/README.md +8 -8
  100. package/src/multithreading/workers/node/README.md +8 -8
  101. package/src/neat/README.md +148 -148
  102. package/src/neat/adaptive/README.md +120 -120
  103. package/src/neat/adaptive/acceptance/README.md +40 -40
  104. package/src/neat/adaptive/complexity/README.md +137 -137
  105. package/src/neat/adaptive/core/README.md +197 -197
  106. package/src/neat/adaptive/lineage/README.md +90 -90
  107. package/src/neat/adaptive/mutation/README.md +284 -284
  108. package/src/neat/compat/README.md +43 -43
  109. package/src/neat/compat/core/README.md +90 -90
  110. package/src/neat/diversity/README.md +35 -35
  111. package/src/neat/diversity/core/README.md +88 -88
  112. package/src/neat/evaluate/README.md +85 -85
  113. package/src/neat/evaluate/auto-distance/README.md +75 -75
  114. package/src/neat/evaluate/entropy-compat/README.md +37 -37
  115. package/src/neat/evaluate/entropy-sharing/README.md +43 -43
  116. package/src/neat/evaluate/fitness/README.md +23 -23
  117. package/src/neat/evaluate/novelty/README.md +120 -120
  118. package/src/neat/evaluate/objectives/README.md +17 -17
  119. package/src/neat/evaluate/shared/README.md +94 -94
  120. package/src/neat/evolve/README.md +96 -96
  121. package/src/neat/evolve/adaptive/README.md +60 -60
  122. package/src/neat/evolve/objectives/README.md +63 -63
  123. package/src/neat/evolve/offspring/README.md +56 -56
  124. package/src/neat/evolve/population/README.md +171 -171
  125. package/src/neat/evolve/runtime/README.md +79 -79
  126. package/src/neat/evolve/speciation/README.md +74 -74
  127. package/src/neat/evolve/warnings/README.md +10 -10
  128. package/src/neat/export/README.md +114 -114
  129. package/src/neat/helpers/README.md +50 -50
  130. package/src/neat/init/README.md +9 -9
  131. package/src/neat/lineage/core/README.md +101 -101
  132. package/src/neat/multiobjective/category/README.md +74 -74
  133. package/src/neat/multiobjective/crowding/README.md +272 -272
  134. package/src/neat/multiobjective/dominance/README.md +171 -171
  135. package/src/neat/multiobjective/fronts/README.md +68 -68
  136. package/src/neat/multiobjective/metrics/README.md +43 -43
  137. package/src/neat/multiobjective/objectives/README.md +31 -31
  138. package/src/neat/multiobjective/shared/README.md +27 -27
  139. package/src/neat/mutation/README.md +97 -97
  140. package/src/neat/mutation/add-conn/README.md +115 -115
  141. package/src/neat/mutation/add-node/README.md +126 -126
  142. package/src/neat/mutation/flow/README.md +149 -149
  143. package/src/neat/mutation/repair/README.md +185 -185
  144. package/src/neat/mutation/select/README.md +117 -117
  145. package/src/neat/mutation/shared/README.md +32 -32
  146. package/src/neat/objectives/README.md +25 -25
  147. package/src/neat/objectives/core/README.md +67 -67
  148. package/src/neat/pruning/README.md +40 -40
  149. package/src/neat/pruning/core/README.md +171 -171
  150. package/src/neat/pruning/facade/README.md +32 -32
  151. package/src/neat/rng/README.md +104 -104
  152. package/src/neat/rng/core/README.md +137 -137
  153. package/src/neat/rng/facade/README.md +50 -50
  154. package/src/neat/selection/README.md +111 -111
  155. package/src/neat/selection/core/README.md +227 -227
  156. package/src/neat/selection/facade/README.md +61 -61
  157. package/src/neat/shared/README.md +163 -163
  158. package/src/neat/speciation/README.md +31 -31
  159. package/src/neat/speciation/threshold/README.md +35 -35
  160. package/src/neat/species/README.md +25 -25
  161. package/src/neat/species/core/README.md +20 -20
  162. package/src/neat/species/core/shared/README.md +18 -18
  163. package/src/neat/species/history/context/README.md +22 -22
  164. package/src/neat/telemetry/accessors/README.md +58 -58
  165. package/src/neat/telemetry/exports/README.md +233 -233
  166. package/src/neat/telemetry/facade/README.md +252 -252
  167. package/src/neat/telemetry/facade/archive/README.md +57 -57
  168. package/src/neat/telemetry/facade/buffer/README.md +43 -43
  169. package/src/neat/telemetry/facade/lineage/README.md +12 -12
  170. package/src/neat/telemetry/facade/objectives/README.md +44 -44
  171. package/src/neat/telemetry/facade/runtime/README.md +26 -26
  172. package/src/neat/telemetry/facade/species/README.md +27 -27
  173. package/src/neat/telemetry/metrics/README.md +696 -696
  174. package/src/neat/telemetry/recorder/README.md +57 -57
  175. package/src/neat/telemetry/types/README.md +32 -32
  176. package/src/neat/topology-intent/README.md +75 -75
  177. package/src/utils/README.md +193 -193
  178. package/test/examples/asciiMaze/browser-entry/README.md +92 -92
  179. package/test/examples/asciiMaze/dashboardManager/README.md +109 -109
  180. package/test/examples/asciiMaze/dashboardManager/telemetry/README.md +28 -28
  181. package/test/examples/asciiMaze/evolutionEngine/README.md +1527 -1527
  182. package/test/examples/asciiMaze/mazeMovement/README.md +105 -105
  183. package/test/examples/asciiMaze/mazeMovement/finalization/README.md +16 -16
  184. package/test/examples/asciiMaze/mazeMovement/policy/README.md +57 -57
  185. package/test/examples/asciiMaze/mazeMovement/runtime/README.md +52 -52
  186. package/test/examples/asciiMaze/mazeMovement/shaping/README.md +46 -46
  187. package/test/examples/flappy_bird/browser-entry/README.md +508 -508
  188. package/test/examples/flappy_bird/browser-entry/host/README.md +101 -101
  189. package/test/examples/flappy_bird/browser-entry/host/resize/README.md +144 -144
  190. package/test/examples/flappy_bird/browser-entry/network-view/README.md +194 -194
  191. package/test/examples/flappy_bird/browser-entry/playback/README.md +278 -278
  192. package/test/examples/flappy_bird/browser-entry/playback/background/README.md +129 -129
  193. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/README.md +502 -502
  194. package/test/examples/flappy_bird/browser-entry/playback/frame-render/README.md +139 -139
  195. package/test/examples/flappy_bird/browser-entry/playback/snapshot/README.md +10 -10
  196. package/test/examples/flappy_bird/browser-entry/playback/trail/README.md +43 -43
  197. package/test/examples/flappy_bird/browser-entry/playback/worker-channel/README.md +30 -30
  198. package/test/examples/flappy_bird/browser-entry/runtime/README.md +59 -59
  199. package/test/examples/flappy_bird/browser-entry/visualization/README.md +276 -276
  200. package/test/examples/flappy_bird/browser-entry/worker-channel/README.md +16 -16
  201. package/test/examples/flappy_bird/constants/README.md +1070 -1070
  202. package/test/examples/flappy_bird/environment/README.md +22 -22
  203. package/test/examples/flappy_bird/evaluation/README.md +32 -32
  204. package/test/examples/flappy_bird/evaluation/rollout/README.md +141 -141
  205. package/test/examples/flappy_bird/flappy-evolution-worker/README.md +425 -425
  206. package/test/examples/flappy_bird/simulation-shared/README.md +170 -170
  207. package/test/examples/flappy_bird/simulation-shared/observation/README.md +109 -109
  208. package/test/examples/flappy_bird/trainer/README.md +325 -325
  209. package/test/examples/flappy_bird/trainer/evaluation/README.md +74 -74
  210. package/scripts/analyze-trace.ts +0 -590
  211. package/scripts/copy-examples.mjs +0 -114
  212. package/scripts/export-onnx.mjs +0 -86
  213. package/scripts/generate-bench-tables.mjs +0 -182
  214. package/scripts/generate-docs.ts +0 -2900
  215. package/scripts/write-dist-docs-pkg.mjs +0 -16
@@ -18,36 +18,37 @@ this boundary exists at all.
18
18
 
19
19
  ## simulation-shared/observation/observation.ts
20
20
 
21
- ### resolveUpcomingPipes
21
+ ### resolveCoreObservationVectorFromFeatures
22
22
 
23
23
  ```ts
24
- resolveUpcomingPipes(
25
- pipes: SharedPipeLike[],
26
- birdCenterXPx: number,
27
- birdRadiusPx: number,
28
- pipeWidthPx: number,
29
- ): [SharedPipeLike | undefined, SharedPipeLike | undefined]
24
+ resolveCoreObservationVectorFromFeatures(
25
+ features: SharedObservationFeatures,
26
+ ): number[]
30
27
  ```
31
28
 
32
- Resolves the next two upcoming pipes in front of the bird.
29
+ Resolves the compact core vector used for temporal stacking.
33
30
 
34
- The observation pipeline only cares about the immediate near future, because
35
- Flappy Bird decisions are dominated by the next gap and the transition after
36
- it. Looking further ahead adds noise faster than it adds useful control
37
- signal.
31
+ The core intentionally keeps directly observed kinematic and geometric
32
+ channels while dropping derived one-step predictors that become redundant
33
+ once short-term temporal memory is available.
34
+
35
+ This is the representation used when the example wants a short history of raw
36
+ observation slices. The idea is similar to frame stacking in reinforcement
37
+ learning: a feed-forward policy can recover some sense of motion by looking
38
+ at several recent compact frames at once.
39
+
40
+ The Wikipedia article on "frame stacking" is a useful conceptual reference.
38
41
 
39
42
  Parameters:
40
- - `pipes` - - Current pipe list.
41
- - `birdCenterXPx` - - Bird center x-position.
42
- - `birdRadiusPx` - - Bird radius.
43
- - `pipeWidthPx` - - Pipe width.
43
+ - `features` - - Structured observation features.
44
44
 
45
- Returns: Tuple of first and second upcoming pipes.
45
+ Returns: Core per-frame vector.
46
46
 
47
47
  Example:
48
48
 
49
49
  ```ts
50
- const [nextPipe, secondPipe] = resolveUpcomingPipes(pipes);
50
+ const coreFrame = resolveCoreObservationVectorFromFeatures(features);
51
+ observationMemoryState.previousCoreFrames.push(coreFrame);
51
52
  ```
52
53
 
53
54
  ### resolveObservationFeatures
@@ -132,41 +133,6 @@ const features = resolveObservationFeatures(input);
132
133
  const networkInput = resolveObservationVectorFromFeatures(features);
133
134
  ```
134
135
 
135
- ### resolveCoreObservationVectorFromFeatures
136
-
137
- ```ts
138
- resolveCoreObservationVectorFromFeatures(
139
- features: SharedObservationFeatures,
140
- ): number[]
141
- ```
142
-
143
- Resolves the compact core vector used for temporal stacking.
144
-
145
- The core intentionally keeps directly observed kinematic and geometric
146
- channels while dropping derived one-step predictors that become redundant
147
- once short-term temporal memory is available.
148
-
149
- This is the representation used when the example wants a short history of raw
150
- observation slices. The idea is similar to frame stacking in reinforcement
151
- learning: a feed-forward policy can recover some sense of motion by looking
152
- at several recent compact frames at once.
153
-
154
- The Wikipedia article on "frame stacking" is a useful conceptual reference.
155
-
156
- Parameters:
157
- - `features` - - Structured observation features.
158
-
159
- Returns: Core per-frame vector.
160
-
161
- Example:
162
-
163
- ```ts
164
- const coreFrame = resolveCoreObservationVectorFromFeatures(features);
165
- observationMemoryState.previousCoreFrames.push(coreFrame);
166
- ```
167
-
168
- ## simulation-shared/observation/observation.features.utils.ts
169
-
170
136
  ### resolveUpcomingPipes
171
137
 
172
138
  ```ts
@@ -199,6 +165,48 @@ Example:
199
165
  const [nextPipe, secondPipe] = resolveUpcomingPipes(pipes);
200
166
  ```
201
167
 
168
+ ## simulation-shared/observation/observation.features.utils.ts
169
+
170
+ ### clamp
171
+
172
+ ```ts
173
+ clamp(
174
+ value: number,
175
+ min: number,
176
+ max: number,
177
+ ): number
178
+ ```
179
+
180
+ Clamps a numeric value to the inclusive [min, max] interval.
181
+
182
+ Observation synthesis normalizes many raw measurements, so this helper keeps
183
+ derived channels inside their documented ranges.
184
+
185
+ Parameters:
186
+ - `value` - - Candidate value.
187
+ - `min` - - Inclusive lower bound.
188
+ - `max` - - Inclusive upper bound.
189
+
190
+ Returns: Clamped value.
191
+
192
+ ### clamp01
193
+
194
+ ```ts
195
+ clamp01(
196
+ value: number,
197
+ ): number
198
+ ```
199
+
200
+ Clamps a numeric value to the inclusive [0, 1] interval.
201
+
202
+ This is used for channels that are naturally interpreted as normalized
203
+ proportions or bounded progress values.
204
+
205
+ Parameters:
206
+ - `value` - - Candidate value.
207
+
208
+ Returns: Value clamped between 0 and 1.
209
+
202
210
  ### resolveObservationFeatures
203
211
 
204
212
  ```ts
@@ -274,47 +282,72 @@ Parameters:
274
282
 
275
283
  Returns: Predicted y-position.
276
284
 
277
- ### clamp
285
+ ### resolveUpcomingPipes
278
286
 
279
287
  ```ts
280
- clamp(
281
- value: number,
282
- min: number,
283
- max: number,
284
- ): number
288
+ resolveUpcomingPipes(
289
+ pipes: SharedPipeLike[],
290
+ birdCenterXPx: number,
291
+ birdRadiusPx: number,
292
+ pipeWidthPx: number,
293
+ ): [SharedPipeLike | undefined, SharedPipeLike | undefined]
285
294
  ```
286
295
 
287
- Clamps a numeric value to the inclusive [min, max] interval.
296
+ Resolves the next two upcoming pipes in front of the bird.
288
297
 
289
- Observation synthesis normalizes many raw measurements, so this helper keeps
290
- derived channels inside their documented ranges.
298
+ The observation pipeline only cares about the immediate near future, because
299
+ Flappy Bird decisions are dominated by the next gap and the transition after
300
+ it. Looking further ahead adds noise faster than it adds useful control
301
+ signal.
291
302
 
292
303
  Parameters:
293
- - `value` - - Candidate value.
294
- - `min` - - Inclusive lower bound.
295
- - `max` - - Inclusive upper bound.
304
+ - `pipes` - - Current pipe list.
305
+ - `birdCenterXPx` - - Bird center x-position.
306
+ - `birdRadiusPx` - - Bird radius.
307
+ - `pipeWidthPx` - - Pipe width.
296
308
 
297
- Returns: Clamped value.
309
+ Returns: Tuple of first and second upcoming pipes.
298
310
 
299
- ### clamp01
311
+ Example:
300
312
 
301
313
  ```ts
302
- clamp01(
303
- value: number,
304
- ): number
314
+ const [nextPipe, secondPipe] = resolveUpcomingPipes(pipes);
305
315
  ```
306
316
 
307
- Clamps a numeric value to the inclusive [0, 1] interval.
317
+ ## simulation-shared/observation/observation.vector.utils.ts
308
318
 
309
- This is used for channels that are naturally interpreted as normalized
310
- proportions or bounded progress values.
319
+ ### resolveCoreObservationVectorFromFeatures
320
+
321
+ ```ts
322
+ resolveCoreObservationVectorFromFeatures(
323
+ features: SharedObservationFeatures,
324
+ ): number[]
325
+ ```
326
+
327
+ Resolves the compact core vector used for temporal stacking.
328
+
329
+ The core intentionally keeps directly observed kinematic and geometric
330
+ channels while dropping derived one-step predictors that become redundant
331
+ once short-term temporal memory is available.
332
+
333
+ This is the representation used when the example wants a short history of raw
334
+ observation slices. The idea is similar to frame stacking in reinforcement
335
+ learning: a feed-forward policy can recover some sense of motion by looking
336
+ at several recent compact frames at once.
337
+
338
+ The Wikipedia article on "frame stacking" is a useful conceptual reference.
311
339
 
312
340
  Parameters:
313
- - `value` - - Candidate value.
341
+ - `features` - - Structured observation features.
314
342
 
315
- Returns: Value clamped between 0 and 1.
343
+ Returns: Core per-frame vector.
316
344
 
317
- ## simulation-shared/observation/observation.vector.utils.ts
345
+ Example:
346
+
347
+ ```ts
348
+ const coreFrame = resolveCoreObservationVectorFromFeatures(features);
349
+ observationMemoryState.previousCoreFrames.push(coreFrame);
350
+ ```
318
351
 
319
352
  ### resolveObservationVectorFromFeatures
320
353
 
@@ -346,36 +379,3 @@ Example:
346
379
  const features = resolveObservationFeatures(input);
347
380
  const networkInput = resolveObservationVectorFromFeatures(features);
348
381
  ```
349
-
350
- ### resolveCoreObservationVectorFromFeatures
351
-
352
- ```ts
353
- resolveCoreObservationVectorFromFeatures(
354
- features: SharedObservationFeatures,
355
- ): number[]
356
- ```
357
-
358
- Resolves the compact core vector used for temporal stacking.
359
-
360
- The core intentionally keeps directly observed kinematic and geometric
361
- channels while dropping derived one-step predictors that become redundant
362
- once short-term temporal memory is available.
363
-
364
- This is the representation used when the example wants a short history of raw
365
- observation slices. The idea is similar to frame stacking in reinforcement
366
- learning: a feed-forward policy can recover some sense of motion by looking
367
- at several recent compact frames at once.
368
-
369
- The Wikipedia article on "frame stacking" is a useful conceptual reference.
370
-
371
- Parameters:
372
- - `features` - - Structured observation features.
373
-
374
- Returns: Core per-frame vector.
375
-
376
- Example:
377
-
378
- ```ts
379
- const coreFrame = resolveCoreObservationVectorFromFeatures(features);
380
- observationMemoryState.previousCoreFrames.push(coreFrame);
381
- ```