Skip to content

Pass PINEFORGE_SYMBOL_FEEDS to the harness as --symbol-feeds - #23

Merged
luisleo526 merged 1 commit into
mainfrom
symfeeds/entrypoint-symbol-feeds
Oct 4, 2026
Merged

luisleo526 merged 1 commit into
mainfrom
symfeeds/entrypoint-symbol-feeds

Conversation

@luisleo526

@luisleo526 luisleo526 commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

What

The entrypoint passes PINEFORGE_SYMBOL_FEEDS to the harness as --symbol-feeds, one line in docker/entrypoint.sh, and the README documents the variable (a row in the knobs table and an Other symbols' bars section).

PINEFORGE_SYMBOL_FEEDS names a JSON index of other symbols' bars, for scripts that call request.security on another symbol:

{"symbols": {"BINANCE:ETHUSDT": {"syminfo": {...catalog object...},
                                 "feeds": {"240": "ethusdt-240.csv", "1D": "ethusdt-1D.csv"}}}}

Without those bars such a run stops with exit 4 (request.security(...) at line N: no data is pinned for this request, and its value was read). Every image up to 1.0.1 has that limit.

Why here

docker/run_json.py is vendored from the engine tag (scripts/sync-harness.sh), but docker/entrypoint.sh is this repo's own file and is not synced. The harness flag lands in pineforge-4pass/pineforge-engine#327. Without this line, an image built from engine 1.1.0 would still ignore the variable.

Merge order: the engine PR first, then cut engine 1.1.0. This line then reaches the 1.1.0 image when the release syncs run_json.py from that tag. With the variable unset nothing changes. With it set on an image whose run_json.py predates the flag, argparse rejects --symbol-feeds and the run exits 4. That's why the README says "from 1.1.0".

The change keeps clear of #21's hunks. That PR adds a PINEFORGE_SYMINFO block to the entrypoint header, rewrites the PINEFORGE_SYMINFO comment line and appends a README section at the end. A trial git merge-tree of #21's head with this branch is clean in both orders.

E2E: PASSED on this head 3475b0c with engine #327 head 6cc82475

AWS spot box (c6a.2xlarge, ap-southeast-1). The image was built from this branch's docker/Dockerfile (engine 1.0.1 static library + codegen 1.0.1, the latest releases) with docker/run_json.py taken from the engine PR head, the way sync-harness.sh takes it from a tag. A second image was built from main with engine main's run_json.py:

check result
image sf-pr (this branch + engine #327's run_json.py) entrypoint sha256 b4082f47… (this branch), run_json.py afaa6952… (#327)
XSYM case feeds (PINEFORGE_SYMBOL_FEEDS=symbols.json) exit 0, 12 rows, check_case.py CASE PASSED (recorded rows, independent reference model, feed hashes)
no_feeds / bare_key / no_daily / sol_input exit 4 with the exact errors the case names: PASSED ×4
an index spelling "4h" exit 4, one --symbol-feeds: a timeframe is whole minutes ... line
image sf-main (main + engine main's run_json.py) with the variable set ignored: exit 4, the line-7 error (red for the right reason)
qty-step case on sf-pr 22 rows with mincontract, 27 without / null / no syminfo: PASSED ×4
no other symbol: sf-pr vs sf-main byte-identical reports (elapsed_seconds zeroed) for the four qty-step runs, digests b9e00cb9… / e4315ec2…, the no_feeds error line, and a qty-step run with {"symbols": {}} set

🤖 Generated with Claude Code

The entrypoint forwards PINEFORGE_SYMBOL_FEEDS, the JSON index of other
symbols' bars for request.security on another symbol, to run_json.py's
--symbol-feeds (pineforge-engine harness, from engine 1.1.0). This file is not
synced from the engine, so without the line an image would ignore the
variable. The README documents it: a knobs-table row and an "Other symbols'
bars" section (exact-string keys, one feed per requested timeframe in the
engine's spelling, nothing aggregated, the missing-feed and refusal errors,
limits, the applied_runtime record).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@luisleo526
luisleo526 merged commit 4054d65 into main Oct 4, 2026
2 checks passed
@luisleo526
luisleo526 deleted the symfeeds/entrypoint-symbol-feeds branch October 4, 2026 05:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant