Skip to content

Design: multi-project boards — a projects: map so a team can own a repo plus its toolchain without repoint-restart detours #90

Description

@mabry1985

Problem

The board is single-project by configuration: one repo:, one local_gate_cmd:, one store binding for tools/API/view/loop. Working a ticket in any OTHER repo (most commonly: this plugin itself) requires the operator detour — swap project_board.repo + gate in config → restart → work → swap back → restart. The 2026-07-21/22 dogfood ran this detour four times (issues #56, #76, #78+#79, #84+#85+#86 → PRs #75/#77/#80/#81/#82/#87/#88/#89 — every one a self-fix the team could not board without an operator ceremony).

The data model is most of the way there already: get_store is cache-keyed (db, repo, base_branch) (multiple boards coexist in-process since the ADR 0055 P0 fix), and the loop already reads feature.get("repo") at dispatch. The single-project constraint lives in the config wiring alone.

Proposed direction

A projects: map — one board, one loop, one db, per-feature project resolution:

project_board:
  default_project: protoagent
  projects:
    protoagent:   { repo: ~/dev/protoAgent-team,     local_gate_cmd: "…", base_branch: main }
    board-plugin: { repo: ~/dev/projectBoard-plugin, local_gate_cmd: "…" }

Scope guard (the philosophical half)

This deliberately does NOT turn the team into a portfolio manager. The boundary: a team owns one repo plus its own toolchain (the plugins it runs on) — self-sufficiency for self-fixes. Cross-domain orchestration stays with the portfolio tier (pm-stack). Config should keep small-N ergonomic and large-N discouraged.

Acceptance sketch (when picked up — decomposes into ~3 slices)

  1. Store: project field/label on features; per-project store_kw resolution; prefix/id behavior documented.
  2. Loop: per-feature repo/gate/preflight; per-project preflight hold isolation.
  3. Tools/API/view: project param on create/update/list (default preserved), view grouping, progress keying unchanged.

Refs

The four detours above; ADR 0055 P0 (board cache keying); #73 (preflight hold); #84 (drawer); the operator detour procedure in the protoEngineer workspace config history.

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