chore: release v0.10.0#315
Merged
Merged
Conversation
…p [PC-015, BC-2.16.016] Adds long_help to the --arp clap arg in src/cli.rs documenting that ARP findings output is UNBOUNDED — no MAX_FINDINGS cap applies to the ARP analyzer path (contrast: HTTP/TLS/Modbus/DNP3 cap at 10,000 via TCP reassembly layer). Also clarifies that the ARP binding table cap (MAX_ARP_BINDINGS=65,536) and storm-counter table cap (MAX_STORM_COUNTERS=4,096) are memory bounds on internal state only and do not cap findings output. Documentation-surface fix only: no ARP analyzer behavior changed. Passes: test_BC_2_16_016_cli_help_documents_arp_findings_unbounded (Red Gate) Stays green: test_BC_2_16_016_arp_findings_vec_has_no_cap (characterization)
… [PC-015] - src/analyzer/arp.rs: mod bc_2_16_016 characterization test verifies ARP findings Vec has no MAX_FINDINGS cap (>10,000 findings with N=10,001 distinct IPs, spoof_threshold=1) - tests/bc_2_16_016_arp_tests.rs: integration Red Gate test asserts the word "unbounded" appears in wirerust analyze --help output for --arp flag Part of fix bundle fix-pc-013-014-015 / STORY-113 AC-022 / BC-2.16.016 v1.0.
docs(cli): document ARP findings output is unbounded in --arp help [PC-015]
… framing Update doc-comments in mod bc_2_16_004_inv6 and its outer block comment to reflect BC-2.16.004 v1.10: the four .expect() sites are by-construction loud tripwires (not fail-safes), the tests exercise real production paths (entry always present / first_rebind_ts always Some at Step 3), and the module description accurately frames all five tests as finding-count/severity regression guards. Removes all v1.9 "silent skip" / "fail-safe degradation" / "Post-fix if-let" language. No test logic, assertions, or function names changed.
test(arp): regression guards for BC-2.16.004 by-construction .expect() invariants [PC-013]
…014, BC-2.15.020] BREAKING CHANGE: DNP3 analyzer summarize() detail map now emits key "parse_errors" instead of "total_parse_errors", aligning DNP3 with the HTTP, TLS, and Modbus sibling analyzers. JSON consumers reading DNP3 summary output must update their key references. - src/analyzer/dnp3.rs: rename local var total_parse_errors -> parse_errors, update doc comment, change string key literal "total_parse_errors" -> "parse_errors" (the single behavioral change, line ~1425) - tests/dnp3_detection_tests.rs: update key lookups and assertions in test_BC_2_15_020_summarize_empty_zero_flows (~line 993) and test_BC_2_15_020_summarize_includes_parse_errors (~line 1362-1380) to use the new key name; Red Gate test test_BC_2_15_020_parse_errors_key_name_is_parse_errors now passes - tests/bc_2_15_110_dnp3_dispatcher_tests.rs: rename local variable total_parse_errors -> parse_errors (~line 959/961, cosmetic only) - CHANGELOG.md: document breaking change under [Unreleased] Traces to: BC-2.15.020 v1.4 postcondition 1 (D-220); STORY-108 AC-010.
…w field; add migration note to CHANGELOG [PC-014] CR-004: summarize() local `parse_errors` renamed to `aggregate_parse_errors` to visually distinguish the cross-flow aggregate from Dnp3FlowState.parse_errors. JSON output key "parse_errors" is unchanged. CR-005: CHANGELOG breaking-change entry now includes a concrete migration snippet (jq one-liner) for script/JSON consumers.
fix(dnp3)!: rename output key total_parse_errors -> parse_errors [PC-014]
chore(dnp3): resync STORY-108 demo evidence + test comment to parse_errors [PC-014]
Zious11
added a commit
that referenced
this pull request
Jun 24, 2026
…peline QUIESCED Decisions recorded: - D-225: PC-014 DELIVERED & MERGED (PR #313 fix(dnp3)!: rename total_parse_errors->parse_errors, develop f5c002a). Post-merge consistency audit CONSISTENT (7/7). DRIFT-1/DRIFT-2 closed via PR #314 (develop 2b348a1) — AC-010/AC-011 demos re-recorded (VHS). - D-226: v0.10.0 RELEASED (PR #315 → main 0cbe922, tag v0.10.0, run 28109367603 SUCCESS, 4 binaries). develop back-merged ff4b82b. Cycle fix-pc-013-014-015 CONVERGED + CLOSED. State changes: - pipeline: ACTIVE → STEADY-STATE; phase: FIX-CYCLE → QUIESCED - released_version: v0.9.4 → v0.10.0 (0cbe922); prior_* shifted to v0.9.4 - develop_head: e684889 → ff4b82b; main_head: 96b49e8 → 0cbe922 - current_cycle: NONE; current_wave: QUIESCED - PC-013/PC-014/PC-015 all moved to resolved-do-not-reopen line - Spec versions at close: BC-INDEX v1.73, BC-2.15.020 v1.4, BC-2.16.004 v1.10, BC-2.16.010 v1.8, BC-2.16.016 v1.0; STORY-108 v1.2, STORY-113 v1.3, STORY-114 v1.6 - D-219..D-224 archived to cycles/fix-pc-013-014-015/decisions-archive.md - Fresh SAFE-TO-CLEAR / resume-procedure block written (D-226 ground truth) - STATE.md: 187 lines (under 200-line target) New cycle artifacts: - cycles/fix-pc-013-014-015/lessons.md: 2 lessons (S-7.02 satisfied, no follow-up story) - cycles/fix-pc-013-014-015/decisions-archive.md: D-219..D-224 Lessons (S-7.02): - L1 [process-practice]: Backlog labels must be verified against actual code during F1/scoping. All three open-item descriptions were factually inaccurate; research caught all before wrong fix shipped. - L2 [design-lesson]: .expect() on internal invariants is correct; silent-skip is fail-OPEN anti-pattern. No new engine story required — existing scoping gate already encodes correct behavior. Backlog items added: DEMO-TAPE-PATH-001, DEMO-MEDIA-CHECKSUM-001, DEPENDABOT-311 (non-blocking). Count-propagation sweep: no numeric BC/story count changed this burst.
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.
Summary
This PR merges the
release/0.10.0branch intomainand constitutes the v0.10.0 release of wirerust.What's in this release (PRs #310 / #312 / #313 / #314)
fix(dnp3)!: rename output key total_parse_errors -> parse_errors [PC-014] #313 — BREAKING: DNP3 summary key
total_parse_errors→parse_errors[PC-014]. Thedetailmap produced by the DNP3 analyzer now uses"parse_errors"instead of"total_parse_errors", aligning DNP3 with sibling analyzers (HTTP, TLS, Modbus). JSON consumers reading DNP3 summary output must rename the key. See migration note below.docs(cli): document ARP findings output is unbounded in --arp help [PC-015] #310 — ARP findings output is unbounded — documented in
--arplong-help [PC-015].--help/--arplong_help now explicitly documents that the ARP findings list is unbounded. Includes BC-2.16.016 characterization test + CLI help Red Gate tests.test(arp): regression guards for BC-2.16.004 by-construction .expect() invariants [PC-013] #312 — ARP
.expect()spec correction + regression tests [PC-013]. Corrected the BC-2.16.004 invariant regression guards to v1.10 framing; tests now match the authoritative spec language.chore(dnp3): resync STORY-108 demo evidence + test comment to parse_errors [PC-014] #314 — Demo-evidence resync. STORY-108 demo evidence and test comments updated to use
parse_errorsfollowing the PC-014 rename.BREAKING: DNP3
parse_errorskey rename — consumer migrationdetail["total_parse_errors"]detail["parse_errors"]jq migration:
All other DNP3 output fields are unchanged. Non-DNP3 analyzers (ARP, HTTP, TLS, Modbus) are unaffected.
CHANGELOG — v0.10.0
Release checklist
version = "0.10.0"in Cargo.toml / Cargo.lock## [0.10.0] - 2026-06-24section addedchore: release v0.10.0(db541ce) on release/0.10.0v0.10.0on main after merge (devops-engineer)