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
[]
= "ff-script"
= true
= true
= true
= true
= true
= true
= true
= true
= "FlowFabric typed FCALL wrappers and Lua library loader"
[]
# Default-on so existing consumers (ff-sdk default, ff-backend-valkey,
# ff-server, ff-scheduler, ff-engine) observe zero change.
#
# Issue #171 / feedback_feature_flag_propagation: gate the ferriskey
# transport surface so consumers that set
# `ff-sdk = { default-features = false }` do NOT pull `ferriskey` via
# the ff-script → ferriskey unconditional edge. Alternate-backend
# consumers (future Postgres) now get a `ferriskey`-free dep graph.
#
# Surface gated behind this feature:
# * `ScriptError::Valkey(ferriskey::Error)` variant + `valkey_kind()` method
# * `engine_error_ext::valkey_kind`
# * modules: `loader`, `retry`, `stream_tail`, `macros`, `result`, `functions`
#
# Surface still available without this feature:
# * `ScriptError` Lua-error variants (NotFound/Validation/State/etc.)
# * `ScriptError::class()` and `engine_error_ext::{class, transport_script,
# transport_script_ref}` — enables `ff-sdk --no-default-features` to
# classify `EngineError::Transport` wrappers without naming ferriskey.
# * `From<ScriptError> for EngineError` full mapping.
# * `LIBRARY_SOURCE` / `LIBRARY_VERSION` Lua constants.
# Default is empty: consumers opt in to `valkey-client` explicitly so the
# feature does NOT cascade through default-features inheritance (which
# would defeat the `ff-sdk --no-default-features` agnosticism proof).
# Every current internal consumer (ff-sdk[valkey-default],
# ff-backend-valkey, ff-server, ff-scheduler, ff-test) enables this
# feature directly in their own Cargo.toml.
= []
= ["dep:ferriskey"]
[]
# RFC-012 feature-gate discipline (#164, completes #158): default-features
# disabled so ff-script does not re-enable ff-core's `streaming` /
# `suspension` / `budget` feature flags for downstream consumers
# (notably ff-sdk `--no-default-features`). ff-script touches only the
# always-on surface (`contracts`, `keys`, `types`, `error`, `state`,
# `partition`, `engine_error`); `core` is requested explicitly so the
# dep stays correct if gates migrate onto those modules.
= { = "0.11.0", = "../ff-core", = false, = ["core"] }
# Issue #171: optional so `--no-default-features` drops the transport edge.
= { = true, = true }
= { = true }
= { = true }
= { = true }
= { = true, = ["time"] }