Markdown Editor

Data Incident Postmortem Template (Lineage, GDPR Breach Check)

Data incident postmortem: SEV1-SEV4, impact, timeline, lineage blast radius, decisions affected, backfill, SLO breach, GDPR check, DQ rule gaps

데이터 엔지니어링 및 거버넌스전체OpenLineage 2-0-2; ODCS v3.2.0; GDPR Arts. 33-34incidentpostmortem

사용법: Use it after bad, late, missing, duplicated or exposed data reached consumers; use dev/postmortem for service outages. Fill the impact, timeline and lineage blast radius while the incident is open. The main pitfall is fixing the data silently, so nobody restates the decisions taken on wrong numbers.

미리보기

Data Incident Postmortem: [Incident title]

Blameless postmortem for a data incident: bad, late or missing data, a schema break, silent duplication, or personal data exposed in an analytics environment. It records detection, the blast radius traced through lineage (OpenLineage specification 2-0-2), the consumers and decisions affected, restatement and backfill, data contract and service level breaches, the personal data notification check (GDPR Articles 33 and 34, handled through the Incident Response Plan), root cause, data quality rule gaps and actions. Severity uses SEV1 to SEV4 from the Incident Severity Matrix. Replace every [bracketed] value and every row marked Example. The notification section is a documentation format, not legal advice.

Document control

FieldValue
Document ID[DIP-YYYY-NNN] (Example: DIP-2026-014)
Incident title[Short description] (Example: Duplicate payment records overstated net revenue for 2026-10-13 and 2026-10-14)
Incident type[Wrong data / Late data / Missing data / Schema break / Silent duplication / Personal data exposure / Other]
Severity at declaration[SEV1 / SEV2 / SEV3 / SEV4]
Peak severity[SEV1 / SEV2 / SEV3 / SEV4] per Incident Severity Matrix (ops/incident-severity-matrix)
Data products and datasets[Products and output ports]
Incident window (first bad data to corrected data)[YYYY-MM-DD HH:MM to YYYY-MM-DD HH:MM UTC]
Incident commander[@incident-commander]
Postmortem owner[@postmortem-owner]
Version[0.1]
Status[Draft / In review / Approved / Actions complete]
Owner[@data-product-owner]
Approvers/reviewers[@data-owner], [@data-quality-lead], [@dpo] (for section 9), [@consumer-representatives]
Last updatedYYYY-MM-DD
Classification[Internal / Confidential]
Linked records[Incident ticket], [Security incident ID if any], [Change requests], [Service postmortem if any]

Approvals

RoleNameDecisionDate
Data product owner[@name][Approve / Approve with conditions / Reject]YYYY-MM-DD
Data quality lead[@name][Decision]YYYY-MM-DD
Data protection officer (section 9)[@name][Decision]YYYY-MM-DD
Main consumer representative[@name][Decision]YYYY-MM-DD

Revision history

VersionDateAuthorChange summary
0.1YYYY-MM-DD[@name]First draft during the incident
0.2YYYY-MM-DD[@name]Example: Added lineage analysis and restatement results
1.0YYYY-MM-DD[@name]Example: Approved after the review meeting

Contents

1. Summary

Example: A payments change-data-capture connector replayed about 45 minutes of payment events at each of two restarts, on 2026-10-13 and 2026-10-14. The staging model for payments had no uniqueness test, so duplicated payment rows fanned out in the join that computes order net amounts. For business dates 2026-10-13 and 2026-10-14, net revenue in the Orders data product was overstated by EUR 412,600 (3.10%), and the inflated figures reached the finance daily flash report and the marketing bid-optimisation export for about 42 hours. The daily reconciliation rule failed on both mornings, but its alert went to a ticket queue and nobody acted until a finance analyst noticed the mismatch. We deduplicated payments in staging, backfilled the two partitions and issued a restated flash report. The main follow-up is a Critical uniqueness rule in staging and paging on reconciliation failures for Tier 1 data.

