Skip to content

Release gate: v2-dev → v2 (waits for cross-repo E2E)#188

Open
MuncleUscles wants to merge 6 commits into
v2from
v2-dev
Open

Release gate: v2-dev → v2 (waits for cross-repo E2E)#188
MuncleUscles wants to merge 6 commits into
v2from
v2-dev

Conversation

@MuncleUscles

Copy link
Copy Markdown
Member

Standing release-gate PR: v2-devv2

This is a long-lived gate PR, not a normal feature PR. Do not merge ad-hoc.

Purpose

  • v2-dev is the active integration branch for the v0.6 fee work. Individual PRs merge into v2-dev and only need to pass normal repo CI — they are not blocked on the full cross-repo release train being green.
  • This PR is the single point where v2-dev is promoted to v2. It waits for cross-repo E2E (the release train) to go green before it is merged.
  • Other projects in the release train test against v2-dev.

How to use

  • Keep this PR open as the running view of "what would ship to v2".
  • Merge only when the full release-train E2E is green.

(Mirrors genlayerlabs/genlayer-consensus#1070.)

MuncleUscles and others added 2 commits June 8, 2026 17:06
* Release v1.1.7 [skip ci]

* ci: scope down release/sync-docs to dedicated GitHub Apps (#168)

Replace the over-privileged shared CI bot with two dedicated, minimally
scoped GitHub Apps gated behind protected environments. Mirrors the
same change in genlayer-testing-suite#78 and genlayer-cli#297.

- publish.yml: rename environment npm -> Publish, switch from
  tibdex/github-app-token@v1 (archived) to actions/create-github-app-token@v3
  with vars.PUBLISH_CI_APP_CLIENT_ID + secrets.PUBLISH_CI_APP_KEY.
- sync-docs.yml: bump create-github-app-token to @V3, switch to
  client-id, gate behind the Sync-docs environment with
  vars.DOCS_SYNC_APP_CLIENT_ID + secrets.DOCS_SYNC_APP_KEY.

Each App should be installed only on the repos it needs (Publish: this
repo only; Sync-docs: this repo + genlayer-docs) with Contents: read
& write as the only permission.

* fix(ci): add trigger comment to publish workflow (#170)

No-op patch release to verify the publish pipeline end-to-end after
the env scope-down (#168) and npm trusted publisher update.

* Release v1.1.8 [skip ci]

* feat: branch-per-major release model (#172)

Aligns this repo with genlayer-node + genvm: branches per major (v1
today; v2 / v2-dev when fees lands), no main, deliberate releases via
script + skill.

What changes:
- publish.yml fires on `push: tags v*` instead of `push: main`. The
  workflow no longer bumps versions — it just sanity-checks that the
  tag matches package.json, builds, publishes to npm, and creates the
  GitHub Release. No commits back to the branch.
- scripts/release.sh is the new release entry point. Pre-flight checks:
  on a v<major> branch, clean tree, in sync with origin, latest CI
  green. Refuses major bumps without --allow-major (those need a new
  branch in this model). Then runs release-it with an explicit
  version to bump package.json, prepend CHANGELOG.md, commit, tag,
  push — but with npm/github plugins disabled so the dev machine
  doesn't need npm auth and the GH release is cut by CI from the tag.
- .claude/skills/release/SKILL.md documents the flow for Claude: when
  to use it, what to confirm with the user, what to refuse, and the
  roll-back path (deprecate, never unpublish blind).
- CONTRIBUTING.md explains the branch model + points at the skill.
- npm run release → ./scripts/release.sh so the convenience script
  routes through pre-flight checks (the previous `release-it --ci`
  invocation bypassed every guard).
- .github/e2e-track on this branch points at runner track v0.5
  (current stable). v2-dev (when it exists) will point at v0.6-dev.

Why kill auto-bump:
- Twice landed accidental majors when a BREAKING CHANGE footer in a
  PR body triggered the conventional-commit bump algorithm — once on
  this repo (0.28.7 → 1.0.0), once on genlayer-testing-suite (yanked
  v1/v2 tags). The whatBump cap mitigated future jumps but didn't
  address the underlying issue: shipping a release shouldn't be a
  side-effect of merging a PR.
- The new flow puts a human checkpoint between "code lands" and
  "users get it" without losing the bump-and-tag automation.

Follow-up (separate PRs):
- After this lands: switch default branch on github.com from main to
  v1, then delete origin/main.
- Same shape applied to genlayer-py, genlayer-cli,
  genlayer-testing-suite, genlayer-explorer (per their existing major).
- Runner matrix updates: matrix/v0.5.yaml tooling refs switch from
  tag pins to branch pins (genlayer-js: v1).

* fix: run CI on v1 branch (#173)

* fix: run CI on v1 branch

* fix: sync testnet consensus abi

* ci(workflows): sync e2e.yml from genlayer-e2e (#174)

Co-authored-by: ci-core-e2e-runner[bot] <263344042+ci-core-e2e-runner[bot]@users.noreply.github.com>

* ci(workflows): sync e2e-housekeeper.yml from genlayer-e2e (#175)

Co-authored-by: ci-core-e2e-runner[bot] <263344042+ci-core-e2e-runner[bot]@users.noreply.github.com>

* ci(workflows): sync e2e.yml from genlayer-e2e (#176)

Co-authored-by: ci-core-e2e-runner[bot] <263344042+ci-core-e2e-runner[bot]@users.noreply.github.com>

* ci(workflows): sync e2e-housekeeper.yml from genlayer-e2e (#177)

Co-authored-by: ci-core-e2e-runner[bot] <263344042+ci-core-e2e-runner[bot]@users.noreply.github.com>

* feat: add v0.6 fee-aware transactions

* fix: handle studio raw transaction hashes

* fix: align studio fee floor fallback

* fix: satisfy fee estimate typecheck

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@genlayer.com>
Co-authored-by: Rafał Rabenda <99408377+rrabenda@users.noreply.github.com>
Co-authored-by: ci-core-e2e-runner[bot] <263344042+ci-core-e2e-runner[bot]@users.noreply.github.com>
@coderabbitai

coderabbitai Bot commented Jun 10, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

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: defaults

Review profile: CHILL

Plan: Pro

Run ID: 42f732a5-0df0-426f-84b3-ab67f877a0db

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
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch v2-dev

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 and usage tips.

… enum completeness (#187)

* feat(fees)!: estimation correctness, wait-for-decided semantics, v0.6 enum completeness

Estimation (designer rulings):
- receipt gas price: max(quoteGasPrice(), eth_gasPrice) — quoteGasPrice() reads
  tx.gasprice which is ~0 under plain eth_call on chain-derived networks; a zero
  effective price on an enabled policy now throws instead of producing a zero cap
  (consensus rejects those with FeeValueMustBeNonZero(6))
- executionBudgetFloor: max(on-chain view, local recompute at effective price) —
  the on-chain view multiplies by the same ~0 quoteGasPrice; local formula pins
  estimateProposeReceiptGas(MIN_RECEIPT_BYTES=512) = 306,192 gas
- simulation-derived budgets no longer clobbered by the blanket default:
  recommended = max(floor, observed × headroom); DEFAULT_TRANSACTION_EXECUTION_GAS
  (100M) applies only to the no-simulation fallback, exported with provenance +
  TODO(data)

Wait semantics (designer: 'wait for decided', legacy naming was wrong):
- waitUntil: 'decided' | 'finalized' replaces status; legacy status param maps
  ACCEPTED→decided / FINALIZED→finalized with one-time deprecation warning
- new isSuccessful(tx): status ∈ {ACCEPTED, FINALIZED} && FINISHED_WITH_RETURN

v0.6 ABI completeness:
- status 14 LEADER_REVEALING; VoteType 3 TIMEOUT / 4 NONDET_DISAGREE;
  ResultType remapped to v0.6 (dead v0.5 6/7 entries removed)
- revert selectors: BudgetTooLow, RollupBudgetBelowFloor, FeeValueMustBeNonZero
- DEPLOY_CALL_KEY = bytes32(1) (deploy callKey sentinel, pending GenVM emit);
  fullTransaction/waitUntil added to ITransactionActions

* ci: restore unit-test and chains-drift CI for the v2 line; add prepare script

- test.yml and chains-drift.yml only triggered on v1 — PRs to v2-dev ran
  nothing but the smoke workflow, so the entire fee rework would have merged
  with zero unit-test CI (lost in the branching-strategy transition)
- prepare script (npm run build) makes git-ref installs usable: dependents
  (genlayer-cli CI) can pin github:genlayerlabs/genlayer-js#<branch> until
  the v2 npm release exists
@MuncleUscles

Copy link
Copy Markdown
Member Author

/run-e2e all

…y key = bytes32(0) (#190)

The wildcard sentinel previously shared bytes32(0) with GenVM's natural
empty-method-name key (deploy, emit_transfer), making deploy-specific
Mode-2 allocations impossible. Per cross-team decision, the wildcard
moves to the untagged keccak256 of empty bytes
(0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470),
which is provably outside the derived-key space. DEPLOY_CALL_KEY drops
the bytes32(1) sentinel (GenVM ask withdrawn) and now equals
CALL_KEY_UNNAMED = bytes32(0), matching what GenVM actually emits.

Must land together with the consensus CALL_KEY_WILDCARD constant and the
node Mode-2 tree decode change in v0.6.
@MuncleUscles

Copy link
Copy Markdown
Member Author

/run-e2e all v0.6

6 similar comments
@MuncleUscles

Copy link
Copy Markdown
Member Author

/run-e2e all v0.6

@MuncleUscles

Copy link
Copy Markdown
Member Author

/run-e2e all v0.6

@MuncleUscles

Copy link
Copy Markdown
Member Author

/run-e2e all v0.6

@MuncleUscles

Copy link
Copy Markdown
Member Author

/run-e2e all v0.6

@MuncleUscles

Copy link
Copy Markdown
Member Author

/run-e2e all v0.6

@MuncleUscles

Copy link
Copy Markdown
Member Author

/run-e2e all v0.6

Copy link
Copy Markdown
Member Author

/run-e2e v0.6-dev all force

Copy link
Copy Markdown
Member Author

/run-e2e v0.6 all force

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