ruvnet/ruflo · error

ALREADY_CLAIMED

ALREADY_CLAIMED

Error message

Issue ${issueId} is already claimed by ${existingClaim.claimant.name}

What it means

claim() found an existing claim for the issue with status 'active', so another claimant already holds it. Concurrency guard: only one active claim per issue is allowed; the current claimant's name is returned so the caller knows who owns the work.

Source

Thrown at v3/@claude-flow/claims/src/application/claim-service.ts:178

    // Validate issue exists
    const issue = await this.issueRepository.findById(issueId);
    if (!issue) {
      return {
        success: false,
        error: {
          code: 'ISSUE_NOT_FOUND',
          message: `Issue ${issueId} not found`,
        },
      };
    }

    // Check if already claimed
    const existingClaim = await this.claimRepository.findByIssueId(issueId);
    if (existingClaim && existingClaim.status === 'active') {
      return {
        success: false,
        error: {
          code: 'ALREADY_CLAIMED',
          message: `Issue ${issueId} is already claimed by ${existingClaim.claimant.name}`,
          details: { currentClaimant: existingClaim.claimant },
        },
      };
    }

    // Check claimant's current workload
    const currentClaimCount = await this.claimRepository.countByClaimant(claimant.id);
    const maxClaims = claimant.maxConcurrentClaims ?? 5;
    if (currentClaimCount >= maxClaims) {
      return {
        success: false,
        error: {
          code: 'MAX_CLAIMS_EXCEEDED',
          message: `Claimant ${claimant.name} has reached maximum concurrent claims (${maxClaims})`,
          details: { currentClaims: currentClaimCount, maxClaims },
        },
      };

View on GitHub (pinned to fa13ee4ad6)

Solutions

  1. Check the current claim status before claiming; skip or release the existing claim if it belongs to a stale claimant.
  2. Implement claim takeover/renewal semantics so a conflicting claim surfaces as a recoverable state instead of a hard failure.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at v3/@claude-flow/claims/src/application/claim-service.ts:178 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/9d7e81c8d752ec13. Report an issue: GitHub.