Skip to content

Open Cube OS 3.0.0 WP-04 - the L1 migration (development milestone)

Pre-release
Pre-release

Choose a tag to compare

@cubestudio-dev cubestudio-dev released this 29 Oct 17:32
· 24 commits to main since this release

Open Cube OS 3.0.0 WP-04 - the L1 migration (development milestone)

Every command of the v2.2.0 baseline now runs from ring 3: one
command = one app = one folder (src/L1/<name>/main.c), discovered
mechanically by tools/gen_userprogs.py into the embedded program
registry. The L0 side is a pure service kernel - drivers, services and
the numbered L1SVC ABI; no user-plane code remains in ring 0.

This is a development milestone on the way to 3.0.0, not the 3.0.0
release
(the formal release, its OTA chain and version bump land in
the next work package).

Where the 251 v2.2.0 commands went

Batch Content Count
G3-G5 140 SVC wrappers + 31 file tools + the nano/vi editor shells 171
G6 health / dmesg / logcat / logctl / watchdog 5
G7 the l1 family: run, l1test, ldd, help (+ help_*_test invariants) 7
G8 vitals 5 (mem/frag/heap/sched/syncstat) + crash 3 8
G9 18 ring-0 self-tests (diag ops 9-26) 18
G10 13 chipset diagnostics (diag ops 27-39) 13
G11a ssh + sshd (the RFC 4251-4254 engine pair, revived verbatim) 2
G11b ime + ime-test (pinyin engine, DISP ops 11/12 revived) 2
G11c the nine full-screen TUI pages (category "tui") 9
stays in ush shell-state builtins (cd/export/alias/...) - a subprocess cannot mutate the shell's own process state 9
subcommands health export / health watch live inside the health app 2

Total migrated: 235 of 251; the remainder are the documented
shell-state / subcommand classes above (plus one audit false-positive
and the dual-homed counting caliber).

Parity proof

A 34-command battery ran against a real v2.2.0 build (same toolchain)
side by side in QEMU - structure is line-for-line identical; only
volatile state (tick counts, free bytes, heap block counts) and
version strings differ. Per-batch evidence (verbatim transcripts,
interactive sessions, VNC page screenshots, SSH e2e with paramiko)
lives under evidence/3_0_0_wp04_*.

New ABI surface (append-only)

  • category 19 "diag" - 39 operations (vitals, crash, self-tests, chipset)
  • category 20 "tui" - 9 operations (the desktop + classic pages)
  • net ops 13/14 (ssh/sshd), display ops 11/12 (ime/ime-test, back on their v2.2.0 numbers)

Live bugs found and fixed along the way: F6 (IRQ-context interrupt
enablement - three reversed IFs, a #DF under pmmrace), F7 (stale RSDP
pointer into loader memory - an ACPI #PF), F8 (a health format that
had drifted from its v2.2.0 source).

Downloads

Asset Size SHA256
opencube-3.0.0-WP-04.iso 12,351,488 B b2697ab8617ed21ec20a541f5f658d62eb6a095a40ca69bf3e7796b96aa153c3
opencube-3.0.0-WP-04.elf 2,077,472 B 31c7c8844ae33d91a4e8dba5653aeb21024f4a626244eddcbab984b7c75125bf

The ISO is hybrid BIOS+UEFI (dual El Torito) and boots straight into
the ring-3 ush> shell on both SeaBIOS and OVMF. The ELF is the
kernel image for direct -kernel boot.

Verified (all gates real runs)

Gate Result
Compile 0 errors 0 warnings (-Wall -Wextra -Werror) PASS, two clean builds
Determinism: two clean builds byte-identical PASS (elf 31c7c884, iso b2697ab8)
BIOS boot to ring-3 ush> (auto-entry) PASS
UEFI (OVMF) boot to ring-3 ush> PASS
tui-test 93/93 all green
CI on the release commit and the tagged commit both success

Version 3.0.0-WP04, build 348 - the build id is the commit count
plus 21 and stays monotonic above the published 316 (2.2.0); the
kernel reports it via the crash header and the sysinfo pages.


fix1 update (3.0.0-WP04-fix1)

The WP-04 fix batch: all 11 known bugs fixed (each root-caused,
live-verified before/after on QEMU serial), a four-quadrant
source-tree audit (src/L1 274 programs, src/L0, docs, website) with
every finding fixed on the spot, and an ISO determinism repair found
during the re-check.

The 11 known bugs

# Fix
1 exit now prints guidance (the shell is the surface; no blank halt)
2 tui serial clean at byte level (4000 SGR pairs, 0 lone ESC, strict UTF-8 decode)
3 serial CSI pre-decode (arrows/Home/End/Del/Ins/PgUp/PgDn; SGR mouse passthrough; physical Esc -> OC_KEY_ESC_KEY)
4 launcher exit message honest (no "recovery shell" claim)
5 help -a / help -w restored: three DISTINCT modes via L1SVC op1 arg
6 help registry-driven - the ~100-line hardcoded list is gone; the registry carries per-program wp tags
7 line editor: prompt-aware redraw + pad-clear to previous length + CJK bias bytes accepted (six symptoms, 18/18 live battery)
8 banner version fetched from the uname service (3.0.0-WP04)
9 OCIRE keyboard maps realigned (1->1, =->=, Tab live; before: 1->2, =->backspace, Tab dead)
10 VGA scroll half-copy fixed (1920 -> 3840 bytes); before/after live-captured
11 g_pipes init memset(NULL) removed

Before/after evidence for every bug: evidence/3_0_0_wp04_fix1/ in
the repository.

Audit & determinism findings (fixed on the spot)

  • Docs regenerated to the 285-command surface, all from the command
    registry (no hand-written command list anywhere).
  • The WP-05 OCBL packer had dropped the G13 staging-tree touch:
    forced rebuilds minutes apart differed in the PVD/directory-record
    mtimes and the RR TF atime/ctime. The packer now pins the staging
    tree to the epoch and zeroes RR TF ctime + atime post-xorriso -
    two forced rebuilds 65 s apart are byte-identical across
    opencube.iso, ocire.iso, src.zip and OCIRE.elf.

Current assets (fix1, build 361, the pinned-tree rebuild)

Asset Size SHA256
opencube-3.0.0-WP04.iso 3,637,248 B b0f348576f61601ba7d7655a0e53e74610e2d36701959187d56f8232e792001d
opencube-3.0.0-WP04-src.zip 4,157,834 B 886bf41200d3165543ffb1f26c1644f286fb4b2ff1b5090d6d11248a4792b98f
opencube-3.0.0-WP04-update.tar.gz 1,153,842 B 9f7a7030b6990c8a3736ba67573293d636d9b4ac18067a7fac4e71ea1d5db2bd
opencube-3.0.0-WP04.elf 2,075,728 B e7c6ce9796775bd66af52b0f3913c97bde44df8c197e7f6b80ef9734f0ba32fc

The WP04 (no dash) set above is the current fix1 build. The
original WP-04 assets - the 12,351,488 B dual-GRUB ISO and its
ELF - remain attached unchanged as the historical WP-04 milestone
build.

Re-verified after the determinism fix (all real runs)

Gate Result
BIOS boot to ring-3 ush> 3/3
UEFI (OVMF) same-ISO gate 4/4
ush full battery - banner, arrow keys, Ctrl combos, history ghost, Tab completion, CJK, exit, help three modes, pipes 18/18
OCOS suite regression (incl. tui-test 93/93) 12/12
OCIRE regression - BIOS+UEFI ISO boot, help/syscheck/logread 5/5
OCIRE keyboard (bug 9) 5/5
VGA scroll freeze band (bug 10) 6/6, band md5 identical to the earlier evidence
ELF reproducible-check PASS (e7c6ce97)
CI on 250fc14 / 44decb4 / a80c4e4 all success