Skip to content

chore: cut v4.6.0 - #334

Merged
danielplohmann merged 2 commits into
masterfrom
chore/cut-v4.6.0
Sep 10, 2026
Merged

chore: cut v4.6.0#334
danielplohmann merged 2 commits into
masterfrom
chore/cut-v4.6.0

Conversation

@danielplohmann

@danielplohmann danielplohmann commented Sep 10, 2026

Copy link
Copy Markdown
Owner

Cuts v4.6.0 over what has landed since v4.5.1 (4868e19): #300 (50d3289), #325 (e9dfe5f) and #299 (46adf4b).

Ten engine changes under feat(core) plus a hot-path pass is a minor-bump shape, which is the reason #299 and #300 were re-scoped off v4.5.1 rather than squeezed into it. Nothing else is queued for this release.

Format

Deliberately the current format, not keep-a-changelog. #323 proposed adopting against an empty Unreleased so the first entries it holds are written by their authors at merge time; v4.6.0 cannot be that, because #299's and #300's entries are being written here at release time either way. Adopting after this release means the inaugural section fills itself from the seven PRs currently open, which is the demonstration #323 was after. Four of @r0ny123's additions are also still unsettled, one of which (reusing the semantic-pr-title.yml scope list as the entry prefix vocabulary) would rewrite every heading below.

What this entry does adopt is the compromise: each topic keeps the mechanism and its headline figure with the cost, and links the PR that carries the full measurement, the per-rule attribution and the dead ends. It is ~2,200 words against v4.5.1's ~2,790, so the depth that matters at release time is here and the rest is one click away. This is the first entry in the file to use links at all.

What the entry covers

Compatibility

No escaper output changed. The only escaping-related edit memoises escapeBinary results behind a cache keyed on its complete input tuple, and no escaper module is touched, so ESCAPER_DOWNWARD_COMPATIBILITY stays at 4.4.5 and INTEL_PIC_HASH_ESCAPE_VERSION at 4.3.5. No report needs reprocessing.

Provenance of the figures

The contributor's own except the ARM64 Mach-O row and the ReadyToRun result, which were reproduced during the #300 review. The entry says which is which rather than presenting one table as equally checked — the same distinction v4.5.1 made.

Second commit

docs(docs) fixes AGENTS.md:117, which has prescribed a one-line changelog entry since before v4.5.1 while v4.5.1 and v4.6.0 both use the nested **Topic:** list. Independent of #323, which would replace that line again on adoption — raised in the #299/#300 review pass and never ruled on, so it is folded in here rather than sent round as a one-line PR of its own.

Checks run locally

  • pytest tests/test* — 2094 passed, 2 skipped, 2596 subtests, in 159s.
  • ruff check . and ruff format --check . clean.
  • ty check src/smda/ fuzzing/ profiling/ .github/workflows/scripts/ — exit 0, unchanged against master.
  • Master's own post-perf: cut analysis hot-path overhead without changing output #299 CI is green on all four workflows, benchmark included (run 34521599914).

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Sep 10, 2026

Copy link
Copy Markdown

📊 SMDA Performance Evaluation Benchmark Results

Generated on: 2026-09-10 20:49:05

Summary

Metric Result
Correctness ✅ PASS — 0 / 155 common file(s) differ
Determinism ✅ PASS — base 3 run(s), PR 3 run(s)
Verdict inconclusive — within run-to-run noise (±4.4%)
Median paired speedup -0.76% (95% CI [-1.29%, -0.26%])
Timing noise band ±4.4%

Per-side Timing Context (best of 3/3 runs per file)

Side Files Functions Median best time/file (s) Sum of best times (s) Throughput estimate (func/s)
base 155 173464 0.5263 214.49 ~809
pr 155 173464 0.5589 216.85 ~800

These context rows sum each file's best observed time across repeated runs; they are normalized comparison estimates, not single-run CI wall-clock times.

Paired per-file timing (positive speedup = PR faster):

