@reicek/neataptic-ts 0.1.25 → 0.1.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/.github/copilot-instructions.md +11 -0
  2. package/.github/skills/trace-analyzer-extension/SKILL.md +3 -3
  3. package/.github/skills/trace-analyzer-extension/assets/extension-checklist.md +1 -1
  4. package/.github/skills/trace-analyzer-extension/references/analyzer-extension-workflow.md +1 -1
  5. package/.github/skills/trace-audit-reporting/SKILL.md +3 -3
  6. package/.github/skills/trace-audit-reporting/references/trace-analysis-workflow.md +1 -1
  7. package/package.json +19 -13
  8. package/plans/Flappy_Bird_Folder_Documentation_Pass.md +4 -4
  9. package/plans/README.md +24 -0
  10. package/plans/Roadmap.md +62 -40
  11. package/plans/analyze-trace-solid-split.plans.md +66 -0
  12. package/plans/architecture-solid-split.plans.md +9 -15
  13. package/plans/asciiMaze-typescript-repair.plans.md +1 -1
  14. package/plans/generate-docs-solid-split.plans.md +87 -0
  15. package/plans/methods-docs.plans.md +25 -1
  16. package/plans/methods-solid-split.plans.md +14 -14
  17. package/plans/neat-docs.plans.md +9 -1
  18. package/plans/neat-test-surface-repair.plans.md +1 -1
  19. package/plans/render-docs-html-solid-split.plans.md +68 -0
  20. package/plans/src-no-explicit-any-cleanup.plans.md +1 -1
  21. package/plans/utils-docs.plans.md +6 -1
  22. package/scripts/analyze-trace/analyze-trace.analysis.ts +479 -0
  23. package/scripts/analyze-trace/analyze-trace.constants.ts +35 -0
  24. package/scripts/analyze-trace/analyze-trace.io.ts +69 -0
  25. package/scripts/analyze-trace/analyze-trace.report.ts +100 -0
  26. package/scripts/analyze-trace/analyze-trace.shared.ts +116 -0
  27. package/scripts/analyze-trace/analyze-trace.ts +45 -0
  28. package/scripts/analyze-trace/analyze-trace.types.ts +72 -0
  29. package/scripts/assets/theme.css +80 -23
  30. package/scripts/copy-examples.ts +239 -0
  31. package/scripts/export-onnx.ts +223 -0
  32. package/scripts/generate-bench-tables.ts +378 -37
  33. package/scripts/generate-docs/generate-docs.constants.ts +107 -0
  34. package/scripts/generate-docs/generate-docs.order.ts +355 -0
  35. package/scripts/generate-docs/generate-docs.state.ts +31 -0
  36. package/scripts/generate-docs/generate-docs.targets.ts +165 -0
  37. package/scripts/generate-docs/generate-docs.ts +63 -0
  38. package/scripts/generate-docs/generate-docs.types.ts +112 -0
  39. package/scripts/generate-docs/output/generate-docs.output.folder-index.utils.ts +167 -0
  40. package/scripts/generate-docs/output/generate-docs.output.ordering.utils.ts +353 -0
  41. package/scripts/generate-docs/output/generate-docs.output.readme.utils.ts +420 -0
  42. package/scripts/generate-docs/output/generate-docs.output.ts +123 -0
  43. package/scripts/generate-docs/output/generate-docs.output.warnings.utils.ts +219 -0
  44. package/scripts/generate-docs/symbols/generate-docs.symbols.collection.utils.ts +365 -0
  45. package/scripts/generate-docs/symbols/generate-docs.symbols.jsdoc.utils.ts +373 -0
  46. package/scripts/generate-docs/symbols/generate-docs.symbols.normalize.utils.ts +155 -0
  47. package/scripts/generate-docs/symbols/generate-docs.symbols.render.utils.ts +149 -0
  48. package/scripts/generate-docs/symbols/generate-docs.symbols.signature.utils.ts +289 -0
  49. package/scripts/generate-docs/symbols/generate-docs.symbols.ts +11 -0
  50. package/scripts/mermaid-cli.mjs +102 -22
  51. package/scripts/mermaid-cli.ts +736 -0
  52. package/scripts/render-docs-html/render-docs-html.assets.ts +54 -0
  53. package/scripts/render-docs-html/render-docs-html.mermaid.ts +245 -0
  54. package/scripts/{render-docs-html.sidebar.ts → render-docs-html/render-docs-html.navigation.ts} +141 -144
  55. package/scripts/render-docs-html/render-docs-html.pages.ts +333 -0
  56. package/scripts/render-docs-html/render-docs-html.shared.ts +333 -0
  57. package/scripts/render-docs-html/render-docs-html.types.ts +42 -0
  58. package/scripts/render-docs-html.ts +23 -587
  59. package/scripts/run-docs.ts +238 -0
  60. package/scripts/write-dist-docs-pkg.ts +40 -0
  61. package/src/README.md +75 -75
  62. package/src/architecture/connection/README.md +5 -5
  63. package/src/architecture/layer/README.md +508 -508
  64. package/src/architecture/network/README.md +1458 -1458
  65. package/src/architecture/network/activate/README.md +694 -694
  66. package/src/architecture/network/bootstrap/README.md +77 -77
  67. package/src/architecture/network/connect/README.md +74 -74
  68. package/src/architecture/network/deterministic/README.md +135 -135
  69. package/src/architecture/network/evolve/README.md +364 -364
  70. package/src/architecture/network/gating/README.md +130 -130
  71. package/src/architecture/network/genetic/README.md +399 -399
  72. package/src/architecture/network/mutate/README.md +897 -897
  73. package/src/architecture/network/onnx/README.md +720 -720
  74. package/src/architecture/network/onnx/export/README.md +728 -728
  75. package/src/architecture/network/onnx/export/layers/README.md +450 -450
  76. package/src/architecture/network/onnx/import/README.md +618 -618
  77. package/src/architecture/network/onnx/schema/README.md +32 -32
  78. package/src/architecture/network/prune/README.md +245 -245
  79. package/src/architecture/network/remove/README.md +135 -135
  80. package/src/architecture/network/runtime/README.md +106 -106
  81. package/src/architecture/network/serialize/README.md +542 -542
  82. package/src/architecture/network/slab/README.md +608 -608
  83. package/src/architecture/network/standalone/README.md +212 -212
  84. package/src/architecture/network/stats/README.md +84 -84
  85. package/src/architecture/network/topology/README.md +465 -465
  86. package/src/architecture/network/training/README.md +200 -200
  87. package/src/architecture/node/README.md +5 -5
  88. package/src/architecture/nodePool/README.md +14 -14
  89. package/src/methods/README.md +99 -99
  90. package/src/methods/activation/README.md +189 -189
  91. package/src/methods/cost/README.md +131 -131
  92. package/src/methods/rate/README.md +86 -86
  93. package/src/multithreading/README.md +77 -77
  94. package/src/multithreading/workers/browser/README.md +8 -8
  95. package/src/multithreading/workers/node/README.md +8 -8
  96. package/src/neat/README.md +148 -148
  97. package/src/neat/adaptive/README.md +120 -120
  98. package/src/neat/adaptive/acceptance/README.md +40 -40
  99. package/src/neat/adaptive/complexity/README.md +137 -137
  100. package/src/neat/adaptive/core/README.md +197 -197
  101. package/src/neat/adaptive/lineage/README.md +90 -90
  102. package/src/neat/adaptive/mutation/README.md +284 -284
  103. package/src/neat/compat/README.md +43 -43
  104. package/src/neat/compat/core/README.md +90 -90
  105. package/src/neat/diversity/README.md +35 -35
  106. package/src/neat/diversity/core/README.md +88 -88
  107. package/src/neat/evaluate/README.md +85 -85
  108. package/src/neat/evaluate/auto-distance/README.md +75 -75
  109. package/src/neat/evaluate/entropy-compat/README.md +37 -37
  110. package/src/neat/evaluate/entropy-sharing/README.md +43 -43
  111. package/src/neat/evaluate/fitness/README.md +23 -23
  112. package/src/neat/evaluate/novelty/README.md +120 -120
  113. package/src/neat/evaluate/objectives/README.md +17 -17
  114. package/src/neat/evaluate/shared/README.md +94 -94
  115. package/src/neat/evolve/README.md +96 -96
  116. package/src/neat/evolve/adaptive/README.md +60 -60
  117. package/src/neat/evolve/objectives/README.md +63 -63
  118. package/src/neat/evolve/offspring/README.md +56 -56
  119. package/src/neat/evolve/population/README.md +171 -171
  120. package/src/neat/evolve/runtime/README.md +79 -79
  121. package/src/neat/evolve/speciation/README.md +74 -74
  122. package/src/neat/evolve/warnings/README.md +10 -10
  123. package/src/neat/export/README.md +114 -114
  124. package/src/neat/helpers/README.md +50 -50
  125. package/src/neat/init/README.md +9 -9
  126. package/src/neat/lineage/core/README.md +101 -101
  127. package/src/neat/multiobjective/category/README.md +74 -74
  128. package/src/neat/multiobjective/crowding/README.md +272 -272
  129. package/src/neat/multiobjective/dominance/README.md +171 -171
  130. package/src/neat/multiobjective/fronts/README.md +68 -68
  131. package/src/neat/multiobjective/metrics/README.md +43 -43
  132. package/src/neat/multiobjective/objectives/README.md +31 -31
  133. package/src/neat/multiobjective/shared/README.md +27 -27
  134. package/src/neat/mutation/README.md +97 -97
  135. package/src/neat/mutation/add-conn/README.md +115 -115
  136. package/src/neat/mutation/add-node/README.md +126 -126
  137. package/src/neat/mutation/flow/README.md +149 -149
  138. package/src/neat/mutation/repair/README.md +185 -185
  139. package/src/neat/mutation/select/README.md +117 -117
  140. package/src/neat/mutation/shared/README.md +32 -32
  141. package/src/neat/objectives/README.md +25 -25
  142. package/src/neat/objectives/core/README.md +67 -67
  143. package/src/neat/pruning/README.md +40 -40
  144. package/src/neat/pruning/core/README.md +171 -171
  145. package/src/neat/pruning/facade/README.md +32 -32
  146. package/src/neat/rng/README.md +104 -104
  147. package/src/neat/rng/core/README.md +137 -137
  148. package/src/neat/rng/facade/README.md +50 -50
  149. package/src/neat/selection/README.md +111 -111
  150. package/src/neat/selection/core/README.md +227 -227
  151. package/src/neat/selection/facade/README.md +61 -61
  152. package/src/neat/shared/README.md +163 -163
  153. package/src/neat/speciation/README.md +31 -31
  154. package/src/neat/speciation/threshold/README.md +35 -35
  155. package/src/neat/species/README.md +25 -25
  156. package/src/neat/species/core/README.md +20 -20
  157. package/src/neat/species/core/shared/README.md +18 -18
  158. package/src/neat/species/history/context/README.md +22 -22
  159. package/src/neat/telemetry/accessors/README.md +58 -58
  160. package/src/neat/telemetry/exports/README.md +233 -233
  161. package/src/neat/telemetry/facade/README.md +252 -252
  162. package/src/neat/telemetry/facade/archive/README.md +57 -57
  163. package/src/neat/telemetry/facade/buffer/README.md +43 -43
  164. package/src/neat/telemetry/facade/lineage/README.md +12 -12
  165. package/src/neat/telemetry/facade/objectives/README.md +44 -44
  166. package/src/neat/telemetry/facade/runtime/README.md +26 -26
  167. package/src/neat/telemetry/facade/species/README.md +27 -27
  168. package/src/neat/telemetry/metrics/README.md +696 -696
  169. package/src/neat/telemetry/recorder/README.md +57 -57
  170. package/src/neat/telemetry/types/README.md +32 -32
  171. package/src/neat/topology-intent/README.md +75 -75
  172. package/src/utils/README.md +193 -193
  173. package/test/examples/asciiMaze/browser-entry/README.md +92 -92
  174. package/test/examples/asciiMaze/dashboardManager/README.md +109 -109
  175. package/test/examples/asciiMaze/dashboardManager/telemetry/README.md +28 -28
  176. package/test/examples/asciiMaze/evolutionEngine/README.md +1527 -1527
  177. package/test/examples/asciiMaze/mazeMovement/README.md +105 -105
  178. package/test/examples/asciiMaze/mazeMovement/finalization/README.md +16 -16
  179. package/test/examples/asciiMaze/mazeMovement/policy/README.md +57 -57
  180. package/test/examples/asciiMaze/mazeMovement/runtime/README.md +52 -52
  181. package/test/examples/asciiMaze/mazeMovement/shaping/README.md +46 -46
  182. package/test/examples/flappy_bird/browser-entry/README.md +508 -508
  183. package/test/examples/flappy_bird/browser-entry/host/README.md +101 -101
  184. package/test/examples/flappy_bird/browser-entry/host/resize/README.md +144 -144
  185. package/test/examples/flappy_bird/browser-entry/network-view/README.md +194 -194
  186. package/test/examples/flappy_bird/browser-entry/playback/README.md +278 -278
  187. package/test/examples/flappy_bird/browser-entry/playback/background/README.md +129 -129
  188. package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/README.md +502 -502
  189. package/test/examples/flappy_bird/browser-entry/playback/frame-render/README.md +139 -139
  190. package/test/examples/flappy_bird/browser-entry/playback/snapshot/README.md +10 -10
  191. package/test/examples/flappy_bird/browser-entry/playback/trail/README.md +43 -43
  192. package/test/examples/flappy_bird/browser-entry/playback/worker-channel/README.md +30 -30
  193. package/test/examples/flappy_bird/browser-entry/runtime/README.md +59 -59
  194. package/test/examples/flappy_bird/browser-entry/visualization/README.md +276 -276
  195. package/test/examples/flappy_bird/browser-entry/worker-channel/README.md +16 -16
  196. package/test/examples/flappy_bird/constants/README.md +1070 -1070
  197. package/test/examples/flappy_bird/environment/README.md +22 -22
  198. package/test/examples/flappy_bird/evaluation/README.md +32 -32
  199. package/test/examples/flappy_bird/evaluation/rollout/README.md +141 -141
  200. package/test/examples/flappy_bird/flappy-evolution-worker/README.md +425 -425
  201. package/test/examples/flappy_bird/simulation-shared/README.md +170 -170
  202. package/test/examples/flappy_bird/simulation-shared/observation/README.md +109 -109
  203. package/test/examples/flappy_bird/trainer/README.md +325 -325
  204. package/test/examples/flappy_bird/trainer/evaluation/README.md +74 -74
  205. package/scripts/analyze-trace.ts +0 -590
  206. package/scripts/copy-examples.mjs +0 -114
  207. package/scripts/export-onnx.mjs +0 -86
  208. package/scripts/generate-bench-tables.mjs +0 -182
  209. package/scripts/generate-docs.ts +0 -2900
  210. package/scripts/write-dist-docs-pkg.mjs +0 -16
