{"source":{"url":"https://ontology.live/o/bug-report-incident-postmortem-ontology-48c9db","author":"@ssergienko","license":"CC BY 4.0","licenseUrl":"https://creativecommons.org/licenses/by/4.0/","publishedAt":"2026-10-21T19:39:46.160Z"},"ontology":{"name":"Bug Report & Incident Postmortem Ontology","description":"Models engineering issue-tracking records such as bug tickets and incident postmortems, covering metadata, impact, reproduction or timeline, root cause, and remediation. Used to generate new realistic bug reports and postmortems from a prompt.","domain":"engineering"},"graph":{"nodes":[{"id":"record","type":"class","label":"Defect/Incident Record","description":"Top-level document documenting a software failure and its resolution.","semantics":"Subtype determines which sections appear (bug ticket vs postmortem).","examples":["BUG-1234 export failure","INC-100 duplicate charges"]},{"id":"record_type","type":"dimension","label":"Record Type","description":"Kind of record being written.","semantics":"Drives structure: bug has repro steps; incident has timeline and action items.","examples":["Bug ticket","Incident postmortem"]},{"id":"identifier","type":"property","label":"Identifier and Title","description":"Prefixed ID plus a concise symptom-oriented title.","semantics":"Prefix reflects type (BUG-, INC-); title states symptom and trigger condition.","examples":["BUG-7710: Search times out for queries with >10 filters","INC-205 — Login failures in EU region"]},{"id":"metadata","type":"class","label":"Header Metadata","description":"Compact pipe-separated line(s) of classification and ownership fields.","semantics":"Dense key:value format at top of document.","examples":["Project: Orders | Component: api-gateway | Type: Bug"]},{"id":"project_component","type":"property","label":"Project and Component","description":"Product and subsystem affected.","semantics":"Varies by domain of the system.","examples":["Analytics Pro / export-service","Checkout / payments"]},{"id":"severity","type":"dimension","label":"Severity","description":"Scale of technical or business harm.","semantics":"Correlates with impact size, duration, and priority.","examples":["S2 (major)","SEV-2","SEV-1"]},{"id":"priority","type":"property","label":"Priority","description":"Urgency of fixing.","semantics":"Typically P0–P3, tied to severity and customer impact.","examples":["P1","P2"]},{"id":"status","type":"property","label":"Status and Workflow","description":"Current state or workflow progression.","semantics":"Bugs show state transitions; incidents show Resolved/Monitoring.","examples":["Open → In progress → In review → Done","Resolved"]},{"id":"people_teams","type":"property","label":"Reporter, Assignee, Owner","description":"Roles or teams accountable; often team names rather than individuals.","semantics":"Bugs: reporter/assignee; incidents: commander and action owners.","examples":["Reporter: Support Tier 2","Assignee: Platform team","Incident commander: on-call engineer"]},{"id":"version_env","type":"property","label":"Version and Environment","description":"Affected and fix versions, environment, regions, browsers.","semantics":"Mostly in bugs; anchors the regression window.","examples":["Affects 2.4.0 / Fix 2.4.1","production, all regions"]},{"id":"labels","type":"property","label":"Labels and Links","description":"Tags and linked tickets or PRs.","semantics":"Indicate regression, customer impact, linked support tickets.","examples":["regression","customer-impacting","12 linked tickets"]},{"id":"repro","type":"class","label":"Reproduction Steps","description":"Numbered steps with expected vs actual behaviour.","semantics":"Present in bugs; includes concrete thresholds and error messages.","examples":["1. Open report with 21 charts 2. Export. Expected: <30 s. Actual: timeout at 60 s"]},{"id":"impact","type":"class","label":"Impact Statement","description":"Quantified effect on users, money, error rates.","semantics":"Numbers scale with severity; includes remediation of harm.","examples":["900 customers affected; €40,000 refunded","error rate peaked at 7%"]},{"id":"timeline","type":"class","label":"Timeline","description":"Timestamped sequence from onset to resolution.","semantics":"Chronological UTC entries: onset, alert, diagnosis, mitigation, recovery.","examples":["10:05 latency rises","10:31 mitigation via feature flag"]},{"id":"duration","type":"property","label":"Duration / Time to Resolve","description":"Elapsed time of incident or fix.","semantics":"Must be consistent with timeline timestamps.","examples":["47 minutes","4h 20m"]},{"id":"root_cause","type":"class","label":"Root Cause","description":"Causal technical explanation, often a specific change or missing safeguard.","semantics":"Mechanism-level, blameless, links change to symptom.","examples":["Renderer pool limited to 1 after release change","Retry without idempotency key"]},{"id":"contributing","type":"property","label":"Contributing Factors","description":"Secondary gaps in monitoring, testing, or process.","semantics":"Mostly in postmortems.","examples":["No alert on duplicates","Retry logic untested"]},{"id":"fix","type":"class","label":"Fix / Mitigation","description":"Code change or operational action that resolved the issue.","semantics":"References PR numbers, flags, config; may include added tests.","examples":["Restore parallel rendering — PR #1234","Disable retries via feature flag"]},{"id":"action_items","type":"class","label":"Action Items","description":"Numbered follow-ups with owner, due date, and status.","semantics":"Preventive; typically 2–5 items covering fix, detection, testing.","examples":["Add idempotency keys — owner: Payments — due 2026-10-16 — done"]},{"id":"detection","type":"property","label":"Detection Method","description":"How the problem was found.","semantics":"Automated alert, customer report, or manual.","examples":["automated alert","customer support tickets"]},{"id":"comms","type":"property","label":"Customer Communication","description":"Channels used to notify customers.","semantics":"Appears in incidents.","examples":["status page + email"]},{"id":"review_style","type":"constraint","label":"Blameless Tone","description":"Postmortems describe systems and processes, not individuals.","semantics":"Uses roles/teams instead of names.","examples":["on-call payments engineer"]},{"id":"terse_style","type":"constraint","label":"Terse Technical Style","description":"Compact, fact-dense, metric-rich prose with abbreviations and concrete numbers.","semantics":"Short labeled sections, minimal narrative.","examples":["Root cause: ... Fix: ..."]},{"id":"consistency","type":"constraint","label":"Internal Consistency","description":"Dates, versions, durations, severities and statuses must agree.","semantics":"Fix version follows affected version; duration equals end minus start.","examples":["4.18.0 → 4.18.1"]},{"id":"sev_values","type":"value","label":"Severity Scale Values","description":"Enumerated severity levels.","semantics":"Chosen to match impact magnitude.","examples":["S1 critical","S2 major","S3 minor","SEV-1","SEV-2","SEV-3"]},{"id":"status_values","type":"value","label":"Status Values","description":"Enumerated lifecycle states.","semantics":"Bugs and incidents use different sets.","examples":["Open","In progress","In review","Done","Resolved"]},{"id":"failure_domain","type":"dimension","label":"Failure Domain","description":"Category of technical failure.","semantics":"Shapes cause, impact, and fixes.","examples":["performance/timeout","payments/idempotency","data corruption","availability"]},{"id":"customer_scope","type":"dimension","label":"Blast Radius","description":"Extent of affected users, regions, or environments.","semantics":"Scales impact numbers and severity.","examples":["all regions","1,180 customers","single tenant"]}],"edges":[{"source":"record","target":"record_type","label":"varies by","type":"has_property"},{"source":"record","target":"identifier","label":"identified by","type":"has_property"},{"source":"record","target":"metadata","label":"has header","type":"has_property"},{"source":"metadata","target":"project_component","label":"includes","type":"part_of"},{"source":"metadata","target":"severity","label":"includes","type":"part_of"},{"source":"metadata","target":"priority","label":"includes","type":"part_of"},{"source":"metadata","target":"status","label":"includes","type":"part_of"},{"source":"metadata","target":"people_teams","label":"includes","type":"part_of"},{"source":"metadata","target":"version_env","label":"includes","type":"part_of"},{"source":"metadata","target":"labels","label":"includes","type":"part_of"},{"source":"severity","target":"sev_values","label":"takes","type":"has_value"},{"source":"status","target":"status_values","label":"takes","type":"has_value"},{"source":"record_type","target":"repro","label":"bug includes","type":"relates_to"},{"source":"record_type","target":"timeline","label":"incident includes","type":"relates_to"},{"source":"record_type","target":"action_items","label":"incident includes","type":"relates_to"},{"source":"record","target":"impact","label":"describes","type":"has_property"},{"source":"record","target":"root_cause","label":"explains","type":"has_property"},{"source":"root_cause","target":"contributing","label":"supplemented by","type":"relates_to"},{"source":"root_cause","target":"fix","label":"addressed by","type":"relates_to"},{"source":"fix","target":"action_items","label":"followed by","type":"relates_to"},{"source":"impact","target":"severity","label":"determines","type":"constrains"},{"source":"severity","target":"priority","label":"informs","type":"relates_to"},{"source":"timeline","target":"duration","label":"yields","type":"relates_to"},{"source":"record","target":"detection","label":"notes","type":"has_property"},{"source":"record","target":"comms","label":"notes","type":"has_property"},{"source":"review_style","target":"people_teams","label":"constrains naming","type":"constrains"},{"source":"terse_style","target":"record","label":"governs style","type":"constrains"},{"source":"consistency","target":"record","label":"governs values","type":"constrains"},{"source":"failure_domain","target":"root_cause","label":"shapes","type":"constrains"},{"source":"customer_scope","target":"impact","label":"scales","type":"constrains"},{"source":"version_env","target":"root_cause","label":"locates regression","type":"relates_to"},{"source":"action_items","target":"people_teams","label":"owned by","type":"relates_to"},{"source":"repro","target":"root_cause","label":"leads to diagnosis","type":"relates_to"}]},"pipeline":{"classes":[{"id":"record","label":"Defect/Incident Record","description":"Top-level document documenting a software failure and its resolution.","parent":null,"properties":[{"id":"record_type","label":"Record Type","description":"Kind of record being written.","examples":["Bug ticket","Incident postmortem"]},{"id":"identifier","label":"Identifier and Title","description":"Prefixed ID plus a concise symptom-oriented title.","examples":["BUG-7710: Search times out for queries with >10 filters","INC-205 — Login failures in EU region"]},{"id":"metadata","label":"Header Metadata","description":"Compact pipe-separated line(s) of classification and ownership fields.","examples":["Project: Orders | Component: api-gateway | Type: Bug"]},{"id":"impact","label":"Impact Statement","description":"Quantified effect on users, money, error rates.","examples":["900 customers affected; €40,000 refunded","error rate peaked at 7%"]},{"id":"root_cause","label":"Root Cause","description":"Causal technical explanation, often a specific change or missing safeguard.","examples":["Renderer pool limited to 1 after release change","Retry without idempotency key"]},{"id":"detection","label":"Detection Method","description":"How the problem was found.","examples":["automated alert","customer support tickets"]},{"id":"comms","label":"Customer Communication","description":"Channels used to notify customers.","examples":["status page + email"]}],"relations":[],"examples":["BUG-1234 export failure","INC-100 duplicate charges"]},{"id":"metadata","label":"Header Metadata","description":"Compact pipe-separated line(s) of classification and ownership fields.","parent":null,"properties":[],"relations":[{"type":"part_of","target":"Project and Component","label":"includes"},{"type":"part_of","target":"Severity","label":"includes"},{"type":"part_of","target":"Priority","label":"includes"},{"type":"part_of","target":"Status and Workflow","label":"includes"},{"type":"part_of","target":"Reporter, Assignee, Owner","label":"includes"},{"type":"part_of","target":"Version and Environment","label":"includes"},{"type":"part_of","target":"Labels and Links","label":"includes"}],"examples":["Project: Orders | Component: api-gateway | Type: Bug"]},{"id":"repro","label":"Reproduction Steps","description":"Numbered steps with expected vs actual behaviour.","parent":null,"properties":[],"relations":[{"type":"relates_to","target":"Root Cause","label":"leads to diagnosis"}],"examples":["1. Open report with 21 charts 2. Export. Expected: <30 s. Actual: timeout at 60 s"]},{"id":"impact","label":"Impact Statement","description":"Quantified effect on users, money, error rates.","parent":null,"properties":[],"relations":[],"examples":["900 customers affected; €40,000 refunded","error rate peaked at 7%"]},{"id":"timeline","label":"Timeline","description":"Timestamped sequence from onset to resolution.","parent":null,"properties":[],"relations":[{"type":"relates_to","target":"Duration / Time to Resolve","label":"yields"}],"examples":["10:05 latency rises","10:31 mitigation via feature flag"]},{"id":"root_cause","label":"Root Cause","description":"Causal technical explanation, often a specific change or missing safeguard.","parent":null,"properties":[],"relations":[{"type":"relates_to","target":"Contributing Factors","label":"supplemented by"},{"type":"relates_to","target":"Fix / Mitigation","label":"addressed by"}],"examples":["Renderer pool limited to 1 after release change","Retry without idempotency key"]},{"id":"fix","label":"Fix / Mitigation","description":"Code change or operational action that resolved the issue.","parent":null,"properties":[],"relations":[{"type":"relates_to","target":"Action Items","label":"followed by"}],"examples":["Restore parallel rendering — PR #1234","Disable retries via feature flag"]},{"id":"action_items","label":"Action Items","description":"Numbered follow-ups with owner, due date, and status.","parent":null,"properties":[],"relations":[{"type":"relates_to","target":"Reporter, Assignee, Owner","label":"owned by"}],"examples":["Add idempotency keys — owner: Payments — due 2026-10-16 — done"]}],"dimensions":[{"id":"record_type","label":"Record Type","description":"Kind of record being written.","values":[]},{"id":"severity","label":"Severity","description":"Scale of technical or business harm.","values":["Severity Scale Values"]},{"id":"failure_domain","label":"Failure Domain","description":"Category of technical failure.","values":[]},{"id":"customer_scope","label":"Blast Radius","description":"Extent of affected users, regions, or environments.","values":[]}],"constraints":[{"id":"review_style","label":"Blameless Tone","description":"Postmortems describe systems and processes, not individuals.","appliesTo":["Reporter, Assignee, Owner"]},{"id":"terse_style","label":"Terse Technical Style","description":"Compact, fact-dense, metric-rich prose with abbreviations and concrete numbers.","appliesTo":["Defect/Incident Record"]},{"id":"consistency","label":"Internal Consistency","description":"Dates, versions, durations, severities and statuses must agree.","appliesTo":["Defect/Incident Record"]}],"promptReady":"# Bug Report & Incident Postmortem Ontology\n\nModels engineering issue-tracking records such as bug tickets and incident postmortems, covering metadata, impact, reproduction or timeline, root cause, and remediation. Used to generate new realistic bug reports and postmortems from a prompt.\n\n**Domain:** engineering\n\n## Classes\n\n### Defect/Incident Record\nTop-level document documenting a software failure and its resolution.\n\n**Properties:**\n- Record Type: Kind of record being written.\n  Examples: Bug ticket, Incident postmortem\n- Identifier and Title: Prefixed ID plus a concise symptom-oriented title.\n  Examples: BUG-7710: Search times out for queries with >10 filters, INC-205 — Login failures in EU region\n- Header Metadata: Compact pipe-separated line(s) of classification and ownership fields.\n  Examples: Project: Orders | Component: api-gateway | Type: Bug\n- Impact Statement: Quantified effect on users, money, error rates.\n  Examples: 900 customers affected; €40,000 refunded, error rate peaked at 7%\n- Root Cause: Causal technical explanation, often a specific change or missing safeguard.\n  Examples: Renderer pool limited to 1 after release change, Retry without idempotency key\n- Detection Method: How the problem was found.\n  Examples: automated alert, customer support tickets\n- Customer Communication: Channels used to notify customers.\n  Examples: status page + email\n\n**Examples:**\n- BUG-1234 export failure\n- INC-100 duplicate charges\n\n### Header Metadata\nCompact pipe-separated line(s) of classification and ownership fields.\n\n**Relations:**\n- includes → Project and Component\n- includes → Severity\n- includes → Priority\n- includes → Status and Workflow\n- includes → Reporter, Assignee, Owner\n- includes → Version and Environment\n- includes → Labels and Links\n\n**Examples:**\n- Project: Orders | Component: api-gateway | Type: Bug\n\n### Reproduction Steps\nNumbered steps with expected vs actual behaviour.\n\n**Relations:**\n- leads to diagnosis → Root Cause\n\n**Examples:**\n- 1. Open report with 21 charts 2. Export. Expected: <30 s. Actual: timeout at 60 s\n\n### Impact Statement\nQuantified effect on users, money, error rates.\n\n**Examples:**\n- 900 customers affected; €40,000 refunded\n- error rate peaked at 7%\n\n### Timeline\nTimestamped sequence from onset to resolution.\n\n**Relations:**\n- yields → Duration / Time to Resolve\n\n**Examples:**\n- 10:05 latency rises\n- 10:31 mitigation via feature flag\n\n### Root Cause\nCausal technical explanation, often a specific change or missing safeguard.\n\n**Relations:**\n- supplemented by → Contributing Factors\n- addressed by → Fix / Mitigation\n\n**Examples:**\n- Renderer pool limited to 1 after release change\n- Retry without idempotency key\n\n### Fix / Mitigation\nCode change or operational action that resolved the issue.\n\n**Relations:**\n- followed by → Action Items\n\n**Examples:**\n- Restore parallel rendering — PR #1234\n- Disable retries via feature flag\n\n### Action Items\nNumbered follow-ups with owner, due date, and status.\n\n**Relations:**\n- owned by → Reporter, Assignee, Owner\n\n**Examples:**\n- Add idempotency keys — owner: Payments — due 2026-10-16 — done\n\n## Dimensions\n\n### Record Type\nKind of record being written.\n\n### Severity\nScale of technical or business harm.\n**Values:** Severity Scale Values\n\n### Failure Domain\nCategory of technical failure.\n\n### Blast Radius\nExtent of affected users, regions, or environments.\n\n## Constraints\n\n- **Blameless Tone** (Reporter, Assignee, Owner): Postmortems describe systems and processes, not individuals.\n- **Terse Technical Style** (Defect/Incident Record): Compact, fact-dense, metric-rich prose with abbreviations and concrete numbers.\n- **Internal Consistency** (Defect/Incident Record): Dates, versions, durations, severities and statuses must agree."}}