AI Governance Platform
Standalone AI governance register — domain-neutral, distinct from the HDMP Governance Agents pilot. Registers every AI model/agent in use (owner, lifecycle stage, autonomy tier), what feeds it (system prompts, RAG corpora, fine-tune sets, tool schemas), where it runs and whose data it touches, and who signed it off, then pulls lineage and data-quality signal from connected catalogues and draws the whole estate on a knowledge graph. Runs approval gates before a model can go live, an incident register with statutory-deadline tracking, service-level tracking against issue trackers, and periodic conformance sweeps — all on a 15-minute scheduled cycle separate from the web process, so a stalled scheduler is visible rather than silently skipped. Microsoft Entra ID single sign-on is live (authorization-code with PKCE, single tenant, real admission controls — domain allow-list, B2B-guest refusal, unverified-email refusal) alongside local password sign-in with mandatory TOTP two-step for admin actions. 4.0.0 added a read-only MLflow integration, regulatory control reports across six regimes (EU AI Act, GDPR, HIPAA, Saudi NDMO, India DPDPA, Japan APPI), change gates covering edits to a live model (not just going live), and a day/night appearance toggle. New in 4.1.0: post-market performance monitoring — a baseline is captured automatically the moment a model is promoted to production, later readings from evaluation jobs are compared against it (direction- and tolerance-aware, using the window's median so one bad afternoon isn't read as degradation), and a live model that's gone quiet on measurement is itself a finding, feeding EU AI Act Article 72; a new oversight-effectiveness detector asks whether the approvals behind every gate are real — flagging decisions made in seconds, approval concentrated in one person, or nothing ever refused, reported as a question rather than a verdict (Article 14); two new data-catalogue connectors, Snowflake Horizon (reading SQL directly over Snowflake's own privacy/semantic classification, masking-policy coverage, and engine-resolved dependencies) and Unity Catalog/DataHub, bringing the total to eight catalogue platforms; and a real bug fix — residency tags using underscores (e.g. data_residency) were being silently dropped by every existing connector's too-strict name match, now normalized. New in 4.2.0: a trusted browser can skip the two-step code for 30 days after actually presenting one once, offered only after a factor has been proven — trusted is explicitly not the same as verified, so deciding a gate or managing people still asks for a fresh code, raising the same session rather than signing anyone out mid-task; losing a device is now self-service via a recovery code (POST /api/auth/mfa/re-enroll, no administrator needed), which revokes every trusted browser and session at the same time since a lost phone and a lost laptop are often the same event; people can see and revoke their own trusted browsers; and a real bug fix widening a too-narrow session column that silently passed on SQLite but would have 500'd on Postgres the moment a browser was trusted. New in 4.4.0: which actions actually require a fresh code from a trusted browser is now a configurable policy rather than one fixed rule — a trusted browser now satisfies routine administration outright, while deciding a gate still always demands a fresh code as a regulator-facing record; the console now pops an inline "Confirm it’s you" dialog on a step-up refusal and resumes the original action instead of dead-ending on an error; and sessions now record which trusted browser authorised an identity change, closing an audit gap. New in 4.5.0: passkey (WebAuthn) sign-in alongside TOTP — the stronger factor, since a leaked database yields only public keys and a phishing page gets nothing back; what the authenticator actually verified is recorded rather than assumed, so an unverified passkey doesn’t quietly count as a second factor (configured via AIGOV_WEBAUTHN_RP_ID/AIGOV_WEBAUTHN_ORIGIN, off by default and not yet enabled on this deployment). Service-level policies can now be scoped to one named model, not just a business unit — the most-specific policy wins ("that vendor model gets 24 hours" beats a general rule), and GET /api/sla/for-model/{id} answers what a model owner is actually promised and why. A new enterprise policy register pairs governance documents (reference, version, owner, review date) with enforcement rules checked at registration, lifecycle transitions and gate decisions — rules come from a fixed, auditable catalogue (no arbitrary expressions), blocking rules have no override/waiver path by design, and an active policy is never edited in place, only superseded. And the console can now be asked about the audit trail in plain(ish) English ("who approved anything in the last 30 days") — parsed locally into one parameterised query, never a language model, with the plan/SQL always returned alongside the answer and every lookup itself logged. SCIM 2.0 provisioning and every sensitive field (prompts, secrets, MFA seeds, evidence) still encrypted at rest under its own master key. Seeded with demo data (sample models, agents, catalogues, and one deliberately-blocked model) so the console isn't empty on first look. New in 4.6.0: two-step verification can now be switched on or off for the whole estate, not just per account — switching it off requires a stated reason and writes a loud audit entry naming who and how many accounts relied on it, switching it on requires none, and two environment-level locks (AIGOV_MFA_LOCKED/AIGOV_MFA_REQUIRED) can take the decision out of an administrator's hands entirely, including a deliberate way back in for an estate that has locked itself out. A new account gets a 7-day settling-in window before the requirement bites, granted at its first sign-in rather than at creation so it reaches every account regardless of how it arrived; the window excuses not having enrolled yet, never excuses an already-enrolled account skipping its factor. A real bug fix closed a gap where an MFA-exempted account (such as a break-glass login) could still be blocked from deciding a gate — the one moment the exemption mattered most. New in 4.8.0: email codes as a deliberately weak third second-factor — offered only when SMTP is configured, it satisfies sign-in but is refused outright for deciding a gate, managing people, or trusting a browser, since for most people the mailbox is also where a password reset lands. A ninth catalogue connector for Ab Initio Metadata Hub (no public REST surface exists, so every path/field name is configuration with a documented default), alongside a new connector-conformance test suite that parametrises over the whole connector registry and caught real parsing bugs — bare-list response bodies, null result keys, non-JSON 200 responses — in every connector that already existed. Assets can now be registered by hand (POST /api/assets) for the gap between a system existing and a catalogue reaching it, with a later harvest adding what it knows rather than overwriting what a person asserted. A new regional-regime workflow proposes which law (EU AI Act, GDPR, NDMO, …) an asset falls under from its residency, but only as a proposal a governance lead must confirm or dismiss — and a decision already made is flagged stale rather than silently rewritten if the data moves. Service levels can now track an asset's own freshness (a rolling clock from its last catalogue sighting, not from when the policy was written). The dashboard's posture counts moved out of a page-wide header into a clickable Dashboard → Overview screen, and the sidebar is now grouped into four sections instead of a flat list.