Files
teahubxyzandClaude Opus 5.5 5a7f11e49d Orgchain v1.14.1: a belt counts only on its seat's own sat
Placement is now a rule of lineage/v0, not just how Orgchain inscribes:
an award counts only if it is inscribed on its recipient's own sat, so any
indexer can check that a belt is soulbound. The reducer compares sats
(satOf): the lab's sat numbers, ord's, or, without ord's sat index, its
satpoints, which two inscriptions share exactly when they share a sat. ord
events now carry the sat number when ord has one. Belts inscribed anywhere
else, as before v1.14, are rejected.

A promotion is another reinscription on the same sat, over the belt before
it: each badge keeps its skill's earlier belts, and Inspect shows the
ladder ("re-inscribed over white (beat 5)"). The sample's sol now goes
white, then green. An award and its recipient's own close no longer
conflict within a block, since both spend the recipient's inscription.

Rehearsed again on Bitcoin Core regtest from height 178: sixteen beats and
133 transactions; ord shows sol's sat carrying sol, its white belt and its
green belt, in order, each belt charmed reinscription and vindicated, and
the compare matches. The fixture is re-recorded.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H4upF5LVwmPDDqrhdUfnXh
2026-10-15 16:10:18 -07:00
..

Regtest rehearsal

Lineage is an ordinals metaprotocol (SPEC.md). This folder checks that on real Bitcoin Core and real ord: the lab's own action code makes the yolopreneur sample, keyrings, belts, asks, offers and whole trees changing hands included, Bitcoin Core (regtest, standardness on) accepts its transactions byte for byte, ord indexes the inscriptions, and the same reducer folds ord's view back into the same trees.

Regtest is local and private: nothing is downloaded, blocks are mined on demand, and the data folders stay a few MB. Test coins only.

Start

brew install bitcoin ord
mkdir -p ~/lineage-regtest/bitcoin ~/lineage-regtest/ord
cp tools/regtest/bitcoin.conf ~/lineage-regtest/bitcoin/
bitcoind -datadir=$HOME/lineage-regtest/bitcoin -daemon
bitcoin-cli -datadir=$HOME/lineage-regtest/bitcoin createwallet funder
ord --regtest --bitcoin-data-dir $HOME/lineage-regtest/bitcoin --data-dir $HOME/lineage-regtest/ord \
  server --address 127.0.0.1 --http-port 8088 --polling-interval 1s &

bitcoin.conf keeps mainnet's standardness rules (acceptnonstdtxn=0) and lowers the minimum relay fee to 0.1 sat/vB, since the lab pays a fixed 500 sats per transaction.

Rehearse, index, compare

node tools/regtest/rehearse.mjs              # sixteen beats; saves the lab to tools/regtest/out/lab.json
node bin/lineage-index.mjs --from 100 --compare tools/regtest/out/lab.json
node tools/regtest/record.mjs                # refresh tests/fixtures/regtest-rehearsal.json (public data only)

A chain can hold several rehearsals. Each one founds its own holdings, so to compare or record only the latest, pass the height of its funding block: --from <height> to the index, and the same height after the lab to record.mjs.

The rehearsal funds the lab wallet with real regtest coins (LocalChain.importCoin) and pays every local beat to an unspendable key, so nothing it signs spends a coin regtest doesn't have. After each beat it broadcasts that beat's transactions and mines one regtest block. --compare checks that every event landed in the same beat with the same metadata and parent, that every inscription sits on the same sat (ord's satpoint) with the charms the lab expects (a belt's are ♻️ reinscription and ❤️‍🔥 vindicated), and that both fold into the same trees. Within a block the miner may order independent events differently from the lab, a join and its adoption included; that changes nothing (SPEC.md, sections 2 and 5). Beats 4, 5 and 9 award four belts, each by a three-input reveal that puts it on its seat's own sat: sol's launch belt goes white, then green, two reinscriptions on sol's sat. The last four beats sell whole trees: time with its six below it, on an offer whose inputs are the seven coins their ten inscriptions sit in, and acme whole, on an ask that signs one output holding fifteen inscriptions on eleven sats; each tree then splits back at its buyer's keys, one inscribed sat to an output, and ord puts every inscription where the lab does, each belt still on its seat's sat (SPEC.md, section 7).

out/ holds the lab backup, test keys included, and is not committed.

Stop

bitcoin-cli -datadir=$HOME/lineage-regtest/bitcoin stop
pkill -f "ord --regtest"