Skip to content

release: v0.2.1 — FIX text protocol adapter (#29), perf flamegraph (#32), anchor sweep#133

Merged
div0rce merged 31 commits into
mainfrom
docs/v0.2.1-release
Jun 22, 2026
Merged

release: v0.2.1 — FIX text protocol adapter (#29), perf flamegraph (#32), anchor sweep#133
div0rce merged 31 commits into
mainfrom
docs/v0.2.1-release

Conversation

@div0rce

@div0rce div0rce commented Jun 22, 2026

Copy link
Copy Markdown
Owner

Summary

Version bump v0.2.0v0.2.1 (patch), recording the two reprioritized backlog items plus the resume-anchor/PMU consistency sweep delivered in this stack. Replaces the earlier v0.3.0 release PR per maintainer preference for a patch bump.

Last PR in the stack. Base is feat/fix-text-protocol-adapter (#131) → perf/flamegraph-artifact (#130) → docs/codex-resume-anchor-sync (#129). Merge order: #129#130#131 → this PR. GitHub retargets each child to main as its parent merges. On squash-merge of this PR, tag v0.2.1 on the merge commit and publish the GitHub release.

Changes

No code or benchmark artifacts change in this PR — version/record bump only. make check 261/261.

Note on the number

This is tagged a patch at the maintainer's request. The release is additive (a FIX adapter and new perf tooling), so the CHANGELOG keeps an honest ### Added section rather than pretending it's bug-fixes-only; only the version label is patch-level. No breaking changes to existing APIs or wire formats.

🤖 Generated with Claude Code

div0rce and others added 15 commits June 21, 2026 02:23
…ollow-up)

Resolve the Codex review findings left on `main` by PRs #127 and #128:

- PROGRESS.md: remove the stale "Next action remains" block that still steered
  /resume to the merged PR #125 on `perf/linux-host-artifact-refresh`; replace
  with the v0.2.0 between-releases state (no active milestone; #94/#90 gated).
- AGENTS.md: bring it into sync with CLAUDE.md's v0.2.0 partial-PMU reframe. The
  constraints bullet, the "correct claim" block, and the "M29 perf evidence
  status" subsection no longer label the artifacts "constrained Docker
  validation"; the stale `perf/linux-host-artifact-refresh` follow-up line is
  updated (also in CLAUDE.md) to the released state.
- docs/perf_analysis.md: narrow the PMU claim so it no longer implies the Apple
  Blizzard (E-core) PMU carries live counts. The `apple_blizzard_pmu/...` rows
  read `<not counted>` in results/perf_stat_linux.txt because the single-threaded
  benchmark stays on the Avalanche P-cores — expected scheduling, not a counter.

Docs/memory only; no code or artifacts changed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add `make flamegraph`, the missing-flamegraph follow-up tracked by issue #32.
The perf stat/record text workflow already existed; this renders a perf
call-graph flamegraph.

- scripts/flamegraph.sh: records `perf record --call-graph dwarf -F 4000 -g -e
  cpu-clock` on qsl-bench and writes results/flamegraph.svg plus a
  results/flamegraph.txt provenance/classification companion (top folded
  stacks). Mirrors perf_record.sh: Linux-only, reuses qsl_common.sh provenance
  + qsl_publish_artifact, and honours QSL_PERF_ALLOW_PARTIAL for constrained
  hosts. DWARF call graphs unwind correctly despite the Release `bench` preset
  omitting frame pointers.
- scripts/flamegraph.py: dependency-free (stdlib-only) stackcollapse + SVG
  renderer, so the artifact is reproducible from the repo without vendoring the
  Perl FlameGraph toolkit. Deterministic: frames sorted by name, colors a pure
  function of the name, no RNG/timestamps in the drawn body.
- tests/shell/test_flamegraph.sh: CTest-registered (python3-only, skips cleanly
  if absent) — folding (offset/dso stripping, perf-order reversal, comm-at-base,
  count aggregation, sortedness), SVG well-formedness, XML escaping,
  determinism, empty-input handling.
- docs (perf_analysis.md, results/README.md), command lists (CLAUDE.md,
  AGENTS.md), MILESTONES.md backlog, PROGRESS.md log.

`make check` 242/242. Full hardware cache-PMU evidence stays in #90.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
results/flamegraph.svg + results/flamegraph.txt generated by `make flamegraph`
from the clean committed tree on the bare-metal Apple M2 (aarch64) Fedora Asahi
host: 397 cpu-clock samples, 171 folded stacks, `Dirty inputs: no`. The hot
paths resolve to real engine symbols (OrderBook::modify/cancel/add_limit, the
dispatch_storage cancel path, decode_new_order, the gateway Session path,
replay::generate_flow). Software cpu-clock sampling hot-symbol profile — not a
latency/throughput claim; full hardware cache-PMU evidence stays in #90.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add a human-readable `tag=value` text protocol alongside the binary codec,
mapping the same internal message structs (issue #29, reprioritized by the human
from the backlog).

- include/qsl/protocol/fix.hpp + src/protocol/fix.cpp: SOH-framed `tag=value`
  adapter with genuine FIX framing — 8 BeginString / 9 BodyLength / 35 MsgType /
  ... / 10 mod-256 CheckSum — for the client->gateway order path:
  NewOrderSingle (35=D) -> NewOrder, 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. Documented, deliberate simplifications: Symbol (55) carries the
  numeric SymbolId; Price (44) carries integer ticks and is always present, so
  NewOrder<->FIX is a lossless bijection like the binary codec (price is never a
  float).
- tests/unit/test_fix_protocol.cpp: mirrors the binary required tests and adds a
  cross-codec equivalence test (binary and FIX decode the same order to identical
  structs across all Side x OrdType x TIF), a byte-pinned fixture, and rejection
  of malformed framing / unsupported BeginString / unknown-or-wrong MsgType /
  BodyLength mismatch / CheckSum mismatch / missing field / invalid field /
  invalid enum / out-of-range / oversized messages.
- docs/fix_protocol.md (+ pointer from docs/binary_protocol.md); MILESTONES.md
  and PROGRESS.md updated.

make check 260/260; make asan 260/260 (the adapter parses untrusted text).

Closes #29.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Address two Codex review findings in scripts/flamegraph.py::parse_collapsed:

- Prefer a tab separator when present so a tab-separated folded line whose stack
  contains spaces (C++ signatures) splits on the trailing count instead of an
  interior space and is silently dropped.
- Ignore non-positive sample counts, so hand-crafted --from-collapsed input with
  0/negative counts cannot render a misleading SVG (all-non-positive input now
  fails with exit 1 via the existing empty-folded guard).

Adds test coverage in tests/shell/test_flamegraph.sh (19/19).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
flamegraph.py is a provenance input, so regenerate results/flamegraph.svg +
.txt from the clean tree to keep the Source digest consistent (423 samples,
Dirty inputs: no).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
decode_cancel_order validated only OrigClOrdID (41) and Symbol (55), so a 35=F
message missing ClOrdID (tag 11) — which FIX requires and encode() emits — was
accepted. Validate tag 11 (present and numeric) on decode without storing it,
keeping decode symmetric with encode. Adds a rejection test and clarifies the
docs/fix_protocol.md note for tag 11.

make check 261/261; make asan 261/261.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
CodeScene's delta gate scored scripts/flamegraph.py at 7.81 (render_svg: Large
Method + Excess Arguments + complexity; fold_perf_script: Bumpy Road / nested
complexity). Restructure without changing output:

- fold_perf_script: move per-line state into a small _Folder helper so the
  parsing loop is a flat if/elif/else instead of a nested block.
- render_svg: bundle styling knobs into a FlameOptions dataclass (2 args, was
  7) and extract _append_chrome, _frame_svg, _truncate; geometry constants
  (_SIDE/_PAD_TOP/_PAD_BOTTOM) hoisted to module scope and a _Canvas dataclass
  carries derived geometry.

Emitted SVG/collapsed bytes are unchanged; tests/shell/test_flamegraph.sh 19/19.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
flamegraph.py is a provenance input; regenerate results/flamegraph.svg + .txt
from the clean tree (402 samples, Dirty inputs: no).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
CodeScene's delta gate scored src/protocol/fix.cpp at 8.02 (decode_new_order:
Complex Method / Complex Conditional / Overall Code Complexity). Restructure
without changing behavior:

- Extract map_side / map_ord_type / map_tif (the enum-code switches) and
  expect_msg_type (the tag-35 check) as small helpers.
- Add a FieldReader accumulator that reads required integer/coded fields and
  short-circuits on the first error, so decode_new_order and decode_cancel_order
  become a flat fluent chain plus a single error check instead of a long
  if-return ladder with three inline switches.

make check 261/261; make asan 261/261; FIX tests 19 cases / 140 assertions.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Clear the last two CodeScene flags on scripts/flamegraph.py:

- _clean_symbol: replace the balanced-paren dso scan (a deep nested loop) with a
  flat regex _DSO_RE. perf prints a space before the "(dso)" and dso strings
  never contain parens, so a non-nested " (...)$" match is exact and won't strip
  a C++ signature's own parentheses.
- _layout: drop the unused `total` parameter (5 args -> 4).

Output unchanged; tests/shell/test_flamegraph.sh 19/19.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Provenance input changed; regenerate from clean tree (416 samples, Dirty
inputs: no).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ene)

