Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .github/workflows/release-preview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,26 @@ jobs:
shell: pwsh
run: ./scripts/baremetal-qemu-e1000-tcp-probe-check.ps1

- name: Bare-metal QEMU E1000 DHCP probe (optional)
shell: pwsh
run: ./scripts/baremetal-qemu-e1000-dhcp-probe-check.ps1

- name: Bare-metal QEMU E1000 DNS probe (optional)
shell: pwsh
run: ./scripts/baremetal-qemu-e1000-dns-probe-check.ps1

- name: Bare-metal QEMU E1000 tool-service probe (optional)
shell: pwsh
run: ./scripts/baremetal-qemu-e1000-tool-service-probe-check.ps1

- name: Bare-metal QEMU E1000 HTTP POST probe (optional)
shell: pwsh
run: ./scripts/baremetal-qemu-e1000-http-post-probe-check.ps1

- name: Bare-metal QEMU E1000 HTTPS POST probe (optional)
shell: pwsh
run: ./scripts/baremetal-qemu-e1000-https-post-probe-check.ps1

- name: Bare-metal QEMU RTL8139 ARP probe (optional)
shell: pwsh
run: ./scripts/baremetal-qemu-rtl8139-arp-probe-check.ps1
Expand Down
20 changes: 20 additions & 0 deletions .github/workflows/zig-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,26 @@ jobs:
shell: pwsh
run: ./scripts/baremetal-qemu-e1000-tcp-probe-check.ps1

- name: Bare-metal QEMU E1000 DHCP probe (optional)
shell: pwsh
run: ./scripts/baremetal-qemu-e1000-dhcp-probe-check.ps1

- name: Bare-metal QEMU E1000 DNS probe (optional)
shell: pwsh
run: ./scripts/baremetal-qemu-e1000-dns-probe-check.ps1

- name: Bare-metal QEMU E1000 tool-service probe (optional)
shell: pwsh
run: ./scripts/baremetal-qemu-e1000-tool-service-probe-check.ps1

- name: Bare-metal QEMU E1000 HTTP POST probe (optional)
shell: pwsh
run: ./scripts/baremetal-qemu-e1000-http-post-probe-check.ps1

- name: Bare-metal QEMU E1000 HTTPS POST probe (optional)
shell: pwsh
run: ./scripts/baremetal-qemu-e1000-https-post-probe-check.ps1

