Skip to content

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

Draft
seonghobae wants to merge 18 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 18 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.

Live dependency / stack state

This Draft remains stacked on current PR #59 exact head 73ee748614ef11398f8b379ffd5d0547a45c2c31, transitively on #56/#43. Current exact contributor head is 56a15071d2ca77ba38ee59ce518de262eb2f8f36.

Fresh ancestry is ahead 7 / behind 0, with merge base exactly equal to the live #59 head. The current head is a non-destructive content-aware alignment merge: it preserves #59's controlled history add/read/delete lifecycle and current download conflictAction: "uniquify" race fix while retaining this PR's unique update/version-migration semantics. Relative to #59, the current diff is limited to CHANGELOG.md, scripts/ci/run_mv3_compatibility.py, tests/fixtures/mv3_basic/content_script.js, tests/fixtures/mv3_basic/service_worker.js, and tests/test_mv3_update_migration_contract.py. No prerequisite check, review, status, or predecessor result is transferred to this child.

Keep Draft while #59/#56/#43 remain active.

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.

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;
  • preserves the prerequisite history-mutation lifecycle and uniquify download policy;
  • exposes only bounded extension_version / storage_migration evidence tokens; and
  • requires update migration to succeed in all three repeatability trials.

Current exact-head evidence

For unchanged exact head 56a15071d2ca77ba38ee59ce518de262eb2f8f36 against exact prerequisite 73ee748614ef11398f8b379ffd5d0547a45c2c31:

  • ancestry: ahead 7 / behind 0, merge base equal to the live prerequisite;
  • CI run 31923711060: success;
  • Manifest V3 Compatibility run 31923711062: success against the pinned real-Chromium fixture;
  • formal reviews currently returned: none; and
  • inline review threads currently returned: none.

No predecessor, prerequisite, skipped, queued, cancelled, absent, synthetic-merge, stale, status-only, or model-only evidence is promoted as current proof. The Draft remains dependency-blocked rather than verification-blocked.

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.

This scheduled actor does not merge, self-approve, alter workflows, add secrets, weaken checks, tag, or publish.

@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: 9ba73363-1582-472f-8137-176daf748752

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.

Preserve the already reconciled update-migration tree while adding the exact current history lifecycle head as an ancestry parent. This changes topology only; child semantics remain the same five-file delta and no predecessor checks or reviews transfer.
Preserve the current history-lifecycle prerequisite's canonical documentation, traceability, and bookmark diagnostic regression contracts on the update-migration descendant. This removes stale child-tree deletions without transferring predecessor evidence.
seonghobae added a commit that referenced this pull request Aug 16, 2026
Preserve the exact isolated-world tree after proving it already contains the current update-migration prerequisite semantics. Add the repaired #60 head as ancestry only; no predecessor checks or reviews transfer.
seonghobae added a commit that referenced this pull request Aug 16, 2026
Use the exact repaired #60 tree as the descendant baseline and preserve only the isolated-world page fixture and regression test at this step. This removes stale child-tree deletions before merging the two overlapping isolated-world files.
Rebuild the update-migration lane on the exact current PR #59 tree while preserving its controlled update/version-migration source, tests, and changelog evidence. Carry forward the prerequisite bookmark/history behavior and the current ChromeDriver cleanup resilience, including primary-error preservation and successful hard-kill recovery. No predecessor check or review evidence transfers.
seonghobae added a commit that referenced this pull request Aug 17, 2026
Rebuild the isolated-world lane on the exact current PR #60 tree while preserving only its page/content-script sentinel contract, test, and changelog evidence. Keep the current update-migration/history/bookmark behavior and ChromeDriver cleanup resilience unchanged. No predecessor check or review evidence transfers.
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