Architecture §3.5 listed a Python-Prolog FFI among the Korban
Processor's dependencies ("swipl-ffi (or pyswip)"); Construction §1.4
and terumah pinned pyswip. It was declared, installed in every image,
and never imported. The Korban Processor does not call Prolog: haktarah
emits Prolog-format STRINGS, and the pipeline carries them to the
Talmudic Engine over its Unix socket (Construction §3.3). The korban
image has no libswipl, so the package could not have been used there
had anything tried. Tablet 35 corrected its version; the transmitter's
word is to remove it.
Removed from:
- specs/shorashim_architecture.md §3.5 requirements
- specs/shorashim_vayakhel.md §1.4
- specs/shorashim_terumah.md (materials row; the compatibility-testing
line now names hebrew-tokenizer alone)
- BUILD_KORBAN.md
- korban_processor/pyproject.toml, poetry.lock (regenerated)
- deploy/docker/Dockerfile.korban_processor
Doorpost @expected_hash 81da49d4… → 2f40c382…, in this commit, with the
three witnessed files that moved it (architecture, vayakhel,
BUILD_KORBAN).
Read before committing: Elixir 461/0 (seeds 0, 42); korban 222 passed,
1 skipped against the installed package with pyswip absent; korban
image starts and idles as before; vav-pipeline image reports
specification_identity verified 2f40c382… and l1_hash pass.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
60 lines
2.2 KiB
Docker
60 lines
2.2 KiB
Docker
# check=skip=FromPlatformFlagConstDisallowed
|
|
# ^ The --platform=linux/amd64 pins below are DELIBERATE (Exoscale SKS
|
|
# nodes are amd64). BuildKit lints a constant --platform as a smell;
|
|
# here it is the fix. Silenced so a real warning is not lost in noise.
|
|
# Shorashim Korban Processor — Python offering protocol
|
|
# Construction spec §1.1: Python 3.12.2
|
|
# Processes korbanot (model outputs) through the offering protocol
|
|
#
|
|
# PLATFORM PIN: see Dockerfile.vav_pipeline for the rationale.
|
|
# Exoscale SKS = amd64; arm64 images cannot exec on the cluster.
|
|
#
|
|
# AZAZEL CO-RESIDENT:
|
|
# Per BUILD_AZAZEL.md, azazel_processor (the disposal channel) is
|
|
# imported by korban_processor.external_offering and runs in the
|
|
# same Python process. It is NOT a separate container — the two-goat
|
|
# architecture (Vayikra 16:8) requires equal-capacity disposal in
|
|
# the SAME pool. Both sources are baked into this image.
|
|
|
|
FROM --platform=linux/amd64 python:3.12.2-slim AS build
|
|
|
|
WORKDIR /app
|
|
|
|
# Install build deps
|
|
RUN pip install --no-cache-dir poetry-core
|
|
|
|
# Copy korban_processor
|
|
COPY korban_processor/pyproject.toml ./
|
|
COPY korban_processor/src/ src/
|
|
COPY korban_processor/test/ test/
|
|
|
|
# Copy azazel_processor source — imported by korban_processor.external_offering
|
|
COPY azazel_processor/src/azazel_processor/ src/azazel_processor/
|
|
|
|
# Install dependencies
|
|
RUN pip install --no-cache-dir pydantic==2.6.1 httpx==0.27.0 hebrew-tokenizer==2.3.0
|
|
|
|
# === RUNTIME STAGE ===
|
|
FROM --platform=linux/amd64 python:3.12.2-slim
|
|
|
|
RUN useradd --create-home --shell /bin/bash shorashim
|
|
USER shorashim
|
|
|
|
WORKDIR /home/shorashim/korban_processor
|
|
|
|
COPY --from=build --chown=shorashim:shorashim /app/ ./
|
|
COPY --from=build /usr/local/lib/python3.12/site-packages/ /usr/local/lib/python3.12/site-packages/
|
|
|
|
# PYTHONPATH puts korban_processor first; azazel_processor is a
|
|
# sibling package under the same src/ tree (see build stage above).
|
|
ENV PYTHONPATH=/home/shorashim/korban_processor/src
|
|
|
|
# L1 Torah filesystem — baked into the image
|
|
COPY --chown=shorashim:shorashim l1/ /mnt/torah/
|
|
|
|
ENV L1_MOUNT_POINT=/mnt/torah
|
|
|
|
# The korban processor is invoked by the vav_pipeline
|
|
# In Phase 5, it will also expose an HTTP endpoint for external model integration
|
|
CMD ["python", "-m", "korban_processor"]
|