Files
cdsl-cad/cadfs_to_cdsl/CADFS_FULL_CAPABILITY_TARGET.md
T
likang 994d06aaea feat(selector): 增加离线候选遍历与严格回放验证 Demo
- 新增 selector_candidate_demo,移除 provenance intent 后枚举候选 selector
- 对候选分支执行有界重建与严格 STEP 比较
- 仅在候选遍历完整且唯一 strict 通过时生成 selector 映射记录
- 增加 selector 候选搜索、预算限制和记录生成的测试
- 保持生产 selector resolver 不受 Demo 逻辑影响
- 更新 CADFS 能力台账,记录 IMPRINT 派生 profile 的 lineage selector 缺口
2026-09-10 15:12:57 +08:00

75 KiB
Raw Blame History

CADFS 全量能力闭环目标

目标

将 CADFS FeatureScript 的完整建模历史通用地转换为 CDSL,再由 CDSL engine 重建 STEP。目标不是让少数代表模型通过,也不是为某个样本拟合最终 STEP;目标是 补齐当前 CADFS 全量语料实际出现的所有建模语义,使每个可比较模型都能以完整 feature history 生成工程相似的 STEP。

工程验收使用 comparison.json.rp.passed == true:双向 surface max/p99 与 bbox 不超过 0.02 mm、体积和面积相对误差不超过 0.005、实体数相等。strict0.01 mm / 1e-5 阈值保留为高精度诊断,不能因严格失败而隐藏已工程相似的模型, 也不能因生成 STEP 就把几何错误的模型标为成功。

本文件的范围是 output-history/20260907-235209 的 9,347 条历史快照。后续重新扫描全量数据时, 必须以新快照的真实样本数和能力矩阵更新本文件及本地能力台账。

不可妥协的实现原则

这是绘图引擎和通用 converter,不是样本修复脚本。每项能力必须由 FeatureScript 语义、CDSL contract 和内核拓扑共同定义,并对同类输入普遍成立。

  • 禁止以 sample_id、文件路径、特定尺寸、特定坐标、特定 feature ID 或 gold STEP 测量值驱动行为。不得为让单条样本通过而植入分支、偏移量、默认 profile 或 selector。
  • 不得读取原 STEP 来补齐 FeatureScript 未提供的参数、反推 CDSL 尺寸或决定建模策略。 原 STEP 只用于最终比较、诊断和已验证的 source exception 证据。
  • 不得把未知语义降级成任意盲拉伸、默认 union、任意当前 body、任意相近 face/edge 或静默跳过。无法唯一表达或绑定时必须保留可执行前缀、输出明确诊断,并记录能力 缺口。
  • 优先扩展显式 CDSL schema、typed runtime state、body graph 和 kernel-level topology delta;不得以 parsing/lowering 层的临时重写替代应由 runtime/adapter 承担的几何语义。
  • 允许针对几何类别采用受限算法,但适用前提必须由通用的、可验证的几何条件表达, 并有正向、反向和边界测试。条件不满足时必须拒绝并诊断,不得猜测。
  • 若已有实现反复依赖样本化补丁、不能表达已出现的通用语义或受内核 API 结构性限制, 必须评估替代方案,不得沿错误方向继续累积补丁。替换需要可复现根因、成熟实现或最小 原型的对照、contract/迁移影响评估和回归计划;单个样本或偶发内核失败不足以触发重写。
  • 每项 FeatureScript operation、query 或枚举语义的 lowering,必须对照源文件声明的 FeatureScript/standard library 版本对应的官方 API/query contract,并在能力矩阵记录 文档或标准库来源、已采用的语义与未覆盖边界。当前官网或其它版本的文档不得替代源版本 的默认值和行为。文档只用于确定源语义,不能替代 CDSL provenance、OCC builder history 或 selector 的唯一性证据。
  • 每项能力必须同时具备:FeatureScript lowering、CDSL schema/semantic validation、 runtime/adapter 实现、selector/body 语义、单元测试、多个语料回归和比较工件;缺少 任一层只能标记为“部分完成”。

全量基线

历史快照的主要操作和当前能力缺口如下。数量是出现次数或受该缺口阻塞的模型数, 只用于排序,不代表一个操作只有一种语义。

FeatureScript 操作 历史出现次数 当前主要缺口数
newSketch 20,857 草图/工作平面诊断 7,043
extrude 18,168 3,600
fillet 5,210 1,904
revolve 2,087 662
chamfer 1,818 588
cPlane 1,620 168
hole 1,203 582
shell 729 696
mirror 483 241
transform 468 252
sweep 378 326
loft 377 107
circularPattern 252 139
booleanBodies 228 187

已发现的派生 profile / topology 语义必须单独覆盖,不能合并为笼统的 extrudeloft 支持:

语义 历史缺口数
extrude_profile_topology:intersect 383
extrude_profile_topology:cap_face 201
extrude_profile_topology:cap_edge 134
extrude_profile_topology:swept_face 99
extrude_extent:up_to_surface 100
loft_profile_topology:cap_face 30
extrude_profile_topology:offset_face 18
extrude_profile_topology:swept_edge 16
loft_profile_topology:swept_face 9
extrude_extent:up_to_vertex 7
extrude_surface_or_mixed 4
extrude_extent:up_to_body 2
extrude_profile_topology:mid_cap_edge 2
loft_profile_topology:cap_edge / cap_vertex 1 / 1

历史报告还记录了 1,335 个未支持操作诊断。当前已知的 P2 操作包括 draftthickensplitmoveFacedeleteFacereplaceFace、完整 transformderiveimportbend_add。重新扫描时必须从诊断原文生成完整操作清单; 未列出的新操作不能被静默归入已有能力。

覆盖模型

每一项能力的回归选择必须覆盖下面五个维度,而不是只覆盖操作名称:

  1. 操作和参数:operation mode、实体/曲面模式、extent、方向、offset、draft、 角度、数量、终止条件和 result mode。
  2. 几何输入:直线、圆弧、圆、椭圆、B-spline、开口/闭合 wire、多 region、孔洞、 退化和自交拒绝路径。
  3. 拓扑来源:原草图、CAP_FACECAP_EDGESWEPT_FACESWEPT_EDGEOFFSET_FACEINTERSECTMID_CAP_EDGECOPY 和 boolean 后继。
  4. body 生命周期:NEWADDREMOVEINTERSECT、keep tools、copy、 transform、delete、mirror、linear/circular/nested pattern、多实体输出。
  5. 比较状态:strict、RP、实际几何拒绝、conversion defer、runtime ineligible、 rebuild failure、comparison timeout 与 source exception。

维护三个固定层级的回归集:

层级 用途 通过条件
原子语义矩阵 每个 operation/参数/拓扑/body tuple 的最小合成模型 CDSL contract、可执行性和精确几何断言。
核心 17 跨能力的稳定烟雾回归 完整 history、工程相似或有归因明确的 source/comparison 证据。
扩展 100+ 每个已出现 tuple 至少多个真实语料样本 RP 工程相似率、失败诊断和能力覆盖均可追溯。
全量 9,347 完整发布前的能力验证 每条都有完整分类;支持的完整 history 均工程相似,剩余项仅能是有证据的 source exception 或未实现 capability。

扩展集必须从能力矩阵自动选择并保留历史失败样本。修复能力后应扩大相应 tuple 的 样本数;不得因当前失败而从 manifest 中移除样本,也不得以新的贪心选择替换已有 反例。

实施路线

开源实现策略

每个新的内核级能力在自研前,先检查官方 OCCT/OCP API、项目现有依赖和成熟开源实现。 本地首选参考是 /Users/lk/Downloads/SimpleCADAPI-master 4:其 topology/tracking.py 保留 OCC builder 的 ModifiedGeneratedIsDeleted 和 section-edge 历史,ocp_booleans.py 展示了保留 history 的 boolean 与 same-domain cleanup,其他 kernel/operators/tests 覆盖 transform、shell、sweep、loft、fillet 和 chamfer。这些实现对 P0 topology delta、body provenance 和 P2 feature adapter 具有 直接参考价值。

采用外部方案时必须确认许可证、OCP/OCCT 版本和异常语义,并将算法适配到本项目的 CDSL contract、body graph 和 selector resolver。SimpleCADAPI 强制单一 Solid 的 boolean helper 不能直接使用,因为 CADFS 需要独立 body、copy、keep-tools 和 pattern instance 生命周期。每项采用或拒绝外部方案的决定、理由和回归证据都记录在本地能力 台账;不得不经评估地复制代码,或为复用外部 API 破坏现有 contract。

