Skip to content

Release v0.21.0 - #23

Merged
jdogresorg merged 71 commits into
masterfrom
release/v0.21.0
Sep 30, 2026
Merged

jdogresorg merged 71 commits into
masterfrom
release/v0.21.0

Conversation

@jdogresorg

@jdogresorg jdogresorg commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

Release v0.21.0

Base: master at 6d49ed2c583b444ad127e8bb5800cc589631590f
Head: release/v0.21.0 at e219a18af1f6a223fec9a872c3cc30f0acf97658

Landed refs

  • e219a18 Revert "Merge develop into release/v0.21.0"
  • 6a7963f Merge develop into release/v0.21.0
  • d31f730 Merge: Add selector replay analysis
  • e676689 Add selector replay analysis
  • 8f1af55 Merge develop into release/v0.21.0
  • 389d8a7 Pin CI Node to 22.22.3, the fleet's consensus runtime
  • 6f3c71f Pin CI Node to 22.22.3, the fleet's consensus runtime
  • 9a64349 chore(release): v0.21.0
  • ac29b3b Fix 9 issues found in a code review round
  • 00e1ee0 Merge: Run full suite-title comparison in CI
  • 02b60d7 Run full suite-title comparison in CI
  • 3289dab Merge: test: compare protocol time behavior
  • 2a3a0ee test: compare protocol time behavior
  • 43c3222 test: guard protocol time parity
  • cb1954c Merge: Keep migration rehearsal within structure limits
  • 7359703 Keep migration rehearsal within structure limits
  • 07d99c7 Add MariaDB datetime migration rehearsal
  • 5383870 Merge: Add datetime readback integration helpers
  • 0f73fbd Add datetime readback integration helpers
  • 293ce7c Merge: Anchor migration ledger declaration pin
  • af51e89 Anchor migration ledger declaration pin
  • 5de3ee8 Reject commented migration ledger declarations
  • 26a1138 Pin migration ledger source declaration
  • e21d3d4 Register DATETIME completeness suite during discovery
  • 36628b5 Exclude completeness test from stale title inventory
  • 7449b6f sync trunk
  • 13afa3c Merge: Refresh suite title pin for transaction logging tests
  • 9aafab8 Harden migration ledger completeness assertion
  • 2ac5cdb Add SQL DATETIME completeness test
  • 737e0ed Refresh suite title pin for transaction logging tests
  • 34d82cd sync trunk
  • a8f1921 Merge: Refresh migration ledger suite title pin
  • 00f0836 Refresh migration ledger suite title pin
  • 49eee53 sync trunk
  • fcc4971 Merge: Refresh suite-title pin for mempool datetime tests
  • e0fd801 Refresh suite-title pin for mempool datetime tests
  • 5e60874 sync trunk
  • 9ac7bea Merge: Narrow suite-title pin to UTC session test
  • 2959c29 Narrow suite-title pin to UTC session test
  • 409bb28 Refresh decoder suite-title pin
  • dfe8474 sync trunk
  • 56be32b Clarify MariaDB UTC session behavior
  • 53f06aa Merge: Pin fast selector tier guard
  • 5349318 Pin fast selector tier guard
  • 98d12a6 Narrow decoder fast CI selection
  • 54a79a4 Adjust missing transaction log severity
  • 95384b1 Retype migration ledger timestamp as datetime
  • 5b8d4cc Retype mempool first_seen as DATETIME
  • 1b5facd Pin MariaDB sessions to UTC
  • d64b1e9 Merge: Update ci-siblings dispatcher wording
  • 890bf1b Update ci-siblings dispatcher wording
  • d7dd32f Merge: Pin decoder migration hints to the live CLI
  • 64c1675 Merge: Complete encoder wire fixture connector
  • a15bf14 Pin decoder migration hints to the live CLI
  • 425b12a Complete encoder wire fixture connector
  • 7772930 Remove unrelated encoder test mock
  • d6df511 Refresh crash suite identity pin
  • 99a1292 Point decoder migrate hints at the real src/db/migrate.js entry
  • 0b10774 Test crash reporting behavior
  • df89217 Merge remote-tracking branch 'origin/master' into level/decoder
  • 5c064b4 Run the suite-title pin compare as its own ci-full tier
  • 537f885 Refresh the unit suite title pin to the current layout
  • 99550ae Split oversized decoder ingest and migrate tests into named parts
  • cca3135 decoder: wire CI tier timing into ci-full.sh
  • abe3193 test(decoder): mutate the split decoder modules, schedule mutation testing
  • 96a9bf0 decoder: measure coverage with --all and tighten floors to within 1.5 points
  • 1c7f5f7 ci: require siblings across full CI tiers
  • 310b036 feat: add read-only migration status JSON
  • efcc3b3 decoder: name the audited clear beside a full resync in REORG_HALT recovery text
  • 275ef6f feat: use protocol time for decoder time-keyed decisions
  • 702acb4 Harden benchmark and fuzz test gates

Give benchmark fixtures a valid dummy RPC endpoint and mempool database, require real collected tests, and clamp disabled fast-tier timeouts. Add regressions for migration paths and bufferutils parity, and make mutator randomness reproducible from a printed FUZZ_SEED.
Vendor the protocol-time resolver and derive one immutable clock context per block. Preserve raw timestamps in block storage while routing protocol time through decoder decisions and retrying failed history reads.
…covery text

