M0: project scaffold & config #10

Merged
david merged 2 commits from issue-1/project-scaffolding into main 2026-07-24 01:28:03 +00:00
Owner

Implements Milestone 0 — Project scaffold & config.

Closes #1

What's included

  • TypeScript ESM scaffold: package.json scripts (build, lint, format, test, e2e, start), tsconfig.json, tsx CLI entrypoint (Node ≥ 22.19.0).
  • Tooling: ESLint flat config (typescript-eslint + Airbnb-style rules + prettier-config last), Prettier, vitest.
  • Config loader: env-only (behind EnvSource seam), secrets masked — Jira / GitLab / write-back / per-stage skill paths / model keys.
  • Structured logging: per-stage prefixes to console + run.log, with secret masking.
  • CLI: arg parsing (<JIRA-KEY>, --help); no --repo arg, operates on process.cwd().
  • Run-directory helper: computes run-id, creates .pi-loop/runs/<run-id>/, ensures .pi-loop/ is in .git/info/exclude.
  • Co-located unit tests.

Validation

  • npm run lint — clean.
  • npm test52 tests passing (config loader, git-exclude idempotency, run-id, CLI args, logging/masking).
Implements **Milestone 0 — Project scaffold & config**. Closes #1 ## What's included - **TypeScript ESM scaffold**: `package.json` scripts (`build`, `lint`, `format`, `test`, `e2e`, `start`), `tsconfig.json`, `tsx` CLI entrypoint (Node ≥ 22.19.0). - **Tooling**: ESLint flat config (typescript-eslint + Airbnb-style rules + prettier-config last), Prettier, vitest. - **Config loader**: env-only (behind `EnvSource` seam), secrets masked — Jira / GitLab / write-back / per-stage skill paths / model keys. - **Structured logging**: per-stage prefixes to console + `run.log`, with secret masking. - **CLI**: arg parsing (`<JIRA-KEY>`, `--help`); no `--repo` arg, operates on `process.cwd()`. - **Run-directory helper**: computes `run-id`, creates `.pi-loop/runs/<run-id>/`, ensures `.pi-loop/` is in `.git/info/exclude`. - Co-located unit tests. ## Validation - `npm run lint` — clean. - `npm test` — **52 tests passing** (config loader, git-exclude idempotency, run-id, CLI args, logging/masking).
Add TypeScript ESM scaffold for pi-loop:
- package.json scripts (build, lint, format, test, e2e, start), tsconfig, tsx entrypoint
- ESLint flat config + Prettier + vitest
- Config loader (env, secrets masked) behind EnvSource seam
- Structured logging with per-stage prefixes + secret masking
- CLI arg parsing (JIRA-KEY, --help), no --repo arg
- Run-directory helper (run-id, .pi-loop/runs/<run-id>/) + .git/info/exclude
- Co-located unit tests (52 passing)

Closes #1
david merged commit 63d5e51662 into main 2026-07-24 01:28:03 +00:00
david deleted branch issue-1/project-scaffolding 2026-07-24 01:28:03 +00:00
david referenced this pull request from a commit 2026-07-24 01:28:04 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
david/pi-loop!10
No description provided.