Skip to content
Open Breno

Provenance and sync

What provenance an item carries, how connected sources are kept in step through edits and deletions, and where the guarantees stop.

Provenance is the answer to "where did this come from?". Breno records it for every item and shows it in every citation.

What every item records#

For items that arrive from a connected source:

  • the connection it came through and the item's id in the source;
  • its address in the source, so you can open the original;
  • its author;
  • when it was created and last changed at the source;
  • when Breno last synced it.

For an upload or a note it records the owner, the original filename and file details, and the times.

Provenance in answers#

Every citation carries the provider, a link to the original, the author and the last-updated date. That is how you check a claim without trusting the answer.

How a source is kept in step#

A connected source is read on a schedule, and some also notify Breno when something changes.

MechanismWhat it does
Durable queueSync jobs live in the database, claimed by workers with leases, so a restart loses nothing and a stuck job is reclaimed.
FairnessThere are per-workspace and per-provider caps and round-robin claiming, so one large source cannot starve the rest.
Request budgetsEach provider has a budget of requests per minute, shared across servers. A provider at its ceiling defers a job rather than failing it.
CursorsSync resumes from a checkpoint; Google Drive uses its changes feed.
WebhooksSlack and GitHub notify Breno, and a sync is queued within seconds (debounced).
RetriesPermanent errors are not retried; temporary ones back off, and a Retry-After from the provider is honored.

Edits and deletions#

  • An edit at the source updates the same item (matched by connection and the source's id), keeps the previous text as a version, and re-indexes it.
  • A deletion at the source moves the item to Trash for the providers that report deletions, and never on a partial listing: if the list of items was cut short, Breno skips removal and says so in the job log instead of reading absence as deletion.
  • Disconnecting a source lets you keep or trash the items it brought in.

Where the guarantees stop#

  • Some providers give no deletion signal (Teams, Linear, GitLab, Asana, ClickUp, HubSpot, Salesforce). Items deleted there remain until removed in Breno.
  • Slack and Teams messages arrive as per-sync digests; in Slack, a deleted or edited message is applied to that one message.
  • Full listings are capped per provider. Past the cap, reconciliation is skipped and logged.

See Known limits for the full list, and Connect sources for using it.