From 440226397562fe1ecde5922af965e7c8b96c951a Mon Sep 17 00:00:00 2001 From: luisleo526 Date: Mon, 12 Oct 2026 13:51:16 +0800 Subject: [PATCH 1/2] docs: prepare 1.5.0 release notes (README pairing, CHANGELOG date) Co-Authored-By: Claude Code --- CHANGELOG.md | 17 ++++++++--------- README.md | 24 ++++++++++++------------ docs/PUBLIC_CONTRACT.md | 15 ++++----------- 3 files changed, 24 insertions(+), 32 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ed56f5..0d4e8e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,15 +20,14 @@ supported as exact pairs; on the 0.x line they are independent. See the the release commit. A prerelease note describes changes since the preceding prerelease or stable tag; the final stable note consolidates the series. -## 1.5.0 — Unreleased - -The planned number of the next release; it stays **Unreleased** until its tag -exists, and the package version is unchanged. This entry records the diagnostic -additions below and the report-contract documentation for the paired engine -fix, and nothing else: the engine pairing, the rest of the content and the date -of 1.5.0 are set when the release is prepared. The codegen change is -diagnostics only; the report documentation adds no Python, JSON, diagnostic or -emitted-C++ change of its own, and no analyzer or code-generation file differs. +## 1.5.0 — 2026-10-12 + +A minor release of the exact engine/codegen pair, paired with engine `v1.5.0` +and dated 2026-10-12. This entry records the diagnostic additions below and the +report-contract documentation for the paired engine fix, and nothing else: the +codegen change is diagnostics only; the report documentation adds no Python, +JSON, diagnostic or emitted-C++ change of its own, and no analyzer or +code-generation file differs. ### Compatibility and migration diff --git a/README.md b/README.md index d32b4c0..04a43cc 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ for the changes in each release from 1.0.0 on and the release-note policy. ## Releases and this README This README ships with each release as its package description on PyPI (`pineforge-codegen`); releases from 0.7.0 on are also on npm as -`@pineforge/codegen-pyodide`. It describes 1.4.0 (2026-10-08) +`@pineforge/codegen-pyodide`. It describes 1.5.0 (2026-10-12) and what changed since 0.10.4. The release's behavior was validated before tagging on codegen `bfc4ddce` with engine `b3192bfc`, excluding engine request #356. Those validation builds reported `1.3.0`; historical measurements @@ -64,9 +64,8 @@ covers 1.0.0 on and links the notes of earlier releases. A source install reports the version in `VERSION`, which the release workflow sets when it tags a release. -Text that says "since 1.5.0" describes the source tree on `main`, not a -published package: 1.5.0 is the planned number of the next release, and the -statements about 1.4.0 keep their historical meaning. +Text that says "since 1.5.0" describes the 1.5.0 release and later versions; +the statements about 1.4.0 keep their historical meaning. ### Upgrading from 1.3.0 @@ -126,8 +125,8 @@ It does **not** own execution semantics. Order lifecycle, bracket legs, fill-price and slippage rules, `process_orders_on_close` / `calc_on_order_fills`, margin revival and trail/stop behaviour — everything TradingView parity depends on at run time — live in the engine's source-adapter runtime -([`src/source/`](https://github.com/pineforge-4pass/pineforge-engine/tree/v1.4.0/src/source) -in engine `v1.4.0`), which maps them onto the engine's Pine-agnostic kernel. +([`src/source/`](https://github.com/pineforge-4pass/pineforge-engine/tree/v1.5.0/src/source) +in engine `v1.5.0`), which maps them onto the engine's Pine-agnostic kernel. See the engine's [architecture notes](https://github.com/pineforge-4pass/pineforge-engine#architecture-kernel-vs-parity). @@ -540,6 +539,7 @@ Generated C++ compiles only against the engine it was generated for: | 1.2.0 (PyPI, 2026-10-05) | `v1.2.0` | The pair the `pineforge-release` image `1.2.0` ships. Its C++ defines the compiled execution capability functions that engine `v1.2.0` adds to ``; regenerate and relink. | | 1.3.0 (PyPI, 2026-10-06) | `v1.3.0` | The pair the `pineforge-release` image `1.3.0` ships. Its C++ adds the confirmed-bar receipt, which engine `v1.3.0`'s live runner reads, and the order-shapes receipt; engine `v1.3.0`'s `` is `v1.2.0`'s. Regenerate and relink. | | 1.4.0 (PyPI, 2026-10-08) | `v1.4.0` | Adds paired coded failures, corrected input manifests and collection lowering. C ABI 4 does not authorize a mixed pair. Regenerate and relink. | +| 1.5.0 (PyPI, 2026-10-12) | `v1.5.0` | Adds the nonfatal `note` diagnostic severity and diagnostic `user_message` templates. Regenerate and relink. | | Later `X.Y.Z` releases | `vX.Y.Z` of the same version | See below. | On the 0.x line the engine and codegen versions are independent, and the @@ -565,8 +565,8 @@ Pine as `strategy.pine`, write `strategy.generated.cpp` with the [file example](#transpile-a-file-to-a-cpp) above, then from the same directory: ```bash -# 1.4.0 pairs with engine v1.4.0. For 0.10.4 use v0.13.1. -git clone --branch v1.4.0 https://github.com/pineforge-4pass/pineforge-engine.git +# 1.5.0 pairs with engine v1.5.0. For 0.10.4 use v0.13.1. +git clone --branch v1.5.0 https://github.com/pineforge-4pass/pineforge-engine.git cd pineforge-engine cp ../strategy.generated.cpp tutorial/macd/generated.cpp # the tutorial's strategy slot bash tutorial/run.sh # needs cmake, a C++17 compiler and python3 @@ -692,7 +692,7 @@ quote. The commercial-license store (coming soon) will take orders online. ## Explicit Pine execution attachment -This section describes the 1.4.0 and engine `v1.4.0` pair. The Pine execution adapter is +This section describes the 1.5.0 and engine `v1.5.0` pair. The Pine execution adapter is the engine's full Pine execution runtime (`PineExecutionAdapter` and `PineStrategyHost` in the engine's `src/source/`): order lifecycle, bracket legs, fill-price and slippage rules, POOC / `calc_on_order_fills`, margin @@ -715,9 +715,9 @@ Regenerate old generated C++ before using a new engine for Pine execution. C++ generated before the source-layer cut ([#129](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/129)), 0.10.4's included, derives from `BacktestEngine` and does not compile against -engine `v1.4.0`; old cap-only C++ does not attach the priority rule, and +engine `v1.5.0`; old cap-only C++ does not attach the priority rule, and metadata cannot silently restore it. Rebuild all modules against the -new matching C++ layout (`engine_script_run_v19` in engine `v1.4.0`). Retaining +new matching C++ layout (`engine_script_run_v19` in engine `v1.5.0`). Retaining that epoch does not promise equal fingerprints, state hashes or trades across releases. The extraction preserves Pine policy under explicit attachment; it does not implement the generic native diff --git a/docs/PUBLIC_CONTRACT.md b/docs/PUBLIC_CONTRACT.md index eb8be36..24cbfa9 100644 --- a/docs/PUBLIC_CONTRACT.md +++ b/docs/PUBLIC_CONTRACT.md @@ -1,17 +1,11 @@ # Public contract for 1.0 The supported Python/JSON contract began in 1.0.0; the sections below identify -later additions. This revision includes the 1.4.0 pair (2026-10-08). -Pre-tag validation used codegen `bfc4ddce` and engine `b3192bfc`, whose -version files at that point read `1.3.0`. One section, -[A report belongs to the call that returned it](#a-report-belongs-to-the-call-that-returned-it), -describes a paired engine fix that is not yet released. +later additions. This revision includes the 1.5.0 pair (2026-10-12). Text marked **since 1.5.0** describes diagnostic additions that 1.4.0 and earlier releases do not have: the `note` severity, the `user_message` template -and the eleven codes that became notes. 1.5.0 is the planned number of the -release that carries them; until that tag exists, this text describes the -source tree, not a published package. +and the eleven codes that became notes. ## Optional compiled execution capabilities @@ -176,9 +170,8 @@ three codes: exit 4 alone does not select a billing or refund decision. ## A report belongs to the call that returned it -Availability: **not yet released.** This is the contract of a report fix in the -paired engine that is in preparation. Engine `v1.4.0` and earlier do not carry -it; this section applies to the first engine release that does. The report fix +Availability: **since 1.5.0**, with engine `v1.5.0`. This is the contract of a +report fix in the paired engine. The report fix itself changes neither the generated C++ nor the transpiler's Python and JSON contract: the wrappers still run the strategy and then ask the engine for its report. From c154e0c28da935065ef2b8a7e561841d8e7791ad Mon Sep 17 00:00:00 2001 From: luisleo526 Date: Mon, 12 Oct 2026 14:12:29 +0800 Subject: [PATCH 2/2] docs: scope the pre-tag validation sentence to 1.4.0 (it is not 1.5.0's) Co-Authored-By: Claude Opus 5.5 (1M context) --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 04a43cc..b3b1b00 100644 --- a/README.md +++ b/README.md @@ -53,9 +53,9 @@ hosted-server line name no version. --> This README ships with each release as its package description on PyPI (`pineforge-codegen`); releases from 0.7.0 on are also on npm as `@pineforge/codegen-pyodide`. It describes 1.5.0 (2026-10-12) -and what changed since 0.10.4. The release's behavior was validated before -tagging on codegen `bfc4ddce` with engine `b3192bfc`, excluding engine -request #356. Those validation builds reported `1.3.0`; historical measurements +and what changed since 0.10.4. The 1.4.0 release's behavior was validated +before tagging on codegen `bfc4ddce` with engine `b3192bfc`, excluding engine +request #356; those validation builds reported `1.3.0`. Historical measurements below retain the versions on which they were run. The [PyPI release history](https://pypi.org/project/pineforge-codegen/#history) lists every release; the