From 0ac5ff9359135defab55e99bb7692bfef60ef1cf Mon Sep 17 00:00:00 2001 From: bidetofevil Date: Thu, 5 Feb 2026 14:23:04 -0800 Subject: [PATCH 1/8] SemConv for a basic app crash event --- docs/registry/attributes/app.md | 30 +++++++++++++++++------------ model/app/events.yaml | 34 +++++++++++++++++++++++++++++++++ model/app/registry.yaml | 12 ++++++++++++ 3 files changed, 64 insertions(+), 12 deletions(-) diff --git a/docs/registry/attributes/app.md b/docs/registry/attributes/app.md index a216f68b62..7512bdf2f5 100644 --- a/docs/registry/attributes/app.md +++ b/docs/registry/attributes/app.md @@ -12,18 +12,24 @@ Describes attributes related to client-side applications (e.g. web apps or mobil | Key | Stability | Value Type | Description | Example Values | | --- | --- | --- | --- | --- | | `app.build_id` | ![Development](https://img.shields.io/badge/-development-blue) | string | Unique identifier for a particular build or compilation of the application. | `6cff0a7e-cefc-4668-96f5-1273d8b334d0`; `9f2b833506aa6973a92fde9733e6271f`; `my-app-1.0.0-code-123` | -| `app.installation.id` | ![Development](https://img.shields.io/badge/-development-blue) | string | A unique identifier representing the installation of an application on a specific device [1] | `2ab2916d-a51f-4ac8-80ee-45ac31a28092` | -| `app.jank.frame_count` | ![Development](https://img.shields.io/badge/-development-blue) | int | A number of frame renders that experienced jank. [2] | `9`; `42` | +| `app.crash.id` | ![Development](https://img.shields.io/badge/-development-blue) | string | A unique identifier representing an instance of an end-user facing application being unexpectedly terminated. [1] | `083d3d2d-9a0e-47f8-be3d-bc3c5538ba38` | +| `app.installation.id` | ![Development](https://img.shields.io/badge/-development-blue) | string | A unique identifier representing the installation of an application on a specific device [2] | `2ab2916d-a51f-4ac8-80ee-45ac31a28092` | +| `app.jank.frame_count` | ![Development](https://img.shields.io/badge/-development-blue) | int | A number of frame renders that experienced jank. [3] | `9`; `42` | | `app.jank.period` | ![Development](https://img.shields.io/badge/-development-blue) | double | The time period, in seconds, for which this jank is being reported. | `1.0`; `5.0`; `10.24` | | `app.jank.threshold` | ![Development](https://img.shields.io/badge/-development-blue) | double | The minimum rendering threshold for this jank, in seconds. | `0.016`; `0.7`; `1.024` | | `app.screen.coordinate.x` | ![Development](https://img.shields.io/badge/-development-blue) | int | The x (horizontal) coordinate of a screen coordinate, in screen pixels. | `0`; `131` | | `app.screen.coordinate.y` | ![Development](https://img.shields.io/badge/-development-blue) | int | The y (vertical) component of a screen coordinate, in screen pixels. | `12`; `99` | -| `app.screen.id` | ![Development](https://img.shields.io/badge/-development-blue) | string | An identifier that uniquely differentiates this screen from other screens in the same application. [3] | `f9bc787d-ff05-48ad-90e1-fca1d46130b3`; `com.example.app.MainActivity`; `com.example.shop.ProductDetailFragment`; `MyApp.ProfileView`; `MyApp.ProfileViewController` | -| `app.screen.name` | ![Development](https://img.shields.io/badge/-development-blue) | string | The name of an application screen. [4] | `MainActivity`; `ProductDetailFragment`; `ProfileView`; `ProfileViewController` | -| `app.widget.id` | ![Development](https://img.shields.io/badge/-development-blue) | string | An identifier that uniquely differentiates this widget from other widgets in the same application. [5] | `f9bc787d-ff05-48ad-90e1-fca1d46130b3`; `submit_order_1829` | -| `app.widget.name` | ![Development](https://img.shields.io/badge/-development-blue) | string | The name of an application widget. [6] | `submit`; `attack`; `Clear Cart` | +| `app.screen.id` | ![Development](https://img.shields.io/badge/-development-blue) | string | An identifier that uniquely differentiates this screen from other screens in the same application. [4] | `f9bc787d-ff05-48ad-90e1-fca1d46130b3`; `com.example.app.MainActivity`; `com.example.shop.ProductDetailFragment`; `MyApp.ProfileView`; `MyApp.ProfileViewController` | +| `app.screen.name` | ![Development](https://img.shields.io/badge/-development-blue) | string | The name of an application screen. [5] | `MainActivity`; `ProductDetailFragment`; `ProfileView`; `ProfileViewController` | +| `app.widget.id` | ![Development](https://img.shields.io/badge/-development-blue) | string | An identifier that uniquely differentiates this widget from other widgets in the same application. [6] | `f9bc787d-ff05-48ad-90e1-fca1d46130b3`; `submit_order_1829` | +| `app.widget.name` | ![Development](https://img.shields.io/badge/-development-blue) | string | The name of an application widget. [7] | `submit`; `attack`; `Clear Cart` | -**[1] `app.installation.id`:** Its value SHOULD persist across launches of the same application installation, including through application upgrades. +**[1] `app.crash.id`:** Its value SHOULD be meaningful and COULD be used as a reference for other telemetry and metadata recorded by +the same instrumentation (e.g. it is an ID generated by an external source that captured the crash). +It COULD come from a source external to the instrumentation such that it can be used to look up additional +data from other sources. + +**[2] `app.installation.id`:** Its value SHOULD persist across launches of the same application installation, including through application upgrades. It SHOULD change if the application is uninstalled or if all applications of the vendor are uninstalled. Additionally, users might be able to reset this value (e.g. by clearing application data). If an app is installed multiple times on the same device (e.g. in different accounts on Android), each `app.installation.id` SHOULD have a different value. @@ -41,12 +47,12 @@ For Android, examples of `app.installation.id` implementations include: More information about Android identifier best practices can be found in the [Android user data IDs guide](https://developer.android.com/training/articles/user-data-ids). -**[2] `app.jank.frame_count`:** Depending on platform limitations, the value provided MAY be approximation. +**[3] `app.jank.frame_count`:** Depending on platform limitations, the value provided MAY be approximation. -**[3] `app.screen.id`:** A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets). +**[4] `app.screen.id`:** A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets). -**[4] `app.screen.name`:** A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets). +**[5] `app.screen.name`:** A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets). -**[5] `app.widget.id`:** A widget is an application component, typically an on-screen visual GUI element. +**[6] `app.widget.id`:** A widget is an application component, typically an on-screen visual GUI element. -**[6] `app.widget.name`:** A widget is an application component, typically an on-screen visual GUI element. +**[7] `app.widget.name`:** A widget is an application component, typically an on-screen visual GUI element. diff --git a/model/app/events.yaml b/model/app/events.yaml index edbd7d5f04..b6e27d8dba 100644 --- a/model/app/events.yaml +++ b/model/app/events.yaml @@ -1,4 +1,38 @@ groups: + - id: event.app.crash + stability: development + type: event + name: app.crash + brief: > + This event represents an unexpected termination of a user-facing application. + note: | + This event identifies an app crash, defined as an unexpected termination + of a user-facing application. It can be recorded synchronously with the crashing + of the app just prior to the termination of the application process or + asynchronously some time after. + How the instrumentation will determine whether an instance of a crash has + already been reported and how the necessary data will be retrieved is + left up to the instrumentation. + Attributes defined in this event denote the state of the app when the crash + happened, not when the event was created. Therefore, what are normally obtained + from Resource attributes like OS and service versions that are also specified in + the event MUST be retreived from the event itself. In other words, attributes in + the event override their equivalents in the Resource, and any related attributes + not specified MUST be assumed to be on the Resource (e.g. if service.version is + specified but service.name is not, it is assume it will be in the Resource). + attributes: + - ref: app.crash.id + requirement_level: required + - ref: os.name + requirement_level: recommended + - ref: os.version + requirement_level: recommended + - ref: service.name + requirement_level: recommended + - ref: service.version + requirement_level: recommended + - ref: session.id + requirement_level: recommended - id: event.app.screen.click stability: development type: event diff --git a/model/app/registry.yaml b/model/app/registry.yaml index 7c704bf10f..0ebb20d664 100644 --- a/model/app/registry.yaml +++ b/model/app/registry.yaml @@ -6,6 +6,18 @@ groups: Describes attributes related to client-side applications (e.g. web apps or mobile apps). stability: development attributes: + - id: app.crash.id + type: string + stability: development + brief: > + A unique identifier representing an instance of an end-user facing application being unexpectedly terminated. + note: | + Its value SHOULD be meaningful and COULD be used as a reference for other telemetry and metadata recorded by + the same instrumentation (e.g. it is an ID generated by an external source that captured the crash). + It COULD come from a source external to the instrumentation such that it can be used to look up additional + data from other sources. + examples: + - 083d3d2d-9a0e-47f8-be3d-bc3c5538ba38 - id: app.installation.id type: string stability: development From 8f50d0f1796afd21668f26b4e6c0faf636e9c833 Mon Sep 17 00:00:00 2001 From: bidetofevil Date: Tue, 17 Feb 2026 12:29:04 -0800 Subject: [PATCH 2/8] Strip down basic attributes for app.crash --- docs/registry/attributes/app.md | 48 ++++++++++++++++++++---------- model/app/events.yaml | 52 +++++++++++++++++++++------------ model/app/registry.yaml | 24 ++++++++++++++- 3 files changed, 89 insertions(+), 35 deletions(-) diff --git a/docs/registry/attributes/app.md b/docs/registry/attributes/app.md index 7512bdf2f5..cdcfc2524b 100644 --- a/docs/registry/attributes/app.md +++ b/docs/registry/attributes/app.md @@ -11,25 +11,43 @@ Describes attributes related to client-side applications (e.g. web apps or mobil | Key | Stability | Value Type | Description | Example Values | | --- | --- | --- | --- | --- | +| `app.async` | ![Development](https://img.shields.io/badge/-development-blue) | boolean | Indicates whether the telemetry being modelled was recorded in the same app instance as it occurred. [1] | | | `app.build_id` | ![Development](https://img.shields.io/badge/-development-blue) | string | Unique identifier for a particular build or compilation of the application. | `6cff0a7e-cefc-4668-96f5-1273d8b334d0`; `9f2b833506aa6973a92fde9733e6271f`; `my-app-1.0.0-code-123` | -| `app.crash.id` | ![Development](https://img.shields.io/badge/-development-blue) | string | A unique identifier representing an instance of an end-user facing application being unexpectedly terminated. [1] | `083d3d2d-9a0e-47f8-be3d-bc3c5538ba38` | -| `app.installation.id` | ![Development](https://img.shields.io/badge/-development-blue) | string | A unique identifier representing the installation of an application on a specific device [2] | `2ab2916d-a51f-4ac8-80ee-45ac31a28092` | -| `app.jank.frame_count` | ![Development](https://img.shields.io/badge/-development-blue) | int | A number of frame renders that experienced jank. [3] | `9`; `42` | +| `app.crash.id` | ![Development](https://img.shields.io/badge/-development-blue) | string | A unique identifier representing an instance of an end-user facing application being unexpectedly terminated. [2] | `083d3d2d-9a0e-47f8-be3d-bc3c5538ba38` | +| `app.installation.id` | ![Development](https://img.shields.io/badge/-development-blue) | string | A unique identifier representing the installation of an application on a specific device [3] | `2ab2916d-a51f-4ac8-80ee-45ac31a28092` | +| `app.jank.frame_count` | ![Development](https://img.shields.io/badge/-development-blue) | int | A number of frame renders that experienced jank. [4] | `9`; `42` | | `app.jank.period` | ![Development](https://img.shields.io/badge/-development-blue) | double | The time period, in seconds, for which this jank is being reported. | `1.0`; `5.0`; `10.24` | | `app.jank.threshold` | ![Development](https://img.shields.io/badge/-development-blue) | double | The minimum rendering threshold for this jank, in seconds. | `0.016`; `0.7`; `1.024` | | `app.screen.coordinate.x` | ![Development](https://img.shields.io/badge/-development-blue) | int | The x (horizontal) coordinate of a screen coordinate, in screen pixels. | `0`; `131` | | `app.screen.coordinate.y` | ![Development](https://img.shields.io/badge/-development-blue) | int | The y (vertical) component of a screen coordinate, in screen pixels. | `12`; `99` | -| `app.screen.id` | ![Development](https://img.shields.io/badge/-development-blue) | string | An identifier that uniquely differentiates this screen from other screens in the same application. [4] | `f9bc787d-ff05-48ad-90e1-fca1d46130b3`; `com.example.app.MainActivity`; `com.example.shop.ProductDetailFragment`; `MyApp.ProfileView`; `MyApp.ProfileViewController` | -| `app.screen.name` | ![Development](https://img.shields.io/badge/-development-blue) | string | The name of an application screen. [5] | `MainActivity`; `ProductDetailFragment`; `ProfileView`; `ProfileViewController` | -| `app.widget.id` | ![Development](https://img.shields.io/badge/-development-blue) | string | An identifier that uniquely differentiates this widget from other widgets in the same application. [6] | `f9bc787d-ff05-48ad-90e1-fca1d46130b3`; `submit_order_1829` | -| `app.widget.name` | ![Development](https://img.shields.io/badge/-development-blue) | string | The name of an application widget. [7] | `submit`; `attack`; `Clear Cart` | - -**[1] `app.crash.id`:** Its value SHOULD be meaningful and COULD be used as a reference for other telemetry and metadata recorded by +| `app.screen.id` | ![Development](https://img.shields.io/badge/-development-blue) | string | An identifier that uniquely differentiates this screen from other screens in the same application. [5] | `f9bc787d-ff05-48ad-90e1-fca1d46130b3`; `com.example.app.MainActivity`; `com.example.shop.ProductDetailFragment`; `MyApp.ProfileView`; `MyApp.ProfileViewController` | +| `app.screen.name` | ![Development](https://img.shields.io/badge/-development-blue) | string | The name of an application screen. [6] | `MainActivity`; `ProductDetailFragment`; `ProfileView`; `ProfileViewController` | +| `app.widget.id` | ![Development](https://img.shields.io/badge/-development-blue) | string | An identifier that uniquely differentiates this widget from other widgets in the same application. [7] | `f9bc787d-ff05-48ad-90e1-fca1d46130b3`; `submit_order_1829` | +| `app.widget.name` | ![Development](https://img.shields.io/badge/-development-blue) | string | The name of an application widget. [8] | `submit`; `attack`; `Clear Cart` | + +**[1] `app.async`:** Instrumentation typically captures and records telemetry in the app instance in which it was running. +Therefore, the Resource that identifies the SDK instance represents both the state of the app when +the telemetry details were captured, and when the signal was produced. +However, the source that provides details about certain happenings in the app can only do so +asynchronously, so the SDK instance that produces the signal may not be running from the same app +instance as what signal's data represents, which may only be available after the app terminates. +For instance, for an `app.crash` event, the details of the crash or even the fact that it happened +may only be provided by OS after the app has been terminate via a tombstomb, so the only way to report +the event is by reading the tombstone the next time the app starts up. +If this attribute is provided and its value is `true`, additional attributes that define the state of +the app at the time when the event occurred normally taken from the Resource MUST be provided if +they differ from the attributes in the Resource of the SDK instance producing the signal. +In other words, attributes in the signal override their equivalents in the Resource. +Further, any related attributes not specified in the signal MUST be taken from the Resource (e.g. +if `service.version` is specified but `service.name` is not, it is assume it will be in the Resource). +For telemetry that omits this attribute, it SHOULD be assumed that it was NOT recorded asynchronously. + +**[2] `app.crash.id`:** Its value COULD be meaningful and be used as a reference for other telemetry and metadata recorded by the same instrumentation (e.g. it is an ID generated by an external source that captured the crash). It COULD come from a source external to the instrumentation such that it can be used to look up additional data from other sources. -**[2] `app.installation.id`:** Its value SHOULD persist across launches of the same application installation, including through application upgrades. +**[3] `app.installation.id`:** Its value SHOULD persist across launches of the same application installation, including through application upgrades. It SHOULD change if the application is uninstalled or if all applications of the vendor are uninstalled. Additionally, users might be able to reset this value (e.g. by clearing application data). If an app is installed multiple times on the same device (e.g. in different accounts on Android), each `app.installation.id` SHOULD have a different value. @@ -47,12 +65,12 @@ For Android, examples of `app.installation.id` implementations include: More information about Android identifier best practices can be found in the [Android user data IDs guide](https://developer.android.com/training/articles/user-data-ids). -**[3] `app.jank.frame_count`:** Depending on platform limitations, the value provided MAY be approximation. +**[4] `app.jank.frame_count`:** Depending on platform limitations, the value provided MAY be approximation. -**[4] `app.screen.id`:** A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets). +**[5] `app.screen.id`:** A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets). -**[5] `app.screen.name`:** A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets). +**[6] `app.screen.name`:** A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets). -**[6] `app.widget.id`:** A widget is an application component, typically an on-screen visual GUI element. +**[7] `app.widget.id`:** A widget is an application component, typically an on-screen visual GUI element. -**[7] `app.widget.name`:** A widget is an application component, typically an on-screen visual GUI element. +**[8] `app.widget.name`:** A widget is an application component, typically an on-screen visual GUI element. diff --git a/model/app/events.yaml b/model/app/events.yaml index b6e27d8dba..08e107ded6 100644 --- a/model/app/events.yaml +++ b/model/app/events.yaml @@ -3,34 +3,48 @@ groups: stability: development type: event name: app.crash - brief: > - This event represents an unexpected termination of a user-facing application. + brief: | + This event represents a termination of a user-facing application due to + unrecoverable programming errors such as exceptions or signals that + indicate an error has happened at a lower level. note: | - This event identifies an app crash, defined as an unexpected termination - of a user-facing application. It can be recorded synchronously with the crashing - of the app just prior to the termination of the application process or - asynchronously some time after. + This event identifies the crash of an end-user facing app, a specific type + of unexpected app termination defined in the `brief` section. It is intended + to provide a basic schema that can be used for all crashes, but it existence + does not preclude other, more narrow events to be defined with more extensive + schemas to handle specific crash scenarios on specific platforms. + Crash events can be produced asynchronously, so it can contain attributes + that are normally provided by the SDK Resource. See the definition of + `app.async` for more details about how to use them as it pertains to crashes. How the instrumentation will determine whether an instance of a crash has - already been reported and how the necessary data will be retrieved is - left up to the instrumentation. - Attributes defined in this event denote the state of the app when the crash - happened, not when the event was created. Therefore, what are normally obtained - from Resource attributes like OS and service versions that are also specified in - the event MUST be retreived from the event itself. In other words, attributes in - the event override their equivalents in the Resource, and any related attributes - not specified MUST be assumed to be on the Resource (e.g. if service.version is - specified but service.name is not, it is assume it will be in the Resource). + already been reported and how the necessary data will be retrieved is left up + to the instrumentation. Providing enough data to dedupe is NOT REQUIRED. attributes: + - ref: app.async + requirement_level: opt_in + - ref: app.build_id + requirement_level: + conditionally_required: Recommended if `app.async` is set, opt_in otherwise. - ref: app.crash.id requirement_level: required + - ref: exception.type + requirement_level: opt_in + - ref: exception.message + requirement_level: opt_in + - ref: exception.stacktrace + requirement_level: opt_in - ref: os.name - requirement_level: recommended + requirement_level: + conditionally_required: Recommended if `app.async` is set, opt_in otherwise. - ref: os.version - requirement_level: recommended + requirement_level: + conditionally_required: Recommended if `app.async` is set, opt_in otherwise. - ref: service.name - requirement_level: recommended + requirement_level: + conditionally_required: Recommended if `app.async` is set, opt_in otherwise. - ref: service.version - requirement_level: recommended + requirement_level: + conditionally_required: Recommended if `app.async` is set, opt_in otherwise. - ref: session.id requirement_level: recommended - id: event.app.screen.click diff --git a/model/app/registry.yaml b/model/app/registry.yaml index 0ebb20d664..f2602cd2bf 100644 --- a/model/app/registry.yaml +++ b/model/app/registry.yaml @@ -6,13 +6,35 @@ groups: Describes attributes related to client-side applications (e.g. web apps or mobile apps). stability: development attributes: + - id: app.async + type: boolean + stability: development + brief: > + Indicates whether the telemetry being modelled was recorded in the same app instance as it occurred. + note: | + Instrumentation typically captures and records telemetry in the app instance in which it was running. + Therefore, the Resource that identifies the SDK instance represents both the state of the app when + the telemetry details were captured, and when the signal was produced. + However, the source that provides details about certain happenings in the app can only do so + asynchronously, so the SDK instance that produces the signal may not be running from the same app + instance as what signal's data represents, which may only be available after the app terminates. + For instance, for an `app.crash` event, the details of the crash or even the fact that it happened + may only be provided by OS after the app has been terminate via a tombstomb, so the only way to report + the event is by reading the tombstone the next time the app starts up. + If this attribute is provided and its value is `true`, additional attributes that define the state of + the app at the time when the event occurred normally taken from the Resource MUST be provided if + they differ from the attributes in the Resource of the SDK instance producing the signal. + In other words, attributes in the signal override their equivalents in the Resource. + Further, any related attributes not specified in the signal MUST be taken from the Resource (e.g. + if `service.version` is specified but `service.name` is not, it is assume it will be in the Resource). + For telemetry that omits this attribute, it SHOULD be assumed that it was NOT recorded asynchronously. - id: app.crash.id type: string stability: development brief: > A unique identifier representing an instance of an end-user facing application being unexpectedly terminated. note: | - Its value SHOULD be meaningful and COULD be used as a reference for other telemetry and metadata recorded by + Its value COULD be meaningful and be used as a reference for other telemetry and metadata recorded by the same instrumentation (e.g. it is an ID generated by an external source that captured the crash). It COULD come from a source external to the instrumentation such that it can be used to look up additional data from other sources. From 4a003906fb4d9a0909e9cf67782f922005926bd4 Mon Sep 17 00:00:00 2001 From: bidetofevil Date: Tue, 17 Feb 2026 13:41:51 -0800 Subject: [PATCH 3/8] Add changelog yaml --- .chloggen/basic-crash-event.yaml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .chloggen/basic-crash-event.yaml diff --git a/.chloggen/basic-crash-event.yaml b/.chloggen/basic-crash-event.yaml new file mode 100644 index 0000000000..41de15ceb9 --- /dev/null +++ b/.chloggen/basic-crash-event.yaml @@ -0,0 +1,22 @@ +# Use this changelog template to create an entry for release notes. +# +# If your change doesn't affect end users you should instead start +# your pull request title with [chore] or use the "Skip Changelog" label. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: enhancement + +# The name of the area of concern in the attributes-registry, (e.g. http, cloud, db) +component: app + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Defines a basic crash of an end-user facing app that requires a minimal amount of information. + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +# The values here must be integers. +issues: [3448] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: From 1e6d5e00cf6164a8dcb1c9f2652554f39469b659 Mon Sep 17 00:00:00 2001 From: bidetofevil Date: Tue, 17 Feb 2026 13:46:02 -0800 Subject: [PATCH 4/8] Add guidence of how to use exception attributes --- model/app/events.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/model/app/events.yaml b/model/app/events.yaml index 08e107ded6..9801704900 100644 --- a/model/app/events.yaml +++ b/model/app/events.yaml @@ -19,6 +19,13 @@ groups: How the instrumentation will determine whether an instance of a crash has already been reported and how the necessary data will be retrieved is left up to the instrumentation. Providing enough data to dedupe is NOT REQUIRED. + If `exception` attributes are used, it indicates that the exception represented + by those attributes caused the crash. When used, these attributes SHOULD be + usable for debugging without additional data not specified in the event + (e.g. stacktrace already deobfuscated). If that is not the case, additional + information like `app.build.id` SHOULD be provided to make the data useful for + debugging, either as an attribute in this event or derived from the Resource if + `app.sync` is not true. attributes: - ref: app.async requirement_level: opt_in From bbe47d7a4861b3c8029ec7bdc27302edb10f9ab4 Mon Sep 17 00:00:00 2001 From: bidetofevil Date: Wed, 18 Feb 2026 10:06:35 -0800 Subject: [PATCH 5/8] Update after review comments --- model/app/events.yaml | 4 ++-- model/app/registry.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/model/app/events.yaml b/model/app/events.yaml index 9801704900..61d769ee9a 100644 --- a/model/app/events.yaml +++ b/model/app/events.yaml @@ -23,7 +23,7 @@ groups: by those attributes caused the crash. When used, these attributes SHOULD be usable for debugging without additional data not specified in the event (e.g. stacktrace already deobfuscated). If that is not the case, additional - information like `app.build.id` SHOULD be provided to make the data useful for + information like `app.build_id` SHOULD be provided to make the data useful for debugging, either as an attribute in this event or derived from the Resource if `app.sync` is not true. attributes: @@ -33,7 +33,7 @@ groups: requirement_level: conditionally_required: Recommended if `app.async` is set, opt_in otherwise. - ref: app.crash.id - requirement_level: required + requirement_level: opt_in - ref: exception.type requirement_level: opt_in - ref: exception.message diff --git a/model/app/registry.yaml b/model/app/registry.yaml index f2602cd2bf..853c8922a2 100644 --- a/model/app/registry.yaml +++ b/model/app/registry.yaml @@ -32,12 +32,12 @@ groups: type: string stability: development brief: > - A unique identifier representing an instance of an end-user facing application being unexpectedly terminated. + A unique identifier representing an instance of an end-user facing app crash. note: | Its value COULD be meaningful and be used as a reference for other telemetry and metadata recorded by the same instrumentation (e.g. it is an ID generated by an external source that captured the crash). It COULD come from a source external to the instrumentation such that it can be used to look up additional - data from other sources. + data from other sources as well as facilitate deduplication. examples: - 083d3d2d-9a0e-47f8-be3d-bc3c5538ba38 - id: app.installation.id From 4a1a5b7c806a75e9ae16e24e141195a08c4cd80d Mon Sep 17 00:00:00 2001 From: bidetofevil Date: Tue, 14 Apr 2026 09:09:05 -0700 Subject: [PATCH 6/8] Remove app.async attribute definition for now --- docs/registry/attributes/app.md | 50 +++++++++++---------------------- model/app/events.yaml | 28 ++++++++---------- model/app/registry.yaml | 22 --------------- 3 files changed, 27 insertions(+), 73 deletions(-) diff --git a/docs/registry/attributes/app.md b/docs/registry/attributes/app.md index cdcfc2524b..c73d4d554c 100644 --- a/docs/registry/attributes/app.md +++ b/docs/registry/attributes/app.md @@ -11,43 +11,25 @@ Describes attributes related to client-side applications (e.g. web apps or mobil | Key | Stability | Value Type | Description | Example Values | | --- | --- | --- | --- | --- | -| `app.async` | ![Development](https://img.shields.io/badge/-development-blue) | boolean | Indicates whether the telemetry being modelled was recorded in the same app instance as it occurred. [1] | | | `app.build_id` | ![Development](https://img.shields.io/badge/-development-blue) | string | Unique identifier for a particular build or compilation of the application. | `6cff0a7e-cefc-4668-96f5-1273d8b334d0`; `9f2b833506aa6973a92fde9733e6271f`; `my-app-1.0.0-code-123` | -| `app.crash.id` | ![Development](https://img.shields.io/badge/-development-blue) | string | A unique identifier representing an instance of an end-user facing application being unexpectedly terminated. [2] | `083d3d2d-9a0e-47f8-be3d-bc3c5538ba38` | -| `app.installation.id` | ![Development](https://img.shields.io/badge/-development-blue) | string | A unique identifier representing the installation of an application on a specific device [3] | `2ab2916d-a51f-4ac8-80ee-45ac31a28092` | -| `app.jank.frame_count` | ![Development](https://img.shields.io/badge/-development-blue) | int | A number of frame renders that experienced jank. [4] | `9`; `42` | +| `app.crash.id` | ![Development](https://img.shields.io/badge/-development-blue) | string | A unique identifier representing an instance of an end-user facing app crash. [1] | `083d3d2d-9a0e-47f8-be3d-bc3c5538ba38` | +| `app.installation.id` | ![Development](https://img.shields.io/badge/-development-blue) | string | A unique identifier representing the installation of an application on a specific device [2] | `2ab2916d-a51f-4ac8-80ee-45ac31a28092` | +| `app.jank.frame_count` | ![Development](https://img.shields.io/badge/-development-blue) | int | A number of frame renders that experienced jank. [3] | `9`; `42` | | `app.jank.period` | ![Development](https://img.shields.io/badge/-development-blue) | double | The time period, in seconds, for which this jank is being reported. | `1.0`; `5.0`; `10.24` | | `app.jank.threshold` | ![Development](https://img.shields.io/badge/-development-blue) | double | The minimum rendering threshold for this jank, in seconds. | `0.016`; `0.7`; `1.024` | | `app.screen.coordinate.x` | ![Development](https://img.shields.io/badge/-development-blue) | int | The x (horizontal) coordinate of a screen coordinate, in screen pixels. | `0`; `131` | | `app.screen.coordinate.y` | ![Development](https://img.shields.io/badge/-development-blue) | int | The y (vertical) component of a screen coordinate, in screen pixels. | `12`; `99` | -| `app.screen.id` | ![Development](https://img.shields.io/badge/-development-blue) | string | An identifier that uniquely differentiates this screen from other screens in the same application. [5] | `f9bc787d-ff05-48ad-90e1-fca1d46130b3`; `com.example.app.MainActivity`; `com.example.shop.ProductDetailFragment`; `MyApp.ProfileView`; `MyApp.ProfileViewController` | -| `app.screen.name` | ![Development](https://img.shields.io/badge/-development-blue) | string | The name of an application screen. [6] | `MainActivity`; `ProductDetailFragment`; `ProfileView`; `ProfileViewController` | -| `app.widget.id` | ![Development](https://img.shields.io/badge/-development-blue) | string | An identifier that uniquely differentiates this widget from other widgets in the same application. [7] | `f9bc787d-ff05-48ad-90e1-fca1d46130b3`; `submit_order_1829` | -| `app.widget.name` | ![Development](https://img.shields.io/badge/-development-blue) | string | The name of an application widget. [8] | `submit`; `attack`; `Clear Cart` | - -**[1] `app.async`:** Instrumentation typically captures and records telemetry in the app instance in which it was running. -Therefore, the Resource that identifies the SDK instance represents both the state of the app when -the telemetry details were captured, and when the signal was produced. -However, the source that provides details about certain happenings in the app can only do so -asynchronously, so the SDK instance that produces the signal may not be running from the same app -instance as what signal's data represents, which may only be available after the app terminates. -For instance, for an `app.crash` event, the details of the crash or even the fact that it happened -may only be provided by OS after the app has been terminate via a tombstomb, so the only way to report -the event is by reading the tombstone the next time the app starts up. -If this attribute is provided and its value is `true`, additional attributes that define the state of -the app at the time when the event occurred normally taken from the Resource MUST be provided if -they differ from the attributes in the Resource of the SDK instance producing the signal. -In other words, attributes in the signal override their equivalents in the Resource. -Further, any related attributes not specified in the signal MUST be taken from the Resource (e.g. -if `service.version` is specified but `service.name` is not, it is assume it will be in the Resource). -For telemetry that omits this attribute, it SHOULD be assumed that it was NOT recorded asynchronously. - -**[2] `app.crash.id`:** Its value COULD be meaningful and be used as a reference for other telemetry and metadata recorded by +| `app.screen.id` | ![Development](https://img.shields.io/badge/-development-blue) | string | An identifier that uniquely differentiates this screen from other screens in the same application. [4] | `f9bc787d-ff05-48ad-90e1-fca1d46130b3`; `com.example.app.MainActivity`; `com.example.shop.ProductDetailFragment`; `MyApp.ProfileView`; `MyApp.ProfileViewController` | +| `app.screen.name` | ![Development](https://img.shields.io/badge/-development-blue) | string | The name of an application screen. [5] | `MainActivity`; `ProductDetailFragment`; `ProfileView`; `ProfileViewController` | +| `app.widget.id` | ![Development](https://img.shields.io/badge/-development-blue) | string | An identifier that uniquely differentiates this widget from other widgets in the same application. [6] | `f9bc787d-ff05-48ad-90e1-fca1d46130b3`; `submit_order_1829` | +| `app.widget.name` | ![Development](https://img.shields.io/badge/-development-blue) | string | The name of an application widget. [7] | `submit`; `attack`; `Clear Cart` | + +**[1] `app.crash.id`:** Its value COULD be meaningful and be used as a reference for other telemetry and metadata recorded by the same instrumentation (e.g. it is an ID generated by an external source that captured the crash). It COULD come from a source external to the instrumentation such that it can be used to look up additional -data from other sources. +data from other sources as well as facilitate deduplication. -**[3] `app.installation.id`:** Its value SHOULD persist across launches of the same application installation, including through application upgrades. +**[2] `app.installation.id`:** Its value SHOULD persist across launches of the same application installation, including through application upgrades. It SHOULD change if the application is uninstalled or if all applications of the vendor are uninstalled. Additionally, users might be able to reset this value (e.g. by clearing application data). If an app is installed multiple times on the same device (e.g. in different accounts on Android), each `app.installation.id` SHOULD have a different value. @@ -65,12 +47,12 @@ For Android, examples of `app.installation.id` implementations include: More information about Android identifier best practices can be found in the [Android user data IDs guide](https://developer.android.com/training/articles/user-data-ids). -**[4] `app.jank.frame_count`:** Depending on platform limitations, the value provided MAY be approximation. +**[3] `app.jank.frame_count`:** Depending on platform limitations, the value provided MAY be approximation. -**[5] `app.screen.id`:** A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets). +**[4] `app.screen.id`:** A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets). -**[6] `app.screen.name`:** A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets). +**[5] `app.screen.name`:** A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets). -**[7] `app.widget.id`:** A widget is an application component, typically an on-screen visual GUI element. +**[6] `app.widget.id`:** A widget is an application component, typically an on-screen visual GUI element. -**[8] `app.widget.name`:** A widget is an application component, typically an on-screen visual GUI element. +**[7] `app.widget.name`:** A widget is an application component, typically an on-screen visual GUI element. diff --git a/model/app/events.yaml b/model/app/events.yaml index 61d769ee9a..a6880f8124 100644 --- a/model/app/events.yaml +++ b/model/app/events.yaml @@ -13,9 +13,10 @@ groups: to provide a basic schema that can be used for all crashes, but it existence does not preclude other, more narrow events to be defined with more extensive schemas to handle specific crash scenarios on specific platforms. - Crash events can be produced asynchronously, so it can contain attributes - that are normally provided by the SDK Resource. See the definition of - `app.async` for more details about how to use them as it pertains to crashes. + Crash events can be produced asynchronously by another SDK instance, so it + can contain attributes that are normally provided by the SDK Resource. The + appearance of any of those attributes (e.g. app.build_id) means they should + be used instead of the ones provided in the Resource. How the instrumentation will determine whether an instance of a crash has already been reported and how the necessary data will be retrieved is left up to the instrumentation. Providing enough data to dedupe is NOT REQUIRED. @@ -24,14 +25,11 @@ groups: usable for debugging without additional data not specified in the event (e.g. stacktrace already deobfuscated). If that is not the case, additional information like `app.build_id` SHOULD be provided to make the data useful for - debugging, either as an attribute in this event or derived from the Resource if - `app.sync` is not true. + debugging, either derived from the Resource or as attributes in this event if + they differ from what is defined there (in the asynchronous case). attributes: - - ref: app.async - requirement_level: opt_in - ref: app.build_id - requirement_level: - conditionally_required: Recommended if `app.async` is set, opt_in otherwise. + requirement_level: opt_in - ref: app.crash.id requirement_level: opt_in - ref: exception.type @@ -41,17 +39,13 @@ groups: - ref: exception.stacktrace requirement_level: opt_in - ref: os.name - requirement_level: - conditionally_required: Recommended if `app.async` is set, opt_in otherwise. + requirement_level: opt_in - ref: os.version - requirement_level: - conditionally_required: Recommended if `app.async` is set, opt_in otherwise. + requirement_level: opt_in - ref: service.name - requirement_level: - conditionally_required: Recommended if `app.async` is set, opt_in otherwise. + requirement_level: opt_in - ref: service.version - requirement_level: - conditionally_required: Recommended if `app.async` is set, opt_in otherwise. + requirement_level: opt_in - ref: session.id requirement_level: recommended - id: event.app.screen.click diff --git a/model/app/registry.yaml b/model/app/registry.yaml index 853c8922a2..d139752593 100644 --- a/model/app/registry.yaml +++ b/model/app/registry.yaml @@ -6,28 +6,6 @@ groups: Describes attributes related to client-side applications (e.g. web apps or mobile apps). stability: development attributes: - - id: app.async - type: boolean - stability: development - brief: > - Indicates whether the telemetry being modelled was recorded in the same app instance as it occurred. - note: | - Instrumentation typically captures and records telemetry in the app instance in which it was running. - Therefore, the Resource that identifies the SDK instance represents both the state of the app when - the telemetry details were captured, and when the signal was produced. - However, the source that provides details about certain happenings in the app can only do so - asynchronously, so the SDK instance that produces the signal may not be running from the same app - instance as what signal's data represents, which may only be available after the app terminates. - For instance, for an `app.crash` event, the details of the crash or even the fact that it happened - may only be provided by OS after the app has been terminate via a tombstomb, so the only way to report - the event is by reading the tombstone the next time the app starts up. - If this attribute is provided and its value is `true`, additional attributes that define the state of - the app at the time when the event occurred normally taken from the Resource MUST be provided if - they differ from the attributes in the Resource of the SDK instance producing the signal. - In other words, attributes in the signal override their equivalents in the Resource. - Further, any related attributes not specified in the signal MUST be taken from the Resource (e.g. - if `service.version` is specified but `service.name` is not, it is assume it will be in the Resource). - For telemetry that omits this attribute, it SHOULD be assumed that it was NOT recorded asynchronously. - id: app.crash.id type: string stability: development From 6b6413cbeb2ce6074a74fbaa41153614ee3c17d9 Mon Sep 17 00:00:00 2001 From: bidetofevil Date: Tue, 21 Apr 2026 09:01:11 -0700 Subject: [PATCH 7/8] Update markdown --- docs/app/app-events.md | 71 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/docs/app/app-events.md b/docs/app/app-events.md index c42c4e255d..e463664949 100644 --- a/docs/app/app-events.md +++ b/docs/app/app-events.md @@ -14,6 +14,8 @@ This document defines events related to client-side applications - [Click Events](#click-events) - [Event: `app.screen.click`](#event-appscreenclick) - [Event: `app.widget.click`](#event-appwidgetclick) +- [Crash Event](#crash-event) + - [Event: `app.crash`](#event-appcrash) - [Jank Event](#jank-event) - [Event: `app.jank`](#event-appjank) - [Attributes](#attributes) @@ -92,6 +94,75 @@ Use this event to indicate that visual application component has been clicked, t +## Crash Event + +### Event: `app.crash` + + + + + + +**Status:** ![Development](https://img.shields.io/badge/-development-blue) + +The event name MUST be `app.crash`. + +This event represents a termination of a user-facing application due to +unrecoverable programming errors such as exceptions or signals that +indicate an error has happened at a lower level. + +This event identifies the crash of an end-user facing app, a specific type +of unexpected app termination defined in the `brief` section. It is intended +to provide a basic schema that can be used for all crashes, but it existence +does not preclude other, more narrow events to be defined with more extensive +schemas to handle specific crash scenarios on specific platforms. +Crash events can be produced asynchronously by another SDK instance, so it +can contain attributes that are normally provided by the SDK Resource. The +appearance of any of those attributes (e.g. app.build_id) means they should +be used instead of the ones provided in the Resource. +How the instrumentation will determine whether an instance of a crash has +already been reported and how the necessary data will be retrieved is left up +to the instrumentation. Providing enough data to dedupe is NOT REQUIRED. +If `exception` attributes are used, it indicates that the exception represented +by those attributes caused the crash. When used, these attributes SHOULD be +usable for debugging without additional data not specified in the event +(e.g. stacktrace already deobfuscated). If that is not the case, additional +information like `app.build_id` SHOULD be provided to make the data useful for +debugging, either derived from the Resource or as attributes in this event if +they differ from what is defined there (in the asynchronous case). + +**Attributes:** + +| Key | Stability | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Value Type | Description | Example Values | +| --- | --- | --- | --- | --- | --- | +| [`session.id`](/docs/registry/attributes/session.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Recommended` | string | A unique id to identify a session. | `00112233-4455-6677-8899-aabbccddeeff` | +| [`app.build_id`](/docs/registry/attributes/app.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | Unique identifier for a particular build or compilation of the application. | `6cff0a7e-cefc-4668-96f5-1273d8b334d0`; `9f2b833506aa6973a92fde9733e6271f`; `my-app-1.0.0-code-123` | +| [`app.crash.id`](/docs/registry/attributes/app.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | A unique identifier representing an instance of an end-user facing app crash. [1] | `083d3d2d-9a0e-47f8-be3d-bc3c5538ba38` | +| [`exception.message`](/docs/registry/attributes/exception.md) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | `Opt-In` | string | The exception message. [2] | `Division by zero`; `Can't convert 'int' object to str implicitly` | +| [`exception.stacktrace`](/docs/registry/attributes/exception.md) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | `Opt-In` | string | A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG. | `Exception in thread "main" java.lang.RuntimeException: Test exception\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at com.example.GenerateTrace.main(GenerateTrace.java:5)` | +| [`exception.type`](/docs/registry/attributes/exception.md) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | `Opt-In` | string | The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it. | `java.net.ConnectException`; `OSError` | +| [`os.name`](/docs/registry/attributes/os.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | Human readable operating system name. | `iOS`; `Android`; `Ubuntu` | +| [`os.version`](/docs/registry/attributes/os.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). | `14.2.1`; `18.04.1` | +| [`service.name`](/docs/registry/attributes/service.md) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | `Opt-In` | string | Logical name of the service. [3] | `shoppingcart` | +| [`service.version`](/docs/registry/attributes/service.md) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | `Opt-In` | string | The version string of the service component. The format is not defined by these conventions. | `2.0.0`; `a01dbef8a` | + +**[1] `app.crash.id`:** Its value COULD be meaningful and be used as a reference for other telemetry and metadata recorded by +the same instrumentation (e.g. it is an ID generated by an external source that captured the crash). +It COULD come from a source external to the instrumentation such that it can be used to look up additional +data from other sources as well as facilitate deduplication. + +**[2] `exception.message`:** + +> [!WARNING] +> +> This attribute may contain sensitive information. + +**[3] `service.name`:** MUST be the same for all instances of horizontally scaled services. If the value was not specified, SDKs MUST fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value MUST be set to `unknown_service`. + + + + + ## Jank Event ### Event: `app.jank` From ff0fe1ccd69bb51f5a2d4de511f6ad7fbcf9a438 Mon Sep 17 00:00:00 2001 From: bidetofevil Date: Tue, 21 Apr 2026 09:16:11 -0700 Subject: [PATCH 8/8] Remove service.name as an optional attribute for now --- docs/app/app-events.md | 3 --- model/app/events.yaml | 2 -- 2 files changed, 5 deletions(-) diff --git a/docs/app/app-events.md b/docs/app/app-events.md index e463664949..f7ae0d4c43 100644 --- a/docs/app/app-events.md +++ b/docs/app/app-events.md @@ -143,7 +143,6 @@ they differ from what is defined there (in the asynchronous case). | [`exception.type`](/docs/registry/attributes/exception.md) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | `Opt-In` | string | The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it. | `java.net.ConnectException`; `OSError` | | [`os.name`](/docs/registry/attributes/os.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | Human readable operating system name. | `iOS`; `Android`; `Ubuntu` | | [`os.version`](/docs/registry/attributes/os.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). | `14.2.1`; `18.04.1` | -| [`service.name`](/docs/registry/attributes/service.md) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | `Opt-In` | string | Logical name of the service. [3] | `shoppingcart` | | [`service.version`](/docs/registry/attributes/service.md) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | `Opt-In` | string | The version string of the service component. The format is not defined by these conventions. | `2.0.0`; `a01dbef8a` | **[1] `app.crash.id`:** Its value COULD be meaningful and be used as a reference for other telemetry and metadata recorded by @@ -157,8 +156,6 @@ data from other sources as well as facilitate deduplication. > > This attribute may contain sensitive information. -**[3] `service.name`:** MUST be the same for all instances of horizontally scaled services. If the value was not specified, SDKs MUST fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value MUST be set to `unknown_service`. - diff --git a/model/app/events.yaml b/model/app/events.yaml index a6880f8124..8c85f5ba75 100644 --- a/model/app/events.yaml +++ b/model/app/events.yaml @@ -42,8 +42,6 @@ groups: requirement_level: opt_in - ref: os.version requirement_level: opt_in - - ref: service.name - requirement_level: opt_in - ref: service.version requirement_level: opt_in - ref: session.id