Skip to content

chore(cli): scaffold pnpm workspace with six packages - #1

Merged
jundymek merged 3 commits into
epic/1-workspace-scaffoldfrom
story/1.1-workspace-scaffold
Aug 11, 2026
Merged

chore(cli): scaffold pnpm workspace with six packages#1
jundymek merged 3 commits into
epic/1-workspace-scaffoldfrom
story/1.1-workspace-scaffold

Conversation

@jundymek

@jundymek jundymek commented Aug 11, 2026

Copy link
Copy Markdown
Owner

Summary

Creates the pnpm workspace every later story builds on: six @gitnebula/* packages (contract, scanner, deps, githist, viz, cli) with the AD-2 dependency edges physically declared in each package.json, narrow exports maps (deep imports do not resolve), a shared strict NodeNext tsconfig layout (AD-11: viz is DOM-only, contract is environment-neutral, the rest are Node-side), ESLint 9 flat config + Prettier with the AD-4 determinism ban, vitest wiring (one trivial suite per package), the two build edges (tsup for cli, vite for viz — placeholder outputs), a CI workflow definition, MIT LICENSE and CONTRIBUTING.md.

Notable decisions (details in the story's Dev Agent Record):

  • AD-4 ban implemented with no-restricted-properties on exactly Date.now/Math.random (not no-restricted-globals, which would also outlaw deterministic new Date(isoFromGit) parsing that AD-13 expects). AC-3's observable behaviour is matched exactly.
  • CI is trigger-disabled by maintainer decision (2026-08-11): all verification runs locally during implementation. ci.yml still defines the install + lint + typecheck + test job, but its only trigger is workflow_dispatch; restoring the push/pull_request triggers re-enables it (story 4.2 revisits the CI recipe). This is a deliberate AC-5 deviation, recorded in the spec's Dev Agent Record.
  • Shared dev-dep versions pinned once via the pnpm catalog; onlyBuiltDependencies: [esbuild] committed so pnpm 10's install-script blocking is reproducible.
  • cli's tsup config inlines all workspace packages (noExternal), proving the AD-11 bundle property from day one.
  • Story docs at docs/dev/epic-1/1.1-workspace-scaffold/README.md (spec path — the harness checklist's docs/features/epic-1-omdb-data-layer/ epic map belongs to a different project; spec wins, divergence flagged here).

Manual verification

  • pnpm install && pnpm lint && pnpm typecheck && pnpm test && pnpm build all exit 0 (Node 22, pnpm 10.34.5 via corepack).
  • pnpm -r test: 6 test files passed, 11 tests passed (contract 1, the other five 2 each), 0 failed.
  • AD-4 demonstrated red and green: a temp file calling Date.now()/Math.random() in packages/scanner fails eslint with two no-restricted-properties errors; the identical file in packages/cli passes (exempt).
  • Deep import negative check: import('@gitnebula/contract/src/index.ts') fails with ERR_PACKAGE_PATH_NOT_EXPORTED.
  • Placeholder binary runs: node packages/cli/dist/gitnebula.js prints the four wired pipeline packages; packages/viz/dist/index.html is emitted by vite.

Codex review

1 finding (P1), fixed: engines.node >=20 admitted Node 20.0–20.18, which Vite 8 does not support (^20.19.0 || >=22.12.0); floor raised to >=20.19 (still the architecture's Node 20 major) and documented.

Known issues

  • Shared files: only my own sprint-status.yaml row was flipped (1.1 → review); no shared counters/status lines touched.
  • The two red CI runs on this branch predate the trigger change: GitHub refused to start the jobs (account billing annotation), which prompted the maintainer's decision to skip CI/CD for now.

Refs: 1.1-workspace-scaffold
Agent: alice (terminal-agents, claude-fable-5)

Refs: 1.1-workspace-scaffold
Agent: alice (terminal-agents, claude-fable-5)
Refs: 1.1-workspace-scaffold
Agent: alice (terminal-agents, claude-fable-5)
Refs: 1.1-workspace-scaffold
Agent: alice (terminal-agents, claude-fable-5)
@jundymek
jundymek merged commit 3c7ed40 into epic/1-workspace-scaffold Aug 11, 2026
jundymek added a commit that referenced this pull request Aug 11, 2026
* docs(repo): epic 1 retrospective and story rows to done

Supervisor deliverables for epic/1-workspace-scaffold, written at closure
after all four story PRs (#1-#4) merged.

- Epic 1 retrospective: delivery metrics, six post-run observations with
  cause and fix, technical debt carried forward, next-epic readiness and
  eight action items. First retrospective in this repository, so it also
  establishes the location for the next one.
- sprint-status.yaml: the four Epic 1 rows flipped review -> done. Written
  once, by the supervisor, at closure rather than per story.

Refs: epic-1-contract-foundations
Agent: superman (terminal-agents, claude-opus-5)

* docs(repo): keep 1.4 in review until the verdict is accepted

Codex review of the closure commit raised a P1 against it, and it was
right: flipping `1.4-perf-spike` to `done` while that story's owner gate
is still open makes the lifecycle source of truth signal that Epic 2/3
work may proceed before the decision that releases it.

The row goes back to `review` with the reason in-file, on the
maintainer's call. The other three Epic 1 rows stay `done`. The
retrospective records the finding.

Refs: epic-1-contract-foundations
Agent: superman (terminal-agents, claude-opus-5)
@jundymek
jundymek deleted the story/1.1-workspace-scaffold branch August 14, 2026 09:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant