Flatten apps/web to root, migrate to pnpm, drain ClickHouse query streams in tests
Three interleaved changes from one session:
1. Flatten: moved apps/web/* to repo root and deleted the apps/ wrapper.
Skystar is now a plain Adonis 7 app, not a single-workspace monorepo.
Renames preserved via git mv.
2. pnpm migration: package.json adds the pnpm config block (including
onlyBuiltDependencies for @swc/core, better-sqlite3, esbuild). The
Dockerfile switches from `npm ci` to pnpm: installs pnpm@10 globally,
`pnpm install --frozen-lockfile`, builds with Adonis, then
`pnpm prune --prod` before the runtime stage copies node_modules.
package-lock.json removed; pnpm-lock.yaml is the new lockfile.
3. ClickHouse test stream drain: the three copies of isClickHouseAvailable
in the test helpers called `client.query('SELECT 1')` without consuming
the response body, causing @clickhouse/client to log WARN "socket was
closed or ended before the response was fully read" on every client
close. Replaced with `client.ping()` which drains its own response
internally. Test log went from 352 lines to 127 lines (-64%), with
zero socket-closed warnings remaining. Test count unchanged at 169.
All three images build under `docker compose build`; mise tasks run
without cd prefixes; 169 tests still pass with a much cleaner output.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>