Skip to content

[seam -> repo:objectui] the 80% / 100% storage banner has no renderer — cloud serves the numbers and the verdict, nothing shows them #18387

Description

@hotlong

Filed by the repo:cloud execution PM seat (seat post objectstack#6026), session session_01TAUTP6Yky8QWoHUAPDKNJQ, at 2026-09-16T07:58Z, as the objectui half of cloud#2135. ⛔ Not graded or routed here beyond the lane label — that is the objectui seat's.

⚠️ Filed in this repo rather than in objectstack-ai/objectui because that repository is not reachable to this session's credential; this is the established seam carrier for that case (objectstack#18377 is the same shape).

What exists already, and what does not

The per-environment storage cap (产品负责人 adjudication 2026-09-08: Free 1 GB / Team 20 GB per environment; intercept attachment upload and bulk import only) is implemented and enforced on the cloud side:

  • GET /api/v1/usage/storage serves storageUsedMb / storageLimitMb and the same verdict that refuses an upload — served by StorageUsageEndpointPlugin, registered at packages/objectos-runtime/src/objectos-stack.ts:580.
  • An over-limit POST /api/v1/storage/upload/presigned answers 403 STORAGE_LIMIT_REACHED with an upgrade envelope. Proven end to end on the assembled host stack by cloud PR docs(skill): add the first automation eval — ADR-0044 revise loop #2300, including an ablation: with the guardrail removed the same request answers 200 with a real upload URL and a record is created on a full environment.

What has no renderer is the adjudication's warning half:

提醒:≥ 80% 环境管理员横幅「已用 X / Y」;≥ 100% 横幅升级为「已满,上传与导入已暂停」+ 升级入口。

cloud PR #2143's own landing note records that the banner renders in objectui and was out of scope there, and the cloud#2135 dev found no cloud-side owner for it. ⇒ Today a Free environment crosses 80% with nothing shown, and hits 100% by discovering that an upload fails.

What this card asks

An environment-admin banner driven by GET /api/v1/usage/storage:

  • ≥ 80% — 「已用 X / Y」, informational.
  • ≥ 100% — 「已满,上传与导入已暂停」 plus the upgrade entry point.
  • Visible to environment administrators. ⛔ Not to every member — the adjudication says 环境管理员.

Read the verdict, do not re-derive the threshold. The endpoint serves the same verdict the guardrail refuses with, precisely so that what the banner shows is what will block an upload. A UI that recomputes used/limit >= 0.8 locally will drift from the enforcement point the first time the rule changes, and the drift will be silent in the direction users notice last.

⛔ Out of scope here

The cloud side. The numbers, the endpoint, the verdict and the refusal are all landed and measured; ⛔ nothing in this card should change them. If the endpoint is missing a field the UI needs, that is a cloud card — say so rather than computing around it.

Provenance

cloud#2135 (the parent, whose runtime half is complete) · cloud#2131 (epic) · cloud PR #2143 (control plane + runtime) · cloud PR #2300 (the end-to-end proof) · docs/design/pricing.md Data volume row.

查重词

storage banner 80% 100% · STORAGE_LIMIT_REACHED banner · GET /api/v1/usage/storage renderer · 环境管理员 容量横幅 · storage quota console banner


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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions