@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
@@ -1,378 +1,11 @@
1
- import {
2
- FLAPPY_CONTROL_SUBSTEPS_PER_FRAME,
3
- FLAPPY_FITNESS_ALIGNMENT_WEIGHT_PER_FRAME,
4
- FLAPPY_FITNESS_APPROACH_PROGRESS_WEIGHT,
5
- FLAPPY_FITNESS_BONUS_PER_PIPE,
6
- FLAPPY_FITNESS_CENTERING_PROGRESS_WEIGHT,
7
- FLAPPY_FITNESS_CLEARANCE_WEIGHT_PER_FRAME,
8
- FLAPPY_FITNESS_SECOND_GAP_ALIGNMENT_WEIGHT_PER_FRAME,
9
- FLAPPY_FITNESS_STABLE_VELOCITY_WEIGHT_PER_FRAME,
10
- FLAPPY_FITNESS_SURVIVAL_WEIGHT,
11
- FLAPPY_FITNESS_TERMINAL_ALIGNMENT_BONUS_WEIGHT,
12
- FLAPPY_FITNESS_TERMINAL_PROGRESS_BONUS_WEIGHT,
13
- FLAPPY_MAX_FRAMES_PER_EPISODE,
14
- } from '../constants/constants';
15
- import {
16
- FLAPPY_EVALUATION_DEFAULT_DIFFICULTY_SCALE,
17
- FLAPPY_EVALUATION_DEFAULT_EARLY_TERMINATION_CONSECUTIVE_FRAMES,
18
- FLAPPY_EVALUATION_DEFAULT_EARLY_TERMINATION_GRACE_FRAMES,
19
- FLAPPY_EVALUATION_DEFAULT_PIPE_PROGRESS_TARGET,
20
- FLAPPY_EVALUATION_DENSE_SHAPING_FRAMES_NORMALIZER,
21
- FLAPPY_EVALUATION_NORMALIZED_DENSE_WEIGHT,
22
- FLAPPY_EVALUATION_NORMALIZED_PROGRESS_WEIGHT,
23
- FLAPPY_EVALUATION_NORMALIZED_SURVIVAL_WEIGHT,
24
- FLAPPY_EVALUATION_NORMALIZED_TERMINAL_WEIGHT,
25
- FLAPPY_EVALUATION_UNRECOVERABLE_ABOVE_GAP_DELTA,
26
- FLAPPY_EVALUATION_UNRECOVERABLE_BELOW_GAP_DELTA,
27
- FLAPPY_EVALUATION_UNRECOVERABLE_CLEARANCE_THRESHOLD,
28
- FLAPPY_EVALUATION_UNRECOVERABLE_FALLING_VELOCITY,
29
- FLAPPY_EVALUATION_UNRECOVERABLE_RISING_VELOCITY,
30
- } from './evaluation.constants';
31
- import {
32
- createInitialFlappyState,
33
- getFlappyObservationFeatures,
34
- stepFlappyStateWithControlSubsteps,
35
- type FlappyGameState,
36
- type FlappyObservationFeatures,
37
- } from '../flappyEnvironment.ts';
38
- import {
39
- clampValue,
40
- commitSharedObservationMemoryStep,
41
- createSharedObservationMemoryState,
42
- resolveFlapDecision,
43
- resolveTemporalObservationVector,
44
- } from '../flappy.simulation.shared.utils';
45
- import { createXorshift32 } from '../rng';
46
- import { mixGenomeEvaluationSeed } from './evaluation.seed.utils';
47
- import type {
48
- FlappyEpisodeResult,
49
- FlappyNetworkLike,
50
- FlappyRolloutOptions,
51
- } from './evaluation.types';
52
-
53
1
  /**
54
- * Roll out an episode and return details.
2
+ * Public rollout compatibility facade.
55
3
  *
56
- * @param network - Genome/network to evaluate.
57
- * @param rolloutOptions - Optional rollout controls.
58
- * @returns Episode result details.
59
- */
60
- export function rolloutEpisode(
61
- network: FlappyNetworkLike,
62
- rolloutOptions: FlappyRolloutOptions = {},
63
- ): FlappyEpisodeResult {
64
- const genomeId = network._id ?? 0;
65
- const seed = rolloutOptions.seed ?? mixGenomeEvaluationSeed(genomeId);
66
- const difficultyScale = clampValue(
67
- rolloutOptions.difficultyScale ??
68
- FLAPPY_EVALUATION_DEFAULT_DIFFICULTY_SCALE,
69
- 0,
70
- 1,
71
- );
72
- const maxFramesPerEpisode = Math.max(
73
- 1,
74
- Math.min(
75
- FLAPPY_MAX_FRAMES_PER_EPISODE,
76
- Math.trunc(rolloutOptions.maxFrames ?? FLAPPY_MAX_FRAMES_PER_EPISODE),
77
- ),
78
- );
79
- const earlyTerminationGraceFrames = Math.max(
80
- 0,
81
- Math.trunc(
82
- rolloutOptions.earlyTerminationGraceFrames ??
83
- FLAPPY_EVALUATION_DEFAULT_EARLY_TERMINATION_GRACE_FRAMES,
84
- ),
85
- );
86
- const earlyTerminationConsecutiveFrames = Math.max(
87
- 1,
88
- Math.trunc(
89
- rolloutOptions.earlyTerminationConsecutiveFrames ??
90
- FLAPPY_EVALUATION_DEFAULT_EARLY_TERMINATION_CONSECUTIVE_FRAMES,
91
- ),
92
- );
93
- const rng = createXorshift32(seed);
94
-
95
- const state = createInitialFlappyState(rng);
96
- const observationMemoryState = createSharedObservationMemoryState();
97
- let denseShapingFitness = 0;
98
- let unrecoverableFrameCount = 0;
99
-
100
- while (!state.done && state.frameIndex < maxFramesPerEpisode) {
101
- const previousObservationFeatures = getFlappyObservationFeatures(
102
- state,
103
- difficultyScale,
104
- );
105
- stepFlappyStateWithControlSubsteps(
106
- state,
107
- rng,
108
- () => {
109
- const observationFeatures = getFlappyObservationFeatures(
110
- state,
111
- difficultyScale,
112
- );
113
- const observation = resolveTemporalObservationVector(
114
- observationFeatures,
115
- observationMemoryState,
116
- );
117
- const outputs = network.activate(observation);
118
- const shouldFlap = resolveFlapDecision(outputs);
119
- commitSharedObservationMemoryStep(
120
- observationMemoryState,
121
- observationFeatures,
122
- shouldFlap,
123
- );
124
- return shouldFlap;
125
- },
126
- difficultyScale,
127
- FLAPPY_CONTROL_SUBSTEPS_PER_FRAME,
128
- );
129
-
130
- const currentObservationFeatures = getFlappyObservationFeatures(
131
- state,
132
- difficultyScale,
133
- );
134
- denseShapingFitness += computeDenseShapingReward(
135
- previousObservationFeatures,
136
- currentObservationFeatures,
137
- );
138
-
139
- if (rolloutOptions.enableEarlyTermination === true) {
140
- const birdLikelyUnrecoverable = isBirdLikelyUnrecoverable(
141
- currentObservationFeatures,
142
- );
143
- const earlyTerminationEligible =
144
- state.pipesPassed === 0 &&
145
- state.frameIndex >= earlyTerminationGraceFrames;
146
-
147
- unrecoverableFrameCount =
148
- earlyTerminationEligible && birdLikelyUnrecoverable
149
- ? unrecoverableFrameCount + 1
150
- : 0;
151
-
152
- if (unrecoverableFrameCount >= earlyTerminationConsecutiveFrames) {
153
- state.done = true;
154
- state.doneReason = 'collision';
155
- }
156
- }
157
- }
158
-
159
- if (!state.done && state.frameIndex >= maxFramesPerEpisode) {
160
- state.done = true;
161
- state.doneReason = 'timeout';
162
- }
163
-
164
- const framesSurvived = state.frameIndex;
165
- const pipesPassed = state.pipesPassed;
166
- const survivalFitness = framesSurvived * FLAPPY_FITNESS_SURVIVAL_WEIGHT;
167
- const pipePassFitness = pipesPassed * FLAPPY_FITNESS_BONUS_PER_PIPE;
168
- const terminalShapingFitness = computeTerminalShapingFitness(
169
- state,
170
- difficultyScale,
171
- );
172
- const fitness =
173
- rolloutOptions.normalizeFitness === true
174
- ? composeNormalizedFitness(
175
- framesSurvived,
176
- pipesPassed,
177
- denseShapingFitness,
178
- terminalShapingFitness,
179
- maxFramesPerEpisode,
180
- rolloutOptions.pipeProgressTarget,
181
- )
182
- : survivalFitness +
183
- pipePassFitness +
184
- denseShapingFitness +
185
- terminalShapingFitness;
186
-
187
- return {
188
- framesSurvived,
189
- pipesPassed,
190
- done: state.done,
191
- doneReason: state.doneReason,
192
- fitness,
193
- fitnessBreakdown: {
194
- survival: survivalFitness,
195
- pipeProgress: pipePassFitness,
196
- denseShaping: denseShapingFitness,
197
- terminalShaping: terminalShapingFitness,
198
- },
199
- };
200
- }
201
-
202
- /**
203
- * Computes dense reward shaping from consecutive observations.
204
- *
205
- * @param previousFeatures - Observation before stepping the environment.
206
- * @param currentFeatures - Observation after stepping the environment.
207
- * @returns Per-step shaped reward.
208
- */
209
- function computeDenseShapingReward(
210
- previousFeatures: FlappyObservationFeatures,
211
- currentFeatures: FlappyObservationFeatures,
212
- ): number {
213
- const nextGapAlignment =
214
- 1 - Math.abs(currentFeatures.normalizedDeltaToNextGap);
215
- const nextGapAlignmentReward =
216
- Math.max(0, nextGapAlignment) * FLAPPY_FITNESS_ALIGNMENT_WEIGHT_PER_FRAME;
217
-
218
- const distanceImprovement = Math.max(
219
- 0,
220
- previousFeatures.normalizedDistanceToNextPipe -
221
- currentFeatures.normalizedDistanceToNextPipe,
222
- );
223
- const approachProgressReward =
224
- distanceImprovement * FLAPPY_FITNESS_APPROACH_PROGRESS_WEIGHT;
225
-
226
- const previousAbsoluteGapError = Math.abs(
227
- previousFeatures.normalizedDeltaToNextGap,
228
- );
229
- const currentAbsoluteGapError = Math.abs(
230
- currentFeatures.normalizedDeltaToNextGap,
231
- );
232
- const centeringImprovement = Math.max(
233
- 0,
234
- previousAbsoluteGapError - currentAbsoluteGapError,
235
- );
236
- const centeringProgressReward =
237
- centeringImprovement * FLAPPY_FITNESS_CENTERING_PROGRESS_WEIGHT;
238
-
239
- const positiveClearance = Math.max(
240
- 0,
241
- currentFeatures.normalizedNextGapClearance,
242
- );
243
- const clearanceReward =
244
- positiveClearance * FLAPPY_FITNESS_CLEARANCE_WEIGHT_PER_FRAME;
245
-
246
- const secondGapAlignment =
247
- 1 - Math.abs(currentFeatures.normalizedDeltaToSecondGap);
248
- const secondGapAlignmentReward =
249
- Math.max(0, secondGapAlignment) *
250
- FLAPPY_FITNESS_SECOND_GAP_ALIGNMENT_WEIGHT_PER_FRAME;
251
-
252
- const velocityStability = 1 - Math.abs(currentFeatures.normalizedVelocity);
253
- const velocityStabilityReward =
254
- Math.max(0, velocityStability) *
255
- FLAPPY_FITNESS_STABLE_VELOCITY_WEIGHT_PER_FRAME;
256
-
257
- return (
258
- nextGapAlignmentReward +
259
- approachProgressReward +
260
- centeringProgressReward +
261
- clearanceReward +
262
- secondGapAlignmentReward +
263
- velocityStabilityReward
264
- );
265
- }
266
-
267
- /**
268
- * Adds small terminal bonuses from final progress/alignment signals.
4
+ * Keeping this file at the evaluation layer preserves the established import
5
+ * path while the actual rollout orchestration lives behind the dedicated
6
+ * rollout-owned module boundary.
269
7
  *
270
- * @param episodeState - Final rollout state.
271
- * @param difficultyScale - Active rollout difficulty scale.
272
- * @returns Terminal shaping reward.
273
- */
274
- function computeTerminalShapingFitness(
275
- episodeState: FlappyGameState,
276
- difficultyScale: number,
277
- ): number {
278
- const finalObservationFeatures = getFlappyObservationFeatures(
279
- episodeState,
280
- difficultyScale,
281
- );
282
- const finalAlignment =
283
- 1 - Math.abs(finalObservationFeatures.normalizedDeltaToNextGap);
284
- const finalProgress =
285
- 1 -
286
- Math.max(
287
- 0,
288
- Math.min(1, finalObservationFeatures.normalizedDistanceToNextPipe),
289
- );
290
-
291
- const terminalAlignmentBonus =
292
- Math.max(0, finalAlignment) *
293
- FLAPPY_FITNESS_TERMINAL_ALIGNMENT_BONUS_WEIGHT;
294
- const terminalProgressBonus =
295
- Math.max(0, finalProgress) * FLAPPY_FITNESS_TERMINAL_PROGRESS_BONUS_WEIGHT;
296
-
297
- return terminalAlignmentBonus + terminalProgressBonus;
298
- }
299
-
300
- /**
301
- * Normalize and cap fitness channels so no single reward term dominates.
302
- */
303
- function composeNormalizedFitness(
304
- framesValue: number,
305
- pipesPassedValue: number,
306
- denseShapingValue: number,
307
- terminalShapingValue: number,
308
- maxFramesValue: number,
309
- pipeProgressTarget: number | undefined,
310
- ): number {
311
- const effectivePipeProgressTarget = Math.max(
312
- 1,
313
- Math.trunc(
314
- pipeProgressTarget ?? FLAPPY_EVALUATION_DEFAULT_PIPE_PROGRESS_TARGET,
315
- ),
316
- );
317
- const normalizedSurvival = clampValue(
318
- framesValue / Math.max(1, maxFramesValue),
319
- 0,
320
- 1,
321
- );
322
- const normalizedPipeProgress = clampValue(
323
- pipesPassedValue / effectivePipeProgressTarget,
324
- 0,
325
- 1,
326
- );
327
- const normalizedDenseShaping = clampValue(
328
- denseShapingValue /
329
- Math.max(
330
- 1,
331
- framesValue * FLAPPY_EVALUATION_DENSE_SHAPING_FRAMES_NORMALIZER,
332
- ),
333
- 0,
334
- 1,
335
- );
336
- const normalizedTerminalShaping = clampValue(
337
- terminalShapingValue /
338
- Math.max(
339
- 1,
340
- FLAPPY_FITNESS_TERMINAL_ALIGNMENT_BONUS_WEIGHT +
341
- FLAPPY_FITNESS_TERMINAL_PROGRESS_BONUS_WEIGHT,
342
- ),
343
- 0,
344
- 1,
345
- );
346
-
347
- return (
348
- normalizedSurvival *
349
- FLAPPY_EVALUATION_NORMALIZED_SURVIVAL_WEIGHT *
350
- FLAPPY_FITNESS_SURVIVAL_WEIGHT +
351
- normalizedPipeProgress * FLAPPY_EVALUATION_NORMALIZED_PROGRESS_WEIGHT +
352
- normalizedDenseShaping * FLAPPY_EVALUATION_NORMALIZED_DENSE_WEIGHT +
353
- normalizedTerminalShaping * FLAPPY_EVALUATION_NORMALIZED_TERMINAL_WEIGHT
354
- );
355
- }
356
-
357
- /**
358
- * Detects trajectories that are usually irrecoverable in early warmup.
8
+ * This is the public evaluation-layer shelf for callers that should not need to
9
+ * know about the rollout subfolder layout.
359
10
  */
360
- function isBirdLikelyUnrecoverable(
361
- observationFeatures: FlappyObservationFeatures,
362
- ): boolean {
363
- const farOutsideGap =
364
- observationFeatures.normalizedNextGapClearance <
365
- FLAPPY_EVALUATION_UNRECOVERABLE_CLEARANCE_THRESHOLD;
366
- const belowGapAndStillFalling =
367
- observationFeatures.normalizedDeltaToNextGap >
368
- FLAPPY_EVALUATION_UNRECOVERABLE_BELOW_GAP_DELTA &&
369
- observationFeatures.normalizedVelocity >
370
- FLAPPY_EVALUATION_UNRECOVERABLE_FALLING_VELOCITY;
371
- const aboveGapAndStillRising =
372
- observationFeatures.normalizedDeltaToNextGap <
373
- FLAPPY_EVALUATION_UNRECOVERABLE_ABOVE_GAP_DELTA &&
374
- observationFeatures.normalizedVelocity <
375
- FLAPPY_EVALUATION_UNRECOVERABLE_RISING_VELOCITY;
376
-
377
- return farOutsideGap && (belowGapAndStillFalling || aboveGapAndStillRising);
378
- }
11
+ export { rolloutEpisode } from './rollout/evaluation.rollout.service';
@@ -10,6 +10,10 @@ import {
10
10
  * This keeps evaluation deterministic per genome while still spreading nearby
11
11
  * genome ids across the RNG state space to reduce correlated rollouts.
12
12
  *
13
+ * If you want background reading, the Wikipedia article on "hash function"
14
+ * gives a reasonable intuition for why a few avalanche-style mixing steps help
15
+ * nearby ids map to less-correlated seed values.
16
+ *
13
17
  * @param genomeId - Genome id from NEAT bookkeeping.
14
18
  * @returns Mixed uint32 seed.
15
19
  */
@@ -1,6 +1,11 @@
1
1
  import type { FlappyGameState } from '../flappyEnvironment.ts';
2
2
 
3
- /** Minimal network contract required by Flappy evaluation. */
3
+ /**
4
+ * Minimal network contract required by Flappy evaluation.
5
+ *
6
+ * The evaluation layer depends only on activation plus an optional stable id
7
+ * used for deterministic seed mixing.
8
+ */
4
9
  export interface FlappyNetworkLike {
5
10
  activate(inputs: number[]): number[] | number;
6
11
  _id?: number;
@@ -8,6 +13,9 @@ export interface FlappyNetworkLike {
8
13
 
9
14
  /**
10
15
  * Runtime controls for one rollout evaluation.
16
+ *
17
+ * This is the public control surface for evaluation callers. The rollout layer
18
+ * later normalizes these options into execution-safe context values.
11
19
  */
12
20
  export interface FlappyRolloutOptions {
13
21
  /** Optional deterministic seed. Defaults to mixed genome id. */
@@ -35,7 +43,12 @@ export interface FlappyRolloutOptions {
35
43
  pipeProgressTarget?: number;
36
44
  }
37
45
 
38
- /** Summary metrics for a single Flappy episode rollout. */
46
+ /**
47
+ * Summary metrics for a single Flappy episode rollout.
48
+ *
49
+ * The result intentionally keeps both a single scalar `fitness` and the channel
50
+ * breakdown that produced it, which makes reward debugging much easier.
51
+ */
39
52
  export interface FlappyEpisodeResult {
40
53
  /** Number of simulation frames survived. */
41
54
  framesSurvived: number;
@@ -63,6 +76,9 @@ export interface FlappyEpisodeResult {
63
76
 
64
77
  /**
65
78
  * Aggregate statistics from evaluating one network across shared seeds.
79
+ *
80
+ * These statistics are the trainer-facing view of evaluation quality: mean,
81
+ * median, $p90$, stability, and average gameplay progress.
66
82
  */
67
83
  export interface FlappySeedBatchEvaluation {
68
84
  seedCount: number;