SirStone
23bdf8acd6
research(SNNBot): survey existing lead-targeting and enemy tracking code
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-09-13 20:30:10 +02:00
SirStone
dbae449273
feat(SNNBot): replace R-STDP with SuperSpike learning rule ( #158 )
...
Three-factor local learning: Δw = η × pre_trace × σ'(U) × error
- Surrogate derivative σ'(U) = 1/(1+|β(U-ϑ)|)² gives directional gradient
- Random feedback weights project output error to hidden layer
- 10-tick inference window for rate-coded sin/cos output
- Fixed stale learning target bug (EVALUATE used wrong gun direction)
Hyperparams: ETA=0.05, THRESH=0.2, W_CLAMP=1.0, N_INFER=10, BETA=1.0
Removed: R-STDP eligibility traces, STDP timing window, exploration noise
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-09-13 20:07:31 +02:00
SirStone
7e1f1483a4
docs(test_framework): add comprehensive integration test guide and fix runner blocking issue
...
- Document exception handling, zero-value BotResult trap, shared adversary bots
- Add offline parsing example using parseServerOutput
- Skip tests gracefully when JARs missing (guard before suite blocks)
- Fix blocking readLine in runner_process.nim: poll with 50ms sleep + atEnd check
(was preventing timeout enforcement, now blocks correctly during battle)
- Add test task to QBot.nimble and config.nims setup docs to AGENTS.md
- Add debug logging to TestBattleRunner for bot identity tracking
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-09-13 10:54:56 +02:00
SirStone
2bfa8eb6a5
feat(SNNBot): add STDP learner and integration test ( #153 , #155 )
...
- Implement reward-modulated STDP: spike timing, eligibility traces,
reward-gated weight updates (w += η * reward * trace), clamp [-2,2]
- Add integration smoke test vs SittingDuck (compile + battle completion)
- Add tests/config.nims and nimble test task
2026-09-13 10:31:07 +02:00
SirStone
c038128c2f
feat(SNNBot): upgrade bot API, fix debug overlay and aiming lines
...
- Upgrade to robocode_tankroyale_botapi v1.0.7 (SVG viewBox fix)
- Fix Y-axis mirror in aiming line toXY helper
- Resize debug panel to half arena width/height
- Replace neuron boxes with barcode-style spike lines
- Thickness-encoded weight connections (all 216 lines)
- Add aiming line legend (top-left, white text)
- Dynamic aiming line length (distance + 50px overshoot)
2026-09-13 10:24:20 +02:00
SirStone
57a1915b10
feat: add shared integration test framework for garages ( #126 )
...
Implements:
- BattleResult type and JSON-lines parser (#127 )
- TR server lifecycle manager (#128 )
- Bot compiler using nim c (#129 )
- runBattle() orchestrator (#130 )
- Example test in OscillatorBot_garage (#131 )
- Framework usage guide (#132 )
- TestBattleRunner.java for external server (#133 )
- BattleRunner process lifecycle (#134 )
Fix: runner_process.nim was redefining TimeoutError locally; now
uses std/net.TimeoutError consistently with server_manager.nim.
2026-08-30 12:03:35 +02:00
SirStone
a50571e6da
docs: add NIM section to clarify main language usage
2026-08-27 19:16:38 +02:00
SirStone
06e68522cf
Remove deprecated components from Tank Royale Bot API
...
- Deleted constants.nim, event_queue.nim, graphics.nim, json_parse.nim, schemas.nim, utils.nim, and ws_client.nim files.
- This cleanup removes unused code and simplifies the codebase, focusing on essential functionalities.
2026-08-27 18:45:56 +02:00
SirStone
d3e4540e7f
chore: add missing OscillatorBot.nimble
2026-08-27 18:42:35 +02:00
SirStone
259e67d7ff
chore: standardize internal bot dir structure (src/, tests/, out/)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-08-27 18:42:03 +02:00
SirStone
c5115fdf61
chore: standardize Nim builds to out/ subdir, simplify .gitignore
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-08-27 18:35:54 +02:00
SirStone
e276548223
chore: remove exported/ from AGENTS.md, generalize binary ignores in .gitignore
...
- Removed non-existent exported/ directory from layout docs
- Replaced hardcoded bot binary entries with *_garage/out/ pattern for build directories
- Added all known bot binaries (GotoTest, OscillatorBot, PPO_Bot, QBot, SAC_LSTM_Bot)
to .gitignore with clarifying comment about Nim's compilation target structure
Nim places compiled binaries at bot root (no extension) and in out/ subdirs.
The out/ pattern catches all build outputs; specific bot binaries listed for
root-level executables since gitignore lacks a reliable "no-extension files" glob.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-08-27 18:32:09 +02:00
SirStone
2097c2e6fa
chore: gitignore binaries/artifacts, remove drafts and stale files
2026-08-27 18:28:21 +02:00
SirStone
06ed905033
docs(AGENTS): generalize layout rules, remove hardcoded bot list
2026-08-27 18:22:38 +02:00
SirStone
eab85be8b3
docs(AGENTS): update directory layout to match current structure
2026-08-27 18:19:37 +02:00
SirStone
b509195ee9
chore: rename libs→common_libs, all bot dirs to _garage suffix, fix all path refs
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-08-27 18:18:41 +02:00
SirStone
f8c0c871c6
chore: remove unused prototypes/ and spike/ dirs
2026-08-27 18:16:34 +02:00
SirStone
b9877bfff5
chore: add .gitignore
2026-08-27 18:12:08 +02:00
SirStone
8ba4bae21a
chore: rename CLAUDE.md → AGENTS.md, move research doc to docs/
2026-08-27 18:11:56 +02:00
SirStone
f5b1ade48c
fix(dashboard): harden generation against common failures
2026-08-24 11:10:39 +02:00
SirStone
12a0eca44a
docs(dashboard): add health-check reference section
2026-08-24 10:18:43 +02:00
SirStone
08d1c44ca8
docs(dashboard): add how-to-read guide per panel
2026-08-24 09:25:14 +02:00
SirStone
f47925eeb0
fix(dashboard): remove redundant standalone alpha panel
2026-08-24 09:22:54 +02:00
SirStone
55d69a9352
fix(dashboard): dual y-axis for losses+alpha panel
2026-08-24 09:21:43 +02:00
SirStone
4a6e3347c6
feat(dashboard): max-score-per-eval-cycle panel
2026-08-24 09:15:24 +02:00
SirStone
8872be3ff6
fix(dashboard): add alpha temperature to training losses panel
2026-08-24 09:10:46 +02:00
SirStone
8eb7c53dd0
fix(dashboard): remove broken unused win%-per-opponent panel
2026-08-24 09:05:41 +02:00
SirStone
51e7f33ecb
fix(dashboard): plot live campaign-4 logs; derive ROOT from script location
2026-08-24 08:30:04 +02:00
SirStone
d2d205e6f6
Merge branch 'research/ga-parameters' into research/goto-controller
2026-08-24 08:23:25 +02:00
SirStone
3851f28cc5
Merge branch 'worktree-agent-a556517b' into research/goto-controller
2026-08-24 08:23:22 +02:00
SirStone
6241c41e52
Merge branch 'worktree-agent-a4c06ae3' into research/goto-controller
2026-08-24 08:23:19 +02:00
SirStone
156b4ae8db
Merge branch 'worktree-agent-af671e69' into research/goto-controller
2026-08-24 08:23:12 +02:00
SirStone
eee48dec38
prototype: GA evolution spike -- sin(x) prediction validates pipeline ( #66 )
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-08-24 08:14:36 +02:00
SirStone
eb8faa7c99
prototype: GA evolution spike -- sin(x) prediction validates pipeline ( #66 )
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-08-24 08:14:32 +02:00
SirStone
96065597c0
fix(divergence): guard reward-normalizer cold start; drop arctanh recovery
...
Welford variance-collapse divided by 1e-8 producing bit-exact +/−5e8 /
+−1.25e8 poisoned rewards into TD targets; guard skips normalization
until stats meaningful; tanh-inversion removal bounds log-prob path.
Fixes #60 .
2026-08-24 01:03:04 +02:00
SirStone
cb1bbc35dc
docs(adr): Evo_Bot neuroevolution gun architecture ( #63 )
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-08-24 00:02:47 +02:00
SirStone
b7b10af811
feat: OscillatorBot sparring partner for GA gun testing ( #64 )
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-08-24 00:01:38 +02:00
SirStone
e455566c8e
docs: CONTEXT.md — Evo_Bot domain vocabulary ( #62 )
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-08-24 00:00:21 +02:00
SirStone
eae6fc15a2
research(Evo_Bot): GA/ES parameter recommendations for ~750-weight neuroevolution ( #65 )
...
Extracted concrete numbers from 13 papers in docs/papers/neuroevolution/.
Key findings: use CMA-ES or mutation-only truncation GA, mutate ALL weights
(not 5%), sigma=0.005-0.01, pop=64-200, no crossover, single elite.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-08-23 23:32:10 +02:00
SirStone
81718e3a4c
fix(SAC_LSTM_Bot): un-invert dashboard axes — orientation selftest added
2026-08-23 10:47:48 +02:00
SirStone
04c149ea28
refactor(SAC_LSTM_Bot): reconcile graph tooling — dashboard-only output
2026-08-23 10:30:16 +02:00
SirStone
533a146342
feat(SAC_LSTM_Bot): live campaign dashboard — five panels, auto-reload, run-1 comparison dropped
2026-08-23 10:25:51 +02:00
SirStone
03a1853e57
feat(SAC_LSTM_Bot): embedded plain-English reading guides in graphs
2026-08-23 10:11:44 +02:00
SirStone
002a568c7e
fix(SAC_LSTM_Bot): atomic+validated SVG output for progress graphs
2026-08-23 10:06:05 +02:00
SirStone
f3ac0888bb
feat(SAC_LSTM_Bot): readable eval chart — trends primary, raw dots secondary, v1 comparison separated
2026-08-23 09:59:30 +02:00
SirStone
0b0933294a
feat(SAC_LSTM_Bot): progress graph tooling + first graphs
2026-08-23 09:08:53 +02:00
SirStone
781e41595e
docs(SAC_LSTM_Bot): simple-words story + dictionary for readability
2026-08-23 08:48:37 +02:00
SirStone
40e074e5a3
docs(SAC_LSTM_Bot): lever-5 trigger + attempt-3 chapter — MA-wipe root cause, LR_CRITIC=1e-4 decision, launch health ( #59 #60 )
2026-08-23 07:11:09 +02:00
SirStone
167bcc4ce5
fix(SAC_LSTM_Bot): MA history self-truncation — read before > redirect; campaign v2 attempt-3 prep ( #60 )
...
$(cat f) inside a command redirected to f saw the already-truncated file,
so every eval cycle wiped ma_history_*.txt back to one leading-space value
and degraded the composite best-gate to last-cycle mean. Read is hoisted
into its own statement; unquoted expansion + tail -n keeps exactly the last
MA_WINDOW values. Verified: fresh/5+/6+ cycle edges reproduce sliding window.
2026-08-23 07:02:36 +02:00
SirStone
1619b86f25
docs(SAC_LSTM_Bot): v2 restart saga, twin-freeze correction, pacing decisions
2026-08-22 21:26:24 +02:00