feat(core): modems run — the pair in the project, and a modem of another project hands its frames on (K0–K2)

Measured first: tools/java-oracle's ModemRun joins two networks by a pair
of Java modems over TCP on localhost. The modem has no card and adds no
delay of its own — a frame takes the cables on both sides, nothing more.

The core pairs the two enabled modems on a port (Swift's inProject, with
its conditions and cycle suppression) on Java's timing: no 20 ms. The
modem example of FILIUS now pings through instead of failing the core.
A modem of another project (relay) gives its frames to whoever runs the
engine and puts on its cable what comes back, with this engine's frame
and packet numbers; a frame dies after MAXIMUM_RELAY_HOPS trips.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-11 18:12:27 +00:00
co-authored by Claude Opus 5.5
parent 6f583616f6
commit c85b0e45da
19 changed files with 1743 additions and 44 deletions
@@ -0,0 +1,128 @@
{
"seed": 67,
"nodes": [
{
"id": "00000000-0000-0000-0000-000000000401",
"kind": "pc",
"ports": [
{
"id": "00000000-0000-0000-0000-000000000411",
"label": "eth0"
}
]
},
{
"id": "00000000-0000-0000-0000-000000000403",
"kind": "pc",
"ports": [
{
"id": "00000000-0000-0000-0000-000000000413",
"label": "eth0"
}
]
},
{
"id": "00000000-0000-0000-0000-000000000407",
"kind": "pc",
"ports": [
{
"id": "00000000-0000-0000-0000-000000000417",
"label": "eth0"
}
]
},
{
"id": "00000000-0000-0000-0000-000000000404",
"kind": "networkSwitch",
"ports": [
{
"id": "00000000-0000-0000-0000-000000000441",
"label": "sw1"
},
{
"id": "00000000-0000-0000-0000-000000000442",
"label": "sw2"
},
{
"id": "00000000-0000-0000-0000-000000000443",
"label": "sw3"
}
]
},
{
"id": "00000000-0000-0000-0000-000000000405",
"kind": "remoteLink",
"ports": [
{
"id": "00000000-0000-0000-0000-000000000451",
"label": "remote0"
}
]
},
{
"id": "00000000-0000-0000-0000-000000000406",
"kind": "remoteLink",
"ports": [
{
"id": "00000000-0000-0000-0000-000000000461",
"label": "remote0"
}
]
}
],
"links": [
{
"id": "00000000-0000-0000-0000-00000000F401",
"sourceNode": "00000000-0000-0000-0000-000000000401",
"sourcePort": "00000000-0000-0000-0000-000000000411",
"targetNode": "00000000-0000-0000-0000-000000000404",
"targetPort": "00000000-0000-0000-0000-000000000441"
},
{
"id": "00000000-0000-0000-0000-00000000F402",
"sourceNode": "00000000-0000-0000-0000-000000000407",
"sourcePort": "00000000-0000-0000-0000-000000000417",
"targetNode": "00000000-0000-0000-0000-000000000404",
"targetPort": "00000000-0000-0000-0000-000000000442"
},
{
"id": "00000000-0000-0000-0000-00000000F403",
"sourceNode": "00000000-0000-0000-0000-000000000404",
"sourcePort": "00000000-0000-0000-0000-000000000443",
"targetNode": "00000000-0000-0000-0000-000000000405",
"targetPort": "00000000-0000-0000-0000-000000000451"
},
{
"id": "00000000-0000-0000-0000-00000000F404",
"sourceNode": "00000000-0000-0000-0000-000000000406",
"sourcePort": "00000000-0000-0000-0000-000000000461",
"targetNode": "00000000-0000-0000-0000-000000000403",
"targetPort": "00000000-0000-0000-0000-000000000413"
}
],
"devices": {
"00000000-0000-0000-0000-000000000401": {
"ip": "10.0.0.1",
"mask": "255.255.255.0"
},
"00000000-0000-0000-0000-000000000403": {
"ip": "10.0.0.2",
"mask": "255.255.255.0"
},
"00000000-0000-0000-0000-000000000407": {
"ip": "10.0.0.3",
"mask": "255.255.255.0"
}
},
"modems": {
"00000000-0000-0000-0000-000000000405": {
"mode": "server",
"port": 12345
},
"00000000-0000-0000-0000-000000000406": {
"mode": "client",
"port": 12345
}
},
"steps": []
}