You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(docker): engine image -> pure runtime base (#36)
Drop the bundled pineforge-codegen transpiler and the Pine entrypoint from the
engine image: it is now a pure base (g++, Eigen, python3, libpineforge.a +
headers) that compiles + runs a pre-transpiled generated.cpp against the C ABI.
The full `.pine -> trades` pipeline (transpiler + entrypoint + run_json) lives
in pineforge-release, which builds FROM this base. A bare `docker run` prints a
migration message (exit 64).
Corpus REGEN now transpiles via the pineforge-release container (regen_corpus_cpp.sh
IMAGE default + run_corpus.sh / README). docker/entrypoint.sh + docker/run_json.py
stay in-repo as the tested harness source (test_entrypoint_indir + fingerprint
self-test); pineforge-release ships its own copy.
Validated: ctest 72/72; corpus parity excellent=245/anomaly=1 (baseline); the
release container transpiles all 246 byte-identically to the engine image (drift
vs committed cpp is pre-existing, image-independent).
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
RUN chmod +x /opt/pineforge/bin/entrypoint.sh /opt/pineforge/bin/run_json.py
98
-
99
84
ENV PINEFORGE_PREFIX=/opt/pineforge \
100
85
PINEFORGE_VERSION=${PINEFORGE_VERSION} \
101
-
PINEFORGE_GIT_SHA=${PINEFORGE_GIT_SHA} \
102
-
PYTHONPATH=/opt/pineforge/pycodegen
86
+
PINEFORGE_GIT_SHA=${PINEFORGE_GIT_SHA}
103
87
104
-
# Drop root: the entrypoint compiles and runs everything under mktemp dirs.
88
+
# Drop root.
105
89
RUN useradd -r -u 10001 -s /usr/sbin/nologin pineforge
106
90
USER pineforge
107
91
108
-
ENTRYPOINT ["/opt/pineforge/bin/entrypoint.sh"]
92
+
# No ENTRYPOINT: this is a base/runtime image, not a standalone Pine tool.
93
+
# Make a bare `docker run` self-documenting instead of silently doing nothing.
94
+
CMD ["sh", "-c", "echo 'pineforge-engine is a pure runtime base (compile + run a pre-transpiled generated.cpp against /opt/pineforge/lib/libpineforge.a). For PineScript .pine -> backtest, use ghcr.io/pineforge-4pass/pineforge-release.' >&2; exit 64"]
0 commit comments