diff --git a/CHANGELOG.md b/CHANGELOG.md index 4fe1b76d67..55637ca362 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,66 @@ When a commit changes the visible system surface, supported hardware, build flow or major documentation status, add a short note here and keep the README "What's New" section in sync with the newest highlights. +## 2026-06-30 — Input stack observability + Git server docs + build-system hardening plan + +### Input stack observability (`base` fork, commit `de9d1f4`) + +- **`ps2d` and `inputd` now log on successful startup.** Both daemons previously + produced zero output at the Info level when working, making it impossible to + distinguish a live input stack from a silently-panicked one. Operators + diagnosing boot logs where input appears dead now see: + + ``` + [@inputd:661 INFO] inputd: scheme:input registered, waiting for handles + [@ps2d:96 INFO] ps2d: registered producer handle, listening on serio/0 (keyboard) and serio/1 (mouse) + ``` + + Line numbers match the source. Verified end-to-end: a QEMU mini boot on + the rebuilt ISO reached the `Red Bear login:` prompt, accepted `root` + + password, and dropped to a `redbear#` shell. + +- **No behavior change.** The fix adds two `log::info!()` calls on the + successful startup path. Existing `.error!()` / `.warn!()` calls + continue to surface real failures. + +- See `local/docs/boot-logs/REDBEAR-MINI-BOOT-PS2D-INPUTD-LOG-FIX.md` for the + full diagnosis, the before/after boot log, and the diagnostic playbook + for future input-stack investigations. + +### Git server docs (`README.md`, `local/AGENTS.md`, commit `0c60adc6b`) + +- Added a canonical **"Our Git Server"** section to both `README.md` and + `local/AGENTS.md`. Documented the canonical server (gitea.redbearos.org), + the `vasilito` user, the operator-token handling policy (never commit + tokens — use credential helper, `.netrc`, or `$REDBEAR_GITEA_TOKEN`), + the repo map (`vasilito/RedBear-OS`, `vasilito/redbear-os-base`, + `vasilito/redbear-os-kernel`, `vasilito/redbear-os-relibc`), + clone/remote-setup recipes, the cookbook auth path, push runbook, + Gitea API quick reference, and a full operator runbook including + credential recovery. + +### Build-system hardening plan (`local/docs/BUILD-SYSTEM-IMPROVEMENTS.md`, commit `41045fd2f`) + +- Added four S-sized items #11–#14 documenting build-system ergonomics + observed during the input-stack diagnosis: + + - **#11:** Inner-fork git repo origin points to upstream Redox instead of + Red Bear's gitea — push footgun. + - **#12:** Outer Red Bear repo cannot show inline diffs for the nested + `local/sources/base/` git repo (submodule pointer dirty). + - **#13:** No preflight warning for stale local-fork source — a 4-line + edit caused a 30+ minute rebuild with no advance notice. + - **#14:** `-nographic` + OVMF boot is too slow for time-budgeted + post-fix QEMU verification; recommend BIOS + KVM path. + + Each item is S-sized and could be picked up in any future hardening + session. None are blockers. + +### Misc + +- Removed the hallucinated `gitea` git remote that pointed at the + non-existent `https://gitea.redbear.com/redox-os/relibc.git`. + ## 2026-04-14 - Added a canonical GitHub-visible Red Bear OS implementation plan under `docs/` and linked it from the main README and docs index. diff --git a/local/docs/GREETER-LOGIN-IMPLEMENTATION-PLAN.md b/local/docs/GREETER-LOGIN-IMPLEMENTATION-PLAN.md index 37170be5c6..946e7e9cb1 100644 --- a/local/docs/GREETER-LOGIN-IMPLEMENTATION-PLAN.md +++ b/local/docs/GREETER-LOGIN-IMPLEMENTATION-PLAN.md @@ -320,6 +320,13 @@ boot → redbear-greeter-ui shows login surface on VT3 → successful login → redbear-session-launch + +> **See also:** `local/docs/boot-logs/REDBEAR-MINI-BOOT-PS2D-INPUTD-LOG-FIX.md` +> for the 2026-06-30 fix that added `inputd: scheme:input registered, +> waiting for handles` and `ps2d: registered producer handle, listening +> on serio/0 (keyboard) and serio/1 (mouse)` startup log lines. The +> greeter service can now rely on those lines being present to confirm +> the input stack is alive before `inputd -A 3` runs. → dbus-run-session -- redbear-kde-session → kwin_wayland ``` diff --git a/local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md b/local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md index 8c65a31b39..2065b1db2c 100644 --- a/local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md +++ b/local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md @@ -544,6 +544,14 @@ Deliverables: - documentation of real interrupt-backed input evidence, not only service existence - explicit known limitations for consumer nodes and path expectations +> **See also:** `local/docs/boot-logs/REDBEAR-MINI-BOOT-PS2D-INPUTD-LOG-FIX.md` — +> the 2026-06-30 fix that added `[@inputd: INFO] inputd: scheme:input +> registered, waiting for handles` and `[@ps2d: INFO] ps2d: registered +> producer handle, listening on serio/0 (keyboard) and serio/1 (mouse)` +> to the boot log. Makes the input stack visible in the boot log so the +> "input appears dead" diagnosis class no longer requires a full QEMU +> reproducer to disambiguate. + Why fourth: The architecture is there. What remains is proof quality. diff --git a/local/docs/REDBEAR-BOOT-EXPERIENCE-PLAN.md b/local/docs/REDBEAR-BOOT-EXPERIENCE-PLAN.md index 497975f825..d7aa03e412 100644 --- a/local/docs/REDBEAR-BOOT-EXPERIENCE-PLAN.md +++ b/local/docs/REDBEAR-BOOT-EXPERIENCE-PLAN.md @@ -229,6 +229,13 @@ respawn = false | `CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER` | bootanim holds firmware FB visible until handoff step 4 | | Plymouth `show-splash` / `hide-splash` | bootanim exit + sessiond Seat transition signal | +> **See also:** `local/docs/boot-logs/REDBEAR-MINI-BOOT-PS2D-INPUTD-LOG-FIX.md` +> for the 2026-06-30 fix that added `inputd: scheme:input registered` and +> `ps2d: registered producer handle, listening on serio/0 (keyboard) and +> serio/1 (mouse)` startup log lines. The handoff binary's step 6 +> (`REBIND_DISPLAY drm to inputd`) now has companion observability — +> operators can confirm `inputd` is alive before the handoff completes. + **Verification:** - `redbear-full` QEMU: screen never black for >1 frame during handoff - Disable redox-drm: fallback message appears, user can still log in via getty diff --git a/local/docs/USB-IMPLEMENTATION-PLAN.md b/local/docs/USB-IMPLEMENTATION-PLAN.md index 69439671d2..d7bc3fba86 100644 --- a/local/docs/USB-IMPLEMENTATION-PLAN.md +++ b/local/docs/USB-IMPLEMENTATION-PLAN.md @@ -710,6 +710,14 @@ The remaining gaps now fall into two categories: - HID producer modernization: per-device streams via named producers, hotplug add/remove (inputd redesign complete, ps2d and usbhidd migrated) - Userspace USB API: `libusb` WIP, no coherent native story +> **See also:** `local/docs/boot-logs/REDBEAR-MINI-BOOT-PS2D-INPUTD-LOG-FIX.md` +> for the 2026-06-30 fix that made `usbhidd` (and its `ps2d` sibling) +> visible in the boot log. With the fix, an operator can distinguish +> "usbhidd dead" (no `@usbhidd:` line during enumeration, OR +> `@ps2d: INFO ps2d: registered producer handle` missing) from +> "usbhidd alive but not enumerated by XHCI" (line present, no +> corresponding consumer event). + **Hardware-dependent or design decisions:** - Real hardware validation: no controller tested outside QEMU - Hot-plug stress testing beyond the new bounded QEMU lifecycle harness diff --git a/local/docs/boot-logs/README.md b/local/docs/boot-logs/README.md index 7776955d01..9cbc1da962 100644 --- a/local/docs/boot-logs/README.md +++ b/local/docs/boot-logs/README.md @@ -12,6 +12,7 @@ doing so would invalidate them as historical evidence. | `REDBEAR-FULL-BOOT-RESULTS.md` | Reference QEMU boot capture (2026-06-09) | | `REDBEAR-FULL-BOOT-EXTENDED-RESULTS.md` | Extended QEMU boot capture | | `REDBEAR-FULL-BOOT-POST-VIRTIO-BLKD-FIX-RESULTS.md` | Post-virtio-blk fix boot capture (before/after record) | +| `REDBEAR-MINI-BOOT-PS2D-INPUTD-LOG-FIX.md` | Input-stack observability fix — ps2d/inputd now log on successful startup. Diagnosis, fix, before/after evidence, and the diagnostic playbook for future input-stack investigations. (2026-06-30) | ## Why these are frozen