Skip to content

Persist completed run decks and distill owned All-Star cards - #267

Merged
patrickwieth merged 1 commit into
developmentfrom
feature/run-decks-all-stars-release
Oct 24, 2026
Merged

patrickwieth merged 1 commit into
developmentfrom
feature/run-decks-all-stars-release

Conversation

@patrickwieth

@patrickwieth patrickwieth commented Oct 23, 2026 •

Copy link
Copy Markdown
Member

Required Cardobject dependency / merge coordination

This PR requires the new Cardobject grammar from Cardobject PR #107, not the old master/release schema.

go.mod pins the exact reviewed PR commit c8c0da79c0db8b4b27c083754325f1e40ca3c07b as v0.5.3-0.20261023051040-c8c0da79c0db. It is already publicly fetchable, so this branch builds before #107 is merged; no manual sibling checkout is needed.

Recommended merge order: Cardobject #107 first, then this Cardchain PR and frontend #353. If #107 changes during review, synchronize the Go pin and frontend schema and rerun compatibility/genesis tests before deployment. The supplied genesis was tested against the pinned commit above.

Summary

  • Pin the public Cardobject commit c8c0da79c0db without a local replace directive.
  • Add persistent saved run decks and a separate All-Star namespace, protobuf/gRPC/REST/AutoCLI integration, indexes, genesis import/export and module consensus version 2.
  • Require the appointed ReportMatches reporter permission, reject replayed run references, and allow only the owner to distill an unconsumed deck once.
  • Preserve base-card IDs and ordered Forge recipes; strict versioned recipe validation is independent of the current base-card grammar.
  • Make card-genesis import fail fast rather than silently clearing invalid card content.
  • Include snapshot preparation, optional fresh-validator rekeying, portable integration tests and deployment documentation.

Reviewed genesis

The separate exported genesis contains 552 cards, 562 empty slots, and 1114 preserved ID slots, with new run-deck/All-Star stores empty. Initial height: 4302316.

genesis.json SHA-256: e961738fa02a3dd9813b0ef3a79c3495671c1ac8611d029266150873799c7980

genesis.json.gz SHA-256: fd4f9570239103f6bda8e0e8349a10a91c809e52785806c73a08f7aef29d1309

The large artifact is separate from Git; its manifest is docs/release-snapshot.json. Private validator keys, keyrings and node databases are not included.

Download: Draft genesis artifact (repository access required while draft). Contains genesis.json.gz, genesis.sha256, and the source-commit manifest. GitHub's uploaded-asset SHA-256 matches the local compressed artifact exactly. This is not a published production release.

gh release download pr-267-genesis-snapshot --repo DecentralCardGame/Cardchain
gzip -dc genesis.json.gz > genesis.json
sha256sum -c genesis.sha256

Companion PRs: Cardobject DecentralCardGame/cardobject#107 and scoped frontend compatibility DecentralCardGame/frontend#353.

Validation

  • Full go test -mod=readonly -p 2 ./..., including a clean checkout.
  • Python deployment-genesis tests, including non-overwrite and no-private-key export checks.
  • Fresh-validator bootstrap of the actual exported snapshot: all 552 IDs and contents match, module version 2, empty new stores, continued blocks.
  • Signed isolated submission/distillation tests, including permission/replay/second-consumption rejection and exact recipe copying.
  • The complete build also starts the exact snapshot with the original local validator in a separate home; prior state remains available for rollback.

Scope and deployment notes

Frame purchases and authoring policy remain unchanged. No gameclient changes or All-Star UI.
Reporter attestation remains the trust boundary for completed-run legitimacy and Forge package existence. A future authority-controlled revocation policy remains separate work.

This PR documents a fresh snapshot bootstrap, not a coordinated public-network in-place upgrade handler. Consensus-key replacement does not transfer inherited validator operator ownership or governance power. See docs/deployment-run-decks.md.

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