RB
← All projectsRust Bitcoin

rust-bitcoin

Rust library for Bitcoin data structures, serialization, consensus encoding, and scripts.

BitcoinCryptographic librariesNormal
Repository coverage

2070 commits in the local evidence base

Every captured commit receives deterministic security triage and a separate communication-quality score. Security candidates and broader second-pass signals receive full-patch Ollama analysis.

459security candidates448second-pass queue909AI analyses
188commits · 30 days
404commits · 60 days
1283commits · 180 days
2064commits · 365 days
Backfill bands
Aug 5 → Feb 6787 seen32 candidatesComplete
Feb 6 → Jun 6878 seen53 candidatesComplete
Jun 6 → Jul 6211 seen15 candidatesComplete
Jul 6 → Aug 5184 seen2 candidatesComplete
Commit communication

Does the history explain itself?

Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.

64/100 average clarity
311Strong · 80–100
1054Adequate · 60–79
555Thin · 40–59
150Opaque · 0–39
20security candidates with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
Mitchell Bagot640192315068
Tobin C. Harding40965150063
jrakibi944961068
Nick Johnson1892079059
Andrew Poelstra512031075
Jamil Lambert, PhD1141848061
Fmt Bot311420045
Trevor Arjeski111111069
Shing Him Ng31718056
Ismail Daif2268050
satsfy (Renato Britto)1769066
Martin Habovstiak27511069
Analysis record

Published AI watches

Last scanned 35 minutes ago

Informational 15 AI analysisMessage 96 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6670: ci: fix labeller permissions

This is a routine GitHub Actions workflow fix. The change gives the automated PR labeler workflow permission to download artifacts and explicitly tells the GitHub CLI which repository to act on. It does not change the Bitcoin library code,…

CI workflow permission fixNo source code changesNo cryptographic or consensus changes
276e0a61by Andrew Poelstra+5−01 file
No security note in commit
Informational 15 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6657: Release tracking PR: `base58ck 0.5.0`

This commit is a routine version bump for the base58ck crate from 0.4.0 to 0.5.0. It only updates version numbers in package manifests, lock files, and adds a changelog entry. There are no code changes and no security relevance.

9deb5de1by Andrew Poelstra+22−168 files
No security note in commit
Informational 21 AI analysisMessage 100 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6440: base58: Introduce `decode_check_to_array` for alloc-less decoding

This commit is a routine feature addition to the rust-bitcoin base58 crate. It adds a new no-allocator function to decode short base58-check strings into fixed-size byte arrays, and renames the existing error type while keeping a deprecate…

No security-relevant bug fix is described in the commit message or diff.New decoding path uses a fixed 128-byte scratch buffer (`ArrayVec`) and rejects oversized inputs.Checksum verification and invalid-character handling are preserved from the existing alloc implementation.
c5fd1832by Andrew Poelstra+330−775 files
No security note in commit
Informational 15 AI analysisMessage 93 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6646: hashes: add several methods to `Midstate` and release 1.2.0

This commit is a routine feature release for the bitcoin_hashes crate. It adds new public methods and a constant to the SHA-256 Midstate type so developers can compute SHA-256 midstates in const contexts. There is no indication of a securi…

0f68fcb3by Andrew Poelstra+157−4210 files
No security note in commit
Informational 15 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6667: Make the `WitnessesEncoder` private

This commit makes a small internal helper type called WitnessesEncoder private. It was previously exported as public API but is only used inside the transaction encoder. The change removes it from the public API surface and moves the code …

07d91f7fby Andrew Poelstra+54−1324 files
No security note in commit
Informational 12 AI analysisMessage 75 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

ci: fix labeller permissions

This commit adjusts a GitHub Actions workflow that automatically labels pull requests based on CI results. It adds a built-in repository token, tells the artifact download step to merge single-file artifacts, and explicitly sets the reposi…

Workflow-only change with no library code modificationsUses the default GITHUB_TOKEN rather than a custom secretRuns in workflow_run context, which already has elevated repository access by design
715f2bd6by Nick Johnson+5−01 file
No security note in commit
Informational 15 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6668: Scrub the transaction encoding logic

This commit is a pure code reorganization (refactor) in the rust-bitcoin library. It moves transaction encoding and decoding definitions around within a single file so the code follows the project's preferred layout. No logic, behavior, or…

c5588ba5by Andrew Poelstra+57−571 file
No security note in commit
Informational 18 AI analysisMessage 96 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6662: build(deps): bump actions/checkout from 6.0.2 to 6.0.3

