Skip to content
Centriu
Centriu Axiom

AI Action-Impact Estimation Integrity Automation: A Test Suite That Passed Because the Numbers Were Invented

Before Centriu Axiom lets an AI-recommended action actually run, it can simulate the action's likely impact across six dimensions — budget, audience, timeline, quality, risk, and compliance — plus three named scenarios, so a person can weigh the estimate before committing. An internal audit found that every one of those numbers came from `Math.random()` inside fixed ranges, adjusted only by a coarse risk multiplier — meaning the exact same action, simulated twice in a row, produced two different scores, and nothing about the number related to what the action actually was. The interface carried an honest "illustrative estimate" disclaimer, but the number outlived that disclaimer: it was written to the simulation history, to the audit trail as a `simulation_completed` event with an `overall_score`, and into the conversation a person had with a client — all without the disclaimer attached. Worse, the ORIGINAL test suite for this feature only checked that six dimensions existed with scores between 0 and 100 — a check a random-number generator satisfies automatically, meaning the tests were passing precisely because the values were fabricated within range, not despite it. The fix sends the action's real context to the same AI proxy the rest of the product uses, at a temperature of zero so the same action always produces the same reading, validates every field of the response before trusting it, and throws — recording no simulation at all — the moment the AI doesn't respond or its answer doesn't hold up.
Same action, same score
Refuses rather than invents
Command center screen with real metrics
The same action, the same reading, every time.

A disclaimer on the screen does not travel with the number to everywhere else it goes

Labeling an estimate as "illustrative" on the screen where it first appears is honest and genuinely useful — it tells the person looking at it, in that moment, not to treat the number as a guarantee. What that label cannot do is follow the number to every other place it subsequently travels: into a history table, into an audit log, into a summary read aloud to a client on a call. Each of those destinations receives the number itself, not the caveat that accompanied it on the original screen, and a number sitting alone in an audit record or a client conversation reads as a measurement whether or not it started life as a randomly generated placeholder.

How the underlying problem shows up before you fix it

An estimate or score is computed from a random-number function inside fixed ranges, so repeating the exact same input produces a different result each time.

A screen displays an honest disclaimer next to a number, but the number is persisted to a history table, an audit log, or an exported report without the disclaimer attached to it there.

A test suite for a scoring or estimation feature only verifies that a value exists and falls inside an expected range — a check any random-number generator inside that same range will pass by construction.

The same feature offers zero test cases specifically checking that the SAME input produces the SAME output, or that the output actually changes when a materially different input is provided.

A generated number becomes an input to a second calculation or decision (a baseline, a downstream summary) with nothing tracking or re-verifying where the original number actually came from.

Why a test suite can pass cleanly around a completely fabricated number

A test that checks "does this value exist, and does it fall between 0 and 100" is a perfectly reasonable, standard test to write for a scoring feature — it catches missing fields, wildly out-of-range values, and type errors. The problem is that this exact test provides zero information about whether the score reflects anything real, because a function that does nothing but call a random-number generator inside that same 0-to-100 range will pass it every single time, with total reliability. A test suite built entirely around "is the shape right" rather than "is the content right" can report full, green, passing coverage for a feature that has never once measured the thing it claims to measure — and nothing about a passing test run signals that gap to anyone looking at the results.

How Centriu Axiom made the impact estimate actually respond to the action being estimated

This gap surfaced from the same internal audit that rewrote Axiom's proof-of-action mechanism and closed its Trust Center, Skill Library, and Policy Copilot gaps (covered on this pillar's companion pages) — a feature not yet fully built presenting itself as complete. For the Outcome Simulator specifically, the prior code's own header comment was unusually candid about the defect it described without fixing: "the impact dimensions and scenarios below are HEURISTIC ESTIMATES... numeric scores are randomized within risk-weighted ranges... so the same input yields different scores on each run." The comment was accurate and the disclaimer it described was genuinely shown on screen — but neither fixed the underlying number, and the audit found that the score still flowed, unlabeled, into the simulation's own history, into an audit trail entry recording an `overall_score` as if it meant something, and into whatever a person told a client based on it.

The fix replaces the six-dimension, three-scenario random generator with a real request to the same AI proxy already used elsewhere in the product. The action's actual context — its type, description, declared risk level, whether it requires approval, its rationale, and its full payload — is assembled into a structured prompt asking the model to score the identical six dimensions and produce the identical three named scenarios (optimistic, base, pessimistic), explicitly instructed to justify every score against what is actually in the context rather than inventing anything not provided. The request is made with `temperature: 0`, specifically so the same action, submitted twice, produces the same reading — the exact property the prior random-based version could never offer, and the property a genuine measurement is expected to have.

The response is then validated field by field before anything is trusted: every one of the six required dimensions must be present by name with a numeric score between 0 and 100, or the function throws naming the specific missing dimension; every scenario must carry a valid probability between 0 and 1 and a valid impact score between 0 and 100, or the function throws naming exactly which value was invalid. None of this validation existed as meaningfully as it needed to before, because a random-number generator can't produce a malformed number — the entire category of "what if the response is wrong" barely applied to code that made up its own numbers rather than asking anything external for them. If the AI proxy itself fails to respond at all, the function throws immediately, with an explicit comment recording the reasoning directly: falling back to a randomly generated placeholder inside the catch block "would recreate the exact defect exactly where nobody is looking." No simulation record is created in any of these failure cases.

The accompanying test file makes the defect and its fix unusually explicit for anyone reviewing this feature's history: a new comment block states plainly that the ORIGINAL test suite "only checked that 6 dimensions existed with a number between 0 and 100 — which a random generator satisfies by construction," meaning the old tests were passing BECAUSE the values were fabricated within range, not despite it. The new tests specifically check the opposite of what the old ones checked: that the service genuinely refuses (and records nothing) when the AI doesn't respond, when its response isn't valid JSON, when a required dimension is missing, and when a score falls outside the valid range — plus two dedicated determinism tests confirming the exact same action produces the exact same overall score across two separate runs, and that a deliberately low-scored mock response and a deliberately high-scored one produce correspondingly low and high results, rather than results clustering near a fixed range regardless of input.

What is actually built today

A real request to the same AI proxy the rest of the product uses, given the action's actual type, risk level, approval requirement, rationale, and payload as context — replacing six independently randomized scores.

A fixed temperature of zero, so the exact same action produces the exact same six-dimension score and three-scenario reading every time it is estimated.

Field-by-field validation of every dimension and scenario in the AI's response, each with its own specific, named error rather than a generic parsing failure.

An explicit refusal — recording no simulation at all — when the AI proxy fails to respond, rather than falling back to a randomly generated placeholder score.

A test suite rewritten to specifically verify refusal on failure and determinism on success, rather than only checking that a returned number falls inside an expected range.

Confirmed still genuinely wired today: a real, active screen (`OutcomeSimulator.tsx`) calls this exact estimation path before presenting a score to anyone.

The same action, the same reading, twice (illustrative scenario, not a real client)

A high-risk campaign action is simulated for impact, producing an overall score. Before the fix, simulating that identical action again moments later could produce a meaningfully different score purely by chance, with no way to tell whether the difference meant anything. After the fix, simulating the same, unchanged action again produces the identical score — and a genuinely different action, such as one carrying a materially different risk level or payload, produces a genuinely different one.

What changes operationally

An impact estimate presented before an action executes now reflects an actual model reading of that action's real context, not a randomly drawn number inside a fixed band — and it carries that same integrity into the simulation history and audit trail, not only on the original screen where a disclaimer happened to be visible. A person relying on the score to decide whether to proceed, or repeating it to a client, is repeating a genuine estimate rather than a number invented to fill a UI element.

When this is not the right fit

