Skip to content

feat: add dedicated ab-status skill for Asset Bundle checks#27

Merged
dalkia merged 22 commits intomainfrom
feat/ab-conversion-skill
Mar 27, 2026
Merged

feat: add dedicated ab-status skill for Asset Bundle checks#27
dalkia merged 22 commits intomainfrom
feat/ab-conversion-skill

Conversation

@decentraland-bot
Copy link
Copy Markdown

@decentraland-bot decentraland-bot commented Mar 25, 2026

Summary

  • Creates a new ab-status skill dedicated to Asset Bundle conversion diagnostics
  • Reverts dcl-consistency back to its original Catalyst-only scope (pointer consistency, wearables consistency)
  • Separates the AB domain from the Catalyst domain as they are distinct service stacks

What the ab-status skill does

Two flows depending on entity type:

Genesis City (scenes, wearables, emotes)

Uses @dcl/opscli pointer-consistency as a single command that handles:

  • Pointer resolution from CID (--cid flag)
  • Catalyst consistency check across all nodes
  • Asset Bundle Registry status (entity ID match, global status, per-platform status + versions)

Only falls back to a direct API call for queue checks when conversion is pending/fallback/not found.

Worlds

  1. Discover scenes via worlds-content-server /world/<name>/scenes endpoint
  2. Check AB Registry — query /entities/active with pointers, compare entity IDs for staleness
  3. Check queue if conversion is not complete

Supported inputs

  • Genesis City parcels: check AB: 0,0
  • Worlds: check AB: 0,0 world=myworld.dcl.eth
  • Wearables/Emotes: check AB: urn:decentraland:...
  • Entity IDs: check AB: bafkrei...
  • Queue only: check AB queue
  • Environment: --env org|zone|today

Why a separate skill

Catalyst consistency (content propagation across Catalyst nodes) and AB conversion status (asset-bundle-registry + converter pipeline) are different domains with different services, APIs, and failure modes. They shouldn't share a skill.


🤖 Generated with Claude Code

@coveralls
Copy link
Copy Markdown

coveralls commented Mar 25, 2026

Pull Request Test Coverage Report for Build 23664961964

Details

  • 2 of 2 (100.0%) changed or added relevant lines in 1 file are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage increased (+0.3%) to 23.281%

Totals Coverage Status
Change from base Build 23642476774: 0.3%
Covered Lines: 185
Relevant Lines: 756

💛 - Coveralls

Splits AB conversion checks out of dcl-consistency into its own skill.
Reverts dcl-consistency to its original Catalyst-only scope.

The new ab-status skill provides a comprehensive diagnostic workflow:
1. Resolves entity on Catalyst (scenes, worlds, wearables, emotes)
2. Checks AB registry status with entity ID cross-validation
3. Checks conversion queue position per platform
4. Infers active conversion status
5. Validates main.crdt/scene.js presence for fallback safety (ref #7625)

Supports Genesis City parcels, worlds (via world_name param),
wearables, and emotes.
@decentraland-bot decentraland-bot changed the title feat: add AB conversion and pipeline checks to dcl-consistency skill feat: add dedicated ab-status skill for Asset Bundle checks Mar 25, 2026
root and others added 3 commits March 25, 2026 20:44
Changes based on Juan Ignacio Molteni's review:
1. Add environment support (org/zone/today) - defaults to org
2. Use Places API for world scene discovery (handles multi-scene worlds)
3. Entity ID mismatch is now a critical stop - no queue check after
4. Use POST /entities/active registry endpoint (canonical API)
5. Fallback state triggers Catalyst consistency check via dcl-consistency skill
6. Remove all LODs-related data
7. Remove opscli check-ab-conversion dependency
1. Add version output from registry POST response (versions.assets per platform)
2. For worlds: use Places API only for scene-id and pointers, no Catalyst query
3. Remove worlds-content-server /about fallback (unreliable for multi-scene)
4. Remove {ids:[]} body option from registry - only use pointers
5. Check only top-level status field, not individual platform statuses
- For worlds, always report ALL scenes from the world even if a specific
  pointer is given. The report covers every scene returned by Places API.
- Removed Step 5b (main.crdt and scene.js fallback file check) entirely.
- Step 5 now only contains the Catalyst consistency check for fallback scenes.

Requested by Juan Ignacio Molteni via Slack
@decentraland-bot
Copy link
Copy Markdown
Author

Changes based on Juan's feedback:

  1. Worlds now always report ALL scenes — even if the user specifies a particular pointer within a world, the skill collects and reports the status of every scene returned by the Places API. A pointer may be mentioned for context, but the full world report is always generated.

  2. Removed main.crdt and scene.js fallback file check (old Step 5b) — completely removed. Step 5 now only contains the Catalyst consistency check for scenes in fallback status.

Requested by Juan Ignacio Molteni via Slack

Jarvis and others added 6 commits March 26, 2026 12:04
…solution rules

- Removed Step 5 (Catalyst consistency check for fallback/404 scenes) entirely
- Updated rules to clarify that pointer resolution via Catalyst is only needed when only a sceneID/entityID is provided
- If user provides a pointer directly, skip resolution and go to Step 2
- Cleaned up all references to removed Step 5

Requested by Juan Ignacio Molteni via Slack
- Remove Step 2a entirely (its output template duplicated the Output format section)
- Remove inline queue summary template from Step 3 (also duplicated in Output format)
- Update Step 2 status table to reference Output format section instead of Step 2a
- All output formatting is now defined in a single place: the Output format section

Requested by Juan Ignacio Molteni via Slack
Add functionality to check the state of asset bundles.

Signed-off-by: Juan Ignacio Molteni <juanignaciomolteni@gmail.com>
Split asset bundle detection from dcl-consistency into the new ab-status
skill. AB-related patterns (check AB, AB queue, AB conversion, asset
bundles, scene conversion) now route to ab-status, while pointer and
wearables consistency checks remain in dcl-consistency.

Added tests for the new ab-status detection patterns.
@decentraland-bot
Copy link
Copy Markdown
Author

Updated detectSkill routing

Split the AB-related detection patterns out of dcl-consistency and into the new ab-status skill:

New ab-status patterns:

  • check AB: <pointer>, check AB status: <pointer>
  • check asset bundles
  • AB queue, AB pipeline, AB conversion
  • scene conversion

dcl-consistency retains:

  • check pointer, pointer consistency
  • check wearables

Added 9 test cases covering both skills.

Requested by Juan Ignacio Molteni via Slack

Signed-off-by: Juan Ignacio Molteni <juanignaciomolteni@gmail.com>
dalkia and others added 8 commits March 27, 2026 12:11
Removed a feature description related to CI/CD diagnostics and added a new feature for checking asset bundle states.

Signed-off-by: Juan Ignacio Molteni <juanignaciomolteni@gmail.com>
…rver

Replace manual curl calls to catalyst/registry with a single opscli
pointer-consistency command for Genesis City entities. Replace Places
API with worlds-content-server /world/<name>/scenes endpoint for worlds,
enabling entity ID comparison for stale AB detection.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace <REGISTRY_BASE> placeholders with explicit
https://asset-bundle-registry.decentraland.<ENV> URLs
per review feedback.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The conversion queue check is identical for Genesis City and Worlds.
Pull it into a single shared section instead of duplicating or
cross-referencing between flows.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Clarify usage of worlds-content-server endpoints and discourage using the Places API.

Signed-off-by: Juan Ignacio Molteni <juanignaciomolteni@gmail.com>
Clarified the description of asset bundle checks in README.

Signed-off-by: Juan Ignacio Molteni <juanignaciomolteni@gmail.com>
Show individual platform conversion status alongside version info
so it's clear which platforms are done vs still pending.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace manual curl calls to worlds-content-server and registry with
a single opscli world-ab-status command, matching the Genesis City
flow. Both flows now use opscli as the single source of truth, with
only the queue check remaining as a direct API call.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@dalkia dalkia self-assigned this Mar 27, 2026
dalkia and others added 2 commits March 27, 2026 16:56
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@dalkia dalkia merged commit 3c2100a into main Mar 27, 2026
6 checks passed
@dalkia dalkia deleted the feat/ab-conversion-skill branch March 27, 2026 20:08
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.

4 participants