This commit is a routine update to the GitHub Actions checkout tool used by the project's automated workflows. It changes the pinned version from 6.0.2 to 6.0.3 across many workflow files. The newer version fixes minor bugs related to SHA-…

Dependency bump of actions/checkout to a patch releaseUpstream fixes for SHA-256 repository checkout and merge commit regexAll affected workflows already disable persisted credentials
f7d364cdby Andrew Poelstra+29−2915 files
No security note in commit
Informational 15 AI analysisMessage 96 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6663: build(deps): bump taiki-e/install-action from 2.79.12 to 2.81.4

This is a routine Dependabot update that bumps the version of a third-party GitHub Action used only in automated testing workflows. The change does not touch the project's actual Bitcoin library code, and there is no indication it fixes or…

5c92c0b0by Andrew Poelstra+2−22 files
No security note in commit
Informational 15 AI analysisMessage 68 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Scrub the transaction encoding logic

This commit is a pure code reorganization: it moves existing transaction encoding and decoding definitions around within a single file so they follow the project's preferred layout. No logic was changed, no security bug was fixed, and no n…

80dcef15by Tobin C. Harding+57−571 file
No security note in commit
Informational 15 AI analysisMessage 58 · Thin
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Make the WitnessesEncoder private

This commit simply hides an internal helper type called WitnessesEncoder from public view. It is a routine API-cleanup change with no security relevance visible in the code or commit message.

b37accc3by Tobin C. Harding+54−542 files
No security note in commit
Informational 15 AI analysisMessage 93 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

build(deps): bump astral-sh/setup-uv from 8.1.0 to 8.2.0

This is a routine automated update by Dependabot that changes the pinned version of a GitHub Action used to install the 'uv' Python tool in two workflow files. The new commit hash corresponds to the legitimate 8.2.0 release of astral-sh/se…

1c438632by dependabot[bot]+2−22 files
No security note in commit
Informational 15 AI analysisMessage 93 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

build(deps): bump github/codeql-action/upload-sarif

This is a routine automated update by Dependabot that changes the pinned version of a GitHub-provided security scanning helper used in a workflow. It does not modify the project's actual Bitcoin library code, its cryptographic logic, or an…

5293bee4by dependabot[bot]+1−11 file
No security note in commit
Informational 15 AI analysisMessage 93 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

build(deps): bump taiki-e/install-action from 2.79.12 to 2.81.4

This is a routine Dependabot update that bumps a GitHub Actions helper used in automated testing workflows from version 2.79.12 to 2.81.4. It only changes which version of the action is invoked during CI runs; it does not modify the Rust B…

eb9544f9by dependabot[bot]+2−22 files
No security note in commit
Informational 15 AI analysisMessage 93 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

build(deps): bump actions/checkout from 6.0.2 to 6.0.3

This is a routine automated update by Dependabot that bumps the GitHub Actions 'actions/checkout' dependency from version 6.0.2 to 6.0.3 across all project workflow files. It only changes pinned commit hashes and version comments for the a…

Routine patch-level dependency bumpNo changes to permissions, inputs, or workflow logicpersist-credentials: false already present on all checkout steps
ae935fadby dependabot[bot]+29−2915 files
No security note in commit
Informational 15 AI analysisMessage 28 · Opaque
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Update API files

This commit only updates generated API snapshot text files to remove two lines that documented a `From<u16>` conversion for a locktime type. No actual Rust source code was changed, so there is no runtime behavior change or security fix in …

6ea25bedby Mitchell Bagot+0−123 files
No security note in commit
Informational 15 AI analysisMessage 60 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

base58ck: Bump version to 0.5.0

This commit is a routine version bump for the base58ck crate from 0.4.0 to 0.5.0. It only updates version numbers in package manifests, lock files, and adds a changelog entry describing unrelated feature changes. There are no code changes,…

8479b56eby Tobin C. Harding+22−168 files
No security note in commit
Informational 20 AI analysisMessage 58 · Thin
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Rename Error to DecodeCheckError

This commit is a routine code cleanup: it renames the `Error` type in the base58 module to the more descriptive `DecodeCheckError`, and adds a deprecated type alias so existing code using `base58::Error` continues to work. There is no chan…

b0eba4c0by Mitchell Bagot+45−395 files
No security note in commit
Informational 15 AI analysisMessage 28 · Opaque
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Update API files

This commit only updates generated API snapshot text files to reflect that the remainder (modulo) operator for the Weight type now returns another Weight instead of a plain number. It contains no source code changes, no bug fix, and no sec…

351acf8eby Mitchell Bagot+6−63 files
No security note in commit
Informational 15 AI analysisMessage 73 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

consensus_encoding: decoder docs which are consensus specific

This commit only changes documentation comments in the consensus_encoding crate. It renames descriptions like 'Primitive decoders' to 'Primitive and combinator decoder types' and updates several function doc comments to say 'consensus deco…

5cdd5aa0by Nick Johnson+11−132 files
No security note in commit
Repository ledger

Explore captured commits

Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.

AI review queuedAdd regression test for decode_from_read_unbuffered_with bugby Mitchell Bagot · 29314bbe · Jun 17, 2026 · 1 fileMessage 95 · StrongInformational 11Details
Commit message · Mitchell Bagot

Add regression test for decode_from_read_unbuffered_with bug

The bug in decode_from_read_unbuffered_with is finicky and can only
be triggered in very particular cases. To ensure it is not
reintroduced, a test case should be included.

Introduce regression test for encoding::decode_from_read_unbuffered_with.

Test case produced by Project Loupe.

95/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification
Why it was queued
fuzzing or regression evidenceparser or protocol pathsecond-pass: security-sensitive path
AI analysis · Informational 11/100

This commit only adds a regression test for a previously existing bug in a decoding helper. It does not change any production code, so by itself it cannot introduce a security vulnerability. The test documents a bug where a decoder could lose unconsumed bytes under specific conditions, but the actual fix must have happened in an earlier commit not shown here.

Lower-priorityAdd regression test for decode_from_read_unbuffered_with bugby Mitchell Bagot · 4b71a5ad · Jun 17, 2026 · 1 fileMessage 95 · StrongTriage 5Details
Commit message · Mitchell Bagot

Add regression test for decode_from_read_unbuffered_with bug

The bug in decode_from_read_unbuffered_with is finicky and can only
be triggered in very particular cases. To ensure it is not
reintroduced, a test case should be included.

Introduce regression test for io::decode_from_read_unbuffered_with.

Test case produced by Project Loupe.

95/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification
Why it was queued
fuzzing or regression evidence
Lower-priorityfix: off-by-one in MedianTimePast::is_satisfied_byby Alexey Gradoboev · 66a8ee70 · Jun 16, 2026 · 1 fileMessage 100 · StrongTriage 0Details
Commit message · Alexey Gradoboev

fix: off-by-one in MedianTimePast::is_satisfied_by

Fix the comparison operator in `MedianTimePast::is_satisfied_by` from
`<=` to `<`, leading to subsequent rejection by Bitcoin Core.

Per BIP-113 and Bitcoin Core's `IsFinalTx` implementation, a time-based
transaction absolute locktime `T` is final in the next block if and
only if `T < MTP_of_previous_block` (strict less-than).

Update existing invalid test constraints and add an extended test suite

Fixes: #6373

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
AI review queuedinternals: Update API filesby Mitchell Bagot · aa25afb4 · Jun 16, 2026 · 3 filesMessage 35 · OpaqueInformational 15Details
Commit message · Mitchell Bagot

internals: Update API files

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
documentation-only discountsecond-pass: opaque commit message
AI analysis · Informational 15/100

This commit only updates generated text files that list the public API surface of the `bitcoin_internals` crate. The removed lines describe a simple helper trait (`ToU64`) and its implementations for unsigned integer types. There is no code change, no bug fix, and no security relevance visible in the diff.

AI review queuedMove ToU64 to bitcoinby Mitchell Bagot · f3b49833 · Jun 16, 2026 · 9 filesMessage 51 · ThinInformational 15Details
Commit message · Mitchell Bagot

Move ToU64 to bitcoin

Outside of a single usage in p2p which can be replaced by a From call,
the ToU64 trait is only used in bitcoin.

Move ToU64 trait to bitcoin, keeping it pub for use in existing public
API code.

51/100 · ThinMessage clarity
✓ Subject identifies a change✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a simple internal code reorganization. It moves a small helper trait called ToU64 from one internal crate (internals) into the main bitcoin crate, and updates import statements accordingly. There is no change to what the code does, no bug fix, and no security-relevant behavior change.

Lower-priorityp2p: Remove uses of ToU64by Mitchell Bagot · 32dff197 · Jun 16, 2026 · 1 fileMessage 68 · AdequateTriage 0Details
Commit message · Mitchell Bagot

p2p: Remove uses of ToU64

Outside of bitcoin, ToU64 is only used in a single place in p2p. This
can trivially be replaced by a u64::from call, as a u32 will always be
smaller than a u64.

Remove the only use of ToU64 from p2p.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-priorityFix read bug in io::decode_from_read_unbuffered_withby Mitchell Bagot · 53b3f3e9 · Jun 16, 2026 · 1 fileMessage 85 · StrongTriage 0Details
Commit message · Mitchell Bagot

