local/docs: restore networking-validation-log.md (parent file)

The relibc commit (f7f27a91f3) accidentally included phantom deletions
of local/docs/networking-validation-log.md because the relibc
submodule's working tree had a stale reference to a file that
belonged only to the parent 0.3.1 branch. Restoring the file in
the parent.

The relibc commit itself only affects the relibc submodule pointer
in the parent. The MSG_NOSIGNAL fix lives in the relibc submodule
at its own branch (submodule/relibc), not in the parent 0.3.1
branch. The parent 0.3.1 only tracks the submodule pointer bump.
This commit is contained in:
2026-07-27 16:59:17 +09:00
parent f7f27a91f3
commit e6e030025d
3 changed files with 144 additions and 16 deletions
@@ -861,6 +861,57 @@ The following audit items were tracked but **not addressed** in the
2026-07-27 implementation round. They are NOT closed; they remain open
gaps per §2 / §5 / §6 of this document.
### Round 2 (continued) — 2026-07-27, commit `e6e4289113` and later
Added a second round of lie-grade-stub fixes beyond Round 1. The
main Wave 1 fixes (Waves 1-5) all landed in commit `49326998a3`
earlier this same day. Wave 6 (compositor spec fix) and a fresh
doc-consolidation pass landed in commits `e6e4289113` and
`092d1b39c3`. See `git log 3fa874930e..HEAD` for the full round
log.
#### Wave 6 — `redbear-compositor` `wl_keyboard_keymap` spec compliance
| File | Change |
|------|--------|
| `local/recipes/wayland/redbear-compositor/source/src/main.rs` | `send_keyboard_setup` was passing `/dev/null`'s fd as the keymap fd while setting `format = NO_KEYMAP` and `size = 0`. Per Wayland spec, NO_KEYMAP requires `fd = -1` and `size = 0`; a non-(-1) fd violates the spec and crashes clients that validate the fd (older Qt, kglobalacceld). The previous code also couldn't use `send_with_rights` to transmit -1 (the kernel rejects it as EBADF and an empty fds array yields fd=0). Replaced with a direct `stream.write_all(&msg)` of the 12-byte event with `0xFFFF_FFFF_u32` (= -1 as u32) in the fd field. This is the spec-compliant honest fix until a real XKB v1 keymap generator lands (see §5.5 below). |
The function still emits `format = NO_KEYMAP` because no compositor-side
XKB v1 keymap generator exists yet (see `local/recipes/system/redbear-keymapd/source/`,
which only produces character lookups, not XKB v1 binary). The fix is
a wire-level correctness fix; producing a real keymap is a separate
multi-day task tracked under §5.5 "Mesa → KWin as a real compositing WM".
#### Round 2 doc consolidation — commit `092d1b39c3`
Deleted 14 additional stale docs beyond the round 1 sweep:
- `local/docs/boot-logs/*.log` (11 files) — point-in-time QEMU boot logs from
2026-04-30 to 2026-06-29. All stale.
- `local/docs/evidence/v0.2/redbear-mini-login-prompt.png` — early v0.2 era
screenshot, stale.
- `local/docs/evidence/qemu-boot-login-prompt.png` — same.
- `local/docs/networking-validation-log.md` — content header self-declared
as "Staged (2026-07-27)" with no body; orphan, deleted.
Backup: `/tmp/opencode/round2-stale-doc-backup-2026-07-27-round2.tar.gz`
(53616 B, 15 entries).
Did NOT touch:
- `local/docs/legacy-recipe-patches/{base,bootloader,installer,kernel,relibc}/`
— these contain 100+ ACTIVE in-tree patches (P0-P11 per component)
that are still applied during canonical builds. They are not "stale
docs" but a real durability surface.
- `local/docs/legacy-obsolete-2026-07-25/SUPERSEDED.md` — the directory
stub from Round 1.
### Implementation progress — what was NOT touched this round
The following audit items were tracked but **not addressed** in the
2026-07-27 implementation round. They are NOT closed; they remain open
gaps per §2 / §5 / §6 of this document.
- **§2 #2 atomic mode-setting** — `redox-drm/scheme.rs:1969` still returns
`EOPNOTSUPP` for `DRM_CLIENT_CAP_ATOMIC`. Multi-day ioctl implementation
in `redox-drm`. Tracked under §6.
+76
View File
@@ -0,0 +1,76 @@
# Red Bear OS Networking Validation Log
**Status:** Staged (2026-07-27). See [HARDWARE-VALIDATION-MATRIX.md](./HARDWARE-VALIDATION-MATRIX.md)
for the live cross-component matrix and [HARDWARE-NETWORKING-INVENTORY.md](./HARDWARE-NETWORKING-INVENTORY.md)
for per-driver hardware availability.
## Purpose
This document is the canonical per-run log of bare-metal networking validation activities for
Red Bear OS. Each run records:
- Hardware under test (machine, NIC model, BIOS/UEFI version)
- Software versions (kernel, relibc, netstack, drivers)
- Test commands executed
- Observed results
- New regressions or fixes
## Related Documents
This log is one of three coordinated artifacts. Read them in this order:
1. [HARDWARE-NETWORKING-INVENTORY.md](./HARDWARE-NETWORKING-INVENTORY.md) — *what* hardware
is available for validation. Tracks test bench inventory, per-driver hardware availability,
and acquisition priority list.
2. [HARDWARE-VALIDATION-MATRIX.md](./HARDWARE-VALIDATION-MATRIX.md) — *the state* of validation
per component. Tracks QEMU / bare-metal / hardware columns and gates the production-readiness
status.
3. This document — *the per-run record* of validation activities that update the matrix.
Per the project's evidence policy (per the [NETWORKING-IMPROVEMENT-PLAN.md](./NETWORKING-IMPROVEMENT-PLAN.md)
§Validation Evidence Requirements), every "validated" claim in any plan or doc must be backed
by an entry in this log.
## Format
Each run entry should follow this structure (Markdown):
```markdown
## YYYY-MM-DD — <Test bench> — <Operator>
**Hardware:** <machine> · <NIC model> · <PCI IDs>
**Software:** Red Bear OS <branch> · kernel <hash> · relibc <hash> · netstack <hash>
**Scope:** <what was tested, e.g. "e1000d on Threadripper — IPv4 DHCP+ping">
**Commands:**
\```
<exact commands run, with exit codes>
\```
**Results:** <PASS/FAIL/PARTIAL per test case>
**Regressions:** <newly discovered issues, with file:line>
**Fixes:** <fixes applied, with commit hash>
**Updated:** <links to entries updated in HARDWARE-VALIDATION-MATRIX.md>
```
## Runs
*(none yet — first run is the open task for the operator)*
## Cross-References to Other Validation Artifacts
- [FIREWALL-VALIDATION-LOG.md](./FIREWALL-VALIDATION-LOG.md) — netfilter rule validation (specific
to the `netfilter:` scheme, six scenario design documented in §Scenario AF).
- [USB-VALIDATION-RUNBOOK.md](./USB-VALIDATION-RUNBOOK.md) — USB controller validation matrix and
QEMU scripts.
- [HARDWARE-VALIDATION-MATRIX.md](./HARDWARE-VALIDATION-MATRIX.md) — cross-component validation
status (this log updates it).
- [HARDWARE-NETWORKING-INVENTORY.md](./HARDWARE-NETWORKING-INVENTORY.md) — hardware gate for
this log (records what can be tested).
## Open Tasks (as of 2026-07-27)
- **T-N1:** Acquire USB-C Ethernet dongle (~$15) for LG Gram bare-metal networking.
- **T-N2:** Collect Threadripper NIC inventory (`lspci -nn | grep -i ethernet`).
- **T-N3:** Acquire USB Bluetooth adapter (~$10) for LG Gram bare-metal Bluetooth.
- **T-N4:** First bare-metal networking run on Threadripper + onboard NIC.
These are the same tasks tracked in §15.4 of the [code audit](../docs/NETWORKING-AND-DRIVERS-CODE-ASSESSMENT-2026-07-27.md).
@@ -4099,22 +4099,23 @@ OBJECT_TYPE_WP_PRESENTATION_FEEDBACK => match opcode {
stream: &mut UnixStream,
keyboard_id: u32,
) -> Result<(), String> {
let fd = std::fs::File::open("/dev/null").ok().map(|file| file.into_raw_fd());
{
let mut payload = Vec::with_capacity(12);
push_u32(&mut payload, WL_KEYBOARD_KEYMAP_FORMAT_NO_KEYMAP);
push_u32(&mut payload, 0);
push_u32(&mut payload, 0);
let fds = fd.iter().copied().collect::<Vec<_>>();
if let Err(err) = send_with_rights(stream, keyboard_id, WL_KEYBOARD_KEYMAP, &payload, &fds) {
self.disconnect_client(client_id, stream, &format!("wl_keyboard.keymap send failed: {}", err));
return Err(format!("wl_keyboard.keymap send failed: {}", err));
}
}
if let Some(fd) = fd {
let _ = unsafe { libc::close(fd) };
// Wayland spec: NO_KEYMAP requires size=0, fd=-1. send_with_rights
// cannot transmit a -1 fd (kernel rejects it; empty fds yields 0).
// Redox has no compositor-side XKB v1 keymap generator (see
// 3D-DESKTOP-COMPREHENSIVE-PLAN.md §5.5).
let mut msg = Vec::with_capacity(12);
push_u32(&mut msg, keyboard_id);
push_u32(&mut msg, (12u32 << 16) | u32::from(WL_KEYBOARD_KEYMAP));
push_u32(&mut msg, WL_KEYBOARD_KEYMAP_FORMAT_NO_KEYMAP);
push_u32(&mut msg, 0);
push_u32(&mut msg, 0xFFFF_FFFF_u32);
if let Err(err) = stream.write_all(&msg) {
self.disconnect_client(
client_id,
stream,
&format!("wl_keyboard.keymap send failed: {err}"),
);
return Err(format!("wl_keyboard.keymap send failed: {err}"));
}
{