Release notes

One entry per tagged release, newest first. Each names the marketfeed release it pairs with, what it was validated against, how to roll back, and what changed since the previous tag. The register of what remains undone is Remaining work.

v0.3.0 — 2026-10-12

Order lifetime v2 is the backtest default (GLE-502, GLE-470). A backtest with no lifetime profile runs v2: an order rests until it fills, is cancelled or a documented venue event ends it, the strategy cancels explicitly, and every attempt’s status transitions and every cancel’s classified outcome reach the strategy (Lifecycle turns). A live run and a run of the TRADES schema keep v1 as their default until the live work resumes.

Pairs with marketfeed v0.3.0. marketfeed.ref is the marketfeed v0.3.0 tag (1147f4d1), the served-data freeze; it pins this release’s code freeze (c077dc1, algolang PR 198) and the same nseries commit as algolang (5f5c55a1). The served calendar law is mf-cal-v2, and the CFTC -CMB COT consolidations are served in E-mini equivalents throughout.

Validated against. The parity matrix ran on the freeze commit against an adapter built from marketfeed 180aa720 over the archive: make test, the conformance suite under both lifetimes included; every golden, the legacy masters under explicit --lifetime v1; and the three KBD master configurations, byte-identical under explicit v1 and, under the v2 default, moved only by the two at-or-through entries of 2015-08-07 and 2016-06-21 that the swing-breakout strategy’s migration documented (76 of 78 strategy fills identical, equity +200, +200 and +162.5). marketfeed 180aa720..1147f4d1 changes no served data.

Breaking changes.

  • The default. A backtest without --lifetime (or "data": {"lifetime": ...}) now runs v2. A strategy that declares neither required nor supported v2 is refused at the handshake under the default, with a hint naming --lifetime v1; there is no silent fallback. Every strategy, demo and port in this tree declares v2, so none is refused.
  • Rollback. --lifetime v1 reproduces the legacy profile byte for byte; its artefacts are identical to the legacy run’s.
  • Provenance. A run under v2, or under a defaulted profile, records it: the report gains a lifetime: line, and result.json, report.html and the lifecycle trace gain the profile and its source. A live run without --lifetime prints lifetime: v1 (default) in its report.
  • Admission limits. The v2-only flags (--max-order-quantity and its siblings) now apply to a defaulted backtest; under explicit --lifetime v1 they are refused as before.
  • make test-golden takes TEST_TIMEOUT (20m by default), as make test does.

What changed since v0.2.0. About 125 merges (algolang PRs 68–198).

  • Order lifetime v2 (the GLE-200 programme, backtest half complete): the lifecycle trace (--lifecycle-json), the v2 protocol and capability negotiation, the attempt-indexed working view, lifecycle command turns, persisted ownership, the race guard, the admission policy and the transport scheduler, the desired-order controller (kit.Controller), GTC quarter-end and exchange-calendar Day and GTC cancellations, timers, corporate actions and contract expiry ending working orders, rolls that re-place working orders, the stdio-csv-v2 grammar for non-Go ports, native bracket children and OCA groups in the simulator, the shared conformance suite and the exit-once gate, and the migration of every strategy, demo and port.
  • Continuous futures: the client-side construction estate is deleted (ER5); several continuous frames and roots in one run, declared continuous series, warm-up, aligned series and intraday grids on continuous runs, deferred composites (ofs=B1..B3) as inputs, and several ranks of one root that take orders.
  • Market data for strategies: venue statistics and instrument definitions, trade tapes between bars, revision-aware observations, point-in-time contract listings (ctx.Curve), exchange calendars (ctx.Calendar), event-bar statistics, constructor lead-ins and custom session windows.
  • Accounts and orders: a multi-currency account valued through RBA rates, a margin and buying-power model from served margin requirements, combo orders filled all legs or none and priced at the exchange’s spread, and contract expiry settled at the exchange’s final settlement.
  • Strategies: the 18-binary legacy breakout family, and the order-lifetime migrations of every strategy.

Not in this release. The live path stays parked: live runs keep v1, real-time stepping and the one-strategy-per-account restriction. Also parked: the removal of the SDK’s interim corporate-action rewrite (GLE-456), and the live halves of the bracket child, the OCA pair and the legacy breakout family’s migration. The post-release findings are listed on GLE-502.

v0.2.0 — 2026-10-06

The composite flip: continuous futures are consumed from marketfeed’s served composite (one :cont fetch and the pinned ROLL_SCHEDULE per root, the session clock for daily runs, one continuous dispatch), and equities from its served adjusted bars (GLE-328). The last release that still contains the client-side construction estate, which ER5 (GLE-327) then deleted; roll back to v0.2.0 to recover it.