[E00-S01-T01] Create workspace/package manifests #368

Merged
kpcto merged 1 commits from feature/154 into main 2026-08-27 23:47:59 +00:00
Member

What changed

Bootstraps the pnpm workspace and package manifests for [E00-S01-T01] Create workspace/package manifests (#154):

  • Root package.json — private: true with packageManager: pnpm@11.23.0 (exact pin, no range)
  • pnpm-workspace.yaml — three distinct workspace entries: apps/*, packages/*, extensions/*
  • Skeleton package manifests — one per workspace group so the separation is real, not just globs:
    • apps/server/package.json (@personal-blog/server)
    • packages/core/package.json (@personal-blog/core)
    • extensions/example/package.json (@personal-blog/example-extension)
  • pnpm-lock.yaml — committed frozen lockfile (lockfileVersion 9.0) generated by pnpm 11.23.0
  • .gitignore — node_modules/.pnpm-store, build output, local env files, logs, OS/editor noise
  • .gitea/workflows/ci.yml — minimal CI job that runs pnpm install --frozen-lockfile and lists the workspace groups (the full pipeline with typecheck/lint/tests is E00-S05, explicitly out of scope here)

Explicitly out of scope per the brief (later tasks): strict base tsconfig (E00-S01-T02), ESM package boundaries (E00-S01-T03), dependency-boundary rule/architecture test (E00-S01-T04). No tsconfig, no build scripts, no architecture tests in this PR.

Criterion → test table

Acceptance criterion Evidence / test
pnpm 11.23.0 workspace committed with a frozen lockfile packageManager: pnpm@11.23.0 in root package.json; pnpm-workspace.yaml committed; pnpm-lock.yaml committed (lockfileVersion 9.0); CI runs pnpm install --frozen-lockfile and installs without resolving
apps, packages and extensions separated into distinct workspace entries pnpm-workspace.yaml lists three separate glob entries; skeleton manifest in each group; pnpm -r list --depth -1 reports all 4 projects (personal-blog root + apps/server + packages/core + extensions/example)
a clean clone installs with pnpm install --frozen-lockfile verified: fresh git clone → pnpm install --frozen-lockfile (fresh store) exits 0, "Already up to date", lockfile unchanged (git status clean after install); CI re-runs the same command on a clean checkout

Test plan executed

  • fresh clone → pnpm install --frozen-lockfile (fresh store) ✓
  • pnpm -r list --depth -1 shows all 4 workspace projects across the three groups ✓
  • lockfile immutability: git status clean immediately after frozen install ✓

Risks / notes

  • Skeleton packages are name-only manifests (no source/scripts/tsconfig); later stories replace their contents.
  • CI deliberately runs only the frozen-install stage; the full CI quality pipeline is E00-S05.

Closes #154

## What changed Bootstraps the pnpm workspace and package manifests for [E00-S01-T01] Create workspace/package manifests (#154): - **Root `package.json`** — `private: true` with `packageManager: pnpm@11.23.0` (exact pin, no range) - **`pnpm-workspace.yaml`** — three **distinct** workspace entries: `apps/*`, `packages/*`, `extensions/*` - **Skeleton package manifests** — one per workspace group so the separation is real, not just globs: - `apps/server/package.json` (`@personal-blog/server`) - `packages/core/package.json` (`@personal-blog/core`) - `extensions/example/package.json` (`@personal-blog/example-extension`) - **`pnpm-lock.yaml`** — committed frozen lockfile (lockfileVersion 9.0) generated by pnpm 11.23.0 - **`.gitignore`** — node_modules/.pnpm-store, build output, local env files, logs, OS/editor noise - **`.gitea/workflows/ci.yml`** — minimal CI job that runs `pnpm install --frozen-lockfile` and lists the workspace groups (the full pipeline with typecheck/lint/tests is E00-S05, explicitly out of scope here) Explicitly out of scope per the brief (later tasks): strict base tsconfig (E00-S01-T02), ESM package boundaries (E00-S01-T03), dependency-boundary rule/architecture test (E00-S01-T04). No tsconfig, no build scripts, no architecture tests in this PR. ## Criterion → test table | Acceptance criterion | Evidence / test | | --- | --- | | pnpm 11.23.0 workspace committed with a frozen lockfile | `packageManager: pnpm@11.23.0` in root `package.json`; `pnpm-workspace.yaml` committed; `pnpm-lock.yaml` committed (lockfileVersion 9.0); CI runs `pnpm install --frozen-lockfile` and installs without resolving | | apps, packages and extensions separated into distinct workspace entries | `pnpm-workspace.yaml` lists three separate glob entries; skeleton manifest in each group; `pnpm -r list --depth -1` reports all 4 projects (`personal-blog` root + `apps/server` + `packages/core` + `extensions/example`) | | a clean clone installs with `pnpm install --frozen-lockfile` | verified: fresh `git clone` → `pnpm install --frozen-lockfile` (fresh store) exits 0, "Already up to date", lockfile unchanged (`git status` clean after install); CI re-runs the same command on a clean checkout | ## Test plan executed - fresh clone → `pnpm install --frozen-lockfile` (fresh store) ✓ - `pnpm -r list --depth -1` shows all 4 workspace projects across the three groups ✓ - lockfile immutability: `git status` clean immediately after frozen install ✓ ## Risks / notes - Skeleton packages are name-only manifests (no source/scripts/tsconfig); later stories replace their contents. - CI deliberately runs only the frozen-install stage; the full CI quality pipeline is E00-S05. Closes #154
bot-implementer added 1 commit 2026-08-27 23:08:24 +00:00
chore: bootstrap pnpm workspace and package manifests
CI / Frozen lockfile install (pull_request) Successful in 48s
a2fa1dee32
E00-S01-T01: create workspace/package manifests
- root package.json pins packageManager pnpm@11.23.0
- pnpm-workspace.yaml separates apps/*, packages/*, extensions/* entries
- skeleton manifests for apps/server, packages/core, extensions/example
- committed frozen lockfile generated by pnpm 11.23.0
- minimal CI: pnpm install --frozen-lockfile + workspace verification
kpcto merged commit 09c40bd9b3 into main 2026-08-27 23:47:59 +00:00
kpcto deleted branch feature/154 2026-08-27 23:48:00 +00:00
Sign in to join this conversation.