Bind sources
Bind a hardcoded input to where it came from. Binding pins a SHA-256 snapshot of the source and of the cell, so the ledger can later tell you whether either has drifted.
Both commands record a binding in the workbook’s proof ledger. Sources can be a URL, a local file, a prior workbook, an API endpoint, or a manual note. The available source kinds and their labels come from Proof settings.
Bind Source (a single input)
What it does
Binds one selected cell to a source. The dialog collects the source kind, the target (URL / file path / note text), an optional claim (a label such as “Q3 growth assumption”), and optional notes.
Steps
- Select the input cell. (If it contains a formula, you’re asked to confirm — binding is meant for inputs.)
- ModelXcel Pro → Proof → Bind Source.
- Choose the source kind, enter or browse to the target, add a claim/notes, and confirm.
What it records
A SourceBound ledger record containing a SHA-256 snapshot hash of the source content (for URL/file/API/prior-workbook kinds; a manual note has no source hash), plus a SHA-256 hash of the cell at bind time (value cells and formula cells are tagged differently so a value↔formula switch is detected), who bound it, and when.
How drift is judged: cell hash vs source snapshot
Bind Source stores two independent things — a cell hash (what the cell was at bind time) and a source snapshot hash (the source bytes, fetched once at bind time). They are judged separately:
- Formula-cell binding hashes the cell’s formula text (
FormulaR1C1). A recalculated value change alone is not drift while the formula text is unchanged; changing the formula text is drift. - Value-cell binding hashes the cell’s value (
Value2), so any value change is drift. - The source snapshot is captured once at bind time. Verify Workbook compares the workbook-side cell hash and does not re-fetch the external file or URL.
- A manual note has no source snapshot, so it never reports source drift (cell-side drift still applies).
Caveats
- The source is fetched once, at bind time (HTTP GET, 30-second timeout, no automatic retry).
- Drift is recorded as an append-only counter-record; it never auto-repairs — you acknowledge it or re-bind. See Verify & coverage.
Bind Vector (a contiguous range, as one unit)
What it does
Binds a contiguous range of two or more input cells as a single atomic unit — useful for a row or column of assumptions (e.g. a monthly vector).
What it records
A VectorBound record with one SHA-256 hash over the whole range’s values (not a per-cell hash), the range scope, an optional schema hint (e.g. Monthly:48), and — for non-note kinds — a SHA-256 snapshot of the external source.
A vector is atomic, and tracks values
The hash covers the whole range’s values (Range.Value2), so any change to any resulting value breaks the entire vector — including a recalculated value — and there is no per-cell record of which cell changed. Formula text is not tracked: if a formula’s text changes but its resulting value is unchanged, the vector stays fresh; if any resulting value changes, it breaks. (This is the opposite of a single-cell formula binding, which tracks the formula text and ignores recalc.)
Where bindings are stored
Bindings live in the proof ledger, which is authoritative inside the workbook (a hidden CustomXMLPart) and mirrored to a .mxproof sidecar. See the Proof & Trust overview.