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:
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.
- 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.
- 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.
- 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).
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:wayfindthrough 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-maplabel) 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
list-frontieris repo-global — there is no--parent/container scope, so a consumer cannot core-side-filter the frontier down to one container's sub-items.get-itemreturns an item'sparent, but nothing returns a container's child set, so the closed-children invariant check has no seam path.--parent <container>scoping flag onlist-frontier, and/or alist-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-mapcontainers 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-itemsplugin (seam CONTRACT + adapters).