peteksim 0.1.13

petekSim — the SIMULATION layer: dynamic/engineering appraisal (recoverable/forecast) + PVT + the appraisal facade over the petek subsurface-modelling stack, consolidated into one crate.
Documentation
[package]
name = "peteksim"
description = "petekSim — the SIMULATION layer: dynamic/engineering appraisal (recoverable/forecast) + PVT + the appraisal facade over the petek subsurface-modelling stack, consolidated into one crate."
keywords = ["reservoir", "appraisal", "subsurface", "simulation", "volumetrics"]
categories = ["science", "simulation"]
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
rust-version.workspace = true
# The published crate ships no test/example data (house rule).
exclude = ["/tests", "/examples", "/dev-docs", "/docs", "/notes", "/research", "/tools", "/crates"]

[lints]
workspace = true

[dependencies]
# petekSim's single error type (SrsError): petekStatic's StaticError, petekio's
# GeoError and petekTools' AlgoError compose into it via #[from] so `?` chains
# across the layer seams in one hop.
thiserror.workspace = true
# CROSS-REPO family deps: the DATA layer (petekio), the horizontal TOOLKIT
# (petektools), and the GEOMODEL layer (petekstatic). One-directional DAG edges.
petekio.workspace = true
petektools.workspace = true
petekstatic.workspace = true
# Config-layer serde: the facade specs + the analytics chart bundles round-trip.
serde.workspace = true
# The view bundles + the wells_logs base64 blocks + the box-model JSON payloads.
serde_json = "1"
# The wells_logs bundle encodes each numeric lane as a base64 f32 block — the same
# wire petekStatic's volume blocks use, so the viewer decodes them on one path.
base64 = "0.22"
# The zoned-MC driver samples per-zone draws on ONE seeded stream and shards the
# realize loop across template clones — the same rand (0.10) + rayon petekStatic
# uses at the seam, so the RNG is one type across the layer boundary.
rand = "0.10"
rayon = "1"

[workspace]
resolver = "2"
members = [
    "crates/srs-py",
]

[workspace.package]
version = "0.1.13"
edition = "2021"
# BSL-1.1 via its SPDX identifier (BUSL-1.1). The full text ships as the repo-root
# LICENSE; the SPDX id is what crates.io / PyPI surface. (A workspace-root
# `license-file` does not package into individual member crates.)
license = "BUSL-1.1"
repository = "https://github.com/kkollsga/peteksim"
rust-version = "1.80"

[workspace.dependencies]
# The consolidated library crate (the py binding crate depends on it).
peteksim = { path = ".", version = "0.1.13" }
# CROSS-REPO family deps.
# petekStatic (GEOMODEL layer, downstream DAG edge): the consolidated geomodel +
# static-uncertainty crate. Resolved from crates.io; to develop against the
# sibling checkout, patch it locally in a gitignored .cargo/config.toml:
#   [patch.crates-io]
#   petekstatic = { path = "../petekStatic" }
# petekstatic::error::StaticError composes into SrsError via #[from].
petekstatic = "0.1.13"
# petekTools (pure-leaf toolkit, downstream DAG edge): numeric kernels + units +
# the viewer unit. Resolved from crates.io.
petektools = "0.2.15"
# petekio (DATA layer): its neutral Distribution DTO is the input of the lifted
# `distribution_of` (DTO→sampler) mapping. Resolved from crates.io.
petekio = "0.3.15"
thiserror = "2"
serde = { version = "1", features = ["derive"] }

# Warnings are errors (CLAUDE.md gate). Applied per-crate via `[lints] workspace = true`.
[workspace.lints.rust]
unused = { level = "deny", priority = -1 }
dead_code = "deny"

[workspace.lints.clippy]
all = { level = "deny", priority = -1 }

[profile.release]
lto = true
codegen-units = 1