Skip to content

Replace bundled fmt with std::format - #8368

Open
Amaury Chamayou (achamayou) wants to merge 6 commits into
mainfrom
achamayou-standard-format-migration
Open

Replace bundled fmt with std::format#8368
Amaury Chamayou (achamayou) wants to merge 6 commits into
mainfrom
achamayou-standard-format-migration

Conversation

@achamayou

@achamayou Amaury Chamayou (achamayou) commented Sep 13, 2026

Copy link
Copy Markdown
Member

Replace bundled fmt 12.1.0 with std::format and std::format_to, removing the vendored headers and 15,824 net C/C++ lines.

Compatibility

  • Keep the C++23 requirement; require core and chrono formatting support (libstdc++ 13+). C++23 range formatting and std::print are not required.
  • Retain custom formatters through legal std::formatter specializations. Replace blanket enum formatting with std::to_underlying and convert paths, atomics and pointers explicitly.
  • Add a small borrowed ccf::ds::join adapter supporting per-element format specifications. Format standard-only byte containers explicitly rather than specializing std::formatter for them.
  • Replace fmt's calendar helpers with numeric field formatting and checked UTC conversion, preserving precision, wide dates and pre-epoch truncation.
  • Use std::vformat for nonliteral format strings and standard streams for test utilities.

Application impact

Exported fmt headers and ccf/ds/enum_formatter.h are removed. See the C++ formatting migration guide.

Logging macros retain their names and lazy argument evaluation. Some optional diagnostics now show the contained value or a missing-value marker instead of optional(...). JWT issuer constraints retain that wrapper using JSON string escaping.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Render JWT DER byte vectors explicitly for libstdc++ 13. Annotate clang-tidy 18 false positives on permitted formatter specializations and intentional borrowed ranges. Cover byte-list output and temporary non-const views.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Do not rely on formatting headers to transitively declare uint8_t; libstdc++ 13 does not supply it through <format>.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Declare std::to_underlying through its owning standard header at each newly introduced call site, rather than relying on libstdc++ 15 transitive includes. This fixes the libstdc++ 13 HTTP benchmark build failure.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@github-actions

github-actions Bot commented Sep 13, 2026

Copy link
Copy Markdown
Description

Comparing 2 available runs from this branch (#8368) against the trend of the last 30 main runs.

Each chart plots every benchmark as an axis, with values normalized so 100 is the EWMA baseline of recent main runs, using a 7-run half-life. The 2 orange branch lines run from the oldest (faintest) to the latest (darkest and thickest); the darker blue band is the main baseline +/- 1 std dev and the lighter blue band around it is +/- 2 std dev.

Axis labels show the latest branch value and its difference from the main EWMA baseline, where 0% is on the baseline. They are coloured green where the latest run improves on the baseline, red where it regresses, and grey where the difference is within one std dev of the baseline (within noise). Higher is better for throughput and rate, lower for latency and memory.

A benchmark which does not exist on main yet has no baseline of its own, so its earliest available run from this branch is used as its reference and its band is measured across this branch's runs. Its axis is normalized, scaled and coloured like any other, but the comparison is against this branch rather than against main.

Throughput (tx/s)

---
config:
  radar:
    width: 620
    height: 620
    marginTop: 90
    marginRight: 220
    marginBottom: 60
    marginLeft: 220
    axisLabelFactor: 1.12
    curveTension: 0.08
  theme: base
  themeCSS: |
    .radarCurve-0{fill:color-mix(in srgb, #62B5E5 13%, var(--color-canvas-default,var(--bgColor-default,#fff)))!important;fill-opacity:1!important;stroke:none!important;stroke-width:0!important}
    .radarCurve-1{fill:color-mix(in srgb, #62B5E5 40%, var(--color-canvas-default,var(--bgColor-default,#fff)))!important;fill-opacity:1!important;stroke:none!important;stroke-width:0!important}
    .radarCurve-2{fill:color-mix(in srgb, #62B5E5 13%, var(--color-canvas-default,var(--bgColor-default,#fff)))!important;fill-opacity:1!important;stroke:none!important;stroke-width:0!important}
    .radarCurve-3{fill:var(--color-canvas-default,var(--bgColor-default,#fff))!important;fill-opacity:1!important;stroke:none!important;stroke-width:0!important}
    .radarAxisLabel,.radarTitle{fill:var(--color-fg-default,var(--fgColor-default,#111827))!important;color:var(--color-fg-default,var(--fgColor-default,#111827))!important}
    .radarCurve-4{stroke-width:1.5px!important;stroke-opacity:0.50!important}
    .radarCurve-5{stroke-width:1.75px!important;stroke-opacity:1.00!important}
    .radarAxisLabel:nth-of-type(1){fill:#808A94!important}
    .radarAxisLabel:nth-of-type(2){fill:#808A94!important}
    .radarAxisLabel:nth-of-type(3){fill:#2DA44E!important}
    .radarAxisLabel:nth-of-type(4){fill:#808A94!important}
    .radarAxisLabel:nth-of-type(5){fill:#2DA44E!important}
    .radarAxisLabel:nth-of-type(6){fill:#808A94!important}
    .radarAxisLabel:nth-of-type(7){fill:#808A94!important}
  themeVariables:
    cScale0: "#62B5E5"
    cScale1: "#62B5E5"
    cScale2: "#62B5E5"
    cScale3: "#62B5E5"
    cScale4: "#F97316"
    cScale5: "#F97316"
    radar:
      axisColor: "#9CA3AF"
      graticuleColor: "#E5E7EB"
      graticuleOpacity: 0
      axisStrokeWidth: 1
      curveOpacity: 0
---
radar-beta
  axis b0["Basic Blocking 100ms: 3,054 tx/s ▬ 0%"]
  axis b1["Basic Blocking 20ms: 15,122 tx/s ▬ 0%"]
  axis b2["Basic Blocking 2ms: 32,971 tx/s ▲ 3%"]
  axis b3["Basic JS: 9,183 tx/s ▬ 0%"]
  axis b4["Historical Queries: 625,378 tx/s ▲ 5%"]
  axis b5["L…g Certificate Blocking: 24,576 tx/s ▬ 0%"]
  axis b6["Logging JWT Blocking: 15,074 tx/s ▬ 0%"]
  curve stddev2_high["main EWMA + 2 std dev"]{100.38, 100.24, 104.64, 113.50, 107.07, 104.93, 100.83}
  curve stddev1_high["main EWMA + 1 std dev"]{100.19, 100.12, 102.32, 106.75, 103.53, 102.47, 100.41}
  curve stddev1_low["main EWMA - 1 std dev"]{99.81, 99.88, 97.68, 93.25, 96.47, 97.53, 99.59}
  curve stddev2_low["main EWMA - 2 std dev"]{99.62, 99.76, 95.36, 86.50, 92.93, 95.07, 99.17}
  curve branch_0["#8368 (1 run earlier)"]{100.25, 99.80, 99.87, 100.58, 101.43, 101.23, 100.06}
  curve branch_1["#8368"]{99.92, 99.70, 102.57, 99.62, 104.99, 99.78, 100.22}
  graticule polygon
  max 123
  min 77
  ticks 0
  showLegend false
Loading

Latency (ms)

---
config:
  radar:
    width: 620
    height: 620
    marginTop: 90
    marginRight: 220
    marginBottom: 60
    marginLeft: 220
    axisLabelFactor: 1.12
    curveTension: 0.08
  theme: base
  themeCSS: |
    .radarCurve-0{fill:color-mix(in srgb, #62B5E5 13%, var(--color-canvas-default,var(--bgColor-default,#fff)))!important;fill-opacity:1!important;stroke:none!important;stroke-width:0!important}
    .radarCurve-1{fill:color-mix(in srgb, #62B5E5 40%, var(--color-canvas-default,var(--bgColor-default,#fff)))!important;fill-opacity:1!important;stroke:none!important;stroke-width:0!important}
    .radarCurve-2{fill:color-mix(in srgb, #62B5E5 13%, var(--color-canvas-default,var(--bgColor-default,#fff)))!important;fill-opacity:1!important;stroke:none!important;stroke-width:0!important}
    .radarCurve-3{fill:var(--color-canvas-default,var(--bgColor-default,#fff))!important;fill-opacity:1!important;stroke:none!important;stroke-width:0!important}
    .radarAxisLabel,.radarTitle{fill:var(--color-fg-default,var(--fgColor-default,#111827))!important;color:var(--color-fg-default,var(--fgColor-default,#111827))!important}
    .radarCurve-4{stroke-width:1.5px!important;stroke-opacity:0.50!important}
    .radarCurve-5{stroke-width:1.75px!important;stroke-opacity:1.00!important}
    .radarAxisLabel:nth-of-type(1){fill:#808A94!important}
    .radarAxisLabel:nth-of-type(2){fill:#808A94!important}
    .radarAxisLabel:nth-of-type(3){fill:#808A94!important}
    .radarAxisLabel:nth-of-type(4){fill:#808A94!important}
    .radarAxisLabel:nth-of-type(5){fill:#2DA44E!important}
    .radarAxisLabel:nth-of-type(6){fill:#808A94!important}
    .radarAxisLabel:nth-of-type(7){fill:#808A94!important}
  themeVariables:
    cScale0: "#62B5E5"
    cScale1: "#62B5E5"
    cScale2: "#62B5E5"
    cScale3: "#62B5E5"
    cScale4: "#F97316"
    cScale5: "#F97316"
    radar:
      axisColor: "#9CA3AF"
      graticuleColor: "#E5E7EB"
      graticuleOpacity: 0
      axisStrokeWidth: 1
      curveOpacity: 0
---
radar-beta
  axis b0["Basic Blocking 100ms: 99 ms ▬ 0%"]
  axis b1["Basic Blocking 20ms: 19 ms ▬ 0%"]
  axis b2["Basic Blocking 2ms: 9 ms ▬ 0%"]
  axis b3["Basic JS: 32 ms ▬ -1%"]
  axis b4["Historical Queries: 49 ms ▼ 7%"]
  axis b5["Logging Certificate Blocking: 21 ms ▬ -2%"]
  axis b6["Logging JWT Blocking: 20 ms ▬ 0%"]
  curve stddev2_high["main EWMA + 2 std dev"]{100.00, 100.00, 100.00, 116.22, 108.18, 106.26, 101.80}
  curve stddev1_high["main EWMA + 1 std dev"]{100.00, 100.00, 100.00, 108.11, 104.09, 103.13, 100.90}
  curve stddev1_low["main EWMA - 1 std dev"]{100.00, 100.00, 100.00, 91.89, 95.91, 96.87, 99.10}
  curve stddev2_low["main EWMA - 2 std dev"]{100.00, 100.00, 100.00, 83.78, 91.82, 93.74, 98.20}
  curve branch_0["#8368 (1 run earlier)"]{100.00, 100.00, 100.00, 99.48, 94.94, 98.12, 100.06}
  curve branch_1["#8368"]{100.00, 100.00, 100.00, 99.48, 93.05, 98.12, 100.06}
  graticule polygon
  max 128
  min 72
  ticks 0
  showLegend false
Loading

Memory (bytes)

---
config:
  radar:
    width: 620
    height: 620
    marginTop: 90
    marginRight: 220
    marginBottom: 60
    marginLeft: 220
    axisLabelFactor: 1.12
    curveTension: 0.08
  theme: base
  themeCSS: |
    .radarCurve-0{fill:color-mix(in srgb, #62B5E5 13%, var(--color-canvas-default,var(--bgColor-default,#fff)))!important;fill-opacity:1!important;stroke:none!important;stroke-width:0!important}
    .radarCurve-1{fill:color-mix(in srgb, #62B5E5 40%, var(--color-canvas-default,var(--bgColor-default,#fff)))!important;fill-opacity:1!important;stroke:none!important;stroke-width:0!important}
    .radarCurve-2{fill:color-mix(in srgb, #62B5E5 13%, var(--color-canvas-default,var(--bgColor-default,#fff)))!important;fill-opacity:1!important;stroke:none!important;stroke-width:0!important}
    .radarCurve-3{fill:var(--color-canvas-default,var(--bgColor-default,#fff))!important;fill-opacity:1!important;stroke:none!important;stroke-width:0!important}
    .radarAxisLabel,.radarTitle{fill:var(--color-fg-default,var(--fgColor-default,#111827))!important;color:var(--color-fg-default,var(--fgColor-default,#111827))!important}
    .radarCurve-4{stroke-width:1.5px!important;stroke-opacity:0.50!important}
    .radarCurve-5{stroke-width:1.75px!important;stroke-opacity:1.00!important}
    .radarAxisLabel:nth-of-type(1){fill:#808A94!important}
    .radarAxisLabel:nth-of-type(2){fill:#808A94!important}
    .radarAxisLabel:nth-of-type(3){fill:#E5484D!important}
    .radarAxisLabel:nth-of-type(4){fill:#808A94!important}
    .radarAxisLabel:nth-of-type(5){fill:#2DA44E!important}
    .radarAxisLabel:nth-of-type(6){fill:#2DA44E!important}
    .radarAxisLabel:nth-of-type(7){fill:#808A94!important}
  themeVariables:
    cScale0: "#62B5E5"
    cScale1: "#62B5E5"
    cScale2: "#62B5E5"
    cScale3: "#62B5E5"
    cScale4: "#F97316"
    cScale5: "#F97316"
    radar:
      axisColor: "#9CA3AF"
      graticuleColor: "#E5E7EB"
      graticuleOpacity: 0
      axisStrokeWidth: 1
      curveOpacity: 0
---
radar-beta
  axis b0["Basic Blocking 100ms: 90.9 MiB ▬ 0%"]
  axis b1["Basic Blocking 20ms: 90.8 MiB ▬ 0%"]
  axis b2["Basic Blocking 2ms: 95.1 MiB ▲ 1%"]
  axis b3["Basic JS: 94.4 MiB ▬ +1%"]
  axis b4["Historical Queries: 150 MiB ▼ 1%"]
  axis b5["Logging Certificate Blocking: 118 MiB ▼ 1%"]
  axis b6["Logging JWT Blocking: 91.7 MiB ▬ 0%"]
  curve stddev2_high["main EWMA + 2 std dev"]{102.10, 101.72, 101.80, 101.93, 101.00, 101.26, 101.84}
  curve stddev1_high["main EWMA + 1 std dev"]{101.05, 100.86, 100.90, 100.97, 100.50, 100.63, 100.92}
  curve stddev1_low["main EWMA - 1 std dev"]{98.95, 99.14, 99.10, 99.03, 99.50, 99.37, 99.08}
  curve stddev2_low["main EWMA - 2 std dev"]{97.90, 98.28, 98.20, 98.07, 99.00, 98.74, 98.16}
  curve branch_0["#8368 (1 run earlier)"]{99.14, 99.65, 99.78, 99.78, 99.72, 99.19, 99.28}
  curve branch_1["#8368"]{99.86, 100.00, 101.40, 100.52, 99.11, 99.21, 100.26}
  graticule polygon
  max 107
  min 93
  ticks 0
  showLegend false
Loading

Rate (ops/s)

---
config:
  radar:
    width: 620
    height: 620
    marginTop: 90
    marginRight: 220
    marginBottom: 60
    marginLeft: 220
    axisLabelFactor: 1.12
    curveTension: 0.08
  theme: base
  themeCSS: |
    .radarCurve-0{fill:color-mix(in srgb, #62B5E5 13%, var(--color-canvas-default,var(--bgColor-default,#fff)))!important;fill-opacity:1!important;stroke:none!important;stroke-width:0!important}
    .radarCurve-1{fill:color-mix(in srgb, #62B5E5 40%, var(--color-canvas-default,var(--bgColor-default,#fff)))!important;fill-opacity:1!important;stroke:none!important;stroke-width:0!important}
    .radarCurve-2{fill:color-mix(in srgb, #62B5E5 13%, var(--color-canvas-default,var(--bgColor-default,#fff)))!important;fill-opacity:1!important;stroke:none!important;stroke-width:0!important}
    .radarCurve-3{fill:var(--color-canvas-default,var(--bgColor-default,#fff))!important;fill-opacity:1!important;stroke:none!important;stroke-width:0!important}
    .radarAxisLabel,.radarTitle{fill:var(--color-fg-default,var(--fgColor-default,#111827))!important;color:var(--color-fg-default,var(--fgColor-default,#111827))!important}
    .radarCurve-4{stroke-width:1.5px!important;stroke-opacity:0.50!important}
    .radarCurve-5{stroke-width:1.75px!important;stroke-opacity:1.00!important}
    .radarAxisLabel:nth-of-type(1){fill:#2DA44E!important}
    .radarAxisLabel:nth-of-type(2){fill:#808A94!important}
    .radarAxisLabel:nth-of-type(3){fill:#808A94!important}
    .radarAxisLabel:nth-of-type(4){fill:#E5484D!important}
    .radarAxisLabel:nth-of-type(5){fill:#808A94!important}
    .radarAxisLabel:nth-of-type(6){fill:#808A94!important}
  themeVariables:
    cScale0: "#62B5E5"
    cScale1: "#62B5E5"
    cScale2: "#62B5E5"
    cScale3: "#62B5E5"
    cScale4: "#F97316"
    cScale5: "#F97316"
    radar:
      axisColor: "#9CA3AF"
      graticuleColor: "#E5E7EB"
      graticuleOpacity: 0
      axisStrokeWidth: 1
      curveOpacity: 0
---
radar-beta
  axis b0["CHAMP get: 38,410,323 ops/s ▲ 1%"]
  axis b1["CHAMP put: 5,544,636 ops/s ▬ +1%"]
  axis b2["KV deserialisation: 1,628,930 ops/s ▬ 0%"]
  axis b3["KV serialisation: 1,362,398 ops/s ▼ 1%"]
  axis b4["KV s…t deserialisation: 4,237 ops/s ▬ +1%"]
  axis b5["KV snapshot serialisation: 4,371 ops/s ▬ -1%"]
  curve stddev2_high["main EWMA + 2 std dev"]{101.27, 101.55, 102.33, 102.02, 101.69, 108.01}
  curve stddev1_high["main EWMA + 1 std dev"]{100.63, 100.78, 101.17, 101.01, 100.85, 104.00}
  curve stddev1_low["main EWMA - 1 std dev"]{99.37, 99.22, 98.83, 98.99, 99.15, 96.00}
  curve stddev2_low["main EWMA - 2 std dev"]{98.73, 98.45, 97.67, 97.98, 98.31, 91.99}
  curve branch_0["#8368 (1 run earlier)"]{100.25, 99.36, 100.91, 101.05, 100.11, 100.59}
  curve branch_1["#8368"]{100.87, 100.67, 99.92, 98.58, 100.60, 98.58}
  graticule polygon
  max 114
  min 86
  ticks 0
  showLegend false
Loading

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🔵 Needs a closer look

The migration spans 259 files and public, consensus, cryptographic, logging, and serialization paths, so final human review is warranted despite successful CI and no confirmed defect.

Pull request overview

Replaces bundled {fmt} with C++23 std::format across CCF, reducing vendored code while preserving formatting behavior and public customization support.

Changes:

  • Removes vendored {fmt} headers, dependency metadata, and generic enum formatter.
  • Migrates formatting calls and custom formatters; adds ccf::ds::join.
  • Adds migration documentation and regression tests for joins, timestamps, headers, and lazy logging.

Custom instructions used

  • .github/copilot-instructions.md
  • .github/instructions/reviewing.instructions.md
  • .github/instructions/changelog.instructions.md
File summaries
File Description
3rdparty/exported/fmt/args.h Removes vendored fmt header.
3rdparty/exported/fmt/base.h Removes vendored fmt header.
3rdparty/exported/fmt/chrono.h Removes vendored fmt header.
3rdparty/exported/fmt/color.h Removes vendored fmt header.
3rdparty/exported/fmt/compile.h Removes vendored fmt header.
3rdparty/exported/fmt/core.h Removes vendored fmt header.
3rdparty/exported/fmt/format-inl.h Removes vendored fmt header.
3rdparty/exported/fmt/format.h Removes vendored fmt header.
3rdparty/exported/fmt/os.h Removes vendored fmt header.
3rdparty/exported/fmt/ostream.h Removes vendored fmt header.
3rdparty/exported/fmt/printf.h Removes vendored fmt header.
3rdparty/exported/fmt/ranges.h Removes vendored fmt header.
3rdparty/exported/fmt/std.h Removes vendored fmt header.
3rdparty/exported/fmt/xchar.h Removes vendored fmt header.
CHANGELOG.md Records the formatting migration.
cgmanifest.json Removes fmt dependency metadata.
doc/build_apps/logging.rst Documents application migration.
include/ccf/byte_vector.h Migrates byte-vector formatting.
include/ccf/crypto/curve.h Migrates curve diagnostics.
include/ccf/crypto/jwk.h Migrates JWK diagnostics.
include/ccf/crypto/openssl/openssl_wrappers.h Migrates OpenSSL errors.
include/ccf/crypto/san.h Migrates SAN formatting.
include/ccf/crypto/sha256_hash.h Migrates hash formatting.
include/ccf/ds/contiguous_set.h Migrates set formatter.
include/ccf/ds/enum_formatter.h Removes blanket enum formatter.
include/ccf/ds/hex.h Uses standard hex formatting.
include/ccf/ds/join.h Adds borrowed join adapter.
include/ccf/ds/json.h Migrates JSON diagnostics.
include/ccf/ds/json_schema.h Migrates schema-name formatting.
include/ccf/ds/logger.h Migrates logger formatting.
include/ccf/ds/nonstd.h Removes fmt dependency.
include/ccf/ds/openapi.h Migrates OpenAPI formatting.
include/ccf/ds/unit_strings.h Migrates unit parsing and formatter.
include/ccf/ds/x509_time_fmt.h Replaces fmt calendar helpers.
include/ccf/endpoint.h Migrates endpoint formatter.
include/ccf/endpoint_registry.h Migrates path diagnostics.
include/ccf/endpoints/authentication/js.h Migrates auth diagnostics.
include/ccf/entity_id.h Migrates entity formatting.
include/ccf/http_accept.h Migrates Accept errors.
include/ccf/http_etag.h Removes fmt dependency.
include/ccf/http_query.h Migrates query errors.
include/ccf/indexing/strategies/seqnos_by_key_in_memory.h Migrates range errors.
include/ccf/js/core/wrapped_property_enum.h Migrates JS errors.
include/ccf/js/registry.h Migrates KV map names.
include/ccf/kv/serialisers/blit_serialiser.h Migrates size errors.
include/ccf/node_context.h Migrates subsystem errors.
include/ccf/node_startup_state.h Adds standard state formatter.
include/ccf/pal/attestation_sev_snp.h Migrates SNP diagnostics.
include/ccf/pal/attestation_sev_snp_endorsements.h Migrates endpoint formatting.
include/ccf/pal/measurement.h Migrates measurement diagnostics.
include/ccf/pal/report_data.h Migrates report-data diagnostics.
include/ccf/pal/sev_snp_cpuid.h Migrates CPUID formatting.
include/ccf/pal/snp_ioctl6.h Migrates ioctl diagnostics.
include/ccf/pal/uvm_endorsements.h Migrates endorsement strings.
include/ccf/rest_verb.h Migrates REST verb errors.
include/ccf/service/node_info.h Migrates node-status formatter.
include/ccf/service/node_info_network.h Migrates network formatting.
include/ccf/service/tables/gov.h Migrates governance formatter.
include/ccf/service/tables/proposals.h Migrates proposal formatter.
include/ccf/service/tables/self_healing_open.h Removes enum formatter include.
include/ccf/threading/thread_ids.h Removes fmt includes.
include/ccf/tx_id.h Migrates TxID errors.
include/ccf/tx_status.h Migrates status errors.
samples/apps/basic/basic.cpp Removes fmt includes.
samples/apps/common/default_on_commit.h Migrates commit errors.
samples/apps/logging/logging.cpp Migrates sample formatting.
samples/apps/nobuiltins/nobuiltins.cpp Migrates timestamp output.
samples/apps/programmability/programmability.cpp Migrates sample diagnostics.
src/common/cli_helper.h Migrates CLI validation errors.
src/consensus/aft/impl/state.h Migrates view logging.
src/consensus/aft/raft.h Migrates Raft diagnostics.
src/consensus/aft/raft_types.h Migrates Raft formatter.
src/consensus/aft/test/committable_suffix.cpp Migrates test output.
src/consensus/aft/test/driver.cpp Migrates driver errors.
src/consensus/aft/test/driver.h Migrates driver formatting.
src/consensus/aft/test/test_common.h Migrates ledger test data.
src/consensus/ledger_enclave.h Migrates ledger errors.
src/crypto/openssl/base64.h Migrates base64 errors.
src/crypto/openssl/cose_verifier.cpp Migrates COSE errors.
src/crypto/openssl/ec_key_pair.cpp Migrates EC formatting.
src/crypto/openssl/ec_public_key.cpp Migrates EC diagnostics.
src/crypto/openssl/eddsa_public_key.cpp Migrates EdDSA diagnostics.
src/crypto/openssl/hash.cpp Migrates digest errors.
src/crypto/openssl/hash.h Removes fmt includes.
src/crypto/openssl/public_key.h Migrates key errors.
src/crypto/openssl/rsa_key_pair.cpp Migrates RSA errors.
src/crypto/openssl/rsa_public_key.cpp Migrates RSA diagnostics.
src/crypto/openssl/symmetric_key.cpp Migrates key-size errors.
src/crypto/openssl/verifier.cpp Migrates verifier errors.
src/crypto/sha256_hash.cpp Migrates hash diagnostics.
src/crypto/sharing.h Migrates share formatting.
src/crypto/symmetric_key.cpp Migrates IV errors.
src/crypto/test/crypto.cpp Migrates certificate tests.
src/crypto/test/secret_sharing.cpp Migrates test output.
src/ds/ccf_assert.h Migrates formatted assertions.
src/ds/files.h Migrates filesystem errors.
src/ds/messaging.h Migrates message names.
src/ds/non_blocking.h Migrates buffer errors.
src/ds/oversized.h Migrates oversized-message errors.
src/ds/ring_buffer.h Migrates ring-buffer errors.
src/ds/ring_buffer_types.h Migrates wrapper errors.
src/ds/serialized.h Migrates serialization diagnostics.
src/ds/state_machine.h Migrates state errors.
src/ds/std_formatters.h Removes fmt container formatters.
src/ds/test/logger.cpp Adds formatting regression tests.
src/ds/test/map_test.cpp Removes obsolete formatter include.
src/ds/test/nonstd.cpp Removes fmt includes.
src/ds/test/openapi.cpp Migrates OpenAPI test formatting.
src/ds/test/public_header_helpers.cpp Tests public formatting helpers.
src/ds/test/state_machine.cpp Migrates test formatter.
src/ds/test/unit_strings.cpp Tests standard formatting.
src/ds/work_beacon.h Removes fmt includes.
src/enclave/enclave.h Converts enum logging.
src/enclave/http2_session.h Migrates HTTP/2 errors.
src/enclave/http_rpc_context.h Migrates request formatting.
src/enclave/http_session.h Migrates HTTP errors.
src/enclave/rpc_sessions.h Migrates session errors.
src/enclave/session.h Migrates session names.
src/enclave/tls_session.h Migrates TLS diagnostics.
src/endpoints/authentication/all_of_auth.cpp Migrates policy errors.
src/endpoints/authentication/cert_auth.cpp Migrates certificate diagnostics.
src/endpoints/authentication/cose_auth.cpp Migrates COSE diagnostics.
src/endpoints/authentication/jwt_auth.cpp Migrates JWT diagnostics.
src/endpoints/common_endpoint_registry.cpp Migrates endpoint formatting.
src/endpoints/endpoint.cpp Migrates endpoint descriptions.
src/endpoints/endpoint_registry.cpp Migrates registry diagnostics.
src/endpoints/endpoint_utils.cpp Migrates utility formatting.
src/endpoints/json_handler.cpp Migrates JSON handler errors.
src/host/files_cleanup_timer.h Migrates cleanup diagnostics.
src/host/json_schema.h Migrates schema errors.
src/host/ledger.h Migrates ledger formatting.
src/host/ledger_filenames.h Migrates filename errors.
src/host/lfs_file_handler.h Migrates LFS diagnostics.
src/host/node_connections.h Converts message enums.
src/host/rpc_connections.h Migrates connection errors.
src/host/run.cpp Migrates host formatting.
src/host/socket.h Migrates socket addresses.
src/host/tcp.h Migrates TCP diagnostics.
src/host/test/env.cpp Migrates environment tests.
src/host/test/files_cleanup_test.cpp Migrates cleanup tests.
src/host/test/ledger.cpp Migrates ledger tests.
src/host/test/ledger_bench.cpp Migrates benchmark paths.
src/host/time_bound_logger.h Migrates duration output.
src/host/udp.h Migrates UDP diagnostics.
src/http/http2_callbacks.h Migrates HTTP/2 callbacks.
src/http/http2_parser.h Migrates HTTP/2 errors.
src/http/http2_utils.h Migrates trailer joining.
src/http/http_builder.h Migrates HTTP serialization.
src/http/http_jwt.h Migrates JWT formatting.
src/http/http_parser.h Migrates parser diagnostics.
src/http/test/http_bench.cpp Removes obsolete formatter include.
src/http/test/http_etag_test.cpp Removes fmt includes.
src/http/test/http_test.cpp Migrates HTTP tests.
src/http_client/curl.h Migrates curl diagnostics.
src/http_client/test/curl_test.cpp Migrates curl tests.
src/indexing/enclave_lfs_access.h Migrates LFS state diagnostics.
src/indexing/indexer.h Migrates index ordering errors.
src/indexing/strategies/seqnos_by_key_bucketed.cpp Migrates bucket formatting.
src/indexing/strategies/visit_each_entry_in_map.cpp Migrates strategy names.
src/indexing/test/indexing.cpp Migrates indexing test data.
src/js/core/context.cpp Migrates JS context errors.
src/js/core/runtime.cpp Migrates runtime errors.
src/js/extensions/ccf/gov.cpp Migrates governance JS errors.
src/js/extensions/ccf/gov_effects.cpp Migrates bytecode errors.
src/js/extensions/ccf/request.cpp Migrates request formatting.
src/js/modules/kv_bytecode_module_loader.h Migrates bytecode diagnostics.
src/js/modules/kv_module_loader.h Migrates module errors.
src/js/permissions_checks.h Migrates permission errors.
src/js/registry.cpp Migrates JS registry formatting.
src/js/test/js.cpp Migrates JS tests.
src/kv/generic_serialise_wrapper.h Migrates serialization errors.
src/kv/kv_types.h Migrates KV formatters.
src/kv/ledger_chunker.h Migrates chunk errors.
src/kv/raw_serialise.h Migrates raw serialization errors.
src/kv/serialised_entry_format.h Migrates entry-size errors.
src/kv/store.h Migrates store diagnostics.
src/kv/test/kv_bench.cpp Migrates KV benchmarks.
src/kv/test/kv_contention.cpp Migrates contention tests.
src/kv/test/kv_serialisation.cpp Migrates serialization tests.
src/kv/test/kv_test.cpp Migrates KV tests.
src/kv/tx.cpp Migrates transaction errors.
src/node/channels.h Migrates channel formatter.
src/node/commit_callback_subsystem.h Migrates callback errors.
src/node/cose_common.h Migrates COSE diagnostics.
src/node/encryptor.h Migrates IV errors.
src/node/gov/api_version.h Migrates API-version errors.
src/node/gov/handlers/acks.h Migrates ACK errors.
src/node/gov/handlers/helpers.h Migrates governance helpers.
src/node/gov/handlers/proposals.h Migrates proposal diagnostics.
src/node/gov/handlers/recovery.h Migrates recovery messages.
src/node/gov/handlers/service_state.h Migrates state errors.
src/node/gov/handlers/transactions.h Migrates transaction errors.
src/node/historical_queries.h Migrates historical-query formatting.
src/node/historical_queries_adapter.cpp Migrates adapter diagnostics.
src/node/historical_queries_utils.cpp Migrates historical errors.
src/node/history.h Migrates history diagnostics.
src/node/hooks.h Migrates hook errors.
src/node/js_policy.h Migrates policy diagnostics.
src/node/jwt_key_auto_refresh.h Migrates refresh diagnostics.
src/node/ledger_secrets.h Migrates secret errors.
src/node/local_sealing.cpp Removes fmt include.
src/node/node_inbound_message.h Migrates message errors.
src/node/node_state.h Migrates node diagnostics.
src/node/node_to_node.h Removes fmt includes.
src/node/quote.cpp Migrates quote diagnostics.
src/node/quote_endorsements_client.h Migrates endorsement diagnostics.
src/node/receipt.cpp Migrates receipt errors.
src/node/recovery_decision_protocol.cpp Migrates recovery diagnostics.
src/node/recovery_snapshot_ledger.h Migrates recovery-ledger errors.
src/node/retired_nodes_cleanup.h Migrates cleanup request formatting.
src/node/rpc/custom_protocol_subsystem.h Migrates protocol errors.
src/node/rpc/file_serving_handlers.h Migrates file-serving diagnostics.
src/node/rpc/forwarder.h Migrates forwarding formatting.
src/node/rpc/frontend.h Migrates frontend diagnostics.
src/node/rpc/jwt_management.h Migrates JWT key diagnostics.
src/node/rpc/network_identity_accessors_impl.h Migrates identity errors.
src/node/rpc/network_identity_chain_helpers.h Migrates chain diagnostics.
src/node/rpc/network_identity_subsystem.h Migrates identity formatting.
src/node/rpc/node_frontend.h Migrates node frontend output.
src/node/rpc/node_frontend_utils.h Migrates quote errors.
src/node/rpc/self_healing_open_handlers.h Migrates recovery errors.
src/node/rpc/test/frontend_test.cpp Migrates frontend tests.
src/node/rpc/test/frontend_test_infra.h Migrates request helper.
src/node/share_manager.h Migrates recovery-share errors.
src/node/snapshot_serdes.h Migrates snapshot diagnostics.
src/node/snapshotter.h Migrates snapshot task names.
src/node/test/channels.cpp Migrates channel tests.
src/node/test/endorsements.cpp Migrates endorsement paths.
src/node/test/historical_queries.cpp Migrates historical tests.
src/node/test/history.cpp Migrates history tests.
src/node/test/merkle_bench.cpp Migrates benchmark output.
src/node/test/network_identity_subsystem.cpp Migrates test errors.
src/node/test/receipt.cpp Migrates certificate test data.
src/node/test/snapshot.cpp Migrates snapshot test keys.
src/node/test/snapshotter.cpp Migrates temporary names.
src/node/uvm_endorsements.cpp Migrates UVM diagnostics.
src/pal/attestation.cpp Migrates attestation diagnostics.
src/pal/quote_generation.h Migrates quote-generation errors.
src/pal/test/snp_attestation_validation.cpp Migrates SNP tests.
src/pal/test/verify_uvm_attestation_and_endorsements.cpp Migrates endorsement tests.
src/service/internal_tables_access.h Migrates service diagnostics.
src/service/tables/identity_types.h Migrates identity errors.
src/snapshots/fetch.h Migrates fetch diagnostics.
src/snapshots/filenames.h Migrates snapshot filename parsing.
src/snapshots/snapshot_writer.h Migrates snapshot output.
src/tasks/fan_in_tasks.cpp Migrates task errors.
src/tasks/test/basic_tasks.cpp Removes fmt includes.
src/tasks/test/bench/merge_bench.cpp Removes fmt includes.
src/tasks/test/bench/sleep_bench.cpp Removes fmt includes.
src/tasks/test/demo/actions.h Migrates demo serialization.
src/tasks/test/demo/clients.h Migrates client names.
src/tasks/test/demo/dispatcher.h Migrates dispatcher names.
src/tasks/test/demo/main.cpp Loads atomic before logging.
src/tasks/test/demo/worker.h Migrates worker names.
src/tasks/test/fan_in_tasks.cpp Migrates task tests.
src/tasks/test/ordered_tasks.cpp Migrates task tests.
src/tasks/thread_manager.cpp Migrates manager errors.
src/tasks/worker.h Migrates worker errors.
src/tls/test/main.cpp Migrates TLS tests.
Review details
  • Files reviewed: 203/259 changed files
  • Comments generated: 0
  • Review effort level: Balanced

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants