Updated Again is a modular monolith. The Web/PWA and Tauri desktop shells share one protocol, one capability registry, and one append-only public ledger. Independent services are deliberately avoided until deployment or scale creates a measured need.
- Every published update declares at least one real change and one expected effect.
- A capsule cannot execute arbitrary shell commands or native code.
- Every capsule is immutable, content-addressed, signed, and locally reversible.
- Core binaries and daily capsules use separate version streams.
- The public ledger is append-only; rollback changes local state but never erases history.
- Agent output is untrusted proposal data, never release authority.
recipe data ──> release planner ──> capsule protocol ──> signed public ledger
│
v
desktop/web shell ──> update client ──> capability registry ──> local world state
│
v
snapshot rollback
src/core/types.tsowns the wire and persistence contracts.src/capabilitiesowns the only allowed state mutations.- UI components may request install/rollback but cannot bypass signature verification.
- Release scripts may create immutable artifacts but cannot add client capabilities.
- New capabilities require a Core Release; new recipes only select existing capabilities.
planned -> generated -> schema checked -> hashed -> signed -> validated -> published
│
v
installed -> verified -> archived
│
v
rolled back
An invalid candidate is discarded. At the daily deadline, the scheduler uses a pre-approved reserve path instead of weakening validation.
Maximum novelty, but it combines creativity, privileges, code execution, signing, and publication into one failure domain. A single prompt injection or bad generation could become a supply-chain incident. Rejected.
The client exposes a finite capability registry. Randomness and Agents only fill signed declarative payloads. New capabilities travel through ordinary code review and cross-platform CI. Chosen because it localizes daily change while keeping native authority stable.
- Public truth:
public/feed/index.jsonand immutable files underpublic/updates/. - Local truth: the latest installed
WorldStateand up to 100 rollback snapshots. - Core update truth:
public/feed/core-latest.json, copied from the signed Tauri release manifest. - Secrets: GitHub Actions secrets only. They must never enter public source, build logs, or Agent context.
- Agent proposal adapter: emits a recipe-shaped proposal; deterministic validation remains unchanged.
- Secondary scheduler: calls the same idempotent daily command for stronger availability.
- Community recipes: accepted as data-only pull requests with licensing metadata.
- Native mobile: separate platform shell; it must not weaken the capsule protocol.