Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
729 commits
Select commit Hold shift + click to select a range
8734820
Update pox-5 tests to use the boot contract
radu-stacks Jun 9, 2026
296969b
Merge pull request #7281 from brice-stacks/feat/private-reserve-fn
brice-stacks Jun 9, 2026
4a99857
Merge pull request #7288 from brice-stacks/fix/failed-withdrawals
brice-stacks Jun 9, 2026
8f9b4a7
Add pox-5 simnet locking unit test
radu-stacks Jun 9, 2026
6e1ac43
Add pox-5 locking assertions to Stake* commands and AssertModelInvari…
radu-stacks Jun 9, 2026
30fca7d
Implement `as_error_code` testing method for exact equality checks in…
radu-stacks Jun 10, 2026
53a50fc
Merge remote-tracking branch 'origin/pox-wf-integration' into feat/po…
radu-stacks Jun 10, 2026
9c7aab6
Split AssertModelInvariants into three focused commands and add Stake…
radu-stacks Jun 10, 2026
f16486a
Add temporary @ts-ignore in pox-5-helpers
radu-stacks Jun 10, 2026
0379ebe
feat: update print info in register-for-bond
hstove-stacks Jun 10, 2026
05efc8e
fix: remove unused variable
hstove-stacks Jun 10, 2026
88d214a
Merge remote-tracking branch 'origin/pox-wf-integration' into test/po…
radu-stacks Jun 10, 2026
73dec9f
Merge pull request #7299 from hstove-stacks/fix/print-l1-info
hstove-stacks Jun 10, 2026
d8567bc
fix: require `revoke-signer-grant` to be called directly
brice-stacks Jun 10, 2026
29ecd36
Merge pull request #7302 from brice-stacks/fix/revoke-signer-grant
brice-stacks Jun 10, 2026
13dc159
Fix stateful PBT after latest pox-5 updates
radu-stacks Jun 10, 2026
fb4b14f
feat: replace `allow-contract-caller` with staking and pox PCs
brice-stacks Jun 10, 2026
687af4b
fix: remove `allow-contract-caller` from tests
brice-stacks Jun 11, 2026
c387b38
Add sBTC deposit-key distinctness properties for pubkey, lock_time, a…
radu-stacks Jun 11, 2026
69919ca
Use boot pox-5 in reentrancy regression test
radu-stacks Jun 11, 2026
5a4683c
Bump clarinet-sdk to 3.19.0 with lock-aware boot pox-5
radu-stacks Jun 11, 2026
84d0b49
Pin the PoX-5 auto-unlock boundary with an `AdvanceToUnlockHeight` co…
radu-stacks Jun 11, 2026
d72f3c9
Add pox-5 stake grant revoked and in-prepare-phase error-path commands
radu-stacks Jun 11, 2026
98ce222
Add SetupBond command and variants
radu-stacks Jun 11, 2026
35fba7d
Cleanup comments across PoX-5 stateful PBT setup
radu-stacks Jun 11, 2026
85537b4
Strengthen bitcoin/sBTC/pox-5 property assertions to exact values
radu-stacks Jun 11, 2026
62dda62
Merge branch 'develop' into chore/merge-develop-0610
brice-stacks Jun 11, 2026
28d71b7
chore: update names in comments
brice-stacks Jun 11, 2026
975fb61
Add RegisterForBond and UpdateBondRegistration pox-5 commands alongsi…
radu-stacks Jun 11, 2026
b35dc5c
chore: remove todos now that `stx-account` is functional
brice-stacks Jun 11, 2026
832b0f6
fix: remove unnecessary `as typeof`
hstove-stacks Jun 11, 2026
b25005a
Merge pull request #7310 from brice-stacks/chore/merge-develop-0610
hstove-stacks Jun 11, 2026
47c7d48
Merge pull request #7306 from radu-stacks/feat/clarinet-3.19.0-locking
radu-stacks Jun 11, 2026
61686e8
fix: set /v2/pox's minimum to the hard-coded pox-5 value
brice-stacks Jun 11, 2026
965ff74
fix: reject unstake-sbtc and announce-l1-early-exit during prepare
brice-stacks Jun 11, 2026
f49780c
Property-cover `pox_rollover_v5` and the `handle_contract_call` dispa…
radu-stacks Jun 12, 2026
5e2ffce
chore: document and verify the rollover behavior
brice-stacks Jun 12, 2026
5a41abf
Merge branch 'pox-wf-integration' into test/pox-5-stateful-pbt
radu-stacks Jun 12, 2026
722df5c
Merge pull request #7313 from brice-stacks/fix/v2-pox
brice-stacks Jun 12, 2026
559ea2f
Merge pull request #7314 from brice-stacks/feat/unstake-during-prepare
brice-stacks Jun 12, 2026
19f5f5c
Add cross-tree, wrong-count merkle CVE transitions and a global invar…
radu-stacks Jun 12, 2026
3afe090
Harden the Clarity native_* coercion layer against malformed consensu…
radu-stacks Jun 12, 2026
e1e2186
refactor: use new variadic `concat`
brice-stacks Jun 9, 2026
0633694
chore: fix comment on `register-for-bond`
brice-stacks Jun 9, 2026
d853986
chore: upgrade vitest to avoid stall
brice-stacks Jun 9, 2026
ca76e38
fix: use the correct signer when unstaking sbtc
hstove-stacks Jun 12, 2026
75c370e
fix: also use new unstake helper in `announce-early-l1-exit`
hstove-stacks Jun 12, 2026
1573031
Merge branch 'pox-wf-integration' into test/pox-5-stateful-pbt
radu-stacks Jun 12, 2026
4028e76
feat: add changelog
hstove-stacks Jun 12, 2026
919f2b5
chore: update to clarinet 3.20
brice-stacks Jun 12, 2026
9fb087e
Fix pull issues
radu-stacks Jun 12, 2026
69e5818
Potential fix for pull request finding
hstove-stacks Jun 12, 2026
4c24c92
fix: add test around announce-early-l1-exit
hstove-stacks Jun 12, 2026
8916a38
Merge pull request #7321 from hstove-stacks/fix/current-cycle-unstaki…
hstove-stacks Jun 12, 2026
5b330d1
Merge branch 'fix/current-cycle-unstaking-logic' of github.com:hstove…
hstove-stacks Jun 12, 2026
045bc12
Merge branch 'pox-wf-integration' into feat/staking-post-condition
brice-stacks Jun 12, 2026
2ead830
Merge pull request #7322 from hstove-stacks/fix/current-cycle-unstaki…
hstove-stacks Jun 12, 2026
46c71b3
test: add unit test for pox actions
brice-stacks Jun 12, 2026
3a88d43
test: add some more tests about updating and unstaking
brice-stacks Jun 12, 2026
409240b
chore: add `with-pox` to proptests
brice-stacks Jun 12, 2026
aa85d33
Merge pull request #7316 from brice-stacks/chore/rollover-behavior
brice-stacks Jun 12, 2026
708a775
test: adding clarinet tests for missing scenarios
brice-stacks Jun 13, 2026
8b45c18
Add commands for sBTC unstake, rewards computation, L1 early exit err…
radu-stacks Jun 15, 2026
403aa8b
Add sBTC balance invariants to Assert*Invariants commands
radu-stacks Jun 15, 2026
024e59f
updated coinbase interval for pox-5
rob-stacks Jun 15, 2026
8788e03
fmt-stacks
rob-stacks Jun 15, 2026
4d037d7
Standardize signer runtime selection in PoX-5 stateful PBT setup
radu-stacks Jun 15, 2026
50ab1a2
added changelog
rob-stacks Jun 15, 2026
3c75749
Add PoX-5 read-only checkers to AssertModelInvariants command
radu-stacks Jun 15, 2026
5c32bc3
remove 500stx boost
rob-stacks Jun 15, 2026
b3f434e
fix: bump clarigen to fix clarigen-types issue
hstove-stacks Jun 15, 2026
b412a83
Merge pull request #7292 from brice-stacks/feat/use-variadic-concat
brice-stacks Jun 15, 2026
bf0613e
Merge pull request #7326 from hstove-stacks/fix/clarigen-with-boot-co…
hstove-stacks Jun 15, 2026
5b3d08b
fixed coinbase intervals
rob-stacks Jun 15, 2026
2b75d43
cleaned up
rob-stacks Jun 15, 2026
e2de1ff
fmt-stacks
rob-stacks Jun 15, 2026
96ab864
fixed sip-031 schedule
rob-stacks Jun 15, 2026
890ee21
Merge pull request #7303 from brice-stacks/feat/staking-post-condition
hstove-stacks Jun 15, 2026
7a3b27f
feat: add capability to pause reward claiming
hstove-stacks Jun 15, 2026
221a7b2
Merge remote-tracking branch 'upstream/pox-wf-integration' into HEAD
hstove-stacks Jun 15, 2026
0ab2e05
fix: package-lock.json update
hstove-stacks Jun 15, 2026
4261550
feat: allow using an unlock height larger than min
hstove-stacks Jun 15, 2026
f60cfa6
feat: unit test for invalid unlock height
hstove-stacks Jun 15, 2026
9b95462
Add contract caller proxy allowance commands to PoX-5 stateful PBT setup
radu-stacks Jun 15, 2026
b2a5f76
Add rollover commands and remaining error paths to PoX-5 stateful PBT…
radu-stacks Jun 16, 2026
f51fed4
Merge branch 'pox-wf-integration' into test/pox-5-stateful-pbt
radu-stacks Jun 16, 2026
8bddeef
refactored code to use constants instead of hardcoded values
rob-stacks Jun 16, 2026
d74e756
Merge branch 'develop' into chore/merge-develop-0616
benjamin-stacks Jun 16, 2026
b43900b
fmt-stacks
rob-stacks Jun 16, 2026
8d85221
fix: verify pox-addr in signer manager callback
hstove-stacks Jun 16, 2026
6b30001
fix: only allow fees up to 99.99%
hstove-stacks Jun 16, 2026
2c25813
fix: return error when no claimable staker rewards are available
hstove-stacks Jun 16, 2026
b6646e0
chore: changelog
hstove-stacks Jun 16, 2026
d0eb1f4
fix: explicit error for invalid height, add test for >= height
hstove-stacks Jun 16, 2026
571772c
chore: changelog
hstove-stacks Jun 16, 2026
4d20622
fix: add fixed npm version to prevent package-lock.json thrash
hstove-stacks Jun 16, 2026
6e9aa5a
chore: changelog
hstove-stacks Jun 16, 2026
3a33177
chore: changelog
hstove-stacks Jun 16, 2026
d60f8c4
Merge pull request #7331 from hstove-stacks/fix/check-pox-addr-signer…
hstove-stacks Jun 16, 2026
ef8f296
refactor: flatten `+` expressions
brice-stacks Jun 16, 2026
baf0f66
Update PoX-5 stateful PBT setup to match latest state
radu-stacks Jun 16, 2026
f0ebb4e
chore: changelog
hstove-stacks Jun 16, 2026
b6b2693
Fix UnstakeSbtc command model update
radu-stacks Jun 16, 2026
720adbb
feat: update integration tests
hstove-stacks Jun 16, 2026
ad2aa74
fix: require npm >= 11.7
hstove-stacks Jun 16, 2026
ec3c7a8
Merge pull request #7336 from brice-stacks/chore/flatten-additions
brice-stacks Jun 16, 2026
772dceb
Merge pull request #7335 from hstove-stacks/fix/npm-version
hstove-stacks Jun 17, 2026
06ccb02
fix: cargo fmt
hstove-stacks Jun 17, 2026
e04ba8e
Merge pull request #7329 from benjamin-stacks/chore/merge-develop-0616
benjamin-stacks Jun 17, 2026
322cb7d
Merge branch 'pox-wf-integration' into test/pox-5-stateful-pbt
radu-stacks Jun 17, 2026
1992b48
Fully reject high-S signature transactions in Epoch 4.0
benjamin-stacks Jun 17, 2026
56f1430
fix changelog file name
benjamin-stacks Jun 17, 2026
5087856
fixed comments
rob-stacks Jun 17, 2026
ba5ab1d
fixed comments [2]
rob-stacks Jun 17, 2026
337ecd2
Improve PoX-5 stateful PBT logging
radu-stacks Jun 17, 2026
8f8c7c1
merge 'pox-wf-integration' into 'fix/max-fee'
hstove-stacks Jun 17, 2026
c168972
feat: add transfer-stranded-rewards, crc
hstove-stacks Jun 17, 2026
8dd7eff
Merge branch 'pox-wf-integration' into feat/pause-rewards
hstove-stacks Jun 17, 2026
9316959
fix: changelog fragment name
hstove-stacks Jun 17, 2026
df9e6bf
Merge pull request #7332 from hstove-stacks/fix/max-fee
hstove-stacks Jun 17, 2026
4341ca4
Merge pull request #7327 from hstove-stacks/feat/variable-unlock-height
hstove-stacks Jun 17, 2026
7db3ec3
clippy fix
rob-stacks Jun 17, 2026
f64e456
merge 'pox-wf-integration' into 'feat/pause-rewards'
hstove-stacks Jun 17, 2026
61b0a7d
Merge pull request #7337 from benjamin-stacks/fix/high-s-epoch-4
benjamin-stacks Jun 17, 2026
481adfd
feat: add `problematic_txs` to block header
brice-stacks Jun 15, 2026
55db665
fix: missing argument
brice-stacks Jun 17, 2026
ba9264c
refactor: protect access to transactions in block
brice-stacks Jun 18, 2026
e43669a
fix: pox body unit tests, add assertions for pause admin
hstove-stacks Jun 18, 2026
a2888b9
Merge pull request #7328 from hstove-stacks/feat/pause-rewards
hstove-stacks Jun 18, 2026
db22f0d
feat: make signers reject any problematic_txs
brice-stacks Jun 18, 2026
aeb2c6e
Remove duplicated simnet locking test
radu-stacks Jun 19, 2026
1d0137e
cost voting epoch-4 gating, minor cleanups and tests
cylewitruk-stacks Jun 22, 2026
d9f50b0
Merge remote-tracking branch 'upstream/pox-wf-integration' into chore…
cylewitruk-stacks Jun 22, 2026
e6d3954
changelog.d entry for cost-voting pre-removal gating
cylewitruk-stacks Jun 22, 2026
cfe5171
crc: typo
cylewitruk-stacks Jun 22, 2026
b26809b
Merge commit 'refs/tmp/pox-wf-integration-latest' into test/pox-5-sta…
radu-stacks Jun 22, 2026
66d2bbe
Merge branch 'pox-wf-integration' of https://github.com/stacks-networ…
radu-stacks Jun 22, 2026
21a0cca
feat: add sBTC contracts to /v2/pox
brice-stacks Jun 22, 2026
8374f46
Merge branch 'develop' into pox-wf-integration
aaronb-stacks Jun 22, 2026
fdae888
fix changelog entry filename
cylewitruk-stacks Jun 22, 2026
2107307
fix: merge artifact in epoch list test constructors
aaronb-stacks Jun 22, 2026
9062501
fix: issues when serializing larger cscriptnums in Clarity
hstove-stacks Jun 22, 2026
7d5b25b
Merge pull request #7344 from aaronb-stacks/chore/develop-to-wf-0622
aaronb-stacks Jun 22, 2026
b34ba06
fix: sum stacking assetmap entries in Epoch-4.0
aaronb-stacks Jun 22, 2026
9b7f7b6
Merge branch 'pox-wf-integration' into feat/mine-problematic-txs
brice-stacks Jun 22, 2026
4d289e8
epoch range support for tests and minor refactors
cylewitruk-stacks Jun 22, 2026
00ba900
refactor: reorganize static checks
brice-stacks Jun 22, 2026
00e1f3e
Add permutation-invariance unit test for `pox_5_make_signer_set`
radu-stacks Jun 23, 2026
d2bdc44
Add uneven multi-staker reward conservation unit test
radu-stacks Jun 23, 2026
5ee0102
fix: integration test updates for new lockup fn api
hstove-stacks Jun 23, 2026
b16bdad
feat: more prop tests and boundary tests for cScriptNum serializer
hstove-stacks Jun 23, 2026
7c98d48
Merge pull request #7346 from aaronb-stacks/fix/epoch4-sum-stacking-a…
aaronb-stacks Jun 23, 2026
69efb54
Merge pull request #7333 from hstove-stacks/fix/staker-unclaimable-re…
hstove-stacks Jun 23, 2026
05f6ac6
refactor: use `with_prev` for better safety
brice-stacks Jun 23, 2026
bb48404
Merge pull request #7341 from cylewitruk-stacks/chore/remove-cost-vot…
cylewitruk-stacks Jun 23, 2026
7d4d4b4
fix: don't use `testing`-only method in `stacks-inspect`
brice-stacks Jun 23, 2026
4081b0c
Merge pull request #7345 from hstove-stacks/fix/cscriptnum-serializing
hstove-stacks Jun 24, 2026
c4840aa
added BITCOIN_TESTNET_GENESIS_BURN_HEIGHT, BITCOIN_TESTNET_STACKS_40_…
rob-stacks Jun 24, 2026
8e56dc6
Merge remote-tracking branch 'upstream/develop' into feat/stacks-epoc…
cylewitruk-stacks Jun 24, 2026
a6c3d61
Add bond reward settlement helpers and assertions and wire into PoX-5…
radu-stacks Jun 24, 2026
c7a080c
feat: add sanitize() invocation in function application for epoch-4.0
aaronb-stacks Jun 24, 2026
320122f
Merge pull request #7343 from brice-stacks/feat/v2-pox-sbtc
brice-stacks Jun 24, 2026
ed81519
Preseed stateful command run counts in PoX-5 stateful PBT setup
radu-stacks Jun 24, 2026
bfcaf1d
test: drop dead pox5 coverage counters + stale smoke comment
simone-stacks Jun 24, 2026
7cc0aad
Merge pull request #7245 from radu-stacks/test/pox-5-stateful-pbt
brice-stacks Jun 24, 2026
55c3e43
Merge pull request #7354 from aaronb-stacks/fix/add-sanitize-in-4.0
aaronb-stacks Jun 24, 2026
b517d02
Use direct PoX error assertions
radu-stacks Jun 25, 2026
9288538
Cover Merkle padding relocation in Merkle tree madhouse-rs machine
radu-stacks Jun 25, 2026
812082f
Tighten Merkle padding relocation test in Merkle madhouse-rs machine
radu-stacks Jun 25, 2026
23e32da
Merge pull request #7323 from brice-stacks/test/pox-5-tests
brice-stacks Jun 25, 2026
8573a3f
feat: update stacks-signer generate-stacking-signature for pox-5
hstove-stacks Jun 26, 2026
da979f6
Merge pull request #7268 from simone-stacks/feat/pox-5-waterfall-prop…
radu-stacks Jun 26, 2026
27656aa
Merge pull request #7324 from rob-stacks/feat/update_coinbase_interva…
rob-stacks Jun 26, 2026
d45347f
feat: rename to `generate-staking-signature`
hstove-stacks Jun 26, 2026
30fd53a
chore: add panics to bond-admin configuration during mainnet
aaronb-stacks Jun 26, 2026
f3f3fb2
fix: readme for stacks-signer
hstove-stacks Jun 26, 2026
e4b7e11
Merge pull request #7357 from hstove-stacks/feat/pox-5-signer-sig-cli
hstove-stacks Jun 26, 2026
85f2482
remove global variable dependence from tests
aaronb-stacks Jun 29, 2026
3dd7245
Merge pull request #7360 from aaronb-stacks/fix/pox-5-mainnet-conf-as…
aaronb-stacks Jun 29, 2026
8920a2a
Merge branch 'develop' into develop-to-pox-wf
brice-stacks Jun 30, 2026
c744bf5
Merge pull request #7365 from brice-stacks/develop-to-pox-wf
brice-stacks Jun 30, 2026
6c66fba
Merge branch 'pox-wf-integration' into feat/mine-problematic-txs
brice-stacks Jun 30, 2026
81fa003
test: add tests for processing problematic txs
brice-stacks Jun 30, 2026
7020e64
fix: update test header version
brice-stacks Jun 30, 2026
d5c317e
fix: address special_map off-by-one epoch 4.0 gated
federico-stacks Jul 1, 2026
7cc7100
test: add consensus unit tests for special_map fix
federico-stacks Jul 1, 2026
0df903c
chore: add changelog entry
federico-stacks Jul 1, 2026
1c6b682
fix: enforce strict signer signature ordering starting in epoch 4.0
brice-stacks Jun 30, 2026
789fb12
Merge pull request #7369 from brice-stacks/feat/mine-problematic-txs
brice-stacks Jul 1, 2026
9cb35f6
crc: adopt improved epoch gating style
federico-stacks Jul 2, 2026
7d49787
fix: tuple merge epoch40 gated fix for both static and runtime
federico-stacks Jul 2, 2026
334e22c
test: add unit tests for tuple merge
federico-stacks Jul 2, 2026
edf35f3
chore: improve test docstring
federico-stacks Jul 2, 2026
2c79f49
chore: add changelog entry
federico-stacks Jul 2, 2026
d78f15a
Merge pull request #7373 from federico-stacks/fix/special-map-off-by-one
federico-stacks Jul 2, 2026
f089848
Merge pull request #7377 from federico-stacks/fix/tuple-merge-gated
federico-stacks Jul 3, 2026
8299ba2
chore: merge develop into pox-wf-integration addressing conflicts
federico-stacks Jul 3, 2026
e088e06
fix: trait compliance surfaces cost error. Epoch40 gated
federico-stacks Jul 3, 2026
08a71b0
chore: improve docstring
federico-stacks Jul 3, 2026
05442dc
chore: rename propagate_or_incompatible
federico-stacks Jul 3, 2026
8369301
chore: add changelog entry
federico-stacks Jul 3, 2026
a92fd80
chore: fix fmt
federico-stacks Jul 3, 2026
c5c0474
Merge pull request #7380 from federico-stacks/chore/merge-develop-int…
federico-stacks Jul 3, 2026
54cd350
Merge branch 'pox-wf-integration' into fix/incompatible-trait-hide-co…
federico-stacks Jul 3, 2026
d9ce3c6
chore: fix docstring
federico-stacks Jul 3, 2026
9a478ca
fix: reject unlock heights >500 million
hstove-stacks Jul 3, 2026
4b0cdec
crc: improve mask_incompatible_or_propagate_error logic
federico-stacks Jul 6, 2026
20d2439
feat: reduce readCount cost of `stake` by 25%
hstove-stacks Jul 1, 2026
abdffd5
Merge pull request #7383 from hstove-stacks/fix/timelock-exp
hstove-stacks Jul 6, 2026
2682059
feat: improved test around `stake` optimization changes
hstove-stacks Jul 6, 2026
ea2211a
Merge branch 'pox-wf-integration' into feat/stake-cost-reduction
hstove-stacks Jul 6, 2026
4ede2ce
fix: change default epoch for consistency
brice-stacks Jul 7, 2026
0174c65
Merge branch 'pox-wf-integration' into fix/out-of-order-signatures
brice-stacks Jul 7, 2026
0d25268
chore: update `is_rc_start` in log
brice-stacks Jul 7, 2026
1191511
doubled read costs
rob-stacks Jul 7, 2026
de8d6ec
added test for read budget
rob-stacks Jul 7, 2026
ef081bd
Merge pull request #7392 from brice-stacks/chore/fix-log
brice-stacks Jul 7, 2026
ea04242
updated snapshots
rob-stacks Jul 7, 2026
a346a90
fix: update snapshots after 9a478ca90f9687b43546a513623d649b56edf9d1
brice-stacks Jul 7, 2026
cee288e
Merge pull request #7397 from brice-stacks/fix/snapshots
hstove-stacks Jul 7, 2026
3e6eebc
Merge branch 'pox-wf-integration' into feat/stake-cost-reduction
hstove-stacks Jul 7, 2026
e81668b
Merge branch 'pox-wf-integration' into fix/out-of-order-signatures
brice-stacks Jul 7, 2026
4a5700f
Merge branch 'pox-wf-integration' of github.com:stacks-network/stacks…
hstove-stacks Jul 7, 2026
5450fb9
fix: miner-spend estimators for pox-5
brice-stacks Jul 7, 2026
ecb46bc
fix: update snapshots
hstove-stacks Jul 7, 2026
5dc2019
Merge branch 'feat/stake-cost-reduction' of github.com:hstove-stacks/…
hstove-stacks Jul 7, 2026
1e5aa3d
Merge pull request #7388 from hstove-stacks/feat/stake-cost-reduction
hstove-stacks Jul 7, 2026
9d7f393
fix: fallback for epoch when buffering blocks
brice-stacks Jul 7, 2026
cda844b
Merge branch 'pox-wf-integration' into fix/miner-spend-estimators
brice-stacks Jul 7, 2026
cd2b328
Merge pull request #7381 from federico-stacks/fix/incompatible-trait-…
federico-stacks Jul 8, 2026
5ff032e
Merge pull request #7398 from brice-stacks/fix/miner-spend-estimators
brice-stacks Jul 8, 2026
ef337f0
test: defer assertions until after seed thread exits
brice-stacks Jul 8, 2026
f328eef
merging
rob-stacks Jul 8, 2026
d6c90bf
fixed snapshot
rob-stacks Jul 8, 2026
84686ec
Merge pull request #7394 from rob-stacks/feat/epoch_4_doubled_reads
rob-stacks Jul 8, 2026
939232a
Merge pull request #7016 from brice-stacks/fix/out-of-order-signatures
brice-stacks Jul 8, 2026
e9dcd94
Merge branch 'develop' into feat/stacks-epoch-id-range-ops-for-testing
cylewitruk-stacks Jul 8, 2026
6853db9
Merge branch 'develop' into pox-wf-integration
aaronb-stacks Jul 8, 2026
b8934f5
chore: add clippy ignore for too-many-args
aaronb-stacks Jul 8, 2026
a90b968
Merge pull request #7400 from aaronb-stacks/chore/develop-pox-wf-0708
aaronb-stacks Jul 9, 2026
3943e2f
fix: handle edge case where a 0-sat bitcoin output could construct a …
aaronb-stacks Jul 9, 2026
7a2ce1d
Merge pull request #7406 from aaronb-stacks/fix/4.0-empty-commit
aaronb-stacks Jul 9, 2026
3f6771a
Merge pull request #7347 from cylewitruk-stacks/feat/stacks-epoch-id-…
cylewitruk-stacks Jul 9, 2026
5eec56d
fix: conflicts from merge with develop
hstove-stacks Jul 9, 2026
7c23504
Merge remote-tracking branch 'upstream/develop' into fix/develop-to-p…
hstove-stacks Jul 9, 2026
847f2e2
Merge pull request #7407 from hstove-stacks/fix/develop-to-pox-wf-con…
hstove-stacks Jul 9, 2026
b3823f1
Merge pull request #7197 from stacks-network/pox-wf-integration
aaronb-stacks Jul 9, 2026
e582e94
Initial scaffolding for 4.0.0 release
dhaney-stacks Jul 8, 2026
d4a585a
feat: simplified release process
brice-stacks Jul 10, 2026
fd2edc7
fix: update nix
brice-stacks Jul 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
28 changes: 7 additions & 21 deletions .github/actions/release/action.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
name: Create Releases
description: |
Wrapper workflow to create GitHub Releases
Wrapper workflow to create the GitHub Release

