Skip to content

Release v0.17.0

Latest

Choose a tag to compare

@github-actions github-actions released this 07 Nov 19:34
· 3 commits to main since this release
v0.17.0
672ef18

Verifying the Release

In order to verify the release, you'll need to have gpg or gpg2 installed on your system. Once you've obtained a copy (and hopefully verified that as well), you'll first need to import the keys that have signed this release if you haven't done so already:

curl https://raw.githubusercontent.com/MostroP2P/mostro/main/keys/negrunch.asc | gpg --import
curl https://raw.githubusercontent.com/MostroP2P/mostro/main/keys/arkanoider.asc | gpg --import

Once you have the required PGP keys, you can verify the release (assuming manifest.txt.sig.negrunch, manifest.txt.sig.arkanoider and manifest.txt are in the current directory) with:

gpg --verify manifest.txt.sig.negrunch manifest.txt
gpg --verify manifest.txt.sig.arkanoider manifest.txt

gpg: Signature made fri 10 oct 2025 11:28:03 -03
gpg:                using RSA key 1E41631D137BA2ADE55344F73852B843679AD6F0
gpg: Good signature from "Francisco Calderón <fjcalderon@gmail.com>" [ultimate]

gpg: Signature made fri 10 oct 2025 11:28:03 -03
gpg:                using RSA key 2E986CA1C5E7EA1635CD059C4989CC7415A43AEC
gpg: Good signature from "Arkanoider <github.913zc@simplelogin.com>" [ultimate]

That will verify the signature of the manifest file, which ensures integrity and authenticity of the archive you've downloaded locally containing the binaries. Next, depending on your operating system, you should then re-compute the sha256 hash of the archive with shasum -a 256 <filename>, compare it with the corresponding one in the manifest file, and ensure they match exactly.

What's Changed in v0.17.0

🚀 Features

  • add the global --reply-timeout option by @grunch
  • replace rate with order rate by @grunch
  • replace dispute with dispute open by @grunch
  • add order new --expires-in by @grunch
  • add order mine by @grunch
  • read --invoice - from standard input by @grunch
  • add identity init and identity show by @grunch
  • order info slice 4, the command replaces ordersinfo by @arkanoider
  • order info slice 3, the request and reply exchange by @arkanoider
  • order info slice 2, read-only identity and outcome pieces by @arkanoider
  • add offline schema command and dispatch (T043) by @arkanoider
  • generate Draft 2020-12 output and input schemas (T042) by @arkanoider
  • add discovery DTOs and descriptors (T041) by @arkanoider
  • complete human order list parity (T034-T036) by @arkanoider
  • allow-list order list diagnostics and verbose summary (T032) by @arkanoider
  • wire order list in human and JSON modes (T030) by @arkanoider
  • add order.list operation and shared order rendering (T027-T029) by @arkanoider
  • add public order read and order-list DTO mapping (T021-T026) by @arkanoider
  • guard JSON with registry and envelopes by @arkanoider
  • parse argv through output-intent helper by @arkanoider
  • add typed outcome envelope by @arkanoider
  • add output-intent recovery prototype by @arkanoider
  • add getuserinfo command by @arkanoider

🐛 Bug Fixes

  • update the discovery fixture on prerelease bumps too by @grunch
  • keep the discovery fixture version in step with releases by @grunch
  • say that the legacy commands ignore --reply-timeout by @grunch
  • word local_status_stale for any request, not only an invoice by @grunch
  • report a broken store as store_unwritable in the human preview by @grunch
  • take a trade step's cant-do as a refusal only for its order by @grunch
  • print the trade_keys_limited warning in human order mine by @grunch
  • keep the index on a stale-index refusal and calm the concurrency test by @grunch
  • reserve the trade index before publishing by @grunch
  • read an order's key without write access by @grunch
  • keep a payment request's invoice whole in message list by @grunch
  • read the trade keys for message list without write access by @grunch
  • accept invoice-updated only for the requested order by @grunch
  • report a broken store in the invoice preview and align the specs by @grunch
  • allow store_unwritable in the bond add-invoice schema by @grunch
  • describe a flag as a boolean in discovery by @grunch
  • keep sending to the other relays while the reply is awaited by @grunch
  • describe a repeatable option as an array in discovery by @grunch
  • bound the relays' acknowledgements by the reply deadline by @grunch
  • read a WAL store without its -shm file without creating one by @grunch
  • give the relay notification channel headroom over the capacity by @grunch
  • write Spec Kit helper JSON as ASCII on legacy code pages by @grunch
  • report unbindable arguments as an internal_error outcome (T044) by @arkanoider
  • keep exit status when stderr is unwritable (T037) by @arkanoider
  • saturate order event times above i64::MAX by @arkanoider
  • reject EOF and report new-order preflight errors by @arkanoider
  • propagate persistence errors and establish refactor baseline by @arkanoider
  • report a take whose local save failed instead of success by @grunch
  • save the order a takesell with an invoice takes by @grunch
  • correlate getuserinfo by id and action by @arkanoider
  • harden getuserinfo PoW and reply id by @arkanoider
  • ignore the echoed request when waiting for admaddsolver's reply by @grunch
  • confirm admaddsolver with Mostro before reporting success by @grunch

