Fission-AI/OpenSpec · error · RootSelectionError

Declared in ${pointer.filePath}: ${error.message}

Error message

Declared in ${pointer.filePath}: ${error.message}

What it means

Error "Declared in ${pointer.filePath}: ${error.message}" thrown in Fission-AI/OpenSpec.

Source

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

    );
  }

  if (pointer.value === undefined) {
    return makeRoot(nearestRoot, 'nearest');
  }

  try {
    return await resolveStoreRoot(pointer.value, globalDataDir, 'declared');
  } catch (error) {
    if (error instanceof RootSelectionError) {
      // Rewrap with the declaration origin. The unknown-store fix is
      // reshaped for the actual mistake: the user declared a pointer,
      // they did not pass --store.
      const declarationFix =
        error.diagnostic.code === 'unknown_store'
          ? `Register the store (openspec store register <path> --id ${pointer.value}) or edit ${pointer.filePath} to name a registered store.`
          : error.diagnostic.fix;
      throw new RootSelectionError(
        `Declared in ${pointer.filePath}: ${error.message}`,
        error.diagnostic.code,
        {
          ...(error.diagnostic.target ? { target: error.diagnostic.target } : {}),
          ...(declarationFix ? { fix: declarationFix } : {}),
        }
      );
    }
    throw error;
  }
}

/**
 * The machine-level fallback: the global `defaultStore` resolved as a root,
 * with its own provenance (`global_default`) so JSON surfaces can tell a
 * machine-wide default from a repo's `store:` pointer. Mirrors the
 * declared-pointer catch — a stale or unregistered id degrades to the
 * underlying error, reshaped to point at clearing the global default

View on GitHub (pinned to 6926ccb18a)

When it happens

Trigger: Thrown at src/core/root-selection.ts:345 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/7b5dcdf9ddb2d0d3. Report an issue: GitHub.