Skip to content
bitzorcas
中EN

Concept

架构决策

BitzOrcas ADR 索引——分类法、生命周期、编号,以及与交付、安全、运维和模块化最相关的已选决策。

Last updated

架构决策记录(ADR)捕捉做出某项选择的原因、拒绝了哪些替代方案、哪些已被取代。它们是代码背后持久的推理;代码才是实现。当文档、测试与实现不一致时,以最新的 Accepted ADR 为准。

上下文与冲突

Accepted ADR

架构不变量

机器清单与迁移棘轮

架构测试 / verify gate

可发布实现

ADR 分类法

每个 ADR 属于五个层级之一。

层级是什么如何被保护
Constitution长期不变量(Native AOT、模块边界、双 ORM 一致性、显式管线)架构测试 / verify gate
Strategy当前主路径策略(repository/store、统一聚合、Mapperly、深层模块)保护意图,而非可替换的实现
Migration迁移期机制(兼容适配器、遗留白名单、assembly 映射规格)必须声明 owner、过期时间与删除条件
Historical仅作为背景保留的被取代决策无当前约束力
Reference使用手册/playbook不是 ADR——位于 docs/guides 或 docs/architecture

编号与生命周期

编号按类别分段:Governance 00xx、Foundation 01xx、Modularity 02xx、Persistence 03xx、Cross-cutting 04xx、Security 05xx、Operations 06xx、Capabilities 07xx、Superseded/Historical 99xx。文件名为 <category>-<kebab-title>.md。每个类别目录是规范位置;ADR 根只放索引。

核心原则:架构测试保护不变量,而非实现。强制某种文件形状(*Entity.cs、手写 Search*Query)或把兼容适配器/白名单当作成功状态的测试会被删除或降级。Migration 层规则必须是可删除的——每条都声明 owner、范围、过期时间、删除条件、当前阻塞,以及其测试是棘轮还是永久门禁。

核心架构决策全景溯源矩阵

此处公布与系统交付、安全合规、多租户运维与模块化设计最核心的九大架构决策及其工程映射关系:

ADR 编号核心决策意图层级源码落地目录守护门禁 / 测试套件
0001——架构规则生命周期架构规则分级分类与迁移棘轮治理Constitutiontests/ArchitectureTests/ArchUnitExtensions 永久门禁
0002——生产就绪门禁阻断假代码、死锁与未处理异常的发布红线Constitutionscripts/deploy/verify-gates.sh / 错误预算
0102——Native AOT 约束极致冷启动性能、低内存消耗与剪裁兼容Constitutionsrc/Framework/<PublishAot>true</PublishAot> 编译检验
0103——源生成器替代反射编译期元数据分析彻底替代运行时反射Strategysrc/Framework/*.SourceGenerator零反射动态加载断言测试
0203——物理目录结构Framework 底座与 Modules 业务域物理单向隔离Constitutionsrc/Modules/SandboxModuleDependencyTests 跨层物理拦截
0205——商业包扩展模型商业私有包原子发布与客户无侵入二次开发Strategysrc/Profiles/ConsumerContractTests 独立隔离测试
0503——签名商业许可ES256 非对称加密与物理硬件指纹绑定授权Constitutionsrc/Framework/BitzOrcas.Licensing.Runtime硬件机器码哈希比对与不可篡改审计
0504——社区许可策略30人以内内建社区权益的计量与软硬期限管理Strategysrc/Framework/BitzOrcas.Licensing.Contracts席位计量与超限优雅降级
0605——私有 NuGet 供应链凭据自动轮换、包签名验证与 SBOM 软件物料清单Strategyscripts/ci/NuGet 签名与包篡改检测

完整目录与决策溯源

源代码仓库在九个类别下持有 31 个 ADR。此处尚未发布的类别(持久化 03xx、横切 04xx、除 0605 外的运维 06xx、能力 07xx、被取代 99xx)可在源仓库的 docs/adr/ 树中查阅。


另见

100%

滚轮或按钮缩放 · 放大后拖动画面 · 双击切换 100% / 200%