Statistic Value
Files compared 155
Median paired speedup -0.76% (95% CI [-1.29%, -0.26%])
Mean speedup -1.75% (95% CI [-3.83%, +0.17%])
Std dev / IQR 12.97% / 5.13%
Wilcoxon signed-rank p 0.0449 (n=155)

ℹ️ base and PR are timed in the same job on the same runner, with their passes interleaved base/PR/PR/base/base/PR so that drift over the job cancels rather than landing on whichever side ran last. The noise band above is therefore run-to-run variation on one machine, which is what it is able to measure; a difference inside it is reported as inconclusive. Correctness and determinism are not timing-based and are unaffected either way.

Determinism (self-check across repeated runs)

Side Runs Files Deterministic Median timing CV
base 3 155 4.4%
pr 3 155 4.2%
Pairwise run matrix (individual run medians, diagnostic)

Diagnostic only: each row compares one raw PR run against one raw base run. The headline verdict above uses paired per-file best-of-runs timings.

Comparison Run PR Files Base Files Common Function Set Matches Med PR (s) Med Base (s) Med Diff (s) Speedup %
pr_0 vs base_0 155 155 155 155/155 0.6560s 0.5841s +0.0719s -12.30%
pr_0 vs base_1 155 155 155 155/155 0.6560s 0.7126s -0.0567s +7.95%
pr_0 vs base_2 155 155 155 155/155 0.6560s 0.6292s +0.0268s -4.25%
pr_1 vs base_0 155 155 155 155/155 0.6517s 0.5841s +0.0676s -11.57%
pr_1 vs base_1 155 155 155 155/155 0.6517s 0.7126s -0.0609s +8.55%
pr_1 vs base_2 155 155 155 155/155 0.6517s 0.6292s +0.0225s -3.58%
pr_2 vs base_0 155 155 155 155/155 0.6227s 0.5841s +0.0386s -6.61%
pr_2 vs base_1 155 155 155 155/155 0.6227s 0.7126s -0.0899s +12.62%
pr_2 vs base_2 155 155 155 155/155 0.6227s 0.6292s -0.0065s +1.03%

danielplohmann and others added 2 commits September 10, 2026 22:32
The changelog entry for what has landed since v4.5.1 (4868e19): #300, #325 and
#299. Ten engine changes under feat(core) plus a hot-path pass is a minor-bump
shape, which is why #299 and #300 were re-scoped off v4.5.1 rather than squeezed
into it.

VERSION in src/smda/SmdaConfig.py and __version__ in src/smda/__init__.py bumped
together with the entry, per AGENTS.md.

No escaper output changed anywhere in this set. The only escaping-related edit
memoises escapeBinary results behind a cache keyed on its complete input tuple
and no escaper module is touched, so ESCAPER_DOWNWARD_COMPATIBILITY stays at
4.4.5 and INTEL_PIC_HASH_ESCAPE_VERSION at 4.3.5, and no report needs
reprocessing.

Figures are the contributor's own except the ARM64 Mach-O row and the
ReadyToRun result, which were reproduced during the #300 review; the entry says
which is which rather than presenting one table as equally checked.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
AGENTS.md:117 has prescribed ` * YYYY-MM-DD: vX.Y.Z - <summary>` since before
v4.5.1, while v4.5.1 and v4.6.0 both put the mechanism, the measurement and the
cost under that header line as a nested list of **Topic:** bullets. An agent
following the file wrote a one-line entry for a release the maintainer then
expanded by hand.

The header line is still exactly what the file said; what is added is what goes
under it, and a pointer to which entries are the model, since everything before
v4.5.1 is one long paragraph.

Independent of #323, which would replace this line again if keep-a-changelog is
adopted.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@danielplohmann
danielplohmann merged commit db132bb into master Sep 10, 2026
47 checks passed
@danielplohmann
danielplohmann deleted the chore/cut-v4.6.0 branch September 10, 2026 20:51
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