P0:通用几何状态和拓扑基础

  1. 建立显式 body graphfeature 输出 body ID、result mode、copy、transform、delete、 keep tools、pattern instance 和多 body 聚合语义。当前可用的受限增量是以 source feature body 为输入的 rigid translation/rotation 与受限 non-rigid uniform-scale transform_bodies / delete_bodies contract;它不能 代替 fused body 或 pattern instance 的完整 provenance,后两者在唯一性未证明时 必须诊断而不能退化为 current body。capability preflight 已镜像 runtime 的显式 body-member 生命周期:fused/dress-up 输出、boolean 消耗、delete 和 pattern replay 会撤销旧 member 的可选资格;只有 new_bodykeep_tools、明确 transform 输出,或 经 sole-body lineage 已证明的 current successor,才能被后续 body query 选中。受限的 pattern_circular 现在可对所有 source 都是明确可选 member 的 NEW additive body,或 一个 direct SWEPT_BODY 经该 sole-body successor 保留的 current member,以 pattern_feature_id / source_feature_id / instance_index 记录 direct COPY member;后续 transform_bodies 可精确引用该 COPY 而无需写入 runtime ID。CADFS 的 direct SWEPT_BODY transform 现可将 TRANSLATION_3D、rotation,以及单一线性 sketch/CAP_EDGE 或有 physical cap frame 的 direct CAP_FACE direction 的非负 TRANSLATION_DISTANCE lower 为同一刚体 contract。系统 datum plane、已显式 lower 的 reference plane,以及能由 direct planar source 唯一构成 frame 的 SWEPT_FACE 也可提供该 direction;圆柱/曲面 SWEPT_FACESWEPT_EDGE、OFFSET/COPY face 和没有可证明 frame 的 plane query 继续诊断而不猜测。SCALE_UNIFORMLY 在 factor 有限且为 正数、scale point 是 Origin、direct sketch vertex(含 circle center)或 direct CAP_VERTEX 时 lower 为显式 uniform_scale body transform,不烘焙回草图。TRANSLATION_ENTITY 在 direct source 仍是可选独立 body 时接受一个线性 sketch/CAP_EDGE 的端点差或两个 sketch/CAP_VERTEX 的有序点差;move 的 bake path 另要求 source 是紧邻的 NEW body。对于 exact single-source makeCopy transform 后续 COPY(instanceName=1) body/line/vertex 可递归验证其 derivedFrom 链并引用已生成 body member;对于前序 direct multi-source makeCopyCDSL 以 transform_copy_refs(transform_feature_id, source_feature_id) 表示被查询的唯一直接 source runtime 分别物化各 source 的 transformed memberaggregate 只用于 STEP 导出且不伪造 topology owner/delta。schema、semantic validation、capability preflight 和 runtime 都要求 owner 是 preceding multi-source make_copy:true transform,且 source 是该 transform 的 直接选择项;single-source、source 外、fused、pattern 和无源限定的 aggregate reference 一律拒绝。无位移的 direct TransformType.COPY 以显式 zero translation 与 make_copy:true 产生一个独立 identity body member,绝不将其写成 non-copy successor alias。CAP edge/vertex 的 source-local in-plane coordinates 保持 profile frame 仅映射到 selected physical cap origin。face、 generic face、swept/offset、pattern 或未证明 COPY/curve direction、多个 direction、已吸收 body 与其它非刚体 transform 仍必须明确诊断。对于已证明只有一个 CADFS body 的受限 lineagedirect SWEPT_BODY 可从初始 new_body 经 ordinary fusing add、单 body fillet/chamfer/shell 与 exact non-copy transform 续接到当前 CDSL membercut 保留所选 member,因而不虚构 一个 cut successor。直接 circular ADD 且 source 唯一等于该 current member 时保留这份 证明,并以该成员的实际 B-rep 物化每个 COPY instance;第二个 new_bodymake_copy transform、boolean、其它 pattern、delete 或任何未列出的 body atomic 都清空它。它绝不以 aggregate/current body 兜底, 也不为 linear/nested pattern、被排除 instance 或无明确 source member 建立 ownership。 唯一新增的 mirror 例外是:直接 pattern_mirror 的每个 source 都仍为可选的 result_mode: new_body member 时,runtime 以实际 B-rep mirror 物化其唯一的 instance_index: 1 COPY memberCDSL semantic validation、capability preflight 与 runtime 都要求这一完整条件。普通 additive/cut/dress-up 后继、已吸收 source、linear 或 nested mirror 仍走 feature replay,不能借该例外暴露 aggregate member。 本轮 327 条 transform shard 中 001204300049672900749755 因该 provenance rule 完整 lower;只有 source 在 mirror 前未被后续 mutation 吸收的 00749755 可执行到 RP rebuilt_approximate,另两条保留 runtime_ineligible 和已有前缀/诊断,绝不以 converter 完整状态冒充 runtime 或相似通过。新增的 multi-source COPY path 令 00699847 的 F3 两源 copy 和 F4 的 source-qualified F3/F1、F3/F2 queries 完整 lower,强制 pipeline 为 rebuilt_strict00950564 证明 F1 的 direct SWEPT_BODY 在 F3/F5/F7/F9 ordinary add 和 F10/F11 chamfer 后精确 lower 为 F12 的 source_feature_ids:["f_F11"] 不引用 current aggregate。output/single-body-successor-20260909 的完整 history 为 converted_complete、runtime eligible、8/8 feature executed、rebuilt_approximate RP 通过(bbox delta 0,体积/面积相对误差 0.00011913 / 0.00016132,实体数 1)。 strict 仍因 max/p99 surface 0.01 mm 与体积/面积阈值失败而保留为诊断。单元测试还覆盖 copy、boolean、pattern 与 delete 均清空 lineage;没有能唯一表示的 nested source-member chain 仍属未完成 contract,继续保留明确诊断。 SWEPT_BODY@1511 另有一条不能与上述 successor lineage 混同的即时终止 contract:只有 singleton qUnion([makeQuery(..., SWEPT_BODY, EntityType.BODY)]) 引用紧邻前序独立、无 draft、 new_body blind prism,且其 producer body record 仍唯一 active 时,单侧 up_to_body 才能 以 active_body_member / direct_new_body 解析该 record。resolver 以 producer identity 与 active-member lifecycle 证明 body_member,不读 stable ID、binding ID、几何、aggregate 或 current body。00694309 F3 是正向 body-member evidence;该样本的 F4 strict/RP pass 由下述 独立 CAP_EDGE continuation contract 证明,而非放宽 body-member 规则。later successor、ADD、cut、 revolve、sweep、COPY、boolean/pattern/delete、多 body/multiple-query 和其它 FeatureScript version 都不属于这个 contract。fresh output/core-17-swept-body-up-to-body-member-20260910tier=all pipeline/RP run 完成 17/17,分类为 1 comparison_timeout、10 rebuild_failed、 1 rebuilt_approximate、5 rebuilt_rejected;它只证明本窄 selector contract 未改变核心集 的既有分类,不能标记 general SWEPT_BODYup_to_body 完成。
  2. 在 adapter 层记录每次建模操作的 preservedmodifiedgenerateddeleted topology delta 及 CAP/SWEPT/boolean 等输出角色;runtime 以该记录完成后继 selector 绑定,不以“当前形状中最相近元素”猜测。当前增量已覆盖 OCC 刚体 transform_bodies(含 OCP gp_Trsf.SetScale 的 uniform scale)、单实体 boolean_bodies 的 union/subtract/intersect 以及 direct single-body fillet/chamfer,以及单一 selected solid 的 shelladapter 返回 opaque kernel relationregistry 只在 source/result snapshot 的 exact relation 唯一时传递 owner 和 successor,并在 rebuild 输出 topology_deltas。shell 沿既有 BRepOffsetAPI_MakeThickSolidByJoin builder 的 ModifiedGeneratedIsDeleted 历史记录 delta;未返回 IsDeleted 的内核输入不会被虚构为 deleted。该受限 shell path 还记录可由 source subshape 和 kernel event 证明的 shell.body_faceshell.offset_faceshell.closing_descendantshell.wall evidence role。当前 shell.offset_face 只有一个受限 lowering consumer:紧邻 shell 后续的 shell face query 且 FeatureScript 以 TDD/trueDependencyDisambiguation 明确指向前序 direct new_body blind-prism 的 extrude.startextrude.end。CDSL 以 output_role_source(owner_feature_id, output_role) 保留此关系;registry 只接受 exact kernel-history relation 的唯一 active snapshot,不能以相同 geometry、bare offset role 或 任意嵌套 CAP query 替代。它仍不是可 lower 的通用 CAP/SWEPT/OFFSET query。多个 Compound 成员时只有被选中实体的同一 builder 可以产生 delta,其他未改成员继续依赖 body graph 的精确等价。多实体 boolean、 非 direct-builder dress-up fallback、复杂 sweep/loft history 及 CAP/SWEPT/section query roles 仍属未完成范围。受限的单闭合无内环 profile、无 guide/transition 的 direct solid sweep 在 initial 或 new_body final member 上,会记录 BRepOffsetAPI_MakePipeShell.FirstShape/LastShapesweep.start/sweep.end evidence;受限的 initial closed-wire solid loft 会记录 BRepOffsetAPI_ThruSections.FirstShape/LastShapeloft.start/loft.end evidence。 后续 fuse 会重建 topology,因此不复用已经失效的 sweep/loft builder history。当前 CDSL selectorRef.output_role 现公开 direct-prism extrude.start/extrude.end 与四个 sweep/loft direct-builder cap roleregistry 只会在 relation 的唯一 result snapshot 上写入 TopologyRecord.output_rolesresolver 要求 owner、active body snapshot 与唯一 role 命中,并拒绝 stable ID、geometry、snapshot ID 混用。extrude_add_blind/extrude_cut_blindparams.end_condition.referenceshellfeature.selectors 各有一个有界 direct-cap contract:仅紧邻前序、result_mode: new_body、blind extrusion 的 extrude.start/ extrude.end 可作为 up_to_surface reference 或 shell removal face,且必须由该 producer 的 完整/已证明 cap role 解析;schema、semantic preflight 与 runtime 同时拒绝非紧邻 producer、 其它 role、stable ID、binding ID 和 geometry fallback。CADFS lowering 现对独立 new_body blind prism 的 CAP_FACE,以及满足全部条件的 LocOpe_DPrism drafted extrusion 生成该 contract:单一闭合外环、无内环、单向 blind extent,且拉伸方向与实际端盖法向同向。extrude_from_face 直接拉伸该 B-rep 面,不能把 CAP_FACE 还原为原始草图。registry 只会让唯一 OCC modified/preserved relation 跨 boolean 删除成员后的 Compound member-index 改变继续传递 owner/output role;几何回退仍按 member index 隔离,绝不以相似性跨成员继承。该路径不覆盖 drafted 内环、fused/multi-region/ multi-extent/loft/sweep/pattern 或一般 CAP_FACE,故 CAP_FACE/SWEPT_FACE lowering 仍为 部分完成。00016195 的 F1 -> fillet -> F3 和 00835610 的 drafted F3 -> F4 subtract -> F5 都是正例;后者为 converted_complete / rebuilt_approximate9 个 feature、3 个实体, RP 通过(bbox delta 0.0008 mm、体积相对误差 0.00020848、面积相对误差 0.00021742)。00268467 的 drafted 内环则明确保留 capability diagnostic 和可执行 前缀,不伪造可绑定 selector。 TopologyDeltaRelation 还必须显式记录 source_kindresult_kind,禁止把 face、edge 或其它 subshape 的 relation 混作同一种后继。每个 TopologyDelta 必须随操作输出 input/ output snapshot、body member 和 history 状态证据;当前 contract 的状态为 provenpartialunknownrejected,并可带原因。只有完整、可追溯的 kernel relation 才能 进入 lineageIsDeleted 不等于存在 replacement,缺失的 IsDeleted 也不等于 deleted。 boolean 的 section edge 可以作为 builder 生成事实记录,但没有 source-face 的精确 relation 时不得被提升为 source-qualified lineage。当前 INTERSECT@1511 仅有一个受限 consumer explicit boolean_bodies 的单一 target/tool subtract/intersect 中,两个 direct-prism CAP_FACE/SWEPT_FACE input 必须分别由 OCC Generated(face) 返回同一 SectionEdges() edge,且三个 handle 都以 IsSame 绑定 input/final snapshotresolver 再要求唯一 relation、 intersection/one policy 和 active result member。另有一条同样受限的 primary REMOVE 路径: immediate extrude_cut_blind 只可在一个 active target solid/member、一个 direct-prism tool、完整 source anchor/history 且 source query 没有未核实 disambiguation 时注册 transient:<feature> tool snapshot;它仅作紧随 cut 的 source-qualified section 历史输入,永不成为 active/selectable topology。 普通 SectionEdges()、多输出、keep-tools、多 member、COPY/transform/pattern/TDD/IMPRINT/non-prism、 primary query 的未核实 disambiguationData inputs 均不执行。 这不构成通用 INTERSECT coverage,真实语料 RP 矩阵仍待补齐。这些记录是通用 topology 事实,不是由 stable ID 或最终几何相似性反推的替代品。
  3. 建立统一 selector resolver,并让 runtime 与诊断性的 prefix binder 共用 TopologyRegistry.resolve 及已导出的 topology facts。resolver 按“语义 source -> kernel lineage -> derivation policy/cardinality -> active body member”顺序绑定,报告实际分支使用的 resolution_mode 和 evidence,而不是从 selector 字段事后推断模式。stable ID 只可定位 source,不能直接在 active record 上成功;owner、output role 或 geometry 也不能绕过完整 lineage、允许的 derivation policy、operation-wide cardinality 与 active-body 证明。 nonesource_qualifiedoneall_fragments 都必须有明确、可审计的语义:merge 即使 最终只有一个 result 仍按 N:1 检查,all_fragments 遇到任一分支缺失或 partial 必须拒绝。 resolver 失败不得自动改走 legacy 成功路径;只有已文档化的 legacy explicit-geometry selector 可保留 geometry fallbackprovenance/COPY instance selector 不得回退到几何相近、current body 或普通 context selector。找不到、多解、历史不完整、版本不支持和 policy/cardinality 不满足 都必须稳定诊断并保留可执行前缀。 selector_intent.version 是唯一 canonical intent version;顶层 selector_intent_version 仅为兼容字段,存在时必须一致。schema 可接收只有 selector_intent 的语义 selector,并将 FeatureScript 标准库路径、精确 import version、全部 direct import 列表与 source language version 元数据和 runtime ID 分离保存。lowering 不得为缺失 source version 虚构 "0"resolver 应返回 selector_query_version_unknown。query family/language version/direct standard-library revision 通过显式 allow-list 注册,不得从 15xx 数字前缀、相同 import path 或单一样本推断兼容性。当前 FEATURESCRIPT_QUERY_CAPABILITY_MATRIX.md 将 FeatureScript 1511 的受限 CAP_FACEOFFSET_FACE 以及 direct-prism SWEPT_FACE/SWEPT_EDGE contract 标为 端到端可执行。后两者只适用于紧邻独立、无 draft、new_body blind prism 的 consumer adapter 必须保留 direct source-profile edge/vertex construction handle,并分别由 BRepPrimAPI_MakePrism.Generated(edge) 的 edge -> side-face 或 Generated(vertex) 的 vertex -> vertical-edge relation 完整证明;resolver 再检查 boundary policy、source qualification 和 active member。00111611 F3、00974931 F2、 00594348 F2 和 00000715 F3 是这些受限路径的真实语料证据。SWEPT_EDGE 的 direct profile contract 现还接受一个 analytic contour region 的 hole wiresadapter 将外环和全部内环一次 交给 BRepBuilderAPI_MakeFace,只在 source edge/vertex 经 finished-face IsSame 验证后登记 anchor00007264 F2 的四个 selector 已 kernel_lineage resolved(最终 comparison rejected), 00039669 F2 strict/RP passing00151159 F2 RP passing。含 hole 的多 region profile 必须继续走 既有 Face.make_holes geometry path 且不登记 anchor,避免改变 prism combine 语义;00248377 是 该拒绝/保留边界,仍导出 F4 checkpoint。00594348 的 immediate shell 仅接受 direct source 的 non-construction line wall,并从同一 edge -> face relation 解析两张 removal face;它不输出 geometry 或 stable-ID hint。direct all-circle construction 可保留一个 annular hole 的 outer/inner source edge;多个独立 direct circle region 只在每个 prism result 都仍位于 final snapshot 时保留各自 relation(当前为原子证据,尚非多语料完成项)。 CAP_FACE 还可作为上述受限 up_to_surface nested reference 或 immediate shell removal face 的 cap role00212904 F2 与 00789939 F2 分别以 extrude.startextrude.endoperation_role 执行。fresh output/cap-face-immediate-shell-00212904-20260910-v1 证明前者执行到 F5,但 strict/RP 均拒绝;fresh output/cap-face-immediate-shell-00789939-20260910-v1 证明 F2 及后续同一 direct-cap shell F5 都执行,F6 仍为 selector_query_unsupported 并保留 F5 STEP checkpoint。fresh output/core-17-cap-face-immediate-shell-20260910-v1tier=all / pipeline / RP run 为 17/17 completed、1 rebuilt_strict、1 rebuilt_approximate、6 rebuilt_rejected、8 rebuild_failed、1 comparison_timeout;其中 00212904 的分类由 selector failure 变为 executable-but-rejected,不能将此记为几何相似通过。它们不允许在 producer 后续 mutation、 non-immediate owner、stable ID、binding ID 或 geometry fallback 中继续解析; direct-prism SWEPT_FACE 也可作为单侧 up_to_surface reference,但它不是 output rolelowering 只保留一个 direct source-profile edge anchorresolver 必须逐段验证 boundary 以及后续 continuation 的 complete/proven kernel relation、operation-wide cardinality 和 active body。 00925274 的 F3 以 extrude.startoperation_role 解析;F6、F9、F12 与 F15 都以 F1 E0 side-wall kernel_lineage 依次经过 complete/proven 的 F3、F6、F9、F12 target-side subtract continuation 解析。单实体 primary cut 现在始终保留其 cut builder 的 target snapshot history;仅 transient tool snapshot 仍要求 direct-prism tool history,故没有扩大 source-qualified INTERSECT 的工具可选范围。resolver 只在 selector 请求的 source/result topology kind 内计算 complete/proven final-snapshot relation 的基数;没有 final snapshot member 的 partial intermediate handle 及 cross-kind section diagnostic 保留在 delta 中但不伪造成 face fragment。任何绑定到 final result 的 partial、split、 merge、inactive 或无 history relation 仍稳定拒绝,绝不以 geometry、stable ID、binding ID 或 current body 猜测。fresh output/core-17-swept-face-final-20260910tier=all / pipeline / RP run 完成 17/172 rebuilt_strict0069430900925274)、1 rebuilt_approximate、6 rebuilt_rejected、7 rebuild_failed、1 comparison_timeout00925274 为 strict/RP pass,不能 推广为一般到面终止或 general SWEPT_FACE completion。受控完整 0040 shard 的 fresh output/shard-0040-swept-face-final-20260910-v2 也完成 71/717 strict、9 approximate、16 rejected、 34 rebuild-failed、3 runtime-ineligible、1 timeout、1 deferred,并保留 32 个 comparison artifact;它是 shared runtime 回归分类证据,不把非 strict/RP 样本重述为 selector success。IMPRINT/split source profile、draft、多/two-sided extent、fused source result、未证明或 split continuation、boolean/SPLIT 后继、revolve、 sweep、loft、copy/pattern 及一般 SWEPT query 仍未完成,绝不能标记为 query-family 完成。 CADFS production rebuild 以一个 IncrementalCdslExecution 按 history 顺序执行:每个 feature 在执行前只对本 session 已登记的 topology snapshot 调用 resolver,随后立即执行并登记新的 body/history evidence。binding_feature_id 读取同一 session 保留的历史 snapshot,不能通过 重建 prefix 或复制 OCC body 获得结果。feature 或 selector 失败时,系统直接从该 session 导出 最后已执行 checkpoint;不会为尝试更早 prefix 而重放历史。bind_candidate_selectors 仍可为 不完整的外部/诊断 CDSL 显式运行 legacy prefix adapter,但不得进入 production success/failure path,也不得将 provenance 或 output-role selector 降级为 geometry binding。
  4. 完成草图 region/wire 模型:多轮廓、内环、开口 reference geometry、B-spline/ellipse、 profile query、显式 construction 和退化检测。 非周期 skFitSpline 的两点受限变体现已贯通:仅当端点不同、同时给出两端导数,且 CDSL 显式携带严格递增的参数域时,lowering 才以真实的 two-point B-spline 输出;它 绝不退化为直线。schema、semantic validation、sketch solver 与 adapter 共同拒绝缺失 导数/参数、周期两点和重合端点。solver 以参数域上的 cubic Hermite 采样检查闭环面积, adapter 仍把端点切线与参数交给 OCP 插值,而非近似多段直线。历史快照中 453 个此类 entity 都带两端导数;当前 10 条历史反例矩阵的 9 个可生成候选保留了 18 条该曲线。 该增量只完成此一 profile contract,不覆盖由 INTERSECTCAP/SWEPT 等拓扑查询 派生的 profile,也不把后续 dress-up 或内核失败误记为 spline 成功。

