Type-safe time-value-of-money calculations in Rust.
A Cargo workspace whose published crate is time_value.
Two unpublished crates sit beside it: time-value-cli,
which installs the time-value command, and crates/bundle-check, which exists
so the knowledge bundle's invariants are asserted rather than eyeballed.
The library comes first and the surfaces follow it — a feature is modelled and
built in time_value, then exposed in the CLI, then in the MCP server. A
surface validates nothing of its own.
Nothing here is published. The 0.1.0–0.8.0 series on crates.io is a
separate, immutable history that this line does not continue.
knowledge/ is an Open Knowledge Format bundle and this
project's authoritative documentation: what each formula is, where its
definition came from, which convention was followed where sources disagree, and
what has deliberately been left open. There are no ADRs.
Concepts come before code. A formula is modelled first, and the implementation follows the model — so the bundle is worth reading before the source, not after.
Each claim says where it came from. A footnote means a source supports it; otherwise it is labelled Decided or Derived, so a reader can tell a choice from a consequence. Most of it is ours: the sources give formulas and little else.
nix develop # toolchain, bacon, nextest, cargo-deny, prettier, hooks
bacon # continuous clippyEverything CI runs, runs the same way locally — CI runs this exact script:
nix develop -c ./scripts/check.sh # everything
nix develop -c ./scripts/check.sh clippy # one check, by nameIt reports every check rather than stopping at the first failure, and refuses to
run against a stable rustfmt, which would silently ignore most of
rustfmt.toml and pass anyway.
The knowledge bundle is checked by those tests too — its structure and links by
okf-graph, and its frontmatter by the
stricter rules this repo holds itself to.
This repo's own GitHub rulesets are version-controlled in
.github/rulesets/ and reconciled by
scripts/settings.sh --check / --apply.
Licensed under either of Apache-2.0 or MIT at your option.