Commit Graph
100 Commits
Author SHA1 Message Date
kpcto 6a295556ed Merge pull request '[E00-S02-T03] App health endpoint succeeds' (#384) from feature/170 into main
CI / Frozen lockfile install (push) Successful in 58s
2026-08-29 00:27:16 +00:00
implementer dfb7b0e952 fix: handle quoted scoped keys in frozen-install probe (E00-S02-T03)
CI / Frozen lockfile install (pull_request) Successful in 50s
2026-08-29 00:23:27 +00:00
implementer f7257f9258 test: lock in app health endpoint criteria (E00-S02-T03) 2026-08-29 00:21:34 +00:00
implementer 9c049ce6b5 feat: app health endpoint succeeds (E00-S02-T03) 2026-08-29 00:21:34 +00:00
kpcto 9937268d64 Merge pull request '[E00-S02-T02] PostgreSQL health gates app start' (#383) from feature/169 into main
CI / Frozen lockfile install (push) Successful in 41s
2026-08-29 00:07:31 +00:00
implementer 59a102bee3 feat: PostgreSQL health gates app start (E00-S02-T02)
CI / Frozen lockfile install (pull_request) Successful in 47s
2026-08-28 23:59:45 +00:00
kpcto 9e2ac55400 Merge pull request '[E00-S02-T01] docker compose up -d starts DB + app' (#382) from feature/168 into main
CI / Frozen lockfile install (push) Successful in 56s
2026-08-28 23:55:18 +00:00
implementer 3bbea68e6c fix: align app/db image bases with documented stack (E00-S02-T01)
CI / Frozen lockfile install (pull_request) Successful in 48s
Switch the app image from node:24-alpine to node:24.19.0-bookworm-slim in
both build and runtime stages (Technology-Stack 5.4: glibc Debian base
required because argon2 is a native dependency; musl/Alpine causes
native-module build surprises), and the db image from postgres:16-alpine
to postgres:18-bookworm (Technology-Stack 5.2/5.4/6.2 + golden tuple 7
pin PostgreSQL 18.6; 18-bookworm is the 18.x line on Debian bookworm).

Update tests/compose-config.test.mjs so the committed assertions lock in
the corrected image bases (db image, Dockerfile build/runtime stages,
parser probe).
2026-08-28 23:45:18 +00:00
implementer 3be575818d feat: docker compose up -d starts DB + app (E00-S02-T01)
CI / Frozen lockfile install (pull_request) Successful in 43s
2026-08-28 23:35:05 +00:00
kpcto 2b293e2927 Merge pull request '[E00-S01-T14] No core package imports a concrete extension' (#381) from feature/167 into main
CI / Frozen lockfile install (push) Successful in 49s
2026-08-28 23:26:41 +00:00
implementer 27851fcaeb test: lock in no core package imports a concrete extension (E00-S01-T14)
CI / Frozen lockfile install (pull_request) Successful in 47s
2026-08-28 23:24:02 +00:00
kpcto 3c287d0a41 Merge pull request '[E00-S01-T13] Clean clone installs with frozen lockfile' (#380) from feature/166 into main
CI / Frozen lockfile install (push) Successful in 1m17s
2026-08-28 23:15:14 +00:00
implementer ca9e0ffaf6 test: lock in clean-clone frozen lockfile install (E00-S01-T13)
CI / Frozen lockfile install (pull_request) Successful in 45s
2026-08-28 23:10:26 +00:00
kpcto c8693fe0b7 Merge pull request '[E00-S01-T12] Root commands exist for build/test/typecheck' (#379) from feature/165 into main
CI / Frozen lockfile install (push) Successful in 1m8s
2026-08-28 23:01:50 +00:00
implementer 5c6ca444d9 test: lock in root build/test/typecheck commands (E00-S01-T12)
CI / Frozen lockfile install (pull_request) Successful in 44s
2026-08-28 22:56:48 +00:00
kpcto 0ad2d4db0b Merge pull request '[E00-S01-T11] apps/packages/extensions separated' (#378) from feature/164 into main
CI / Frozen lockfile install (push) Successful in 52s
2026-08-28 22:50:38 +00:00
implementer 729a67b79d test: lock in apps/packages/extensions workspace layout separation (E00-S01-T11)
CI / Frozen lockfile install (pull_request) Successful in 44s
2026-08-28 22:43:01 +00:00
kpcto 24d1c1c9fc Merge pull request '[E00-S01-T10] Strict base tsconfig committed' (#377) from feature/163 into main
CI / Frozen lockfile install (push) Successful in 42s
2026-08-28 22:36:29 +00:00
implementer 4b5519465f test: lock in strict base tsconfig for all packages (E00-S01-T10)
CI / Frozen lockfile install (pull_request) Successful in 45s
2026-08-28 21:46:57 +00:00
kpcto 9c76a64bee Merge pull request '[E00-S01-T09] TypeScript 6.0.3 exact dependency' (#376) from feature/162 into main
CI / Frozen lockfile install (push) Successful in 48s
2026-08-28 21:41:38 +00:00
implementer 628885ae0f test: lock in TypeScript 6.0.3 exact dependency (E00-S01-T09)
CI / Frozen lockfile install (pull_request) Successful in 44s
2026-08-28 21:33:52 +00:00
kpcto 12a3829039 Merge pull request '[E00-S01-T08] Node engine restricted to 24.x' (#375) from feature/161 into main
CI / Frozen lockfile install (push) Successful in 51s
2026-08-28 09:18:23 +00:00
implementer 6323e486bc docs: document enforced Node 24.x engine restriction (E00-S01-T08)
CI / Frozen lockfile install (pull_request) Successful in 43s
2026-08-28 09:15:09 +00:00
implementer 7c548ac43b test: lock in Node 24.x engine restriction (E00-S01-T08) 2026-08-28 09:15:09 +00:00
implementer d405ee5cfa feat: restrict Node engine to 24.x (E00-S01-T08) 2026-08-28 09:15:09 +00:00
kpcto da3bb78474 Merge pull request '[E00-S01-T07] Commit and lock in pnpm 11.23.0 workspace' (#374) from feature/160 into main
CI / Frozen lockfile install (push) Successful in 51s
2026-08-28 09:07:30 +00:00
implementer 23a574d6af test: lock in committed pnpm 11.23.0 workspace config (E00-S01-T07)
CI / Frozen lockfile install (pull_request) Successful in 48s
2026-08-28 09:03:50 +00:00
kpcto bd8c94982a Merge pull request '[E00-S01-T06] Document local non-container developer path' (#373) from feature/159 into main
CI / Frozen lockfile install (push) Successful in 46s
2026-08-28 08:59:02 +00:00
implementer 21485aed44 feat(server): add start script for compiled entrypoint (E00-S01-T06)
CI / Frozen lockfile install (pull_request) Successful in 48s
2026-08-28 08:52:03 +00:00
implementer 72c53494a1 docs: add local non-container developer path guide (E00-S01-T06) 2026-08-28 08:52:03 +00:00
kpcto bbd5c5a9f0 Merge pull request '[E00-S01-T05] Add root build/test scripts' (#372) from feature/158 into main
CI / Frozen lockfile install (push) Successful in 47s
2026-08-28 08:48:10 +00:00
implementer 0d1bd19093 feat: add root build/test/typecheck scripts (E00-S01-T05)
CI / Frozen lockfile install (pull_request) Successful in 50s
Adds root scripts so build, test and typecheck run from the workspace root:
- root package.json gains scripts: build (pnpm -r run build), test
  (node --test on tests/**/*.test.mjs), typecheck (pnpm -r run typecheck)
- every workspace package (apps/server, packages/core,
  extensions/example) gains build (tsc -p tsconfig.json) and typecheck
  (tsc -p tsconfig.json --noEmit) scripts
- typescript 6.0.3 pinned as an exact root devDependency so the commands
  run from a clean checkout; lockfile regenerated with pnpm 11.23.0

Verified from a clean state: pnpm install --frozen-lockfile passes,
pnpm build emits dist for all 3 packages, pnpm typecheck passes for all 3,
pnpm test runs tests/architecture-import.test.mjs 10/10 green, and CI's
pnpm -r list --depth -1 still lists all 4 workspace projects.

Closes #158
2026-08-28 08:39:13 +00:00
kpcto 2c0d081983 Merge pull request '[E00-S01-T04] Add dependency-boundary rule/test' (#371) from feature/157 into main
CI / Frozen lockfile install (push) Successful in 42s
2026-08-28 08:32:08 +00:00
implementer 4d0df92290 feat: add dependency-boundary rule and architecture import test (E00-S01-T04)
CI / Frozen lockfile install (pull_request) Successful in 38s
Adds a declarative dependency-boundary rule (dependency-boundaries.json)
classifying workspace packages into apps/packages/extensions groups and
forbidding packages/* (core) from importing extensions/* (concrete
extensions); core depends only on extension contracts, never concrete
extensions.

Adds tests/architecture-import.test.mjs (node:test, zero new dependencies,
lockfile untouched) that loads the rule, walks every workspace package's
source and resolves each import/export/require specifier (bare workspace
names, relative paths, dynamic import(), require(), export-from) to a
group, failing on any forbidden core -> extension edge. Comment-aware
scanning avoids false positives; line numbers in violation reports map to
the original source. Synthetic negative cases prove detection (bare name,
relative path, export-from, dynamic import, require), while the current
compliant graph passes with zero violations.

Verified: 10/10 tests pass; injecting a real core -> extension import makes
the integration test fail with a per-file/line violation report; pnpm 11.23.0
install --frozen-lockfile passes unchanged (CI frozen-install job stays green).

Closes #157
2026-08-28 08:30:34 +00:00
kpcto 4ef0ec9ae4 Merge pull request '[E00-S01-T03] Configure ESM package boundaries' (#370) from feature/156 into main
CI / Frozen lockfile install (push) Successful in 44s
2026-08-28 08:21:09 +00:00
implementer b1fef8d592 feat: configure ESM package boundaries across the workspace (E00-S01-T03)
CI / Frozen lockfile install (pull_request) Successful in 39s
Adds ESM boundary declarations to every workspace package manifest
(apps/server, packages/core, extensions/example): "type": "module",
"main"/"types" entry points and an "exports" map (types + import
conditions) so each package exposes only its public root; adds
"type": "module" to the workspace root package.json so the workspace is
uniformly ESM. Placeholder src/index.ts files stay as empty ESM modules.

Verified: each package compiles under tsconfig.base.json (NodeNext) with
TypeScript 6.0.3 and emits ESM dist/index.js + dist/index.d.ts; Node
imports each package by name through its exports map and rejects deep
subpath imports (ERR_PACKAGE_PATH_NOT_EXPORTED); pnpm 11.23.0
install --frozen-lockfile passes with the lockfile unchanged.

Closes #156
2026-08-28 08:13:00 +00:00
kpcto 97b702cc59 Merge pull request '[E00-S01-T02] Implement tsconfig.base.json' (#369) from feature/155 into main
CI / Frozen lockfile install (push) Successful in 47s
2026-08-28 08:08:08 +00:00
implementer 4e527f9267 feat: add strict tsconfig.base.json shared by all packages (E00-S01-T02)
CI / Frozen lockfile install (pull_request) Successful in 39s
Adds a strict base TypeScript config at the workspace root (ES2023 / NodeNext
/ strict family incl. noUncheckedIndexedAccess, exactOptionalPropertyTypes,
noImplicitOverride, useUnknownInCatchVariables, verbatimModuleSyntax per
Engineering-Standards) and gives every workspace package
(apps/server, packages/core, extensions/example) a tsconfig.json that extends
it. Each package gets a minimal src/index.ts placeholder so it compiles under
the base config (CJS-safe `export {}` until ESM boundaries land in T03).

Verified: every package typechecks and emits (js + d.ts + sourcemap) with the
pinned TypeScript 6.0.3; a strictness probe confirms the strict family fires.

Closes #155
2026-08-28 00:00:51 +00:00
kpcto 09c40bd9b3 Merge pull request '[E00-S01-T01] Create workspace/package manifests' (#368) from feature/154 into main
CI / Frozen lockfile install (push) Successful in 39s
Reviewed-on: #368
2026-08-27 23:47:58 +00:00
implementer a2fa1dee32 chore: bootstrap pnpm workspace and package manifests
CI / Frozen lockfile install (pull_request) Successful in 48s
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
2026-08-27 23:07:58 +00:00
kpcto 7c21255582 Remove tests/scaffold.test.js 2026-08-26 22:36:42 +00:00
kpcto a410bdd3e4 Remove tests/reading-list.test.js 2026-08-26 22:36:38 +00:00
kpcto 03e885896a Remove tests/newsletter.test.js 2026-08-26 22:36:34 +00:00
kpcto 5ea4c2c2da Remove tests/mailto.test.js 2026-08-26 22:36:28 +00:00
kpcto def9940c5e Remove tests/contact.test.js 2026-08-26 22:36:23 +00:00
kpcto 2001d1c10d Remove reading.html 2026-08-26 22:36:18 +00:00
kpcto 05cb7af9b7 Remove package.json 2026-08-26 22:36:14 +00:00
kpcto 6407e7df34 Remove newsletter.html 2026-08-26 22:36:10 +00:00
kpcto d55eeca7d4 Remove js/reading-list.js 2026-08-26 22:36:06 +00:00
kpcto 7e290c5f04 Remove js/newsletter.js 2026-08-26 22:36:01 +00:00