chore: release 1.9.0 - #172
Merged
Merged
Conversation
…-0027) 双仓零生产消费者(#169 三项裁决,事实前提 studio#562 已闭环):包根删 4 值符号 + 8 类型,`src/hooks/` 只剩 bootstrap 组合根;`HarnessBootstrap` 删 hooks/pipeline 两字段、`bootstrapHarness*` 删 hookDefinitions/hookConfigs 两参数——唯一生产调用方 无参调用且不访问被删字段,零迁移成本。breaking 记 CHANGELOG Unreleased,发布级别 按 ADR-0027 决策 2 = 下一个 minor。 三道公共面冻结闸条目同步(barrel 源形状负钉 ×2 + 类型清单摘 8 项),4 个管线面测试 文件随迁删除,bootstrap 测试改写为新形状;hooks/CONTEXT.md、src/CONTEXT.md 术语行、 CAPABILITIES.md、CLAUDE.md 随改。
Standards 轴抓到 README.md 核心能力表仍宣称「Hook 管线:注册 → 排序 → 错误隔离 → 采样执行」,是本票改动亲手造出的不实陈述(README 不在 ADR-0022 决策 4 的历史快照 豁免清单内,仓内先例 ADR-0019 的同步文档集含 README)。ADR-0002 按该文件自己的先例 补 hook 侧失效注记:状态行加「2026-09-18 部分失效」+ 文末「后续变更」节,正文既有条 目一字未改。CHANGELOG 的文档清单随之改准。同表既有陈旧行「会话压缩」属 ADR-0022 那 车漏改,不在本票范围。
根因:capabilities-syncer 用 /^…$/gm 匹配幽灵行后 replace(''),`m` 下
^…$ 只框住行内容、不含行尾换行,删完留一个空行;CommonMark 以空行断表,
于是每撤一次登记就多切一刀(studio 存量已攒 40 处)。同函数末尾的
\n{3,}→\n\n 够不着——删一行只产两个换行。
- 删除改按行 split/filter/join,行尾随之消失(CRLF 一并处理,行内正则
尾上加 \r? 保持与旧 m 标志相同的匹配面)
- 新增排版收拢正本 normalizeCapabilitiesTableLayout:删两侧都是表格行的
空行段 + 收掉无数据行的表头/分隔行,表格外段落空行不动,幂等
- --check 与写模式共用该正本(判定面 = 返回内容与入参是否不同),故存量
脏行不再静默放过,且 check 报得出、fix 必清得掉(不重演 check 永不收敛)
- 收拢排在增删之后:本轮要往空表补新行时不误删表头
机器可检:__tests__/sync-docs-table-layout.test.ts(8 例,含中间行/末行/
目录条目行/CRLF 与两条反向闸)
对照 issue AC 与 CONTEXT.md 自述不变式复核 16eaf2c,实测出三条它没做到的: - 两张空表相邻时一轮收不干净:规则①吃掉两表之间的空行后,规则②在同一轮 只收得掉后一张,`--check` 报了、写模式修一次仍红(实测需两轮)。改为两条 规则跑到不动点,计数取各轮合计——「check 报得出、fix 必清得掉」是本票自述 的不变式,也是 ADR-0009 口径。 - 收拢会新产出 `\n\n\n`(收掉夹在两段散文之间的空表),而既有的 `\n{3,}→\n\n` 折叠跑在收拢之前,够不着。把折叠移到收拢之后一处,并删掉增删分支内那份重复。 - 排版收拢会删围栏代码块内的表格样式行:一块「表头+分隔行」格式示例被判空表 收掉(实测 8 行正文收成 6 行),且 `--check` 为此判红。给收拢加 ``` / ~~~ 块内行豁免。 刻意留下的口径不对称:幽灵行删除一侧**不**豁免围栏。登记条目由 capabilities-parser 全文扫描得出(ADR-0009),块内行同样算登记项;把删除也改成认围栏,块内示例引用的 已删文件会永远报成幽灵条目、`--check` 再也修不掉——该半改法实测令收敛闸转红,故 还原。两侧同认围栏属改 ADR-0009 登记面 + 连带 docs_freshness 判定,另票裁决。 另核实两点不属本票:① module 模式下整表收空后下一次写自动补目录表——修复前的 产物形状同样被 parseCapabilitiesFiles 解析为空集,两版行为一致,非本票引入; ② 4 空格缩进代码块(无围栏标记)内的样式行仍会被收拢,缩进 ≥4 与缩进表格本身 歧义,现有豁免取保守侧,记录不修。 测试:sync-docs-table-layout.test.ts 8 → 13 例(不动点、三连换行、两条代码块豁免、 收敛取舍各一)。四条新闸对 16eaf2c 逐条实测转红、改码后复绿;收敛闸另经反证。 验收:npx jest 全量 185 套件 / 2643 passed / 6 skipped、tsc --noEmit 与 eslint src 零错、build 绿、bin/harness.js check 铁律 3/3 + 指导原则 3/3、sync-docs --check --agents 零漂移;studio 真实 CAPABILITIES.md 过正本函数 40 处 → 0 处、幂等、 非空正文逐字保留,harness 自身文件零误报。CHANGELOG 补 #171 入账(16eaf2c 漏记)。
registry.test.ts 的 bin 端到端冒烟跑 `knowledge ls --json` 时不隔离数据面, 读的是本机真实知识库(实测 221 条 / 1.35MB JSON);CI 全新 checkout 上该库为空。 大的一侧 stdout 越过 spawnSync 缺省缓冲被 ENOBUFS 杀掉,status 变 null、stderr 零解释,报错看着像别名路由崩了(1.9.0 前置测试首跑即以此形状暴露)。 落地:① 用例经既有解析缝 KNOWLEDGE_BASE_DIR 指向临时夹具(FileKnowledgeStore.save 播一条条目),三条断言逐字不变;② runWithModuleProbe 收可选 extraEnv 形参并显式 抬高 maxBuffer——抬高不是本用例的修复手段,它管的是「超限不该以无原因被杀面目出现」。 对外行为变化 0 处:纯测试面,产品代码与包公共面零改动。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 harness-ship