用途:solidcraft-layers 解决“这段代码应该放在哪一层”的问题,权威依据为 solidcore/docs/layers.md。核心约束是每个职责只存在于一个层,同一职责出现两份实现即视为缺陷。
主要决策规则: 一,是否计算几何?凡由坐标计算出的量,如点、向量、长度、角度、曲率、曲线或曲面、求解、求交、拟合、网格、STEP 解析,均属于 solidcore/crates/solidcore 的内核原语,并需有独立测试;点积、叉积、归一化、开方或坐标上的三角函数,无论多小都计入。 二,是否为内核调用的工作流配方?负责选取实体、参数和默认值,编排内核调用序列,按容差比较返回值并报告结果的内容,属于 solidcore/crates/solidcore-ops;ops 不自行计算几何量,缺少所需量时应新增内核原语再调用。 三,是否为状态、选择、命令、设置、历史或 UI?这些属于 SolidCraft(crates/、apps/),不计算几何。
层边界:SolidCraft 可使用 solidcore-ops(建模)、solidcore-tess(显示网格、折线)和 solidcore-record(几何作为数据)。CI 通过 cargo xtask layers(#13498)执行该边界校验:solidcore 的公开 API 列于 xtask/solidcore-public.txt,其余直接使用列于 xtask/solidcore-seam.txt,该列表只减不增。在编写 STEP、网格化、曲面求交、切线链或坐标系之前,应先查找 solidcore 中是否已有实现,重复实现会被标记。
只减不增的列表:xtask/mesh-decisions.txt 记录基于网格做出的模型决策(cargo xtask mesh-decisions);solidcore/plan/panic-sites.tsv 记录 solidcore 中易 panic 的调用,由 CI 中的 SolidCore 检查监控。
在 solidcore/ 中工作:遵循 solidcore/AGENTS.md 与该领域的参考文档(solidcore/docs/);改动需代码所有者评审(.github/CODEOWNERS),并在 .github/workflows/ci.yml 中运行 SolidCore 检查(测试、goldens、内核 rig、clippy、fmt、panic sites)。新增内核用例放入 solidcore/crates/solidcore/tests/kernel_cases/,不得放入 SolidCraft(cargo xtask lists)。内核工作参见 CONTRIBUTING.md 的“Kernel work goes in solidcore/”,仅内核的 PR 目标为内核分支。solidcore 的 issue 与认领与其他改动一样在本仓库进行(skills/solidcraft-contributing/SKILL.md);内嵌目录通过 .github/workflows/solidcore-mirror.yml 镜像到 tangency-labs/solidcore,因此不在该处提交 PR。
适用场景:在为 SolidCraft 与内嵌内核划分职责、决定新增几何能力放在内核还是 ops、审查重复实现、或准备在内核目录提交改动时使用。限制:资料未提供更细的 crate 清单、各 crate 的完整 API 或具体工作流示例,暂未提供。