1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
[]
= "ff-backend-postgres"
= true
= true
= true
= true
= true
= true
= true
= true
= "FlowFabric EngineBackend impl — Postgres backend (RFC-v0.7, Wave 0 scaffold)"
[]
# Mirror ff-core's `core` + `streaming` features so the backend's
# method-gate `#[cfg]`s line up with the trait surface. `core` is
# default-on (ff-core's `core` is always-needed for the minimal
# write surface; ff-backend-valkey takes the same stance via its
# hard ff-core feature activation). `streaming` tracks ff-core's
# `streaming` default.
= ["core", "streaming", "suspension"]
= ["ff-core/core"]
= ["ff-core/streaming"]
# RFC-025 Phase 3: `list_expired_leases` trait method rides `ff-core`'s
# `suspension` gate (the method reads lease/attempt state coupled with
# suspend). Default-on so the in-tree release feature-set keeps parity
# with Valkey + SQLite; downstream consumers can disable via
# `default-features = false`.
= ["ff-core/suspension"]
# Issue #154 — enable real OTEL metric emission via `ff-observability`.
# Off by default; mirrors `ff-backend-valkey`.
= ["ff-observability/enabled"]
[]
# Wave 0: `core`, `suspension`, `budget` match ff-backend-valkey's
# ff-core feature set so the Postgres backend honours the same
# `EngineBackend` method surface.
= { = "0.14.0", = "../ff-core", = false, = ["core", "suspension"] }
# Always-present observability shim (no-op unless `observability`
# feature flips the shim to real OTEL). Mirrors ff-backend-valkey.
= { = true }
# Postgres transport. sqlx with tokio-rustls + the macros feature
# (enables `sqlx::migrate!` compile-time migration loading).
= { = true, = ["postgres", "runtime-tokio-rustls", "macros", "migrate", "uuid", "chrono", "json"] }
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
# RFC-023 Phase 2b.2.1: HMAC primitives moved to `ff_core::crypto::hmac`
# and consumed as a re-export in `signal.rs`. `hex` stays — still used
# by `suspend_ops.rs` for opaque-handle / payload hex codec.
= "0.4"
# RFC-024 PR-D: SHA256 for the deterministic `ff_claim_grant.grant_id`
# (sha256 of the HMAC-signed `grant_key` string — stable, collision-
# resistant, same primitive already in transit via `ff-core::crypto::hmac`).
= "0.10"
[]
= { = true, = ["macros", "rt-multi-thread"] }
= { = true }
= { = true, = ["v4"] }