FAMX 三块红测修复

所有者授权分支 famx-red-b:adapters.test.ts、specifications.test.ts、cases.test.ts;真实回归可修对应实现。本次附带修改 command-tree.ts、pack.json、本页及包 README。manual.ts、manual-links 归另一终端,本任务未修改。

根因与取舍

  • adapters 的旧命令树夹具包含引号错误,解析器容错恢复后按 R4 不再是完整权威 XML。保留该原件并断言拒收、缺失事实与出口;正向接线用已有独立声明的合成完整语法(本测试用 word 命令名 question)。签名正向调用必须传锁定树;正文提及逐字保留,不恢复散文抽取或漂移推断。
  • specifications 的许可文字不是闭集适用性字段,无锁定树也没有命令身份。断言原文、章节路径、版本出处、双未声明状态及补树出口,取消旧的正文许可/命令猜测期望。
  • cases 的旧 oracle 缺少 R2 标签声明、来源摘要与位置、完整命令身份及两种布局步骤字段;旧 prose story/bug 也不是 R6 整字段声明。保留语料独立命令路径、节点、计数及全部字段深比较,用共享结构语法检查身份和声明。模块按发布火车之后的目录层读取,不以目录词义排除。重排改了原件字节,必须核验新摘要与引用,再比较其余内容。
  • cases 看似挂起的原因是失败大数组断言同步生成巨型 diff;诊断中生产器约 0.2 秒返回,差异格式化持续占用 CPU/内存。改为先核数量再逐条完整深比较,失败只展示第一条,未删减测试或比较字段。显式批大小 50,不再读取已经撤销的 cases 批生产声明。
  • 实现回归:optional 非声明值已有逐位置 diagnostics,但又逐参数追加警告,挤占警告预算。按 diagnostics.attribute 完全相等汇总 optional 警告,保留所有位置、原值、缺失事实和出口;不同非法原值仍按同一结构字段计数。不改变参数未核规则。

合成验证

起点 7323dc67:adapters 21 过 / 4 失败,specifications 3 过 / 1 失败;cases 原文件卡在大数组失败格式化,诊断仅换逐条比较后 14 过 / 5 失败(19 项)。

完成:指定三文件 48/48;另 keyword-grammar 40/40;adoc 108/108;npm run typecheck 通过。测试并发上限 2。未接触真实源、设备、模型、环境配置或部署。