Skip to content

fork: vendor OIF in-tree, drop lib/OIF submodule - #125

Merged
reednaa merged 141 commits into
mainfrom
fork/vendor-oif-in-tree
Jul 15, 2026
Merged

fork: vendor OIF in-tree, drop lib/OIF submodule#125
reednaa merged 141 commits into
mainfrom
fork/vendor-oif-in-tree

Conversation

@reednaa

@reednaa reednaa commented Jul 10, 2026

Copy link
Copy Markdown
Member

Summary

Forks OIF directly into this repository, replacing the lib/OIF submodule with vendored, in-tree sources. Two commits:

  • Commit A (history/layout)2a62da3: merges upstream openintentsframework/OIF history into this repo and vendors the OIF sources in-tree, dropping the lib/OIF submodule. Upstream commit history is preserved via the merge, so git log/git blame continue to work across the vendored files.
  • Commit B (behavior/deps)d4995cf: regenerates gas snapshots against the vendored tree and consolidates CI (removes the separate evm-test.yml workflow in favor of the unified test.yml).

Why

Owning the OIF sources in-tree removes the submodule coupling to upstream and unblocks contract changes that require modifying OIF itself — starting with the provable non-fill refunds work (API-699), which stacks on this PR.

Stacked PRs

This is PR 1 of 2. PR 2 (feature/api-699-provable-non-fill-refunds) is based on this branch and will retarget to main automatically when this merges.

🤖 Generated with Claude Code

jrudolf and others added 30 commits May 1, 2025 07:56
Consolidate finalise functions on CompactSettler
* Standardize chainid maps for oracles

Implements standardized chainid maps for oracles. This also lets
oracles opt out of mapping in case they conform to a chainid
standardization. This applies to Polymer for EVM chains. The
advantage of non-mapped oracles is that they are ownerless making the
system entirely permissionless and providing a base implementation
that is entirely configless: **One deterministic deployment**

* Fix overwrite implementation of the map in Polymer
… more. (#2)

* Initial documentation pass of everything except oracles and input settlers and readme

* typos

* Complete the contracts and libraries

* Update readme

* grammar

* Output chain instaed of destination chain

* Apply suggestions from code review

Co-authored-by: Gustavo Gonzalez <ggonzalezsomer@gmail.com>

* Rename IOIFCallback to IOpenIntentCallback

* Rename inputs callback and fillBatch

* delete unused tests

* review comments: Remove remote references

* update test encoding

---------

Co-authored-by: Gustavo Gonzalez <ggonzalezsomer@gmail.com>
* Initial documentation pass of everything except oracles and input settlers and readme

* typos

* Complete the contracts and libraries

* Update readme

* grammar

* Output chain instaed of destination chain

* Apply suggestions from code review

Co-authored-by: Gustavo Gonzalez <ggonzalezsomer@gmail.com>

* Rename IOIFCallback to IOpenIntentCallback

* Rename inputs callback and fillBatch

* delete unused tests

* Upgrade compact version to post audit fixes

* Apply suggestions from code review

Co-authored-by: jsanmigimeno <8038323+jsanmigimeno@users.noreply.github.com>

---------

Co-authored-by: Gustavo Gonzalez <ggonzalezsomer@gmail.com>
Co-authored-by: jsanmigimeno <8038323+jsanmigimeno@users.noreply.github.com>
* Initial documentation pass of everything except oracles and input settlers and readme

* typos

* Complete the contracts and libraries

* Update readme

* grammar

* Output chain instaed of destination chain

* Apply suggestions from code review

Co-authored-by: Gustavo Gonzalez <ggonzalezsomer@gmail.com>

* Rename IOIFCallback to IOpenIntentCallback

* Rename inputs callback and fillBatch

* delete unused tests

* Upgrade compact version to post audit fixes

* Disallow intents from settler

---------

Co-authored-by: Gustavo Gonzalez <ggonzalezsomer@gmail.com>
* Refactor LibAddress: Move and enhance address identifier conversion library

* remove ownbale, pausable that cursor added for no reason

* add using for bytes32 and remove unnecesary md file

* fmt

* fix order of using

* use assembly in toIdentifier

* remove unnecesary import

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Alexander <git@lindgren.xyz>
reednaa and others added 22 commits May 5, 2026 12:33
- Bump lib/OIF to permit2-virtual (virtual _PERMIT2 fetch)
- InputSettlerEscrowLIFITron overrides _PERMIT2 with the Tron deployment
  TTJxU3P8rHycAyFY4kVtGNfmnMH4ezcuM9 (0xBE365314f2E77FD1257d60C346Bb32DbDa369403)
- Tron test suite etches Permit2 at the Tron address
- Mirror upstream orderStatus claimed-marking in InputSettlerCompactLIFI._resolveLock

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
InputSettlerEscrowLIFITron, OutputSettlerSimple and PolymerOracle
deployed via script/tron/deploy-oif.ts.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Pepe Blasco <pepeblascondc@gmail.com>
Co-authored-by: Pepe Blasco <pepeblascondc@gmail.com>
Co-authored-by: Pepe Blasco <pepe.blasco@openzeppelin.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ayout)

