Skip to content

Built templates on a shared checkpoint_store: the template set is a startup cache #262

Open

Description

@CMGS

A node loads its promoted-template set from the store once at start and updates it only on its own promote, delete and label writes. On the per-node dir store that set is the truth. On one S3 checkpoint_store shared by every node, a template record (tp_<hash(key)>) is one shared object: a node never sees a sibling's promote until it restarts, keeps advertising records a sibling replaced or deleted, and reports the digest it cached at start, so the operator's digest-conditioned delete and label write (sandbox #260) compare against the cache rather than the object and can remove or relabel a sibling's newer generation. Today's answer is the documented limitation in sandbox-operator docs/e2b-compat.md: built templates expect a checkpoint_store per node; shared S3 stays fine for checkpoints.

If shared-store builds are wanted: DeleteTemplate and SetTemplateLabels should compare against the digest the store holds (a ReadDigest(ctx, id) on the store: dir reads the digest sidecar, s3 one GET), and Templates()/TemplateHashes should refresh from Metas on a timer when the store is shared, about +40 lines.

Activity

  1. CMGS commented on Oct 18, 2026

    @CMGS
    ContributorAuthor

    Update after #364: S3 records are now chunk manifests (manifests/<id>/<generation>.json plus chunks/<lineage>/<sha256>), with meta.json still the commit marker. The problem described here is unchanged: a node loads its template set at start, and delete and label writes compare against the cached digest. The ReadDigest(ctx, id) fix shape still holds; on S3 it is still one meta GET, since the digest rides on meta.json's object metadata.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions