# Fly Worker **A QA fuzzer for browser games. One of its policies is a real fruit-fly connectome โ€” and that one loses.** ๐Ÿ”— Live: https://hwkim3330.github.io/flyworker/ ยท https://huggingface.co/spaces/kimhyunwoo/flyworker Fly Worker drives a browser game with synthetic key input, watches only the framebuffer, flags bugs with five deterministic rules, and writes an HTML report with evidence frames and a replay file that reproduces each finding. One of the swappable steering policies is a spiking simulation of the FlyWire v783 fruit-fly connectome (138,639 neurons); it is benchmarked against random baselines and published even though it loses. [![Fly Worker running GTA1 with the connectome policy](submit/shots/1-gta.png)](https://hwkim3330.github.io/flyworker/) --- **๋ธŒ๋ผ์šฐ์ € ๊ฒŒ์ž„์„ ์Šค์Šค๋กœ ํ”Œ๋ ˆ์ดํ•ด ๋ฒ„๊ทธ๋ฅผ ์ฐพ๊ณ , ์ฐพ์€ ๊ฒƒ์„ ๊ทธ๋Œ€๋กœ ์žฌํ˜„ํ•˜๋Š” QA ํผ์ €.** **์ •์ฑ… ํ•˜๋‚˜๊ฐ€ ์ดˆํŒŒ๋ฆฌ ์ „๋‡Œ ์ปค๋„ฅํ†ฐ 138,639๋‰ด๋Ÿฐ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ •์ฑ…์€ ๋‚œ์ˆ˜์—๊ฒŒ ์ง‘๋‹ˆ๋‹ค.** **LLM ์ถ”๋ก  0ํšŒ.** --- ## ์ œํ’ˆ์€ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค ``` โ”Œโ”€โ”€ ๋ถ™์ธ๋‹ค โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ํ•ฉ์„ฑ ํ‚ค ์ž…๋ ฅ + ํ”„๋ ˆ์ž„๋ฒ„ํผ ๊ฐ€๋กœ์ฑ„๊ธฐ. โ”‚ โ”‚ ๊ฒŒ์ž„ ์†Œ์Šค๋„, ๊ฒŒ์ž„ ์ชฝ ์ธํ„ฐํŽ˜์ด์Šค๋„ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค. โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”Œโ”€โ”€ ์กฐ์ข…ํ•œ๋‹ค โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ์ •์ฑ… = ํ™”๋ฉด์„ ๋ฐ›์•„ [์กฐํ–ฅ, ์ „์ง„]์„ ๋‚ด๋†“๋Š” ํ•จ์ˆ˜ ํ•˜๋‚˜. โ”‚ โ”‚ ์ดˆํŒŒ๋ฆฌ ์ปค๋„ฅํ†ฐ ยท ํ‰ํ™œ ๋‚œ์ˆ˜ ยท ๊ท ๋“ฑ ๋‚œ์ˆ˜ ยท ์ง์ง„ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”Œโ”€โ”€ ํŒ์ •ํ•œ๋‹ค โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๊ฒฐ์ •์  ๊ทœ์น™ 5๊ฐœ. ์–ด๋–ค ๋ชจ๋ธ๋„ "์ด๊ฑด ๋ฒ„๊ทธ๋‹ค"๋ผ๊ณ  โ”‚ โ”‚ ๋งํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”Œโ”€โ”€ ๋‚ด๋†“๋Š”๋‹ค โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ์ฆ๊ฑฐ ์‚ฌ์ง„๊ณผ ์žฌํ˜„ ํŒŒ์ผ์ด ๋“ค์–ด ์žˆ๋Š” HTML ๋ฆฌํฌํŠธ ํ•œ ์žฅ. โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` ์ •์ฑ…์€ ๋ถ€ํ’ˆ์ด๊ณ  ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ œํ’ˆ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ ์ •์ฑ…์ด ์ ธ๋„ ์ด ์ œํ’ˆ์€ ์„ญ๋‹ˆ๋‹ค. ## ์šฐ๋ฆฌ ์ดˆํŒŒ๋ฆฌ๋Š” ์ง‘๋‹ˆ๋‹ค โ€” ์žฌ์„œ ์‹ฃ์Šต๋‹ˆ๋‹ค ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ, ๊ฐ™์€ ๊ณ„์‚ฐ๋Ÿ‰(24,000ํ”„๋ ˆ์ž„), ๊ฐ™์€ ๊ฐ์ง€๊ธฐ. ์ •์ฑ…๋งŒ ๊ต์ฒดํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚œ์ˆ˜๋Š” ์‹œ๋“œ๋ฅผ ๊ณ ์ •ํ–ˆ๊ณ  ํšŒ์ฐจ๋ฅผ ๋‚˜๋ˆ  ํ‰๊ท ๊ณผ ๋ฒ”์œ„๋ฅผ ๋ƒ…๋‹ˆ๋‹ค. | ์ •์ฑ… | ๋งต ํƒ์ƒ‰๋ฅ  (ํ‰๊ท ) | ๋ฒ”์œ„ | ์ฆ์ƒ ์ข…๋ฅ˜ (ํ‰๊ท ) | ๊ด€์ธก๋œ ์ข…๋ฅ˜ | |---|---|---|---|---| | **์ดˆํŒŒ๋ฆฌ ์ปค๋„ฅํ†ฐ** | **50%** | 40โ€“55% | 2.0 | OOB, STUCK | | ์„ž์€ ์ •์ฑ… (์ดˆํŒŒ๋ฆฌ+๋‚œ์ˆ˜) | 62% | 51โ€“74% | 3.3 | ๋‹ค์„ฏ ์ข… ์ „๋ถ€ | | **๋ˆˆ ๊ฐ€๋ฆฐ ์ดˆํŒŒ๋ฆฌ** (์—‰๋šฑํ•œ ํŒ์„ ๋ด„) | **66%** | 55โ€“74% | 3.3 | ๋‹ค์„ฏ ์ข… ์ „๋ถ€ | | ์ดˆํŒŒ๋ฆฌ + ์˜จ๋ผ์ธ ํ•™์Šต | 33% | 24โ€“48% | 3.3 | STUCK, OOB, DOORLOCK, NOPROG | | ํ‰ํ™œ ๋‚œ์ˆ˜ | 63% | 59โ€“66% | 3.3 | ๋‹ค์„ฏ ์ข… ์ „๋ถ€ | | ๊ท ๋“ฑ ๋‚œ์ˆ˜ | 49% | 46โ€“52% | 3.7 | STUCK, OOB, DOORLOCK, FREEZE | | ์ง์ง„๋งŒ (๋Œ€์กฐ๊ตฐ) | 5% | 5โ€“5% | 1.0 | FREEZE | **์ปค๋„ฅํ†ฐ์€ ํ™”๋ฉด์— ๋Œ€ํ•ด ์•„๋ฌด๊ฒƒ๋„ ๋ณดํƒœ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.** ์„ž์€ ์ •์ฑ…์€ ๊ฐ™์€ ๋‚œ์ˆ˜์—ด๋งŒ ์“ฐ๋Š” ์ง ๋Œ€์กฐ๊ตฐ์„ **+11.4%p** ๋กœ ์ด๊น๋‹ˆ๋‹ค(12ํšŒ์ฐจ ์ง์ง€์Œ, t = 4.63). ๊ทธ๋Ÿฐ๋ฐ ๋‡Œ์— **์™„์ „ํžˆ ๋‹ค๋ฅธ ํŒ**์„ ๋ณด์—ฌ์ฃผ๊ณ  ๊ทธ ์ถœ๋ ฅ์œผ๋กœ ๋ชจ๋Š” ์ •์ฑ…์ด **66%** ๋กœ, ์ œ๋Œ€๋กœ ๋ณด๋Š” 62%์™€ ๊ตฌ๋ถ„๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (โˆ’3.2%p, t = 0.98). ์ปค๋„ฅํ†ฐ์ด ์ฃผ๋Š” ๊ฒƒ์€ **์กฐํ–ฅ ์ง„ํญ๊ณผ ์‹œ๊ฐ„ ๊ตฌ์กฐ**์ง€ ํ™”๋ฉด์˜ ์ •๋ณด๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. > ์ด ๊ฒฐ๋ก ์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ์„ธ ๋ฒˆ ๊ณ ์ณ ์ผ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์—” โˆ’3%p("๋ณดํƒœ๋Š” ๊ฒŒ ์—†๋‹ค"), > ์šฐ๋ฆฌ ๋””์ฝ”๋”์˜ ์กฐํ–ฅ ํŽธํ–ฅ์„ ๊ณ ์น˜์ž **+11.4%p ๋กœ ๋ถ€ํ˜ธ๊ฐ€ ๋’ค์ง‘ํ˜”๊ณ **, ์ง„ํญ๊นŒ์ง€ ๋งž์ถ˜ > ๋Œ€์กฐ๊ตฐ์„ ๋งŒ๋“ค์ž ๋‹ค์‹œ 0 ์œผ๋กœ ๋Œ์•„์™”์Šต๋‹ˆ๋‹ค. 2์ฐจ์—์„œ ๋ฉˆ์ท„์œผ๋ฉด "์ปค๋„ฅํ†ฐ์ด ๋‚œ์ˆ˜๋ฅผ ์ด๊ธด๋‹ค"๋ฅผ > ํ†ต๊ณ„๊นŒ์ง€ ๋ถ™์—ฌ ๋ฐœํ‘œํ–ˆ์„ ๊ฒ๋‹ˆ๋‹ค. ์„ธ ๋‹จ๊ณ„ ์ „๋ถ€ [LIMITATIONS 1.9](LIMITATIONS.md) ์— ์žˆ์Šต๋‹ˆ๋‹ค. **๋น™๋น™ ๋„๋Š” ๊ฒƒ์€ ์šฐ๋ฆฌ ๋ฒ„๊ทธ์˜€์Šต๋‹ˆ๋‹ค.** ์กฐํ–ฅ์— ๋‚จ์€ +0.044 ํŽธํ–ฅ ๋•Œ๋ฌธ์— ์ดˆํŒŒ๋ฆฌ๊ฐ€ 320ร—240 ํŒ์—์„œ **์„ ํšŒ๋ฐ˜๊ฒฝ 40px** ์›์„ ๊ทธ๋ฆฌ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ ์‘ ์ƒ์ˆ˜ ํ•˜๋‚˜(1/40 โ†’ 1/10)๋กœ ํŽธํ–ฅ์ด 0.008 ๋กœ, ํƒ์ƒ‰๋ฅ ์ด 42 โ†’ 50% ๊ฐ€ ๋์Šต๋‹ˆ๋‹ค. ์œ„ ํ‘œ์˜ ์ดˆํŒŒ๋ฆฌ ๊ณ„์—ด ์ˆซ์ž๋Š” ์ „๋ถ€ ์ˆ˜์ • ํ›„ ๊ฐ’์ž…๋‹ˆ๋‹ค. **์˜จ๋ผ์ธ ํ•™์Šต์€ ์šฐ๋ฆฌ ๋ฒ„๊ทธ๋ฅผ ๋ณด์ƒํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.** ํŽธํ–ฅ์ด ๋‚จ์•„ ์žˆ์„ ๋•Œ๋Š” ํŒ๋… ์œ„์˜ ํ•™์Šต์ด +12.0%p(t = 3.12) ๋„์›€์ด ๋๋Š”๋ฐ, ํŽธํ–ฅ์„ ์ง์ ‘ ๊ฑท์–ด๋‚ด์ž ๊ฐ™์€ ํ•™์Šต์ด **โˆ’25.6%p**(t = 4.01) ํ•ด๊ฐ€ ๋์Šต๋‹ˆ๋‹ค. ๋Œ€์กฐ๊ตฐ ์—†์ด "ํ•™์Šต์„ ๋ถ™์˜€๋”๋‹ˆ ์ข‹์•„์กŒ๋‹ค"๋ฅผ ์“ฐ๋ฉด ์ž๊ธฐ ๊ฒฐํ•จ์„ ๋ฎ๊ณ  ์žˆ๋Š” ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒ๋…์„ ํ†ต์งธ๋กœ ๋Œ€์ฒดํ•˜๋Š” ํ˜•ํƒœ(`learn`)๋Š” `steering()` ์„ ์“ฐ์ง€ ์•Š์•„ ์˜ํ–ฅ์ด ์—†๊ณ , ์ง ๋Œ€์กฐ๊ตฐ ๋Œ€๋น„ **+13.1%p**(t = 3.15) ๋กœ ๊ทธ๋Œ€๋กœ ์„ญ๋‹ˆ๋‹ค. **๋ฒ„๊ทธ ๊ฐœ์ˆ˜๋Š” ๊ฐ€์งœ ์ง€ํ‘œ์ž…๋‹ˆ๋‹ค.** ใ€Œ์ง์ง„๋งŒใ€์ด 95๊ฑด์œผ๋กœ ์ตœ๋‹ค์ธ๋ฐ ์ „๋ถ€ ๊ฐ™์€ ์ •์ง€ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ **ํƒ์ƒ‰๋ฅ ๊ณผ ์ฆ์ƒ ๋‹ค์–‘์„ฑ**์œผ๋กœ ์žฝ๋‹ˆ๋‹ค. ๊ทธ ๊ธฐ์ค€์œผ๋กœ ์ดˆํŒŒ๋ฆฌ๋Š” ํ‰ํ™œ ๋‚œ์ˆ˜์— ์ง‘๋‹ˆ๋‹ค. ์ด ๊ฒฐ๊ณผ๋ฅผ ์ฒซ ํ™”๋ฉด์— ์‹ฃ์Šต๋‹ˆ๋‹ค. ์ˆจ๊ธฐ๋ฉด ์ œํ’ˆ์ด ์ •์ฑ…์— ์ธ์งˆ๋กœ ์žกํžˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ## ๊ทธ๋ž˜๋„ ์ปค๋„ฅํ†ฐ์ด ์ •๋ง ์กฐ์ข…ํ•˜๋Š”๊ฐ€ โ€” ์ž˜๋ผ๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค ๋ง๋กœ ์ฃผ์žฅํ•˜๋Š” ๋Œ€์‹  ์†์ƒ ์‹คํ—˜์„ ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค. ํ™”๋ฉด์—์„œ ์ง์ ‘ ๋ˆŒ๋Ÿฌ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. | ์กฐ์ž‘ | ๋น› ๋ฐฉํ–ฅ ๋ถ„๋ฆฌ๋„ | |---|---| | ์ •์ƒ | **0.947** | | ์กฐํ–ฅ ์ฑ„๋„ 40๊ฐœ ์ ˆ๋‹จ (์ „์ฒด์˜ 0.03%) | **0.000** | | ๋ณต๊ตฌ | **1.121** | | ์™ผ์ชฝ ๋ˆˆ 2,000๊ฐœ ์ ˆ๋‹จ | 0.059 (์ขŒ์šฐ๋ฅผ ๋ชป ๊ฐ€๋ฆผ) | 138,639๊ฐœ ์ค‘ **40๊ฐœ**๋งŒ ๋Š์œผ๋ฉด ์กฐ์ข…์ด ์™„์ „ํžˆ ์ฃฝ์Šต๋‹ˆ๋‹ค. ์กฐํ–ฅ์„ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋ณด์ •ํ•œ ๊ตฌํ˜„์€ ์ด ์‹œํ—˜์„ ๊ทธ๋Œ€๋กœ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๊ฒƒ์€ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค. | ํ”„๋กœ์ ํŠธ | ์กฐํ–ฅ์„ ๋ˆ„๊ฐ€ ํ•˜๋Š”๊ฐ€ | |---|---| | `abgunaydin/webgpu-fly` | *"the connectome does not walk the fly"* โ€” ์†์œผ๋กœ ์ง  `sin(tร—10Hz)` ๋ณดํ–‰์„ ์Šค์ผ€์ผ | | `Xenova/fruit-fly-simulation` | *"Engineered rate decoder"* ยท *"movements are illustrative, not validated"* | | `snedea/flybrain` | ๋‡Œ ๊ธฐ์—ฌ๋ฅผ `clamp(-0.05, 0.05)` ๋กœ ๋ˆ„๋ฅด๊ณ  ๋ฐฉํ–ฅ์€ `atan2` ๋กœ ์ง์ ‘ ๊ณ„์‚ฐ | | `nftechie/doomfly` | ๋„ํŒŒ๋ฏผ ๊ฐ€์†Œ์„ฑ๊นŒ์ง€ ๋ถ™์˜€์ง€๋งŒ ์ž๊ธฐ ๊ฒ€์ฆ์„ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๊ณ  ์ ์–ด๋†จ์Šต๋‹ˆ๋‹ค | | **์ด ํ”„๋กœ์ ํŠธ** | **ํ•˜ํ–‰๋‰ด๋Ÿฐ ์ถœ๋ ฅ๋งŒ. ๋ณด์ • ์—†์Œ** | ## ๊ทผ๋ฌด์ง€ ๋„ค ๊ณณ | | | |---|---| | **GTA1** | `codenamecpp/carnage3d` (MIT). ์–‡์€ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ **์—†์–ด์„œ** ํ•ฉ์„ฑ `KeyboardEvent` ๋กœ ๋ชฐ๊ณ  `getContext` ๋ฅผ ๊ฐ€๋กœ์ฑ„ WebGL ํ”„๋ ˆ์ž„๋ฒ„ํผ๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค. ์ž์‚ฐ์€ ์›์ €์ž ํŽ˜์ด์ง€์—์„œ ์ง์ ‘ ๋ฐ›์•„์˜ต๋‹ˆ๋‹ค(์žฌ๋ฐฐํฌ ์•ˆ ํ•จ) | | **DOOM** | `jacobenget/doom.wasm`. import 10 / export 4. ์„ ํ˜• ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ”„๋ ˆ์ž„๋ฒ„ํผ๋ฅผ ์ง์ ‘ ์ฝ์Šต๋‹ˆ๋‹ค | | **์—ฐ๊ตฌ์‹ค** | ๋ฒ„๊ทธ 4์ข…์„ ์ผ๋ถ€๋Ÿฌ ์‹ฌ์–ด๋‘” ํ…Œ์ŠคํŠธ ๊ฒŒ์ž„. ๊ฐ์ง€๊ธฐ๋Š” ์–ด๋”” ์‹ฌ๊ฒผ๋Š”์ง€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. **์žฌํ˜„์„ ์ฆ๋ช…ํ•˜๋Š” ๊ณณ** | | **Yours** | **๋‹น์‹ ์˜ HTML ๊ฒŒ์ž„.** ๋–จ์–ด๋œจ๋ฆฌ๋ฉด ๋ถ™์Šต๋‹ˆ๋‹ค โ€” ์•„๋ž˜ ์ฐธ์กฐ | ## ์ฒ˜์Œ ๋ณด๋Š” ๊ฒŒ์ž„์—๋„ ๋ถ™์Šต๋‹ˆ๋‹ค "ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ œํ’ˆ"์ด๋ผ๋Š” ์ฃผ์žฅ์€ ์šฐ๋ฆฌ๊ฐ€ ๋ณธ ์  ์—†๋Š” ๊ฒŒ์ž„์— ๋ถ™์–ด์•ผ๋งŒ ์ฐธ์ž…๋‹ˆ๋‹ค. ใ€ŒYoursใ€์— HTML ๊ฒŒ์ž„์„ ๋–จ์–ด๋œจ๋ฆฌ๋ฉด ๊ทธ ์ž๋ฆฌ์—์„œ ๋ถ™์Šต๋‹ˆ๋‹ค. `blob:` ๋ฌธ์„œ๋Š” ๋งŒ๋“  ์ชฝ ์ถœ์ฒ˜๋ฅผ ๋ฌผ๋ ค๋ฐ›์œผ๋ฏ€๋กœ iframe ์•ˆ์ด์–ด๋„ ์บ”๋ฒ„์Šค๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์ž„ ์Šคํฌ๋ฆฝํŠธ๋ณด๋‹ค ๋จผ์ € `getContext` ๋ฅผ ๊ฐ€๋กœ์ฑ„์•ผ ํ•ด์„œ HTML ๋งจ ์•ž์— ์‹ฌ์„ ๋ผ์›Œ ๋„ฃ๊ณ  blob ์œผ๋กœ ๋‹ค์‹œ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ž…๋ ฅ์€ ์–ด๋””์„œ ๋“ฃ๋Š”์ง€ ๋ชจ๋ฅด๋ฏ€๋กœ windowยทdocumentยท์บ”๋ฒ„์Šค ์„ธ ๊ณณ์— ์ฉ๋‹ˆ๋‹ค. **์•ˆ ๋˜๋Š” ๊ฒƒ๋„ ํ™”๋ฉด์— ๊ทธ๋Œ€๋กœ ์”๋‹ˆ๋‹ค** โ€” CORS ๋ฅผ ๋ง‰์€ URL(์šฐํšŒ ๋ถˆ๊ฐ€), DOM ๊ฒŒ์ž„, ์˜ค์—ผ๋œ ์บ”๋ฒ„์Šค, ๊ทธ๋ฆฌ๊ณ  **์™ธ๋ถ€ ํ‘œ์ ์˜ ์ •ํ™• ์žฌํ˜„**(์‹œ๋“œ๋„ ๋‚ด๋ถ€ ์ƒํƒœ๋„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค). ์ž์„ธํ•œ ๊ฒƒ์€ [LIMITATIONS.md ยง2.5](LIMITATIONS.md). ## ๋ฒ„๊ทธ๋ฅผ ์ฐพ๊ณ , ์žฌํ˜„ํ•˜๊ณ , ๋ฆฌํฌํŠธ๋ฅผ ๋‚ธ๋‹ค ๊ฐ์ง€๊ธฐ๋Š” ๋ฒ„๊ทธ๊ฐ€ ์–ด๋”” ์‹ฌ๊ฒผ๋Š”์ง€ **๋ชจ๋ฆ…๋‹ˆ๋‹ค.** ์ฆ์ƒ๋งŒ ๋ด…๋‹ˆ๋‹ค. ์ „๋ถ€ ๊ฒฐ์ •์  ๊ทœ์น™์ž…๋‹ˆ๋‹ค. | ์ฆ์ƒ | ํŒ์ • | |---|---| | ํ™”๋ฉด ์ •์ง€ | ์ƒํƒœ๊ฐ€ 90ํ”„๋ ˆ์ž„ ๋™์•ˆ ๋ถˆ๋ณ€ | | ๋ผ์ž„ | 300ํ”„๋ ˆ์ž„ ๋™์•ˆ 6ร—6ํ”ฝ์…€์„ ๋ชป ๋ฒ—์–ด๋‚จ | | ๋งต ์ดํƒˆ | ์ขŒํ‘œ๊ฐ€ ๋งต ๋ฐ– (๋„˜์€ ๋ณ€ ๊ธฐ์ค€์œผ๋กœ ํ•œ ์‚ฌ๊ฑด = ํ•œ ๊ฑด) | | ๋ฌธ ์ž ๊น€ | ์—ด์‡  ํš๋“ ํ›„ 240ํ”„๋ ˆ์ž„ ๊ฒฝ๊ณผํ–ˆ๋Š”๋ฐ ๋ฌธ์ด ๋‹ซํ˜€ ์žˆ์Œ | | ์ง„ํ–‰ ๋ถˆ๊ฐ€ | 1800ํ”„๋ ˆ์ž„ ๋™์•ˆ ๋ชฉํ‘œ์— ๋” ๊ฐ€๊นŒ์›Œ์ง€์ง€ ๋ชปํ•จ | ๊ฒŒ์ž„์€ **(์‹œ๋“œ + ์ž…๋ ฅ์—ด)์— ๋Œ€ํ•ด ๊ฒฐ์ •์ **์ด๋ฏ€๋กœ ์ž…๋ ฅ์—ด๋งŒ ์ €์žฅํ•˜๋ฉด ๊ทธ๋Œ€๋กœ ๋˜์‚ด์•„๋‚ฉ๋‹ˆ๋‹ค. ์‹ค์ œ QA์—์„œ ๊ฐ€์žฅ ๊ดด๋กœ์šด "์žฌํ˜„์ด ์•ˆ ๋˜๋Š” ๋ฒ„๊ทธ"๊ฐ€ ๊ตฌ์กฐ์ ์œผ๋กœ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. > **์žฌํ˜„ ๊ฒ€์ฆ 12/12 ์™„์ „ ์ผ์น˜** (์ž…๋ ฅ์„ ๋ฐ˜์˜ฌ๋ฆผํ•˜๋ฉด 1500ํ”„๋ ˆ์ž„์ฏค์—์„œ 1ํ”ฝ์…€์”ฉ ์–ด๊ธ‹๋‚˜๋ฏ€๋กœ ์›๊ฐ’์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค) ใ€ŒDownload reportใ€๋ฅผ ๋ˆ„๋ฅด๋ฉด **์ž์ฒด ์™„๊ฒฐํ˜• HTML ํ•œ ์žฅ**์ด ๋‚˜์˜ต๋‹ˆ๋‹ค. ๋ฐœ๊ฒฌ ์ˆœ๊ฐ„์˜ ํ™”๋ฉด(PNG)๊ณผ ์žฌํ˜„ ํŒŒ์ผ(JSON)์ด ์•ˆ์— ๋“ค์–ด ์žˆ์–ด ์ธํ„ฐ๋„ท ์—†์ด ์—ด๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ ํŒŒ์ผ์ด **์•ฑ ๋ฐ–์—์„œ๋„** ๋˜์‚ด์•„๋‚˜๋Š”์ง€ ๋”ฐ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ € ์•ˆ์—์„œ Replay ๋ฒ„ํŠผ์ด ๋„๋Š” ๊ฒƒ๊ณผ, ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ›์•„๊ฐ„ ํŒŒ์ผ์ด ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋„๋Š” ๊ฒƒ์€ ๋‹ค๋ฅธ ์ฃผ์žฅ์ด๊ณ , QA ๋„๊ตฌ์˜ ๊ฐ’์–ด์น˜๋Š” ํ›„์ž์— ์žˆ์Šต๋‹ˆ๋‹ค. ```bash node verify_repro.mjs ~/Downloads/flyworker_report_2026-09-16.html # STUCK 630ํ”„๋ ˆ์ž„ โ†’ (144,99) vs ๊ธฐ๋ก (144,99) ์ผ์น˜ # STUCK 751ํ”„๋ ˆ์ž„ โ†’ (179,20) vs ๊ธฐ๋ก (179,20) ์ผ์น˜ # 2/2 ์ผ์น˜ ``` ## ์–ด๋–ป๊ฒŒ ๊ฒŒ์ž„์„ ํ•˜๋Š”๊ฐ€ ``` ๊ฒŒ์ž„ 1์ธ์นญ ์‹œ์•ผ (๋ ˆ์ด์บ์ŠคํŒ…, ๊ฒน๋ˆˆ ํ™”๊ฐ 270ยฐ) โ†“ ์ขŒ/์šฐ ๋ˆˆ์— ๊ฐ๊ฐ ์ฃผ์ž… (์‹œ๊ฐ์—ฝ ๋ง๋ง‰์œ„์ƒ ์ขŒํ‘œ๋กœ ๋Œ€์‘) LA>ME ๋ผ๋ฏธ๋‚˜โ†’์ˆ˜์งˆ 8,029๋‰ด๋Ÿฐ โ†“ ์‹ค์ œ ์ปค๋„ฅํ†ฐ ํšŒ๋กœ ํ•˜ํ–‰๋‰ด๋Ÿฐ 1,299๊ฐœ ์ค‘ ์ขŒ์šฐ ์ฐจ๋“ฑ ๋ฐ˜์‘ ์ฑ„๋„ โ†“ ์กฐํ–ฅ โ† โ†’ ์ „์ง„ ``` **์ˆ˜์Šต ๊ต์œก.** ์–ด๋–ค ํ•˜ํ–‰๋‰ด๋Ÿฐ์ด "์™ผ์ชฝ ์‹œ์•ผ"์— ๋ฐ˜์‘ํ•˜๋Š”์ง€๋Š” ๊ฐœ์ฒด๋งˆ๋‹ค ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ด๋ฆ„์ด ์•Œ๋ ค์ง„ ์กฐํ–ฅ ๋‰ด๋Ÿฐ(DNa01ยทDNa02)์€ ์ขŒ์šฐ ๊ฐ 1๊ฐœ๋ฟ์ด๋ผ ํ‘œ๋ณธ์ด ๋„ˆ๋ฌด ์ž‘์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ณ ์šฉ ์งํ›„ ์ขŒ/์šฐ ๋ˆˆ์— ๋ฒˆ๊ฐˆ์•„ ๋น›์„ ๋น„์ถฐ ์ฐจ๋“ฑ ๋ฐ˜์‘ํ•˜๋Š” ํ•˜ํ–‰๋‰ด๋Ÿฐ์„ ๊ณจ๋ผ๋ƒ…๋‹ˆ๋‹ค(์•ฝ 1.5์ดˆ). ์ง‘๋‹จ ๋ถ€ํ˜ธํ™”์ž…๋‹ˆ๋‹ค. ๊ฐ ์ฑ„๋„์„ ์ž๊ธฐ ์ž์‹ ์˜ ๊ท ํ˜• ์กฐ๋ช… ๋ฐ˜์‘์œผ๋กœ ๋‚˜๋ˆ  ์“ฐ๋ฏ€๋กœ ๊ฐœ์ฒด๋งˆ๋‹ค ๋‹ค๋ฅธ ์ด๋“ ์ฐจ์ด๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์‡„๋ฉ๋‹ˆ๋‹ค. ## ์ธก์ •๊ฐ’ | ํ•ญ๋ชฉ | ๊ฐ’ | |---|---| | ์ปค๋„ฅํ†ฐ | 138,639 ๋‰ด๋Ÿฐ / 2,700,513 ์—ฐ๊ฒฐ / gzip **7.45MB** (์—ฐ๊ฒฐ๋‹น 2.01B) | | ์‹œ๋ฎฌ๋ ˆ์ด์…˜ | ์ดˆ๋‹น **1,321์Šคํ…**, 283๋งŒ ์ŠคํŒŒ์ดํฌ/์ดˆ | | ๊ฒŒ์ž„ | 165fps | | ์ˆ˜์Šต ๊ต์œก | 1.4์ดˆ โ†’ ์ขŒ์ฑ„๋„ 20 / ์šฐ์ฑ„๋„ 20 / ํ™œ์„ฑ ํ•˜ํ–‰๋‰ด๋Ÿฐ 286 | | ๋น› ๋ฐฉํ–ฅ ๋ถ„๋ฆฌ๋„ | **1.158** (์™ผ์ชฝ โˆ’0.409 / ์˜ค๋ฅธ์ชฝ +0.749) | ์ง์› ํ•œ ๋ช… = ์›Œ์ปค ํ•˜๋‚˜. ์ปค๋„ฅํ†ฐ์€ ์ฝ๊ธฐ ์ „์šฉ์ด๊ณ  ๊ฐœ์ฒด๋ณ„ ์ƒํƒœ๋Š” 0.5MB๋ฟ์ด๋ผ ์ฝ”์–ด ์ˆ˜๋งŒํผ ๊ณ ์šฉํ•ด **์ง„์งœ ๋ณ‘๋ ฌ๋กœ** ์ผ์„ ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ## ์ •์งํ•˜๊ฒŒ โ€” ํ•œ๊ณ„ - **๋‹ซํžŒ ๊ณ ๋ฆฌ ์‹œ๊ฐ ์ฃผํ–‰์€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.** ์กฐํ–ฅ๊ณผ ๋น› ๋ฐฉํ–ฅ์˜ ์ƒ๊ด€๊ณ„์ˆ˜๋Š” 8์‹œ๋“œ์—์„œ 0์ž…๋‹ˆ๋‹ค. ๋””์ฝ”๋”๋ฅผ ๋„ค ๊ฐ€์ง€๋กœ ๋ฐ”๊ฟ”๋„ ์ „๋ถ€ 0์ด์—ˆ์Šต๋‹ˆ๋‹ค. - ์ด์œ ๋„ ์ธก์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. T4 ๋Š” **L1ยทL2 ์—์„œ ์—ฐ๊ฒฐ์„ ํ•˜๋‚˜๋„ ๋ฐ›์ง€ ์•Š๊ณ **(์ง์ ‘ ์„ธ์–ด ํ™•์ธ), ์ˆ˜์งˆ์„ ๊ฑฐ์ณ ๋“ค์–ด์˜ค๋Š” ์‹ ํ˜ธ๊ฐ€ ๋‹จ๊ณ„๋งˆ๋‹ค 10๋ฐฐ์”ฉ ์ค„์–ด `31 โ†’ 21 โ†’ 2.6 โ†’ 0.56 โ†’ 0.00Hz` ๋กœ ๊บผ์ง‘๋‹ˆ๋‹ค. ํƒ€์ด๋ฐ์ด ์•„๋‹ˆ๋ผ **๊ฐ์‡ **์ž…๋‹ˆ๋‹ค. ์‹œ๋ƒ…์Šค ์ด๋“์„ ์˜ฌ๋ฆฌ๋ฉด T4 ๋Š” ์šธ์ง€๋งŒ ๋ง ์ „์ฒด๊ฐ€ ๊ฐ™์ด ๊ณผํฅ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ์ „์— ์ ์–ด๋‘” "ON ๊ฒฝ๋กœ ๋ถ€ํ˜ธ ๋ฐ˜์ „" ์„ค๋ช…์€ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค โ€” [์ฒ ํšŒ ๊ธฐ๋ก](LIMITATIONS.md#์ •์ •--์‹œ๊ฐ„-์ƒ์ˆ˜๋ฅผ-๋„ฃ์–ด-๋ดค๊ณ -์•„๋ฌด-์ผ๋„-์—†์—ˆ์Šต๋‹ˆ๋‹ค)) - ๊ท ์ผ LIF์ž…๋‹ˆ๋‹ค. ์ˆ˜์šฉ์ฒด๋ณ„ ๋™์—ญํ•™๋„, ๊ฐ€์†Œ์„ฑ๋„, ๋‰ด๋Ÿฐ๋ณ„ ํŒŒ๋ผ๋ฏธํ„ฐ๋„ ์—†์Šต๋‹ˆ๋‹ค. - ์‹œ๋ƒ…์Šค 5๊ฐœ ๋ฏธ๋งŒ ์—ฐ๊ฒฐ์„ ์ณ๋‚ด 62.7%๋งŒ ๋‚จ๊ธฐ๊ณ  ๊ฐ€์ค‘์น˜๋ฅผ `0.275 / 0.627 โ‰ˆ 0.44` ๋กœ ๋ณด์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. - FlyWire๋Š” ๋ง๋ง‰ยท๋ผ๋ฏธ๋‚˜๊ฐ€ ๋ถˆ์™„์ „ํ•ด(๊ด‘์ˆ˜์šฉ์ฒด ์ถœ๋ ฅ ์—ฐ๊ฒฐ ํ‰๊ท  1.7๊ฐœ) ์‹œ๊ฐ ์ž…๋ ฅ์„ LA>ME์— ๋„ฃ์Šต๋‹ˆ๋‹ค. ์ „๋ถ€ [LIMITATIONS.md](LIMITATIONS.md) ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์‹คํŒจํ•œ ๊ฐ€์„ค๊ณผ ๋ฒ„๋ฆฐ ์‹œ๋„๊นŒ์ง€ ์ ์–ด๋’€์Šต๋‹ˆ๋‹ค. ## ๊ฐœ๋ฐœ ```bash python3 -m venv .venv && .venv/bin/pip install pandas pyarrow numpy bash tools/00_fetch.sh # ์›๋ณธ ๋ฐ์ดํ„ฐ (~135MB) .venv/bin/python tools/pack.py # ์ปค๋„ฅํ†ฐ โ†’ docs/data/brain.bin .venv/bin/python tools/meta.py # ๋‰ด๋Ÿฐ ์—ญํ•  โ†’ docs/data/meta.json python3 -m http.server 8877 --directory docs node policy_bench.mjs # ์œ„ ์ •์ฑ… ๋น„๊ตํ‘œ๋ฅผ ๋‹ค์‹œ ์žฌ๋ณธ๋‹ค PAIRED=6 node policy_bench.mjs # ์˜จ๋ผ์ธ ํ•™์Šต vs ๊ฐ™์€ ์„ญ๋™์—ด ๋Œ€์กฐ๊ตฐ (ํšŒ์ฐจ๋ณ„๋กœ ์ง์ง€์–ด ๋น„๊ต) WSYN=1.5 ONLY=fly node policy_bench.mjs # ์‹œ๋ƒ…์Šค ์ด๋“์„ ์˜ฌ๋ฆฌ๋ฉด ์„ฑ๋Šฅ์ด ์–ด๋–ป๊ฒŒ ๋˜๋Š”๊ฐ€ node verify_repro.mjs <๋ฆฌํฌํŠธ> # ๋‚ด๋ณด๋‚ธ ์žฌํ˜„ ํŒŒ์ผ์ด ์•ฑ ๋ฐ–์—์„œ ๋˜์‚ด์•„๋‚˜๋Š”์ง€ ํ™•์ธ ``` ์‹œ๊ฐ ์šด๋™ ๊ฒฝ๋กœ(T4)๊ฐ€ ์™œ ์šธ์ง€ ์•Š๋Š”์ง€ ํŒŒ๋ณธ ์ง„๋‹จ ์Šคํฌ๋ฆฝํŠธ๋„ ๊ทธ๋Œ€๋กœ ๋’€์Šต๋‹ˆ๋‹ค. [LIMITATIONS.md](LIMITATIONS.md) ์˜ ํ‘œ๋Š” ์ „๋ถ€ ์ด๊ฒƒ๋“ค์ด ๋‚ธ ์ˆซ์ž์ž…๋‹ˆ๋‹ค. ```bash node wiring.mjs # T4 ๊ฐ€ ๋ฌด์—‡์—์„œ ์ž…๋ ฅ์„ ๋ฐ›๋Š”๊ฐ€ (๋ฐฐ์„ ์„ ์ง์ ‘ ์„ผ๋‹ค) node chain.mjs # ์‹œ๊ฐ์‹ ๊ฒฝ โ†’ L1/L2 โ†’ ์ˆ˜์งˆ โ†’ T4 ๋‹จ๊ณ„๋ณ„ ๋ฐœํ™”์œจ node tau_test.mjs # ๋‰ด๋Ÿฐ๋ณ„ ์‹œ์ƒ์ˆ˜๊ฐ€ T4 ๋ฅผ ๊นจ์šฐ๋Š”๊ฐ€ (์•„๋‹ˆ์—ˆ๋‹ค) node gain.mjs # ์‹œ๋ƒ…์Šค ์ด๋“์„ ์˜ฌ๋ฆฌ๋ฉด ์–ด๋””๊นŒ์ง€ ๊นจ์–ด๋‚˜๋Š”๊ฐ€ ``` ## ์ถœ์ฒ˜์™€ ๋ผ์ด์„ ์Šค - ์ปค๋„ฅํ†ฐ: **FlyWire v783** (CC-BY 4.0) โ€” Dorkenwald et al., Schlegel et al. - ๋‰ด๋Ÿฐ ์ฃผ์„: flywire_annotations (CC-BY 4.0) - LIF ํŒŒ๋ผ๋ฏธํ„ฐ: Shiu et al. ์ปค๋„ฅํ†ฐ ๊ธฐ๋ฐ˜ ๋ชจ๋ธ - DOOM: `jacobenget/doom.wasm` ยท GTA1: `codenamecpp/carnage3d` (MIT) - ์ฝ”๋“œ: MIT