This mechanism remains, honestly, an AI-generated heuristic estimate of a single action's likely impact before it runs — it is not a prediction trained on the organization's own historical outcome data, and the interface's "illustrative estimate" framing remains accurate and necessary even after this fix. A team specifically wanting a statistically trained forecast based on past campaign results will need a different mechanism; what changed here is that the estimate now genuinely responds to the action being evaluated, not that it became a historical-data-driven prediction.

A test that checks the shape vs. one that checks the substance

A test verifying only that a score exists and falls in a valid range will pass with total reliability for a feature that has never once performed a real evaluation, since a random-number generator inside that range can never fail it. Centriu Axiom's fix pairs the real estimation rewrite with tests built around the two properties a fabricated number can never honestly have — genuine refusal when there is nothing real to report, and genuine determinism when there is.

Related systems

Main system: Centriu Axiom.

What it does NOT do

  • Does not compute any of the six impact dimensions or three scenarios from a random-number function — every score comes from a real request to the AI proxy, evaluated against the action's actual context.
  • Does not return a fabricated or placeholder estimate when the AI proxy fails to respond — the function throws, and no simulation record is created for that attempt.
  • Does not accept a malformed AI response silently — a missing dimension, an out-of-range score, or an invalid probability each produce a specific, named validation error rather than a generic failure.
  • Does not let the same action produce different scores on repeated simulation — the request is made at a fixed temperature of zero specifically to guarantee this.
  • Does not rely on a screen-level disclaimer as the only signal that a number is an estimate — the underlying number itself now genuinely responds to the action's real content, rather than needing the caveat to compensate for arbitrariness.
  • Does not claim to be a statistically trained prediction from historical outcomes — it remains, honestly, an AI-generated heuristic estimate of a single action before it executes.

Security and governance

Impact estimation sends the action's own context to the same AI proxy already used elsewhere in the product, at a fixed temperature for reproducibility, and does not persist any estimate when the AI fails to respond or its answer fails validation. Any personal or business data referenced in an action's context remains subject to Brazil's LGPD (Law No. 13,709/2018). Full detail on access control lives at /governanca and /iso.

Pricing and contracting

Available by monthly subscription, with tiered plans. Values and terms come from the official pricing table at /precos (Centriu's central source — never restated here).

Frequently asked questions

Did the pre-execution impact score ever reflect the actual action being evaluated?

No — before the fix, all six dimension scores came from `Math.random()` inside fixed ranges adjusted only by a coarse risk multiplier, with no other relationship to the specific action.

Why did the old test suite pass if the scores were fabricated?

The tests only checked that six dimensions existed with a score between 0 and 100 — a check any random-number generator inside that same range satisfies automatically, regardless of whether a real evaluation occurred.

Does simulating the same action twice now give the same result?

Yes — the AI request is made at a fixed temperature of zero specifically so the identical action produces the identical reading, confirmed by a dedicated determinism test.

What happens if the AI proxy fails to respond during a simulation?

The function throws immediately and records no simulation at all, rather than falling back to a randomly generated placeholder score.

Is this estimate a real, data-trained prediction of what will happen?

No — it remains an AI-generated heuristic estimate of a single action's likely impact, clearly framed as illustrative, not a statistical prediction from historical outcomes.

What does Centriu Axiom cost?

It is sold by subscription with a published starting price — exact current values are on the central pricing page.

See how Centriu Axiom estimates an action's impact before it runs

Reach our commercial team directly, or leave your details below — we'll follow up with guidance for your case.

Sources

  1. Centriu Axiom — public product page — Centriu, 2026-07-20 · link(primária)
  2. Centriu Axiom — public factsheet (API, JSON) — Centriu, 2026-07-21 · link
  3. Law No. 13,709/2018 — Brazil’s General Data Protection Law (LGPD) — Presidência da República (Brazil), 2018-08-14 · link

Last material update on .

By · AI-assisted production, with human review