[2026-11-10] eagle: work/projects/cpm-permanent-breakage-metric-tech-design-2026-11-10.md work/projects/cpm-wake-init-detection-tech-design-2026-11-10.md
This commit is contained in:
1 parent
1aa7ab948a
commit
60fe74e5d1
2 files changed
+6
-6
No files matched your search
@@ -84,8 +84,8 @@ Measurements older than five minutes dropped; no minimum lifetime; tab process c
|
||||
|---|---|---|
|
||||
| 1, [#8025](https://github.com/duckduckgo/apple-browsers/pull/8025) | Remove ineffective recovery fixes and flags | pushed, in review |
|
||||
| 2, `alex/cpm-pixel-cleanup` | Remove diagnostics, trim the episode pixel | local, tests pass, not pushed |
|
||||
| 3, `alex/cpm-breakage-metric` | This design, two commits: new pixels; removal of the old pixels | in progress |
|
||||
| 4 | Marks and `last_stage` ([[cpm-wake-init-detection-tech-design-2026-11-10]]) plus extension #3727 | not started |
|
||||
| 3, `alex/cpm-breakage-metric` (`fc73706152`) | This design: new pixels and removal of the old ones, one commit | local; package tests 1013 pass; both pixel validators pass; macOS app and tests build; iOS build running; not pushed |
|
||||
| 4, `alex/cpm-init-marks` (`a0e27597f2`) | Marks and `last_stage` ([[cpm-wake-init-detection-tech-design-2026-11-10]]) | local; package tests 1023 pass; validators pass; not pushed. Extension: `alex/cpm-init-progress` has the new commit `908f9a62`, not pushed |
|
||||
|
||||
### Cons
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ Requirements:
|
||||
|
||||
## Problem Statement
|
||||
|
||||
For every document judged broken by the permanent breakage metric, record the furthest init step the extension reported for it, and use `initResp` delivery as healthy evidence. With that:
|
||||
For every document judged broken by the permanent breakage metric, record the furthest init step the extension reported for it. With that:
|
||||
|
||||
1. Separate "init never reached the background" from "background stalled on its own storage or native round trip" from "answer could not be delivered to the page".
|
||||
2. Join the result with `background` (woken, warm) so wake failures are split from the rest.
|
||||
@@ -54,7 +54,7 @@ Collect no page content, URLs or persistent identifiers.
|
||||
|
||||
## Recommended Approach
|
||||
|
||||
The extension reports **progress marks** for each main-frame init as fire-and-forget native notifications. The app keeps the furthest mark per document, treats `response_sent` as healthy evidence, treats `response_failed` as an immediate breakage, and adds `last_stage` to `web_extension_cpm_breakage`.
|
||||
The extension reports **progress marks** for each main-frame init as fire-and-forget native notifications. The app keeps the furthest mark per document, reports the page at once on `response_failed`, and adds `last_stage` to `web_extension_cpm_breakage`. `response_sent` is recorded but not counted as the page's answer until it is verified against real WebKit.
|
||||
|
||||
### Marks
|
||||
|
||||
@@ -74,7 +74,7 @@ Marks are best effort: they carry `{ tabId, url, stage }`, never wait and never
|
||||
|
||||
- `AutoconsentWebExtensionMessageHandler` gets a `cpmInitProgress` method. Unknown stage names are ignored without an error, so a newer extension cannot make an older app answer with failures.
|
||||
- `CPMMessagingHealthEvent.initProgress` carries the mark; the monitor stores `lastStage` per document and clears it on a new navigation, a cancelled navigation and an extension reload.
|
||||
- `response_sent` counts as healthy evidence for the document, like a dashboard response. `response_failed` judges a pending document at once. Healthy evidence is either the dashboard refresh or `response_sent`; the open question below asks whether `response_sent` should count before it is verified.
|
||||
- Only the dashboard refresh counts as the page's answer. `response_sent` is recorded as a stage; `response_failed` reports a pending page at once.
|
||||
- The Debug "Simulate CPM Messaging Breakage" switch hides marks as well as dashboard responses.
|
||||
|
||||
### Pixel change
|
||||
@@ -83,7 +83,7 @@ Marks are best effort: they carry `{ tabId, url, stage }`, never wait and never
|
||||
|
||||
| Parameter | Values |
|
||||
|---|---|
|
||||
| `last_stage` | `none` (no mark reached the app), `page_init_sent`, `received`, `config_read`, `settings_checked`, `site_checked`. `response_sent` cannot appear on a breakage, because it is healthy evidence. `response_failed` appears when it was the reason. |
|
||||
| `last_stage` | `none` (no mark reached the app), `page_init_sent`, `received`, `config_read`, `settings_checked`, `site_checked`. `response_sent` can appear: the page got `initResp` but no dashboard refresh was attributed. `response_failed` appears when it was the reason. |
|
||||
|
||||
No new pixel. Names, frequency and the other parameters are unchanged. Both platforms' definitions and `params_dictionary.json5` get the parameter.
|
||||
|
||||
|
||||
Reference in new issue
Block a user