Skip to content

fix(registry): catch up to @w3s/playground-registry v11#208

Closed
ottovlotto wants to merge 2 commits into
mainfrom
becca/cli-registry-v11
Closed

fix(registry): catch up to @w3s/playground-registry v11#208
ottovlotto wants to merge 2 commits into
mainfrom
becca/cli-registry-v11

Conversation

@ottovlotto
Copy link
Copy Markdown
Collaborator

Summary

Tonight's nightly (#207) failed across five cells on Revive.ContractReverted from registry.publish(). Root cause: the contract was redeployed in playground-app PR #204 ("feat(registry): points, leaderboard, star toggle, mod credit") with three new required tail params. The CLI's pinned ABI was still v7's four-arg signature, so every publish call reverted on signature mismatch.

This PR catches the CLI up.

Changes

cdm.json

Replaces the @w3s/playground-registry entry under target 929b5c63e2cb5202 with the v11 block ported verbatim from playground-app's cdm.json (same target hash, same Paseo Next v2 chain endpoints — only contract address, version, metadataCid, and ABI change).

  • Before: 0xea3fb6C5cDA79FEEf5b2d42a9122fC1BAFaF647F v7
  • After: 0x109BBf68F41B570Fd6d3b7bDE9b8e18779FDd8Db v11

src/utils/deploy/playground.ts

registry.publish.tx(...) now passes the three new tail params:

New param Value Why
modded_from "" Capture-at-mod-time isn't yet wired up in the CLI (V1 P0 per spec). Empty string is the contract's sentinel for "no source".
is_moddable repositoryUrl !== null Same signal the app metadata already carries — true for --moddable deploys.
is_dev_signer publishSigner.source === \"dev\" True for Alice / --suri flows. The contract uses this to skip the launch-points award when a shared dev key signs on the user's behalf.

src/utils/deploy/playground.test.ts

Three existing toHaveBeenCalledWith assertions now check the full 7-arg signature. Adds one new test ("passes is_dev_signer=true and the right is_moddable when the signer source is dev") that exercises both new param variants in a single publish, paired with is_moddable=false, so a future regression hard-coding either to a default would surface immediately.

Follow-up not addressed here

  • modded_from capture-at-mod-time. `dot mod ` needs to write the source domain to local metadata, threaded to publishToPlayground and passed here. V1 P0 per the spec — separate PR.

Test plan

  • pnpm format:check — clean
  • pnpm lint:license — clean
  • pnpm build — clean
  • pnpm test — 497 passed / 1 skipped
  • workflow_dispatch nightly on this branch — moddable cell goes green on first attempt
  • Subsequent scheduled nightly green; Nightly E2E failure: 2026-05-26 #207 auto-closes

Closes #207

Tonight's nightly (#207) failed across five cells on
`Revive.ContractReverted` from `registry.publish()`. Root cause: the
contract was redeployed in playground-app PR #204 (and again since —
@w3s/playground-registry on Paseo Next v2 is now v11 at
`0x109BBf68F41B570Fd6d3b7bDE9b8e18779FDd8Db`) with three new required
tail params on `publish()`. The CLI's pinned ABI was still v7's four-arg
signature, so every publish call reverted on signature mismatch.

This PR catches the CLI up.

## cdm.json

Replaces the `@w3s/playground-registry` entry under target
`929b5c63e2cb5202` with the v11 block ported verbatim from
playground-app's cdm.json (same target hash, same Paseo-Next-v2 chain
endpoints — only the contract address, version, metadataCid, and ABI
move). All other targets and contracts untouched.

## publishToPlayground

`registry.publish.tx(...)` call site in `src/utils/deploy/playground.ts`
now passes the three new tail params:

- `modded_from: ""` — capture-at-mod-time isn't yet wired up in the CLI
  (V1 P0 per spec); empty string is the contract's sentinel for "no
  source". Follow-up needed once `dot mod` writes the source domain to
  local metadata.
- `is_moddable: repositoryUrl !== null` — same signal the app metadata
  already carries (a public GitHub repo URL). True for `--moddable`
  deploys, false otherwise.
- `is_dev_signer: publishSigner.source === "dev"` — true for Alice /
  `--suri` flows, false for the user's session signer. The contract uses
  this to skip the launch-points award when a shared dev key is signing
  on the user's behalf.

## Tests

`src/utils/deploy/playground.test.ts` — three existing `toHaveBeenCalledWith`
assertions now check the full 7-arg signature. Adds one new test
("passes is_dev_signer=true and the right is_moddable when the signer
source is dev") that exercises both new param variants in a single
publish, paired with `is_moddable=false`, so a future regression that
hard-codes either to a default value would surface immediately.

All 497 unit tests pass locally. Format / lint:license / build all
clean. Nightly verification via workflow_dispatch on the PR branch.
@UtkarshBhardwaj007
Copy link
Copy Markdown
Member

@ottovlotto already merged this in my PR

@ottovlotto
Copy link
Copy Markdown
Collaborator Author

@UtkarshBhardwaj007 @charlesHetterich — PM-initiated starter PR to unblock tonight's nightly (#207). Bundles three things tightly because they have to ship together: cdm.json refresh to v11 (ported from playground-app), the new publish() tail args in src/utils/deploy/playground.ts, and matching test updates.

The src/utils/deploy/playground.ts change is CLI team territory — is_dev_signer, is_moddable, and modded_from semantics. I made the most direct mapping I could from what was already in scope (publishSigner.source === "dev", repositoryUrl !== null, and "" for not-yet-built modded-from capture), but you're better positioned to judge whether that's right — particularly is_dev_signer since you touched the dev-publish path most recently in #193.

Action options, all good from my end:

  1. Merge as-is if the approach checks out. Closes Nightly E2E failure: 2026-05-26 #207, nightly comes back tomorrow.
  2. Modify in place — push directly to this branch if it needs tweaks.
  3. Take your own approach in a separate PR and close this. If you do, I'll come back and update the test-side coverage in a follow-up PR once your CLI change lands and we know what shape is_dev_signer / is_moddable / modded_from actually want to be.

No urgency from my side on which option — happy to leave it parked until you have a moment. CI is currently degraded (workflow_dispatch returning 500 since ~08:00 UTC; PR-event workflows aren't firing either) so live verification of the publish path against the new contract is on hold regardless.

@ottovlotto ottovlotto removed the request for review from charlesHetterich May 26, 2026 14:54
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.

Nightly E2E failure: 2026-05-26

2 participants