开发体验与 provider 迭代

本轮保留静态 factory 和共享多态接口,减少产品开发与维护中不必要的工作。75 项执行台账 是任务状态权威;其可读视图保留相同字段:W1–W9 包含63 项软件工作,I-01–I-06 跟踪集成交付,H1–H6 需要连接实物设备。实现、软件执行与实板执行分别记录;软件机制不能关闭物理退出条件。

后续的 交付完善台账及其可读视图继续作为同一后续任务权威。它保留 N01–N14,并追加已接受的 A01–J04 工作分解,包括 X01–X05:全部维护模式的冷态生命周期、配置合同、公共消费、执行效率、交付、HIL 和环境恢复。这些任务保留原 75 项台账及其固定 P/E 证据。每行保留完整退出条件;迁移一个外设或准备好仪器,不能关闭整个家族或物理任务。硬件执行与正式软件候选各有独立退出条件,都不继承此前迭代状态。

实施顺序为覆盖清单与基线、C 生命周期与配置合同、家族及跨控制器迁移、公共使用配方,最后冻结集成。工具效率、交付报告与环境恢复可并行推进。物理执行须在真实站点准入后开展。当前架构图仍然适用:这些任务完善既有机制,不增加运行时层。实际状态仍记录在同一 CSV 中;工作分解不建立另一份支持矩阵,也不用于计算全项目完成百分比。

后续开发索引保留原始开发观察,不重标旧 P/E 结果。其后的冷态生命周期封存基线记录最终源码、完整门禁、固定示例消费、离线复现及合并后的关联。解释较早 pending 字段前,应先读取后续绑定源码的观察;仅有准备计划或成功配置查询不能关闭退出。

保持明确的边界

当前架构图仍然适用。一份产品 TOML 生成不可变 typed IR 和精确静态实例;CMake 选择源码。factory getter 返回已有只读 face。产品在本仓库之外拥有执行、存储、私有 PCB 与恢复策略。更易用的命令不建立第二份配置或构建权威。

工作包

交付机制与事实来源

退出证据

W1:应用入口

外部版本化模板与 dev.py create;SDK 维护独立

创建后的应用实际完成解析、构建与运行;模板与实际 SDK 身份分别记录

W2:配置

从 Board 查询绑定、经验证的 profile、人读解释、有效差异和编辑器 schema

正常拒绝与不可变解析结果仍是权威

W3:provider 边界

系列解析与 typed Construction;公共资源仲裁和原子发布

等价配置保持生成字节一致;迁移后的源码仍由 CMake 与 SDK 选择

W4:支持选择

现有 Board/SoC 事实、provider 模式、派生矩阵与明确未知项

精确路由、后端、模式、内存与证据相符;不建立第二份支持状态数据库

W5:生命周期使用

外部主循环、独占任务与共享 owner 配方;可选的复制事实诊断

借用、背压、取消、排空与 observer join 行为实际执行

W6:资源成本

实际链接变体、现有镜像报告与选定物理测量计划

等价成本规则区分已测差量和未执行的时序测量

W7:官方复用

锁定的厂家源码与一项有界的真实 HAL/SPL 评估

语义、链接成本与维护范围支撑唯一生产实现的选择

W8:执行效率

现有进程 receipt、定向开发与完整最终门禁

耗时记录保留未知项和失败;删除测试必须保留独立覆盖

W9:外部集成

真实示例应用、源码锁与公共 SDK 消费

平台 P 与示例 E 在最终交付关联中固定

源码归属与迁移

H743 DMA2D 组件位于 components/soc/stm32/stm32h743_frame_dma2d。公共头文件 nexus/components/frame_dma2d.h 与 CMake 目标保持稳定。这是私有源码归属修正,不增加多媒体或硬件支持。历史记录保留其对应版本中的路径。

explain 现在默认输出人读摘要;自动化必须使用 --json。可选 owner 观察增加准入事实并改变公共 sidecar 布局,源码消费方需要重新编译。新辅助函数不会向每个 provider 添加必需状态、分配全局注册表或释放借用存储。产品工作流说明这些变化。

官方库按精确操作评估复用。仅凭库名称不能确定时序或所有权。F4 HAL 参考范围为 USART1 有限 TX 与 DMA2 Stream7;它不是生产后端,也不是全部模式迁移。HAL v1.8.5 的 DMA 传输错误 IRQ 清理使用有界的 SystemCoreClock / 9600 使能位轮询;tick 等待位于独立的 DMA Init、Abort 和 PollForTransfer 路径。不能把所有正常有限 TX 或中断式 abort 描述为 HAL_GetTick 等待。官方 provider 合同继续约束 callback、deadline、唯一 owner 和完整排空。

当前决策保留唯一生产 LL/provider 状态机及 GD32 SPL 操作复用。真实 HAL 软件行为、当前生产 ELF 成本与不等价的 ARM handle 布局分别记录。参考实现尚未实现完整 NVIC 抢占/向量撤回、IRQ 唤醒、并发 RX、冷启动回滚或完整平台停止。升级为生产实现及比较等价完整镜像属于后续工作;本轮不提供 HAL 与 LL 的资源排名,也不声称替换生产实现。

