flybrain/services/flysim/Cargo.toml
acamilo d2b916602e feat(session-types): the fly-session-types crate: domain scalars, closed enums, method payloads, canonical JSON and digests
The CONTRACT-01 type definitions, committed early so the session slice can build on
them while the fixtures and cross-language tests are still being written.

- scalar: Scope, RationalNs (reduced, positive denominator, 0/1 zero, checked
  arithmetic and the step-v1 accumulator), SchemaRef, TypedValue with its 32-KiB
  canonical-JSON cap, and the four identities that must not be confused (bus callId,
  domain requestId, artifact identity, delivery/hold owner token) as distinct types.
  Id, U64 and Digest call into flybus::wire instead of forking the encodings.
- canonical: RFC 8785 canonical JSON, SHA-256 digests, the operation key and the
  canonical body rules of ipc-v1 section 5, with bus identities refused in a body.
- rpc, workers, media, publishing: the payloads of ipc-v1, workers-v1, state-media-v1
  and publishing-v1, each with a validate step for the documented ranges, uniqueness,
  ordering and bounds.
- schema: the canonical schema set, whose digest is contractDigest, declared as data
  so source formatting cannot change it.
- trace: the step-v1 section 8 record, behaviour separated from operational metadata.
- seed, checkpoint: the seed derivation and FLYSESS1 envelope layout.
2026-09-22 11:27:06 +00:00

41 lines
1.2 KiB
TOML

[workspace]
resolver = "3"
members = [
"crates/fly-session-types",
"crates/flybrain-core",
"crates/flybrain-gb",
"crates/flybus",
"crates/flysim",
]
[workspace.package]
version = "0.1.1"
rust-version = "1.94"
license = "Apache-2.0"
publish = false
[workspace.dependencies]
base64 = "0.22"
cc = "1.4.2"
flate2 = "1"
cudarc = { version = "0.19.9", default-features = false, features = [
"std",
"driver",
"nvrtc",
"dynamic-loading",
"cuda-12080",
] }
indexmap = { version = "2", features = ["serde"] }
libm = "0.2"
ryu-js = "1"
serde = { version = "1.0.229", features = ["derive"] }
# `float_roundtrip` is not optional: without it serde_json's fast float parser can land 1 ulp off
# the value `JSON.parse` produces, which is enough to break a golden comparison.
serde_json = { version = "1.0.151", features = ["preserve_order", "float_roundtrip"] }
sha2 = "0.10.9"
# Bit-exactness with the TypeScript oracle is the whole point of this workspace, so the
# release profile must not be allowed to reassociate or contract float arithmetic. Rust does
# neither by default; these settings only pin the parts we do care about.
[profile.release]
debug = 1