CUBELinux-2: WordFlags/tri-channel 16-bit flag field, tag-14 + scan_by_word_flag, cubetrace capture→replay→golden→lineage, CUBE VP-tree balling index (cubecode::ballindex), cubefs-visible WordFlags, and cube-mvw (sharded multi-writer MVCC store with per-shard WALs + group-commit + compaction, impl CubeBackend => CubeStore<MvwBackend> DB). Adds show-flags/scan-word-flags/trace-*/golden-capture CLI; ~ tests green.

This commit is contained in:
CUBELinux-2
2026-09-06 21:20:04 -04:00
parent 3f007a1f38
commit cc896fc336
22 changed files with 1695 additions and 7 deletions
+96
View File
@@ -0,0 +1,96 @@
# Resume Marker — 2026-08-21 (kernel Rust build: IRQ lifetime fixes + ready for compile)
## Context
The session after RESUME-20260820. Fixed the kernel Rust build errors and verified `make rust/core.o` compiles cleanly. Heavy kernel compile not started (per user directive — will run tomorrow with explicit go).
---
## What was done this session
### 1. Kernel Rust build: IRQ lifetime errors fixed
**File changed:** `rust/kernel/irq/request.rs`
**Root cause:** `rust/core.o` failed with 3× `E0310: the parameter type T may not live long enough` errors. The extern "C" IRQ callback functions were missing `+ 'static` lifetime bounds on their generic `T` parameters.
**Fixes applied (4 total):**
| Function | Line | Change |
|----------|------|--------|
| `handle_irq_callback` | 264 | `T: Handler` → `T: Handler + 'static` |
| `handle_threaded_irq_callback` | 483 | `T: ThreadedHandler` → `T: ThreadedHandler + 'static` |
| `thread_fn_callback` | 499 | `T: ThreadedHandler` → `T: ThreadedHandler + 'static` |
The `impl` blocks already had `T: Handler + 'static` and `T: ThreadedHandler + 'static` on lines 185, 198, 403, 416 — the three extern C callback functions and their callers were the missing ones.
**Verification:** `python3 /tmp/hermes-verify-kernel-rust-build.py` — 16/16 checks passed:
- Source file checks: all 3 fixed signatures present, no old patterns remain
- Build: `make rust/core.o` exit 0, no E0310 errors, no "error: aborting"
- Object file: 344,464 bytes at `rust/core.o`
- Only 2 pre-existing warnings (unused import `flags::*`, unused feature `used_with_arg`)
### 2. ./check gate — ALL CHECKS PASSED
```
./check → ALL CHECKS PASSED (run: ./check mount | bench | stress | daemon for those stages)
```
fmt clean, 223 tests, clippy -D clean. No regressions from the IRQ fix.
### 3. Build config (carried over from prior session, still valid)
- Nightly rustc 1.100.0 (`rustup default nightly`)
- `scripts/target.json`: `rustc-abi: softfloat` (patched from `x86-softfloat` in prior session — rustc 1.100 rejects `x86-softfloat`)
- `-Zunstable-options` added to `rust/Makefile:559` (rustc_library rule)
- `CONFIG_RUST=y`, `CONFIG_RUSTC_VERSION=110000` in `.config`
- `rust-src` component installed for nightly toolchain
- `generate_rust_target.rs` patched to emit `softfloat` (not `x86-softfloat`)
---
## What remains for tomorrow
### Kernel compile (heavy — ask before launching)
- Command: `cd /home/CUBELinux/CUBELinux-2/src/CUBELinux-build && make -j4 bzImage modules`
- Use `-j4` not `-j8` — 7.4 GB RAM, only 3.7 GB free; rustc is memory-hungry, -j8 risks swapping
- Expected time (incremental, current state with 28,447 .o files already present): **~5–15 minutes**
- If clean build needed: **45–90 minutes** on this hardware (Intel i5-1035G4, 4c/8t, 1.1 GHz base, NVMe)
- After build: install modules, update GRUB, reboot into new kernel
### GRUB
- New kernel entry: `LOCALVERSION=-cube` (already in .config)
- Verify `LOCALVERSION=-ipu4p` entry still works (camera kernel, currently active)
### Post-boot verification
- Cube filesystem mount
- Daemon startup
- Camera (ipu4) if desired
---
## Xfce (separate track — not touched this session)
- dpkg state clean: lightdm, light-locker, task-xfce-desktop all removed/purged
- Xfce 4.20.2 intact: `xfce4-session`, `xfce4-panel`, `xfce4-goodies` all `ii`
- Session files: `/usr/share/xsessions/xfce.desktop`, `/usr/share/wayland-sessions/xfce-wayland.desktop`
- GDM active, default DM `/usr/sbin/gdm3`
- Issue reported (external monitor oversized, both monitors showing in Xfce vs GNOME's correct single monitor): root cause is `xfsettingsd` not running during Xfce session — Xfce inherits GNOME's RandR state without managing it. The fix is ensuring `xfsettingsd` starts (autostart entry at `/etc/xdg/autostart/xfsettingsd.desktop` exists, not disabled). No action taken — user will test after reboot.
---
## Files
- Workspace: `/home/CUBELinux/CUBELinux-2/`
- Changed file: `src/CUBELinux-build/rust/kernel/irq/request.rs`
- Canonical gate: `./check` (run from workspace root)
- Build dir: `src/CUBELinux-build/`
- Kernel .config: `src/CUBELinux-build/.config` (CONFIG_RUST=y, CONFIG_LOCALVERSION="-cube")
- Rust target.json: `src/CUBELinux-build/scripts/target.json` (rustc-abi: softfloat)
- System daemon socket: `/run/cube/cube.sock`
- luulu session daemon socket: `/run/user/1000/cube/cube.sock`
- Verification script used: `/tmp/hermes-verify-kernel-rust-build.py` (cleaned up after run)
## Git state
- Branch `feat/os-kernel-in-cube`, working tree clean (verify with `git status` before committing)
- Prior commits on HEAD: `c090233` (bench fix), `ae1a62a` (docs), `3f007a1` (bench saturating_sub) + 3 older commits
---
## Reminder
- User explicitly does NOT want auto-launching heavy kernel compiles while they're using the machine
- `make -j8` saturates all 8 cores + memory on this Surface Pro 7 (i5-1035G4, 7.4 GB RAM)
- Must get user go before launching the kernel compile tomorrow