inputs:
node_tag:
description: "Node Release Tag"
required: true
signer_tag:
description: "Signer Release Tag"
tag:
description: "Release Tag (e.g. 4.0.0)"
required: true
digest_manifest:
description: "Path to docker digest manifest directory (optional)"
Expand All @@ -19,24 +16,13 @@ runs:
steps:
# Checkout the code
- name: Checkout the latest code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
ref: ${{ github.event.pull_request.head.sha || github.ref }}

# Creates the node release
- name: Create Node Release
if: inputs.node_tag != ''
uses: ./.github/actions/release/create-github-release
with:
tag: ${{ inputs.node_tag }}
release_type: stacks-core
digest_manifest: ${{ inputs.digest_manifest }}

# Creates the signer release
- name: Create Signer Release
if: inputs.signer_tag != ''
# Creates the combined release
- name: Create Release
uses: ./.github/actions/release/create-github-release
with:
tag: ${{ inputs.signer_tag }}
release_type: stacks-signer
tag: ${{ inputs.tag }}
digest_manifest: ${{ inputs.digest_manifest }}
37 changes: 10 additions & 27 deletions .github/actions/release/create-github-release/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,7 @@ description: |

inputs:
tag:
description: "Release tag (bare version, no 'signer-' prefix for signer releases)"
required: true
release_type:
description: "Release type: stacks-core or stacks-signer"
description: "Release tag (e.g. 4.0.0)"
required: true
digest_manifest:
description: "Path to docker digest manifest file (optional)"
Expand All @@ -18,51 +15,37 @@ runs:
using: "composite"
steps:
# Downloads the artifacts built in `create-source-binary`
# - the archives contain both the stacks-node and stacks-signer binaries
- name: Download Artifacts
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
pattern: "${{ github.sha }}-${{ inputs.release_type }}*"
pattern: "${{ github.sha }}-stacks-core*"
path: release
merge-multiple: true

