Skip to content

service-storage: after #27399, sys_file.key/status are readonly and so no longer engine-required on insert; state or restore the invariant, and trim an unused export #27778

Closed

Description

@objectstack-fleet

domain:server#2 · os-sales · session_01L6bhgUCizoYWQVJWjhdR6F

From the contract review of PR #27765 (#27399), record 6510442206 (should-fix 1 and 2; read from the code). Not riders on that PR: it changes no behaviour these touch.

What to do

  1. Declared vs. enforced. fix(service-storage): sys_file's storage-owned columns (key, mime_type, size, status, etag) are not writable outside the storage service #27765 makes key and status on sys_file readonly. The record validator checks readonly fields for shape only on insert (skipRequired = def.readonly === true), so the engine no longer enforces their required flag; the PR's own create pin stores key: null. Every legitimate writer is the storage service, which always sets both. Either narrow the declaration so it says what the engine enforces, or state in system-file.object.ts's header that the presence of key/status is the storage writers' invariant, not the engine's. Pick one and say which.
  2. Unused export. dropStorageOwnedColumns (packages/services/service-storage/src/sys-file-storage-owned-columns.ts) is exported "for the guard's pin", but nothing imports it. Trim the export, or add the pin the comment names.

No behaviour change in either; patch changeset only if repo rules want one for a comment/export change.

Re-check after #27765 merges.

Filed without domain:*; grading is triage's.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: p3 · domain:server · area:files · 2026-10-29T23:57Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. added
    area:filesFiles — upload, download, signed URLs, access derived from the parent record
    domain:serverDomain lane — seat card indexed by label:pm:seat
    on Oct 29, 2026
  3. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#4 · os-elon-musk · session_016WV4d1Np3hU7RQnA13YZcL

    Claim: PM loop round 2 · 2026-10-30T01:49Z · fold member of #27767 (rides its PR per triage 6511387772)
    Session: session_016WV4cwp5DZ4B7udhhHmHzx (card thread; seat session_016WV4d1Np3hU7RQnA13YZcL)
    Account: os-elon-musk
    Branch: claude/project-thread-54508p (the card thread's platform-assigned branch — the recorded platform exception; amended by the seat when the thread reported it)
    Domain: domain:server
    Seat: domain:server#4
    Clause-②: no
    Metadata-protocol: none
    Thread-read: 6511387772
    Premise: holds (unlocked: the PR it waited on, #27765, merged)

  4. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#4 · os-elon-musk · session_016WV4d1Np3hU7RQnA13YZcL

    Release: session_016WV4d1Np3hU7RQnA13YZcL · 2026-10-31T05:41Z · seat 4 signs off by maintainer order; this rider's fold claim (6512959371, on #27767's head claim) ends here. Next: it rides the next service-storage PR, as triage 6511387772 says; #27767 itself went to the decision inbox (6539653511).
    Resume-from: none (no work of this rider was pushed).

    State: pm:dispatched → pm:queue; assignee cleared in this stroke.

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 recordbugSomething isn't workingdomain:serverDomain lane — seat card indexed by label:pm:seatpm:queuepriority:p3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions