- 新增 selector_candidate_demo,移除 provenance intent 后枚举候选 selector - 对候选分支执行有界重建与严格 STEP 比较 - 仅在候选遍历完整且唯一 strict 通过时生成 selector 映射记录 - 增加 selector 候选搜索、预算限制和记录生成的测试 - 保持生产 selector resolver 不受 Demo 逻辑影响 - 更新 CADFS 能力台账,记录 IMPRINT 派生 profile 的 lineage selector 缺口
75 KiB
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、实体数相等。strict 的
0.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 语义必须单独覆盖,不能合并为笼统的 extrude
或 loft 支持:
| 语义 | 历史缺口数 |
|---|---|
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 操作包括 draft、
thicken、split、moveFace、deleteFace、replaceFace、完整 transform、
derive、import 和 bend_add。重新扫描时必须从诊断原文生成完整操作清单;
未列出的新操作不能被静默归入已有能力。
覆盖模型
每一项能力的回归选择必须覆盖下面五个维度,而不是只覆盖操作名称:
- 操作和参数:operation mode、实体/曲面模式、extent、方向、offset、draft、 角度、数量、终止条件和 result mode。
- 几何输入:直线、圆弧、圆、椭圆、B-spline、开口/闭合 wire、多 region、孔洞、 退化和自交拒绝路径。
- 拓扑来源:原草图、
CAP_FACE、CAP_EDGE、SWEPT_FACE、SWEPT_EDGE、OFFSET_FACE、INTERSECT、MID_CAP_EDGE、COPY和 boolean 后继。 - body 生命周期:
NEW、ADD、REMOVE、INTERSECT、keep tools、copy、 transform、delete、mirror、linear/circular/nested pattern、多实体输出。 - 比较状态: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 的 Modified、Generated、IsDeleted 和
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:通用几何状态和拓扑基础
- 建立显式 body graph:feature 输出 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_bodiescontract;它不能 代替 fused body 或 pattern instance 的完整 provenance,后两者在唯一性未证明时 必须诊断而不能退化为 current body。capability preflight 已镜像 runtime 的显式 body-member 生命周期:fused/dress-up 输出、boolean 消耗、delete 和 pattern replay 会撤销旧 member 的可选资格;只有new_body、keep_tools、明确 transform 输出,或 经 sole-body lineage 已证明的 current successor,才能被后续 body query 选中。受限的pattern_circular现在可对所有 source 都是明确可选 member 的NEWadditive body,或 一个 directSWEPT_BODY经该 sole-body successor 保留的 current member,以pattern_feature_id/source_feature_id/instance_index记录 direct COPY member;后续transform_bodies可精确引用该 COPY 而无需写入 runtime ID。CADFS 的 directSWEPT_BODYtransform 现可将TRANSLATION_3D、rotation,以及单一线性 sketch/CAP_EDGE或有 physical cap frame 的 directCAP_FACEdirection 的非负TRANSLATION_DISTANCElower 为同一刚体 contract。系统 datum plane、已显式 lower 的 reference plane,以及能由 direct planar source 唯一构成 frame 的SWEPT_FACE也可提供该 direction;圆柱/曲面SWEPT_FACE、SWEPT_EDGE、OFFSET/COPY face 和没有可证明 frame 的 plane query 继续诊断而不猜测。SCALE_UNIFORMLY在 factor 有限且为 正数、scale point 是 Origin、direct sketch vertex(含 circle center)或 directCAP_VERTEX时 lower 为显式uniform_scalebody transform,不烘焙回草图。TRANSLATION_ENTITY在 direct source 仍是可选独立 body 时接受一个线性 sketch/CAP_EDGE的端点差或两个 sketch/CAP_VERTEX的有序点差;move 的 bake path 另要求 source 是紧邻的NEWbody。对于 exact single-sourcemakeCopytransform, 后续COPY(instanceName=1)body/line/vertex 可递归验证其derivedFrom链并引用已生成 body member;对于前序 direct multi-sourcemakeCopy,CDSL 以transform_copy_refs(transform_feature_id, source_feature_id)表示被查询的唯一直接 source, runtime 分别物化各 source 的 transformed member,aggregate 只用于 STEP 导出且不伪造 topology owner/delta。schema、semantic validation、capability preflight 和 runtime 都要求 owner 是 preceding multi-sourcemake_copy:truetransform,且 source 是该 transform 的 直接选择项;single-source、source 外、fused、pattern 和无源限定的 aggregate reference 一律拒绝。无位移的 directTransformType.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 的受限 lineage,directSWEPT_BODY可从初始new_body经 ordinary fusing add、单 body fillet/chamfer/shell 与 exact non-copy transform 续接到当前 CDSL member;cut 保留所选 member,因而不虚构 一个 cut successor。直接 circular ADD 且 source 唯一等于该 current member 时保留这份 证明,并以该成员的实际 B-rep 物化每个 COPY instance;第二个new_body、make_copytransform、boolean、其它 pattern、delete 或任何未列出的 body atomic 都清空它。它绝不以 aggregate/current body 兜底, 也不为 linear/nested pattern、被排除 instance 或无明确 source member 建立 ownership。 唯一新增的 mirror 例外是:直接pattern_mirror的每个 source 都仍为可选的result_mode: new_bodymember 时,runtime 以实际 B-rep mirror 物化其唯一的instance_index: 1COPY member;CDSL semantic validation、capability preflight 与 runtime 都要求这一完整条件。普通 additive/cut/dress-up 后继、已吸收 source、linear 或 nested mirror 仍走 feature replay,不能借该例外暴露 aggregate member。 本轮 327 条 transform shard 中00120430、00496729、00749755因该 provenance rule 完整 lower;只有 source 在 mirror 前未被后续 mutation 吸收的00749755可执行到 RPrebuilt_approximate,另两条保留runtime_ineligible和已有前缀/诊断,绝不以 converter 完整状态冒充 runtime 或相似通过。新增的 multi-source COPY path 令00699847的 F3 两源 copy 和 F4 的 source-qualified F3/F1、F3/F2 queries 完整 lower,强制 pipeline 为rebuilt_strict;00950564证明 F1 的 directSWEPT_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 delta0,体积/面积相对误差0.00011913/0.00016132,实体数1)。 strict 仍因 max/p99 surface0.01 mm与体积/面积阈值失败而保留为诊断。单元测试还覆盖 copy、boolean、pattern 与 delete 均清空 lineage;没有能唯一表示的 nested source-member chain 仍属未完成 contract,继续保留明确诊断。SWEPT_BODY@1511另有一条不能与上述 successor lineage 混同的即时终止 contract:只有 singletonqUnion([makeQuery(..., SWEPT_BODY, EntityType.BODY)])引用紧邻前序独立、无 draft、new_bodyblind 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。00694309F3 是正向 body-member evidence;该样本的 F4 strict/RP pass 由下述 独立CAP_EDGEcontinuation contract 证明,而非放宽 body-member 规则。later successor、ADD、cut、 revolve、sweep、COPY、boolean/pattern/delete、多 body/multiple-query 和其它 FeatureScript version 都不属于这个 contract。freshoutput/core-17-swept-body-up-to-body-member-20260910的tier=allpipeline/RP run 完成 17/17,分类为 1comparison_timeout、10rebuild_failed、 1rebuilt_approximate、5rebuilt_rejected;它只证明本窄 selector contract 未改变核心集 的既有分类,不能标记 generalSWEPT_BODY或up_to_body完成。 - 在 adapter 层记录每次建模操作的
preserved、modified、generated、deletedtopology delta 及 CAP/SWEPT/boolean 等输出角色;runtime 以该记录完成后继 selector 绑定,不以“当前形状中最相近元素”猜测。当前增量已覆盖 OCC 刚体transform_bodies(含 OCPgp_Trsf.SetScale的 uniform scale)、单实体boolean_bodies的 union/subtract/intersect 以及 direct single-body fillet/chamfer,以及单一 selected solid 的shell:adapter 返回 opaque kernel relation,registry 只在 source/result snapshot 的 exact relation 唯一时传递 owner 和 successor,并在 rebuild 输出topology_deltas。shell 沿既有BRepOffsetAPI_MakeThickSolidByJoinbuilder 的Modified、Generated、IsDeleted历史记录 delta;未返回IsDeleted的内核输入不会被虚构为 deleted。该受限 shell path 还记录可由 source subshape 和 kernel event 证明的shell.body_face、shell.offset_face、shell.closing_descendant和shell.wallevidence role。当前shell.offset_face只有一个受限 lowering consumer:紧邻 shell 后续的 shell face query, 且 FeatureScript 以TDD/trueDependencyDisambiguation明确指向前序 directnew_bodyblind-prism 的extrude.start或extrude.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_bodyfinal member 上,会记录BRepOffsetAPI_MakePipeShell.FirstShape/LastShape的sweep.start/sweep.endevidence;受限的 initial closed-wire solid loft 会记录BRepOffsetAPI_ThruSections.FirstShape/LastShape的loft.start/loft.endevidence。 后续 fuse 会重建 topology,因此不复用已经失效的 sweep/loft builder history。当前 CDSLselectorRef.output_role现公开 direct-prismextrude.start/extrude.end与四个 sweep/loft direct-builder cap role;registry 只会在 relation 的唯一 result snapshot 上写入TopologyRecord.output_roles,resolver 要求 owner、active body snapshot 与唯一 role 命中,并拒绝 stable ID、geometry、snapshot ID 混用。extrude_add_blind/extrude_cut_blind的params.end_condition.reference与shell的feature.selectors各有一个有界 direct-cap contract:仅紧邻前序、result_mode: new_body、blind extrusion 的extrude.start/extrude.end可作为up_to_surfacereference 或 shell removal face,且必须由该 producer 的 完整/已证明 cap role 解析;schema、semantic preflight 与 runtime 同时拒绝非紧邻 producer、 其它 role、stable ID、binding ID 和 geometry fallback。CADFS lowering 现对独立new_bodyblind prism 的 CAP_FACE,以及满足全部条件的LocOpe_DPrismdrafted extrusion 生成该 contract:单一闭合外环、无内环、单向 blind extent,且拉伸方向与实际端盖法向同向。extrude_from_face直接拉伸该 B-rep 面,不能把 CAP_FACE 还原为原始草图。registry 只会让唯一 OCCmodified/preservedrelation 跨 boolean 删除成员后的 Compound member-index 改变继续传递 owner/output role;几何回退仍按 member index 隔离,绝不以相似性跨成员继承。该路径不覆盖 drafted 内环、fused/multi-region/ multi-extent/loft/sweep/pattern 或一般 CAP_FACE,故CAP_FACE/SWEPT_FACElowering 仍为 部分完成。00016195的 F1 -> fillet -> F3 和00835610的 drafted F3 -> F4 subtract -> F5 都是正例;后者为converted_complete/rebuilt_approximate,9 个 feature、3 个实体, RP 通过(bbox delta0.0008 mm、体积相对误差0.00020848、面积相对误差0.00021742)。00268467的 drafted 内环则明确保留 capability diagnostic 和可执行 前缀,不伪造可绑定 selector。TopologyDeltaRelation还必须显式记录source_kind与result_kind,禁止把 face、edge 或其它 subshape 的 relation 混作同一种后继。每个TopologyDelta必须随操作输出 input/ output snapshot、body member 和 history 状态证据;当前 contract 的状态为proven、partial、unknown或rejected,并可带原因。只有完整、可追溯的 kernel relation 才能 进入 lineage;IsDeleted不等于存在 replacement,缺失的IsDeleted也不等于 deleted。 boolean 的 section edge 可以作为 builder 生成事实记录,但没有 source-face 的精确 relation 时不得被提升为 source-qualified lineage。当前INTERSECT@1511仅有一个受限 consumer: explicitboolean_bodies的单一 target/tool subtract/intersect 中,两个 direct-prismCAP_FACE/SWEPT_FACEinput 必须分别由 OCCGenerated(face)返回同一SectionEdges()edge,且三个 handle 都以IsSame绑定 input/final snapshot;resolver 再要求唯一 relation、intersection/onepolicy 和 active result member。另有一条同样受限的 primaryREMOVE路径: immediateextrude_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 的未核实disambiguationDatainputs 均不执行。 这不构成通用 INTERSECT coverage,真实语料 RP 矩阵仍待补齐。这些记录是通用 topology 事实,不是由 stable ID 或最终几何相似性反推的替代品。 - 建立统一 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 证明。none、source_qualified、one与all_fragments都必须有明确、可审计的语义:merge 即使 最终只有一个 result 仍按 N:1 检查,all_fragments遇到任一分支缺失或 partial 必须拒绝。 resolver 失败不得自动改走 legacy 成功路径;只有已文档化的 legacy explicit-geometry selector 可保留 geometry fallback,provenance/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将 FeatureScript1511的受限CAP_FACE、OFFSET_FACE以及 direct-prismSWEPT_FACE/SWEPT_EDGEcontract 标为 端到端可执行。后两者只适用于紧邻独立、无 draft、new_bodyblind prism 的 consumer: adapter 必须保留 direct source-profile edge/vertex construction handle,并分别由BRepPrimAPI_MakePrism.Generated(edge)的 edge -> side-face 或Generated(vertex)的 vertex -> vertical-edge relation 完整证明;resolver 再检查boundarypolicy、source qualification 和 active member。00111611F3、00974931F2、00594348F2 和00000715F3 是这些受限路径的真实语料证据。SWEPT_EDGE的 direct profile contract 现还接受一个 analytic contour region 的 hole wires:adapter 将外环和全部内环一次 交给BRepBuilderAPI_MakeFace,只在 source edge/vertex 经 finished-faceIsSame验证后登记 anchor;00007264F2 的四个 selector 已kernel_lineageresolved(最终 comparison rejected),00039669F2 strict/RP passing,00151159F2 RP passing。含 hole 的多 region profile 必须继续走 既有Face.make_holesgeometry 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_surfacenested reference 或 immediate shell removal face 的 cap role;00212904F2 与00789939F2 分别以extrude.start和extrude.end的operation_role执行。freshoutput/cap-face-immediate-shell-00212904-20260910-v1证明前者执行到 F5,但 strict/RP 均拒绝;freshoutput/cap-face-immediate-shell-00789939-20260910-v1证明 F2 及后续同一 direct-cap shell F5 都执行,F6 仍为selector_query_unsupported并保留 F5 STEP checkpoint。freshoutput/core-17-cap-face-immediate-shell-20260910-v1的tier=all/ pipeline / RP run 为 17/17 completed、1rebuilt_strict、1rebuilt_approximate、6rebuilt_rejected、8rebuild_failed、1comparison_timeout;其中00212904的分类由 selector failure 变为 executable-but-rejected,不能将此记为几何相似通过。它们不允许在 producer 后续 mutation、 non-immediate owner、stable ID、binding ID 或 geometry fallback 中继续解析; direct-prismSWEPT_FACE也可作为单侧up_to_surfacereference,但它不是 output role:lowering 只保留一个 direct source-profile edge anchor,resolver 必须逐段验证boundary以及后续continuation的 complete/proven kernel relation、operation-wide cardinality 和 active body。00925274的 F3 以extrude.start的operation_role解析;F6、F9、F12 与 F15 都以 F1 E0 side-wallkernel_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-qualifiedINTERSECT的工具可选范围。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 猜测。freshoutput/core-17-swept-face-final-20260910的tier=all/ pipeline / RP run 完成 17/17:2rebuilt_strict(00694309、00925274)、1rebuilt_approximate、6rebuilt_rejected、7rebuild_failed、1comparison_timeout;00925274为 strict/RP pass,不能 推广为一般到面终止或 general SWEPT_FACE completion。受控完整0040shard 的 freshoutput/shard-0040-swept-face-final-20260910-v2也完成 71/71:7 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。 - 完成草图 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,不覆盖由INTERSECT、CAP/SWEPT等拓扑查询 派生的 profile,也不把后续 dress-up 或内核失败误记为 spline 成功。
P1:派生 profile 与拉伸终止
- 用 P0 topology registry 通用重放
CAP_FACE、CAP_EDGE、SWEPT_FACE、SWEPT_EDGE、OFFSET_FACE、INTERSECT、MID_CAP_EDGE,将其物化为可追溯的 profile/wire,而不是复用原草图或写入样本特例。现有 direct-prism,以及单闭合无内环、 法向同向的LocOpe_DPrismdraft CAP_FACE,是受限例外:它们以 builder-proven output role 直接消费物理 B-rep 面,未试图物化或重建 profile。OFFSET_FACE的端到端 status 同样只限于 capability matrix 所列、带 TDD source cap 的 direct shell output role;它不代表 任意 offset query 已可重放。SWEPT_FACE与SWEPT_EDGE现在各有一条 1511 direct-prism 纵向 contract:source profile edge 经Generated(edge)到 side face,以及由完整 incident source-edge set 唯一命名的 source vertex 经Generated(vertex)到 vertical edge。lowering 只在 producer 紧邻、独立、无 draft、new_bodyblind prism 且原 profile 未变时产生语义 selector; adapter 只将 direct wire/face construction 中 exactIsSameanchor 注册为 transient source fact, resolver 则只沿 complete/proven 跨 kind relation 解析。单一 analytic region 的 direct hole wires 也可在 finished face identity 未改变时提供这份 evidence:00007264的四个 vertical-edge selector 皆已解析,00039669strict/RP passing,00151159RP passing;含 hole 的 multi-region profile 继续使用旧 geometry path 并明确不产生 anchor。00111611F3 的圆 edge -> side face、00974931F2 的 direct annulus outer edge -> side face,与00000715F3 的两个 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 contract,SWEPT_*family 和 P1 的通用派生 profile 目标仍未完成,不能由 AST、unit relation 或上述两个样本提前完成。CAP_EDGE现在也有一条独立的 1511 direct-prism contract,但它不物化 profile/wire:source sketch entity 必须仍对应一个 exact direct-profile edge,query 的isStart被保存为lineage_role: extrude.start|extrude.end,adapter 以BRepPrimAPI_MakePrism.FirstShape(source_edge)/LastShape(source_edge)取得 cap edge,并以 final snapshot 的IsSame证明该 handle 未失效。resolver 只沿这个 source edge 与 role-qualifiedboundaryrelation 解析;stable ID、几何、owner propagation 和 current-body 均不是回退路径。00021014F2 的九个 CAP_EDGE selector 覆盖两个 role,完整 history strict/RP 通过。该例外只接受 紧邻、独立、无 draft 的new_bodyblind prism 与未变 direct profile。一个 direct all-circle annulus(一个外圆和一个包含的内圆)也可保留 outer/inner 的 exact source anchor:00479470、00501170、00526649在 F2 的 CAP_EDGE consumer 后 RP 通过,00621329strict/RP 通过;00566233的两个 F2 selector 已由 kernel lineage 解析,随后才因 OCC chamfer feasibility 失败,00614954/00678961也都在 F2 解析后才被后续未支持 query 截断。对于线段外环加圆孔,solver 仅给同一 source circle 拆出的全部四条 arc 加logical_circle_source_entity_id;adapter 再要求这个 ID 在原 profile 中唯一指向一个未拆分圆、重建 native wire,并以 finished-faceIsSame重新证明。 任一 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-prismCAP_EDGE的 fillet/chamfer consumer,boundary-only policy 另可在运行时存在 完整 kernel continuation 时扩展为boundary + continuation:每一跳都必须为 exactpreserved/modifiedrelation、coverage: complete、status: proven,且 operation-wide cardinality 保持 1:1;任何 partial、split/merge、inactive result 或无 history 都稳定拒绝。00694309证明这一条:F4 的 F1extrude.startcap edge 经 F3 primary-cutpreservedcontinuation 解析为body:f_F3:edge:1,完整 pipelineoutput/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。freshoutput/core-17-cap-edge-continuation-20260910-v1的tier=all/ pipeline / RP run 完成 17/17: 1rebuilt_strict(00694309)、1rebuilt_approximate、5rebuilt_rejected、9rebuild_failed、1comparison_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_EDGEfamily 与 P1 的通用派生 profile 目标仍未完成。OFFSET_FACE现有一个独立的受限 profile 物化路径:只有 inward shell 直接消费一个new_bodyblind additive prism,shell 恰移除该 prism 的一个 CAP,且 OFFSET query 恰指向 其未修改、单闭合凸线性 profile 中的一条非 construction line,lowering 才根据 source profile 的相邻边 offset 交点、shell thickness、实际 start/end cap frame 构造四边内壁。 它不复用整张 source sketch,也不从 STEP 反推 trim;draft、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_FACEhistory 的受控 shardoutput/offset-face-profile-shard-20260909-r1为 1 strict、17 rejected、7 rebuild failure、 1 deferred-no-executable-feature,仍有 17 条明确的extrude_profile_topology:offset_facegap。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 都完整 lower,F1--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 附着 F6,F5 后该 F4 owner 仍有唯一 continuation,F7 的 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_approximate(00950564)、1 个rebuilt_rejected(00803284)和 1 个runtime_ineligible(00247322,但 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 条 shardoutput/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的第一条通用受限路径现以 CDSLplanar_imprint保存同一草图的原始 analytic entities、IMPRINT 面侧、可选 INTERSECT vertex order 与 fragment side;solver 仅转换这些精确曲线,adapter 用 OCPBOPAlgo_Splitter切分有界 support face 后选取实际 B-rep region。top-levelIMPRINT FACE的 multi-face query 只有既有的_profile_selection_sketch不能将它缩减为单一/圆形/open 专用 profile 时,才进入该 typed arrangement profile;不能把 nestedINTERSECT误当作 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 验证这个收紧后的 分派:00304488、00253824rebuilt_rejected;00354246在 F2 deferredSWEPT_FACE时保留 F1 checkpoint,00306689在 F1 OCCBRep_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-17output/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 == false,00071859和00093912分别保留既有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 source,solver 现在保留一条带 workplane frame 的 OCC circle edge,而不将 它预拆为四条 contour arc;fragment 的 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记录00001313F1/F3 完整执行但 RP 拒绝(bbox delta0.023571 mm)、00004246的 F1/F3 executable prefix 和三个仍有归因的失败。00040869的 line/ellipseOD(0)pairs 以 OCP exact distance 均为0.004240908 mm,没有 splitter image 或 section edge,故output/intersect-circle-imprint-source-gap-20260909-r1保留 F1 prefix 并报告 source/anchor 无实际交点,绝不以容差补点;核心 17output/core-17-intersect-circle-imprint-20260909-r2为 4 strict、3 RP、9 rejected、1 comparison timeout。故这仍只是同草图有界 exact-curve arrangement 的 P1 扩展,不能宣称 general INTERSECT replay 已完成。 UP_TO_NEXT已 lower 为 CDSLthrough_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 或第二方向终止已支持。- 在上述受限路径之外,完成
up_to_surface、up_to_next、up_to_body、up_to_vertex、two-sided、through-all、surface/mixed 的有限交集语义和多 body target 选择。 - 仅在所有 profile rays、target body 和 offset 均能由通用几何验证时执行;否则保留 前缀并说明哪一个终止条件无法证明。
P2:实体特征的完整语义
extrude、revolve、loft、sweep:补齐实体/曲面模式、复杂 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@1511与SWEPT_EDGE@1511另有 direct-prism 的受限 end-to-end contract:独立、无 draft、new_bodyblind prism 的 direct source profile edge/ vertex(含一个 analytic region 的 exact hole wires)由 exact construction anchor 和Generatedcross-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 contract:FeatureScript 1511 的 exactqUnion([qConstructionFilter(qBodyType(qCreatedBy(sketch, EDGE), WIRE), NO)])仅在 source 还直接 importonshape/std/geometry.fs@1511.0、owner 是 source sketch、恰有一个 non-constructionline或bsplineentity 时解为路径,不能作为 runtimeqBodyTypeselector。两点skFitSpline只有 source 明确给出 start/end derivative 时才会保留为 B-spline 并由 OCC 执行;没有两个导数时拒绝,绝不改成 chord。00896761F2(F1/E2 two-point B-spline)现在 converted/rebuilt 且无 runtime diagnostic,artifact bundleoutput/qbodytype-direct-sketch-wire-20260910-v2包含 STEP、GLB 和七视图;但 RP comparison 在 60s 预算超时,分类为comparison_timeout,不是相似通过。fresh seven-sample RP matrixoutput/qbodytype-direct-sketch-wire-matrix-20260910-v1confirms all direct-path cases rebuild:00191739strict,00726304RP-only approximate,00227428/00287471/00500952/00816123rejected, and00896761timed out during comparison. These classifications are evidence of executable paths, not a claim that rejected/timeout output is similar.00786708F2 因多个 non-construction path entity 继续 deferred。这不是 genericqBodyType、qConstructionFilter、sweep path、loft guide、arc/circle path 或 sweep complete 的完成声明。shell:单一 selected solid 的 direct-builder topology delta 与有限 output-role evidence 已覆盖。CADFS lowering 现额外接受一个受限的 removal selector:直接 blind 或 two-sided linear extrusion 的立即后继 shell,可从同一未修改 source profile 中唯一的、非 constructionline原始实体生成平面SWEPT_FACEplaceholder,再由 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 或相近面。CADFSoppositeDirection已显式 lower 为inward:false,由既有 OCCMakeThickSolidByJoin的有符号 offset 执行;这只复用已验证的 removal selector 和单一 selected solid contract,不会将 OCC feasibility failure 伪装成 inward shell 成功。仍需任意 稳定 removal face、多 body target、其它 join/offset 参数语义和更广的 kernel failure 诊断回归。作为进一步的窄例外,紧邻 shell 的OFFSET_FACEremoval query 可在其disambiguationData中只有一个 directTDDCAP source,且 source 是前序 directnew_bodyblind-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 可唯一解析为仍存活的 directSWEPT_BODYindependent member 时,lowering 才写入 CDSLtarget_feature_id;capability preflight 和 runtime 都要求 该 ID 的 exact B-rep solid 仍在 active member graph 中,不能以session.body、current aggregate 或几何近似替代。00107631F3 中 F1 可证明地继续为f_F2,因而是正例;00542223F7 在 fuse/pattern 后不再有独立 member;runtime 仅在 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。实现参考 SimpleCADAPI(Apache-2.0)IsSamemember identity 语义,未复用代码;其单 Solid boolean 假设未被采用,因为它与 CADFS 的独立 body 生命周期不兼容。当前验证为:受影响 lowering/integration/selector/runtime suite218 passed(3 条既有 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 写入 explicittarget_feature_id,结果为 13 rebuilt-rejected、7 rebuild-failed、1 runtime-ineligible。00107631的 F3 在这项 target contract 下通过 converter/preflight。其普通、非 instance-lockedCAP_FACEselector 只有在 active owner candidates 均不满足完整 geometry signature 时,才可在 当前 active member 中选择唯一的 threshold-qualified face;这不能替代output_rolerelation, 也不适用于owner_match_requiredCOPY 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-r2中00542223与00423838均为 rebuilt/rejected,00293508保持 RP,00253824仍在无关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 timeout;output/shell-parts-selector-context-fallback-matrix-20260909的 21 条分类仍为 13 rebuilt-rejected、7 rebuild-failed、1 runtime-ineligible。这是 selector 绑定范围修正,不增加 shell 的已完成语义,也不改变 OCC invalid-shape 的保留前缀诊断。fillet、chamfer、hole:完整 selector、tangent propagation、参数变体、 feasibility 检查和 dress-up 后继。当前 fillet/chamfer lowering 对 direct blind/ mid-plane extrusion 的唯一源端点,以及 direct two-section loft 的每 section 一对唯一 源端点,可生成可绑定的 endpoint-bboxSWEPT_EDGEselector;前者额外证明为直线, 后者不声称曲线类型,因为内核可将其物化为 B-spline。独立NEW的 full solid revolve 也可在 profile 与 axis 都是同一原始草图的直接来源、original-set 唯一指向一 个非轴端点时,按 axis projection 生成circle_center_mm/radius_mm圆边签名; adapter 只从实际 OCC circle edge 记录该签名。一个IMPRINTprofile 仅在 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-prismSWEPT_EDGEprovenance contract,不能借其成功。只有该受限 blind-prism path 具备 query source semantics、lowering、adapter evidence、consumer 和真实语料回归;其它 generator/ consumer 仍须逐一补齐后,才可将整个 query family 标记为完成。hole现增加一个独立且更窄的 source-location/body-scope contract:lowering 仅接受原始sQuery/sketchEntityQuery(VERTEX, ...)的skPoint、skCircle.center、skLineSegment或skArc的.start/.end,并要求所有 location 都来自同一显式草图平面;派生 suffix、 CAP/SWEPT/COPY topology、query combinator 与几何邻近性均不会成为 location fallback。CADFSscope必须是一个直接SWEPT_BODY,并在 lowering-time body graph 中仍是唯一独立成员,才写入hole_wizard.params.scope_feature_id。schema、semantic validation、capability preflight 和 executor 共同检查该成员仍是唯一 active solid;executor 在每次切除后保留原 scope member key,因而后续 CADFS hole 可以继续引用同一 body,而无 scope 的既有 CDSL hole 仍保留 feature-owned lifecycle。00406667的 F1/F3/F5 是端到端证据:两个skCircle.centerhole 与同一 F1 revolve scope 完整执行,output/hole-direct-sketch-vertex-20260910-v2分类为rebuilt_approximate(RP passed,strict failed)。 这不覆盖 B-spline/interior vertex、多个 host plane、多个 scope body、COPY/boolean/pattern successor、 non-direct query、全部 hole start/end styles 或完整孔型/螺纹语义。booleanBodies、mirror、circularPattern:显式 source/target bodies、实例输出、 nested pattern、remove/intersect/keep-tools 和 transform 后继。当前 direct circularNEWCOPY -> rigid transform,以及 direct mirror 的NEWsource ->instance 1COPY -> transform 是受限增量;不代表 linear/nested pattern、镜像 aggregate source 或 fused instance 已有完整 output body lifecycle。mirror 的mirrorPlane另有一个受限SWEPT_FACEcontract:唯一 direct full solidrevolve_add的原始 source line 与 revolve axis 可由既有_query_plane证明为同一物理平面时,lowering 物化显式reference_plane后交给现有pattern_mirror执行。它不从 STEP 或 current body 推断 plane;partial revolve、非 revolve、curve/derived face 或任一未解析 frame 都保留原有 mirror-plane diagnostic。00000385的 F5 是正例(XY plane,F5 executed);00023074保留拒绝边界。五样本output/mirror-revolve-plane-matrix-20260909为 2 RP、3 rejected,且只移除了00000385F5 的 plane defer,F2 chamfer 与 F7 fillet 仍如实诊断。booleanBodies现在也有一个独立、受限的 COPY body contract:directSWEPT_BODY和已存活的 mirror/circularCOPY(SWEPT_BODY)分别 lower 为 feature ID 和{pattern_feature_id, source_feature_id, instance_index},runtime/body graph 仅从该 tuple 解析对应独立 body member,绝不以 producer aggregate 或 current body 代替。 directSWEPT_BODY若唯一解析到上述 fused sole-body successor,也会以 successor 而非 creator 作为 circular source;00253824的 F1 -> F3 cut -> F4 add -> F5 circular 的 source 因而是f_F4,其 F6 targetless UNION 保留f_F4与 F5/F4/instance-1,2 的 明确 ownership。该完整样本目前在无关的 F4planar_imprintruntime selection 失败时 保留 F3 executable STEP,不能作为 pattern/boolean RP 通过证据。合成 fused-body circular COPY -> boolean runtime 回归完整执行。多 body、boolean 后继、nested/linear pattern、被排除 instance 和 CAP/face topology ownership 仍未覆盖。 targetless FeatureScriptUNION只在keepTools:false且至少有两个 explicit members 时按 query 顺序确定一个 target;00293508的 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_sourceowner, split/merge/no-history 仍不声明 owner。00542223的 F7 removal faces 和00423838的COPY(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已是有限整数,因而该 表达式可被证明为恒等;00003011的round(8)pattern 由此完整 lower。非整数round、变量和其它函数不会在 converter 中猜测 FeatureScript 的数值语义。这只是 lowering 前置条件,不能作为 COPY owner、pattern instance lifecycle 或 RP 相似通过的 证据。cPlane:所有历史出现的 plane constructor、曲线/曲面 attachment、方向手性和 退化输入。CPlaneType.OFFSET必须将 CADFSoppositeDirection编译为 source plane normal 上的负 signed offset,而不是忽略该 flag 或翻转 plane frame;后者会镜像同一草图的 local coordinates。该 shared lowering contract 已覆盖 272 条实际带该 flag 的 history。00777619将 Right plane 的76.2 mmoffset 修正为x=-76.2 mm;因其 profile 只有部分 射线到达 selectedSWEPT_BODY,up_to_body仍以非均匀 target 诊断保留 F2 prefix,不能 被这一 plane 修复伪装成成功。Right/Front/Top 的三个真实 matrix 例与 24 条分层 shardoutput/cplane-offset-opposite-shard-20260909分别验证 frame 和独立分类:3 strict、1 RP、 13 rejected、7 rebuild failure。共享 core-17output/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现额外覆盖单一 directskCircleedge:FeatureScript 1511 的cplane.fs::lineAnglePlane将该选择传入evAxis,而同版本query.fs将 circle 列为ALLOWS_AXIS。lowering 因此只用 circle centre 与 source sketch plane normal 作为 axis,并按同版本vector.fs::perpendicularVector的确定性阈值分支适配 zero-angle direction,再按angle和oppositeDirection的 signed angle 旋转;不会以 circle centre vertex、CAP_EDGE/SWEPT_*/COPY 等派生 topology 或 current body 替代这个 source contract。 该语义依据来自 MIT 许可的 Onshape standard-library mirror 的 1511.0 commiteaef87b22d3b15e9377d8b1c6cb701f8111b6a0c;适配该 MIT 算法但未引入依赖。00030209的 F1/F2/F4/F5 是现有的四个真实 direct-circle evidence:output/cplane-line-angle-direct-circle-20260910不再含 cPlane diagnostic,并保留 四个 executablereference_plane。该 source 后续因 arc sweep path 未实现而没有 solid feature,pipeline 正确分类为runtime_ineligible,没有将工作平面 lowering 误报为 STEP/RP 成功。多实体 reference、direct arc/cylinder/cone 等其他evAxis输入和一般 derived topology 仍未覆盖。focused shared selector/runtime suite 为263 passed, 1 skipped(142.98 s;仅既有 build123d deprecation 与 workplane re-orthogonalization warnings)。强制 RP Core-17 refreshoutput/core-17-line-angle-direct-circle-20260910为 1comparison_timeout、10rebuild_failed、1rebuilt_approximate、5rebuilt_rejected,与既有核心集分类一致; 它只证明共享改动没有改写这些既有结果,不构成 genericLINE_ANGLE或 STEP/RP success。 两实体LINE_ANGLE现额外覆盖 source-only contract:directskLineSegment/skCircle提供 axis,默认 datum 或已 lower reference plane、directskPoint或 direct line endpoint 提供第二 reference。实现严格镜像 1511cplane.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 commiteaef87b22d3b15e9377d8b1c6cb701f8111b6a0c,未引入依赖或复制外部代码。lowering regression 覆盖 datum-first swap、axis-first、nonparallel/parallel-offset axes、direct point、reversed point/axis、oppositeDirection、degenerate reject,并断言 direct helper 不接受CAP_EDGE。 真实 matrixoutput/cplane-line-angle-two-entity-matrix-20260910的六条直接 axis/default-plane history(00067847、00185138、00217351、00298026、00586156、00831400)均无 cPlane diagnostic 且保留 rebuild STEP:00586156strict/RP pass,00298026RP pass/strict diagnostic, 前三条为独立rebuilt_rejected,00831400在后续 F5BRep_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 也已收紧为单一 directmakeQueryCAP_EDGE或SWEPT_FACE的 sourceskCircle,要求 producer start/end frame 与另一显式 datum/ lowered reference plane;qAdjacent/qUnion composition、CAP/SWEPT line、trim/COPY/boolean source 均稳定 defer,不能因 AST 内出现 source token 获得_query_linefallback。1511query.fs/evaluate.fs确实 将 arc 列为ALLOWS_AXIS/evAxis输入,但当前 9,347 条 corpus 未发现 directskArc被LINE_ANGLE实际选择的 history;这只是待验证语义,不能提前宣称 direct-arc coverage。CURVE_POINT现额外接受同一 direct source curve 的精确切线:skArc.start/end由解析 圆心、半径和方向生成切线,skFitSpline.start/end只在 FeatureScript 导出了相应 endpoint derivative 时执行。它还受限支持 source tokenE<n>.<index>.internal:必须是同一 direct、 non-periodicskFitSpline,并有完整 interpolation points、centripetal parameters 与两端 derivatives。lowerer 复用 runtime 的Edge.make_spline(..., scale=False)构造,再在显式 parameter[index] 以 OCCBRepAdaptor_Curve.D1读取导数,同时核验返回点仍等于 source interpolation point;绝不以 adjacent interpolation-point chord 代替曲线切线。00827798F1 与00845891F3 是两个真实 B-spline endpoint 证据,00456498F1 (E0.2.internal) 与00812557F2 (E0.3.internal) 是 source interpolation-token 证据;00057273的受控skArcendpoint 变体覆盖圆弧方向。derived suffix、越界 index、无完整 interpolation data、无导数/periodic spline、curve/surface topology source 和退化 tangent 继续明确拒绝。 两条新增样本 pipelineoutput/cplane-curve-point-bspline-interpolation-20260910均已无 cPlane diagnostic;00456498在后续 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 refreshoutput/core-17-cplane-curve-point-bspline-interpolation-20260910为 1comparison_timeout、10rebuild_failed、1rebuilt_approximate、5rebuilt_rejected,与 prior semantic-selector baseline 分类一致;它不构成完整 cPlane 或 generic curve-attachment completion。
P3:尚未支持的 FeatureScript 操作
按全量诊断计数建立 operation registry,逐项为 draft、thicken、split、
moveFace、deleteFace、replaceFace、完整 transform、derive、import、
bend_add 建立 schema、lowering、runtime、adapter 和回归。外部资产或生成器缺失时,
必须将 capability 标为不可执行并提供部署诊断,不能在 import 时影响无关模型。
P4:比较、来源和性能
- 保留 strict 与 RP 两层几何比较,并为被精确量快速拒绝的边缘模型提供可控的 离线 surface 诊断预算;comparison timeout 是基础设施问题,不能混入几何失败。
- 输出 source/rebuild 多视图、局部差异、body 体积/面积和最近 feature 的关联证据。 截图只用于人工复核,不能替代多视角 B-rep 比较。
- 识别 source STEP 非闭合、FeatureScript literal 与 export 精度不一致、缺失资产等 source exception。它们必须保留原始导入/检查证据,不能修饰 CDSL 以伪造通过。
- 使用 capability shard、缓存中间工件和可恢复 worker 隔离完成全量回归;任何 failure 都必须保留最后一个重新绑定 selector 并以 strict 模式实际执行成功的前缀 STEP、GLB 和诊断。不得把未绑定候选或当前 body fallback 伪装成可执行工件。
每项能力的完成定义
一项能力仅在满足以下条件时可标记完成:
- 有版本化的 CDSL 表达,且 schema/semantic validation 拒绝不完整或歧义输入。对
FeatureScript query,
selector_intent.version、source query family、精确 language version 和直接 standard-library import path/version 必须有明确契约;缺版本和未注册 family/language/library revision 必须诊断,不能以 legacy 顶层版本、数字前缀、相同路径或默认版本补齐。 - lowering 仅根据 FeatureScript source 产生该表达,并保留 source feature、selector 和 body provenance。仅有 runtime CDSL contract 而未由 lowering 产生的能力必须标为 部分完成。
- runtime/adapter 按通用算法执行,记录结果 body 和 topology delta,不依赖样本信息。派生
selector 必须具有 source/result kind、输入/输出 snapshot、body member、history status 及
kernel relation evidence;resolver 必须据此证明 derivation policy、operation-wide cardinality
和 active member,并输出实际
resolution_mode与 evidence。 - 能力矩阵记录对应 FeatureScript API/query 的源版本文档或标准库依据、采用的语义和 未覆盖边界;原子语义矩阵包含正向、边界和拒绝测试,且至少多个真实语料样本覆盖 不同几何和生命周期组合。只有 parser/AST 或 resolver unit test 的 query family 只能标为 resolver-level/部分完成;必须同时具备 lowering、schema、adapter、consumer 和多个真实样本 的端到端证据后才可标为 complete。
- 受影响核心集、扩展集和全量 shard 有可复现结果,工程相似通过率、失败数和剩余 exception 均更新到本地台账。
- 代码审查确认没有 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 family;CADFS 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 metadata;COPY/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 宣称为 lineage:00005267(FeatureScript 1793)F4
的四个 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@1511、SWEPT_FACE@1511 和 SWEPT_EDGE@1511 direct-prism contracts 不受影响;
它们仍只在 capability matrix 的已证明边界内执行。
2026-09-10 的 source-version migration 补齐了 import-level evidence:parser 逐条保留直接
onshape/std/* import 的 {path, version},CDSL 顶层 source_featurescript 和嵌套 selector
source_query 同时保留 primary import 与完整 import list。resolver 对 provenance selector 先要求
language version、direct standard_library 和 standard_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。该迁移只完善来源证据门槛,不新增
COPY、SPLIT 或其他 query family 的执行能力。验证包括 parser/lowering/provenance suite
140 passed、runtime foundation 130 passed, 1 skipped、以及 fresh 00212904 RP pipeline
(完整 F1--F5 replay,rebuilt_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 checkpoint,00090436 与 00107631 的 outward F1/F2
prefix 都可 rebuild;combined 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 共用的 contract:multiplicity: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 subtests(142.57 s;仅既有
build123d deprecation 与 workplane re-orthogonalization warnings)。真实 00423838 以
output/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 成功。