Fix read bug in io::decode_from_read_unbuffered_with

In decode_from_read_unbuffered_with, the clamped buffer is pushed into
the decoder after a successful read. Some decoders do not completely
consume all provided bytes in a single push_bytes call, which can lead
to parts of the buffer being dropped. Like encoding::decode_from_hex,
the push_bytes should instead be called in a loop until the buffer is
empty, or the error case occurs.

Call push_bytes in a loop to prevent buffer bug in
io::decode_from_read_unbuffered_with.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Security candidateUse write! in UnknownAddressTypeError displayby Mitchell Bagot · 5d63ec21 · Jun 16, 2026 · 1 fileMessage 73 · AdequateLow 35Details
Commit message · Mitchell Bagot

Use write! in UnknownAddressTypeError display

The write_err! macro is intended to provide source information for
errors in no_std environments. Where an error type does not have a
source, the write! macro should be used instead.
For UnknownAddressTypeError specifically, the use of write_err! causes
a stack overflow as it recurses infinitely to attempt to display self
as the source in write_err! in no_std builds.

Replace use of write_err! with write! in UnknownAddressTypeError
Display impl.

73/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Why it was queued
memory safety
AI analysis · Low 35/100

This commit fixes a bug where displaying a specific error message in Bitcoin address parsing could cause the program to crash with a stack overflow. The crash only happens in 'no_std' builds (a special configuration without the standard library). The fix replaces an incorrect macro with the correct one so the error message is shown without trying to endlessly include itself as its own source.

Lower-prioritybitcoin: remove unused internals::ToU64 importby Update Nightly Rustc Bot · 0d8b5a7b · Jun 15, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · Update Nightly Rustc Bot

bitcoin: remove unused internals::ToU64 import

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-priorityAutomated update to rustc nightly-2026-06-12by Update Nightly Rustc Bot · 41f58f19 · Jun 15, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · Update Nightly Rustc Bot

Automated update to rustc nightly-2026-06-12

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI review queuedprimitives: drop redundant reference in format! callsby satsfy (Renato Britto) · 2d45904e · Jun 15, 2026 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · satsfy (Renato Britto)

primitives: drop redundant reference in format! calls

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only cleans up test code by removing unnecessary '&' symbols inside format!() calls. It does not change any runtime behavior or fix a security issue.

Lower-prioritybitcoin: simplify logic replacing match blockby satsfy (Renato Britto) · 51d1b140 · Jun 15, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · satsfy (Renato Britto)

bitcoin: simplify logic replacing match block

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-priorityAdjust Display string for UnprefixedHexErrorby Mitchell Bagot · 8dd66363 · Jun 15, 2026 · 1 fileMessage 60 · AdequateTriage 0Details
Commit message · Mitchell Bagot

Adjust Display string for UnprefixedHexError

The ContainsPrefix display string for UnprefixedHexError is poorly
worded.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Lower-priorityRemove redundant sentences in function docsby Mitchell Bagot · 92e30bff · Jun 15, 2026 · 1 fileMessage 68 · AdequateTriage 0Details
Commit message · Mitchell Bagot

Remove redundant sentences in function docs

The is_satisfied_by_* functions repeat their shorthand description in
their first extended docs sentence. The latter sentence can simply be
removed without any loss of information.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-priorityAdjust docs for impl_parse_str_from_int_infallible macroby Mitchell Bagot · 4dc821c4 · Jun 15, 2026 · 1 fileMessage 73 · AdequateTriage 0Details
Commit message · Mitchell Bagot

Adjust docs for impl_parse_str_from_int_infallible macro

The macro parameters for impl_parse_str_from_int_infallible are out of
date and don't reflect the actual required parameters. Although this is
not public-facing, it should be kept up-to-date.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI review queuedAdjust wording on docs to match function behaviourby Mitchell Bagot · 3a3fe1dc · Jun 15, 2026 · 3 filesMessage 73 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Adjust wording on docs to match function behaviour

There are a couple of functions in units that have docs that don't
clearly describe their behaviour. These should be adjusted to better
read and match the functionality.

Adjust from_float_in docs for Amount + SignedAmount and unwrap_or and
unwrap_or_else on NumOpResult.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only fixes wording in code comments/documentation. It changes descriptions of three functions so the docs accurately describe what the functions do. No actual code behavior was changed, so there is no security impact.

AI review queuedFix typos, grammar and formatting in docsby Mitchell Bagot · 4bd10aa2 · Jun 15, 2026 · 9 filesMessage 68 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Fix typos, grammar and formatting in docs

