smart-byte: governance, burns, and transfers between clusters #135
Loading…
Reference in a new issue
No description provided.
Delete branch "smart-byte-lifecycle"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Finishes the cluster state machine. It covers the three things its spec had left open.
What changes
Governance. Changes to the issuer registry and to the peers are proposals:
A registry with no issuers can never change.
Burns. The owner retires a byte under its own signature. The identity stays held, so no transfer or replayed mint revives it. Redemption is a return to the issuer and the issuer's burn, in one frame.
Transfers between clusters.
Envelope frame rule. Frames rise within a cluster, and a move to another cluster starts that cluster's count. Otherwise a byte returning to a cluster with a lower frame count would be refused.
Lockstep fix. Export certificates are now built from what a committing node applied. They used to come from node 0's report, which is wrong when node 0's state has diverged. The new test fails on the old code.
Not specified: cluster membership (nodes joining and leaving, clusters splitting and merging). See cluster_state.md §8.
Spec and pack
spec/cluster_state.mdis rewritten.spec/envelope_wire_format.mdgains the destination member (§5) and the frame rule (§8).state_vectors.jsongrows to 23 vectors: state-013 to state-023 are new, and state-011 gains malformed burn, governance and import inputs. It is regenerated in place, since v1 is DRAFT. The README documents 14 new error classes.crosscheck/verify_v1.pyimplements all of it from the spec text. It reproduces every vector: 117, plain and under-O.Falsification
Each mutant disables one rule. It counts as caught only if it still compiles and named tests fail.
Python. The first pass caught 39 of 56. One of the 17 misses was my harness counting only state-vector failures. The other 16 were real gaps:
Each now has a vector.
Rust. The 3 caught by unit tests only are not state-machine output: the lockstep certificate signing (two mutants) and the frame report's statement for the nodes to sign. The statement's content is the exported record, which the vectors pin.
Plant. state-023 has a plant, and each plant fails exactly its own vector.
🤖 Generated with Claude Code