Skip to content

Governance as code (closes gap 10)

§15NormativeDraft 2.3Latest draft

Policies run at every state transition of every artifact kind, review depth is set by the money at stake and how hard the decision is to reverse, and the framework cites SR 26-2 and the NIST AI RMF as its external anchors.

State machine. One pure function governs every artifact kind. Its states are draft, checks_running, checks_passed, checks_failed, awaiting_approval, validated, rejected and deprecated. The allowed transitions are: draft to checks_running; checks_running to checks_passed or checks_failed; checks_passed to awaiting_approval; awaiting_approval to validated or rejected; validated to deprecated; and checks_failed or rejected back to draft, which starts a new version. Any other transition MUST be refused with INVALID_TRANSITION. Transitions into validated or rejected need an approval. Every transition is audited and emitted as an event. Reviewers cannot approve their own submissions; the submitter, the artifact’s owner and its listed authors all count as self (G-INT-02, SELF_APPROVAL_FORBIDDEN). No API token can approve (Newton’s included), and a rejection needs a comment. An approver who signs while review requirements of the materiality tier are open MUST give an override reason, recorded as an override; without one, the approval is refused with REVIEW_REQUIREMENTS_OPEN, a validation error and not a gate. The design follows modeling-api’s workflow, which is acknowledged here; this section is the normative definition.

  1. Draft Work in progress.
  2. Checks running The policies run. Every move between states is audited and sent out as an event.
  3. Checks passed Ready to ask for approval.
    or Checks failed
  4. Awaiting approval Waits for a named person to sign.
  5. Validated Approved by a named person. Agent read tools see only validated artifacts.
    or Rejected Needs a comment.
  6. Deprecated Retired from use.

One state machine for every kind of artifact. A model, a test result, a scenario and a decision all follow the same path, so a reader can always tell how far a number has come.

Three rules decide who can move it on:

  • Reviewers cannot approve their own submissions.
  • No API token can approve, Newton's included.
  • A rejection needs a comment.

Approvals are signed by the named approver, never the submitter or a token G-INT-02. Breaking that rule is a hard stop.

Figure 15.1 One life cycle for every artifact, and who can move it. Every model, test, scenario or decision passes through the same states. Pick who is acting to see which moves they can make and which are blocked; an API token, Newton included, can start the trip but never approve.

Policies. modeling-api’s shape: a tenant floor projects can only tighten; outcomes hard stop, fall back, route, warn and info (defined below); a version recorded with every validation. UMP adds applies_to.kinds and route_to. Policies are written in a declarative form compiled to Open Policy Agent Rego, and the Rego files with their unit tests ship in the conformance suite.

Materiality tiers. Marketing has no supervisor, so tiers must be self-defined and defensible. Each decision record and the models behind it get a tier from three inputs (G-MAT-01): spend at stake, weeks to reverse, and the expected value of perfect information on the decision, computed as in section 11. Where EVOI is a range, the upper end is used, so missing dependence buys more review, not less. The cost of a full review is an account parameter (proposed, set per account).

TierAssigned when (defaults proposed, set per account)Review
LightSpend at stake below the standard threshold and reversible within a monthOwner checks against last version; reviewer reads the decision-log diff
StandardSpend at stake at or above the standard threshold, or feeds a client recommendationReviewer signs off plan before fit and outputs before release
FullSpend at stake at or above the full threshold, irreversible within a quarter, a public claim, or EVOI on the decision above ten times the cost of a full reviewStandard plus an independent rerun from raw data

The tier is a deterministic function, evaluated in order. It is Full if any Full trigger holds. Otherwise it is Standard if spend at stake is at or above the standard threshold, the decision feeds a client recommendation, or reversal takes more than 4 weeks (proposed). Otherwise it is Light. “Irreversible within a quarter” means more than 13 weeks to reverse (proposed). Weeks to reverse are recorded on the decision record.

  1. Light When: spend at stake below the standard threshold and reversible within a month. Review: the owner checks against the last version; a reviewer reads the decision-log diff.
  2. Standard When: spend at stake at or above the standard threshold, or it feeds a client recommendation. Review: a reviewer signs off the plan before the fit and the outputs before release.
  3. Full When: spend at stake at or above the full threshold, irreversible within a quarter, a public claim, or EVOI on the decision above ten times the cost of a full review. Review: Standard, plus an independent rerun from raw data.

The tier comes from three inputs G-MAT-01: spend at stake, weeks to reverse, and the expected value of perfect information (EVOI) on the decision. Each decision record and the models behind it get one.

Deeper review is bought where the expected loss from a wrong call is larger than its cost. Threshold defaults are proposed and set per account.

Figure 15.2 Review depth follows the money at stake. Answer four plain questions about a decision to see which review tier it gets and what review that tier needs. Thresholds are set per account and their defaults are proposed, so they appear by name, not as amounts.

The EVOI clause makes the rule defensible: deeper review is bought where the expected loss from a wrong call is larger than its cost.

Regulatory anchoring. On 17 April 2026 the Federal Reserve, OCC and FDIC issued SR 26-2, which supersedes SR 11-7 and SR 21-8. UMP borrows its principles (effective challenge, conceptual soundness, ongoing monitoring, outcomes analysis, equal treatment of vendor models) without being subject to it. Newton is governed under the NIST AI RMF 1.0 and the Generative AI Profile (NIST AI 600-1). Most mix-model work is unlikely to be high-risk under the EU AI Act, but transparency and deployer duties may apply; legal review is open.

Note (informative, pending legal review, section 24): the scope of SR 26-2 for generative and agentic AI has not been confirmed against the primary text.

NIST crosswalk (informative). Each agent control maps to an AI RMF function and to the AI 600-1 risk it addresses.

ControlAI RMF functionAI 600-1 risk
G-NEW-01 agent cites an artifact for every numberMeasureConfabulation; information integrity
G-NEW-02 sessions that read untrusted text hold no write or run toolsManageInformation security
G-NEW-03 agent version passes the harness before releaseGovernConfabulation
G-CAP-05 agents run capabilities only where status allowsManageInformation security
Agent evaluation harness (section 17)MeasureConfabulation; information integrity
Injection red team (section 17)MeasureInformation security

Subcategory identifiers are added after verification against NIST AI 100-1.

Outcomes analysis, monitored. Realised versus predicted lift for every new admissible test; realised versus expected uplift at each decision review; vendor table agreement (section 14). These are standing metrics on the governance dashboard.

How a gate fails: fall back first. A gate that stops work does not make the decision go away. The planner still has to set a budget on Thursday, so a blocked step usually ends in a spreadsheet with no label at all, which is the failure UMP exists to prevent. Gates therefore default to the best answer the available evidence supports, and say exactly what was assumed.

  1. Hard stopThe step does not run. Only eight gates: privacy, record integrity and approver identity, agent tool separation.
  2. Exclude and continueEvidence known to be wrong is left out; the step carries on with what remains.
  3. Fall backRuns on the next-best evidence or a registered default, with a fallbacks entry and a wider interval. Most gates.
  4. RouteRuns now as provisional; a named reviewer confirms, revises or reverts.
  5. WarnRuns with a visible note attached.

Gates degrade before they block. A blocked step does not make the decision go away: the plan still has to be set on Thursday. So a failed gate gives the best answer the evidence supports and says what it assumed.

A request can set on_gate_fail: "strict" for named gates, which turns their fallback into a stop with a typed error.

Figure 15.3 What happens when a gate fails. Five outcomes, strongest first. Pick a situation to see which one applies, then turn on strict mode to see a fallback become a stop.
OutcomeWhat happensUsed for
Hard stopThe step does not run.Eight gates where going ahead is unsafe, not merely less certain: privacy (G-PRIV-01 to 03), record integrity and approver identity (G-INT-01 to 04), and agent tool separation (G-NEW-02)
Exclude and continueEvidence known to be wrong is left out, and the step carries on with what remains, one rung down the fallback ladder.A capability that failed the acceptance bar, a contaminated test, a platform A/B test offered as incrementality evidence
Fall backThe step runs on the next-best evidence or a registered default assumption. The result carries a fallbacks entry and, wherever the effect can be quantified, a wider interval.Most gates
RouteThe step runs now and its output is usable as provisional; a named reviewer confirms, revises or reverts it.Judgment calls: conflicts, post-hoc choices, unreviewed plans
WarnThe step runs; a visible note is attached.Design and context issues

Hard stops fail closed. Each hard-stop gate binds to a fixed set of operations: G-INT-01 to every write of a sealed record; G-INT-02 to every transition into validated or rejected; G-INT-03 to every export and every agent answer that cites a sealed record; G-INT-04 to every leaf append; G-PRIV-01 to 03 to every aggregate or score leaving the query layer; and G-NEW-02 to every agent tool call. For a bound operation, an input the gate needs that is missing, malformed or unverifiable MUST evaluate as a failure, never as not applicable. Not applicable is allowed only for operations outside the binding. An export carrying G-REP-01’s untraced marker MUST NOT claim a sealed citation or validated status. Hard stops MUST NOT be lifted by strict-mode settings, policy floors, overrides or reviewer action; a request to override one is refused with HARD_STOP_NOT_OVERRIDABLE (section 19).

The distinction between falling back and excluding matters. Weaker evidence about the right question is still evidence, so it is used with a wider range. A model that ranked drivers no better than chance, like MTM, is not weak evidence; it is noise with a confident label, so it is excluded and the step falls back to the next source.

Every fallback leaves a trace. Each result lists its fallbacks (gate, what was assumed, the effect on the interval). Decision records show them to the approver, who acknowledges each one for decisions at the Standard and Full materiality tiers; acknowledgement is required, but it never blocks. Briefs and agent answers name them in plain words, for example “assumes the vendor table measures return against zero spend”.

Widening, not just labelling. Where an assumption can be bounded, the interval covers the bound: the envelope across plausible values of an assumed estimand field, the span between independent and perfectly correlated channels for an assumed dependence, the tool’s measured error rate for unchecked extraction. A label alone tells the reader to worry; a wider range tells them how much. The widening operator is defined in section 5 (Envelope).

Strict mode. Rigor is sometimes the point, for a public claim or a client contract that demands it. A request or an account policy may set on_gate_fail: "strict" for named gates, which turns their fallback into a stop with the usual typed error. The default is "fallback". on_gate_fail is either the string "fallback" or "strict", applying to all gates, or an object mapping gate IDs to either value, with "*" as the default key. Strict affects only gates whose outcome is Fall back. Exclude and continue, Route, Warn and Computed outcomes are unchanged. A gate whose registry entry has strict_override: false keeps its fallback even in strict mode. The effective mode is the stricter of the request and the account policy: a request MUST NOT relax a gate the account sets to strict. Section 19 defines the carriers.

Keeping fallbacks from becoming the norm. The share of decisions resting on each fallback is a governance health metric. A channel that keeps needing the same fallback gains test priority automatically, because the assumption it rests on carries value of information that a test or a better vendor export would buy.

Gate catalogue (spec 2.3.0-draft). Eight hard stops; everything else falls back, routes or warns. This catalogue and the benchmark gates in 25.4 together form the gate registry (section 21). Every gate ID in this specification resolves to exactly one row; a gate engine MUST refuse to load a policy whose gate ID resolves to none. The Code column names the note or error code each gate raises.

