Conversation
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 5 to 6. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](actions/setup-node@v5...v6) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 7. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](actions/upload-artifact@v4...v7) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@v5...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/github-script](https://github.com/actions/github-script) from 7 to 9. - [Release notes](https://github.com/actions/github-script/releases) - [Commits](actions/github-script@v7...v9) --- updated-dependencies: - dependency-name: actions/github-script dependency-version: '9' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps the frontend-minor-patch group with 13 updates: | Package | From | To | | --- | --- | --- | | [@eth-optimism/viem](https://github.com/ethereum-optimism/ecosystem/tree/HEAD/packages/viem) | `0.3.2` | `0.4.15` | | [@radix-ui/react-separator](https://github.com/radix-ui/primitives) | `1.1.2` | `1.1.8` | | [@radix-ui/react-slot](https://github.com/radix-ui/primitives) | `1.1.2` | `1.2.4` | | [@tailwindcss/vite](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite) | `4.0.6` | `4.2.4` | | [@tanstack/react-query](https://github.com/TanStack/query/tree/HEAD/packages/react-query) | `5.66.0` | `5.100.8` | | [abitype](https://github.com/wevm/abitype) | `1.0.8` | `1.2.4` | | [tailwind-merge](https://github.com/dcastil/tailwind-merge) | `3.0.1` | `3.5.0` | | [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) | `4.0.6` | `4.2.4` | | [viem](https://github.com/wevm/viem) | `2.23.1` | `2.48.8` | | [eslint-plugin-react-refresh](https://github.com/ArnaudBarre/eslint-plugin-react-refresh) | `0.4.19` | `0.5.2` | | [mprocs](https://github.com/pvolok/mprocs) | `0.7.2` | `0.9.2` | | [prettier](https://github.com/prettier/prettier) | `3.5.0` | `3.8.3` | | [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.24.0` | `8.59.1` | Updates `@eth-optimism/viem` from 0.3.2 to 0.4.15 - [Changelog](https://github.com/ethereum-optimism/ecosystem/blob/main/packages/viem/CHANGELOG.md) - [Commits](https://github.com/ethereum-optimism/ecosystem/commits/HEAD/packages/viem) Updates `@radix-ui/react-separator` from 1.1.2 to 1.1.8 - [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md) - [Commits](https://github.com/radix-ui/primitives/commits) Updates `@radix-ui/react-slot` from 1.1.2 to 1.2.4 - [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md) - [Commits](https://github.com/radix-ui/primitives/commits) Updates `@tailwindcss/vite` from 4.0.6 to 4.2.4 - [Release notes](https://github.com/tailwindlabs/tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.4/packages/@tailwindcss-vite) Updates `@tanstack/react-query` from 5.66.0 to 5.100.8 - [Release notes](https://github.com/TanStack/query/releases) - [Changelog](https://github.com/TanStack/query/blob/main/packages/react-query/CHANGELOG.md) - [Commits](https://github.com/TanStack/query/commits/@tanstack/react-query@5.100.8/packages/react-query) Updates `abitype` from 1.0.8 to 1.2.4 - [Release notes](https://github.com/wevm/abitype/releases) - [Commits](https://github.com/wevm/abitype/compare/abitype@1.0.8...abitype@1.2.4) Updates `tailwind-merge` from 3.0.1 to 3.5.0 - [Release notes](https://github.com/dcastil/tailwind-merge/releases) - [Commits](dcastil/tailwind-merge@v3.0.1...v3.5.0) Updates `tailwindcss` from 4.0.6 to 4.2.4 - [Release notes](https://github.com/tailwindlabs/tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.4/packages/tailwindcss) Updates `viem` from 2.23.1 to 2.48.8 - [Release notes](https://github.com/wevm/viem/releases) - [Commits](https://github.com/wevm/viem/compare/viem@2.23.1...viem@2.48.8) Updates `eslint-plugin-react-refresh` from 0.4.19 to 0.5.2 - [Release notes](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/releases) - [Changelog](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/blob/main/CHANGELOG.md) - [Commits](ArnaudBarre/eslint-plugin-react-refresh@v0.4.19...v0.5.2) Updates `mprocs` from 0.7.2 to 0.9.2 - [Release notes](https://github.com/pvolok/mprocs/releases) - [Changelog](https://github.com/pvolok/mprocs/blob/master/CHANGELOG.md) - [Commits](pvolok/mprocs@v0.7.2...v0.9.2) Updates `prettier` from 3.5.0 to 3.8.3 - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](prettier/prettier@3.5.0...3.8.3) Updates `typescript-eslint` from 8.24.0 to 8.59.1 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.59.1/packages/typescript-eslint) --- updated-dependencies: - dependency-name: "@eth-optimism/viem" dependency-version: 0.4.15 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: frontend-minor-patch - dependency-name: "@radix-ui/react-separator" dependency-version: 1.1.8 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: frontend-minor-patch - dependency-name: "@radix-ui/react-slot" dependency-version: 1.2.4 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: frontend-minor-patch - dependency-name: "@tailwindcss/vite" dependency-version: 4.2.4 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: frontend-minor-patch - dependency-name: "@tanstack/react-query" dependency-version: 5.100.8 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: frontend-minor-patch - dependency-name: abitype dependency-version: 1.2.4 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: frontend-minor-patch - dependency-name: tailwind-merge dependency-version: 3.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: frontend-minor-patch - dependency-name: tailwindcss dependency-version: 4.2.4 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: frontend-minor-patch - dependency-name: viem dependency-version: 2.48.8 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: frontend-minor-patch - dependency-name: eslint-plugin-react-refresh dependency-version: 0.5.2 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: frontend-minor-patch - dependency-name: mprocs dependency-version: 0.9.2 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: frontend-minor-patch - dependency-name: prettier dependency-version: 3.8.3 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: frontend-minor-patch - dependency-name: typescript-eslint dependency-version: 8.59.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: frontend-minor-patch ... Signed-off-by: dependabot[bot] <support@github.com>
…-patch-9300c1926b chore(deps): bump the frontend-minor-patch group with 13 updates
…kout-6 chore(deps): bump actions/checkout from 5 to 6
…p-node-6 chore(deps): bump actions/setup-node from 5 to 6
…ad-artifact-7 chore(deps): bump actions/upload-artifact from 4 to 7
…ub-script-9 chore(deps): bump actions/github-script from 7 to 9
Add Phase 1 foundation documentation for team scaling and professional maintenance: CONTRIBUTING.md: - Local development setup instructions (Node, Foundry, super-cli) - Feature branch workflow with conventional commits - Code standards (TypeScript, Solidity, Testing) - PR submission checklist and review process - Testing guidelines and test structure - Troubleshooting for common dev issues DEPLOYMENT.md: - Step-by-step staging deployment runbook (OP Sepolia) - Mainnet deployment procedures with gates - Pre/post-deployment checklists - Evidence generation and verification - Monitoring and health checks - Rollback procedures for emergency scenarios - Comprehensive troubleshooting guide - Command cheat sheet and timeline estimates TROUBLESHOOTING.md: - Development setup issues (pnpm, Node, Foundry, super-cli, git hooks) - Smart contract issues (architecture guard, layering guard, Slither findings) - Frontend development issues (port conflicts, TypeScript errors, module resolution) - Testing issues (hanging tests, gas, balance) - Deployment issues (insufficient funds, timeouts, RPC problems) - CI/CD workflow issues (stuck workflows, secrets, version mismatches) - Network & RPC issues (timeouts, contract not found, chain ID) .github/CODEOWNERS: - Enhanced documentation with clear sections - Added review requirements annotations - Better organization for team scaling - Maintains strict single-owner model (ready for multi-owner when scaling) Impact: - Enables solo maintainer to self-document workflows - Provides clear onboarding path for new contributors - Establishes professional deployment procedures - Reduces support burden with comprehensive troubleshooting - Foundation for team collaboration (docs ready for team addition) - Production-ready documentation for auditors and stakeholders This commit fulfills Phase 1 foundation requirements: ✅ CONTRIBUTING.md created ✅ DEPLOYMENT.md runbook created ✅ TROUBLESHOOTING.md created ✅ CODEOWNERS enhanced and documented Ready for: Phase 2 (interactive UI) and Phase 3 (security audit planning) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Bump github/codeql-action from v3 to v4 to resolve Node.js 20 deprecation warnings on CI.
…ner, and verification scripts (#19) * docs: replace roadmap with lean security next-steps guide * fix(docs): remove duplicate required-check entries in BRANCHING.md
#23) * ci: extract reusable frontend/slither/secrets workflows * ci(security): apply codereview pinning and permissions fixes
- Wrap sendERC20 in try/catch; clear approval and revert with BridgeFailed() on failure - Extract IRYLA interface (inherits IERC20); MARKSettlementModule decoupled from concrete RYLA type - Add unit test for BridgeFailed catch branch
- Add missing required checks (Secrets Drift Guard, Release Gate Container) to all branch matrices - Fix Analyze (JavaScript/TypeScript) casing to match canonical check names - Fixes Validate Governance Policy Consistency CI check
Add .env/.env.*/*.env and supersim-logs/ to root gitignore. Add coverage/ to contracts gitignore.
Add timeout-minutes:15 to stuck jobs, replace rg with grep -Eo in smoke script, pin slither==0.11.5 in Makefile, add explicit invariant runs=256 to foundry.toml.
Ignore @hono/node-server, drizzle-orm, @stablelib/ed25519 scoped to vulnerable versions — all transitive from super-cli dev tool, no upstream fix available.
Reporting channel, scope, response SLA, and supported versions.
Type definitions update.
Add ignoreDeprecations:6.0 for baseUrl deprecation warning.
viem, debug, and other minor/patch updates.
Node 24 runtime update.
Minor/patch frontend dependency updates.
Remove chainId double-encoding from AttestedSettlementVerifier, fix stale iap/mark URLs, fix governance script check names to match actual CI output.
Exercises MARKBridgeAdapter against live SuperchainTokenBridge on two supersim forks. Verifies cross-chain token transfer and rate limit enforcement.
Three invariants covering rate limiting: daily cap never exceeded, accumulator consistent with cap, zero address never holds operator role. 74 tests pass.
Fix ruleset condition bug (canary/main now covered), sync apply-governance.sh and verify-governance.sh with live branch protection, fix frontend check name prefix in docs.
Two focused rulesets: branch-protection (CodeQL alert gate) and tag-protection (v* tags). Replaces the broken develop ruleset.
name() returns 'RYLA Credits', symbol stays 'RYLA'. Test and verification script updated.
Produces consistent check name 'Analyze (javascript-typescript)' matching branch protection requirements.
Remove PRIVATE_KEY from staging.env, fix bridge destination to OP Sepolia, add key separation docs, fix env guard and drift guard for CI validation.
Protocol info page with pre-production status, contract descriptions, and resource links. Providers updated to optimism/optimismSepolia.
Fix README clone URL and naming, remove stale date from CONTRIBUTING.md, add eip712Domain NatSpec and no-pause design decision docs.
Add @dev comment explaining code.length check rejects EOAs but not non-conforming contracts.
Code is a rule. No DAO, no drama. Don't Trust, Verify.
…ement steps Fixes pre-checkout branch check failing with 'No such file or directory' in staging and production workflows.
Enable MARK_RELEASE_RUN_POSTDEPLOY so activateProductionMode() is called during rehearsal.
…RKSetup Fixes VerifierRequiredWhenProofEnabled during staging rehearsal.
|
Closing — replaced by #64 which resolves merge conflicts. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 98811e083d
ℹ️ 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".
| "frontend-checks / Frontend Checks (Node 20)", | ||
| "frontend-checks / Frontend Checks (Node 22)", | ||
| "Detect Secrets Drift", | ||
| "Release Gate Container" |
There was a problem hiding this comment.
Stop requiring path-filtered release gate check
apply-governance.sh now marks Release Gate Container as a required status check for dev, canary, and main, but the corresponding workflow only runs for contracts/** changes (.github/workflows/contracts-release-gate-container.yml pull_request.paths). For PRs that change only frontend/docs/scripts outside that path, GitHub will not run the workflow and the required check remains pending (Waiting for status to be reported), which blocks merges on all protected branches.
Useful? React with 👍 / 👎.
| docker build \ | ||
| --cache-from "type=gha" \ | ||
| --cache-to "type=gha,mode=max" \ |
There was a problem hiding this comment.
Use buildx when exporting cache to gha backend
The container runner script invokes docker build with --cache-from type=gha and --cache-to type=gha,mode=max, but the gha cache backend is documented for Buildx usage (and not supported by the default Docker driver). This means the new release-gate-container workflow can fail at image build time even before running checks; switch this step to docker buildx build (or drop gha cache flags) to keep the gate runnable.
Useful? React with 👍 / 👎.
| "frontend-checks / Frontend Checks (Node 20)", | ||
| "frontend-checks / Frontend Checks (Node 22)", | ||
| "Detect Secrets Drift", | ||
| "Release Gate Container" |
There was a problem hiding this comment.
Remove path-filtered release gate from required checks
apply-governance.sh now requires the Release Gate Container status on protected branches, but that check is produced by a workflow that only triggers when contracts/** changes (contracts-release-gate-container.yml has pull_request.paths). For PRs that only touch other areas (for example docs or frontend-only files), the workflow is skipped and GitHub keeps the required check pending, which blocks merges.
Useful? React with 👍 / 👎.
|
|
||
| # Baseline checks for dev, canary, and main. | ||
| DEV_CHECKS_JSON='[ | ||
| "Analyze (javascript-typescript)", |
There was a problem hiding this comment.
Remove path-filtered CodeQL check from required checks
This commit makes Analyze (javascript-typescript) required, but the codeql.yml workflow is path-filtered to src/**, contracts/**, and a few manifest files. Any PR outside those paths will skip CodeQL entirely, leaving a required check in Waiting for status to be reported and preventing merge on protected branches.
Useful? React with 👍 / 👎.
| docker build \ | ||
| --cache-from "type=gha" \ | ||
| --cache-to "type=gha,mode=max" \ |
There was a problem hiding this comment.
Build release-gate image with buildx for gha cache
The container gate script calls docker build while passing --cache-from type=gha and --cache-to type=gha,mode=max; those flags are intended for Buildx/BuildKit cache backends, not the default docker build path. In CI this can fail during image build before the release gate runs, so the new required check becomes flaky or permanently failing.
Useful? React with 👍 / 👎.
|
|
||
| # Baseline checks for dev, canary, and main. | ||
| DEV_CHECKS_JSON='[ | ||
| "Analyze (javascript-typescript)", |
There was a problem hiding this comment.
Remove path-filtered CodeQL from required checks
Analyze (javascript-typescript) is now configured as a required branch-protection check, but codeql.yml is path-filtered to src/**, contracts/**, and a few manifest files. PRs outside those paths will skip CodeQL entirely, which leaves a required check pending and blocks merging.
Useful? React with 👍 / 👎.
| docker build \ | ||
| --cache-from "type=gha" \ | ||
| --cache-to "type=gha,mode=max" \ |
There was a problem hiding this comment.
Build release-gate image with buildx for gha cache
The container gate script uses docker build while passing --cache-from type=gha and --cache-to type=gha,mode=max; those cache backends are intended for Buildx/BuildKit workflows, so this step can fail before the gate logic runs. Since this check is required in governance, that failure can block protected-branch merges.
Useful? React with 👍 / 👎.
| if [[ "$remote" =~ ^https://github.com/([^/]+/[^/]+)(\.git)?$ ]]; then | ||
| echo "${BASH_REMATCH[1]}"; return |
There was a problem hiding this comment.
Strip optional .git suffix when inferring GH_REPO
The remote-parsing regex captures .git as part of the repo slug for standard remotes like https://github.com/org/repo.git, producing GH_REPO=org/repo.git. Subsequent API URLs then target a non-existent repository path, causing the pre-transfer readiness check to fail unless GH_REPO is manually overridden.
Useful? React with 👍 / 👎.
| if [[ "$remote" =~ ^https://github.com/([^/]+/[^/]+)(\.git)?$ ]]; then | ||
| echo "${BASH_REMATCH[1]}"; return |
There was a problem hiding this comment.
Fix GH_REPO inference for .git remotes in governance verify
The same greedy remote regex is used in verify-governance.sh, so a normal origin like .../repo.git is parsed as owner/repo.git. That makes governance verification call the wrong repository endpoint and fail unexpectedly in scheduled/manual verification runs when GH_REPO is not explicitly set.
Useful? React with 👍 / 👎.
| address tokenOnB = address(token); | ||
| assertEq(RYLA(tokenOnB).balanceOf(recipient), amount, "recipient did not receive tokens on chain B"); |
There was a problem hiding this comment.
Deploy destination token before asserting fork-B balance
The new bridge integration test deploys RYLA only on forkA and then reads RYLA(address(token)).balanceOf on forkB. Foundry fork state is isolated by default, so that address may have no code on forkB, causing a revert instead of validating cross-chain delivery and making the integration test unreliable.
Useful? React with 👍 / 👎.
Summary
Promotes
devtocanary— 65 commits since last promotion.Key changes
Verification
Staging rehearsal passed on OP Sepolia (run 25623319234).