[package]
name = "funnel-core"
readme = "README.md"
description = "Pure workflow-DAG core of the nornir funnel: events, ids, state, topological readiness, history and the kanban-card projection — no warehouse/iceberg/model coupling. Shared by nornir and ordning-funnel (#22)."
# 0.1.4: DRIFTED from the published 0.1.3 — `Event::PlanComponentWired` exists here
# and not in the registry copy, so nornir cannot compile against its own stated
# minimum (E0599 x3 in a Gate B verify build, 2026-08-23).
version = "0.1.5"
edition = "2021"
license = "MIT OR Apache-2.0"
repository = "https://git.gunnar.rs/mikronova/funnel-core"
# Development notes, agent instructions and machine-local tooling stay in the
# repository; they are not part of the published crate.
exclude = [
".nornir/",
"bench_history.jsonl",
]
[dependencies]
serde = { version = "1", features = ["derive"] }
serde_json = "1"
chrono = { version = "0.4", features = ["serde"] }
anyhow = "1"
petgraph = "0.8"
[dev-dependencies]
# The silenced-test guard ONLY (`tests/no_silenced_tests.rs`): a `tests/*.rs`
# whose crate-level `#![cfg(feature = "X")]` is unsatisfied compiles to an EMPTY
# binary and prints `running 0 tests ... ok` — green-by-vacuum. `audit_repo`
# RED-flags those. Heavy-dep-free (pure std + serde + anyhow), so this costs the
# test build essentially nothing.
#
# NO `version =` ON PURPOSE, and this is load-bearing, not an oversight:
# crates.io's newest nornir-testmatrix is 0.2.7 and does NOT contain the
# `gatedtests` module at all. The guard exists only in edda's unpublished 0.2.8,
# so a version requirement would resolve to the registry copy and fail to
# compile. A dev-dependency carrying no `version` is dropped from the PUBLISHED
# manifest by cargo, so this path stays local-only and `cargo publish` is
# unaffected. Change to `version = "0.2.9", path = ...` once edda publishes it.
nornir-testmatrix = { path = "../edda/crates/nornir-testmatrix", default-features = false }