windows-binary-validation.md
Book Agent 0.1.0 · 本版随附原文,按章节提供导览;完整原文可在文末展开。文内本机路径属于示例,请替换为你的实际路径。
本版本其他文档与许可
- 用户完整使用手册.md
- 网站发布交接说明.md
- 一句话安装提示词.md
- 安装Agent操作指南.md
- README-交付说明.md
- README.md
- dependency-licenses.json
- acceptance.md
- architecture.md
- build.md
- codex-diagnostics.md
- contracts.md
- deployment.md
- evaluation.md
- example-package-inspection.md
- hosts.md
- mcp.md
- package-format.md
- portability.md
- query-runtime.md
- rerankers.md
- retrieval.md
- security.md
- source-resolution.md
- sqlite-adapters.md
- troubleshooting.md
- visual-fallback.md
- windows-binary-validation.md
- offline-dependency-licenses.json
- 289bfef3a422b5d7-LICENSE
- 320fb46da982dd20-LICENSE
- 0d26a74c4cd409f1-LICENSE
- 29f0a9349a98f786-LICENSE.txt
- 8fe2fae6851b8b02-LICENSE_zstd.txt
- 5927d884110638aa-LICENSE
- c1aedbaa6db194c8-LICENSE
- 2e2d841f3829cb8c-LICENSE
- 37deb54162951132-LICENSE
- 1c294ee0ed0fe5a4-LICENSE.txt
- 9cbd6b2bcad1331c-LICENSE.txt
- 22cdd958c280cb3f-LICENSE.APACHE
- 33a7c36a4f64f214-LICENSE.BSD
- 8e9b59db150b8b29-LICENSE
- 9d2d6534b255a725-LICENSE
- 44ac41031103bcac-LICENSE
- 39d084ff20ffc40e-LICENSE.txt
- b6618d8dc766ea7c-LICENSE.md
- 696bca653f07d94f-LICENSE
- 1a79882f84c42428-LICENSE.md
- 404602f585d7ece7-LICENSE
- d91c8e1dcc4f21a2-LICENSE.md
- b0ec1e6164c921a7-LICENSE.txt
- 2102cfff7eb71b8c-LICENSE.txt
- 60b346c789b9f38f-LICENSE
- 21b64ce33aa4532a-LICENSE
- 37bbe72ee1bbafbd-LICENSE
- 3a70ad943ce55a72-LICENSE.txt
- 0f4ffb2948b11d2f-LICENSE.txt
- 0f552da71ad28735-LICENSE.txt
- 14c3180f75c13432-LICENSE.txt
- 237d5ce190d18ec8-LICENSE.md
- 33f4c2195fc42df4-LICENSE.md
- 34e0a82278464f7a-LICENSE.md
- 606163a509c60e74-LICENSE.txt
- 68188ef77bc0f51d-LICENSE.md
- 7d261385d7c11247-LICENSE.md
- 892e6e9281e05f9e-LICENSE.md
- a62d8b7410f97d10-LICENSE
- aefd64774c70ee6f-LICENSE
- ba28e7ff75ea728b-dragon4_LICENSE.txt
- c21c93791addfba9-LICENSE.md
- c38cab56d01cd957-LICENSE
- caa67dbe4c1ea31d-LICENSE.md
- ddfcf34665e22241-LICENSE
- f384fe378597d8ee-LICENSE.md
- fa40db527ec8a4f8-LICENSE.md
- 11c854e2fea5c3c3-LICENSE
- e9a5bac8b5a01882-LICENSE.APACHE
- ef96a0844cda24cd-LICENSE.BSD
- 60b8570677f4c852-LICENSE
- b750eeade19bb396-LICENSE
- 7d70cfb623ece0f5-LICENSE
- c6dc91d12372ba7d-LICENSE
- 4d610a0401713428-LICENSE
- b4cf246d7037e3e5-LICENSE
- 6ba7e4be3a3e5e98-LICENSE.rst
- bd6c3caec9dc0b2c-LICENSE
- 404f172525c78526-LICENSE
- ea58743ddd8149fe-LICENSE
- d94ac33ee6c5b99c-LICENSE
- 06fc5f72f75ece40-LICENSE
- 6ee341f79804040b-LICENSE
- ca8b44050606bf3f-LICENSE.txt
- 0eb90f9858c86a9d-MAPIStubLibrary-License.txt
- 0f36ec7ac95c3104-Scintilla-License.txt
- 1445ad867b84e928-LICENSE.txt
- 1b588beb4a04f4c3-LICENSE
- 3c06ee52d5d89b25-License.txt
- 6300165282b47172-License.txt
- 6eec8b7b9c778ef7-License.txt
- 6fbb090f28b7d9d7-NOTICE.md
- 7f00f05027a6f1b3-license.txt
- 881f648ef42a607c-License.txt
- ae73a46638a88910-License.txt
- c2a4985aa4145fc3-License.txt
- cf5cae3ab668ac79-License.txt
- d04b9dead3df9f2b-License.txt
- dc8527163d427906-LICENSE.txt
- ff463f305e7e68dc-license.txt
- 1f5c94674bb026f1-LICENSE
- 0fb05a2e9284070c-LICENSE.txt
- bd7b91afd66e7fa0-NOTICE
- fb0b720c70d8ce6a-LICENSE
- fcd0c1933c03449f-LICENSE
- 07c67dcb9a0a1264-LICENSE
- 0e45092c306c1829-LICENSE
- 123439bfbc433e83-LICENSE.APACHE
- 1ab641e9121b81f5-LICENSE
- 4094fd3590b59adb-NOTICE
- 4a7fd6a9c689e423-LICENSE
- 4d09286af1bf926b-LICENSE
- 63a92caf8157263d-LICENSE
- 6562dd76db576ab9-LICENSE
- 8b28658c9e8179cb-LICENSE.txt
- 9fe05a3195b3cc3f-LICENSE
- aeab75b4c2775e84-LICENSE
- b8b1f5f03784d7a5-LICENSE
- c2780f51d1429c4b-LICENSE
- c80865de46db705d-LICENSE.BSD
- c9e41e71fb671b2e-LICENSE
- d6b8bc4557547f24-LICENSE
- e972ee51f8cb405e-NOTICE
- e453abd81b5ad12e-LICENSE
- 717f721f1be51398-LICENSE.md
- 767eeaf795dbfce8-LICENSE
- 94e2a313c2183fa6-LICENSE.txt
- 3391f6db464bf907-LICENSE
- c4388b01504343b0-LICENSE
- 000af5e58f31978d-LICENSE.txt
- 012d34b072b31cdb-LICENSE
- 020fa8056b9cc414-LICENSE
- 057ffcbbade9301e-LICENSE
- 096eee7c37050ec5-LICENSE
- 0b14d5ccfc8ae3b6-LICENSE
- 0d84796ed41f21b5-LICENSE.txt
- 0f51b035ee2b205e-LICENSE.txt
- 15ac02d83e9f5cf0-LICENSE
- 1987b9857feb2977-LICENSE
- 1ab5abcd87c44e46-LICENSE.rst
- 1b491a95f1ea6812-LICENSE
- 1bddb28b536554a8-LICENSE
- 1e0dae2d67a75d8f-LICENSE
- 1f00093269c431aa-LICENSE
- 1f88918564d6b190-LICENSE.txt
- 23170591db6c2e35-LICENSE
- 24e7a39da250d246-LICENSE
- 25356621a82f4798-LICENSE
- 2b6931cc6558558d-LICENSE
- 2e20b75d944dfc10-LICENSE.rst
- 3148042f9d6dc44b-LICENSE
- 34440ff12dbdee0b-LICENSE
- 38d7390db6751b95-LICENSE
- 394f72aa9820b35e-LICENSE
- 3a1efc907aa90e6e-LICENSE.txt
- 3f471b7b9a34654b-LICENSE
- 3f59a46ca08f425d-LICENSE
- 41a82292d67b1815-LICENSE
- 43e0660fee92e3d9-LICENSE
- 4418818ca0528087-LICENSE
- 44bd708d348a7f79-LICENSE.txt
- 45a5f164a90b025e-LICENSE
- 4679f7f6ca539098-LICENSE
- 46bcf873674918a0-LICENSE
- 4cb2f76b15650e2b-LICENSE.txt
- 4ce67a1d3f22f06e-LICENSE
- 4d4c272c2aaf7d4c-LICENSE.txt
- 4f73bb9c13a8cf6a-LICENSE
- 50d2c50ab17033d4-LICENSE
- 568ef02dec145f8f-LICENSE.APACHE
- 5d0844276d7620c3-LICENSE
- 5d3ee7cad434b050-LICENSE
- 63c9efa00504c8e7-LICENSE.BSD
- 658c67bb72402f54-LICENSE
- 65feb792d908bb47-LICENSE
- 6ab6f3ebe36250fc-LICENSE
- 6f3ff74d1e961003-LICENSE
- 70c92009f569c7ff-LICENSE
- 71e8135b761ff506-LICENSE
- 720a043a5f63b8e2-LICENSE
- 732e9d1d0dc3a9f3-LICENSE.rst
- 76fa1ec680b6563a-LICENSE
- 778654dd362ccfc1-LICENSE
- 7bad43a1c663d2d3-LICENSE
- 7e5ab77aaefbcbfe-LICENSE
- 81f9de42fb4cff6d-LICENSE.rst
- 83a0b2cad3631647-LICENSE
- 83d9a4cd337039d3-LICENSE
- 878c0ed7cc080bee-LICENSE.txt
- 8e3c8657c4d54274-LICENSE
- 923573b2290edd3f-LICENSE.txt
- 932fff1dd3afca18-LICENSE.rst
- 93b14a999e446b81-LICENSE
- 93ef29e6e98ebe1c-LICENSE
- 95a8821c42dd5a93-LICENSE
- 9611af4ef03999e9-LICENSE.txt
- 9690869ec82dc7ff-LICENSE
- 98445537094b5eca-LICENSE.txt
- 9bcc07396f3695fd-LICENSE.txt
- 9d236d10d50376fa-LICENSE
- a3af08ceb14d4e70-LICENSE.rst
- a42e3616102ec1a4-LICENSE
- a68145b6a6945de2-LICENSE
- ac000064f187d287-LICENSE
- b14490d244e39dd6-LICENSE.txt
- b152e206fedb11c6-LICENSE
- b5cccfdd56d29de3-LICENSE
- bb4c4e06309173d1-LICENSE.txt
- c18a22744d03cae4-LICENSE.rst
- c59a7e2bf6163ddd-LICENSE
- c643fc658eb3d4f4-LICENSE
- ce8e5d64c3015701-LICENSE
- d382d51b74d1dde7-LICENSE
- d414936ad243b5dd-LICENSE.txt
- d431c50ef2b89f09-LICENSE
- d86156e7d7554a5f-LICENSE
- e04596b38de5343a-LICENSE
- e1fd63729d99cd47-LICENSE
- e3aa5bda22dc7a7a-LICENSE
- e3f5bf83e6fd8b70-LICENSE
- e7f7eb90618838ff-LICENSE
- e845cee760dabf6e-LICENSE
- ea19c7c3e4500582-LICENSE
- f063c5a9ee927ae6-LICENSE
- f589495d9a662be4-LICENSE.txt
- f7f25c636a548517-LICENSE.rst
- f861d3e2e007d200-LICENSE.txt
- fa17b838b2594837-LICENSE.txt
- 14a65df99717c958-LICENSE
- 2231b6c46c068b83-LICENSE
- 215ebb8580f197a8-LICENSE
- 3677f050c9618f5d-LICENSE.txt
- b645068efededc15-LICENSE.md
- MODEL-LICENSE.md
- README.md
- UPSTREAM-LICENSE.txt
# Windows binary validation
Current website-delivery artifact
The new Windows x64 onedir artifact passed **44 checks, 0 failed**, run `8928b30c`. Its executable SHA-256 is `b1ee7337a2d376ba7855658df49c5cfa2bf6f23cd24377c8da7ed9d0c916007e`. Evidence is `.work/website-windows-smoke.json` (internal development record, not shipped). It covered the complete copied application in a Unicode/space path, CLI, import, fallback, original sources/PNG, real MCP SDK and unchanged inputs. See [acceptance](acceptance.md) for separate Python/library installer and model validation.
Previous artifact history
As recorded on **2026-10-03**, the previous rebuilt Windows x64 onedir artifact **passed acceptance: 44 checks passed, 0 failed**. Its machine-readable evidence is `.work/smoke-release-final.json`(工程内部验收记录,不随发行包提供); the reusable harness is `packaging/smoke_binary.py` inside the delivered source archive. The earlier **35 checks, 0 failures**, intermediate **4 passed, 7 failed** and previous **44 checks, 0 failures** results belong to different executable hashes and are retained as history. The hashes and table below describe that historical artifact, not the current website-delivery executable.
Historical rebuilt artifact: passed
| Item | Observed value | | --- | --- | | Run started (UTC) | `2026-10-03T02:57:34.766599+00:00` | | Run ID | `0a3d5ab2` | | Version | `0.1.0`; version command completed in `1.191` seconds | | PE architecture | `0x8664` (Windows x64) | | Executable SHA-256 | `880f5ae8bd6e8c169887ae901d81cf9b7768beeae60d175c8a64ef74eb2b00e6` | | Executed copy | `.work/发行 测试/release-1003/book-agent/book-agent.exe` | | External runtime state | `F:/workspace/BookAgentBinaryAcceptance/0a3d5ab2` | | Outcome | `passed=true`; 44 passed, 0 failed | The harness copied the complete `dist/book-agent/` directory to a fresh Chinese/space path and verified every copied file's SHA-256. Every runtime operation invoked that copied executable. Real PDF and EPUB imports completed in 0.949 and 1.423 seconds; synthetic 7z import in 1.028 seconds; actual-example import in 1.017 seconds. The development Python launches the harness and supplies independent fixture/MCP-client libraries; it does not import Book Agent Core. The current run passed CLI, original-source, PNG/MCP, configured vector-mode fallback, host dry-run and read-only integrity checks. Its input archive/package hashes, sizes and modification times remained unchanged. It did not call a native host Agent or a vision model. Execution on a clean Windows VM, Linux native builds and macOS native builds remains untested. Deliver the onedir directory intact; copying `book-agent.exe` alone omits runtime dependencies.
Intermediate rebuilt artifact: failed
The failed report `.work/binary-smoke.json`(工程内部验收记录,不随发行包提供) is retained separately: run `7184e39d`, started `2026-10-02T16:22:04.024045+00:00`, **4 passed, 7 failed**, executable SHA-256 `3e6fe838c49be2190b3e7e5a78fbcc6a31175f247c05c77d6320bcbfc5ae98bd`. That run refused an unrelated existing Chinese/space copy destination. Direct executable calls for version and PDF/EPUB/synthetic 7z/actual-example import each exceeded 120 seconds; version equality consequently failed. Only PE architecture and three input-integrity checks passed. The startup log `.work/binary-smoke-startup.txt` did not establish a specific timeout cause. These failures remain part of the history and are not the result for final run `0a3d5ab2`.
Previous 44-check successful artifact
Run `0155492f` also passed 44 checks and is retained at `.work/binary-smoke-delivery.json`(工程内部验收记录,不随发行包提供). Its executable SHA-256 was `bf0657138afa3d8d5e94976b550b320c27a42426befae63c31beae047f3e441e`; the latest release artifact has a different hash. Timings and PNG fingerprints below refer to current run `0a3d5ab2`.
Historical successful artifact
The following **35 passed, 0 failed** result was obtained on Windows 10 build 19045, AMD64 before the final rebuild. Its report is retained at `.work/binary-smoke.before-final.json`(工程内部验收记录,不随发行包提供). Its executable hash differs from the later artifacts. | Item | Observed value | | --- | --- | | Run started (UTC) | `2026-10-02T14:42:04.149246+00:00` | | Run ID | `10906614` | | Version | `0.1.0` | | PE architecture | `0x8664` (Windows x64) | | Executable SHA-256 | `2e4f15cb1d105afae4268850bff93f8dcb6e5c6e90470ae821444e44375df7c2` | | Executed copy | `.work/发行 测试/book-agent/book-agent.exe` | | External runtime state | `%LOCALAPPDATA%/BookAgentBinaryAcceptance/10906614` | In this historical run, the harness copied the entire `dist/book-agent/` directory into the Chinese/space path and verified every copied file's SHA-256. It invoked the copied executable for every runtime operation. The development Python launches the acceptance harness and supplies its independent fixture/MCP-client libraries; the harness does not import Book Agent Core. This run used the local development machine. Execution on a clean Windows VM, Linux native builds and macOS native builds remain untested. The onedir directory must be delivered intact; copying `book-agent.exe` alone omits its runtime dependencies.
Reproduce
From the `book-agent/` project directory, after building the onedir artifact: ```powershell & '.venv\Scripts\python.exe' -B packaging/smoke_binary.py --executable dist/book-agent/book-agent.exe --copy-dir '.work/发行 测试/new-run/book-agent' --report '.work/binary-smoke-new-run.json' --example-archive 'E:\000zips\Model Checking with Fly-Automata--ed514f974d3494ee.7z' ``` Omit `--example-archive` on a machine without this local example. Synthetic PDF, EPUB, SQLite and 7z checks always run. Each invocation creates a dedicated external runtime directory and new fixtures. Choose a fresh copy destination and report filename for each rebuilt artifact, then compare its executable hash. A copy destination must be new or owned by this harness with an unchanged `.book-agent-smoke-copy.json` marker; an unrelated existing directory is refused. The smoke harness was also checked with: ```powershell & '.venv\Scripts\python.exe' -B -m ruff check packaging/smoke_binary.py ```
Current verified scope
| Area | Checks and result | | --- | --- | | Frozen runtime | Windows x64 PE header and version; complete onedir copy under Chinese characters and spaces | | SQLite | Read-only import and diagnostics of an explicit-schema database; original record `p1` returned with a vector score using supplied `[1, 0]` | | Retrieval | Natural-language lexical fallback is labeled `lexical_fallback`; configured `none`, `offline` and `online` modes retain that label when the synthetic package has no verified encoder; reranking is disabled | | PDF | Real two-page PDF import, doctor, text locate/read and page-to-PNG rendering | | EPUB | Real EPUB ZIP/container/OPF/chapter import, original XHTML text and embedded raster PNG read | | 7z | Real synthetic 7z extraction/import and actual example archive import/status | | MCP | Official SDK stdio initialization; required tool inventory; status/search/source calls; actual PDF and EPUB PNG `ImageContent` | | MCP stdout | No non-JSONRPC stdout line was rejected by the client; a protocol parse warning fails the harness | | Hosts | Codex, TRAE, WorkBuddy and Cherry Studio dry-run plans; none created its isolated host home | | Integrity | Synthetic package file hashes/sizes/mtimes unchanged; no package `__pycache__`; synthetic and actual archive hashes/sizes/mtimes unchanged | The synthetic figure contains a random nine-digit value solely in raster pixels. The harness confirmed that value was absent from Markdown, retrieved text and original PDF/EPUB text. It confirmed actual PNG bytes reached the MCP client. The PDF image in the current run was **33,885 bytes**, SHA-256 `377109453e0d37352bbed8e14f2047fcfef86a604f3cc4b65f98f865af566f27`. The SQLite vector check uses a supplied synthetic vector against existing vectors. It does not establish a compatible natural-language query encoder. The synthetic package has no approved encoder and therefore correctly falls back to lexical retrieval for natural-language queries. Document embeddings were not regenerated. The actual example's audited BGE-M3 query contract was reported by `status`; remote queries were not authorized or sent by this harness.
Current actual example integrity
Input: `E:\000zips\Model Checking with Fly-Automata--ed514f974d3494ee.7z`. | Property | Before and after | | --- | --- | | SHA-256 | `9be2921444e388c26808ea6b223f9aec28aee965d38f454fd17ec3817af12e0a` | | Size | `215750` bytes | | Modification time | `1790943062558059400` ns | The imported example retained its existing SQLite adapter `pipeline-bge-m3-lossless-v1`, 1024 dimensions and 3 records. Source diagnostics reported an 8-page PDF. Runtime state and extracted managed copies were written outside the original archive.
Acceptance limits
- The final rebuilt executable passed 44 checks. Its lightweight binary does not bundle PyTorch or the BGE-M3 model; optional local encoding uses the separately validated Python runtime. - Complete release pytest finished with 276 passed, 2 skipped in 161.38 seconds (`.work/tests-release-final.log` and `.xml`). Separate actual default Skill bootstrap installed 46 wheels in 73.259 seconds; the dedicated optional installer installed 67 packages offline with hash checks and a successful pip check in 233.145 seconds. Their independent receiving-venv probes passed in 16.747/245.664 seconds, checking default lexical/source/host-dry-run behavior; the optional probe also imported its neural dependencies and ran CPU tensor math. These are separate Python deployment results, not frozen-EXE tests. Optional bootstrap's 67-wheel route was planned but not actually installed through bootstrap. See [acceptance](acceptance.md) for reports. - The optional receiving-runtime probe's 245.664 seconds includes cold imports and plan hash verification, not search latency; it did not repeat a complete BGE-M3 forward. Actual model-query timings remain the two reports below. Installation reports captured the same application code/dependencies before this documentation update; the final release manifest will be regenerated with the updated documents. - Separate Python CPU offline-query acceptance passed with the actual BGE-M3 checkpoint under socket/urllib network blocking. It produced a finite 1024-dimensional CLS/L2 vector, retrieved the three original SQLite records and located physical PDF page 2; no document embeddings were generated and the archive plus 29 input files remained unchanged. Cold encoding took 33.609 seconds; the second Core search took 0.780 seconds for the same question after model/dependency warmup, with question encoding repeated. The complete 88.695-second run included weight registration/hash verification. Evidence: `.work/acceptance/offline-real-query.json`. This separate optional Python path does not validate the rebuilt lightweight executable. - The layer-streaming encoder also passed 14 actual tiny-model tests in 131.04 seconds, including four numerical comparisons against the official full eager encoder. The full checkpoint was not compared numerically with the unpinned hosted provider; that parity remains unverified. Repeated faulthandler samples and native-library import stacks alone are not completed results. - A second blocked-network run (`.work/acceptance/offline-query-instrumented.json`) passed and counted one actual forward each for the same-question and new-question searches, taking 0.973 and 0.869 seconds after warmup; the forwards themselves took 0.621 and 0.854 seconds. Its initial encoding took 155.887 seconds and complete run 256.183 seconds. These timings differ from the first run and are local observations, not latency guarantees. The implementation caches the tokenizer/model adapter and encodes each question again; it does not cache query vectors. Neither report records process peak memory. - Host dry-runs establish configuration planning and bundled Skill availability. Separate native Codex CLI acceptance passed using an isolated Python MCP runtime: exit 0, 67.592 seconds, 18 events and six completed status/Skill/search/source/image calls with no errors (`.work/acceptance/codex-final-v2/codex-call.json`). It did not modify global configuration. Native Skill automatic triggering and other hosts' actual UI/model behavior remain untested; this Agent run did not use the frozen executable. - PNG delivery establishes source-image transport. No vision-capable model interpreted the raster-only value in this smoke run; real visual understanding remains untested. - Local rerank weights are not bundled. This run selected `--reranker none`; local model loading and reranking remain untested. - The harness did not read credentials, install global host configuration or contact remote query/rerank services. The older startup/stdout/resource failure is retained as `.work/binary-smoke.initial.json`; historical success as `.work/binary-smoke.before-final.json`; intermediate rebuilt-artifact failure as `.work/binary-smoke.json`; previous 44-check success as `.work/binary-smoke-delivery.json`; latest release success as `.work/smoke-release-final.json`. These are separate artifact/run results.
查看完整原文(逐字保留)
# Windows binary validation ## Current website-delivery artifact The new Windows x64 onedir artifact passed **44 checks, 0 failed**, run `8928b30c`. Its executable SHA-256 is `b1ee7337a2d376ba7855658df49c5cfa2bf6f23cd24377c8da7ed9d0c916007e`. Evidence is `.work/website-windows-smoke.json` (internal development record, not shipped). It covered the complete copied application in a Unicode/space path, CLI, import, fallback, original sources/PNG, real MCP SDK and unchanged inputs. See [acceptance](acceptance.md) for separate Python/library installer and model validation. ## Previous artifact history As recorded on **2026-10-03**, the previous rebuilt Windows x64 onedir artifact **passed acceptance: 44 checks passed, 0 failed**. Its machine-readable evidence is `.work/smoke-release-final.json`(工程内部验收记录,不随发行包提供); the reusable harness is `packaging/smoke_binary.py` inside the delivered source archive. The earlier **35 checks, 0 failures**, intermediate **4 passed, 7 failed** and previous **44 checks, 0 failures** results belong to different executable hashes and are retained as history. The hashes and table below describe that historical artifact, not the current website-delivery executable. ## Historical rebuilt artifact: passed | Item | Observed value | | --- | --- | | Run started (UTC) | `2026-10-03T02:57:34.766599+00:00` | | Run ID | `0a3d5ab2` | | Version | `0.1.0`; version command completed in `1.191` seconds | | PE architecture | `0x8664` (Windows x64) | | Executable SHA-256 | `880f5ae8bd6e8c169887ae901d81cf9b7768beeae60d175c8a64ef74eb2b00e6` | | Executed copy | `.work/发行 测试/release-1003/book-agent/book-agent.exe` | | External runtime state | `F:/workspace/BookAgentBinaryAcceptance/0a3d5ab2` | | Outcome | `passed=true`; 44 passed, 0 failed | The harness copied the complete `dist/book-agent/` directory to a fresh Chinese/space path and verified every copied file's SHA-256. Every runtime operation invoked that copied executable. Real PDF and EPUB imports completed in 0.949 and 1.423 seconds; synthetic 7z import in 1.028 seconds; actual-example import in 1.017 seconds. The development Python launches the harness and supplies independent fixture/MCP-client libraries; it does not import Book Agent Core. The current run passed CLI, original-source, PNG/MCP, configured vector-mode fallback, host dry-run and read-only integrity checks. Its input archive/package hashes, sizes and modification times remained unchanged. It did not call a native host Agent or a vision model. Execution on a clean Windows VM, Linux native builds and macOS native builds remains untested. Deliver the onedir directory intact; copying `book-agent.exe` alone omits runtime dependencies. ## Intermediate rebuilt artifact: failed The failed report `.work/binary-smoke.json`(工程内部验收记录,不随发行包提供) is retained separately: run `7184e39d`, started `2026-10-02T16:22:04.024045+00:00`, **4 passed, 7 failed**, executable SHA-256 `3e6fe838c49be2190b3e7e5a78fbcc6a31175f247c05c77d6320bcbfc5ae98bd`. That run refused an unrelated existing Chinese/space copy destination. Direct executable calls for version and PDF/EPUB/synthetic 7z/actual-example import each exceeded 120 seconds; version equality consequently failed. Only PE architecture and three input-integrity checks passed. The startup log `.work/binary-smoke-startup.txt` did not establish a specific timeout cause. These failures remain part of the history and are not the result for final run `0a3d5ab2`. ## Previous 44-check successful artifact Run `0155492f` also passed 44 checks and is retained at `.work/binary-smoke-delivery.json`(工程内部验收记录,不随发行包提供). Its executable SHA-256 was `bf0657138afa3d8d5e94976b550b320c27a42426befae63c31beae047f3e441e`; the latest release artifact has a different hash. Timings and PNG fingerprints below refer to current run `0a3d5ab2`. ## Historical successful artifact The following **35 passed, 0 failed** result was obtained on Windows 10 build 19045, AMD64 before the final rebuild. Its report is retained at `.work/binary-smoke.before-final.json`(工程内部验收记录,不随发行包提供). Its executable hash differs from the later artifacts. | Item | Observed value | | --- | --- | | Run started (UTC) | `2026-10-02T14:42:04.149246+00:00` | | Run ID | `10906614` | | Version | `0.1.0` | | PE architecture | `0x8664` (Windows x64) | | Executable SHA-256 | `2e4f15cb1d105afae4268850bff93f8dcb6e5c6e90470ae821444e44375df7c2` | | Executed copy | `.work/发行 测试/book-agent/book-agent.exe` | | External runtime state | `%LOCALAPPDATA%/BookAgentBinaryAcceptance/10906614` | In this historical run, the harness copied the entire `dist/book-agent/` directory into the Chinese/space path and verified every copied file's SHA-256. It invoked the copied executable for every runtime operation. The development Python launches the acceptance harness and supplies its independent fixture/MCP-client libraries; the harness does not import Book Agent Core. This run used the local development machine. Execution on a clean Windows VM, Linux native builds and macOS native builds remain untested. The onedir directory must be delivered intact; copying `book-agent.exe` alone omits its runtime dependencies. ## Reproduce From the `book-agent/` project directory, after building the onedir artifact: ```powershell & '.venv\Scripts\python.exe' -B packaging/smoke_binary.py --executable dist/book-agent/book-agent.exe --copy-dir '.work/发行 测试/new-run/book-agent' --report '.work/binary-smoke-new-run.json' --example-archive 'E:\000zips\Model Checking with Fly-Automata--ed514f974d3494ee.7z' ``` Omit `--example-archive` on a machine without this local example. Synthetic PDF, EPUB, SQLite and 7z checks always run. Each invocation creates a dedicated external runtime directory and new fixtures. Choose a fresh copy destination and report filename for each rebuilt artifact, then compare its executable hash. A copy destination must be new or owned by this harness with an unchanged `.book-agent-smoke-copy.json` marker; an unrelated existing directory is refused. The smoke harness was also checked with: ```powershell & '.venv\Scripts\python.exe' -B -m ruff check packaging/smoke_binary.py ``` ## Current verified scope | Area | Checks and result | | --- | --- | | Frozen runtime | Windows x64 PE header and version; complete onedir copy under Chinese characters and spaces | | SQLite | Read-only import and diagnostics of an explicit-schema database; original record `p1` returned with a vector score using supplied `[1, 0]` | | Retrieval | Natural-language lexical fallback is labeled `lexical_fallback`; configured `none`, `offline` and `online` modes retain that label when the synthetic package has no verified encoder; reranking is disabled | | PDF | Real two-page PDF import, doctor, text locate/read and page-to-PNG rendering | | EPUB | Real EPUB ZIP/container/OPF/chapter import, original XHTML text and embedded raster PNG read | | 7z | Real synthetic 7z extraction/import and actual example archive import/status | | MCP | Official SDK stdio initialization; required tool inventory; status/search/source calls; actual PDF and EPUB PNG `ImageContent` | | MCP stdout | No non-JSONRPC stdout line was rejected by the client; a protocol parse warning fails the harness | | Hosts | Codex, TRAE, WorkBuddy and Cherry Studio dry-run plans; none created its isolated host home | | Integrity | Synthetic package file hashes/sizes/mtimes unchanged; no package `__pycache__`; synthetic and actual archive hashes/sizes/mtimes unchanged | The synthetic figure contains a random nine-digit value solely in raster pixels. The harness confirmed that value was absent from Markdown, retrieved text and original PDF/EPUB text. It confirmed actual PNG bytes reached the MCP client. The PDF image in the current run was **33,885 bytes**, SHA-256 `377109453e0d37352bbed8e14f2047fcfef86a604f3cc4b65f98f865af566f27`. The SQLite vector check uses a supplied synthetic vector against existing vectors. It does not establish a compatible natural-language query encoder. The synthetic package has no approved encoder and therefore correctly falls back to lexical retrieval for natural-language queries. Document embeddings were not regenerated. The actual example's audited BGE-M3 query contract was reported by `status`; remote queries were not authorized or sent by this harness. ## Current actual example integrity Input: `E:\000zips\Model Checking with Fly-Automata--ed514f974d3494ee.7z`. | Property | Before and after | | --- | --- | | SHA-256 | `9be2921444e388c26808ea6b223f9aec28aee965d38f454fd17ec3817af12e0a` | | Size | `215750` bytes | | Modification time | `1790943062558059400` ns | The imported example retained its existing SQLite adapter `pipeline-bge-m3-lossless-v1`, 1024 dimensions and 3 records. Source diagnostics reported an 8-page PDF. Runtime state and extracted managed copies were written outside the original archive. ## Acceptance limits - The final rebuilt executable passed 44 checks. Its lightweight binary does not bundle PyTorch or the BGE-M3 model; optional local encoding uses the separately validated Python runtime. - Complete release pytest finished with 276 passed, 2 skipped in 161.38 seconds (`.work/tests-release-final.log` and `.xml`). Separate actual default Skill bootstrap installed 46 wheels in 73.259 seconds; the dedicated optional installer installed 67 packages offline with hash checks and a successful pip check in 233.145 seconds. Their independent receiving-venv probes passed in 16.747/245.664 seconds, checking default lexical/source/host-dry-run behavior; the optional probe also imported its neural dependencies and ran CPU tensor math. These are separate Python deployment results, not frozen-EXE tests. Optional bootstrap's 67-wheel route was planned but not actually installed through bootstrap. See [acceptance](acceptance.md) for reports. - The optional receiving-runtime probe's 245.664 seconds includes cold imports and plan hash verification, not search latency; it did not repeat a complete BGE-M3 forward. Actual model-query timings remain the two reports below. Installation reports captured the same application code/dependencies before this documentation update; the final release manifest will be regenerated with the updated documents. - Separate Python CPU offline-query acceptance passed with the actual BGE-M3 checkpoint under socket/urllib network blocking. It produced a finite 1024-dimensional CLS/L2 vector, retrieved the three original SQLite records and located physical PDF page 2; no document embeddings were generated and the archive plus 29 input files remained unchanged. Cold encoding took 33.609 seconds; the second Core search took 0.780 seconds for the same question after model/dependency warmup, with question encoding repeated. The complete 88.695-second run included weight registration/hash verification. Evidence: `.work/acceptance/offline-real-query.json`. This separate optional Python path does not validate the rebuilt lightweight executable. - The layer-streaming encoder also passed 14 actual tiny-model tests in 131.04 seconds, including four numerical comparisons against the official full eager encoder. The full checkpoint was not compared numerically with the unpinned hosted provider; that parity remains unverified. Repeated faulthandler samples and native-library import stacks alone are not completed results. - A second blocked-network run (`.work/acceptance/offline-query-instrumented.json`) passed and counted one actual forward each for the same-question and new-question searches, taking 0.973 and 0.869 seconds after warmup; the forwards themselves took 0.621 and 0.854 seconds. Its initial encoding took 155.887 seconds and complete run 256.183 seconds. These timings differ from the first run and are local observations, not latency guarantees. The implementation caches the tokenizer/model adapter and encodes each question again; it does not cache query vectors. Neither report records process peak memory. - Host dry-runs establish configuration planning and bundled Skill availability. Separate native Codex CLI acceptance passed using an isolated Python MCP runtime: exit 0, 67.592 seconds, 18 events and six completed status/Skill/search/source/image calls with no errors (`.work/acceptance/codex-final-v2/codex-call.json`). It did not modify global configuration. Native Skill automatic triggering and other hosts' actual UI/model behavior remain untested; this Agent run did not use the frozen executable. - PNG delivery establishes source-image transport. No vision-capable model interpreted the raster-only value in this smoke run; real visual understanding remains untested. - Local rerank weights are not bundled. This run selected `--reranker none`; local model loading and reranking remain untested. - The harness did not read credentials, install global host configuration or contact remote query/rerank services. The older startup/stdout/resource failure is retained as `.work/binary-smoke.initial.json`; historical success as `.work/binary-smoke.before-final.json`; intermediate rebuilt-artifact failure as `.work/binary-smoke.json`; previous 44-check success as `.work/binary-smoke-delivery.json`; latest release success as `.work/smoke-release-final.json`. These are separate artifact/run results.
原文 SHA-256:4225294f90cdd61e952a878e20a3056c1c83213d4035b59c9678652698177235