本页记录可由源码、测试或发布门禁验证的高层变化,不逐条复制 Commit。正式版本的精确内容仍以对应 Tag、包清单、SBOM 和 provenance 为准。页面级「最近改过哪一篇」见最近更新。
2026-08 — 锁安全 Schema 发版与 Host-Admin 漂移通知
Changed — --init-schema 不再对已有表卸索引或改列长
Affected: 发版窗口、DBA、Host-Admin
Behavior: --init-schema 只建缺失表,并给已有表补可空、无默认值列;SQL Server 会话 LOCK_TIMEOUT 5000。列变宽、缺索引、必填加列只记残留,不自动 ALTER。
Migration: 已有库先盘点并执行 scripts/database/migrations/,再跑 schema-only。残留经 /host/schema 审阅,或由 DBA 执行受保护脚本。
Evidence: SqlSugarLockSafeSchemaClassifierTests、产品仓库 0103-database-initialization.md、数据库初始化
Changed — Schema 漂移通知改由 API Host 全量嗅探
Affected: API Host、JobHost、host-admin
Behavior: API Host SchemaDriftNotifyHostedService 按 Catalog 名 operations-schema-drift-notify 只读嗅探,聚合站内信发给 TenantId=0 的 host-admin。JobHost 仍登记同名 Quartz 适配器,但缺全量实体目录或收件端口时 fail-soft,避免半套模型报假干净。
Migration: Operations:SchemaDriftNotify:Enabled=false 或 BackgroundJobs:operations-schema-drift-notify:Enabled=false 可关闭。不要为了这份通知扩大 JobHost CompositionInclude。
Evidence: SchemaDriftHostNotifierTests、SchemaDriftNotifyHostedServiceTests、BackgroundJobIntakeTests
Added — AppHost 显式 BITZORCAS_ASPIRE_RESET_SCHEMA 开关
Affected: 本地 Aspire persist / fast 库
Behavior: BITZORCAS_ASPIRE_RESET_SCHEMA=true 让一次性 schema-initializer 执行 --reset-schema --force。默认叠加 --no-seed;同时开 BITZORCAS_ASPIRE_SEED_DEMO=true 则叠加 --seed-demo。对 AppHost 传 -- --reset-schema 无效。不能与 BITZORCAS_ASPIRE_RESET_DEMO_PASSWORDS 同时使用。Production / Staging 拒绝。Quartz 表不会被删除。launch profile 默认关闭。
Migration: 先停 AppHost,开开关启动一次,成功后关掉再日常启动。列长变更仍走 /host/schema 或 scripts/database/migrations/。
Evidence: 产品仓库 AppHost.Program、AppHostTopologyTests、Aspire 编排、数据库初始化
2026-07 — Commercial GA 与开发说明书收口
- 建立独立
Framework.ConsumerContract.Tests,从隔离 Feed 验证模板与PackageReference消费闭环。 - 增加 Commercial GA 门禁:包来源、签名、SBOM、provenance、外部 Consumer 与版本同源验证。
- 明确 PlatformBilling、套餐/运行时 License 和业务计费三条边界。
- 全站按当前
Framework、Platform、Modules、Hosts与Tooling布局重写。 - 校准 CAP 语义:消费者按至少一次处理;自动领域事件桥接是事务后 best-effort,关键消息显式进入 CAP 事务。
- 校准持久化策略:新模块默认统一聚合根与编译期 ORM Fluent Configuration Generator。
- 补齐 Identity、Authorization、Workflow、Search、Reporting、Operations、RiskControl、Website、I18n、Documents 等运行手册。
- 重写教程、测试、部署、安全和架构图;补齐三篇缺失的英文教程。
2026-06 — 框架、平台与工具链成形
- .NET 10 模块化单体基线、Mediator 管线、统一授权和多租户上下文落地。
- SqlSugar 主适配器、EF Core parity 路径、Dapper 查询适配与真实基础设施测试成形。
- CAP/RabbitMQ、FusionCache/Redis、OpenTelemetry、S3 兼容存储和 Aspire 本地编排接入。
- 自研工作流引擎、平台 Workflow 模块、通知适配、迁移器与分析查询落地。
- Mapperly、DI/Endpoint/Modularity/Persistence Source Generator 和 Scriban 工具链接入。
- Files、Notifications、Webhooks、Catalog、PlatformBilling、Tickets、Chat 等平台能力形成稳定边界。
更早的架构阶段
项目在 2026 年上半年完成技术选型、原型验证和架构约束固化。早期文档中的固定“阶段数”“模块数”和 BuildingBlocks 路径不再作为当前事实;需要追溯历史时,请读取对应 Git 提交和 ADR,而不要据此配置新项目。
维护规则
新增条目要说明“对谁有什么影响”,并能指向代码、测试、迁移或交付证据。尚未合并的方案写入路线图,不要提前放进更新日志。
与发布制品的关系
更新日志是面向人的影响摘要,不是唯一版本事实。正式发布绑定不可变 Tag、源提交、包清单、模板版本、迁移说明、SBOM、provenance 和签名结果。
| 证据 | 证明什么 | 不能单独证明什么 |
|---|---|---|
| Git Tag | 选定源码提交 | 包来自该提交 |
| Package manifest | 包名与版本 | 签名和外部消费成功 |
| SBOM | 制品依赖构成 | 依赖没有漏洞 |
| Provenance | 构建来源与过程 | 运行环境配置正确 |
| Consumer Contract | 隔离项目能消费 | 所有客户拓扑已演练 |
| GA evidence | 候选满足当前门禁 | 未来版本自动兼容 |
变更分类
- 新增:公开能力、模板、命令或 Provider;
- 变更:默认值、运行顺序、配置或行为;
- 修复:错误行为及受影响版本;
- 弃用:仍可用但进入迁移窗口;
- 移除:弃用窗口后的破坏性删除;
- 安全:需要升级、轮换或运维动作;
- 文档:改变采用方式但不改变运行时。
没有读者可感知结果的“重构”“优化”不进入高层日志。性能变化给出基准环境与指标;安全条目在修复广泛可用前不披露可利用细节。
单条记录模板
### Changed — Files finalize semanticsAffected: Files consumers and storage adaptersBehavior: repeated finalize currently returns ConflictMigration: preserve the original upload session identifierEvidence: handler test + S3 provider parity suite### Security — delegated-session validationAffected: API hosts enabling delegationAction: rotate signing keys and redeploy all replicasCompatibility: existing grants require re-authenticationEvidence: security integration suite + release advisory记录写明影响对象、行为或风险、迁移/运维动作和证据。错误码、配置键、端点或包名变化时使用精确名称,不写空洞的“完善”“增强”。
破坏性变化与弃用
破坏性变化包括公共 API 删除或改签名、错误码语义改变、配置键重命名、不可逆数据库迁移、模板输出不兼容和默认安全策略收紧。必须提供:
- 首次影响版本与目标移除版本;
- 旧新调用方式对照;
- 自动或人工迁移步骤;
- 回滚条件和数据兼容范围;
- Consumer Contract 覆盖方式。
只加 [Obsolete] 不构成完整弃用。移除时还要链接最后一个支持旧契约的版本。
发布条目核查
# 比较不可变版本,建立候选影响面。git log --oneline --no-merges vPREVIOUS..vCURRENTgit diff --name-status vPREVIOUS..vCURRENTgit diff -- Directory.Packages.props global.json# 从制品确认包、模板和 Consumer 证据。find artifacts -maxdepth 3 -type f | sortrg -n "PackageVersion|TemplateVersion|SourceRevision" artifactsrg -n "PASS|FAIL|SKIP" artifacts/consumer artifacts/ga命中只是候选。还要阅读公共契约、迁移、默认配置和测试差异,避免把内部重构写成外部变化,也避免漏掉只有运维影响的调整。
发布后修正
记录写错时明确修正日期,不能悄悄改写历史。制品错误则发布修订版本或公告,不覆盖不可变包。
发布后验证 Feed、签名、SBOM/provenance 下载、外部 Consumer 重建和迁移/回滚链接。严重遗漏进入复盘并反向补强 GA 门禁。
审查清单
- 是否来自已合并且准备发布的事实?
- 是否写明读者、版本和迁移动作?
- 是否区分 PlatformBilling、Licensing 与业务 Billing?
- 是否避免夸大 best-effort、at-least-once 或 Null 降级?
- 是否有 Tag、测试、包或发布证据?
- 中英文是否表达同一变化和风险?
完整证据链见Commercial GA 门禁。