2. Classification and scope

2.1 Type and severity

ItemValue
Incident typeExample: Silent duplication (wrong values, no failure signal from the pipeline)
Data tier (Data Quality Standard section 4)Example: Tier 1
Severity at declarationExample: SEV2
Peak severityExample: SEV2 (unchanged)
Severity rationaleExample: Data impact criterion (matrix section 4.3): corrupted figures reached an internal financial report and an automated spending decision, but the source events were intact and the corruption was recoverable with no loss, which is SEV2. Security criterion (section 4.4) not met: no unauthorised access to personal or confidential data. Customer impact criterion (section 4.1) not met: no customer journey affected
Crisis flag (if your matrix uses one)Example: Not set

2.2 Data-specific severity guidance

Classify with the Incident Severity Matrix (ops/incident-severity-matrix); each criterion is evaluated on its own and the most severe result wins. The examples below show how data incidents map to the matrix criteria. Wrong figures already used in external, regulatory or investor reporting may justify the crisis flag of the matrix on top of the level; record that decision in section 2.1. Raise the level as soon as a criterion is met, never lower it to avoid an obligation, and record both the level at declaration and the peak.

SeverityData incident examples (Example)
SEV1Confirmed unauthorised access to personal or confidential data, whatever the number of records (security criterion, matrix section 4.4); data lost or corrupted beyond what can be recovered within the recovery point objective, or writes silently dropped (data criterion, section 4.3)
SEV2Wrong or missing Tier 1 data used in internal or automated decisions, recoverable from intact sources (section 4.3); personal data possibly visible to unauthorised users while access is not yet confirmed (credible indication under investigation, section 4.4)
SEV3Tier 2 data late or partly wrong with a workaround; a schema break caught before consumers used the data
SEV4A failed rule or anomaly with no consumer impact yet; a near miss

2.3 When to use which postmortem

SituationTemplate
Data wrong, late, missing, duplicated or exposedThis template
Application or service outage or degradationPostmortem (dev/postmortem)
Security incident (with or without personal data)Incident Response Plan (compliance/incident-response-plan) for handling; this template for the data restatement
Model or AI system behaved unexpectedlyAI incident templates in this library

3. Impact

3.1 Data impact

DimensionValueSource
Datasets with wrong dataExample: stg_payments_api__payments, int_orders__lines_joined_to_payments, fct_orders, orders (output port), orders_daily_aggLineage query (section 6)
Partitions affectedExample: Business dates 2026-10-13 and 2026-10-14Reconciliation results
Records affectedExample: 11,310 of 364,800 orders (3.10%) had an inflated net_amountComparison with corrected backfill
Size of errorExample: Net revenue overstated by EUR 412,600 on a true total of EUR 13,310,000 (3.10%)Reconciliation with order service ledger
Exposure durationExample: 42 h 20 min (first wrong publish 2026-10-14 02:45 to corrected publish 2026-10-15 21:05 UTC)Publish logs
Data lostExample: None; source events were intactSource audit
Personal data involvedExample: No exposure; see section 9DPO decision

Per business date (Example):

Business dateOrdersOrders affectedTrue net revenue (EUR)Overstatement (EUR)Overstatement
2026-10-13182,1005,6406,640,000205,9003.10%
2026-10-14182,7005,6706,670,000206,7003.10%
Total364,80011,31013,310,000412,6003.10%

3.2 Consumers and decisions affected

ConsumerUseDecision or action taken on bad dataConsequenceCorrective action
Finance (Example)Daily flash report (net revenue)Flash report of 2026-10-14 and 2026-10-15 sent to leadershipLeadership saw revenue 3.1% above actualRestated report issued 2026-10-16
Marketing (Example)Bid-optimisation export from orders_daily_aggAutomated bidding raised budgets for two daysEstimated overspend EUR 18,400Budgets reset; export paused until restatement
Data science (Example)Demand forecast featuresWeekly retrain scheduled 2026-10-19None: backfill completed before retrainRetrain checked against corrected data
Executive metric MET-REV-001 "Net revenue" (Example)Semantic model SEM-ORD-001 (orders_semantic)Viewed in dashboardsNo external useDashboard banner during incident
[Consumer][Use][Decision][Consequence][Action]

