136 lines
28 KiB
JSON
136 lines
28 KiB
JSON
{
|
||
"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"
|
||
}
|