# Generate a checksums file to be added to the release page
- name: Generate Checksums
uses: ./.github/actions/release/generate-checksum
with:
artifact_download_pattern: "${{ github.sha }}-${{ inputs.release_type }}*"
artifact_download_pattern: "${{ github.sha }}-stacks-core*"

# Generate the release body from the template and changelog
# Generate the release body from the template and changelogs
- name: Draft Release Body
id: draft
shell: bash
env:
RELEASE_TYPE: ${{ inputs.release_type }}
VERSION: ${{ inputs.tag }}
CHANGELOG: CHANGELOG.md
SIGNER_CHANGELOG: stacks-signer/CHANGELOG.md
TEMPLATE: .github/actions/release/create-github-release/release.template
REPO: ${{ github.repository }}
DIGEST_MANIFEST: ${{ inputs.digest_manifest }}
run: |
# Strip "signer-" prefix from tag if present so VERSION is always bare
VERSION="${{ inputs.tag }}"
VERSION="${VERSION#signer-}"

if [[ "${RELEASE_TYPE}" == "stacks-signer" ]]; then
CHANGELOG="stacks-signer/CHANGELOG.md"
else
CHANGELOG="CHANGELOG.md"
fi

VERSION="${VERSION}" \
CHANGELOG="${CHANGELOG}" \
TEMPLATE="${TEMPLATE}" \
RELEASE_TYPE="${RELEASE_TYPE}" \
REPO="${REPO}" \
DIGEST_MANIFEST="${DIGEST_MANIFEST}" \
bash ./.github/scripts/draft_release.sh
run: bash ./.github/scripts/draft_release.sh

