OpenSymphony 3.0.0 adiciona duas decisões de roteamento independentes. O roteamento por project set decide qual repositório recebe uma issue. O roteamento ACP decide qual agente local roda dentro do checkout dessa issue. Workflows de um único repositório e os harnesses OpenHands e Codex continuam disponíveis.

Um projeto, vários repositórios

Um project set central pode conectar um projeto do Linear a vários repositórios de código. Cada sub-issue terminal recebe exatamente uma label repo:<alias>. A issue pai permanece neutra em relação ao repositório, espera os merges das alterações das filhas e verifica o resultado combinado em um workspace de integração separado.

OpenSymphony resolve o vínculo com o repositório antes de criar um workspace. A sub-issue recebe um checkout verificado do repositório selecionado, e a execução registra as gerações da configuração e do inventário de repositórios. Assim, a recuperação não pode mover uma issue em andamento para outro repositório sem uma mudança explícita do vínculo.

Depois que os pull requests das sub-issues têm merges confirmados pelo provedor, a issue pai prepara worktrees contidos a partir das gerações preservadas. Ela executa as verificações de integração do project set e pode abrir um pull request de correção em um repositório afetado antes de verificar novamente o resultado combinado. Os task graphs desktop e web exibem os vínculos com repositórios e os bloqueios da issue pai. Run detail mostra a geração do checkout, o estado da integração e as evidências de correção.

ACP como harness de produção

OpenSymphony agora pode iniciar um agente local que implemente Agent Client Protocol v1 por meio de um perfil stdio nomeado:

routing:
  harness: acp
  harness_profile: cursor

O processo do agente roda dentro do workspace da issue. OpenSymphony continua responsável por scheduling, ciclo de vida do workspace, retries e decisões de operação. O host de sessões ACP negocia capacidades em tempo real, preserva sessões ociosas compatíveis para turnos posteriores, direciona pedidos de permissão à TUI ou aos clientes web e desktop, e persiste o estado necessário para uma recuperação protegida.

A recuperação usa session/load ou session/resume somente quando o agente anunciou esse método. Se um prompt puder ter sido enviado antes de uma desconexão, OpenSymphony bloqueia a execução para reconciliação em vez de enviá-lo novamente. Modelos, modos, métodos e extensões de fornecedor opcionais vêm da sessão negociada, sem suposições baseadas no nome do perfil.

ACP e o roteamento multirrepositório funcionam juntos sem depender um do outro. Um perfil ACP pode executar uma issue de um único repositório ou uma sub-issue vinculada a um repositório. Um projeto multirrepositório também pode continuar usando OpenHands ou Codex.

Atualização com uma rota explícita

OpenSymphony 3.0.0 requer Rust 1.97.1 ou mais recente. Instalações existentes podem manter o roteamento legacy_single e o harness atual. Para preparar uma configuração central, execute o preflight de migração somente leitura antes de aplicá-la:

opensymphony migrate preflight --repo /path/to/target-repo \
  --output /absolute/path/to/config.yaml
opensymphony migrate apply --repo /path/to/target-repo \
  --output /absolute/path/to/config.yaml

A migração começa com a rota compatível de um único repositório. Ative project_set quando o inventário de repositórios, o project set, as labels das issues, as credenciais, os perfis de revisão e as instruções de integração estiverem prontos.

Consulte o guia de atualização para 3.0.0 , o guia multirrepositório e o guia do harness ACP . O código está disponível na tag v3.0.0 e o pacote no crates.io .