PR-01 · Node 单栈基座:入口 CLI + Skill 内核 + 安装器 + 拼音 + 测试移植 - #166
Open
titanwings wants to merge 15 commits into
Open
titanwings wants to merge 15 commits into
titanwings wants to merge 15 commits into
Conversation
重建说明:本提交由会话转录重建,提交信息取自原分支(ds/01-node-core)。 文件内容为集成分支上的最终态,不是当时那一刻的中间态——原分支的 per-commit 文件树随 /tmp 清空丢失,转录只保留了提交信息与 git add 的路径清单。 原提交信息:docs(site): add the repository README and the design-system reference
重建说明:本提交由会话转录重建,提交信息取自原分支(ds/01-node-core)。 文件内容为集成分支上的最终态,不是当时那一刻的中间态——原分支的 per-commit 文件树随 /tmp 清空丢失,转录只保留了提交信息与 git add 的路径清单。 原提交信息:docs(v2): freeze the dot-skill v2 contract before parallel work
重建说明:本提交由会话转录重建,提交信息取自原分支(ds/01-node-core)。 文件内容为集成分支上的最终态,不是当时那一刻的中间态——原分支的 per-commit 文件树随 /tmp 清空丢失,转录只保留了提交信息与 git add 的路径清单。 原提交信息:docs(v2): note that the host matrix ships from the integration branch
重建说明:本提交由会话转录重建,提交信息取自原分支(ds/01-node-core)。 文件内容为集成分支上的最终态,不是当时那一刻的中间态——原分支的 per-commit 文件树随 /tmp 清空丢失,转录只保留了提交信息与 git add 的路径清单。 原提交信息:docs(v2): add the Python-to-Node migration ledger
重建说明:本提交由会话转录重建,提交信息取自原分支(ds/01-node-core)。 文件内容为集成分支上的最终态,不是当时那一刻的中间态——原分支的 per-commit 文件树随 /tmp 清空丢失,转录只保留了提交信息与 git add 的路径清单。 原提交信息:feat(v2): port the skill preset registry to node
重建说明:本提交由会话转录重建,提交信息取自原分支(ds/01-node-core)。 文件内容为集成分支上的最终态,不是当时那一刻的中间态——原分支的 per-commit 文件树随 /tmp 清空丢失,转录只保留了提交信息与 git add 的路径清单。 原提交信息:feat(v2): wire the skill subcommands into the cli
重建说明:本提交由会话转录重建,提交信息取自原分支(ds/01-node-core)。 文件内容为集成分支上的最终态,不是当时那一刻的中间态——原分支的 per-commit 文件树随 /tmp 清空丢失,转录只保留了提交信息与 git add 的路径清单。 原提交信息:fix(v2): make the archived version listing deterministic
重建说明:本提交由会话转录重建,提交信息取自原分支(ds/01-node-core)。 文件内容为集成分支上的最终态,不是当时那一刻的中间态——原分支的 per-commit 文件树随 /tmp 清空丢失,转录只保留了提交信息与 git add 的路径清单。 原提交信息:fix(v2): print a registered command's bilingual help
重建说明:本提交由会话转录重建,提交信息取自原分支(ds/01-node-core)。 文件内容为集成分支上的最终态,不是当时那一刻的中间态——原分支的 per-commit 文件树随 /tmp 清空丢失,转录只保留了提交信息与 git add 的路径清单。 原提交信息:feat(v2): derive the pinyin slug table from unihan
重建说明:本提交由会话转录重建,提交信息取自原分支(ds/01-node-core)。 文件内容为集成分支上的最终态,不是当时那一刻的中间态——原分支的 per-commit 文件树随 /tmp 清空丢失,转录只保留了提交信息与 git add 的路径清单。 原提交信息:(未记录)
重建说明:本提交由会话转录重建,提交信息取自原分支(ds/01-node-core)。 文件内容为集成分支上的最终态,不是当时那一刻的中间态——原分支的 per-commit 文件树随 /tmp 清空丢失,转录只保留了提交信息与 git add 的路径清单。 原提交信息:(未记录)
重建说明:本提交由会话转录重建,提交信息取自原分支(ds/01-node-core)。 文件内容为集成分支上的最终态,不是当时那一刻的中间态——原分支的 per-commit 文件树随 /tmp 清空丢失,转录只保留了提交信息与 git add 的路径清单。 原提交信息:(未记录)
重建说明:本提交由会话转录重建,提交信息取自原分支(ds/01-node-core)。 文件内容为集成分支上的最终态,不是当时那一刻的中间态——原分支的 per-commit 文件树随 /tmp 清空丢失,转录只保留了提交信息与 git add 的路径清单。 原提交信息:(未记录)
重建说明:原分支删除这批 Python 文件是分几个提交做的,这里合并为一个删除提交;文件清单来自 git diff 的 D 状态记录。
titanwings
added a commit
that referenced
this pull request
Sep 15, 2026
两处「检查看起来通过了,其实什么也没说」: 1. **渠道行**:那条 `契约里其余渠道仍未移植(discord/reddit/notion/gmail)` 的判据恒为 `true`,证据来自 `PENDING_CHANNELS` 的映射 —— 等这张表空了 (八个渠道都落地了),证据字符串就变成空串:一条通过的检查, 什么也没读。现在改为正面断言八个渠道模块都存在,证据里逐个列出读过的 文件、缺失项与 PENDING_CHANNELS 的状态。 2. **推送行**:标题还写着「PR 尚未创建」,而 `ds/NN-*` 链与 PR #166–#185 都已经在了。判据(已推送 + 工作树干净)本身没错,标题改为它真正检查的 东西。现在审计报 **15/15 满足、0 条已知缺口**。 测试侧同步:`documented gaps` 不再要求 `discord` 出现在缺口里(那些渠道已经 交付),改为要求 `--skip-acceptance` 模式下「跳过了端到端验收」这件事必须 可见 —— 一条审计把「自己没查的东西」藏起来,正是这一行要防的失败模式。 验证: - `node --test tests/audit-objective.test.mjs` → 2/2(改动前 0/2) - `node scripts/audit-objective.mjs`(含真实浏览器渲染)→ 15/15、0 缺口 - 全量 → 350 通过 / 24 失败
这 19 个 PR 是堆叠的,base 是上一条 ds/* 分支,而 CI 的触发名单只有 [dot-skill-test, dot-skill, main],所以本分支的 push / PR 都不会触发工作流, PR 页面永远显示 no checks reported。这里只改触发条件,不动任何产品代码。
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.
本 PR:
ds/01-node-core-rebuilt→ds/00-baseline,14 个提交,11606 insertions(+), 10553 deletions(-)。本 PR 的提交清单
PR-01 · Node 单栈基座:入口 CLI + Skill 内核 + 安装器 + 拼音 + 测试移植
ds/01-node-core(12 个提交,已本地合并进dot-skill-test)1. 变更
c383fcasrc/skill/writer.mjs+src/skill/slug.mjs:Pythonskill_writer.py的 Node 移植,含拼音 slug3337c39src/skill/versions.mjs:版本归档(list / backup / rollback / cleanup),归档时间戳按 UTC 固定579b159version list输出一致f94675dscripts/parity.mjs:与迁移前 Python 的逐字节 parity 证据(按 rev 跑,不进日常门禁)441ceafsrc/commands/skill.mjs:skill create|update|list|version接进注册表9ebfa6esrc/install/hosts.mjs:8 个宿主安装器合并成一个模块(路径矩阵单一出处)3436730node --test(claude / codex / openclaw / hermes)43c837e--help打印双语两段f6dcf87listCommands()暴露命令名(供 doctor / prompt-lint / 审计共用)f97bc0cinstall/uninstall/doctor/legacy适配器(旧python3 tools/*.py调用转发 + deprecation 警告)28b0c32assets/pinyin.json:从 Unihan 生成,去掉pypinyin运行时依赖1da31aanode --test新增文件(节选):
src/commands/{index,skill,install,doctor,legacy}.mjs、src/cli/{args,receipt}.mjs、src/skill/{writer,presets,schema,slug,versions}.mjs、src/install/hosts.mjs、src/hosts/agents.mjs、assets/pinyin.json、scripts/{generate-pinyin,parity,acceptance}.mjs、docs/v2/{CONTRACT,ACCEPTANCE,STATUS}.md、tests/{dispatcher,commands,cli-lifecycle,skill-writer,pinyin-slug,install-*}.test.mjs、公开语料夹具
tests/fixtures/public-corpus/synthetic-interview/**。2. 验收(当前树,可复算)
node --test tests/dispatcher.test.mjs tests/commands.test.mjs tests/cli-lifecycle.test.mjs \ tests/skill-writer.test.mjs tests/pinyin-slug.test.mjs tests/install-*.test.mjs # 33 个测试文件、330 个 test() 块:node --test tests/*.test.mjs → 340 pass / 0 fail node bin/distilly.mjs --help # 22 个命令名,全部有中英两段 node bin/distilly.mjs doctor # 宿主矩阵 8 个宿主,逐个报告是否已安装 node scripts/parity.mjs <pre-migration-rev> # 历史 parity 证据(需要旧 rev)要点:零运行时依赖(
package.json无 dependencies);入口唯一(bin/distilly.mjs);--json在任何命令上只输出一个对象(tests/dispatcher.test.mjs断言);命令注册表是唯一注册点,两段式命令名优先(
skill create赢过skill)。3. 回滚
src/commands/legacy.mjs单独 revert 会让旧tools/*.py调用直接报未知命令。assets/pinyin.json是生成物:node scripts/generate-pinyin.mjs可重现(--check防漂移)。4. 已知缺口
scripts/parity.mjs需要一份迁移前的 rev 才能跑:parity 是历史证据,不是日常门禁。harvest/parse-*/view/collect由 数字生命 Loading...... #2/世界已经癫成这样了么? #3/这是整活的还是可用的? #7 交付。