Skip to content

docs(adr): add ADR-0031, paginated vocabulary listing for structured editors - #799

Merged
e54-bot merged 2 commits into
mainfrom
docs/adr-0031-list-entries
Oct 19, 2026
Merged

e54-bot merged 2 commits into
mainfrom
docs/adr-0031-list-entries

Conversation

@e54-bot

@e54-bot e54-bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Adds ADR-0031, which records option 1 from #782. A separate operation, listEntries, lists the owner's vocabulary page by page for structured editors. lookup keeps its agent bounds. ADR-0021 decision 3 ("never returns a whole catalog") now applies to lookup only.

  • Request:
    • language: workshop; anything else returns unavailable.
    • kind (required): action, value, event, enum, or enumMember.
    • within: an enum domain; required for enumMember.
    • Optional: locale, pageSize (default 100, max 500), and cursor.
  • Result:
    • Entries use exactly lookup's entry shape, in owner order with no sorting or grouping, together with total and nextCursor.
    • The cursor is opaque and bound to the request and the owner catalog identity. A mismatch is refused as invalid-cursor.
  • Owner split: workshop-rs adds a public call that returns lookup facts for every entry of a kind. Enum members already come from lookup_within without a query. Wright assembles no signatures. Tracked in List lookup facts for every entry of a kind in catalog order workshop-rs#506.
  • Surfaces: serve only, on stdio and JSON-RPC. Not in the MCP tool set, and no CLI command.
  • Unchanged:
    • No project load.
    • OverPy is out of scope until an OverPy structured editor needs it.

Why now

The structured editor prototype cannot fill in-game-style dropdowns:

  • An empty lookup query returns nothing.
  • within is capped at 10, which truncates domains such as Hero and Map.
  • Parameter enum facts carry display names but no member identities.

Review

Accepted by the owner, including the two open points: listEntries is not exposed through MCP or the CLI, and pages default to 100 entries with a maximum of 500.

Closes #782. Documentation only; no code or behavior changes.

…editors

Records option 1 from #782: a separate listEntries operation pages the owner's vocabulary for UIs, while lookup keeps its agent bounds. Amends ADR-0021 decision 3 for this operation only.

Refs #782
@e54-bot
e54-bot merged commit 2f00832 into main Oct 19, 2026
16 checks passed
@e54-bot
e54-bot deleted the docs/adr-0031-list-entries branch October 19, 2026 13:48
@github-project-automation github-project-automation Bot moved this from Backlog to Done in Make Workshop Great Again Oct 19, 2026
e54-bot added a commit to wrightkit/workshop-rs that referenced this pull request Oct 19, 2026
…lary (#509)

lookup_entries returns one LookupMatch per entry of a listable kind in catalog order, with no matching or ranking: Builtin matches for Action, Value, and Event, EnumDomain matches for Enum. Both are built by the same per-entry constructors lookup uses, so the two cannot diverge. Undeclared locales and non-listable kinds return WorkshopError::Unsupported. Wright's listEntries operation (ADR-0031, wrightkit/wright#799) pages over the result; enum members remain covered by lookup_within.

Fixes #506

Co-authored-by: Teakowa <git@teakowa.dev>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Development

Successfully merging this pull request may close these issues.

Decide how a UI browses the Workshop vocabulary by category; lookup is bounded by design

2 participants