@@ -69,6 +69,27 @@ const request: PlaybackBackgroundRequest = {
69
69
  };
70
70
  ```
71
71
 
72
+ ### PlaybackBackgroundLayout
73
+
74
+ Resolved vertical scene split used by playback background composition.
75
+
76
+ The layout fixes the classic synthwave composition used by this demo: a tall
77
+ sky band for layered starfield parallax and a compressed lower strip for the
78
+ perspective grid. Caching this structure by viewport size keeps redraws cheap
79
+ when the scene is otherwise stable.
80
+
81
+ ### PlaybackBackgroundLayoutFactory
82
+
83
+ ```ts
84
+ PlaybackBackgroundLayoutFactory(): PlaybackBackgroundLayout
85
+ ```
86
+
87
+ Zero-argument builder used to lazily construct one cached background layout.
88
+
89
+ The cache service accepts a factory instead of raw data so callers can defer
90
+ the slightly more expensive layout computation until a viewport-size cache
91
+ miss actually occurs.
92
+
72
93
  ### PlaybackBackgroundRequest
73
94
 
74
95
  Minimal render input required to draw the playback background.
@@ -100,26 +121,13 @@ resolves the sky/lower-band split, vanishing point, and horizon styling once
100
121
  so the draw passes can stay orchestration-first and avoid repeating geometry
101
122
  math every frame.
102
123
 
103
- ### PlaybackBackgroundLayout
104
-
105
- Resolved vertical scene split used by playback background composition.
106
-
107
- The layout fixes the classic synthwave composition used by this demo: a tall
108
- sky band for layered starfield parallax and a compressed lower strip for the
109
- perspective grid. Caching this structure by viewport size keeps redraws cheap
110
- when the scene is otherwise stable.
111
-
112
- ### PlaybackBackgroundLayoutFactory
113
-
114
- ```ts
115
- PlaybackBackgroundLayoutFactory(): PlaybackBackgroundLayout
116
- ```
124
+ ### PlaybackHorizonLineRequest
117
125
 
118
- Zero-argument builder used to lazily construct one cached background layout.
126
+ Draw request for the horizon divider line.
119
127
 
120
- The cache service accepts a factory instead of raw data so callers can defer
121
- the slightly more expensive layout computation until a viewport-size cache
122
- miss actually occurs.
128
+ This narrow contract is the final handoff from layout math to the canvas
129
+ stroke helper: world-space x extents, the pixel-snapped y position, and the
130
+ resolved glow style needed for both line passes.
123
131
 
124
132
  ### PlaybackHorizonStyle
125
133
 
@@ -130,45 +138,36 @@ the luminous skyline separator common in synthwave and TRON-inspired poster
130
138
  art. Keeping those paint properties bundled makes it easier to reason about
131
139
  the horizon as one semantic effect instead of a pile of canvas state.
132
140
 
133
- ### PlaybackHorizonLineRequest
134
-
135
- Draw request for the horizon divider line.
136
-
137
- This narrow contract is the final handoff from layout math to the canvas
138
- stroke helper: world-space x extents, the pixel-snapped y position, and the
139
- resolved glow style needed for both line passes.
140
-
141
141
  ## browser-entry/playback/background/playback.background.constants.ts
142
142
 
143
- ### FLAPPY_BACKGROUND_SKY_HEIGHT_RATIO
143
+ ### FLAPPY_BACKGROUND_COMPOSITE_LIGHTER
144
144
 
145
- Background layout ratio reserved for the starfield sky band.
145
+ Composite mode used when stacking glow-heavy starfield layers.
146
146
 
147
- The top band intentionally occupies most of the scene so the future ground
148
- layer can take over the lower strip without competing with the stars.
147
+ The background currently resets to ordinary compositing for main passes, but
148
+ this constant documents the additive blend mode used when glow layers need to
149
+ visually accumulate rather than overwrite one another.
149
150
 
150
- ### FLAPPY_BACKGROUND_MIN_VIEWPORT_DIMENSION_PX
151
+ ### FLAPPY_BACKGROUND_COMPOSITE_SOURCE_OVER
151
152
 
152
- Minimum safe viewport dimension used by background render math (pixels).
153
+ Composite mode used for standard opaque drawing passes.
153
154
 
154
- Canvas helpers in this module assume positive dimensions. Clamping tiny or
155
- temporarily zero-sized layouts to this floor prevents resize races from
156
- producing invalid cache keys or negative geometry.
155
+ Most background passes should replace pixels normally so the scene remains
156
+ predictable before selective glow passes are added on top.
157
157
 
158
- ### FLAPPY_BACKGROUND_TILE_ROW_START_INDEX
158
+ ### FLAPPY_BACKGROUND_HORIZON_GLOW_ALPHA
159
159
 
160
- Index offset used to draw one extra tile before the visible left edge.
160
+ Soft glow opacity applied during the horizon glow pass.
161
161
 
162
- Starting one tile early hides wrap seams when the parallax offset lands near
163
- a tile boundary and the camera reveals a sliver of content just off-screen.
162
+ The glow is intentionally strong enough to read as neon, but still shy of a
163
+ full opaque bloom so the crisp core line remains visible.
164
164
 
165
- ### FLAPPY_BACKGROUND_TILE_ROW_BUFFER_COUNT
165
+ ### FLAPPY_BACKGROUND_HORIZON_GLOW_BLUR_PX
166
166
 
167
- Extra tile count rendered past the visible right edge for seamless wrap.
167
+ Blur radius used to bloom the horizon divider glow (pixels).
168
168
 
169
- The starfield is drawn as repeated cached strips. One buffered strip beyond
170
- the viewport prevents empty columns from appearing while the parallax offset
171
- advances between frames.
169
+ This is the main control for how far the horizon's light appears to bleed
170
+ into the neighboring sky and ground bands.
172
171
 
173
172
  ### FLAPPY_BACKGROUND_HORIZON_HALF_THICKNESS_MULTIPLIER
174
173
 
@@ -178,71 +177,72 @@ The layout computes the horizon around the sky/lower-band seam, so this
178
177
  multiplier converts stroke thickness into the offset needed to center the
179
178
  divider on that seam rather than placing it fully below it.
180
179
 
181
- ### FLAPPY_BACKGROUND_ODD_STROKE_DIVISOR
180
+ ### FLAPPY_BACKGROUND_HORIZON_LINE_THICKNESS_PX
182
181
 
183
- Divisor used to detect odd stroke widths for pixel snapping.
182
+ Thickness of the neon horizon divider line (pixels).
184
183
 
185
- Canvas 2D strokes look soft when odd-width lines are left on whole pixels.
186
- This constant supports the classic half-pixel alignment check used to keep
187
- the horizon divider visually crisp.
184
+ A slightly heavier stroke helps the divider remain legible against both the
185
+ starfield and the bright grid below it.
188
186
 
189
- ### FLAPPY_BACKGROUND_ODD_STROKE_ALIGNMENT_OFFSET_PX
187
+ ### FLAPPY_BACKGROUND_HORIZON_STYLE
190
188
 
191
- Pixel offset used to align odd-width strokes to the device pixel grid.
189
+ Frozen neon paint bundle reused by the playback horizon renderer.
192
190
 
193
- Offsetting odd-width lines by half a pixel is a standard raster technique
194
- for reducing blur in canvas line rendering.
191
+ Keeping this style object in the constants module prevents repeated
192
+ allocation during every background frame while still keeping the palette
193
+ centrally theme-owned.
195
194
 
196
- ### FLAPPY_BACKGROUND_COMPOSITE_SOURCE_OVER
195
+ ### FLAPPY_BACKGROUND_MIN_VIEWPORT_DIMENSION_PX
197
196
 
198
- Composite mode used for standard opaque drawing passes.
197
+ Minimum safe viewport dimension used by background render math (pixels).
199
198
 
200
- Most background passes should replace pixels normally so the scene remains
201
- predictable before selective glow passes are added on top.
199
+ Canvas helpers in this module assume positive dimensions. Clamping tiny or
200
+ temporarily zero-sized layouts to this floor prevents resize races from
201
+ producing invalid cache keys or negative geometry.
202
202
 
203
- ### FLAPPY_BACKGROUND_COMPOSITE_LIGHTER
203
+ ### FLAPPY_BACKGROUND_ODD_STROKE_ALIGNMENT_OFFSET_PX
204
204
 
205
- Composite mode used when stacking glow-heavy starfield layers.
205
+ Pixel offset used to align odd-width strokes to the device pixel grid.
206
206
 
207
- The background currently resets to ordinary compositing for main passes, but
208
- this constant documents the additive blend mode used when glow layers need to
209
- visually accumulate rather than overwrite one another.
207
+ Offsetting odd-width lines by half a pixel is a standard raster technique
208
+ for reducing blur in canvas line rendering.
210
209
 
211
- ### FLAPPY_BACKGROUND_TRANSPARENT_SHADOW_COLOR
210
+ ### FLAPPY_BACKGROUND_ODD_STROKE_DIVISOR
212
211
 
213
- Transparent shadow color used to reset canvas glow state.
212
+ Divisor used to detect odd stroke widths for pixel snapping.
214
213
 
215
- Canvas shadow state is sticky, so explicit transparent resets prevent one
216
- glow-heavy pass from leaking blur into later solid fills or line work.
214
+ Canvas 2D strokes look soft when odd-width lines are left on whole pixels.
215
+ This constant supports the classic half-pixel alignment check used to keep
216
+ the horizon divider visually crisp.
217
217
 
218
- ### FLAPPY_BACKGROUND_HORIZON_LINE_THICKNESS_PX
218
+ ### FLAPPY_BACKGROUND_SKY_HEIGHT_RATIO
219
219
 
220
- Thickness of the neon horizon divider line (pixels).
220
+ Background layout ratio reserved for the starfield sky band.
221
221
 
222
- A slightly heavier stroke helps the divider remain legible against both the
223
- starfield and the bright grid below it.
222
+ The top band intentionally occupies most of the scene so the future ground
223
+ layer can take over the lower strip without competing with the stars.
224
224
 
225
- ### FLAPPY_BACKGROUND_HORIZON_GLOW_ALPHA
225
+ ### FLAPPY_BACKGROUND_TILE_ROW_BUFFER_COUNT
226
226
 
227
- Soft glow opacity applied during the horizon glow pass.
227
+ Extra tile count rendered past the visible right edge for seamless wrap.
228
228
 
229
- The glow is intentionally strong enough to read as neon, but still shy of a
230
- full opaque bloom so the crisp core line remains visible.
229
+ The starfield is drawn as repeated cached strips. One buffered strip beyond
230
+ the viewport prevents empty columns from appearing while the parallax offset
231
+ advances between frames.
231
232
 
232
- ### FLAPPY_BACKGROUND_HORIZON_GLOW_BLUR_PX
233
+ ### FLAPPY_BACKGROUND_TILE_ROW_START_INDEX
233
234
 
234
- Blur radius used to bloom the horizon divider glow (pixels).
235
+ Index offset used to draw one extra tile before the visible left edge.
235
236
 
236
- This is the main control for how far the horizon's light appears to bleed
237
- into the neighboring sky and ground bands.
237
+ Starting one tile early hides wrap seams when the parallax offset lands near
238
+ a tile boundary and the camera reveals a sliver of content just off-screen.
238
239
 
239
- ### FLAPPY_BACKGROUND_HORIZON_STYLE
240
+ ### FLAPPY_BACKGROUND_TRANSPARENT_SHADOW_COLOR
240
241
 
241
- Frozen neon paint bundle reused by the playback horizon renderer.
242
+ Transparent shadow color used to reset canvas glow state.
242
243
 
243
- Keeping this style object in the constants module prevents repeated
244
- allocation during every background frame while still keeping the palette
245
- centrally theme-owned.
244
+ Canvas shadow state is sticky, so explicit transparent resets prevent one
245
+ glow-heavy pass from leaking blur into later solid fills or line work.
246
246
 
247
247
  ## browser-entry/playback/background/playback.background.services.ts
248
248
 
@@ -333,16 +333,16 @@ Returns: Immutable scene context shared by the private render helpers.
333
333
 
334
334
  ## browser-entry/playback/background/playback.background.draw.services.ts
335
335
 
336
- ### paintPlaybackBackgroundBase
336
+ ### drawPlaybackBackgroundHorizon
337
337
 
338
338
  ```ts
