{"record":{"id":"f2d9e4dadacf0dab","repo":"Yeachan-Heo/oh-my-codex","slug":"completed-task-scoped-aggregate-reconciliation-is","errorCode":null,"errorMessage":"Completed task-scoped aggregate reconciliation is not allowed while unresolved review_blocked parent goals exist; only the parent's designated resolver may continue through the clean final quality gate path.","messagePattern":"Completed task-scoped aggregate reconciliation is not allowed while unresolved review_blocked parent goals exist; only the parent's designated resolver may continue through the clean final quality gate path\\.","errorType":"exception","errorClass":"UltragoalError","httpStatus":null,"severity":"error","filePath":"src/ultragoal/artifacts.ts","lineNumber":1904,"sourceCode":"        requireComplete: !aggregateMode || (finalRunCheckpoint && !options.allowActiveFinalCodexGoal),\n      },\n    );\n    if (!reconciliation.ok) {\n      const completedTaskScopedAggregateSnapshot = snapshot?.available\n        && snapshot.status === 'complete'\n        && Boolean(snapshot.objective)\n        && normalizeObjective(snapshot.objective ?? '') !== normalizeObjective(expectedObjective)\n        && await canReconcileCompletedTaskScopedAggregateSnapshot(\n          cwd,\n          plan,\n          goal,\n          snapshot.objective ?? '',\n          options.evidence,\n        );\n      if (completedTaskScopedAggregateSnapshot) {\n        if (unresolvedReviewBlockedGoals(plan).length > 0) {\n          if (!canUseCleanFinalResolverPathForReviewBlockedParent(plan, goal, finalRunCheckpoint, options.allowActiveFinalCodexGoal)) {\n            throw new UltragoalError('Completed task-scoped aggregate reconciliation is not allowed while unresolved review_blocked parent goals exist; only the parent\\'s designated resolver may continue through the clean final quality gate path.');\n          }\n        } else {\n          aggregateCompletion = {\n            status: 'complete',\n            completedAt: now,\n            evidence: assertNonEmpty(options.evidence, '--evidence'),\n            codexGoal: options.codexGoal,\n          };\n        }\n      } else {\n        const taskScopedRequirement = aggregateMode && snapshot?.status === 'complete' && Boolean(snapshot.objective)\n          ? ' Completed task-scoped aggregate reconciliation requires the checkpoint goal to be the active in-progress OMX goal, evidence that names that active OMX goal id, names .omx/ultragoal/goals.json or ledger.jsonl, includes completed implementation plus validation/review evidence, and a get_goal objective that maps to the ultragoal brief.'\n          : '';\n        const remediation = reconciliation.snapshot.available\n          && reconciliation.snapshot.status === 'complete'\n          && Boolean(reconciliation.snapshot.objective)\n          && normalizeObjective(reconciliation.snapshot.objective ?? '') !== normalizeObjective(expectedObjective)\n          ? ` ${buildCompletedLegacyGoalRemediation(goal)}`","sourceCodeStart":1886,"sourceCodeEnd":1922,"githubUrl":"https://github.com/Yeachan-Heo/oh-my-codex/blob/3ad79a8a6fe6e95fdbb8c00e40716fffe4011ce2/src/ultragoal/artifacts.ts#L1886-L1922","documentation":"You are completing a task-scoped aggregate reconciliation while one or more parent goals in the plan are in review_blocked state and unresolved. Only the parent's designated resolver goal (following the clean final quality gate path, per canUseCleanFinalResolverPathForReviewBlockedParent) may proceed in that situation.","triggerScenarios":"Recording a completed task-scoped aggregate snapshot checkpoint when unresolvedReviewBlockedGoals(plan).length > 0 and the current goal is not the designated resolver allowed via allowActiveFinalCodexGoal/clean final path.","commonSituations":"Multi-goal plans where final review blocked a parent goal and a sibling task-scoped goal completes before a resolver goal is appended; orchestration that skips the recordFinalReviewBlockers → resolver flow.","solutions":["Follow the review-blocked flow: record final review blockers, which appends the designated resolver goal, then complete that resolver","Complete or resolve the review_blocked parent goals before task-scoped aggregate completion","Pass the correct options so canUseCleanFinalResolverPathForReviewBlockedParent recognizes this goal as the designated resolver"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"if (unresolvedReviewBlockedGoals(plan).length > 0 && !canUseCleanFinalResolverPathForReviewBlockedParent(plan, goal, finalRunCheckpoint, allowActive)) { followResolverFlow(); }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always create the resolver goal via recordFinalReviewBlockers before continuing","Never complete task-scoped aggregates while parents are review_blocked"],"tags":["ultragoal","review-blocked","aggregate","resolver","workflow"],"backgroundTag":"workflow-precondition-failed","analyzedSha":"3ad79a8a6fe6e95fdbb8c00e40716fffe4011ce2","analyzedAt":"2026-08-27T22:18:39.783Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}