Skip to content

v2026.11.7 - #479

Merged
fametrano merged 1 commit into
mainfrom
release-v2026.11.7
Nov 6, 2026
Merged

fametrano merged 1 commit into
mainfrom
release-v2026.11.7

Conversation

@fametrano

Copy link
Copy Markdown
Member

Release v2026.11.7. A user notices two changes: variable-time integer parameters are typed ecc.alias.Public (PR #474), so code mypy checks wraps those arguments as Public(x), and dsa.anti_exfil_host_verify answers False for a high s (PR #473). The rest moves nothing a user sees: secret checks left to the bindings (PR #472), vendored pins (PR #469), the coverage floor (PR #471), tooling, CONTRIBUTING.md and RELEASING.md.

This PR sets the version, re-locks (only the project's own version line moves) and adds the release's sections of RELEASE_NOTES.md and CHANGELOG.md, written from the squash subjects since v2026.11.6. RELEASE_NOTES.md names each parameter api_gaps.py reports.

Evidence

Check Result
griffe check ecc -s . -s src -a v2026.11.6, griffe 2.2.0 exit 0, no output
api_gaps.py at btclib-org/.github 5be4b0f (the commit release.yml pins), against v2026.11.6 exit 1: 19 lines, each Parameter types are incompatible from int, Integer or a Sequence of them to Public, all named in RELEASE_NOTES.md
What neither tool compares, read by hand since v2026.11.6 the @overload signatures of dsa and ssa sign and sign_ are unchanged; src holds no property setter; the cycle adds or removes no class and changes no package __init__.py
deps-latest not dispatched for this release. Its last run is on the previous cycle's main 715dbde (run 42126989678, success). Its drift is left to Dependabot, as RELEASING.md says; no uv lock --upgrade here
TestPyPI rehearsal due: the cycle moved test.yml, which release.yml calls (setup-uv 10.3.3, PR #460), the [tool.uv.build-backend] source-exclude patterns (PR #471), and the locked build backend, uv-build 0.13.6 (PR #461). api_gaps.py has findings, and RELEASING.md as of add95e2 says: "A release with any public-API finding is rehearsed from the release pull request's branch, after its notes are written". So it runs from this branch. Not yet run
gates on f0fd19e, under the gate lock pytest 0 (15708 passed, 177 skipped, coverage 100%); pre-commit 0; docs -n -W 0, with the unresolved-link grep 0 and check_included_links.py 0
Sign-off script on add95e2..f0fd19e exit 0; control on c1786962edc1 exits 1
Review dedicated Claude reviewer; Codex unavailable: out of credits

The open PR #477 (CONTRIBUTING.md only) is not in this release, and does not touch the release path.

🤖 Generated with Claude Code

Release v2026.11.7: variable-time integer parameters are typed
ecc.alias.Public, which mypy users must wrap, and
dsa.anti_exfil_host_verify answers False for a high s. api_gaps.py
against v2026.11.6 names the parameter type changes, and
RELEASE_NOTES.md names each; griffe exits 0. Read by hand since
v2026.11.6, for what neither tool compares: the @overload signatures
are unchanged, src holds no property setter, and the cycle adds or
removes no class and no package re-export.

This sets the version and adds the release's sections of
RELEASE_NOTES.md and CHANGELOG.md, written from the squash subjects
since v2026.11.6.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Ferdinando Ametrano <ferdinando@ametrano.net>
@coderabbitai

coderabbitai Bot commented Nov 6, 2026 •

Copy link
Copy Markdown

Explain Change →

No actionable comments were generated in the recent review.

Summary

Summary by CodeRabbit

  • API Changes
    • Variable-time integer parameters now require public-value typing. When type-checking, wrap integer arguments as public values; convert byte strings or text to integers first. Sequence arguments follow the same requirement.
  • Behavior Changes
    • Anti-exfiltration host verification now rejects signatures with high s values. Standard signature verification continues to accept both signature forms.
    • Structurally invalid inputs to anti-exfiltration host verification raise an exception rather than returning False.
  • Documentation
    • Updated release and contribution guidance.

This release-preparation change adds v2026.11.7 entries to the changelog and release notes. It also changes the project version in pyproject.toml to 2026.11.7.

Changes: v2026.11.7 Release

Layer / File(s) Summary
Release notes and version
RELEASE_NOTES.md, CHANGELOG.md, pyproject.toml
The release notes describe public integer typing and anti-exfil verification behavior. The changelog records related test, coverage, tooling, and contributor-guidance updates. The project version changes to 2026.11.7.

Estimated code review effort: 2 (Simple) | ~8 minutes

Change: Other

Possibly related PRs

  • btclib-org/ecc#473: Changes to anti-exfil host verification are documented in the release notes.
  • btclib-org/ecc#469: BIP459 vector pins and aggregation-error tests are recorded in the changelog.

Suggested labels: api-break

Merge Risk: Minimal · up to f0fd1

The release records and package version are aligned. No concrete merge-blocking risk is established.

Architecture risk: Low · up to f0fd1

The change affects 3 systems.

Changed systems: CHANGELOG.md, pyproject.toml, RELEASE_NOTES.md

Architecture concerns
No architecture-level concerns identified.

Review details

Systems and components

  • observed — CHANGELOG.md (service) was modified; 1 changed file maps to changed impact.
  • observed — pyproject.toml (service) was modified; 1 changed file maps to changed impact.
  • observed — RELEASE_NOTES.md (service) was modified; 1 changed file maps to changed impact.

Before / after behavior

  • observed — Modified behavior in CHANGELOG.md: Adds the v2026.11.7 release entry describing ecc.alias.Public as NewType("Public", int) and caller annotation with Public(x).
  • observed — Modified behavior in CHANGELOG.md: Adds a changelog entry stating that dsa.anti_exfil_host_verify refuses high-s signatures and that vendored draft anti-exfil BIP vectors run for dsa and ssa on both arms.
  • observed — Modified behavior in CHANGELOG.md: Adds a changelog entry stating that curves.add, sec_point.mult_pub_key, and ecies.derive_keys perform no Python secret check where the bindings’ calls handle it.
  • observed — Modified behavior in CHANGELOG.md: Adds a changelog entry pinning BIP459 vectors to bitcoin/bips commit f3d16688 and describing ssa and ssa_halfagg tests for errors that cancel during aggregation.
Pre-merge checks: Passed 4

Check name Status Explanation
Title check Passed The title identifies the release version. The supplied context identifies no issue that requires a title citation. (github.com)
Description check Passed The description covers the version update and release documentation.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Finishing Touches

Generate unit tests (beta)

  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Usage-based review receipt

  • Mode: Continue automatically
  • Reviewed files: 3
  • Waived: $0.75 (charged $0.00)
  • View usage details

Note

This review exceeded your plan’s limits and used usage-based reviews—free during trial, billed after paid activation unless disabled. Manage usage-based reviews.

Recent review info

Run configuration

Commits

Reviewing files that changed from the base of the PR and between add95e2 and f0fd19e.

Files ignored due to path filters: 1

  • uv.lock is excluded by !**/*.lock
Files selected for processing: 3

  • CHANGELOG.md
  • RELEASE_NOTES.md
  • pyproject.toml

Limit details: You’ve used all 10 included reviews currently available.

@read-the-docs-community

Copy link
Copy Markdown

Documentation build overview

📚 ecc | 🛠️ Build #35710590 | 📁 Comparing f0fd19e against latest (add95e2)

  🔍 Preview build  

2 files changed
± changelog_link.html
± release_notes_link.html

@claude claude 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.

ACK f0fd19e

Not checked: griffe check ecc -s . -s src -a v2026.11.6 and api_gaps.py against v2026.11.6 were not run, since there is no interpreter here. I compared the parameter list in RELEASE_NOTES.md against the public _var signatures in src with a grep, and they agree. That grep is not a run of either tool. I also could not compare the CHANGELOG.md section against git log v2026.11.6..HEAD --format=%s: the checkout is shallow and has no tag.

@fametrano
fametrano merged commit 3a20670 into main Nov 6, 2026
83 checks passed
@fametrano
fametrano deleted the release-v2026.11.7 branch November 6, 2026 23:50

This branch was successfully deployed

1 active deployment
testpypi — f0fd19e5 Deployed Nov 6, 2026 by fametrano via Publish to TestPyPI #41
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