Block a user
[Bug][Backend][Data] Metadata extraction has no idempotency guard — a single upload inserted 2× full page sets (342 dupes, 2026-07-18); answers #509's open questions
artpipe: decimation to 6k faces tore 60% of the mesh surface open — relax it, and replace the simplifier
hex-tower-defence: loadout effect re-subscribes to the art loader's httpResources, looping until the renderer is killed
artpipe: 33 GB of immutable weights/venvs are baked into every CI build — make them data, not image layers
artpipe env images: two RUN loops produce 17 GB and 16 GB single layers — split per model
SECURITY: container registry serves anonymous pull tokens over the public internet
PROD: GET /api/artstudio 500s — #853 objectKey rename deployed to the reader but not the artpipe writer
Why the rebuilds kept failing (run 18574)
Not disk — the pinned ubuntu-amd64-4090 runner had 1.5 TB free. Two
compounding problems:
**1. A push-triggered run rebuilds all TEN model…
PROD: GET /api/artstudio 500s — #853 objectKey rename deployed to the reader but not the artpipe writer
hex-tower-defence tab crash: art_pipe export stage never decimates (137k tris / 109 MB assets) + the game loads every slot concurrently
Confirmed by production bisect — and my first fix (#580) was wrong
Bisected against the live page with @spikerj, one variable at a time:
hex-tower-defence tab crash: art_pipe export stage never decimates (137k tris / 109 MB assets) + the game loads every slot concurrently
Drop GridFS naming from Art Studio: rename to objectKey, migrate legacy docs, remove the #852 shim
Work complete — both PRs ready, held as WIP pending the cutover
- backend #485
fix/artstudio-object-key-rename-853 - angular #579
fix/artstudio-object-key-rename-853
The #852…
Latent #852 twin: UserProfile.Images uses Newtonsoft [JsonProperty] on a System.Text.Json column
Drop GridFS naming from Art Studio: rename to objectKey, migrate legacy docs, remove the #852 shim
PROD: all Art Studio images 404 — #849 rename orphaned the legacy PascalCase artifact key
Fix open: spikersoft-backend PR #484 (fix/artstudio-legacy-artifact-key-852).
One-line read-side change (PropertyNameCaseInsensitive) plus a regression test seeded from **literal…
PROD: all Art Studio images 404 — #849 rename orphaned the legacy PascalCase artifact key
GET api/Profile/images/{id} returns 500 — response compression grows already-compressed images past Content-Length
CI: prune artpipe container pin tags — keep :latest + 3, they accumulate forever
Status: merged, but a follow-up is needed before this is really done.
Merged: backend #481, artpipe #40, infrastructure #151.
All three merged the pre-fixup commits — a review fixup…
CI: prune artpipe container pin tags — keep :latest + 3, they accumulate forever
PRs open (not merged — Joey merges manually):
- tier 3 — spikersoft-backend PR #481
ci/prune-artpipe-pin-tags-850 - tier 2 — spikersoft-artpipe PR #40
ci/prune-env-pin-tags-850-…
CI: prune artpipe container pin tags — keep :latest + 3, they accumulate forever
Art Studio: name storage keys for what they hold (#842)