The docs have various typos, grammar and formatting mistakes that should
ideally be fixed before the 1.0 release. This also includes strange
formatting for code in examples.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only fixes typos, grammar, punctuation, and formatting in documentation comments and one code example. There are no code logic changes, no API changes, and no behavior changes. It is purely a documentation quality cleanup.

Lower-priorityMove normal opcodes to primitivesby Mitchell Bagot · 619efc32 · Jun 15, 2026 · 2 filesMessage 68 · AdequateTriage 0Details
Commit message · Mitchell Bagot

Move normal opcodes to primitives

With the Opcode type moved, the individual opcode constants can now
also be moved to primitives from bitcoin.

Move all opcodes in Ordinary + OP_RETURN + OP_NOP to primitives and
re-export in bitcoin.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI review queuedprimitives: Update API filesby Mitchell Bagot · 9d133152 · Jun 15, 2026 · 3 filesMessage 35 · OpaqueInformational 15Details
Commit message · Mitchell Bagot

primitives: Update API files

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
documentation-only discountsecond-pass: opaque commit message
AI analysis · Informational 15/100

This commit only updates generated text files that list the public API surface of the rust-bitcoin 'primitives' crate. It records that the opcodes module and its constants are now publicly exposed. There are no code changes, no bug fixes, and no security-related modifications.

Lower-priorityAdd From<Opcode> for u8 and roundtrip testby Mitchell Bagot · 5d49acb8 · Jun 15, 2026 · 1 fileMessage 90 · StrongTriage 0Details
Commit message · Mitchell Bagot

Add From<Opcode> for u8 and roundtrip test

In order to mirror the From<u8> for Opcode and provide a complete Into
roundtrip, From<Opcode> for u8 is needed. Then, to ensure both the
original from_u8 and to_u8 and the From impls function correctly, a
roundtrip test should be added.

Add From<Opcode> for u8 and a test to roundtrip through from_u8, to_u8
and the From impl pair.

90/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification
Lower-priorityMove Opcode to primitivesby Mitchell Bagot · 739463f0 · Jun 15, 2026 · 2 filesMessage 58 · ThinTriage 0Details
Commit message · Mitchell Bagot

Move Opcode to primitives

With all of the prior adjustments to the type, Opcode can now be moved
to primitives.

Move Opcode to primitives and re-export from bitcoin.

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
Lower-prioritySplit Opcode to OpcodeExtby Mitchell Bagot · fe6723c2 · Jun 15, 2026 · 4 filesMessage 58 · ThinTriage 0Details
Commit message · Mitchell Bagot

Split Opcode to OpcodeExt

As part of moving Opcode to primitives, we want to minimise the size
of the new API surface to that which we're sure of the correctness of.
As such, outside of the to/from u8 functionality, all other functions
should be split to an extension trait.

Add OpcodeExt and move as_str, decode_pushnum and classify to it.

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
Lower-priorityIntroduce Opcode::from_u8by Mitchell Bagot · 5cf9bc2f · Jun 15, 2026 · 1 fileMessage 58 · ThinTriage 0Details
Commit message · Mitchell Bagot

Introduce Opcode::from_u8

While Opcode can be constructed from a u8 with the From impl, there
exists no way to do so in a const context outside of the opcodes
module. This will make moving the type to primitives impossible.

Introduce from_u8 const function on Opcode to construct an opcode from
a raw u8.

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
Lower-priorityAdd Debug derive and remove Debug, Display and serde::Serialize implsby Mitchell Bagot · 5d60f663 · Jun 15, 2026 · 2 filesMessage 85 · StrongTriage 0Details
Commit message · Mitchell Bagot

Add Debug derive and remove Debug, Display and serde::Serialize impls

Due to the orphan rules in Rust, the Debug, Display and
serde::Serialize impls cannot be provided on Opcode in bitcoin once the
type moves. Since we do not want stringify functionality in primitives,
these trait impls must be removed. Existing stringify can be worked
around using Opcode::as_str.

In order to retain assert_eq functionality, Debug must be present, so
it should be replaced by a derive which will move with the type.

Add Debug derive to Opcode.
Remove manual Debug, Display and serde::Serialize trait impls.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Lower-priorityRemove opcode serde testsby Mitchell Bagot · 48f81582 · Jun 15, 2026 · 1 fileMessage 68 · AdequateTriage 5Details
Commit message · Mitchell Bagot

Remove opcode serde tests

Since the serde trait has been removed from Opcode, the regression test
is no longer applicable and can be removed.

Remove serde opcode regression test.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
fuzzing or regression evidence