Skip to content

feat!: remove holders/moves (custodial rental) indexing from 2.0.0 - #84

Merged
robrigo merged 1 commit into
feat/atomicassets-v2from
feat/remove-holders-moves
Jul 3, 2026
Merged

feat!: remove holders/moves (custodial rental) indexing from 2.0.0#84
robrigo merged 1 commit into
feat/atomicassets-v2from
feat/remove-holders-moves

Conversation

@robrigo

@robrigo robrigo commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Why

AtomicAssets V2 is dropping the custodial rental primitive (move/logmove + holders table) before GA — atomicassets/atomicassets-contract#27. Removing the corresponding indexing lets ECA 2.0.0 ship without the ~475M-row WAX holder backfill, which was the mainnet release blocker.

The removed code is preserved on archive/v2-holders-moves.

What

  • Migration edited in place (2.0.0/atomicassets.sql): the holder column add and atomicassets_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.version stays 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.
  • Deleted 2.0.0/atomicassets-deferred.sql (CONCURRENTLY holder index) and the backfill runbook from the 2.0.0 README
  • Deleted the /atomicassets/v1/moves endpoints (MoveApi, handlers, routes, fillMoves, formatMove, openapi Move schema, moves limit)
  • Removed the holder asset filter and the holder field from the Asset schema, assets_master view and greenfield DDL
  • Filler: removed 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
  • 2.0.1/ (atomicmarket drain hardening) untouched

Verification

  • tsc --noEmit + eslint clean
  • 248 unit + 347 integration tests passing (postgres:18; holders/moves cases removed) — the greenfield DDL path exercises the edited migration/table files

Rollout 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).

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).

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 holder column and all atomicassets_moves* tables/indexes/views from the “greenfield” DDL and from the edited-in-place definitions/migrations/2.0.0/atomicassets.sql, and drops the 2.0.0 deferred migration + runbook docs.
  • Deletes filler ingestion/types for logmove traces and the holders table delta reconciliation, and removes the corresponding integration test coverage.
  • Removes the /atomicassets/v1/moves API endpoints and OpenAPI Move schema, and removes the holder Asset field + holder asset 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
robrigo merged commit b31bb36 into feat/atomicassets-v2 Jul 3, 2026
1 check passed
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).
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.

2 participants