docs: release notes and version scoping for v1.1.0 - #326
Merged
Merged
Conversation
v1.1.0 is a minor release: <pineforge/pineforge.h> declares six more functions, the checked settings calls that a strategy generated by pineforge-codegen 1.1.0 exports (#317). It pairs with pineforge-codegen 1.1.0. PF_ABI_VERSION stays 4 (pineforge.h only gains declarations; native_c_api.h and the native C++ host headers are unchanged) and the script ABI epoch stays engine_script_run_v19. - CHANGELOG.md: "## Unreleased" becomes "## 1.1.0 — 2026-10-04": a lead paragraph, one bullet per change a user can observe since v1.0.1 (#312-#324), each linking its PR, a Report keys subsection (docker/run_json.py v1.0.1 -> v1.1.0) and a Migration subsection. The three Unreleased bullets stay; the lot-grid bullet now gives both failure messages. - README.md: pineforge-codegen==1.1.0, the v1.1.0 tarballs, the pairing sentence, the stream known issue's scope, the benchmark refresh line, the release scoreboard sentence (releases[1.1.0] markers) and a v1.1.0 line in Releases. The public corpus sweep's "311 excellent + 1 declared anomaly" is scoped to the v1.0.1 library it was measured on. Facts rendered from the facts file that adds releases[1.1.0]; the active scoreboard markers move to baseline pineforge-parity-baseline-20261003-engine-dbd17b38. - docs/pages/install.md: the v1.1.0 tarballs and the hub tag engine1.1.0-codegen1.1.0. - docs/pages/public-contract.md: 1.1.0's release line, engine v1.1.0 with codegen 1.1.0 among the supported pairs, and the four C-boundary rows that were planned for 1.1.0 are not in it. - docs/pages/streaming.md: the known issue's scope includes v1.1.0. Lines that state what an earlier version shipped or did stay. Replaces text introduced by dc74e63 (#318): README.md's "Release 1.0.1 still grades ... until the next release" sentence, now 1.1.0's; by d093560 (#290): public-contract.md's "Four of its rows are planned for 1.1.0"; by 783bb39 (#322): CHANGELOG.md's "The engine library is unchanged."; by dbd17b3 (#320): CHANGELOG.md's "The engine is unchanged."; by b2a578c (#300): README.md's "this repository's sweep: 311 excellent + 1 declared anomaly"; by 271d687 (#311): README.md's "its releases 1.0.0 and 1.0.1 do". Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The 1.1.0 lead now says how state-hash values change while the epoch and the domain tags stay: a run whose fills an adapter change alters hashes to new values, and three changes fold more state, so a run can hash differently from 1.0.1 with byte-identical trades: #315 (an unbatched same-bar entry request and placement; the stream report's terminal re-mark leaves the hashed extremes; witness row Stream/0/1 re-pinned), #316 (an opening stop's next waypoint; Random44/0/0 and /1 re-pinned) and #319 (tick-volume state, every existing pin kept). In the runner tooling bullet, "No versioned engine PF_API export ... changes" and "Plugin-free ledger identity bytes remain unchanged" read as release-wide; they now speak for #320 itself and for a strategy without the checked settings calls. The Report keys intro points at the report schema page. The terminal-quote bullet names the chart feed that PINEFORGE_RUN_REPORT_CHART_QUOTE points at, and two runner bullet headings are re-wrapped. Replaces text introduced by a80485c (this branch's first commit): the lead's "A run whose fills one of the Pine adapter changes below alters hashes to new values, and [#316] adds one placement field to the adapter's hashed state, for which two witnesses with byte-identical trades were re-pinned.", the Report keys intro and the terminal-quote harness clause; and text introduced by dbd17b3 (#320): "No versioned engine PF_API export, native C++ surface, script ABI epoch or engine behavior changes." and "Plugin-free ledger identity bytes remain unchanged". Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The 1.1.0 lead said three changes "fold more state"; #315's range-end change instead stops folding a stream report's terminal re-mark into the hashed extremes. The sentence now says the three changes change what the hashes fold, and names Stream/0/1 as a re-pinned witness row without claiming it is #315's only one. Replaces text introduced by 66be240 (this branch's second commit): "Three changes also fold more state" and "re-pinning one witness row (`Stream/0/1`, whose recorded-row digest alone moves)". Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Brings the branch up to date with main 4f2a475 (#325 7b59662, #327 4f2a475) so the release notes merge last, as the merge order now asks. Conflicts resolved neutrally; the next commit does the editing: - CHANGELOG.md: this branch's 1.1.0 section, with main's two new Unreleased bullets ("Confirmed-bar streams compute what the batch computes:" from #325, "Harness symbol feeds:" from #327) kept verbatim inside it; main's "## Unreleased" heading and its older copies of the bullets this branch already rewrote are not taken. - README.md: #325's known-issue lines replace this branch's "Known issue (v1.0.0, v1.0.1, v1.1.0)" line from a80485c. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… rule #325 (confirmed-bar streams compute what the batch computes) and #327 (docker/run_json.py --symbol-feeds) merged before the release notes, so their Unreleased bullets join the 1.1.0 section, rewritten and linked; no Unreleased heading stays. - CHANGELOG.md: the lead names the stream fix and, in the pairing sentence, codegen 1.1.0's request discovery (transpile_full()["requests"], codegen #164). #325's bullet says what a stream user sees; #327's bullet and its Report keys entry (applied_runtime.symbol_feeds, the --symbol-feeds: failure messages). A new State hashes section lists the four recipe additions since v1.0.1 (#315, #316, #319, #325; none removed, renamed or re-encoded; domain tags unchanged). #315's range-end equity-extreme change moves to the Pine adapter parity bullet as a behaviour fix. The #319 bullet named the broker-state hash; the change is in the native continuation hash, which the broker-state hash folds. The known-issue bullet now says it is fixed in 1.1.0 (#325). Migration gains a line on stream results and hashes. - README.md: the known issue is fixed in 1.1.0 (#325); the v1.1.0 Releases line gains the stream fix, request discovery and the harness's multi-symbol request.security feeds. Fact markers rendered from the facts export that maps releases[1.1.0] to pineforge-parity-baseline-20261004-engine-7b596622 (7,951 excellent / 38 strong of 7,989); the active scoreboard moves to the same baseline, here and in docs/pages/contributing-llm.md. - docs/pages/streaming.md: the known issue affected v1.0.0 and v1.0.1 and is fixed in 1.1.0. - docs/pages/public-contract.md: the state-hash rule, amended by the owner's ruling for 1.1.0. It covers the recipe only: a minor release may add a hashed field (domain tags unchanged, the added field changing no trade or report, disclosed under State hashes); removing, renaming or re-encoding a hashed field is a new epoch and a major release; behaviour changes follow the normal release and parity rules. The first uses are #315 and #316. The semver rule is unchanged. Replaces text introduced by 7b59662 (#325): CHANGELOG.md's "Confirmed-bar streams compute what the batch computes:" bullet, and the "Fixed on main (#325); included in the next release." lines of README.md and streaming.md; by 4f2a475 (#327): CHANGELOG.md's "Harness symbol feeds:" bullet; by d093560 (#290): public-contract.md's "State-hash values are stable within the epoch." and "a new recipe is a new epoch and a major release"; by a80485c (this branch's first commit): the "Known issue, as in v1.0.0 and v1.0.1" bullet, streaming.md's "(v1.0.0, v1.0.1, v1.1.0)", the #319 bullet's "A tick stream's broker-state hash folds the new accumulator state only where it adds information, so the existing tick, bar and batch hash pins hold.", the Report keys failure-output bullet and the v1.1.0 Releases line; by 66be240 and 83d64dc: the lead's state-hash sentences ("Three changes also change what the hashes fold"); and, as git attributes them through this branch's merge of main, by e59c09f: README.md's v1.1.0 Releases line and streaming.md's "(v1.0.0, v1.0.1, v1.1.0)". Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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.
Release notes and version scoping for engine v1.1.0. The release workflow writes only
VERSION; this docs-only change supplies the CHANGELOG section, moves the version-specific lines to 1.1.0 as #311 did for 1.0.1, and amends the public contract's state-hash rule. It merges after #325 and #327 and folds their CHANGELOG entries into 1.1.0.1.1.0 is a minor release because #317 adds six functions to the C ABI:
<pineforge/pineforge.h>declaresstrategy_settings_api_version,strategy_create_checked,strategy_set_input_checked,strategy_set_override_checked,strategy_get_effective_settingsandrun_backtest_full_checked, which a strategy generated by pineforge-codegen 1.1.0 exports. It pairs with pineforge-codegen 1.1.0 (hub imageghcr.io/pineforge-4pass/pineforge-release:1.1.0). It also fixes the v1.0.0 and v1.0.1 streamrequest.securityknown issue (#325).Changes
CHANGELOG.md:## 1.1.0 — 2026-10-04, with no## Unreleasedleft: a lead paragraph (what the release adds, the pair, the three tarballs, what stays), one bullet per change a user can observe since v1.0.1 (docs: state the merge rule's zero-score outcome as it is now #312, grader: resolve distinct-entry identity against every TradingView entry key #313, Pine adapter: eight parity changes, 35 probes strong to excellent #315, Pine adapter: resolved margin-call fills and pyramiding-one admission, 3 probes strong to excellent #316, Checked strategy settings and contained C ABI exceptions #317, Render parity scoreboard docs from release-hub facts #318, Exact tick-built bar volume and a genuine-tick equivalence harness #319, Live runner: normalized feed input and per-action webhook routing #320, Report-only native intraday terminal quote #321, Apply syminfo.mincontract as the engine's lot grid in the Docker harness #322, Document the stream request.security known issue (v1.0.0, v1.0.1) #323, docs: keep the parity and trades badges out of a raw HTML block #324, Confirmed-bar streams compute what the batch computes #325, Install other symbols' bars for request.security in the Docker harness (--symbol-feeds) #327), each linking its PR, and the subsections State hashes, Report keys and Migration. Confirmed-bar streams compute what the batch computes #325's and Install other symbols' bars for request.security in the Docker harness (--symbol-feeds) #327's Unreleased bullets are folded into 1.1.0.README.md:pineforge-codegen==1.1.0(two places), the v1.1.0 tarballs, the pairing sentence, the benchmark refresh line, the release scoreboard sentence withreleases[1.1.0]markers, the stream known issue marked fixed in 1.1.0 (Confirmed-bar streams compute what the batch computes #325), and a v1.1.0 line in Releases. The public corpus sweep's "311 excellent + 1 declared anomaly" is scoped to the v1.0.1 library it was measured on. Fact markers rendered from the facts export that mapsreleases[1.1.0]topineforge-parity-baseline-20261004-engine-7b596622(7,951 excellent / 38 strong of 7,989); the active scoreboard markers move to the same baseline, inREADME.mdanddocs/pages/contributing-llm.md.docs/pages/install.md: the v1.1.0 tarballs and the hub tagengine1.1.0-codegen1.1.0.docs/pages/public-contract.md: 1.1.0's release line; enginev1.1.0with codegen1.1.0among the supported pairs; the four C-boundary rows planned for 1.1.0 (C-SURFACE-2) stated as not in it; and the state-hash rule amended (the semver rule is unchanged): a minor release may add a field to the hashed state when every trade and every other report field stays byte-identical, with unchanged domain tags and a CHANGELOG State hashes disclosure; any other change to what a state hash folds is a new epoch and a major release; Pine adapter: resolved margin-call fills and pyramiding-one admission, 3 probes strong to excellent #316 is named as the first use.docs/pages/streaming.md: the streamrequest.securityknown issue affected v1.0.0 and v1.0.1 and is fixed in 1.1.0 (Confirmed-bar streams compute what the batch computes #325).Lines that state what an earlier version shipped or did stay as they are (the 1.0.1 and 1.0.0 CHANGELOG sections, the v1.0.1 Releases line,
VERSION, the release-version test data).Report keys (
docker/run_json.py, v1.0.1 → v1.1.0)EQUITY_REPORT_KEYSunchanged (metrics.equity.sharpe_tv/sortino_tv).applied_runtime.syminfo={"qty_step": <float>, "mincontract": <float>}(Apply syminfo.mincontract as the engine's lot grid in the Docker harness #322), present only when the--syminfo/PINEFORGE_SYMINFOfile carries a validmincontract, absent otherwise.applied_runtime.symbol_feeds={"canonicalization": "pf-symbol-feed-barc-close-le-v1", "symbols": {"<symbol string>": {"facts": {...}, "feeds": {"<timeframe>": {"bars": <int>, "first_ts": <int>, "last_ts": <int>, "source_values_sha256": "<hex>"}}}}}(Install other symbols' bars for request.security in the Docker harness (--symbol-feeds) #327), present only when--symbol-feeds/PINEFORGE_SYMBOL_FEEDSinstalled at least one symbol, absent otherwise.fingerprint.provenance.runtimemirrorsapplied_runtime, so a run with either key has its own fingerprint; a run without them is unchanged for the same library apart fromelapsed_seconds.{"engine":"pineforge","error":...}, harness exit 1, image entrypoint exit 4, with new messages:syminfo.mincontract must be a positive finite number, got <json>,the strategy library has no strategy_set_syminfo_metadata, so syminfo.mincontract cannot be applied, and the--symbol-feeds: …family.Notes for the maintainers
scripts/check_aggregate_cpp_versions.pyandscripts/check_broker_state_hash_coverage.pypass). Only Pine adapter: resolved margin-call fills and pyramiding-one admission, 3 probes strong to excellent #316 has a witness that isolates its addition (hash moved, trades identical); the fields Pine adapter: eight parity changes, 35 probes strong to excellent #315, Exact tick-built bar volume and a genuine-tick equivalence harness #319 and Confirmed-bar streams compute what the batch computes #325 add come with those PRs' own behaviour changes. Pine adapter: eight parity changes, 35 probes strong to excellent #315's range-end equity-extreme change is a behaviour change and is listed with the parity fixes.facts/facts.jsonat eef6d7ec, solab facts checkagainst the published facts passes.docs/pages/native-engine.md,docs/pages/pine-to-native.md,docs/adr/0001-kernel-adapter-boundary.mdand comments ininclude/pineforge/native_c_api.h/native_host.hppstill call the four C-SURFACE-2 rows "scheduled for 1.1.0". They are left as they are here: those pages are checked by the build, so editing them takes the merge gate off the docs-only basis. The CHANGELOG and the public contract say the four rows are not in 1.1.0.Verified
lab facts render:PASS: 51 fact markers; 2 file(s) rendered: README.md, docs/pages/contributing-llm.md;lab facts check:PASS: 51 fact markers; 0 file(s) drifted.scripts/check_doc_reverts.py --base origin/main: OK (4 commits, 0 unnamed sentence deletions or reverts).scripts/check_doc_lint.py: 0 offenders.scripts/check_doc_anchors.py: every anchor resolves.git diff --check: clean.PF_ABI_VERSION4;pineforge.honly gains declarations;native_c_api.hand the native C++ host headers are unchanged since v1.0.1 (Confirmed-bar streams compute what the batch computes #325 and Install other symbols' bars for request.security in the Docker harness (--symbol-feeds) #327 touch neither); the epoch isengine_script_run_v19; the hash-recipe changes listed under State hashes are additions only (file:line evidence was given to the lane supervisor); Install other symbols' bars for request.security in the Docker harness (--symbol-feeds) #327's report keys and messages come from itsdocker/run_json.pydocstring,load_symbol_feeds/install_symbol_feeds/symbol_feeds_recordanddocker/README.mdon main; codegen request discovery from codegen session symbols round 7: HTF completion/warm-up on the symbol clock, prearmed brackets at the fill open, syminfo.type, 24h session strings, trail_offset ticks, Qty export #164.docs/pages/tutorial-macd.md,tutorial/README.md) were re-measured on a spot build box at this branch's earlier code (before Confirmed-bar streams compute what the batch computes #325 and Install other symbols' bars for request.security in the Docker harness (--symbol-feeds) #327): 50 trades (17W / 33L), net pnl +569.97, as the pages state. Confirmed-bar streams compute what the batch computes #325 leaves batch results unchanged and Install other symbols' bars for request.security in the Docker harness (--symbol-feeds) #327 changes only the harness.🤖 Generated with Claude Code