Skip to content

feat(engine): the proton engine, and git in the proton image - #4

Merged
jshvn merged 1 commit into
mainfrom
josh/proton-engine
Sep 9, 2026
Merged

jshvn merged 1 commit into
mainfrom
josh/proton-engine

Conversation

@jshvn

@jshvn jshvn commented Sep 9, 2026

Copy link
Copy Markdown
Member

What

  • engines/proton.yml: the second engine. A staging tree into one Proton Drive folder through the official CLI: session pulls the age-encrypted session from the bucket, every CLI call goes through pd, which seals the session back when its token rotated whatever the exit, destination refuses a folder whose UID is not the vault's, upload is one filesystem upload -f create-new-revision -d merge -t --json, confirm reads the summary, stage and prune are the mirror's hooks. No state of the mirror's in the bucket: the CLI skips identical content, so Proton's version history is the history.
  • The proton image gains git, s3 (a boto3 get/put at /usr/local/bin/s3), and two ENV lines that make boto3 send checksums only when required.
  • examples/proton consumes the engine; its offline verb is the engine's check and ci.yml runs it for both variants.
  • README, CLAUDE.md and the reserved-name comment in toolbox.yml.

Additive: toolbox.yml and engines/rsync.yml change in comments only, so ctan, tlnet and dropbox render the same. Dropbox pulls a rebuilt proton-v2 with git in it after the release.

Test plan

  • examples/proton: task image-build, task run -- task tools, task run -- task offline, task check all pass locally on Apple container
  • examples/rsync: task check unchanged
  • CI green
  • After merge: tag v2.1.0; the first katoptra/github run is the live check

engines/proton.yml moves a staging tree into one Proton Drive folder through the
official CLI: the session pulled from the bucket and sealed back after every call,
the destination checked by UID, one upload whose summary confirms it, hooks for the
mirror's stage and prune. The bucket holds only the session: the CLI skips identical
content and create-new-revision handles the rest, so Proton's version history is the
mirror's history.

The proton image gains git and s3, a boto3 get/put, and tells boto3 to send checksums
only when required, which is R2's one quirk. examples/proton consumes the engine and
its offline verb is the engine's check: confirm over an accepting and a refusing
summary, and the age verb's round trip.
@jshvn
jshvn merged commit a6825c6 into main Sep 9, 2026
2 checks passed
@jshvn
jshvn deleted the josh/proton-engine branch September 10, 2026 07:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant