Status — what works today
Eelden is pre-alpha. This page is the honesty contract: if a capability isn't listed as Yes here, other pages should not imply it ships.
Engine
| Capability | Status |
|---|---|
| Durable on-disk pages + WAL | Yes |
| Crash recovery (WAL replay) | Yes |
| Multi-page B+tree (splits, interiors, root growth) | Yes |
insert / update / delete (tombstones) | Yes |
filter / select | Yes |
sort / take / skip | Yes (stable sort; Int counts) |
join | Yes — follows a ref field (inner) |
group … aggregate | Yes — count / sum / min / max / avg |
distinct | Yes |
asof | Yes — pins nearest named snapshot ≤ time (not raw page history) |
atomic { … } | Yes — SI pin, RYW, single-process first-committer-wins — Transactions |
| ULID row ids | Yes |
Secondary indexes (field: Type @index) | Yes — equality; planner picks index vs scan |
| Access planner (index vs scan hint) | Yes — shape-only hint[^plan] |
| Multi-tenant catalog / fork / snapshot / suspend / delete | Yes |
| Compact (v1) | Yes — eelden compact / Studio ops |
| Lazy migration Slice A | Yes — fingerprint apply-on-touch; pending_migration clears |
| Page corruption surfaced (checksum) | Yes — never silent; GET …/health/detail |
| Cross-process first-committer-wins | Not yet |
across tenants(…) execution | Not yet (parsed only) |
| Cloud backends (R2 / Durable Objects) | Not yet |
Language front-end
| Capability | Status |
|---|---|
| Lexer / parser / AST | Yes |
Typechecker (Money, enums, joins-as-types, is / as) | Yes |
Named queries (query Name(params) { … }) | Yes |
Wasm intel for Studio (complete / diagnose / hover) | Yes |
| Packaged LSP server | Not yet (design only) |
TypeScript (@eelden/client)
| Capability | Status |
|---|---|
Money class (bigint minors) | Yes |
eelden\…`` tagged template | Yes |
Named-query codegen (eelden-codegen) | Yes |
EeldenExecutor interface | Yes |
| Shipping HTTP / IPC transport | Not yet |
Studio
| Capability | Status |
|---|---|
| Collections + virtualized grid | Yes |
| Query editor + Run | Yes |
Editor intel (| power key, completions, hover, Shape + long-press, squiggles) | Yes |
| Write-mode mutation console | Yes |
| Plan hint (index vs scan) | Yes |
| Tenant switcher / create / fork | Yes |
| Time-travel pin (named snapshots) | Yes |
| Schema & migration panel | Yes |
Live CDC (WebSocket /tail + HTTP poll fallback) | Yes |
| Health panel | Yes |
| Mobile-first shell (Studio) | Yes — drawer nav, header ⋮ overflow, bottom-sheet log, safe-area |
| Visual query builder | Yes — stage cards (filter/join/sort/asof/group/… + CRUD); compound/atomic stay in Code |
Local playground (?local=1) | Yes — in-browser app builder; guided tour; steps Data / Screens / Try it; App menu Advanced (Build/Code); Editing; Actions; refresh-after-write + now() clock tick; OPFS “Saved on this device”; Share app / Open app file (package v2); Crops walkthrough in playground docs |
| Time ± Duration at runtime | Yes — now() + 5s, planted_at - 7d in eval (typeck already allowed) |
| 100k-row grid tripwire | Yes — ?bench=grid100k Playwright scroll budget |
| Playground mobile Playwright | Yes on apex (playground-e2e / npm run test:playground:ci); PR gate still rust+docs only |
| Playground app export package | Yes — JSON v2 { version, schema, workbook, seedQueries, rows } (live data); Open app file via App menu; v1 seeds-only still imports; zip not yet |
Browser engine
| Capability | Status |
|---|---|
| File + in-memory storage backends[^traits] | Yes |
| Injected wall clock | Yes |
| Wasm session engine | Yes |
| Durable OPFS engine | Yes — main-thread MVP; Worker sync-handle later |
What's next
@breakingdrop + page-history compaction (lazy migration Slice B+)asofover raw page-version history- OPFS Worker +
createSyncAccessHandle - Cross-process conflict detection
- TS transport + export/import packaging
- Execute
across tenantsunder capability grants
Agent plans and crate-level design live under Maintainers → Internals — not product promises.
[^plan]: Implemented in the eelden-plan crate for maintainers who are tracing the workspace. [^traits]: Storage and recovery are pluggable behind PageStore / WalSink traits (file and mem backends). Product users only need to know that disk and browser share the same execution model.