
Archify Motion Governor 深度解析用 Live/Still 单控制器统一视图动画预算【免费下载链接】archifyAgent skill for beautiful, verifiable architecture, workflow, sequence,>项目地址: https://gitcode.com/GitHub_Trending/arch/archify导读本文围绕 Archify 视觉进化研究第 29 轮Round 29的核心结论展开在继续添加章节过渡效果之前先构建一个Motion Governor运动总控为自包含 HTML 工件中散落的多种动画头部脉冲、Signal Flow 扫描、trace 边/节点、Story Trail、Route Probe、Radar 等提供一个一个可见开关 一个运动所有者的治理层。读完本文你将掌握 Motion Governor 的状态词汇、运行时契约claim/release/suspend、Live/Still 按钮的交互与无障碍要求、减少动态与页面可见性生命周期、嵌入/打印/导出边界以及它在仓库 archify/assets/template.html 与 archify/test/motion-governor.test.mjs 中的实际落地形态。一、为什么先做总控而不是下一个转场效果Archify 到第 28 轮已经积累了足够多的优质运动原语但其问题是这些原语还没有一个统一的指挥者conductor。一个普通工件可能同时运行头部脉冲、Signal Flow 扫描、作者声明的 trace 边与节点、以及读者触发的 Story 或 Route 信号。Guided Story 播放拥有自己的计时器但它并不拥有页面其余部分的运动预算——结果就是在章节本该变得清晰的时刻画面反而显得杂乱。因此第 29 轮建议在下一个转场效果之前先加入工件顶部一个可见的Live/Still控件一个视图器级运动模式在首帧绘制前初始化同一时刻仅一个可替换的运动所有者motion owner当章节、焦点、路由、透镜或有界预览占据读者注意力时自动抑制环境ambient运动保留全部语义状态的完整静态回退动态的减少动态reduced-motion与页面可见性响应不改动 schema、渲染几何、图副本、依赖或导出状态。这不仅仅是无障碍清理。它提升的是产品的视觉层级当 Story Trail 移动时只有故事在移动当读者提出路由问题只有路由在回答当读者选择 Still同一件精美的工件依然完全可读。文档同时明确指出前景看好的共享锚点章节交接Shared-anchor Chapter Handoff必须紧随这一基础之后——若先加它等于给一个仍存在无治理无限运动的视图器再引入一种转场。仓库落地印证在本次研究的 Round 29 文档之后仓库已实际实现该方案。CHANGELOG.md中记录了Reader-controlled Motion Governor.Trace-enabled artifacts now expose one persistentLive/Stillcontrol that governs the complete viewer motion contract without changing authored SVG...对应实现位于 archify/assets/template.html 的Archify.motionGovernor模块L7080 起配套测试为 archify/test/motion-governor.test.mjs。二、调研范围与方法本轮建议基于以下证据来源当前的codex/archify-visual-evolutionworktree而非旧版本包完整的视觉进化轨迹初始 Fireworks 评审加第 2–28 轮当前视图器 CSS 与运行时所有权路径固定的开源提交与官方标准/产品文档Archify 既有边界一个确定性自包含 HTML 工件、一个规范 SVG、零运行时依赖、稳定语义 ID、视图器交互不引起布局突变。研究期间未改动任何源码、schema、fixture、生成工件或测试Round 29 只有本文件一份产出。Rounds 1–28 已覆盖的产品面Rounds已有产品面初始评审、2Fireworks 对比稳定 ID焦点画廊有界引导视图3对现有视图的定时 Play/Pause4–5问题优先的 recipes 与每个 recipe 一份生成证明6Classic / Signal Flow / Blueprint 三种身份与宽屏移动端包含7在实时工件之上的 Presentation Stage8Semantic Node Finder9proof-first 落地阶段10–11Relationship Lens 与精确边预览12Semantic Camera带桌面有界适配与移动端包含滚动13路径感知 Story Trail14–16一次性分享播放、Share Chapter Cue、Semantic Story Beats17Semantic Passport18Semantic Radar19有限 Intent Trace20–21Route Probe 与可搜索端点22Diagram Guide23Reading Depth / 语义缩放24Semantic Lens25有限的选中触发 Semantic Flow 与有限 Intent Trace26有限精确边 Relationship Pulse27选择性 Semantic Legend Bridge28Named Chapter Rail后期各轮的模式已清晰运动应当回答一个明确的问题、只有一个所有者、尽量有限、且不触碰规范图。该纪律在若干单个特性内已存在但尚未到达整个视图器层级——这正是 Motion Governor 的落点。三、当前 Archify 的运动现状证据3.1 视图器存在多个独立动画时钟共享模板当前声明了以下可见运动表面表面当前触发器当前生命周期语义角色.pulse-dot每个普通工件2s infinite装饰性实时状态Signal Flow 扫描每个 Signal Flow 工件6s infinite装饰性预设氛围Semantic Radar 实时点Radar 打开2.4s infinite方向面板状态Route Probe 流动一次路由结果1.45s infinite精确有向路径Story Trail 流动活动 Story 播放0.78s infinite受故事计时器约束当前作者章节authored trace 边meta.animation trace2.4s infinite环境整图方向authored trace 节点meta.animation trace3.6s infinite环境活动节点信号Lens / Intent / Relationship 脉冲明确选择或预览一次有限通过有界读者问题对应的声明位于模板的头部与预设样式archify/assets/template.html、Radar 样式L705-L752与运动规则L2635-L2936。11 个证明 fixture 中有 10 个选择启用 trace 运动其中 5 个还同时使用 Signal Flow因此多运动并发是主要产品路径而非罕见组合。3.2 Guided Story 并不拥有环境层一次性分享路径通过data-share-playback选择器刻意暂停了 authored trace。而手动 Story 播放正好相反startPlayback()移除data-share-playback、激活 Story 层、并启动 3.2 秒章节计时器。于是 authored trace 可以在 Story Trail 下继续Signal Flow 扫描与头部脉冲也照常运行。相关路径见模板中的 环境 trace 暂停选择器、手动 Story 启动 与 章节激活及 Semantic Camera 揭示。这不破坏状态但削弱了方向性读者看到不止一个移动的解释必须自行推断哪个运动属于所选的章节。3.3 减少动态局部强、全局不完整当前媒体查询正确地禁用了 Signal Flow 扫描、authored trace、Story、Radar、route、Lens、preview 与 camera/detail 转场但没有包含.pulse-dot。多个运行时模块各自独立调用matchMedia()且只有部分模块监听偏好变更。结果是一堆不错的单特性回退而不是一个可检查的有效策略未设置 OS 减少动态的用户也没有可见方式停止自动运动。相关代码见模板中的 减少动态块 以及 Guided Views、Intent Trace、Relationship Pulse、Semantic Camera 各自的媒体查询读取。3.4 隐藏页面与嵌入所有权不完整Guided 播放已在visibilitychange时暂停这是正确的环境 CSS trace 与装饰性预设运动则没有共享的隐藏页状态浏览器可能节流它们但 Archify 没有表达应用层不变量。嵌入模式隐藏大部分 chrome 并暂停 authored trace但 Signal Flow 容器扫描不受嵌入 trace 选择器约束——普通嵌入应当静止?embed1play1#view...应只允许被请求的有界 Story。3.5Archify.motion名称已被占用Archify.motion是公开的 WebM 录制表面提供canRecord()与recordWebm()。治理器绝不能替换或静默改变该 API应使用独立的所有者对象如Archify.motionGovernor并把显式运动导出与实时视图器偏好分开。参见 当前录制实现 与 动画契约测试。四、主要外部标准与开源对照结论4.1 WCAG长时间自动运动必须有可见停止机制WCAG 2.2 成功准则 2.2.2 适用于自动开始、持续超过五秒、且与其他内容并列的移动或闪烁内容要求提供暂停、停止或隐藏机制除非运动是本质必需的。WAI 技术 G186 对 Archify 尤其直接控件必须键盘可达、有名称、靠近顶部或与运动相邻并且一个控件可以停止页面上全部移动或闪烁内容。WCAG 2.3.3 还说明交互触发的非必需运动可被禁用Level AAA但符合 Archify 声明的质量目标与既有减少动态行为。借用一个明显的顶层控件所有自动运动都必须服从交互触发的 camera/pulse 运动必须有静态替代。不要窄化借用一个仅控制 Story 的 Play/Pause 按钮不足以作为 trace、scan、状态脉冲、Radar、route 运动的整页停止机制。4.2 Media Queries 与 CSS Animations区分偏好、暂停、停止Media Queries Level 5 将prefers-reduced-motion: reduce定义为移除或替换可能引起前庭不适或注意力分散的非必需运动。CSS Animations Level 1 将animation-play-state: paused定义为保留动画当前进度、稍后从该点恢复——适合读者暂停的语义时间线但未必是氛围atmosphere的最佳处理冻结的半透明脉冲或部分数据包可能看起来像坏了。环境装饰应回到完整静态基态有限运行时覆盖层应清理干净刻意暂停的 Story 应保留其明确的语义节拍状态。借用绘制前从 OS 偏好初始化集中实时媒体查询监听器区分停止环境装饰与冻结读者所有的语义故事。跳过把一条笼统的* { animation-play-state: paused }作为整个契约——它会留下过期的覆盖 DOM 与任意的部分视觉阶段。4.3 Fireworks运动最强时改变区域很小对照样本固定在其既有提交上。其评审过的运动契约保持节点、标签、容器、标记与相机固定只有路由在绘制并传递方向测量的参考循环只改变画布的小比例。同一个工件是无限循环 GIF而其交互式 HTML 查看器是独立的轻量 pan/zoom/export 表面——查看器为减少动态移除转场但没有暴露页面级运动控制器。借用固定几何、语义方向、小移动面积、经验证的运动角色、干净的查看器/导出边界。跳过把无限展示循环当作默认实时阅读模式——Archify 的交互工件能提供 GIF 无法提供的读者控制。4.4 Mapbox新相机所有者替换旧所有者运动可选其动画选项包括animate: false、时长/缓动与显式essential逃生舱easeTo()在开始新缓动前停止前一个并在偏好要求时将时长归零flyTo()回退为立即跳转。借用替换而非叠加零时长语义完成技术图表的相机运动绝不标记为 essential。跳过戏剧化飞越弧线、长时间缩小、惯性场景漫游或第二个持久相机模型——Archify 当前 480ms 有界适配已经足够。4.5 reveal.js转场之间需要稳定匹配与强制清理其 Auto-Animate 只连接兼容的幻灯片对使用稳定匹配可显式重启而非暗示连续性并在新运行前调用reset()移除 target 属性与注入的转场样式表。这对推迟的 Chapter Handoff 是有价值的证据只有稳定共享语义 ID 才能支撑连续性每个转场都需要原子清理它同样支撑治理器本身——新所有者必须在开始前清理前一所有者的运行时层。现在借用run 前 reset 与 owner-token 清理。稍后借用以稳定共享 ID 作为章节锚点。跳过FLIP 变换图节点、SVG morphing、全量不匹配元素淡入淡出、或 reveal.js 的幻灯片/运行时依赖。4.6 LikeC4章节交接有吸引力但应排在治理器之后其导航状态先读取当前视口、保留两个视图中都存在节点的屏幕位置、再落定目标视口不存在对应节点时使用有界回退而非假装存在共享锚点其 embed 与 export 页面刻意禁用或固定交互视图器状态。稍后借用选择稳定共享节点作为锚点、第一阶段保留其屏幕位置、封顶时长、无法证明连续性时直接切断。现在跳过在 Archify 能保证环境 trace、scan、pulse、route、Story 不与它竞争之前加入这份额外运动同时跳过其图替换、状态机/框架栈与视口历史。4.7 隐藏文档需要明确的生命周期决策HTML Living Standard 暴露Document.visibilityState与冒泡的visibilitychange事件用于可见/隐藏转换。借用隐藏 无活动视图器运动、无仅 CPU 动画所有权既有 Story 暂停行为应成为系统规则。不要自动重启回到可见时只有读者未选 Still 且无更强所有者时环境 Live 才可恢复暂停的 Story、route 脉冲或一次性预览必须等待新的显式动作。五、候选方案矩阵评分使用 1弱到 5强风险反转5 表示低产品风险 / 适合当前架构。候选方案即时读者价值方向/连续性视觉克制无障碍闭合移动/嵌入适配架构风险决策Motion GovernorLive/Still 单所有者555554立即构建共享锚点 Chapter Handoff45治理前 3治理前 233稍后紧随 GovernorRail/Radar 中的 Chapter Compass343424有读者证据后再说更长的飞至/总览 waypoint 转场342223跳过滚动驱动章节激活232212跳过布局 morphing 或移动共享节点221111跳过Governor 为何本轮胜出Named Chapter Rail 已解决发现性Semantic Camera 已提供有界转场Story Trail 与 Story Beats 已提供真实方向。下一处视觉增益不来自新的动画形状而来自保证正确形状是唯一在动的东西。Governor 还安全地解锁最佳后续候选一旦某个 Story 章节能成为唯一所有者共享锚点相机交接就可以在不与 trace、scan、节点脉冲、Route Probe 或 preview 运动竞争的前提下加入。六、推荐的运行时契约6.1 状态词汇只用视图器 HTML 状态绝不动 SVG 作者状态html[data-motionlive]允许运动html[data-motionstill]不允许任何可见视图器运动html[data-motion-ownerambient|story|focus|route|lens|intent|relationship|legend|radar|none]唯一允许花费运动预算的语义表面一个内部单调递增的所有者 token防止过期的animationend、计时器或清理回调释放更新的所有者。对外暴露独立运行时对象Archify.motionGovernor { mode(), owner(), setMode(live | still, options), claim(name, cleanup), release(token), suspend(reason) }既有Archify.motion.canRecord()与Archify.motion.recordWebm()导出面保持不变。6.2 首帧绘制前初始化既有的head早期 bootstrap 应在 body 可见前确定有效运动prefers-reduced-motion: reduce→still普通?embed1→still否则 →live?embed1play1#view...只可在一次性契约解析后进入live/story且所有环境选择器保持关闭媒体查询变为reduce立即强制 Still之后回到no-preference不会自动重启 Story 或一次性效果。不新增JSON 字段、URL hash 字段或必需存储依赖。尽力而为的 Still 偏好只能在命名空间浏览器键下、且访问异常安全时记忆。OS 减少动态偏好初始化 Still读者可为当前文档显式选择 Live但该覆盖从不跨刷新持久化新的系统reduce变更会再次强制 Still。6.3 可见控件在顶部工具栏加一个原生按钮紧邻 Theme / Present 而非放在 Guided Views 内部实现见 archify/assets/template.html 的btn-motion/motion-label可见文案为Live或Still外加一个非颜色图标实现中为.motion-control-dotLive 时可访问动作名为Turn diagram motion offStill 时为Turn diagram motion on动作在移动图表内容之前可达状态无需颜色、悬停、tooltip 或动画即可理解在 390px 或 320px 视口上至少 44×44 CSS 像素模板在media (max-width: 360px)下保证#btn-motion { min-width: 4.4rem }工具栏按钮min-height: 2.75rem在 Presentation Stage 中保持可见在嵌入与打印中隐藏它们有各自的固定契约不在 Story、Route、Radar 或行内创建第二个暂停按钮。既有 Story Play/Pause 仍然是推进的控件Governor 控制的是能否移动的许可。6.4 所有者替换claim / release / suspendclaim(name, cleanup)必须发布新所有者前停止并清理上一个瞬态所有者递增 token旧 cleanup 最多调用一次绝不让旧计时器/事件清掉更新的所有者所有者不是ambient时暂停全部环境运动有效模式为 Still 时拒绝可见动画同时允许语义操作瞬时完成。release(token)仅在以下全部成立时回到ambienttoken 仍匹配文档可见有效模式为 Live没有活动 Story/focus/route/lens 等持久读者状态仍持有场景。否则解析为none并给出完整静态图状态。仓库实现对应模板中的 motionGovernor 模块 实现了claim(next, cleanup)、release(token)token 不匹配即返回 false、clearClaim(preempted)try/catch 包裹 cleanup、suspend(reason)返回可幂等释放的计数句柄与deriveOwner()按 SVG 上data-story-playing、data-story-active、data-route-picking、data-lens-active、data-relationship-preview-active、data-intent-trace-active、data-focus-active、data-legend-preview-active等属性推导最强所有者。测试 motion-governor.test.mjs 的第 4 个用例专门断言ownerToken守卫与clearClaim(true)的抢占清理路径。6.5 运动分类当前表面Governor 处理头部.pulse-dot仅 ambientStill 下为静态可见圆点Signal Flow 扫描仅 ambientStill 下与每个读者所有者下均缺席authored trace 边/节点仅 ambient停止后完整 authored 图仍可见Radar 实时点仅 Radar 所有者Still 下为静态状态标记Story 进度、节拍、流动、share cue仅 Story 所有者既有暂停冻结语义节拍而非无意义的局部覆盖Semantic Camera从属于当前语义所有者Still 下零时长Route Probe 流动Route 所有者信号改为一次有限通过随后保留静态精确路由Intent Trace有限 Intent 所有者animation end/cancel/exit 时释放Semantic Flow有限 Lens 所有者密度守卫不变Relationship Pulse有限 Relationship 所有者既有清理不变Legend 预览仅预览激活期间为 Legend 所有者显式 Lens 激活前无移动流动面板入场转场/平滑滚动仅 Live 允许Still 下瞬时运动停止时不得隐藏或突变任何原始边、标记、标签、节点、路由或相机坐标。模板中html[data-motionstill]与html[data-motion-owner]的组合选择器L819-L896正是这一分类的 CSS 落地.pulse-dot、.diagram-container::beforeSignal Flow 扫描、svg[data-animationtrace] [data-animate]在 Still/有所有者时统一停摆而 Story Trail、Intent Trace、Route Probe、Semantic Lens、Relationship Pulse 等有限表面仅在 Still 下被冻结或隐藏覆盖层。6.6 Guided Views 与章节切换活动的 Guided View 即使播放暂停也应拥有场景选择章节先在 focus/camera/trail 更新前claim(story)环境 trace、Signal Flow 扫描、头部脉冲与无关 preview 运动在章节成为当前前停止当前 Semantic Camera 转场从属于story而非竞争所有者Story Trail 与所有选中节点/关系在 Still 下保持静态可读Play 只动画化 Story 进度、节拍与精确 Story 流动聚焦 Named Chapter Rail 暂停推进但保留 Story 所有者与静态选中章节切换章节原子替换 Story 实例旧节拍计时器、进度动画与覆盖层不得存活Show all 或 Escape 释放 Story环境运动仅当有效模式为 Live 才可能回归播放中切到 Still 在精确当前语义节拍处暂停恢复 Live 时绝不自动续播选中章节时切到 Live 不启动 Play只让显式 Play 动作再次可用。这样不新增转场即可让章节方向更易读只有当前 authored Story 可以移动。模板在 render() 中实现了暂停时若 Guided Story 在播则立即 pause、route journey 保持 elapsed 暂停测试第 3 个用例断言了Archify.guidedViews.isPlaying() → pause()与Story playback unavailable while motion is Still的行为。6.7 减少动态与生命周期保留 CSSmedia (prefers-reduced-motion: reduce)块作为无 JS 安全网模板 L3920-L3925、L4790 等把.pulse-dot及所有缺失的环境/入场选择器加入该回退在 Governor 中集中一个实时matchMedia监听器motionQuery.addEventListener(change, render)变更到reduce原子取消相机缓动、平滑滚动、Story 计时器、有限覆盖层、route 流动、环境 trace、扫描与状态脉冲选中的节点、精确路由、Lens receipt、当前 Story 节拍、rail 状态、Passport、标签与可访问名称保持document.hidden挂起全部运动并暂停 StorysyncVisibility()设置data-document-hidden并计数挂起回到可见从不重放已完成/已取消的一次性效果也不重启读者暂停的 Story环境仅在 Live 且无更强所有者时回归Still 状态绝不能通过display:none实现若该内容承载语义含义。6.8 移动端与触摸工具栏可换行但任何控件不得与 Named Chapter Rail、图导航或横向阅读面重叠Live/Still 命中区域至少 44×44 CSS 像素Still 下章节居中、Radar 重定心与包含式宽图揭示使用behavior: auto触摸章节激活仍是一击不要求悬停预览或第二击停止运动运动状态不改变页面宽度、SVG 宽度、移动端 720px 阅读面或滚动位置手动 swipe/pan/pinch/zoom 取消当前相机运动并暂停 Story与今天一致不得在读者手势上重启环境运动。测试第 5 个用例断言了.toolbar #btn-motion[hidden] { display: none !important }、min-height: 2.75rem、max-width: 360px下的min-width: 4.4rem以及html[data-embedtrue] .diagram-container::before的嵌入抑制。6.9 嵌入、打印与导出嵌入普通?embed1默认静止无该控件宿主拥有周边交互?embed1play1#viewid只允许有界 Story 所有者trace、scan、pulse、Radar、route、preview 运动保持关闭减少动态把该一次性效果转为当前完整静态章节与StillShare Chapter Cue 状态嵌入不引入全局键盘快捷键也不捕获父页面按键。打印始终显示完整、未变暗、完整的图不出现 Live/Still 控件、根运动状态、所有者状态、运行时覆盖层、转场或动画模板 L3001-L3004 的打印块已隐藏 toolbar 与各类覆盖层。规范 SVG 与光栅data-motion与data-motion-owner只留在 HTML绝不进入规范 SVGSVG 序列化按现状剥离瞬态所有者/覆盖层状态导出的 SVG 保留 authoredmeta.animationtrace语义——视图器 Only 的 Still 偏好不会静默改写源意图PNG/JPEG/WebP/copy 保持规范全图导出不含视图器控件或状态Story、所有者替换、Still 转场或取消覆盖期间的导出必须保持规范态 receipt 为真。WebM保留既有显式Download WebM — 6s motion动作与Archify.motionAPI录制是显式导出请求而非环境视图器播放Governor 不得改名、破坏或将自身序列化进录制Still 下的读者无需观看实时画布运动即可产出离屏显式导出。测试第 1、5 个用例验证了 SVG 块中不出现data-motion-*/motion-control并保留recordExportReceipt(svg, blob, d.canonicalStateClean)。七、借用 / 延后 / 跳过清单现在借用WAI 的单页顶部控件控制全部自动运动绘制前初始化一个有效 Live/Still 状态带 reset-before-run 清理的 token 化所有者任何命名章节激活期间 Story 为唯一运动所有者仅当无读者问题占据场景时允许环境 trace/scan/pulse有限 Route Probe 信号后跟完整静态结果模板中 Route Probe 流动为 1.1s 有限通过而非 infinite见测试断言archify-route-probe-flow 1.1s与doesNotMatch(...infinite)动态减少动态与可见性响应每个操作的静态语义完成既有稳定几何、有界相机、嵌入、打印与导出边界。延后到本切片验证之后共享锚点 Chapter Handoff选择previous.focus ∩ next.focus中最近的稳定 ID保留其初始屏幕位置再经由既有 Semantic Camera 落定无共享 ID 或真实边界时直接切断绝不发明连接器由既有章节与节点标签派生的紧凑02 → 03 · via Gateway转场 receipt而非新持久面板仅在读者已打开 Radar 时提供实时 Semantic Radar 视口反馈绝不自动打开尤其移动端一旦 Governor 能使其成为唯一运动表面加入 180–360ms 距离封顶转场。刻意跳过无新动画 DSL、keyframe schema、运动字段或章节转场 IR无 Web Animations 库、React、XState、图运行时、Mapbox、reveal.js 或 LikeC4 依赖无移动/重排图节点、边、标签、泳道、容器或边界无戏剧化飞越弧、视差、弹簧物理、缩放隧道、跨画布擦除或全图模糊无滚动位置自动章节激活无无限读者触发的 Route、Intent、Lens、Relationship 或章节交接循环无逐特性收集的 Pause 按钮无只认 OS 减少动态的隐藏偏好——普通读者也有可见 Still 控件不突变规范 SVG 以反映瞬态视图器偏好可见性或运动偏好变化时不自动重启暂停的 Story 或一次性效果。八、具体验收标准状态与控件每个生成的 HTML 工件顶部工具栏恰好一个原生 Live/Still 按钮Live 与 Still 同时使用可见文本与非颜色视觉提示按钮可访问名称描述激活将采取的动作键盘 Enter 与 Space 产生与指针/触摸相同的单一切换控件在文档顺序中先于移动图表内容可用无渲染器、引导面板、route 行、Radar 或 preview 添加重复运动切换根元素恰好暴露一个有效data-motion值、至多一个data-motion-owner值Archify.motionGovernor存在且不替换/改名Archify.motion的 WebM 方法。所有者仲裁与清理任意时刻至多一个所有者 token 是当前的声明新所有者至多调用一次先前瞬态清理过期 timeout、animationend、animationcancel、promise 或requestAnimationFrame回调不能释放更新所有者环境头部脉冲、Signal Flow 扫描、trace 边与节点仅在 Live 且ambient所有权下运行任何 Story/focus/route/lens/intent/relationship/legend 所有者在自身可见效果开始前抑制全部环境运动释放最后一个读者所有者仅在可见 Live 模式恢复环境Still 模式把每次 claim 解析为完整静态语义状态而不启动可见运动重复所有者替换后零重复运行时覆盖层、计时器、进度动画或移动类。Guided Views 与方向选择 Named Chapter Rail 任一项在 camera/focus/trail 状态更新前先claimStory已选但暂停的章节保持环境 trace、scan、头部脉冲静止Story Play 只动画化当前 Story 进度、节拍节点、到达关系与精确 Story 流动手动切换章节在新章节成为当前前清除旧节拍计时器、进度状态与 Story 覆盖层聚焦章节 rail 暂停播放但保留选中章节完整静态语义状态播放中切到 Still 冻结真实当前节拍与可访问状态不跳到 Show all 或其他章节切回 Live 绝不自动续播Play 保持显式Show all 与 Escape 释放 Story环境仅在 Live 时回归既有 Prev/Next、[、]、hash 恢复、Share Cue、Presentation、Story Trail、Named Chapter Rail 行为保持可用。运动清点.pulse-dot在 OS 减少动态与读者选 Still 下均静态Signal Flow 扫描、authored trace 边与节点在 Still 下缺席或重置到完整静态基态Route Probe 运动在五秒内完成一次有限通过无需无限动画即可读精确有向路由Intent Trace、Semantic Flow、Relationship Pulse 保留既有有限方向、密度与清理契约Still 下相机变换与平滑滚动立即解析最终取景/滚动位置正确Still 下面板入场转场零运动无 Still 处理隐藏语义节点、边、标签、route receipt、Passport 事实、Story 停止或 Lens 计数。偏好与生命周期初始 OSprefers-reduced-motion: reduce在首个可见动画帧前到达 Still实时媒体查询变更为reduce时原子停止环境运动、暂停 Story、取消相机运动并清理有限覆盖层回到no-preference不自动重启暂停 Story 或已完成一次性效果document.hidden挂起每个视图器运动源而不只是 Story 计时器回到可见只恢复被允许的环境 Live 状态刻意效果需要新读者动作无 JS CSS 减少动态回退仍产出完整静态工件。移动、嵌入、打印与导出390px 与 320px 下控件目标至少 44×44 CSS 像素且不与 rail、nav、图或导出控件重叠Still 章节居中与包含式宽图揭示使用立即滚动并保持零页面级水平溢出触摸激活完全对等从不要求悬停或第二击普通嵌入以静止启动、无 Governor 控件、零环境 trace/scan/pulse 运动embed1play1只允许有界 Story 所有者减少动态产出真实完整静态章节打印包含完整图且无 Governor 控件、所有者属性、移动覆盖层或变暗视图器状态每种模式/所有者转场期间的 SVG 导出保持规范态 receipt 为真且无 Governor 状态PNG、JPEG、WebP、复制 PNG 与独立 SVG 在 Live 与 Still 下均非空且确定显式 WebM 录制对 trace 工件仍经既有Archify.motionAPI 可用且无 Governor UI/状态嵌入、打印、规范 SVG、光栅输出、schema、验证器、渲染几何、稳定 ID 与包依赖在含义上不变。验证面聚焦测试枚举每个移动选择器使新的infinite动画无法静默绕过 Governor契约测试覆盖所有者 token 替换、过期回调拒绝、Story 接管、播放中 Still、无自动恢复、可见性、实时媒体查询变更、嵌入、打印与规范导出应用内浏览器验证覆盖一个 Signal Flow trace Workflow 工件、一个非 Signal Flow trace 工件、一个 Architecture 或 Lifecycle 工件浏览器验证覆盖桌面、390px、320px、深/浅色、Live/Still、Story 播放、章节切换、route 结果、Presentation Stage、嵌入、运动期间导出、零控制台错误最终截图显示一个活动命名 Story 章节其精确流动是唯一移动解释并有可见 Live/Still 状态完整单元套件、Proof Lab、ZIP doctor/demo/check、生成新鲜度与git diff --check全部保持绿色。九、决策与后续Round 29 应实现Motion GovernorLive/Still 单运动所有者。项目已赢得丰富的交互命名章节、语义相机、Story Trail、Story Beats、路由信号、关系脉冲、环境 trace、多预设与可导出运动。最高价值的下一步不是再添加一个独立漂亮的特效而是让整个工件表现得像一件设计过的乐器。成功的检验标准很简单读者应该总能知道某样东西为什么在动。Story 播放时只有 Story 在动路由回答时只有路由在动读者选 Still 时什么都不动也没有有意义的东西丢失。在该不变量被证明后共享锚点 Chapter Handoff 就成为一个有力的 Round 30 候选而不是又一处视觉竞争的来源。事实上仓库已经迈出了这一步Archify.motionGovernor的完整实现位于 archify/assets/template.html五种渲染器architecture / workflow / sequence / dataflow / lifecycle的继承验证见 archify/test/motion-governor.test.mjs而 Chapter Handoff 也已实现并通过 archify/test/chapter-handoff.test.mjs 的claim(handoff)/release(handoff.ownerToken)契约测试——它正是按紧随 Governor 之后的顺序落地的。读者可以直接查看这些文件对照本文的运行时契约逐条验证。【免费下载链接】archifyAgent skill for beautiful, verifiable architecture, workflow, sequence,>项目地址: https://gitcode.com/GitHub_Trending/arch/archify创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考