Gunnar

nordisk/skade

.nornir/build-variants.toml

# skade — .nornir/build-variants.toml — EMITTED, NOT SOURCE.
#
# Generated by `cargo run -p skade-build-thing -- emit` from
# crates/skade-build-thing (the Rust `impl BuildThing`). The code is the one
# source; this file DESCRIBES the build. Editing it changes NOTHING: re-emit
# after changing the code. Do not edit by hand.
#
# Model: variant → features → settings/sub-settings → typ. TWO rows, and they are
# the two shapes skade is consumed in: the EMBEDDABLE library (linked in-process
# by korp, modgunn, korp-collectors — `linkage = not-applicable`, because a
# library is linked by whoever consumes it) and the catalog SERVICE (`kind =
# service`, fat, with `embeds`/`reaches` stated EMPTY rather than omitted). What
# each declares and which features are excused is in
# .nornir/build-thing-design.md.

[build]
offers = [
    "aws-s3",
    "lineage",
    "lineage-http",
    "rustfs",
    "s3",
    "stream",
    "testmatrix",
]
base_suite = "ORIGINAL"

[build.allow_unbuilt]
aws-s3 = "the aws-sdk-s3 object-store backend, for a consumer that already carries the AWS SDK. WHICH backend is compiled in is the consumer's decision, not skade's — the ⭐ library row picks `s3` (rust-s3, MinIO/S3, configurable endpoint) because that is what this house runs, and a second row would be the same library with a different consumer's answer baked in."
lineage = "the automatic lineage emit hook on `Table::append`. The lineage TYPES compile regardless; only the emission wiring is gated, so the default build pays nothing — and a shipped library that emitted lineage events to a sink nobody attached would be doing work for no reader."
lineage-http = "the OpenLineage HTTP sink that POSTs each event to a Marquez-style collector. Its own feature so ureq + serde_json stay out of every other build, and enabling it does NOT imply `lineage` — the sink is attached explicitly, so a build point that turned it on would still emit nothing."
rustfs = "the embedded local-filesystem ObjectStore — zero extra crates, just std. Same backend-is-the-consumer's-choice reason as `aws-s3`, and it is the one every test uses, so it is compiled constantly even though no delivery names it."
stream = "the push CDC consume API (`ChangeStream` + `Table::changes`) over skade-katalog's commit broadcast. Purely additive and off by default for the same reason as `lineage`: the consumer decides whether it wants a changelog stream."
testmatrix = "flips the crate's `functional_status` markers from compiled-out no-ops into real nornir matrix rows. A TEST-HARNESS mode, never a delivery: the write/read data plane must pull no nornir dep."

[build.allow_unbuilt_bins]
bench-containers = "bench/ (detached workspace): brings the bench's competitor backends (RustFS, Nessie, Polaris) up and down for catalog-bench — bench tooling, never shipped."
catalog-bench = "bench/ (skade-katalog-bench, a DETACHED workspace kept out of the published crate's tree and lock): the catalog benchmark runner (embedded vs Nessie vs Polaris) — a bench tool, never shipped."
skade-build-thing = "this recipe crate's own emit door (`cargo run -p skade-build-thing -- emit` regenerates .nornir/build-variants.toml); the forge loads the crate as wasm, the bin is repository tooling, never shipped."

[build.downstream]
skade = []

[[build.variant]]
name = "skade"
package = "skade"
features = ["s3"]
profile = "release"
manifest_dir = "skade"
member = "skade"
linkage = "not-applicable"
role = "library"
suites = ["ORIGINAL"]
default = true
kind = "lib"

[[build.variant]]
name = "skade-remote"
package = "skade-katalog-serve"
bin = "skade-katalog"
profile = "release"
manifest_dir = "serve"
member = "skade"
role = "server"
suites = ["ORIGINAL"]
default = true
kind = "service"

[[build.variant]]
name = "skade-flight"
package = "skade-flight"
bin = "skade-flight"
profile = "release"
manifest_dir = "skade-flight"
member = "skade"
role = "server"
suites = ["ORIGINAL"]
kind = "service"

[build.toolchain]
image = "nordisk-cargo-toolchain"
image_sha256 = "668468e775ad80f32d700cbc9709d41cac726f40d00649461a0932f30d1b2067"
rust_version = "1.97.1"
targets = [
    "x86_64-unknown-linux-gnu",
    "x86_64-unknown-linux-musl",
    "wasm32-unknown-unknown",
]
timeout_secs = 3600
mem_limit_mb = 8192
cpus = 8
siblings = [
    "draupnir",
    "edda",
    "nornir",
    "znippy-zoomies",
]