339
- paintPlaybackBackgroundBase(
339
+ drawPlaybackBackgroundHorizon(
340
340
  context: CanvasRenderingContext2D,
341
341
  sceneContext: PlaybackBackgroundSceneContext,
342
342
  ): void
343
343
  ```
344
344
 
345
- Paints the base background fill for the currently visible viewport.
345
+ Draws the glowing horizon divider across the visible viewport.
346
346
 
347
347
  Parameters:
348
348
  - `context` - - Canvas 2D drawing context.
@@ -369,20 +369,20 @@ Parameters:
369
369
 
370
370
  Returns: Nothing.
371
371
 
372
- ### drawPlaybackBackgroundHorizon
372
+ ### drawPlaybackHorizonLine
373
373
 
374
374
  ```ts
375
- drawPlaybackBackgroundHorizon(
375
+ drawPlaybackHorizonLine(
376
376
  context: CanvasRenderingContext2D,
377
- sceneContext: PlaybackBackgroundSceneContext,
377
+ request: PlaybackHorizonLineRequest,
378
378
  ): void
379
379
  ```
380
380
 
381
- Draws the glowing horizon divider across the visible viewport.
381
+ Draws the glowing horizon divider using the provided neon style.
382
382
 
383
383
  Parameters:
384
384
  - `context` - - Canvas 2D drawing context.
385
- - `sceneContext` - - Derived scene geometry and style contract.
385
+ - `request` - - Width, aligned y-position, and style for the divider.
386
386
 
387
387
  Returns: Nothing.
388
388
 
@@ -411,20 +411,20 @@ Parameters:
411
411
 
412
412
  Returns: Nothing.
413
413
 
414
- ### drawPlaybackHorizonLine
414
+ ### paintPlaybackBackgroundBase
415
415
 
416
416
  ```ts
417
- drawPlaybackHorizonLine(
417
+ paintPlaybackBackgroundBase(
418
418
  context: CanvasRenderingContext2D,
419
- request: PlaybackHorizonLineRequest,
419
+ sceneContext: PlaybackBackgroundSceneContext,
420
420
  ): void
421
421
  ```
422
422
 
423
- Draws the glowing horizon divider using the provided neon style.
423
+ Paints the base background fill for the currently visible viewport.
424
424
 
425
425
  Parameters:
426
426
  - `context` - - Canvas 2D drawing context.
427
- - `request` - - Width, aligned y-position, and style for the divider.
427
+ - `sceneContext` - - Derived scene geometry and style contract.
428
428
 
429
429
  Returns: Nothing.
430
430
 
@@ -451,23 +451,6 @@ Parameters:
451
451
 
452
452
  Returns: Stable viewport-size cache key for the current frame.
453
453
 
454
- ### resolvePlaybackBackgroundViewportCacheKey
455
-
456
- ```ts
457
- resolvePlaybackBackgroundViewportCacheKey(
458
- visibleWorldWidthPx: number,
459
- visibleWorldHeightPx: number,
460
- ): string
461
- ```
462
-
463
- Resolves the stable viewport-size cache key used by background caches.
464
-
465
- Parameters:
466
- - `visibleWorldWidthPx` - - Current visible world width in pixels.
467
- - `visibleWorldHeightPx` - - Current visible world height in pixels.
468
-
469
- Returns: Cache key that changes whenever the page size changes.
470
-
471
454
  ### resolveCachedPlaybackBackgroundLayout
472
455
 
473
456
  ```ts
@@ -502,32 +485,24 @@ Parameters:
502
485
 
503
486
  Returns: Cached tile coverage count for the active viewport width.
504
487
 
505
- ## browser-entry/playback/background/playback.background.utils.ts
506
-
507
- ### resolvePlaybackBackgroundLayout
488
+ ### resolvePlaybackBackgroundViewportCacheKey
508
489
 
509
490
  ```ts
510
- resolvePlaybackBackgroundLayout(
491
+ resolvePlaybackBackgroundViewportCacheKey(
492
+ visibleWorldWidthPx: number,
511
493
  visibleWorldHeightPx: number,
512
- ): PlaybackBackgroundLayout
494
+ ): string
513
495
  ```
514
496
 
515
- Resolves the vertical split between the starfield sky and the future ground.
497
+ Resolves the stable viewport-size cache key used by background caches.
516
498
 
517
499
  Parameters:
500
+ - `visibleWorldWidthPx` - - Current visible world width in pixels.
518
501
  - `visibleWorldHeightPx` - - Current visible world height in pixels.
519
502
 
520
- Returns: Stable scene layout for the current frame.
521
-
522
- ### resolvePlaybackHorizonStyle
523
-
524
- ```ts
525
- resolvePlaybackHorizonStyle(): PlaybackHorizonStyle
526
- ```
527
-
528
- Resolves the neon paint settings for the horizon divider.
503
+ Returns: Cache key that changes whenever the page size changes.
529
504
 
530
- Returns: Reusable draw style for both the glow and crisp line passes.
505
+ ## browser-entry/playback/background/playback.background.utils.ts
531
506
 
532
507
  ### resolveAlignedHorizonYPx
533
508
 
@@ -546,6 +521,31 @@ Parameters:
546
521
 
547
522
  Returns: Pixel-snapped y-position for the stroke.
548
523
 
524
+ ### resolvePlaybackBackgroundLayout
525
+
526
+ ```ts
527
+ resolvePlaybackBackgroundLayout(
528
+ visibleWorldHeightPx: number,
529
+ ): PlaybackBackgroundLayout
530
+ ```
531
+
532
+ Resolves the vertical split between the starfield sky and the future ground.
533
+
534
+ Parameters:
535
+ - `visibleWorldHeightPx` - - Current visible world height in pixels.
536
+
537
+ Returns: Stable scene layout for the current frame.
538
+
539
+ ### resolvePlaybackHorizonStyle
540
+
541
+ ```ts
542
+ resolvePlaybackHorizonStyle(): PlaybackHorizonStyle
543
+ ```
544
+
545
+ Resolves the neon paint settings for the horizon divider.
546
+
547
+ Returns: Reusable draw style for both the glow and crisp line passes.
548
+
549
549
  ### resolveSafeBackgroundDimension
550
550
 
551
551
  ```ts