# Upload the release archives with the checksums file
# - pre-populate the release body text
- name: Upload Release
uses: softprops/action-gh-release@b4309332981a82ec1c5618f44dd2e27cc8bfbfda # v3.0.0
uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
with:
name: "Release ${{ inputs.tag }}"
tag_name: ${{ inputs.tag }}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
This release contains bugfixes and improvements to the stacks-node and stacks-signer binaries, ensuring more consistent block production.
This release is compatible with chainstate directories from ${node_epoch}.

${companion_line}
Comment thread
dhaney-stacks marked this conversation as resolved.

This release is recommended for all Stacks node operators.
This release is recommended for all Stacks node and signer operators.

${changelog_section}

${signer_changelog_section}

${docker_pulls_with_digests}
2 changes: 2 additions & 0 deletions .github/scripts/bitcoin_tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,8 @@ tests::nakamoto_integrations::large_mempool_next_random_fee
tests::nakamoto_integrations::larger_mempool
tests::nakamoto_integrations::check_block_info_rewards
tests::signer::v0::larger_mempool
# This test takes too long run in CI
tests::pox_5_integrations::check_pox_5_register_for_second_bond_no_downtime
EOF

## ── Append tests tagged with ci_skip to the exclude list ────────────────────
Expand Down
114 changes: 40 additions & 74 deletions .github/scripts/check_release.sh
Original file line number Diff line number Diff line change
@@ -1,21 +1,24 @@
#!/usr/bin/env bash

