Skip to content

Package Deltas: support dump-backed catalogue Import Families #311

Closed

Description

@Mathih13

This was generated by AI during triage.

Agent Brief

Category: enhancement
Summary: Extend Package Deltas from spells to dump-backed non-spatial catalogues.

Current behavior:
The spell tracer proves the artifact and replay contract. Dump-backed catalogue families remain unavailable to Package authors.

Desired behavior:
Add explicit table ownership, identifier policy, referential checks, base replay, and Package provenance for the non-spatial dump families such as items, loot, gossip, quests, trainers, casts, globals, and spell metadata. Each table documents whether v1 permits partial updates, inserts, or neither.

Acceptance criteria:

  • Every supported table maps to exactly one Import Family.
  • Table-specific primary-key and reserved-row rules are enforced.
  • Reloading one Import Family reapplies only its Package claims.
  • Non-spatial catalogue claims reach every Shard that owns that catalogue.
  • Unsupported tables and operations fail during preflight.
  • Tests cover cross-table references and a conflict in each supported Import Family group.

Out of scope:

  • Spatial creatures, spawns, game objects, and creature AI
  • DBC-backed catalogues
  • Terrain, navigation, vmap, or model assets

Activity

  1. added
    enhancementNew feature or request
    P3someday / nice-to-have
    ready-for-agentComplete enough to build from the issue alone, by a person or their agent
    on Aug 24, 2026
  2. Mathih13 commented on Aug 31, 2026

    @Mathih13
    ContributorAuthor

    This was generated by AI during triage.

    Batch relevance check, 2026-08-31. Partially shipped:

    Spec and implementation for the remaining families are in progress in this session; per-table claim policy (partial update / insert / neither) will be recorded per the issue's acceptance criteria.

  3. Mathih13 commented on Sep 3, 2026

    @Mathih13
    ContributorAuthor

    Per-table claim policy for the three families in #401.

    Family Table Policy Why
    gossip game_gossip_menu neither (update only) Key is a creature template entry. No Package may invent one.
    gossip game_gossip_menu_profile insert + partial update menu_id is its own identifier space.
    gossip game_gossip_menu_profile_option insert + partial update Surrogate row_id.
    gossip game_gossip_option insert + partial update Surrogate row_id; the creature is a claimed column, not the key.
    gossip game_npc_text insert + partial update text_id is its own identifier space.
    gossip game_npc_text_slot insert + partial update Surrogate id.
    globals game_class_level_stats neither (update only) Key names a class and a level the client fixes.
    globals game_level_stats neither (update only) Key names a race, class and level the client fixes.
    globals game_start_position neither (update only) Key names a race and a class the client fixes.
    globals game_graveyard_zone insert + partial update Surrogate row_id.
    globals game_areatrigger_teleport neither (update only) Key is an AreaTrigger.dbc trigger id.
    globals game_createinfo_spell insert + partial update Surrogate id.
    globals game_createinfo_action insert + partial update Surrogate row_id.
    globals game_start_item out of scope Two importer passes own it (--dump globals from 1,000,000 up, --dbc CharStartOutfit below). Only the first has a Package Delta stage, so a claim on a --dbc-owned row would be reverted with nothing to reapply it.
    spellmeta game_spell_chain insert + partial update Key IS a spell identifier, so an insert must name a Package spell, not a spellmeta identifier.
    spellmeta game_spell_learn insert + partial update Surrogate id.
    spellmeta game_spell_proc_event insert + partial update Same spell-identifier policy as game_spell_chain.

    Package Identifier Ranges: gossip 12,000,000-12,999,999 (all five insertable gossip tables), globals 13,000,000-13,999,999 (the three surrogate-key tables), spellmeta 14,000,000-14,999,999 (game_spell_learn alone).

    With #401 every dump-backed non-spatial family named in this issue has a claim schema, a ClaimFamily, and an entry in PACKAGE_DELTA_DUMP_FAMILIES.

  4. Mathih13 commented on Sep 3, 2026

    @Mathih13
    ContributorAuthor

    PR filed 2026-09-02: #401 adds the gossip, globals and spellmeta claim families with per-table policy (see the table above), reference checks, live-DB coverage in module/tests/package_delta_references.rs, and three glossary entries. With it every dump-backed non-spatial family in the issue has a claim layer; game_start_item stays out because its identifiers below 1,000,000 belong to the --dbc CharStartOutfit pass. Orchestrated by Claude (model claude-fable-5-1) via Claude Code.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3someday / nice-to-haveenhancementNew feature or requestready-for-agentComplete enough to build from the issue alone, by a person or their agent

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions