`epiphany-pipeline` was the organ's type library with its prepare, decode, register and validate path gated `cfg(test)` "until the organ prepares writes (Cut 8)". This is Cut 8. The four are `pub` and un-gated: `register_pipeline_document_types` registers the thirteen kinds and nothing else, `PipelineDocument::prepare` and `::decode` are the one door to the crate-private wrappers, and `validate_pipeline_write_envelope` returns `PipelineRefusal` directly, which drops the `downcast_ref` in the key test. `anyhow` and `rmp-serde` move from dev to normal dependencies; both were already in the lock, so the lock is unchanged. The test stand-in `ForeignDocument` stays `cfg(test)` and is registered by the tests' `schema_cache`, no longer by the live registrar. `PIPELINE_SCHEMA_EPOCH` returns as one `pub const` beside the schemas it names, with the README's evolution rule as its doc comment: additive keeps it, a widened `PipelineKind` is additive, a breaking bump refuses the old store. `every_kind_is_at_the_epochs_version` reads the version off the constant and holds every type id to it, and counts the live registrar's types against `PipelineKind::ALL`. Verification: `cargo check -p epiphany-pipeline --lib --tests` and `cargo test -p epiphany-pipeline --lib` (27 passed, 0 warnings); `cargo check -p epiphany-core --lib --tests` untouched; `cfg(test)` in lib.rs is now only `derived_schema`, `ForeignDocument` and `mod tests`; `schemas/cultnet/` and `Cargo.lock` unchanged. Mutations `tools/eureka-cut8-epiphany-mutations.psd1`: M0 green, E1 (epoch `.v2`), E2 (one kind fewer registered), E3 (the stand-in registered again under `cfg(test)`) all killed by the new test. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
27 lines
834 B
TOML
27 lines
834 B
TOML
[package]
|
|
name = "epiphany-pipeline"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
publish = false
|
|
autobins = false
|
|
license-file = "../LICENSE"
|
|
|
|
[lib]
|
|
name = "epiphany_pipeline"
|
|
path = "src/lib.rs"
|
|
|
|
# A leaf type library. Every dependency here is one the document types or the
|
|
# write path need in a non-test build: the organ prepares, decodes and
|
|
# validates envelopes through this crate, so `anyhow` (the cache's error type)
|
|
# and `rmp-serde` (the payload decode) are normal dependencies. Only the
|
|
# schema-publication check needs JSON.
|
|
[dependencies]
|
|
anyhow = "1"
|
|
chrono = "0.4.44"
|
|
cultcache-rs = { git = "https://github.com/GameCult/CultLib.git", rev = "a0813c6eed24d30bf88073ef615b633c77ebfcd6", package = "cultcache-rs" }
|
|
rmp-serde = "1"
|
|
schemars = "1"
|
|
serde = { version = "1", features = ["derive"] }
|
|
|
|
[dev-dependencies]
|
|
serde_json = "1"
|