Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
587778d
docs: sync resume anchors and PMU claims to v0.2.0 (Codex #127/#128 f…
div0rce Jun 21, 2026
0c3b401
perf: add flamegraph generator and make target (#32)
div0rce Jun 21, 2026
beec2d0
perf: add generated flamegraph artifact on bare-metal Fedora Asahi (#32)
div0rce Jun 21, 2026
59f0fc3
feat: add FIX-like text protocol adapter (#29)
div0rce Jun 21, 2026
872600a
perf: harden flamegraph collapsed-stack parsing (Codex review)
div0rce Jun 21, 2026
0201d54
perf: regenerate flamegraph artifact after parser hardening
div0rce Jun 22, 2026
3e4c8e3
fix: enforce FIX-required ClOrdID on OrderCancelRequest (Codex review)
div0rce Jun 22, 2026
52de5b8
refactor: improve flamegraph.py code health (CodeScene gate)
div0rce Jun 22, 2026
d4be2da
perf: regenerate flamegraph artifact after code-health refactor
div0rce Jun 22, 2026
9c68039
refactor: reduce decode_new_order complexity in fix.cpp (CodeScene gate)
div0rce Jun 22, 2026
4aec1d0
refactor: flatten flamegraph.py remaining complexity (CodeScene)
div0rce Jun 22, 2026
3905059
perf: regenerate flamegraph artifact after complexity flattening
div0rce Jun 22, 2026
68fe197
refactor: remove decoder duplication and split parse_envelope (CodeSc…
div0rce Jun 22, 2026
cb8f99c
refactor: table-driven enum maps + simpler msg-type check (CodeScene)
div0rce Jun 22, 2026
d630fbd
release: v0.2.1 — FIX text protocol adapter, perf flamegraph, anchor …
div0rce Jun 22, 2026
dfa4da2
docs: record resume-anchor sync in PROGRESS current-state (Codex #129)
div0rce Jun 22, 2026
6ef5015
Merge branch 'docs/codex-resume-anchor-sync' into perf/flamegraph-art…
div0rce Jun 22, 2026
31070b1
perf: harden flamegraph.sh classification + sample gating (Codex #130)
div0rce Jun 22, 2026
06b7675
perf: regenerate flamegraph artifact after classification hardening
div0rce Jun 22, 2026
ee5ea4e
Merge branch 'perf/flamegraph-artifact' into feat/fix-text-protocol-a…
div0rce Jun 22, 2026
f213ee7
fix: enforce FIX envelope MsgType position + reject duplicate tags (C…
div0rce Jun 22, 2026
2abb9ca
docs: drop delivered #29 from open-backlog anchors (Codex #131)
div0rce Jun 22, 2026
aff8236
Merge feat/fix-text-protocol-adapter into docs/v0.2.1-release
div0rce Jun 22, 2026
4a2aa67
docs: scope partial-PMU claim to perf-stat; perf-record is a software…
div0rce Jun 22, 2026
2199820
Merge branch 'docs/codex-resume-anchor-sync' into perf/flamegraph-art…
div0rce Jun 22, 2026
6e8a302
Merge branch 'perf/flamegraph-artifact' into feat/fix-text-protocol-a…
div0rce Jun 22, 2026
1d6c6cf
Merge branch 'feat/fix-text-protocol-adapter' into docs/v0.2.1-release
div0rce Jun 22, 2026
5093beb
docs: embed the flamegraph as a visible image in the README
div0rce Jun 22, 2026
1599e5d
Merge branch 'perf/flamegraph-artifact' into feat/fix-text-protocol-a…
div0rce Jun 22, 2026
48d5ab6
Merge branch 'feat/fix-text-protocol-adapter' into docs/v0.2.1-release
div0rce Jun 22, 2026
3b3cd28
Merge remote-tracking branch 'origin/main' into docs/v0.2.1-release
div0rce Jun 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -1259,6 +1259,10 @@ Issue #90 remains the full hardware-PMU evidence debt (the cache-counter set spe
#99 and #110 were addressed by PR #111. Issues #95, #28, and #26 were addressed by PR #112. Issue
#94 is the external technical review request and remains one of the highest remaining credibility
signals. PR #124 completed M49, PR #125 (d9094df) refreshed the Linux host artifacts on bare-metal
Fedora Asahi, and `v0.2.0` was released (PR #127 ded6e80; resume-anchor sync PR #128 ae93545). There
is no active milestone; the highest-value remaining work is non-code and gated on #94 (external
review) and #90 (full cache-PMU evidence on a PMU-capable microarchitecture).
Fedora Asahi, and `v0.2.0` was released (PR #127 ded6e80; resume-anchor sync PR #128 ae93545).
`v0.2.1` then shipped two reprioritized backlog items plus a consistency sweep: a Codex
resume-anchor/PMU sweep (PR #129), a perf call-graph flamegraph + `make flamegraph` (PR #134,
superseding the auto-closed #130, closing #32), and the FIX-like text protocol adapter (PR #131,
closing #29), with the version bump on the release PR. There is no active milestone; the
highest-value remaining work is non-code and gated on #94 (external review) and #90 (full cache-PMU
evidence on a PMU-capable microarchitecture).
35 changes: 35 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,41 @@ All notable changes to this project. The format is loosely based on

_Nothing yet._

## [0.2.1] - 2026-06-21

Two backlog items — reprioritized by the maintainer and delivered — plus a resume-anchor and
perf-evidence consistency sweep. Same honesty bar as prior releases: a deterministic C++20 exchange
simulator and cross-language differential-testing harness — **not** a production exchange, no
real-market connectivity, no latency or profitability claims, and not formal verification.

### Added

- **FIX-like text protocol adapter (#29).** A human-readable `tag=value` (SOH-framed) codec
(`include/qsl/protocol/fix.hpp`, `src/protocol/fix.cpp`) over the **same internal message structs**
as the binary codec, with genuine FIX framing — BeginString (8) / BodyLength (9) / MsgType (35) /
… / mod-256 CheckSum (10) — for the client→gateway order path: NewOrderSingle (`35=D`) → `NewOrder`
and OrderCancelRequest (`35=F`) → `CancelOrder`. Decoding is total, deterministic, and `noexcept`
(fixed field table, `std::from_chars`, `std::string_view`; no heap on the decode path) and reports
every malformed input through a `FixError` taxonomy mirroring the binary codec's `DecodeError`.
Covered by `tests/unit/test_fix_protocol.cpp`, including a **cross-codec equivalence** test (binary
and FIX decode the same order to identical structs) and a byte-pinned fixture; documented in
`docs/fix_protocol.md`. Prices stay integer ticks and Symbol carries the numeric `SymbolId`
(documented simplifications, never floating-point price).
- **`make flamegraph` (#32).** Renders a Linux `perf` call-graph flamegraph
(`results/flamegraph.svg` + a provenance/classification `results/flamegraph.txt`) from the
benchmark harness via `scripts/flamegraph.py` — a dependency-free (stdlib-only) stackcollapse + SVG
renderer (deterministic; unit-tested in `tests/shell/test_flamegraph.sh`), so the artifact is
reproducible from the repo without vendoring the Perl FlameGraph toolkit. The committed artifact is
a software cpu-clock sampling **hot-symbol profile** from the bare-metal Fedora Asahi host — not a
latency/throughput claim; full hardware cache-PMU evidence stays in issue #90.

### Changed

- Synced the `/resume` anchors and perf-evidence wording to the released `v0.2.0` state and narrowed
an overstated Apple **Blizzard** (E-core) PMU claim — those rows read `<not counted>` because the
single-threaded benchmark stays on the Avalanche P-cores (Codex follow-up to PRs #127/#128):
`PROGRESS.md`, `AGENTS.md`/`CLAUDE.md` agreement, and `docs/perf_analysis.md`.

## [0.2.0] - 2026-06-21

Quant Systems Lab v0.2.0 — the Phase III/IV systems arc (M24–M49: a bounded SPSC queue and threaded
Expand Down
10 changes: 7 additions & 3 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -1203,6 +1203,10 @@ Issue #90 remains the full hardware-PMU evidence debt (the cache-counter set spe
#99 and #110 were addressed by PR #111. Issues #95, #28, and #26 were addressed by PR #112. Issue
#94 is the external technical review request and remains one of the highest remaining credibility
signals. PR #124 completed M49, PR #125 (d9094df) refreshed the Linux host artifacts on bare-metal
Fedora Asahi, and `v0.2.0` was released (PR #127 ded6e80; resume-anchor sync PR #128 ae93545). There
is no active milestone; the highest-value remaining work is non-code and gated on #94 (external
review) and #90 (full cache-PMU evidence on a PMU-capable microarchitecture).
Fedora Asahi, and `v0.2.0` was released (PR #127 ded6e80; resume-anchor sync PR #128 ae93545).
`v0.2.1` then shipped two reprioritized backlog items plus a consistency sweep: a Codex
resume-anchor/PMU sweep (PR #129), a perf call-graph flamegraph + `make flamegraph` (PR #134,
superseding the auto-closed #130, closing #32), and the FIX-like text protocol adapter (PR #131,
closing #29), with the version bump on the release PR. There is no active milestone; the
highest-value remaining work is non-code and gated on #94 (external review) and #90 (full cache-PMU
evidence on a PMU-capable microarchitecture).
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.24)
project(quant-systems-lab VERSION 0.2.0 LANGUAGES CXX)
project(quant-systems-lab VERSION 0.2.1 LANGUAGES CXX)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Refresh release-readiness audit for v0.2.1

Bumping the project to 0.2.1 while leaving docs/release_readiness.md as the current audit for v0.2.0 means the release docs still say the next GitHub release is v0.2.0 and record only 241/241 checks, while PROGRESS/HANDOFF claim v0.2.1 ships new tested FIX/flamegraph code at 261/261. Anyone using the documented release-readiness page for this tag gets stale verification coverage, so either update that audit or explicitly mark it as a v0.2.0 historical artifact.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in aff8236: docs/release_readiness.md now covers v0.2.1 — 263/263 tests, the FIX-adapter + flamegraph coverage and artifact, and the next release re-pointed to v0.2.1.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Update the public version string with the release bump

This release bump updates only CMake's project version to 0.2.1, while the public qsl::core::version() implementation still returns "0.1.0" and the smoke test only checks that it is non-null. Any consumer or diagnostic that reports the library version through that API will still identify a v0.2.1 build as v0.1.0, so the release bump should either update that source or derive it from the CMake version.

Useful? React with 👍 / 👎.


set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
Expand Down
51 changes: 29 additions & 22 deletions HANDOFF.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ command lists, roadmap state, non-overclaiming rules, and benchmark rules.
---
## Current handoff

The repo is released at `v0.2.0` (tag on ded6e80, marked Latest), after `v0.1.0`. M0–M49 are
The repo's current release is `v0.2.1` (tagged on the release-PR merge commit, marked Latest), after
`v0.2.0` (ded6e80) and `v0.1.0`. M0–M49 are
merged. PR #101 (40f9249) and PR #102 (7092423)
synchronized project-memory files after M35. PR #103 (0f2ceb7) inserted the repository-health
refactor phase **M36–M42** and shifted the original networking/persistence roadmap after those
Expand All @@ -28,8 +29,12 @@ refactors. PR #113 extended the future roadmap to **M43–M49**. M36–M42 lande
PR #123 (c643b62), and PR #124 (d8c16b2), with M45B provenance migration in PR #116 (b9ea27a) and
the M47 storage diagnosis follow-up in PR #122 (548cb68). The Linux host artifact refresh landed as
PR #125 (d9094df), and the **v0.2.0 release** — a bare-metal Linux evidence refresh, the
partial-PMU reframe, and a full documentation staleness sweep — landed as PR #127 (ded6e80). There
is no active milestone; the project is between releases.
partial-PMU reframe, and a full documentation staleness sweep — landed as PR #127 (ded6e80). The
**v0.2.1 release** then adds two reprioritized backlog items and a consistency sweep: a Codex
resume-anchor/PMU sweep (PR #129), a perf call-graph flamegraph + `make flamegraph` (PR #130,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Point HANDOFF at the merged flamegraph PR

When resuming from HANDOFF, this history still identifies the flamegraph release work as PR #130, but the shipped v0.2.1 content is PR #134: the same file later says #32 was closed by PR #134, PROGRESS.md records the flamegraph as PR #134, and the local history has the merged squash as 31d16f6 ... (#134). A fresh session following HANDOFF can inspect the auto-closed/unmerged #130 instead of the actual merged flamegraph PR, leaving the release provenance inconsistent; update this and the later #129/#130/#131 baseline reference to use #134.

Useful? React with 👍 / 👎.

issue #32), the FIX-like text protocol adapter (PR #131, issue #29), and the version-bump release
PR — merged in that order, with `v0.2.1` tagged on the release merge commit. There is no active
milestone; the project is between releases.

Background — Linux perf evidence (merged, now bare-metal partial PMU):

Expand Down Expand Up @@ -65,33 +70,36 @@ git pull --ff-only
git log --oneline -10
gh pr list --state open
git tag -l
gh release view v0.2.0
gh release view v0.2.1
```

Current state:

- latest synced main baseline: `ded6e80` (PR #127, v0.2.0 release)
- latest synced main baseline: `ded6e80` (PR #127, v0.2.0); the `v0.2.1` baseline is the release-PR
merge commit, after PRs #129/#130/#131
- current active branch, if active: none (work lands via scoped PRs from `main`)
- current active status: `v0.2.0` released. The bare-metal Linux evidence refresh, the
partial-PMU reframe (real Apple PMU counters; cache counters unsupported), and a full
documentation staleness sweep are merged. All 15 `results/*.txt` are bare-metal with
`Dirty inputs: no` and no MAC leaks; `make check` 241/241 and `make asan` 241/241; README and
recruiting benchmark numbers match `results/latest.txt`. No active milestone
- release tag: `v0.2.0` (Latest), after `v0.1.0`
- current active status: `v0.2.1` is the current release on top of `v0.2.0`. It adds the FIX-like
text protocol adapter (#29), `make flamegraph` + a bare-metal flamegraph artifact (#32), and a
Codex resume-anchor/PMU consistency sweep. `make check` 263/263 and `make asan` 263/263 on the
bare-metal Apple M2 Fedora Asahi host; both new code files pass the CI CodeScene Code Health gate.
No active milestone
- release tag: `v0.2.1` (Latest, tagged on the release-PR merge commit), after `v0.2.0` and `v0.1.0`
- open follow-up issue: #90 — narrowed to the full cache-counter PMU set; the bare-metal Apple host
provides real cycles/instructions/branches/branch-misses but no cache-reference/cache-miss support
- issues #95, #28, and #26 were closed by PR #112
- issues #95, #28, and #26 were closed by PR #112; issues #32 and #29 were closed by PR #134 and
PR #131 (now part of `v0.2.1`)
- open review request issue: #94
- legacy backlog still open: #32 (#29 delivered in this PR, `feat/fix-text-protocol-adapter`)
- legacy backlog: clear — #32 (flamegraph) and #29 (FIX adapter) shipped in `v0.2.1` (PR #134,
PR #131)

### Next milestone

There is no active milestone. M0–M49, the Linux artifact refresh (PR #125), and the v0.2.0 release
(PR #127) are merged. The highest-value remaining work is non-code and externally gated: issue #94
(independent external review — needs a human reviewer) and issue #90 (full cache-counter PMU
evidence — needs a PMU microarchitecture that exposes cache events). #29 (FIX-like text protocol
adapter) is delivered in this PR; low-signal backlog: #32 (flamegraph). Do not invent a new
milestone without an explicit human request.
There is no active milestone. M0–M49, the Linux artifact refresh (PR #125), the v0.2.0 release
(PR #127), and the v0.2.1 content (PRs #129/#134/#131 + release PR) are merged. The highest-value
remaining work is non-code and externally gated: issue #94 (independent external review — needs a
human reviewer) and issue #90 (full cache-counter PMU evidence — needs a PMU microarchitecture that
exposes cache events). The #32 (flamegraph) and #29 (FIX adapter) backlog items are now done. Do not
invent a new milestone without an explicit human request.

### Phase III / IV purpose

Expand All @@ -101,15 +109,14 @@ studies, advanced concurrency validation, event-driven gateway architecture, mul
pressure, NUMA/affinity and scheduler-migration studies, ingress memory ordering and false-sharing
evidence, persistence/recovery benchmarking, and late-stage low-latency networking research.

Current priority order (post-v0.2.0):
Current priority order (post-v0.2.1):

1. Issue #94 — independent external technical review remains the single highest credibility gap
(human-gated; cannot be self-certified).
2. Issue #90 — full cache-counter PMU evidence. The bare-metal Apple host gives real
cycles/instructions/branches/branch-misses but no cache-reference/cache-miss counters, so this
needs a PMU microarchitecture that exposes cache events (x86_64, or an ARM server core).
3. Low-signal backlog only after the above: #32 (flamegraph). #29 (FIX adapter) is delivered in
this PR (`feat/fix-text-protocol-adapter`).
3. No low-signal backlog remains: #32 (flamegraph) and #29 (FIX adapter) shipped in `v0.2.1`.

### Forbidden shortcuts

Expand Down
Loading
Loading