Repository navigation
feat(codec): update fixed binding indexes with immutable CoW - #10
Merged
Merged
Conversation
Ivanbeethoven
marked this pull request as ready for review
October 5, 2026 03:16
Ivanbeethoven
changed the base branch from
feat/canonical-binding-radix-codec
to
main
October 7, 2026 07:58
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 canonical binding-index codec can describe a root but has no immutable mutation or lookup engine. Add iterative
update, exactgetand component-awarelongest_prefixoperations using the fixed v1 node/key encoding. Updates copy the changed path's ancestors; deletion compresses valueless paths, identical updates write no nodes, insertion order and delete/reinsert produce identical canonical roots, and old roots retain their previous mapping.Stacked on #9. The synchronous caller-owned
NodeStoreport reads immutable bytes and inserts immutable nodes; there is no concrete persistence store, SQL/publication transaction, async runtime adapter, pagination, namespace serving or capability enablement. Each visited node checks its requested SHA-256 identity, local shape, incoming child label and assembled value-key budget. Unvisited subgraphs, source membership, complete closure, authorization and retention remain separate integration gates.NodeStore::readreturns caller-allocated bytes: the codec's post-read size check is not a bounded storage allocation guarantee. A failed update returns no new root; partial insertions may leave unreachable nodes for the caller's transaction/retention policy.Validation on Windows, Rust 1.98.1:
git diff --check: pass.9bb7c1ac5fbfb7dec94d4e79cd9a9e365168cf47, all six Linux/macOS/Windows × identity/zstd jobs passed: https://github.com/gitmono-dev/mst2-codec/actions/runs/37258540385 . Two independent static reviews found no blocking CoW/index correctness issue.Only Rust source/tests are pushed. The private plan and evidence stay local. This does not complete T02/T04/T05 or claim an end-to-end performance gain.