Skip to content

bug: master-orchestrator _calculateProgressFromState divisão por zero quando todos epics são onDemand #532

@nikolasdehor

Description

@nikolasdehor

Descrição

MasterOrchestrator._calculateProgressFromState() e getProgressPercentage() dividem por totalEpics sem verificar se é zero.

Localização

Arquivo: .aios-core/core/orchestration/master-orchestrator.js
Linhas: 1363 e 1419

Código afetado

// Linha 1357-1363
const totalEpics = Object.keys(EPIC_CONFIG)
  .filter((num) => !EPIC_CONFIG[num].onDemand)
  .length;

const completedEpics = Object.values(state.epics)
  .filter((epic) => epic.status === EpicStatus.COMPLETED)
  .length;

return Math.round((completedEpics / totalEpics) * 100);
// ❌ Se TODOS os epics em EPIC_CONFIG têm onDemand: true, totalEpics = 0 → NaN

O mesmo padrão se repete em getProgressPercentage() na linha 1419.

Impacto

  • NaN propaga para qualquer consumidor do progresso (dashboard, logs, status)
  • Pode causar erros silenciosos em finalize() que usa esse valor

Correção sugerida

if (totalEpics === 0) return 0;
return Math.round((completedEpics / totalEpics) * 100);

Reprodução

Configurar EPIC_CONFIG com todos os epics tendo onDemand: true, depois chamar _calculateProgressFromState() ou getProgressPercentage().

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions