@reicek/neataptic-ts 0.1.21 → 0.1.23

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 (361) hide show
  1. package/.github/agents/boundary-mapper.agent.md +31 -0
  2. package/.github/agents/docs-scout.agent.md +29 -0
  3. package/.github/agents/plan-scout.agent.md +31 -0
  4. package/.github/agents/solid-split.agent.md +143 -0
  5. package/.github/copilot-instructions.md +119 -0
  6. package/.github/skills/solid-split-playbook/SKILL.md +220 -0
  7. package/.github/skills/solid-split-playbook/assets/docs-checklist.md +34 -0
  8. package/.github/skills/solid-split-playbook/assets/split-plan-template.md +48 -0
  9. package/.github/skills/solid-split-playbook/assets/split-workflow-checklist.md +51 -0
  10. package/.github/skills/trace-analyzer-extension/SKILL.md +63 -0
  11. package/.github/skills/trace-analyzer-extension/assets/extension-checklist.md +24 -0
  12. package/.github/skills/trace-analyzer-extension/references/analyzer-extension-workflow.md +101 -0
  13. package/.github/skills/trace-audit-reporting/SKILL.md +96 -0
  14. package/.github/skills/trace-audit-reporting/assets/performance-report-template.md +123 -0
  15. package/.github/skills/trace-audit-reporting/references/trace-analysis-workflow.md +132 -0
  16. package/package.json +7 -3
  17. package/plans/ES2023 migration +13 -8
  18. package/plans/Evolution_Training_Interoperability_Contracts.md +1 -1
  19. package/plans/Flappy_Bird_Folder_Documentation_Pass.md +53 -0
  20. package/plans/Flappy_Evolution_Worker_Documentation_Pass.md +58 -0
  21. package/plans/Interactive_Examples_and_Learning_Path.md +10 -2
  22. package/plans/Memory_Optimization.md +3 -3
  23. package/plans/README.md +63 -0
  24. package/plans/Roadmap.md +15 -3
  25. package/plans/asciiMaze_SOLID_split.done.md +130 -0
  26. package/plans/flappy_bird_SOLID_split.done.md +67 -0
  27. package/scripts/analyze-trace.ts +590 -0
  28. package/scripts/assets/theme.css +221 -34
  29. package/scripts/copy-examples.mjs +9 -5
  30. package/scripts/export-onnx.mjs +3 -3
  31. package/scripts/generate-bench-tables.mjs +10 -10
  32. package/scripts/generate-bench-tables.ts +10 -10
  33. package/scripts/generate-docs.ts +1415 -449
  34. package/scripts/render-docs-html.ts +15 -8
  35. package/src/README.md +127 -222
  36. package/src/architecture/README.md +117 -184
  37. package/src/architecture/architect.ts +6 -0
  38. package/src/architecture/layer/README.md +38 -38
  39. package/src/architecture/network/README.md +49 -31
  40. package/src/architecture/network/activate/README.md +77 -77
  41. package/src/architecture/network/connect/README.md +15 -13
  42. package/src/architecture/network/deterministic/README.md +7 -7
  43. package/src/architecture/network/evolve/README.md +44 -44
  44. package/src/architecture/network/gating/README.md +20 -20
  45. package/src/architecture/network/genetic/README.md +51 -51
  46. package/src/architecture/network/mutate/README.md +97 -97
  47. package/src/architecture/network/network.types.ts +39 -0
  48. package/src/architecture/network/onnx/README.md +264 -264
  49. package/src/architecture/network/prune/README.md +39 -39
  50. package/src/architecture/network/remove/README.md +26 -26
  51. package/src/architecture/network/serialize/README.md +56 -56
  52. package/src/architecture/network/serialize/network.serialize.json.utils.ts +1 -0
  53. package/src/architecture/network/serialize/network.serialize.utils.ts +6 -1
  54. package/src/architecture/network/serialize/network.serialize.utils.types.ts +1 -1
  55. package/src/architecture/network/slab/README.md +61 -61
  56. package/src/architecture/network/standalone/README.md +24 -24
  57. package/src/architecture/network/stats/README.md +9 -9
  58. package/src/architecture/network/topology/README.md +46 -46
  59. package/src/architecture/network/training/README.md +21 -21
  60. package/src/architecture/network.ts +114 -10
  61. package/src/methods/README.md +9 -87
  62. package/src/multithreading/README.md +8 -77
  63. package/src/multithreading/workers/README.md +2 -2
  64. package/src/multithreading/workers/browser/README.md +0 -6
  65. package/src/multithreading/workers/node/README.md +0 -3
  66. package/src/neat/README.md +623 -568
  67. package/src/neat/neat.evolve.population.utils.ts +29 -5
  68. package/src/neat/neat.helpers.ts +16 -0
  69. package/src/neat/neat.topology-intent.utils.ts +160 -0
  70. package/src/utils/README.md +18 -18
  71. package/test/examples/asciiMaze/README.md +59 -59
  72. package/test/examples/asciiMaze/asciiMaze.e2e.test.ts +14 -9
  73. package/test/examples/asciiMaze/browser-entry/README.md +196 -0
  74. package/test/examples/asciiMaze/browser-entry/browser-entry.abort.services.ts +95 -0
  75. package/test/examples/asciiMaze/browser-entry/browser-entry.constants.ts +23 -0
  76. package/test/examples/asciiMaze/browser-entry/browser-entry.curriculum.services.ts +115 -0
  77. package/test/examples/asciiMaze/browser-entry/browser-entry.globals.services.ts +106 -0
  78. package/test/examples/asciiMaze/browser-entry/browser-entry.host.services.ts +157 -0
  79. package/test/examples/asciiMaze/browser-entry/browser-entry.services.ts +14 -0
  80. package/test/examples/asciiMaze/browser-entry/browser-entry.ts +129 -0
  81. package/test/examples/asciiMaze/browser-entry/browser-entry.types.ts +120 -0
  82. package/test/examples/asciiMaze/browser-entry/browser-entry.utils.ts +98 -0
  83. package/test/examples/asciiMaze/browser-entry.ts +10 -576
  84. package/test/examples/asciiMaze/dashboardManager/README.md +276 -0
  85. package/test/examples/asciiMaze/dashboardManager/archive/README.md +16 -0
  86. package/test/examples/asciiMaze/dashboardManager/archive/dashboardManager.archive.services.ts +267 -0
  87. package/test/examples/asciiMaze/dashboardManager/dashboardManager.constants.ts +35 -0
  88. package/test/examples/asciiMaze/dashboardManager/dashboardManager.services.ts +103 -0
  89. package/test/examples/asciiMaze/dashboardManager/dashboardManager.ts +181 -0
  90. package/test/examples/asciiMaze/dashboardManager/dashboardManager.types.ts +267 -0
  91. package/test/examples/asciiMaze/dashboardManager/dashboardManager.utils.ts +254 -0
  92. package/test/examples/asciiMaze/dashboardManager/live/README.md +14 -0
  93. package/test/examples/asciiMaze/dashboardManager/live/dashboardManager.live.services.ts +264 -0
  94. package/test/examples/asciiMaze/dashboardManager/telemetry/README.md +47 -0
  95. package/test/examples/asciiMaze/dashboardManager/telemetry/dashboardManager.telemetry.services.ts +513 -0
  96. package/test/examples/asciiMaze/dashboardManager.ts +13 -2335
  97. package/test/examples/asciiMaze/evolutionEngine/README.md +1058 -0
  98. package/test/examples/asciiMaze/evolutionEngine/curriculumPhase.ts +90 -0
  99. package/test/examples/asciiMaze/evolutionEngine/engineState.constants.ts +36 -0
  100. package/test/examples/asciiMaze/evolutionEngine/engineState.ts +58 -513
  101. package/test/examples/asciiMaze/evolutionEngine/engineState.types.ts +212 -0
  102. package/test/examples/asciiMaze/evolutionEngine/engineState.utils.ts +301 -0
  103. package/test/examples/asciiMaze/evolutionEngine/evolutionEngine.types.ts +445 -0
  104. package/test/examples/asciiMaze/evolutionEngine/evolutionLoop.ts +81 -50
  105. package/test/examples/asciiMaze/evolutionEngine/optionsAndSetup.ts +2 -4
  106. package/test/examples/asciiMaze/evolutionEngine/populationDynamics.ts +17 -33
  107. package/test/examples/asciiMaze/evolutionEngine/populationPruning.ts +1 -1
  108. package/test/examples/asciiMaze/evolutionEngine/rngAndTiming.ts +1 -2
  109. package/test/examples/asciiMaze/evolutionEngine/sampling.ts +1 -1
  110. package/test/examples/asciiMaze/evolutionEngine/scratchPools.ts +2 -5
  111. package/test/examples/asciiMaze/evolutionEngine/setupHelpers.ts +30 -37
  112. package/test/examples/asciiMaze/evolutionEngine/telemetryMetrics.ts +16 -58
  113. package/test/examples/asciiMaze/evolutionEngine/trainingWarmStart.ts +2 -2
  114. package/test/examples/asciiMaze/evolutionEngine.ts +55 -55
  115. package/test/examples/asciiMaze/fitness.ts +2 -2
  116. package/test/examples/asciiMaze/fitness.types.ts +65 -0
  117. package/test/examples/asciiMaze/interfaces.ts +64 -1352
  118. package/test/examples/asciiMaze/mazeMovement/README.md +356 -0
  119. package/test/examples/asciiMaze/mazeMovement/finalization/README.md +49 -0
  120. package/test/examples/asciiMaze/mazeMovement/finalization/mazeMovement.finalization.ts +138 -0
  121. package/test/examples/asciiMaze/mazeMovement/mazeMovement.constants.ts +101 -0
  122. package/test/examples/asciiMaze/mazeMovement/mazeMovement.services.ts +230 -0
  123. package/test/examples/asciiMaze/mazeMovement/mazeMovement.ts +299 -0
  124. package/test/examples/asciiMaze/mazeMovement/mazeMovement.types.ts +185 -0
  125. package/test/examples/asciiMaze/mazeMovement/mazeMovement.utils.ts +153 -0
  126. package/test/examples/asciiMaze/mazeMovement/policy/README.md +91 -0
  127. package/test/examples/asciiMaze/mazeMovement/policy/mazeMovement.policy.ts +467 -0
  128. package/test/examples/asciiMaze/mazeMovement/runtime/README.md +95 -0
  129. package/test/examples/asciiMaze/mazeMovement/runtime/mazeMovement.runtime.ts +354 -0
  130. package/test/examples/asciiMaze/mazeMovement/shaping/README.md +124 -0
  131. package/test/examples/asciiMaze/mazeMovement/shaping/mazeMovement.shaping.ts +459 -0
  132. package/test/examples/asciiMaze/mazeMovement.ts +12 -2978
  133. package/test/examples/flappy_bird/README.md +193 -88
  134. package/test/examples/flappy_bird/browser-entry/README.md +1441 -0
  135. package/test/examples/flappy_bird/browser-entry/browser-entry.host.utils.ts +4 -324
  136. package/test/examples/flappy_bird/browser-entry/browser-entry.network-view.utils.ts +9 -396
  137. package/test/examples/flappy_bird/browser-entry/browser-entry.playback.utils.ts +6 -714
  138. package/test/examples/flappy_bird/browser-entry/browser-entry.render.types.ts +26 -3
  139. package/test/examples/flappy_bird/browser-entry/browser-entry.runtime.types.ts +16 -1
  140. package/test/examples/flappy_bird/browser-entry/browser-entry.simulation.types.ts +39 -5
  141. package/test/examples/flappy_bird/browser-entry/browser-entry.spawn.utils.ts +11 -31
  142. package/test/examples/flappy_bird/browser-entry/browser-entry.stats.types.ts +32 -4
  143. package/test/examples/flappy_bird/browser-entry/browser-entry.ts +11 -0
  144. package/test/examples/flappy_bird/browser-entry/browser-entry.types.ts +8 -0
  145. package/test/examples/flappy_bird/browser-entry/browser-entry.visualization.types.ts +50 -7
  146. package/test/examples/flappy_bird/browser-entry/browser-entry.visualization.utils.ts +21 -893
  147. package/test/examples/flappy_bird/browser-entry/browser-entry.worker.types.ts +91 -10
  148. package/test/examples/flappy_bird/browser-entry/host/README.md +318 -0
  149. package/test/examples/flappy_bird/browser-entry/host/host.canvas.service.ts +16 -0
  150. package/test/examples/flappy_bird/browser-entry/host/host.constants.ts +20 -0
  151. package/test/examples/flappy_bird/browser-entry/host/host.dom.service.ts +10 -0
  152. package/test/examples/flappy_bird/browser-entry/host/host.resize.service.ts +1 -295
  153. package/test/examples/flappy_bird/browser-entry/host/host.stats.service.ts +14 -0
  154. package/test/examples/flappy_bird/browser-entry/host/host.ts +592 -6
  155. package/test/examples/flappy_bird/browser-entry/host/host.types.ts +13 -0
  156. package/test/examples/flappy_bird/browser-entry/host/resize/README.md +309 -0
  157. package/test/examples/flappy_bird/browser-entry/host/resize/host.resize.service.constants.ts +47 -0
  158. package/test/examples/flappy_bird/browser-entry/host/resize/host.resize.service.services.ts +392 -0
  159. package/test/examples/flappy_bird/browser-entry/host/resize/host.resize.service.ts +132 -0
  160. package/test/examples/flappy_bird/browser-entry/host/resize/host.resize.service.types.ts +92 -0
  161. package/test/examples/flappy_bird/browser-entry/host/resize/host.resize.service.utils.ts +272 -0
  162. package/test/examples/flappy_bird/browser-entry/network-view/README.md +389 -0
  163. package/test/examples/flappy_bird/browser-entry/network-view/network-view.draw.service.ts +13 -0
  164. package/test/examples/flappy_bird/browser-entry/network-view/network-view.labels.utils.ts +12 -0
  165. package/test/examples/flappy_bird/browser-entry/network-view/network-view.layout.utils.ts +14 -0
  166. package/test/examples/flappy_bird/browser-entry/network-view/network-view.topology.utils.ts +267 -0
  167. package/test/examples/flappy_bird/browser-entry/network-view/network-view.ts +823 -7
  168. package/test/examples/flappy_bird/browser-entry/network-view/network-view.types.ts +11 -0
  169. package/test/examples/flappy_bird/browser-entry/playback/README.md +845 -0
  170. package/test/examples/flappy_bird/browser-entry/playback/background/README.md +355 -0
  171. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/README.md +1068 -0
  172. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.batch.services.ts +64 -0
  173. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.cache.services.ts +207 -0
  174. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.constants.ts +197 -0
  175. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.geometry.batch.utils.ts +114 -0
  176. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.geometry.layout.utils.test.ts +96 -0
  177. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.geometry.layout.utils.ts +204 -0
  178. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.geometry.services.ts +49 -0
  179. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.geometry.utils.ts +313 -0
  180. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.layer.services.ts +81 -0
  181. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.math.utils.test.ts +33 -0
  182. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.math.utils.ts +201 -0
  183. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.pulse.selection.utils.ts +171 -0
  184. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.pulse.timing.utils.ts +124 -0
  185. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.pulse.utils.test.ts +279 -0
  186. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.pulse.utils.ts +132 -0
  187. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.scene.services.ts +26 -0
  188. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.services.ts +65 -0
  189. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.ts +48 -0
  190. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types.ts +342 -0
  191. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.utils.ts +10 -0
  192. package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.cache.services.ts +96 -0
  193. package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.constants.ts +127 -0
  194. package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.draw.services.ts +184 -0
  195. package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.scene.services.ts +64 -0
  196. package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.services.ts +6 -0
  197. package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.ts +53 -0
  198. package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.types.ts +105 -0
  199. package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.utils.ts +100 -0
  200. package/test/examples/flappy_bird/browser-entry/playback/frame-render/README.md +541 -0
  201. package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.bird.utils.ts +180 -0
  202. package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.canvas.services.ts +77 -0
  203. package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.entity.services.ts +167 -0
  204. package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.scene.services.ts +57 -0
  205. package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.service.test.ts +176 -0
  206. package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.service.ts +113 -0
  207. package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.services.ts +35 -0
  208. package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.trail.utils.ts +248 -0
  209. package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.types.ts +103 -0
  210. package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.utils.ts +11 -0
  211. package/test/examples/flappy_bird/browser-entry/playback/playback.constants.ts +1 -1
  212. package/test/examples/flappy_bird/browser-entry/playback/playback.frame-render.service.ts +10 -0
  213. package/test/examples/flappy_bird/browser-entry/playback/playback.iteration.services.ts +192 -0
  214. package/test/examples/flappy_bird/browser-entry/playback/playback.loop.service.ts +12 -0
  215. package/test/examples/flappy_bird/browser-entry/playback/playback.orchestration.types.ts +78 -0
  216. package/test/examples/flappy_bird/browser-entry/playback/playback.render.pipe-outline.service.ts +128 -0
  217. package/test/examples/flappy_bird/browser-entry/playback/playback.render.service.ts +1 -116
  218. package/test/examples/flappy_bird/browser-entry/playback/playback.session.services.ts +184 -0
  219. package/test/examples/flappy_bird/browser-entry/playback/playback.snapshot.utils.test.ts +121 -0
  220. package/test/examples/flappy_bird/browser-entry/playback/playback.snapshot.utils.ts +8 -0
  221. package/test/examples/flappy_bird/browser-entry/playback/playback.starfield.layer.services.ts +36 -0
  222. package/test/examples/flappy_bird/browser-entry/playback/playback.starfield.service.ts +11 -128
  223. package/test/examples/flappy_bird/browser-entry/playback/playback.starfield.services.ts +268 -0
  224. package/test/examples/flappy_bird/browser-entry/playback/playback.starfield.types.ts +91 -0
  225. package/test/examples/flappy_bird/browser-entry/playback/playback.starfield.utils.ts +11 -4
  226. package/test/examples/flappy_bird/browser-entry/playback/playback.trail.utils.ts +9 -86
  227. package/test/examples/flappy_bird/browser-entry/playback/playback.ts +75 -7
  228. package/test/examples/flappy_bird/browser-entry/playback/playback.types.ts +12 -9
  229. package/test/examples/flappy_bird/browser-entry/playback/playback.worker-channel.utils.ts +11 -123
  230. package/test/examples/flappy_bird/browser-entry/playback/snapshot/README.md +55 -0
  231. package/test/examples/flappy_bird/browser-entry/playback/snapshot/playback.snapshot.services.ts +103 -0
  232. package/test/examples/flappy_bird/browser-entry/playback/snapshot/playback.snapshot.summary.utils.test.ts +45 -0
  233. package/test/examples/flappy_bird/browser-entry/playback/snapshot/playback.snapshot.summary.utils.ts +28 -0
  234. package/test/examples/flappy_bird/browser-entry/playback/trail/README.md +95 -0
  235. package/test/examples/flappy_bird/browser-entry/playback/trail/playback.trail.history.services.test.ts +35 -0
  236. package/test/examples/flappy_bird/browser-entry/playback/trail/playback.trail.history.services.ts +64 -0
  237. package/test/examples/flappy_bird/browser-entry/playback/trail/playback.trail.opacity.utils.test.ts +37 -0
  238. package/test/examples/flappy_bird/browser-entry/playback/trail/playback.trail.opacity.utils.ts +74 -0
  239. package/test/examples/flappy_bird/browser-entry/playback/worker-channel/README.md +71 -0
  240. package/test/examples/flappy_bird/browser-entry/playback/worker-channel/playback.worker-channel.request.services.ts +45 -0
  241. package/test/examples/flappy_bird/browser-entry/playback/worker-channel/playback.worker-channel.summary.services.ts +74 -0
  242. package/test/examples/flappy_bird/browser-entry/playback/worker-channel/playback.worker-channel.types.ts +53 -0
  243. package/test/examples/flappy_bird/browser-entry/runtime/README.md +304 -0
  244. package/test/examples/flappy_bird/browser-entry/runtime/runtime.browser-globals.service.ts +15 -0
  245. package/test/examples/flappy_bird/browser-entry/runtime/runtime.errors.ts +17 -0
  246. package/test/examples/flappy_bird/browser-entry/runtime/runtime.evolution-launch.service.ts +56 -0
  247. package/test/examples/flappy_bird/browser-entry/runtime/runtime.evolution-loop.service.ts +19 -0
  248. package/test/examples/flappy_bird/browser-entry/runtime/runtime.lifecycle.service.ts +96 -0
  249. package/test/examples/flappy_bird/browser-entry/runtime/runtime.startup.service.ts +92 -0
  250. package/test/examples/flappy_bird/browser-entry/runtime/runtime.telemetry.service.ts +24 -0
  251. package/test/examples/flappy_bird/browser-entry/runtime/runtime.ts +31 -121
  252. package/test/examples/flappy_bird/browser-entry/runtime/runtime.types.ts +65 -0
  253. package/test/examples/flappy_bird/browser-entry/visualization/README.md +568 -0
  254. package/test/examples/flappy_bird/browser-entry/visualization/visualization.colors.utils.ts +26 -0
  255. package/test/examples/flappy_bird/browser-entry/visualization/visualization.constants.ts +110 -0
  256. package/test/examples/flappy_bird/browser-entry/visualization/visualization.draw.service.ts +979 -19
  257. package/test/examples/flappy_bird/browser-entry/visualization/visualization.legend.utils.ts +157 -3
  258. package/test/examples/flappy_bird/browser-entry/visualization/visualization.topology.utils.ts +13 -27
  259. package/test/examples/flappy_bird/browser-entry/visualization/visualization.ts +7 -20
  260. package/test/examples/flappy_bird/browser-entry/visualization/visualization.types.ts +14 -0
  261. package/test/examples/flappy_bird/browser-entry/worker-channel/README.md +238 -0
  262. package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.errors.ts +11 -0
  263. package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.generation.service.ts +12 -0
  264. package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.playback.service.test.ts +143 -0
  265. package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.playback.service.ts +140 -14
  266. package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.request.service.ts +27 -0
  267. package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.ts +8 -0
  268. package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.types.ts +23 -0
  269. package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.url.service.ts +5 -0
  270. package/test/examples/flappy_bird/constants/README.md +1163 -0
  271. package/test/examples/flappy_bird/constants/constants.birds.ts +16 -38
  272. package/test/examples/flappy_bird/constants/constants.difficulty.ts +21 -0
  273. package/test/examples/flappy_bird/constants/constants.network-view.ts +24 -0
  274. package/test/examples/flappy_bird/constants/constants.network.ts +1 -1
  275. package/test/examples/flappy_bird/constants/constants.observation.ts +7 -0
  276. package/test/examples/flappy_bird/constants/constants.palette.ts +9 -2
  277. package/test/examples/flappy_bird/constants/constants.physics.ts +9 -0
  278. package/test/examples/flappy_bird/constants/constants.pipe-render.ts +3 -0
  279. package/test/examples/flappy_bird/constants/constants.pipes.ts +22 -3
  280. package/test/examples/flappy_bird/constants/constants.runtime.ts +28 -4
  281. package/test/examples/flappy_bird/constants/constants.starfield.ts +78 -3
  282. package/test/examples/flappy_bird/constants/constants.ts +6 -0
  283. package/test/examples/flappy_bird/environment/README.md +182 -0
  284. package/test/examples/flappy_bird/environment/environment.collision.utils.ts +7 -0
  285. package/test/examples/flappy_bird/environment/environment.constants.ts +16 -3
  286. package/test/examples/flappy_bird/environment/environment.observation.utils.ts +12 -19
  287. package/test/examples/flappy_bird/environment/environment.state.service.ts +10 -0
  288. package/test/examples/flappy_bird/environment/environment.step.service.ts +15 -66
  289. package/test/examples/flappy_bird/environment/environment.types.ts +14 -0
  290. package/test/examples/flappy_bird/evaluation/README.md +155 -0
  291. package/test/examples/flappy_bird/evaluation/evaluation.constants.ts +23 -4
  292. package/test/examples/flappy_bird/evaluation/evaluation.fitness.utils.ts +16 -1
  293. package/test/examples/flappy_bird/evaluation/evaluation.rollout.service.ts +7 -374
  294. package/test/examples/flappy_bird/evaluation/evaluation.seed.utils.ts +4 -0
  295. package/test/examples/flappy_bird/evaluation/evaluation.types.ts +18 -2
  296. package/test/examples/flappy_bird/evaluation/rollout/README.md +355 -0
  297. package/test/examples/flappy_bird/evaluation/rollout/evaluation.rollout.constants.ts +38 -0
  298. package/test/examples/flappy_bird/evaluation/rollout/evaluation.rollout.service.ts +71 -0
  299. package/test/examples/flappy_bird/evaluation/rollout/evaluation.rollout.services.ts +338 -0
  300. package/test/examples/flappy_bird/evaluation/rollout/evaluation.rollout.types.ts +69 -0
  301. package/test/examples/flappy_bird/evaluation/rollout/evaluation.rollout.utils.ts +399 -0
  302. package/test/examples/flappy_bird/flappy-evolution-worker/README.md +845 -0
  303. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.constants.ts +49 -7
  304. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.errors.ts +34 -3
  305. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.evolution.service.ts +22 -0
  306. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.playback.service.ts +62 -26
  307. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.protocol.service.ts +27 -1
  308. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.runtime.service.ts +23 -0
  309. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.simulation.frame.service.ts +378 -0
  310. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.simulation.types.ts +22 -0
  311. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.simulation.utils.ts +20 -203
  312. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.snapshot.utils.test.ts +94 -0
  313. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.snapshot.utils.ts +78 -13
  314. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.ts +235 -344
  315. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.types.ts +170 -22
  316. package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.warm-start.service.ts +314 -0
  317. package/test/examples/flappy_bird/flappy.simulation.shared.utils.ts +17 -0
  318. package/test/examples/flappy_bird/flappyEnvironment.ts +21 -0
  319. package/test/examples/flappy_bird/flappyEvaluation.ts +12 -0
  320. package/test/examples/flappy_bird/flappyEvolution.worker.ts +7 -0
  321. package/test/examples/flappy_bird/index.ts +8 -2
  322. package/test/examples/flappy_bird/rng.ts +10 -0
  323. package/test/examples/flappy_bird/simulation-shared/README.md +518 -0
  324. package/test/examples/flappy_bird/simulation-shared/observation/README.md +255 -0
  325. package/test/examples/flappy_bird/simulation-shared/observation/observation.features.utils.ts +339 -0
  326. package/test/examples/flappy_bird/simulation-shared/observation/observation.ts +19 -0
  327. package/test/examples/flappy_bird/simulation-shared/observation/observation.vector.utils.ts +81 -0
  328. package/test/examples/flappy_bird/simulation-shared/simulation-shared.constants.ts +3 -0
  329. package/test/examples/flappy_bird/simulation-shared/simulation-shared.control.utils.ts +6 -0
  330. package/test/examples/flappy_bird/simulation-shared/simulation-shared.difficulty.utils.ts +9 -0
  331. package/test/examples/flappy_bird/simulation-shared/simulation-shared.errors.ts +10 -1
  332. package/test/examples/flappy_bird/simulation-shared/simulation-shared.memory.utils.ts +18 -0
  333. package/test/examples/flappy_bird/simulation-shared/simulation-shared.observation.utils.ts +7 -402
  334. package/test/examples/flappy_bird/simulation-shared/simulation-shared.spawn.utils.ts +36 -6
  335. package/test/examples/flappy_bird/{evaluation/evaluation.statistics.utils.ts → simulation-shared/simulation-shared.statistics.utils.ts} +30 -9
  336. package/test/examples/flappy_bird/simulation-shared/simulation-shared.types.ts +38 -5
  337. package/test/examples/flappy_bird/trainFlappyBird.ts +13 -0
  338. package/test/examples/flappy_bird/trainer/README.md +676 -0
  339. package/test/examples/flappy_bird/trainer/evaluation/README.md +253 -0
  340. package/test/examples/flappy_bird/trainer/evaluation/trainer.evaluation.service.constants.ts +15 -0
  341. package/test/examples/flappy_bird/trainer/evaluation/trainer.evaluation.service.services.ts +86 -0
  342. package/test/examples/flappy_bird/trainer/evaluation/trainer.evaluation.service.ts +187 -0
  343. package/test/examples/flappy_bird/trainer/evaluation/trainer.evaluation.service.types.ts +32 -0
  344. package/test/examples/flappy_bird/trainer/evaluation/trainer.evaluation.service.utils.ts +182 -0
  345. package/test/examples/flappy_bird/trainer/trainer.evaluation.service.ts +13 -0
  346. package/test/examples/flappy_bird/trainer/trainer.fitness.service.ts +23 -1
  347. package/test/examples/flappy_bird/trainer/trainer.loop.service.ts +17 -1
  348. package/test/examples/flappy_bird/trainer/trainer.report.service.services.ts +181 -0
  349. package/test/examples/flappy_bird/trainer/trainer.report.service.ts +136 -0
  350. package/test/examples/flappy_bird/trainer/trainer.selection.utils.ts +89 -0
  351. package/test/examples/flappy_bird/trainer/trainer.setup.service.ts +22 -0
  352. package/test/examples/flappy_bird/trainer/trainer.signals.service.ts +8 -0
  353. package/test/examples/flappy_bird/trainer/trainer.ts +38 -553
  354. package/test/examples/flappy_bird/trainer/trainer.types.ts +44 -7
  355. package/test/neat/neat.topology-intent.test.ts +129 -0
  356. package/test/network/network.topology-intent.test.ts +44 -0
  357. package/test/examples/flappy_bird/browser-entry/browser-entry.utils.ts +0 -12
  358. package/test/examples/flappy_bird/environment/environment.ts +0 -7
  359. package/test/examples/flappy_bird/evaluation/evaluation.ts +0 -7
  360. package/test/examples/flappy_bird/simulation-shared/simulation-shared.ts +0 -15
  361. package/test/examples/flappy_bird/trainer/trainer.statistics.utils.ts +0 -78
