Repository navigation
release: 0.7.0, the 0.4 line (the toolbox 0.7.0, the tracker 0.2.0 and bsv-rs 0.4.1 together; a stranger's BEEF read by the streaming reader; the served doors take a body of any size) - #12
Merged
Conversation
…(one bsv-rs in the graph) The three pins move in one commit. The tracker 0.2.0 alone (bsv-rs left at 0.3.35) is red: E0308 at src/tracker_host.rs:279:67 and :411:64, two copies of bsv_rs in the graph. With the three together the graph holds one bsv-rs (0.4.1) and both sites compile unchanged; no match in the CLI names a toolbox Error arm, so the toolbox's new Error::InvalidBeef needs no arm. cargo test --workspace --locked: 323 passed, 0 failed, as at the base. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…aming reader and refused for invalid bytes only atomic_beef::ensure_atomic is the one door a stranger's BEEF takes into the wallet from the commands (fund's hex, receive's courier, gift-claim's deposit). It now runs the toolbox's refuse_invalid_beef_bytes (bsv-rs's BeefStream, one element at a time) before the in-memory parse, so a refusal names the byte in the caller's own bytes and the reader's kind; receive's vout_paying reads the courier's bytes the same way before it matches an output. No size or count is judged anywhere on this path. Witnesses, red at be4f50a: a transaction with no input under a BUMP was made atomic (and its output matched, vout 0); a cut BEEF gave the parser's text, "reader underflow: need 25 bytes, only 23 available", with no offset. Green: "Invalid BEEF at byte <the transaction's leading byte>: NoInputs" and "Invalid BEEF at byte <n>: Truncated"; the one-input control is taken. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… the body is read, INVALID_BEEF names the byte /internalizeAction (`tx`) and /createAction (`inputBEEF`) carry a caller's BEEF as a JSON array; through 0.6.0 every body over 50 MiB was 413 TOO_LARGE, so a valid BEEF of about 13 MB and more was refused for its size. The two routes now read the body with no cap (BEEF_DOORS; the route-level DefaultBodyLimit disabled); every other route keeps 50 MiB (BODY_CAP). The body is held whole (the JSON wire holds the BEEF as one array: memory linear in the BEEF, never a refusal) and the toolbox 0.7.0's streaming reader judges the bytes. Auth now runs before lenient_json_body reads any body, so the uncapped doors are open only to the wallet's own caller (with a bearer token set). The toolbox's "Invalid BEEF at byte N: Kind" maps to 400 INVALID_BEEF. Witnesses (tests/served_beef_doors.rs), red at e030df9, all four 413 TOO_LARGE: a valid Atomic BEEF of 14,000,000-odd bytes (body over 50 MiB) internalized; the same with one trailing byte refused at that byte, TrailingBytes; createAction's inputBEEF over the cap answered by the empty wallet's funding (402); an unauthenticated body refused 401 before it is read. Green: 4 passed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sv-rs 0.4.1; a valid BEEF is never refused for its size, a refusal names the byte) Cargo.toml and Cargo.lock at 0.7.0. CHANGELOG.md is new: it names the line, the posture, the commands' funnel and the served doors moved, the bounds that stay (the JSON body and a command's BEEF held whole, the 1,000,000-byte caps on /arc-callback and the relay, which carry no BEEF), and the upgrade. Breaking: the library's public API names the toolbox's and bsv-rs's types. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
The version table of 2026-10-10 (bsv-stack-lean docs/p0/versions-2026-10-10.md): the 0.4 line everywhere, and the owner's posture. The three pins move together so one bsv-rs sits in the graph; a stranger's BEEF at the CLI's funnel is read by the streaming reader and refused for invalid bytes only; the two served BEEF doors take a body of any size, authenticate before the body is read, and INVALID_BEEF names the byte. 330 tests (7 new, each red before its fix), fmt, clippy, the dry run; verified by the captain here (docs/p0/align-cli.md). One risk, told to the fleets: a served daemon with no bearer token can be made to hold any body a client sends (before, 50 MiB), so a daemon bound beyond 127.0.0.1 should carry a token; a refusal to bind beyond loopback without one follows as 0.7.1.
🤖 Generated with Claude Code