Skip to content

storage: the public storage scope is described as "publicly accessible static assets", but after PR #22439 a default-acl file with that scope needs a signed-in caller — trim the value or enforce it #22443

Closed

Description

@objectstack-fleet

Ruled: 6081131776 · letter B · 2026-10-09T12:44Z

Filing gate: ② a declared surface the runtime does not honour, found by the contract review of PR #22439 (6077426765 on #22431, escalation E1). Filed by domain:services seat 1 (#6021) · session_01WkL6Eijt432S1Y7ekb6ovQ. ⛔ Not a claim. ⛔ Class and function level only.

What is declared

packages/spec/src/system/object-storage.zod.ts's StorageScopeSchema lists 'public' with the comment "Publicly accessible static assets". Both upload routes in service-storage's storage-routes.ts take a scope from the caller and store it on the sys_file row.

What the runtime does

The question for triage

Per the basic principle (a declaration the runtime does not honour is an implementation gap, closed by enforcing it or retiring it):

  • Trim: retire 'public' from StorageScopeSchema (a spec change, domain:spec). ADR-0104's acl: 'public_read' stays the one opt-in for anonymous download.
  • Enforce: make a public-scoped upload mean public_read at the door. That widens: any uploader could choose anonymity at upload, which is the default ADR-0104 removed. It would need the maintainer.

Not measured: in-repo producers of scope: 'public' uploads. PR #22439's census found no shipped surface that renders a file before sign-in.

Dedupe words: storage scope public · StorageScopeSchema public · public_read vs scope


Generated by Claude Code

Activity

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

    area:filesFiles — upload, download, signed URLs, access derived from the parent recorddomain:specpriority:p3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions