A governed-delegation analytics toolkit for delegated AI pipelines, centered on the Minimum Sufficient Oversight Principle (MSO).
Companion package to "Minimal Oversight: Uncertainty-Aware Governance for Delegated AI Systems" (Azevedo, 2026).
Documentation | Interactive widgets | Notebooks | Changelog
Current release tag: v0.1.3 / PyPI package: minimal-oversight==0.1.3
- Live cockpit → crbazevedo.github.io/delegation-lab/app/widgets/cockpit.html. Click ⤓ Import your pipeline and paste your traces, a LangGraph graph, or plain nodes — the cockpit renders your graph and reads masking, bottlenecks, and risk off it live.
- Colab quickstart (button above) → governance for your pipeline in 5 minutes
from a trace log. The same trace JSON drives both, so the browser numbers
match
analyze_pipeline()in Python.
The only data you need to log, per task and per node: outcome (correct before
review?) and corrected (correct after review?). That two-column contract is
enough to estimate σ_raw, the masking index, and a prioritized fix list.
Delegated AI systems route uncertain work through pipelines: one model proposes, another reviews, a tool checks, and a gate decides what ships. The design problem is no longer just accuracy; it is trust calibration under uncertainty: how much autonomy to grant, where to place oversight, what quality ceiling the system can sustain, and when intervention becomes necessary.
This package turns those questions into computable quantities:
| Question | What you get |
|---|---|
| Can this pipeline meet my quality target? | Feasibility check: |
| Where should I place review effort? | Water-filling allocation via the Minimum Sufficient Oversight Principle |
| Which nodes are most dangerous? | Delegation centrality, masking index, SOTA score |
| How much autonomy can I safely grant? | Effective autonomy buffer |
| When should humans intervene? | Autonomy time |
| What should stop being delegated? | Scope recommendations with coverage constraints |
In practical terms, MSO treats oversight as a constrained allocation problem: meet a target quality level with the least sufficient review effort, then place that effort where the model and pipeline state make review most informative.
A dependency-free, embeddable widget suite under web/ computes the
paper's quantities live in the browser — the same equations as this package.
Build or load a delegated workflow in the governance cockpit (connector
library, editable graph, merge gates, review loops, didactic lessons) — or
import your own pipeline from traces or LangGraph — and read feasibility,
masking, motifs, and risk off it; press Run to animate task tokens through
the graph. Focused explainers cover the masking pathology
(M*=1.83), water-filling allocation, the Return Operator run on time, a
stochastic-Petri-net token simulation, and a water-filling-vs-baseline
benchmark.
cd web && python -m http.server 8000 # then open http://localhost:8000Grounding is mechanically enforced: web/mso-core.js is a faithful port of
minimal_oversight._formulae pinned to the package to within 1e-6
(tests/test_parity.py), and the token simulator's empirical end-to-end success
is asserted to match the analytic C_op (tests/test_sim_grounding.py). See the
Interactive Companion guide.
pip install minimal-oversightFor a reproducible install of the current release:
pip install minimal-oversight==0.1.3With framework connectors and visualization:
pip install minimal-oversight[frameworks,viz]from minimal_oversight import analyze_pipeline
from minimal_oversight.models import Node, PipelineGraph, AggregationType
gen = Node("generator", sigma_skill=0.55, catch_rate=0.65)
rev = Node("reviewer", sigma_skill=0.60, catch_rate=0.70)
merge = Node("merge", sigma_skill=0.55, aggregation=AggregationType.PRODUCT)
pipeline = PipelineGraph([gen, rev, merge])
pipeline.add_edge("generator", "reviewer")
pipeline.add_edge("reviewer", "merge")
report = analyze_pipeline(pipeline, p_min=0.80)
print(report)from langgraph.graph import StateGraph, END
graph = StateGraph(MyState)
graph.add_node("researcher", research_fn)
graph.add_node("writer", write_fn)
graph.add_edge("researcher", "writer")
graph.add_edge("writer", END)
graph.set_entry_point("researcher")
report = analyze_pipeline(graph.compile(), p_min=0.80)from google.adk import Agent
root = Agent(name="support", model="gemini-2.0-flash", sub_agents=[
Agent(name="billing", model="gemini-2.0-flash"),
Agent(name="tech", model="gemini-2.0-flash"),
])
report = analyze_pipeline(root, p_min=0.80)from minimal_oversight.connectors.traces import from_generic_events, to_workflow_traces
events = [
{"task_id": "t1", "node_id": "gen", "outcome": 1, "corrected": 1, "timestamp": 0},
{"task_id": "t1", "node_id": "rev", "outcome": 0, "corrected": 1, "timestamp": 1},
]
traces = to_workflow_traces(from_generic_events(events, corrected_field="corrected"))
report = analyze_pipeline(pipeline, p_min=0.80, traces=traces) analyze_pipeline() Practitioner interface
┌──────────────────────────────┐
│ estimation capacity │
│ topology allocation │ Decision modules
│ intervention viz │
├──────────────────────────────┤
│ _formulae.py │ Paper equations (private)
├──────────────────────────────┤
│ schema connectors/ │
│ langgraph adk traces │ Framework integration
└──────────────────────────────┘
| Module | Purpose |
|---|---|
models |
Node, PipelineGraph, GovernancePolicy, WorkflowTrace |
estimation |
Infer |
capacity |
|
topology |
Motif detection, delegation centrality, conditional fragility |
allocation |
MSO solver, scope selection, governance recommendations |
intervention |
|
viz |
Masking dashboard, autonomy buffer, risk ranking, scope frontier |
connectors |
LangGraph, Google ADK, LangSmith, generic trace parsers |
| # | Topic | Shows |
|---|---|---|
| 01 | SDLC pipeline | Fan-out/merge, SOTA placement, masking |
| 02 | Customer support | Chain depth, drift, diagnostic differential |
| 03 | Topology stress test | All 4 motifs compared |
| 04 | LangGraph import | Real StateGraph + conditional edges |
| 05 | ADK import | Real Agent objects + session logs |
| 06 | Paper validation | All 8 experiments from Section 3 |
- Not an agent framework — it analyzes pipelines, not builds them
- Not a workflow orchestrator — it sits above LangGraph / ADK / CrewAI
- Not just the paper's reproduction code — that's one notebook
It is a governed-delegation analytics and decision-support library, backed by uncertainty-aware and information-theoretic foundations but presented through practitioner questions and one-call analysis.
@article{azevedo2026minimal,
title={Minimal Oversight: Uncertainty-Aware Governance for Delegated AI Systems},
author={Azevedo, Carlos R. B.},
year={2026}
}