以实际观察关闭任务

比较完整执行成本

普通行为变更的 TDD 门禁首先运行维护的 python tools/dev/dev.py doctor --target contracts profile。在昂贵的 Python 和 Native suite 之前,检查已准备且锁定的 Native/ARM 工具,不安装工具,也不要求 Docker。仅文档的暂存变更沿用现有快速路径。此预检不代替测试,也不建立软件资格。

只有在相同维护的正式计划、clean 源码和固定依赖上完成两次独立的完整执行后,才使用 dev.py timings --compare。每次执行必须通过可选的 qualify --environment 输入,绑定相同且已验证的 OCI environment-report 字节。该绑定记录已观察的输入身份,不证明 checker 在隔离容器中运行。缺少这种原始绑定的历史报告仍保留其原执行范围的有效性,但不能事后补入本比较。

从 clean 平台根目录执行:将 NEXUS_MEASUREMENT_ROOT 设置为容量充足的新输出父目录,将 NEXUS_ENVIRONMENT 设置为封存 OCI layout 的 environment.json,并将 NEXUS_COLD_CACHE_STATE/NEXUS_WARM_CACHE_STATE 设置为实际缓存准备说明。在每次执行前显式准备相应 cold 或 warm 条件。以下命令运行完整计划,不复用已有的成功测试报告:

python tools/dev/dev.py qualify --plan tools/dev/plans/software.json \
    --output "$NEXUS_MEASUREMENT_ROOT/cold" --environment "$NEXUS_ENVIRONMENT"
python tools/dev/dev.py qualify --plan tools/dev/plans/software.json \
    --output "$NEXUS_MEASUREMENT_ROOT/warm" --environment "$NEXUS_ENVIRONMENT"
python tools/dev/dev.py timings --compare \
    --plan tools/dev/plans/software.json --root "$PWD" \
    --cold-report "$NEXUS_MEASUREMENT_ROOT/cold/report.json" \
    --warm-report "$NEXUS_MEASUREMENT_ROOT/warm/report.json" \
    --cold-environment "$NEXUS_ENVIRONMENT" \
    --warm-environment "$NEXUS_ENVIRONMENT" \
    --cold-cache-state "$NEXUS_COLD_CACHE_STATE" \
    --warm-cache-state "$NEXUS_WARM_CACHE_STATE" \
    --json "$NEXUS_MEASUREMENT_ROOT/comparison.json"

两次执行都必须实际完整成功,且计划、阶段顺序、命令、原始输出流和独立 receipt 精确匹配。正式计划禁用编译器缓存;声明 warm 准备不会启用它。比较报告使用原始阶段命令墙钟区间的并集,排除空闲间隔并避免嵌套墙钟时长相加。Native producer 检查还验证当前共享构建输出,不证明每次 cold/warm 执行分别保留独立历史内部 Native XML/产物。缓存状态是声明,不是测得的 cache hit;汇总 CPU、进程树峰值 RSS 及相应差值仍为未知。成本比较不是资格,不能赋予变更后源码资格。命令存在本身不表示完整 cold/warm 测量已执行。

交接无签名的本地软件预览

托管 Actions 不可用时,tools/release/delivery.py 中显式的 prepare-local 命令(别名 bundle-local)从原始完整软件执行、SDK/consumer 包、文档与封存候选装配本地预览。verify-local 独立检查准备后的输出。使用本地预览合同与精确命令,选用新输出目录和预期 clean 源码提交。输入源码、固定依赖、原始已结束 receipt、SDK 身份与 candidate/document 范围必须一致;成功报告不复用为其他源码的资格。

该路径保留原始字节,恢复包时不重建或重新封存。其 trust 为 local_observation_no_oidc,签名状态为 unsigned,且 publication_authorized=false。它不伪造 Actions run、OIDC 或正式 release,不削弱现有发布门禁。实际远程发布仍是独立退出。

台账记录实际实现与证据路径,包括范围有限的开发测试。开发结果索引 保留已维护测试入口和观察范围;最终 PR/CI 关联在源码提交产生后记录。最终源码门禁、独立 SDK 消费与双语文档各有集成退出条件。预期的 CI 运行、模板 manifest 或旧版本结果都不能冒充当前源码的通过结果。

先创建平台提交 P,再将示例源码锁和 gitlink 更新为 P。随后在交付关联中记录示例提交 E 与 P。教程使用该记录提供的显式示例版本变量;两个仓库都不嵌入对方尚未产生的提交。正常评审与发布控制继续生效。

本轮未连接物理测试站。H1–H6 保持 not_executed:首发板启动与工具;串口/SPI/I2C 与恢复;IRQ/临界区延迟;连续 DMA/Cache;Flash/看门狗/停机;最终物理支持范围封存。准备的计划为以后真实执行保留未知 PCB 事实、测试站身份与数值验收限值。