@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,1068 @@
1
+ # browser-entry/playback/background/ground-grid
2
+
3
+ ## browser-entry/playback/background/ground-grid/playback.background.ground-grid.types.ts
4
+
5
+ ### PlaybackBackgroundGroundGridRequest
6
+
7
+ Narrow request required to render the playback ground grid.
8
+
9
+ The ground grid only needs time and world-scroll context. That separation is
10
+ deliberate: the lower-band renderer should respond to camera motion like a
11
+ piece of scenic lighting, not reach into gameplay entities or playback HUD
12
+ state.
13
+
14
+ ### PlaybackBackgroundGroundGridResolvedScene
15
+
16
+ Geometry and style package resolved before drawing the ground grid.
17
+
18
+ Splitting scene resolution from drawing keeps canvas code simple: by the time
19
+ the renderer runs, every geometric and palette decision has already been made
20
+ and packed into one immutable object graph.
21
+
22
+ ### PlaybackBackgroundGroundGridSceneContext
23
+
24
+ Immutable scene context resolved for one lower-band ground-grid pass.
25
+
26
+ This is the adapted subset of the shared background scene that the ground
27
+ grid cares about: horizon position, lower-band bounds, and the centered
28
+ vanishing point that gives the grid its forced-perspective look.
29
+
30
+ ### PlaybackBackgroundGroundGridSourceScene
31
+
32
+ Helper alias used when adapting the shared background scene context.
33
+
34
+ The parent background module owns the full sky-plus-ground scene contract;
35
+ the grid renderer narrows that shape to only the fields needed for the lower
36
+ band so the dependency direction stays clear.
37
+
38
+ ### PlaybackBackgroundGroundGridStyle
39
+
40
+ Theme-owned style contract for the neon ground grid.
41
+
42
+ The ground grid uses three coordinated colors: the structural line work, a
43
+ fog wash that softens the lower band, and small pulse markers that briefly
44
+ travel along eligible tracks.
45
+
46
+ ### PlaybackGroundGridAnchorBounds
47
+
48
+ Visible horizon bounds projected onto the bottom anchor line.
49
+
50
+ Perspective rays begin conceptually at the horizon and terminate on the floor
51
+ anchor line, so this structure captures the visible lane span after the
52
+ horizon segment has been projected downward.
53
+
54
+ ### PlaybackGroundGridAnchorBoundsInput
55
+
56
+ Input used when projecting a visible horizon span onto anchor space.
57
+
58
+ ### PlaybackGroundGridAnchorProjectionInput
59
+
60
+ Input used when projecting one horizon x-position onto the floor anchor line.
61
+
62
+ ### PlaybackGroundGridGeometry
63
+
64
+ Pure geometry bundle generated before canvas drawing begins.
65
+
66
+ Horizontal bands, vertical rays, and the optional pulse are resolved into one
67
+ package so the draw layer can stay strictly about paint order.
68
+
69
+ ### PlaybackGroundGridHorizontalGeometry
70
+
71
+ Cached horizontal geometry bundle reused across matching scene sizes.
72
+
73
+ Horizontal depth lines are stable for a given viewport, which makes them the
74
+ cheapest part of the grid to cache aggressively.
75
+
76
+ ### PlaybackGroundGridHorizontalGeometryFactory
77
+
78
+ `() => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridHorizontalGeometry`
79
+
80
+ Lazy builder used when one horizontal geometry cache entry is missing.
81
+
82
+ Horizontal depth bands depend only on stable scene dimensions, so callers can
83
+ defer their construction until a cache miss proves the work is actually
84
+ needed.
85
+
86
+ ### PlaybackGroundGridLineSegment
87
+
88
+ Declarative line segment model used by the ground-grid renderer.
89
+
90
+ The grid is built as plain data first so batch builders can group segments by
91
+ shared style before any canvas path or glow work happens.
92
+
93
+ ### PlaybackGroundGridPulse
94
+
95
+ One visible pulse square rendered above the grid lines.
96
+
97
+ These pulses are tiny accent lights, not gameplay markers. Their job is to
98
+ give the lower band a hint of moving circuitry without competing with birds,
99
+ pipes, or the active network HUD.
100
+
101
+ ### PlaybackGroundGridPulseInput
102
+
103
+ Input contract used while resolving one deterministic pulse event.
104
+
105
+ Pulses are deterministic decoration: given the same frame and scene, the same
106
+ lane should light up. This input bundle gathers the candidate paths needed to
107
+ make that choice without consulting external state.
108
+
109
+ ### PlaybackGroundGridPulseOrientation
110
+
111
+ Travel orientation used by lightweight pulse overlays.
112
+
113
+ Horizontal pulses skim along depth bands, while vertical pulses ride the
114
+ perspective rays toward or away from the horizon.
115
+
116
+ ### PlaybackGroundGridPulsePath
117
+
118
+ Simplified path used by one visible pulse event.
119
+
120
+ Pulses do not need the full batch geometry; they only need a single lane to
121
+ travel along, represented here as a start-end segment plus local thickness.
122
+
123
+ ### PlaybackGroundGridPulseTimingState
124
+
125
+ Timing state resolved for one deterministic ground-grid pulse slot.
126
+
127
+ The slot model keeps pulse timing legible: each pulse has a start bucket, an
128
+ elapsed time inside that bucket, and a normalized progress value used by the
129
+ position and fade helpers.
130
+
131
+ ### PlaybackGroundGridPulseTrackThicknessInput
132
+
133
+ Input used when adapting a pulse position into a local track thickness.
134
+
135
+ Because the grid uses perspective-weighted stroke widths, the pulse size must
136
+ be adjusted to the local lane thickness rather than using one fixed square.
137
+
138
+ ### PlaybackGroundGridPulseTravelRatioInput
139
+
140
+ Direction and timing state used when resolving pulse travel progress.
141
+
142
+ Some pulse lanes feel better moving away from the viewer and others toward
143
+ it, so travel resolution keeps orientation and forward/reverse intent paired
144
+ with the current lifetime progress.
145
+
146
+ ### PlaybackGroundGridSegmentBatch
147
+
148
+ Ordered batch of line segments that share one render style.
149
+
150
+ Grouping segments by alpha, blur, and thickness reduces canvas state churn
151
+ and gives the renderer a natural place to cache `Path2D` instances when the
152
+ environment supports them.
153
+
154
+ ### PlaybackGroundGridVerticalCycleContext
155
+
156
+ Wrapped vertical-cycle state derived from scroll for one frame.
157
+
158
+ The perspective rays repeat on a fixed cycle. Wrapping the scroll state lets
159
+ the renderer reuse cached geometry while still appearing to drift sideways.
160
+
161
+ ### PlaybackGroundGridVerticalGeometry
162
+
163
+ Cached vertical geometry bundle reused across one wrapped scroll cycle.
164
+
165
+ Vertical rays move with scroll, but only within a repeating wrapped cycle.
166
+ Caching at that granularity captures most of the reuse without pretending the
167
+ rays are globally static.
168
+
169
+ ### PlaybackGroundGridVerticalGeometryFactory
170
+
171
+ `() => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridVerticalGeometry`
172
+
173
+ Lazy builder used when one vertical geometry cache entry is missing.
174
+
175
+ Vertical rays additionally depend on wrapped scroll state, so the cache keeps
176
+ a compact builder hook rather than eagerly storing every possible cycle.
177
+
178
+ ### PlaybackGroundGridVerticalPulseContinuationState
179
+
180
+ Cached continuation state used to keep one vertical pulse on the same ray.
181
+
182
+ Without this continuity state a vertical pulse could jitter between adjacent
183
+ rays across frames, which looks like noise instead of a deliberate light.
184
+
185
+ ### PlaybackGroundGridVerticalRayInput
186
+
187
+ Internal helper contract used while generating vertical-ray sub-segments.
188
+
189
+ Each vertical ray is split into depth-aware pieces so stroke thickness and
190
+ glow can evolve as the ray approaches the viewer instead of staying uniform.
191
+
192
+ ### PlaybackGroundGridVerticalSceneMetrics
193
+
194
+ Cached scene metrics reused across matching vertical-grid frames.
195
+
196
+ These metrics answer the expensive geometric questions once per viewport,
197
+ such as how wide the visible anchor span is and how many perspective lanes
198
+ can fit while preserving the intended spacing.
199
+
200
+ ### PlaybackGroundGridVerticalSceneMetricsFactory
201
+
202
+ `() => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridVerticalSceneMetrics`
203
+
204
+ Lazy builder used when one vertical scene-metrics cache entry is missing.
205
+
206
+ Scene metrics such as projected anchor bounds are pure functions of the
207
+ viewport, which makes them ideal cache inputs for the performance-sensitive
208
+ lower-band renderer.
209
+
210
+ ## browser-entry/playback/background/ground-grid/playback.background.ground-grid.ts
211
+
212
+ ### renderPlaybackBackgroundGroundGrid
213
+
214
+ `(context: CanvasRenderingContext2D, sourceScene: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackBackgroundGroundGridSourceScene, request: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackBackgroundGroundGridRequest) => void`
215
+
216
+ Draws the neon lower-band ground grid beneath the horizon.
217
+
218
+ The grid is intentionally stylized rather than physically realistic: fixed
219
+ horizontal depth bands compress toward the horizon, while moving perspective
220
+ rays slide sideways but still converge to the centered vanishing point.
221
+
222
+ Parameters:
223
+ - `context` - - Canvas 2D drawing context.
224
+ - `sourceScene` - - Shared lower-band geometry from the background module.
225
+ - `request` - - Shared parallax scroll input for the current frame.
226
+
227
+ Returns: Nothing.
228
+
229
+ ## browser-entry/playback/background/ground-grid/playback.background.ground-grid.services.ts
230
+
231
+ ### drawGroundGridFog
232
+
233
+ `(context: CanvasRenderingContext2D, resolvedScene: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackBackgroundGroundGridResolvedScene) => void`
234
+
235
+ Draws the lower-band atmospheric wash behind the neon line work.
236
+
237
+ Parameters:
238
+ - `context` - - Canvas 2D drawing context.
239
+ - `resolvedScene` - - Geometry and style for the current viewport.
240
+
241
+ Returns: Nothing.
242
+
243
+ ### drawGroundGridPulse
244
+
245
+ `(context: CanvasRenderingContext2D, pulse: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridPulse | null, fillColor: string) => void`
246
+
247
+ Draws one pulse square above the grid lines and below gameplay entities.
248
+
249
+ Parameters:
250
+ - `context` - - Canvas 2D drawing context.
251
+ - `pulse` - - Visible pulse square for the current frame.
252
+ - `fillColor` - - Core neon fill color.
253
+
254
+ Returns: Nothing.
255
+
256
+ ### drawGroundGridSegmentBatch
257
+
258
+ `(context: CanvasRenderingContext2D, batch: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridSegmentBatch) => void`
259
+
260
+ Draws one batch of neon line segments that share one render style.
261
+
262
+ Parameters:
263
+ - `context` - - Canvas 2D drawing context.
264
+ - `batch` - - Ordered line-segment batch that shares one render style.
265
+
266
+ Returns: Nothing.
267
+
268
+ ### drawGroundGridSegmentBatches
269
+
270
+ `(context: CanvasRenderingContext2D, batches: readonly import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridSegmentBatch[], lineColor: string) => void`
271
+
272
+ Draws one ordered collection of neon segment batches.
273
+
274
+ Parameters:
275
+ - `context` - - Canvas 2D drawing context.
276
+ - `batches` - - Ordered line-segment batches to render.
277
+ - `lineColor` - - Core neon stroke color.
278
+
279
+ Returns: Nothing.
280
+
281
+ ### drawPlaybackGroundGrid
282
+
283
+ `(context: CanvasRenderingContext2D, resolvedScene: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackBackgroundGroundGridResolvedScene, geometry: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridGeometry) => void`
284
+
285
+ Draws the resolved neon ground grid inside the lower background band.
286
+
287
+ Parameters:
288
+ - `context` - - Canvas 2D drawing context.
289
+ - `resolvedScene` - - Geometry and style for the current viewport.
290
+ - `geometry` - - Precomputed horizontal and vertical line segments.
291
+
292
+ Returns: Nothing.
293
+
294
+ ## browser-entry/playback/background/ground-grid/playback.background.ground-grid.constants.ts
295
+
296
+ ### FLAPPY_BACKGROUND_GROUND_GRID_STYLE
297
+
298
+ ### FLAPPY_GROUND_GRID_APPROX_FRAME_DURATION_MS
299
+
300
+ ### FLAPPY_GROUND_GRID_DEPTH_CURVE_EXPONENT
301
+
302
+ ### FLAPPY_GROUND_GRID_FOG_ALPHA
303
+
304
+ ### FLAPPY_GROUND_GRID_FOG_HEIGHT_RATIO
305
+
306
+ ### FLAPPY_GROUND_GRID_HORIZONTAL_LINE_COUNT
307
+
308
+ ### FLAPPY_GROUND_GRID_MAX_ALPHA
309
+
310
+ ### FLAPPY_GROUND_GRID_MAX_BLUR_PX
311
+
312
+ ### FLAPPY_GROUND_GRID_MAX_THICKNESS_PX
313
+
314
+ ### FLAPPY_GROUND_GRID_MIN_ALPHA
315
+
316
+ ### FLAPPY_GROUND_GRID_MIN_BLUR_PX
317
+
318
+ ### FLAPPY_GROUND_GRID_MIN_THICKNESS_PX
319
+
320
+ ### FLAPPY_GROUND_GRID_MIN_VERTICAL_LINE_COUNT
321
+
322
+ ### FLAPPY_GROUND_GRID_PIPE_CONNECTION_LINE_OFFSET_FROM_BOTTOM
323
+
324
+ ### FLAPPY_GROUND_GRID_PULSE_ALPHA
325
+
326
+ ### FLAPPY_GROUND_GRID_PULSE_INTERVAL_MS
327
+
328
+ ### FLAPPY_GROUND_GRID_PULSE_LIFETIME_MS
329
+
330
+ ### FLAPPY_GROUND_GRID_PULSE_MAX_SIZE_PX
331
+
332
+ ### FLAPPY_GROUND_GRID_PULSE_MIN_ELIGIBLE_THICKNESS_PX
333
+
334
+ ### FLAPPY_GROUND_GRID_PULSE_MIN_SIZE_PX
335
+
336
+ ### FLAPPY_GROUND_GRID_PULSE_PREFERRED_HORIZONTAL_START_RATIO
337
+
338
+ ### FLAPPY_GROUND_GRID_PULSE_VISIBLE_VIEWPORT_INSET_PX
339
+
340
+ ### FLAPPY_GROUND_GRID_SCROLL_OFFSET_QUANTIZATION_DECIMALS
341
+
342
+ ### FLAPPY_GROUND_GRID_SCROLL_RATIO
343
+
344
+ ### FLAPPY_GROUND_GRID_TARGET_VERTICAL_LINE_SPACING_PX
345
+
346
+ ### FLAPPY_GROUND_GRID_TARGET_VERTICAL_SEGMENT_HEIGHT_PX
347
+
348
+ ### FLAPPY_GROUND_GRID_UNSIGNED_NORMALIZATION_DIVISOR
349
+
350
+ ### FLAPPY_GROUND_GRID_VERTICAL_OVERFLOW_COUNT
351
+
352
+ ### FLAPPY_GROUND_GRID_VERTICAL_PULSE_END_RATIO
353
+
354
+ ### FLAPPY_GROUND_GRID_VERTICAL_PULSE_START_RATIO
355
+
356
+ ## browser-entry/playback/background/ground-grid/playback.background.ground-grid.batch.services.ts
357
+
358
+ ### drawGroundGridSegmentBatch
359
+
360
+ `(context: CanvasRenderingContext2D, batch: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridSegmentBatch) => void`
361
+
362
+ Draws one batch of neon line segments that share one render style.
363
+
364
+ Parameters:
365
+ - `context` - - Canvas 2D drawing context.
366
+ - `batch` - - Ordered line-segment batch that shares one render style.
367
+
368
+ Returns: Nothing.
369
+
370
+ ### drawGroundGridSegmentBatches
371
+
372
+ `(context: CanvasRenderingContext2D, batches: readonly import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridSegmentBatch[], lineColor: string) => void`
373
+
374
+ Draws one ordered collection of neon segment batches.
375
+
376
+ Parameters:
377
+ - `context` - - Canvas 2D drawing context.
378
+ - `batches` - - Ordered line-segment batches to render.
379
+ - `lineColor` - - Core neon stroke color.
380
+
381
+ Returns: Nothing.
382
+
383
+ ### strokePlaybackGroundGridBatch
384
+
385
+ `(context: CanvasRenderingContext2D, batch: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridSegmentBatch) => void`
386
+
387
+ Strokes one ground-grid batch using a cached path when the environment supports it.
388
+
389
+ Parameters:
390
+ - `context` - - Canvas 2D drawing context.
391
+ - `batch` - - Ordered line-segment batch that shares one render style.
392
+
393
+ Returns: Nothing.
394
+
395
+ ## browser-entry/playback/background/ground-grid/playback.background.ground-grid.cache.services.ts
396
+
397
+ ### ensureGroundGridViewportCacheValidity
398
+
399
+ `(sceneContext: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackBackgroundGroundGridSceneContext) => string`
400
+
401
+ Ensures ground-grid caches only retain entries for the current viewport size.
402
+
403
+ The ground grid is derived from viewport width and total scene height, so a
404
+ page resize invalidates every cached geometry variant and fog gradient.
405
+
406
+ Parameters:
407
+ - `sceneContext` - - Current lower-band scene geometry.
408
+
409
+ Returns: Stable viewport-size cache key for the current frame.
410
+
411
+ ### resolveCachedGroundGridFogGradient
412
+
413
+ `(context: CanvasRenderingContext2D, sceneCacheKey: string, sceneContext: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackBackgroundGroundGridSceneContext, fogColor: string) => CanvasGradient`
414
+
415
+ Resolves a cached fog gradient for one canvas and local scene.
416
+
417
+ Parameters:
418
+ - `context` - - Canvas 2D drawing context.
419
+ - `sceneCacheKey` - - Stable scene key for the active viewport.
420
+ - `sceneContext` - - Current lower-band scene geometry.
421
+ - `fogColor` - - Theme-owned fog color token.
422
+
423
+ Returns: Cached fog gradient aligned to the lower-band scene.
424
+
425
+ ### resolveCachedGroundGridHorizontalGeometry
426
+
427
+ `(sceneCacheKey: string, factory: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridHorizontalGeometryFactory) => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridHorizontalGeometry`
428
+
429
+ Resolves cached horizontal geometry for one scene.
430
+
431
+ Parameters:
432
+ - `sceneCacheKey` - - Stable scene key for the active viewport.
433
+ - `factory` - - Lazy geometry builder used when the cache misses.
434
+
435
+ Returns: Cached horizontal geometry bundle for the scene.
436
+
437
+ ### resolveCachedGroundGridVerticalGeometry
438
+
439
+ `(cycleCacheKey: string, factory: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridVerticalGeometryFactory) => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridVerticalGeometry`
440
+
441
+ Resolves cached vertical geometry for one scene and wrapped offset cycle.
442
+
443
+ Parameters:
444
+ - `cycleCacheKey` - - Scene-and-offset cache key for the active frame.
445
+ - `factory` - - Lazy geometry builder used when the cache misses.
446
+
447
+ Returns: Cached vertical geometry bundle for the cycle.
448
+
449
+ ### resolveCachedGroundGridVerticalSceneMetrics
450
+
451
+ `(sceneCacheKey: string, factory: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridVerticalSceneMetricsFactory) => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridVerticalSceneMetrics`
452
+
453
+ Resolves cached scene metrics for one vertical-grid layout.
454
+
455
+ Parameters:
456
+ - `sceneCacheKey` - - Stable scene key for the active viewport.
457
+ - `factory` - - Lazy scene-metrics builder used when the cache misses.
458
+
459
+ Returns: Cached vertical scene metrics for the scene.
460
+
461
+ ### resolveGroundGridSceneCacheKey
462
+
463
+ `(sceneContext: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackBackgroundGroundGridSceneContext) => string`
464
+
465
+ Resolves the stable local-scene cache key for ground-grid geometry.
466
+
467
+ Parameters:
468
+ - `sceneContext` - - Current lower-band scene geometry.
469
+
470
+ Returns: Scene key suitable for static horizontal and vertical cache entries.
471
+
472
+ ### resolveGroundGridVerticalCycleCacheKey
473
+
474
+ `(sceneCacheKey: string, wrappedOffsetPx: number) => string`
475
+
476
+ Resolves the cache key for one wrapped vertical-geometry cycle.
477
+
478
+ Parameters:
479
+ - `sceneCacheKey` - - Stable scene key for the active viewport.
480
+ - `wrappedOffsetPx` - - Wrapped offset within one lane cycle.
481
+
482
+ Returns: Cycle key used for vertical geometry reuse.
483
+
484
+ ### resolveGroundGridViewportCacheKey
485
+
486
+ `(sceneContext: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackBackgroundGroundGridSceneContext) => string`
487
+
488
+ Resolves the viewport-size cache key used by the ground-grid caches.
489
+
490
+ Parameters:
491
+ - `sceneContext` - - Current lower-band scene geometry.
492
+
493
+ Returns: Cache key that changes whenever the page size changes.
494
+
495
+ ## browser-entry/playback/background/ground-grid/playback.background.ground-grid.layer.services.ts
496
+
497
+ ### drawGroundGridFog
498
+
499
+ `(context: CanvasRenderingContext2D, resolvedScene: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackBackgroundGroundGridResolvedScene) => void`
500
+
501
+ Draws the lower-band atmospheric wash behind the neon line work.
502
+
503
+ Parameters:
504
+ - `context` - - Canvas 2D drawing context.
505
+ - `resolvedScene` - - Geometry and style for the current viewport.
506
+
507
+ Returns: Nothing.
508
+
509
+ ### drawGroundGridPulse
510
+
511
+ `(context: CanvasRenderingContext2D, pulse: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridPulse | null, fillColor: string) => void`
512
+
513
+ Draws one pulse square above the grid lines and below gameplay entities.
514
+
515
+ Parameters:
516
+ - `context` - - Canvas 2D drawing context.
517
+ - `pulse` - - Visible pulse square for the current frame.
518
+ - `fillColor` - - Core neon fill color.
519
+
520
+ Returns: Nothing.
521
+
522
+ ## browser-entry/playback/background/ground-grid/playback.background.ground-grid.scene.services.ts
523
+
524
+ ### resolvePlaybackGroundGridSceneContext
525
+
526
+ `(sceneContext: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackBackgroundGroundGridSourceScene) => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackBackgroundGroundGridSceneContext`
527
+
528
+ Resolves the shared scene context used by the ground-grid renderer.
529
+
530
+ Parameters:
531
+ - `sceneContext` - - Lower-band geometry provided by the background module.
532
+
533
+ Returns: Narrow scene contract consumed by grid-specific helpers.
534
+
535
+ ## browser-entry/playback/background/ground-grid/playback.background.ground-grid.geometry.services.ts
536
+
537
+ ### resolvePlaybackGroundGridGeometry
538
+
539
+ `(sceneContext: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackBackgroundGroundGridSceneContext, frameIndex: number, scrollBasePx: number) => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridGeometry`
540
+
541
+ Builds the line geometry for the neon ground grid.
542
+
543
+ Parameters:
544
+ - `sceneContext` - - Lower-band geometry for the current viewport.
545
+ - `frameIndex` - - Current deterministic playback frame index.
546
+ - `scrollBasePx` - - Shared world scroll used for parallax motion.
547
+
548
+ Returns: Horizontal depth bands and perspective rays for the current frame.
549
+
550
+ ## browser-entry/playback/background/ground-grid/playback.background.ground-grid.utils.ts
551
+
552
+ ### interpolatePlaybackGroundGridPoint
553
+
554
+ `(startXPx: number, startYPx: number, endXPx: number, endYPx: number, interpolationRatio: number) => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.math.utils").PlaybackGroundGridPoint`
555
+
556
+ Interpolates one point along a perspective ray.
557
+
558
+ Parameters:
559
+ - `startXPx` - - Bottom anchor x-position.
560
+ - `startYPx` - - Bottom anchor y-position.
561
+ - `endXPx` - - Vanishing-point x-position.
562
+ - `endYPx` - - Vanishing-point y-position.
563
+ - `interpolationRatio` - - Normalized 0..1 position along the ray.
564
+
565
+ Returns: Interpolated point on the perspective ray.
566
+
567
+ ### resolvePlaybackGroundGridDepthCurve
568
+
569
+ `(depthRatio: number) => number`
570
+
571
+ Maps a normalized depth ratio into a stronger synthwave spacing curve.
572
+
573
+ Parameters:
574
+ - `depthRatio` - - Normalized 0..1 depth where 0 is far and 1 is near.
575
+
576
+ Returns: Curved depth ratio used for line placement and styling.
577
+
578
+ ### resolvePlaybackGroundGridDepthFromHorizonDistance
579
+
580
+ `(distanceToHorizonPx: number, maximumDistanceToHorizonPx: number) => number`
581
+
582
+ Resolves normalized depth from a vertical distance away from the horizon.
583
+
584
+ Parameters:
585
+ - `distanceToHorizonPx` - - Vertical distance from the vanishing horizon.
586
+ - `maximumDistanceToHorizonPx` - - Largest visible vertical horizon distance.
587
+
588
+ Returns: Normalized 0..1 depth where 0 is at the horizon and 1 is nearest.
589
+
590
+ ### resolvePlaybackGroundGridGeometry
591
+
592
+ `(sceneContext: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackBackgroundGroundGridSceneContext, frameIndex: number, scrollBasePx: number) => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridGeometry`
593
+
594
+ Builds the line geometry for the neon ground grid.
595
+
596
+ Parameters:
597
+ - `sceneContext` - - Lower-band geometry for the current viewport.
598
+ - `frameIndex` - - Current deterministic playback frame index.
599
+ - `scrollBasePx` - - Shared world scroll used for parallax motion.
600
+
601
+ Returns: Horizontal depth bands and perspective rays for the current frame.
602
+
603
+ ### resolvePlaybackGroundGridLineAlpha
604
+
605
+ `(depthRatio: number) => number`
606
+
607
+ Resolves neon alpha for one line based on its normalized depth.
608
+
609
+ Parameters:
610
+ - `depthRatio` - - Normalized 0..1 depth where 0 is far and 1 is near.
611
+
612
+ Returns: Opacity for the rendered line.
613
+
614
+ ### resolvePlaybackGroundGridLineBlur
615
+
616
+ `(depthRatio: number) => number`
617
+
618
+ Resolves glow blur for one line based on its normalized depth.
619
+
620
+ Parameters:
621
+ - `depthRatio` - - Normalized 0..1 depth where 0 is far and 1 is near.
622
+
623
+ Returns: Blur radius for the rendered line.
624
+
625
+ ### resolvePlaybackGroundGridLineThickness
626
+
627
+ `(depthRatio: number) => number`
628
+
629
+ Resolves stroke thickness for one line based on its normalized depth.
630
+
631
+ Parameters:
632
+ - `depthRatio` - - Normalized 0..1 depth where 0 is far and 1 is near.
633
+
634
+ Returns: Stroke width in pixels.
635
+
636
+ ### resolvePlaybackGroundGridSceneContext
637
+
638
+ `(sceneContext: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackBackgroundGroundGridSourceScene) => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackBackgroundGroundGridSceneContext`
639
+
640
+ Resolves the shared scene context used by the ground-grid renderer.
641
+
642
+ Parameters:
643
+ - `sceneContext` - - Lower-band geometry provided by the background module.
644
+
645
+ Returns: Narrow scene contract consumed by grid-specific helpers.
646
+
647
+ ## browser-entry/playback/background/ground-grid/playback.background.ground-grid.math.utils.ts
648
+
649
+ ### interpolatePlaybackGroundGridPoint
650
+
651
+ `(startXPx: number, startYPx: number, endXPx: number, endYPx: number, interpolationRatio: number) => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.math.utils").PlaybackGroundGridPoint`
652
+
653
+ Interpolates one point along a perspective ray.
654
+
655
+ Parameters:
656
+ - `startXPx` - - Bottom anchor x-position.
657
+ - `startYPx` - - Bottom anchor y-position.
658
+ - `endXPx` - - Vanishing-point x-position.
659
+ - `endYPx` - - Vanishing-point y-position.
660
+ - `interpolationRatio` - - Normalized 0..1 position along the ray.
661
+
662
+ Returns: Interpolated point on the perspective ray.
663
+
664
+ ### PlaybackGroundGridPipeConnectionProfile
665
+
666
+ Shared pipe-floor projection resolved from the lower ground-grid geometry.
667
+
668
+ ### PlaybackGroundGridPoint
669
+
670
+ Small point value used when interpolating positions along one grid ray.
671
+
672
+ ### resolvePlaybackGroundGridDepthCurve
673
+
674
+ `(depthRatio: number) => number`
675
+
676
+ Maps a normalized depth ratio into a stronger synthwave spacing curve.
677
+
678
+ Parameters:
679
+ - `depthRatio` - - Normalized 0..1 depth where 0 is far and 1 is near.
680
+
681
+ Returns: Curved depth ratio used for line placement and styling.
682
+
683
+ ### resolvePlaybackGroundGridDepthFromHorizonDistance
684
+
685
+ `(distanceToHorizonPx: number, maximumDistanceToHorizonPx: number) => number`
686
+
687
+ Resolves normalized depth from a vertical distance away from the horizon.
688
+
689
+ Parameters:
690
+ - `distanceToHorizonPx` - - Vertical distance from the vanishing horizon.
691
+ - `maximumDistanceToHorizonPx` - - Largest visible vertical horizon distance.
692
+
693
+ Returns: Normalized 0..1 depth where 0 is at the horizon and 1 is nearest.
694
+
695
+ ### resolvePlaybackGroundGridLineAlpha
696
+
697
+ `(depthRatio: number) => number`
698
+
699
+ Resolves neon alpha for one line based on its normalized depth.
700
+
701
+ Parameters:
702
+ - `depthRatio` - - Normalized 0..1 depth where 0 is far and 1 is near.
703
+
704
+ Returns: Opacity for the rendered line.
705
+
706
+ ### resolvePlaybackGroundGridLineBlur
707
+
708
+ `(depthRatio: number) => number`
709
+
710
+ Resolves glow blur for one line based on its normalized depth.
711
+
712
+ Parameters:
713
+ - `depthRatio` - - Normalized 0..1 depth where 0 is far and 1 is near.
714
+
715
+ Returns: Blur radius for the rendered line.
716
+
717
+ ### resolvePlaybackGroundGridLineThickness
718
+
719
+ `(depthRatio: number) => number`
720
+
721
+ Resolves stroke thickness for one line based on its normalized depth.
722
+
723
+ Parameters:
724
+ - `depthRatio` - - Normalized 0..1 depth where 0 is far and 1 is near.
725
+
726
+ Returns: Stroke width in pixels.
727
+
728
+ ### resolvePlaybackGroundGridPipeConnectionProfile
729
+
730
+ `(visibleWorldHeightPx: number) => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.math.utils").PlaybackGroundGridPipeConnectionProfile`
731
+
732
+ Resolves the shared lower-pipe floor and matched grid-ray scroll ratio.
733
+
734
+ The lower pipe is visually clipped to the first usable horizontal grid band
735
+ above the bottom edge. The returned scroll ratio then speeds up the moving
736
+ perspective rays so their lateral motion matches the pipe speed exactly at
737
+ that same projected height.
738
+
739
+ Parameters:
740
+ - `visibleWorldHeightPx` - - Current visible world height in pixels.
741
+
742
+ Returns: Pipe-floor y-position plus the matching vertical-ray scroll ratio.
743
+
744
+ ## browser-entry/playback/background/ground-grid/playback.background.ground-grid.pulse.utils.ts
745
+
746
+ ### resolvePlaybackGroundGridPulse
747
+
748
+ `(input: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridPulseInput) => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridPulse | null`
749
+
750
+ Resolves one rare, deterministic pulse square for the current frame.
751
+
752
+ Parameters:
753
+ - `input` - - Current frame timing and visible pulse path candidates.
754
+
755
+ Returns: Visible pulse square, or null when the current slot is inactive.
756
+
757
+ ### resolvePlaybackGroundGridPulseTrackThickness
758
+
759
+ `(input: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridPulseTrackThicknessInput) => number`
760
+
761
+ Resolves the local track thickness at the pulse position.
762
+
763
+ Parameters:
764
+ - `input` - - Pulse position, path, and scene geometry.
765
+
766
+ Returns: Thickness of the current line under the pulse.
767
+
768
+ ## browser-entry/playback/background/ground-grid/playback.background.ground-grid.geometry.utils.ts
769
+
770
+ ### appendPlaybackGroundGridVerticalLineSegments
771
+
772
+ `(targetSegments: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridLineSegment[], startIndex: number, input: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridVerticalRayInput) => number`
773
+
774
+ Appends tapered style segments for one perspective ray.
775
+
776
+ Parameters:
777
+ - `targetSegments` - - Target line-segment buffer.
778
+ - `startIndex` - - Current insertion index within the target buffer.
779
+ - `input` - - Geometry and depth context for one ray.
780
+
781
+ Returns: Next insertion index after all ray segments have been written.
782
+
783
+ ### buildPlaybackGroundGridHorizontalGeometry
784
+
785
+ `(sceneContext: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackBackgroundGroundGridSceneContext) => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridHorizontalGeometry`
786
+
787
+ Builds the screen-horizontal depth bands for the lower neon plane.
788
+
789
+ Parameters:
790
+ - `sceneContext` - - Lower-band geometry for the current viewport.
791
+
792
+ Returns: Ordered far-to-near line segments and pulse subsets.
793
+
794
+ ### buildPlaybackGroundGridVerticalGeometry
795
+
796
+ `(sceneContext: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackBackgroundGroundGridSceneContext, verticalSceneMetrics: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridVerticalSceneMetrics, wrappedOffsetPx: number) => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridVerticalGeometry`
797
+
798
+ Builds the perspective rays that converge to the centered horizon point.
799
+
800
+ Parameters:
801
+ - `sceneContext` - - Lower-band geometry for the current viewport.
802
+ - `safeLaneSpacingPx` - - Stable lane spacing used for ray anchors.
803
+ - `wrappedOffsetPx` - - Wrapped offset used for cache reuse and ray placement.
804
+
805
+ Returns: Wrapped left-to-right perspective rays and pulse subsets.
806
+
807
+ ### resolvePlaybackGroundGridHorizontalGeometry
808
+
809
+ `(sceneContext: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackBackgroundGroundGridSceneContext) => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridHorizontalGeometry`
810
+
811
+ Resolves cached screen-horizontal depth bands for the lower neon plane.
812
+
813
+ Parameters:
814
+ - `sceneContext` - - Lower-band geometry for the current viewport.
815
+
816
+ Returns: Ordered far-to-near line segments and pulse subsets.
817
+
818
+ ### resolvePlaybackGroundGridVerticalGeometry
819
+
820
+ `(sceneContext: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackBackgroundGroundGridSceneContext, scrollBasePx: number) => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridVerticalGeometry`
821
+
822
+ Resolves cached perspective rays that converge to the centered horizon point.
823
+
824
+ Parameters:
825
+ - `sceneContext` - - Lower-band geometry for the current viewport.
826
+ - `scrollBasePx` - - Shared world scroll used for parallax motion.
827
+
828
+ Returns: Wrapped left-to-right perspective rays and pulse subsets.
829
+
830
+ ## browser-entry/playback/background/ground-grid/playback.background.ground-grid.pulse.timing.utils.ts
831
+
832
+ ### resolvePlaybackGroundGridHorizontalPulsePath
833
+
834
+ `(horizontalPulsePaths: readonly import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridPulsePath[], pulseSlotIndex: number) => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridPulsePath | null`
835
+
836
+ Selects one thick-enough horizontal band for the current pulse slot.
837
+
838
+ Parameters:
839
+ - `horizontalPulsePaths` - - Cached horizontal pulse paths eligible for travel.
840
+ - `pulseSlotIndex` - - Zero-based pulse slot index.
841
+
842
+ Returns: Horizontal pulse path, or null when none are suitable.
843
+
844
+ ### resolvePlaybackGroundGridPulseOrientation
845
+
846
+ `(pulseSlotIndex: number) => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridPulseOrientation`
847
+
848
+ Resolves pulse orientation for one deterministic pulse slot.
849
+
850
+ Parameters:
851
+ - `pulseSlotIndex` - - Zero-based pulse slot index.
852
+
853
+ Returns: Horizontal or vertical pulse travel orientation.
854
+
855
+ ### resolvePlaybackGroundGridPulseTiming
856
+
857
+ `(frameIndex: number) => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridPulseTimingState | null`
858
+
859
+ Resolves timing state for the currently active deterministic pulse slot.
860
+
861
+ Parameters:
862
+ - `frameIndex` - - Current deterministic playback frame index.
863
+
864
+ Returns: Pulse timing state, or null when no pulse is active in this frame.
865
+
866
+ ### resolvePlaybackGroundGridPulseTravelRatio
867
+
868
+ `(input: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridPulseTravelRatioInput) => number`
869
+
870
+ Resolves the pulse travel ratio along its chosen line.
871
+
872
+ Parameters:
873
+ - `input` - - Pulse timing direction and orientation.
874
+
875
+ Returns: Normalized 0..1 travel ratio along the chosen line.
876
+
877
+ ### resolvePlaybackGroundGridUnitHash
878
+
879
+ `(seed: number, salt: number) => number`
880
+
881
+ Resolves a deterministic unit-interval hash from a slot index and salt.
882
+
883
+ Parameters:
884
+ - `seed` - - Slot-local seed value.
885
+ - `salt` - - Small integer salt used to pick a stable random stream.
886
+
887
+ Returns: Stable random value in the range 0..1.
888
+
889
+ ## browser-entry/playback/background/ground-grid/playback.background.ground-grid.geometry.batch.utils.ts
890
+
891
+ ### groupPlaybackGroundGridSegmentsByStyle
892
+
893
+ `(segments: readonly import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridLineSegment[]) => readonly import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridSegmentBatch[]`
894
+
895
+ Groups line segments into ordered style batches for lower-overhead drawing.
896
+
897
+ Parameters:
898
+ - `segments` - - Ordered line segments that should preserve draw grouping.
899
+
900
+ Returns: Ordered style batches that can be stroked with fewer state changes.
901
+
902
+ ### resolvePlaybackGroundGridBatchPath
903
+
904
+ `(segments: readonly import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridLineSegment[]) => Path2D | null`
905
+
906
+ Resolves one cached draw-ready path for a grouped segment batch.
907
+
908
+ Parameters:
909
+ - `segments` - - Ordered line segments that belong to one style batch.
910
+
911
+ Returns: Cached Path2D when available, otherwise null.
912
+
913
+ ### resolvePlaybackGroundGridPreferredHorizontalPulsePaths
914
+
915
+ `(horizontalLines: readonly import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridLineSegment[]) => readonly import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridPulsePath[]`
916
+
917
+ Prefers the nearer, thicker horizontal tracks when picking a pulse lane.
918
+
919
+ Parameters:
920
+ - `horizontalLines` - - Visible horizontal grid bands.
921
+
922
+ Returns: Pulse-eligible horizontal paths biased toward the foreground.
923
+
924
+ ## browser-entry/playback/background/ground-grid/playback.background.ground-grid.geometry.layout.utils.ts
925
+
926
+ ### buildPlaybackGroundGridVerticalSceneMetrics
927
+
928
+ `(sceneContext: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackBackgroundGroundGridSceneContext) => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridVerticalSceneMetrics`
929
+
930
+ Builds the static scene metrics reused across one viewport-sized grid layout.
931
+
932
+ Parameters:
933
+ - `sceneContext` - - Lower-band geometry for the current viewport.
934
+
935
+ Returns: Stable anchor bounds and lane spacing for vertical-ray reuse.
936
+
937
+ ### isPlaybackGroundGridVerticalPulsePathVisible
938
+
939
+ `(pulsePath: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridPulsePath, sceneContext: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackBackgroundGroundGridSceneContext) => boolean`
940
+
941
+ Resolves whether one vertical pulse path is safely visible in the viewport.
942
+
943
+ Parameters:
944
+ - `pulsePath` - - Candidate vertical pulse path.
945
+ - `sceneContext` - - Current lower-band scene geometry.
946
+
947
+ Returns: True when the pulse midpoint stays inside the visible ground band.
948
+
949
+ ### projectPlaybackGroundGridProjectedXToAnchorX
950
+
951
+ `(input: { projectedXPx: number; projectedYPx: number; sceneContext: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackBackgroundGroundGridSceneContext; }) => number`
952
+
953
+ Projects one visible x-position at an arbitrary y-level to the anchor line.
954
+
955
+ Parameters:
956
+ - `input` - - Projected target and scene geometry.
957
+
958
+ Returns: Bottom anchor x-position whose ray reaches the projected point.
959
+
960
+ ### resolvePlaybackGroundGridAnchorBounds
961
+
962
+ `(input: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridAnchorBoundsInput) => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridAnchorBounds`
963
+
964
+ Projects one visible horizontal span back onto the floor anchor line.
965
+
966
+ Parameters:
967
+ - `input` - - Visible span bounds and scene geometry.
968
+
969
+ Returns: Bottom-anchor bounds required to cover the chosen projected span.
970
+
971
+ ### resolvePlaybackGroundGridRetainedWidthRatioAtYPx
972
+
973
+ `(lowerBandBottomYPx: number, vanishingPointYPx: number, targetYPx: number) => number`
974
+
975
+ Resolves how much adjacent-ray spacing remains at one projected y-position.
976
+
977
+ Perspective rays linearly collapse toward the vanishing point, so the local
978
+ lane width at any y-position is just the bottom-anchor spacing multiplied by
979
+ the remaining width ratio between the bottom edge and the vanishing point.
980
+
981
+ Parameters:
982
+ - `lowerBandBottomYPx` - - Bottom edge of the visible ground band.
983
+ - `vanishingPointYPx` - - Shared vanishing-point y-position.
984
+ - `targetYPx` - - Projected y-position whose retained width should be measured.
985
+
986
+ Returns: Width-retention ratio in the inclusive `[0, 1]` range.
987
+
988
+ ### resolvePlaybackGroundGridVerticalCycleContext
989
+
990
+ `(safeLaneSpacingPx: number, lowerBandBottomYPx: number, scrollBasePx: number) => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridVerticalCycleContext`
991
+
992
+ Resolves the wrapped vertical-geometry cycle for the current scroll value.
993
+
994
+ Parameters:
995
+ - `safeLaneSpacingPx` - - Stable lane spacing used by current viewport metrics.
996
+ - `lowerBandBottomYPx` - - Lower edge of the visible ground-grid band.
997
+ - `scrollBasePx` - - Shared world scroll used for parallax motion.
998
+
999
+ Returns: Quantized wrapped offset and safe lane spacing for cache lookups.
1000
+
1001
+ ## browser-entry/playback/background/ground-grid/playback.background.ground-grid.pulse.selection.utils.ts
1002
+
1003
+ ### rememberPlaybackGroundGridVerticalPulseSelection
1004
+
1005
+ `(pulseSlotIndex: number, continuationState: import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridVerticalPulseContinuationState) => void`
1006
+
1007
+ Stores the resolved pulse center for continuation on the next frame.
1008
+
1009
+ Parameters:
1010
+ - `pulseSlotIndex` - - Zero-based pulse slot index.
1011
+ - `continuationState` - - Latest visible pulse position for the slot.
1012
+
1013
+ Returns: Nothing.
1014
+
1015
+ ### resolveContinuedVerticalPulsePath
1016
+
1017
+ `(input: { candidatePulsePaths: readonly import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridPulsePath[]; pulseSlotIndex: number; frameIndex: number; travelProgressRatio: number; }) => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridPulsePath | null`
1018
+
1019
+ Resolves the nearest continued vertical pulse path for an active slot.
1020
+
1021
+ Parameters:
1022
+ - `input` - - Continuation input for the current frame.
1023
+
1024
+ Returns: Continued pulse path when one can be matched, otherwise null.
1025
+
1026
+ ### resolvePlaybackGroundGridVerticalPulseSelection
1027
+
1028
+ `(input: { verticalPulsePaths: readonly import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridPulsePath[]; visibleVerticalPulsePaths: readonly import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridPulsePath[]; pulseSlotIndex: number; frameIndex: number; travelProgressRatio: number; resolveUnitHash: (seed: number, salt: number) => number; }) => import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridPulsePath | null`
1029
+
1030
+ Resolves the current vertical pulse path while preserving per-slot continuity.
1031
+
1032
+ A vertical pulse should stay attached to one moving ray for its whole
1033
+ lifetime, even though the frame-local ray array is rebuilt as scroll wraps.
1034
+ This helper first prefers the nearest continuation of the previous frame's
1035
+ pulse position, then falls back to deterministic slot-based selection.
1036
+
1037
+ Parameters:
1038
+ - `verticalPulsePaths` - - Full vertical ray paths for the current frame.
1039
+ - `visibleVerticalPulsePaths` - - Visible subset preferred for on-screen pulses.
1040
+ - `pulseSlotIndex` - - Zero-based pulse slot index.
1041
+ - `frameIndex` - - Current deterministic frame index.
1042
+ - `travelProgressRatio` - - Current travel ratio along the chosen line.
1043
+ - `resolveUnitHash` - - Deterministic unit-hash helper used for fallback picks.
1044
+
1045
+ Returns: Vertical pulse path, or null when none are available.
1046
+
1047
+ ### resolveStableVerticalPulsePathCandidates
1048
+
1049
+ `(verticalPulsePaths: readonly import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridPulsePath[], visibleVerticalPulsePaths: readonly import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridPulsePath[]) => readonly import("test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types").PlaybackGroundGridPulsePath[]`
1050
+
1051
+ Resolves a stable vertical pulse-candidate set for one frame.
1052
+
1053
+ Parameters:
1054
+ - `verticalPulsePaths` - - Full vertical ray paths for the current frame.
1055
+ - `visibleVerticalPulsePaths` - - Midpoint-visible subset used as fallback.
1056
+
1057
+ Returns: Stable candidate set for deterministic vertical pulse selection.
1058
+
1059
+ ### trimCachedVerticalPulseContinuationState
1060
+
1061
+ `(currentPulseSlotIndex: number) => void`
1062
+
1063
+ Trims cached continuation state so only the current or previous pulse slots remain.
1064
+
1065
+ Parameters:
1066
+ - `currentPulseSlotIndex` - - Pulse slot currently being resolved.
1067
+
1068
+ Returns: Nothing.