@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,48 @@
1
+ # <Workstream Name> SOLID Split
2
+
3
+ ## Purpose
4
+
5
+ Describe the coordination sink being reduced, the stable surface that must keep
6
+ working, and the target architectural shape after the split.
7
+
8
+ ## Root
9
+
10
+ - Split root: `<path>`
11
+ - Nearest README reviewed: `<path>`
12
+ - Parent README reviewed: `<path or n/a>`
13
+ - Relevant plan: `<path or n/a>`
14
+
15
+ ## Durable Rules
16
+
17
+ - Keep exactly one active step at a time.
18
+ - Update this plan immediately after each completed step.
19
+ - Preserve stable imports unless a breaking change is explicitly approved.
20
+ - Do not hand-edit generated README files; improve source JSDoc and run docs.
21
+ - Keep the true public facade orchestration-first.
22
+
23
+ ## Target Shape
24
+
25
+ - `<facade path>` remains the public facade or compatibility shim.
26
+ - `<subfolder path>` owns extracted helper categories.
27
+ - Public responsibilities remain visible in the facade.
28
+ - Implementation detail moves behind focused `*.services.ts`, `*.utils.ts`,
29
+ `*.types.ts`, `*.errors.ts`, or `*.constants.ts` files.
30
+
31
+ ## Steps
32
+
33
+ - [] Step 1: Map the current boundary, stable imports, and likely helper seams.
34
+ - [] Step 2: Extract the first focused responsibility cluster behind the stable
35
+ facade.
36
+ - [] Step 3: Extract the next responsibility cluster and reduce the facade to
37
+ orchestration-only behavior.
38
+ - [] Step 4: Improve JSDoc so the generated README reads naturally for the new
39
+ boundary.
40
+ - [] Step 5: Validate the touched surface and record the durable boundary note.
41
+
42
+ ## Done Criteria
43
+
44
+ - The target file is no longer the obvious coordination sink.
45
+ - The public facade remains stable and orchestration-first.
46
+ - Extracted helper files own the detailed responsibilities.
47
+ - Generated README output reflects the new shape after docs regeneration.
48
+ - The boundary can be resumed safely in a later session from this plan alone.
@@ -0,0 +1,51 @@
1
+ # Split Workflow Checklist
2
+
3
+ Use this checklist during each SOLID split session.
4
+
5
+ ## Before Editing
6
+
7
+ 1. Confirm the split root and the single durable step for this session.
8
+ 2. Build a full inventory of every `README.md` under the requested root.
9
+ 3. Convert that inventory into an explicit todo list so every README-owning
10
+ folder is visible before edits begin.
11
+ 4. Read the nearest folder `README.md` first.
12
+ 5. Read the nearest useful parent `README.md` if the boundary spans sibling
13
+ areas.
14
+ 6. Read `plans/README.md`.
15
+ 7. Read only the most relevant plan file, with at most one additional related
16
+ plan if needed.
17
+ 8. Inspect the current public surface, its closest helpers, and its main
18
+ consumers.
19
+ 9. Decide whether the current file should remain a public facade, a
20
+ compatibility shim, or the true orchestration entrypoint.
21
+
22
+ ## During the Split
23
+
24
+ 1. Keep exactly one active todo item.
25
+ 2. For documentation-heavy passes, keep that active item bound to one README or
26
+ one README-owning folder at a time.
27
+ 3. Move one responsibility cluster at a time.
28
+ 4. Prefer a dedicated subfolder when the file is a real subsystem.
29
+ 5. Keep the main entrypoint orchestration-first.
30
+ 6. Preserve stable imports where possible.
31
+ 7. Improve JSDoc on touched public surfaces while splitting.
32
+ 8. Add narrow tests only when they increase confidence in the extracted
33
+ boundary.
34
+
35
+ ## Documentation Pass
36
+
37
+ 1. Re-read the generated README mentally through the source JSDoc you touched.
38
+ 2. Add conceptual “what/why” text where the README would otherwise be too dry.
39
+ 3. Add short examples for exported APIs with non-obvious behavior.
40
+ 4. Mention defaults, invariants, error cases, and performance notes when they
41
+ matter.
42
+ 5. Suggest high-value background reading in JSDoc prose for important concepts
43
+ when that would help users learn from the API.
44
+
45
+ ## Validation
46
+
47
+ 1. Run file diagnostics for touched files.
48
+ 2. Run focused tests if the extracted logic has meaningful behavior to lock in.
49
+ 3. Run `npm run docs` when JSDoc or folder shape changed.
50
+ 4. Update the plan immediately after the step is complete.
51
+ 5. Stop and produce the next-session handoff prompt.
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: trace-analyzer-extension
3
+ description: 'Extend scripts/analyze-trace.ts with new rollups, comparisons, script attribution, percentiles, or deterministic report sections. Use when the existing trace analyzer cannot answer an engineering question about Chrome trace or Perfetto data.'
4
+ argument-hint: 'Describe the trace question, missing metric, and validation trace file.'
5
+ user-invocable: true
6
+ disable-model-invocation: false
7
+ ---
8
+
9
+ # Trace Analyzer Extension
10
+
11
+ Use this skill when an agent needs to modify `scripts/analyze-trace.ts` instead
12
+ of only consuming its current output.
13
+
14
+ ## When to Use
15
+
16
+ - The existing analyzer output is not enough to explain a performance problem.
17
+ - A trace audit needs a new deterministic rollup or comparison section.
18
+ - A hotspot needs better attribution by bundle, worker URL, thread, or event.
19
+ - The report needs percentiles, top-N comparisons, or a tighter summary format.
20
+ - A one-off shell command would be too fragile or too noisy to repeat.
21
+
22
+ ## Primary Resources
23
+
24
+ - [Analyzer extension workflow](./references/analyzer-extension-workflow.md)
25
+ - [Extension checklist](./assets/extension-checklist.md)
26
+
27
+ ## Standard Workflow
28
+
29
+ 1. State the engineering question the current analyzer cannot answer.
30
+ 2. Read `scripts/analyze-trace.ts` before proposing a new section.
31
+ 3. Prefer extending existing helpers over adding parallel ad hoc logic.
32
+ 4. Keep output deterministic, text-first, and easy to compare across captures.
33
+ 5. Validate the new output against a real trace file from the repo.
34
+ 6. If the new section changes how agents should interpret results, update the
35
+ reporting skill or its reference docs too.
36
+
37
+ ## Output Design Rules
38
+
39
+ - New sections must answer a concrete engineering question.
40
+ - Prefer compact tables or one-line summaries over verbose prose.
41
+ - Keep ordering deterministic by value, then stable by name when needed.
42
+ - Preserve thread awareness so renderer, worker, browser, and GPU work remain
43
+ separable.
44
+ - Avoid sections that require manual post-processing to become useful.
45
+
46
+ ## Guardrails
47
+
48
+ - Do not add output that duplicates an existing section with minor formatting
49
+ changes.
50
+ - Do not overfit the analyzer to one trace unless the repo clearly needs that
51
+ exact workflow.
52
+ - Do not add non-deterministic timestamps, colors, or formatting noise.
53
+ - Do not pull in a new dependency unless the existing TypeScript runtime cannot
54
+ reasonably support the change.
55
+ - Keep JSDoc current when adding helpers or changing CLI behavior.
56
+
57
+ ## Repo-Specific Notes
58
+
59
+ - The analyzer is intentionally lightweight and runs through `ts-node`.
60
+ - The script already supports thread summaries, longest events, event rollups,
61
+ function-call attribution, and percentile summaries for selected events.
62
+ - Extend the current architecture instead of replacing it with a large parser
63
+ abstraction unless the script has clearly outgrown the current shape.
@@ -0,0 +1,24 @@
1
+ # Trace Analyzer Extension Checklist
2
+
3
+ Use this checklist before finalizing changes to `scripts/analyze-trace.ts`.
4
+
5
+ ## Before Editing
6
+
7
+ - Identify the exact engineering question.
8
+ - Confirm the current analyzer cannot already answer it.
9
+ - Pick the smallest extension type: rollup, attribution, or comparison.
10
+
11
+ ## During Editing
12
+
13
+ - Keep the new logic deterministic.
14
+ - Reuse existing helper patterns for duration conversion and thread labeling.
15
+ - Add or update JSDoc for any new helper or CLI option.
16
+ - Keep the report readable in a plain terminal.
17
+
18
+ ## Before Finalizing
19
+
20
+ - Run the analyzer on a real repo trace.
21
+ - Confirm the new section is actionable.
22
+ - Confirm the new section does not duplicate older output.
23
+ - Update the reporting skill if the default workflow changed.
24
+ - Summarize the engineering value of the new section, not just the code change.
@@ -0,0 +1,101 @@
1
+ # Analyzer Extension Workflow
2
+
3
+ This reference explains how to safely extend `scripts/analyze-trace.ts` without
4
+ turning it into a one-off debugging script.
5
+
6
+ ## Start With the Question
7
+
8
+ Write the missing question in one sentence.
9
+
10
+ Good examples:
11
+
12
+ - Which thread owns most `HandlePostMessage` time?
13
+ - Which script URLs dominate `FunctionCall` on dropped-frame traces?
14
+ - Are frame spikes coming from a few outliers or a broad high-percentile shift?
15
+ - How do two traces compare on dropped frames, worker totals, and hottest
16
+ events?
17
+
18
+ If the question is vague, the output section will usually be vague too.
19
+
20
+ ## Preferred Extension Types
21
+
22
+ Choose the smallest useful extension.
23
+
24
+ ### 1. New rollup section
25
+
26
+ Use when the event exists already and only aggregation is missing.
27
+
28
+ Examples:
29
+
30
+ - event totals by thread,
31
+ - `HandlePostMessage` by worker URL,
32
+ - `RunTask` by thread category.
33
+
34
+ ### 2. Better attribution
35
+
36
+ Use when a current section is correct but not actionable enough.
37
+
38
+ Examples:
39
+
40
+ - resolve script URL from event args,
41
+ - surface worker URL alongside generic worker thread labels,
42
+ - split browser-main and renderer-main owners more clearly.
43
+
44
+ ### 3. Comparison mode
45
+
46
+ Use when engineers need baseline-versus-candidate reporting.
47
+
48
+ Examples:
49
+
50
+ - compare dropped frames between two traces,
51
+ - compare top events and top threads side by side,
52
+ - compare p50, p90, p99 frame metrics.
53
+
54
+ Only add comparison mode if the repo is likely to reuse it.
55
+
56
+ ## Implementation Guidance
57
+
58
+ Follow this order:
59
+
60
+ 1. Add or adjust the smallest data helper needed.
61
+ 2. Reuse existing normalization helpers for thread labels and durations.
62
+ 3. Keep the section printer near the existing report flow in `main()`.
63
+ 4. Preserve the current compact textual style.
64
+ 5. Add or update JSDoc for new helpers and CLI flags.
65
+
66
+ ## Validation Workflow
67
+
68
+ Validate against a real trace from the repository.
69
+
70
+ Recommended command pattern:
71
+
72
+ ```bash
73
+ npm run trace:analyze -- <trace-path> --top=15
74
+ ```
75
+
76
+ Validation questions:
77
+
78
+ - Does the new section answer the intended question directly?
79
+ - Is the output deterministic between runs?
80
+ - Does the new section avoid duplicating older sections?
81
+ - Does the script still work for a normal single-trace audit?
82
+
83
+ ## When to Update the Reporting Skill
84
+
85
+ Update `.github/skills/trace-audit-reporting/` when the analyzer extension
86
+ changes the default audit workflow.
87
+
88
+ Examples:
89
+
90
+ - a new high-value summary section should be mentioned in the workflow,
91
+ - a new comparison mode becomes standard for regression triage,
92
+ - a new CLI flag changes the recommended command.
93
+
94
+ ## Anti-Patterns
95
+
96
+ - Adding raw JSON dumps.
97
+ - Adding wide output that is hard to scan in chat or terminals.
98
+ - Mixing data collection, formatting, and CLI parsing into one large helper.
99
+ - Replacing deterministic summaries with subjective prose inside the script.
100
+ - Adding a feature that only makes sense for one trace file with no reusable
101
+ value.
@@ -0,0 +1,96 @@
1
+ ---
2
+ name: trace-audit-reporting
3
+ description: 'Analyze Chrome trace or Perfetto trace captures, run scripts/analyze-trace.ts, map hotspots to NeatapticTS source files, and generate a detailed performance report with findings, evidence, and an action plan. Use when auditing renderer, worker, GPU, requestAnimationFrame, postMessage, or long-task regressions.'
4
+ argument-hint: 'Describe the trace file, feature area, and target report file.'
5
+ user-invocable: true
6
+ disable-model-invocation: false
7
+ ---
8
+
9
+ # Trace Audit Reporting
10
+
11
+ Use this skill when an agent needs to inspect a Chrome or Perfetto trace,
12
+ summarize hotspots, connect them back to workspace code, and produce a durable
13
+ performance report.
14
+
15
+ ## When to Use
16
+
17
+ - Analyze a Chrome trace export or Perfetto JSON capture.
18
+ - Investigate renderer, worker, GPU, `requestAnimationFrame`, or `postMessage`
19
+ bottlenecks.
20
+ - Explain whether a regression is demo-layer, protocol-layer, or core-library.
21
+ - Write a report into a plan file such as `performance.plan.md`.
22
+ - Reuse the repository trace tooling instead of manually inspecting raw JSON.
23
+
24
+ ## Demo-to-library policy
25
+
26
+ When a trace captured from a demo or example exposes a mismatch between obvious
27
+ user intent and the library's public behavior, treat the demo as a diagnostic
28
+ surface for the library rather than the final destination for a workaround.
29
+
30
+ - Prefer recommending a library-level API/default/runtime fix when the same gap
31
+ could affect downstream users.
32
+ - Recommend demo-local optimizations only for genuinely demo-specific rendering,
33
+ protocol, or presentation issues.
34
+ - In reports and action plans, state clearly whether a finding should be fixed
35
+ in the library, in shared infrastructure, or only in the demo.
36
+
37
+ ## Primary Resources
38
+
39
+ - [Trace analysis workflow](./references/trace-analysis-workflow.md)
40
+ - [Performance report template](./assets/performance-report-template.md)
41
+ - Companion skill: `trace-analyzer-extension` for modifying
42
+ `scripts/analyze-trace.ts` itself when new rollups or comparisons are needed.
43
+
44
+ ## Standard Workflow
45
+
46
+ 1. Confirm the trace file path and the target area being audited.
47
+ 2. Read the nearest folder `README.md` files before opening implementation
48
+ files so module boundaries are clear.
49
+ 3. Run the repo analyzer:
50
+
51
+ ```bash
52
+ npm run trace:analyze -- <trace-path> --top=15
53
+ ```
54
+
55
+ 4. Extract the high-signal metrics first:
56
+ - trace window and event count,
57
+ - dropped frames,
58
+ - thread totals,
59
+ - longest `RunTask`, `FunctionCall`, `FireAnimationFrame`, and
60
+ `HandlePostMessage` events,
61
+ - hottest bundle or script names.
62
+ 5. Read only the code needed to explain the top hotspots.
63
+ 6. Separate findings into layers:
64
+ - demo or app rendering,
65
+ - worker or protocol,
66
+ - core NeatapticTS runtime.
67
+ 7. Write a report using the template resource, then tailor it to the actual
68
+ trace evidence.
69
+
70
+ ## Required Output Standards
71
+
72
+ - Do not stop at trace numbers. Tie each major hotspot to concrete source files.
73
+ - Distinguish user-visible stutter from background or scalability issues.
74
+ - State what is primary versus secondary in the trace.
75
+ - End with a prioritized action plan, not a flat list of ideas.
76
+ - Prefer reusable scripts under `scripts/` if the existing analyzer is missing
77
+ an important aggregation.
78
+
79
+ ## Guardrails
80
+
81
+ - Do not hand-wave from one long task. Use repeated totals and longest-event
82
+ summaries together.
83
+ - Do not assume the worker is the bottleneck if renderer main-thread
84
+ `FunctionCall` or `FireAnimationFrame` dominates.
85
+ - Do not edit generated `src/**/README.md` files. Improve source JSDoc instead.
86
+ - If you modify trace tooling, keep the script deterministic and documented with
87
+ JSDoc.
88
+
89
+ ## Repo-Specific Notes
90
+
91
+ - This repository already includes `scripts/analyze-trace.ts` for compact,
92
+ thread-aware trace audits.
93
+ - For work in `src/` or `test/`, consult the nearest folder `README.md` before
94
+ deep file reads.
95
+ - For substantial architecture findings, align the report with the relevant
96
+ `plans/` document when one exists.
@@ -0,0 +1,123 @@
1
+ # Performance Audit
2
+
3
+ ## Scope
4
+
5
+ This report summarizes the performance audit of `<trace-file>` for
6
+ `<feature-area>`.
7
+
8
+ The audit focused on:
9
+
10
+ 1. Where the system spends time in practice.
11
+ 2. Which issues belong to the app layer, protocol layer, or core runtime.
12
+
13
+ The trace was analyzed with:
14
+
15
+ ```bash
16
+ npm run trace:analyze -- <trace-path> --top=15
17
+ ```
18
+
19
+ ## Executive Summary
20
+
21
+ State the dominant bottleneck first, then the secondary bottleneck, then the
22
+ highest-leverage fix.
23
+
24
+ ## Trace Summary
25
+
26
+ - Trace window: `<value>`
27
+ - Event count: `<value>`
28
+ - Frames observed: `<value>`
29
+ - Dropped frames: `<value>`
30
+
31
+ ### Thread Summary
32
+
33
+ - `<thread>`: `<summary>`
34
+ - `<thread>`: `<summary>`
35
+
36
+ ### Longest Events
37
+
38
+ - `<duration>` on `<thread>` for `<event>`
39
+ - `<duration>` on `<thread>` for `<event>`
40
+
41
+ ### Event Rollups
42
+
43
+ - `<event>`: `<summary>`
44
+ - `<event>`: `<summary>`
45
+
46
+ ## Detailed Findings
47
+
48
+ ### 1. Primary bottleneck
49
+
50
+ Explain the strongest repeated signal and why it matters.
51
+
52
+ Evidence:
53
+
54
+ - `<evidence>`
55
+ - `<evidence>`
56
+
57
+ Interpretation:
58
+
59
+ - `<interpretation>`
60
+
61
+ ### 2. Secondary bottleneck
62
+
63
+ Explain the next most important cost.
64
+
65
+ ### 3. Root-cause detail
66
+
67
+ Tie the hotspot to specific source files and runtime behavior.
68
+
69
+ ## Root Cause Summary
70
+
71
+ ### App or demo layer
72
+
73
+ 1. `<cause>`
74
+ 2. `<cause>`
75
+
76
+ ### Core runtime layer
77
+
78
+ 1. `<cause>`
79
+ 2. `<cause>`
80
+
81
+ ## Prioritized Action Plan
82
+
83
+ ### Priority 1
84
+
85
+ Goal:
86
+
87
+ - `<goal>`
88
+
89
+ Actions:
90
+
91
+ 1. `<action>`
92
+ 2. `<action>`
93
+
94
+ Expected impact:
95
+
96
+ - `<impact>`
97
+
98
+ Risk:
99
+
100
+ - `<risk>`
101
+
102
+ ### Priority 2
103
+
104
+ Repeat the same structure for the next action group.
105
+
106
+ ## Validation Plan
107
+
108
+ After each optimization pass, collect a fresh trace and compare:
109
+
110
+ - dropped frame count,
111
+ - renderer main-thread total,
112
+ - worker total,
113
+ - hottest `FunctionCall`,
114
+ - hottest transport or GPU events.
115
+
116
+ ## Final Conclusions
117
+
118
+ Summarize:
119
+
120
+ 1. what is bottlenecked now,
121
+ 2. what matters most to users,
122
+ 3. what matters most for scalability,
123
+ 4. what should be implemented next.
@@ -0,0 +1,132 @@
1
+ # Trace Analysis Workflow
2
+
3
+ This reference explains how to use the repository trace analyzer and how to turn
4
+ its output into a useful engineering report.
5
+
6
+ ## Inputs
7
+
8
+ Collect these inputs before starting:
9
+
10
+ - Trace path.
11
+ - Feature or subsystem being audited.
12
+ - Target report path.
13
+ - Any known user concern such as dropped frames, worker saturation, or GPU load.
14
+
15
+ ## Command
16
+
17
+ Run the standard analyzer from the repository root:
18
+
19
+ ```bash
20
+ npm run trace:analyze -- <trace-path> --top=15
21
+ ```
22
+
23
+ Example:
24
+
25
+ ```bash
26
+ npm run trace:analyze -- test/examples/flappy_bird/Trace-20260309T191949.json --top=15
27
+ ```
28
+
29
+ ## What the Analyzer Produces
30
+
31
+ The script prints these sections:
32
+
33
+ - `Trace`: file path, total time window, event count, dropped frames.
34
+ - `Thread Summary`: per-thread total duration, `RunTask` totals, long-task
35
+ counts, and max task length.
36
+ - `Animation Frames`: aggregate duration distribution for
37
+ `FireAnimationFrame` and `FunctionCall`.
38
+ - `Longest Events`: exact worst stalls with thread and script attribution.
39
+ - `Top Events`: event-name rollups such as `RunTask`, `GPUTask`, and
40
+ `HandlePostMessage`.
41
+ - `Top Function Calls`: hottest bundles or script URLs.
42
+
43
+ ## Interpretation Order
44
+
45
+ Read the output in this order.
46
+
47
+ ### 1. Establish the bottleneck layer
48
+
49
+ Use `Thread Summary` and `Longest Events` to decide which layer dominates:
50
+
51
+ - Renderer main thread dominant:
52
+ likely render-loop or main-thread orchestration cost.
53
+ - Dedicated worker dominant:
54
+ likely simulation, inference, serialization, or protocol cost.
55
+ - GPU threads dominant:
56
+ likely heavy canvas, image upload, filters, or compositing cost.
57
+
58
+ Do not rely on one section alone.
59
+
60
+ ### 2. Identify user-visible symptoms
61
+
62
+ Focus on:
63
+
64
+ - dropped frames,
65
+ - long `RunTask`,
66
+ - long `FireAnimationFrame`,
67
+ - large renderer-side `FunctionCall` totals.
68
+
69
+ These are the best signals for visible jank.
70
+
71
+ ### 3. Identify scalability risks
72
+
73
+ Focus on:
74
+
75
+ - worker-side `FunctionCall`,
76
+ - `HandlePostMessage`,
77
+ - repeated clone or transport costs,
78
+ - core activation or inference loops.
79
+
80
+ These may not be the current visible bottleneck but often become the next one.
81
+
82
+ ### 4. Map hotspots to code
83
+
84
+ Read only the files that explain the top offenders. Start from the nearest
85
+ folder `README.md`, then inspect the implementation entry points.
86
+
87
+ Typical mapping examples:
88
+
89
+ - `FireAnimationFrame` plus renderer `FunctionCall`:
90
+ inspect animation loop and render services.
91
+ - `HandlePostMessage`:
92
+ inspect worker protocol, request helpers, and snapshot serialization.
93
+ - Worker `FunctionCall`:
94
+ inspect simulation stepping, inference calls, and hot math loops.
95
+
96
+ ## Report Writing Rules
97
+
98
+ Every report should include:
99
+
100
+ 1. Scope.
101
+ 2. Executive summary.
102
+ 3. Trace summary with concrete numbers.
103
+ 4. Detailed findings tied to source files.
104
+ 5. Root-cause summary split by layer.
105
+ 6. Prioritized action plan.
106
+ 7. Validation plan for the next trace capture.
107
+
108
+ ## Repo-Specific Heuristics for NeatapticTS
109
+
110
+ Use these heuristics when the trace touches evaluation or inference paths:
111
+
112
+ - Check whether a feed-forward workload is actually using the fast slab path.
113
+ - Verify whether acyclic constraints are explicit or merely implied.
114
+ - Treat renderer pain and runtime pain as separate questions.
115
+ - If the trace is app-heavy, do not over-rotate into core-library fixes.
116
+
117
+ ## When to Extend the Analyzer
118
+
119
+ Modify `scripts/analyze-trace.ts` only when the existing output cannot answer a
120
+ meaningful engineering question.
121
+
122
+ Good reasons to extend it:
123
+
124
+ - need a new event rollup,
125
+ - need better script attribution,
126
+ - need percentile or histogram data,
127
+ - need a deterministic comparison-friendly output section.
128
+
129
+ Poor reasons to extend it:
130
+
131
+ - one-off formatting preference,
132
+ - data that can already be inferred from the existing sections.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reicek/neataptic-ts",
3
- "version": "0.1.21",
3
+ "version": "0.1.23",
4
4
  "description": "Architecture-free neural network library with genetic algorithm implementations",
5
5
  "main": "./dist/neataptic.js",
6
6
  "module": "./dist/neataptic.js",
@@ -19,19 +19,23 @@
19
19
  "build:ascii-maze": "npx esbuild test/examples/asciiMaze/browser-entry.ts --bundle --outfile=docs/assets/ascii-maze.bundle.js --platform=browser --format=iife --minify --sourcemap --external:fs --external:child_process --external:path",
20
20
  "build:flappy-worker": "npx esbuild test/examples/flappy_bird/flappyEvolution.worker.ts --bundle --outfile=docs/assets/flappy-evolution.worker.bundle.js --platform=browser --format=iife --minify --sourcemap --external:fs --external:child_process --external:path",
21
21
  "build:flappy-bird": "npx esbuild test/examples/flappy_bird/browser-entry/browser-entry.ts --bundle --outfile=docs/assets/flappy-bird.bundle.js --platform=browser --format=iife --minify --sourcemap --external:fs --external:child_process --external:path",
22
+ "trace:analyze": "npx ts-node scripts/analyze-trace.ts",
22
23
  "start:local-server": "npx http-server . -p 8080 -c-1",
23
24
  "start:ts": "ts-node src/neataptic.ts",
24
25
  "test:e2e": "cross-env FORCE_COLOR=true jest e2e.test.ts --no-cache --runInBand",
25
26
  "test:e2e:logs": "npx jest e2e.test.ts --verbose --runInBand --no-cache",
26
27
  "test:dist": "npm run build:ts && jest --no-cache --coverage --collect-coverage --runInBand --testPathIgnorePatterns=.e2e.test.ts",
27
28
  "docs:build-scripts": "tsc -p tsconfig.docs.json && node scripts/write-dist-docs-pkg.mjs",
28
- "docs:folders": "npm run docs:build-scripts && node ./dist-docs/scripts/generate-docs.js",
29
+ "docs:folders:src": "npm run docs:build-scripts && node ./dist-docs/scripts/generate-docs.js --target=src",
30
+ "docs:folders:asciiMaze": "npm run docs:build-scripts && node ./dist-docs/scripts/generate-docs.js --target=asciiMaze",
31
+ "docs:folders:flappy-bird": "npm run docs:build-scripts && node ./dist-docs/scripts/generate-docs.js --target=flappy-bird",
32
+ "docs:folders": "npm run docs:folders:src && npm run docs:folders:asciiMaze && npm run docs:folders:flappy-bird",
29
33
  "docs:html": "npm run docs:build-scripts && node ./dist-docs/scripts/render-docs-html.js",
30
34
  "docs:examples": "node scripts/copy-examples.mjs",
31
35
  "prettier": "npm run prettier:tests && npm run prettier:src",
32
36
  "prettier:tests": "npx prettier --write test/**/*.ts",
33
37
  "prettier:src": "npx prettier --write src/**/*.ts",
34
- "docs": "npm run build:ascii-maze && npm run build:flappy-worker && npm run build:flappy-bird && npm run docs:examples && npm run docs:build-scripts && node ./dist-docs/scripts/generate-docs.js && node ./dist-docs/scripts/render-docs-html.js",
38
+ "docs": "npm run build:ascii-maze && npm run build:flappy-worker && npm run build:flappy-bird && npm run docs:examples && npm run docs:folders && node ./dist-docs/scripts/render-docs-html.js",
35
39
  "lint": "eslint src/ test/",
36
40
  "lint:fix": "eslint src/ --fix",
37
41
  "onnx:export": "node scripts/export-onnx.mjs"