# Checks whether the current branch name matches a release pattern and, if so,
# derives the release tags and validates them against versions.toml.
# Checks whether the current branch name matches the release pattern and, if so,
# derives the release tag and validates it against versions.toml.
#
# The node and signer share a single version (see versions.toml) and are
# released together: a single `release/x.x.x` branch produces one combined
# GitHub release containing both the stacks-core and stacks-signer
# artifacts/images at that version.
#
# Required env vars:
# BRANCH - branch name from github.ref_name (e.g. release/1.0.0.0.0)
# BRANCH - branch name from github.ref_name (e.g. release/4.0.0)
#
# Exit behaviour:
# - Branch matches a release pattern → validates versions.toml, writes outputs, exits 0
# - Branch does not match → exits 0 (all outputs empty/false; downstream
# jobs guard themselves with is_node/signer_release checks)
# - Branch matches the release pattern → validates versions.toml, writes outputs, exits 0
# - Branch does not match → exits 0 (all outputs empty/false; downstream
# jobs guard themselves with is_release checks)
# Outputs:
# GITHUB_OUTPUT - Path to the GitHub Actions output file (set by runner); prints to stderr if unset (via logging.sh)
# node_tag - node release tag (e.g. 1.0.0.0.0) empty for signer-only releases
# signer_tag - signer release tag (e.g. signer-1.0.0.0.0.0)
# is_node_release - "true" if this is a node release branch
# is_signer_release - "true" if this is a signer release branch
# tag - release tag (e.g. 4.0.0)
# is_release - "true" if this is a release branch
set -euo pipefail

