Skip to content

[Task]: add IP-034 unstaffable team lane is a typed gap to the interaction pattern catalog (GH-C37) #4638

Description

@BigDataDZ

Task ID or area

GH-C37 (design / docs) — interaction pattern catalog

Technical direction

Core control-plane hardening

Intent

I want to claim an existing task

Goal and acceptance gap

Goal/source: GH-C37 asks the catalog to carry one new public-safe good/bad case. The steward team-plan path (#4569) now keeps a lane the host cannot staff as a typed gap and still offers the admitted plan as a card, but no catalog entry names that boundary.

Current gap: IP-018 owns plan-to-todo writeback and IP-024 owns repair deltas, but neither owns what happens when a confirmed plan contains a lane this host cannot start. Consumers therefore have no named pattern for "the plan is admitted, one lane is not staffable".

Accepted outcome (before → after): before, an unstaffable lane is either silently dropped or faked into a Todo so the plan looks fully staffed; after, the plan remains admitted, the unstaffable lane is a typed gap naming the missing registration or grant, and confirming the plan creates exactly the lanes that can run.

Proposed scope

In scope / owner: one new catalog entry, IP-034 "Unstaffable Team Lane Is A Typed Gap", in the Planning Governance family, with Trigger, Expected behavior, Visual Model, Bad smell, and Validation sections; the family table row, the family-to-canary matrix cell, and one durable assertion in examples/interaction-pattern-catalog-smoke.py.

Existing related work / dependencies: #4569 (unstaffable lane is a typed gap, admitted plan offered as a card), loopx/chat_manager.py manager guidance text, loopx/control_plane/work_items/governed_transition_proposal.py, tests/test_steward_team_plan_apply.py, tests/test_manager_team_plan_guidance.py, IP-018, IP-024.

Out of scope: changing any runtime behavior, adding a second team-plan store, touching the steward use-case docs, or altering existing IP entries.

If staged: single-slice docs change; no remaining gap.

Intended base branch

main

Relevant files or commands

  • docs/concepts/interaction-pattern-catalog.md
  • examples/interaction-pattern-catalog-smoke.py
  • python3 examples/interaction-pattern-catalog-smoke.py
  • python3 -m loopx.entrypoint check --scan-path docs/concepts/interaction-pattern-catalog.md

Validation plan

Accepted result and independent oracle: the catalog gains IP-034 with all five required sections, the family matrix lists IP-034 exactly once, and the smoke pins the new entry's core sentence so a later edit cannot drop it silently.

Actual entrypoint / safe command: python3 examples/interaction-pattern-catalog-smoke.py and python3 -m loopx.entrypoint check --scan-path docs/concepts/interaction-pattern-catalog.md.

Negative or recovery case: the smoke fails if the new detail heading has no family table row, if an id appears under two families, or if the new entry's key sentence is removed; loopx check fails on private-material or scan-boundary regressions in the touched doc.

Frontend / Lark / CLI impact or verified N/A: N.A. — docs-only entry with no UI, Lark, or CLI surface change.

Public/private boundary

  • This issue does not include private benchmark traces, verifier output, credentials, internal document links, raw agent sessions, or local runtime state.
  • I will not run or duplicate maintainer-owned benchmark cases unless a maintainer explicitly splits out a public task.

Activity

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions