SPEC v0.29: W7 web serving and analytics (D-135 to D-138), APK deploy (D-139)

D-135 /app/ serving from KVITT_WEB_DIR (fallback, caching, CSP, path safety); D-136 /app on the
unauthenticated per-IP limit; D-137 repository-root image build with the Node 24 stage and the allowlist
.dockerignore; D-138 E-34 trends and E-35 forecast with the rules in new §14.5.7; D-139
publish-apk.sh --deploy. infra/README.md build context; HANDOFF state and numbering (next D-141, v0.31).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TQd3pEP9UeN2uifbHknQ7B
This commit is contained in:
2026-10-21 21:00:45 +02:00
parent c0f4345ee1
commit 3fbd393082
4 changed files with 75 additions and 29 deletions
+4 -3
View File
@@ -53,9 +53,10 @@ infra/dev/build.sh server # only kvitt-server:dev; needs server/Dockerfile
infra/dev/build.sh backup # only kvitt-backup:dev
```
The server build is `docker build --platform linux/arm64 -f server/Dockerfile -t kvitt-server:dev server`
(override the context with `KVITT_SERVER_BUILD_CONTEXT`). The script refuses to run while a Gradle build holds
`/tmp/kvitt-gradle.lock` (CLAUDE.md).
The server build is `docker build --platform linux/arm64 -f server/Dockerfile -t kvitt-server:dev .` from the
repository root, the build context since D-137 (the root `.dockerignore` is an allowlist that lets only `server/`, `web/`
and `contracts/` in; the image builds the web client too); override the context with `KVITT_SERVER_BUILD_CONTEXT`.
The script refuses to run while a Gradle build holds `/tmp/kvitt-gradle.lock` (CLAUDE.md).
### Start, stop, logs