Convert lifi-oif from consuming OIF via the lib/OIF submodule into a true
in-tree fork. Merges openintentsframework/OIF main (39df288) with
--allow-unrelated-histories, so `upstream` is now a real parent and future
`git fetch upstream && git merge upstream/main` are normal 3-way merges.

Layout & dependency reconciliation:
- OIF src/test/script/audits/docs land at repo root (no path collisions);
  the LIFI overlay contracts sit alongside their OIF bases.
- Remove lib/OIF (now redundant) and dead lib/bitcoinprism-evm (0 references).
- Unify lib/: keep lifi pins for the shared deps the-compact (V0 b9c3b54) and
  forge-std (v1.9.7) — the merged tree builds against these, the behavior-
  preserving baseline; add OIF's openzeppelin-contracts, broadcaster and
  tron-contracts; vendor lib/@eth-optimism; keep solady; permit2 is identical.
- remappings.txt: OIF/src=src, OIF/test=test (zero overlay import edits);
  drop OIF/=lib/OIF and bitcoinprism-evm.
- foundry.toml: keep [profile.tron] + bytecode_hash='none'; union fs_permissions.

Build-forced reconciliation (the only Solidity edit): OIF main #186 added a
virtual InputSettlerEscrow._transfer, so LIFI's override gains the `override`
specifier (behavior unchanged — still solady safeTransfer).

Verified: `forge build` (default) and `FOUNDRY_PROFILE=tron forge build` both pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- snapshots/inputSettler.json: regenerated — gas paths shift now that OIF
  compiles in-tree (other snapshot groups byte-identical). gas-snapshot-check
  passes against the regenerated values.
- CI: drop OIF's evm-test.yml. LIFI's test.yml already runs forge build/test
  over the whole in-tree tree (incl. OIF's tests); evm-test.yml only added
  forge fmt --check + --gas-snapshot-check, which the LIFI team had
  deliberately removed (3cda515 "No fmt check", b1a7f6d "Remove snapshot
  check from ci"). Extend test.yml coverage excludes to OIF's vendored oracle
  externals (integrations/oracles/.*/external).

Verified post-fork: full suite green — 382 tests, 0 failed, 0 skipped;
default + Tron (solc 0.8.35) builds pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

@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: d4995cfc16

ℹ️ 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 thread src/integrations/CatsMulticallHandler.sol
reednaa and others added 2 commits July 14, 2026 21:26
- Add LICENSE-MIT with upstream OIF's MIT license and copyright notice
  (the notice previously traveled with lib/OIF/LICENSE and was lost when
  the submodule was vendored in-tree); point README's OIF entry at it.
- Align shared dependency pins with OIF main (39df288): forge-std
  77041d2 -> 100b0d7 (v1.11.0), the-compact b9c3b54 -> ac25e50 (V1),
  in both the submodules and foundry.lock.
- the-compact ac25e50 pins pragma =0.8.30, which the Tron profile's
  solc 0.8.35 cannot satisfy. Add a skip list to [profile.tron] for
  the-compact and its dependents, mirroring the --skip flags already
  documented in script/tron/deploy-oif.ts (the Tron deploy never uses
  the compact settler; its artifacts are unaffected).

Verified: forge build (default + tron profiles) and full suite green
(382 tests, 0 failed). Gas snapshots intentionally not regenerated:
local nightly foundry produces materially different values than the
committed baseline; regenerate deliberately on a pinned version.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@reednaa
reednaa merged commit 9feeab1 into main Jul 15, 2026
2 checks passed
@reednaa
reednaa deleted the fork/vendor-oif-in-tree branch July 15, 2026 10:50
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.