Every durable REORG_HALT recovery message now names both the audited clear-history path and a full resync, so operators are pointed at the safe recovery instead of a resync-only assumption. Also initializes the clear-history cache fields beside the other halt fields on a fresh decoder, and adds a test pinning their presence.
Add a side-effect-free migration status mode that reports applied and pending migration file names in a stable JSON schema, so tooling can check migration state without risking a write. Cover the read-only query path, fresh-database behavior, failures, cleanup, and argument safety.
The full CI script validated required sibling repos up front but never propagated that requirement into the tiers themselves, so a sibling removed mid-run could silently skip coverage instead of failing the gate. Export the strict-sibling flag right after the presence check so every tier inherits it from one place.
… points

Coverage checking previously excluded unloaded files from the denominator and let floors trail measured coverage by up to nearly 10 points, hiding regressions in files nothing ever imported. Add full-file coverage measurement with a single documented non-owned exclusion, remeasure, and ratchet every floor to within 1.5 points of the new measurement, with a sync test enforcing the exclusion list and the gap going forward.
…sting

Widen the mutation-testing glob to cover the split decoder modules instead of stopping at the pre-split facade, and add the newly exposed text-literal-reading tests to the mutation-only ignore list while keeping them live under the plain unit suite. Add a weekly scheduled workflow that runs the mutation suite and archives a nonempty report, closing the gap where mutation coverage had no recurring run.
Commits the pending tier-timing edit so the full CI script reports elapsed seconds on each tier's pass/fail line, bringing the generated CI-tier block back in sync with the wiring tool.
Move block persistence into named helpers and divide oversized test suites without changing behavior.
Wires the decoder's existing test:unit suite-title pin into bin/ci-full.sh
as a tier of its own, and refreshes the pin and its rename and split maps
to the current tree so the tier starts green.
Cover startup failure logging and exit behavior, including logger failures. Pin crash handler installation, event normalization, and listener cleanup.
The pending-migration log lines and startup errors named a src/migrate.js
that does not exist; they now name src/db/migrate.js.
Record the new crash-reporting suite in the title map. Keep the wire-fidelity fixture compatible with the shipped encoder relay-fee lookup.
Restore the sibling-gated taproot fixture to its pre-row state so the crash-reporting coverage remains scoped to the requested surfaces.
Provide the relay fee response required by encoder transaction construction.
Replace stale operator commands and add a source-wide regression guard.
Describe shipping each sibling at its canonical origin head, matching the encoder file.
Configure pooled and direct connection parameters for UTC date handling. Add focused coverage for the timezone settings and retained pool safeguards.
Add the manual UTC-preserving conversion, baseline it when the live column already uses DATETIME, and cover the schema and runner contracts.
Warn for HTTP-200 RPC -5 responses while preserving error logging for code-less body errors. Add focused connector coverage for both paths.
Map changed source and test files to the existing Mocha runner groups. Preserve full-tier behavior while deferring Docker suites from fast landing checks.
Require the plan invocation to remain directly nested under the fast-tier condition and unique in the CI driver.
Document the driver version and per-connection session statement behind the UTC pool setting.
Scan top-level schema definitions for TIMESTAMP columns and pin the migration ledger, conversion order, and UTC connection settings.
Inspect emitted schema SQL so comments cannot satisfy the DATETIME requirement.
Keep the runtime assertions active while allowing the existing suite identity pin to remain unchanged.
Keep all four tests visible to dry-run collection and refresh the committed suite-title inventory.
Read the migration statement module directly so the completeness test guards the required source declaration as well as rejecting the legacy type.
Strip JavaScript comments before checking the migration ledger source so comment-only type text cannot satisfy the completeness pin.
Require the DATETIME match to begin at the applied_at column string so an ALTER statement cannot satisfy the completeness check.
Exercise timestamp conversion, idempotency, and fresh-schema baselining against the integration venue.
Compare consensus constants, normalized function bodies, and a shared median-time fixture against the trusted indexer sibling.
Replace source-text parity with value vectors for the shared consensus clock and refresh the unit suite-title pin.
Refresh the title pin for the integration migration suite and compare every supported test script from the ci-full tier. Keep the rename and split records aligned with the regenerated pin.
Each fix was re-derived from the code, verified against its own tests,
and adversarially re-checked before it was accepted.

- A null halt id makes clearReorgHalt skip its superseded-halt check instead of refusing
- xchain-decoder destructive-DDL guard has the same ALTER ONLINE/IGNORE TABLE prefix bypass
- CREATE TRIGGER / CREATE EVENT pass the auto-migration destructive guard, a smuggle channel like the ...
- Decoder ActionManifestConformance failure messages point at src/XChainDecoder.js, but the action-name set and ...
- Envelope reveal: pubkey capture reads the reveal's ins[0] witness, so a 20-byte payload records the tapscript ...
- Adversarial vector corpus does not pin the input-0 rule or the bare-opcode payload-element rule
- xchain-decoder's bufferutils.js reverseBuffer doc still claims a new-buffer return the tracker twin already ...
- /live sends reorg_halted:false without reorg_halt_checked_at, so a probe that never ran reads as a clean ...
- GET /status and /live leave out reorg_halt_cleared_at/_reason, so a cleared decoder looks like one that was ...
- Re-pin the at1 suite-title map for the added halt-diagnostics tests
Replay first-parent develop history with optional consensus narrowing. Report selection shares and verify required source-to-test mappings.
This reverts commit 6a7963f, reversing
changes made to 8f1af55.
@jdogresorg
jdogresorg merged commit cc2c080 into master Sep 30, 2026
8 checks passed
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