# Load logging functions from logging.sh for color and standardized output
Expand All @@ -25,56 +28,36 @@ source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/logging.sh"
## ── Validate required inputs ────────────────────────────────────────────────
: "${BRANCH:?BRANCH is required}"

## ── Release branch patterns ─────────────────────────────────────────────────
# Node release: release/x.x.x.x.x (5-part version, optional -rcN suffix)
# Signer release: release/signer-x.x.x.x.x.x (6-part version, optional -rcN suffix)
## ── Release branch pattern ──────────────────────────────────────────────────
# Release: release/x.x.x (3-part version, major.minor.revision, optional -rcN suffix)
versions_file="versions.toml"
node_key="stacks_node_version"
signer_key="stacks_signer_version"
version_key="stacks_node_version"

node_version_regex="([0-9]+\.){4}[0-9]+(-rc[0-9]+)?"
signer_version_regex="([0-9]+\.){5}[0-9]+(-rc[0-9]+)?"
version_regex="([0-9]+\.){2}[0-9]+(-rc[0-9]+)?"

release_prefix="release/"
signer_prefix="release/signer-"

node_release_regex="^${release_prefix}${node_version_regex}$"
signer_release_regex="^${signer_prefix}${signer_version_regex}$"
release_regex="^${release_prefix}${version_regex}$"

