@namewta/speculo 1.0.5 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/README.md +1 -1
  2. package/dist/src/kernel.d.ts +23 -2
  3. package/dist/src/kernel.js +9 -0
  4. package/dist/src/kernel.js.map +1 -1
  5. package/dist/src/ops-resources.d.ts +3 -0
  6. package/dist/src/ops-resources.js +188 -0
  7. package/dist/src/ops-resources.js.map +1 -0
  8. package/dist/src/refresh.js +20 -2
  9. package/dist/src/refresh.js.map +1 -1
  10. package/dist/src/structured.js +7 -0
  11. package/dist/src/structured.js.map +1 -1
  12. package/dist/src/workflows.js +1 -1
  13. package/dist/src/workflows.js.map +1 -1
  14. package/package.json +1 -1
  15. package/template/.speculo/README.md +3 -3
  16. package/template/.speculo/kernel/README.md +3 -0
  17. package/template/.speculo/kernel/checkpoint.schema.json +138 -4
  18. package/template/commands/archive-and-consolidate.md +5 -1
  19. package/template/commands/status.md +2 -2
  20. package/template/workflows/ops/D-project-deploy/D-project-deploy.md +34 -0
  21. package/template/workflows/ops/H-host-manage/H-host-manage.md +30 -0
  22. package/template/workflows/ops/I-initialize/I-initialize.md +28 -0
  23. package/template/workflows/ops/INDEX.md +15 -17
  24. package/template/workflows/ops/README.md +59 -93
  25. package/template/workflows/ops/_state/status.json +15 -3
  26. package/template/workflows/ops/common/CAPABILITIES.md +23 -0
  27. package/template/workflows/ops/common/USAGE.md +112 -0
  28. package/template/workflows/ops/common/examples/README.md +7 -0
  29. package/template/workflows/ops/common/examples/binding.example.json +12 -0
  30. package/template/workflows/ops/common/examples/compose-app.example.json +56 -0
  31. package/template/workflows/ops/common/examples/credential.example.json +9 -0
  32. package/template/workflows/ops/common/examples/environment-request.example.json +7 -0
  33. package/template/workflows/ops/common/examples/register.example.json +44 -0
  34. package/template/workflows/ops/common/examples/shared-allocation.example.json +37 -0
  35. package/template/workflows/ops/common/rules/activation-and-memory.md +5 -20
  36. package/template/workflows/ops/common/rules/persistence-and-secrets.md +27 -0
  37. package/template/workflows/ops/common/rules/recovery.md +15 -0
  38. package/template/workflows/ops/common/rules/shared-services.md +13 -0
  39. package/template/workflows/ops/common/schemas/allocation.schema.json +92 -0
  40. package/template/workflows/ops/common/schemas/approval.schema.json +41 -21
  41. package/template/workflows/ops/common/schemas/binding.schema.json +73 -0
  42. package/template/workflows/ops/common/schemas/deployment.schema.json +244 -0
  43. package/template/workflows/ops/common/schemas/host.schema.json +88 -0
  44. package/template/workflows/ops/common/schemas/plan.schema.json +1573 -0
  45. package/template/workflows/ops/common/schemas/project.schema.json +55 -11
  46. package/template/workflows/ops/common/schemas/spec.schema.json +1032 -0
  47. package/template/workflows/ops/common/schemas/status.schema.json +758 -17
  48. package/template/workflows/ops/common/service-profiles/custom.md +5 -0
  49. package/template/workflows/ops/common/service-profiles/docker-engine.md +11 -0
  50. package/template/workflows/ops/common/service-profiles/minio.md +7 -0
  51. package/template/workflows/ops/common/service-profiles/mysql.md +7 -0
  52. package/template/workflows/ops/common/service-profiles/redis.md +7 -0
  53. package/template/workflows/ops/common/templates/CONTROLLER-RECORD.md +13 -0
  54. package/template/workflows/ops/common/templates/EXECUTION-PLAN.md +15 -0
  55. package/template/workflows/ops/common/templates/HOST-README.md +11 -0
  56. package/template/workflows/ops/common/templates/PROJECT-README.md +15 -0
  57. package/template/workflows/ops/common/tests/test_ops.mjs +752 -0
  58. package/template/workflows/ops/common/tools/bootstrap.ps1 +18 -0
  59. package/template/workflows/ops/common/tools/bootstrap.sh +27 -0
  60. package/template/workflows/ops/common/tools/demo-local.mjs +101 -0
  61. package/template/workflows/ops/common/tools/ops.mjs +4 -0
  62. package/template/workflows/ops/common/tools/opslib/agent.mjs +873 -0
  63. package/template/workflows/ops/common/tools/opslib/cli.mjs +311 -0
  64. package/template/workflows/ops/common/tools/opslib/core.mjs +393 -0
  65. package/template/workflows/ops/common/tools/opslib/docs.mjs +252 -0
  66. package/template/workflows/ops/common/tools/opslib/execution.mjs +378 -0
  67. package/template/workflows/ops/common/tools/opslib/host_recipes.mjs +109 -0
  68. package/template/workflows/ops/common/tools/opslib/model.mjs +272 -0
  69. package/template/workflows/ops/common/tools/opslib/native_windows.mjs +36 -0
  70. package/template/workflows/ops/common/tools/opslib/planner.mjs +687 -0
  71. package/template/workflows/ops/common/tools/opslib/services.mjs +76 -0
  72. package/template/workflows/ops/common/tools/opslib/sources.mjs +56 -0
  73. package/template/workflows/ops/common/tools/opslib/transport.mjs +127 -0
  74. package/template/workflows/ops/common/tools/validate-ops.mjs +43 -1012
  75. package/template/workflows/ops/manifest.json +60 -1
  76. package/template/workflows/ops/runtime-contract.json +1 -6
  77. package/template/workflows/ops/A-archive-and-learn/A-archive-and-learn.md +0 -73
  78. package/template/workflows/ops/A-archive-and-learn/promotion-plan-template.md +0 -41
  79. package/template/workflows/ops/A-archive-and-learn/retrospective-template.md +0 -53
  80. package/template/workflows/ops/E-execute-and-stabilize/E-execute-and-stabilize.md +0 -82
  81. package/template/workflows/ops/E-execute-and-stabilize/attempt-summary-template.md +0 -44
  82. package/template/workflows/ops/E-execute-and-stabilize/diagnosis-template.md +0 -24
  83. package/template/workflows/ops/E-execute-and-stabilize/handoff-template.md +0 -32
  84. package/template/workflows/ops/E-execute-and-stabilize/rollback-template.md +0 -26
  85. package/template/workflows/ops/E-execute-and-stabilize/verification-state-template.json +0 -30
  86. package/template/workflows/ops/E-execute-and-stabilize/verification-template.md +0 -55
  87. package/template/workflows/ops/H-computer-hygiene/H-computer-hygiene.md +0 -105
  88. package/template/workflows/ops/H-computer-hygiene/examples/README.md +0 -9
  89. package/template/workflows/ops/H-computer-hygiene/examples/linux/2026-09-14.environment.md +0 -45
  90. package/template/workflows/ops/H-computer-hygiene/examples/linux/2026-09-14.json +0 -970
  91. package/template/workflows/ops/H-computer-hygiene/examples/linux/2026-09-14.md +0 -216
  92. package/template/workflows/ops/H-computer-hygiene/examples/macos/2026-09-14.environment.md +0 -45
  93. package/template/workflows/ops/H-computer-hygiene/examples/macos/2026-09-14.json +0 -970
  94. package/template/workflows/ops/H-computer-hygiene/examples/macos/2026-09-14.md +0 -216
  95. package/template/workflows/ops/H-computer-hygiene/examples/windows/2026-09-14.environment.md +0 -45
  96. package/template/workflows/ops/H-computer-hygiene/examples/windows/2026-09-14.json +0 -969
  97. package/template/workflows/ops/H-computer-hygiene/examples/windows/2026-09-14.md +0 -216
  98. package/template/workflows/ops/H-computer-hygiene/references/00-sources.md +0 -58
  99. package/template/workflows/ops/H-computer-hygiene/references/01-safety.md +0 -52
  100. package/template/workflows/ops/H-computer-hygiene/references/10-windows.md +0 -47
  101. package/template/workflows/ops/H-computer-hygiene/references/11-macos.md +0 -46
  102. package/template/workflows/ops/H-computer-hygiene/references/12-linux.md +0 -13
  103. package/template/workflows/ops/H-computer-hygiene/references/20-toolchains.md +0 -83
  104. package/template/workflows/ops/H-computer-hygiene/references/21-path-migration.md +0 -64
  105. package/template/workflows/ops/H-computer-hygiene/references/22-repositories.md +0 -35
  106. package/template/workflows/ops/H-computer-hygiene/references/30-software-removal.md +0 -41
  107. package/template/workflows/ops/H-computer-hygiene/references/40-report-spec.md +0 -54
  108. package/template/workflows/ops/H-computer-hygiene/references/50-speculo-integration.md +0 -26
  109. package/template/workflows/ops/H-computer-hygiene/references/source-register.json +0 -406
  110. package/template/workflows/ops/H-computer-hygiene/rules/catalog.json +0 -191
  111. package/template/workflows/ops/H-computer-hygiene/scripts/hygiene.py +0 -1348
  112. package/template/workflows/ops/H-computer-hygiene/scripts/run.ps1 +0 -7
  113. package/template/workflows/ops/H-computer-hygiene/scripts/run.sh +0 -5
  114. package/template/workflows/ops/H-computer-hygiene/templates/config.example.json +0 -13
  115. package/template/workflows/ops/H-computer-hygiene/templates/maven-settings.fragment.xml +0 -6
  116. package/template/workflows/ops/H-computer-hygiene/templates/native-evidence.example.json +0 -19
  117. package/template/workflows/ops/H-computer-hygiene/tests/cli_smoke.py +0 -65
  118. package/template/workflows/ops/H-computer-hygiene/tests/make_examples.py +0 -114
  119. package/template/workflows/ops/H-computer-hygiene/tests/test_hygiene.py +0 -486
  120. package/template/workflows/ops/I-intake-and-assess/I-intake-and-assess.md +0 -73
  121. package/template/workflows/ops/I-intake-and-assess/change-status-template.json +0 -26
  122. package/template/workflows/ops/I-intake-and-assess/collector-catalog.md +0 -28
  123. package/template/workflows/ops/I-intake-and-assess/deployment-dossier-template.md +0 -62
  124. package/template/workflows/ops/I-intake-and-assess/global-change-status-template.json +0 -26
  125. package/template/workflows/ops/I-intake-and-assess/project-detection.md +0 -38
  126. package/template/workflows/ops/I-intake-and-assess/request-template.md +0 -44
  127. package/template/workflows/ops/I-intake-and-assess/system-report-template.md +0 -34
  128. package/template/workflows/ops/I-intake-and-assess/target-profile-template.json +0 -24
  129. package/template/workflows/ops/P-plan-and-approve/P-plan-and-approve.md +0 -72
  130. package/template/workflows/ops/P-plan-and-approve/plan-review-template.md +0 -78
  131. package/template/workflows/ops/_state/archive/.gitkeep +0 -1
  132. package/template/workflows/ops/_state/changes/.gitkeep +0 -1
  133. package/template/workflows/ops/common/rules/artifact-contract.md +0 -38
  134. package/template/workflows/ops/common/rules/closure-and-learning.md +0 -27
  135. package/template/workflows/ops/common/rules/evidence-and-redaction.md +0 -22
  136. package/template/workflows/ops/common/rules/execution-loop.md +0 -27
  137. package/template/workflows/ops/common/rules/path-and-scope-contract.md +0 -21
  138. package/template/workflows/ops/common/rules/plan-and-approval.md +0 -25
  139. package/template/workflows/ops/common/rules/project-and-change-scope.md +0 -20
  140. package/template/workflows/ops/common/rules/target-profile-and-release-gates.md +0 -44
  141. package/template/workflows/ops/common/schemas/attempt.schema.json +0 -42
  142. package/template/workflows/ops/common/schemas/change-status.schema.json +0 -43
  143. package/template/workflows/ops/common/schemas/deployment-model.schema.json +0 -26
  144. package/template/workflows/ops/common/schemas/implementation-plan.schema.json +0 -221
  145. package/template/workflows/ops/common/schemas/inventory-snapshot.schema.json +0 -31
  146. package/template/workflows/ops/common/schemas/journal-event.schema.json +0 -22
  147. package/template/workflows/ops/common/schemas/promotion-approval.schema.json +0 -20
  148. package/template/workflows/ops/common/schemas/promotion-manifest.schema.json +0 -22
  149. package/template/workflows/ops/common/schemas/target-profile.schema.json +0 -32
  150. package/template/workflows/ops/common/schemas/verification-state.schema.json +0 -30
  151. package/template/workflows/ops/common/tools/close-change.mjs +0 -177
@@ -1,64 +0,0 @@
1
- # 持久化路径归一化:执行与回滚方案
2
-
3
- ## 目标布局
4
-
5
- 建议只针对用户自己管理的开发环境采用下述逻辑布局。Windows 的默认 DevRoot 是 `%LOCALAPPDATA%\Dev`;macOS 是 `~/Developer/.tooling`;Linux 是 `~/.local/share/dev`。用户可以指定其他绝对路径,脚本只生成方案,不写入配置或创建新 SDK。
6
-
7
- ```text
8
- DevRoot/
9
- data/ # runtimes、受管工具、包含持久状态的数据
10
- cache/ # 每个工具独立子目录;可重建不代表可以无条件删除
11
- config/ # 仅支持迁移的配置;保留必要的官方配置锚点
12
- bin/ # 必要且明确归属的可执行入口/官方 shims
13
- tmp/ # 明确归属的临时工作区域,不替代全部系统临时目录
14
- ```
15
-
16
- “统一”是一个清晰的权威来源和可理解的目录规则,不是所有文件强行放同一盘。系统/安装器路径不动;pnpm、编译、权限和卷特性要求不同盘时,用同样的组织规则并登记例外。Windows 原生、WSL、容器、x64、arm64 分别规划,不混用 SDK 或二进制缓存。
17
-
18
- ## 第一步:冻结证据与保全
19
-
20
- 记录每个工具当前 PATH 命中、实际版本、管理器/安装来源、项目 pin、配置优先级、持久变量以及 IDE/CI 使用者。静态扫描不能证明生效时,补可信原生查询或保留未知。包含源码、credentials、用户工具和本地未发布依赖的目录逐项识别。
21
-
22
- 在本机私密目录备份配置原文件、权限、环境变量原值和类型,并保存清单与校验值。不要导出完整环境或把私有仓库凭据复制到报告。区分“配置备份”“可重新下载的缓存”和“唯一数据备份”;后者必须有实际可读的副本,不能只保存路径列表。
23
-
24
- 关闭 IDE、daemon、构建、安装器和相关工具。记录验证项目和离线需求。迁移期间不运行清理,避免源/目标状态同时变化。
25
-
26
- ## 第二步:决定主管理器与单一配置来源
27
-
28
- 优先保留现有工作正常、来源清楚的主管理器。mise/asdf 只是候选统一层,不在未核验平台/插件支持时替换所有工具;rustup 和 uv 可以分别管理它们擅长的内容。不要为了“看起来统一”额外叠加管理器。
29
-
30
- 确定 PATH 的维护入口,避免系统变量、用户变量、shell profile、管理器初始化、IDE 和 `go env -w` 多处互相覆盖。保留项目级版本 pin、wrapper、lockfile。官方 shims 可以存在;不要用新的手工符号链接/目录联接掩盖未解决的旧配置。
31
-
32
- ## 第三步:按数据类型选择迁移方法
33
-
34
- | 类型 | 推荐方法 | 不能默认做的事 |
35
- | --- | --- | --- |
36
- | 纯缓存 | 让工具在新配置路径重建,验证后再确认旧缓存清理 | 把移动缓存当成永久空间回收 |
37
- | Maven local repository | 先保全本地 install 产物;合并配置后验证 | 删除整个 `.m2`、覆盖 settings 中认证/镜像 |
38
- | 管理器安装的 JDK/Node/Go | 采用受支持的重新安装/迁移方法,保留版本 pin | 直接剪切含绝对路径的安装树后修改 PATH |
39
- | Cargo/Rustup Home | 保全工具、配置、凭据、override;按官方支持迁移 | 只搬 registry 却丢失 bin/credentials,或清空全部 Home |
40
- | Python/uv 工具/项目 venv | 从已保全依赖重建,检查 editable/本地包 | 假设 venv 任意位置均可直接搬动 |
41
- | 全局 Node/Go/Cargo 工具 | 精确列明工具身份、版本、来源,按新入口重装/修复 | 把 bin 当缓存、盲拷 shell shim 或原生扩展 |
42
- | 系统/安装器管理路径 | 使用官方修改安装或重装流程 | 手改注册表/收据或移动 Program Files/Homebrew 安装树 |
43
-
44
- 工具行为与变量来源按 [20-toolchains.md](20-toolchains.md) 和 [00-sources.md](00-sources.md) 核验。
45
-
46
- ## 第四步:先会话测试,再持久化
47
-
48
- 先在独立终端中调整某一个生态的会话环境,验证路径解析和最小工作负载。不要一次改所有语言。通过后备份并修改唯一的持久化入口;采用可重复应用的定点修改,不往 profile 反复追加同一块配置,不覆盖其他程序维护的 PATH。
49
-
50
- Windows 分别处理用户和机器环境、REG_SZ/REG_EXPAND_SZ 及原始顺序,不用 `setx PATH` 拼接全量覆盖。macOS 分别验证登录 shell、交互 shell和 GUI/IDE,不假设 `.zshrc` 能配置所有进程。任何需要启动新进程才能生效的更改均标明;当前终端结果不能替代新会话验证。
51
-
52
- ## 第五步:验收矩阵
53
-
54
- JDK/Maven:解析正确,IDE 和 wrapper 使用预期 JDK,代表项目可构建,本地未发布依赖仍可用。Node/pnpm:版本/prefix/store 正确,既有全局工具和代表项目正常,锁文件没有未经批准变化。Go:SDK、模块/构建缓存、GOBIN、toolchain 指令与代表测试一致。Rust:rustup default/override/targets、cargo 安装工具和项目可用。uv/Python:解释器、项目 venv、tool 入口、editable 依赖及锁文件正常。
55
-
56
- 网络下载、包脚本执行、构建 hook 和测试副作用需要在验证前说明。验证只涵盖被测范围;没有逐项目检查时不能声称全机兼容。新终端、重启后的 IDE 和相关后台任务分别验收。
57
-
58
- ## 第六步:回滚与退出旧目录
59
-
60
- 配置层失败时恢复备份的原值、类型、权限和解析顺序,重新开启终端。SDK/虚拟环境安装失败时保留原安装和旧环境,恢复主用入口。隔离缓存可用 receipt 恢复,但源目录已被重建时不能覆盖,必须人工处理。
61
-
62
- 只有在验证完成、唯一数据已保全、旧入口不再被任何已知项目/任务使用,并且用户明确批准后,才把旧目录转入独立清理计划。保留期由用户选择,不硬编码“过 N 天自动删除”。永久清理没有本脚本自动回滚保证。
63
-
64
- 报告为每个生态记录迁移前/后、改动文件、确认 ID、验证结果、例外和回滚位置;失败或未执行写清楚,不把建议映射画成既成事实。
@@ -1,35 +0,0 @@
1
- # 仓库、构建产物与“安装不规范”识别
2
-
3
- ## 不以路径名判定可删
4
-
5
- 仓库克隆在 Downloads、Desktop、临时目录、某个 SDK 旁边,可以标记为组织结构待审查,不因此认定是垃圾。Cargo 的 Git checkout、Go module cache、包管理器下载的源码也可能是正常管理行为;先识别所有者和用途,不能见到 `.git` 就把它称为非法仓库。
6
-
7
- 默认只扫描用户明确授权的项目根,不遍历整个 Home 或磁盘。目录标记、多个 Node lockfile 和构建产物名称是线索,不证明重复、无主、未使用或可删除。Git 命令默认不运行,防止未知仓库配置、过滤器、fsmonitor 或工具链产生副作用。
8
-
9
- ## 仓库保全清单
10
-
11
- | 问题 | 需要的证据 | 未完成时的结论 |
12
- | --- | --- | --- |
13
- | 是否有未提交/未跟踪/忽略但重要的文件 | 可信仓库的状态、文件所有者说明、构建/数据用途 | 保留整个工作区 |
14
- | 是否有未推送提交、其他分支或 stash | 分支/上游、各相关 refs、stash;不能只看当前分支 | 不删除 `.git` 或仓库 |
15
- | 是否关联 worktree / submodule | gitfile 指针、实际关联关系与本机支持的原生清理 | 不把 `.git` 文件认作损坏或残留 |
16
- | 是否有 LFS、本地依赖或未发布包 | 对象与远端可用性、离线需求、Maven/Cargo/Go 本地状态 | 保留并备份唯一对象 |
17
- | 看似重复的克隆是否真的可替代 | 远端身份、各分支/提交、工作区内容、项目配置 | 同名/同远端不是重复证明 |
18
- | build/dist/target 是否可重建 | 生成规则、版本控制、源码目录和项目所有者确认 | 人工候选,不自动删除 |
19
- | node_modules/.venv 是否仅依赖安装 | lockfile、editable/local path、原生扩展、离线要求 | 不自动删除或简单搬动 |
20
-
21
- Git 状态、worktree 和 clean 的官方核验入口为 [GIT-1](00-sources.md#git-1)、[GIT-2](00-sources.md#git-2)、[GIT-3](00-sources.md#git-3)。读取 Git 状态前确认仓库与执行程序可信;配置过滤器等风险不能被“只是 git status”掩盖。
22
-
23
- ## 建议的整理方法
24
-
25
- 将个人源码统一到明确项目根,如 `~/Projects` 或自行选择的开发盘,按组织/项目分层。不要把源码放在可清理缓存根或由 SDK 卸载器管理的目录。不同 clone、worktree、fork 和实验副本保留唯一名称及用途说明。
26
-
27
- 迁移前保存 Git 和本地依赖证据,确定 IDE workspace、任务、脚本、路径依赖、虚拟环境和外部配置是否指向旧位置。移动仓库后重建不支持重定位的环境并验证,不直接删除旧路径来测试“有没有人还在用”。
28
-
29
- 项目工具通常优先 wrapper、项目 pin 和 lockfile,而不是用全局版本替代所有项目。一个项目出现多个 Node 包管理锁文件可提示团队确认管理器,但可能处于迁移期;不自动选最新或最小的那个,其余删掉。
30
-
31
- 不默认执行 `git clean -fdx`、`git gc --prune=now`、`git reset --hard` 或按相同远端批量删除克隆。即使先做 dry-run,预览也不是删除授权。不可复原的 Git 对象、未提交资料和忽略文件必须保全。
32
-
33
- ## 重复文件
34
-
35
- 默认脚本只列下载目录的安装包、压缩包及大文件元数据,没有计算全盘内容哈希。文件名、大小、修改时间相同只能产生待复核候选,不能证明重复。后续精确去重应独立授权读取范围,跳过云占位/链接,区分硬链接、克隆、备份语义和内容完全相同但用途不同的文件。即使哈希相同,也需选择保留位置并检查引用关系。
@@ -1,41 +0,0 @@
1
- # 多余软件与卸载残留治理
2
-
3
- “彻底清理”应表示清楚识别应用本体、后台组件、配置、个人数据和共享依赖,再按选择处理每一层;不是删除所有名称相近的目录。没有可靠使用记录时,不能用文件访问时间推断软件不再使用。
4
-
5
- ## 身份与冗余判断
6
-
7
- 先确认产品、发行商、精确 ID/bundle ID、版本、架构、安装范围和来源。多个注册表条目可能是同一安装;相同应用的 x64/arm64、长期支持版/开发版、用户版/机器版、商店版/传统版不自动等价。软件是否多余还取决于项目、插件、驱动、后台任务、许可证和其他使用者。
8
-
9
- 默认脚本没有完整软件使用频率、所有安装来源、服务/计划任务、系统扩展和全部收据证据。输出“需要人工核实”而不是“可全部卸载”。共享 VC++/.NET/WebView2、驱动、系统 Python/Java 和公共厂商组件默认保护。
10
-
11
- ## 分层执行
12
-
13
- | 层级 | 需要用户选择/证据 | 执行与验收 |
14
- | --- | --- | --- |
15
- | 应用本体 | 精确身份、依赖、是否保留版本 | 官方卸载器或原生管理器,记录结果与重启需求 |
16
- | 后台组件 | 服务/任务/登录项/扩展的实际归属及加载状态 | 按供应商卸载流程,验证不再加载;不能只删文件 |
17
- | 应用配置 | 是否保留以后重装使用 | 逐目录/键确认,备份后清理明确归属项 |
18
- | 个人数据 | 导出、备份、账号/许可证、删除范围 | 与卸载本体分开授权;未授权默认保留 |
19
- | 缓存/日志 | 离线/诊断需求、进程状态 | 优先应用或管理器原生命令,验证占用变化 |
20
- | 共享依赖 | 所有已知消费者和系统依赖 | 不因一个应用卸载就级联删除 |
21
- | 路径/入口 | 真实 PATH 来源、快捷方式/shim 和归属 | 仅移除失效的对应入口,保持其他工具顺序 |
22
-
23
- Windows 卸载入口核验 [WIN-3](00-sources.md#win-3);macOS 核验 [MAC-2](00-sources.md#mac-2)、[MAC-3](00-sources.md#mac-3);Homebrew 核验 [BRW-1](00-sources.md#brw-1)。本次未在线访问这些文档,执行时仍需本机版本检查。
24
-
25
- ## Windows 残留
26
-
27
- 对照已确认的安装位置、发行商、卸载结果和实际加载状态检查 AppData/ProgramData、Run、服务、计划任务、快捷方式和 PATH。注册表 UninstallString 是数据,不能不经校验就交给 shell 执行;不猜 MSI 产品 GUID,不随意取所有权,不卸载共享运行库来降低“软件数量”。
28
-
29
- 卸载后存在同名目录可能是用户数据、其他版本或其他产品共用位置。保留/删除个人数据需明确选择。不要把 Windows Installer 缓存当应用卸载残留整体清除,也不要调用注册表清理器批量“修复”。
30
-
31
- ## macOS 残留
32
-
33
- 对有后台组件、网络/文件系统扩展或驱动的产品优先官方卸载器。移除 app bundle 后,再根据 bundle ID 与供应商文档检查 LaunchAgents/Daemons、登录/后台项、Preferences、Application Support、Containers、Group Containers、Caches 和 Logs。
34
-
35
- Group Containers、厂商共用组件、钥匙串、浏览器/邮件资料和系统收据不要按字符串模糊匹配删除。Homebrew `--zap` 或第三方卸载器的广泛规则也需要逐路径复核;“受管理工具支持”不等于“用户已同意删除个人数据”。仅遗忘 pkg 收据不等于卸载实际文件。
36
-
37
- ## 执行日志与验收
38
-
39
- 每个 U 类动作记录用户选择、精确身份、原生工具、命令/参数的已核实来源、退出结果、重启要求、后台组件状态、被处理目录、保留资料与失败项。不能把退出码成功当作所有残留均已清除。
40
-
41
- 卸载后重跑只读报告,与之前清单比较。启动项失效、目录残留、PATH 失效分别列出;无法归属的项保留。迁移到同类替代软件时先验证数据导入和工作流程,再卸载原软件。永久删除的个人数据没有脚本级恢复保证。
@@ -1,54 +0,0 @@
1
- # 检测报告与产物规范
2
-
3
- ## 日期、位置与覆盖
4
-
5
- 以真正执行检测的电脑的本地日期生成文件名,不使用服务端交付日期,也不覆盖同日旧报告。`--output` 必须是当前 Ops change 的卫生运行根:
6
-
7
- ```text
8
- <Path>{roots.state}/ops/changes/{change}/hygiene/runs/YYYY-MM-DD/HHMMSS-运行ID/</Path>
9
- YYYY-MM-DD.md
10
- YYYY-MM-DD.json
11
- YYYY-MM-DD.plan.json
12
- YYYY-MM-DD.environment.md
13
- # 以下为实际补证据/原生执行后才创建,不预填成功:
14
- YYYY-MM-DD.native-evidence.json
15
- YYYY-MM-DD.execution.md
16
- ```
17
-
18
- `YYYY-MM-DD.md` 是主报告。JSON 为可审阅的原始只读盘点;plan 含少数缓存隔离候选和本机绝对路径,默认私密,仍落在同次运行目录。environment 是未执行的本机映射建议。Q 审批写入 `<Path>{roots.state}/ops/changes/{change}/hygiene/approvals/</Path>`。隔离 receipt 位于本机 `~/.speculo-hygiene/quarantine/`,属于主机 external mutation,不是 `{roots.state}`。不得把报告写进 `<Path>{roots.workflows}/ops/H-computer-hygiene/</Path>`。
19
-
20
- ## 必需章节
21
-
22
- | 章节 | 内容要求 |
23
- | --- | --- |
24
- | 摘要 | 主机边界、系统/架构、候选数量、未执行声明、实际权限 |
25
- | 覆盖与缺口 | 已检查/部分/未检查/不适用,授权根、预算、权限错误、链接与外部卷 |
26
- | 处理清单 | ID、风险、确切证据、建议及是否需要确认 |
27
- | PATH / 工具解析 | 当前进程顺序、失效/重复、多命中、版本是否真正查证 |
28
- | 配置来源 | 允许的字段/行号、多个出现位置;不输出完整 profile 或认证配置 |
29
- | 存储清单 | 目录类别、路径、来源、状态、逻辑大小、扫描完整性、保护与说明 |
30
- | 项目 / 仓库 | Git 类型、状态未知项、锁文件/版本 pin、构建产物、工作区保全 |
31
- | 应用 / 启动项 | 精确身份、安装范围、重复线索、加载/依赖未知、数据选择 |
32
- | 下载资料 / 大文件 | 只列候选与复核前提,不将元数据候选当作内容重复 |
33
- | Q 隔离计划 | 默认缓存、大小、为什么符合/不符合条件,强调不释放空间 |
34
- | 原生清理 / 卸载 | 系统分流、工具版本核验、权限、不可逆影响和保留项 |
35
- | 归一化 / 验收 / 回滚 | 当前声明、建议根、每生态方法、验证范围和失败恢复 |
36
- | 证据 / 时效 / 隐私 | 采集时间、原生核验记录、官方入口是否真的访问、敏感路径说明 |
37
-
38
- ## 数据语义
39
-
40
- `record_kind=LOCAL_MACHINE_AUDIT` 代表脚本对其执行主机进行检测,不代表已确定就是用户桌面主机。测试和示例必须用其他明确标签。`safety.subprocesses=0`、`network_requests=0` 只描述默认脚本没有发起这类调用,不是文件系统绝无网络挂载访问的保证。
41
-
42
- `storage.status` 的 absent 表示该线索路径未发现;blocked 表示安全屏障阻止;metadata-only 表示仅外部/根位置元数据;partial 表示测量不完整;measured 表示在声明的规则和预算内完成。`P` 表示保护,不意味着内部全部文件一定有价值。
43
-
44
- `observed_unique_logical_bytes` 是已测量文件按文件标识去重的逻辑大小,不等于候选可释放空间。`immediately_reclaimable_bytes_proven=null` 表示没有证明可立即回收的字节量,不能改写成 0 或全部缓存总和。系统快照/克隆/压缩/稀疏和打开文件等另列限制。
45
-
46
- ## 补证据与执行记录
47
-
48
- 原生核验仅保存允许的路径/版本/应用身份,不保存完整 stdout、密钥或带认证的 URL。保留原始扫描 JSON;新增证据另存并追加到主 Markdown。原始 plan 的哈希绑定不得因编辑报告而被伪造,发生真实存储变化需重新检测生成新计划。
49
-
50
- 实际执行记录逐项列授权 ID、操作、开始/结束时间、结果、跳过或错误、receipt/备份位置、空间测量口径、验证和回滚状态。没有执行就写“待确认”,不能写“清理完成”。
51
-
52
- ## 隐私
53
-
54
- 报告会将当前 Home 替换为 `~`,但这不是彻底匿名;应用、项目、目录名和其他账户路径都需分享前复核。计划/receipt 有绝对路径和本机绑定信息,不推荐上传到公开仓库。将报告与审批目录加入仓库忽略规则时需遵守真实仓库规范,不擅自修改根 `.gitignore`。
@@ -1,26 +0,0 @@
1
- # Ops 持久化与注册
2
-
3
- 本 Work 已作为 `<Path>{roots.workflows}/ops/H-computer-hygiene/H-computer-hygiene.md</Path>` 注册。id 为 `ops/computer-hygiene`。
4
-
5
- ## 状态根
6
-
7
- | 产物 | 路径 | Owner |
8
- | --- | --- | --- |
9
- | 运行报告 | `<Path>{roots.state}/ops/changes/{change}/hygiene/runs/{date}/{time}-{run-id}/</Path>` | H |
10
- | Q 审批 | `<Path>{roots.state}/ops/changes/{change}/hygiene/approvals/</Path>` | H |
11
- | 主机隔离区 | 本机 `~/.speculo-hygiene/quarantine/{run-id}/` | 用户主机,external mutation |
12
- | Change 状态 | `<Path>{roots.state}/ops/changes/{change}/.status.json</Path>` | 当前 Work |
13
- | 全局索引 | `<Path>{roots.state}/ops/status.json</Path>` | I 创建;H 可追加 hygiene-only global entry |
14
-
15
- `template/workflows/ops/_state/` 只是种子。Work 静态目录只保存脚本、规则、模板和示例,不保存用户主机报告。
16
-
17
- ## hygiene-only 完成
18
-
19
- 未进入 P/E 的 global hygiene change 可以由 H 设为 `completed` + `ready_to_archive`,`latest_attempt_id` 必须为 null。归档仍走 `<Path>{roots.workflows}/ops/A-archive-and-learn/A-archive-and-learn.md</Path>`。含 plan/attempt 的部署 change 仍由 E 拥有 completed 转换。
20
-
21
- ## 校验
22
-
23
- ```bash
24
- node <Path>{roots.workflows}/ops/common/tools/validate-ops.mjs</Path> --workflow-root <Path>{roots.workflows}/ops</Path>
25
- python3 -m unittest discover -s <Path>{roots.workflows}/ops/H-computer-hygiene/tests</Path> -v
26
- ```
@@ -1,406 +0,0 @@
1
- {
2
- "schema_version": 1,
3
- "research_status": "offline-unverified-source-register",
4
- "sources": [
5
- {
6
- "id": "MAV-1",
7
- "publisher": "Apache Maven",
8
- "title": "Settings Reference",
9
- "url": "https://maven.apache.org/settings.html",
10
- "verification_task": "localRepository、用户/全局 settings 与私有仓库配置保护",
11
- "accessed_at": null,
12
- "publication_date": null,
13
- "verified": false
14
- },
15
- {
16
- "id": "MAV-2",
17
- "publisher": "Apache Maven",
18
- "title": "Maven Wrapper",
19
- "url": "https://maven.apache.org/wrapper/",
20
- "verification_task": "项目 wrapper、自行下载和版本固定,不能按普通 mvn 二进制对待",
21
- "accessed_at": null,
22
- "publication_date": null,
23
- "verified": false
24
- },
25
- {
26
- "id": "GRD-1",
27
- "publisher": "Gradle",
28
- "title": "Directory Layout",
29
- "url": "https://docs.gradle.org/current/userguide/directory_layout.html",
30
- "verification_task": "Gradle User Home 不是纯缓存,daemon/wrapper/config 分开",
31
- "accessed_at": null,
32
- "publication_date": null,
33
- "verified": false
34
- },
35
- {
36
- "id": "NPM-1",
37
- "publisher": "npm",
38
- "title": "npm cache",
39
- "url": "https://docs.npmjs.com/cli/v10/commands/npm-cache",
40
- "verification_task": "cache verify/clean 的版本、完整性、自修复与 force 语义;v10 页面不代表本机版本",
41
- "accessed_at": null,
42
- "publication_date": null,
43
- "verified": false
44
- },
45
- {
46
- "id": "NPM-2",
47
- "publisher": "npm",
48
- "title": "Folders",
49
- "url": "https://docs.npmjs.com/cli/v10/configuring-npm/folders",
50
- "verification_task": "prefix、全局安装和 cache 的区别;以本机主版本文档复核",
51
- "accessed_at": null,
52
- "publication_date": null,
53
- "verified": false
54
- },
55
- {
56
- "id": "PNP-1",
57
- "publisher": "pnpm",
58
- "title": "pnpm store",
59
- "url": "https://pnpm.io/cli/store",
60
- "verification_task": "store path/status/prune 的本机可用性及离线影响",
61
- "accessed_at": null,
62
- "publication_date": null,
63
- "verified": false
64
- },
65
- {
66
- "id": "PNP-2",
67
- "publisher": "pnpm",
68
- "title": "Settings",
69
- "url": "https://pnpm.io/settings",
70
- "verification_task": "store-dir、PNPM_HOME、虚拟 store 与卷/硬链接关系",
71
- "accessed_at": null,
72
- "publication_date": null,
73
- "verified": false
74
- },
75
- {
76
- "id": "NVM-1",
77
- "publisher": "nvm project",
78
- "title": "nvm README",
79
- "url": "https://github.com/nvm-sh/nvm",
80
- "verification_task": "函数型管理器、每版本全局包、npm prefix 冲突、与 nvm-windows 不同",
81
- "accessed_at": null,
82
- "publication_date": null,
83
- "verified": false
84
- },
85
- {
86
- "id": "NVW-1",
87
- "publisher": "nvm-windows project",
88
- "title": "nvm-windows README",
89
- "url": "https://github.com/coreybutler/nvm-windows",
90
- "verification_task": "NVM_HOME、NVM_SYMLINK、原生 Windows 安装与联接语义",
91
- "accessed_at": null,
92
- "publication_date": null,
93
- "verified": false
94
- },
95
- {
96
- "id": "FNM-1",
97
- "publisher": "fnm project",
98
- "title": "fnm README",
99
- "url": "https://github.com/Schniz/fnm",
100
- "verification_task": "shell 激活、会话路径、版本目录与本机支持",
101
- "accessed_at": null,
102
- "publication_date": null,
103
- "verified": false
104
- },
105
- {
106
- "id": "VOL-1",
107
- "publisher": "Volta",
108
- "title": "Understanding Volta",
109
- "url": "https://docs.volta.sh/guide/understanding",
110
- "verification_task": "toolchain/shim/项目 pin 与全局工具隔离",
111
- "accessed_at": null,
112
- "publication_date": null,
113
- "verified": false
114
- },
115
- {
116
- "id": "MIS-1",
117
- "publisher": "mise",
118
- "title": "Directories",
119
- "url": "https://mise.jdx.dev/directories.html",
120
- "verification_task": "数据、配置、缓存目录变量;必须核对当前版本和 Windows 支持边界",
121
- "accessed_at": null,
122
- "publication_date": null,
123
- "verified": false
124
- },
125
- {
126
- "id": "ASD-1",
127
- "publisher": "asdf",
128
- "title": "Configuration",
129
- "url": "https://asdf-vm.com/manage/configuration.html",
130
- "verification_task": "数据目录、shims、配置和版本切换;实现版本差异",
131
- "accessed_at": null,
132
- "publication_date": null,
133
- "verified": false
134
- },
135
- {
136
- "id": "SDK-1",
137
- "publisher": "SDKMAN!",
138
- "title": "Usage",
139
- "url": "https://sdkman.io/usage",
140
- "verification_task": "JDK candidate 管理、默认/当前选择与平台支持",
141
- "accessed_at": null,
142
- "publication_date": null,
143
- "verified": false
144
- },
145
- {
146
- "id": "GO-1",
147
- "publisher": "Go project",
148
- "title": "Command go",
149
- "url": "https://go.dev/cmd/go/",
150
- "verification_task": "go env、go clean、GOCACHE、GOMODCACHE、GOPATH、GOENV",
151
- "accessed_at": null,
152
- "publication_date": null,
153
- "verified": false
154
- },
155
- {
156
- "id": "GO-2",
157
- "publisher": "Go project",
158
- "title": "Go Toolchains",
159
- "url": "https://go.dev/doc/toolchain",
160
- "verification_task": "项目 toolchain、GOTOOLCHAIN 与查询/构建触发下载的可能性",
161
- "accessed_at": null,
162
- "publication_date": null,
163
- "verified": false
164
- },
165
- {
166
- "id": "RUS-1",
167
- "publisher": "Rust project",
168
- "title": "Cargo Home",
169
- "url": "https://doc.rust-lang.org/cargo/guide/cargo-home.html",
170
- "verification_task": "Cargo Home 的 bin、config、credentials、registry、git,不当成单一缓存",
171
- "accessed_at": null,
172
- "publication_date": null,
173
- "verified": false
174
- },
175
- {
176
- "id": "RUS-2",
177
- "publisher": "Rust project",
178
- "title": "rustup Environment Variables",
179
- "url": "https://rust-lang.github.io/rustup/environment-variables.html",
180
- "verification_task": "RUSTUP_HOME、CARGO_HOME 和工具链环境",
181
- "accessed_at": null,
182
- "publication_date": null,
183
- "verified": false
184
- },
185
- {
186
- "id": "RUS-3",
187
- "publisher": "Rust project",
188
- "title": "cargo clean",
189
- "url": "https://doc.rust-lang.org/cargo/commands/cargo-clean.html",
190
- "verification_task": "项目构建产物清理,不等于清理全部 Cargo Home",
191
- "accessed_at": null,
192
- "publication_date": null,
193
- "verified": false
194
- },
195
- {
196
- "id": "UV-1",
197
- "publisher": "Astral",
198
- "title": "uv Cache",
199
- "url": "https://docs.astral.sh/uv/concepts/cache/",
200
- "verification_task": "cache clean/prune、缓存安全与原生命令选择",
201
- "accessed_at": null,
202
- "publication_date": null,
203
- "verified": false
204
- },
205
- {
206
- "id": "UV-2",
207
- "publisher": "Astral",
208
- "title": "uv Storage",
209
- "url": "https://docs.astral.sh/uv/reference/storage/",
210
- "verification_task": "缓存、工具、受管 Python、配置位置与变量支持",
211
- "accessed_at": null,
212
- "publication_date": null,
213
- "verified": false
214
- },
215
- {
216
- "id": "UV-3",
217
- "publisher": "Astral",
218
- "title": "uv Environment Variables",
219
- "url": "https://docs.astral.sh/uv/reference/environment/",
220
- "verification_task": "UV_CACHE_DIR 等变量按实际版本核验",
221
- "accessed_at": null,
222
- "publication_date": null,
223
- "verified": false
224
- },
225
- {
226
- "id": "PIP-1",
227
- "publisher": "PyPA",
228
- "title": "pip cache",
229
- "url": "https://pip.pypa.io/en/stable/cli/pip_cache/",
230
- "verification_task": "pip cache dir/info/purge 的本机支持、下载与 wheel 缓存",
231
- "accessed_at": null,
232
- "publication_date": null,
233
- "verified": false
234
- },
235
- {
236
- "id": "PY-1",
237
- "publisher": "Python",
238
- "title": "venv",
239
- "url": "https://docs.python.org/3/library/venv.html",
240
- "verification_task": "虚拟环境中的绝对路径与不可普遍重定位性",
241
- "accessed_at": null,
242
- "publication_date": null,
243
- "verified": false
244
- },
245
- {
246
- "id": "GIT-1",
247
- "publisher": "Git project",
248
- "title": "git status",
249
- "url": "https://git-scm.com/docs/git-status",
250
- "verification_task": "未提交状态只是仓库保全的一部分,不能替代未推送/分支检查",
251
- "accessed_at": null,
252
- "publication_date": null,
253
- "verified": false
254
- },
255
- {
256
- "id": "GIT-2",
257
- "publisher": "Git project",
258
- "title": "git worktree",
259
- "url": "https://git-scm.com/docs/git-worktree",
260
- "verification_task": "worktree 关联、gitfile 和原生 prune/remove 规则",
261
- "accessed_at": null,
262
- "publication_date": null,
263
- "verified": false
264
- },
265
- {
266
- "id": "GIT-3",
267
- "publisher": "Git project",
268
- "title": "git clean",
269
- "url": "https://git-scm.com/docs/git-clean",
270
- "verification_task": "预览与删除含义;忽略文件也可能是重要数据,禁止默认 -fdx",
271
- "accessed_at": null,
272
- "publication_date": null,
273
- "verified": false
274
- },
275
- {
276
- "id": "WIN-1",
277
- "publisher": "Microsoft",
278
- "title": "Free up drive space in Windows",
279
- "url": "https://support.microsoft.com/windows/free-up-drive-space-in-windows-85529ccb-c365-490d-b548-831022bc9b32",
280
- "verification_task": "存储设置、临时文件和系统清理入口",
281
- "accessed_at": null,
282
- "publication_date": null,
283
- "verified": false
284
- },
285
- {
286
- "id": "WIN-2",
287
- "publisher": "Microsoft Learn",
288
- "title": "Clean Up the WinSxS Folder",
289
- "url": "https://learn.microsoft.com/windows-hardware/manufacture/desktop/clean-up-the-winsxs-folder",
290
- "verification_task": "原生组件存储维护,不能直接删除 WinSxS",
291
- "accessed_at": null,
292
- "publication_date": null,
293
- "verified": false
294
- },
295
- {
296
- "id": "WIN-3",
297
- "publisher": "Microsoft Learn",
298
- "title": "winget uninstall",
299
- "url": "https://learn.microsoft.com/windows/package-manager/winget/uninstall",
300
- "verification_task": "精确 ID、来源和卸载命令,不按模糊名称匹配",
301
- "accessed_at": null,
302
- "publication_date": null,
303
- "verified": false
304
- },
305
- {
306
- "id": "WIN-4",
307
- "publisher": "Microsoft Learn",
308
- "title": "setx",
309
- "url": "https://learn.microsoft.com/windows-server/administration/windows-commands/setx",
310
- "verification_task": "持久化变量写入与展开/长度等风险,不用于盲目覆盖 PATH",
311
- "accessed_at": null,
312
- "publication_date": null,
313
- "verified": false
314
- },
315
- {
316
- "id": "WIN-5",
317
- "publisher": "Microsoft Learn",
318
- "title": "Powercfg command-line options",
319
- "url": "https://learn.microsoft.com/windows-hardware/design/device-experiences/powercfg-command-line-options",
320
- "verification_task": "休眠与电源配置是功能取舍,不是默认性能优化",
321
- "accessed_at": null,
322
- "publication_date": null,
323
- "verified": false
324
- },
325
- {
326
- "id": "WIN-6",
327
- "publisher": "Microsoft Learn",
328
- "title": "Manage WSL disk space",
329
- "url": "https://learn.microsoft.com/windows/wsl/disk-space",
330
- "verification_task": "WSL 虚拟磁盘空间与宿主缓存不同,禁止直接删除 ext4.vhdx",
331
- "accessed_at": null,
332
- "publication_date": null,
333
- "verified": false
334
- },
335
- {
336
- "id": "MAC-1",
337
- "publisher": "Apple",
338
- "title": "Free up storage space on Mac",
339
- "url": "https://support.apple.com/guide/mac-help/free-up-storage-space-mh17179/mac",
340
- "verification_task": "系统存储管理、可清理与可回收空间概念",
341
- "accessed_at": null,
342
- "publication_date": null,
343
- "verified": false
344
- },
345
- {
346
- "id": "MAC-2",
347
- "publisher": "Apple",
348
- "title": "Uninstall apps on Mac",
349
- "url": "https://support.apple.com/guide/mac-help/uninstall-apps-mh35835/mac",
350
- "verification_task": "应用卸载入口、官方卸载器与个人数据",
351
- "accessed_at": null,
352
- "publication_date": null,
353
- "verified": false
354
- },
355
- {
356
- "id": "MAC-3",
357
- "publisher": "Apple",
358
- "title": "Manage login items on Mac",
359
- "url": "https://support.apple.com/guide/mac-help/manage-login-items-open-automatically-mh15189/mac",
360
- "verification_task": "登录/后台项目状态,不只看 LaunchAgents 文件",
361
- "accessed_at": null,
362
- "publication_date": null,
363
- "verified": false
364
- },
365
- {
366
- "id": "BRW-1",
367
- "publisher": "Homebrew",
368
- "title": "Manpage",
369
- "url": "https://docs.brew.sh/Manpage",
370
- "verification_task": "cleanup、autoremove、uninstall、cask zap 的版本与破坏性差异",
371
- "accessed_at": null,
372
- "publication_date": null,
373
- "verified": false
374
- },
375
- {
376
- "id": "DCK-1",
377
- "publisher": "Docker",
378
- "title": "Prune unused Docker objects",
379
- "url": "https://docs.docker.com/engine/manage-resources/pruning/",
380
- "verification_task": "容器卷、镜像和构建缓存不同;禁用默认 system prune --volumes",
381
- "accessed_at": null,
382
- "publication_date": null,
383
- "verified": false
384
- },
385
- {
386
- "id": "XDG-1",
387
- "publisher": "freedesktop.org",
388
- "title": "XDG Base Directory Specification",
389
- "url": "https://specifications.freedesktop.org/basedir-spec/latest/",
390
- "verification_task": "Linux 数据、配置、缓存、状态目录语义;统一 DevRoot 是工程选择,不是替代标准",
391
- "accessed_at": null,
392
- "publication_date": null,
393
- "verified": false
394
- },
395
- {
396
- "id": "APT-1",
397
- "publisher": "Debian",
398
- "title": "apt-get manual",
399
- "url": "https://manpages.debian.org/apt-get",
400
- "verification_task": "clean/autoclean/autoremove 模拟和依赖差异,按发行版版本验证",
401
- "accessed_at": null,
402
- "publication_date": null,
403
- "verified": false
404
- }
405
- ]
406
- }