A verifiability workbench for UAE and Abu Dhabi AI transformation targets. A student prototype and a proposal seed, not a deployment and not an official tool.
Mutabaa (متابعة) is Arabic for "follow up" or "monitoring".
Public AI transformation targets in the UAE set percentages and deadlines that leaders will be assessed on. Several key terms ("agentic", "service", "50%") have no published operational definition, and public progress claims are not graded by the quality of their evidence. From outside the owning entity, many targets cannot yet be checked.
- Ledger. Public commitments with a six check verifiability score (a number, a unit, a dated deadline, an owner, a way to measure, no undefined terms) and the questions to put to the owning entity.
- Status with a neutral default. Written rules applied to graded public evidence. "No public evidence" never means "not done", and media only evidence never moves a status.
- Definition Lab and Portfolio. Recompute a headline "% agentic" under every definition on a labelled synthetic registry or on your own file, and see how much entity rankings move.
- My commitments. Load an office's own commitments (CSV or JSON). Each is scored with the same checks and gets questions in English and Arabic. The file stays in the browser.
- Wording check and Definition Card. Paste one commitment sentence and see which of the six checks it fails and what to ask (
#/lint, ormutabaa lint); fill in a Definition Card to state a unit, scope, threshold and guardrails and recompute the synthetic headline (#/card, ormutabaa definition validate). Both run in the browser and use fixed, public rules. - Weekly source check and print. A scheduled workflow compares the live source pages with what was recorded and opens one issue only when a page changed or disappeared (
docs/MONITORING.md). Any ledger view prints as a one page summary. - Arabic is unreviewed. The Arabic text was written by the author and has not been checked by a native speaker. A glossary (
data/glossary/glossary.json) and a review kit (docs/review_kits/arabic_review.md) are provided so that a reviewer can do this. - Assurance and evaluation. Exploratory analyses on the Assurance page, and preregistered experiments in
docs/EVALUATION.md: 31 of 39 predictions hit (six experiments on the real ledger, three on synthetic or simulated data), 8 missed, and the misses are reported.
The real ledger holds 96 commitments from 62 public sources (56 official, 6 secondary media), 10 evidence items and 5 media claims held apart from status. 54 sources were verified against the live page; 7 could not be reached and are reported as unreachable.
- Not a measurement of any real entity. The registry used by the Definition Lab and the Portfolio is synthetic and labelled on every screen.
- Not an assessment of government performance. A status describes public evidence, not delivery.
- Not endorsed by, produced with, or affiliated with any entity. In prose, real entities are named only in
docs/CONTEXT.md; the data files quote their sources as published. - Not an official standard. The maturity ladder and the checks are proposals.
In the browser, open My commitments and choose a CSV or JSON file. Nothing is uploaded. From a terminal:
mutabaa template > commitments.csv
mutabaa questions commitments.csv --lang both
mutabaa score commitments.csv --strict --min-ratio 0.5 # exit code 1 when a gate is not metSee the user guide and the command line reference.
Needs Python 3.12 or newer and Node 22 or newer. From a fresh clone:
python -m pip install -e ".[dev]"
python -m pipeline validate && python -m pytest --cov=pipeline
cd site && npm ci && npm test && npm run buildThen npm run dev inside site/ serves the app locally. make reproduce runs the full check, including a rerun of the preregistered evaluation and the browser tests.
flowchart LR
SRC[Public sources] --> NOTES[(Extraction notes, hashed)]
NOTES --> DATA[(Ledger: commitments, evidence, claims)]
DATA --> VAL[validate]
VAL --> ENG[score and status engines]
GEN[Seeded synthetic generators] --> REG[(Labelled synthetic registry)]
REG --> SWEEP[definition sweep]
ENG --> BUILD[build: one payload]
SWEEP --> BUILD
EVAL[preregistered evaluation] --> FACTS[(results and facts)]
FACTS --> DOCS[documents, checked by tests]
BUILD --> APP[Static web app, English and Arabic]
USER[Your file, in the browser only] --> APP
Python is the reference implementation. The browser mirrors only the sweep, the portfolio ranking, the score and the questions, and golden files in data/golden/ keep each of them identical to Python. See docs/ARCHITECTURE.md.
| Data | Type | Notes |
|---|---|---|
| Commitments, evidence, claims | Real, public | Official sources first; secondary media graded lower and flagged |
| Service and operation registry | Synthetic | Generic archetypes, never real entity names; every record is_synthetic: true; badged in the UI |
| Uploaded files | Your data | Processed in the browser only; never sent anywhere |
Real and synthetic numbers are never combined into one figure. See docs/DATA_STATEMENT.md.
| Component | Status | Tag |
|---|---|---|
| Plan, schemas, tooling, CI | done | v0.0.1-plan, v0.1.0 |
| Real ledger, evidence, claims and validation | done | v0.2.0 |
| Scoring and status engines | done | v0.3.0 |
| Synthetic registry and sensitivity engine | done | v0.4.0 |
| Web workbench in English and Arabic | done, Arabic not yet reviewed by a native speaker | v0.5.0 to v0.7.0 |
| Blind second extraction | done | v1.0.0 |
| Live verifier, search log, offline build, security and browser tests | done | v1.1.0, v1.2.0 |
| Robustness, calibration, agreement, Assurance page | done, labelled exploratory | v1.3.0 |
| Portfolio view, pilot plan, risks, sources policy, corrections, compliance mapping | done | v1.4.0 |
| Voice and identity rules, facts checked against documents, layer and schema contracts, coverage gate, decision records, preregistered evaluation, My commitments | done | v1.5.0 |
| Command line, preregistered baselines E5 and E6, type and lint gates, size and speed guards, user guide | done | v1.6.0 |
| Extended ledger of 96 commitments, preregistered E7, environment records | done | v1.7.0 |
| Validity study E8, wording linter with preregistered E9, weekly drift workflow, Definition Card | done; E8 is reported as fragile | v1.8.0 |
| Glossary and Arabic review kit, 320 pixel and print checks, security and CI updates, adversarial review | done | v1.9.0 |
| Human review of extraction notes and Arabic; a person labelled gold set; legal reading of the sources policy; a real pilot | open |
docs/USER_GUIDE.md, docs/CLI.md and docs/PERFORMANCE.md for use. For the method, docs/LIMITATIONS.md first. Then docs/METHODOLOGY.md, docs/EVALUATION.md, PREREGISTRATION.md, docs/ARCHITECTURE.md, docs/adr/, docs/DATA_STATEMENT.md, docs/CONTEXT.md, docs/SECURITY.md, docs/MONITORING.md, docs/review_kits/arabic_review.md, docs/DECISIONS_OVERNIGHT.md, docs/OVERNIGHT_REPORT.md, docs/PILOT.md and docs/DECISIONS.md.
mutabaa --help lists them all; docs/CLI.md describes each. The repository commands are
validate, build, analyse, evaluate, facts, sync-docs, schema, golden, verify-live, diff, monitor and e8-freeze; the user commands include score, questions, template, lint and definition validate.
cd site && npm run build:offline writes one HTML file that opens from a USB stick.
- Neutral by default. Every commitment starts at "no public evidence".
- Grounded. Every real field links to a source; anchors and hashes are checked by machine.
- Deterministic. No model judgement at runtime; every random step takes a seed.
- Honest about limits. Synthetic data is labelled; the rubric is labelled a proposal; analyses run after the design are labelled exploratory.
Code: MIT. Dataset (data/real, data/synthetic): CC BY 4.0. Source material remains the property of its publishers; this repository stores URLs, retrieval dates and short anchors, not republished text.
Huda Mueen. An independent student project on UAE government AI transformation targets.

