Add Gemma license gate and publish local model assets
Build and publish static assets / publish (push) Failing after 2s

This commit is contained in:
Ein Anderssono
2026-10-19 12:02:45 +02:00
parent 440652214c
commit 73c0c0b8ba
16 changed files with 699 additions and 7 deletions
+3 -1
View File
@@ -1,11 +1,13 @@
# AI-spel static asset service
- Own only public, version-pinned Piper and ONNX speech assets.
- Own only public, version-pinned Piper/ONNX and browser local-AI model/runtime/prompt assets.
- Serve under `/static/` on `https://ai-spel.k3s.k0.nu`.
- `VERSION` is the only release version source. Use `scripts/bump-version.py`.
- Gitea Actions on the existing `large` runner verifies, builds, and publishes. Never run tests, builds, containers, images, or binaries locally; do not create runners.
- Git release commit/tag, image, Helm chart, and manifest use the same version.
- Use Harbor project `ai-spel`, Argo CD project `ai-spel`, and Kubernetes namespace `ai-spel`.
- `/static/piper-wasm-v1/` is immutable and cached for one year. Incompatible asset updates require a new path and coordinated frontend change.
- `/static/wllama-gemma3-v1/` serves the client adapter, pinned Wllama WebAssembly/runtime, the Gemma 3 1B Q4_K_M model, its manifest, and its YAML prompt. Browser runtime requests must remain same-origin under `/static/`; upstream URLs are allowed only in the static CI asset fetcher, never in client runtime code. Any changed adapter/model/runtime/prompt gets a new immutable path and coordinated frontend update.
- Gemma publication is blocked unless the static release includes the applicable Gemma Terms of Use copy, prohibited-use policy reference, required Gemma notice, model provenance, and third-party runtime/license notices. The frontend must obtain explicit user acceptance before model download/use; do not publish or enable Gemma until both the legal resources and the acceptance gate are implemented and verified in CI.
- Publish `/static/version.json` with `version` generated from `VERSION` in the same image as the Helm appVersion; keep it uncached and verify its value after rollout. The frontend footer displays this release independently from frontend and API versions.
- No secrets or runtime network access.