Governor risk-sized autonomy for GitLab Duo agents

Every change an agent makes gets autonomy sized to its risk: low-risk changes ship on their own, risky ones get fewer privileges and more verification.

T0 docs T1 low T2 elevated T3 high (restricted agent, dark launch) T4 refused

Hash chain verified: 230 entries
52runs
12live
1rolled back
3refused or stopped
2human actions

Runs, newest first

GitLab DevSecOps stages, lit when the run touched them (hover a chip for its artifacts):PlPlanCrCreateVeVerifyPkPackageSeSecureReReleaseCoConfigureMoMonitorGoGovern
RunSubjectTier OutcomeStartedDurationDevSecOps stages
e02a0949docs(readme): cover image, gallery images, and a note on links only project members can open-no app change13 Oct 07:21:360 s
PlCrVePkSeReCoMoGo
c04576bfdocs(readme): clearer architecture diagram (inputs to the scorer, ledger feeds the page, dashed fix flow)-no app change12 Oct 21:58:180 s
PlCrVePkSeReCoMoGo
6b8fa539fix(page): long outcomes wrap so the stage chips stay inside the runs table-no app change12 Oct 21:53:020 s
PlCrVePkSeReCoMoGo
cb778e1fdocs: demo video script, shot list and sources for every number-no app change12 Oct 21:46:500 s
PlCrVePkSeReCoMoGo
b1630dc6docs(claude): submission requirements-no app change12 Oct 21:31:510 s
PlCrVePkSeReCoMoGo
#12Add GET /items/count endpointT1live, issue closed12 Oct 20:57:4817 min 19 s
PlCrVePkSeReCoMoGo
a3693483feat(page): owner notes shown apart from ledger data; actual promote/rollback label; unknown signals explained-no app change12 Oct 20:41:100 s
PlCrVePkSeReCoMoGo
c5d73809docs: name the project Governor, risk-sized autonomy for GitLab Duo agents-no app change12 Oct 20:28:260 s
PlCrVePkSeReCoMoGo
f12cc891docs: SBOM attestation in README, Devpost and CLAUDE.md; new tool-governance link; verify command-no app change12 Oct 20:16:020 s
PlCrVePkSeReCoMoGo
2e2d4f58ci: CycloneDX SBOM of each image with Syft, attached as a cosign keyless attestation-no app change12 Oct 20:06:500 s
PlCrVePkSeReCoMoGo
326a1590docs: Devpost submission draft and SCI paragraph for the environmental prize-no app change12 Oct 19:57:180 s
PlCrVePkSeReCoMoGo
749b6ed0docs(readme): judge-facing README; fetch and verify the public ledger locally-no app change12 Oct 19:57:000 s
PlCrVePkSeReCoMoGo
7e3e40e1docs(sci): headline weighted by the project's real tier mix-no app change12 Oct 19:52:040 s
PlCrVePkSeReCoMoGo
27f0c5a7feat: nothing from an sci/ branch is ever merged, released, promoted or deployed-no app change12 Oct 19:47:280 s
PlCrVePkSeReCoMoGo
084b6384docs(runbook): deploy events, ledger page, tiered pipelines, SCI and pipeline speed-no app change12 Oct 19:42:490 s
PlCrVePkSeReCoMoGo
ca4da545docs: ledger page, environments and SCI in the README; new platform facts-no app change12 Oct 19:38:040 s
PlCrVePkSeReCoMoGo
61b2d2a8fix(orchestrator): act on a pushed commit's revision only after its deploy job succeeds-no app change12 Oct 19:34:050 s
PlCrVePkSeReCoMoGo
31f91772docs(sci): measured SCI per change, T3 vs scored tier, 20 seeded changes-no app change12 Oct 19:31:020 s
PlCrVePkSeReCoMoGo
b924a2c6ci: shorten the main pipeline without dropping or loosening any check-no app change12 Oct 19:28:060 s
PlCrVePkSeReCoMoGo
4cdcffeefeat(scripts): SCI per change from measured job durations; re-measure single scenarios-no app change12 Oct 19:22:060 s
PlCrVePkSeReCoMoGo
1e3b9b15ci: SCI measurement branches carry RISK_TIER in their name-no app change12 Oct 19:07:060 s
PlCrVePkSeReCoMoGo
84d806dfci: RISK_TIER sets pipeline depth as in policy.yaml; main always runs every job-no app change12 Oct 19:02:060 s
PlCrVePkSeReCoMoGo
b2d5776dfeat(page): public ledger page with run timelines, DevSecOps stages and evidence-no app change12 Oct 18:57:590 s
PlCrVePkSeReCoMoGo
ed778eeafeat: GitLab environments for deploys; release the app when its deploy job succeeds-no app change12 Oct 18:48:590 s
PlCrVePkSeReCoMoGo
342acc32docs(spikes): a forced tick can swallow the next scheduled one-no app change12 Oct 18:47:060 s
PlCrVePkSeReCoMoGo
4e7281cfdocs(runbook): Gate 4 run 3 passed, webhook latency, traces in Observability-no app change12 Oct 18:39:070 s
PlCrVePkSeReCoMoGo
e6202d02fix(telemetry): start a new trace per request instead of Cloud Run'sT2live12 Oct 18:23:0610 min 04 s
PlCrVePkSeReCoMoGo
3650aa17fix(telemetry): export spans before the last response byteT2live12 Oct 18:02:0711 min 01 s
PlCrVePkSeReCoMoGo
#11Incident: SLO breach on app-00063-suh (e0574f5a)T3live, issue closed12 Oct 17:23:0732 min 00 s
PlCrVePkSeReCoMoGo
e0574f5a[demo] injected regressionT3rolled back12 Oct 17:19:064 min 01 s
PlCrVePkSeReCoMoGo
cb7575c5docs(runbook): Gate 4 run 2, the flag fix, the governed revert and the flag read check-no app change12 Oct 17:13:060 s
PlCrVePkSeReCoMoGo
f35a3eb5build(infra): Unleash secret mounted by default now that it has a value-no app change12 Oct 17:07:060 s
PlCrVePkSeReCoMoGo
dffd77e9revert: [demo] injected regression (Gate 4 run 2)T3live12 Oct 16:38:0920 min 58 s
PlCrVePkSeReCoMoGo
d7daa7defix(app): strip whitespace from the Unleash instance IDT1live12 Oct 16:31:066 min 02 s
PlCrVePkSeReCoMoGo
c182de9bfix(governor): a dark launch only soaks once the canary shows the flag onT1live12 Oct 16:25:065 min 02 s
PlCrVePkSeReCoMoGo
592fb22d[demo] injected regressionT3promoted with unverified flag, then made safe12 Oct 15:39:0637 min 10 s
PlCrVePkSeReCoMoGo
1 human
#10Security finding: Use of cryptographically weak pseudo-random number generator (PRNG) in app/users.py-remediation flow12 Oct 15:36:081 s
PlCrVePkSeReCoMoGo
ac2d27a9revert: [demo] injected regression (Gate 4 run 1 stopped in CI lint)T1live12 Oct 15:27:065 min 03 s
PlCrVePkSeReCoMoGo
c6b9552bfix(governor): /observability reports redacted response bodies on failure-no app change12 Oct 14:57:060 s
PlCrVePkSeReCoMoGo
16334cfcfeat(governor): GET /observability confirms exported telemetry arrives-no app change12 Oct 14:51:060 s
PlCrVePkSeReCoMoGo
d9cb1d59fix(governor): /ledger filters by mr; docs: Gate 4 readiness and evidence-no app change12 Oct 14:30:070 s
PlCrVePkSeReCoMoGo
351282d6feat(governor): export OpenTelemetry from the governor serviceT2live12 Oct 14:13:0711 min 01 s
PlCrVePkSeReCoMoGo
!4MR !4: removes SAST jobT4refused (T4)12 Oct 14:22:080 s
PlCrVePkSeReCoMoGo
#9Security finding: Use of cryptographically weak pseudo-random number generator (PRNG) in app/flags.py-remediation flow12 Oct 14:14:172 s
PlCrVePkSeReCoMoGo
#8Security finding: Server-side request forgery (SSRF) in scripts/verify_decision.py-remediation flow12 Oct 14:14:142 s
PlCrVePkSeReCoMoGo
#7Security finding: GitLab personal access token in governor/tests/test_orchestrator.py-refused (T4)12 Oct 14:14:120 s
PlCrVePkSeReCoMoGo
276a5fc5docs(runbook): Gate 3 passed, issue #6 live in 31 min with no human steps-no app change12 Oct 13:49:060 s
PlCrVePkSeReCoMoGo
#6Add GET /stats endpointT1live, issue closed12 Oct 13:10:0533 min 01 s
PlCrVePkSeReCoMoGo
a0175b0cdocs(runbook): run 2 resumed after IAM fix and released by the governor-no app change12 Oct 13:14:070 s
PlCrVePkSeReCoMoGo
be29e3d7fix(governor): summary lists owner-approved resumes instead of claiming no human steps-no app change12 Oct 13:06:060 s
PlCrVePkSeReCoMoGo
#5Add DELETE /items/{item_id} endpointT1live, issue closed12 Oct 08:49:064 h 05 min
PlCrVePkSeReCoMoGo
1 human
#4Add GET /items/{item_id} endpoint-stopped: delivery flow never started, 4 requests (passed in #5)
owner note: Flows API 404 (fixed in run 2)
12 Oct 01:03:037 h 40 min
PlCrVePkSeReCoMoGo