affaan-m/ECC · error · Error

is missing the catalog count description

Error message

${source} is missing the catalog count description

What it means

parseCatalogDescriptionExpectations throws when the parsed JSON's description (retrieved via the getDescription callback) is not a string, meaning the manifest lacks or mistypes the field holding the catalog count sentence. The faulting input is the description property in the JSON at `source`.

Solutions

  1. Add or correct the description field so it is a string containing the counts sentence.
  2. Check that getDescription points at the right property path for this manifest shape.
  3. Run the catalog write mode to sync the description with actual counts.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at scripts/ci/catalog.js:341 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of affaan-m/ECC@8321021c54 (2026-09-16). Data as JSON: /api/errors/ffa52c64ad9b6c55. Report an issue: GitHub.

Appendix: source

Thrown at scripts/ci/catalog.js:341

      expected: Number(match[1]),
      source: `${pattern.source} (${pattern.category})`
    });
  }

  return expectations;
}

function parseCatalogDescriptionExpectations(content, source, getDescription) {
  let parsed;
  try {
    parsed = JSON.parse(content);
  } catch (error) {
    throw new Error(`${source} is not valid JSON: ${error.message}`);
  }

  const description = getDescription(parsed);
  if (typeof description !== 'string') {
    throw new Error(`${source} is missing the catalog count description`);
  }

  const match = description.match(/(\d+)\s+agents,\s+(\d+)\s+skills,\s+(\d+)\s+legacy command shims?/i);
  if (!match) {
    throw new Error(`${source} is missing the catalog count description`);
  }

  return [
    { category: 'agents', mode: 'exact', expected: Number(match[1]), source },
    { category: 'skills', mode: 'exact', expected: Number(match[2]), source },
    { category: 'commands', mode: 'exact', expected: Number(match[3]), source },
  ];
}

function evaluateExpectations(catalog, expectations) {
  return expectations.map(expectation => {
    const actual = catalog[expectation.category].count;
    const ok = expectation.mode === 'minimum'

View on GitHub (pinned to 8321021c54)