-
Notifications
You must be signed in to change notification settings - Fork 87
feat(tbtc/signer): Rust FROST/ROAST signer (distributed DKG, interactive-only signing, FFI ABI 2.0) #4005
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
mswilkison
wants to merge
244
commits into
main
Choose a base branch
from
extraction/frost-signer-mirror-2026-05-26
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
feat(tbtc/signer): Rust FROST/ROAST signer (distributed DKG, interactive-only signing, FFI ABI 2.0) #4005
Changes from 3 commits
Commits
Show all changes
244 commits
Select commit
Hold shift + click to select a range
335ce60
feat(tbtc/signer): mirror FROST/ROAST Rust signer from tBTC monorepo
mswilkison bfd7658
extraction: apply allowlisted-divergence transformations to signer sc…
mswilkison 551bd42
ci(tbtc-signer): add formal verification workflow (moved from tbtc-v2)
mswilkison d1a1424
extraction: fix signer formal-verification CI (chmod + vector path)
mswilkison adb6f64
extraction: mirror p2tr-signature-fraud-v0 vector + fix test path
mswilkison 220cff2
fix(tbtc-signer): harden signer validation and retries
mswilkison c12c593
ci(tbtc-signer): update tla tools checksum
mswilkison 2e61c26
ci(tbtc-signer): add full rust checks
mswilkison 2930091
fix(tbtc-signer): preserve cached build tx retries
mswilkison 9cfcde6
fix(tbtc-signer): harden production defaults
mswilkison c1e72f5
fix(tbtc-signer): close hardening follow-ups
mswilkison 506959d
Expose interactive FROST DKG signer ABI
mswilkison 2e0a054
Support Taproot tweaked signer rounds
mswilkison 3a259ec
Support seeded tbtc-signer DKG
mswilkison 4c9c654
Reuse signer rounds across member identifiers
mswilkison 8f5aec7
Harden Taproot signer aggregation
mswilkison a62cb26
Preserve legacy signer round fingerprints
mswilkison 797417f
Clarify signer exported key boundary
mswilkison e5b4f16
Stabilize signer round reuse fingerprints
mswilkison 815ea72
Classify malformed DKG seeds as validation errors
mswilkison 64d9d64
Assert signer round retry idempotency
mswilkison 2380c8c
Support Taproot tweaked signer rounds (#4018)
mswilkison 4f775b9
Document interactive FROST nonce contract
mswilkison 57461c3
Zeroize interactive FROST secret buffers
mswilkison 6179a3f
Merge signer mirror updates into interactive FROST ABI
mswilkison abdae01
Expose interactive FROST DKG signer ABI (#4011)
mswilkison 997ee1b
Pin concrete coordinator vector in order-independence test
mswilkison ac2d5e8
test(tbtc/signer): pin concrete coordinator vector in order-independe…
mswilkison 299d79e
hardening(tbtc/signer): bind full transcript into round nonces, gate …
mswilkison 80c3db8
unify(tbtc/signer): adopt RFC-21 Annex A coordinator-seed derivation …
mswilkison 5b46db6
deps(tbtc/signer): move frost-secp256k1-tr off the release-candidate …
mswilkison 686ef84
test(tbtc/signer): replay the 600-case cross-language coordinator-shu…
mswilkison 710e59a
fix(tbtc/signer): seed the coordinator shuffle from the padded raw me…
mswilkison 0b1f4db
docs(tbtc/signer): pin v2 nonce-seed encoding invariants in a comment
mswilkison 8afe502
fix(tbtc/signer): bind full PublicKeyPackage into round-nonce seed (v3)
mswilkison fadbb3c
test(tbtc/signer): replay expanded corpus; document port coverage limits
mswilkison c5b0176
deps(tbtc/signer): move frost-secp256k1-tr off the rc pin to =3.0.0 f…
mswilkison f3f0ac4
test(tbtc/signer): replay the 600-case cross-language coordinator-shu…
mswilkison 15a7a3e
unify(tbtc/signer): adopt RFC-21 Annex A coordinator-seed derivation …
mswilkison d47f009
hardening(tbtc/signer): bind full transcript into round nonces; gate …
mswilkison 99e157c
refactor(tbtc/signer): split 18k-line engine.rs into focused engine/ …
mswilkison 9b41d45
docs(tbtc/signer): review follow-ups for the engine split
mswilkison 97e3bb5
refactor(tbtc/signer): split 18k-line engine.rs into focused engine/ …
mswilkison 71083e7
feat(tbtc/signer): install TBTC_SIGNER_* knobs via init-time FFI config
mswilkison 9226be1
fix(tbtc/signer): validate init config privately before publishing it
mswilkison 5fdb096
fix(tbtc/signer): validate key-provider settings at config init
mswilkison 7beceec
fix(tbtc/signer): validate the provenance gate at config init
mswilkison f77154b
feat(tbtc/signer): install TBTC_SIGNER_* knobs via init-time FFI conf…
mswilkison 1d83147
docs(tbtc/signer): pin frost dependency audit status; attestation cad…
mswilkison 484c377
docs(tbtc/signer): pin frost dependency audit status; attestation cad…
mswilkison 153b14b
docs(tbtc/signer): record 2026-06-12 architecture decisions in gates doc
mswilkison 54b041e
docs(tbtc/signer): commit the transitional deterministic path for del…
mswilkison 6b74e5d
docs(tbtc/signer): correct the evidence-retention status in the decis…
mswilkison ee80aef
docs(tbtc/signer): record 2026-06-12 architecture decisions in gates …
mswilkison 82a5ad6
docs(tbtc/signer): record the init-config fatality decision
mswilkison afde959
docs(tbtc/signer): scope the config-path variable to the service unit
mswilkison 00fc651
docs(tbtc/signer): record the init-config fatality decision (#4048)
mswilkison 36c6f5f
docs(tbtc/signer): Phase 7 interactive-session spec freeze
mswilkison 73dc594
docs(tbtc/signer): close review findings in the Phase 7 spec
mswilkison 5b05e20
docs(tbtc/signer): freeze the Phase 7 spec; record section-10 decisions
mswilkison 5d65712
docs(tbtc/signer): Phase 7 interactive-session spec freeze (#4049)
mswilkison cde0946
docs(tbtc/signer): Phase 7.0 sidecar transport addendum
mswilkison 769f9d7
feat(tbtc/signer): Phase 7.1 hardened interactive signing session
mswilkison 90cb7c3
fix(tbtc/signer): free interactive session state on completion and re…
mswilkison 36055a3
fix(tbtc/signer): declare the Phase 7.1 interactive FFI in the C header
mswilkison fb6f33d
fix(tbtc/signer): close firewall bypass, attempt-id casing, abort sweep
mswilkison 03fb6d6
fix(tbtc/signer): apply session lifecycle and quarantine gates on int…
mswilkison 0d739a5
fix(tbtc/signer): re-evaluate signing gates at the Round2 share release
mswilkison edf7952
fix(tbtc/signer): bound interactive session registry and validate thr…
mswilkison e45b975
docs(tbtc/signer): scope the sidecar secret-boundary claim to signing
mswilkison 289df95
fix(tbtc/signer): resolve interactive key material from DKG state, no…
mswilkison 4940a9c
fix(tbtc/signer): quarantine the full Round2 subset; reject phantom i…
mswilkison e4a8734
feat(tbtc/signer): Phase 7.1 hardened interactive signing session (#4…
mswilkison 472dfa6
docs(tbtc/signer): Phase 7.0 sidecar transport addendum (#4050)
mswilkison f3ab6b5
feat(tbtc/signer): Phase 7.2a InteractiveAggregate with attributable …
mswilkison 24f4eb2
fix(tbtc/signer): defer attributable aggregate blame until inputs are…
mswilkison 312e106
docs(tbtc/signer): align aggregate FFI/API contract with fail-closed …
mswilkison f5a08a6
fix(tbtc/signer): sweep expired interactive state in InteractiveAggre…
mswilkison f96a54c
feat(tbtc/signer): Phase 7.2a InteractiveAggregate (tweaked, self-ver…
mswilkison 33f673c
test(tbtc/signer): make the test lock poison-resilient and env hermetic
mswilkison d474a4f
fix(tbtc/signer): iterate env with vars_os in the test baseline reset
mswilkison a7c1c33
test(tbtc/signer): poison-resilient test lock + hermetic env baseline…
mswilkison a9a08c4
docs(tbtc/signer): Phase 7.2b design note - package envelopes + bound…
mswilkison 53b23b4
docs(tbtc/signer): Phase 7.2b open-questions discussion doc for revie…
mswilkison 479b58b
docs(tbtc/signer): resolve 7.2b open questions per Gemini+Codex review
mswilkison 22bfa04
docs(tbtc/signer): fold in Codex re-review P1s + review-consistency f…
mswilkison 4b1bf46
docs(tbtc/signer): pin AllCheaters aggregate + clear stale refs (review)
mswilkison 1546239
docs(tbtc/signer): elected-coordinator + retain-on-reject + tweak-awa…
mswilkison 50bdbac
docs(tbtc/signer): §3 wording — retain on receipt, not on signing
mswilkison 7f78618
docs(tbtc/signer): context-bound share auth + group key in verify-share
mswilkison 94eba3b
docs(tbtc/signer): verify-share selector + durable key source
mswilkison 2b87a25
docs(tbtc/signer): record Phase 7.2b sign-off + durable-retention con…
mswilkison b74f209
feat(tbtc/signer): Phase 7.2b-1 InteractiveAggregate completion marker
mswilkison 131c642
fix(tbtc/signer): make InteractiveAggregate idempotent (Codex P2)
mswilkison 87b579c
docs(tbtc/signer): Phase 7.2b §6 idempotent aggregate re-emission
mswilkison c50ac59
fix(tbtc/signer): return persisted signature on aggregate race (Codex…
mswilkison e2e7fb2
docs(tbtc/signer): resolve Phase 7.2b doc review nits (Codex/Gemini P3)
mswilkison 8bca31e
fix(tbtc/signer): validate completion record against request on re-em…
mswilkison d115781
docs(tbtc/signer): §6 validate aggregate re-emission against the request
mswilkison 77a16a2
fix(tbtc/signer): reject empty attempt_id in InteractiveAggregate (Co…
mswilkison a07e8dc
docs(tbtc/signer): drop second stale pending-sign-off note (Codex P3)
mswilkison 2e062ff
refactor(tbtc/signer): simplify 7.2b-1 to completion marker + reject
mswilkison 3d690bb
docs(tbtc/signer): revert 7.2b-1 design to completion marker + reject
mswilkison 9d0accf
docs(tbtc/signer): Phase 7.2b design note — package envelopes + bound…
mswilkison d57237d
feat(tbtc/signer): Phase 7.2b-1 InteractiveAggregate completion marke…
mswilkison 2d0a37a
feat(tbtc/signer): Phase 7.2b-3 candidate-culprit detection in Intera…
mswilkison 16b0483
fix(tbtc/signer): redact secret material in persisted-struct Debug
piotr-roslaniec e8e2498
fix(tbtc/signer): stop reflecting raw panic payloads across FFI in pr…
piotr-roslaniec 3d4ddc3
fix(tbtc/signer): canonicalize interactive message_hex casing for ide…
piotr-roslaniec ad04c42
fix(tbtc/signer): count interactive abort success only on real aborts
piotr-roslaniec 54d0958
refactor(tbtc/signer): assert (not re-test) the differing-attempt inv…
piotr-roslaniec 8cc3071
fix(tbtc/signer): omit absent script_tree_hex in BuildTaprootTxRequest
piotr-roslaniec 13a1e0f
docs(tbtc/signer): fix stale key_package_hex comment in open fingerprint
piotr-roslaniec fa26cc3
docs(tbtc/signer): document Phase 7 interactive signing endpoints in …
piotr-roslaniec 4867b25
fix(tbtc/signer): use parseable placeholder for sample override trust…
piotr-roslaniec cbb9d58
docs(tbtc/signer): repoint mirrored doc paths to keep-core layout
piotr-roslaniec e34291d
docs(tbtc/signer): correct spec-freeze section 4 to match the shipped…
piotr-roslaniec 8d7d661
ci(tbtc/signer): add blocking cargo-deny advisory gate
piotr-roslaniec bd73bad
test(tbtc/signer): fix env-race flake in interactive FFI roundtrip test
piotr-roslaniec dde5e79
fix(tbtc/signer): harden admission override replay registry
piotr-roslaniec 65a678e
docs(tbtc/signer): frame the domain tag in roast phase 0 attempt-id f…
piotr-roslaniec 5123dc3
test(tbtc/signer): pin int31n_fast rejection branch against Go math/rand
piotr-roslaniec ea29834
docs(tbtc/signer): mark TEE/rollout TLA models as planned, not shipped
piotr-roslaniec 3524089
docs(tbtc/signer): clarify crate is unconsumed; add activation re-rev…
piotr-roslaniec b8407f6
fixup(tbtc/signer): align candidate culprits to u16 member ids + mult…
mswilkison 023b058
Phase 7.2b-3: candidate-culprit detection in InteractiveAggregate (#4…
mswilkison b8b84dc
docs(tbtc/signer): record D1 exclusion-trust assumption at the activa…
piotr-roslaniec b0677c3
feat(tbtc/signer): Phase 7.2b-4 engine verify_signature_share FFI (ba…
mswilkison de93bc4
Fold #4068 review: header prototype + in-band Indeterminate for bad t…
mswilkison 7332303
Fold #4068 review: sweep expired interactive state in verify_signatur…
mswilkison 6af4d14
Fold #4068 review: judge share bytes only after membership context is…
mswilkison 0e6f358
Fold #4068 review: require package membership before blaming malforme…
mswilkison 129830d
Phase 7.2b-4: engine verify_signature_share FFI (backs Go Round2Share…
mswilkison 43b649d
Phase 7.2b-4: tweaked-root (script-path) verify_signature_share equiv…
mswilkison 2bd81fa
Phase 7.2b-4: tweaked-root verify_signature_share equivalence test (#…
mswilkison d12909a
frost(7.3): engine-side DeriveInteractiveAttemptContext helper
mswilkison 7ad5fa5
frost(7.3): declare derive helper in the C header + clarify threshold…
mswilkison f87fc77
frost(7.3): reject zero threshold in the derive helper (Codex re-review)
mswilkison 0fdea53
frost(7.3): mirror session-open front-door checks in the derive helper
mswilkison 9fd9845
Phase 7.3: engine-side DeriveInteractiveAttemptContext helper (#4077)
mswilkison e9075ac
feat(tbtc/signer): member-key interactive signing state for multi-sea…
mswilkison 2684dde
fix(tbtc/signer): refuse Round2 for an already-aggregated attempt (re…
mswilkison 797aa71
fix(tbtc/signer): bind the interactive completion marker to the messa…
mswilkison 6b2e2d0
fix(tbtc/signer): honor legacy bare aggregate completion markers (re-…
mswilkison 73fabaf
fix(tbtc/signer): bind the taproot root into the completion marker (r…
mswilkison 49fdcbc
fix(tbtc/signer): free finalized non-signing siblings on aggregate (r…
mswilkison d857577
fix(tbtc/signer): bind the aggregate-cleanup filter to the message to…
mswilkison ca6ee3b
feat(tbtc/signer): member-key interactive signing state for multi-sea…
mswilkison 13a8103
test(tbtc/signer): multi-seat capacity new-vs-replacement + abort-by-…
mswilkison 83b7bff
test(tbtc/signer): multi-seat capacity new-vs-replacement + abort-by-…
mswilkison 25e4f27
feat(tbtc/signer): export a structured FFI contract version (frost_tb…
mswilkison 6e3718b
fix(tbtc/signer): declare frost_tbtc_abi_version in the public C header
mswilkison d7d96bf
feat(tbtc/signer): export a structured FFI contract version (frost_tb…
mswilkison cbc5e37
fix(tbtc/signer): validate incoming attempt context before clearing a…
mswilkison 3b481ad
fix(tbtc/signer): fail closed on unknown profile and degenerate signi…
mswilkison 588cc4b
ci(tbtc/signer): pin cargo dependency resolution with --locked
mswilkison 921b009
fix(tbtc/signer): validate incoming attempt context before clearing a…
mswilkison 95ecec4
fix(tbtc/signer): fail closed on unknown profile and degenerate signi…
mswilkison b548ac4
ci(tbtc/signer): pin cargo dependency resolution with --locked (#4113)
mswilkison 4b40a5a
perf(tbtc/signer): resolve state-encryption key off-lock, deferring t…
mswilkison 77488ee
fix(tbtc/signer): resolve the state key under the ENGINE_STATE guard,…
mswilkison a1232c7
fix(tbtc/signer): resolve the state-encryption key under the ENGINE_S…
mswilkison 501dffb
fix(signer): defer sign-round clear + persist before idempotent serve
mswilkison f0ae82f
fix(signer): clear sign-round persist marker on any successful persist
mswilkison 396a80e
fix(signer): scope sign-round persist-pending marker per session
mswilkison 4587081
fix(signer): defer sign-round clear + persist before idempotent serve…
mswilkison af1cc10
fix(tbtc/signer): gate plaintext state, zeroize FFI buffers, allow pe…
mswilkison ede5c9e
feat(tbtc/signer): enforce signing-policy firewall in production with…
mswilkison 6d2a4df
fix(tbtc/signer): address self-review findings on the review-fix PR
mswilkison 816be16
docs(tbtc/signer): document firewall production force-on + built-in d…
mswilkison 8d873e7
feat(tbtc/signer): enforce signing-policy firewall in production with…
mswilkison 07238e6
fix(tbtc/signer): gate plaintext rollback-path tests to debug builds
mswilkison cba4cd1
fix(tbtc/signer): wire plaintext rollback opt-in through init config
mswilkison 39bed8b
fix(tbtc/signer): backfill legacy refresh fingerprint before overwriting
mswilkison c46adba
fix(tbtc/signer): preserve total refresh count across history pruning
mswilkison 3efa362
fix(tbtc/signer): backfill refresh_count from history on legacy state…
mswilkison b32f515
fix(tbtc/signer): harden signer FFI (secret fields, panic hook, quara…
mswilkison 6f92479
fix(tbtc/signer): synthesize refresh fingerprint record for legacy em…
mswilkison 4899108
fix(tbtc/signer): canonicalize StartSignRound message hex + seed benc…
mswilkison 98f58e1
fix(tbtc/signer): preserve legacy mixed-case message fingerprints
mswilkison 3cd2de1
fix(tbtc/signer): preserve legacy refresh fingerprint without a cache…
mswilkison 01e274b
fix(tbtc/signer): gate plaintext state, zeroize FFI buffers, allow pe…
mswilkison f9cf110
fix(electrum): refresh fulcrum integration endpoint
mswilkison 59823fe
ci(tbtc/signer): pin workflow actions to commit SHAs; disable checkou…
mswilkison 13b04ec
hardening(signer): fail closed on stateless nonce primitives in produ…
mswilkison 3010172
ci(tbtc/signer): make Setup Rust toolchain explicit (toolchain: stable)
mswilkison 911f3b6
ci(tbtc/signer): pin workflow actions to commit SHAs; disable checkou…
mswilkison 3730815
hardening(signer): fail closed on stateless nonce primitives under th…
mswilkison d1ab4dc
feat(tbtc/signer): persist a distributed DKG key package as signing m…
mswilkison af5a306
fix(tbtc/signer): accumulate distributed DKG key packages under one s…
mswilkison a491df8
fix(tbtc/signer): gate distributed-DKG persist behind provenance; add…
mswilkison 4ac6bb7
fix(tbtc/signer): admission gate, key-package consistency, ABI bump f…
mswilkison d6f293c
fix(tbtc/signer): validate participant count + reject non-canonical I…
mswilkison 228073e
fix(tbtc/signer): verify signing share derives to public share; match…
mswilkison 70f8bba
fix(tbtc/signer): enforce operator quarantine before persisting distr…
mswilkison 1841747
fix(signer): resolve DKG key material by key_group so signing works a…
mswilkison 8dd9401
fix(signer): re-check emergency-rekey/finalize gates from the WALLET …
mswilkison 5a88e9a
fix(signer): CI green (rustfmt, RUSTSEC-2026-0204) + harden emergency…
mswilkison 82cffed
fix(signer): enforce the total-session cap when Open creates a cross-…
mswilkison a5762aa
fix(signer): scrub serde-owned secret request Strings + SigningShare …
mswilkison 0d2ebcb
fix(signer): a session belongs to one key_group for life; scrub secre…
mswilkison 1d6f946
fix(signer): persist bound_key_group so cross-session signing survive…
mswilkison 4ac4a42
style(signer): satisfy clippy -D warnings (unnecessary_map_or, clone_…
mswilkison c7dcd55
feat(tbtc/signer): persist distributed DKG material and make it signa…
mswilkison 386bd36
fix(signer): update pinned TLA tools checksum
mswilkison 0172c6d
feat(signer)!: delete transitional coarse-FROST signing path (Phase 7…
mswilkison 3c60e2d
feat(signer)!: delete transitional coarse-FROST signing path (Phase 7…
mswilkison 6cc2351
ci(signer): re-pin tla2tools.jar checksum to the current v1.8.0 relea…
mswilkison 680cdc2
fix(tbtc/signer)!: bind policy to BIP-341 sighashes
mswilkison 84c3b84
fix(tbtc/signer): make state transitions crash-durable
mswilkison ac2f32a
fix(tbtc/signer): restore rollout assurance gates
mswilkison 6e0fa97
Preserve signer latency metric ABI semantics
mswilkison e487a04
fix(tbtc/signer)!: bind policy to BIP-341 sighashes (#4147)
mswilkison 0e46315
fix(tbtc/signer): make state transitions crash-durable (#4148)
mswilkison b7281da
fix(tbtc/signer): restore rollout assurance gates (#4149)
mswilkison f21ca10
docs(tbtc/signer): retire stale rollout benchmark gate
mswilkison 9945155
fix(tbtc/signer): preserve canary recovery bookkeeping
mswilkison 400a7c9
docs(tbtc/signer): retire stale rollout benchmark gate (#4151)
mswilkison 36e8c05
fix(tbtc/signer): preserve canary recovery bookkeeping (#4154)
mswilkison c2d187d
fix(tbtc/signer): fail closed on unsafe share refresh
mswilkison a4ead31
fix(tbtc/signer): bump ABI for refresh rejection
mswilkison 3a440ee
fix(tbtc/signer): mark unanchored legacy refresh overdue
mswilkison 07b4190
fix(tbtc/signer): reject empty attestation statuses
mswilkison 43a0d25
fix(tbtc/signer): fail closed on unsafe share refresh (#4155)
mswilkison 1679a60
fix(tbtc/signer): reject empty attestation statuses (#4156)
mswilkison af31d1a
Merge remote-tracking branch 'origin/main' into fix/pr4005-electrum-f…
mswilkison 00cb7de
fix(electrum): propagate embedded test networks
mswilkison 01bbaaf
fix(tbtc/signer): bound aggregate IDs and reclaim sessions
mswilkison c2ec8a4
fix(tbtc/signer): harden session retirement
mswilkison a9d64e9
fix(tbtc/signer): preserve aggregate liveness
mswilkison 43050d3
ci(tbtc/signer): refresh TLA tools checksum
mswilkison 616e4ab
fix(tbtc/signer): make session retirement rollback-safe
mswilkison 134727f
fix(tbtc/signer): retire repaired aggregate sessions
mswilkison c717a5a
fix(tbtc/signer): zeroize DKG wire secrets
mswilkison 136e85c
fix(tbtc/signer): serialize initial state loading
mswilkison 19a9fa8
fix(tbtc/signer): serialize initial state loading (#4159)
mswilkison bcdd852
fix(tbtc/signer): zeroize DKG wire secrets (#4158)
mswilkison 1ef344c
fix(tbtc/signer): bound interactive session persistence (#4157)
mswilkison 5e49300
fix(tbtc/signer): harden state-path and rollback durability
mswilkison b553a04
fix(tbtc/signer): reject unknown admission policy fields
mswilkison 90a1b00
fix(tbtc/signer): track interactive inactivity monotonically
mswilkison 72897cb
fix(tbtc/signer): harden state-path and rollback durability (#4160)
mswilkison eb1277b
fix(tbtc/signer): reject unknown admission policy fields (#4161)
mswilkison b49065f
fix(tbtc/signer): track interactive inactivity monotonically (#4162)
mswilkison File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,57 @@ | ||
| name: tBTC Signer Formal Verification | ||
|
|
||
| on: | ||
| pull_request: | ||
| paths: | ||
| - pkg/tbtc/signer/** | ||
| - .github/workflows/tbtc-signer-formal.yml | ||
| schedule: | ||
| - cron: "23 5 * * *" | ||
| workflow_dispatch: | ||
|
|
||
| permissions: | ||
| contents: read | ||
|
|
||
| concurrency: | ||
| group: tbtc-signer-formal-${{ github.ref }} | ||
| cancel-in-progress: true | ||
|
|
||
| jobs: | ||
| signer-formal-invariants: | ||
| name: Signer formal invariants | ||
| runs-on: ubuntu-latest | ||
| timeout-minutes: 30 | ||
| steps: | ||
| - name: Checkout | ||
| uses: actions/checkout@v4 | ||
|
coderabbitai[bot] marked this conversation as resolved.
Outdated
|
||
|
|
||
| - name: Setup Rust | ||
| uses: dtolnay/rust-toolchain@stable | ||
|
|
||
| - name: Run signer formal invariant tests | ||
| # Filters cargo test by the formal_verification_ prefix so only | ||
| # the formal-invariant test cases run (faster + clearer signal | ||
| # than the full suite). Matches the convention used in the | ||
| # source monorepo's ci-formal-verification.yml. | ||
| run: cargo test --manifest-path pkg/tbtc/signer/Cargo.toml formal_verification_ | ||
|
|
||
| tla-model-checks: | ||
| name: TLA model checks | ||
| runs-on: ubuntu-latest | ||
| timeout-minutes: 20 | ||
| steps: | ||
| - name: Checkout | ||
| uses: actions/checkout@v4 | ||
|
|
||
| - name: Setup Java | ||
| uses: actions/setup-java@v4 | ||
| with: | ||
| distribution: temurin | ||
| java-version: "17" | ||
|
|
||
| - name: Run TLA model checks | ||
| # Iterates over every .cfg under pkg/tbtc/signer/docs/formal/models/ | ||
| # and runs TLC against the matching .tla module. MODELS_PATH defaults | ||
| # to the canonical signer-relative path; override via env var for | ||
| # alternate environments (set in extraction/frost-signer-mirror PR). | ||
| run: pkg/tbtc/signer/scripts/formal/run_tla_models.sh | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| target/ |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.