标签: 设计
-
桶级 CORS Wire 契约:严格 XML、Checksum 与浏览器响应
本文记录 SILO PR #71 以 e4e3007da 合并后,桶级 CORS 的 B3 协议加固决策。范围只包括 S3 请求体、校验、checksum、匹配和浏览器响应契约。站点复制顺序、tombstone、heal、状态计数与通用 metadata 重构仍是 SILO #75 下的独立工作。 状态: Strict B3 契约与 B2 收敛方案通过 pgsty/silo PR #80 合并,剩余显式状态计数矩阵通过 PR #81 合并。最终 main Go CI 与 VulnCheck 均通 …
本文记录 SILO PR #71 以 e4e3007da 合并后,桶级 CORS 的 B3 协议加固决策。范围只包括 S3 请求体、校验、checksum、匹配和浏览器响应契约。站点复制顺序、tombstone、heal、状态计数与通用 metadata 重构仍是 SILO #75 下的独立工作。 状态: Strict B3 契约与 B2 收敛方案通过 pgsty/silo PR #80 合并,剩余显式状态计数矩阵通过 PR #81 合并。最终 main Go CI 与 VulnCheck 均通 …
-
桶级 CORS:让删除与恢复正确收敛
本文完整记录 SILO PR #71 与发布善后任务 SILO #75 的问题、评审、合并决策、对抗辩论和最终实现契约。 状态: 完整 B2+B3 服务端方案通过 PR #80 合并为 b6ef7e430;最后的非对称状态计数回归通过 PR #81 合并为 04d3d316d。最终 main Go CI 与 VulnCheck 均通过。公开文档通过 silo.pgsty.com PR #7 合并,GitHub Pages 与 Cloudflare Pages 生产部署均成功,公开 EN/ZH 路 …
本文完整记录 SILO PR #71 与发布善后任务 SILO #75 的问题、评审、合并决策、对抗辩论和最终实现契约。 状态: 完整 B2+B3 服务端方案通过 PR #80 合并为 b6ef7e430;最后的非对称状态计数回归通过 PR #81 合并为 04d3d316d。最终 main Go CI 与 VulnCheck 均通过。公开文档通过 silo.pgsty.com PR #7 合并,GitHub Pages 与 Cloudflare Pages 生产部署均成功,公开 EN/ZH 路 …
-
两把 SSE-C 密钥,一份 CopyObject 响应
本文记录 SILO 提交 e37b0134a 中的 CopyObject SSE-C checksum 响应修复。 截至 2026-08-28 的状态: 实现、加密与换钥测试、完整服务器套件、race、静态检查、构建和 Fable Max 独立验收均已完成。提交已在本地创建;push、远端 CI、merge、tag、软件包、镜像、部署和生产验证仍是独立门槛。 范围: 只处理目标对象提交成功后的 CopyObject XML 与 HTTP 响应。存储对象字节、checksum metadata、加 …
本文记录 SILO 提交 e37b0134a 中的 CopyObject SSE-C checksum 响应修复。 截至 2026-08-28 的状态: 实现、加密与换钥测试、完整服务器套件、race、静态检查、构建和 Fable Max 独立验收均已完成。提交已在本地创建;push、远端 CI、merge、tag、软件包、镜像、部署和生产验证仍是独立门槛。 范围: 只处理目标对象提交成功后的 CopyObject XML 与 HTTP 响应。存储对象字节、checksum metadata、加 …
-
配置环境文件不是 Shell 脚本
本文定义 MINIO_CONFIG_ENV_FILE 的启动契约,并记录 SILO 提交 ce456dba0 中的兼容性修复。 截至 2026-08-28 的状态: 实现、定向测试、完整 cmd 与 internal 套件、tagged tests、race、vet、lint、生成物检查、rebrand 守卫、构建与本机 Fable Max 独立评审均已完成。服务器提交已在本地创建;push、远端 CI、merge、tag、软件包、镜像、部署和生产验证仍是独立门槛。 范围: 只修改环境文件解析与 …
本文定义 MINIO_CONFIG_ENV_FILE 的启动契约,并记录 SILO 提交 ce456dba0 中的兼容性修复。 截至 2026-08-28 的状态: 实现、定向测试、完整 cmd 与 internal 套件、tagged tests、race、vet、lint、生成物检查、rebrand 守卫、构建与本机 Fable Max 独立评审均已完成。服务器提交已在本地创建;push、远端 CI、merge、tag、软件包、镜像、部署和生产验证仍是独立门槛。 范围: 只修改环境文件解析与 …
-
BadDigest、InvalidRequest 与 CompleteMultipartUpload 校验和契约
本文是 SILO #48 的完整设计、调查与验证记录,同时划清它与相关问题 SILO #50 的决策边界。 状态: pgsty/silo#74 已合并为 590aeaa7d,pgsty/silo.pgsty.com#6 已合并为 9805dd7;对应变更完成完整本地验证、远端 CI 与独立 Opus 5 Max 验收。tag、release、package、image、deployment 与 production verification 仍是彼此独立、尚未完成的门槛。 2026-08-28 …
本文是 SILO #48 的完整设计、调查与验证记录,同时划清它与相关问题 SILO #50 的决策边界。 状态: pgsty/silo#74 已合并为 590aeaa7d,pgsty/silo.pgsty.com#6 已合并为 9805dd7;对应变更完成完整本地验证、远端 CI 与独立 Opus 5 Max 验收。tag、release、package、image、deployment 与 production verification 仍是彼此独立、尚未完成的门槛。 2026-08-28 …
-
ListObjects 快捷路径不能把不存在的桶伪装成空桶
本文是 SILO #32 与 PR #37 的问题分析、设计讨论与修复决策归档。 截至 2026-08-26 的状态: PR #37 已更新为带 DCO sign-off 的 head e9c5340be,通过正式批准并合并为 49c8aeac4;#32 随后自动关闭。精确 PR head 的 DCO、VulnCheck 与六项 Go CI 全部通过,合并后 main 的 VulnCheck 与六项 Go CI 也全部通过。尚未验证任何 tag、软件包、容器镜像、部署或生产端点已经包含本修复。 …
本文是 SILO #32 与 PR #37 的问题分析、设计讨论与修复决策归档。 截至 2026-08-26 的状态: PR #37 已更新为带 DCO sign-off 的 head e9c5340be,通过正式批准并合并为 49c8aeac4;#32 随后自动关闭。精确 PR head 的 DCO、VulnCheck 与六项 Go CI 全部通过,合并后 main 的 VulnCheck 与六项 Go CI 也全部通过。尚未验证任何 tag、软件包、容器镜像、部署或生产端点已经包含本修复。 …
-
一个端点,两种权限:彻底分离用户与组状态
本文完整记录 上游 issue minio/minio#21478 与 SILO PR #73 的讨论、修复过程和最终鉴权设计。 截至 2026-08-26 的状态: SILO PR #73 已合并为 2e2377d1c,并保留带 DCO sign-off 的修复提交 58735ee38;八项远端检查全部通过。上游 #21478 与 PR #21482 仍显示 open,但 minio/minio 已归档为只读仓库,无法继续评论或合并。 2026-08-28 组权限善后: 最终发布审查发现 …
本文完整记录 上游 issue minio/minio#21478 与 SILO PR #73 的讨论、修复过程和最终鉴权设计。 截至 2026-08-26 的状态: SILO PR #73 已合并为 2e2377d1c,并保留带 DCO sign-off 的修复提交 58735ee38;八项远端检查全部通过。上游 #21478 与 PR #21482 仍显示 open,但 minio/minio 已归档为只读仓库,无法继续评论或合并。 2026-08-28 组权限善后: 最终发布审查发现 …
-
Conditional DELETE:为什么删除条件只能针对当前对象判断一次
本文是 SILO PR #12 的问题分析、设计讨论与修复决策归档。 截至 2026-08-26 的状态: PR #12 仍然 open,原 head 为 5b71a75e,落后最新 main 118 个提交。原提交没有 DCO sign-off,GitHub 上没有 check run。本文记录的改进方案已在独立本地 worktree 中实现、测试并完成两轮 review,但尚未提交、推送、合并或发布。 本轮范围: 正确实现单对象 DeleteObject 的 If-Match;同时在收到尚未 …
本文是 SILO PR #12 的问题分析、设计讨论与修复决策归档。 截至 2026-08-26 的状态: PR #12 仍然 open,原 head 为 5b71a75e,落后最新 main 118 个提交。原提交没有 DCO sign-off,GitHub 上没有 check run。本文记录的改进方案已在独立本地 worktree 中实现、测试并完成两轮 review,但尚未提交、推送、合并或发布。 本轮范围: 正确实现单对象 DeleteObject 的 If-Match;同时在收到尚未 …
-
为什么 CompleteMultipartUpload 必须返回 ChecksumType:PR #57 评审记录
本文是 SILO #47 与 PR #57 的设计、评审与决策归档。 截至 2026-08-26 的状态: PR #57 已批准并合并为 a96116b1,#47 随后自动关闭。被测 PR head 的九个检查项全部通过,合并后 main 的 Go CI 与 VulnCheck 也全绿。尚未验证任何 tag、release package、container image、deployment 或 production endpoint 已包含本修复。 范围: 让 …
本文是 SILO #47 与 PR #57 的设计、评审与决策归档。 截至 2026-08-26 的状态: PR #57 已批准并合并为 a96116b1,#47 随后自动关闭。被测 PR head 的九个检查项全部通过,合并后 main 的 Go CI 与 VulnCheck 也全绿。尚未验证任何 tag、release package、container image、deployment 或 production endpoint 已包含本修复。 范围: 让 …
-
可选校验和,强制失败:修复 UploadPart 与 UploadPartCopy 兼容性
本文是 SILO #46 的完整设计与实现归档。它记录的并不只是一个 if 条件如何修改,而是一个看似简单的 S3 可选 header,如何一路牵动 multipart 完成语义、复制响应、压缩与加密数据流、兼容基线和发布验证。 状态: 服务端实现与本地验证完成;commit、PR、远端 CI、发布与线上验证待完成。 归属: pgsty/silo 服务端仓库。 跟踪: #46。 独立后续: #63 CopyObject + compression checksum、#64 federated …
本文是 SILO #46 的完整设计与实现归档。它记录的并不只是一个 if 条件如何修改,而是一个看似简单的 S3 可选 header,如何一路牵动 multipart 完成语义、复制响应、压缩与加密数据流、兼容基线和发布验证。 状态: 服务端实现与本地验证完成;commit、PR、远端 CI、发布与线上验证待完成。 归属: pgsty/silo 服务端仓库。 跟踪: #46。 独立后续: #63 CopyObject + compression checksum、#64 federated …
-
总量未知时,进度条应该说什么
状态:已在本地实现并验证;提交、Console 发布与 Silo 依赖更新待办 · 优先级:P1 · 归属:pgsty/silo-console · 关联问题:pgsty/silo#62 · PRD 复核:Claude Fable 5(xhigh)— APPROVE · 实现复核:Claude Fable 5(xhigh),2026-08-23 — APPROVE,无 P0/P1/P2 发现 SILO Console 下载文件夹时,Downloads / Uploads 面板会显示 …
状态:已在本地实现并验证;提交、Console 发布与 Silo 依赖更新待办 · 优先级:P1 · 归属:pgsty/silo-console · 关联问题:pgsty/silo#62 · PRD 复核:Claude Fable 5(xhigh)— APPROVE · 实现复核:Claude Fable 5(xhigh),2026-08-23 — APPROVE,无 P0/P1/P2 发现 SILO Console 下载文件夹时,Downloads / Uploads 面板会显示 …
-
数据库通知统一连接串:#53 的兼容性边界
本文是 SILO #53 的产品需求文档与最终设计归档,记录 PostgreSQL/MySQL 桶通知目标的兼容性边界、实现结果与验证证据。 最终决策 SILO 保留 PostgreSQL 与 MySQL notification target,但每种数据库只支持一种当前配置方式: PostgreSQL 必须提供完整的 connection_string; MySQL 必须提供完整的 dsn_string。 旧的五字段形式 …
本文是 SILO #53 的产品需求文档与最终设计归档,记录 PostgreSQL/MySQL 桶通知目标的兼容性边界、实现结果与验证证据。 最终决策 SILO 保留 PostgreSQL 与 MySQL notification target,但每种数据库只支持一种当前配置方式: PostgreSQL 必须提供完整的 connection_string; MySQL 必须提供完整的 dsn_string。 旧的五字段形式 …
-
只预览文本,绝不执行:SILO Console 文本预览 PRD
状态: 设计已接受,实现待完成 · 归属: pgsty/silo-console · 跟踪: pgsty/silo#17 · 审阅: 产品、安全与前端架构三方共识 SILO Console 可以预览图片、PDF、音频和视频,却不能直接查看运维中最常见的小型日志、纯文本、JSON 与 XML。即使对象保存了完全正确的 Content-Type,前端也会在选择渲染器之前把它判为不支持。 恢复旧版浏览器原生预览很容易,却不是正确修复。对象内容由上传者控制;如果把它作为同源 HTML/XML 文档加载 …
状态: 设计已接受,实现待完成 · 归属: pgsty/silo-console · 跟踪: pgsty/silo#17 · 审阅: 产品、安全与前端架构三方共识 SILO Console 可以预览图片、PDF、音频和视频,却不能直接查看运维中最常见的小型日志、纯文本、JSON 与 XML。即使对象保存了完全正确的 Content-Type,前端也会在选择渲染器之前把它判为不支持。 恢复旧版浏览器原生预览很容易,却不是正确修复。对象内容由上传者控制;如果把它作为同源 HTML/XML 文档加载 …