Document tiled storage and add performance coverage - #56
Draft
Amaury Chamayou (achamayou) wants to merge 12 commits into
Draft
Document tiled storage and add performance coverage#56Amaury Chamayou (achamayou) wants to merge 12 commits into
Amaury Chamayou (achamayou) wants to merge 12 commits into
Conversation
Add HashSourceT (abstract subtree-root resolver), TileHashSourceT (resolves from full tiles, with an LRU tile cache), ProofEngineT (inclusion/consistency proofs and their verifiers, built on mth_range), MemoryHashSourceT (resolves from a resident in-memory tree), and CombinedHashSourceT (memory first, falling back to tiles). Add the sole essential core change: TreeT::subtree_root(), a read-only, non-hashing accessor that lets proofs be served from the resident tree, plus the <limits> include it needs. No other merklecpp.h changes. Add tiles_proofs tests, cross-checking tile-derived inclusion and consistency proofs against merkle::TreeT as the oracle across a range of sizes, including tile-boundary crossings. Move the memory-only subtree_root proof coverage and the ProofEngineProbe hostile-arithmetic edge cases here from tree coverage, since they exercise the proof engine and core accessor rather than TiledTree lifecycle. Add tiles_level2 for end-to-end coverage of the level-2 tile path. Introduce the LONG_TESTS CMake option, gate tiles_level2 behind it, and enable it in CI (and CodeQL) so long-running tile coverage runs on pull requests. Document the compatibility statement, the optional core accessor, and the HashSource/ProofEngineT API and algorithms in the design doc. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use the current default tree hash function for public proof aliases, reject index conversions that cannot be represented safely, and align the design and level-2 coverage notes with the rebased implementation. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: c504572c-322f-4950-8682-edf4a7fd2c5b
Co-authored-by: eddyashton <6000239+eddyashton@users.noreply.github.com>
Add TiledTreeT: a fresh-only tiled tree (rejects an existing tile namespace rather than adopting it), append/flush/root, flushed/ immutable size tracking, interrupted-flush recovery (a failed flush seals the attempted full-tile boundary without advancing flushed size), optional compaction with configurable retention, a rollback boundary that only ever permits retracting the un-tiled frontier, noexcept move construction with no copy, mixed tile+memory proofs, and an explicit no-internal-synchronization / external-serialization contract for the store and tree it wraps. Add tiles_tree tests covering the empty tree, move construction, fresh-only rejection of an existing tile namespace, flush/compaction (including exact-multiple and retention-margin cases), and rollback (pre-flush, post-flush, exact-boundary, compacted, and interrupted- flush recovery). The memory-only subtree_root/ProofEngineProbe cases already moved to tiles_proofs are not duplicated here. Add tiles_hashes, exercising the tiled tree, writer and proof engine under SHA384/SHA512, and wire the OpenSSL 384/512 aliases for every tiled-storage component. Document the TiledTreeT API, the flush/compaction invariants and progressive-production algorithm, pruning, and the consolidated lifecycle/safety risks and edge cases in the design doc. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Amaury Chamayou (achamayou)
force-pushed
the
achamayou/tiled-tree
branch
from
August 4, 2026 22:14
c50e489 to
d8e3b9e
Compare
Add the README 'Tiled storage' and 'Building and testing' sections covering the TiledTree usage snippet, the fresh-only/rejection contract, LONG_TESTS, and links to the guide and design doc. Add doc/tiles-guide.md (a how-to for flushing, compaction, rollback, proofs, and the lower-level building blocks) and doc/tiles-illustrated.md (a worked, diagram-led walkthrough of the tiled tree lifecycle). No new storage semantics: these are documentation-only additions over the tiled-storage API completed in earlier branches. Add time_tiles, benchmarking append, flush, in-memory and tile-served inclusion/consistency proofs, and compaction against a plain in-memory Tree baseline; wire it into the existing LONG_TESTS group alongside tiles_level2. Enable the documentation workflow on pull requests (building, but not publishing, the site) so doc changes get functional CI coverage. Finalize the design doc's testing-strategy and build/backwards- compatibility-impact sections, completing the document that has grown incrementally across the previous branches. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Amaury Chamayou (achamayou)
force-pushed
the
achamayou/tiles-docs
branch
from
August 6, 2026 10:53
55dd472 to
1abe952
Compare
Amaury Chamayou (achamayou)
force-pushed
the
achamayou/tiled-tree
branch
from
August 6, 2026 15:29
d8e3b9e to
52c3711
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.
Summary
Part 5 of the tiled-storage stack; depends on #55. This PR adds no storage semantics.
time_tilescoverage for append, flush, compaction, and memory/tile-served proofs;Stack
TiledTreelifecycleValidation
tiles_level2andtime_tileswithLONG_TESTS=ON