abhigyanpatwari/GitNexus · warning

parsedfile-store: rejected shard entries at load (untrusted

Error message

parsedfile-store: rejected shard entries at load (untrusted shape); those files re-extract every run

What it means

The whole-file counterpart of the per-site drop: shard entries whose overall shape is untrusted are rejected at load, and a rejected file falls back to a fresh extraction on EVERY load — a permanent warm-cache miss that costs real time while saying nothing about why. This warning (with the rejectedFiles count) exists so a writer that keeps minting what this reader refuses becomes visible.

Source

Thrown at gitnexus/src/storage/parsedfile-store.ts:321

        if (flow.dropped === 0 && chains.dropped === 0) {
          out.set(pf.filePath, pf);
        } else {
          droppedSites += flow.dropped;
          droppedChains += chains.dropped;
          filesWithDroppedSites++;
          out.set(pf.filePath, {
            ...pf,
            ...(flow.dropped === 0 ? {} : { callableFlowSites: flow.sites }),
            ...(chains.dropped === 0 ? {} : { referenceSites: chains.sites }),
          });
        }
      }
    }
    await maybeYieldAndGc(crossedBudget);
  }
  if (droppedSites > 0 || droppedChains > 0) {
    logger.warn(
      { droppedSites, droppedChains, files: filesWithDroppedSites },
      'parsedfile-store: dropped malformed/over-bound sites at load; files retained without those facts',
    );
  }
  if (rejectedFiles > 0) {
    logger.warn(
      { rejectedFiles },
      'parsedfile-store: rejected shard entries at load (untrusted shape); those files re-extract every run',
    );
  }
  return out;
};

function sanitizeCallableFlowSites(
  value: unknown,
): { sites: readonly CallableFlowSite[] | undefined; dropped: number } | undefined {
  if (value === undefined) return { sites: undefined, dropped: 0 };
  if (!Array.isArray(value)) return undefined;
  const bounded =

View on GitHub (pinned to 0d1aed942f)

Solutions

  1. Run a full re-analyze to rewrite the store with the current writer
  2. If the warning reappears on every warm load afterwards, capture writer/reader versions and file an issue: the writer is minting shapes the reader refuses
  3. Check disk health if the corruption has no version-skew explanation
Defensive patterns

Strategy: validation

Validate before calling

// A rejected shard re-extracts EVERY load. If this warning re-fires on each
// warm load, the store is permanently cold for those files — rewrite it.
if (warmLoadRejectedAgain) {
  await fullReanalyze(repoPath);
}

Prevention

When it happens

Trigger: A warm load where whole ParsedFile entries fail shape validation: writer/reader version skew, truncated or partially written shards, corrupted entries. Every subsequent run pays full re-extraction for exactly those files.

Common situations: An index written by an older or newer GitNexus with a different shard schema; an interrupted write leaving a partial entry; the observable symptom is analyze wall-time regressing on warm cache with this warning repeating every run.

Related errors


AI-assisted analysis of abhigyanpatwari/GitNexus@0d1aed942f (2026-08-20). Data as JSON: /api/errors/8664de8e23df9739. Report an issue: GitHub.