ruvnet/ruflo · error · ConvoyError

CONVOY_CREATE_FAILED

CONVOY_CREATE_FAILED

Error message

No valid issues to add

What it means

addIssues() validated the candidate issue ids and verifyIssues() confirmed none of them — every id was invalid or unverifiable. Adding zero issues is treated as an error (likely wrong ids or a tracker problem) rather than a silent no-op.

Source

Thrown at v3/plugins/gastown-bridge/src/convoy/tracker.ts:282

   *
   * @param convoyId - Convoy ID
   * @param issues - Issue IDs to add
   * @returns Updated convoy
   */
  async addIssues(convoyId: string, issues: string[]): Promise<Convoy> {
    // Validate inputs
    ConvoyIdSchema.parse(convoyId);
    IssueIdsSchema.parse(issues);

    const store = this.convoys.get(convoyId);
    if (!store) {
      throw ConvoyError.notFound(convoyId);
    }

    // Verify issues
    const verifiedIssues = await this.verifyIssues(issues);
    if (verifiedIssues.length === 0) {
      throw new ConvoyError(
        'No valid issues to add',
        GasTownErrorCode.CONVOY_CREATE_FAILED,
        { convoyId, issues }
      );
    }

    // Add new issues (avoid duplicates)
    const existingSet = new Set(store.convoy.trackedIssues);
    const newIssues = verifiedIssues.filter(id => !existingSet.has(id));

    if (newIssues.length === 0) {
      return store.convoy;
    }

    // Update convoy
    const updatedIssues = [...store.convoy.trackedIssues, ...newIssues];
    const progress = await this.calculateProgress(updatedIssues);

View on GitHub (pinned to fa13ee4ad6)

Solutions

  1. Filter/validate issues before calling; ensure at least one issue passes validation.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at v3/plugins/gastown-bridge/src/convoy/tracker.ts:282 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18). Data as JSON: /api/errors/1a17261742ce7b22. Report an issue: GitHub.