IDRuleIf it failsWhat happens insteadCode
G-DATA-01Raw delivery registered with fingerprint, source, rangeFall backThe file is registered as received with source marked unregistered; audit level 2DATA_UNREGISTERED
G-DATA-02Extracted totals tie to printed totalsFall backExtracted values used; the gap is shown (“totals off by 1.8%”) and, above tolerance, added to the intervalTOTALS_GAP
G-DATA-03OCR, AI and hand values above materiality double-keyedFall backSingle-checked values used, labelled unchecked, interval widened by the tool’s measured error rateUNCHECKED_EXTRACTION
G-DATA-04Restated history or new or missing channels vs last deliveryWarnLatest delivery used; the diff is attachedDATA_RESTATED
G-MOD-01Model plan reviewed before first fit (Standard and Full materiality tiers)RouteFit runs; outputs labelled plan not reviewed until the reviewer signsPLAN_NOT_REVIEWED
G-MOD-02Post-hoc decisions carry a reason; headline movers go to a reviewerRouteChange applies provisionally; reviewer confirms or revertsPOST_HOC_PROVISIONAL
G-MOD-03No leakage risk in the specFall backFit runs; holdout metrics marked unreliable and not counted as acceptance evidenceLEAKAGE_RISK
G-ACC-01Family acceptance bar passed on a pre-registered batteryFall back or excludeNot yet run: outputs usable, labelled unvalidated method, trust reduced. Failed: excluded; the step uses the next-best capability or library benchmarksUNVALIDATED_METHOD, ACCEPTANCE_UNSUBSTANTIATED
G-EST-01All seven estimand fields presentFall backMissing fields take the registered default for that source type, marked assumed; interval widened to the envelope across plausible valuesESTIMAND_UNDECLARED
G-EST-02Combined quantities share estimand and scopeFall backIn order: a registered converter; re-asking the model the other number’s question; combination under an assumed alignment with envelope widening; showing both side by side. Never combined silentlyESTIMAND_ALIGNED
G-UNC-01Uncertainty present; summaries and aggregations allowed by the representationFall backMissing uncertainty imputed from the test library’s spread for that channel family, or a default by tier; summed quantiles reported as bounds; with no registered default, the result is shown without portfolio mathsUNCERTAINTY_IMPUTED
G-DEP-01Portfolio operations on joint dependenceFall backIndependence assumed; the interval is set to the envelope between independent and perfectly correlated channels, labelled envelope_kind: bound for sums, means, CVaR and monotone functions of sums, and envelope_kind: range for quantile-type, non-monotone outputs and EVOI (section 7)DEPENDENCE_ASSUMED
G-EXP-01Primary metric, method and decision rule locked before launchFall backResult kept, labelled not pre-registered, given a power-prior discount in calibrationNOT_PREREGISTERED
G-EXP-02Assurance at least 80%; t-quantile MDE; placebo calibrationWarnTest may launch; the plan shows its chance of an inconclusive result for the approver to acknowledgeLOW_ASSURANCE
G-EXP-03Spillover design recorded; buffer shift testedWarnNote attached; contamination flag if the buffer shiftsSPILLOVER_UNRECORDED
G-EXP-04Duration clears the carryover floorFall backLift adjusted for uncaptured carryover through the adstock kernel per draw, labelledCARRYOVER_ADJUSTED
G-EXP-05Only classes A to C calibrate sales-return incrementality; class E calibrates the brand family onlyExclude and continueClass D stays out of calibration (it measures a different thing); the step uses remaining tests or benchmarksEVIDENCE_EXCLUDED
G-CAL-01Conflict check with multiplicity controlRouteCalibration runs provisionally under a robust mixture prior so one surprising test cannot over-steer; review confirms or revertsCALIBRATION_CONFLICT
G-CAL-02Excision window including adstock tail recordedFall backDefault excision applied automatically and labelledDEFAULT_EXCISION
G-CAL-03Granularity mapping recordedFall backDefault split rule applied and labelled; routed if it moves a headline numberDEFAULT_SPLIT
G-CAL-04Tier and measurement mapping allow the requested route (section 10 check 2a)Fall backAttach only: the model is unchanged and the result shown beside itATTACH_ONLY
G-CAL-05PSIS k̂ and ESS pass for reweightingFall backSummary-level precision-weighted update (section 10) moment-matched onto the draws, labelled approximate; a refit is queuedPSIS_UNRELIABLE
G-VEN-01Vendor table validated by outcomes analysisFall backUsable at every materiality tier with trust unvalidated; band imputed from the library if none supplied; the approver of a decision at the Full materiality tier acknowledgesVENDOR_UNVALIDATED
G-MAT-01Materiality tier from spend, reversibility and EVOIComputedMATERIALITY_COMPUTED
G-SCN-01Scenario calls a validated endpoint revisionFall backScores on the last validated revision; on request, on the newer revision with a labelNOT_VALIDATED
G-SCN-02Fallback steps 4 and 5 carry a visible warningWarnLADDER_SUMMARY_OR_BENCHMARK
G-SCN-03Spend outside the seen range or grid marked as extrapolationWarnInterval doubled (proposed) beyond seen spendOUTSIDE_GRID
G-SCN-04Deltas use common random numbers and the thinning indexFall backIndependent draws; delta interval wider, labelledINDEPENDENT_DRAWS
G-REP-01Every exported number resolves to an artifact IDFall backExported with an untraced marker and logged as a manual noteUNTRACED
G-NEW-01Agent cites an artifact for every numberFall backCites, or gives a best guess labelled as such with its basis; an uncited number is never presented as citedUNCITED_BEST_GUESS
G-NEW-02Sessions that read untrusted text hold no write or run toolsHard stopTOOL_SEPARATION
G-NEW-03Agent version passes the harness before releaseFall backThe last passing version stays live; with none, questions go to analystsAGENT_VERSION_HELD
G-PRIV-01Audience outputs below minimum segment size suppressedHard stopPRIVACY_FLOOR
G-PRIV-02Member-level scores never leave the clean room or hashed ID spaceHard stopPRIVACY_FLOOR
G-PRIV-03Query budget and overlap checks stop differencingHard stopPRIVACY_FLOOR
G-CAP-01Capability status allows the useRoute or excludeSandbox output reaches a client only with an experimental label and a named approver; withdrawn output is excludedEXPERIMENTAL_LABEL
G-CAP-02Pilot outputs carry the pilot label and the pilot account’s approver (section 16)RouteOutput usable as provisional; the pilot account’s approver confirmsPILOT_LABEL
G-CAP-03Every new version reruns its known-truth and null fixtures in CI (section 16)Fall backThe previous version stays liveFIXTURES_NOT_RERUN
G-CAP-04A registry entry matching an existing question carries a written fork reason (section 16)RouteEntry registered provisionally; a reviewer confirms the reasonFORK_NEEDS_REASON
G-CAP-05Agents run capabilities only where status allows (section 16)Fall backThe agent recommends the run and an analyst runs itAGENT_RUN_NOT_ALLOWED
G-INT-01Sealed records written only as Merkle log leavesHard stopINTEGRITY_FAILURE
G-INT-02Approvals signed by the named approver, never the submitter or a tokenHard stopAPPROVER_INVALID, SELF_APPROVAL_FORBIDDEN
G-INT-03Exports cite records with valid inclusion proofsHard stopINTEGRITY_FAILURE
G-INT-04Personal data never written into log leavesHard stopINTEGRITY_FAILURE
G-AUD-01Audit level is the lowest of all inputsComputedAUDIT_LEVEL_COMPUTED

Roles. Model owner, reviewer (never the builder), data owner, approver, framework owner, measurement lead (sole approver of calibrations), experimentation analyst, agent host steward, key custodian (new, section 18).

Governance health. Review cycle time, bypass rate (numbers in client work with no artifact ID) and override frequency are tracked for one quarter on the pilot before scaling. If certification is slower than the side road, analysts will take the side road, which is how MTM reached clients.