{"record":{"id":"ddfe63ea45178d5e","repo":"ruvnet/ruflo","slug":"invalid-cidr-cidr","errorCode":null,"errorMessage":"invalid CIDR: ${cidr}","messagePattern":"invalid CIDR: (.+?)","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"v3/@claude-flow/plugin-agent-federation/src/domain/value-objects/wg-config.ts","lineNumber":84,"sourceCode":"  const privRaw = privDer.subarray(privDer.length - 32);\n  const pubRaw = pubDer.subarray(pubDer.length - 32);\n  if (privRaw.length !== 32 || pubRaw.length !== 32) {\n    throw new Error(`generateWgKeyPair: unexpected DER layout (priv=${privRaw.length}B pub=${pubRaw.length}B)`);\n  }\n  return {\n    publicKey: pubRaw.toString('base64'),\n    privateKey: privRaw.toString('base64'),\n    createdAt: new Date().toISOString(),\n  };\n}\n\n/**\n * Parse a `a.b.c.d/M` CIDR into a numeric base + mask-prefix-length.\n * Limited to IPv4 — v1 of ADR-111 is IPv4-only inside the mesh.\n */\nfunction parseCidr(cidr: string): { base: number; prefix: number } {\n  const m = cidr.match(/^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\/(\\d{1,2})$/);\n  if (!m) throw new Error(`invalid CIDR: ${cidr}`);\n  const [, a, b, c, d, p] = m;\n  const octets = [a, b, c, d].map(Number);\n  const prefix = Number(p);\n  if (octets.some(o => o < 0 || o > 255) || prefix < 0 || prefix > 32) {\n    throw new Error(`out-of-range CIDR: ${cidr}`);\n  }\n  const base = ((octets[0] << 24) | (octets[1] << 16) | (octets[2] << 8) | octets[3]) >>> 0;\n  return { base, prefix };\n}\n\nfunction ipToString(n: number): string {\n  return `${(n >>> 24) & 0xff}.${(n >>> 16) & 0xff}.${(n >>> 8) & 0xff}.${n & 0xff}`;\n}\n\n/**\n * Derive a deterministic mesh IP for `nodeId` inside `subnet`.\n *\n * Strategy: sha256(nodeId) → top bytes interpreted as host portion of the","sourceCodeStart":66,"sourceCodeEnd":102,"githubUrl":"https://github.com/ruvnet/ruflo/blob/fa13ee4ad60ac2090b1480656eb233521790d640/v3/@claude-flow/plugin-agent-federation/src/domain/value-objects/wg-config.ts#L66-L102","documentation":"parseCidr rejects a mesh subnet string that does not match the strict IPv4 CIDR form a.b.c.d/M (regex ^(\\d{1,3})\\.{3}\\d{1,3}/\\d{1,2}$). Fires on malformed input such as missing /M, IPv6 addresses, or stray characters — ADR-111 v1 is IPv4-only inside the mesh, so anything unparseable is refused before octet/prefix range checks run.","triggerScenarios":"A CIDR string fails parsing in the wg-config value object.","commonSituations":"Typo'd CIDR, missing prefix length, or an address family mismatch in mesh configuration.","solutions":["Pass a well-formed CIDR such as '10.0.0.0/24'.","Validate CIDR syntax at configuration load time before constructing value objects."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fa13ee4ad60ac2090b1480656eb233521790d640","analyzedAt":"2026-08-18T21:34:22.708Z","contentChangedAt":"2026-08-18T21:34:22.708Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}