PolymerOS has four release channels. They run in one direction, from least to most vetted:
chaos → alpha → beta → stable
Each rung up the ladder adds scrutiny, a stronger signature, and soak time. A build is never rebuilt to move up a channel: the same artifacts are re-published one rung higher after they earn it, so a build in Beta is byte-for-byte the build that passed through Alpha and Chaos.
What each channel means for you
- Chaos — development builds from the autonomous-agent pipeline. Each one passes a build gauntlet (compile, boot, compartment checks, trust-ring rendering) shortly before it is published, and it is signed automatically. Expect rough edges; run it in a VM and verify the checksum. No promises beyond that.
- Alpha — where new subsystems land first, after a Chaos build has soaked for a number of days with no regression evidence and an operator has signed off. Expect breakage.
- Beta — feature-complete builds under broad testing before Stable. To reach Beta, an Alpha build must additionally prove that the update path from the previous Beta works.
- Stable — for general use. A Stable build has been through Beta soak, a release review, and a 2-of-3 threshold approval held by multiple people, and is updated only after extended validation.
Which channel a build follows
A build's channel is baked in when it is built. An install follows its channel by checking that channel's latest.json pointer for a newer signed release. Switching channels is a deliberate act on your part, not something the server decides. The channel is also visible in the version string a build reports — for example 0.0.5+chaos.20260705T2140Z names the channel and the time it was stamped.
What is not built yet
These are the honest gaps today, one sentence each, so you know what a channel does and does not currently promise:
- Only Chaos produces builds right now; Alpha, Beta, and Stable have no builds published yet.
- The part of an update that actually writes the new system to disk and flips the boot pointer is not wired up yet, so the atomic-switch-and-rollback story is a model rather than working code (updates today only plan the change, they do not apply it).
- The freshness pointer each channel publishes (
latest.json) is not itself signed yet, so a client cannot yet reject a stale or rolled-back pointer.
- The channel name is not yet carried inside the signed metadata, so downgrade protection between channels is not enforced yet.