Skip to content

[Intermediate] Retry transient object-store failures #4555

Description

@larsspinetta12

Complexity

Intermediate — needs more product judgment or multi-file design. Still largely testable with fakes; live cloud optional unless noted.

Context

providers/aws.py has no retry — a dropped connection fails the whole run.

Done when

  • Transient errors retry with backoff.
  • Permanent ones (NoSuchBucket, AccessDenied) fail immediately.
  • Covered by a test with a fake client (no cloud).
  • Slash/gateway replies stay free of provider detail (CWE-209); failures log server-side.

Worth repeating in every issue

  1. Read platform/filestorage/ports.py first — the four-method ObjectStore protocol is the entire contract; the engine depends on nothing else. Fake stores are enough for most work.
  2. The credential deny-list in syncable.py is a security boundary. Any change touching it, or what push() walks, must keep the planted-secret tests green in tests/filestorage/test_remote_sync.py (LEAKED_SECRET / canary in integrations.json must appear in no stored object).
  3. Surfaces share platform.filestorage.operations — put behavior there; keep CLI / /remote-sync / gateway thin. Slash and gateway replies are an external surface: never echo str(exc) / provider detail into chat (CWE-209). Local CLI may show detail.
  4. Prefer StrEnum for new closed vocab (see platform/filestorage/enums.py). Env var names stay in config/constants/filestorage.py.
  5. Org-scoped gateway turns currently refuse on purpose — do not re-enable org sync without the namespaced-keys issue (Advanced Feature/tools refactor #13).

Source: community contribution ideas after merge of feat/laptop-s3-sync. Engine contract: platform/filestorage/ports.py.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestintegrationsRelated to integrationsreliabilityImproves stability and failure handlingremote-syncRemote sync / object-store (filestorage) work

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions