Repository navigation
chore: sync upstream contracts (2026-10-07) - conflicts need resolution [PaxosTransitFacet v2.0.0, IPaxosTransit v1.1.0] - #49
Merged
Conversation
…nce#2502) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* ci(validate-scripts): run repo-wide bun lint:js after artifact generation Generate diamond.json after the TypeChain step so every generated import resolves, then lint the whole TS/JS tree. Trigger the job on changes to .eslintrc.cjs, .eslintignore and tsconfig.eslint.json. Add a test that pins the step order, path filter and aggregator wiring (EXSC-1153). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * test(safe): use a fixture-only getter in calldata-effect-lines The artifact cases used LIFI_INTENT_ESCROW_SETTLER_V2(), a real getter. Once diamond.json is generated (bun build:typechain-and-abi), the selector registry names it from there, so the removal case failed and the artifact case passed without reading the artifact. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * ci(validate-scripts): trigger on the funnel-fence config lint:js extends .eslintrc.cjs extends .eslintrc.funnel-fence.cjs, so a change to it alone changes what bun lint:js enforces. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * ci(validate-scripts): close gaps in the lint gate and its guard test - Run the TS suite when validateScripts.yml changes, so the guard test runs on the PRs that can break it - Trigger validate-scripts when a src/, config/ or deployments/ file is deleted or renamed, since scripts import from those trees - Keep running "Validate scripts" after a lint failure, unless artifact generation failed - Parse the workflow with Bun.YAML in the guard test and fail when the lint step is commented out or gated by an `if:` Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…56) (lifinance#2516) * chore(deploy): add PaxosTransitFacet v1.0.0 to arbitrum staging (EXSC-1156) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * chore(deploy): deploy PaxosTransitFacet v1.0.0 to arbitrum prod (EXSC-1156) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * chore(deploy): sync arbitrum prod diamond log after PaxosTransitFacet cut (EXSC-1156) --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Co-authored-by: Daniela Chybisova <iron.melmel@gmail.com>
…s (EXSC-1180) (lifinance#2520) * ci: skip timelock and Slack-posting cron workflows on forks Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * ci: note the fork guard in the timelock watcher header Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * ci: guard types and env reminder on forks, document the fork guard rule Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * ci: guard the louper-v3 PR workflow on forks Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * ci: correct the louper fork-guard comment (EXSC-1180) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
) * chore(factory): own the repo's prepare and verify config Add the repo: block from the factory's bootstrap copy (v0.1.6), with verify.lint set to null. The bootstrap ran a bare 'bunx eslint', which fails once .eslintrc.cjs is gone (EXSC-1105). The lint-staged suite already runs the branch's own pre-commit lint over the whole branch. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * chore(factory): run forge build when Foundry config or libs change Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * chore(factory): restore the Zeus qa block in the repo config Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…78) (lifinance#2527) * chore(deployments): backfill legacy Cut/Loupe facet versions (EXSC-1178) Set DiamondCutFacet 0xf7993A8d and DiamondLoupeFacet 0xF5ba8Db6 to 1.0.0 in the diamond logs of mainnet, arbitrum, bsc, polygon, optimism, gnosis, boba, cronos, fuse and mode, and add the matching production entries to the master log. Each version comes from a runtime-bytecode match (metadata stripped, no immutables) against a build at 249fdae, the commit that set @Custom:version 1.0.0. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * chore(deployments): drop master-log backfill (EXSC-1178) The health check resolves facet versions from <network>.diamond.json first; the repo master log is a stale MongoDB snapshot, and hand-added records there risk overwriting MongoDB on mongo-logs:sync. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… (EXSC-1170) (lifinance#2526) * chore(deploy): pin Chainflip and ThorSwap facets to deployed versions (EXSC-1170) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * test(target-state): grade a committed pin; drop stale no-pins notes Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…-1167) (lifinance#2521) * ci(attestations): run the build manifest workflow upstream only (EXSC-1167) contracts-tron syncs this workflow, and its Tron LibAsset bypass compiles into nearly every facet, so the fork's manifest differs from upstream's on every version change and every such sync conflicts on buildAttestations.json. Guard both jobs to lifinance/contracts; the fork keeps upstream's manifest byte-identical. Nothing reads the manifest yet, and gate K grades Tron by rebuilding at the record's commit. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * docs(attestations): correct what the fork has and how lookups fall back The fork carries upstream's attested manifest, so only builds that compile the Tron bypass lack an entry, and a future lookup must rebuild on any miss rather than per network. Name gate K as the sign-time codehash gate, note the repo guard as a deliberate skip, say why mint repeats it, and fix the BuildRepo comment that said the minter runs in both repos. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * docs(attestations): say upstream's attestation covers the fork's copy Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…TransitFacet v2.0.0, IPaxosTransit v1.1.0] (lifinance#2512) * feat(PaxosTransitFacet): support same-chain orders (EXSC-1086) Allow bridgeData.destinationChainId == block.chainid, require it to agree with the quote's destEID == TransitStation.thisChainEID(), and reject a non-zero nativeFee on same-chain orders, which the station queues locally and rejects when native value is attached. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * refactor(PaxosTransitFacet): move modifier into a Modifiers section Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * fix(PaxosTransitFacet): validate same-chain mode before deposit/swap Move the same-chain consistency and nativeFee checks into _validateSameChainMode, called at the start of both entrypoints so a bad swap-path order reverts before any swap runs. Add swap-path and third-chain mismatch tests, fix stale docs, regenerate the build attestation manifest for PaxosTransitFacet 1.1.0. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * perf(PaxosTransitFacet): cache station thisChainEID as immutable Read TRANSIT_STATION.thisChainEID() once in the constructor instead of on every order. Register THIS_CHAIN_EID as a derived immutable and regenerate the build attestation manifest. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * chore(PaxosTransitFacet): bump version to 2.0.0 The same-chain guards add new reverts on both existing entrypoints, which [CONV:VERSIONING] classes as MAJOR. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * refactor(PaxosTransitFacet): prefix chain EID getter with facet name THIS_CHAIN_EID() is a generic selector; a later facet exposing the same getter would take it over in buildDiamondCut and uninstall the rest of PaxosTransitFacet ([CONV:FACET-SELECTORS]). Rename it to PAXOS_TRANSIT_THIS_CHAIN_EID. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * test(PaxosTransitFacet): prefix test interface params with underscore Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * chore(audit): add PaxosTransitFacet v2.0.0 audit report (EXSC-1086) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…nce#2524) * docs(post-pr-for-review): tag reviewer group by touched paths [EXSC-1187] Routine contracts PRs tag @api_expansion-squad; PRs touching src/, script/deploy/safe/ or script/emergency/ tag @smartcontract_core, matching the new main-protection required_reviewers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(post-pr-for-review): pipefail-safe path check, README tag [EXSC-1187] Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(agents): keep README table diff to the post-pr-for-review row [EXSC-1187] Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(post-pr-for-review): stop on failed files lookup [EXSC-1187] Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…-07-28-1 Take upstream's buildAttestations.json byte for byte (EXSC-1116). Since lifinance#2521 the fork mints no manifest of its own, so the file stays identical to upstream and later syncs stop conflicting on it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
🩺 Health-check invariants reminder This PR changes a facet or periphery contract but does not touch If no invariant change is needed, you can ignore this — it is a reminder, not a gate. |
gvladika
approved these changes
Oct 7, 2026
melianessa
approved these changes
Oct 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automated sync from
lifinance/contracts@da1ebbcdhit merge conflicts.This branch carries upstream's history as-is - the conflict markers were NOT
committed - so every commit on it is already signed. Resolve by merging
maininto the branch and pushing a signed resolution:git add -ustages every resolved path, including deletions, without sweepingin the
.origbackupsgit mergetoolleaves behind - this repo's.gitignoredoes not cover them, sogit add -Awould commit them.Conflicting paths:
Important
Merge this PR with a merge commit. Squash and rebase drop the upstream
parent, so the merge base never advances and every later sync re-conflicts
on the entire fork delta.
See the Notion 'Tron deployments' page (section: The contracts-tron Fork) and
EXSC-587/EXSC-603 for the sync rules.