#5996 落地时(去 `??`、加具名报告行、让 skipped 行的 `fix` 引用真实解析出的 `dir`)按单内三件套收口,扫描消费半径时发现同类残留两处,按 PD #10 记录,不在该 PR 内顺手扩: ## 事实 1. **`packages/cli/src/commands/doctor.ts` — `installedPackageLedgerFailureCheck` 的 `fix`** 开头写死: ``` The ledger is the `.objectstack/installed-packages/` directory under the project root; it exists here, ... ``` 该行触发时(目录解析成功、`existsSync` 通过、读取抛出),doctor 手里**有**真实 `dir` —— #5996 之后它就挂在 reading 上(`InstalledPackageLedgerReading.dir`),只是这个 check 没接。与 #5996 第三件(`installedPackageLedgerSkippedEntriesCheck` 同一句字面量)完全同类,修法同形:签名加 `dir: string`,`fix` 引用之。#5996 的立单人只点名了 skipped 那处,故此处单列。 2. **`packages/cli/src/commands/package/install.ts`(约 L218)** 安装成功后的提示: ``` The manifest is cached under .objectstack/installed-packages/ on the runtime host and re-registers on every boot (survives restarts). ``` 这句描述的是**远端** runtime 主机上的目录 —— CLI 此刻并没有加载远端的 `@objectstack/cloud-connection`,无从读它的常量,所以这更接近「对惯例的描述」而非「消费端兜底」。列入是为完整:若哪天权威常量改值,这句 prose 会无声失真。可选修法:本地静态引用常量仅作展示(cli 已声明该可选依赖),或接受其为描述性文案并注明。 ## 判级 观察类:两处都不是今日可达的缺陷(该导出从未缺失过,值也从未变过),属 #5996 同一判断的延伸 —— 字面量是消费端替生产者代言。留 `finding`,随下次动这两个文件时顺手做掉即可。 --- _Generated by [Claude Code](https://claude.ai/code/session_017uFVNMmTxLpmfQYiuKM1Yx)_
Activity
os-project-manager commentedon Aug 8, 2026
认领此 issue。
session_017uFVNMmTxLpmfQYiuKM1Yxclaude/issue-6643-ledger-dir-literal-restatements先对
origin/main做前提核验(两处字面量是否仍在、DEFAULT_INSTALLED_PACKAGES_DIR是否仍导出),再逐处判断是否真的握有已解析目录值。Generated by Claude Code
Generated by Claude Code