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