## ── Initialise output variables ─────────────────────────────────────────────
node_tag=""
signer_tag=""
is_node_release=false
is_signer_release=false
tag=""
is_release=false

## ── Match branch against release patterns -----------------------------------
# Signer must be tested first — its prefix (release/signer-) is a superset of
# the node prefix (release/), so a signer branch would also match the node regex.
if [[ "${BRANCH}" =~ ${signer_release_regex} ]]; then
signer_tag=$(echo "${BRANCH}" | sed "s|^${signer_prefix}||")
is_signer_release=true
elif [[ "${BRANCH}" =~ ${node_release_regex} ]]; then
node_tag=$(echo "${BRANCH}" | sed "s|^${release_prefix}||")
## Derive the signer tag by appending an extra .0 version component
signer_tag=$(echo "${node_tag}" | sed 's/\(-[^-]*\)*$/.0\1/')
is_node_release=true
is_signer_release=true
## ── Match branch against the release pattern ────────────────────────────────
if [[ "${BRANCH}" =~ ${release_regex} ]]; then
tag=$(echo "${BRANCH}" | sed "s|^${release_prefix}||")
is_release=true
else
# Not a release branch — write empty/false outputs and exit cleanly so that
# downstream jobs can evaluate their own is_node/signer_release conditions.
# downstream jobs can evaluate their own is_release conditions.
warn "Branch $(hl "${BRANCH}") does not match a release pattern. Skipping."
if [[ -n "${GITHUB_OUTPUT:-}" ]]; then
{
echo "node_tag="
echo "signer_tag="
echo "is_node_release=false"
echo "is_signer_release=false"
echo "tag="
echo "is_release=false"
} >> "${GITHUB_OUTPUT}"
else
info "node_tag="
info "signer_tag="
info "is_node_release=false"
info "is_signer_release=false"
info "tag="
info "is_release=false"
fi
exit 0
fi
Expand All @@ -85,45 +68,28 @@ if [[ ! -f "${versions_file}" ]]; then
exit 1
fi

