Skip to content

Release daski v0.11.5 - #8

Closed
pawmmm wants to merge 4 commits into
mainfrom
develop
Closed

pawmmm wants to merge 4 commits into
mainfrom
develop

Conversation

@pawmmm

@pawmmm pawmmm commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

Release daski v0.11.5 from develop b1e9f63.

  • Declare the owner's part of the branch model and the genesis scripts in the hand-off
  • Add a genesis script and a read-only verifier for the marketplace registries
  • Let the splitter scripts run on Base as well as Base Sepolia
  • Describe the develop, sandbox and main branch model

CONTRIBUTING.md still called main the release branch that deploys key
off, and the release-readiness checklist only named main. The stack now
integrates on develop, releases to testnet from sandbox, which only the
release coordinator writes through the develop to sandbox release pull
request, and marks production with main, which the production coordinator
moves by fast-forward to a release commit of sandbox. Say so in both
documents so nobody merges into sandbox or main by hand, and keep the
statement that moving a branch never deploys a contract.

Documentation only; CI already runs on every push, so the workflow is
unchanged. No contract, ABI or deployment change: history-compatible, no
new epoch.
DeployOutcomeSplitterFactory and DeployOutcomeSplitter required chain
84532 and StandardRailCircleUSDC pinned the Base Sepolia chain id and
USDC address, so the standard rail could not be deployed to Base through
reviewed scripts. StandardRailCircleUSDC now names the two supported
chains, Base (8453) and Base Sepolia (84532), returns the reviewed
canonical Circle USDC for each, and refuses every other chain and every
other token; the decimals, pause and blacklist checks are unchanged. The
deploy scripts bind a splitter to the executing chain and that chain's
reviewed token, and WriteOutcomeSplitterManifest follows through the same
library, so a reviewed init code hash prepared for the other chain or for
another token is refused.

The Base USDC address 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 is the
reviewed 8453 entry of REVIEWED_USDC_DOMAINS in the gateway's
src/payment/usdcDomain.ts (daski-gateway develop at 1c3ecc1), checksummed
with cast. The Base Sepolia address is unchanged.

DeployOutcomeSplitter now carries its inputs in a memory struct so it
also compiles without the IR pipeline: coverage builds compile whatever
the tests import, and this script had no test before. Its environment
variable names, read order, checks and returned address are unchanged.
New tests run both deploy scripts under both chain ids and refuse an
unsupported chain and a review made for another chain or token; the
library tests cover both chains the same way.

Deployment tooling and README only. No contract, ABI or deployment
change: history-compatible, no new epoch.
…istries

The genesis scripts for AgentIndex, ValidationRegistry, ProviderRegistry
and ServiceRegistry were removed on 2026-08-12 in 3372e00 together with
the retired payment stack, so the registries could not be deployed to a
new chain through reviewed scripts. DeployMarketplaceRegistries recovers
the registry part of the old Deploy.s.sol and nothing of the payment
stack: no router, adapters, mock token, mock sanctions list, facilitator,
payment treasury or commission.

It runs on Base and Base Sepolia only and deploys the four registries as
ERC-1967 UUPS proxies with the initializer arguments the current
contracts take. The identity registry, sanctions oracle, treasury and
listing fee are environment inputs; the listing-fee token is the reviewed
Circle USDC of the executing chain. The final admin must pass the
existing ReputationSafeValidation rules, so an externally owned account
or a 1-of-1 Safe is refused on both chains. The broadcaster comes from
vm.startBroadcast() without a key, so a hardware wallet or keystore can
sign and no script reads a private key. It is only the bootstrap admin:
each proxy is paused, given its guardian and offered to the Safe right
after it is created, and the script ends, like DeployReputationStorage,
with paused proxies whose pending admin is the Safe and a readiness check
of that state. Only the Safe can accept and then unpause; after
acceptance the broadcaster holds no role.

VerifyMarketplaceRegistries is a view-only check for the state after the
Safe has accepted: code and an ERC-1967 implementation behind each proxy,
the expected registry type at each address, one identity registry and
sanctions oracle, the reviewed token, ServiceRegistry wired to the given
ProviderRegistry, the reviewed Safe as admin and no pending admin.
DeploySafe and ExecuteGovernanceBatches are not restored; neither script
needs them.

Tests deploy on the local EVM under both chain ids with a Safe stub that
satisfies the validation, cover the refusals, show that the broadcaster
keeps no authority once the Safe has accepted, and run the verifier
against a fresh and a tampered deployment. The genesis script was also
simulated, and the verifier run, against a Base Sepolia fork without
sending a transaction.

Deployment tooling, tests and documentation only. No contract, ABI or
deployment change: history-compatible, no new epoch.
…in the hand-off

The commits that moved this repository to the develop, sandbox and main
model did not say what they leave for the owner. The release agent reads
nothing but commits, so that part is declared here, on a commit that changes
no file. Both release coordinators list an owner task once, however many
repositories declare it.

The genesis script added in fccee52 takes the identity registry and the
sanctions oracle as inputs, and until the Safe accepts, the broadcaster is
still admin of the paused proxies. Both are the owner's to settle before the
script is used on Base.

Release-Owner-Task: Create the production and rehearsal release GitHub Apps and install them on the five shipped repositories, see the release-apps-and-rulesets task in deploy-mainnet
Release-Owner-Task: Before the registry genesis script is used on Base, decide whether to pin the identity registry and sanctions oracle for 8453 instead of passing them as inputs
Release-Owner-Task: When the genesis script has run, check admin, pending admin, the paused flag and the implementations on chain before the Safe accepts
Release-Rollback: deployment scripts, tests and documentation only; nothing is deployed or upgraded by this release, so nothing needs undoing
@pawmmm

pawmmm commented Sep 17, 2026

Copy link
Copy Markdown
Contributor Author

Closed by the branch cutover: releases now merge into sandbox, and the next release opens its pull request there. main is the production branch.

@pawmmm pawmmm closed this Sep 17, 2026
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