ComputerWorld

Project

Provenance and migration#

Two different migrations share this page: moving your own code between 0.x releases of ComputerWorld, and the predecessor projects this workspace replaces.

Moving between 0.x releases#

0.x releases may change APIs and world schemas, so pin the version — snapshots and state hashes name the engine that made them, and only the same engine version imports an exported snapshot. CHANGELOG.md is the authoritative list; what follows is what actually breaks a consumer.

Into 0.2.0. Services answer with text/html rather than Page JSON. Nothing you have stops working: a Page a service returns, and a site seeded in the pages format, are converted by cw_web::page::to_document on the way to the browser, and the element ids an agent's script addresses are preserved through the conversion. New services should be written in HTML; html-migration.md is the recipe, with the search service as the worked example. PageTheme gains an optional font, a CSS font-family list; scene JSON without a node typeface is unchanged. The world console (examples/browser/), its site/demo/ copy, the browser-demo release archive and the three Playwright suites that drove it were removed; the world those machines ran in is now generated by scripts/content/build-live-world.mjs, and the engine half of the suite is crates/computerworld/tests/site_world.rs.

After 0.2.0. Runtime::events() returns &EventLog rather than &[EventRecord]; it derefs to a slice and iterates in the same order. Tab::history is a History rather than a Vec<HistoryEntry>; it derefs to a slice and deliberately has no DerefMut. Runtime::fork_and_restore is new, and cw_scene::Digest is public and Copy. Every state hash, event record, inspect(), exported snapshot and replay is byte-identical to 0.2.0, so checkpoints written by 0.2.0 still import.

The predecessor projects#

The detailed provenance matrix and pinned source revisions describe predecessor evidence. This workspace is a Rust redesign; it is not a source-compatible rename of any prior project and does not import predecessor runtime dependencies.

PredecessorRetained idea or behaviorMigration consequence
SCEGeneric topology, independent machines, VFS/process/network semantics, OS profiles and service placementConvert topology to WorldDefinition; register native implementations
TCN vendored SCEDeterministic IDs/time, persistent sessions, clock reset fixes, actor/evaluator splitKeep one runtime alive; replace wrapper globals and model-specific projections with explicit session grants
SynthUXStateful service workflows, logical scheduling and input/frame provenanceMove durable state into service instances; route views through actual HTTP responses
Standalone mock sitesIndependent endpoints and useful mail/docs/chat/git/calendar/issue viewsServe the views as HTML from a service that owns their state; do not retain disconnected fixture stores
SynthexEarly virtual-internet intent and later SynthUX integrationNo Internet-stub implementation to preserve
symbolic-ai-modelsExplicit perception/action boundariesKeep interfaces, omit model/training architecture

Intentional incompatibilities include no mandatory Node/Python host runtime, no Chromium-per-world rendering, no global Date patch, no subprocess-per-step bridge, no implicit host network fallback and no hardcoded reference ecosystem. Reward functions, training curricula and policy representations stay outside the kernel.

Portable checkpoints are new runtime artifacts, not imports of predecessor heap snapshots. Commands implement documented synthetic subsets rather than a complete POSIX/PowerShell interpreter. A site's HTML and CSS are rendered by the engine's own web engine, which supports a bounded and explicit set of properties rather than everything a shipping browser does; html::validate_strict names what is missing at test time instead of dropping it silently. Extension handlers are trusted Rust code; former JavaScript/Python handlers require ports or an explicitly separate adapter.

Use integration behavior rather than route-name similarity to assess parity: two-machine mutations, DNS failures, authorization, replay, fork isolation and actual visible-state transitions. Existing predecessor defects are evidence to avoid, not compatibility requirements. Performance comparisons must use actual successful work rather than requested-action echoes or unconditional success flags.