Repository navigation
Live runner: service operation, cumulative report export and live redelivery - #331
Merged
Merged
Conversation
| self.send_response(503 if mode == "fail" else 204) | ||
| self.send_header("Content-Length", "0") | ||
| self.end_headers() | ||
| except OSError: |
| self.send_response(200) | ||
| self.send_header("Content-Length", "0") | ||
| self.end_headers() | ||
| except OSError: |
| self.wfile.flush() | ||
| else: | ||
| time.sleep(3) | ||
| except OSError: |
| result = predicate() | ||
| if result: | ||
| return result | ||
| except (FileNotFoundError, json.JSONDecodeError, sqlite3.OperationalError): |
luisleo526
force-pushed
the
lv/runner-service
branch
2 times, most recently
from
October 4, 2026 23:30
889f4c5 to
069ca7f
Compare
…zer headroom Signals cancel delivery promptly (the routing E2E pins it); only fatal-error and storage-budget stops drain for one total_timeout_ms. The README and the changelog still described a graceful drain on SIGINT/SIGTERM. The live E2E CTest timeout rises from 120 s to 300 s: a loaded ASan run took 110 s. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
luisleo526
force-pushed
the
lv/runner-service
branch
from
October 4, 2026 23:54
069ca7f to
3c5f828
Compare
luisleo526
added a commit
that referenced
this pull request
Oct 5, 2026
* docs: release notes and version scoping for v1.2.0 CHANGELOG: the Unreleased section becomes 1.2.0 (2026-10-05), a minor release that adds the compiled execution-capabilities extension to the C ABI (PF_CAPABILITIES_API_VERSION, strategy_capabilities_api_version, strategy_capabilities_receipt). One bullet per change since v1.1.0 with its PR (#328, #330, #331, #332, #333, #334, #335, #336, #337, #338 and the session-clock change, written #VCP until its PR number exists), the recipe additions under State hashes (#328, #330, #335; domain tags and epoch unchanged), Report keys (docker/run_json.py is byte-identical to v1.1.0's, so no key changes) and Migration. Version scoping: README, install and public-contract pages name v1.2.0 and codegen 1.2.0; "since the next release" and "fixed on main" in the capabilities guide and the runner guide become 1.2.0 and 1.1.0 (#325). Lines that state what an earlier release shipped stay. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * docs: 1.2.0's grades from the facts tokens, #339, and codegen's license - CHANGELOG: the session-clock change is #339 (merged as 52292db), in place of the #VCP token of 3082fbd; the "What a script author sees" bullet of 3082fbd now states release 1.2.0's grades (registry baseline pineforge-parity-baseline-20261005-engine-52292db9: 7,970 excellent / 19 strong of 7,989, none below strong) instead of the main scoreboard at 6b77f06. - README: the release sentence names 1.2.0 and renders releases[1.2.0], and the main scoreboard renders the same baseline, from pineforge-release facts/facts.json at 0c2f6838 (the facts export for the 1.2.0 release). - README, LEGAL.md, docs/pages/index.md: pineforge-codegen is under the PineForge Source License 1.1 from its release 1.2.0; releases up to 1.1.0 keep the PolyForm Noncommercial terms they shipped with. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> --------- Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Makes the native live runner
pineforge-liveoperable as a long-running service and proves that its cumulative results equal the batch. Runner only: the engine library, its headers and the corpus are unchanged.pineforge-live report --ledger L [--deployment D] [--at-input N]rebuilds it exactly, at any committed cursor and after a restart. An optional--report-jsonlmirror is also available.run_backtest_full. The one documented difference is a cursor in the middle of a script-timeframe bucket.--status-file PATHis an atomically replaced JSON holding liveness, readiness (validated strategy and warmup, recovered ledger, verified input prefix, no unhealed input gap, storage below budget) and metrics (committed input, last sequence, source lag, queue and ledger bytes, report cursor, per-target pending deliveries).--status-interval.pineforge-live probe --status-file PATH --max-age S [--ready]returns 0 or 1 for container exec probes.--feed-idle-timeoutand--feed-message-timeout. The defaults are unchanged.delivery_idand the append-only audit apply, and computation is never blocked. Malformed or unremovable control entries are skipped and reported, never fatal. Offlineredeliverstill works and refuses while a runner holds the lock.--max-ledger-bytes: when it is exceeded, readiness goes false and the runner stops cleanly after the current message, dropping nothing.Measurements
Recovery at 3,000 bars falls from 30 s to 1.3 s. The status file costs under 1% of throughput.
Verification
🤖 Generated with Claude Code