thedotmack/claude-mem · warning

Summary watermark bump skipped — partial write

Error message

Summary watermark bump skipped — partial write

What it means

syncSummary applies the same full-write rule as observations: the summaries watermark in ChromaSyncState is bumped only when addDocuments returns written === documents.length. A partial batch write skips the bump and logs this warning, leaving the summary queued for the next backfill pass.

Source

Thrown at src/services/sync/ChromaSync.ts:523

      notes: summary.notes,
      prompt_number: promptNumber,
      created_at_epoch: createdAtEpoch
    };

    const documents = this.formatSummaryDocs(stored);

    logger.info('CHROMA_SYNC', 'Syncing summary', {
      summaryId,
      documentCount: documents.length,
      project
    });

    // Only bump on a confirmed full write — see syncObservation() for rationale.
    const written = await this.addDocuments(documents);
    if (written === documents.length) {
      ChromaSyncState.bump(project, 'summaries', summaryId);
    } else {
      logger.warn('CHROMA_SYNC', 'Summary watermark bump skipped — partial write', {
        summaryId,
        project,
        requested: documents.length,
        written
      });
    }
  }

  private formatUserPromptDoc(prompt: StoredUserPrompt): ChromaDocument {
    return {
      id: `prompt_${prompt.id}`,
      document: prompt.prompt_text,
      metadata: {
        sqlite_id: prompt.id,
        doc_type: 'user_prompt',
        memory_session_id: prompt.memory_session_id,
        project: prompt.project,
        platform_source: prompt.platform_source,

View on GitHub (pinned to e2d1df569a)

Solutions

  1. No manual action — the backfill on next boot retries the summary.
  2. Restore Chroma health/connectivity so subsequent writes succeed fully.
  3. Verify convergence afterwards rather than editing sync state.
Defensive patterns

Strategy: retry

Validate before calling

async function chromaHealthy(baseUrl: string): Promise<boolean> {
  try {
    const res = await fetch(`${baseUrl}/api/v2/heartbeat`, { signal: AbortSignal.timeout(2000) });
    return res.ok;
  } catch {
    return false;
  }
}

Prevention

When it happens

Trigger: Some batches of a summary sync fail transiently inside addDocuments, returning written < requested.

Common situations: Chroma restart or overload mid-flush, embedder rate limiting, network drop.

Related errors


AI-assisted analysis of thedotmack/claude-mem@e2d1df569a (2026-08-20). Data as JSON: /api/errors/ff7cb59803d4e07f. Report an issue: GitHub.