Why
The CARD SHED deterministic core (PRP 2) landed in #139/#140 at @lab/ll-CARDSHED/apps/core/, but the stack lacks a W7-Base contract root:
- No
.w7-meta, compose.yml, .env.example, .gitignore at @lab/ll-CARDSHED/
- No
README.md, CLAUDE.md, AGENTS.md, BLUEPRINT.md
- No stack-local rules (
.claude/rules/)
- No
.stitch/DESIGN.md placeholder (PRP 3 M1 will populate)
Per .shared/W7-CONTRACT.md, every stack one level deep inside a zone needs the contract artifacts. Today cardshed is just a TypeScript library floating under apps/core/ — it's not discoverable via w7 stat and it's not legible to future contributors landing on the repo.
What ships (this PR)
Stack root scaffolding modeled on @lab/ll-RELIQUARY/:
README.md — human-facing overview, status, stack tech, quickstart
CLAUDE.md — Claude-side project rules (mirrors RELIQUARY shape, cardshed-specific)
AGENTS.md — agent-side overview
BLUEPRINT.md — index pointing to PRPs/cardshed-{01,02,03}-*.md as source-of-truth
.w7-meta — minimal, declares "boilerplate; no live services yet"
compose.yml — stub (alpine sleep) so the stack is discoverable; replaced at PRP 3 M1
.env.example — placeholder (real env arrives with apps/ui/)
.gitignore — adapted from RELIQUARY
.claude/rules/ui-design-pipeline.md — stack-local mandatory UI pipeline (mirrors RELIQUARY)
.claude/rules/core-determinism.md — stack-local rule encoding PRP 2's purity guarantees
.stitch/DESIGN.md — placeholder for PRP 3 M1
data/.gitkeep, dogfood-output/.gitkeep, docs/SCREENS/.gitkeep, docs/DECISIONS/.gitkeep
Out of scope
apps/ui/, apps/server/ scaffolding (PRP 3 M1+)
- Stitch generation of the actual design system (PRP 3 M1)
- Any rules-engine or core changes (PRP 2 is sealed)
- Updating root
README.md active-stacks table (separate PR — same gap exists for RELIQUARY)
Acceptance
Reference
Why
The CARD SHED deterministic core (PRP 2) landed in #139/#140 at
@lab/ll-CARDSHED/apps/core/, but the stack lacks a W7-Base contract root:.w7-meta,compose.yml,.env.example,.gitignoreat@lab/ll-CARDSHED/README.md,CLAUDE.md,AGENTS.md,BLUEPRINT.md.claude/rules/).stitch/DESIGN.mdplaceholder (PRP 3 M1 will populate)Per
.shared/W7-CONTRACT.md, every stack one level deep inside a zone needs the contract artifacts. Today cardshed is just a TypeScript library floating underapps/core/— it's not discoverable viaw7 statand it's not legible to future contributors landing on the repo.What ships (this PR)
Stack root scaffolding modeled on
@lab/ll-RELIQUARY/:README.md— human-facing overview, status, stack tech, quickstartCLAUDE.md— Claude-side project rules (mirrors RELIQUARY shape, cardshed-specific)AGENTS.md— agent-side overviewBLUEPRINT.md— index pointing toPRPs/cardshed-{01,02,03}-*.mdas source-of-truth.w7-meta— minimal, declares "boilerplate; no live services yet"compose.yml— stub (alpine sleep) so the stack is discoverable; replaced at PRP 3 M1.env.example— placeholder (real env arrives withapps/ui/).gitignore— adapted from RELIQUARY.claude/rules/ui-design-pipeline.md— stack-local mandatory UI pipeline (mirrors RELIQUARY).claude/rules/core-determinism.md— stack-local rule encoding PRP 2's purity guarantees.stitch/DESIGN.md— placeholder for PRP 3 M1data/.gitkeep,dogfood-output/.gitkeep,docs/SCREENS/.gitkeep,docs/DECISIONS/.gitkeepOut of scope
apps/ui/,apps/server/scaffolding (PRP 3 M1+)README.mdactive-stacks table (separate PR — same gap exists for RELIQUARY)Acceptance
@lab/ll-CARDSHED/.w7-metaparses;docker compose --env-file .env.example -f @lab/ll-CARDSHED/compose.yml config -qexits 0prod-privileged,prod-no-root-mount,zone-ingress-naming) still exit 0chore(cardshed): ...per.claude/rules/commit-format.mdcompose.ymlprivileged:or host root mounts (we're in@lab, but the policy still applies as a stack-shape sanity check)Reference
@lab/ll-RELIQUARY/— template.shared/W7-CONTRACT.md— schemaPRPs/cardshed-01-blueprint.md— tech-stack decisionPRPs/cardshed-02-core-prp.md— already shipped (feat(cardshed): bootstrap CARD SHED deterministic core rules engine #139)PRPs/cardshed-03-experience-prp.md— next slice after this lands