You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Application shell and fragment platform for the statewalker ecosystem — backbone runtimes, the platform-capability vocabulary, and the canonical workbench substrate (logic + renderer fragments).
Packages
Packages follow the @statewalker/${domain}.${aspect}.${modifier} convention
(all-dots; aspect ∈ {core, view, browser, node, cloud, feature}; a view leaf
— *.view.react / *.view.shadcn / *.view.<mime> — is the only place a UI tech
may be imported). See the workbench-package-naming capability spec.
Workspace logic: the Workspace class, project/resource model, class-keyed adapters, the files:* filesystem commands (WorkspaceFilesManager), and the workspace:change command.
Git as an opt-in project nature — a real native-git-compatible .git per project, manual commits, HTTP remotes. Bridges the workspace to webrun-vcs.
Backbone independence rule
The backbone.* packages MUST NOT declare a runtime dependency on any other @statewalker/* package — including siblings in this monorepo. Backbone vendors the narrow slices it needs (currently Logger/getLogger from @statewalker/shared-logger) into backbone.core/src/_vendor/. A CI check (scripts/check-backbone-isolation.ts) enforces this invariant on every PR.
Substrate fragments may depend on backbone, never the reverse.
Substrate fragment shape
Every substrate fragment package follows a single canonical layout, enforced by the workbench-canonical-substrate capability spec:
src/
index.ts # re-exports public/index.js
fragment.ts # re-exports public/init.js's default
public/ # types, commands, slot keys, manager classes, init
internal/ # impl + tests; not reachable through any export sub-path
styles.css # renderer fragments only — Tailwind v4 @source globs
package.json#exports declares exactly "." and "./fragment" for logic fragments, plus "./styles" for renderer fragments (the *.view.* leaves). *.core (and bare *.view) packages do not import React or any *.view.* package — the ADR-0002 boundary, keyed on the view leaf.
Cross-repo dependencies are declared workspace:* rather than catalog:. This is
deliberate: turbo derives its task graph from workspace: specifiers and does not
resolve catalog:, so a catalog: cross-repo dependency is invisible to the scheduler
and its consumer can be built before it.