Skip to content

test(mv3): prove extension update migration in real Chromium - #60

Draft
seonghobae wants to merge 5 commits into
test/mv3-history-mutation-lifecyclefrom
test/mv3-update-migration
Draft

test(mv3): prove extension update migration in real Chromium#60
seonghobae wants to merge 5 commits into
test/mv3-history-mutation-lifecyclefrom
test/mv3-update-migration

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Partial implementation of #27.

Buyer-visible gap

The pinned real-Chromium lane proved restart persistence but did not prove extension update/version migration behavior, which issue #27 explicitly requires. Restart success cannot substitute for an extension-version transition with state migration.

Dependency

This Draft remains stacked on PR #59 exact head b0d9c905fd7a50128eb1dde643b8a3a0f9cb1dc8, and transitively on #56/#43. It is not independently integrable before those prerequisites.

TDD evidence

Exact test-only head a60875f70f8412db27ff1025b75d7ad4b8ddc38e added the fail-first repository contract. CI run 31433305976, job 93601619973, checked out that exact head and failed only because the runner/fixture had no trial-local extension copy, controlled version transition, versioned storage migration evidence, or update-migration surface. That is the intended RED; no predecessor success is reused.

Current exact head is e696e19c9eaf3dedb104a5de4bdbd7970abf90d4.

Implemented boundary

The compatibility runner now:

  • copies the checked-in fixture into a trial-local ephemeral extension directory rather than rewriting repository state;
  • preserves one ephemeral browser profile and one extension path across initial, restart, and update passes;
  • validates and applies only the controlled 1.0.01.0.1 manifest transition;
  • observes the real loaded extension version through chrome.runtime.getManifest().version;
  • initializes schema version 1 on the initial pass, requires unchanged/current state after restart, then migrates to schema version 2 on the updated pass;
  • exposes only bounded extension_version / storage_migration evidence tokens; and
  • requires update migration to succeed in all three repeatability trials.

Exact-head proof

On unchanged exact head e696e19c9eaf3dedb104a5de4bdbd7970abf90d4:

  • CI run 31433968874: success;
  • Python repository contracts: success;
  • formatting: success;
  • locked workspace check: success;
  • all workspace tests: success;
  • strict Clippy: success;
  • rustdoc/API documentation: success;
  • exact owned production function/line/region/branch coverage: success;
  • Manifest V3 Compatibility run 31433968931: success against Chrome for Testing 150.0.7871.129 / Chromium revision r1639810;
  • the real-browser evidence reports 3/3 successful trials and, in each trial, initial 1.0.0/initialized → restart 1.0.0/current → update 1.0.1/migrated with persisted storage and monotonically increasing worker-start count; and
  • CodeRabbit exact-head commit status: success.

No predecessor-head check is transferred to this exact head.

Scope boundary

Compatibility evidence only. This does not implement Chrome Web Store update, enterprise distribution, arbitrary extension installation, native messaging, Agent capability grants, default-profile mutation, durable OriginWeave persistence, model calls, or release publication. It proves one deterministic unpacked-extension version transition in the isolated compatibility profile.

Keep Draft while #59/#56/#43 remain active. This scheduled actor does not merge or self-approve.

@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 86718ebc-c6f1-446d-acc6-65b2ae5d8fdd

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant