IMAGE STANDARD V13 · MVI DOCTRINE · FERMENTATION FLOOR · BUILD SPIRAL
γ₁=14.134725141734693
DAY 97 V13 QS SCHEDULER → HWMON → BUILD SPIRAL →
MVI DOCTRINE — Minimum Viable Image. Every service runs at its fermentation floor. At fleet scale: 7 silos × 50 services × 10MB saved = 3.5GB per full fleet pull. Small images = faster pulls, smaller attack surface, lower memory pressure, faster startup. The floor is not a target — it is the law.
§1 — V13 IMAGE STANDARD TABLE
Language/UseBase ImageTarget SizeWhen To UseExample ServicesStatus
Go static binaryalpine:3.2112–20 MBAny stateless Go service with no CGOmefine, merostone, eose-prox, fleetopFLOOR
Go multi-stagegolang:1.22-alpine → alpine:3.2115–25 MBGo builds needing compiler in CIfleet build pipeline, relay agentsFLOOR
Python servicepython:3.12-alpine50–80 MBFastAPI/Flask services, musl-compatiblepemclau-mcp FastAPI, loco-apiFLOOR
Python heavy MLpython:3.12-slim200–400 MBtorch/docling needing glibc — JUSTIFYsovereign-ingest, PEMCLAU heavyJUSTIFIED
Node portalnode:22-alpine60–150 MBReact/SSR portals, target <150MBpemos-portal (currently 496MB → TRIM)REVIEW
Static HTML/CDNnginx:1.27-alpine12–15 MBStatic file serving only, no SSRmefine-static pagesFLOOR
DNS resolvercoredns/coredns:latest~50 MBDNS only — CoreDNS binaryfleet-coredns fleet.localFLOOR
§2 — FLEET IMAGE AUDIT V13
ImageSizeVerdictAction
mefine-static23.6 MBFLOORKeep. nginx:1.27-alpine. Model citizen.
merostone-relay13.7 MBFLOORKeep. Alpine Go binary. Fleet record.
ct-ops-agent13.9 MBFLOORKeep. Alpine Go static binary.
sovereign-mail20.7 MBFLOORKeep. Alpine base verified.
pemos-portal v460496 MBREVIEWnode:22-alpine target <150MB. Audit deps.
arc3-fold517 MBREVIEWAudit deps — what requires 500MB?
pemos-portal v461532 MBREVIEWSame as v460. Trim pipeline needed.
pgvector613 MBJUSTIFIEDpostgres+vector extension. Keep.
falkordb639 MBJUSTIFIEDGraph DB C binary. Keep.
utpemos-gateway1.87 GBREPLACEShould be ~100MB alpine. R&D debt.
openclaw-ct1.9 GBREVIEWAudit — can this be split?
oc-silo-base2.34 GBREVIEWAudit contents. Multi-stage candidate.
utpemos-base3.66 GBREPLACER&D debt. Decompose into MVI layers.
pemos-playwright3.76 GBJUSTIFIEDNeeds full browser runtime. Keep isolated.
texlive8.55 GBJUSTIFIEDLaTeX full install. Use sparingly — cron only.
§3 — BANNED IMAGES — MECRDS CRQ REQUIRED TO OVERRIDE
BANNED BASE IMAGES
BANNED ubuntu:* — use alpine:3.21
BANNED debian:* — use alpine:3.21
BANNED node:*-bookworm* — use node:22-alpine
BANNED python:*-bullseye* — use python:3.12-alpine
BANNED node:*-buster* — EOL, never
OVERRIDE PROCESS
1. File MECRDS CRQ with justification
Attach: image_name + size + glibc_reason
2. GBM Rasengan must confirm no alpine alt
3. PEMCLAU FC1 fermentation event logged
4. Boabixer registers with Status=JUSTIFIED
5. ROM entry created: ROM-OVERRIDE-V13-NNN
6. Review every 30 days or next V bump
§4 — STANDARD DOCKERFILE TEMPLATES
GO MVI TEMPLATE — ROM-GO-V13
# Stage 1: Build
FROM golang:1.22-alpine AS builder
WORKDIR /src
COPY . .
RUN CGO_ENABLED=0 go build \
  -ldflags="-w -s" \
  -o /app .

# Stage 2: Run
FROM alpine:3.21
RUN adduser -D -u 65534 nobody
COPY --from=builder /app /app
USER 65534
ENTRYPOINT ["/app"]
# Target: 12-20MB
PYTHON MVI TEMPLATE — ROM-PY-SERVICE-V13
FROM python:3.12-alpine
WORKDIR /app

# Only if C extensions needed
RUN apk add --no-cache gcc musl-dev

COPY requirements.txt .
RUN pip install --no-cache-dir \
  -r requirements.txt

COPY . .
RUN adduser -D -u 65534 nobody
USER 65534
CMD ["python","-m","uvicorn","main:app"]
# Target: 50-80MB
§5 — THE BUILD R&D SPIRAL
Each build cycle = a fermentation event. The spiral drives continuous image improvement through PEMCLAU memory and GBM prediction.
STEP 01
PROBE
Write Dockerfile. Build. Record size, start-time, memory footprint, attack surface CVEs.
STEP 02
MEASURE
size_mb · startup_ms · mem_mb · cve_count · layer_count. All 5 dimensions required.
STEP 03
PEMCLAU FC1
Ingest build event into PEMCLAU campfire FC1. Graph node created. Adelic pressure computed.
STEP 04
GBM RASENGAN
Gradient boost on all historical builds. Predict optimal base image for service type.
STEP 05
PLASMA ROM
GBM winner → ROM sealed. Read-only, versioned. All future builds of this type start from ROM.
STEP 06
BOABIXER
ROM registered as organism with GID. VSM role assigned. Fermentation school logged. Done.
§6 — BELT64 IMAGE MAPPING
SEG 0
scratch/distroless
Zero OS overhead
SEG 1
alpine:3.21
Fleet fermentation floor
SEG 2
coredns/coredns
DNS binary floor
SEG 3
nginx:1.27-alpine
Static serving floor
SEG 4
python:3.12-alpine
Python service floor
SEG 5
node:22-alpine
Node service floor
SEG 6
python:3.12-slim
Justified ML layer
SEG 7+
Justified heavies
pgvector, falkordb, playwright
SEG 62
oc-silo-base
2.34GB — AUDIT
SEG 63
utpemos-base
3.66GB — REPLACE
§7 — MULTI-ARCH SUPPORT
# Multi-arch template: supports arm64 + amd64
FROM --platform=$BUILDPLATFORM golang:1.22-alpine AS builder
ARG TARGETARCH
RUN GOARCH=$TARGETARCH CGO_ENABLED=0 go build -ldflags="-w -s" -o /app .

FROM --platform=$TARGETPLATFORM alpine:3.21
COPY --from=builder /app /app
USER 65534
ENTRYPOINT ["/app"]
# Build: docker buildx build --platform linux/amd64,linux/arm64 --push .
γ₁ = 14.134725141734693 · day97-v131 · EOSE Labs · Image Standard V13 · MVI Doctrine