- name: Bare-metal QEMU RTL8139 ARP probe (optional)
shell: pwsh
run: ./scripts/baremetal-qemu-rtl8139-arp-probe-check.ps1
Expand Down
9 changes: 6 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,12 @@ ZAR-Zig-Agent-Runtime is the Zig runtime port of OpenClaw, with parity-first del
- host regressions in `src/baremetal/e1000.zig`, `src/baremetal/pci.zig`, and `src/baremetal_main.zig` now prove init, MAC readout, TX, RX, and export-surface stability on the clean-room `E1000` path
- `scripts/baremetal-qemu-e1000-probe-check.ps1` plus `scripts/qemu-e1000-dgram-echo.ps1` now prove live QEMU `E1000` PCI bind, MAC readout, TX, RX, payload validation, and counter advance over the freestanding PVH artifact
- `src/pal/net.zig` now routes the same raw-frame PAL seam through selectable `RTL8139` and `E1000` backends without regressing the existing RTL8139 path
- host regressions in `src/baremetal/e1000.zig`, `src/baremetal/pci.zig`, `src/pal/net.zig`, and `src/baremetal_main.zig` now also prove `ARP`, `IPv4`, `UDP`, and bounded `TCP` reuse on the clean-room `E1000` path
- `scripts/baremetal-qemu-e1000-arp-probe-check.ps1`, `scripts/baremetal-qemu-e1000-ipv4-probe-check.ps1`, `scripts/baremetal-qemu-e1000-udp-probe-check.ps1`, and `scripts/baremetal-qemu-e1000-tcp-probe-check.ps1` now prove live QEMU `E1000` ARP request transmission, IPv4 frame encode/decode, UDP datagram encode/decode, bounded TCP handshake/payload/teardown, and TX/RX counter advance over the freestanding PVH artifact
- `HTTP` / `HTTPS` reuse over `E1000` remains future depth
- host regressions in `src/baremetal/e1000.zig`, `src/baremetal/pci.zig`, `src/pal/net.zig`, and `src/baremetal_main.zig` now also prove `ARP`, `IPv4`, `UDP`, `DHCP`, `DNS`, and bounded `TCP` reuse on the clean-room `E1000` path
- `scripts/baremetal-qemu-e1000-arp-probe-check.ps1`, `scripts/baremetal-qemu-e1000-ipv4-probe-check.ps1`, `scripts/baremetal-qemu-e1000-udp-probe-check.ps1`, `scripts/baremetal-qemu-e1000-dhcp-probe-check.ps1`, `scripts/baremetal-qemu-e1000-dns-probe-check.ps1`, and `scripts/baremetal-qemu-e1000-tcp-probe-check.ps1` now prove live QEMU `E1000` ARP request transmission, IPv4 frame encode/decode, UDP datagram encode/decode, DHCP discover encode/decode, DNS query/response exchange, bounded TCP handshake/payload/teardown, and TX/RX counter advance over the freestanding PVH artifact
- host regressions in `src/pal/net.zig` plus `src/baremetal_main.zig` now prove bounded freestanding `HTTP` / `HTTPS` transport reuse over the clean-room `E1000` path without regressing the existing `RTL8139` lane
- `scripts/baremetal-qemu-e1000-tool-service-probe-check.ps1` now proves bounded framed tool-service reuse over the clean-room `E1000` path, including `echo`, `EXEC`, `help`, persisted script install, `run-script`, and filesystem readback over the live QEMU `TCP` probe lane
- `scripts/baremetal-qemu-e1000-http-post-probe-check.ps1` now proves bounded freestanding `HTTP` POST request/response flow over the `E1000` probe lane, and `scripts/baremetal-qemu-e1000-https-post-probe-check.ps1` now proves live QEMU `E1000` `HTTPS` POST over `ARP` + `IPv4` + `TCP` + `TLS` with filesystem-backed trust-bundle selection
- higher service reuse over `E1000` beyond transport closure remains future depth
- keyboard/mouse is now strict-closed in [`docs/zig-port/FS5_5_HARDWARE_DRIVERS_SYSTEMS.md`](docs/zig-port/FS5_5_HARDWARE_DRIVERS_SYSTEMS.md)
- `src/baremetal/ps2_input.zig` now contains a real x86 port-I/O backed PS/2 controller path
- `scripts/baremetal-qemu-ps2-input-probe-check.ps1` proves IRQ-driven keyboard/mouse state updates against the freestanding PVH artifact
Expand Down
10 changes: 10 additions & 0 deletions build.zig
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ pub fn build(b: *std.Build) void {
const baremetal_e1000_ipv4_probe = b.option(bool, "baremetal-e1000-ipv4-probe", "Enable the E1000 IPv4 validation path in the freestanding image") orelse false;
const baremetal_e1000_udp_probe = b.option(bool, "baremetal-e1000-udp-probe", "Enable the E1000 UDP validation path in the freestanding image") orelse false;
const baremetal_e1000_tcp_probe = b.option(bool, "baremetal-e1000-tcp-probe", "Enable the E1000 TCP validation path in the freestanding image") orelse false;
const baremetal_e1000_dhcp_probe = b.option(bool, "baremetal-e1000-dhcp-probe", "Enable the E1000 DHCP validation path in the freestanding image") orelse false;
const baremetal_e1000_dns_probe = b.option(bool, "baremetal-e1000-dns-probe", "Enable the E1000 DNS validation path in the freestanding image") orelse false;
const baremetal_e1000_http_post_probe = b.option(bool, "baremetal-e1000-http-post-probe", "Enable the E1000 HTTP POST validation path in the freestanding image") orelse false;
const baremetal_e1000_https_post_probe = b.option(bool, "baremetal-e1000-https-post-probe", "Enable the E1000 HTTPS POST validation path in the freestanding image") orelse false;
const baremetal_e1000_tool_service_probe = b.option(bool, "baremetal-e1000-tool-service-probe", "Enable the E1000 tool-service validation path in the freestanding image") orelse false;
const baremetal_rtl8139_probe = b.option(bool, "baremetal-rtl8139-probe", "Enable the RTL8139 Ethernet validation path in the freestanding image") orelse false;
const baremetal_rtl8139_arp_probe = b.option(bool, "baremetal-rtl8139-arp-probe", "Enable the RTL8139 ARP validation path in the freestanding image") orelse false;
const baremetal_rtl8139_ipv4_probe = b.option(bool, "baremetal-rtl8139-ipv4-probe", "Enable the RTL8139 IPv4 validation path in the freestanding image") orelse false;
Expand Down Expand Up @@ -112,6 +117,11 @@ pub fn build(b: *std.Build) void {
baremetal_options.addOption(bool, "e1000_ipv4_probe", baremetal_e1000_ipv4_probe);
baremetal_options.addOption(bool, "e1000_udp_probe", baremetal_e1000_udp_probe);
baremetal_options.addOption(bool, "e1000_tcp_probe", baremetal_e1000_tcp_probe);
baremetal_options.addOption(bool, "e1000_dhcp_probe", baremetal_e1000_dhcp_probe);
baremetal_options.addOption(bool, "e1000_dns_probe", baremetal_e1000_dns_probe);
baremetal_options.addOption(bool, "e1000_http_post_probe", baremetal_e1000_http_post_probe);
baremetal_options.addOption(bool, "e1000_https_post_probe", baremetal_e1000_https_post_probe);
baremetal_options.addOption(bool, "e1000_tool_service_probe", baremetal_e1000_tool_service_probe);
baremetal_options.addOption(bool, "rtl8139_probe", baremetal_rtl8139_probe);
baremetal_options.addOption(bool, "rtl8139_arp_probe", baremetal_rtl8139_arp_probe);
baremetal_options.addOption(bool, "rtl8139_ipv4_probe", baremetal_rtl8139_ipv4_probe);
Expand Down
14 changes: 8 additions & 6 deletions docs/zig-port/FS5_5_HARDWARE_DRIVERS_SYSTEMS.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,16 @@ Tracked docs:
Delivered first adoption slice:

- clean-room `E1000` NIC support
- first strict delivery now includes raw-frame/L2 plus `ARP`, `IPv4`, `UDP`, and bounded `TCP`
- first strict delivery now includes raw-frame/L2 plus `ARP`, `IPv4`, `UDP`, `DHCP`, `DNS`, and bounded `TCP`
- `src/baremetal/e1000.zig` now provides a ZAR-owned `82540EM`-class driver with PCI bind, MMIO + legacy I/O reset, EEPROM MAC readout, bounded TX/RX rings, and raw-frame send/receive telemetry
- `src/baremetal/pci.zig` now discovers the `E1000` MMIO + I/O BAR pair and enables I/O, memory, and bus-master decode on the selected function
- host regressions now prove init, MAC readout, TX, RX, export-surface stability, and `ARP` / `IPv4` / `UDP` / bounded `TCP` protocol reuse on the clean-room `E1000` path
- host regressions now prove init, MAC readout, TX, RX, export-surface stability, and `ARP` / `IPv4` / `UDP` / `DHCP` / `DNS` / bounded `TCP` protocol reuse on the clean-room `E1000` path
- `scripts/baremetal-qemu-e1000-probe-check.ps1` plus `scripts/qemu-e1000-dgram-echo.ps1` now prove live QEMU `E1000` PCI bind, MAC readout, TX, RX, payload validation, and counter advance over the freestanding PVH artifact
- `src/pal/net.zig` now routes the same raw-frame PAL seam through selectable `RTL8139` and `E1000` backends without regressing the existing RTL8139 path
- `scripts/baremetal-qemu-e1000-arp-probe-check.ps1`, `scripts/baremetal-qemu-e1000-ipv4-probe-check.ps1`, `scripts/baremetal-qemu-e1000-udp-probe-check.ps1`, and `scripts/baremetal-qemu-e1000-tcp-probe-check.ps1` now prove live QEMU `E1000` ARP request transmission, IPv4 frame encode/decode, UDP datagram encode/decode, bounded TCP handshake/payload/teardown, and TX/RX counter advance over the freestanding PVH artifact
- `HTTP` / `HTTPS` reuse over `E1000` remains the next depth step
- `scripts/baremetal-qemu-e1000-arp-probe-check.ps1`, `scripts/baremetal-qemu-e1000-ipv4-probe-check.ps1`, `scripts/baremetal-qemu-e1000-udp-probe-check.ps1`, `scripts/baremetal-qemu-e1000-dhcp-probe-check.ps1`, `scripts/baremetal-qemu-e1000-dns-probe-check.ps1`, and `scripts/baremetal-qemu-e1000-tcp-probe-check.ps1` now prove live QEMU `E1000` ARP request transmission, IPv4 frame encode/decode, UDP datagram encode/decode, DHCP discover encode/decode, DNS query/response exchange, bounded TCP handshake/payload/teardown, and TX/RX counter advance over the freestanding PVH artifact
- host regressions in `src/pal/net.zig` plus `src/baremetal_main.zig` now prove bounded freestanding `HTTP` / `HTTPS` transport reuse over the clean-room `E1000` path without regressing the existing `RTL8139` lane
- `scripts/baremetal-qemu-e1000-tool-service-probe-check.ps1` now proves bounded framed tool-service reuse over the clean-room `E1000` path, including `echo`, `EXEC`, `help`, persisted script install, `run-script`, and filesystem readback over the live QEMU `TCP` probe lane
- `scripts/baremetal-qemu-e1000-http-post-probe-check.ps1` now proves bounded freestanding `HTTP` POST request/response flow over the `E1000` probe lane, and `scripts/baremetal-qemu-e1000-https-post-probe-check.ps1` now proves live QEMU `E1000` `HTTPS` POST over `ARP` + `IPv4` + `TCP` + `TLS` with filesystem-backed trust-bundle selection
- do not widen scope to VFS/ELF/syscalls/userspace in this slice

`FS5.5` is not complete until each subsystem has:
Expand Down Expand Up @@ -376,8 +378,8 @@ Current local source-of-truth evidence:
- `src/baremetal/e1000.zig` now provides a ZAR-owned `82540EM`-class `E1000` path with PCI bind, MMIO + legacy I/O reset, EEPROM MAC readout, bounded TX/RX rings, and raw-frame send/receive telemetry
- `src/baremetal/pci.zig` now also discovers the `E1000` MMIO + I/O BAR pair and enables I/O, memory, and bus-master decode on the selected PCI function
- dedicated host regressions prove init, MAC readout, TX, RX, export-surface stability, and bounded `TCP` reuse on the clean-room `E1000` path
- `scripts/baremetal-qemu-e1000-probe-check.ps1`, `scripts/baremetal-qemu-e1000-arp-probe-check.ps1`, `scripts/baremetal-qemu-e1000-ipv4-probe-check.ps1`, `scripts/baremetal-qemu-e1000-udp-probe-check.ps1`, and `scripts/baremetal-qemu-e1000-tcp-probe-check.ps1` now prove live QEMU `E1000` raw-frame, `ARP`, `IPv4`, `UDP`, and bounded `TCP` transport behavior over the freestanding PVH artifact
- `HTTP` / `HTTPS` and higher service reuse over `E1000` remain future depth
- `scripts/baremetal-qemu-e1000-probe-check.ps1`, `scripts/baremetal-qemu-e1000-arp-probe-check.ps1`, `scripts/baremetal-qemu-e1000-ipv4-probe-check.ps1`, `scripts/baremetal-qemu-e1000-udp-probe-check.ps1`, `scripts/baremetal-qemu-e1000-dhcp-probe-check.ps1`, `scripts/baremetal-qemu-e1000-dns-probe-check.ps1`, `scripts/baremetal-qemu-e1000-tcp-probe-check.ps1`, and `scripts/baremetal-qemu-e1000-tool-service-probe-check.ps1` now prove live QEMU `E1000` raw-frame, `ARP`, `IPv4`, `UDP`, `DHCP`, `DNS`, bounded `TCP`, and framed tool-service reuse behavior over the freestanding PVH artifact
- bounded `HTTP` / `HTTPS` transport reuse is now closed over `E1000`; higher service reuse beyond transport closure remains future depth
- the live freestanding/QEMU proof is now green:
- `scripts/baremetal-qemu-rtl8139-probe-check.ps1`
- MAC readout succeeds
Expand Down
4 changes: 2 additions & 2 deletions docs/zig-port/PHASE_CHECKLIST.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ Registry status:
- `docs/zig-port/ZAR_VS_ZIGOS_INTEGRATION_PLAN.md`
- `docs/zig-port/ZAR_VS_ZIGOS_E1000_SLICE_PLAN.md`
- first delivered adoption slice is clean-room `E1000` protocol reuse through `ARP` / `IPv4` / `UDP` / bounded `TCP`, not direct VFS/userspace import.
- the clean-room `E1000` slice now ships `src/baremetal/e1000.zig`, `src/baremetal/pci.zig` discovery + decode enablement, `src/pal/net.zig` backend selection across `RTL8139` + `E1000`, host regressions for init/MAC/TX/RX/export state plus `ARP` / `IPv4` / `UDP` / bounded `TCP`, and the live QEMU proofs `scripts/baremetal-qemu-e1000-probe-check.ps1`, `scripts/baremetal-qemu-e1000-arp-probe-check.ps1`, `scripts/baremetal-qemu-e1000-ipv4-probe-check.ps1`, `scripts/baremetal-qemu-e1000-udp-probe-check.ps1`, and `scripts/baremetal-qemu-e1000-tcp-probe-check.ps1` on top of `scripts/qemu-e1000-dgram-echo.ps1`.
- `HTTP` / `HTTPS` reuse over `E1000` remains future depth.
- the clean-room `E1000` slice now ships `src/baremetal/e1000.zig`, `src/baremetal/pci.zig` discovery + decode enablement, `src/pal/net.zig` backend selection across `RTL8139` + `E1000`, host regressions for init/MAC/TX/RX/export state plus `ARP` / `IPv4` / `UDP` / `DHCP` / `DNS` / bounded `TCP`, and the live QEMU proofs `scripts/baremetal-qemu-e1000-probe-check.ps1`, `scripts/baremetal-qemu-e1000-arp-probe-check.ps1`, `scripts/baremetal-qemu-e1000-ipv4-probe-check.ps1`, `scripts/baremetal-qemu-e1000-udp-probe-check.ps1`, `scripts/baremetal-qemu-e1000-dhcp-probe-check.ps1`, `scripts/baremetal-qemu-e1000-dns-probe-check.ps1`, and `scripts/baremetal-qemu-e1000-tcp-probe-check.ps1` on top of `scripts/qemu-e1000-dgram-echo.ps1`.
- bounded framed tool-service reuse is now closed over `E1000` through `scripts/baremetal-qemu-e1000-tool-service-probe-check.ps1`, and bounded `HTTP` / `HTTPS` transport reuse remains closed through `scripts/baremetal-qemu-e1000-http-post-probe-check.ps1` and `scripts/baremetal-qemu-e1000-https-post-probe-check.ps1`.
- `FS5.5` framebuffer/console strict closure is now reached locally: `src/baremetal/framebuffer_console.zig` programs a real Bochs/QEMU BGA linear-framebuffer path with bounded mode support for `640x400`, `800x600`, `1024x768`, `1280x720`, and `1280x1024`, `src/baremetal/pci.zig` discovers the selected PCI display adapter as structured metadata, exposes the framebuffer BAR, and enables decode on that function, `src/baremetal/edid.zig`, `src/baremetal/display_output.zig`, and `src/baremetal/virtio_gpu.zig` now add the first real EDID-backed controller path over `virtio-gpu-pci` including exported capability flags for digital input, preferred timing, CEA, DisplayID, HDMI-vendor-data, and basic-audio metadata when present plus EDID-derived connector inference, bounded per-output entry export, and bounded resource-create/attach/set-scanout/flush behavior, `src/pal/framebuffer.zig` exposes the surface plus supported-mode enumeration and display-output state through the PAL, host regressions in `src/baremetal/framebuffer_console.zig`, `src/baremetal/virtio_gpu.zig`, `src/baremetal_main.zig`, and `src/baremetal/display_output.zig` prove framebuffer state, display-output state, adapter metadata, supported-mode enumeration, glyph pixel updates, bounded mode switching, present counters, non-zero scanout pixels, connector inference from EDID capability flags, and the output-entry table, and the live QEMU+GDB proofs `scripts/baremetal-qemu-framebuffer-console-probe-check.ps1` and `scripts/baremetal-qemu-virtio-gpu-display-probe-check.ps1` now read back real MMIO banner pixels plus BGA adapter metadata and real `virtio-gpu-pci` EDID/controller capability state with non-zero scanout pixels and validated output-entry metadata over the freestanding PVH artifact; real HDMI/DisplayPort connector-specific scanout paths remain future depth and are not claimed here.
- Latest FS5.5 display connector activation slice: `src/baremetal/display_output.zig` now retargets the exported active output from bounded per-output entries, `src/baremetal/tool_exec.zig` now exposes `display-activate <connector>` and uses connector-targeted activation in launch profiles, `src/baremetal/tool_service.zig` now exposes typed `DISPLAYACTIVATE`, host/module validation proves successful activation of the connected connector plus explicit mismatched-connector rejection, and `scripts/baremetal-qemu-virtio-gpu-display-probe-check.ps1` now proves the same success/rejection behavior on the live `virtio-gpu-pci` controller path.
- Latest FS5.5 display output mode slice: `src/baremetal/display_output.zig` and `src/baremetal/virtio_gpu.zig` now support explicit per-output mode retargeting on the real `virtio-gpu-pci` path, `src/pal/framebuffer.zig` and `src/baremetal_main.zig` expose that same bounded control through the PAL and `oc_display_output_set`, `src/baremetal/tool_exec.zig` now exposes `display-output-set <index> <width> <height>`, `src/baremetal/tool_service.zig` now exposes typed `DISPLAYOUTPUTSET`, host/module validation proves the connected output can be driven to `1024x768` while oversized requests are rejected without corrupting the exported state, and `scripts/baremetal-qemu-virtio-gpu-display-probe-check.ps1` now proves the same explicit output-index mode change on the live controller path.
Expand Down
Loading
Loading