@@ -0,0 +1,676 @@
1
+ # trainer
2
+
3
+ ## trainer/trainer.types.ts
4
+
5
+ ### FlappyGenerationEvaluationPlan
6
+
7
+ Generation-level rollout plans for staged evaluation.
8
+
9
+ Each generation resolves one plan that answers three questions: how strong is
10
+ the current mutation schedule, which shared seeds belong to each stage, and
11
+ what rollout budget each stage is allowed to spend.
12
+
13
+ ### FlappyGenerationReport
14
+
15
+ Compact generation report used for training logs.
16
+
17
+ The report is shaped for longitudinal monitoring rather than raw storage. It
18
+ collects the distribution and best-run details needed to judge whether a
19
+ generation improved robustly.
20
+
21
+ ### FlappyTrainerNeatController
22
+
23
+ Local typed view for population-level fitness mode used by this trainer.
24
+
25
+ This is intentionally narrower than the full `Neat` runtime API. The trainer
26
+ documents only the methods and mutable options it actually depends on.
27
+
28
+ ### FlappyTrainerNetwork
29
+
30
+ Network shape expected by the Flappy trainer.
31
+
32
+ The trainer only needs the evaluation-facing subset of a full network plus an
33
+ optional score field used by staged ranking helpers.
34
+
35
+ ### FlappyTrainerRuntimeState
36
+
37
+ Trainer runtime state shared by orchestration helpers.
38
+
39
+ Only mutable cross-step values live here: stop intent and the most recent
40
+ generation report.
41
+
42
+ ### FlappyTrainerSetup
43
+
44
+ Immutable trainer setup values.
45
+
46
+ These values define the static training shape before runtime state and staged
47
+ evaluation are attached.
48
+
49
+ ### ScoredGenomeEntry
50
+
51
+ Score carrier used for deterministic ordering helpers.
52
+
53
+ Wrapping a genome together with its score makes ranking utilities easier to
54
+ write and keeps tie-breaking logic explicit.
55
+
56
+ ## trainer/trainer.ts
57
+
58
+ ### handleTrainerMainError
59
+
60
+ `(error: unknown) => void`
61
+
62
+ Handles fatal `main` rejection path.
63
+
64
+ The trainer keeps this boundary small so unexpected failures are formatted in
65
+ one consistent place before reaching the CLI.
66
+
67
+ Parameters:
68
+ - `error` - - Unknown rejection reason from trainer execution.
69
+
70
+ Returns: Nothing.
71
+
72
+ ### isDirectTrainerExecution
73
+
74
+ `() => boolean`
75
+
76
+ Resolves whether this module is the direct Node entrypoint.
77
+
78
+ Returns: `true` when Node launched this file directly.
79
+
80
+ ### runTrainer
81
+
82
+ `() => Promise<void>`
83
+
84
+ Flappy Bird neuroevolution demo.
85
+
86
+ This script runs a small NEAT population where each genome controls a bird.
87
+ The network sees a temporal observation (38 floats) and outputs two competing
88
+ action scores (`no flap` vs `flap`).
89
+
90
+ Educational note:
91
+ The trainer is intentionally orchestration-first. It wires together setup,
92
+ staged population evaluation, the outer evolution loop, graceful shutdown,
93
+ and compact generation logging without burying those responsibilities inside a
94
+ single monolithic file.
95
+
96
+ The mutation schedule gradually cools over early generations. If you want a
97
+ conceptual parallel, the Wikipedia article on "simulated annealing" is a
98
+ useful mental model for why early exploration is broader and later updates are
99
+ more conservative.
100
+
101
+ Run (from repo root):
102
+ `npx ts-node test/examples/flappy_bird/trainFlappyBird.ts`
103
+
104
+ ## trainer/trainer.errors.ts
105
+
106
+ ### trainer.errors
107
+
108
+ Prefix used when rendering unexpected trainer failures to stderr.
109
+
110
+ ### FLAPPY_TRAINER_UNEXPECTED_ERROR_PREFIX
111
+
112
+ ### formatTrainerErrorMessage
113
+
114
+ `(error: unknown) => string`
115
+
116
+ Formats unknown trainer failures into a stable human-readable message.
117
+
118
+ Parameters:
119
+ - `error` - - Unknown rejection reason from trainer execution.
120
+
121
+ Returns: Formatted error string for CLI logging.
122
+
123
+ ## trainer/trainer.constants.ts
124
+
125
+ ### FLAPPY_TRAINER_DEFAULT_ELITISM_COUNT
126
+
127
+ ### FLAPPY_TRAINER_DEFAULT_POPULATION_SIZE
128
+
129
+ ### FLAPPY_TRAINER_DEFAULT_RNG_SEED
130
+
131
+ ### FLAPPY_TRAINER_DUMMY_FLAP_OUTPUT
132
+
133
+ ### FLAPPY_TRAINER_DUMMY_NETWORK_ID
134
+
135
+ ### FLAPPY_TRAINER_DUMMY_NO_FLAP_OUTPUT
136
+
137
+ ### FLAPPY_TRAINER_FRAME_PRIMARY_BASE_SCORE
138
+
139
+ ### FLAPPY_TRAINER_FRAME_PRIMARY_PIPE_WEIGHT
140
+
141
+ ### FLAPPY_TRAINER_FRAME_PRIMARY_SURVIVAL_WEIGHT
142
+
143
+ ### FLAPPY_TRAINER_FRAME_STABILITY_STDDEV_WEIGHT
144
+
145
+ ### FLAPPY_TRAINER_FULL_PASS_ELITISM_MULTIPLIER
146
+
147
+ ### FLAPPY_TRAINER_FULL_PASS_POPULATION_FRACTION
148
+
149
+ ### FLAPPY_TRAINER_FULL_ROLLOUT_EARLY_TERMINATION_CONSECUTIVE_FRAMES
150
+
151
+ ### FLAPPY_TRAINER_FULL_ROLLOUT_EARLY_TERMINATION_GRACE_FRAMES
152
+
153
+ ### FLAPPY_TRAINER_FULL_ROLLOUT_PIPE_PROGRESS_TARGET
154
+
155
+ ### FLAPPY_TRAINER_LOG_PARTS_DELIMITER
156
+
157
+ ### FLAPPY_TRAINER_MUTATION_AMOUNT_END
158
+
159
+ ### FLAPPY_TRAINER_MUTATION_AMOUNT_START
160
+
161
+ ### FLAPPY_TRAINER_MUTATION_ANNEAL_GENERATIONS
162
+
163
+ ### FLAPPY_TRAINER_MUTATION_RATE_END
164
+
165
+ ### FLAPPY_TRAINER_MUTATION_RATE_START
166
+
167
+ ### FLAPPY_TRAINER_NEAT_INITIAL_MUTATION_AMOUNT
168
+
169
+ ### FLAPPY_TRAINER_NEAT_INITIAL_MUTATION_RATE
170
+
171
+ ### FLAPPY_TRAINER_PIPE_FALLBACK_PIPE_WEIGHT
172
+
173
+ ### FLAPPY_TRAINER_PIPE_FILTER_TOLERANCE
174
+
175
+ ### FLAPPY_TRAINER_QUICK_ROLLOUT_EARLY_TERMINATION_CONSECUTIVE_FRAMES
176
+
177
+ ### FLAPPY_TRAINER_QUICK_ROLLOUT_EARLY_TERMINATION_GRACE_FRAMES
178
+
179
+ ### FLAPPY_TRAINER_QUICK_ROLLOUT_MAX_FRAMES
180
+
181
+ ### FLAPPY_TRAINER_QUICK_ROLLOUT_PIPE_PROGRESS_TARGET
182
+
183
+ ### FLAPPY_TRAINER_REEVALUATION_MIN_CANDIDATE_COUNT
184
+
185
+ ### FLAPPY_TRAINER_SCORE_MEDIAN_PERCENTILE
186
+
187
+ ### FLAPPY_TRAINER_SCORE_P90_PERCENTILE
188
+
189
+ ### FLAPPY_TRAINER_STOPPED_MESSAGE
190
+
191
+ ## trainer/trainer.loop.service.ts
192
+
193
+ ### applyMutationSchedule
194
+
195
+ `(neatController: import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNeatController, mutationSchedule: import("test/examples/flappy_bird/trainer/trainer.evaluation-plan.utils").FlappyMutationSchedule) => void`
196
+
197
+ Applies mutation schedule values to the NEAT controller options.
198
+
199
+ The schedule is resolved outside this helper so the loop can read as a clean
200
+ "resolve -> apply -> evolve -> report" flow.
201
+
202
+ Parameters:
203
+ - `neatController` - - Trainer NEAT controller.
204
+ - `mutationSchedule` - - Mutation schedule for current generation.
205
+
206
+ Returns: Nothing.
207
+
208
+ ### LogGenerationSummaryCallback
209
+
210
+ `(generationLabel: number, mutationSchedule: import("test/examples/flappy_bird/trainer/trainer.evaluation-plan.utils").FlappyMutationSchedule, report: import("test/examples/flappy_bird/trainer/trainer.types").FlappyGenerationReport | undefined, fittestGenome: import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork, fallbackEpisode: import("test/examples/flappy_bird/evaluation/evaluation.types").FlappyEpisodeResult) => void`
211
+
212
+ Callback signature for one-line generation logging.
213
+
214
+ The loop owns evolution cadence, while the callback owns presentation.
215
+ Keeping those concerns separate makes it easy to reuse the loop with richer
216
+ reporting later.
217
+
218
+ ### runTrainerEvolutionLoop
219
+
220
+ `(neatController: import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNeatController, trainerRuntimeState: import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerRuntimeState, logGenerationSummary: import("test/examples/flappy_bird/trainer/trainer.loop.service").LogGenerationSummaryCallback) => Promise<void>`
221
+
222
+ Runs the outer evolution loop until runtime stop is requested.
223
+
224
+ Educational note:
225
+ This is the trainer's main heartbeat: resolve the current mutation schedule,
226
+ evolve one generation, run a representative fallback rollout for logging, and
227
+ emit a compact summary.
228
+
229
+ Parameters:
230
+ - `neatController` - - Trainer NEAT controller.
231
+ - `trainerRuntimeState` - - Mutable trainer runtime state.
232
+ - `logGenerationSummary` - - Callback that emits compact generation logs.
233
+
234
+ Returns: Promise resolved when the trainer has been stopped.
235
+
236
+ ## trainer/trainer.setup.service.ts
237
+
238
+ ### createNeatController
239
+
240
+ `(trainerSetup: import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerSetup) => import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNeatController`
241
+
242
+ Builds the NEAT controller with baseline options.
243
+
244
+ Educational note:
245
+ The trainer enables population-level fitness mode because the quality of a
246
+ Flappy policy depends on fair comparison across shared seed batches, not on a
247
+ one-network-at-a-time scoring callback.
248
+
249
+ Parameters:
250
+ - `trainerSetup` - - Immutable trainer setup values.
251
+
252
+ Returns: Typed NEAT controller used by the trainer loop.
253
+
254
+ ### createTrainerRuntimeState
255
+
256
+ `() => import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerRuntimeState`
257
+
258
+ Creates mutable runtime state container.
259
+
260
+ The runtime state is intentionally tiny. It only tracks stop intent and the
261
+ latest report so the outer loop can remain easy to reason about.
262
+
263
+ Returns: Fresh runtime state used by loop orchestration.
264
+
265
+ ### createTrainerSetup
266
+
267
+ `() => import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerSetup`
268
+
269
+ Creates immutable setup values for the trainer.
270
+
271
+ Educational note:
272
+ The setup object freezes the core training shape up front: input width,
273
+ output width, population size, and elitism count. Centralizing those values
274
+ makes the rest of the trainer read as policy rather than configuration noise.
275
+
276
+ Returns: Default trainer setup values used for NEAT configuration.
277
+
278
+ ### resolveNoopFitness
279
+
280
+ `() => number`
281
+
282
+ Trivial baseline fitness used before attaching population evaluator.
283
+
284
+ This placeholder keeps controller construction simple. The real staged
285
+ evaluator is attached immediately afterward by the fitness service.
286
+
287
+ Returns: Constant zero fitness.
288
+
289
+ ## trainer/trainer.report.service.ts
290
+
291
+ ### buildGenerationReport
292
+
293
+ `(population: readonly import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork[], aggregateByGenome: ReadonlyMap<import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork, import("test/examples/flappy_bird/evaluation/evaluation.types").FlappySeedBatchEvaluation>, generationEvaluationPlan: import("test/examples/flappy_bird/trainer/trainer.types").FlappyGenerationEvaluationPlan) => import("test/examples/flappy_bird/trainer/trainer.types").FlappyGenerationReport`
294
+
295
+ Builds a compact report for the current generation.
296
+
297
+ Educational note:
298
+ The trainer logs more than a single best score because single-number progress
299
+ can hide instability. Mean, median, $p90$, and standard deviation reveal
300
+ whether a generation is broadly improving or whether one lucky genome is
301
+ masking a weak population.
302
+
303
+ Parameters:
304
+ - `population` - - Current population.
305
+ - `aggregateByGenome` - - Aggregate evaluation results keyed by genome.
306
+ - `generationEvaluationPlan` - - Per-generation staged evaluation plan.
307
+
308
+ Returns: Aggregated generation report.
309
+
310
+ ### logGenerationSummary
311
+
312
+ `(generationLabel: number, mutationSchedule: import("test/examples/flappy_bird/trainer/trainer.evaluation-plan.utils").FlappyMutationSchedule, report: import("test/examples/flappy_bird/trainer/trainer.types").FlappyGenerationReport | undefined, fittestGenome: import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork, fallbackEpisode: import("test/examples/flappy_bird/evaluation/evaluation.types").FlappyEpisodeResult) => void`
313
+
314
+ Emits one compact generation log line.
315
+
316
+ The emitted line is designed for long-running terminal sessions: dense enough
317
+ to be useful, but stable enough that humans can visually scan progress over
318
+ hundreds of generations.
319
+
320
+ Parameters:
321
+ - `generationLabel` - - Current generation label.
322
+ - `mutationSchedule` - - Active mutation schedule.
323
+ - `report` - - Optional aggregated generation report.
324
+ - `fittestGenome` - - Fittest genome returned by the NEAT controller.
325
+ - `fallbackEpisode` - - Fallback representative rollout episode.
326
+
327
+ Returns: Nothing.
328
+
329
+ ## trainer/trainer.fitness.service.ts
330
+
331
+ ### attachPopulationFitnessEvaluator
332
+
333
+ `(neatController: import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNeatController, trainerRuntimeState: import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerRuntimeState, elitismCount: number, dependencies: import("test/examples/flappy_bird/trainer/trainer.fitness.service").TrainerFitnessServiceDependencies) => void`
334
+
335
+ Attaches population-level staged evaluator to the NEAT controller.
336
+
337
+ This is the moment where the generic NEAT controller becomes a
338
+ Flappy-specific trainer: a plain controller receives the staged population
339
+ evaluator that understands shared-seed screening, full-pass scoring, and
340
+ reevaluation.
341
+
342
+ Parameters:
343
+ - `neatController` - - Trainer NEAT controller.
344
+ - `trainerRuntimeState` - - Mutable trainer runtime state.
345
+ - `elitismCount` - - Number of elite genomes preserved each generation.
346
+ - `dependencies` - - Pure/impure helper callbacks used by the evaluator.
347
+
348
+ Returns: Nothing.
349
+
350
+ ### createPopulationFitnessEvaluator
351
+
352
+ `(neatController: import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNeatController, trainerRuntimeState: import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerRuntimeState, elitismCount: number, dependencies: import("test/examples/flappy_bird/trainer/trainer.fitness.service").TrainerFitnessServiceDependencies) => (population: import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork[]) => Promise<void>`
353
+
354
+ Creates the asynchronous population fitness evaluator.
355
+
356
+ Educational note:
357
+ The trainer uses staged evaluation to reduce luck. Genomes are first screened
358
+ quickly, then the most promising ones receive more expensive evaluation, and
359
+ the best candidates are reevaluated again for robustness.
360
+
361
+ That strategy is closer to tournament design than to naive one-shot scoring:
362
+ the same generation budget is spent unevenly so weak genomes are filtered out
363
+ early and strong genomes are compared more carefully.
364
+
365
+ Parameters:
366
+ - `neatController` - - Trainer NEAT controller.
367
+ - `trainerRuntimeState` - - Mutable trainer runtime state.
368
+ - `elitismCount` - - Number of elite genomes preserved each generation.
369
+ - `dependencies` - - Pure/impure helper callbacks used by the evaluator.
370
+
371
+ Returns: Evaluator callback assigned to `neatController.fitness`.
372
+
373
+ ### TrainerFitnessServiceDependencies
374
+
375
+ Callback dependencies required by the trainer fitness orchestration service.
376
+
377
+ Educational note:
378
+ The trainer evaluates whole populations in staged passes. This dependency bag
379
+ keeps the top-level service declarative and makes each stage independently
380
+ replaceable without rewriting the orchestration logic.
381
+
382
+ ## trainer/trainer.signals.service.ts
383
+
384
+ ### handleTrainerStopSignal
385
+
386
+ `(trainerRuntimeState: import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerRuntimeState) => void`
387
+
388
+ Handles one stop signal update.
389
+
390
+ Parameters:
391
+ - `trainerRuntimeState` - - Mutable trainer runtime state.
392
+
393
+ Returns: Nothing.
394
+
395
+ ### registerTrainerStopSignals
396
+
397
+ `(trainerRuntimeState: import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerRuntimeState) => void`
398
+
399
+ Registers graceful stop signal handlers.
400
+
401
+ Educational note:
402
+ Long-running evolutionary runs should stop cleanly when the user presses
403
+ `Ctrl+C`. This service flips runtime intent instead of abruptly tearing down
404
+ the process mid-generation.
405
+
406
+ Parameters:
407
+ - `trainerRuntimeState` - - Mutable trainer runtime state.
408
+
409
+ Returns: Nothing.
410
+
411
+ ## trainer/trainer.evaluation.service.ts
412
+
413
+ ### trainer.evaluation.service
414
+
415
+ Trainer evaluation compatibility facade.
416
+
417
+ The staged population-evaluation implementation now lives in the dedicated
418
+ `trainer/evaluation/` submodule so orchestration, scoring helpers, internal
419
+ contracts, and sub-services can evolve behind a focused boundary.
420
+
421
+ ### commitPopulationScores
422
+
423
+ `(population: readonly import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork[], provisionalScoresByGenome: ReadonlyMap<import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork, number>) => void`
424
+
425
+ Commits provisional scores to genome score fields.
426
+
427
+ Provisional scores are kept in a map during staging so each phase can refresh
428
+ them without mutating the genomes too early. This helper performs the final
429
+ write-back once staged evaluation is complete.
430
+
431
+ Parameters:
432
+ - `population` - - Current population.
433
+ - `provisionalScoresByGenome` - - Final provisional score map.
434
+
435
+ Returns: Nothing.
436
+
437
+ ### evaluatePopulationFullStage
438
+
439
+ `(population: readonly import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork[], generationEvaluationPlan: import("test/examples/flappy_bird/trainer/trainer.types").FlappyGenerationEvaluationPlan, aggregateByGenome: Map<import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork, import("test/examples/flappy_bird/evaluation/evaluation.types").FlappySeedBatchEvaluation>, provisionalScoresByGenome: Map<import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork, number>, elitismCount: number) => void`
440
+
441
+ Executes the full evaluation stage over the top provisional candidates.
442
+
443
+ This is the middle-cost stage in the ranking ladder: not every genome
444
+ survives into it, but the survivors receive a more trustworthy estimate than
445
+ the quick screen alone can provide.
446
+
447
+ Parameters:
448
+ - `population` - - Current population.
449
+ - `generationEvaluationPlan` - - Per-generation staged evaluation plan.
450
+ - `aggregateByGenome` - - Mutable aggregate cache keyed by genome.
451
+ - `provisionalScoresByGenome` - - Mutable provisional score map.
452
+ - `elitismCount` - - Configured elitism count.
453
+
454
+ Returns: Nothing.
455
+
456
+ ### evaluatePopulationQuickStage
457
+
458
+ `(population: readonly import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork[], generationEvaluationPlan: import("test/examples/flappy_bird/trainer/trainer.types").FlappyGenerationEvaluationPlan, aggregateByGenome: Map<import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork, import("test/examples/flappy_bird/evaluation/evaluation.types").FlappySeedBatchEvaluation>, provisionalScoresByGenome: Map<import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork, number>) => void`
459
+
460
+ Executes the quick evaluation stage over the full population.
461
+
462
+ Educational note:
463
+ The quick stage is a cheap screening pass. Every genome is tested on the same
464
+ small shared seed batch so the trainer can discard obviously weak candidates
465
+ before spending more rollout budget on them.
466
+
467
+ Parameters:
468
+ - `population` - - Current population.
469
+ - `generationEvaluationPlan` - - Per-generation staged evaluation plan.
470
+ - `aggregateByGenome` - - Mutable aggregate cache keyed by genome.
471
+ - `provisionalScoresByGenome` - - Mutable provisional score map.
472
+
473
+ Returns: Nothing.
474
+
475
+ ### evaluatePopulationReevaluationStage
476
+
477
+ `(population: readonly import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork[], generationEvaluationPlan: import("test/examples/flappy_bird/trainer/trainer.types").FlappyGenerationEvaluationPlan, aggregateByGenome: Map<import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork, import("test/examples/flappy_bird/evaluation/evaluation.types").FlappySeedBatchEvaluation>, provisionalScoresByGenome: Map<import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork, number>, elitismCount: number) => void`
478
+
479
+ Executes the large-seed reevaluation stage over top candidates.
480
+
481
+ Educational note:
482
+ Reevaluation is the trainer's anti-luck pass. The best provisional genomes
483
+ are tested again on a larger shared seed batch so leaderboard positions are
484
+ less sensitive to a fortunate early sample.
485
+
486
+ Parameters:
487
+ - `population` - - Current population.
488
+ - `generationEvaluationPlan` - - Per-generation staged evaluation plan.
489
+ - `aggregateByGenome` - - Mutable aggregate cache keyed by genome.
490
+ - `provisionalScoresByGenome` - - Mutable provisional score map.
491
+ - `elitismCount` - - Configured elitism count.
492
+
493
+ Returns: Nothing.
494
+
495
+ ## trainer/trainer.report.service.services.ts
496
+
497
+ ### collectFiniteGenomeScores
498
+
499
+ `(population: readonly import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork[]) => number[]`
500
+
501
+ Collects only finite scores from the current population.
502
+
503
+ Unevaluated or invalid scores are intentionally skipped so percentile and
504
+ standard deviation calculations operate on stable numeric inputs only.
505
+
506
+ Parameters:
507
+ - `population` - - Current population.
508
+
509
+ Returns: Finite scores in population order.
510
+
511
+ ### resolveBestGenerationDetails
512
+
513
+ `(population: readonly import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork[], bestGenome: import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork | undefined, aggregateByGenome: ReadonlyMap<import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork, import("test/examples/flappy_bird/evaluation/evaluation.types").FlappySeedBatchEvaluation>, fallbackSeeds: readonly number[], fallbackRolloutOptions: import("test/examples/flappy_bird/evaluation/evaluation.types").FlappyRolloutOptions) => import("test/examples/flappy_bird/trainer/trainer.report.service.services").ResolvedBestGenerationDetails`
514
+
515
+ Resolves cached or fallback best-of-generation details for reporting.
516
+
517
+ The report layer needs both aggregate seed statistics and one representative
518
+ episode. This helper centralizes the fallback rules so the service facade can
519
+ remain a thin orchestration layer.
520
+
521
+ Parameters:
522
+ - `population` - - Current population.
523
+ - `bestGenome` - - Genome selected as generation best.
524
+ - `aggregateByGenome` - - Cached aggregate evaluations keyed by genome.
525
+ - `fallbackSeeds` - - Seeds used when the aggregate must be recomputed.
526
+ - `fallbackRolloutOptions` - - Rollout options for fallback evaluation.
527
+
528
+ Returns: Aggregate metrics and a representative best-genome episode.
529
+
530
+ ### ResolvedBestGenerationDetails
531
+
532
+ Aggregate and representative rollout resolved for the best genome.
533
+
534
+ Keeping these values together lets the report facade stay focused on
535
+ orchestration while this helper module owns cache fallback behavior.
536
+
537
+ ## trainer/trainer.reporting.utils.ts
538
+
539
+ ### buildGenerationLogParts
540
+
541
+ `(generationLabel: number, bestFitness: number, bestPipesPassed: number, bestFramesSurvived: number, report: import("test/examples/flappy_bird/trainer/trainer.types").FlappyGenerationReport | undefined, mutationSchedule: import("test/examples/flappy_bird/trainer/trainer.evaluation-plan.utils").FlappyMutationSchedule) => string[]`
542
+
543
+ Builds one-line generation log tokens.
544
+
545
+ Parameters:
546
+ - `generationLabel` - - Generation label shown in logs.
547
+ - `bestFitness` - - Best resolved fitness value for this generation.
548
+ - `bestPipesPassed` - - Best resolved pipes passed value.
549
+ - `bestFramesSurvived` - - Best resolved frames survived value.
550
+ - `report` - - Optional aggregated generation report.
551
+ - `mutationSchedule` - - Active mutation schedule for this generation.
552
+
553
+ Returns: Ordered log tokens for compact console output.
554
+
555
+ ## trainer/trainer.selection.utils.ts
556
+
557
+ ### resolveBestGenomeByScore
558
+
559
+ `(population: readonly import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork[]) => import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork | undefined`
560
+
561
+ Resolves the best genome by current score.
562
+
563
+ Parameters:
564
+ - `population` - - Current trainer population.
565
+
566
+ Returns: Highest-scoring genome or `undefined` when population is empty.
567
+
568
+ ### selectTopGenomesByScore
569
+
570
+ `(population: readonly import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork[], provisionalScoresByGenome: ReadonlyMap<import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork, number>, targetCount: number) => import("test/examples/flappy_bird/trainer/trainer.types").FlappyTrainerNetwork[]`
571
+
572
+ Returns top genomes ordered by current provisional score.
573
+
574
+ Parameters:
575
+ - `population` - - Current trainer population.
576
+ - `provisionalScoresByGenome` - - Optional map of staged provisional scores.
577
+ - `targetCount` - - Maximum number of genomes to return.
578
+
579
+ Returns: Highest-scoring genomes in descending score order.
580
+
581
+ ## trainer/trainer.evaluation-plan.utils.ts
582
+
583
+ ### buildSharedSeedBatch
584
+
585
+ `(generationIndex: number, stageSalt: number, seedCount: number) => number[]`
586
+
587
+ Build deterministic shared seeds for one generation stage.
588
+
589
+ Parameters:
590
+ - `generationIndex` - - Zero-based generation index.
591
+ - `stageSalt` - - Constant stage-specific salt.
592
+ - `seedCount` - - Number of seeds to produce.
593
+
594
+ Returns: Deterministic shared seed list.
595
+
596
+ ### createFullRolloutOptions
597
+
598
+ `(difficultyScale: number) => import("test/examples/flappy_bird/evaluation/evaluation.types").FlappyRolloutOptions`
599
+
600
+ Builds full-stage rollout options.
601
+
602
+ Parameters:
603
+ - `difficultyScale` - - Difficulty scale for this generation.
604
+
605
+ Returns: Full stage rollout options.
606
+
607
+ ### createQuickRolloutOptions
608
+
609
+ `(difficultyScale: number) => import("test/examples/flappy_bird/evaluation/evaluation.types").FlappyRolloutOptions`
610
+
611
+ Builds quick-screen rollout options.
612
+
613
+ Parameters:
614
+ - `difficultyScale` - - Difficulty scale for this generation.
615
+
616
+ Returns: Quick stage rollout options.
617
+
618
+ ### createReevaluationRolloutOptions
619
+
620
+ `(difficultyScale: number) => import("test/examples/flappy_bird/evaluation/evaluation.types").FlappyRolloutOptions`
621
+
622
+ Builds high-confidence reevaluation rollout options.
623
+
624
+ Parameters:
625
+ - `difficultyScale` - - Difficulty scale for this generation.
626
+
627
+ Returns: Reevaluation stage rollout options.
628
+
629
+ ### FlappyMutationSchedule
630
+
631
+ Mutation schedule used by generation planning and outer loop logging.
632
+
633
+ ### mixSeed
634
+
635
+ `(generationIndex: number, stageSalt: number) => number`
636
+
637
+ Mixes generation and stage salts into a deterministic uint32 RNG seed.
638
+
639
+ Parameters:
640
+ - `generationIndex` - - Current generation index.
641
+ - `stageSalt` - - Stage-specific salt.
642
+
643
+ Returns: Mixed uint32 seed.
644
+
645
+ ### resolveCurriculumDifficultyScale
646
+
647
+ `(generationIndex: number) => number`
648
+
649
+ Resolve curriculum difficulty scale for the current generation.
650
+
651
+ Parameters:
652
+ - `generationIndex` - - Zero-based generation index.
653
+
654
+ Returns: Difficulty scale in [0, 1].
655
+
656
+ ### resolveGenerationEvaluationPlan
657
+
658
+ `(generationIndex: number) => import("test/examples/flappy_bird/trainer/trainer.types").FlappyGenerationEvaluationPlan`
659
+
660
+ Resolves all per-generation evaluation controls.
661
+
662
+ Parameters:
663
+ - `generationIndex` - - Zero-based generation index.
664
+
665
+ Returns: Full staged evaluation plan for the generation.
666
+
667
+ ### resolveMutationSchedule
668
+
669
+ `(generationIndex: number) => import("test/examples/flappy_bird/trainer/trainer.evaluation-plan.utils").FlappyMutationSchedule`
670
+
671
+ Resolve a smooth mutation annealing schedule.
672
+
673
+ Parameters:
674
+ - `generationIndex` - - Zero-based generation index.
675
+
676
+ Returns: Mutation rate and mutation amount for this generation.