affaan-m/ECC · error · Error

Missing issue number.

Error message

Missing issue number.

What it means

Thrown by dispatchCommand() in scripts/github-coordination.js when the 'claim' subcommand is invoked without an issue number. The code checks `if (!options.issueNumber)` before delegating to applyClaim. The issue number identifies which GitHub issue to claim.

Source

Thrown at scripts/github-coordination.js:123

    } else {
      throw new Error(`Unknown argument: ${arg}`);
    }
  }

  if (!parsed.command) parsed.command = 'sync';
  if (!parsed.issueNumber && parsed.positionals.length > 0) {
    parsed.issueNumber = normalizeIssueNumber(parsed.positionals[0]);
  }

  return parsed;
}

function dispatchCommand(options, ctx) {
  const { store, policy, rootDir } = ctx;
  const base = { configPath: options.configPath, dryRun: options.dryRun };

  if (options.command === 'claim') {
    if (!options.issueNumber) throw new Error('Missing issue number.');
    return applyClaim(options.repo, options.issueNumber, {
      ...base, actor: options.actor, branch: options.branch, owner: options.actor,
      projectState: options.projectState, review: options.review,
      status: options.status, validation: options.validation,
    }, { store, policy, rootDir });
  }
  if (options.command === 'sync') {
    return applySync(options.repo, { ...base, limit: options.limit }, { store, policy, rootDir });
  }
  if (options.command === 'validate') {
    if (!options.issueNumber) throw new Error('Missing issue number.');
    return applyValidate(options.repo, options.issueNumber, base, { store, policy, rootDir });
  }
  if (options.command === 'publish') {
    if (!options.issueNumber) throw new Error('Missing issue number.');
    return applyPublish(options.repo, options.issueNumber, base, { store, policy, rootDir });
  }
  if (options.command === 'review') {

View on GitHub (pinned to 01e15490f0)

Solutions

  1. Add --issue <number> or pass the issue number as a positional: `claim owner/repo 42`.
  2. Verify normalizeIssueNumber accepts your format (should be numeric or #N form).
  3. Run with --help to see the required arguments for the claim command.

Example fix

// before
node scripts/github-coordination.js claim --repo owner/repo
// after
node scripts/github-coordination.js claim --repo owner/repo --issue 42
Defensive patterns

Strategy: validation

Validate before calling

if (options.command === 'claim' && !options.issueNumber) {
  console.error('The claim command requires --issue <number>.');
  process.exit(1);
}

Type guard

function hasIssueNumber(options) {
  return options.issueNumber != null && options.issueNumber !== '' && !Number.isNaN(options.issueNumber);
}

Prevention

When it happens

Trigger: Running `node scripts/github-coordination.js claim --repo owner/repo` without providing --issue <n> or a positional issue number. The parser leaves options.issueNumber undefined.

Common situations: Forgetting the --issue flag, providing a malformed issue number that normalizeIssueNumber rejects (returns falsy), or expecting a default issue from context that does not exist.

Related errors


AI-assisted analysis of affaan-m/ECC@01e15490f0 (2026-08-13). Data as JSON: /api/errors/91fb7c8ef470fe46. Report an issue: GitHub.