Skip to content

feat(servo): adopt unified theorem v0.5 fork - #3

Merged
Travis-Gilbert merged 4 commits into
mainfrom
next
Sep 18, 2026
Merged

Travis-Gilbert merged 4 commits into
mainfrom
next

Conversation

@Travis-Gilbert

@Travis-Gilbert Travis-Gilbert commented Sep 13, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • move the authoritative Servo pin and fork lineage to Turvo
  • point Turvo at Travis-Gilbert/servo theorem/v0.5.0 on Rust 1.95
  • enforce branch, tag, ahead/behind, toolchain, and patch-stack lineage in hosted CI
  • promote origin-boundary negative tests and withdraw the third-party-site non-goal
  • repair URL normalization exposed by the Servo 0.5 dependency graph

Local validation

  • cargo +1.95.0 check -p turvo --lib --locked
  • cargo +1.95.0 test -p turvo --lib --tests --locked
  • cargo +1.95.0 clippy -p turvo --lib --tests --locked -- -D warnings
  • node --test crates/turvo/tests/invoke_transport.test.mjs
  • python3 scripts/check_integration.py
  • python3 plans/TURVO-1.0-COMPLETION/render_board.py --check
  • Python integration script tests: 15 passed

This is the ADDENDUM-1 migration lane. Keep it draft until Linux and macOS hosted receipts are green.

Greptile Summary

The PR moves Turvo to the unified Servo theorem/v0.5.0 fork and makes the repository authoritative for its exact engine lineage.

  • Pins Servo at e92cdaa790797479c1821c33470c64e0d166feb2 with Rust 1.95.
  • Extends hosted policy checks to validate branch, tag, ancestry, ahead/behind counts, toolchain alignment, and the complete nine-patch stack.
  • Adds IndexedDB conformance and Web Locks/window-proxy patch slices.
  • Updates origin-boundary testing, project ownership documentation, and completion-plan records.

Confidence Score: 5/5

No actionable regression caused by the changes since the previous review was identified, so the PR appears safe to merge after its documented hosted Linux and macOS receipts pass.

The updated pin, lineage metadata, and reverse patch-stack order are internally consistent, while the newly imported Servo surfaces do not conflict with an established Turvo or available related-repository consumer contract.

Important Files Changed

Filename Overview
Cargo.toml Updates the workspace toolchain requirement and all Servo patch overrides to the unified fork revision.
Cargo.lock Resolves the complete Servo dependency graph at the new exact revision and records resulting transitive changes.
.github/workflows/servo-integration.yml Adds exact branch, tag, ancestry, toolchain, patch-stack, storage, and request-identity verification.
patches/servo/0008-indexeddb-conformance-slice.patch Carries the IndexedDB conformance implementation and its storage/backend lifecycle tests.
patches/servo/0009-web-locks-and-window-proxies.patch Carries Web Locks lifecycle support and named browsing-context/window-proxy behavior.
patches/servo/integration.json Records the authoritative fork, revision, branch, base lineage, toolchain, and patch digests.
crates/turvo/src/servo/protocols.rs Repairs URL normalization behavior exposed by the updated Servo graph.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  U[Servo upstream v0.5.0] --> B[Recorded base revision]
  B --> P1[Patches 0001–0007]
  P1 --> P8[0008 IndexedDB slice]
  P8 --> P9[0009 Web Locks and window proxies]
  P9 --> T[Pinned theorem/v0.5.0 tip]
  T --> C[Turvo Cargo graph]
  T --> V[Hosted lineage and patch-stack verification]
  C --> D[Theorem desktop consumer]
Loading

Reviews (2): Last reviewed commit: "chore(servo): move the pin to the combin..." | Re-trigger Greptile

@coderabbitai

coderabbitai Bot commented Sep 13, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 940b503d-0053-4ea1-9237-25b3c0602e49


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.

@Travis-Gilbert
Travis-Gilbert marked this pull request as ready for review September 13, 2026 15:00
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 13, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-13T15:13:36.110632Z c8b393f Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c8b393ff9b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +9 to +10
Turvo is the sole home of Theorem's Servo integration, exact engine pin,
migration lane, hosted engine validation, and desktop bundling path. Theorem

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Adapt the monthly updater to migrate the owned fork

When crates.io publishes a Servo version newer than 0.5.0, the unchanged Resolve and prefetch the latest stable Servo section of .github/workflows/servo-next.yml still targets the registry release, while .github/prompts/servo-next.md permits changing only manifests, sources, examples, CI, and a migration note. It cannot update the now-authoritative patches/servo/integration.json, FORK.md, upstream-base, patch stack, or Rust channel. Consequently, any generated PR either retains an incompatible 0.5 fork override or switches to registry Servo, after which scripts/check_integration.py rejects the source family and the new integration-policy job rejects stale lineage, so the migration lane this record assigns to Turvo cannot produce a promotable update.

AGENTS.md reference: AGENTS.md:L77-L80

