{"record":{"id":"79d92d92c396261f","repo":"ruvnet/ruflo","slug":"section-id-not-found","errorCode":null,"errorMessage":"Section \"${id}\" not found","messagePattern":"Section \"(.+?)\" not found","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"v3/@claude-flow/cli/src/appliance/rvfa-format.ts","lineNumber":412,"sourceCode":"  getHeader(): RvfaHeader {\n    return this.header;\n  }\n\n  /** List all sections declared in the header. */\n  getSections(): RvfaSection[] {\n    return this.header.sections;\n  }\n\n  /**\n   * Extract and decompress a section by its id.\n   *\n   * @param id  The section identifier (e.g. 'kernel', 'runtime').\n   * @returns   The decompressed section payload.\n   */\n  extractSection(id: string): Buffer {\n    const sec = this.header.sections.find((s) => s.id === id);\n    if (!sec) {\n      throw new Error(`Section \"${id}\" not found`);\n    }\n\n    if (sec.offset + sec.size > this.buf.length - SHA256_SIZE) {\n      throw new Error(`Section \"${id}\" exceeds buffer bounds`);\n    }\n\n    const raw = this.buf.subarray(sec.offset, sec.offset + sec.size);\n\n    if (sec.compression === 'gzip') {\n      return gunzipSync(raw);\n    }\n    if (sec.compression === 'zstd') {\n      // zstd not natively supported — attempt gzip fallback (mirrors writer)\n      try {\n        return gunzipSync(raw);\n      } catch {\n        throw new Error(\n          'zstd decompression is not supported in this environment',","sourceCodeStart":394,"sourceCodeEnd":430,"githubUrl":"https://github.com/ruvnet/ruflo/blob/6b01dc5a687b26b3e218f796de45ec51f8fa9e8c/v3/@claude-flow/cli/src/appliance/rvfa-format.ts#L394-L430","documentation":"Thrown by RvfaReader.extractSection when no entry in the parsed header.sections array has an id matching the request. The section table is whatever the RVFA manifest declares, and ids are matched exactly and case-sensitively.","triggerScenarios":"Calling reader.extractSection(id) with an id absent from the manifest, e.g. extractSection('runtime') when the manifest declares 'rt', or a casing mistake like 'Kernel' vs 'kernel'.","commonSituations":"Hardcoded section name that drifts from the writer's manifest; an RVFA build that omits the section; case mismatch; typo.","solutions":["Enumerate available ids first: reader.getSections().map(s => s.id).","Use the exact id string as written by the producer.","Fall back to a clear user-facing error listing the available ids."],"exampleFix":"// before\nconst kernel = reader.extractSection('Kernel');\n\n// after\nconst ids = reader.getSections().map(s => s.id);\nif (!ids.includes('kernel')) {\n  throw new Error(`No 'kernel' section; available: ${ids.join(', ')}`);\n}\nconst kernel = reader.extractSection('kernel');","handlingStrategy":"validation","validationCode":"const ids = reader.getSections().map(s => s.id);\nif (!ids.includes(id)) {\n  throw new Error(`Unknown section \"${id}\"; available: ${ids.join(', ')}`);\n}\nconst payload = reader.extractSection(id);","typeGuard":"function sectionExists(reader: RvfaReader, id: string): boolean {\n  return reader.getSections().some(s => s.id === id);\n}","tryCatchPattern":null,"preventionTips":["Cache the section id list after parsing so callers validate against the real manifest.","Treat section ids as a closed set defined by the writer, not a free-form string.","Log available ids when a lookup fails, to shorten debugging."],"tags":["rvfa","section-lookup","validation"],"backgroundTag":null,"analyzedSha":"6b01dc5a687b26b3e218f796de45ec51f8fa9e8c","analyzedAt":"2026-08-12T13:20:50.148Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}