diff --git a/crates/didbot-site-anim/src/ca.rs b/crates/didbot-site-anim/src/ca.rs index 5828a541..a4835bd7 100644 --- a/crates/didbot-site-anim/src/ca.rs +++ b/crates/didbot-site-anim/src/ca.rs @@ -1,9 +1,11 @@ //! Elementary cellular automata: one row of booleans, stepped by an //! 8-entry rule table under Wolfram's numbering. //! -//! The site's hero animation opens on this. Rule 110 is the one worth -//! naming out loud — it is Turing-complete, a real and citable fact rather -//! than decoration — and Rule 30 supplies the chaotic texture underneath it. +//! The engine behind the multi-scale-automaton direction, which was built +//! and not promoted; the shipped landing page runs `anneal` instead. Rule +//! 110 is the one worth naming out loud — it is Turing-complete, a real and +//! citable fact rather than decoration — and Rule 30 supplies the chaotic +//! texture underneath it. /// One row of cells: `true` is alive. pub type Row = Vec; @@ -14,9 +16,9 @@ pub type Row = Vec; pub struct Rule(pub u8); impl Rule { - /// Rule 110: Turing-complete, and the default for the site's animation. + /// Rule 110: Turing-complete, and this direction's default. pub const RULE_110: Rule = Rule(110); - /// Rule 30: chaotic, used for the animation's background texture. + /// Rule 30: chaotic, this direction's background texture. pub const RULE_30: Rule = Rule(30); /// Looks up the outcome for one 3-cell neighborhood. diff --git a/crates/didbot-site-anim/src/layout.rs b/crates/didbot-site-anim/src/layout.rs index 4fdba65e..d70858df 100644 --- a/crates/didbot-site-anim/src/layout.rs +++ b/crates/didbot-site-anim/src/layout.rs @@ -1,8 +1,8 @@ //! A small force-directed layout: nodes repel each other, edges pull their //! endpoints together, and the whole thing settles into a shape. This is the -//! second half of the site's hero animation — the cellular automaton's rows -//! resolve into this graph, standing in for the project's own thesis (local -//! rules, no coordinator, structure only visible zoomed out). +//! second half of the multi-scale-automaton direction — the cellular +//! automaton's rows resolve into this graph — which was built and not +//! promoted; the shipped landing page runs `anneal` instead. //! //! Deliberately not the appview canvas's own simulation (see `web/app.js` in //! vibescrobble.com's repository): that one is wired to real diff --git a/crates/didbot-site-anim/src/lib.rs b/crates/didbot-site-anim/src/lib.rs index 2797e6f4..0b677fd4 100644 --- a/crates/didbot-site-anim/src/lib.rs +++ b/crates/didbot-site-anim/src/lib.rs @@ -1,19 +1,20 @@ -//! The did.bot site's hero animation, as a small standalone simulation. +//! The engines behind the did.bot site's visual directions, as small +//! standalone simulations. //! -//! Rows of an elementary cellular automaton (`ca`) scroll down the page and -//! resolve into a force-directed graph (`layout`) — the same argument the -//! project makes about agents themselves: local rules, no coordinator, -//! structure that only shows up once you zoom out. Both halves are ordinary, -//! independently testable Rust; see their own module docs and `cargo test -//! -p didbot-site-anim`, which needs no browser and no wasm toolchain. +//! The shipped landing page runs the Ising anneal (`ising`, `anneal`), +//! through the `IsingAnim` binding. `didbot-serve`'s dashboard and +//! onboarding pages run the travelling-wave field (`wave`). The rest — +//! `ca`, `layout`, `life`, `noise`, `rd` — are directions that were built +//! and not promoted; `site/README.md` records which is which. Every one is +//! ordinary, independently testable Rust; see the module docs and `cargo +//! test -p didbot-site-anim`, which needs no browser and no wasm toolchain. //! -//! [`Animation`] is the thin wasm-bindgen wrapper the site's JS actually -//! calls: it owns all simulation state and steps it, handing back pointers -//! into buffers it keeps allocated, so the browser side only needs to read -//! bytes and draw — no per-frame marshalling of structured data across the -//! wasm boundary. Building this crate for a native target compiles the -//! `rlib` (and the module tests) and skips everything below that only makes -//! sense on `wasm32-unknown-unknown`. +//! Each wasm-bindgen wrapper owns all simulation state and steps it, handing +//! back pointers into buffers it keeps allocated, so the browser side only +//! needs to read bytes and draw — no per-frame marshalling of structured +//! data across the wasm boundary. Building this crate for a native target +//! compiles the `rlib` (and the module tests) and skips everything below +//! that only makes sense on `wasm32-unknown-unknown`. #![forbid(unsafe_code)] @@ -107,9 +108,10 @@ fn seed_graph(node_count: usize, seed: u32) -> Graph { Graph::new(&positions, edges, Params::default()) } -/// The full hero sequence: a scrolling cellular automaton that hands off to -/// a settling graph. Owns every buffer it exposes to JS, so a caller reads -/// through a pointer rather than receiving a fresh allocation each frame. +/// A scrolling cellular automaton that hands off to a settling graph: the +/// multi-scale-automaton direction, built and not promoted. Owns every buffer +/// it exposes to JS, so a caller reads through a pointer rather than +/// receiving a fresh allocation each frame. pub struct Animation { width: usize, rule: Rule, diff --git a/plan/site.md b/plan/site.md index 2c4c9b4b..bfa428ed 100644 --- a/plan/site.md +++ b/plan/site.md @@ -111,7 +111,9 @@ fabricated artifact this epic otherwise refuses to ship. HTML validation of the pages this project actually authors, and a check that the wasm artifact exists, stays inside its size budget, and that the home page's real content survives with its `