# label-lab：本地复现证据的中文公开说明

本说明翻译已接受的英文公开投影，引用已有执行证据，不是本次新跑的结果，也不是与原始输出字节相同的日志。具名占位符替换机器特定路径；运行时版本、操作系统、命令含义、退出码和结果保留。底层证据来自对原创教学代码的执行，不是云任务、服务商可靠性测试或模型试验。

请求运行时：`/usr/bin/python3`。记录的实际解释器安装路径以 `<LOCAL_PYTHON_EXECUTABLE>` 表示。

版本：Python 3.9.6；macOS 26.5.2 arm64。没有安装软件包。

原执行时段：2026-10-21T22:28:34.625215+00:00 至 2026-10-21T22:28:38.003998+00:00。这是原执行时间，不是中文文章发布日期。

同一个共享的 [label-lab.zip](/blog/assets/reusable-coding-environment-tiny-repository/shared/label-lab.zip) 被解压进两个新建临时目录；解压前二者均为空，也没有 catalog。[公开命令结果](/blog/assets/reusable-coding-environment-tiny-repository/shared/local-results.public.json) 保留源码哈希和路径重映射后的 stdout/stderr。`<LOCAL_PYTHON_EXECUTABLE>` 代表记录的解释器安装路径；`<COPY_A_DIR>`、`<COPY_B_DIR>` 代表两处原始空目录；其他声明过的占位符代表缺失 catalog 负例使用的临时测试目录。两处复现目录均在命令结束后移除。

| 副本 | 运行时之后的原命令参数 | 已观察的退出码与结果 |
| --- | --- | --- |
| A | `scripts/wrong_prepare.py` | 0：有限反例观察到前台等待；未执行构建，catalog 缺失；自有子进程停止并退出 0 |
| A | `scripts/lifecycle.py --timeout 0.5` | 1：健康检查 503，catalog 不可用；自有子进程退出 0，端口关闭 |
| A | `scripts/prepare.py` | 0：构建、检查及有效输入／重复 ID／缺失 catalog 三个行为测试通过；准备返回 |
| A | `scripts/lifecycle.py` | 0：健康检查 200／ok，目录 200／准确 62 字节；自有子进程退出 0，端口关闭 |
| B | `scripts/prepare.py` | 0：从另一份全新解压源码生成同样的产物，并通过相同的三个行为测试 |
| B | `scripts/lifecycle.py` | 0：健康检查 200／ok，目录 200／准确 62 字节；自有子进程退出 0，端口关闭 |

每次准备都实际让转换器处理重复的 `alpha`，得到退出码 2、`duplicate id: alpha`，且没有创建输出；也实际让检查器处理不存在的路径，得到退出码 1 和缺失 catalog 的错误。这些是预期拒绝，不是正向构建失败；真实子进程结果保留在测试 stdout 中。

共享的[实际 catalog](/blog/assets/reusable-coding-environment-tiny-repository/shared/observed/catalog.json) 是 62 字节，包括末尾一个 LF。

catalog SHA-256：`b82daf83bcd381d0dc86acf390f89197677e4988441b487d0ab45f2ae3759b90`。

压缩包 SHA-256：`ef6a9608897cbe4edd4d16f2efc20b62de5d0c7ce227b605ec580675d5d80a61`。

第一次在默认沙箱中的尝试，绑定 `127.0.0.1` 时失败，原错误含义为 `PermissionError: [Errno1] Operation not permitted`。服务在顺序演示之前就已退出，未据此声称成功就绪。公开结果的 `initialAttempt` 对象保留这次失败；后来的成功本地执行另获回环访问授权。过程只控制自有子进程，端口由操作系统选择，没有抢占他人端口；项目没有连接外部 HTTP 服务。

## 从下载包重复操作

选择两个尚不存在的目录名，在保存压缩包的文件夹中执行以下完整命令。命令与英文公开说明保持一致：

```sh
python3 -c "from pathlib import Path; Path('fresh-a').mkdir(); Path('fresh-b').mkdir()"
python3 -m zipfile -e label-lab.zip fresh-a
python3 fresh-a/label-lab/scripts/wrong_prepare.py
python3 fresh-a/label-lab/scripts/prepare.py
python3 fresh-a/label-lab/scripts/lifecycle.py
python3 -m zipfile -e label-lab.zip fresh-b
python3 fresh-b/label-lab/scripts/prepare.py
python3 fresh-b/label-lab/scripts/lifecycle.py
```

只在得到预期退出码后继续。有限错误顺序演示退出 0，是因为观察到了它要展示的错误；正向准备和生命周期验证也应退出 0。缺失 catalog 的生命周期检查另行预期退出 1。辅助程序根据自己的文件路径确定项目根目录。

## 证据范围与独立关系

表格和共享公开 JSON 对应的是英文作者的两份新建本地副本。另有独立技术审阅者在一个新建干净目录中执行过一次独立复现；这是额外的一份副本，不是重新看到已经移除的两处历史目录，也不能说独立审阅者重新跑了两份。共享公开 JSON 不含那次独立执行的原始日志。

英文原作者与本中文译者为同一编辑作者。本次没有执行代码、测试、解压重建或启动服务；译者自查不作为独立审阅，中文稿仍需交另一岗位作语义审阅。

这份两副本记录只覆盖准确的源码压缩包和一个本地运行时。没有执行云环境创建、发布、新任务行为、云端运行时可用性或云端就绪验证。F1 仅用于文档映射；D3 的个人卡住报告仍未验证，也没有被这个教学反例诊断。

ZIP、10 个完整源码文件、62 字节 catalog 和公开结果 JSON 均共享已接受的英文公共资产，没有复制或修改。返回[完整中文教程](/zh/blog/reusable-coding-environment-tiny-repository/)。