node_version=$(grep "^${node_key}" "${versions_file}" | sed -E 's/.*=[[:space:]]*"([^"]+)"/\1/')
signer_version=$(grep "^${signer_key}" "${versions_file}" | sed -E 's/.*=[[:space:]]*"([^"]+)"/\1/')

if [[ -z "${node_version}" ]]; then
error "$(hl "${node_key}") not found in $(hl "${versions_file}")"
exit 1
fi

if [[ -z "${signer_version}" ]]; then
error "$(hl "${signer_key}") not found in $(hl "${versions_file}")"
exit 1
fi
version=$(grep "^${version_key}" "${versions_file}" | sed -E 's/.*=[[:space:]]*"([^"]+)"/\1/')

if [[ "${is_node_release}" == "true" && "${node_version}" != "${node_tag}" ]]; then
error "node version in $(hl "${versions_file}") ($(hl "${node_version}")) does not match branch tag ($(hl "${node_tag}"))"
if [[ -z "${version}" ]]; then
error "$(hl "${version_key}") not found in $(hl "${versions_file}")"
exit 1
fi

if [[ "${signer_version}" != "${signer_tag}" ]]; then
error "signer version in $(hl "${versions_file}") ($(hl "${signer_version}")) does not match branch tag ($(hl "${signer_tag}"))"
if [[ "${version}" != "${tag}" ]]; then
error "version in $(hl "${versions_file}") ($(hl "${version}")) does not match branch tag ($(hl "${tag}"))"
exit 1
fi

info "Node version: $(hl "${node_version}")"
info "Signer version: $(hl "${signer_version}")"
info "Is node release: $(hl "${is_node_release}")"
info "Is signer release:$(hl "${is_signer_release}")"
info "Version: $(hl "${version}")"
info "Is release: $(hl "${is_release}")"

## ── Write outputs ───────────────────────────────────────────────────────────
if [[ -n "${GITHUB_OUTPUT:-}" ]]; then
{
echo "node_tag=${node_tag}"
echo "signer_tag=${signer_tag}"
echo "is_node_release=${is_node_release}"
echo "is_signer_release=${is_signer_release}"
echo "tag=${tag}"
echo "is_release=${is_release}"
} >> "${GITHUB_OUTPUT}"
else
info "node_tag=${node_tag}"
info "signer_tag=${signer_tag}"
info "is_node_release=${is_node_release}"
info "is_signer_release=${is_signer_release}"
info "tag=${tag}"
info "is_release=${is_release}"
fi
Loading