A bundle_id pins a result
Each bundle has abundle_id, a hash of every file in the bundle. Rater.load copies the bundle
into a private directory, hashes each file, and compares the hashes with the manifest before it
rates. Pass a bundle_id as revision to rate with exactly that bundle again, offline from the
local cache.
Pin the book and analysis assumptions alongside the bundle. For a program constructed in Python, also retain the version of its prepare function.
A packaged program’s identity covers those Python files; an engine-only bundle’s identity covers its rating implementation.
A bundle in an older RSL version stops at load with a BundleError. The error asks for a release
in the current version.
The RSL rates, in Rust
A bundle holds its RSL source and a generatedrater.py. Relativities checks rater.py as part
of the bundle’s identity, and rates with the RSL in rslc.PreparedRater. The same RSL then gives
the same premium on each machine.
A bundle may also carry a program layer: its prepare, its schema, an optional read and
examples. It is the
one Python a bundle brings. Program.load imports it after the whole bundle verifies, from the
rater’s private copy, as a package of its own. A program’s bundle_id covers the engine and each
program file, so it pins prepare and the rater together.
Package a program shows the steps.
Verification has a defined scope
Hash verification establishes bundle identity and integrity. Compiler checks establish properties of the supplied algorithm, tables, and declarations. Source review and independent examples establish evidence that the implementation reproduces the intended filing. Validate a program distinguishes these checks and the evidence to retain for a competitive study.Each premium is exact
The Rust runtime calculates in exact decimal arithmetic. A result row keeps each number as aDecimal. A value with an infinite decimal expansion, such as one third, travels as
{"$rational": "1/3"}. explain shows these values exactly.
The DataFrame that rate returns is the analysis view. It holds numbers as float64, which suits
pandas. For an exact value, read results.rows from rater.rate.