Files
xuetang/TongjiUniApp/build/tang-detective-cleanup-verification.json
2026-09-09 14:47:29 +08:00

136 lines
28 KiB
JSON
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"schemaVersion": 1,
"startedAt": "2026-09-08T09:44:21.382Z",
"passed": true,
"uploadRunId": "b9ab703a-49a6-4b6b-ac34-979eca1d4828",
"sourceManifestSha256": "3b203406a31fdbe17c770aeea0bab19755acfedf3fa1595641ee4e15a9712e20",
"mediaManifestSha256": "0062a1edbca7d08cba3c21fc226f419def91d8dfd644f41b9e35c2543ef508a0",
"pruneReceiptSha256": "78844c0335b28c5f91d829ea3178e818a011e8f0c918fbda07330d6c114f8cbd",
"nonMediaSourceFilesByteVerified": 269,
"sourceMediaFilesRemaining": 0,
"removedProjectFiles": 214,
"removedProjectBytes": 24145441,
"recoveryFilesByteVerified": 214,
"commands": [
{
"command": [
"npm",
"run",
"test:tang"
],
"exitCode": 0,
"signal": null,
"stdout": "\n> tongji-uniapp@1.0.0 test:tang\n> node --test build/tang-detective-native-plugin.test.mjs build/tang-detective-cos-media.test.mjs build/tang-detective-source-validation.test.mjs scripts/tang-cos/upload.test.mjs scripts/test-tang-platform.cjs scripts/test-tang-page-lifecycle.cjs\n\nTAP version 13\n# Subtest: verified manifest requires all 204 original paths, hashes, exact HTTPS objects and upload receipts\nok 1 - verified manifest requires all 204 original paths, hashes, exact HTTPS objects and upload receipts\n ---\n duration_ms: 515.341084\n type: 'test'\n ...\n# Subtest: schema 2 accepts only the confirmed COS origin and exact server image / voice object formats\nok 2 - schema 2 accepts only the confirmed COS origin and exact server image / voice object formats\n ---\n duration_ms: 857.29375\n type: 'test'\n ...\n# Subtest: video manifest also requires a true range receipt and its exact immutable object key\nok 3 - video manifest also requires a true range receipt and its exact immutable object key\n ---\n duration_ms: 382.910167\n type: 'test'\n ...\n# Subtest: source byte drift fails even when a manifest still claims the expected hash\nok 4 - source byte drift fails even when a manifest still claims the expected hash\n ---\n duration_ms: 360.020125\n type: 'test'\n ...\n# Subtest: missing manifest stays local; a verified remote import removes only owned output media and remains deterministic\nok 5 - missing manifest stays local; a verified remote import removes only owned output media and remains deterministic\n ---\n duration_ms: 1171.649875\n type: 'test'\n ...\n# Subtest: invalid manifest and externally edited old media are rejected before output mutation\nok 6 - invalid manifest and externally edited old media are rejected before output mutation\n ---\n duration_ms: 503.734542\n type: 'test'\n ...\n# Subtest: all 120 selected comic pages retain source content hashes and 112 formal / 8 provisional status\nok 7 - all 120 selected comic pages retain source content hashes and 112 formal / 8 provisional status\n ---\n duration_ms: 343.70625\n type: 'test'\n ...\n# Subtest: source and adapter static images, cast, C01 player art and all eight listening tracks use exact registry URLs\nok 8 - source and adapter static images, cast, C01 player art and all eight listening tracks use exact registry URLs\n ---\n duration_ms: 303.270584\n type: 'test'\n ...\n# Subtest: remote transport does not open unreviewed audio, promote reserved cues or accept arbitrary HTTPS as approved\nok 9 - remote transport does not open unreviewed audio, promote reserved cues or accept arbitrary HTTPS as approved\n ---\n duration_ms: 299.239625\n type: 'test'\n ...\n# Subtest: asset manager downloads exact URLs with an empty CDN base, verifies downloaded/cache bytes, and rejects substituted URLs\nok 10 - asset manager downloads exact URLs with an empty CDN base, verifies downloaded/cache bytes, and rejects substituted URLs\n ---\n duration_ms: 306.613584\n type: 'test'\n ...\n# Subtest: share preview rehashes cache, fails safely on corruption/network errors, and ignores completion after unload\nok 11 - share preview rehashes cache, fails safely on corruption/network errors, and ignores completion after unload\n ---\n duration_ms: 296.068541\n type: 'test'\n ...\n# Subtest: real-output static validator supports COS mode and rejects extra packaged media\nok 12 - real-output static validator supports COS mode and rejects extra packaged media\n ---\n duration_ms: 490.823\n type: 'test'\n ...\n# Subtest: actual converted chapter image handler exhausts fallbacks and ignores duplicate/late events across page visits\nok 13 - actual converted chapter image handler exhausts fallbacks and ignores duplicate/late events across page visits\n ---\n duration_ms: 333.295083\n type: 'test'\n ...\n# Subtest: output preflight rejects root, file, directory and stale-media symlinks without touching identical external targets\nok 14 - output preflight rejects root, file, directory and stale-media symlinks without touching identical external targets\n ---\n duration_ms: 1646.949375\n type: 'test'\n ...\n# Subtest: original snapshot keeps 473 recorded paths and requires valid remote pruning evidence for any omitted media\nok 15 - original snapshot keeps 473 recorded paths and requires valid remote pruning evidence for any omitted media\n ---\n duration_ms: 47.177917\n type: 'test'\n ...\n# Subtest: path conversion includes dynamic roots and packaged-path regex without changing external URLs or requires\nok 16 - path conversion includes dynamic roots and packaged-path regex without changing external URLs or requires\n ---\n duration_ms: 0.4475\n type: 'test'\n ...\n# Subtest: manifest merge preserves host configuration, supports both package spellings, and rejects conflicting routes\nok 17 - manifest merge preserves host configuration, supports both package spellings, and rejects conflicting routes\n ---\n duration_ms: 1.690208\n type: 'test'\n ...\n# Subtest: all native pages copy into owned output with legal relative requires and unchanged host/media bytes\nok 18 - all native pages copy into owned output with legal relative requires and unchanged host/media bytes\n ---\n duration_ms: 957.362209\n type: 'test'\n ...\n# Subtest: 120 chapter page image selections and C01 full tracks remain in main or their own subpackage\nok 19 - 120 chapter page image selections and C01 full tracks remain in main or their own subpackage\n ---\n duration_ms: 512.390833\n type: 'test'\n ...\n# Subtest: overlay protection and owned cleanup preserve media, host state, and external edits\nok 20 - overlay protection and owned cleanup preserve media, host state, and external edits\n ---\n duration_ms: 999.090709\n type: 'test'\n ...\n# Subtest: page registration rejects ambiguous input and Vite hook remains post-sequential and WeChat-only\nok 21 - page registration rejects ambiguous input and Vite hook remains post-sequential and WeChat-only\n ---\n duration_ms: 0.365042\n type: 'test'\n ...\n# Subtest: the pinned original manifest has 269 nonmedia and exactly 160 JPG / 44 MP3 files\nok 22 - the pinned original manifest has 269 nonmedia and exactly 160 JPG / 44 MP3 files\n ---\n duration_ms: 3.03975\n type: 'test'\n ...\n# Subtest: a fully pruned clone builds and validates from 269 intact files with no external backup access\nok 23 - a fully pruned clone builds and validates from 269 intact files with no external backup access\n ---\n duration_ms: 932.089959\n type: 'test'\n ...\n# Subtest: missing local media and missing remote prune receipt fail before any output changes\nok 24 - missing local media and missing remote prune receipt fail before any output changes\n ---\n duration_ms: 822.711042\n type: 'test'\n ...\n# Subtest: the Vite buildStart preflight rejects missing local media before bundle output can begin\nok 25 - the Vite buildStart preflight rejects missing local media before bundle output can begin\n ---\n duration_ms: 155.042\n type: 'test'\n ...\n# Subtest: pruning needs an exact complete receipt bound to the manifest, upload run, file records and archive hash\nok 26 - pruning needs an exact complete receipt bound to the manifest, upload run, file records and archive hash\n ---\n duration_ms: 599.077208\n type: 'test'\n ...\n# Subtest: remote pruning never allows missing nonmedia, changed surviving bytes or extra source files\nok 27 - remote pruning never allows missing nonmedia, changed surviving bytes or extra source files\n ---\n duration_ms: 185.848208\n type: 'test'\n ...\n# Subtest: source and evidence symlinks, including dangling media links, cannot authorize or hide omission\nok 28 - source and evidence symlinks, including dangling media links, cannot authorize or hide omission\n ---\n duration_ms: 149.757875\n type: 'test'\n ...\n# Subtest: remote output validation rejects later receipt drift or removal\nok 29 - remote output validation rejects later receipt drift or removal\n ---\n duration_ms: 636.244458\n type: 'test'\n ...\n# Subtest: inventory creates content-addressed keys without changing source files\nok 30 - inventory creates content-addressed keys without changing source files\n ---\n duration_ms: 5.051666\n type: 'test'\n ...\n# Subtest: inventory refuses changed bytes, unrecorded files, and symlinks\nok 31 - inventory refuses changed bytes, unrecorded files, and symlinks\n ---\n duration_ms: 14.88\n type: 'test'\n ...\n# Subtest: database config never disables certificate or hostname verification\nok 32 - database config never disables certificate or hostname verification\n ---\n duration_ms: 1.515333\n type: 'test'\n ...\n# Subtest: destination rejects insecure/signed URLs and missing credentials\nok 33 - destination rejects insecure/signed URLs and missing credentials\n ---\n duration_ms: 0.336708\n type: 'test'\n ...\n# Subtest: object URLs only use namespaced content-addressed keys\nok 34 - object URLs only use namespaced content-addressed keys\n ---\n duration_ms: 0.293334\n type: 'test'\n ...\n# Subtest: public verification checks complete bytes, MIME, hash and audio Range\nok 35 - public verification checks complete bytes, MIME, hash and audio Range\n ---\n duration_ms: 20.89125\n type: 'test'\n ...\n# Subtest: private objects, oversize bodies, corrupt data and missing Range cannot activate a manifest\nok 36 - private objects, oversize bodies, corrupt data and missing Range cannot activate a manifest\n ---\n duration_ms: 2.0405\n type: 'test'\n ...\n# Subtest: safe errors never leak raw connection or signed-URL text\nok 37 - safe errors never leak raw connection or signed-URL text\n ---\n duration_ms: 0.201458\n type: 'test'\n ...\n# Subtest: uploader only creates missing objects with checksums and never changes permissions\nok 38 - uploader only creates missing objects with checksums and never changes permissions\n ---\n duration_ms: 0.34\n type: 'test'\n ...\n# Subtest: uploader reuses exact owned objects; mismatches and denied HEAD never trigger writes\nok 39 - uploader reuses exact owned objects; mismatches and denied HEAD never trigger writes\n ---\n duration_ms: 0.399292\n type: 'test'\n ...\n# Subtest: database deadline aborts a stalled task-owned operation and clears its timer\nok 40 - database deadline aborts a stalled task-owned operation and clears its timer\n ---\n duration_ms: 5.153\n type: 'test'\n ...\n# Subtest: a configuration failure creates a fresh failed attempt and archives previous success\nok 41 - a configuration failure creates a fresh failed attempt and archives previous success\n ---\n duration_ms: 5.667375\n type: 'test'\n ...\n# Subtest: SDK initialization failure is recorded without exposing credentials\nok 42 - SDK initialization failure is recorded without exposing credentials\n ---\n duration_ms: 5.034209\n type: 'test'\n ...\n# Subtest: lost PUT response persists unknown outcome and only performs read-only reconciliation\nok 43 - lost PUT response persists unknown outcome and only performs read-only reconciliation\n ---\n duration_ms: 5.316125\n type: 'test'\n ...\n# Subtest: only a fully verified upload writes the activation manifest; no secret values reach artifacts\nok 44 - only a fully verified upload writes the activation manifest; no secret values reach artifacts\n ---\n duration_ms: 6.337209\n type: 'test'\n ...\n# Subtest: deferred lifecycle delivers onLoad -> onShow -> onReady once and guards custom onX events\nok 45 - deferred lifecycle delivers onLoad -> onShow -> onReady once and guards custom onX events\n ---\n duration_ms: 6.246958\n type: 'test'\n ...\n# Subtest: package-audio-c01-a: real onReady waits for _page and unload clears both timers, context, and listeners\nok 46 - package-audio-c01-a: real onReady waits for _page and unload clears both timers, context, and listeners\n ---\n duration_ms: 4.879042\n type: 'test'\n ...\n# Subtest: package-audio-c01-a: hidden boot never initializes audio until return; changed-account hide retires old audio\nok 47 - package-audio-c01-a: hidden boot never initializes audio until return; changed-account hide retires old audio\n ---\n duration_ms: 3.206458\n type: 'test'\n ...\n# Subtest: package-audio-c01-b: real onReady waits for _page and unload clears both timers, context, and listeners\nok 48 - package-audio-c01-b: real onReady waits for _page and unload clears both timers, context, and listeners\n ---\n duration_ms: 4.301458\n type: 'test'\n ...\n# Subtest: package-audio-c01-b: hidden boot never initializes audio until return; changed-account hide retires old audio\nok 49 - package-audio-c01-b: hidden boot never initializes audio until return; changed-account hide retires old audio\n ---\n duration_ms: 2.824458\n type: 'test'\n ...\n# Subtest: real chapter unload destroys audio and stale callbacks cannot save or update\nok 50 - real chapter unload destroys audio and stale callbacks cannot save or update\n ---\n duration_ms: 21.170791\n type: 'test'\n ...\n# Subtest: real chapter account-change hide cleans resources without writing previous audio progress into next account\nok 51 - real chapter account-change hide cleans resources without writing previous audio progress into next account\n ---\n duration_ms: 14.025583\n type: 'test'\n ...\n# Subtest: unload before hydration prevents late onLoad/onShow/onReady and playback\nok 52 - unload before hydration prevents late onLoad/onShow/onReady and playback\n ---\n duration_ms: 1.374292\n type: 'test'\n ...\n# Subtest: catalog reset requires unchanged account and the same visible page lifetime\nok 53 - catalog reset requires unchanged account and the same visible page lifetime\n ---\n duration_ms: 7.785875\n type: 'test'\n ...\n# Subtest: cleanup permission ends synchronously even when the original unload throws\nok 54 - cleanup permission ends synchronously even when the original unload throws\n ---\n duration_ms: 1.941917\n type: 'test'\n ...\n# Subtest: SHA-256 uses the original portable implementation\nok 55 - SHA-256 uses the original portable implementation\n ---\n duration_ms: 1.526208\n type: 'test'\n ...\n# Subtest: wire projection excludes story text, health answers, credentials and invalid IDs\nok 56 - wire projection excludes story text, health answers, credentials and invalid IDs\n ---\n duration_ms: 0.784292\n type: 'test'\n ...\n# Subtest: guest can read locally without any API calls, and guest state is not uploaded after login\nok 57 - guest can read locally without any API calls, and guest state is not uploaded after login\n ---\n duration_ms: 3.606666\n type: 'test'\n ...\n# Subtest: authenticated save uses existing token header, JSON, whitelist and own revision\nok 58 - authenticated save uses existing token header, JSON, whitelist and own revision\n ---\n duration_ms: 1.561333\n type: 'test'\n ...\n# Subtest: offline edits survive and retry when API becomes available\nok 59 - offline edits survive and retry when API becomes available\n ---\n duration_ms: 1.003208\n type: 'test'\n ...\n# Subtest: login expiration never silently claims synchronization\nok 60 - login expiration never silently claims synchronization\n ---\n duration_ms: 1.864834\n type: 'test'\n ...\n# Subtest: account changes isolate progress and reject delayed writes from the previous page\nok 61 - account changes isolate progress and reject delayed writes from the previous page\n ---\n duration_ms: 1.11325\n type: 'test'\n ...\n# Subtest: late HTTP response after account switch does not hydrate the new account\nok 62 - late HTTP response after account switch does not hydrate the new account\n ---\n duration_ms: 1.228542\n type: 'test'\n ...\n# Subtest: conflict keeps both versions; explicit cloud choice takes a recoverable backup\nok 63 - conflict keeps both versions; explicit cloud choice takes a recoverable backup\n ---\n duration_ms: 0.754875\n type: 'test'\n ...\n# Subtest: explicit local conflict resolution uses the new server revision\nok 64 - explicit local conflict resolution uses the new server revision\n ---\n duration_ms: 0.671084\n type: 'test'\n ...\n# Subtest: lost response retries the same request ID and does not double increment\nok 65 - lost response retries the same request ID and does not double increment\n ---\n duration_ms: 0.640875\n type: 'test'\n ...\n# Subtest: new edits made while saving are queued without being overwritten by an old response\nok 66 - new edits made while saving are queued without being overwritten by an old response\n ---\n duration_ms: 0.651708\n type: 'test'\n ...\n# Subtest: reset uses an empty story and preserves valid unsynced card IDs\nok 67 - reset uses an empty story and preserves valid unsynced card IDs\n ---\n duration_ms: 0.346458\n type: 'test'\n ...\n# Subtest: reset requested during an in-flight replace is not dropped\nok 68 - reset requested during an in-flight replace is not dropped\n ---\n duration_ms: 0.374583\n type: 'test'\n ...\n# Subtest: storage errors stop cloud writes and are reported truthfully\nok 69 - storage errors stop cloud writes and are reported truthfully\n ---\n duration_ms: 0.325792\n type: 'test'\n ...\n# Subtest: settings/audio remain local and scoped\nok 70 - settings/audio remain local and scoped\n ---\n duration_ms: 0.252792\n type: 'test'\n ...\n# Subtest: a renewed token recovers the authenticated user local unsynced queue\nok 71 - a renewed token recovers the authenticated user local unsynced queue\n ---\n duration_ms: 0.916417\n type: 'test'\n ...\n# Subtest: cloud hydration does not claim local persistence when storage is full\nok 72 - cloud hydration does not claim local persistence when storage is full\n ---\n duration_ms: 0.3085\n type: 'test'\n ...\n# Subtest: permanent contract failure is not automatically resubmitted by page hide or new edits\nok 73 - permanent contract failure is not automatically resubmitted by page hide or new edits\n ---\n duration_ms: 1.086042\n type: 'test'\n ...\n# Subtest: review regression: offline reset then new reading sends reset followed by the new progress\nok 74 - review regression: offline reset then new reading sends reset followed by the new progress\n ---\n duration_ms: 0.819792\n type: 'test'\n ...\n# Subtest: review regression: queue persistence failure releases in-flight lock and can recover\nok 75 - review regression: queue persistence failure releases in-flight lock and can recover\n ---\n duration_ms: 1.301584\n type: 'test'\n ...\n# Subtest: review regression: conflict confirmation is bound to account and exact local/conflict revision\nok 76 - review regression: conflict confirmation is bound to account and exact local/conflict revision\n ---\n duration_ms: 0.447833\n type: 'test'\n ...\n# Subtest: review regression: reset helper rejects missing or stale confirmation scope\nok 77 - review regression: reset helper rejects missing or stale confirmation scope\n ---\n duration_ms: 1.890625\n type: 'test'\n ...\n# Subtest: native lifecycle waits for account hydration and blocks pre-boot interaction\nok 78 - native lifecycle waits for account hydration and blocks pre-boot interaction\n ---\n duration_ms: 8.846166\n type: 'test'\n ...\n# Subtest: native page hidden during boot initializes only on return, then cleans up\nok 79 - native page hidden during boot initializes only on return, then cleans up\n ---\n duration_ms: 1.261666\n type: 'test'\n ...\n# Subtest: native page unloaded before HTTP completion cannot start late playback/initialization\nok 80 - native page unloaded before HTTP completion cannot start late playback/initialization\n ---\n duration_ms: 0.699667\n type: 'test'\n ...\n# Subtest: native event after host account changes returns home before old game mutation\nok 81 - native event after host account changes returns home before old game mutation\n ---\n duration_ms: 1.190667\n type: 'test'\n ...\n1..81\n# tests 81\n# suites 0\n# pass 81\n# fail 0\n# cancelled 0\n# skipped 0\n# todo 0\n# duration_ms 7876.523958\n",
"stderr": "",
"passed": true
},
{
"command": [
"npm",
"run",
"build:mp-weixin"
],
"exitCode": 0,
"signal": null,
"stdout": "\n> tongji-uniapp@1.0.0 build:mp-weixin\n> cross-env UNI_INPUT_DIR=. uni build -p mp-weixin\n\nCompiling...\n\nuni-app 有新版本发布,请执行 `npx @dcloudio/uvm@latest` 更新,更新日志详见:https://download1.dcloud.net.cn/hbuilderx/changelog/5.24.2026081301.html\n​[plugin:tang-detective-native-pages] 唐侦探原生页面已合并:24 页,原生文件 6421924 bytes,其中主包新增 548319 bytes;此结果不代表包体积或发布验收通过。​\nDONE Build complete.\nRun method: open Weixin Mini Program Devtools, import dist/build/mp-weixin run.\n",
"stderr": "",
"passed": true
},
{
"command": [
"npm",
"run",
"check:tang-output"
],
"exitCode": 0,
"signal": null,
"stdout": "\n> tongji-uniapp@1.0.0 check:tang-output\n> node build/validate-tang-detective-output.mjs dist/build/mp-weixin && node build/validate-tang-tongji-host.mjs dist/build/mp-weixin\n\n{\n \"passed\": true,\n \"nativePages\": 24,\n \"mediaFiles\": 204,\n \"packagedMediaFiles\": 0,\n \"mediaMode\": \"cos\",\n \"relativeDependencies\": 525,\n \"nativeSizes\": {\n \"sourceFileBytes\": 6421924,\n \"mainPackageBytes\": 548319,\n \"subPackages\": {\n \"tang-detective/package-audio-c01-a\": 31241,\n \"tang-detective/package-audio-c01-b\": 31174,\n \"tang-detective/package-audio-player\": 124896,\n \"tang-detective/package-chapter-02\": 369451,\n \"tang-detective/package-chapter-03\": 369451,\n \"tang-detective/package-chapter-04\": 374841,\n \"tang-detective/package-chapter-05\": 369451,\n \"tang-detective/package-chapter-06\": 375496,\n \"tang-detective/package-chapter-07\": 375689,\n \"tang-detective/package-chapter-08\": 375888,\n \"tang-detective/package-chapter-09\": 377073,\n \"tang-detective/package-chapter-10\": 376159,\n \"tang-detective/package-chapter-11\": 376026,\n \"tang-detective/package-chapter-12\": 376689,\n \"tang-detective/package-chapter-13\": 376080,\n \"tang-detective/package-chapter-14\": 375985,\n \"tang-detective/package-chapter-15\": 376289,\n \"tang-detective/package-game\": 441726\n },\n \"mediaFileCount\": 0,\n \"mediaBytes\": 0\n },\n \"outputSizes\": {\n \"totalFileBytes\": 7438230,\n \"mainPackageFileBytes\": 1412653,\n \"subPackages\": {\n \"tang-detective/package-audio-c01-a\": 31241,\n \"tang-detective/package-audio-c01-b\": 31174,\n \"tang-detective/package-audio-player\": 124896,\n \"tang-detective/package-chapter-02\": 369451,\n \"tang-detective/package-chapter-03\": 369451,\n \"tang-detective/package-chapter-04\": 374841,\n \"tang-detective/package-chapter-05\": 369451,\n \"tang-detective/package-chapter-06\": 375496,\n \"tang-detective/package-chapter-07\": 375689,\n \"tang-detective/package-chapter-08\": 375888,\n \"tang-detective/package-chapter-09\": 377073,\n \"tang-detective/package-chapter-10\": 376159,\n \"tang-detective/package-chapter-11\": 376026,\n \"tang-detective/package-chapter-12\": 376689,\n \"tang-detective/package-chapter-13\": 376080,\n \"tang-detective/package-chapter-14\": 375985,\n \"tang-detective/package-chapter-15\": 376289,\n \"tang-detective/package-game\": 441726,\n \"training\": 151972\n }\n },\n \"errors\": [],\n \"boundary\": \"Static source/asset/dependency/manifest verification only. Raw file sizes are not WeChat upload package sizes; no simulator, device, audio listening, upload, or release acceptance was performed.\"\n}\n{\n \"passed\": true,\n \"project\": \"TongjiUniApp\",\n \"startupPage\": \"tongji/pages/weekly\",\n \"sourceHostRoutes\": 15,\n \"nativePages\": 24,\n \"apiBaseUrl\": \"https://xt.zhenyangtang.com.cn/\",\n \"unrelatedCallSdkImported\": false,\n \"boundary\": \"Built output routing/configuration checks only; not a live backend or device test.\"\n}\n",
"stderr": "",
"passed": true
},
{
"command": [
"/Users/dagedagededagege/.hermes/node/bin/node",
"scripts/check-tang-native-compiler.cjs"
],
"exitCode": 0,
"signal": null,
"stdout": "{\n \"nativePages\": 24,\n \"results\": [\n {\n \"tool\": \"wcc\",\n \"exitCode\": 0,\n \"passed\": true,\n \"generatedOutputBytes\": 1192002,\n \"diagnostics\": \"\",\n \"error\": null\n },\n {\n \"tool\": \"wcsc\",\n \"exitCode\": 0,\n \"passed\": true,\n \"generatedOutputBytes\": 1346916,\n \"diagnostics\": \"\",\n \"error\": null\n }\n ],\n \"boundary\": \"Installed compiler syntax check only, not simulator/device, networking or upload acceptance.\"\n}\n",
"stderr": "",
"passed": true
}
],
"boundary": "Actual cleaned checkout, installed compiler and offline automated tests only. Not real-device, medical, backend deployment or release acceptance.",
"output": {
"passed": true,
"nativePages": 24,
"mediaFiles": 204,
"packagedMediaFiles": 0,
"mediaMode": "cos",
"relativeDependencies": 525,
"nativeSizes": {
"sourceFileBytes": 6421924,
"mainPackageBytes": 548319,
"subPackages": {
"tang-detective/package-audio-c01-a": 31241,
"tang-detective/package-audio-c01-b": 31174,
"tang-detective/package-audio-player": 124896,
"tang-detective/package-chapter-02": 369451,
"tang-detective/package-chapter-03": 369451,
"tang-detective/package-chapter-04": 374841,
"tang-detective/package-chapter-05": 369451,
"tang-detective/package-chapter-06": 375496,
"tang-detective/package-chapter-07": 375689,
"tang-detective/package-chapter-08": 375888,
"tang-detective/package-chapter-09": 377073,
"tang-detective/package-chapter-10": 376159,
"tang-detective/package-chapter-11": 376026,
"tang-detective/package-chapter-12": 376689,
"tang-detective/package-chapter-13": 376080,
"tang-detective/package-chapter-14": 375985,
"tang-detective/package-chapter-15": 376289,
"tang-detective/package-game": 441726
},
"mediaFileCount": 0,
"mediaBytes": 0
},
"outputSizes": {
"totalFileBytes": 7438230,
"mainPackageFileBytes": 1412653,
"subPackages": {
"tang-detective/package-audio-c01-a": 31241,
"tang-detective/package-audio-c01-b": 31174,
"tang-detective/package-audio-player": 124896,
"tang-detective/package-chapter-02": 369451,
"tang-detective/package-chapter-03": 369451,
"tang-detective/package-chapter-04": 374841,
"tang-detective/package-chapter-05": 369451,
"tang-detective/package-chapter-06": 375496,
"tang-detective/package-chapter-07": 375689,
"tang-detective/package-chapter-08": 375888,
"tang-detective/package-chapter-09": 377073,
"tang-detective/package-chapter-10": 376159,
"tang-detective/package-chapter-11": 376026,
"tang-detective/package-chapter-12": 376689,
"tang-detective/package-chapter-13": 376080,
"tang-detective/package-chapter-14": 375985,
"tang-detective/package-chapter-15": 376289,
"tang-detective/package-game": 441726,
"training": 151972
}
},
"errors": [],
"boundary": "Static source/asset/dependency/manifest verification only. Raw file sizes are not WeChat upload package sizes; no simulator, device, audio listening, upload, or release acceptance was performed."
},
"remainingHostMedia": [
"static/images/my/after-sale.png",
"static/images/my/delivery.png",
"static/images/my/payment.png",
"static/images/my/review.png",
"static/images/my/shipping.png",
"static/user/user.png",
"static/user/user_no.png"
],
"completedAt": "2026-09-08T09:44:35.660Z"
}