System Quality · Drift

Every change is a decision.
Detect the ones nobody decided.

Environments drift — vendors patch, engineers tweak, exceptions accumulate. Panaptico continuously verifies live provider state against your declared targets and surfaces every material change — with before and after values, source, and attribution.

DRIFT-FEED · RECONCILING
Finance scope · 418 resourceslast 1h · 142 driftsvs target · 1,427 declaredreconcile cadence · 48s
14s ago

sp · finance-etl-prod

Azure

ContributorOwner
human · unattributed
critical
41s ago

sensor policy · EMEA-finance

CrowdStrike

block-highmonitor-only
console · k.ito@
critical
1m 28s ago

group · fin-admins

Okta

12 members14 members
scim · bamboohr sync
notable
2m 04s ago

warehouse · REPORTING_WH

Snowflake

size=Msize=L
terraform · run #2841
notable
3m 17s ago

kms key rotation · 14 CMKs

AWS

pendingrotated
scheduled · CHG-00591
expected
4m 52s ago

monitor · auth-latency-p99

Datadog

threshold=400msthreshold=800ms
human · j.tran@ · no CHG
notable
6m 03s ago

policy · pki-intermediate

Vault

v14v15
vendor patch · 1.16.3
expected
7m 49s ago

integration system user

Workday

1 account3 accounts
unknown · no source matched
critical

3 critical · 3 notable · 2 expected · every row carries before/after values, source, and attribution

DRIFT-FEED-0491 · live

Why existing monitoring misses it

Monitors fire on symptoms.
Drift happens in silence.

01

Alerts without intent.

Datadog tells you latency jumped. Nobody tells you the warehouse was resized to L an hour ago, and nobody approved it. The alert and the cause live in two different tools.

02

Nobody can triage raw events.

The cloud trail logs 40,000 changes a day. Nine out of ten are routine. The one that matters is buried in noise. Humans give up; the tenth one becomes an incident.

03

Attribution is a dead end.

Who changed the CrowdStrike policy to monitor-only? The console shows a service-principal name that wasn't tied to a human. Two weeks later, nobody admits to it.

Continuous reconciliation

Intent on one side. Reality on the other. A diff every minute.

Declared targets are the anchor. Panaptico observes live provider state on a loop and reconciles it against the operating graph — per object, per field, with attribution when there is one.

14 providers · finance scope
1,427 declared targets · 92,418 fields
Reconcile loop · every 48s
RECON · finance scopepass 2,491 · 00:00:41

Intent · declared target

finance.sp-etl-prod · roleContributor
cs.sensor-emea · modeblock-high
okta.fin-admins · members12
snowflake.reporting_wh · sizeM
workday.isu · count1

Live · observed

finance.sp-etl-prod · roleOwner
cs.sensor-emea · modemonitor-only
okta.fin-admins · members14
snowflake.reporting_wh · sizeL
workday.isu · count3

Fields evaluated

92,418

Drifted

217

Attributed

203

Unknown source

14

Smart classification

Not every diff is a drift. Not every drift is a problem.

Raw state transitions are evaluated against the operating graph — scoped, explained, and ranked by severity. You see the 14 that matter, not the 18,417 that don't.

CLASSIFIER · last 24h · scope 418
Raw state transitions observed18,417
Expected · matches intent or routine8,902
Out of scope · no declared target9,112
Drift candidates403
Notable · bounded deviation389
Critical · breaks a declared target14

The funnel turns 18k events into a queue of 14 — each one with context, not a ticket template

criticalDRIFT-7741 · finance scopeopened 14s ago

Object

azure · finance-etl-prod · service principal

Change

role = Contributorrole = Owner

Why it's critical

  • Declared target · role = Contributor, least privilege
  • Blast radius · 4 subscriptions, 61 identities, 9 effective paths
  • No CHG record · no approval · source: portal, unattributed

Change attribution

Who, what, and when — correlated to the change.

Each drift gets correlated against the graph's source streams — CHG tickets, Terraform runs, vendor patch feeds, SCIM syncs, human console activity. "Unknown source" is a category, not a shrug.

ATTRIBUTION · DRIFT-7713snowflake.reporting_wh · size M → Lcorrelated · 0.3s

Terraform Cloud · workspace finance-prod

run #2841 · plan applied 14:21:08Z

match98%

Snowflake activity log · user

session held by svc-dbt-prod · no interactive user

no match

CHG ticket queue

no ticket matched object · window ±60min

no match

Vendor patch feed

no Snowflake release event in window

no match

Attributed to Terraform run #2841 · commit a4f2…e991 · author j.tran@ · matched to CHG-00604

Findings, routed

Detection is the easy part. Routing is the product.

Every classified drift lands where it gets acted on — recorded as expected, opened as a finding, sent to a gate, or escalated. Humans, workflows, gates, and agents consume the same verified answer.

ROUTING · finance scope · 4 rules activelast change · 2026-04-18
01

When

drift is expected · matches vendor patch feed or scheduled change

Action

recorded as expected · history updated · evidence attached

Volume

8,902 in last 24h

02

When

drift is notable · bounded deviation inside the declared envelope

Action

finding opened · owner notified · tracked until resolved or accepted

Volume

389 in last 24h

03

When

drift touches a governed control · re-approval required

Action

routed to the approval gate · same verified evidence attached

Volume

11 in last 24h

04

When

drift breaks a declared target or has no attributable source

Action

critical finding · oncall paged · evidence bundle captured

Volume

3 in last 24h

Rules are reviewed quarterly · every routed finding is recorded with its evidence and history

ROUTING-POLICY-v14

Every change recorded. Every drift attributed.

The environment is always changing. Panaptico keeps the record honest — every material change captured with before and after values, source, and attribution, and every finding backed by evidence.