registry: store the index and archives through the s3: driver #242

Open
opened 2026-10-09 01:19:41 +00:00 by orion · 3 comments
Collaborator

Context

tools/registry stores through Storage.registry([FileStorage()]) and REGISTRY_STORAGE names a file: URI. RELEASE.md section 7.11 says the write service moves to s3: when the registry outgrows one disk, "so moving the files is a change of configuration". This issue is the registry's half of #20, split off so that each lands as one PR.

Goal

REGISTRY_STORAGE=s3://bucket/prefix makes tools/registry read and write its index and archives through the s3: driver of the torb/s3 package (#20); file: stays the default and behaves as before.

Acceptance criteria

  • tools/registry/project.trb depends on torb/s3; main.trb builds Storage.registry([FileStorage(), S3Storage.of(...)])
  • The S3 settings (region, optional endpoint, credentials) come from named environment variables, documented in tools/registry/README.md and tools/deploy/compose.example.yml; credentials are never logged and the startup line shows the storage URI without them
  • A registry test publishes, yanks and reads an index through the s3: driver against the in-process S3 double of torb/s3's test kit; the same assertions as the existing file: run
  • A REGISTRY_STORAGE whose scheme no driver answers fails at startup with the registry's "the registry knows ..." message
  • docs/design/RELEASE.md section 7.11 and docs/design/URI.md slice 12 say s3: is wired

The loop never touches a real bucket or credentials; the tests run against recorded responses only.

Seed impact

None: no syntax, native, driver flag or looked-up std name changes.

Dependencies

  • Depends on #20 (torb/s3 published to the registry, or a source "torb/s3", path: line for development, which torb publish refuses and the registry image build must not use)

Source

  • RELEASE.md section 7.11 (hosting), URI.md section 11 and slice 12, FIRST-PARTY.md section 5 row 6
## Context `tools/registry` stores through `Storage.registry([FileStorage()])` and `REGISTRY_STORAGE` names a `file:` URI. RELEASE.md section 7.11 says the write service moves to `s3:` when the registry outgrows one disk, "so moving the files is a change of configuration". This issue is the registry's half of #20, split off so that each lands as one PR. ## Goal `REGISTRY_STORAGE=s3://bucket/prefix` makes `tools/registry` read and write its index and archives through the `s3:` driver of the `torb/s3` package (#20); `file:` stays the default and behaves as before. ## Acceptance criteria - [ ] `tools/registry/project.trb` depends on `torb/s3`; `main.trb` builds `Storage.registry([FileStorage(), S3Storage.of(...)])` - [ ] The S3 settings (region, optional endpoint, credentials) come from named environment variables, documented in `tools/registry/README.md` and `tools/deploy/compose.example.yml`; credentials are never logged and the startup line shows the storage URI without them - [ ] A registry test publishes, yanks and reads an index through the `s3:` driver against the in-process S3 double of `torb/s3`'s test kit; the same assertions as the existing `file:` run - [ ] A `REGISTRY_STORAGE` whose scheme no driver answers fails at startup with the registry's "the registry knows ..." message - [ ] `docs/design/RELEASE.md` section 7.11 and `docs/design/URI.md` slice 12 say `s3:` is wired The loop never touches a real bucket or credentials; the tests run against recorded responses only. ## Seed impact None: no syntax, native, driver flag or looked-up std name changes. ## Dependencies - Depends on #20 (`torb/s3` published to the registry, or a `source "torb/s3", path:` line for development, which `torb publish` refuses and the registry image build must not use) ## Source - RELEASE.md section 7.11 (hosting), URI.md section 11 and slice 12, FIRST-PARTY.md section 5 row 6
Author
Collaborator

[loop:torbscript] intake: in scope (author orion, label loop), source RELEASE.md section 7.11, not a duplicate. Registry storage through the s3: driver instead of file:. next: waiting (refine queued, ready buffer full) until 2026-10-10T04:00:00Z

[loop:torbscript] intake: in scope (author orion, label loop), source RELEASE.md section 7.11, not a duplicate. Registry storage through the s3: driver instead of file:. next: waiting (refine queued, ready buffer full) until 2026-10-10T04:00:00Z
Author
Collaborator

[loop:torbscript] claim refine by session:loop-torbscript-20261027 until 2026-10-27T02:00Z

[loop:torbscript] claim refine by session:loop-torbscript-20261027 until 2026-10-27T02:00Z
Author
Collaborator

[loop:torbscript] refine: the body already meets the definition of ready (goal, testable acceptance criteria against the in-process S3 double, RELEASE.md 7.11 and URI.md slice 12, no seed impact, one PR). Not set ready: it depends on #20 (torb/s3), which is still open and has not landed (no s3 package or PR merged), so the wiring has nothing to build against, next: waiting (dependency #20, and #78 behind it). Worker usage: about 25k tokens (sonnet).

[loop:torbscript] refine: the body already meets the definition of ready (goal, testable acceptance criteria against the in-process S3 double, RELEASE.md 7.11 and URI.md slice 12, no seed impact, one PR). Not set `ready`: it depends on #20 (`torb/s3`), which is still open and has not landed (no s3 package or PR merged), so the wiring has nothing to build against, next: waiting (dependency #20, and #78 behind it). Worker usage: about 25k tokens (sonnet).
Sign in to join this conversation.
No labels
loop
ready
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
torbscript/language#242
No description provided.