This repo holds both languages, so it needs both workspaces. Layout is the same rule on each side — apps/ for what runs, crates/ and packages/ for what is shared, split by what a thing is rather than what it is written in. Members are empty because nothing has moved in yet. Versions are pinned once at the root so two crates cannot disagree about a dependency. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
898 B
crates/
Shared Rust: a library another crate in this repo depends on. A binary someone
runs goes in apps/; shared JS/TS goes in
packages/. The split is by what a thing is, not by what
language it is written in — same rule on both sides of the repo.
Empty today. Components move here one at a time as they are opened.
Two rules
Every version is pinned in the root Cargo.toml. A member writes
tokio.workspace = true and never a version, so two crates in this tree cannot
disagree about a dependency.
Nothing here may depend on anything closed, or name it. This repo is public. A crate that needs a private component is in the wrong repo, and a comment explaining who calls this wants a category noun — "the caller", "a supervising agent" — rather than a name. The requirement is the interesting part; who currently satisfies it is not.