$ ./test_omega_v3.sh
[*] Valmistellaan testin payloadit...
[*] KC$ynnistetC$C$n OMEGA Router V3...
[+] Console router_v3 configured to workspace: /mnt/mesh_root/services/omega-ro
uter
[+] Console router_v3 startup command configured: node omega_router_v3.js
[+] Console router_v3 created and executed via Event-Driven wrapper in
/mnt/mesh_root/services/omega-router
[*] Odotetaan reitittimen kC$ynnistymistC$...
[*] Waiting up to 10s for 'Keskushermosto (v3) kC$ynnissC$'...
[+] Found 'Keskushermosto (v3) kC$ynnissC$'.
[*] KC$ynnistetC$C$n Dummy Worker (Kuuntelee porttia 9001 HTTP POST
-pyyntC6jC$ varten)...
[+] Console worker_1 startup command configured: while true; do nc -l -p 9001;
done
[+] Console worker_1 created and executed via Event-Driven wrapper in
/mnt/mesh_root/services/omega-router
[*] RekisterC6idC$C$n Worker_9001 reitittimeen (OMG-SUBSCRIBE)...
{"status":"accepted","id":"reg_001"}
[*] Waiting up to 5s for 'Palvelu kytketty: Worker_9001'...
[-] Timeout reached waiting for 'Palvelu kytketty: Worker_9001'.
[*] LC$hetetC$C$n OMG-FILE paketti reitittimelle...
{"status":"accepted","id":"file_001"}
[*] Waiting up to 5s for 'ReititetC$C$n paketti file_001 tilaajille:
Worker_9001'...
[-] Timeout reached waiting for 'ReititetC$C$n paketti file_001 tilaajille:
Worker_9001'.
[+] Paketti reititetty! Odotetaan Workerin tulostetta (Egress HTTP POST)...
user@hauki-obs:/mnt/mesh_root/services/omega-router$ /tmp/x_console_start_worke
r
_1.sh
[*] Testi suoritettu. Tallennetaan ruutudumpit ja sammutetaan sessiot.
[+] Console router_v3 terminated.
[+] Console worker_1 terminated.
[+] Dumpit tallennettu: router_v3.dump.txt ja worker_1.dump.txt
$
$ x-surgeon dump router_v3.dump.txt
=== DUMP: router_v3.dump.txt (Lines 1-5) (WITH TAB-INFO) ===
0001:0| user@hauki-obs:/mnt/mesh_root/services/omega-router$ /tmp/x_console_sta
rt_router
0002:0| _v3.sh
0003:0| [OMEGA ROUTER] Keskushermosto (v3) kC$ynnissC$ portissa 28888
0004:0| [ROUTE WARN] Paketille file_001 ei lC6ytynyt tilaajia (Tyyppi:
OMG-FILE). Paketti
0005:1| ohitetaan.
=======================================================
$ x-surgeon dump worker_1.dump.txt
=== DUMP: worker_1.dump.txt (Lines 1-2) (WITH TAB-INFO) ===
0001:0| user@hauki-obs:/mnt/mesh_root/services/omega-router$ /tmp/x_console_sta
rt_worker
0002:0| _1.sh
=======================================================
$
Tuo `x-console dump` on juuri se syy, miksi rakensimme tC$mC$n tyC6kalun! Se
pelasti meidC$t sokeudelta.
Lokien perusteella portin vaihto (`28888`) toimi tC$ydellisesti:
Node.js-reitittimen API otti paketit vastaan ja vastasi puhtaasti
`{"status":"accepted","id":"reg_001"}` ja `{"status":"accepted","id":"file_001"
}`.
Mutta dumpista paljastuu todellinen "Ghost in the Machine" -ilmiC6:
* `file_001` kC$siteltiin oikein (se heitti `[ROUTE WARN]` -ilmoituksen, koska
tilaajia ei ollut).
* **`reg_001` nielaistiin tC$ysin C$C$nettC6mC$sti!** Reititin ei tulostanut
`[SERVICE MESH] Palvelu kytketty`, ei `[BOUNCER] HylC$tty`, eikC$ edes `[INBOX
ERR]` -virhettC$.
Jos Node.js ei kaadu, mutta koodilohko vaikenee tC$ysin, syynC$ on usein
ketjutettu virhe muuttujien purkamisessa, joka jC$C$ lokaalin `try-catch`
-blokin sokeaan pisteeseen (esimerkiksi jos `capabilities` sattuisi olemaan
rakenteeltaan jotain muuta kuin taulukko, `.map()` heittC$C$ virheen, joka
joko nielaistaan tai ohittaa stdoutin).
Laitetaan reitittimen Event Loop -moottoriin sisC$iset debug-anturit ja
varmistetaan, ettei `.map()` -kutsu kaada lokaalia scopea C$C$nettC6mC$sti.
### 1. VianetsintC$patch (The Debug Probes)
Ajetaan nC$mC$ korjaukset `omega_router_v3.js` -tiedostoon. LisC$C$mme
vC$littC6mC$n tulosteen heti kun tiedosto nostetaan levyltC$, ja teemme
`capabilities`-taulukon parsinnasta idioottivarman:
[GEM-EDITBOT-START]
TARGET FILE "/mnt/mesh_root/services/omega-router/omega_router_v3.js"
REPLACE LINE 97 WITH BLOCK
const caps = Array.isArray(capabilities) ? capabilities.map(c=>c.type).join(','
) : 'MALFORMED';
console.log(`[SERVICE MESH] Palvelu kytketty: ${handlerId} (${caps})`);
END BLOCK
REPLACE LINE 81 WITH BLOCK
await fs.rename(inPath, procPath);
console.log(`[INBOX DEBUG] Puretaan paketti: ${file}`);
const packet = JSON.parse(await fs.readFile(procPath, 'utf8'));
END BLOCK
[GEM-EDITBOT-END]
### 2. Forensinen tarkistus
Koska reititin palautti `reg_001`:lle HTTP 202 Accepted, tiedoston **on
pakko** olla tallentunut levylle. Jos `processInbox` ehti siirtC$C$ sen
arkistoon asti vaikenemisestaan huolimatta, se lC6ytyy `archive-in`
-kansiosta.
Aja terminaalissasi nC$mC$ komennot. EnsimmC$inen tulostaa meille tarkalleen
sen, mitC$ API todellisuudessa kirjoitti levylle, ja toinen ajaa testin
uudelleen uusilla debug-antureilla:
[GEM-TERMINAL-START]
cat /mnt/mesh_root/state/omega-router-8830/archive-in/reg_001.json
./test_omega_v3.sh
[GEM-TERMINAL-END]