feat!: remove holders/moves (custodial rental) indexing from 2.0.0 - #84
Merged
Merged
Conversation
AtomicAssets V2 is dropping the custodial rental primitive (move/logmove actions + holders table) before GA — see atomicassets/atomicassets-contract#27. This removes the corresponding indexing so ECA 2.0.0 ships without it: - migrations/2.0.0/atomicassets.sql: drop the holder column add and the atomicassets_moves(+_assets) tables/indexes; the mutable-template, schematypes and author-swap DDL stays. The 2.0.0 migration is edited IN PLACE (it never shipped to operators or mainnet; only the wax-testnet deployment applied it, which gets a one-off manual SQL cleanup after this rolls out) - delete migrations/2.0.0/atomicassets-deferred.sql (the CONCURRENTLY holder index) and the holder backfill runbook — this removes the ~475M-row WAX backfill that was the 2.0.0 mainnet release blocker - delete /atomicassets/v1/moves endpoints (MoveApi, handlers, routes, fillMoves, formatMove, openapi Move schema, moves limit) - remove the holder asset filter (API + openapi) and the holder column from the Asset schema, assets_master view and greenfield DDL - filler: remove the logmove trace handler, the authoritative holders delta handler (TABLE_HOLDERS priority), holder maintenance in logmint/logburnasset/logtransfer, the logmove log-trace handler, and the LogMoveActionData/HoldersTableRow types Verification: tsc + eslint clean; 248 unit + 347 integration tests passing (holders/moves cases removed).
There was a problem hiding this comment.
Pull request overview
This PR removes AtomicAssets v2 custodial rental indexing (the holders primitive and move/logmove tracking) from the 2.0.0 release line, including the DB schema/migrations, filler ingestion, and public API surface, to avoid the large holder backfill requirement and ship ECA 2.0.0 without that blocker.
Changes:
- Removes the
holdercolumn and allatomicassets_moves*tables/indexes/views from the “greenfield” DDL and from the edited-in-placedefinitions/migrations/2.0.0/atomicassets.sql, and drops the 2.0.0 deferred migration + runbook docs. - Deletes filler ingestion/types for
logmovetraces and theholderstable delta reconciliation, and removes the corresponding integration test coverage. - Removes the
/atomicassets/v1/movesAPI endpoints and OpenAPIMoveschema, and removes theholderAsset field +holderasset filter support.
Reviewed changes
Copilot reviewed 20 out of 20 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| src/types/config.ts | Removes the moves limit knob from the AtomicAssets limits config shape. |
| src/filler/handlers/atomicassets/types/tables.ts | Deletes HoldersTableRow type used for custodial rental indexing. |
| src/filler/handlers/atomicassets/types/actions.ts | Deletes LogMoveActionData type tied to logmove tracing. |
| src/filler/handlers/atomicassets/processors/logs.ts | Stops indexing logmove traces into the logs pipeline. |
| src/filler/handlers/atomicassets/processors/assets.ts | Removes all holder/move ingestion logic and stops writing holder to assets. |
| src/filler/handlers/atomicassets/processors/assets.integration.test.ts | Deletes move/holders integration tests that depended on the removed indexing. |
| src/filler/handlers/atomicassets/index.ts | Removes TABLE_HOLDERS priority and stops creating the moves master view. |
| src/api/namespaces/atomicassets/utils.ts | Removes the holder filter from asset filtering logic. |
| src/api/namespaces/atomicassets/routes/moves.ts | Deletes the moves HTTP + socket API implementation. |
| src/api/namespaces/atomicassets/openapi.ts | Removes the Move schema and the holder Asset field + query parameter docs. |
| src/api/namespaces/atomicassets/index.ts | Removes MoveApi wiring from HTTP routes and sockets. |
| src/api/namespaces/atomicassets/handlers/moves.ts | Deletes the moves query/handler implementation. |
| src/api/namespaces/atomicassets/format.ts | Removes formatMove formatter. |
| src/api/namespaces/atomicassets/filler.ts | Removes fillMoves helper used to attach assets to moves. |
| definitions/views/atomicassets_moves_master.sql | Deletes the SQL view definition for moves. |
| definitions/views/atomicassets_assets_master.sql | Removes holder from the assets master view projection. |
| definitions/tables/atomicassets_tables.sql | Removes holder column and all moves tables/indexes from greenfield DDL. |
| definitions/migrations/2.0.0/README.md | Removes the holder backfill runbook documentation. |
| definitions/migrations/2.0.0/atomicassets.sql | Removes holder column add + moves table/index creation from the 2.0.0 migration. |
| definitions/migrations/2.0.0/atomicassets-deferred.sql | Deletes the deferred concurrent holder index build for 2.0.0. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
robrigo
added a commit
that referenced
this pull request
Jul 3, 2026
CI previously only triggered on PRs to main, so PRs into feat/atomicassets-v2 ran zero checks and verification had to happen locally (bit us during the rentals descope: #84 merged with no CI).
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.
Why
AtomicAssets V2 is dropping the custodial rental primitive (
move/logmove+holderstable) before GA — atomicassets/atomicassets-contract#27. Removing the corresponding indexing lets ECA 2.0.0 ship without the ~475M-row WAXholderbackfill, which was the mainnet release blocker.The removed code is preserved on
archive/v2-holders-moves.What
2.0.0/atomicassets.sql): theholdercolumn add andatomicassets_moves(+_assets) tables/indexes are gone; mutable-template, schematypes and author-swap DDL stays. Editing in place is safe because 2.0.0 never shipped to operators or mainnet — only the wax-testnet deployment applied it, and that DB gets a one-off manual cleanup after the rc4 rollout (drop moves view/tables, holder index, holder column;dbinfo.versionstays 2.0.0 so the edited dir never re-runs there). A forward drop-migration was rejected: it would force every future operator to create-then-drop a column on a 475M-row table.2.0.0/atomicassets-deferred.sql(CONCURRENTLY holder index) and the backfill runbook from the 2.0.0 README/atomicassets/v1/movesendpoints (MoveApi, handlers, routes,fillMoves,formatMove, openapiMoveschema,moveslimit)holderasset filter and theholderfield from the Asset schema,assets_masterview and greenfield DDLlogmovetrace handler, the authoritativeholdersdelta handler (TABLE_HOLDERS priority), holder maintenance in logmint/logburnasset/logtransfer, the logmove log-trace handler, and theLogMoveActionData/HoldersTableRowtypes2.0.1/(atomicmarket drain hardening) untouchedVerification
tsc --noEmit+ eslint cleanRollout note (wax-testnet)
Deploy order matters: roll the rc4 filler+server out FIRST, then run the one-off drop SQL on
eca_wax_testnet(dropping tables under the rc3 filler would crash ingestion).