Useful? React with 👍 / 👎.

"substitution_allowed": false,
"live_oracle_required": true,
"proof_commands": [
"python3 scripts/check-servo-pin-unity.py",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Add the pin-unity verifier before making it a proof command

When W10 reaches verification, V10 cannot execute its newly required first proof command because scripts/check-servo-pin-unity.py does not exist. A repository-wide rg finds only this generated node and the canonical JSON reference, while rg --files scripts confirms there is no implementation; moreover, W10's declared scope is limited to the isolated Theorem worktree and V10 is read-only, so neither node is authorized to create it. This leaves the sole-pin obligation without its declared executable oracle and blocks the graph at V10 unless the script is added to an implementation scope first.

AGENTS.md reference: AGENTS.md:L49-L55

Useful? React with 👍 / 👎.

Comment on lines +34 to +35
- Exactly one repository declares the product Servo pin: Turvo.
- Theorem must remove its duplicate pin and fork ledger when it consumes Turvo.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Make the fork pin propagate to Theorem consumers

When Theorem adds Turvo as a dependency and removes its own Servo patch as required here, Cargo does not inherit Turvo's workspace-root [patch.crates-io]; the published crate manifest contains only servo = "=0.5.0", so the consumer resolves registry Servo rather than revision b70d4e64. A local cargo metadata reproduction with a patch declared in a non-root dependency resolved the original source, and README.md:56-58 explicitly acknowledges that these overrides are not inherited. Therefore the stated sole-pin design cannot supply the fork APIs to Theorem: either Theorem must retain a duplicate patch or Turvo needs a consumable dependency/artifact mechanism that carries the selected engine.

AGENTS.md reference: AGENTS.md:L77-L80

Useful? React with 👍 / 👎.

Turvo pinned b70d4e64c0, which is 36 commits behind the revision two
independent verifications accepted. The last green run pair, 34738526924
and 34738526952, is therefore green at the wrong revision.

The pin lives in seven places, not one, and all seven move together:
the five [patch.crates-io] revisions, Cargo.lock, patches/servo/integration.json,
patches/servo/README.md, patches/servo/FORK.md, AGENTS.md, and the patch
stack the Servo integration policy job reverse-applies.

Two new patch files, one per independently verified slice:

  0008  b70d4e64c0..6ed6091e4e, 33 commits, the IndexedDB conformance
        slice accepted at 6ed6091e4e against the web-platform suite.
  0009  6ed6091e4e..e92cdaa790, 3 commits, Web Locks, shared-worker
        teardown and named window proxies, accepted at e92cdaa790.

0005-storage-engine-factories.patch is deliberately NOT rewritten. The
36 commits rewrite components/shared/storage/indexeddb.rs by +232/-31,
so reverse-applying the old seven-patch stack at the new tip fails on
0005 across five files. Folding those commits into 0005 would have made
a patch whose subject says "storage engine factories" carry the whole
IndexedDB series, and integration.json pins that file by digest while
README.md describes it in prose. Adding one file per verified slice
keeps the stack a decomposition.

Verified locally before any push, all read-only against a clean clone of
the fork at /Volumes/servo-build/servo-fork:

  * The nine patches, in the order read out of servo-integration.yml,
    reverse-apply at the revision read out of integration.json and
    produce tree aa41ca6aa70d446a791453c8ac3ce741d7acdcc8. Reversing the
    existing seven at the old pin produces the same tree, so the two new
    files add exactly the 36-commit delta and nothing else.
  * python3 scripts/check_integration.py passes in both modes, and
    cargo metadata --locked --no-deps returns 0.
  * All 112 changed Cargo.lock lines name the servo fork. No unrelated
    version moved.
  * Lineage against upstream v0.5.0 (1d44e5dd6a): ahead_by=56,
    behind_by=0, base is an ancestor, matching the new integration.json.
  * rust-toolchain.toml is channel 1.95.0 at both the old and the new
    Servo revision and in this repository, so rust_channel is unchanged.

NOT verified here: cargo test -p turvo --lib --locked needs a full Servo
link, and this machine has 12 GiB free against a build that takes 13.
That check belongs to CI.

BLOCKED ON ONE PUSH THAT IS NOT MINE TO MAKE. The policy job asserts
that integration.json's revision is the tip of integration.json's
branch. theorem/v0.5.0 is still at b5fead2675, which is a strict
ancestor of e92cdaa790, 35 behind and 0 ahead. FORK.md rule 2 says to
grow theorem/v0.5.0 by commits and not to retarget it silently, so this
change keeps the branch name and needs that branch fast-forwarded on
Travis-Gilbert/servo. The alternative, retargeting the pin to
theorem/v0.5.0-indexeddb, needs no servo push but does need rule 2
amended, and it is two string fields away in integration.json.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@Travis-Gilbert
Travis-Gilbert merged commit 2f06bb9 into main Sep 18, 2026
13 checks passed
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