Skip to content

refactor: default stack is Zebra + Zallet, Zaino behind an indexer profile#51

Merged
gustavovalverde merged 1 commit into
mainfrom
docs/zebra-latest-image-override
Jul 4, 2026
Merged

refactor: default stack is Zebra + Zallet, Zaino behind an indexer profile#51
gustavovalverde merged 1 commit into
mainfrom
docs/zebra-latest-image-override

Conversation

@gustavovalverde

Copy link
Copy Markdown
Member

The default docker compose up -d now starts Zebra and Zallet only. Zaino moves behind an opt-in indexer Compose profile, alongside monitoring.

Most operators need a node and a wallet together. A standalone indexer is a narrower case: block explorers, faucets, light-client backends. Gating Zaino on --profile indexer matches how monitoring works and how the earlier zcashd comparator was scoped, so the common deployment stops paying for a component it does not use.

Two pins move with it. Zebra defaults to 6.0.0-rc.0, the newest published image. Zallet's upstream image is now multi-arch, so its linux/amd64 pin is dropped and it runs native on arm64.

The platform contract bumps to 2.0.0: a service leaves the default topology. Zaino's DNS, per-network volumes, gRPC/JSON-RPC ports, healthcheck, and Z3_ZAINO_* vars are tagged profile: indexer, and the contract validator renders with the profile enabled so they still verify.

Reviewer scope note: the pinned zainod 0.5.1 cannot yet parse Zebra 6 RPC responses (valuePools gained the ironwood pool, and its fetch backend expects a fixed five). The indexer profile needs Z3_ZEBRA_IMAGE overridden to a 5.2-era Zebra until upstream adds Ironwood support; the README indexer section and the lightwalletd integration guide say so.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates Z3’s Docker Compose “default topology” to run Zebra + Zallet by default, and moves the standalone Zaino indexer behind an opt-in indexer profile (similar to the existing monitoring profile). It also bumps the platform contract to 2.0.0 to reflect the breaking change in the always-on service set.

Changes:

  • Gate Zaino (DNS, volumes, ports, healthcheck, env vars) behind the indexer Compose profile and bump the platform contract to 2.0.0.
  • Update image pins (Zebra 6.0.0-rc.0; Zallet now multi-arch and pinned by digest) and adjust Compose behavior accordingly.
  • Refresh contract validation, CI smoke coverage, and operator docs to reflect the new default topology and profile usage.

Reviewed changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
z3-contract.yaml Bumps contract version and marks Zaino identifiers as profile: indexer.
z3-contract.schema.json Adds indexer to the allowed profile enum.
scripts/vendor.sh Updates vendored refs for Zebra and Zaino.
scripts/validate-contract.py Renders Compose with profiles enabled for contract checks; adds assertions that the default topology excludes indexer-gated identifiers.
scripts/regtest-init.sh Ensures teardown stops profile-gated services; adjusts wallet volume initialization behavior.
README.md Updates quickstart, stop/wipe instructions, and adds an indexer profile section and caveats.
docs/regtest.md Updates regtest guide for the new default topology and indexer profile usage.
docs/integrations/lightwalletd-client.md Makes indexer profile requirement explicit for lightwalletd-style consumers.
docs/integrations/host-side-pointer.md Annotates Zaino ports as indexer-profile-only.
docs/integrations/compose-peer.md Updates in-network matrix labeling for indexer-profile-only Zaino.
docs/faq.md Updates operational guidance; adds FAQ on tracking Zebra latest via local env overrides.
docs/docker-architecture.md Updates architecture description and pinning guidance.
docs/contract.md Updates contract version and documents profile-gated DNS behavior.
docker-compose.yml Makes Zaino opt-in via profiles: [indexer]; bumps Zebra pin; pins Zallet by digest and removes its platform pin.
docker-compose.regtest.yml Aligns regtest overlay with the updated Zaino JSON-RPC bind configuration approach.
.github/workflows/ci.yaml Adds --profile indexer config checks; updates regtest smoke to focus on Zallet + rpc-router; ensures teardown stops profiled services.
.env.example Updates documented pins and notes to match the new defaults and profile gating.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread scripts/validate-contract.py
Comment thread docker-compose.yml
Comment thread .env.example Outdated
@gustavovalverde gustavovalverde force-pushed the docs/zebra-latest-image-override branch from 0bb8f29 to 39a8676 Compare July 4, 2026 15:32
Most operators run a node and a wallet together; a standalone indexer only
serves explorers, faucets, and light-client backends. Zaino moves behind the
opt-in `indexer` Compose profile, so the default `up -d` starts Zebra and
Zallet only. The common deployment stops paying for a component it does not use.

Zebra defaults to 6.0.0-rc.0, the newest published image. Zallet's upstream
image is now multi-arch, so its amd64 platform pin is dropped and it runs
native on arm64.

The platform contract bumps to 2.0.0: Zaino's DNS, per-network volumes,
gRPC/JSON-RPC ports, healthcheck, and Z3_ZAINO_* vars are gated on the indexer
profile, and the contract validator renders with the profile enabled so they
still verify.

The pinned zainod 0.5.1 cannot yet parse Zebra 6 RPC responses (valuePools
gained the ironwood pool). The indexer profile needs Z3_ZEBRA_IMAGE overridden
to a 5.2-era Zebra until upstream adds Ironwood support.
@gustavovalverde gustavovalverde force-pushed the docs/zebra-latest-image-override branch from 39a8676 to 04f86a7 Compare July 4, 2026 15:43
@gustavovalverde gustavovalverde changed the title feat: default stack is Zebra + Zallet, Zaino behind an indexer profile refactor: default stack is Zebra + Zallet, Zaino behind an indexer profile Jul 4, 2026
@gustavovalverde gustavovalverde merged commit c4cd987 into main Jul 4, 2026
7 checks passed
@gustavovalverde gustavovalverde deleted the docs/zebra-latest-image-override branch July 4, 2026 17:21
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.

2 participants