Skip to content

work-items: tracker seam has no container-scoped frontier or child-enumeration verb — containers surface themselves on the global frontier #498

Description

@kyle-sexton

Lane: triage · Category: bug (correctness) + improvement (missing verb) · Source: surfaced by the #416 planning pass (route wayfind through the work-item-tracker seam)

Triggering example

Planning #416 (route planning:wayfind through the work-item-tracker seam) mapped wayfind's operations onto seam verbs. Coordination mapped cleanly (create-item, claim, link-blocks, reclaim, get-item) EXCEPT one structural gap that no current verb covers: enumerating the frontier scoped to a single container (map), and enumerating a container's children.

Wayfind operates a decision map — a container item (carrying the work-map label) with typed decision sub-items. To drive it through the seam it must (a) list the unblocked, unassigned frontier within one map, and (b) enumerate a map's closed children for its "Decisions-so-far" invariant check.

Observed vs expected

  • Observed:
    1. list-frontier is repo-global — there is no --parent/container scope, so a consumer cannot core-side-filter the frontier down to one container's sub-items.
    2. The frontier list rows drop parent linkage (the GitHub list surface omits it), so a consumer cannot even post-filter by parent from the returned rows.
    3. A container surfaces itself: an unassigned, unblocked container item passes the frontier filter and appears as its own frontier item — a correctness wart for any container-based consumer, not only wayfind.
    4. No child-enumeration verb: get-item returns an item's parent, but nothing returns a container's child set, so the closed-children invariant check has no seam path.
  • Expected: the seam offers a container-scoped frontier and a child enumeration, and excludes container items from their own frontier. Candidate shapes (design owned by the seam, ADR-0022 territory — NOT prescribed here): a --parent <container> scoping flag on list-frontier, and/or a list-sub-items <container> verb; plus a rule that a container is never its own frontier item.

Why it matters beyond wayfind

Any container/parent-child consumer of the seam hits this — the seam's own CONTRACT reserves work-map containers as a first-class use case, but the read side to operate one within scope is missing. This gap blocks #416's clean implementation (it would otherwise be worked around inside wayfind, which the plan explicitly rejects as the seam owner's call).

Note

Distinct from #416 (wayfind routing — the consumer) and #379 (Jira adapter — a different backend). This is the seam's own read-verb coverage for containers. Owner: work-items plugin (seam CONTRACT + adapters).

Metadata

Metadata

Assignees

Labels

priority: highSignificant impact, or blocks an imminent release; staff this cycle.status: readyTriaged, unblocked, and fully specified; eligible to pick up.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions