Aira 人与 AI 交互研发交接
2026-09-26。研究结论与产品接线边界;当前目标、状态和下一步只见根目录
ACTIVE_TASK.md。
工作台围绕“改哪里、改成什么、哪些必须保持”组织一次修改任务。画布负责指向,指令承载修改意图,保持项与候选证据限定 AI 可自动应用的边界;停止、纠正和撤销属于同一流程。交互目的在于精确沟通与授权,不要求用户用大量 CAD 控件施工,也不默认生成大量候选供逐个筛选。
已证实线索、用户推测与系统检查结果必须分开。结构检索可缩窄范围,却不能将“出料端”等没有来源证据的功能描述推定为某个实例。查看局部视图只移动视角;实例绑定、修改范围授权和保持检查分别发生。已采纳的硬要求缺少与当前候选、谓词、公差及修订绑定的 pass 时不得自动或手动提交。解除要求必须是明确决定,不能借纠正对象、切换视图或重试候选暗中完成。
理论组合与信息守恒边界见交互白皮书,设计诊断与反例见评分账本。其中评分是设计估计,不能当作用户实验或 AI 成功率证据。
唯一产品入口与退役边界
Section titled “唯一产品入口与退役边界”产品入口统一为 LiveWorkbenchApp。main.tsx 不再识别 uiWorkbench、uiWorkbenchLive 或 interactionResearch,不保留兼容别名;普通 URL 在开发和生产中均进入真实工作台。显式 uiWorkbenchPerformance 仍遵循原有开发/性能构建开关,包装同一 Live 应用;开发用 phase1SemanticRefFixture 仍保留为独立验证工具。
退役 WorkbenchFixtureApp.tsx 与 interaction-research/ 的十个专用文件:ResearchWorkbench.tsx、model.ts、scene.ts、GuardEditor.tsx、ObjectLocator.tsx、PageNavigator.tsx、TaskResult.tsx、ChangeDetails.tsx、research.css、performance.ts。最后一个仅测合成 catalog 的查询及两帧回调,不是真实性能工具;WorkbenchPerformanceHarness、workbench/performance/、现有工具脚本、原生 Interface 和 ThreeViewport 底层能力未因此退役。
这些展示组件绑定研究专用 Target、Guard、Change、页布局与标量偏移状态,不能直接作为真实模型的投影。删除模拟模型、有限语法解析、情景检查和回放提交,不复制一份假执行器到产品;真实 UI 继续使用既有模型投影与组件。入口统一不代表样机所有体验已移植。
真实链已承载的原则与尚缺的体验
Section titled “真实链已承载的原则与尚缺的体验”以下依据退役时的源码接线,不能替代真实几何与浏览器验收。
| 研究体验或原则 | 真实产品已有接线 | 尚未移植的具体部分与原因 |
|---|---|---|
| 定位不等于授权 | LiveWorkbenchSurface 按当前修订 render packet 的 occurrence path 取景、隔离,不以取景替代目标确认 |
混合线索部分匹配、未证实功能词保留、少量局部直达与搜索草稿恢复尚未形成同等流程;合成页序号不能代替真实工件的功能地标与空间语义 |
| 纠正目标必须显式且使旧证据失效 | LiveWorkbenchController 已有当前选择重指向、要求确认/拒绝与检查绑定,沿用现有决策日志和候选门禁 |
研究的同排/同源范围预览、成员例外与邻接联动授权尚非完整真实 UI;必须从真实关系及受影响闭包推导,不能复制 fixture 的 1:1 联动 |
| 保持检查与来源分开 | 真实要求投影区分用户确认、检查绑定及 unknown,candidateCommitGaps 阻断未通过的已确认硬要求 |
任意对象/属性、单次/持续期限和关系成员排除的保持编辑器未完整接入;形状、位姿、既有关系及包络/壁厚等体验不得由回放结果冒充权威证明,具体可用检查须由原生契约决定 |
| 当前决定聚合证据与纠正动作 | Live 将真实候选、验证结果与提交门禁集中到当前决定区;目标与要求、过程记录、历史由 RAC Tabs 切换,指令持续可达 | 逐项解除确认、沿上次方向续改、再次移动和恢复原偏移尚未整套迁入;其有限语法、数值差异和历史栈属于模拟状态,不能复用为事务历史 |
| 遮挡处定位不改变几何 | 产品已有视口和实例隔离,ThreeViewport 底层能力保留 | 研究的邻近点击消歧、后方对象检查、临时半透明/剖切、局部中心框选未全部接入 Live;需要在真实拾取、语义引用与授权边界下连接,而非保留合成盖板和页模型 |
既有重指向接线不等于原生 Interface、权限、持久化与跨修订追踪的完整验收;跨修订自动功能身份追踪仍无足够证据。后续真实 UI 改动应由共享权威模型派生展示,并按官方 React Aria 组件语义处理键盘、焦点和弹层,不恢复平行模型。
UI 文件与逻辑统一规范
Section titled “UI 文件与逻辑统一规范”以下是 Aira 的实现约束,不能宣称 Adobe 规定了项目目录布局。官方依据为 组件组合、样式与交互状态、键盘事件和单选语义;新增 API 仍须核对锁定的 RAC 1.21.1。官方允许受控状态、原生元素与内联样式;不能仅凭这些形式判定违规。
| 边界 | 统一约束 |
|---|---|
| 文件归属 | 按已有功能目录组织;组件用 PascalCase.tsx,非组件模块用 kebab-case.ts,hook 用 useXxx.ts。迁移时同步修改引用并删除旧入口,不保留兼容转导。不得为统一命名批量移动无关内核文件。 |
| 模块入口 | 一个职责只有一个对外入口;index.ts 仅用于真实模块边界,不保留“根同名文件 → 目录 index → 同名实现”的纯转导链。私有实现与类型靠近所属模块,跨域权威类型归属模型契约;正式 ViewModel 不导出示例工厂。 |
| 展示与业务 | Shell/Surface 负责布局、组合和事件接线;云项目 I/O、复合操作及异步生命周期归已有应用服务/coordinator。复用同一执行路径,不为组件新建执行器或无职责转发层。 |
| 权威与状态 | Candidate、Revision、权限、要求证据和提交结果只有现有执行层一份权威。UI 可持有焦点、展开及草稿,但所有提交入口的可用性和禁用原因须从同一能力投影派生,执行时仍重新校验。 |
| 完成语义 | “请求获准开始”不等于“提交成功”;协作图钉完成、成功反馈等副作用须绑定相同候选和实际提交结果。异步表单须区分请求归属,关闭、重开或切换后旧响应不能修改新的表单会话。 |
| 事件与可访问性 | 通用菜单、浮层、表单及选择交互使用 RAC 公开组合。画布快捷键统一遵守焦点、弹层、输入法及事件已处理状态;局部胶囊不能另建竞争的 window 快捷键策略。选择状态必须有可访问语义,不能只靠颜色。 |
| 样式 | 复用既有 tokens、焦点/禁用/选中状态规则与响应式边界;重复静态样式归属已有组件或功能样式,坐标与动态尺寸可使用内联值。不把 CSS 形式一致当成行为验收。 |
审查后的实现裁决
Section titled “审查后的实现裁决”三路 Antigravity 分别检查官方接入、文件依赖和执行接线,协调器复核并集成。以下记录问题与实现依据;当前验收结果只见 ACTIVE_TASK.md,源码接线不等于远端协作、登录后端或读屏验收。
| 原问题 | 统一实现与边界 |
|---|---|
| 提交启动被当成完成,来源图钉无条件完成 | live-workbench-controller.ts 与 candidate-execution/candidate-coordinator.ts 的 commit() 返回实际提交结果 Promise<boolean>。由于 sourcePinId 不能证明当前候选来源,Surface 删除自动 resolvePin;保留明确的图钉完成操作,避免后续无关参数编辑完成旧图钉。 |
| 控制台、胶囊、命令入口各自判断提交能力 | workbench-design-state.ts 的 candidateCommitAvailability 统一状态、要求缺口与禁用原因;执行层仍再次验证同一候选。多个入口共享权威,不复制提交器。 |
| 胶囊 window 快捷键竞争 | Candidate/Mate 胶囊改为自身 dialog 的局部事件;keyboard-shortcuts.ts 处理组合态、重复按键、修饰键、输入与已处理事件;Enter 让按钮执行自身动作,应用快捷键让权弹层及原生 dialog。 |
| 异步表单响应污染新会话 | Auth 每次打开创建独立 Session,请求序号在关闭、卸载和模式切换时失效,同步 pending 防止重复提交;Provider 连接检查也核对请求归属。此处保护表单 UI,不宣称取消已发出的服务器请求。 |
| 选择只靠样式表达 | Provider 与 Mate 选择使用 RAC RadioGroup/Radio,翻转使用 ToggleButton;Organization 当前项具有 aria-pressed。使用公开组合而非自行模拟方向键。 |
| Shell 混合业务 I/O,服务引用组件类型 | 云项目操作归 cloud/cloud-project-actions.ts,硬件插入/钻孔归 cots/hardware-actions.ts;参数类型来自模型和控制器契约,展示组合调用同一真实业务路径。 |
| fixture、纯转导和命名混杂 | 删除正式 ViewModel 的 fixture 工厂、fixture-view-model、workbench-fixture 示例与 Scene SVG 兜底及 no-op selectFixture。正式类型归 workbench-projection-types.ts,三类投影归 projection/;非组件模块与目录统一 kebab-case,hook 用 useXxx,组件保留 PascalCase.tsx,同批修改引用、删除旧入口。 |
| 浮层在短屏裁切 | Auth 内容按视口滚动;Provider 由 RAC 按锚点提供 max-height,Popover 自身滚动,不用内层固定高度覆盖定位边界。共享字段样式覆盖注册昵称、邮件、密码和提供商参数。 |
不采纳“登录/最近项目弹窗没有标题”(已有 Heading slot)、“Toolbar 内 Button 必然没有方向键能力”“官方禁止内联样式或受控状态”等误报。候选参数编辑继续遵守已有替换语义;不能因缺少额外 hasActiveCandidate 判断就声称绕过事务。上述 UI 整理未新增 schema、几何算法、兼容执行器或图钉来源推断。
全量 UI 审计依据与发现(61196761)
Section titled “全量 UI 审计依据与发现(61196761)”审计对象是基线 611967610b42611c261507ad4f2b82a8dbc42962 的全部 48 个 TSX、4 个 CSS、3 个 HTML,以及组件实际依赖的事件、导入和视口控制器。产品入口、开发夹具、维护页和品牌工具分别标识;不扫描归档、生成文件与第三方依赖副本。三路 Antigravity 分别审查样式、工作台组件、视口与事件,协调器反查源码、官方说明并使用 Orca 浏览器复核。下表是审计覆盖和证据分级,不是所有场景、设备及辅助技术的合格证明。
基线结论:不能认定全部 UI 已严格统一。RAC 组件已广泛使用,但仍有触发器契约缺口、重复交互状态、项目切换门禁差异和 CSS 契约漂移。官方的 Styling 允许自定义 className、style 和状态样式;目录命名、token 归属和统一业务入口是 Aira 规范,不应混称 Adobe 要求。API 采用须以项目锁定的 react-aria-components@1.21.1 为准,不直接照搬新版文档新增 API。
经协调器复核的发现
Section titled “经协调器复核的发现”P1 表示可能意外改变当前编辑上下文;P2 表示具体交互、可访问性或恢复缺陷;P3 表示维护规范缺口。除明确写出浏览器证据外,均为源码推导,尚未完成对应真实行为复现。
| 编号 / 优先级 | 位置与触发条件 | 证据、影响和整改边界 |
|---|---|---|
| U1 / P1 | LiveWorkbenchRuntime.tsx:188,拖入 STEP/STL 后选择新项目 |
普通 openProject 在 :123 调用 assertCanOpenProject;STEP 新项目路径只检查 disposed/importing/next。WorkbenchScene.tsx:134 的拖放入口没有 candidate/running 检查,成功后会 dispose 旧 controller。应统一项目切换前置条件,防止当前候选/运行上下文被替换;没有证明已提交 Revision 损坏,也未实际执行此导入。 |
| U2 / P1 | viewer/three/interaction.ts:228 → gizmo/GizmoController.ts:194 |
window keydown 在 gizmo hover/drag 时处理方向键,没有检查输入目标、IME、已处理事件和弹层;pointerleave 只清除 probe,不清 gizmo hover。回调经 adapter、ThreeViewport 到 LiveWorkbenchSurface.tsx:812 的 controller.applyParameter,可能在操作输入框/弹层时发起参数修改。应统一事件归属;不能把函数名 onCommit 当成已绕过事务提交的证据。FaceSketchController.ts:614 也只排除 input/textarea,修饰键、contenteditable 和弹层仍有缺口。 |
| U3 / P2 | FaceSketchHud.tsx:36 与 FaceSketchController.ts:277,637 |
HUD 自存 currentTool/snapActive,控制器另存工具/吸附状态。画布 C/R/S/G 快捷键改变控制器,却没有回写 HUD 对应状态;因此高亮和说明可停在旧工具。应由同一交互状态投影按钮和画布;不需要新增建模执行器。 |
| U4 / P2 | collaboration/CollaborationPresenceBar.tsx:57 |
TooltipTrigger 的触发器是原始 div,没有 Focusable 或等价 context/ref/事件接线,也不能键盘聚焦;完整协作者名称只放在 Tooltip 中。违反 Tooltip 自定义触发器契约。接入公开触发器组合并保证没有 Tooltip 的触屏方式也能获知身份。远端 presence 未实测。 |
| U5 / P2 | FaceSketchHud.tsx:86、CollaborationPresenceBar.tsx:92、COTS/BOM/Community 的分类与筛选按钮 |
工具、吸附、图钉模式及部分分类仅通过 class/data-active/颜色表达选择;没有相应 selected/pressed 语义。依据实际交互选用 RadioGroup、ToggleButton 或 Tabs,而非强制所有按钮都变单选框;参见 ToggleButton。MateManipulatorHud.tsx:88 的关闭按钮只有 X 图标,没有 accessible label,需补齐。 |
| U6 / P2 | RecentProjectsDialog.tsx 与 workbench.css:3711 |
浏览器已复现:390×350、10 个已有项目,modal 高 595、底部 y=637;列表已有 overflow-y:auto 和 380px 上限,但外层缺少视口高度约束,页脚在屏幕之外。应同时约束 modal、内容和列表的收缩/滚动,不能只再给列表加 overflow。未证明所有键盘访问永久不可达。 |
| U7 / P2 | LiveWorkbenchRuntime.tsx:241 与 main.tsx |
启动异步 IIFE 没有 catch。createWorkbenchController 的动态 import/构造在 setController 前拒绝时,界面留在 Loading,RootErrorBoundary 不接住该异步错误;参见 React Error Boundary 边界。需要明确失败和恢复 UI;此结论不扩展到已由 controller 内部处理的 initialize 错误。 |
| U8 / P2 | WorkbenchScene.tsx:146、ingestion/cad-ingestion-engine.ts:123、DropZoneOverlay.tsx:93、WorkbenchFileInputs.tsx |
拖放宣传和支持判断包含 3MF,但执行分支恒定返回“尚在开发”。STL 有拖放转换路径,文件菜单却只提供 STEP/项目/字体选择,缺少同等键盘入口。应统一可发现格式与真实能力,不宣称 3MF 成功导入。 |
| U9 / P2 | workbench.css:1988,1993,3716,3784 与 design/tokens.css |
活跃参数区、候选差异和最近项目使用没有 fallback 的 --aira-radius-card、--aira-text-xs、--aira-text-caption;协作栏使用 --aira-color-text-subtle。源码无对应定义,浏览器 root computed property 均为空,导致声明无效或继承,无法兑现统一视觉契约。映射到现有权威 token;有 fallback 的 accent/surface/signal-ok 不能同样判为无效。依据 CSS 自定义属性的无效值与 fallback。 |
| U10 / P2 | WorkbenchHud.tsx:253、SpatialPinOverlay.tsx:190,结构搜索与参数字段的局部按键 |
直接意图和图钉输入仅有 placeholder,没有持久标签;HUD 输入内联 outline:none 覆盖共享 focus-visible outline。HUD Escape 关闭、结构搜索 Escape 清除未让权 IME,图钉 Ctrl/Cmd+Enter 也未检查组合态。应补持久标签、焦点反馈和对应事件让权;不把 placeholder 一概描述为所有浏览器中的空可访问名称。参见 WAI 表单标签指南。 |
| U11 / P2 | viewer/three/assembly/*Hud.tsx 和 sketch/FaceSketchHud.tsx 的随物体提示 |
Assembly/Kinematic/Interference 直接用 screen 坐标减固定偏移,Mate 只限制左/上;调用方投影坐标没有根据 HUD 尺寸做完整边界限制。靠近视口边缘时存在裁切风险,尤其 Mate/Assembly 含可操作按钮。应依据容器与实际尺寸定位;此项为源码风险,未实际装配拖动复现,不把所有动态文字一律要求逐帧 aria-live。 |
| U12 / P2 | viewer/three/assembly/KinematicDragHud.tsx:90 |
非限位分支恒定显示“60 FPS”,没有实际帧率输入。应移除固定性能结论或接真实测量;不是 RAC API 问题。 |
| U13 / P3 | workbench.css:3429,4649,4655 |
reduced-motion 覆盖后代及 before/after,但 native dialog 的 ::backdrop 另有 fade-in,未包括此伪元素。应统一运动偏好。COTS/BOM 元素仍在 frame DOM 内,不能据 top layer 就声称全部控件失去继承、焦点或减弱动画规则。 |
| U14 / P3 | 工作台浮层、视口控制器命名与残留 CSS | RAC Modal/Popover、原生 COTS/BOM dialog、普通 fixed Community panel 仍使用不同外壳。原生 dialog 本身有效,但尚未完全符合 Aira 统一通用浮层的约定;社区面板究竟为 modal 或 nonmodal 必须先按体验明确,不能直接宣判需要 trap focus。viewer 的 GizmoController.ts 等与工作台 kebab-case 非组件约定不一致;属于 UI 边界的统一范围,非 Adobe 命名规则。CSS 的 cots/bom-drawer-backdrop、drawer-backdrop-dismiss 在源码无消费者,应清理退役外壳规则,而不是修改无人使用的 z-index 当作修复。 |
| U15 / P3 | 工作台九个非 TSX Canvas HUD 控制器,见下表 | 含绘制文字/状态的 CanvasTexture 仪表,但在 apps/packages/tools 非生成源码未发现对应模块导入或 import.meta.glob 加载。属于未接线展示残留,不能作为已应用的 UI 能力;其中 Machine Nexus 恒定绘制 CONNECTED/100% SYNCHRONIZED,Point-to-CAD 恒定绘制 CONVERGED。整理时先裁决归属或退役,不把这些未接线状态当作当前运行时测量,也不顺手接入产品。 |
审计对应的实现裁决
Section titled “审计对应的实现裁决”下表说明实现如何消除上述根因,不将源码修正等同于全部运行场景通过;本批实际验证结果与未验证边界仅见 ACTIVE_TASK.md。上表行号和下面逐文件表保留为 61196761 基线证据,已退役文件不代表当前入口。
| 对应发现 | 实现与边界 |
|---|---|
| U1 | Runtime、文件菜单、拖放入口共用 canOpenWorkbenchProject;异步读取后、替换当前 controller 前重新核对门禁。STEP 新项目支持取消和临时 store 清理;既有候选/running 不得被切换覆盖。 |
| U2 | 视口快捷键统一事件让权与当前 canvas 焦点归属;输入控件、弹层、IME、系统组合键和已处理事件不触发建模;保留 gizmo 的 Alt+方向键精调,pointerleave 清除 gizmo hover。 |
| U3、U5 | 草图工具与吸附状态由控制器投影到 HUD;工具用 RadioGroup、吸附/图钉用 ToggleButton,分类和规格提供 pressed 状态;Mate 关闭按钮补名称。 |
| U4、U10 | 协作身份使用 RAC Button 触发 Tooltip,同时直接显示完整名称;图钉和直接意图输入补持久标签、焦点反馈及 IME 让权。控制台参数 Enter 后 blur 避免重复应用同一草稿。 |
| U6 | 最近项目、通用 palette、云项目与导入冲突弹层统一视口限高和内部滚动;列表允许收缩,短屏保留操作入口。 |
| U7 | 启动异步异常进入明确失败界面,重试重新加载页面以清除失败模块缓存;清理失败 controller 和旧回调,不依靠 React ErrorBoundary 捕获异步拒绝。 |
| U8 | 删除未实现的 3MF 导入声明,STEP/STL 文件选择与拖放共用现有 ingestion 路径;STL 转 STEP 后释放临时 Shape。未新增转换算法。 |
| U9、U13 | 缺失的无 fallback token 映射到现有权威 token;reduced-motion 覆盖 RAC portal 外壳及内容,退役 native backdrop 动画规则。 |
| U11、U12 | 随物体 HUD 按容器与实际尺寸限制位置和可滚动范围,监听容器/内容 resize;移除没有测量来源的固定 60 FPS。 |
| U14 | COTS、BOM 和社区库作为模态任务统一到 RAC ModalOverlay/Modal/Dialog;viewer 非组件模块 kebab-case,hook useXxx,迁移全部源码引用;删除旧外壳死 CSS。 |
| U15 | 删除九个没有产品消费者的 Canvas HUD 控制器,保留真实已接线的视口和内核能力;不把展示状态接成另一条执行管线。 |
层叠与只读逻辑复核(2c084606)
Section titled “层叠与只读逻辑复核(2c084606)”本轮沿用上面的审查边界,重点核对实际 containing block、portal 归属、命中目标和只读操作副作用。遵循 React Aria Modal / Popover 契约;锁定版本的 react-aria@3.52.1 useOverlayPosition 自带行内 zIndex: 100000,不以一个不会生效的普通 CSS z-index 覆盖声称完成统一,也不把这个上游实现细节误报为产品违规。
| 发现 | 修正与依据 |
|---|---|
| 导入错误被控制台遮住 | 390×350 实测,旧关闭按钮的中心命中控制台元素;scene 的 z=0 使内部 z=40 仍无法越过 sibling console z=20。错误/解析任务使用 RAC ModalOverlay/Modal/Dialog;拖拽提示临时提高 scene 层级,错误关闭恢复画布焦点。 |
| 短屏控制台占满场景 | 将控制台限高绑定到扣除 header 后的场景高度,保留与 camera inset 约定一致的 40% 模型区域。体检卡片和 viewer 浮层扣除控制台 inset;监听 inset 更新,避免缩放/展开后仍用旧边界。 |
| 原位卡片混用 client 与局部坐标 | 候选、配合、图钉统一为 fixed body portal,使用共享 useProjectedOverlay 按实际尺寸夹取视口边界;统一 lens 层,连线在卡片之前且低于 modal,移除 100/195 等独立层级。三个 RAF 定位循环合并,静止时复用旧状态;新图钉优先于旧图钉详情。 |
| viewer badge 边缘裁切与事件归属 | Gizmo 使用实测尺寸替代 transform 偏移;FaceSketch badge 使用局部 absolute 坐标。useFloatingBounds 以 offsetParent 为界;四种装配 HUD 共用 layer token。键盘监听归属 canvas,pointerup 在 window 收尾并对称卸载。 |
| 重复弹层和跨项目状态 | 社区库先关闭再打开发布表单;项目打开使用可取消 RAC 模态任务,controller identity 变化时重置 Surface 状态。最近项目查询在关闭/卸载后忽略返回,删除未接线 fixture 快捷键分支及重复抽屉 border。 |
| 只读 BOM 查询污染候选 | 真实空项目仅打开发布表单即触发 EXACT_BOM_EVALUATION_REQUIRED,原 getAssemblyBom catch 调用 publishFailure,产生“候选被拦下”并阻止打开项目。查询保留原异常交给调用方,不更新建模候选;BOM 抽屉局部显示加载/错误,不把失败呈现为空清单。发布表单的可选元数据继续独立降级。未改变查询工具、几何判断、事务或历史契约。 |
不采纳 worker 关于“所有 portal 改 absolute 就能绑定 frame”“CSS token 能覆盖上游行内层级”等无证据判断。具体构建和运行验收结果只维护在 ACTIVE_TASK.md;多体装配、原生键盘与远端服务仍需独立实操证据。
以下路径除注明外均相对 apps/web/src/。每个文件均纳入分工审查与结论合并;“未新增发现”仅表示本轮没有足够证据登记新缺陷,不表示所有状态通过。组件运行条件、读屏、强制颜色、200% 放大、不同语言与远端状态不能由该表替代验收。
| 文件 | 审查面与结论 |
|---|---|
../index.html |
页面宿主与模块入口;未新增发现。 |
../public/maintenance.html |
独立维护页、内嵌品牌及动画;不进入工作台执行,未新增证实缺陷。 |
../../../tools/branding/aira-3d.html |
品牌制作工具,多段静态样例;不冒充第二套产品 UI,未验收所有示例动画。 |
design/base.css |
全局 reset、body overflow 与 canvas;全局禁止 body 滚动使 U6 必须由弹层解决。 |
design/tokens.css |
token 定义与消费者一致性;U9。 |
vi/aira-wordmark.css |
SVG 动画及 reduced-motion;已有减弱运动处理,未新增发现。 |
workbench/workbench.css |
状态、焦点、滚动、响应式、变量、伪元素及残留选择器;U6、U9、U13、U14。 |
main.tsx |
普通/开发/性能入口与 RootErrorBoundary;入口已收束,异步边界见 U7。 |
sketch/Phase1SemanticRefFixture.tsx |
显式开发验证入口;不作为正常产品能力证明,不因 DEV 自动免除可访问性要求。 |
vi/AiraWordmark.tsx |
SVG 标记、隐藏装饰和 label;未新增发现。 |
viewer/ThreeViewport.tsx |
canvas 焦点、adapter 生命周期及所有 HUD 接线;U2、U3、U11 的调用链。 |
viewer/three/assembly/InSituAssemblySequenceHud.tsx |
工步/回放按钮及定位;U11,按钮已有名称。 |
viewer/three/assembly/InterferenceProbeHud.tsx |
干涉读数、定位;U11,读屏通知策略未实测。 |
viewer/three/assembly/KinematicDragHud.tsx |
角度、限位、帧率与定位;U11、U12。 |
viewer/three/assembly/MateManipulatorHud.tsx |
关闭、翻转、吸附与定位;U5、U11。 |
viewer/three/sketch/FaceSketchHud.tsx |
工具状态、选择语义、吸附与提示;U3、U5、U11。 |
workbench/CandidateFinishControls.tsx |
面选择、尺寸输入、真实操作回调;未新增证实缺陷。 |
workbench/FeatureGraphAuthoringControls.tsx |
高级参数输入和执行回调;未新增证实缺陷。 |
workbench/LiveWorkbenchApp.tsx |
Provider 与共享 Runtime 入口;未恢复平行执行器。 |
workbench/LiveWorkbenchRuntime.tsx |
初始化、切换项目、dispose、错误恢复;U1、U7。 |
workbench/LiveWorkbenchSurface.tsx |
场景/候选/协作组合及参数事件流;U2、U3;不把 UI 回调名等同成功提交。 |
workbench/MaterialControls.tsx |
RAC Select/ListBox、材料标识与回调;未新增发现。 |
workbench/RecentProjectsDialog.tsx |
列表、搜索、标题、删除与滚动;U6;已有 Heading title。 |
workbench/UiPreferences.tsx |
locale、I18nProvider、document.lang;未新增发现。 |
workbench/WorkbenchHud.tsx |
上下文参数、直接意图、焦点与 Escape;U10。 |
workbench/WorkbenchPerformanceHarness.tsx |
显式性能入口、相同 Live Runtime;不当作普通产品替身。 |
workbench/WorkbenchScene.tsx |
场景组合、拖放与导入冲突;U1、U8。 |
workbench/WorkbenchShell.tsx |
文件、云项目、社区、硬件组合;U14,不新增业务执行器。 |
workbench/WorkbenchStructureDock.tsx |
搜索、结构操作、选择标签及键盘;U10 的 IME 风险。 |
workbench/auth/AuthDialog.tsx |
标题、字段、Tabs、异步会话隔离;已有处理,延迟竞态仍未实测。 |
workbench/auth/OrganizationDialog.tsx |
组织选择与请求;当前项已有 aria-pressed,登录后操作未实测。 |
workbench/auth/WorkbenchUserHud.tsx |
登录/组织菜单入口;未新增发现,真实鉴权未验证。 |
workbench/bom/EngineeringBomDrawer.tsx |
native dialog、分类、表行和 CSV;U5、U13、U14;不因原生 table 直接判违规。 |
workbench/cloud/CloudProjectsDialog.tsx |
标题、搜索、账号归属及保存;inline width:560px 覆盖 palette 响应式宽度,且缺少整体短屏滚动约束,属 U6 同类静态风险;登录后内容未复现。 |
workbench/collaboration/CollaborationPresenceBar.tsx |
头像触发器、图钉模式和 token;U4、U5、U9。 |
workbench/collaboration/InSituCandidateCapsule.tsx |
共享提交能力与局部按键;已有 scoped shortcut 让权,未新增发现。 |
workbench/collaboration/InSituMateCapsule.tsx |
局部按键、RadioGroup、ToggleButton;已有组合态检查,未新增发现。 |
workbench/collaboration/SpatialPinOverlay.tsx |
坐标卡片、表单和提交快捷键;U10;远端图钉生命周期未实测。 |
workbench/community/CommunityPartsDrawer.tsx |
搜索、分类、加载与普通侧栏外壳;U5、U14;不能把非模态面板直接当缺失 focus trap 的模态框。 |
workbench/community/PublishCommunityModelModal.tsx |
标签 id、表单、loading 与发布;保留原生 label/显式 id 的有效关联,不采纳无证据的 RAC 必然失效结论;实际发布未执行。 |
workbench/console/WorkbenchConsole.tsx |
决策门禁、参数编辑、Disclosure 和样式;U9;参数 Enter/blur/IME 时序仅静态,未证明双重提交。 |
workbench/console/WorkbenchDesignCard.tsx |
证据、上下文和展开状态;defaultExpanded 不自动跟随 props 不是充分缺陷证据,未登记。 |
workbench/console/WorkbenchFlowStream.tsx |
过程投影与记录展示;未新增证实缺陷。 |
workbench/console/WorkbenchIntentChips.tsx |
意图动作、Toolbar/fieldset;不采纳嵌套本身违反语义的误报。 |
workbench/cots/StandardHardwareDrawer.tsx |
native dialog、分类/规格、真实插入回调;U5、U13、U14;共享 frame focus-visible 仍适用。 |
workbench/file-menu/WorkbenchFeedbackDialog.tsx |
RAC 弹层、标题、字段与反馈记录;未新增证实缺陷,未发出反馈。 |
workbench/file-menu/WorkbenchFileInputs.tsx |
隐藏文件选择器、accept 与菜单关联;U8。 |
workbench/file-menu/WorkbenchFileMenu.tsx |
文件动作、禁用状态、菜单及 tooltip;U8;禁用说明的键盘可发现性需运行复核。 |
workbench/file-menu/WorkbenchStorageRecoveryDialog.tsx |
DialogTrigger/Popover、标题与恢复动作;未新增证实缺陷,未执行清除存储。 |
workbench/file-menu/WorkbenchTransferNotice.tsx |
portal 通知、取消/关闭与布局;portal 本身不算缺陷,未新增证实缺陷。 |
workbench/ingestion/DropZoneOverlay.tsx |
格式声明、解析和错误展示;U8,动态通知的读屏效果未验证。 |
workbench/ingestion/ImportConflictModal.tsx |
标题、取消、新项目按钮与 palette 约束;U1;超长文件名/短屏是 U6 同类静态风险,未复现。 |
workbench/inspection/WorkbenchHealthCard.tsx |
展开、指标和短屏限制;已有 max-height 规则,未新增证实缺陷。 |
workbench/surface/AiProviderConnectModal.tsx |
Provider Radio、字段、异步归属与 Popover 滚动;当前 390×350 检查未复现 U6,不把 void async handler 本身判违规。 |
workbench/surface/header-auxiliary.tsx |
链接禁用、键盘焦点与 Header 接线;aria-disabled 保留 tab 次序不必然违规,未新增证实缺陷。 |
非 TSX 复核重点为 keyboard-shortcuts.ts、ingestion/cad-ingestion-engine.ts、viewer/three/interaction.ts、adapter.ts、gizmo/GizmoController.ts、sketch/FaceSketchController.ts 和四个装配 HUD 对应控制器的投影/回调;并沿 LiveWorkbenchSurface 确认参数执行路径。worker 另列的 54 个 TS 候选中存在“Active (or Dormant)”和“纯计算无问题”的模板结论,不能据此声称全部业务逻辑或生命周期通过。adapter 的 change listener 注册/移除函数不一致只能记为清理疑点,controls.dispose 与对象释放尚不足以证明持续内存泄漏。
协调器另行反查全 Web 源码的 DOM 创建、事件注册、样式写入与 Canvas 绘制,区分真实 UI 和 THREE.BufferGeometry.setAttribute/AbortSignal 等搜索误命中。补充覆盖如下;九个未接线 HUD 不包含在 55 个 TSX/CSS/HTML 的计数中。
| 非 TSX UI 位置 | 复核范围与结论 |
|---|---|
viewer/three/interaction.ts、adapter.ts、gizmo/GizmoController.ts、sketch/FaceSketchController.ts |
实际键鼠入口、事件移除、指针捕获和回调;U2、U3;interaction 本身使用匹配的 handler 移除,不虚报所有监听器泄漏。 |
viewer/three/assembly/{AssemblySequenceVisualController,InterferenceProbeController,KinematicDragController,MateManipulatorController}.ts |
badge 投影、可见性、拖动与调用端;U11;没有实际多体装配运行证据。 |
viewer/three/guides.ts |
背景 token 有 fallback;参考平面文字用 canvas sprite;disposeGuide 释放 geometry、material 和 sprite map,未新增证实缺陷。 |
viewer/three/presence-controller.ts |
协作者 Canvas badge、Three 几何与颜色;身份可发现性需同时由 DOM 投影承担,关联 U4;没有远端运行验收。 |
workbench/file-download.ts、exploded-view-controller.ts |
临时下载锚点随调用移除;前者明确把 URL 生命周期交给 transfer notice,后者立即 revoke;不能因前者函数内不 revoke 就判泄漏。 |
workbench/keyboard-shortcuts.ts、ingestion/cad-ingestion-engine.ts |
scoped/application 事件让权与导入能力;已有共享助手未覆盖 viewer 的独立快捷键,U1、U2、U8。 |
workbench/digital-twin-controller.ts:461 |
遥测、健康和校准 Canvas 仪表,U15;未发现产品导入。 |
workbench/hci-sandbox-controller.ts:257 |
破坏/证书 Canvas 仪表,U15;未发现产品导入。 |
workbench/machine-nexus-controller.ts:252 |
CNC/机器人/连接状态 Canvas 仪表,含固定已连接文字,U15;未发现产品导入。 |
workbench/mechatronics-controller.ts:297 |
电磁/热/执行器 Canvas 仪表,U15;未发现产品导入。 |
workbench/multi-axis-cam-controller.ts:277 |
CAM/RTCP/间隙 Canvas 仪表,U15;未发现产品导入。 |
workbench/point-to-cad-deviation-controller.ts:273 |
逆向几何 Canvas 仪表,含固定收敛文字,U15;未发现产品导入。 |
workbench/self-evolving-hardware-controller.ts:271 |
磨损/制造票据 Canvas 仪表,U15;未发现产品导入。 |
workbench/symbiotic-reactor-controller.ts:314 |
多物理场 Canvas 仪表,U15;未发现产品导入。 |
workbench/thermal-fluid-controller.ts:366 |
冷却/温度 Canvas 仪表,U15;未发现产品导入。 |
render-packet-objects、highlights、MateVisual/CamToolpath/FeaStress/TopoOpt 及 freeform/generative/minds-eye/hybrid/multibody 等搜索命中主要是 Three BufferGeometry 属性,不是 HTML 属性或 RAC 组件;它们的数学、求解与资源性能不在本次官方组件合规证明内。AI guard、sketch worker/client、storage-schema、agent coordinator 和 remote CAD 的监听命中属于 abort/worker/存储生命周期,不应冒充 UI 键盘绑定。
证据边界与误报处理
Section titled “证据边界与误报处理”RecentProjects 的尺寸、真实 DOM 和截图支持 U6;token 计算值支持 U9。其余登记项基于具体源码与调用关系,未执行实际 STEP 新项目替换、云账号/社区发布、远端协作、装配边缘操作或启动故障注入。没有真实读屏、强制颜色、完整语言/缩放和跨设备检查;不使用构建成功替代这些结论。
不采纳“React.SubmitEvent 不存在”“原生 dialog/table/textarea 或 inline style 自动违规”“受控状态和 void Promise handler 自动破坏 RAC”“字段不用 Label 必然失去已明确关联的 htmlFor/id”“fieldset 包含 Toolbar 必然冲突”“有 fallback 的变量都失效”“所有重复 CSS 选择器违反官方手册”等结论。COTS/BOM 的 DOM 没有离开 frame,因此不能根据 top layer 虚报所有 focus-visible 规则失效;但 ::backdrop 的减弱动画遗漏有单独源码依据。CSS 裁决必须核对消费者、级联和实际状态,组件裁决必须核对可达入口与回调。
交互边界的补充约束
Section titled “交互边界的补充约束”- 菜单与键盘共用
WorkbenchAffordance的按键、可用性和执行回调;修复 B 无响应、Alt+H 误开标准件库。输入控件、组合输入和弹层先处理自己的按键。 - 全局与画布快捷键共用可见浮层检测;RAC Dialog 的实际 DOM 不保证具有
aria-modal,需识别 dialog/alertdialog 角色,不能因焦点暂落 body 而允许背景命令叠开。 - 场景拖入计数在 dragend/窗口失焦时清理;草图模式隐藏普通选择 HUD、健康卡片、结构和参考面入口,保留未提交的局部输入和结构展开状态。选择操作只保留一个草图入口。
- 草图编辑独占建模交互;进入时停止装配播放和冲突模式,已有图钉草稿不能静默丢弃。运动拖动与干涉检查仍可协同使用。草图草稿消费 Escape 后不继续退出整个工具;工具接管的 pointerdown 不能在释放时再次触发选择。显式退出或提交后回焦画布。
- 场景局部坐标与窗口 client 坐标不能混用:内部 HUD 保留局部投影;固定 portal 使用 client 投影;绝对定位浮层按 offsetParent 换算。必须逐个核对生产者和消费者,不能全局给投影函数加偏移。
- 协作连接的异步回调属于具体 socket;断线禁止图钉写操作,发送失败保留草稿。客户端布尔返回只表示消息入发送队列,不代表服务端确认。换项目/账号清除原空间交互状态。
- 弹窗异步操作同时需要同步防重入和关闭/账号切换的请求失效处理;旧 finally 不能清除新请求的 busy 状态,列表失败不能伪装成空列表成功。
- CSS 调整限定到实际消费者。真实支架页面发现健康卡片按钮泄漏 UA 背景、HUD 操作行溢出、草图标题挤出工具栏、预设面板与健康卡片重叠,以及常驻状态提示在短屏覆盖工具栏。草图说明改用工具栏的 RAC 帮助弹层;控制台网格按 max-content 保留内容行高,通过容器滚动访问超出区域。保留可见焦点,不以全局替换尺寸/间距处理局部问题。
- 响应式头部允许换行,场景控件和控制台以实际布局行定位,不用最小头部高度推算坐标。控制台为两行草图控件留出空间;结构面板由外层统一滚动,避免可选子项改变网格轨道后裁掉底部操作。展开体检卡片始终位于视图工具下方。
官方依据仍为 React Aria Modal、FocusScope 与锁定版本源码。非模态原位交互不能无条件套用焦点圈闭;回焦也不能抢夺其他已打开弹层的焦点。帮助弹层有意覆盖背景工具,打开期间背景快捷键让位于弹层;这不等于常驻工具彼此遮挡。未自定义滚动条、Dialog 容器本身不匹配后代 focus 选择器,也不能单凭这一点证明可访问性失败。上述约束的当前运行验收与未验证范围只见 ACTIVE_TASK.md。
研究证据的适用边界
Section titled “研究证据的适用边界”原样机在 seed 23、10,000 实例的大型装配情景中,搜索 工位 73 模组 724 出料端:完整查询无匹配,结构片段缩至 9 个可见实例、2 个局部页,“出料端”保留为未证实线索。进入局部前后指令对象仍为空,原始搜索文字保留。退役前已在 390×350 复核目录无裁切及两局部页 2/7;方向键导航未完成真实按键复验。
该 fixture 含 10,000 个索引实例、100 个共享定义、20,000 条合成依赖边,一次仅显示约 15 个实例、5,256 个三角形。此前固定设备各 30 次已知 ID/路径定位 p95 约 39/38 ms,只测程序化查询和两帧取景,不含人找线索、全量几何渲染或真实 CAD 求值。轴向位置收据只是候选标量的零公差比较;安装接口缺少引用、谓词和公差证据,修正后的样机以 unknown 阻断,不能声称几何/关系检查通过。
语义身份、可见几何、依赖与检查、指代歧义的复杂度估计分别为 4/5、1/5、2/5、3/5,各轴不可相加。定位纠正 25/30、保持证据 23/30 仍是设计估计,没有新用户任务或真实 AI 成功率数据。独立任务比较必须控制正确性与总预算,分别测找对对象、识别未检查项和一次纠正成本,不能以删除入口或脚本通过证明改善。
入口与引用核对、格式、lint、类型检查和真实浏览器验收的当前结果只见 ACTIVE_TASK.md,不沿用样机检查作为产品通过证据。DOM 驱动的实际组件操作、原生键盘与读屏检查分别记录;未收到真实键盘事件时不能记为通过。没有新增 test/spec,也没有修改生产 schema 或已提交 Revision 语义。
编译身份目前覆盖整个 Web 源码;本轮源码变化会使旧构建保存的 realization 被 REALIZATION_REPLAY_IMPLEMENTATION_MISMATCH 明确拒绝。验收须在同一最终构建下创建、修改、保存与重开,不能放宽身份绑定以迁就旧数据。
真实预览仍需与 packages/aira-geometry-kernel/runtime/receipts/occt-feature-graph-runtime-v0.22.json 匹配的 sealed OCCT runtime,不能放宽摘要校验或将缺失运行证据记为通过。