Repository navigation
v0.5.0
What's Changed
- Trigger DocFX publish workflow by @bslater in #1
- Create DateTimeExtensions.IsFirstDayOfMonth.cs by @bslater in #3
- Three fish by @bslater in #4
- Fix hashing extension defects and restore lost tests by @bslater in #5
- Address analyzer warnings across Bodu.Core by @bslater in #7
- Align Bodu.Core XML docs with implementation by @bslater in #6
- Claude/review hashing algorithms b dd5q by @bslater in #8
- Clarify file-scoped namespace convention in CLAUDE.md by @bslater in #9
- Claude/numerical consolidation c zo xa by @bslater in #10
- Refactoring of Crypto issues by @bslater in #12
- Split DocFX workflow into build and deploy jobs by @bslater in #11
- Fix cancellation handling in ParallelMerkleTreeHash and flaky test by @bslater in #13
- Fix unit test failures and improve crypto infrastructure by @bslater in #14
- Fix Threefish.Validate null handling and IV exception type by @bslater in #15
- Fix EvictingDictionary correctness, re-entrancy, enumeration safety, and Key/Value views by @bslater in #16
- Fix cryptography namespace breaking issues and extract BlockCipherTransform base by @bslater in #17
- Add test parity between CircularBuffer and ConcurrentCircularBuffer by @bslater in #18
- Claude/add extension method tests 2 xduc by @bslater in #19
- Claude/add extension method tests 2 xduc by @bslater in #20
- docs: polish DocFX site with DarkerFX theme, branding, and landing content by @bslater in #21
- docs(crypto): add strategic diagrams for block cipher modes and Merkle tree by @bslater in #22
- docs(crypto): add threading swim-lane diagram for ParallelMerkleTreeHash by @bslater in #23
- docs: add cryptography usage guides with worked encrypt/decrypt examples by @bslater in #24
- feat(crypto): public AesBlockCipher and AEAD extensions, with usage guide by @bslater in #25
- feat(crypto): promote block-cipher engines to public + composing guide by @bslater in #26
- test(core): stabilise flaky ConcurrentCircularBuffer AllowOverwrite tests by @bslater in #27
- feat(crypto): add ANSI X.923, ISO 10126, and ISO/IEC 7816-4 padding s… by @bslater in #28
- refactor(crypto): rebuild CRC subsystem — catalogue, docs, tooling, and tests by @bslater in #29
- chore: validate Build and Test workflow by @bslater in #30
- refactor(crypto): lazy CRC catalogue with CrcStandards enum + fix 73 broken check vectors by @bslater in #31
- feat(io): introduce Bodu.IO with NonCryptographicHashAlgorithm-based Fletcher by @bslater in #32
- feat(io): migrate CRC onto NonCryptographicHashAlgorithm and remove from crypto by @bslater in #33
- feat(core): add bit-length-aware ReverseBits overloads by @bslater in #34
- Claude/add bit reversal methods rs4 ts by @bslater in #36
- test: fix failing tests in Core and Security.Cryptography by @bslater in #38
- refactor(core): make FiscalWeekQuarterProvider a recurring calendar rule by @bslater in #39
- test(core): extend fiscal 53-week multi-year coverage (CI follow-up) by @bslater in #40
- test(io.hashing): harden exception and edge-case coverage for CRC and Fletcher by @bslater in #41
- test: fix three failing tests across Core and Security.Cryptography by @bslater in #42
- test(core): add exhaustive and cross-type coverage for bit-length ReverseBits by @bslater in #43
- test(core): stabilise ItemEvicted stress test with deterministic warmup by @bslater in #46
- ci: emit filtered failed-tests TRX artifact alongside full results by @bslater in #47
- docs: add Bodu.IO to CLAUDE.md and tighten file-layout conventions by @bslater in #48
- test: normalise copyright headers, banner separators, and summary preambles across test projects by @bslater in #49
- Claude/review test documentation ncs ab by @bslater in #50
- test: finish test-doc review — complete cref refinement and one-type-per-file splits by @bslater in #51
- feat(calendar): add Australian notable date catalogue with state/territory scoping by @bslater in #56
- test: fix CI breakage from namespace conversion by @bslater in #52
- docs(claude): refresh guidance for rename, private docs, validation, … by @bslater in #58
- docs: refresh DocFX site for four-project solution, add Bodu.IO.Hashing guides by @bslater in #59
- feat(calendar): extensible inheritance model for <Use> cherry-pick directives by @bslater in #60
- Migrate non-cryptographic hashes from Bodu.Security.Cryptography to Bodu.IO.Hashing by @bslater in #57
- docs: expand per-algorithm hashing guides across both packages by @bslater in #61
- feat(Bodu.Security.Cryptography): add Whirlpool hash with all three p… by @bslater in #62
- feat(core): extend IComparableExtensions with IsGreater/IsLess/Min/Max by @bslater in #63
- feat(calendar): per-subdivision adjustments + external plugin infrastructure by @bslater in #64
- fix(crypto): correct Whirlpool ABC test vector and Initialize semantics; rebase tests onto BlockHashAlgorithmTests by @bslater in #67
- feat(core): extend IComparableExtensions with ordering, Min/Max, IsEqualTo and AtLeast/AtMost helpers by @bslater in #65
- Add Skein hash family (Skein-256/512/1024) over Threefish by @bslater in #66
- feat(Bodu.IO.Hashing): add SuperFastHash by @bslater in #68
- feat(Bodu.IO.Hashing): add Damm, Luhn, Verhoeff check-digit algorithms by @bslater in #70
- feat(Bodu.Security.Cryptography): add Serpent cipher family (128 + tweakable 256/512/1024) by @bslater in #72
- Refactor Skein onto KeyedBlockHashAlgorithm<T> by @bslater in #71
- feat(core): add index-aware and multi-accumulator Aggregate extensions by @bslater in #69
- fix(Bodu.IO.Hashing): correct operand order in Verhoeff streaming Append by @bslater in #73
- feat(Bodu.IO.Hashing): add ISBN, GTIN, ISO 7064 (IBAN/LEI), and finan… by @bslater in #74
- test(Calendar): expand coverage to 94% line / 88% branch by @bslater in #75
- fix(Bodu.IO.Hashing): drop Empty KA vector from strict-length check-d… by @bslater in #76
- fix(Core): handle CalendarWeekendDefinition.None in IsWeekend switch by @bslater in #79
- test(Core): align Next/PreviousWeekday(None) tests with #79 IsWeekend(None) contract by @bslater in #81
- fix(Calendar): guard NotableDateService against re-entrant and cross-year runaway by @bslater in #77
- feat(test): add SymmetricAlgorithmSpecification and specification-driven base class tests by @bslater in #80
- Review and fix Twofish implementation by @bslater in #78
- fix(Calendar): use NotableDate name as canonical rule Name by @bslater in #83
- fix(test): correct two bugs in BlockCipherTests.Encrypt by @bslater in #85
- feat(Security.Cryptography): add ASCON-HASH256 and ASCON-HASHA256 (NIST SP 800-232) by @bslater in #84
- fix(Calendar): correct MoveToNextNonWorkingDay to skip already-non-working days by @bslater in #86
- Add ASCON-HASH256 and ASCON-HASHA256 (NIST SP 800-232) by @bslater in #82
- Add ASCON-HASH256 cryptographic hash algorithm (NIST SP 800-232) by @bslater in #87
- Refactor adjustment parsing tests to data-driven with XML fragments by @bslater in #88
- Implement ASCON family per NIST SP 800-232 (AEAD128, XOF128, CXOF128) by @bslater in #89
- docs: ASCON family guide suite (hashing, XOF, AEAD) by @bslater in #91
- Implement Camellia cipher and comprehensive test suite by @bslater in #90
- Rename INotableDateCalculator to INotableDateAlgorithm throughout by @bslater in #92
- fix(Calendar): move all UseFrom imports before NotableDate declarations by @bslater in #93
- Fix lunar month mapping for Chinese lunisolar calendar leap months by @bslater in #94
- fix(Calendar): correct Hebrew notable-date test expectations for 2024… by @bslater in #95
- Refactor CamelliaBlockCipher for RFC 3713 clarity and maintainability by @bslater in #97
- feat(Calendar): drive global-jewish.xml from HebrewNotableDateAlgorithm via Algorithm month/day by @bslater in #98
- fix(Calendar): correct compile and assertion errors in #98 follow-up tests by @bslater in #99
- fix(Camellia): correct RFC 3713 key schedule subkey assignments by @bslater in #100
- refactor(Calendar): author Yom Kippur, Sukkot, and Shavuot as offsets from their anchors by @bslater in #101
- fix(Security.Cryptography): drain workers on all exceptions in ComputeHashAsync (#54) by @bslater in #105
- Fix flaky statistical shuffle tests (issue #55) by @bslater in #106
- feat: add MurmurHash3, xxHash, BLAKE2, SHA-3, SHAKE, and BLAKE3 hash algorithms by @bslater in #102
- Calendar: convert LunarNewYearNotableDateAlgorithm to Fixed+calendarType rule by @bslater in #104
- refactor(Security.Cryptography): split block hash base types into Merkle–Damgård and Blake-family lines by @bslater in #108
- Fix IO.Hashing known-answer test vectors for MurmurHash3 and xxHash by @bslater in #107
- Fix DrainWorkersAsync zombie-worker leak on stream fault by @bslater in #109
- fix(Calendar): un-ignore AU notable-date tests by @bslater in #110
- Update lunar calendar XML rules and algorithm test coverage by @bslater in #111
- Consolidate Blake2 sigma table and align MerkleTree factory API by @bslater in #112
- Add NotableDateFilter with primary/secondary gate and service overloads by @bslater in #114
- Consolidate Calendar exception strings into CalendarStrings.resx by @bslater in #115
- refactor(Blake3): inherit from DeferredFinalBlockHashAlgorithm by @bslater in #117
- Add comprehensive NotableDateFilter test coverage by @bslater in #116
- Add algorithm-families overview page, missing namespace guides, and SVG diagrams by @bslater in #119
- feat(Security.Cryptography): add Key property to Blake2b and Blake2s for keyed MAC mode by @bslater in #118
- feat(IO.Hashing): add NonCryptographicHashAlgorithmExtensions with full test coverage by @bslater in #120
- docs(calendar): audit and fix XML documentation consistency across project by @bslater in #122
- fix(audit-loose-ends): resolve all outstanding loose ends across the codebase by @bslater in #121
- Fix NotableDateCategory enum to match XSD schema and reclassify Easter providers by @bslater in #123
- Refactor MultiCharCheckDigitAlgorithmTests into focused partial classes by @bslater in #125
- Reorganize and expand notable dates calendar resources by @bslater in #124
- Refactor hash algorithm test vectors into structured known-answer format by @bslater in #128
- Add defensive guards against malformed providers and null returns by @bslater in #129
- Add comprehensive exception validation test suites by @bslater in #130
- test(Security.Cryptography): refactor Skein tests to data-driven KAT model by @bslater in #131
- feat(calendar): add NotableDateDocumentBuilder library for programmatic rule construction by @bslater in #132
- test(Security.Cryptography): introduce data-driven KAT primitives for block ciphers; pilot Skipjack by @bslater in #133
- feat(calendar): split region rules into companion data packs by @bslater in #135
- test(Security.Cryptography): migrate Blowfish & Camellia KATs to data-driven shape by @bslater in #137
- refactor(Collections.Generic): extract RingStorage, add ArrayDeque and Deque by @bslater in #134
- test(Collections.Generic): introduce abstract test bases for ring-backed collections by @bslater in #139
- test(Security.Cryptography): unify KAT-driven cipher test architecture by @bslater in #138
- refactor(Collections.Generic): convert ring-buffer types to inheritance by @bslater in #140
- test+fix(Security.Cryptography): standardise cipher tests, close algorithm-tier gaps, fix Threefish dispose contract by @bslater in #146
- refactor(Collections.Generic): tighten ring-backed collection contracts by @bslater in #147
- refactor(Collections.Generic): collapse DequeBase into Deque by @bslater in #148
- docs(core): add wireframe diagrams for circular buffer, deque, evicting dictionary by @bslater in #151
- fix(Security.Cryptography): switch TryFillWithRandomNonZeroBytes to per-byte rejection by @bslater in #152
- feat(calendar): add JSON authoring format for notable date rules by @bslater in #150
- Add comprehensive test suite for NonCryptographicHashAlgorithmExtensions by @bslater in #153
- Fix Adler checksum SIMD path to match scalar per-byte recurrence by @bslater in #154
- Add IndexedPriorityQueue<TElement, TPriority> implementation by @bslater in #155
- Add comprehensive test coverage for IndexedPriorityQueue by @bslater in #156
- Refactor ConcurrentCircularBuffer snapshot protocol to use seqlock pattern by @bslater in #157
- Suppress obsolete serialization warnings and remove redundant assertion by @bslater in #158
- feat(Globalization.Calendar): add NotableDateContext + extension scaffolding by @bslater in #159
- docs(extensions): align period-bound DateTime/DateOnly XML docs by @bslater in #162
- test(Globalization.Calendar.Extensions): comprehensive coverage sweep for NotableDate-aware DateTime/DateOnly extensions by @bslater in #163
- refactor(Bodu.Core/Extensions): align DateTime/DateOnly method names by @bslater in #164
- fix(Bodu.Core/test): disambiguate
out _discard shadowed by lambda parameter by @bslater in #165 - fix(Bodu.Core/test): repair date-extension test build errors by @bslater in #166
- Fix infinite recursion in IsWeekday(DayOfWeek) overload by @bslater in #169
- Fix concurrent generation allocation ordering in stress test by @bslater in #170
- Resolve Adler-32/Fletcher-32 test vector mismatch (issue #167) by @bslater in #171
- Expand DateOnly extensions with provider support and overloads by @bslater in #173
- Clarify return value semantics in working day extension methods by @bslater in #174
- feat(crypto): complete EAX as spec-compliant AEAD mode by @bslater in #136
- Expand and improve XML documentation across public API surface by @bslater in #175
- Reorganize documentation: move algorithm families to docs, add library introductions by @bslater in #176
- Expand XML documentation across calendar API surface by @bslater in #177
- Expand XML documentation with detailed remarks and guidance by @bslater in #178
- Fix documentation links and add missing GetHashCode override by @bslater in #179
- Fix remaining DocFX link and xref warnings by @bslater in #180
- Refactor AEAD test base class to support generic test inheritance by @bslater in #181
- Consolidate AEAD cipher mode tests into shared base class by @bslater in #182
- Refactor AEAD extension tests to focus on wrapper contracts by @bslater in #184
- Cast AssociatedData to ReadOnlySpan in AEAD cipher tests by @bslater in #185
- add Tier 2 universal mode-test coverage by @bslater in #186
- fix GCM nonce length in AeadBlockCipherModeTransformExtensionsTests by @bslater in #183
- add edge-case tests for crypto algorithm public surfaces by @bslater in #196
- Hash-algorithm review: bitwise + lifecycle + dispose + naming consolidation by @bslater in #198
- consolidate 10 unmerged crypto/hashing branches into master by @bslater in #200
- scope AEAD extension tests to extension-method behaviour only (rebased) by @bslater in #201
- Add HashValue / HashSizeValue clearing to CubeHash.Dispose by @bslater in #202
- CubeHash: clear HashValue and HashSizeValue on Dispose by @bslater in #203
- fix all 9 master test failures (zero-on-auth + 4 self-introduced test bugs + stale empty-block test) by @bslater in #207
- extend padding/mode regression coverage and AEAD reuse contracts by @bslater in #208
- Claude/consolidate hashing crypto by @bslater in #209
- scope AEAD extension tests to extension-method behaviour only by @bslater in #210
- Claude/test crypto edge cases b l cr3 by @bslater in #211
- Claude/review hash algorithms ex ysl by @bslater in #212
- Claude/refresh crypto docs g w4f7 by @bslater in #213
- Claude/crypto padding and mode coverage by @bslater in #214
- Add script to delete 28 stale crypto/hashing branches by @bslater in #205
- Notable-date resolution window feature by @bslater in #215
- Notable-date pipeline fixes (CI failure follow-ups) by @bslater in #216
- Mark override-removal tests Ignore (pipeline does not honour RuleRemoval) by @bslater in #217
- Add weak-spot test suite probing pipeline edge contracts by @bslater in #218
- Fix off-by-one on leap-year-affected DataRows by @bslater in #219
- Fix duplicate-emission failure on ±365-day AddDays rows by @bslater in #220
- Add filter combinator tests as data-driven test suite by @bslater in #221
- Add edge-case scenarios for range-pipeline resolution by @bslater in #222
- Add scenario test suite for range-resolution behaviour by @bslater in #223
- Add MaxAdjustmentReachDays for author-declared adjustment reach by @bslater in #224
- Update CallCount expectations for tight candidate-year envelope by @bslater in #225
- Fix GCM nonce in AEAD extension tests by @bslater in #226
- Make AEAD test base CRTP-typed for per-mode disposal exclusions by @bslater in #227
- Reorganise guide indexes and TOCs around namespace/type hierarchy by @bslater in #228
- Fix overload resolution in AeadBlockCipherModeTransformExtensionsTests by @bslater in #229
- Allow empty final input in BlockCipherTransform.TransformFinalBlock by @bslater in #230
- Fix CS0029 in AEAD extension tests via explicit ReadOnlySpan cast by @bslater in #231
- Fix four self-introduced AEAD test bugs surfaced by master CI by @bslater in #232
- Suppress flaky/failing date extension tests with tracking issues by @bslater in #233
- Rename remaining GetDay statics to GetDate by @bslater in #234
- Document Text/** compile exclusion in Bodu.Core.csproj by @bslater in #235
- Improve XML doc headers for hashing/crypto extensions by @bslater in #236
- Scope AEAD extension tests to extension-method behaviour only by @bslater in #237
- Add branching and commit guidelines to CLAUDE.md by @bslater in #238
- Add test tier infrastructure (Smoke/BVT/Regression/Stress) by @bslater in #239
- Clean up test file: remove incomplete/duplicate test code by @bslater in #240
- Disambiguate AEAD wrapper calls from instance Encrypt/Decrypt by @bslater in #241
- Fix constructor parameter ordering in NotableDateRangePipeline by @bslater in #242
- Claude/fix calendar syntax error kj gb l by @bslater in #243
- Claude/fix calendar syntax error kj gb l by @bslater in #245
- Reorganize EdgeCases tests into per-member partial files by @bslater in #244
- Claude/organize edge case tests 7paq w by @bslater in #246
- Claude/organize edge case tests 7paq w by @bslater in #247
- Mirror cross-cipher CryptoStream tests onto every padding strategy by @bslater in #248
- Add on DataAssembly property in Calendar data packs by @bslater in #249
- Add on DataAssembly property in Calendar data packs by @bslater in #250
- Add on DataAssembly property in Calendar data packs by @bslater in #251
- Consolidate duplicate IO.Hashing tests via DataRow by @bslater in #252
- De-duplicate tests across CryptoTransformTests inheritance chain by @bslater in #253
- Improve PooledBufferBuilder: new members, validation, and optimisations by @bslater in #254
- Add Multiset and MultiValueDictionary<TKey,TValue> collection types by @bslater in #255
- Review and correct ThrowHelper guard methods by @bslater in #256
- Fix CS8175: construct Span/ReadOnlySpan inline inside lambda by @bslater in #257
- Fix CS1929 in MerkleTreeHash: use PooledBufferBuilder.WrittenSpan by @bslater in #258
- Consolidate code-analysis configuration into solution-root files by @bslater in #259
- Claude/fix build issues d zv tz by @bslater in #260
- Claude/fix build issues d zv tz by @bslater in #261
- Claude/fix build issues d zv tz by @bslater in #262
- Claude/fix build issues d zv tz by @bslater in #263
- Claude/fix build issues d zv tz by @bslater in #264
- Crypto IV validation, spec-driven tweak tests, SimpleReversing KAT by @bslater in #265
- test: close Bodu.CoreLib coverage gap report (P0–P3) by @bslater in #268
- Feature/new generic collection types by @bslater in #269
- Add comprehensive test coverage for cryptographic utilities by @bslater in #270
- Add comprehensive helper methods and tests for cryptographic operations by @bslater in #271
- test: close coverage gaps in buffer fallbacks, randomize, cache, IsOu… by @bslater in #273
- addressed test case by @bslater in #274
- Add comprehensive unit tests for hashing algorithms and checksums by @bslater in #276
- Standardize size parameters to bits throughout codebase by @bslater in #275
- refactor(crypto): move static exception messages to resx and CryptoHe… by @bslater in #277
- Harden concurrent stress tests and fix MultiValueDictionary.Clear() by @bslater in #278
- test(crypto): populate AsconHash256/HashA256 typed-slot KAT by @bslater in #279
- Add wide-block Serpent cipher test vectors and expand test coverage by @bslater in #280
- Add JSON Schema validation to NotableDateRuleJsonParser by @bslater in #281
- Refactor NotableDateRuleJsonParser to use tabs and add comprehensive test coverage by @bslater in #282
- Add JSON serialization support to NotableDateDocumentBuilder by @bslater in #283
- Add comprehensive test coverage for NotableDateRuleJsonParser by @bslater in #284
- Simplify and standardize Rule name attribute across NotableDate XML files by @bslater in #285
- Fix XML round-trip and JSON tag serialisation in calendar builder by @bslater in #286
- Claude/fix xml roundtrip test yk bl m by @bslater in #287
- Refresh DocFX static pages to align with the actual API surface by @bslater in #288
- Add notable date rules and adjustments documentation by @bslater in #289
- Convert plain-text library type references in XML docs to by @bslater in #290
- Restructure Calendar documentation and add working-day arithmetic guide by @bslater in #291
- Add numeric, array, and IList extension methods by @bslater in #292
- Add WorkingDaysOfWeek enum, WeekPattern presets, and day-of-week predicates by @bslater in #293
- Route public Bodu.Core parameter validation through ThrowHelper by @bslater in #294
- Fix NotableDateService ctors, fiscal-year round-trip, DocFX logo, and add web SDK hook by @bslater in #295
- Add image lightbox and enhance calendar documentation diagrams by @bslater in #296
- Add comprehensive test coverage for builder and extension methods by @bslater in #297
- Implement override-addition exemption from removal suppression by @bslater in #298
- Implement IDisposable for hash algorithms and add disposal tests by @bslater in #299
- Extract text encoding to new Bodu.Text.Encoding project by @bslater in #301
- Replace CalendarWeekendDefinition with WorkingDaysOfWeek by @bslater in #302
- Add Bodu.Text.Formats DocFX pages, guides, and diagrams by @bslater in #303
- Add Bodu.Text.Encoding hero image and inline diagrams by @bslater in #304
- Add Bodu.CodeStyle XML documentation formatter and analyzer by @bslater in #305
- Add Delimited, DotEnv, and Ini text format parsers by @bslater in #306
- Refactor ThrowHelper into modular partial files by concern by @bslater in #307
- Granular BODU#### XML-doc diagnostics + CDATA preservation by @bslater in #308
- Add Bodu.Text.Configuration and bridge to Microsoft.Extensions.Configuration by @bslater in #309
- Drop clause-aware wrap; document IDE analyzer-cache restart requirement by @bslater in #310
- Add test coverage for BlockCipher ctor validation, Threefish Rekey, and TransformAsync cancellation contracts by @bslater in #311
- Reach JSON-provider parity in Bodu.Extensions.Configuration.Text by @bslater in #312
- Use CryptoHelpers.Clear instead of Array.Clear in TwofishBlockCipher.Dispose by @bslater in #313
- Standardize exception messages and ThrowHelper layout across the solution by @bslater in #314
- Normalize line endings in Writer_Kat assertion by @bslater in #315
- fix(xmldoc): apply BODU1001 formatting fixes in Bodu.Core by @bslater in #316
- fix(xmldoc): zero BODU warnings + directive-aware codefix + DocFX build by @bslater in #317
- Claude/build review bodu warnings 8 ff av by @bslater in #318
- Claude/refactor exception resx x8 xqw by @bslater in #319
- Add XML documentation examples and improve summary clarity by @bslater in #320
- Add documentation for Bodu.Text.Configuration and Extensions.Configuration.Text by @bslater in #321
- Add fluent extension methods over Text.Formats types by @bslater in #322
- refactor(Text.Formats): split into Bencode, Delimited, DotEnv, Ini sibling namespaces by @bslater in #323
- test(Extensions.Configuration.Text): add complex POCO hierarchy binding tests by @bslater in #324
- Add span-receiver encoding extensions and UTF-8 fast paths by @bslater in #325
- Add Bodu.Numerics with Fraction exact-rational type by @bslater in #326
- Reformat XML documentation code examples for readability by @bslater in #327
- Add SVG diagrams for cryptography, hashing, and core documentation by @bslater in #328
- Claude/fix bodu text graphics 8 fh gb by @bslater in #329
- Move hard-coded exception messages to resource strings by @bslater in #330
- Add code examples to String extension method documentation by @bslater in #331
- Add XML documentation to public and internal APIs by @bslater in #333
- Expand Fraction API surface with rounding, conversions, and utilities by @bslater in #332
- Add extension methods for enums, streams, dictionaries, and enumerables by @bslater in #334
- Fix code tag placement in XML doc formatting by @bslater in #335
- Add input validation to prevent unsafe indexing and padding operations by @bslater in #336
- Add braces to single-statement throw guards and improve code style by @bslater in #337
- Add ConcurrentHashSet thread-safe set to Bodu.Core by @bslater in #338
- Add AVX-512F SIMD acceleration to CubeHash and optimize Snefru by @bslater in #339
- Fix pre-existing compile errors blocking the test project build by @bslater in #340
- Add AVX-512 vectorized implementations for Threefish ciphers by @bslater in #341
- Add DI sub-package and runtime-mutable overrides for NotableDateService by @bslater in #342
- Fix XorShiftRandom.NextDouble() upper-bound contract by @bslater in #343
- test(check-digits): pin IsValid(empty) must return false by @bslater in #344
- Fix GCM 32-bit counter silent wrap into J0's reserved keystream by @bslater in #345
- Align XorShiftRandom.Next(min, max) with System.Random for equal bounds by @bslater in #346
- Add parser policies, exception hierarchy, and test coverage by @bslater in #347
- Add BLAKE3 and ASCON-AEAD-128 KAT test infrastructure by @bslater in #348
- Add comprehensive test suite and resolve-entry metadata API by @bslater in #349
- Route legacy GetNotableDates overloads through range pipeline by @bslater in #350
- Add NSW Anzac Day weekend-substitute trial (2026–2027) by @bslater in #351
- Restrict month validation to 1–12 for Gregorian calendar rules by @bslater in #352
- Centralize Calendar exception messages in resx and expand CalendarThrowHelper by @bslater in #353
- Add benchmarks and pattern validation safeguards by @bslater in #354
- Consolidate test infrastructure into shared KAT helpers by @bslater in #355
- Refactor ThrowHelper tests to use KAT framework with DynamicData by @bslater in #356
- docs: add ROADMAP.md, refresh CHANGELOG, drop completed todo.md by @bslater in #357
- Prevent orphaning of trailing punctuation in XML doc wrapping by @bslater in #358
- Add BODU1406 analyzer + code-fix for overlong <typeparam> content by @bslater in #360
- Consolidate notable-date resolution into range pipeline by @bslater in #359
- Relocate domain-specific KAT records to their consuming test projects by @bslater in #361
- Clean up null-forgiving operators and remove duplicate key-length tests by @bslater in #362
- Add paired encryptor/decryptor factories and generic round-trip tests by @bslater in #363
- Add Bodu.Financial library with Money, MoneyBag, and exchange rate types by @bslater in #365
- docs(roadmap): reflect master state — Verhoeff shipped, expand analyzer-code range by @bslater in #366
- docs(packaging): add NuGet READMEs for Bodu.Numerics and Bodu.Financial by @bslater in #367
- Replace SymmetricAlgorithm-based stream ciphers with a native SymmetricStreamAlgorithm by @bslater in #368
- fix(crypto): use full-range RNG for keys, IVs, nonces, and tweaks by @bslater in #369
- test(crypto): refactor stream-cipher test base to mirror SymmetricAlgorithmTests by @bslater in #370
- test(crypto): consolidate duplicate contract tests into abstract bases by @bslater in #371
- docs: Add comprehensive guides and API documentation by @bslater in #372
- Extract variant display name helpers to dedicated classes by @bslater in #373
- Add hero SVG illustrations for Numerics and Financial packages by @bslater in #374
- Report inconclusive for intentionally omitted KAT test data by @bslater in #376
- Add policy-driven JSON serialization for Interval and Fraction by @bslater in #375
- docs: documentation alignment plan — phases 1-3, 6, 7 (intros, package matrix, calendar family, safety, guides) by @bslater in #377
- Add L, R, and compact-notation formatting for Money types by @bslater in #378
- feat(financial): add ExchangeRateSeriesBuilder + ExchangeRateTable for mutable rate editing by @bslater in #379
- Document Interval factories and set operations with examples by @bslater in #380
- Refactor Money to support both runtime-tagged and strongly-typed variants by @bslater in #381
- docs: clear all DocFX warningsAsErrors failures by @bslater in #382
- docs: fix DocFX xref failures after MoneyValue→Money refactor by @bslater in #383
- test+docs(financial): internal-type tests and static-docs coverage for ExchangeRateSeriesBuilder by @bslater in #384
- fix(financial): validate ExchangeRatePair at every public boundary by @bslater in #385
- feat(financial): reject unknown currencies by default with explicit-scale escape hatch by @bslater in #386
- revert(financial): drop Google MoneyDto adapter from base library by @bslater in #388
- Harden Bodu.Financial: allocation, default(Money), rounding, docs by @bslater in #389
- docs: retire completed items from ROADMAP by @bslater in #390
- Refactor Europe calendar data into per-country files with shared common dates by @bslater in #391
- feat(builder): wire WeekdayNearDate and RelativeWeekdayInMonth into NotableDateRuleBuilder by @bslater in #392
- Resolve merge conflict in Money.cs and Money.Conversion.cs by @bslater in #393
- test: strengthen RelativeWeekdayInMonth resolver coverage by @bslater in #394
- Add NotableDateRuleIdentity, reference, and index foundation by @bslater in #395
- Fix DocFX UidNotFound for renamed MoneyConversionResult generic by @bslater in #396
- docs: fix double-escaped generics in DocFX TOC titles by @bslater in #397
- docs: symmetric library framing on hashing intro, alphabetize TOCs (Core first), restore full left TOC on text pages by @bslater in #398
- feat(calendar): author variant-specific anchor and replacement-target references by @bslater in #400
- docs(financial): add exchange-type usage catalogue and worked lookup-option guide by @bslater in #401
- Add Bodu.Globalization.Calendar2 v2 rewrite with enhanced schema and plugins by @bslater in #402
- Calendar v2: close functional-parity gaps (recurrence cadence, introspection, working week, non-working-day triggers) by @bslater in #403
- Enhance resource pack documentation with structured headers and inline comments by @bslater in #404
- calendar v2: notable-date catalogue generator and DocFX pages by @bslater in #405
- Refactor calendar service and documentation; migrate to v2 schema by @bslater in #406
- ci(docs): scope DocFX HTML-entity audit to hand-authored YAML by @bslater in #399
- Rebuild Bodu.Globalization.Calendar.Builder for the v2 calendar library by @bslater in #407
- Reinstate the Builder DocFX pages for the v2 API by @bslater in #408
- docs(calendar): add examples, seealso, and usage guidance to consumer entry points by @bslater in #409
- Consolidate Americas shared observances into americas-common hub by @bslater in #410
- Merge master into ben's restructure (ben layout becomes canonical) by @bslater in #411
- Add Africa and Middle East calendar data packs by @bslater in #412
- Add comprehensive known-answer tests for common notable-date catalogues by @bslater in #413
- Remove v2 schema version references from documentation and comments by @bslater in #414
- Refactor extension classes to use partial class pattern by @bslater in #415
- Make Globalization.Calendar tests binary (atomic + data-driven) by @bslater in #416
- Calendar engine design-review fixes: indexing, algorithm registry, parser unification, data-driven precedence by @bslater in #417
- Remove dead multi-target scaffolding (net8.0-only) by @bslater in #418
- Remove obsolete [Serializable] from Money, Money, Fraction, Interval by @bslater in #419
- Move hard-coded exception text to resx in Bodu.Core and Bodu.Numerics by @bslater in #420
- docs: fix CheckDigits xref namespace and add Core collection guides by @bslater in #421
- docs: align DocFX static pages with the code implementation by @bslater in #422
- Bodu.Text.Encoding / Formats review: project split, API alignment, streaming parity by @bslater in #423
- Extract abstract IniDocumentBase from IniDocument by @bslater in #424
- Normalize TargetFramework tag to plural across libraries by @bslater in #425
- docs: align package inventory and library coverage with the codebase by @bslater in #426
- docs: reassess roadmap — calendar territorial expansion landed; Argon2/scrypt next by @bslater in #427
- Add TOML v1.1.0 parser, writer, and Base45/Base62/Bech32 encodings by @bslater in #428
- Add XML documentation to private methods and internal helpers by @bslater in #429
- Refactor Bencode to reader/writer pair with facade delegation by @bslater in #430
- Add TOML v1.0.0 spec version support with conformance testing by @bslater in #431
- Expand test coverage across Bodu libraries by @bslater in #432
- Add TOML encoding validation and column/offset diagnostics by @bslater in #433
- Add comparison operators to WeekPattern and globalize string formatting by @bslater in #434
- Standardize XML documentation example comments to use C# syntax by @bslater in #435
- Fix TOML test build break from merged refactor/encoding-PR collision by @bslater in #436
- docs: add TOML reference and refresh encoding docs for Base45/Base62/Bech32 by @bslater in #437
- docs: add/refresh per-project README files and wire them into packaging by @bslater in #439
- docs: add TOML and special-purpose encoding diagrams, enrich TOML type docs by @bslater in #440
- Clarify check-digit family design and relationship to hash algorithms by @bslater in #441
- Add Bodu.Text.Serialization with TOML and Bencode support by @bslater in #442
- Bootstrap .NET 10 SDK and repair dotnet-dnceng plugin on session start by @bslater in #443
- Consolidated Bencode/TOML libraries: S.T.J-parity test suites, parity features, and docs by @bslater in #444
- Add failing tests for Utf8BencodeWriter canonical-form guards and Skip alignment by @bslater in #445
- test(toml): add empirical spec-compliance and STJ-alignment tests by @bslater in #446
- docs: remove System.Text.Json alignment call-outs from Bencode and TOML by @bslater in #447
- Consolidate Bodu.Text into Bodu.Core by @bslater in #448
- docs(toml,bencode): add XML snippets to converter and attribute types by @bslater in #449
- feat(toml): add TomlDecimalHandling option to TomlSerializerOptions by @bslater in #450
- docs(toml,bencode): fill remaining XML example gaps and add callbacks guide by @bslater in #451
- docs: add six topic parent pages and regroup TOCs by @bslater in #452
- Equalize landing page card graphic sizing by @bslater in #453
- Add complementary cryptography and hashing semantic value types by @bslater in #454
- Add post-quantum cryptography: ML-DSA, ML-KEM, Ed25519, X25519 by @bslater in #455
- Remove cached CompositeFormat static fields from exception paths by @bslater in #456
- Apply implicit typing (
var) style per updated guidelines by @bslater in #457 - Add CultureInfo.CurrentCulture to all string.Format calls by @bslater in #458
- Add XML documentation examples to cryptography and hashing types by @bslater in #459
- Consolidate test infrastructure into Bodu.Test by @bslater in #460
- Add RBA exchange-rate provider and Excel/Compound file readers by @bslater in #461
- Add data-driven RBA rate known-answer test suite by @bslater in #462
- Refactor namespace structure in Bodu.CodeStyle projects by @bslater in #463
- Recover RBA rates via decimal cast and guard it with a conversion KAT by @bslater in #465
- Add cycle detection, diagnostics, and conformance testing by @bslater in #464
- Migrate Money and ExchangeRateLookupResult members to extensions by @bslater in #466
- Collapse the TOML read pipeline: tree-walking cursor (P0.1 Phase A) by @bslater in #467
- Relocate exchange-rate/compact-formatting extensions to Bodu.Financial.Extensions; fix DocFX build by @bslater in #468
- Collapse the TOML read pipeline onto a single flat row store (P0.1 Phase B) by @bslater in #469
- Add Yahoo Finance exchange-rate provider and DI projects by @bslater in #470
- Add ECB euro reference-rate exchange-rate provider by @bslater in #471
- Add caching exchange-rate provider over a shared TOML disk cache by @bslater in #472
- Add new exchange-rate provider packages to the package matrix docs by @bslater in #473
- Lower AbsoluteMaxDepth from 1024 to 256 and add stack-constrained test by @bslater in #476
- Add structured logging support across calendar and exchange-rate libraries by @bslater in #474
- Replace List with lock-free array in Cache enumerator by @bslater in #477
- Remove CompositeDatedExchangeRateProvider and selection policy by @bslater in #478
- Add Update-CodeStyleAnalyzer.ps1 script for analyzer refresh by @bslater in #479
- Exclude benchmark projects from the Update-CodeStyleAnalyzer solution refresh by @bslater in #480
- Add distributed and SQLite exchange-rate caches with coverage tracking by @bslater in #481
- Enforce hard absolute nesting ceiling across serializers and parsers by @bslater in #482
- Centralize cache rules and add atomic StoreFetchedRange operation by @bslater in #483
- Report over-deep/cycle TOML write failures cooperatively, not by throwing from depth by @bslater in #484
- docs: list the distributed/SQLite exchange-rate cache packages in the package matrix by @bslater in #485
- Add cancellation-aware overloads to SingleFlightCoordinator by @bslater in #486
- Mirror the cooperative write-state depth guard to the Bencode serializer by @bslater in #487
- Fix Yahoo provider 429 by sending User-Agent on every chart request by @bslater in #488
- Exchange-rate provider rework: HttpClient ownership, shared web base, lookup/range result matrix by @bslater in #490
- Track upstream fetch instant on exchange rates and cache entries by @bslater in #489
- Add shared contract tests and disposal support for exchange-rate providers by @bslater in #491
- docs: apidoc pages for the SQLite and distributed exchange-rate cache backends by @bslater in #492
- Refactor build properties into modular, focused configuration files by @bslater in #493
- Convert eligible DateTime extension methods to dual-form extension properties by @bslater in #494
- Fix NU5017 when packing analyzer-only XmlDocumentation package by @bslater in #495
- Standardize library .csproj metadata, comments, and layout by @bslater in #496
- Add strong-name signing infrastructure and versioning controls by @bslater in #497
- Add disposal guards, strict-failure modes, and inverse-pair range serving by @bslater in #499
- build: populate BoduPublicKey to enable signed builds by @bslater in #498
- Validate cache storage at host start and add live-Redis integration tests by @bslater in #500
- Refactor generic type parameter documentation across codebase by @bslater in #501
- Add XML documentation to private fields and constants by @bslater in #502
- Replace System.Text.Json with dependency-free BoduJsonParser by @bslater in #503
- XML-doc formatter follow-ups: unified fixer pipeline, flat indent, single-line list rows, field-summary option by @bslater in #504
- build: silence test-irrelevant analyzer warnings in test projects by @bslater in #505
- Fix DateOnly.PreviousDateOfWeek same-weekday regression by @bslater in #506
- Fix PreviousDateOfWeek regression, build/test all projects in CI, repair stale benchmark by @bslater in #507
- Implement strict-failure modes in the file exchange-rate cache by @bslater in #508
- Fix BoduPublicKey mismatch breaking real-signed release builds by @bslater in #509
- test: standardize Text-library KAT tests and codify KAT standard by @bslater in #510
- test: standardize test structure across the solution (KAT standard + member partials) by @bslater in #511
- Add OFX exchange-rate provider on a shared pair-based abstraction by @bslater in #512
- Rename extension classes to remove "ServiceBuilderExtensions" suffix by @bslater in #513
- Relocate SequenceGenerator to dedicated Bodu.Sequences namespace by @bslater in #514
- Expand CurrencyCode to the full ISO 4217 catalogue with a status attribute by @bslater in #515
- docs: document the OFX exchange-rate provider packages by @bslater in #516
- Extract shared web exchange-rate provider DI machinery by @bslater in #517
- Rename generic type parameters in file names to match C# conventions by @bslater in #518
- Consolidate stream validation into ThrowHelper.Stream by @bslater in #519
- Consolidate FX-provider exception types into Bodu.Financial by @bslater in #520
- Replace ThrowsExactly with Throws in exchange rate cache tests by @bslater in #521
- Add ExchangeRates.DependencyInjection to docs package matrix by @bslater in #522
- Remove redundant "Bodu" infix from type and method names by @bslater in #523
- Uplift Bodu.IO.Compound to a navigable, metadata-rich CFB reader by @bslater in #524
- Bodu.IO.Compound: full read/write OLE2 (CFB) support with bounded-memory streaming by @bslater in #525
- Add usage examples to compound-file stream XML docs by @bslater in #526
- Bodu.IO.Compound documentation: XML-doc examples, SVG diagrams, guides + docs pages by @bslater in #527
- Consolidate Financial DI packages and flatten exchange-rate namespaces by @bslater in #528
- Standardize DI registration extensions into each library's own namespace by @bslater in #529
- Add write support to CompoundFile with staged in-memory edits by @bslater in #530
- Bodu.IO.Compound: package-aligned reassessment fixes (P0 contract + P1 conformance) by @bslater in #531
- docs: fix DocFX UidNotFound errors for io-compound by @bslater in #532
- Add formula cell support, date system, format codes, and properties to Excel reader by @bslater in #533
- Refactor Excel binary reader to lazy-load worksheets on demand by @bslater in #534
- Add async threading primitives: locks, semaphores, events, and utilities by @bslater in #535
- Reorganize test files by concern and add contract-driven cell-decode tests by @bslater in #536
- docs: add Bodu.Formats.Excel.Binary DocFX documentation by @bslater in #537
- Refactor test classes into partial files organized by method by @bslater in #538
- Add graph/tree/union-find pillar plus enum and memoization helpers to Bodu.Core by @bslater in #540
- Harden Bodu.Threading async primitives per review by @bslater in #539
- Harden Bodu.Core graphs pillar and add graph interfaces, shortest-path result, Trees namespace by @bslater in https://github.com/bslater/bodu/pull/541
- Add XML documentation to private fields across core types by @bslater in https://github.com/bslater/bodu/pull/542
- Fix XML documentation tags: change
<returns>to<value>for properties by @bslater in https://github.com/bslater/bodu/pull/543 - Add completeness guards for regional calendar packs and cache I/O resilience by @bslater in https://github.com/bslater/bodu/pull/545
- Add XML-doc
<example>blocks across production libraries by @bslater in https://github.com/bslater/bodu/pull/544 - Suppress VSTHRD003 warnings in synchronization primitives by @bslater in https://github.com/bslater/bodu/pull/546
- Add HPKE (RFC 9180) implementation with HKDF support by @bslater in https://github.com/bslater/bodu/pull/547
- Add LinkedDictionary<TKey, TValue> to Bodu.Core by @bslater in https://github.com/bslater/bodu/pull/548
- Scaffold Bodu.Text.Yaml project foundation by @bslater in https://github.com/bslater/bodu/pull/549
- Document standard exception constructors in calendar plugin exceptions by @bslater in https://github.com/bslater/bodu/pull/550
- Fix regression-tier test breaks: PreviousDateOfWeek precedence and IDictionary.Contains tests by @bslater in https://github.com/bslater/bodu/pull/551
- Add language attribute to code examples in XML documentation by @bslater in https://github.com/bslater/bodu/pull/552
- ML-DSA: validate t0 and reject non-canonical s1/s2 on private-key import by @bslater in https://github.com/bslater/bodu/pull/554
- Add YAML 1.2 core profile parser and serializer by @bslater in https://github.com/bslater/bodu/pull/555
- Scope Stress tier out of the default/regression test runs by @bslater in https://github.com/bslater/bodu/pull/557
- Harden the asymmetric algorithms (forensic-review findings, RFC 8410, key-material refactor, test conventions) by @bslater in https://github.com/bslater/bodu/pull/556
- Bodu.Text.Yaml: release hardening, test reorganization, and a submodule conformance corpus by @bslater in https://github.com/bslater/bodu/pull/558
- test(crypto): add unified KAT foundation types by @bslater in https://github.com/bslater/bodu/pull/559
- Bodu.CodeStyle: clear build warnings and conform XML docs to the BODU policy by @bslater in https://github.com/bslater/bodu/pull/560
- Bodu.Text.Yaml: move test methods out of root test files into member/behaviour partials by @bslater in https://github.com/bslater/bodu/pull/562
- Bodu.Text.Yaml: classify the conformance corpus in code; drop the generated manifest by @bslater in https://github.com/bslater/bodu/pull/563
- Bodu.Text.Yaml: writer document-marker round-trip fixes found by fuzzing by @bslater in https://github.com/bslater/bodu/pull/564
- Bodu.Text.Yaml: dedicated document-marker test + graceful corpus skip when submodule absent by @bslater in https://github.com/bslater/bodu/pull/565
- Reorganize test files by method/feature into partial classes by @bslater in https://github.com/bslater/bodu/pull/566
- Adopt Central Package Management for dependency versions by @bslater in https://github.com/bslater/bodu/pull/567
- Add Bodu.Text.Yaml library and expand documentation by @bslater in https://github.com/bslater/bodu/pull/568
- Add Base85Variant.Git (compact + padded Git binary-patch helpers) by @bslater in https://github.com/bslater/bodu/pull/569
- Harden Bodu.Text.Encoding validation contracts (GitCompact rename, canonical IsValid) by @bslater in https://github.com/bslater/bodu/pull/570
- Documentation updates: remove CRC catalogue, expand guides by @bslater in https://github.com/bslater/bodu/pull/571
- Add consumer file layout, date partitioning, JSON cache, and self-describing files by @bslater in https://github.com/bslater/bodu/pull/572
- Add XE.com exchange-rate provider package by @bslater in https://github.com/bslater/bodu/pull/573
- Fix DocFX xref to ExchangeRateCacheFileLayout.Create / PartitionStrategy.Custom by @bslater in https://github.com/bslater/bodu/pull/574
- Support multiple providers in one SQLite rate-cache database by @bslater in https://github.com/bslater/bodu/pull/575
- Set default runsettings for test projects by @bslater in https://github.com/bslater/bodu/pull/576
- Multi-provider SQLite rate cache: shared-file support, degradation logging, and composition docs by @bslater in https://github.com/bslater/bodu/pull/577
- Replace reporting interval with Unix-millisecond date range in OFX API by @bslater in https://github.com/bslater/bodu/pull/578
- Add common warm-up surface to all exchange-rate providers by @bslater in https://github.com/bslater/bodu/pull/579
- Rewrite ROADMAP.md to reflect current state and Wave-based release plan by @bslater in https://github.com/bslater/bodu/pull/580
- Document API stability tiers and enable package validation by default by @bslater in https://github.com/bslater/bodu/pull/581
- Add schema migration for observed_at column in SQLite cache by @bslater in https://github.com/bslater/bodu/pull/582
- Add HOTP and TOTP one-time-password implementations (RFC 4226/6238) by @bslater in https://github.com/bslater/bodu/pull/583
- Update ROADMAP.md: Numerics wave and crypto interop completion by @bslater in https://github.com/bslater/bodu/pull/584
- Add P0 iterator extensions to Bodu.Core (Pairwise, Windowed, Scan, RunLengthEncode, ZipLongest, SplitWhen, ChunkBy) by @bslater in https://github.com/bslater/bodu/pull/585
- Align iterator-extension tests with CLAUDE.md conventions (ParamName + [DataRow]) by @bslater in https://github.com/bslater/bodu/pull/586
- Interval: unbounded endpoints, Difference/SymmetricDifference, operators by @bslater in https://github.com/bslater/bodu/pull/587
- Bodu.Numerics: correct README public model and move to Preview stability by @bslater in https://github.com/bslater/bodu/pull/588
- Merkle tree: RFC 6962 domain separation and length binding by @bslater in https://github.com/bslater/bodu/pull/589
- Post-review follow-ups: BigDecimal comparison bound, Batch contract pinning, provider failure-log tightening by @bslater in https://github.com/bslater/bodu/pull/590
- Allow manual Pages deployment via workflow_dispatch by @bslater in https://github.com/bslater/bodu/pull/591
- Roadmap: fold in Java/Python ecosystem gap review by @bslater in https://github.com/bslater/bodu/pull/592
- Harden parsers and add bounds validation for untrusted input by @bslater in https://github.com/bslater/bodu/pull/593
- Add Bodu.Core roadmap implementation plan by @bslater in https://github.com/bslater/bodu/pull/594
- Execute the Bodu.Core roadmap: package splits, sixteen feature items, master hardening merge, and three-package docs by @bslater in https://github.com/bslater/bodu/pull/595
- docs: Convert BCL type references to inline links by @bslater in https://github.com/bslater/bodu/pull/596
- Make GCM-SIV GF multiply constant-time and zero EAX CMAC on fault (review 2, Batch A) by @bslater in https://github.com/bslater/bodu/pull/597
- Add package artwork manifest mapping every packable PackageId to its hero banner by @bslater in https://github.com/bslater/bodu/pull/598
- Roadmap: record BigDecimal, Merkle tree hashing, and hardening pass; set running-statistics as the remaining wave step by @bslater in https://github.com/bslater/bodu/pull/599
- Wave 1–2 release readiness and statistics review hardening by @bslater in https://github.com/bslater/bodu/pull/600
- Advertise HistoryAvailability across all exchange-rate providers by @bslater in https://github.com/bslater/bodu/pull/601
- Add XML documentation to private fields and improve property summaries by @bslater in https://github.com/bslater/bodu/pull/602
- Consume HistoryAvailability in the caching and aggregation layer by @bslater in https://github.com/bslater/bodu/pull/603
- Make the Yahoo provider's source implement the shared pair contract by @bslater in https://github.com/bslater/bodu/pull/604
- Add provider → immutable conversion surface (books, snapshots, ToFixedProviderAsync) by @bslater in https://github.com/bslater/bodu/pull/605
- Add null-check guard to AlgorithmDateStrategy.Calculate by @bslater in https://github.com/bslater/bodu/pull/607
- Restructure Bodu.Financial: namespace delineation, de-stuttered type names, and web-provider package extraction by @bslater in https://github.com/bslater/bodu/pull/606
- Add debug-assert messages and fix two regressions from the XML-docs refactor by @bslater in https://github.com/bslater/bodu/pull/608
- Log swallowed exceptions across the financial exchange-rate libraries by @bslater in https://github.com/bslater/bodu/pull/609
- Add runnable financial samples and testing guide by @bslater in https://github.com/bslater/bodu/pull/610
- Add runnable calendar samples, samples restructure, snippet-compile guard, and live FX sample by @bslater in https://github.com/bslater/bodu/pull/611
- Add runnable text-library samples, snippet-compile guards, and XML example uplift by @bslater in https://github.com/bslater/bodu/pull/612
- Add runnable IO-group samples (IO.Hashing, IO.Compound, Formats.Excel), snippet-compile guards, and docs by @bslater in https://github.com/bslater/bodu/pull/613
- Roadmap: record the Financial restructure, samples suite, and rename sweeps by @bslater in https://github.com/bslater/bodu/pull/614
- Rewrite ConcurrentHashSet as a lock-free split-ordered list by @bslater in https://github.com/bslater/bodu/pull/615
- Split financial JSON serialization into Bodu.Financial.Serialization.Json companion package by @bslater in https://github.com/bslater/bodu/pull/616
- Add ConcurrentEvictingDictionary<TKey,TValue> with lock-striped eviction by @bslater in https://github.com/bslater/bodu/pull/617
- Add strongly-typed enum for bundled notable-date catalogues by @bslater in https://github.com/bslater/bodu/pull/618
- Add recurrence, new date strategies, business-day resolver, and calculated end-date durations by @bslater in https://github.com/bslater/bodu/pull/619
- Document notable-date rule strategies and add a frequency-based sample by @bslater in https://github.com/bslater/bodu/pull/620
- Add Bodu.Financial.ExchangeRates.Fixer provider package by @bslater in https://github.com/bslater/bodu/pull/621
- Add Bodu.IO.Compound roadmap implementation plan by @bslater in https://github.com/bslater/bodu/pull/622
- Add package artwork for the four new exchange-rate providers by @bslater in https://github.com/bslater/bodu/pull/623
- Forensic-review remediation: security & correctness fixes + serializer consolidation (R1–R20) by @bslater in https://github.com/bslater/bodu/pull/624
- Add adjustment policy support to payroll schedule example by @bslater in https://github.com/bslater/bodu/pull/625
- Add notable-date caching and harden both caching stacks for speed, scale, and observability by @bslater in https://github.com/bslater/bodu/pull/626
- Refactor cryptography and hashing infrastructure for improved design by @bslater in https://github.com/bslater/bodu/pull/627
- Fix stale generic cross-references breaking the DocFX publish workflow by @bslater in https://github.com/bslater/bodu/pull/628
- Add structural and hot-path assessment of the text-serialization packages by @bslater in https://github.com/bslater/bodu/pull/629
- Add structural and hot-path assessment of the core and collections packages by @bslater in https://github.com/bslater/bodu/pull/630
- Add characterization test for AsyncLock success-wins grant/cancel race by @bslater in https://github.com/bslater/bodu/pull/631
- Add Bodu.Core.Samples.FunctionalRailway sample by @bslater in https://github.com/bslater/bodu/pull/632
- Bump base version to 0.1.0 by @bslater in https://github.com/bslater/bodu/pull/633
- Add unit-pricing precision: serialize/deserialize sub-minor-unit Money by @bslater in https://github.com/bslater/bodu/pull/634
- Local Financial packages: rebuild 0.1.0 and pack the closure at 0.1.1-local by @bslater in https://github.com/bslater/bodu/pull/635
- Promote Money.FromExplicitScale to public; add monetary-precision DocFX guide by @bslater in https://github.com/bslater/bodu/pull/636
- Money scale transforms (Rescale/TrimScale) + prior-art defect-parity suite by @bslater in https://github.com/bslater/bodu/pull/637
- test(yaml): pin implicit-typing footguns and correct sexagesimal doc by @bslater in https://github.com/bslater/bodu/pull/638
- Add structural and hot-path assessment of the core and collections packages (#630) by @bslater in https://github.com/bslater/bodu/pull/639
- Add generic Complex to Bodu.Numerics by @bslater in https://github.com/bslater/bodu/pull/640
- Add Bodu.Globalization.Recurrence: RFC 5545 RRULE and cron support by @bslater in https://github.com/bslater/bodu/pull/641
- Handle infinite+NaN magnitude edge case consistently by @bslater in https://github.com/bslater/bodu/pull/642
- test(Numerics): pin previously uncovered public surfaces by @bslater in https://github.com/bslater/bodu/pull/643
- Add WithActualOccurrences extension to expand observed-only results by @bslater in https://github.com/bslater/bodu/pull/644
- Add clarifying comments throughout samples and core libraries by @bslater in https://github.com/bslater/bodu/pull/645
- Add Bencode configuration source and BEP-3 conformance corpus by @bslater in https://github.com/bslater/bodu/pull/646
- docs(Formats.Outlook): add .msg reader kickoff plan with executed T5 substrate review by @bslater in https://github.com/bslater/bodu/pull/647
- feat(Text.Filtering): scaffold Bodu.Text.Filtering project by @bslater in https://github.com/bslater/bodu/pull/648
- Add NuGet packages for v0.1.1 release by @bslater in https://github.com/bslater/bodu/pull/649
- Calendar verification program: official sweeps, validation corpus, and the lunation/substitution fixes they caught by @bslater in https://github.com/bslater/bodu/pull/650
- Extract shared CRC primitives into source-compiled core by @bslater in https://github.com/bslater/bodu/pull/651
- Add AnchoredInterval type and validation corpus for recurrence by @bslater in https://github.com/bslater/bodu/pull/652
- Rev lock-step version to 0.2.0 and rebuild the local package feed by @bslater in https://github.com/bslater/bodu/pull/653
- Add runnable samples for Bodu.Globalization.Recurrence, and close the coverage gaps they exposed by @bslater in https://github.com/bslater/bodu/pull/654
- Add repeatable coverage collection and merge infrastructure by @bslater in https://github.com/bslater/bodu/pull/655
- Fix plugin fixture discovery and cross-platform cache storage errors by @bslater in https://github.com/bslater/bodu/pull/656
- Register Bodu.Text.Filtering in the shipping manifest and roadmap by @bslater in https://github.com/bslater/bodu/pull/657
- Add the missing Bodu.Text.Serialization package README ahead of the v0.3.0 release by @bslater in https://github.com/bslater/bodu/pull/658
- Add branch-free GaloisField128.Double for the big-endian GF(2^128) dbl() by @bslater in https://github.com/bslater/bodu/pull/659
- Stream large Outlook values, read ANSI PST stores, and close the Outlook follow-on list by @bslater in https://github.com/bslater/bodu/pull/660
- Shorten plugin fixture folder and project names by @bslater in https://github.com/bslater/bodu/pull/661
- docs: add getting-started and concepts pages for new packages by @bslater in https://github.com/bslater/bodu/pull/662
- docs: assess the BIFF5/BIFF8 codec brief and the Excel reader rework it implies by @bslater in https://github.com/bslater/bodu/pull/663
- Add the RFC 6962 Merkle tree to Bodu.Collections.Specialized by @bslater in https://github.com/bslater/bodu/pull/664
- Fix three scheduling-dependent AllowOverwrite tests and the checker's conditional-namespace false positives by @bslater in https://github.com/bslater/bodu/pull/665
- One RFC 6962 MerkleTree in Bodu.Security.Cryptography with a write-time block accumulator; retire the Collections tree, the two crypto facades and the shared-source helper types by @bslater in https://github.com/bslater/bodu/pull/666
- Fix the coverage scope job failing on a diff with no production source by @bslater in https://github.com/bslater/bodu/pull/668
- Complete sample coverage for Bodu.Collections by @bslater in https://github.com/bslater/bodu/pull/667
- Add the RFC 6962 Merkle-tree sample to Bodu.Security.Cryptography by @bslater in https://github.com/bslater/bodu/pull/669
- Add an RFC 9180 HPKE sample to Bodu.Security.Cryptography by @bslater in https://github.com/bslater/bodu/pull/670
- Add a cipher-modes-and-padding sample to Bodu.Security.Cryptography by @bslater in https://github.com/bslater/bodu/pull/671
- Extend the hashing and symmetric samples to the remaining algorithms by @bslater in https://github.com/bslater/bodu/pull/672
- Fix the single-flight stampede race in CachingNotableDateService by @bslater in https://github.com/bslater/bodu/pull/673
- Run the namespace check in CI and fix the branch-cleanup tool's merge detection by @bslater in https://github.com/bslater/bodu/pull/674
- Narrate the Security.Cryptography samples on screen, and render the Merkle trace in ASCII by @bslater in https://github.com/bslater/bodu/pull/675
- Cap the OFX request end bound at the current instant by @bslater in https://github.com/bslater/bodu/pull/676
- Recover 46 documentation guides and correct them against the current API by @bslater in https://github.com/bslater/bodu/pull/677
- Fix the async calendar guide snippet so the compile guard passes by @bslater in https://github.com/bslater/bodu/pull/678
- Narrate the Collections samples to the Security.Cryptography standard by @bslater in https://github.com/bslater/bodu/pull/679
- Narrate the Core samples to the Security.Cryptography standard by @bslater in https://github.com/bslater/bodu/pull/680
- Narrate the Numerics samples to the Security.Cryptography standard by @bslater in https://github.com/bslater/bodu/pull/681
- Narrate the Text.* samples to the Security.Cryptography standard by @bslater in https://github.com/bslater/bodu/pull/683
- Narrate the Financial samples to the Security.Cryptography standard by @bslater in https://github.com/bslater/bodu/pull/686
- Narrate the IO.Hashing samples to the Security.Cryptography standard by @bslater in https://github.com/bslater/bodu/pull/682
- Narrate the Globalization.Calendar samples to the Security.Cryptography standard by @bslater in https://github.com/bslater/bodu/pull/684
- Narrate the Globalization.Recurrence samples to the Security.Cryptography standard by @bslater in https://github.com/bslater/bodu/pull/685
- Narrate the format and container samples to the Security.Cryptography standard by @bslater in https://github.com/bslater/bodu/pull/687
- Complete the documentation audit: accuracy fixes, sustainment guards, and the missing samples by @bslater in https://github.com/bslater/bodu/pull/688
- Recover the post-#593 forensic review into docs/reviews by @bslater in https://github.com/bslater/bodu/pull/690
- Add the deterministic coding-policy gate, with the agent arms dormant by @bslater in https://github.com/bslater/bodu/pull/689
- Add ConcurrentLruCache, the read-optimized bounded cache by @bslater in https://github.com/bslater/bodu/pull/692
- Fix master: give each financial guide snippet exactly one owning compile guard by @bslater in https://github.com/bslater/bodu/pull/691
- Bump the lock-step package version to 0.5.0 by @bslater in https://github.com/bslater/bodu/pull/693
- Add the missing NuGet readme for Bodu.IO.Biff by @bslater in https://github.com/bslater/bodu/pull/694
- Publish through trusted publishing, and allow a validated package subset by @bslater in https://github.com/bslater/bodu/pull/695
- Gate the release on the test suite before anything is signed or packed by @bslater in https://github.com/bslater/bodu/pull/696
- Make the release gate's failures diagnosable by @bslater in https://github.com/bslater/bodu/pull/697
- Stop the release gate leaking Configuration into nested builds by @bslater in https://github.com/bslater/bodu/pull/698
Full Changelog: https://github.com/bslater/bodu/commits/v0.5.0