3.3 Contract and service level breaches

CommitmentSourceBreachMeasure
DQ-ORD-004 accuracy (difference at most 0.1%) (Example)Data Contract for orders (data/data-contract)Yes, 2 daily partitionsDifference 3.10% on both days
Freshness at most 60 minutes (Example)Same contract, service levelsNoFreshness met throughout
Correctness SLO: 99% of daily partitions pass all Critical and Major rules over 90 days (Example)Orders data product SLOsYesBudget 0.9 partitions; 2 failed; 222% of budget consumed
[Commitment][Source][Yes / No][Measure]

Error budget arithmetic (Example): 90 partitions x (1 - 0.99) = 0.9 failing partitions allowed; 2 / 0.9 = 2.22, so 222% of the budget was consumed and the error budget policy freezes non-reliability changes to the Orders product until it recovers.

4. Timeline

Time (UTC)EventKey moment
2026-10-13 22:40 (Example)Payments CDC connector restarted after broker maintenance; offsets reset to an earlier position and about 45 minutes of payment events (about 3.1% of the day's payments) are replayedDefect introduced
2026-10-14 02:00Nightly dbt build runs; staging payments now hold duplicate payment_id values; no test fails
2026-10-14 02:45orders and orders_daily_agg published with inflated net_amount for 2026-10-13Start of consumer impact
2026-10-14 06:00DQ-ORD-004 reconciliation fails (difference 3.10%); rule is Major, so the day is flagged provisional and a ticket is created in the producer queueFirst automated signal
2026-10-14 07:30Finance flash report generated; the report does not display the provisional flag
2026-10-14 08:00Marketing bid export reads orders_daily_agg and raises budgets
2026-10-14 21:55Connector restarts again during a deploy; second replay
2026-10-15 02:45Inflated data published for 2026-10-14
2026-10-15 06:00DQ-ORD-004 fails again; second ticket created
2026-10-15 13:20Finance analyst reports that net revenue does not match payment provider settlementsFirst human notice
2026-10-15 13:35Incident declared SEV2; incident commander assignedDetection (declared)
2026-10-15 13:50Lineage query lists downstream datasets and consumers (section 6)
2026-10-15 14:10Decision to pause the marketing bid export (section 7.2)
2026-10-15 14:30Marketing export paused; banners on dashboards; flash report marked provisionalMitigation
2026-10-15 16:10Root cause found: duplicate payment_id rows in staging
2026-10-15 18:40Fix merged: deduplication on payment_id in staging plus a uniqueness test (later catalogued as DQ-ORD-007)
2026-10-15 21:05Backfill of two partitions published through write-audit-publish; reconciliation difference 0.02%End of consumer impact
2026-10-16 09:00Restated flash report issued; incident resolvedAll-clear

4.1 Key durations

MeasureCalculationValue (Example)
Time to first automated signal2026-10-13 22:40 to 2026-10-14 06:007 h 20 min
Time to declare (from defect)2026-10-13 22:40 to 2026-10-15 13:3538 h 55 min
Time to mitigate (from declaration)13:35 to 14:3055 min
Time to correct data (from declaration)13:35 to 21:057 h 30 min
Consumer exposure2026-10-14 02:45 to 2026-10-15 21:0542 h 20 min

5. Detection

QuestionAnswer (Example)
Who or what detected it?A finance analyst comparing revenue with payment provider settlements (consumer-detected)
Did any rule or monitor fire?Yes: DQ-ORD-004 failed twice; volume and freshness monitors did not fire because row counts and timing were normal
Where did the signal go?To the producer ticket queue, because Major rules create tickets; nobody watches that queue outside business hours and the tickets were not triaged within the target
Why did prevention not stop it?No uniqueness rule on payment_id in staging; the join assumed one payment per order line
Could a consumer have seen the provisional flag?No: the flash report and the bid export ignore the flag

Detection category: consumer-detected after automated signal ignored. This counts against the "consumer-detected defects" metric of the Data Quality Standard (data/data-quality-standard).

6. Blast radius and lineage

6.1 Method

Lineage is collected as OpenLineage run events (specification 2-0-2) from the orchestrator and from dbt. Each run event names the job, the run, and its input and output datasets with facets such as the schema; input datasets can also carry data quality assertion results. To find the blast radius:

  1. Start from the dataset where the defect entered (here stg_payments_api__payments).
  2. Walk output datasets of every job that read it, recursively, for runs between the defect time and the fix.
  3. For each downstream dataset, list the runs that wrote affected partitions, and the readers (jobs, dashboards, exports) of those partitions.
  4. Confirm each reader with its owner; record readers that lineage missed and add them to lineage collection (action item).

6.2 Lineage graph

The graph below combines the lineage events for the incident window with consumers confirmed by owners (Example). The marketing bid export was not in lineage and was found only by asking owners (section 6.3).

6.3 Affected assets

AssetTypeOwnerAffected partitionsConsumed bad data?Confirmed with
orders (Example)Output port[@orders-owner]2026-10-13, 2026-10-14YesLineage and query logs
orders_daily_agg (Example)Aggregate[@orders-owner]SameYesLineage
Finance flash report (Example)Report[@finance-bi]SameYesReport owner
Marketing bid export (Example)Reverse ETL export[@marketing-ops]SameYesNot in lineage; found by asking (action A5)
Demand forecast features (Example)Feature table[@ds-lead]SameNo (not yet retrained)Feature owner
[Asset][Type][@owner][Partitions][Yes / No][Evidence]

7. Response, containment and communication

7.1 Containment options considered

OptionChosen?Reason (Example)
Roll back orders to the last good snapshotNoWould also remove correct data for later dates and break incremental state
Pause downstream exportsYesStops new automated decisions on bad data immediately
Mark partitions provisional and add dashboard bannersYesConsumers keep access with a visible warning
Hide affected partitionsNoFinance needed the rest of the day's data for operations

7.2 Key decisions

TimeDecisionMade byRationale (Example)
14:10Pause the marketing bid exportIncident commander with marketing ownerPrevent further automated overspend
16:30Fix in staging and backfill, rather than patch the aggregateData ownerFixing at the source keeps all downstream assets consistent

7.3 Communication

TimeAudienceChannelMessage summary
14:30 (Example)All consumers of OrdersData status page and consumers channelIncident declared; 2026-10-13 and 2026-10-14 revenue overstated; do not use for decisions; next update 17:00
17:00 (Example)SameSameCause found; corrected data expected by 22:00
2026-10-16 09:00 (Example)Leadership and financeEmail from finance BI leadRestated flash report with the size of the correction

Use Incident Communication (dev/incident-communication) for message templates and cadence.

8. Restatement and backfill

8.1 Backfill plan

StepActionValidationStatus (Example)
1Deploy deduplication on payment_id in stagingUniqueness test passes on full historyDone
2Rebuild staging and intermediate models for 2026-10-13 and 2026-10-14Row counts match source ledgerDone
3Rebuild fct_orders, orders, orders_daily_agg for both dates on an unpublished branchDQ-ORD-001 to DQ-ORD-006 pass; reconciliation difference 0.02%Done
4Publish atomically (write-audit-publish)Snapshot ID recordedDone
5Refresh semantic model caches, dashboards and the bid exportSpot checks by ownersDone
6Notify consumers of corrected dataMessage sentDone

8.2 Restatement of decisions and reports

ItemRestated?HowOwner
Finance flash reports 2026-10-14 and 2026-10-15 (Example)YesRestated report with correction table[@finance-bi]
Marketing budgets (Example)PartlyBudgets reset; overspend recorded, not recoverable[@marketing-ops]
[Item][Yes / No / Partly][How][@owner]

9. Personal data and notification check

Personal data exposure in analytics happens more often than teams expect: email addresses in event properties, free text in search terms, identifiers in URLs, or a restricted table copied into an open sandbox. Whenever personal data may be involved, hand the breach assessment to the process in the Incident Response Plan (compliance/incident-response-plan) immediately; this postmortem records the outcome and does not replace that process.

Apply these points when you assess the incident (check the consolidated text and your own legal advice):

  • Is it a personal data breach (Art. 4(12))? A personal data breach is a breach of security leading to the accidental or unlawful destruction, loss, alteration, unauthorised disclosure of, or access to, personal data. It covers confidentiality (data seen by people who should not see it), integrity (data altered) and availability (data lost or unreachable).
  • Confidentiality in analytics is a breach. Personal data that becomes visible to people without authorisation is a personal data breach, also when the viewers are employees, when the data sits in an internal analytics zone, and when the identifiers are pseudonymous. Pseudonymised data remains personal data. Do not argue such an exposure away; record it as a breach and assess the risk.
  • Assess the risk, then decide on notification (Art. 33). The controller notifies the competent supervisory authority without undue delay and, where feasible, within 72 hours of becoming aware of the breach, unless the breach is unlikely to result in a risk to people's rights and freedoms. Pseudonymisation, encryption, a short exposure to a small group of trusted staff, and prompt deletion can lower the risk; they are factors in the assessment, not reasons to skip it. A processor informs the controller without undue delay.
  • Communicate to people when the risk is high (Art. 34). When the breach is likely to result in a high risk to the people concerned, the controller also tells them without undue delay, unless an Art. 34(3) condition applies.
  • Document every breach (Art. 33(5)). Record the facts, effects and remedial action in the internal breach register, whether or not it is notified. Record a "not a breach" decision and its reasoning too.
  • Other regimes. Other jurisdictions and sector rules have their own triggers and deadlines; the Incident Response Plan lists them.
QuestionAnswer (Example)
Did affected datasets contain personal data?Yes, pseudonymous customer_id in orders (Confidential, flags PD and PSEUDO in the Orders data contract)
Was personal data disclosed to or accessed by anyone without authorisation (confidentiality)?No: access logs show only the authorised analytics, finance and marketing roles read the affected partitions; the bid export sent aggregates by campaign, without customer_id
Was personal data destroyed, lost or made unavailable (availability)?No: source payment and order records were intact throughout
Was personal data altered (integrity)?Derived order amounts linked to pseudonymous customers were wrong in analytics tables because of a processing defect; source records and identifiers were unchanged
Is this a personal data breach under Art. 4(12)?No, per DPO assessment at 2026-10-15 15:00 UTC: no breach of security (no unauthorised access, no loss, source records intact); the wrong derived values are a data accuracy issue (Art. 5(1)(d)), corrected by the backfill of section 8
Risk to people's rights and freedomsNot applicable as no breach; the DPO noted that no decision about an individual customer used the affected values
GDPR Art. 33 notification to the supervisory authority required?No (not a breach)
GDPR Art. 34 communication to data subjects required?No (not a breach)
Recorded in the internal breach register (Art. 33(5))?Assessment and reasoning recorded in the breach register as "assessed, not a breach", linked to the incident ticket
Other notifications (contracts, regulators, partners)None required
Decided by[@dpo]

If the answer to the confidentiality question had been yes (for example the marketing export had carried customer_id to an advertising partner without a legal basis), the incident would be a personal data breach and SEV1 under the security criterion of the Incident Severity Matrix. Complete the risk assessment below in that case and follow the Incident Response Plan for the notification decision.

Risk factorAssessment (fill when a breach is confirmed)
Categories and approximate number of people and records[Number of data subjects, record count, data categories]
Type of breach[Confidentiality / Integrity / Availability]
Ease of identification[Direct identifiers / pseudonymous with key held separately / other]
Severity of consequences for people[For example financial loss, discrimination, loss of control over data]
Recipients and their trustworthiness[Internal role, processor, third party, public]
Mitigation already applied[Deletion confirmed by recipient, access revoked, keys rotated]
Risk level and decision[Unlikely to result in a risk / Risk: notify authority / High risk: notify authority and people]
Time of awareness and notification deadline[YYYY-MM-DD HH:MM UTC, plus 72 hours]

If the analytics data is listed in the Record of Processing Activities (compliance/gdpr-ropa), check whether the incident shows that the record is out of date.

10. Root cause analysis

10.1 Causal chain

  1. Example: Broker maintenance caused the payments CDC connector to restart and resume from an earlier offset (trigger).
  2. The connector delivers at-least-once; replayed events were appended to the raw payments table.
  3. The staging model selected all raw rows without deduplicating on payment_id.
  4. The intermediate model joined order lines to payments assuming at most one payment per line, so duplicates multiplied amounts.
  5. fct_orders summed the joined amounts, overstating net_amount for affected orders while order_id stayed unique, so DQ-ORD-001 passed.
  6. DQ-ORD-004 detected the difference, but its Major severity routed the alert to an unwatched queue, and downstream consumers ignored the provisional flag.

10.2 Five whys

Why?Answer (Example)
Why was revenue overstated?Payment amounts were counted twice for 11,310 orders
Why were they counted twice?Staging held duplicate payment rows after a replay
Why did staging hold duplicates?The model assumed exactly-once delivery and had no uniqueness test
Why was there no test?At the time, the dbt project standard required primary key tests on marts only, not on staging models
Why did the reconciliation failure not stop publication?Accuracy rules were rated Major for all tiers, and Major does not block or page

10.3 Contributing factors

FactorCategory (Data Quality Standard section 11.4)Evidence
At-least-once ingestion without downstream deduplication (Example)IngestionConnector documentation and raw table history
Join grain assumption not tested (Example)Transformation logicModel code review
Reconciliation rated Major on Tier 1 data (Example)Rule gapData contract rule DQ-ORD-004
Provisional flag not shown by consumers (Example)DefinitionReport and export code
Reverse ETL export missing from lineage (Example)Orchestration and platformSection 6.3

11. Data quality rule gaps

Gap IDGapTypeFixEnforcement pointOwner
GAP-01 (Example)No uniqueness rule on payment_id in stagingMissing ruleAdd DQ-ORD-007, Critical, block downstreamEP3 transformation[@payments-steward]
GAP-02 (Example)No fan-out check on the order line to payment joinMissing ruleAdd a row count consistency test before and after the joinEP3[@orders-steward]
GAP-03 (Example)Reconciliation rated Major on Tier 1Wrong severityRaise DQ-ORD-004 to Critical for Tier 1; block publish above 0.5%EP4 publish gate[@finance-steward]
GAP-04 (Example)Reconciliation alerts routed to an unwatched queueAlert routingPage producer on-call for Tier 1 Critical failures, per Alerting Policy (ops/alerting-policy)EP5[@orders-custodian]
GAP-05 (Example)Distribution monitor absent on net_amount per orderMissing monitorMonitor mean and 99th percentile of net_amount per orderEP5[@orders-custodian]
[GAP-nn][Gap][Type][Fix][EPn][@owner]

12. What went well and what did not

Went well (Example):

  • Lineage events let the team list most downstream assets within 15 minutes of declaration.
  • Write-audit-publish made the backfill safe and atomic; consumers never saw a half-corrected state.
  • Finance raised the issue in the shared channel instead of correcting figures locally.

Did not go well (Example):

  • The first of two automated signals went unanswered for 31 h 35 min (2026-10-14 06:00 to declaration at 2026-10-15 13:35).
  • The bid export was missing from lineage, so marketing was informed late.
  • The provisional flag existed but no consumer used it.

Where we were lucky (Example):

  • The weekly forecast retrain was scheduled after the backfill.
  • The month-end close was not in the incident window.

13. Action items

IDActionTypeOwnerDueTicketStatus
A1 (Example)Add DQ-ORD-007 uniqueness on staging payments (GAP-01)Prevent[@payments-steward]YYYY-MM-DD[link]Done
A2 (Example)Require primary key tests on all staging models in the dbt Project Standard (data/dbt-project-standard, section 6, minimum tests per layer)Prevent[@analytics-eng-lead]YYYY-MM-DD[link]Done
A3 (Example)Raise DQ-ORD-004 to Critical for Tier 1 and update the Orders data contract (GAP-03)Detect[@finance-steward]YYYY-MM-DD[link]Open
A4 (Example)Route Tier 1 Critical failures to the on-call pager (GAP-04)Detect[@orders-custodian]YYYY-MM-DD[link]Open
A5 (Example)Emit lineage events from the reverse ETL toolDetect[@data-platform-lead]YYYY-MM-DD[link]Open
A6 (Example)Make the flash report and the bid export refuse provisional partitionsMitigate[@finance-bi], [@marketing-ops]YYYY-MM-DD[link]Open
A7 (Example)Configure the CDC connector to keep committed offsets across maintenance restartsPrevent[@platform-eng]YYYY-MM-DD[link]Open
[An][Action][Prevent / Detect / Mitigate / Process][@owner]YYYY-MM-DD[link][Status]

Track completion in the quarterly data quality review (Data Quality Standard section 13.3). The postmortem status moves to "Actions complete" when every Prevent and Detect action is done.

14. Glossary and references

14.1 Glossary

TermMeaning
BackfillRebuilding historical partitions of a dataset with corrected logic or data
Blast radiusAll datasets, reports, exports, models and decisions downstream of a defect
CDCChange data capture: streaming row changes from a source database
Fan-outA join that multiplies rows because the join key is not unique on one side
RestatementReissuing a report or figure with corrected values and an explanation
Silent duplicationDuplicate records that cause no pipeline failure and look plausible
Write-audit-publishLoad to an unexposed location, run checks, then publish atomically
Personal data breachA security breach leading to accidental or unlawful destruction, loss, alteration, unauthorised disclosure of or access to personal data (GDPR Art. 4(12), paraphrased)

14.2 References

ReferenceVersion or date checkedUse
OpenLineage specification 2-0-2, openlineage.io/spec/2-0-2/OpenLineage.jsonProject release 1.54.0, 2026-10-13, Apache-2.0Run, job, dataset and facet model; run event types for lineage-based impact analysis
Bitol Open Data Contract Standard (ODCS) v3.2.0, github.com/bitol-io/open-data-contract-standardReleased 2026-09-08, Apache-2.0Quality rule and service-level concepts referenced in section 3.3
Regulation (EU) 2016/679 (GDPR), Articles 4(12), 33 and 34, eur-lex.europa.eu/eli/reg/2016/679/ojChecked 2026-10-24Breach definition and notification triggers (paraphrased)
Incident Severity Matrix (ops/incident-severity-matrix)[Version]SEV1 to SEV4 classification
Incident Response Plan (compliance/incident-response-plan)[Version]Breach assessment and notification process

Standard and licence note

Based on the OpenLineage specification 2-0-2 (Apache-2.0, openlineage.io) for lineage concepts, the Bitol Open Data Contract Standard (ODCS) v3.2.0 (Apache-2.0, github.com/bitol-io/open-data-contract-standard) for contract and service-level concepts, and Articles 4(12), 33 and 34 of Regulation (EU) 2016/679 (GDPR), paraphrased in original words. This is a documentation format, not legal advice. Severity levels follow this library's Incident Severity Matrix. The structure and text are original, written for this collection; Corvid Commerce and the incident are fictional. Check the current official versions and the consolidated legal text before use. Template licence: MIT.

관련 템플릿