Skip to content

Author and inspect encounter regions, pack rosters, and offering sites #24

Description

@zoeyrose

Outcome

Let authors paint and inspect spawn zones, choose stable rosters/profiles/
policies, lay out offering slots/recipes, and understand static bounds and
diagnostics without manually editing records or reimplementing the authoritative
Go population controller.

This is replacement editor work. Classic editor/ only packages external
Gridarta; Classic authoring compatibility remains in the content schema/tools.

Scope and constraints

  • Consume released content-toolkit document, catalog, diagnostics, transaction,
    and compilation APIs. No second parser, validator, serializer, catalog, or
    filesystem write path.
  • Paint/select deterministic masks or rectangle unions with undo/redo and
    atomic toolkit transactions; support add/remove/split/merge and clear visual
    distinction between spawn, activation, keepout, leash, protected, and offering
    slot areas.
  • Pick stable family/roster/pack/policy/site/recipe/effect references from the
    catalog and show full source-aware linked diagnostics.
  • Inspect min/base/max threat and entity bounds, difficulty/player curves,
    refill/cooldown/burst settings, eligible candidates, role constraints, and
    statically admissible compositions.
  • Show non-authoritative range/composition previews across selected difficulty
    and one/two/four-player inputs. Label previews as authored bounds; do not copy
    Go scheduling/RNG/placement logic or promise the exact next live pack.
  • Lay out semantic left/center/right or named offering slots in the map, edit
    stable item requirements and a bounded typed directive, and preview the
    linked telegraph/reward references.
  • Overlay statically invalid or risky geometry, exits/protected cells, impossible
    role constraints, orphan references, overlapping slots, and unsupported local
    overrides. Runtime-only occupancy remains a playtest concern.
  • Keep toolkit documents authoritative and preserve external-edit detection,
    revision preconditions, dry-run diff, atomic save, autosave/recovery, and path
    safety.
  • Actual gameplay verification launches through the existing isolated playtest
    path; the editor does not embed a server or connect to Classic/Gridarta.

Acceptance criteria

  • Authors can create, select, reshape, split, merge, and remove bounded zone
    geometry with undo/redo and exact semantic overlays.
  • Every reference picker uses stable catalog IDs and linked diagnostics;
    display names are presentation only.
  • Inspector/previews show configured target/entity/threat/role/refill bounds
    for low/normal/high and one/two/four-player inputs without implementing an
    alternate authoritative director.
  • Offering slots have deterministic semantic/world positions, recipe item
    references, validation, and typed effect editing with visible cooldown/
    cap constraints.
  • Invalid geometry, impossible packs, missing references, unsafe keepouts,
    overlapping slots, and unsupported overrides block publication with
    source-aware diagnostics.
  • Opening/saving unchanged authored documents is byte-identical; a targeted
    zone/site edit does not churn unrelated source.
  • Stale revision, external edit, validation, conflict, disk/permission,
    cancellation, or crash failure leaves source unchanged and recoverable.
  • Headless command/document tests cover geometry operations, reference
    changes, diagnostics, undo/redo, reopen, recovery, and large/malformed
    inputs; visual tests use shared renderer semantic masks.
  • One isolated playtest launches the bat/orc/offering pilot through the
    wrapper-owned profile/topology once replacement integration is available.
  • tools/validate.sh and git diff --check pass.

Dependencies

Depends on the released toolkit contract and
editor#4,
editor#5, and
editor#6. It does not block the
CLI-authored M3 pilot; it provides the M4 safe authoring workflow.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Fields

    Priority

    None yet

    Start date

    None yet

    Target date

    None yet

    Effort

    None yet

    Projects

    Status
    Inbox

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions