Files
consensus/CROSS-REPO-VERSION-PIN.md
zeekay 04ce8745ee consensus: Quasar cutover to LSS-Pulsar + post-Feb-28 batch
Squashed batch covering all post-Feb-28 consensus work, capped by the
LSS-Pulsar cutover (task #53):

- Quasar cutover from upstream Corona to LSS-Pulsar adapter:
    go.mod: drop direct require github.com/luxfi/corona; add
            github.com/luxfi/pulsar + github.com/luxfi/threshold;
            local replaces => ../pulsar, ../threshold
    epoch.go: InitializeEpoch → keyera.Bootstrap; RotateEpoch →
              lss.DynamicResharePulsar gated by activation cert
              verification under unchanged GroupKey
    quasar.go, grouped_threshold.go: import swap corona → pulsar
    reshare_epoch.go: production wiring; QUASAR-PULSAR-ACTIVATE-v1
                      domain prefix; ReshareEpoch + RefreshEpoch
    EpochKeys: gains KeyEraID, Generation, RollbackFrom (LP-105)
    BundleSigner: re-derives Lambda for participating subset
    258 quasar tests pass.

- Earlier post-Feb-28 work (gofmt linter fixes across protocol files,
  METASTABLE_SIGNED_QUERIES.md doc, MLDSAProof rename across 7 test
  files) included in the squash.

Hash profile: consensus passes nil to resolve to Pulsar-SHA3 default
(LP-105 / pulsar/hash). Activation message canonical bytes bind
chain_id, network_id, key_era_id, generation, group_id, epoch, set
hashes, thresholds, group_pk_hash, nebula_root, hash_suite_id,
implementation_version, variant, reshare_transcript_hash —
all under TupleHash256("PULSAR-TRANSCRIPT-v1", ...).

Vocabulary alignment with LP-105 (Lux Finality Stack lexicon):
  Photon (vote) → Beam (BLS) → ML-DSA (PQ identity) →
  Pulsar (PQ threshold kernel) → Pulse (cert over Nebula root) →
  Prism (composition verifier) → Horizon (finality boundary) →
  Quasar (full consensus).

Excluded from this commit: pkg/wire/{candidate,policies_test}.go
uncommitted diff (pre-existing local edits; stashed and restored).
Untracked protocol/quasar/witness_producer.go (mtime Apr 29; pre-task).
2026-03-03 12:00:00 -08:00

4.3 KiB

Cross-Repo Version Pin — March 3, 2026 PQ Consensus Architecture Freeze

This document is the canonical record of which commit SHAs the v0.1.0-rc1-pq-consensus-freeze tag points at in every repo that participates in the Lux post-quantum consensus stack.

Tag

Every repo below is tagged annotated with:

git tag -a v0.1.0-rc1-pq-consensus-freeze \
  -m "Mar 3 2026 Lux PQ Consensus Architecture Freeze (locked scope)"

Repos and SHAs

Repo Path Tag Commit SHA
pulsar ~/work/lux/pulsar v0.1.0-rc1-pq-consensus-freeze 7b3a53f0ba569a7092fe969c759bfbb28f5341ec
lens ~/work/lux/lens v0.1.0-rc1-pq-consensus-freeze 72d0dd6c470caab0689ca1a1e59881c044cc5cb6
threshold ~/work/lux/threshold v0.1.0-rc1-pq-consensus-freeze e4e6be547b7db23726f0b18474bd00ea9801592c
consensus ~/work/lux/consensus v0.1.0-rc1-pq-consensus-freeze 853c48cb3149fd93b9517a7818a6200b4d9557f4
warp ~/work/lux/warp v0.1.0-rc1-pq-consensus-freeze d4237f861b6b28aca6a6ccb8693a65a769205b18
proofs ~/work/lux/proofs v0.1.0-rc1-pq-consensus-freeze cf682ab2fb1b233331f0880d6496f05883ff6583
papers ~/work/lux/papers v0.1.0-rc1-pq-consensus-freeze 3529523e60c0f03550705cdd526bd2258db71c58
lps ~/work/lux/lps v0.1.0-rc1-pq-consensus-freeze c582b6d3e3c2dc0e3904d211a13c6b6e0a962c42

These SHAs are produced by amending each repo's existing 2026-03-03 HEAD with the gate-1/2/5 deliverables and tagging that amended commit. The annotated tag message is: "Mar 3 2026 Lux PQ Consensus Architecture Freeze (locked scope)".

The consensus row records the SHA of the amend that immediately precedes the final SHA-table commit (since this file LIVES IN that final commit and would otherwise need to record its own SHA, which is a chicken-and-egg). Run git log -1 --format=%H v0.1.0-rc1-pq-consensus-freeze inside ~/work/lux/consensus to see the actual tagged commit.

go.mod Pinning

The pulled-in repos (consensus, threshold, warp) declare the tag as their require version and keep the local-dev replace directive pointing at the sister checkout. Replace lines carry a comment:

// pinned to v0.1.0-rc1-pq-consensus-freeze; see go-mod-pin.md

This lets local development proceed against the working tree without relying on a published tagged module proxy. CI builds without the neighbouring checkouts use the tagged version directly.

consensus/go.mod

require (
    github.com/luxfi/pulsar    v0.1.0-rc1-pq-consensus-freeze
    github.com/luxfi/threshold v0.1.0-rc1-pq-consensus-freeze
    github.com/luxfi/lens      v0.1.0-rc1-pq-consensus-freeze // indirect
)
replace github.com/luxfi/pulsar    => ../pulsar    // pinned to v0.1.0-rc1-pq-consensus-freeze; see go-mod-pin.md
replace github.com/luxfi/threshold => ../threshold // pinned to v0.1.0-rc1-pq-consensus-freeze; see go-mod-pin.md
replace github.com/luxfi/lens      => ../lens      // pinned to v0.1.0-rc1-pq-consensus-freeze; see go-mod-pin.md

threshold/go.mod

require (
    github.com/luxfi/lens   v0.1.0-rc1-pq-consensus-freeze
    github.com/luxfi/pulsar v0.1.0-rc1-pq-consensus-freeze
)
replace (
    github.com/luxfi/lens   => ../lens   // pinned to v0.1.0-rc1-pq-consensus-freeze; see go-mod-pin.md
    github.com/luxfi/pulsar => ../pulsar // pinned to v0.1.0-rc1-pq-consensus-freeze; see go-mod-pin.md
)

warp/go.mod

require github.com/luxfi/pulsar v0.1.0-rc1-pq-consensus-freeze
replace github.com/luxfi/pulsar => ../pulsar // pinned to v0.1.0-rc1-pq-consensus-freeze; see go-mod-pin.md

Verifying the Pin

A canonical proof point is whether ~/work/lux/scripts/regen-all-kats.sh --verify passes against the tagged commit on each repo. That script runs:

  • pulsar/scripts/regen-kats.sh --verify
  • lens/scripts/regen-kats.sh --verify
  • warp/scripts/regen-kats.sh --verify
  • threshold/scripts/regen-kats.sh --verify

and asserts byte-equality of all KAT outputs against the manifest each repo's regen-kats.sh writes.

Forward Path

The next freeze should bump the tag (e.g. v0.1.0-rc2-...) and update both the require lines and the comments on the replace lines. The replace directives stay pointing at the local working tree — they're the local-dev affordance and never go away.