Skip to content

Multi-portfolio / multi-repo intents — track work that spans multiple systems #279

Description

@jwaldrip

Context

Haiku currently models intents as single-repo. An intent lives in one git repo, with one branch, one set of stages. State lives in .haiku/intents/{slug}/.

Real-world feature work often spans repos: frontend + backend, firmware + control plane, multiple microservices. There's no native way to model "this one intent crosses repo A and repo B."

Status

Tracked as future work. Quote from @jwaldrip:

"haiku has plans for multi portfolio stances that are designed to work across a number of systems, but nothing is implemented today. haiku tries not to stay opinionated about the underlying storage engine."

So the shape is intentionally not pinned to git/Linear/etc — it should work across N storage backends.

Reference implementation — Forge workspaces / umbrella mode

Forge implements multi-repo intents via "workspaces":

Bun-style umbrella. One .forge/domain.yml declares N child repos:

workspaces:
  - ./service-a
  - ./service-b

Each workspace is independent (own .git, own .forge/). 1 intent = 1 branch name across N repos. ensureBranch(workspaceAbs, intentSlug) creates idempotent branches in each workspace touched. Temper opens 1 PR per workspace; intent only closes when all PRs are OPEN or MERGED.

Sources:

What haiku might want

  • Declare "this intent spans these N storage backends / repos / services" without coupling to a specific underlying system
  • Branch invariant: 1 intent = 1 branch name (per repo if git-backed)
  • Cross-repo gate aggregation: intent doesn't complete until all per-repo gates pass
  • Cross-repo state aggregation (read-only or owning, given haiku's storage-agnostic stance)
  • Review UI surfaces multi-repo work coherently

Open questions

  • Forge's "one umbrella declares N children" pattern, or intent-declared repo list, or something else?
  • Interaction with discrete vs continuous mode branches?
  • How does the review/browse UI render N parallel repos?
  • Storage backends beyond git — Linear, Jira, internal portfolio systems?

cc @juscyllan — forge has a working implementation; would love your input on what worked vs what was painful, and potentially direct contribution.

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