P1:派生 profile 与拉伸终止

  1. 用 P0 topology registry 通用重放 CAP_FACECAP_EDGESWEPT_FACESWEPT_EDGEOFFSET_FACEINTERSECTMID_CAP_EDGE,将其物化为可追溯的 profile/wire,而不是复用原草图或写入样本特例。现有 direct-prism,以及单闭合无内环、 法向同向的 LocOpe_DPrism draft CAP_FACE,是受限例外:它们以 builder-proven output role 直接消费物理 B-rep 面,未试图物化或重建 profile。OFFSET_FACE 的端到端 status 同样只限于 capability matrix 所列、带 TDD source cap 的 direct shell output role;它不代表 任意 offset query 已可重放。SWEPT_FACESWEPT_EDGE 现在各有一条 1511 direct-prism 纵向 contractsource profile edge 经 Generated(edge) 到 side face,以及由完整 incident source-edge set 唯一命名的 source vertex 经 Generated(vertex) 到 vertical edge。lowering 只在 producer 紧邻、独立、无 draft、new_body blind prism 且原 profile 未变时产生语义 selector adapter 只将 direct wire/face construction 中 exact IsSame anchor 注册为 transient source fact resolver 则只沿 complete/proven 跨 kind relation 解析。单一 analytic region 的 direct hole wires 也可在 finished face identity 未改变时提供这份 evidence00007264 的四个 vertical-edge selector 皆已解析,00039669 strict/RP passing00151159 RP passing;含 hole 的 multi-region profile 继续使用旧 geometry path 并明确不产生 anchor。00111611 F3 的圆 edge -> side face、 00974931 F2 的 direct annulus outer edge -> side face,与 00000715 F3 的两个 incident-edge pair -> vertical edge 为其它真实语料证据。direct all-circle construction 还保留 annular inner edge 及每个 direct circle region 的独立 delta;后者目前只有原子 executor evidence。IMPRINT 或 split profile、draft、multiple/two-sided extent、fused result、boolean/SPLIT、revolve、 sweep、loft、copy/pattern 及 profile/wire consumer 也未覆盖。因此这只是两个受限 end-to-end contractSWEPT_* family 和 P1 的通用派生 profile 目标仍未完成,不能由 AST、unit relation 或上述两个样本提前完成。 CAP_EDGE 现在也有一条独立的 1511 direct-prism contract,但它不物化 profile/wiresource sketch entity 必须仍对应一个 exact direct-profile edgequery 的 isStart 被保存为 lineage_role: extrude.start|extrude.endadapter 以 BRepPrimAPI_MakePrism.FirstShape(source_edge) / LastShape(source_edge) 取得 cap edge,并以 final snapshot 的 IsSame 证明该 handle 未失效。resolver 只沿这个 source edge 与 role-qualified boundary relation 解析;stable ID、几何、owner propagation 和 current-body 均不是回退路径。 00021014 F2 的九个 CAP_EDGE selector 覆盖两个 role,完整 history strict/RP 通过。该例外只接受 紧邻、独立、无 draft 的 new_body blind prism 与未变 direct profile。一个 direct all-circle annulus(一个外圆和一个包含的内圆)也可保留 outer/inner 的 exact source anchor004794700050117000526649 在 F2 的 CAP_EDGE consumer 后 RP 通过,00621329 strict/RP 通过; 00566233 的两个 F2 selector 已由 kernel lineage 解析,随后才因 OCC chamfer feasibility 失败, 00614954/00678961 也都在 F2 解析后才被后续未支持 query 截断。对于线段外环加圆孔,solver 仅给同一 source circle 拆出的全部四条 arc 加 logical_circle_source_entity_idadapter 再要求这个 ID 在原 profile 中唯一指向一个未拆分圆、重建 native wire,并以 finished-face IsSame 重新证明。 任一 marker、source 或 final membership 缺失都没有 anchor。00735367 的 F2 因而以 kernel_lineage 解析、F1--F3 执行,随后 F4 才以 selector_query_unsupported 导出 F3 checkpoint。 不完整 logical-circle loop 不产生该 circle 的 anchor;含 hole 的 multi-region、trimmed/split profile、 draft、multiple/two-sided extent、fused result、boolean/SPLIT successor、revolve、sweep、loft、copy/ pattern 继续拒绝。 对 direct-prism CAP_EDGE 的 fillet/chamfer consumerboundary-only policy 另可在运行时存在 完整 kernel continuation 时扩展为 boundary + continuation:每一跳都必须为 exact preserved/modified relation、coverage: completestatus: proven,且 operation-wide cardinality 保持 1:1;任何 partial、split/merge、inactive result 或无 history 都稳定拒绝。 00694309 证明这一条:F4 的 F1 extrude.start cap edge 经 F3 primary-cut preserved continuation 解析为 body:f_F3:edge:1,完整 pipeline output/cap-edge-continuation-after-primary-cut-20260910-v1 的三 feature history strict/RP passing。任何 boolean/SPLIT、COPY/pattern 或其它中间操作也必须 提供同样完整的 1:1 relation;它们目前没有独立的 corpus coverage,不能仅按 owner/operation 名称 通过。这个 contract 也不接受任意 CAP_EDGE source,且没有 geometry、stable-ID、 binding-ID 或 current-body fallback。fresh output/core-17-cap-edge-continuation-20260910-v1tier=all / pipeline / RP run 完成 17/17 1 rebuilt_strict00694309)、1 rebuilt_approximate、5 rebuilt_rejected、9 rebuild_failed、1 comparison_timeout。这只确认该完整 relation contract 将此样本从 F3 executable prefix 推进为实际 strict/RP pass,不能作为 CAP_EDGE family completion 或 general boolean continuation 的证据。 共享 selector/runtime suite 为 261 passed、1 skipped;强制 core-17 重跑 output/core-17-direct-prism-cap-edge-hole-20260910 为 1 RP、5 rejected、10 rebuild-failed、1 comparison timeout,与 selector-migration 基线分类一致。因此 CAP_EDGE family 与 P1 的通用派生 profile 目标仍未完成。 OFFSET_FACE 现有一个独立的受限 profile 物化路径:只有 inward shell 直接消费一个 new_body blind additive prismshell 恰移除该 prism 的一个 CAP,且 OFFSET query 恰指向 其未修改、单闭合凸线性 profile 中的一条非 construction linelowering 才根据 source profile 的相邻边 offset 交点、shell thickness、实际 start/end cap frame 构造四边内壁。 它不复用整张 source sketch,也不从 STEP 反推 trimdraft、cut/fused/multi-body source、 多 removal cap、曲线/凹/多 contour profile、多个 source edge 和非正交 span 都保留 extrude_profile_topology:offset_face 诊断。00789939 的 F15 是严格通过的完整 history 正例;00588094 的非直接 provenance 则保持 partial conversion 和五 feature executable prefix,后续 F15 的 output-role binding failure 仍单独报告。output/offset-face-linear-wall-20260909-r3 记录前者 strict/RP 通过;当前 26 条含 OFFSET_FACE history 的受控 shard output/offset-face-profile-shard-20260909-r1 为 1 strict、17 rejected、7 rebuild failure、 1 deferred-no-executable-feature,仍有 17 条明确的 extrude_profile_topology:offset_face gap。output/core-17-offset-face-linear-wall-20260909-r2 为 4 strict、3 RP、9 rejected、1 comparison timeout,故这仍是派生 profile 的部分完成项而非 general OFFSET replay。 对 CAP_EDGE,现有的受限 outer-profile 规则还会递归展开仅由 qUnion 构成的关联嵌套, 再要求恰有一个原始闭合 IMPRINT 外 region 和一个唯一 CAP_EDGE-derived IMPRINT region 并由两个明确 face-side 判断完整外 region 或外环加孔。该展开只消除 FeatureScript 局部 alias 引入的集合包装,不改变 query provenance,也不放宽 owner、曲线或 side 的唯一性。 00950564 的 F3/F5 是这一语义的真实证据:两个 CAP_EDGE profile 都完整 lowerF1--F12 history 也因上述单 body successor rule 完整执行并 RP 通过。它不覆盖一般 CAP_EDGE、CAP edge 物理重放、COPY/boolean/pattern 后继或未证明的 region 选择。双向 blind extrusion 同样沿用单向 CAP 顺序:isStart:true 是主方向的反侧端盖,isStart:false 是主方向端盖; 因而 second depth 趋近于零时保持同一 contract,不按 primary/reverse 字段名称猜测。 00247322 的 F4 以 z=40.3 mm 的反侧 cap 附着 F6F5 后该 F4 owner 仍有唯一 continuationF7 的 CAP_EDGE hole profile 可执行。后续 F9 选择已被 F5 消耗的 F4 member 故保持 body_source_unavailable,不烘焙 transform 回 F4 草图或替换为 aggregate body。 刷新的 output/cap-edge-two-sided-frame-matrix-20260909 三样本矩阵为 1 个 rebuilt_approximate00950564)、1 个 rebuilt_rejected00803284)和 1 个 runtime_ineligible00247322,但 F1--F7 prefix 可执行)。共享 lowering 的固定核心 17 工件 output/core-17-two-sided-cap-frame-final-20260909 分类为 3 strict、3 RP、9 rejected、 1 rebuild failure、1 comparison timeout,与此前共享基线一致。受控全量 24 条 shard output/full-shard-two-sided-cap-frame-20260909 记录 1 strict、2 RP、10 rejected、6 rebuild failure、3 runtime-ineligible、1 timeout 和 1 无可执行 feature;其 conversion diagnostics 仍归因为已有的 cPlane、CAP_EDGE、fillet/chamfer、hole、revolve 与 shell selector 缺口, 没有将它们重分类为双向 CAP frame 成功或失败。 INTERSECT 的第一条通用受限路径现以 CDSL planar_imprint 保存同一草图的原始 analytic entities、IMPRINT 面侧、可选 INTERSECT vertex order 与 fragment sidesolver 仅转换这些精确曲线,adapter 用 OCP BOPAlgo_Splitter 切分有界 support face 后选取实际 B-rep region。top-level IMPRINT FACE 的 multi-face query 只有既有的 _profile_selection_sketch 不能将它缩减为单一/圆形/open 专用 profile 时,才进入该 typed arrangement profile;不能把 nested INTERSECT 误当作 outer profile family,也不能抢占 existing circle/open/surface IMPRINT contracts。没有唯一 fragment、选中无界 support-boundary region、construction/source alias、split failure 或不完整 query 都稳定拒绝,不把 B-spline/arc 采样成多边形,也不复用整张草图。该路径覆盖 bounded line/arc/circle/ellipse/B-spline arrangement 的 shared contract,但尚未覆盖不同 sketch、surface/topology producer、trim/copy/ pattern 后继或完整 FeatureScript IMPRINT query grammar,因此仍是 P1 部分完成项。 output/planar-imprint-multiface-20260910 的 seven-source forced RP matrix 验证这个收紧后的 分派:0030448800253824 rebuilt_rejected00354246 在 F2 deferred SWEPT_FACE 时保留 F1 checkpoint00306689 在 F1 OCC BRep_API: command not done 失败,00784127 在 F1、 00782218 在 F2 因 selected region unbounded 拒绝(后者保留 F1 checkpoint),00429745 在 F1 OCC extrude 无有效 solid 时拒绝。该 matrix 不把任一 IMPRINT-derived profile 的下游 SWEPT_FACE 视为完成:它们保留 source intent 并由 shared resolver 有界拒绝。当前 shared selector/runtime suite 为 262 passed、1 skipped;强制 core-17 output/core-17-planar-imprint-multiface-20260910 为 1 RP、5 rejected、10 rebuild-failed、1 comparison timeout,与 selector-migration 基线一致。工件 output/planar-imprint-intersect-20260909-runtime 是 CAP_FACE 扩展前的历史工件: 00082324 与当时的 00835610 都保留可执行 STEP 但 rp.passed == false0007185900093912 分别保留既有 TopoDS::Solid 和 revolution-segmentation runtime failure。 当前 output/drafted-cap-face-20260909 已证明 00835610 在 drafted CAP_FACE continuation 与该 IMPRINT 后续均执行时 RP 通过;这不改变 planar_imprint 的其它失败分类,也不构成 该能力的完整覆盖。共享核心 17 回归 output/core-17-planar-imprint-20260909 分类保持 3 strict、2 RP、10 rejected、1 rebuild failure、1 comparison timeout。 对同一逻辑 circle sourcesolver 现在保留一条带 workplane frame 的 OCC circle edge,而不将 它预拆为四条 contour arcfragment 的 directed successor/predecessor 由 splitter image 在 精确交点处的端点和原 curve 同向切向解析,避免周期参数接缝的数值排序歧义。无 fragment 的 source 代表全体 splitter descendants:只有其给定 face side 的每一个 B-rep face 都有界时, adapter 才保留完整 face 集;任一 support-boundary face、非唯一 side 或 fragment 都拒绝, 不按 image 顺序/长度选择或静默省略。output/intersect-circle-imprint-matrix-20260909-r2 记录 00001313 F1/F3 完整执行但 RP 拒绝(bbox delta 0.023571 mm)、00004246 的 F1/F3 executable prefix 和三个仍有归因的失败。00040869 的 line/ellipse OD(0) pairs 以 OCP exact distance 均为 0.004240908 mm,没有 splitter image 或 section edge,故 output/intersect-circle-imprint-source-gap-20260909-r1 保留 F1 prefix 并报告 source/anchor 无实际交点,绝不以容差补点;核心 17 output/core-17-intersect-circle-imprint-20260909-r2 为 4 strict、3 RP、9 rejected、1 comparison timeout。故这仍只是同草图有界 exact-curve arrangement 的 P1 扩展,不能宣称 general INTERSECT replay 已完成。
  2. UP_TO_NEXT 已 lower 为 CDSL through_next,并有一个受限的 current-body contract:所有 profile sample ray 都在当前 body 命中时,保留 profile 到首个正向 命中面之前的外部材料;只有部分 ray 命中时,以实际命中 face 做有限体层裁剪;没有 命中时明确拒绝,不退化为盲拉伸。00192744 的 F5/F10/F14 已由该 contract 完整 执行,但其独立 body 与 source STEP 的融合差异、后续 multi-body transform 和 source history/STEP 不一致仍单独分类。这是部分完成,不代表复杂 profile、多 body target、 source body lifecycle 或第二方向终止已支持。
  3. 在上述受限路径之外,完成 up_to_surfaceup_to_nextup_to_bodyup_to_vertex、two-sided、through-all、surface/mixed 的有限交集语义和多 body target 选择。
  4. 仅在所有 profile rays、target body 和 offset 均能由通用几何验证时执行;否则保留 前缀并说明哪一个终止条件无法证明。

P2:实体特征的完整语义

  1. extruderevolveloftsweep:补齐实体/曲面模式、复杂 profile、导轨、 section correspondence、twist/transition、path/axis selector 和结果 body。现有 direct initial/new-body simple sweep 与 initial simple loft 现可将 builder-proven cap evidence 作为受限 CDSL output-role selector 供 downstream feature 消费;同一 contract 还支持 independent blind prism CAP_FACE 的 extrude_from_face。这些路径仍不能代替完整的 derived-topology selector 语义,CADFS lowering 也尚未以此表示一般 CAP/SWEPT query。 capability matrix 中 SWEPT_FACE@1511SWEPT_EDGE@1511 另有 direct-prism 的受限 end-to-end contract:独立、无 draft、new_body blind prism 的 direct source profile edge/ vertex(含一个 analytic region 的 exact hole wires)由 exact construction anchor 和 Generated cross-kind history 绑定给紧邻 consumer;含 hole 的 multi-region profile 不产生这类 anchor。 这不覆盖本段 sweep/loft/revolve 的 output role,亦不把任一受限 output role 或特征专用 selector 升级为通用 CADFS query-family 支持。 对 sweep.path,另有一个 source-sketch-only lowering contractFeatureScript 1511 的 exact qUnion([qConstructionFilter(qBodyType(qCreatedBy(sketch, EDGE), WIRE), NO)]) 仅在 source 还直接 import onshape/std/geometry.fs@1511.0、owner 是 source sketch、恰有一个 non-construction linebspline entity 时解为路径,不能作为 runtime qBodyType selector。两点 skFitSpline 只有 source 明确给出 start/end derivative 时才会保留为 B-spline 并由 OCC 执行;没有两个导数时拒绝,绝不改成 chord。00896761 F2F1/E2 two-point B-spline)现在 converted/rebuilt 且无 runtime diagnosticartifact bundle output/qbodytype-direct-sketch-wire-20260910-v2 包含 STEP、GLB 和七视图;但 RP comparison 在 60s 预算超时,分类为 comparison_timeout,不是相似通过。fresh seven-sample RP matrix output/qbodytype-direct-sketch-wire-matrix-20260910-v1 confirms all direct-path cases rebuild: 00191739 strict, 00726304 RP-only approximate, 00227428/00287471/00500952/00816123 rejected, and 00896761 timed out during comparison. These classifications are evidence of executable paths, not a claim that rejected/timeout output is similar. 00786708 F2 因多个 non-construction path entity 继续 deferred。这不是 generic qBodyType、qConstructionFilter、sweep path、loft guide、arc/circle path 或 sweep complete 的完成声明。
  2. shell:单一 selected solid 的 direct-builder topology delta 与有限 output-role evidence 已覆盖。CADFS lowering 现额外接受一个受限的 removal selector:直接 blind 或 two-sided linear extrusion 的立即后继 shell,可从同一未修改 source profile 中唯一的、非 construction line 原始实体生成平面 SWEPT_FACE placeholder,再由 prefix snapshot 唯一绑定。该规则要求 owner、profile、start/end frame、blind extent 和单 body lifecycle 都可证明;revolve/sweep/loft、圆或其它非线性 source、changed profile、copy/ pattern/boolean/dress-up continuation 和多 target body 均继续诊断,不能回退到当前 body 或相近面。CADFS oppositeDirection 已显式 lower 为 inward:false,由既有 OCC MakeThickSolidByJoin 的有符号 offset 执行;这只复用已验证的 removal selector 和单一 selected solid contract,不会将 OCC feasibility failure 伪装成 inward shell 成功。仍需任意 稳定 removal face、多 body target、其它 join/offset 参数语义和更广的 kernel failure 诊断回归。作为进一步的窄例外,紧邻 shell 的 OFFSET_FACE removal query 可在其 disambiguationData 中只有一个 direct TDD CAP source,且 source 是前序 direct new_body blind-prism cap 时 lower 为 shell.offset_face 加 source-qualified output role。 没有 TDD、多个 source、draft/fused/COPY/pattern/boolean source、非邻接 owner 或无 active unique snapshot 都稳定诊断。shell.parts 现有一个独立且同样受限的 body-source lifecycle contract:只有 parts query 可唯一解析为仍存活的 direct SWEPT_BODY independent member 时,lowering 才写入 CDSL target_feature_idcapability preflight 和 runtime 都要求 该 ID 的 exact B-rep solid 仍在 active member graph 中,不能以 session.body、current aggregate 或几何近似替代。00107631 F3 中 F1 可证明地继续为 f_F2,因而是正例; 00542223 F7 在 fuse/pattern 后不再有独立 memberruntime 仅在 pattern 前后都是一个 可执行实体且 source 唯一时保留 direct source 的 sole-body alias,因此 parts-scoped shell 可以验证为当前实体,而不把 aggregate 伪装成一个独立 member。此路径尚未覆盖 multi-part / multi-body parts query、COPY、boolean 或 pattern instance 的通用 successor;这些情形必须 保留可执行前缀或既有运行路径,不能宣称 explicit target-body semantics。实现参考 SimpleCADAPIApache-2.0IsSame member identity 语义,未复用代码;其单 Solid boolean 假设未被采用,因为它与 CADFS 的独立 body 生命周期不兼容。当前验证为:受影响 lowering/integration/selector/runtime suite 218 passed3 条既有 workplane warning); output/core-17-shell-parts-20260909 为 3 strict、3 RP、9 rejected、1 rebuild failure、1 comparison timeout。output/shell-parts-matrix-20260909 的 21 实样本中,10 个 shell 写入 explicit target_feature_id,结果为 13 rebuilt-rejected、7 rebuild-failed、1 runtime-ineligible。 00107631 的 F3 在这项 target contract 下通过 converter/preflight。其普通、非 instance-locked CAP_FACE selector 只有在 active owner candidates 均不满足完整 geometry signature 时,才可在 当前 active member 中选择唯一的 threshold-qualified face;这不能替代 output_role relation 也不适用于 owner_match_required COPY provenance。因而 F3 的两张 removal faces 分别严格绑定 为 f_F2:face:1 和由 (f_F1, extrude.start) 证明的 f_F2:face:5。该 feature 随后由 OCC 报告 invalid thick-solid,而不是 selector-not-found;系统保留 F2 executable STEP prefix,不会 修改厚度、重选面或伪造 shell 成功。00542223 的完整 history 现可 rebuild,但仍因几何比较 rejected;这不是 RP 通过声明。output/core-17-fused-sole-body-pattern-provenance-20260909-r2 的新代码工件为 3 strict、3 RP、10 rejected、1 comparison timeout;五样本 output/fused-sole-body-pattern-provenance-20260909-r20054222300423838 均为 rebuilt/rejected00293508 保持 RP00253824 仍在无关 planar_imprint 路径失败并保留 F3 prefix。这些结果不能作为 complete shell 或 RP 相似通过的证据。 无 geometry 的普通 context selector 同时保留既有的唯一 active same-kind record 回退;它只在 source owner 没有 active record、context 内候选唯一时成立。owner_match_required 的 COPY/instance selector 没有此路径,零 owner candidates 仍是 selector_not_found。该边界的 原子正反测试与完整 CADFS 测试均通过(11 个 selector test、118 个 CADFS test)。刷新后的 output/core-17-selector-context-full-20260909 仍为 3 strict、3 RP、9 rejected、1 rebuild failure、1 comparison timeoutoutput/shell-parts-selector-context-fallback-matrix-20260909 的 21 条分类仍为 13 rebuilt-rejected、7 rebuild-failed、1 runtime-ineligible。这是 selector 绑定范围修正,不增加 shell 的已完成语义,也不改变 OCC invalid-shape 的保留前缀诊断。
  3. filletchamferhole:完整 selector、tangent propagation、参数变体、 feasibility 检查和 dress-up 后继。当前 fillet/chamfer lowering 对 direct blind/ mid-plane extrusion 的唯一源端点,以及 direct two-section loft 的每 section 一对唯一 源端点,可生成可绑定的 endpoint-bbox SWEPT_EDGE selector;前者额外证明为直线, 后者不声称曲线类型,因为内核可将其物化为 B-spline。独立 NEW 的 full solid revolve 也可在 profile 与 axis 都是同一原始草图的直接来源、original-set 唯一指向一 个非轴端点时,按 axis projection 生成 circle_center_mm / radius_mm 圆边签名; adapter 只从实际 OCC circle edge 记录该签名。一个 IMPRINT profile 仅在 materialized workplane 和完整 profile 与原草图完全相等时可使用同一来源证明;任何实际 region 选择 都不继承该 contract。该受限路径不覆盖 sweep、surface/partial/fused revolve、 multi-section loft、generated/trimmed/transformed profile 或 boolean/pattern 后继;任一 端点、axis 或 owner 不唯一时必须保留前缀并诊断。内核不能完成时不能伪造较小半径或不同 孔型。这里的 endpoint-bbox/revolve selector 不属于 capability matrix 的 direct-prism SWEPT_EDGE provenance contract,不能借其成功。只有该受限 blind-prism path 具备 query source semantics、lowering、adapter evidence、consumer 和真实语料回归;其它 generator/ consumer 仍须逐一补齐后,才可将整个 query family 标记为完成。 hole 现增加一个独立且更窄的 source-location/body-scope contractlowering 仅接受原始 sQuery/sketchEntityQuery(VERTEX, ...)skPointskCircle.centerskLineSegmentskArc.start/.end,并要求所有 location 都来自同一显式草图平面;派生 suffix、 CAP/SWEPT/COPY topology、query combinator 与几何邻近性均不会成为 location fallback。CADFS scope 必须是一个直接 SWEPT_BODY,并在 lowering-time body graph 中仍是唯一独立成员,才写入 hole_wizard.params.scope_feature_id。schema、semantic validation、capability preflight 和 executor 共同检查该成员仍是唯一 active solidexecutor 在每次切除后保留原 scope member key,因而后续 CADFS hole 可以继续引用同一 body,而无 scope 的既有 CDSL hole 仍保留 feature-owned lifecycle。 00406667 的 F1/F3/F5 是端到端证据:两个 skCircle.center hole 与同一 F1 revolve scope 完整执行, output/hole-direct-sketch-vertex-20260910-v2 分类为 rebuilt_approximateRP passedstrict failed)。 这不覆盖 B-spline/interior vertex、多个 host plane、多个 scope body、COPY/boolean/pattern successor、 non-direct query、全部 hole start/end styles 或完整孔型/螺纹语义。
  4. booleanBodiesmirrorcircularPattern:显式 source/target bodies、实例输出、 nested pattern、remove/intersect/keep-tools 和 transform 后继。当前 direct circular NEW COPY -> rigid transform,以及 direct mirror 的 NEW source -> instance 1 COPY -> transform 是受限增量;不代表 linear/nested pattern、镜像 aggregate source 或 fused instance 已有完整 output body lifecycle。mirror 的 mirrorPlane 另有一个受限 SWEPT_FACE contract:唯一 direct full solid revolve_add 的原始 source line 与 revolve axis 可由既有 _query_plane 证明为同一物理平面时,lowering 物化显式 reference_plane 后交给现有 pattern_mirror 执行。它不从 STEP 或 current body 推断 planepartial revolve、非 revolve、curve/derived face 或任一未解析 frame 都保留原有 mirror-plane diagnostic。00000385 的 F5 是正例(XY planeF5 executed); 00023074 保留拒绝边界。五样本 output/mirror-revolve-plane-matrix-20260909 为 2 RP、3 rejected,且只移除了 00000385 F5 的 plane deferF2 chamfer 与 F7 fillet 仍如实诊断。booleanBodies 现在也有一个独立、受限的 COPY body contractdirect SWEPT_BODY 和已存活的 mirror/circular COPY(SWEPT_BODY) 分别 lower 为 feature ID 和 {pattern_feature_id, source_feature_id, instance_index}runtime/body graph 仅从该 tuple 解析对应独立 body member,绝不以 producer aggregate 或 current body 代替。 direct SWEPT_BODY 若唯一解析到上述 fused sole-body successor,也会以 successor 而非 creator 作为 circular source00253824 的 F1 -> F3 cut -> F4 add -> F5 circular 的 source 因而是 f_F4,其 F6 targetless UNION 保留 f_F4 与 F5/F4/instance-1,2 的 明确 ownership。该完整样本目前在无关的 F4 planar_imprint runtime selection 失败时 保留 F3 executable STEP,不能作为 pattern/boolean RP 通过证据。合成 fused-body circular COPY -> boolean runtime 回归完整执行。多 body、boolean 后继、nested/linear pattern、被排除 instance 和 CAP/face topology ownership 仍未覆盖。 targetless FeatureScript UNION 只在 keepTools:false 且至少有两个 explicit members 时按 query 顺序确定一个 target00293508 的 direct F1/F3 UNION 以 F1 target、F3 tool 完整执行并 RP 通过。targetless subtract/intersect、keep-tools、无效或已经吸收的 instance、 以及 multi-source transform COPY 仍保持拒绝。00000385 的 F6 因而以 f_F1 为 target、 F5/F1/instance-1 为 tool 完整 lower 并执行,F2/F7 保持其原有 diagnostics。四样本 output/boolean-pattern-copy-provenance-matrix-20260909 为 3 rejected、 1 runtime-ineligible;其中其它 sweep、keep-tools/subtract、shell/hole 和 selector 缺口均 未被重分类。新的 output/core-17-boolean-pattern-copy-provenance-20260909 仍为 3 strict、 3 RP、9 rejected、1 rebuild failure、1 comparison timeout。direct circular ADD 现将每个 transformed COPY 的面、边、顶点沿 exact OCC transform/fuse history 传入 final active snapshot 只有一个 source 和一个 final result 的 relation 才传递 f_pattern.cN.f_source owner split/merge/no-history 仍不声明 owner。00542223 的 F7 removal faces 和 00423838COPY(CAP_FACE) 因而都在 active snapshot 中绑定为真实 instance owner;后二者的最终 STEP 仍分别 rejected,不能将 selector 可执行性描述为几何相似通过。direct-new wedge 的原子回归同时 验证三个 copy owner 都出现在最终 fused body。nested/linear pattern、boolean 后继、被排除 instance 和没有 exact history 的 CAP/face ownership 仍未覆盖。 CADFS 的静态数值表达式还允许无歧义的 round(N),但仅当 N 已是有限整数,因而该 表达式可被证明为恒等;00003011round(8) pattern 由此完整 lower。非整数 round、变量和其它函数不会在 converter 中猜测 FeatureScript 的数值语义。这只是 lowering 前置条件,不能作为 COPY owner、pattern instance lifecycle 或 RP 相似通过的 证据。
  5. cPlane:所有历史出现的 plane constructor、曲线/曲面 attachment、方向手性和 退化输入。CPlaneType.OFFSET 必须将 CADFS oppositeDirection 编译为 source plane normal 上的负 signed offset,而不是忽略该 flag 或翻转 plane frame;后者会镜像同一草图的 local coordinates。该 shared lowering contract 已覆盖 272 条实际带该 flag 的 history。 00777619 将 Right plane 的 76.2 mm offset 修正为 x=-76.2 mm;因其 profile 只有部分 射线到达 selected SWEPT_BODYup_to_body 仍以非均匀 target 诊断保留 F2 prefix,不能 被这一 plane 修复伪装成成功。Right/Front/Top 的三个真实 matrix 例与 24 条分层 shard output/cplane-offset-opposite-shard-20260909 分别验证 frame 和独立分类:3 strict、1 RP、 13 rejected、7 rebuild failure。共享 core-17 output/core-17-cplane-offset-opposite-20260909 分类保持 3 strict、3 RP、9 rejected、1 rebuild failure、1 comparison timeout。它仍只是 cPlane 的一项通用 frame contract,不覆盖 曲面/曲线 attachment、退化输入或完整 derived-topology plane semantics。 LINE_ANGLE 现额外覆盖单一 direct skCircle edgeFeatureScript 1511 的 cplane.fs::lineAnglePlane 将该选择传入 evAxis,而同版本 query.fs 将 circle 列为 ALLOWS_AXIS。lowering 因此只用 circle centre 与 source sketch plane normal 作为 axis,并按同版本 vector.fs::perpendicularVector 的确定性阈值分支适配 zero-angle direction,再按 angleoppositeDirection 的 signed angle 旋转;不会以 circle centre vertex、 CAP_EDGE/SWEPT_*/COPY 等派生 topology 或 current body 替代这个 source contract。 该语义依据来自 MIT 许可的 Onshape standard-library mirror 的 1511.0 commit eaef87b22d3b15e9377d8b1c6cb701f8111b6a0c;适配该 MIT 算法但未引入依赖。00030209 的 F1/F2/F4/F5 是现有的四个真实 direct-circle evidence output/cplane-line-angle-direct-circle-20260910 不再含 cPlane diagnostic,并保留 四个 executable reference_plane。该 source 后续因 arc sweep path 未实现而没有 solid featurepipeline 正确分类为 runtime_ineligible,没有将工作平面 lowering 误报为 STEP/RP 成功。多实体 reference、direct arc/cylinder/cone 等其他 evAxis 输入和一般 derived topology 仍未覆盖。focused shared selector/runtime suite 为 263 passed, 1 skipped142.98 s;仅既有 build123d deprecation 与 workplane re-orthogonalization warnings)。强制 RP Core-17 refresh output/core-17-line-angle-direct-circle-20260910 为 1 comparison_timeout、10 rebuild_failed、1 rebuilt_approximate、5 rebuilt_rejected,与既有核心集分类一致; 它只证明共享改动没有改写这些既有结果,不构成 generic LINE_ANGLE 或 STEP/RP success。 两实体 LINE_ANGLE 现额外覆盖 source-only contractdirect skLineSegment/skCircle 提供 axis,默认 datum 或已 lower reference plane、direct skPoint 或 direct line endpoint 提供第二 reference。实现严格镜像 1511 cplane.fs::lineAnglePlane:第一个 selection 不是 axis 而第二个是 axis 时交换;两个非平行 axis 用第二 direction,平行 axis 用两 origin 之差,plane 用 cross(axis, plane.normal)point 用 point - axis.origin,再以 signed angle 旋转 cross(axis, secondInPlaneDirection)。共线/零长度选择明确 defer。此 direct branch 只接受未组合的 sQuery/sketchEntityQuery,不通过 _query_line、current body 或 geometry hint 推导 CAP/SWEPT/COPY/trim/derived query 它继续引用 MIT-licensed Onshape standard-library mirror commit eaef87b22d3b15e9377d8b1c6cb701f8111b6a0c,未引入依赖或复制外部代码。lowering regression 覆盖 datum-first swap、axis-first、nonparallel/parallel-offset axes、direct point、reversed point/axis、oppositeDirection、degenerate reject,并断言 direct helper 不接受 CAP_EDGE。 真实 matrix output/cplane-line-angle-two-entity-matrix-20260910 的六条直接 axis/default-plane history000678470018513800217351002980260058615600831400)均无 cPlane diagnostic 且保留 rebuild STEP00586156 strict/RP pass00298026 RP pass/strict diagnostic 前三条为独立 rebuilt_rejected00831400 在后续 F5 BRep_API: command not done 保留 prefix。 这只证明受限 frame lowering,不能将后续 geometry 分类归为 LINE_ANGLE 成功;direct arc、 non-source vertex、任意 derived topology、一般 face/curve/mate-connector axis 和完整 cPlane coverage 仍未完成。既有圆柱母线 compatibility path 也已收紧为单一 direct makeQuery CAP_EDGESWEPT_FACE 的 source skCircle,要求 producer start/end frame 与另一显式 datum/ lowered reference planeqAdjacent/qUnion composition、CAP/SWEPT line、trim/COPY/boolean source 均稳定 defer,不能因 AST 内出现 source token 获得 _query_line fallback。1511 query.fs/evaluate.fs 确实 将 arc 列为 ALLOWS_AXIS/evAxis 输入,但当前 9,347 条 corpus 未发现 direct skArcLINE_ANGLE 实际选择的 history;这只是待验证语义,不能提前宣称 direct-arc coverage。 CURVE_POINT 现额外接受同一 direct source curve 的精确切线:skArc.start/end 由解析 圆心、半径和方向生成切线,skFitSpline.start/end 只在 FeatureScript 导出了相应 endpoint derivative 时执行。它还受限支持 source token E<n>.<index>.internal:必须是同一 direct、 non-periodic skFitSpline,并有完整 interpolation points、centripetal parameters 与两端 derivatives。lowerer 复用 runtime 的 Edge.make_spline(..., scale=False) 构造,再在显式 parameter[index] 以 OCC BRepAdaptor_Curve.D1 读取导数,同时核验返回点仍等于 source interpolation point;绝不以 adjacent interpolation-point chord 代替曲线切线。00827798 F1 与 00845891 F3 是两个真实 B-spline endpoint 证据,00456498 F1 (E0.2.internal) 与 00812557 F2 (E0.3.internal) 是 source interpolation-token 证据;00057273 的受控 skArc endpoint 变体覆盖圆弧方向。derived suffix、越界 index、无完整 interpolation data、无导数/periodic spline、curve/surface topology source 和退化 tangent 继续明确拒绝。 两条新增样本 pipeline output/cplane-curve-point-bspline-interpolation-20260910 均已无 cPlane diagnostic00456498 在后续 sweep OCC solid failure 停止,00812557 在后续 sweep OCC valid-solid failure 停止,保留诊断和可用工件,不误报为整体成功。shared selector/runtime suite 为 277 passed, 1 skipped(既有 workplane re-orthogonalization warning)。RP Core-17 refresh output/core-17-cplane-curve-point-bspline-interpolation-20260910 为 1 comparison_timeout、10 rebuild_failed、1 rebuilt_approximate、5 rebuilt_rejected,与 prior semantic-selector baseline 分类一致;它不构成完整 cPlane 或 generic curve-attachment completion。

P3:尚未支持的 FeatureScript 操作

按全量诊断计数建立 operation registry,逐项为 draftthickensplitmoveFacedeleteFacereplaceFace、完整 transformderiveimportbend_add 建立 schema、lowering、runtime、adapter 和回归。外部资产或生成器缺失时, 必须将 capability 标为不可执行并提供部署诊断,不能在 import 时影响无关模型。

P4:比较、来源和性能

  1. 保留 strict 与 RP 两层几何比较,并为被精确量快速拒绝的边缘模型提供可控的 离线 surface 诊断预算;comparison timeout 是基础设施问题,不能混入几何失败。
  2. 输出 source/rebuild 多视图、局部差异、body 体积/面积和最近 feature 的关联证据。 截图只用于人工复核,不能替代多视角 B-rep 比较。
  3. 识别 source STEP 非闭合、FeatureScript literal 与 export 精度不一致、缺失资产等 source exception。它们必须保留原始导入/检查证据,不能修饰 CDSL 以伪造通过。
  4. 使用 capability shard、缓存中间工件和可恢复 worker 隔离完成全量回归;任何 failure 都必须保留最后一个重新绑定 selector 并以 strict 模式实际执行成功的前缀 STEP、GLB 和诊断。不得把未绑定候选或当前 body fallback 伪装成可执行工件。

每项能力的完成定义

一项能力仅在满足以下条件时可标记完成:

  1. 有版本化的 CDSL 表达,且 schema/semantic validation 拒绝不完整或歧义输入。对 FeatureScript queryselector_intent.version、source query family、精确 language version 和直接 standard-library import path/version 必须有明确契约;缺版本和未注册 family/language/library revision 必须诊断,不能以 legacy 顶层版本、数字前缀、相同路径或默认版本补齐。
  2. lowering 仅根据 FeatureScript source 产生该表达,并保留 source feature、selector 和 body provenance。仅有 runtime CDSL contract 而未由 lowering 产生的能力必须标为 部分完成。
  3. runtime/adapter 按通用算法执行,记录结果 body 和 topology delta,不依赖样本信息。派生 selector 必须具有 source/result kind、输入/输出 snapshot、body member、history status 及 kernel relation evidenceresolver 必须据此证明 derivation policy、operation-wide cardinality 和 active member,并输出实际 resolution_mode 与 evidence。
  4. 能力矩阵记录对应 FeatureScript API/query 的源版本文档或标准库依据、采用的语义和 未覆盖边界;原子语义矩阵包含正向、边界和拒绝测试,且至少多个真实语料样本覆盖 不同几何和生命周期组合。只有 parser/AST 或 resolver unit test 的 query family 只能标为 resolver-level/部分完成;必须同时具备 lowering、schema、adapter、consumer 和多个真实样本 的端到端证据后才可标为 complete。
  5. 受影响核心集、扩展集和全量 shard 有可复现结果,工程相似通过率、失败数和剩余 exception 均更新到本地台账。
  6. 代码审查确认没有 sample-specific 分支、gold STEP 参数回填、隐式默认尺寸或为 通过比较而降低 RP 阈值的行为。

执行节奏

每次改动依次执行:受影响原子测试 -> 受影响真实样本 -> 核心 17 -> 扩展能力矩阵 -> 对应全量 shard。完成一个 capability family 后,更新 ENGINE_CAPABILITY_GAPS_PROGRESS.local.md,记录新增的通用 contract、剩余边界、 样本列表、比较证据和下一优先级;该本地台账不提交 Git。

全量目标完成时,报告必须按“工程相似”“严格一致”“source exception”“未实现能力” 和“基础设施失败”分别给出分母、样本 ID、工件和原因。任何仍可执行的模型都必须 保留输出,不能因未满足最终几何目标而丢弃。

Selector 迁移台账(2026-09-09

已完成第一条迁移边界,而非完整 query-family 实现:CDSL schema 允许保留未知的 大写 FeatureScript query familyCADFS lowering 对全部 topology fallback 写入 source AST、版本、语义 family 和 feature_script_query evidence。未在版本化 capability matrix 登记的 query 使用非空 derivation policy 加 multiplicity: none,因此 resolver 在 stable ID、 geometry、owner 或 current-body fallback 前稳定返回 selector_query_unsupported。嵌套的 extent、COPY 和 INTERSECT selector 同样递归写入 source metadataCOPY/INTERSECT 保留外层 query family,不错误继承其内部 CAP/SWEPT component。显式 datum plane 单独为 GEOMETRIC / explicit_datum,不构成派生 topology 的逃逸通道。

此前 core-17 candidate inventory 中有 14 个 runtime-snapshot edge、7 个 runtime-snapshot face、7 个 SolidWorks face 和 2 个 plane legacy selector,只有少数 direct-prism provenance selector。此次不把这些历史 geometry hint 宣称为 lineage00005267FeatureScript 1793F4 的四个 loft SWEPT_EDGE 已从 strict geometry success 改为 F3 executable checkpoint 加 selector_query_unsupported。同类未实现的 CAP/SWEPT/OFFSET/COPY/INTERSECT paths 必须保留 候选、bound CDSL、最后 STEP/GLB(可生成时)和诊断,直到具备 source API evidence、lowering、 adapter history、resolver policy 和 corpus regression 的完整 contract。受限 CAP_EDGE@1511SWEPT_FACE@1511SWEPT_EDGE@1511 direct-prism contracts 不受影响; 它们仍只在 capability matrix 的已证明边界内执行。

2026-09-10 的 source-version migration 补齐了 import-level evidenceparser 逐条保留直接 onshape/std/* import 的 {path, version}CDSL 顶层 source_featurescript 和嵌套 selector source_query 同时保留 primary import 与完整 import list。resolver 对 provenance selector 先要求 language version、direct standard_librarystandard_library_version,再按 capability matrix 的精确 三元组匹配。缺 import version 返回 selector_query_version_unknown;未登记 library revision 返回 selector_query_unsupported,且不会进入 stable-ID、geometry、owner 或 current-body fallback。全量 9,347 条 source scan 记录到 geometry.fs 与 FeatureScript 版本一一成对变化;只有现有 1511 / geometry.fs@1511.0 direct contracts 保持 executable。该迁移只完善来源证据门槛,不新增 COPYSPLIT 或其他 query family 的执行能力。验证包括 parser/lowering/provenance suite 140 passed、runtime foundation 130 passed, 1 skipped、以及 fresh 00212904 RP pipeline (完整 F1--F5 replayrebuilt_rejected)和 core-17-selector-standard-library-revision-20260910-v1 1 strict、1 approximate、6 rejected、8 rebuild-failed、1 timeout);所有结果保留各自 STEP/checkpoint。 同步的 integration/binder regression 也确认现有 immediate CAP shell contract 的真实前缀:00789939 执行 F2/F5 后在 F6 停止并保留两-solid F5 checkpoint0009043600107631 的 outward F1/F2 prefix 都可 rebuildcombined selector/lowering/binding/integration suite 为 168 passed

intersection_of vertex 是由 ExecutionSession 从已解析的 face component 直接计算的特殊 consumer,因而不能绕开 outer selector 的 provenance gate。runtime 现将 nested/legacy version 一致性、FeatureScript source version、capability allow-list 和 derivation policy 抽为 TopologyRegistry.resolve 与该 session path 共用的 contractmultiplicity:none、未知 version 或 未登记 capability 的 outer INTERSECT 在任何 component resolve 或 OCC 求交前稳定拒绝。没有 selector_intent 的既有显式几何 intersection selector 仍维持其 legacy contract。原子回归覆盖这三种 拒绝以及 legacy 正向路径(backend.tests.test_selector_provenance_contract: 21 passed);这只关闭 provenance bypass,不新增 general INTERSECT、vertex provenance 或 source-qualified section-edge 覆盖。 当前代码的 shared selector/runtime suite 为 264 passed, 1 skipped, 43 subtests142.57 s;仅既有 build123d deprecation 与 workplane re-orthogonalization warnings)。真实 00423838output/session-intersection-outer-gate-20260910 强制 single-sample pipeline 验证:F7 outer deferred INTERSECT 在 incremental replay 中报告 selector_query_unsupported,并导出 F6 的三个 feature executable rebuild.step checkpoint;结果是 rebuild_failed,不是该 query family 的 RP 成功。