Hotblocks behavioral spec + implementation audit (GAP-1..34)#85
Merged
Conversation
ee62e52 to
b4f5aab
Compare
c4adc4a to
08c17c3
Compare
b4f5aab to
846c8c8
Compare
08c17c3 to
bd08622
Compare
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 implementation-free behavioral specification of hotblocks — 15 documents under
crates/hotblocks/spec/: state model (DEF-), write/read paths (WP-/RP-), consistency & durability (CN-), the invariant catalog (INV-1..44), liveness (LIV-1..12), failure model (FM-), retention/space (RS-), performance (SLI-/HZ-), observability (OB-), the conformance/TDD plan (CT-1..9, reference-model oracle, traceability matrix, gap register), the HTTP binding (IB-), and the parameter registry (P-*).Also included:
audit-2026-07-12.md— a full spec↔implementation audit (every layer read against the spec: service, data-source/client, storage, query). Its outcomes are already folded into the normative text and the register:Spec fixed where the implementation was right:
from == head+1(fin+1for finalized-only) with a mismatched parent gets an immediate409, before the head-wait; generalizing above the boundary would false-conflict merely-ahead clients.Pinnedrefusal; finality note clarifies this is not a rollback belowfin.Register (now GAP-1..34):
Windowdataset can silently replace the finalized prefix (fallback ignoresfin+ composed-finality guard bypass innew_chunk+ anchor hash dropped on trims = GAP-23); otherwise the epoch parks on the blind 60 s loop.Harness README: first four CT-4 scripts planned (shallow-reorg fin-stability first — pins that a fork can never blip
/finalized-head; then GAP-22/GAP-3/GAP-4 failing-first cases); the "header-only records" open question is resolved (it is the RP-9 carrier).Stacked on #84 (touches the harness README) — retarget to
masterafter #84 merges. Docs only, no code changes.🤖 Generated with Claude Code