💼 Other

  • test: seed WAL stores without relying on close-time cleanup by @grunch in #240
  • fix: keep the discovery fixture version in step with releases by @grunch in #239
  • Update CHANGELOG for version 0.17.0 by @grunch
  • feat: verify the bond flows and add the global --reply-timeout (stack 18) by @grunch in #238
  • Merge pr/17-dispute-open-order-rate into pr/18-bond-flows-reply-timeout by @grunch
  • Merge pr/17-dispute-open-order-rate into pr/18-bond-flows-reply-timeout by @grunch
  • feat: replace dispute and rate with dispute open and order rate (stack 17) by @grunch in #237
  • Merge pr/16-order-mine-expires-in into pr/17-dispute-open-order-rate by @grunch
  • Merge pr/16-order-mine-expires-in into pr/17-dispute-open-order-rate by @grunch
  • feat: add order mine and order new --expires-in (stack 16) by @grunch in #236
  • Merge pr/15-invoice-stdin into pr/16-order-mine-expires-in by @grunch
  • Merge pr/15-invoice-stdin into pr/16-order-mine-expires-in by @grunch
  • feat: read --invoice - from standard input (stack 15) by @grunch in #235
  • Merge pr/14-identity-json into pr/15-invoice-stdin by @grunch
  • Merge pr/14-identity-json into pr/15-invoice-stdin by @grunch
  • feat: add identity init and identity show with json output (stack 14) by @grunch in #234
  • ci: build and release the macOS binaries by @grunch in #233
  • feat: continue range orders and adopt child orders with order sync (stack 13) by @grunch in #232
  • Merge main into pr/13-range-children by @grunch
  • feat: add order fiat-sent, release and cancel with json output (stack 12) by @grunch in #231
  • Merge pr/11-message-list into pr/12-trade-steps by @grunch
  • Merge pr/11-message-list into pr/12-trade-steps by @grunch
  • Merge pr/11-message-list into pr/12-trade-steps by @grunch
  • feat: replace getdm with read-only message list and json output (stack 11) by @grunch in #230
  • Merge pr/10-add-invoice into pr/11-message-list by @grunch
  • Merge pr/10-add-invoice into pr/11-message-list by @grunch
  • Merge pr/10-add-invoice into pr/11-message-list by @grunch
  • feat: migrate add-invoice commands to json and return bond invoices (stack 10) by @grunch in #229
  • Merge pr/09-order-take into pr/10-add-invoice by @grunch
  • feat: replace takesell/takebuy with order take-sell and take-buy (stack 09) by @grunch in #228
  • Merge pr/08-order-new into pr/09-order-take by @grunch
  • feat: replace neworder with order new and json output (stack 08) by @grunch in #227
  • Merge pr/07b-order-info-command into pr/08-order-new by @grunch
  • Merge pr/07b-order-info-command into pr/08-order-new by @grunch
  • feat: replace ordersinfo with order info and json output (stack 07b) by @grunch in #226
  • Merge pr/07a-order-info-core into pr/07b-order-info-command by @grunch
  • feat: add order info spec, read-only identity and request exchange (stack 07a) by @grunch in #225
  • Merge pr/06c-order-list-docs-ci into pr/07a-order-info-core by @grunch
  • docs: document order list, add boundary, drift and windows ci checks (stack 06c) by @grunch in #224
  • Merge pr/06b-schema-discovery into pr/06c-order-list-docs-ci by @grunch
  • Merge pr/06b-schema-discovery into pr/06c-order-list-docs-ci by @grunch
  • feat: add offline schema discovery and draft 2020-12 json schemas (stack 06b) by @grunch in #223
  • Merge pr/06a-order-list-parity into pr/06b-schema-discovery by @grunch
  • Merge pr/06a-order-list-parity into pr/06b-schema-discovery by @grunch
  • feat: human order list parity and exit codes with broken stderr (stack 06a) by @grunch in #222
  • Merge pr/05b-order-list-wiring into pr/06a-order-list-parity by @grunch
  • Merge pr/05b-order-list-wiring into pr/06a-order-list-parity by @grunch
  • feat: add order list with human and json output, replacing listorders (stack 05b) by @grunch in #221
  • Merge pr/05a-order-list-dto into pr/05b-order-list-wiring by @grunch
  • Merge pr/05a-order-list-dto into pr/05b-order-list-wiring by @grunch
  • feat: add order.list dto mapping and bounded public relay collector (stack 05a) by @grunch in #220
  • Merge pr/04-outcome-envelope into pr/05a-order-list-dto by @grunch
  • feat: add --output flag, outcome envelope and json guard (stack 04) by @grunch in #219
  • Merge pr/03-cli-split into pr/04-outcome-envelope by @grunch
  • refactor: split src/cli.rs into args, commands, context and legacy (stack 03) by @grunch in #218
  • Merge pr/02-baseline-fixes into pr/03-cli-split by @grunch
  • fix: harden new-order preflight and save errors, raise msrv to 1.94 (stack 02) by @grunch in #217
  • Merge pr/01-speckit-docs into pr/02-baseline-fixes by @grunch
  • docs: add spec kit tooling, constitution and order-list json spec (stack 01) by @grunch in #216
  • chore: mark generated JSON schemas as generated for GitHub by @grunch in #215
  • Record the real-node probe of range children by @arkanoider
  • Range children slice 6: docs, evidence and verification record by @arkanoider
  • Range children slice 5: failure matrix and examples by @arkanoider
  • Move the JSON interface book to its own repository by @arkanoider
  • Range children slice 4: order sync by @arkanoider
  • Range children slice 3: the key and the index in the steps by @arkanoider
  • Range children slice 2: the scripted node creates children by @arkanoider
  • Range children slice 1: the maker marker by @arkanoider
  • Draft spec 008: range order children; correct the MCP tool claims in the docs by @arkanoider
  • Record the real-node probe of the trade steps by @arkanoider
  • Trade steps slice 6: docs, evidence and verification record by @arkanoider
  • Trade steps slice 5: failure matrix and examples by @arkanoider
  • Trade steps slice 4b: binary scenarios by @arkanoider
  • Trade steps slice 4a: order fiat-sent, release and cancel replace the legacy commands by @arkanoider
  • Spec 007: correlation is by request id by @arkanoider
  • Trade steps slice 3: the operation by @arkanoider
  • Spec 007: range continuation is deferred to a required spec 008 by @arkanoider
  • Trade steps slice 2: outcomes, stage rules and the range rule in the store by @arkanoider
  • Trade steps slice 1: characterize the legacy commands and script the node by @arkanoider
  • Draft spec 007: order fiat-sent, release and cancel by @arkanoider
  • Record the real-node probe of message list by @arkanoider
  • Message list slice 6: docs, evidence and reads ignore request settings by @arkanoider
  • Message list slice 5: the failure matrix and the contract examples by @arkanoider
  • Message list slice 4b: binary scenarios by @arkanoider
  • Message list slice 4a: the command replaces getdm by @arkanoider
  • Message list slice 3: the inbox read and the list operation by @arkanoider
  • Message list slice 2: trade keys, message records and outcomes by @arkanoider
  • Message list slice 1: characterize getdm and build the mailbox fixture by @arkanoider
  • Specify message list (spec 006) by @arkanoider
  • Record the regtest probe of order add-invoice on the bonded local node by @arkanoider
  • Add invoice slice 6: verification record by @arkanoider
  • Add invoice slice 6: documentation, evidence and the regtest probe procedure by @arkanoider
  • Add invoice slice 5: failure matrix and examples by @arkanoider
  • Add invoice slice 4b: binary scenarios by @arkanoider
  • Add invoice slice 4a: order add-invoice and bond add-invoice replace the legacy commands by @arkanoider
  • Add invoice slice 3: the order and bond invoice operations by @arkanoider
  • Add invoice slice 2: store lookup, order-id correlation and outcomes by @arkanoider
  • Add invoice slice 1: characterize the legacy commands and script the node by @arkanoider
  • Return bond invoices as a next step instead of dropping them by @arkanoider
  • Specify add-invoice and bond add-invoice (spec 005) by @arkanoider
  • Record the regtest probe of order info, order new and the takes by @arkanoider
  • Correct the slice 3 evidence of order take: one boundary test failed until slice 4a by @arkanoider
  • Order take slice 6: docs, quickstart and verification evidence by @arkanoider
  • Order take slice 5: failure matrix and proposed examples by @arkanoider
  • Order take slice 4b: binary scenarios by @arkanoider
  • Order take slice 4a: the commands replace takesell and takebuy by @arkanoider
  • Order take slice 3: the take operation for both sides by @arkanoider
  • Order take slice 2: shared write dispatch and take input and data by @arkanoider
  • Order take slice 1: characterization of takesell/takebuy and daemon fixtures by @arkanoider
  • Order take: research, plan, data model, contract and slices by @arkanoider
  • Order take: clarified specification by @arkanoider
  • Correct the test count in the order new evidence by @arkanoider
  • Order new slice 6: docs, quickstart and verification evidence by @arkanoider
  • Order new slice 5: failure matrix, writable-store check and examples by @arkanoider
  • Order new slice 4b: binary scenarios by @arkanoider
  • Order new slice 4a: the command replaces neworder by @arkanoider
  • Order new slice 3: uncertain status, write stages, codes, input and data by @arkanoider
  • Order new slice 2: exchange with a trade key and the order store by @arkanoider
  • Order new slice 1: characterization of neworder and daemon fixtures by @arkanoider
  • Order new: research, plan, data model, contract and slices by @arkanoider
  • Order new: clarified specification by @arkanoider
  • Order info slice 6: docs, status lines and verification evidence by @arkanoider
  • Order info slice 5: failure matrix and proposed examples by @arkanoider
  • add schemars and dev relay fixtures by @arkanoider
  • raise declared MSRV to 1.94 by @arkanoider
  • fix: save the order a takesell with an invoice takes by @grunch in #205
  • feat: add getuserinfo command by @arkanoider in #203
  • fix: confirm admaddsolver with Mostro before reporting success by @grunch in #202

🚜 Refactor

  • move the order argument groups to cli/command_args.rs by @grunch
  • import std::fs in the order mine and expires-in tests by @grunch
  • import RangeInclusive in outcome/new.rs by @grunch
  • move the Clap input-schema generator to cli/input_schema.rs by @grunch
  • import the nostr event Kind under an alias in util::reply by @grunch
  • move reply correlation to util::reply by @arkanoider
  • split cli.rs into focused modules by @arkanoider
  • extract reply-event selection helper by @arkanoider
  • extract takesell accepted-save error by @arkanoider

📚 Documentation

  • mark the locked maker bond refusal as a source finding by @grunch
  • describe --reply-timeout, global_options and exchange_limits in the architecture by @grunch
  • document --reply-timeout and record its evidence by @grunch
  • specify --reply-timeout (spec 016) by @grunch
  • document the bond flows and record the evidence of specs 011-015 by @grunch
  • specify the bond flows of the migrated commands (spec 015) by @grunch
  • list the wait_for_dm flows that remain after specs 013 and 014 by @grunch
  • document order rate and the removed legacy commands by @grunch
  • specify order rate (spec 014) by @grunch
  • document dispute open by @grunch
  • specify dispute open (spec 013) by @grunch
  • note the human order mine warning and list it as offline by @grunch
  • document order new --expires-in by @grunch
  • specify order new --expires-in (spec 012) by @grunch
  • document order mine by @grunch
  • specify order mine (spec 011) by @grunch
  • note that a terminal stdin refuses --invoice - in the architecture by @grunch
  • say JSON order new and the takes read stdin only for --invoice - by @grunch
  • correct the spec 010 plan and evidence after review by @grunch
  • record the invalid_invoice reason in spec 010 by @grunch
  • document --invoice - and record its evidence by @grunch
  • specify --invoice - (spec 010) by @grunch
  • describe what create_store does in the store and CreateError docs by @grunch
  • fix the store creation path and list nesting in spec 009 by @grunch
  • document the identity commands and record their evidence by @grunch
  • specify identity init and identity show (spec 009) by @grunch
  • install the prebuilt binary only after its sum matches by @grunch
  • give the prebuilt-binary install its download and PATH steps by @grunch
  • align the persistence rows and the legacy save with the reservation by @grunch
  • state the WAL sidecar case and the shared reply deadline by @grunch
  • record that the pilot's suite passed on a native Windows CI runner by @arkanoider
  • task list for spec 002 (order info) by @arkanoider
  • plan spec 002 (order info) by @arkanoider
  • name the spec 002 command order info by @arkanoider
  • clarify spec 002 (fail without identity, no client id cap) by @arkanoider
  • spec 002 accepts several orders and records the protocol reference by @arkanoider
  • draft spec 002 for order show by @arkanoider
  • update pilot status to what the evidence proves (T055) by @arkanoider
  • record T052-T054 evidence and reconcile requirements by @arkanoider
  • record T051 evidence by @arkanoider
  • record T050 evidence by @arkanoider
  • record T048-T049 evidence by @arkanoider
  • describe the implemented boundaries and the order list / schema interface (T048-T049) by @arkanoider
  • record T047 US3 acceptance evidence by @arkanoider
  • record T046 evidence by @arkanoider
  • record T045 evidence by @arkanoider
  • record T044 evidence by @arkanoider
  • record T043 evidence by @arkanoider
  • record T042 evidence by @arkanoider
  • record T041 evidence by @arkanoider
  • record T040 evidence by @arkanoider
  • record T039 evidence by @arkanoider
  • record T037-T038 evidence by @arkanoider
  • sync status to T036 and fix roadmap path by @arkanoider
  • record T034-T036 human parity evidence by @arkanoider
  • record T033 US1 milestone evidence by @arkanoider
  • record T032 evidence by @arkanoider
  • record T031 evidence by @arkanoider
  • record T030 evidence by @arkanoider
  • record T027-T029 evidence by @arkanoider
  • apply spec analysis fixes and record T021-T026 evidence by @arkanoider
  • record T020 contract test evidence by @arkanoider
  • record reply-correlation module split by @arkanoider
  • record T019 foundation gate evidence by @arkanoider
  • record T018 registry and guard evidence by @arkanoider
  • record T017 parsing evidence by @arkanoider
  • record T016 outcome envelope evidence by @arkanoider
  • record T015 observability result by @arkanoider
  • record T014 output-intent evidence by @arkanoider
  • record T013 process harness evidence by @arkanoider
  • record T012 dependency evidence by @arkanoider
  • record T011 CLI module split by @arkanoider
  • close baseline gate with exceptions (T010) by @arkanoider
  • record MSRV 1.94 decision by @arkanoider
  • record T009 platform and MSRV baseline by @arkanoider
  • record T008 command state matrix by @arkanoider
  • record T007 reply-correlation evidence by @arkanoider
  • record T006 takesell save evidence by @arkanoider
  • document Linux and WSL development handoff by @arkanoider
  • add Spec Kit workflow and order-list JSON plan by @arkanoider
  • document getuserinfo PoW and reply wait by @arkanoider

🧪 Testing

  • seed WAL stores without relying on close-time cleanup by @grunch
  • verify order cancel and message list in the bond flows by @grunch
  • guard the order check and the stale status of held requests by @grunch
  • cover the order of order mine rows with an unknown index by @grunch
  • cover the failed creation and missing data directory of identity init by @grunch
  • move the outcome and parse_machine unit tests to their own files by @grunch
  • move the OsStringExt import out of the test function by @grunch
  • order info slice 1, characterization and shared fixtures by @arkanoider
  • add source boundary checks and privacy doctests (T050) by @arkanoider
  • add full process matrix for read failures, event cap and output positions (T046) by @arkanoider
  • add generated schema fixtures and drift checks (T045) by @arkanoider
  • add US3 process tests for legacy rejection, config errors and offline schema (T040) by @arkanoider
  • add US3 parser, registry and schema grammar tests (T039) by @arkanoider
  • add order list binary matrix (T031) by @arkanoider
  • add order.list contract tests by @arkanoider
  • pin saturated order event timestamps by @arkanoider
  • prove JSON guard precedes daemon RPC by @arkanoider
  • prove relay completion observability by @arkanoider
  • add order-list process harness by @arkanoider
  • skip unrelated kind-14 before reply by @arkanoider
  • cover takesell post-accept save failures by @arkanoider
  • a take whose local save fails does not report success by @grunch
  • a takesell reply for an order not saved yet is not an error by @grunch

⚙️ Miscellaneous Tasks

  • Release mostro-cli version 0.17.0 by @grunch
  • keep the checkout token away from the macOS build by @grunch
  • build and release the macOS binaries by @grunch
  • regenerate discovery for the trade steps' --yes flag by @grunch
  • regenerate discovery for the take commands' --yes flag by @grunch
  • make the workflow wiring tests accept CRLF; run every Windows test binary by @arkanoider
  • mark generated JSON schemas as generated for GitHub by @grunch
  • make the workflow wiring tests accept CRLF; run every Windows test binary by @arkanoider
  • run schema drift checks and add a native Windows pilot job (T051) by @arkanoider

Contributors

Full Changelog: v0.16.3...v0.17.0