Why Apple Foundation Models Need a Deterministic Computation Layer: Lessons from MetricBridge

Apple's offline AI model ensures privacy, but trustworthy computation requires deterministic code — not the model itself.
Using Apple Foundation Models as a starting point, this article argues that developers often conflate "privacy/offline capability" with "computational trustworthiness." LLMs predict tokens rather than perform arithmetic, and repeated calls can return different values that all pass schema validation — a serious risk in health or financial contexts. MetricBridge's deterministic AskEngine layer solves this by parsing intent into 16 tool calls, generating all numbers in code, and letting the model handle only natural language. Two "honesty fields" in ComputedFacts proactively surface data limitations, and a benchmark script uses byte-identical sha256 hashes to prove zero model involvement in computation.
Apple's Foundation Models framework gives iOS apps a free, on-device 3-billion-parameter model with a 4,096-token context window per session. It's solid infrastructure, and the privacy story is genuine. But what it provides is a fundamentally different thing from "this app can show its work" — and a growing number of apps are quietly conflating the two.

Language Models Don't Do Arithmetic
A language model predicts the next token — it doesn't perform arithmetic. Ask it to compute the average of seven values, and it will output a string that looks plausible, because plausible-looking strings like that appeared in its training distribution. Run it twice and you might get 49.6, then 49.8 — both pass schema validation, but neither is a true function of your data.
That's the core of the problem. Schema validation checks whether an output is well-formed, not whether a number is correct. For health data, financial metrics, or any domain requiring precise calculation, a figure that looks right but randomly fluctuates is more dangerous than an obvious error — because it wears a mask of credibility.
This phenomenon is technically called "hallucination," but for numerical computation, "random sampling" is a more precise description. Even with greedy decoding, a model's numerical outputs are influenced by temperature settings, floating-point rounding in attention mechanisms, and subtle differences in underlying hardware — meaning the same prompt can yield different results across calls. More fundamentally, a model's "understanding" of numbers is grounded in statistical co-occurrence of token sequences, not symbolic logic. For example, "49.6" is just a sequence of character tokens internally — the model cannot distinguish whether that value came from a genuine computation on input data or was borrowed from a similar context seen during training. This means even a correct output on one run offers no guarantee of correctness on the next, and more critically, no way to trace where the number came from. Traceability is the foundation of trust in any data application.
Hand Computation Off to a Deterministic Layer
The framework's built-in Tool protocol already points in the right direction: don't let the model compute — let it call something that does.
In the MetricBridge project, this principle is realized in AskEngine.swift — a pure computation layer. It parses a user's question into one of 16 tool calls, extracts the metric name, runs aggregations over the data rows you've recorded, and returns a struct called ComputedFacts.
This struct carries a substantial amount of information: the canonical metric name, units, range label, number of days with actual data, raw (date, value) rows, core aggregate values with their labels, and a direction-of-change indicator. The model computes zero numbers from start to finish — it receives a brief summary and its only job is to word that summary into natural language.
Apple Foundation Models' Tool protocol lets developers register external functions as model-callable tools. The model decides when to call which tool and with what parameters, while the actual execution logic is entirely controlled by developer-owned Swift code. This mirrors the design philosophy behind OpenAI's Function Calling and Anthropic's Tool Use: decoupling the LLM's natural language understanding from deterministic program logic. The key distinction in the tool-calling pattern is that code — not the model — is the producer of numerical values. The model only handles intent parsing and result phrasing, while the computation itself is handled by unit-tested, auditable functions. This gives the entire data pipeline reproducibility: the same inputs always yield the same outputs, and errors can be traced to specific lines of code rather than vaguely attributed to "model behavior."
The Design Elegance of Two Honest Fields
ComputedFacts includes two noteworthy "honesty fields" that reflect a principled restraint toward presenting data faithfully.
The first is coverageDays, which sits alongside dayCount. Even when returning "the most recent value," the response can still reflect the coverage of the full sequence — preventing a single data point from misrepresenting the whole.
The second is unevenWindows. When the number of recorded days on each side of a comparison differs, it's explicitly flagged — rather than printing a total span next to a per-day rate and creating a misleading comparison. Proactively surfacing data limitations like this is what "showing your work" actually means.
Reproducible Verification: Byte-for-Byte Evidence
The repository ships a script, bench_deterministic_layer.py, to substantiate the claim that "the model participates in zero computation." It builds a 30-day HRV (heart rate variability) sequence from a random seed and prints a "provenance card."
The card shows: a core value of 49.6 ms (7-day average), up 16.3% from the prior 14 days (mean 42.6 ms), with dayCount at 7 and coverageDays at 30.
The key is reproducibility: run it twice back-to-back, the output is byte-for-byte identical, with both runs producing a sha256 hash of f2e87621b46b2fe04cd81a86cb2183ed2e271237ca8d23b9123171445359d9d7. The card ends with a pointed summary: "Numbers produced by the computation layer: 5. Numbers produced by the model: 0."
This verifiability is the fundamental advantage of a deterministic layer over a pure LLM approach. The same inputs always produce the same outputs — and that's the bedrock of any data application that needs to be trusted.
The sha256 hash here plays the role of a "mathematical witness": two independent runs producing the identical 256-bit hash is probabilistically equivalent to every byte of output being identical. This is a standard technique in software engineering for verifying determinism — common in build systems like Bazel's hermetic builds and in cryptographic applications. For AI apps, it's particularly compelling because it uses a publicly verifiable number to prove the claim of "zero model involvement in computation" — anyone with the same script and random seed can reproduce the same hash locally, no need to trust the author's word. This complements unit testing: unit tests verify logical correctness, while hash consistency verifies output stability across execution environments.
Traceable ≠ Diagnostic
The author draws one important boundary at the end: none of these mechanisms constitute any form of diagnosis or monitoring.
When a metric drifts from your recent range, the honest framing is "outside your personal baseline" — never "abnormal." The ability to trace where a number came from does not make it a clinical conclusion. This linguistic care is entirely consistent with the deterministic design philosophy throughout — technical credibility should not be stretched into medical authority.
For AI application developers, this case study offers a clear architectural pattern: let LLMs do what they're good at (understanding intent, organizing language), and hand off anything requiring precision and reproducibility to deterministic code. Privacy and on-device capability are infrastructure-layer advantages; "showing your work" requires deliberate architectural design. The two should never be conflated.
Related articles

How Big Can Stars Really Get? The Physical Limits of the Largest Stars
Red supergiants are the largest stars by volume, with radii up to 2,000 times the Sun, engulfing the inner solar system. But there is no precise upper limit on stellar size—models predict up to 15,000 solar radii. The most massive blue stars are far smaller than red supergiants—biggest and heaviest are two different things.

Apple HomeView Smart Display Full Feature Breakdown: Wall-Mount or Desktop, $299
Apple launches HomeView, a $299 smart display with wall-mount and desktop options, 12MP camera for facial recognition, smart home control, music playback, and recipe step-by-step cooking. Full breakdown of watch faces, apps, privacy, and cooking integration.

Where Did the Promised New Studio Go? Craft Computing Answers After Five Years
Craft Computing's host responds to viewer questions: the new studio promised five years ago was shelved as construction costs soared from $30,000 to $75,000, and was replaced by a 168-square-foot garage conversion.