docs: changelog and version scoping for 1.2.0 - #172
Merged
Merged
Conversation
1.2.0 pairs with engine v1.2.0, whose pineforge.h defines PF_CAPABILITIES_API_VERSION and declares the two capability functions (engine #332) that the C++ of codegen 1.2.0 defines (#167). The changelog section takes in the Unreleased notes and covers #166, #167, #168 and #171: the capability receipt and what the live runner does with it, the diagnostic codes and catalog, the first error in source order, the linear-time classification as a security fix, the PineForge Source License 1.1 and the pairing and migration steps. The Python and JSON contract is additive; the engine's report harness is unchanged since v1.1.0, so no report key changes. The README, AGENTS.md / CLAUDE.md, CONTRIBUTING.md, docs/PUBLIC_CONTRACT.md and docs/pine-cap-activation.md name 1.2.0 where they named 1.1.0 as the current release or pair, the pairing table gets a 1.2.0 row, the license badge reads 1.1, and the npm README lists the catalog and LICENSE the package now carries. The release scoreboard sentence and the pf markers are left to the release lane. Measured for 1.2.0: the engine's 325 corpus sources and the 277 gate fixtures transpile, with the capability block removed, to 1.1.0's C++ byte for byte, each in a fresh process (13 refusals, same messages), and each in under 0.1 s on CPython 3.14.6 on an Apple M4 Max. The tutorial run of the quick-start C++ against engine main 44eab7b1 (Linux x86_64, GCC 13) prints 9 trades and +738.20, and 13 trades with the old sizing declared, as 1.1.0 with engine v1.1.0 does. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
README: the release sentence names 1.2.0 and renders releases[1.2.0] (baseline pineforge-parity-baseline-20261005-engine-52292db9, 7,970 excellent / 19 strong of 7,989), and the scoreboard of main renders the same baseline, from pineforge-release facts/facts.json as exported for the 1.2.0 release (sha256 c2f438f0). CHANGELOG: the 1.2.0 documentation entry states the release's grades, as 1.1.0's does. 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.
What and why
1.2.0 pairs with engine
v1.2.0. The engine'spineforge.hdefinesPF_CAPABILITIES_API_VERSION(1) and declaresstrategy_capabilities_api_versionand
strategy_capabilities_receipt(pineforge-engine#332). The C++ of codegen1.2.0 defines both functions (#167). The pair keeps
PF_ABI_VERSION4 and thescript ABI epoch
engine_script_run_v19. This README becomes PyPI's longdescription for 1.2.0, so the version scoping has to be right at the tag.
## 1.2.0 — 2026-10-05section absorbs the Unreleased notesand covers Emit immutable compiled execution capability receipts (capability extension v1) #167, Stable diagnostic codes, an ICU message catalog, and first error in source order #166, License: the PineForge Source License 1.0 (pineforge, LLC); investment management is commercial for every organization #168 and Linear-time diagnostic codes, the PineForge Source License 1.1, and the scoreboard README at pineforge-release 03b8dcc #171:
v1.2.0'spineforge-livedoeswith it;
code/args,diagnostics_catalog(),render_diagnostic(),the glue envelope keys, and the catalog file
(
diagnostics_catalog-v1.2.0.jsonon the GitHub release);crafted script text; on
mainonly, never in a release);docs/PUBLIC_CONTRACT.md and docs/pine-cap-activation.md now name 1.2.0 /
v1.2.0wherever they named 1.1.0 as the current release or pair. The pairingtable gets a 1.2.0 row. Lines that say what an earlier release shipped are
unchanged.
match LICENSE and the License section.
diagnostics_catalog.jsonexport andLICENSE.releases[1.2.0](registry baseline
pineforge-parity-baseline-20261005-engine-52292db9,engine #339's merge, which v1.2.0 equals in behaviour: 7,970 excellent / 19
strong of 7,989, none below strong), and the main scoreboard renders the same
baseline, from pineforge-release
facts/facts.jsonat 0c2f6838(pineforge-release fix(codegen): harden validation edge cases #28).
lab facts checkagainst that pinned file passes,with
--github-render. CHANGELOG.md states the release's grades in itsdocumentation entry, as 1.1.0's does.
Compatibility statements
Report keys: the engine's
docker/run_json.py, which the hub image runs, isbyte for byte the same file in engine
v1.1.0and engine main 52292db9 (#339). Noreport key is added, removed or renamed.
metrics.equity.sharpe_tvandsortino_tv(EQUITY_REPORT_KEYS) are unchanged, and the engine's ADR-0001keeps serialized report keys unchanged.
The Python and JSON contract is additive.
git diff v1.1.0..48e7a13touchesthree contract files, and each change is an addition:
gate/glue.pyaddscodeandargsto each JSON diagnostic;pineforge_codegen/errors.pyadds thecodeandargsproperties;pineforge_codegen/__init__.pyadds thediagnostics_catalog/render_diagnosticimport.No argument, result key or envelope is removed or renamed. One result
changes: which error is raised first for a script with several errors (Stable diagnostic codes, an ICU message catalog, and first error in source order #166).
License: 1.2.0 is the first release under the PineForge Source License 1.1
(licensor pineforge, LLC). All 20 earlier release tags ship "PineForge Codegen
— License", which is the PolyForm Noncommercial License 1.0.0 with PineForge's
supplemental sections. Those releases keep that license. The changelog
summarizes LICENSE and LEGAL.md and names LICENSE as the controlling text.
Verified
Each source ran in its own process, once with the v1.1.0 tree and once with
48e7a13. The sources were the engine's 325 public corpus sources (corpus pin
b40aa8ec) and the 277 gate fixtures. Of these, 589 transpile. For each of
them, 1.2.0's C++ with the capability block removed equals 1.1.0's byte for
byte, and each carries exactly one capability block. The other 13 are refused
with the same message by both versions.
says "under 0.1 seconds".
terminated.
+738.20, best/worst +679.22 / -335.02, max dd -788.79 and elapsed 1.0 ms.
With the old sizing declared it books 13 trades.
v1.1.0with 1.1.0's C++ prints the same, which matches theREADME.
.sobuilt against engine main's headers exports both capabilityfunctions.
v1.1.0's headers compiles without them, as the#ifdefguard intends.git diff --check origin/mainis clean. Only Markdown files changed. Everypf:marker value comes from the facts render above.Gate
pr-gate for (engine main 52292db9, this head 95a5314): PASS (no-improve-no-regression), experiment
exp-rel120-cgnotes-gate-20261005(134/134 cases), candidated8af0284vs baseline7161ebdc(the active…-20261005-engine-52292db9) over population40c482c2; eventKeyverdict-52292db9df56-95a5314bf0cf-36475251a30c, gated 2026-10-05 04:24Z.🤖 Generated with Claude Code