Clear the remaining CodeScene flags on src/protocol/fix.cpp (Code Duplication,
Complex Method, Complex Conditional):

- Extract a decode_typed<T> skeleton (validate envelope -> confirm MsgType ->
  fill body via FieldReader -> error check) so decode_new_order and
  decode_cancel_order collapse to just their field maps, removing the duplicated
  prologue/epilogue.
- Split parse_envelope into tokenize / check_envelope_shape /
  verify_length_and_checksum, each a small single-purpose function, and fold the
  8/9/10 ordering check into a named bool.

Behavior unchanged: make check 261/261, make asan 261/261, FIX tests 19 cases /
140 assertions.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Clear the last two CodeScene advisory flags on src/protocol/fix.cpp:

- Code Duplication: the three near-identical map_side/map_ord_type/map_tif
  switches are replaced by one generic FieldReader::coded(tag, out, table) that
  looks a code up in a small constexpr {code, enum} table; the decoder supplies
  the per-enum tables. No per-enum mapping duplication remains.
- Complex Conditional: expect_msg_type's 3-term `||` is split so each branch has
  a single operator.

make check 261/261; make asan 261/261; FIX tests 19 cases / 140 assertions.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…sweep

Bump the project version 0.2.0 -> 0.2.1 and record the release.

- CMakeLists.txt: project VERSION 0.2.1.
- CHANGELOG.md: new [0.2.1] section — FIX-like text protocol adapter (#29),
  `make flamegraph` + dependency-free renderer (#32), and the Codex
  resume-anchor / PMU-claim consistency sweep (#127/#128 follow-up); [Unreleased]
  reset.
- PROGRESS.md / HANDOFF.md: release and resume anchors brought to the v0.2.1
  released state; #29 and #32 marked done.

No code or benchmark artifacts change in this release PR. On squash-merge, tag
`v0.2.1` on the merge commit and publish the GitHub release. make check 261/261.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 22, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@div0rce, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 35 minutes and 51 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits.

🚦 How do rate limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 28302ade-0836-4eda-b15c-3a4134d16f10

📥 Commits

Reviewing files that changed from the base of the PR and between c07f350 and 3b3cd28.

📒 Files selected for processing (7)
  • AGENTS.md
  • CHANGELOG.md
  • CLAUDE.md
  • CMakeLists.txt
  • HANDOFF.md
  • PROGRESS.md
  • docs/release_readiness.md
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/v0.2.1-release

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

codescene-delta-analysis[bot]

This comment was marked as outdated.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d630fbdc55

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread PROGRESS.md
Comment on lines +30 to +31
- **Last completed docs sync:** v0.2.1 release prep (this PR): version bump + CHANGELOG `[0.2.1]`
and resume/release anchors brought current

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 canonical resume files with v0.2.1

This release bump says the resume/release anchors are current, but the first files a resuming agent is told to read, AGENTS.md and CLAUDE.md, still record only v0.2.0 as released (AGENTS.md:1260, CLAUDE.md:1204) and omit the #129/#130/#131 state. In a fresh session that follows the documented resume order, those stale anchors can reconstruct the wrong post-v0.2.0 state despite PROGRESS.md/HANDOFF.md saying v0.2.1, so the release commit should update the canonical memory files as well.

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: AGENTS.md and CLAUDE.md released-state anchors now record v0.2.1 and the #129/#130/#131 content, not just v0.2.0.

Comment thread PROGRESS.md
Comment on lines +38 to +40
- **Last action:** delivered the `v0.2.1` content as scoped PRs and prepared this version-bump
release. Two reprioritized backlog items — the FIX-like text protocol adapter (#29) and the perf
call-graph flamegraph (#32) — plus the Codex resume-anchor/PMU consistency sweep (#127/#128

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 Remove completed issues from backlog guidance

This block now marks #29/#32 as delivered for v0.2.1, but the same current-state section still instructs the next session that the "Low-signal backlog" and "Legacy backlog" include #32/#29 (PROGRESS.md:47, PROGRESS.md:55), and HANDOFF's priority list still repeats them as backlog. A resumed agent could spend time reopening already-closed work instead of the stated #94/#90 gates, so the release anchor needs to remove those completed issues from the remaining-work lists.

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: #29 and #32 removed from every backlog/priority list in PROGRESS.md and HANDOFF.md and marked as shipped in v0.2.1; the remaining-work guidance now points only to #94/#90.

Comment thread CMakeLists.txt
@@ -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.

div0rce and others added 8 commits June 21, 2026 22:13
The decision-log entry and bottom "Next action remains" block already
covered this follow-up, but the top `## Current state` bullets — the first
thing `/resume` reads — still presented the v0.2.0 release (PR #127) as the
"Last action". A resuming agent could therefore miss that this resume-anchor
/ PMU sync already happened and duplicate it.

Record the sync as the current "Last action" and "Last completed docs sync",
demoting the v0.2.0 release detail to a "Prior action" bullet. Docs-only.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Address five Codex review findings on the flamegraph driver:

1. Classify `zero-sized data` (perf script's no-sample report) as a perf
   limitation, matching scripts/perf_record.sh, so the documented
   QSL_PERF_ALLOW_PARTIAL=1 constrained-host path works instead of tripping
   the unexpected-failure exit.
2. Remove any prior results/flamegraph.svg when a partial run captures no
   folded stacks, so a constrained rerun cannot leave a previous host's SVG
   beside a .txt that says there is no sample report.
3. Accept perf's `(~N samples)` estimate marker (optional `~`), and base the
   minimum-sample gate on the authoritative folded sample total rather than
   perf record's self-described estimate. Report both counts.
4. Capture flamegraph.py --collapse-only's exit status instead of `|| true`;
   a renderer/parser failure now exits 4 (unmaskable) rather than being
   published as a constrained-environment artifact.
5. Derive the sampling-kind label/caveat from the selected event (software
   cpu-clock/task-clock vs hardware-PMU) so the artifact type, SVG comment,
   and text companion stay consistent for QSL_FLAMEGRAPH_EVENT=cycles etc.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Bare-metal Apple M2 (aarch64) Fedora Asahi, cpu-clock @ 4000Hz: 329 folded
samples / 159 stacks, classified `flamegraph (software cpu-clock sampling
hot-symbol profile)`, `Dirty inputs: no`. Source digest now covers the
hardened scripts/flamegraph.sh; the .txt reports both the folded total and
perf record's estimate.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…odex #131)

Two Codex review findings on the FIX adapter's parser strictness:

- check_envelope_shape now requires MsgType (35) as the first body field,
  immediately after BodyLength, so a non-standard header like 8/9/34/35/.../10
  is rejected as Malformed instead of decoding via a first-match scan.
- tokenize now rejects any repeated tag. This adapter maps each business tag
  exactly once (no repeating groups), so a duplicate such as `55=2` then
  `55=999` is an ambiguous/malformed frame rather than a silently-ignored
  later value.

Adds a deterministic rejection test for each. (The earlier ClOrdID-required
finding was already resolved by 3e4c8e3 and is covered by an existing test.)
make check 263/263, make asan 263/263.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The decision log marks #29 (FIX adapter) closed by this PR, but the
current-state / resume anchors in PROGRESS.md and HANDOFF.md still listed it
as open backlog, so /resume could send the next session to re-implement work
this PR just added. Remove #29 from those backlog lists and note it as
delivered in this PR. (#32 stays listed here; the v0.2.1 release PR removes it
as part of its release sweep.)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Propagate the #129/#130/#131 Codex fixes up the stack and resolve the v0.2.1
release-anchor Codex findings (#133):

- Reconcile the PROGRESS/HANDOFF backlog conflict to the release state: #29
  (FIX adapter) and #32 (flamegraph) are both done, shipped in v0.2.1; no open
  legacy backlog remains.
- Sync AGENTS.md and CLAUDE.md released-state anchors from v0.2.0 to v0.2.1,
  recording the #129/#130/#131 content (the canonical files a resume reads).
- Refresh docs/release_readiness.md for v0.2.1: 263/263 tests, the FIX-adapter
  and flamegraph coverage, the bare-metal flamegraph artifact, and the next
  release re-pointed to v0.2.1.
- Update the v0.2.1 current-state test count 261 -> 263 (the two new FIX
  rejection tests) and add a decision-log entry for this second Codex round.

make check / make asan 263/263 on the bare-metal Apple M2 Fedora Asahi host.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

codescene-delta-analysis[bot]

This comment was marked as outdated.

div0rce and others added 2 commits June 22, 2026 12:28
… profile (Codex #129)

The constraints bullet labeled all perf artifacts as partial hardware PMU
evidence, but only results/perf_stat_linux.txt carries real PMU counters
(cycles/instructions/branches/branch-misses). results/perf_report_linux.txt
is a software cpu-clock sampling profile, not PMU evidence. Scope the claim
to the perf-stat artifact and call out perf-record separately, identically in
AGENTS.md and CLAUDE.md so the two memories stay in sync.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
codescene-delta-analysis[bot]

This comment was marked as outdated.

div0rce and others added 3 commits June 22, 2026 12:40
The flamegraph artifact, generator, provenance companion, and docs already
existed but no page actually displayed the SVG — it was only referenced by
filename. Embed the rendered results/flamegraph.svg as a visible image under
the Benchmarks section, with a caption that classifies it honestly as a
software cpu-clock sampling hot-symbol profile (not PMU evidence), names the
hot frames, and links the provenance .txt and docs/perf_analysis.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
codescene-delta-analysis[bot]

This comment was marked as outdated.

@div0rce div0rce changed the base branch from feat/fix-text-protocol-adapter to main June 22, 2026 16:44
# Conflicts:
#	AGENTS.md
#	CLAUDE.md
#	HANDOFF.md
#	PROGRESS.md
@div0rce div0rce merged commit 31210c2 into main Jun 22, 2026
7 of 8 checks passed
@div0rce div0rce deleted the docs/v0.2.1-release branch June 22, 2026 16:55

@codescene-delta-analysis codescene-delta-analysis Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Gates Passed
6 Quality Gates Passed

See analysis details in CodeScene

Quality Gate Profile: Pay Down Tech Debt
Install CodeScene MCP: safeguard and uplift AI-generated code. Catch issues early with our IDE extension and CLI tool.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3b3cd28b0b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread HANDOFF.md
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 👍 / 👎.

Comment thread CMakeLists.txt
@@ -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 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 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant