Skip to content

v1.3.0

Choose a tag to compare

@github-actions github-actions released this 02 Sep 08:37
· 145 commits to main since this release

GLaDOS v1.3.0

A from-scratch, ring-0 UEFI operating system in Rust, built around a language model that lives inside the kernel — no user/kernel split, no syscalls, one address space. A tool call from the model is a function call.

This is the largest stable release so far: multi-agent workflows as a real feature, a complete visual rework, and two triple-fault bugs found by fuzzing the machine's own userland and fixed.


Added

Multi-agent workflows (work)

A manager delegating to workers, which is a different relationship from the two multi-agent systems already in the tree (the routing council and godel's judges, where disagreement is the product).

  • A manager plans once; the workers then decode nothing. agent::prompt_for re-encodes a growing prompt each step, so an episode spends O(N²) tokens over a run. work plan encodes once and writes each decided action down, so N actions cost one prefill and N decodes — and a worker handed a pre-decided action decodes nothing at all. Measured on a four-step goal with Qwen3-0.6B: planning spent 4 decodes, running the plan spent 0.
  • Memory is the namespace, not a conversation. ctx_save on a 512-slot cache measures in thousands of store blocks, so a context per worker costs more than the work. The namespace is already a content-addressed Merkle tree, so a run has an address and two runs of one plan can be compared exactly, for free.
  • Autonomy takes a declaration and a grant. A workflow declares it may run unattended; that grants nothing on its own, because a plan is a file and a file can edit itself. The operator grants it by typing back part of the plan's address. The grant names the plan without its statuses, so taking a step doesn't revoke the grant that allowed it.
  • The honest half: role adapters were built, trained and judged — and they don't beat the base, for a structural reason (a harvested label is the base model's own argmax). That negative result ships documented rather than hidden.

Frutiger Aero visual rework

The desktop went from Windows-98/2000 flat-and-bevel to a full Frutiger Aero look, in the project's own Aperture orange rather than aqua.

  • Four new span-based primitives (vgrad, tint, glass, shade) — a gradient interface costs about what a flat one did, because a vertical ramp is one memset per row.
  • Warm for the machine, cool for the room: captions, selection and focus stay amber; wallpaper, taskbar glass and fields are blue-green. The wall is a sunset horizon where they meet.
  • The aperture logo is now the sun on that horizon — eight solid blades with the sky showing through the gaps, over an atompunk atom-orbit graticule with glass bubbles.
  • Rounded window tops, gloss, drop shadows (the back-to-front repaint makes them nearly free), a glass taskbar, and white XP-style menus.

Fixed — security (found by fuzzing the userland)

  • Aiksi parser could triple-fault the machine. A few hundred nested brackets overflowed the recursive-descent parser; with no guard page in ring 0 that's an instant silent reboot. Reachable past the operator: the parser runs on any Aiksi source before any capability sandbox, so a skill shared by a stranger rebooted the machine the moment it was run. Two distinct overflows are now bounded — deep nesting (parser stack) and a flat 1+1+1+… chain (a tall AST that faults later in eval or drop). The boot selftest exercises all five attack shapes at depth 400.
  • Workflow run name could path-traverse and corrupt the namespace. work new ../agent/policy wrote through an existing blob and turned it into a directory, destroying a file godel reads. Run and role names are now validated as single path components.

Fixed — correctness, and a few measurements that were wrong

  • -smp was quietly costing the renderer ~30%. The multi-core default (added for the diag mt/migrate suites) was benchmarked on the decode path, where it's free; on the graphics path — span fills and a memcmp, i.e. memory bandwidth — it is not. video bench now runs at -smp 1.
  • A 1-pixel bevel highlight made Minesweeper read as thin dark boxes. The warmer XP face left the soft highlight indistinguishable from the surface (5–6–10 per channel vs white's 19–22–39); a screenshot caught it and it's white again.
  • A bare diag lists suites and runs nothing, printing 0 passed, 0 failed — which reads like a clean sweep and is the opposite. diag all is the verb. Suite count is now 29.
  • The SHA256SUMS download link resolves for the first time — this is the first release with the checksums job.
  • Per-core storage is now armed even on single-core / no-ACPI boots (it wasn't, which silently disabled fault recovery and allocation billing there).

Install media

Three bootable ISOs (El Torito), pick one:

ISO Model Context Size
glados-1.3.0-qwen3-0.6b.iso Qwen3-0.6B, int8 512 ~604 MB
glados-1.3.0-qwen35-2b-8k.iso Qwen3.5-2B hybrid (Apache-2.0) 8k ~1.90 GB
glados-1.3.0-qwen35-2b-32k.iso Qwen3.5-2B hybrid (Apache-2.0) 32k ~1.90 GB

Write to a USB stick and boot it (hold F11 for the boot menu). A live ISO cannot update itself; ISOs are for a fresh install. The .efi + .sig + manifest are for the in-field signed updater. Verify downloads against SHA256SUMS.

Hardware note: this is built for one specific laptop (MSI Thin GF63 12UC). It boots under QEMU for development, but the wireless, ACPI battery and RTL8168 paths are written against that machine.


What's next

  • Role adapters need a teacher that isn't themselves — a labelled outcome from teach, a judge, or a larger model — since a transcript's label is what the base already answered.
  • The XPU (the compute pool that unifies the CPU, the parked application cores and the discrete GPU, formerly "QuantumGPU") lands on the experimental channel, alongside the miner. Experimental builds are a token-gated tier.

diag all 29/29, boot clean on both checkpoints.