Skip to content

M3.12b: move the C++20 kernel to economy-transition-v7 #196

Description

@kaikisegfault

The kernel compiles economy-transition-v6: its byte and derivation surface, its
ledger, and ten of its fourteen transitions. Version seven is accepted, modelled,
executed, and evidenced, and it changes the state key space, one record, the
settlement, and the conservation identity.

This slice moves the kernel to version seven, following ADR 0046: the kernel
compiles exactly one economy contract, so version seven replaces version six
rather than sitting beside it.

Unblocked on 2026-08-20

An attempt on 2026-08-20 found this could not be done without losing coverage. The
kernel's execution tests reproduce test-vectors/economy-transition-v6-execution.txt,
which records version-six state roots and version-six receipts; version
seven re-versions both, and ten of the fourteen kinds had no version-seven
execution evidence anywhere.

#197 closed that. test-vectors/economy-transition-v7-execution.txt now holds 590
vectors over five scenarios and executes all fourteen kinds, so the kernel has
something to reproduce for every one of them. This slice is unblocked.

It is one slice, not two

The state root, the ledger, the settlement, and the four seat transitions cannot
be separated. The recovery pool is a state entry, so a version-seven root implies a
version-seven ledger; the backing identity needs the mint walk; and the mint walk
is only reached by kind 4, which is one of the four unwritten transitions.

Scope

  • the version-seven state key space — entry kind 7 retired, entry kind 17 added;
  • the extended cycle assignment record, 64 octets of fixed part, with encoder and
    decoder both refusing a nonzero absorbed amount at a zero winner count;
  • the version-seven chain ID, state root, economy tree, genesis schema version,
    and receipt version, with the escrow label, the account label, both signing
    labels, and the six HUB messages keeping the version that accepted them;
  • the version-three manifest digest binding;
  • the settlement's pure derivations — the winner split, the mint walk with version
    seven's added pool term, and claimable as that walk run once per seat;
  • the carry identity replaced by the channel identity and the backing identity;
  • the four seat transitions M3.10d left returning no outcome, kinds 2, 3, 4, 5;
  • the assignment prologue inside execute_block, which the kernel does not have
    at all, written before the block's transactions and reading the pool, the
    collection mark, and the recorded referrer from the ledger;
  • reproduction of both version-seven vector files, with the existing tests
    retargeted from version six's execution file rather than kept beside it.

docs/project/current-state.md's next-action section carries the working recipe
from the reset attempt, in the order it was performed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions