# 验证记录
记录按日期和实际范围解读,不把预期输出、阅读核对或页面渲染等同于代码运行通过。状态定义与证据要求见维护规范。
# 当前逐篇状态索引
状态核对日期:2026-10-18。下表覆盖九章的 64 篇正文;同一行列出的文章分别具有该行状态,未单列通过的语言不继承其他语言的结果。待复核表示当前没有可绑定该文章代码版本的完整运行证据,不等于已证明失败,也不追认正文中孤立的“全部通过”。导航、模板与维护文档不作为代码示例计数。
| 文章 | 当前范围与证据 |
|---|---|
| 命令分派、变量与可变性、数字与运算、数值转换、定义数据类型、能力约束、函数参数、泛型数据结构、泛型函数 | TypeScript 完整程序编译及正文驱动通过,见完整示例修复验证;其余语言待复核 |
| 分页偏移 | 八语言正文驱动均通过,代码版本、命令及边界见本次修复验证;旧版 JS 失败记录单独保留,不再代表当前实现 |
| 端口解析 | TypeScript 的短驱动和 16 项边界通过,见本次修复验证;其余七种语言待复核,不从旧语言汇总推定通过 |
| 日志统计器、配置加载器、HTTP JSON 客户端 | 每篇均为部分验证:JavaScript 无参数演示通过,版本哈希和未覆盖范围见抽样执行;Python 和独立 CLI 路径待复核 |
| 查找首个匹配文件、判断库存、最小值与最大值 | 各篇八语言均待复核;库存旧用例说明保留在历史段,但缺少当时源代码标识 |
| 相等性、字符串格式化、空值与默认值、Unicode | 各篇八语言均待复核 |
| 聚合、复制与共享、筛选与变换、惰性处理、字典与集合、顺序集合、排序 | 各篇八语言均待复核 |
| 组合与委托、数据与行为、有限状态、处理状态、方法与封装 | 各篇八语言均待复核 |
| 继承与重写 | Java、Kotlin、Python、C++、TypeScript、Go、Rust 示例待复核 |
| 报告输出、创建有效对象 | 报告输出的 Rust、Go、Java、Python 待复核;有效对象的 Rust、Java、Python 待复核。报告旧用例没有绑定当前代码版本 |
| 别名与可变性 | 八语言均待复核 |
| C++ RAII、Rust 所有权 | 分别为 C++、Rust 待复核;编译失败的教学反例也没有负向编译证据 |
| 确定性清理、区分失败原因、传播失败、恢复与降级 | 各篇 Go、Java、Python 均待复核 |
| 闭包捕获、扩展操作 | 各篇八语言均待复核 |
| 元编程 | Rust、C++、Python、Go 示例待复核 |
| 反射与 RTTI | Go、Java、Python、JavaScript、Rust 示例待复核 |
| 限制并发量、超时与取消 | 各篇 Go、Python 均待复核 |
| 并发等待 | Python、JavaScript 待复核 |
| CPU 并行、消息传递、共享状态 | CPU 并行的 Go、Rust、Java、Python、JavaScript;消息传递的 Go、Rust、Java、Python;共享状态的 Rust、Java 均待复核 |
| 工程生态 | 执行状态不适用;本次核对部署事实来源,不宣称做过构建或体积测量,见修复验证 |
| 抽象成本、兼容演进、错误处理哲学、语言总结、内存资源、面向对象与组合、保证与责任、简洁与显式、静态与动态、类型与业务建模 | 均无独立可执行代码,执行状态不适用;引用实现的通过状态只能逐项引用,不因文章标题或设计推论获得运行证据。本轮未全面复核这些分析的来源 |
# 2026-10-18 TypeScript 完整示例修复验证
检查了 docs/ 下全部 Markdown 中的 TypeScript 围栏与跨节复制说明,找到 10 篇需要从 JavaScript 拼装的主示例,现均改为包含实现和驱动的完整程序。其余短块为明确标注的验证输入数据,不作为独立程序。本次检查针对示例完整性,不代表全库语义审计。
环境:Windows x64,TypeScript 5.9.3(npm 缓存中的隔离编译器),Node.js v22.17.0;未修改项目依赖。逐篇提取 TypeScript 完整代码块到独立系统临时目录的 main.ts,执行 tsc --strict --target ES2022 main.ts,再执行 node main.js。全部编译与运行退出码为 0,编译无诊断,运行 stderr 为空;正文内检查均未失败。下表记录实际 stdout,\n 表示换行,哈希基于代码块 UTF-8 字节、LF 换行且保留末尾换行。
| 文章 | 实际 stdout | 源码 SHA-256 |
|---|---|---|
| 命令分派 | started\nunknown command\n |
4b6b497814bc1786ddd0066b0047e72879cb0cc368391b5470e91c3e4224cd19 |
| 变量与可变性 | 3\n |
145f514a2d9aa30ee380f575d78230dc6fd00cbc43b6377ef52df045e0b42501 |
| 数字与运算 | 3.5\nempty\n |
a61cbf769384351153b722db197b6168b38473827711c79008714e26a34531c7 |
| 数值转换 | 12\ninvalid sample\n |
7d26cdc0cd044ea888619a9c47c4722747011653206a088ff35ef9fbd2087bbf |
| 端口解析 | 8080\ninvalid port\n |
cf96d354e0644c8279f9d0705d5e81846ea1b1ff09ad3981b63f48aa018073ad |
| 定义数据类型 | 无输出 | 85623c41b4fa2cbbcedfa3d0442df6b958db865611c61f00bd3ecefde24f0c81 |
| 能力约束 | 无输出 | d7fcf0ccc1f487356a56e2d9769de2dd1979799ec61d879425a1cb8f7c9c3fa0 |
| 函数参数 | rule failed\n |
ddaaf5bb6ae8164cea0bbc41c5fb01ae6a81dda34a5bf14637b0da33e0e9ee83 |
| 泛型数据结构 | end\n |
07d038f8e6aa4bb3e5e11fe7b38a6687482ece02a155793b4571eed2f4914f52 |
| 泛型函数 | not found\n |
6656de7d245207dc86ceda142d4fac127bf5779390c088a51397dc5afead3b61 |
端口解析的完整代码与 2026-10-17 组装后的短驱动哈希一致;此前 16 项边界的历史记录保留,本次只重跑正文短驱动。其余文章本次只覆盖正文既有用例,未执行其他语言。临时源码和编译产物已删除。
文档检查:npm test 的 7 项导航测试通过,npm run render 成功生成 82 篇文档,git diff --check 无错误;生成页面的 TypeScript 代码块与源文档一致,保留 #typescript 锚点。
# 2026-10-17 P1 修复验证
# 端口解析的 TypeScript 重新核验
原冲突对象明确为 02-types/parse-port.md 的 TypeScript 小节:旧总表没有文章与源码标识,不能证明曾覆盖端口片段;旧组装表的“本机未执行”也不能描述当前状态。因此不推测旧结论谁正确,而以本次具体运行取代该对象的未知状态,其余历史对象维持待复核。
环境:Windows x64,TypeScript 5.9.3,Node.js v22.17.0。使用已有隔离编译器,不改变仓库依赖或系统默认工具链。
- 按正文组装:仅将 JS 实现首行替换为
function parsePort(text: string): number {,保留函数体,在其后添加一个空行和 JS 驱动,保存为独立临时目录下的main.ts。 - 短驱动执行
tsc --strict --target ES2022 main.ts,再执行node main.js;编译与运行退出码均为 0,编译无诊断、运行 stderr 为空,stdout 精确为8080\ninvalid port\n。 - 另建独立目录,只把驱动输入数组换为下列 16 项,重复同一编译、运行命令。输出前四行依次为
8080、80、1、65535,后十二行均为invalid port;退出码均为 0、stderr 为空,与预期逐行一致。
TypeScript["8080", "00080", "1", "65535", "", "0", "65536", " 80",
"+80", "-80", "80x", "80\n", "1e3", "80.0", "80", "000080"]
代码版本按**组装后 main.ts 的 UTF-8 字节(LF 换行)**记录 SHA-256:短驱动为 cf96d354e0644c8279f9d0705d5e81846ea1b1ff09ad3981b63f48aa018073ad,扩展驱动为 066c7043ddbdb389640ee66de4e09008a09ca4bf2713bc230ccd836f533e2980。扩展数组按上述顺序序列化为紧凑单行字符串替换原数组。本文数组围栏只是驱动替换数据,不是新的独立程序。
执行器调用已有编译器入口的等价命令为 node <TypeScript目录>/bin/tsc --strict --target ES2022 main.ts;编译限时 30 秒、运行限时 10 秒,未触发超时。临时源文件和产物已删除。本次未执行其余七种语言,也未扩展为任意对象或空引用输入校验。
# 分页偏移的八语言回归
对象:01-basics/page-offset.md 全部八个语言的完整程序,直接从正文提取,不改函数或驱动。执行时整个 Markdown 文件 UTF-8 字节 SHA-256 为 ef884c95fe3305ee02af06731bd129fa7ed04a123b5d47cd80a9f2307ea72d35。每种语言使用独立系统临时子目录;外部执行器给每条命令 120 秒超时,均未触发,执行后删除临时目录和产物。
环境为 Windows x64。下表每一行均实际执行,所有编译及运行退出码为 0、stderr 为空;单独编译步骤无 stdout,运行 stdout 统一 CRLF 为 LF 后均精确为 offset: 20\n。Java -ea 已启用,Python 未使用 -O,C++ 未定义 NDEBUG。
| 语言 / 实际工具链 | 文件及实际命令(工具路径以入口名表示) | 结果 |
|---|---|---|
| Rust 1.88.0,edition 2021,Windows MSVC 工具链 | main.rs:rustc --edition=2021 main.rs,随后 .\main.exe |
通过 |
| Go 1.26.4 windows/amd64 | main.go:go run main.go |
通过 |
| Java 21.0.11,Oracle GraalVM JDK | Main.java:java -ea Main.java |
通过 |
| JavaScript,Node.js v22.17.0 | main.cjs:node main.cjs |
通过 |
| TypeScript 5.9.3,Node.js v22.17.0 | main.cts:tsc --strict --target ES2022 --module commonjs main.cts,随后 node main.cjs |
通过 |
| Kotlin JVM 1.9.25,JDK 21.0.11 | Main.kt:kotlinc Main.kt -include-runtime -d main.jar,随后 java -jar main.jar |
通过 |
| Python 3.13.3,经 uv 选择已有解释器 | main.py:uv run --no-project --no-python-downloads --python 3.13.3 main.py |
通过 |
| C++,GCC 15.2.0,C++17 | main.cpp:g++ -std=c++17 main.cpp -o main,随后 .\main.exe |
通过 |
环境处理:默认 rustc 入口报未配置默认工具链,本轮没有修改全局设置,而是直接调用已安装的 stable-x86_64-pc-windows-msvc/bin/rustc.exe;TS 通过 node <TypeScript目录>/bin/tsc 调用,Kotlin 通过已有 kotlinc.bat 调用。复现者应选择自己的对应工具链路径,不依赖作者缓存目录。
各语言驱动均检查六组合法显式输入、默认容量、九组非法输入。其中包括结果恰好 MAX、MAX-1、MAX+1、最大输入及零结果、超上限输入、(MAX,MAX) 和原反例 (9007199254740990,3);所有超范围调用都走显式错误通道。JS/TS 还检查小数、NaN、无穷值,JS/Python 检查字符串与布尔值,Python 还拒绝整数值浮点输入。详细值表保留在正文,不以只有最终打印结果作为正确性依据。
原反例在本轮八语言驱动中均被拒绝;不是通过删掉输入或容忍舍入来“通过”。共同值域现在明确限制输入与结果为安全整数范围,且乘法前检查。没有测试真实数据库、全部操作系统、32 位目标或每个历史基线版本;本轮使用的较新版本不能替代基线兼容性验证。
# 工程生态的来源复核
对象:09-philosophy/engineering-ecosystem.md,整个 Markdown 文件 UTF-8 字节 SHA-256 为 f3251247bc1e01f8397377bc71df376827fcfc34727a66c4b099d19981ec8c6d。文章以已有配置加载器部署到干净目标机器为共同变化,移除了无测量依据的镜像区间和无条件的静态、零依赖保证。
核对范围为正文就近引用的官方材料:Go/cgo、Rust Reference Linkage、JDK 21 jpackage/jlink、Python 3.11 Windows embeddable package 与 C 扩展、Node.js 22 平台与 addons、GCC 链接选项及 Cargo/Clippy 工具边界。结论限定在目标平台、链接方式、运行时和资源条件下;生态与团队判断明确标为分析。原有标题锚点保持不变。
此项执行状态为“不适用”:没有构建镜像、制作安装包、实测部署、性能或体积,来源核对不计入任何语言的运行通过数量。
# 2026-10-17 审查抽样执行
环境:Windows x64,Node.js v22.17.0。只执行下表的 JavaScript,没有在本次重跑其他语言,也没有证明全部基线兼容。正文和其他语言的历史通过声明不自动继承本表结论。
使用现有 Markdown-it 提取各篇标为 javascript 的完整程序。三个项目分别放入系统临时目录下独立、无 package.json 的 CommonJS 子目录,保存为 main.js,以 node main.js 无参数执行;每个进程设置 20 秒外部超时。逐字比对正文“运行与验证”的预期 stdout(统一 CRLF 为 LF),核对退出码和 stderr。临时目录执行后已删除。
| 文章 / 语言 | 状态与实际结果 | 本次覆盖与未覆盖 |
|---|---|---|
| 日志统计器 / JavaScript | 通过:退出 0,stderr 为空,stdout 与正文六行预期一致 | 执行无参数演示及其中断言;未单独执行带文件参数的 CLI、权限失败或输出断开 |
| 配置加载器 / JavaScript | 通过:退出 0,stderr 为空,stdout 与正文十行预期一致 | 执行无参数演示及其中断言;未单独执行带参数 CLI 或改变父进程环境 |
| HTTP JSON 客户端 / JavaScript | 通过:退出 0,stderr 为空,stdout 与正文六行预期一致 | 执行本机随机端口服务、六个网络场景及字段断言;未单独执行带参数 CLI、公网或正文列出的其他未覆盖场景 |
| 分页 / JavaScript | 修复前版本失败(额外精度反例):原驱动打印 offset: 20;输入 (9007199254740990, 3) 的 Number 结果字符串为 27021597764222970,精确整数应为 27021597764222967 |
当时以 node --input-type=commonjs -e <原代码及诊断> 执行,退出 0、stderr 为空;仅本次审查阶段未执行其他语言。新版八语言结果见上方 P1 修复验证;旧诊断见问题单 |
以下为执行对象的整个 Markdown 文件 UTF-8 字节 SHA-256,不是临时驱动或渲染页面的哈希:
| 文件 | SHA-256 |
|---|---|
08-projects/log-analyzer.md |
7c64fe6552c031ca99de6714fa0d052603f224030afd1f67245fefc4417c4263 |
08-projects/config-loader.md |
670a7bc3412f472a7035fdc54a9d8bf71b86e93386f05efb3d49c2f309312b4d |
08-projects/http-json-client.md |
e77328c4f80b394c0aa3694c05600d60879ea1c186ba81f4e03c898d782c5bb1 |
01-basics/page-offset.md |
0a980b4f719837217f790da1963a32e3e00f97dc3629a1986a81bbcdad606d7f |
# 本次文档与页面检查
- 执行现有
npm run render,全库 81 个 Markdown 页面生成成功;未增加构建工具或测试框架。 - 临时 Node.js 检查使用现有 Markdown-it 解析修改后的
languages/79 个文件,检查一级标题、标题层级及围栏;同时逐项检查 1319 个内部链接的源文件和渲染目标,其中 741 个章节链接核对生成 HTML 的真实标题 ID,未发现残留错误。外部网址的可达性和论断真实性不在这项自动检查范围内。 - 浏览器实际点击主题首页到规范、规范篇内“维护流程”、规范到审查报告、报告到本次验证记录;在 1280 像素桌面宽度和 390 像素窄屏查看页面及表格。受检页面没有页面级横向溢出,宽表区域使用局部滚动;未逐页人工检查全库。
# 2026-10-15 历史摘要的适用范围
以下是历史声明而非当前通过矩阵;所有未绑定当时源代码与逐篇用例的条目均为待复核。保留工具链名称、原声称范围和旧用例用于后续比对,但不把它们算作当前证据。TypeScript 端口片段的现状已由上方重新执行确定,不能再用旧总表或旧“本机未执行”代替。下方旧日期、数量和页面结论均未在本轮重新测得。
# 实际执行情况
原记录描述曾从 Markdown 提取代码,在系统临时目录组装、编译和执行;未保留可对应多数文章版本的证据清单。下表只保存其声明,不据此确认当前实现通过。
| 原记录工具链 | 原声称范围(待复核,不是当前通过状态) |
|---|---|
| Rust 1.88.0,edition 2021 | 声称执行了基础语法、条件分支、端口解析、报告输出、极值、空值与并发 |
| Go 1.26.4 | 声称执行了多分支、切片与映射、并发管道与计算累加 |
| Java 21.0.11,LTS | 声称执行了条件分支、端口解析、密封状态、Record、线程池与集合流 |
| JavaScript,Node.js 22.17.0 | 声称执行了条件分支、端口解析、集合管道、闭包与工作线程 |
| TypeScript 5.9.3(隔离工具链) | 声称严格模式与 ES2022 编译及生成 JS 运行通过,但未列文章;不能证明包括端口片段 |
| Kotlin 1.9.25(隔离工具链) | 声称 JVM 目标编译与断言通过,未列逐篇对象 |
| Python 3.13.3(uv 驱动) | 声称执行了分支、报告写入、集合推导、多进程与综合项目 CLI |
| C++,GCC 15.2.0,C++17 | 声称执行了条件分支、端口解析、RAII 异常展开与变体访问 |
原记录另称准备了临时 TypeScript 5.9.3 与 Kotlin 1.9.25,执行基础与集合的典型示例。缺少文章和源代码版本清单,不能据此追认为全篇或全库通过。
历史环境说明:当时直接执行 python --version 命中 Windows 应用执行别名;通过 uv python list --only-installed 找到 Python 3.13.3,并记录以下等价命令:
Shelluv run --no-project --no-python-downloads --python 3.13.3 main.py
原记录的 Python 3.13.3 等实际版本不等于首页全部基线;该记录也没有证明所有基线版本兼容。
# 组装与复现
以下为历史组装说明,保留供比对。操作时仍应使用各语言独立临时目录和当前正文命令;这一段不声明当前代码已执行。
| 文章 | 组装方式 | 执行与观察 |
|---|---|---|
| if / else:判断库存 | 各语言块都是独立完整程序;使用文中的文件名 | 按小节命令运行,核对控制台输出 |
| 字符串转端口号 | 每种语言的实现块后追加驱动块;Java 分为 Ports.java 和 Main.java |
先观察两行 8080、invalid port,再扩展为输入表 |
| TypeScript 端口片段 | 仅替换 JS 函数第一行为 TS 签名,其余函数体和驱动保留,保存为独立目录下的 main.ts |
原条目记为“本机未执行”,与无逐篇范围的旧 TS 总表无法对齐;当前状态以本次修复验证为准 |
| 将报告写入不同目标 | Rust、Go、Java、Python 的内存示例各自完整;Python 文件调用块追加到其完整程序末尾 | 成功时无控制台输出,内容断言通过;Python 额外观察真实文件字节与清理 |
编译与运行命令在正文中维护,避免在此重复多个易失步的版本。工具路径、版本和临时目录因机器而异,不要把作者的本机路径复制为运行前提。
# 用例与验证边界
以下用例与观察均为原记录描述,不是本轮重新执行;缺少源代码标识的对象仍按当前索引列为待复核。
# 条件分支
执行库存 0、1、3、5、6,分别核对 sold out、low stock、low stock、low stock、in stock。覆盖三个分支与低库存区间的两个端点。负数不属于示例输入契约,输入校验不在本例中实现。
文末 debug 条件取值表仍是函数内教学片段,本次未逐门组装执行;不要把正文完整程序的通过状态扩展到该表。
# 端口解析
- 有效输入 4 个:
"8080"→ 8080、"00080"→ 80、"1"→ 1、"65535"→ 65535。 - 无效输入 12 个:
""、"0"、"65536"、" 80"、"+80"、"-80"、"80x"、"80\n"、"1e3"、"80.0"、"80"、"000080"。其中\n在运行时是实际换行。 - 保留正文的错误消费路径,仅把原始驱动的两个输入扩展为上述输入;C++ 同时将
std::array的元素数量改为 16。逐行核对前四项数值及后十二项invalid port,不以“程序未抛异常”代替行为断言。 - Java 的
null、JS 的非字符串对象、错误恢复策略以及不同错误原因的细分不在契约内,本次未验证。
# 报告输出
- Rust、Go、Java、Python:内存目标内容恰好为
items: 3\n。 - Python:原内存程序后追加正文文件调用块,创建真实临时文件,以 UTF-8 和不转换行尾的文本流写入;关闭后核对
read_bytes() == b"items: 3\n"。 - 在临时验证入口末尾额外断言临时目录已删除,确认清理发生在退出上下文之后。正文通过
TemporaryDirectory管理资源,不向用户目录写固定报告文件。 - 没有注入打开、写入、刷新、关闭或清理故障,也没有验证断电持久化、原子替换或异步输出。哲学篇对其他语言文件目标的接入分析不计入已执行文件示例。
# 文档与页面验证
原记录称 npm run render 生成了全库 80 个 Markdown 页面,并检查了 378 个代码围栏、1283 个内部链接(713 个带章节锚点)。这些历史数量不代表修订后状态,也没有可复用的逐项检查输出。
原记录还描述了篇内跳转、阅读路径、模板入口与桌面/窄屏检查。当前文档变化后的实际检查另按日期记录,不从该段继承。
# 历史记录
2026-10-06 的原始说明称仅执行 Rust、Go、Java、JavaScript、C++,当时未定位到 Python;Go 曾受环境限制。此处仅保留历史上下文,不认定当时对象与当前代码相同,也不再声明“以当前代码和上表结果为准”。