Fission-AI/OpenSpec · error · RootSelectionError

unhealthy_store_root

unhealthy_store_root

Error message

Store '${id}' does not have a healthy OpenSpec root at ${storeRoot}: ${inspection.problems} ${doctorFix(id)}

What it means

Error "Store '${id}' does not have a healthy OpenSpec root at ${storeRoot}: ${inspection.problems} ${doctorFix(id)}" thrown in Fission-AI/OpenSpec.

Source

Thrown at src/core/root-selection.ts:210

  switch (inspection.kind) {
    case 'metadata_error':
      return fromStoreError(inspection.error);
    case 'metadata_missing':
      // The doctor pointer lives in the message because human-mode command
      // wrappers print only the message, not the fix field.
      throw new RootSelectionError(
        `Store '${id}' is missing identity metadata at ${inspection.metadataPath}. ${doctorFix(id)}`,
        'store_identity_mismatch',
        { target: 'store.metadata', fix: doctorFix(id) }
      );
    case 'metadata_id_mismatch':
      throw new RootSelectionError(
        `Store '${id}' metadata id '${inspection.actualId}' does not match its registered id. ${doctorFix(id)}`,
        'store_identity_mismatch',
        { target: 'store.metadata', fix: doctorFix(id) }
      );
    case 'unhealthy_root':
      throw new RootSelectionError(
        `Store '${id}' does not have a healthy OpenSpec root at ${storeRoot}: ${inspection.problems} ${doctorFix(id)}`,
        'unhealthy_store_root',
        { target: 'openspec.root', fix: doctorFix(id) }
      );
    case 'ok':
      return makeRoot(inspection.canonicalRoot, source, id);
    default: {
      // Exhaustiveness guard: a new inspection kind must be handled
      // here explicitly, not fall through to an undefined root.
      const unhandled: never = inspection;
      throw new Error(`Unhandled store inspection kind: ${JSON.stringify(unhandled)}`);
    }
  }
}

/**
 * The metadata-identity and root-health stages of registered-store
 * resolution, as a non-throwing result. `resolveStoreRoot` maps each

View on GitHub (pinned to 6926ccb18a)

When it happens

Trigger: Thrown at src/core/root-selection.ts:210 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of Fission-AI/OpenSpec@6926ccb18a (2026-08-25). Data as JSON: /api/errors/25b3bb98f0eb73a9. Report an issue: GitHub.