Skip to content

build(#277): pin bsv-rs =0.9.0-beta.2, bsv-wallet-toolbox-rs =0.14.0-beta.2 and bsv-tracker =0.9.0-beta.2 together (the beta.2 pin, as published) - #332

Merged
Calgooon merged 29 commits into
betafrom
lane/p1-277-pin-beta2
Oct 28, 2026
Merged

Calgooon merged 29 commits into
betafrom
lane/p1-277-pin-beta2

Conversation

@Calgooon

@Calgooon Calgooon commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Pin both workspaces to the published beta.2 stack: bsv-rs =0.9.0-beta.2, bsv-wallet-toolbox-rs =0.14.0-beta.2 (registry 4cfe31ca), and bsv-tracker =0.9.0-beta.2. This includes the originator, classic ARC, reference, certificate and wire changes those packages require.

The captain's decision on #277 applies: ordinary refusal types wait in #330 (toolbox #404), and discovery trust settings wait in #331 (toolbox #388). The classifier stays. This PR adds no trust config and invents no typed class from text.

#277 checklist and intake findings

Fixture recording (cc438d6)

WIRE_RECORD=1 records 157 fixtures after the code. Moved or new rows:

MANIFEST.json records empty discovery with the exact reason
"toolbox #388 (CLI #331)" for 053-discoverByIdentityKey.ok.json,
054-discoverByAttributes.ok.json, 137-discoverByIdentityKey.limitAtBound.json,
138-discoverByIdentityKey.limitAboveBound.json,
139-discoverByAttributes.limitAtBound.json and
140-discoverByAttributes.limitAboveBound.json. Those six fixture bodies
remain byte-identical: the host bound still refuses above 10000.

086, 094-098, 100, 101 and 106 are byte-identical after the correct base64
translation; 103 retains INVALID_BEEF, offset 176 and the script reason,
with no stored invalid action, under CLI #330. The WIRE defect row is now
closed at beta.1 rather than claiming the invalid spend was accepted.
All other old wire files, the consumers and gate-vector bytes are unchanged.

Proof

All commands use the lane's private target directory and foreground execution. Final published-package proof:

Check Tail/result Log
workspace build --locked Finished dev final-build.log
root/workspace and fuzz fmt exit 0 proof-format-ready.log
workspace/all-target Clippy --locked -D warnings Finished dev proof-clippy-ready.log
workspace cargo test --locked 887 passed, 0 failed, 0 ignored over 31 suites proof-tests-green.log
fuzz check --locked Finished dev proof-fuzz-ready.log
root/fuzz cargo tree -d + lock inventory one each of the three bsv crates proof-tree-root.log, proof-tree-fuzz.log, lock-inventory.txt
wire + consumer + BRC replay after recording 18 + 1 + 5 tests pass; 157 wire, 48 consumer fixtures proof-wire-consumers-brc.log
architecture rules 8 suites / 15 tests pass, included above proof-tests-green.log
gate vectors --nocapture 490 rows; 0 divergences, every one recorded: true proof-gate-vectors.log
final hermetic suite 24/24, 0 skipped, 180 known walls, 0 new, 0 unserved; no real sats proof-hermetic-final-ready.log
differential vs origin/beta build 10 named differences / 365 calls / 35 commands, both 24/24 differential-complete/report.txt
--same floor 0 differences / 365 calls / 35 commands, both 24/24 differential-same/report.txt
differential / scoreboard unit tests 49 tests (1 skipped) / 89 tests pass proof-test-differential.log, proof-test-scoreboard.log
CI Python ratchet/link/cite/changelog tests 78 / 10 / 62 / 114 pass proof-ci-python.log
changelog --check --base origin/beta added changelog.d/277.md proof-records-ready.log
scoreboard --check with base's own rendered JSON current; no wrong-way move, 35 values proof-records-ready.log
check-links / check-cites 25 files, 0 broken; 266 citations / 69 line rows, 0 findings proof-records-ready.log
pinned cargo-deny 0.20.2 + adopted template hash advisories, bans, licenses, sources all ok proof-deny-pinned.log, proof-deny-full.log
final fetch / Rust 1.98.1 ratchet no number above record or base final-fetch.log, proof-ratchet-final.log

Final ratchet: pedantic 823 (base 825); unwrap 4; large shipped files 10; large test files 3; long functions 86; complexity 19; duplicated tokens 32287 (base 32486); missing docs 148. The tool and recorded ceilings are unchanged.

Cross-pin comparison: DIFFERENTIAL: 10 differences over 365 calls and 35 commands; both builds pass 24/24. These are the five certificate/discovery changes (#105/#268/#388), two earlier remittance refusals (#371, not a widening of INVALID_BEEF), two linkage changes (#105), and the listOutputs BEEF field/array (#105). The same-binary floor is DIFFERENTIAL: 0 differences over 365 calls and 35 commands. No differential exclusion changed. During the comparison only, the acquisition request includes both old/new type keys so the same signed certificate is exercised on both libraries; the normal beta.2 scenario sends only type.

Upstream gates (the captain's ruling)

Fix round on the cold review

The following lines supplement the earlier landing record. Finding 1 replaces its 409 review-action mapping with the pinned HTTP 400/code-5 carrier and preserves every present member. Finding 2 reads planted beta.1 hex follow-ups without rewriting stored rows. Finding 3 adds the missed changelog intake and toolbox #240 privacy/serial witnesses. Finding 5 restores scenario 08's INVALID_BEEF assertions with valid remittance. Finding 6 names toolbox #216 in changelog.d/277.md. The ordinary classifier and empty discovery remain as published.

Missed changelog intake: bsv-rs #249/#258/#228/#192/#356, both toolbox #240 entries.

Fix-round final proof (bb9266b)

All six cold-review findings are addressed on the existing branch. The exact published pins, ordinary refusal classifier and empty discovery answers are retained. Every fix is an added commit with its model trailer.

  • Finding 1: HTTP 400, isError and numeric code 5 preserve the typed review evidence and all present action members. The pinned HttpWalletJson reads the served complete carrier back as WalletReviewActions; absent optional members are omitted.
  • Finding 2: one serde helper reads beta.1 hex and beta.2 byte-array tx values. The planted old row crosses re-announcement and records its transaction and output in wallet storage, without migration.
  • Finding 3: the two crate intake comments above cover every missed entry. Fixtures 158/159/160 cover a stored encrypted field, an empty verifier keyring for fieldsToReveal [] and the 31-byte serial refusal. The isolated certificate world avoids the dependency's two-row lookup page.
  • Finding 4: the nine per-item checklist lines above include the numeric-field and direct-acquisition re-reads.
  • Finding 5: scenario 08 supplies canonical payment remittance and asserts INVALID_BEEF for both malformed inputs. Its two previous INVALID_BEEF-to-VALIDATION_ERROR differential rows are gone.
  • Finding 6: changelog.d/277.md names toolbox Lineage follow-ups from PR 213 round four: the silent-throughout named-door test does not prove the retry ran; README/ARCHITECTURE say "each door" where respend reads once; a 105-char doc line #216.

Fixture commit bbebcc5 is the single final recording commit: 147 changes to the code-5 carrier, 158/159/160 are new, and MANIFEST records each reason. All 156 other existing fixtures, all 48 consumer fixtures and the gate-vector files are byte-identical to 3cbc445. The scoreboard is rendered to 160 rows.

Command / proof Result
cargo fmt --all -- --check pass
cargo clippy --workspace --all-targets --locked -- -D warnings pass
cargo test --workspace --locked 890 passed, 0 failed, 0 ignored across 31 suites
wire / consumer / BRC replay 18 / 1 / 5 tests pass; 160 wire and 48 consumer fixtures, 0 differences or coverage gaps
gate vectors --nocapture 490 rows: 486 expressed, 4 named unexpressed; 0 divergences, every one recorded: true
plain hermetic suite, once 24/24, 0 skipped; 180 known walls, 0 new, 0 unserved
origin/beta build at 3d0cd8e both wallet and MCP release binaries built from a temporary worktree, then removed
differential against that build DIFFERENTIAL: 8 differences over 365 calls and 35 commands; both 24/24
same-build floor DIFFERENTIAL: 0 differences over 365 calls and 35 commands; both 24/24
ratchet, unchanged instrument and ceilings 824 pedantic (ceiling 825), 32391 duplicate tokens (ceiling 32486); all eight pass against own and base records
cargo-deny 0.20.2 --locked check advisories, bans, licenses and sources ok
check-links / check-cites 25 files, 0 broken; 266 citations and 69 line-count rows, 0 findings
changelog --check --base origin/beta / scoreboard --check pass / current

All Rust checks use 1.98.1 and the private lane target. Evidence and logs are under /Volumes/Lanes/out/bsv-wallet-cli/p1-277-pin-fix. No production wallet was contacted. Every server and listener started by these checks is stopped before the lane's report. The captain's landing record remains the next action for #277 and #322.

For #277 (hand-closed with the landing record, never auto-closed) and #322.

🤖 Generated with Claude Code

Calgooon and others added 29 commits October 28, 2026 04:57
Move bsv-rs and bsv-tracker to =0.9.0-beta.2 and the toolbox to
=0.14.0-beta.2. Registry source commits are b744f4b6, 109e9dd3 and
4cfe31ca. Both locks contain exactly one copy of each crate and each
cargo tree -d completes without a duplicate bsv crate.

The pin-only workspace build and fuzz check each fail with 28 expected
originator signature errors (bsv-rs #329), addressed by the next commit.
The with_arc deprecation belongs to toolbox #317 / CLI #322.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
Pass existing named originators as Some to WalletInterface and the
create_action_offering helper. CLI names stay as before; served mutating
doors pass the required request header. The context documents the rule.
No production Transaction::verify, certificate binary writer, master
constructor, or HTTP substrate constructor exists here. Two test-only
Transaction::verify calls now pass None for the uncapped reference default.

Name the CLI's classic TAAL endpoint independently of ServicesOptions,
use with_classic_arc under its explicit deprecation allowance, and mirror
the beta.2 Arcade-only ladder. Test mocks that serve classic ARC say so.
The required-header rule and response shapes do not change in this commit.

Proof: workspace build and all-target check; fuzz --locked check;
12 broadcaster tests and 9 page-bound tests; root and fuzz fmt --check.
The full pin is blocked by published toolbox #404 and #388, not completed.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
Encode the toolbox's twelve-byte handle as BRC-100 Base64String through
reference_string, shared by createAction and the spend gate. SignAction
and abortAction already accept the base64 text unchanged. Remove the
UTF-8 recovery and retire its three memory notes.

The served deferred-flow test decodes twelve bytes, checks the handle
against storage, signs with a caller script, then aborts the signed noSend
action by the same reference. No broadcaster is called.

Proof: the new served test passes (1/1); workspace build and fuzz check
pass --locked; fmt --check passes. Corpus re-recording remains the final
pin step and is not performed at this blocked checkpoint (#404, #388).

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
Name both published-toolbox blockers before this branch can be reviewed:
ordinary refusal classes are erased, and Wallet accepts no trust settings.
Document the actual pins and Arcade ladder, the explicit classic URLs,
and the old certificate issuance scheme's required re-issue.

The certificate migration, typed class mapping, final fixture recording,
consumer replay and release proof are outstanding. No ready PR is opened
and no corpus bytes are re-recorded around missing library behavior.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
The added Some tokens took two identical verification response tails
past the clone window. Share the HMAC/signature boolean response and
borrow optional counterparty strings through the existing parser. These
are the same argument values, JSON and error conversions as before.

Mark the classic endpoint result must_use and quote Base64String in the
new test documentation. No ratchet instrument or ceiling changes.
Duplicated tokens fall from the base's 32486 to 32475; the initial 32584
measurement and its two new lints remain in the lane evidence.

Proof: the 11 served crypto tests and deferred create/sign/abort test;
workspace build and fuzz check. The final ratchet is rerun after this commit.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
Published toolbox 4cfe31ca still erases ordinary refusals (#404, CLI #330).
Every WORDS prefix and both accepting-abort sentences keep beta.1's
Display at beta.2: no text match added and no class synthesized. The four
not-found doors, INVALID_BEEF and UNSPENDABLE_COIN retain their served
classes. Toolbox #264/#245 alone carries WalletReviewActions; map it to
409 CONFLICT by type, including the direct toolbox conversion.

Pin #205's callback to its one-wait typed busy. #290's named-change test
already checks the class, host prefix and input, not the full sentence.
Update the test coins for #295's required derivation metadata and the
GorillaPool-default assertions for #317. No production allocator change.

Proof: cargo test --locked --lib: 425 passed. Fixture recording follows
all code in its separate commit, including #216's overlong-spend row.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
Bsv-rs #268/#105 carries type, flat list entries, hex signatures and base64
keyrings. Migrate the six certificate test doors and the MCP parameters;
expose the direct keyring and proof verifier fields. Add the explicit,
idempotent certificates --reverify command for toolbox #188: counts only,
no certificate changed. Its test keeps a valid and an invalid signature.

The hermetic certificate scenario signs the BRC-52 bytes, checks the new
field-key scheme (#203), decrypts the selective proof, and executes both
discovery calls. The local certifier sends x-bsv-auth-identity-key (#269).
Public-HTTPS issuance URL validation precludes a loopback issuance endpoint,
so this local lifecycle imports the certifier's answer through direct acquire.
The exact beta.1 missing-field refusal selects its older scheme only for the
differential's base run. Both discover tools pin empty results under
CLI #331 (toolbox #388); the known overlay requests stay behind the wall.

Add the #216 overlong-spend case, #245/#264 deterministic review race,
#312/#357/#359 expiry and #337/#371 remittance witnesses for the final
recording. The wire fixture's classic mode is explicit (#317) and its
incomplete-ancestry coin meets #295's metadata predicate. No fixture bytes
are recorded in this commit. Certificate's 1 MiB, 16 MiB and 72-byte bounds
and verify-false are tested; direct acquisition still owes #374's checks.

Proof: certificate integration 4 passed; certificate bounds/reverify 2
passed; MCP certificate tools 1 passed; hermetic scenario 6 passed with both
discovery calls and no new walled target. Full wire replay follows recording.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
The wire fixture speaks classic ARC: set the mode explicitly beside its
URL, so beta.2's Arcade default never reaches the classic stub. Its seeded
incomplete-ancestry coin carries the derivation metadata now required by
#295, preserving the intended UNSPENDABLE_COIN witness. The new review race
reaches WalletReviewActions through the actual gate and toolbox write.

Keep the added test setup bounded in helpers and document the two new
worlds. The complete 157-row scratch recording replays itself cleanly;
comparison with the old corpus stops at 025's beta.2 flat key-linkage shape
(bsv-rs #105). The actual corpus is re-recorded in the next commit.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
Keep the short-serial refusal only in the BRC spelling probe, not the
successful acquisition case, and assert that acquisition returned a
certificate before recording its list and proof. Retire the BRC oracle's
nested-record exception now that beta.2 flattens certificate entries.
Keep the added typed-review witness in its own small test module so the
pin does not put another existing test file over the ratchet's bound.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
The one-wait witness checks STORE_BUSY, Retry-After, the host's apply_event
prefix and the deadline, without pinning the toolbox's full sentence.
Name the certificate test's store identity explicitly to avoid repeating
the existing wallet-setup block, and keep its new review module from
pushing the parent test file over 800 lines. The unchanged instrument's
lexical count is 32457 duplicated tokens versus the base's 32486.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
The differential found the remaining beta.1 assumptions: scenario 13
expected nested linkage, scenario 24 read listOutputs.beef as hex, and
scenarios 14/22 supplied remittance text that the beta.2 base64 validator
refuses. Read flat linkage and BEEF bytes, retaining the old shapes only
for the differential's beta.1 baseline. Derive payment keys from the same
base64 prefix and suffix sent to internalize; scenario 12's optional
basket recovery now also supplies a valid base64 suffix.

No runtime or fixture bytes change in this commit. The failed comparison
is retained, with its four failure reasons; the complete runs follow.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
WIRE_RECORD=1 records 157 fixtures after the code. Moved or new rows:
- 025-revealCounterpartyKeyLinkage.ok.json: bsv-rs #105: flat key linkage, byte fields and protocolID/keyID.
- 027-revealSpecificKeyLinkage.ok.json: bsv-rs #105: flat key linkage, byte fields and protocolID/keyID.
- 044-acquireCertificate.brc100Type.json: bsv-rs #268/#105 and toolbox #311/#249/#260/#270: certificate JSON and validated metadata.
- 045-relinquishCertificate.brc100Type.json: bsv-rs #268/#105 and toolbox #311/#249/#260/#270: certificate JSON and validated metadata.
- 046-proveCertificate.brc100Type.json: bsv-rs #268/#105 and toolbox #311/#249/#260/#270: certificate JSON and validated metadata.
- 047-acquireCertificate.direct.json: bsv-rs #268/#105 and toolbox #311/#249/#260/#270: certificate JSON and validated metadata.
- 048-listCertificates.one.json: bsv-rs #268/#105 and toolbox #311/#249/#260/#270: certificate JSON and validated metadata.
- 049-proveCertificate.held.json: bsv-rs #268/#105 and toolbox #311/#249/#260/#270: certificate JSON and validated metadata.
- 050-relinquishCertificate.held.json: bsv-rs #268/#105 and toolbox #311/#249/#260/#270: certificate JSON and validated metadata.
- 051-relinquishCertificate.unknown.json: bsv-rs #268/#105 and toolbox #311/#249/#260/#270: certificate JSON and validated metadata.
- 052-proveCertificate.unknown.json: bsv-rs #268/#105 and toolbox #311/#249/#260/#270: certificate JSON and validated metadata.
- 120-createAction.namedChange.json: toolbox #241: named-change words.
- 143-createAction.tenByteDeclaration.json: toolbox #216: overlong spend refused, stored unsigned action retained, shorter spend succeeds.
- 144-signAction.spendLongerThanDeclared.json: toolbox #216: overlong spend refused, stored unsigned action retained, shorter spend succeeds.
- 145-listActions.afterOverlongSpend.json: toolbox #216: overlong spend refused, stored unsigned action retained, shorter spend succeeds.
- 146-signAction.shorterThanDeclared.json: toolbox #216: overlong spend refused, stored unsigned action retained, shorter spend succeeds.
- 147-createAction.doubleSpendReview.json: toolbox #245/#264, bsv-rs #339: typed double-spend review and stored-state witness.
- 148-listActions.afterDoubleSpendReview.json: toolbox #245/#264, bsv-rs #339: typed double-spend review and stored-state witness.
- 149-createAction.expiryUnsupported.json: toolbox #312/#359: BRC-177 capability and grammar refusals.
- 150-createAction.expiryBatch.json: toolbox #312/#359: BRC-177 capability and grammar refusals.
- 151-createAction.expiryNever.json: toolbox #312/#359: BRC-177 capability and grammar refusals.
- 152-createAction.expiryDuplicate.json: toolbox #312/#359: BRC-177 capability and grammar refusals.
- 153-internalizeAction.missingRemittance.json: toolbox #337/#371: remittance exclusivity before BEEF.
- 154-internalizeAction.exclusiveRemittance.json: toolbox #337/#371: remittance exclusivity before BEEF.
- 155-acquireCertificate.fieldAtBound.json: bsv-rs #275/#301 and toolbox #374: direct-acquire bound boundary as published.
- 156-acquireCertificate.fieldAboveBound.json: bsv-rs #275/#301 and toolbox #374: direct-acquire bound boundary as published.
- 157-acquireCertificate.signatureAboveBound.json: bsv-rs #275/#301 and toolbox #374: direct-acquire bound boundary as published.

MANIFEST.json records empty discovery with the exact reason
"toolbox #388 (CLI #331)" for 053-discoverByIdentityKey.ok.json,
054-discoverByAttributes.ok.json, 137-discoverByIdentityKey.limitAtBound.json,
138-discoverByIdentityKey.limitAboveBound.json,
139-discoverByAttributes.limitAtBound.json and
140-discoverByAttributes.limitAboveBound.json. Those six fixture bodies
remain byte-identical: the host bound still refuses above 10000.

086, 094-098, 100, 101 and 106 are byte-identical after the correct base64
translation; 103 retains INVALID_BEEF, offset 176 and the script reason,
with no stored invalid action, under CLI #330. The WIRE defect row is now
closed at beta.1 rather than claiming the invalid spend was accepted.
All other old wire files, the consumers and gate-vector bytes are unchanged.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
The integration linkage assertions now read flat byte arrays and protocolID/keyID.
For a cross-pin recording, give both certificate type keys to the same direct
acquisition request, so both pins see the same signed symmetric-key certificate
without a failed request and a second issuance changing the phase call count.
The plain hermetic run still sends only type. Both pins prove, decrypt and
verify the same certificate; no differential exclusion or product alias added.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
Replace the prior checkpoint wording with the published three-crate pin,
retain the ordinary refusal classifier pending CLI #330, and state the empty
discovery answers pending CLI #331. Record the explicit stored-signature
reverify command and the pre-#203 certificate re-issue requirement.

Update BRC shape rows, dependent versions, the 157-row wire census and
hermetic discovery walls. The architecture source citations still check.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
Retain the abort classifier until the typed refusal pin, and describe the current JSON shapes and declared hermetic discovery hosts.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
The published verifier accepts valid BEEF in either order. Retain the respend witness and its reserved-state/signature checks without asserting the removed ordering restriction.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
Preserve the five typed members through SDK, toolbox and anyhow errors. The pinned HttpWalletJson reads the served body back with identical review results; optional members remain absent and competing BEEF keeps the reference byte-object shape. Update the host map and prepare fixture 147 for the final recording.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
Deserialize old hex tx and current byte arrays through one read-only serde helper. Plant a beta.1 on_accept row, re-announce it, and prove record_accepted writes its transaction and output to wallet storage; run the byte-array row through the same test.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
…ounds

Record the missed crate changelog intake on #277, one comment per crate. Add three final-numbered cases for toolbox #240: encrypted field acquisition, empty keyring disclosure, and the served short-serial refusal. Keep recording until after every fix. Document code-5 review fields in the BRC census.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
Supply canonical payment remittance for garbage and truncated BEEF, and require HTTP 400 INVALID_BEEF. Document why the earlier two remittance-only differential rows must disappear in the final recording.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
Name the declared unlocking-script length guard with the pin changes it supplies.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
Re-read certificate signing and signed-text paths, every numeric JSON field, storage wire, non-exhaustive stream matches, binary certificate bounds, MetaNet shape direction, identity publication and uncapped internalize. Add one finding per named item to PR 332 while preserving every existing body line and the two closing lines.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
Build review-result JSON directly from typed results without an unwrap. Keep the planted-row witness in short setup, acceptance and storage assertions. No served value or fixture changes beyond the two findings.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
Preserve the toolbox wrapper Display for ordinary SDK errors while retaining the inner typed review carrier. The existing typed-error tests hold all ordinary messages to their previous bytes.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
Keep the empty-disclosure certificate out of the field-bound world: the pinned lookup pages two certificates before matching the serial. The dedicated world lets the fixture exercise keyring disclosure rather than an unrelated not-found path.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
WIRE_RECORD=1 cargo test --locked --test wire records after the code. Moved and new rows:
- 147-createAction.doubleSpendReview.json: finding 1, #140 host map and bsv-rs #339, HTTP 400/isError/numeric code 5 with the actual typed review evidence and sendWithResults; absent optional members omitted.
- 158-acquireCertificate.revealFields.json: finding 3, toolbox #240, an encrypted field and master key for the disclosure witness.
- 159-proveCertificate.emptyFields.json: finding 3, toolbox #240, fieldsToReveal [] returns an empty keyring instead of disclosing all fields.
- 160-proveCertificate.shortSerial.json: finding 3, toolbox #240/#311, the served 31-byte serial refusal before recovery.
MANIFEST.json records each reason. All 156 other existing fixtures, every consumer fixture, and the gate vectors are byte-identical to 3cbc445.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
Render the required scoreboard after the fixture recording: 160 wire rows. No other score, floor, consumer fixture or gate vector moves.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
Drive the served carrier with HttpWalletJson::new, without adding a host HTTP-client site or widening the rule-28 allowlist.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
Remove the duplicated test listener setup and its similar-name warning by using the existing abortable server helper and awaiting its shutdown. Mark type names in documentation. Preserve the ratchet ceilings and every fixture byte.

Co-Authored-By: GPT-6.1 Sol (gpt-6.1-sol) <noreply@openai.com>
@Calgooon

Copy link
Copy Markdown
Contributor Author

Toolbox Dependents against this branch (2026-10-28 11:19:24Z, run 40679043409, the first with the cli_ref input of toolbox #405): the clone line is right, cloning … at its lane/p1-277-pin-beta2 branch (the line under test) … at bb9266b (no fallback, toolbox #412 read). The build fails on one signature: error[E0061]: this method takes 4 arguments but 3 arguments were supplied (--locked first, then retried unlocked, the same), bsv-wallet-cli build: FAIL, test: not run. The method is create_action_offering, whose fourth parameter is the must-spend list of toolbox #353 (their #399), landed on their beta behind the v0.14.0-beta.2 tag as an api-break with its migration noted on #277; the published 0.14.0-beta.2 this PR pins takes three. So the Dependents run against the toolbox's beta tip is red by construction until the CLI pin that carries #353 (the same pin #313's --from waits for), and this run says nothing against PR 332, whose own CI on the published crates is green on all ten required checks. The same red is expected of a plain --ref beta dispatch after the landing until that pin; the PR body's line that it reads green is folded after the re-check's verdict.

@Calgooon
Calgooon merged commit b101d67 into beta Oct 28, 2026
12 checks passed
@Calgooon
Calgooon deleted the lane/p1-277-pin-beta2 branch October 28, 2026 11:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant