Skip to content

Record the M3.13d delivery and the next slice - #215

Merged
kaikisegfault merged 1 commit into
mainfrom
docs/m3-13d-closeout
Aug 31, 2026
Merged

Record the M3.13d delivery and the next slice#215
kaikisegfault merged 1 commit into
mainfrom
docs/m3-13d-closeout

Conversation

@kaikisegfault

Copy link
Copy Markdown
Owner

Documentation only. docs/project/current-state.md, no source, build, workflow,
or vector change, so this is the focused metadata verification path.

What it records

  • M3.13d is delivered: the version-seven transport is on main across
    cc8b9c0..115c295, and a version-seven application answers over a real Unix
    socket.
  • How it was delivered: why there is no new frame format and no second
    connection loop, that the V1 in UnixSocketServerV1 names the wire rather
    than the ledger, what the finalize response carries that version one's does
    not, why every response is validated on the way out, and the explicit tagged
    chain-identity conversion that must not be "fixed" by loosening a type.
  • Two probes that found missing tests, one of which is a pattern worth
    keeping: a socket test that aborted rather than failed, because an
    assertion inside the client block left the server thread unjoined and
    std::thread's destructor called std::terminate. A test that aborts instead
    of reporting is one that will eventually hide a real failure.
  • What the transport looks like now, so a later session does not rediscover
    that there is no version-seven wire, where the shared loop lives, or that the
    finalize payload puts the block identifier after the state root.

The next slice

M3.13e, decode_genesis and the version-seven server binary, with the
obstacle stated rather than left to be met: version one's binary reads a genesis
file and hands the bytes to its store, while create_sqlite_ledger_v7 takes a
v7::Genesis struct and version seven publishes encode_genesis with no
inverse
. The canonical encoding is 110 octets — the store's own
ledger_meta_v7 schema asserts exactly that — so a decoder over those octets is
the natural answer and its round trip against the encoder is the property to
test. The entry also carries what version one's --genesis-identity mode prints
and why the socket pathname bound matters.

Verification

python3 -B tools/verify_metadata.py — 5 repository skills and 264 internal
Markdown links validated. git diff --check clean. The hosted focused metadata
path is the gate for this exact commit.

The version-seven transport is merged and a version-seven application
answers over a Unix socket. The handoff records why there is no new frame
format and no second connection loop, that the `V1` in
`UnixSocketServerV1` names the wire rather than the ledger, why every
response is validated on the way out, and the two probes that found
missing tests — including a socket test that aborted instead of
reporting, which is the pattern to check for wherever a thread outlives
an assertion.

The next action is M3.13e, `decode_genesis` and the version-seven server
binary, and the entry records the obstacle in front of it: version one's
binary hands genesis *bytes* to its store, while version seven's store
takes a struct and version seven publishes `encode_genesis` with no
inverse. The canonical encoding is 110 octets, which the store's own
schema already asserts, so the decoder's round trip against the encoder
is the property to test.
@kaikisegfault
kaikisegfault merged commit 3db4776 into main Aug 31, 2026
3 checks passed
@kaikisegfault
kaikisegfault deleted the docs/m3-13d-closeout branch August 31, 2026 21:19
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