Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 10 additions & 13 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -148,20 +148,17 @@ jobs:
save-if: false
- run: cargo test --workspace --all-targets --all-features --exclude dolos-minibf --exclude dolos-minikupo --exclude dolos-trp

# `dolos-snapshot` carries two default-off halves — the OCI transport (`oci`)
# and the backfill daemon (`backfill`) — and every job
# above builds them the one way the `dolos` binary does, with both on. A
# `cfg` that only compiles under that combination passes all of them and
# breaks a build nobody here runs. This checks the combinations the crate
# promises instead, at `cargo check` depth: the guard is that each compiles,
# not that it passes a suite the jobs above already run.
# `dolos-snapshot` carries one default-off half — the backfill daemon
# (`backfill`) — and every job above builds it the one way the `dolos`
# binary does, with it on (the default `mithril` feature forwards to it).
# Feature unification means no workspace job ever constructs the
# backfill-off build, so a `cfg` mistake there passes everything and breaks
# only a consumer. This checks that one configuration, at `cargo check`
# depth: the guard is that it compiles, not that it passes a suite the jobs
# above already run.
snapshot-features:
name: Check (dolos-snapshot ${{ matrix.features }})
name: Check (dolos-snapshot default features)
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
features: [oci, backfill, "oci,backfill"]
steps:
- uses: actions/checkout@v4
with:
Expand All @@ -171,7 +168,7 @@ jobs:
with:
shared-key: test-ubuntu-latest
save-if: false
- run: cargo check -p dolos-snapshot --all-targets --features ${{ matrix.features }}
- run: cargo check -p dolos-snapshot --all-targets

# These sleep on a real relay rather than compute, so they are slow and only
# as reliable as the relay. Run them on merges to main; smoke stays on the
Expand Down
89 changes: 0 additions & 89 deletions .github/workflows/registry.yml

This file was deleted.

26 changes: 15 additions & 11 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -333,21 +333,25 @@ All agents working on this repository must verify their modifications by running
4. **Registry round trip** (requires Docker): the `#[ignore]`d suites that
spawn a real OCI registry
```bash
cargo test -p stelae --all-features --test oci -- --ignored --test-threads=1
cargo test -p dolos-snapshot --features oci --test publish -- --ignored --test-threads=1
cargo test -p dolos-snapshot --features oci --test restore_registry -- --ignored --test-threads=1
cargo test -p dolos-snapshot --test publish -- --ignored --test-threads=1
cargo test -p dolos-snapshot --test restore_registry -- --ignored --test-threads=1
```

Each test spawns its own registry container via `docker run` and tears it
down on the way out; the suites are `#[ignore]`d so plain `cargo test`
stays green without a container runtime. Run them when touching
`crates/stelae/src/oci.rs`, the manifest shape, or `crates/snapshot`'s
registry publish/restore paths. `STELAE_TEST_REGISTRY_IMAGE` selects the
server; the `Registry` workflow (`.github/workflows/registry.yml` — its
own workflow, so the gate can travel with a future extraction of
`crates/stelae`) runs these suites on Linux (with `--nocapture`) against
`registry:2`, `registry:3` and a pinned `zot`, so the round trip against a
real registry never depends on someone remembering to run it.
stays green without a container runtime. Run them when touching the
stelae pin or `crates/snapshot`'s registry publish/restore paths;
`STELAE_TEST_REGISTRY_IMAGE` selects the server.

These are local verification tools, deliberately not a CI job here.
Registry interaction — transport and publish lifecycle — is implemented
by the stelae crates, so testing that integration in CI is
`github.com/txpipe/stelae`'s responsibility, and its `Registry` workflow
runs against `registry:2`, `registry:3` and a pinned `zot`. Dolos's test
subject is the profile, and the profile is transport-blind by
construction: the directory-transport suites in the workspace gate cover
it, and these two suites exist to double-check the composition when the
seam itself is in question.

### Code Quality Standards

Expand Down
9 changes: 4 additions & 5 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 6 additions & 15 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ dolos-core = { path = "crates/core" }
dolos-cardano = { path = "crates/cardano", features = ["include-genesis"] }
dolos-redb3 = { path = "crates/redb3" }
dolos-fjall = { path = "crates/fjall" }
dolos-snapshot = { path = "crates/snapshot", features = ["oci"] }
dolos-snapshot = { path = "crates/snapshot" }
dolos-mithril = { path = "crates/mithril", optional = true }
dolos-minibf = { path = "crates/minibf", optional = true }
dolos-minikupo = { path = "crates/minikupo", optional = true }
Expand Down Expand Up @@ -201,8 +201,6 @@ members = [
"crates/flatfiles",
"crates/mithril",
"crates/snapshot",
"crates/stelae",
"crates/stelae-driver",
"crates/testing",
"crates/minibf",
"crates/redb3",
Expand Down Expand Up @@ -262,19 +260,12 @@ opentelemetry_sdk = { version = "0.32.1", features = ["rt-tokio"] }
opentelemetry-otlp = { version = "0.32.0", features = ["grpc-tonic"] }
tracing-opentelemetry = "0.33"

# Stelae (crates/stelae). `minicbor` is pinned to the 0.26 line that Pallas
# already pulls in, so the protocol crate adds no new CBOR implementation to the
# tree and encodes against the same codec the Dolos profile will use.
# `minicbor` is pinned to the 0.26 line that Pallas already pulls in, so the
# Dolos profile (crates/snapshot) encodes against the same codec the stelae
# protocol crates do — the same pallas-alignment convention the stelae
# repository states in its own manifests. Moving this line is a
# byte-compatibility question, not a dependency bump.
minicbor = { version = "0.26", features = ["std"] }
serde_jcs = "0.2.0"
sha2 = "0.10.9"
zstd = "0.13.3"

# The restore path's disk preflight, and nothing else. `default-features =
# false` drops the file-locking half of the crate, leaving the free-space
# query, which is a `statvfs`/`GetDiskFreeSpaceExW` call over `rustix` and
# `windows-sys` — both already in this tree.
fs4 = { version = "1.1.0", default-features = false }

[workspace.metadata.release]
push = false
Expand Down
Loading
Loading