ruvnet/ruflo · error · ValidationError

INVALID_DIGEST

INVALID_DIGEST

Error message

Digest must match "sha256:<64 hex chars>" format (got "${manifest.cell.codeRef.digest}")

What it means

validateDigest() found cell.codeRef.digest fails the sha256 digest regex (must be 'sha256:' followed by exactly 64 hex characters). The code-integrity reference is malformed — wrong hash length, bad prefix, or non-hex characters — so the cell's code binding cannot be trusted or verified.

Source

Thrown at v3/@claude-flow/guidance/src/manifest-validator.ts:734

    if (!manifest.apiVersion) return []; // caught by requiredFields

    if (manifest.apiVersion !== SUPPORTED_API_VERSION) {
      return [{
        code: 'UNSUPPORTED_API_VERSION',
        field: 'apiVersion',
        message: `API version "${manifest.apiVersion}" is not supported (expected "${SUPPORTED_API_VERSION}")`,
        severity: 'error',
      }];
    }
    return [];
  }

  private validateDigest(manifest: AgentCellManifest): ValidationError[] {
    if (!manifest.cell?.codeRef?.digest) return []; // caught by requiredFields

    if (!SHA256_DIGEST_RE.test(manifest.cell.codeRef.digest)) {
      return [{
        code: 'INVALID_DIGEST',
        field: 'cell.codeRef.digest',
        message: `Digest must match "sha256:<64 hex chars>" format (got "${manifest.cell.codeRef.digest}")`,
        severity: 'error',
      }];
    }
    return [];
  }

  private validateWarnings(manifest: AgentCellManifest): ValidationWarning[] {
    const warnings: ValidationWarning[] = [];

    // Warn about unknown tools
    if (manifest.toolPolicy?.toolsAllowed) {
      for (const tool of manifest.toolPolicy.toolsAllowed) {
        if (!KNOWN_TOOLS.has(tool)) {
          warnings.push({
            code: 'UNKNOWN_TOOL',
            field: 'toolPolicy.toolsAllowed',

View on GitHub (pinned to fa13ee4ad6)

Solutions

  1. Format the digest as 'sha256:' followed by 64 lowercase hex characters.
  2. Compute the digest with a known-good SHA-256 implementation rather than hand-assembling the string.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at v3/@claude-flow/guidance/src/manifest-validator.ts:734 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/d8f882642fa6ac38. Report an issue: GitHub.