Skip to content

Contribute

Patch the engine, Studio, clients, or docs. Product naming: NAMING.md. Agent-facing rules (full text): AGENTS.md.

Before you open a PR

  1. cargo fmt --all
  2. cargo clippy --workspace --all-targets -- -D warnings
  3. cargo test --workspace
  4. If you touch wasm surfaces: build eelden-lang and eelden-wasm with --profile wasm-size --target wasm32-unknown-unknown
  5. If you change a public capability claim: update Status in the same PR

See Build for Studio/docs commands and CI shape.

Rust policy (enforced by CI)

  • Stdlib only. A new dependency needs an entry in internals/decisions.md explaining why the stdlib cannot do the job. No exception for dev-deps.
  • No unsafe. Every crate carries #![forbid(unsafe_code)]. The one audited exception is the wasm bump allocator in eelden-lang (cfg-gated). A new exception requires a decisions entry, a module-level justification comment, and Miri coverage in CI.
  • Clippy pedantic, warnings denied. Fix the lint or #[allow] with a one-line justification. A bare #[allow] is a review blocker.
  • cargo fmt before every commit.

When to update public Status

Status is the honesty contract for consumers. Update it (and any matching consumer guide/language/reference page) when your change:

  • Ships a capability listed as Not yet, or removes/regresses one listed Yes
  • Changes the meaning of an existing Yes row (e.g. join shape, atomic conflict model, OPFS durability default)
  • Adds a product-facing CLI flag, HTTP surface, or client API that docs will describe

Do not treat internals/engine-plan.md or internals/plans/* as the public roadmap. Plans stay private; Status is what the site claims.

Teaching mandate (summary)

Substantial PRs need a review guide, reviewer questions, and PR-description explanations for unsafe, non-elided lifetimes, locking/Arc/Rc, and new deps. Full process: Review process.

Comments and tests

  • Comments explain intent and trade-offs, not mechanics. Port divergences from the Odin original (spike commit f6818eb) are documented at the divergence site.
  • Tests are tripwires: when the type system prevents a bug class, keep a test that would fail if the protection were removed (see read_future_is_send in async_pager.rs).

Pre-alpha. Local-first. Stdlib-only Rust engine. Tenant concerns shifted left into the database.