Publish qualified installed Node document search application
Browse files- document-search/node/releases/0.1.0/caa1f395d8a0943d9cd62442f87860a1ccbe6e5abb2eb3b5ff54375e4b1e1a6e/README.md +60 -0
- document-search/node/releases/0.1.0/caa1f395d8a0943d9cd62442f87860a1ccbe6e5abb2eb3b5ff54375e4b1e1a6e/doppler-gpu-0.6.2.tgz +3 -0
- document-search/node/releases/0.1.0/caa1f395d8a0943d9cd62442f87860a1ccbe6e5abb2eb3b5ff54375e4b1e1a6e/doppler-node-document-search-0.1.0.tgz +3 -0
- document-search/node/releases/0.1.0/caa1f395d8a0943d9cd62442f87860a1ccbe6e5abb2eb3b5ff54375e4b1e1a6e/final-clean-qualification.json +0 -0
- document-search/node/releases/0.1.0/caa1f395d8a0943d9cd62442f87860a1ccbe6e5abb2eb3b5ff54375e4b1e1a6e/final-cli.json +78 -0
- document-search/node/releases/0.1.0/caa1f395d8a0943d9cd62442f87860a1ccbe6e5abb2eb3b5ff54375e4b1e1a6e/final-offline-qualification.json +0 -0
- document-search/node/releases/0.1.0/caa1f395d8a0943d9cd62442f87860a1ccbe6e5abb2eb3b5ff54375e4b1e1a6e/release.json +133 -0
document-search/node/releases/0.1.0/caa1f395d8a0943d9cd62442f87860a1ccbe6e5abb2eb3b5ff54375e4b1e1a6e/README.md
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Local document search in Node
|
| 2 |
+
|
| 3 |
+
This application uses the same document controller and search implementation as
|
| 4 |
+
the browser starter. Embedding and reranking stay loaded together in interactive
|
| 5 |
+
mode. Documents and queries stay on this machine; installation downloads the
|
| 6 |
+
exact signed model artifacts.
|
| 7 |
+
|
| 8 |
+
The qualified configuration is Linux x64, Node 22.22.1, `webgpu` 0.4.0, and AMD
|
| 9 |
+
Radeon 8060S with RADV Mesa 26.0.3. The GPU needs `shader-f16`, subgroups, and the
|
| 10 |
+
buffer limits declared by both Capsules. Qualification used a 122 GiB host;
|
| 11 |
+
minimum system memory and other GPUs are not established. Requested GPU buffer
|
| 12 |
+
sizes are not measurements of physical residency. Electron and Bun are separate.
|
| 13 |
+
|
| 14 |
+
Download size is approximately 2.15 GB for the two models, plus this application
|
| 15 |
+
and npm dependencies. Allow at least 3 GB of free private storage for models,
|
| 16 |
+
atomic replacement files, and a small corpus; larger corpora need additional
|
| 17 |
+
space. Persistent disk and reboot qualification remain outstanding. Each process
|
| 18 |
+
opening verifies the retained artifacts and prepares both models on the GPU.
|
| 19 |
+
|
| 20 |
+
From the extracted application directory:
|
| 21 |
+
|
| 22 |
+
```sh
|
| 23 |
+
npm ci --omit=optional --no-audit --no-fund
|
| 24 |
+
node node.js install ./search-data
|
| 25 |
+
node node.js index ./search-data ./documents.json
|
| 26 |
+
node node.js interactive ./search-data
|
| 27 |
+
```
|
| 28 |
+
|
| 29 |
+
Create `documents.json` with your own text or Markdown:
|
| 30 |
+
|
| 31 |
+
```json
|
| 32 |
+
[
|
| 33 |
+
{ "id": "notes", "title": "Project notes", "mediaType": "text/plain", "text": "The text you want to search." }
|
| 34 |
+
]
|
| 35 |
+
```
|
| 36 |
+
|
| 37 |
+
Keep each document's `id` stable across revisions. Indexing the same content again
|
| 38 |
+
reuses its embedding. Interactive mode accepts one query per line, reports its
|
| 39 |
+
measured duration, and keeps both models loaded. EOF closes the application.
|
| 40 |
+
`node node.js search ./search-data "your query"` runs one query and closes.
|
| 41 |
+
|
| 42 |
+
Ctrl-C requests cancellation. Already submitted GPU work must finish before
|
| 43 |
+
cleanup; cancellation is not immediate. Failed saves preserve the previous
|
| 44 |
+
document/index snapshot. After a device loss, close and reopen the application.
|
| 45 |
+
For a corrupt installation, run `node node.js repair ./search-data`; repair
|
| 46 |
+
verifies retained bytes and reacquires damaged artifacts. Downloads require
|
| 47 |
+
networking, while reopening and searching retained documents work offline.
|
| 48 |
+
|
| 49 |
+
Use a dedicated WebGPU process and one process per storage directory. The runner
|
| 50 |
+
rejects an existing provider rather than taking ownership of its device.
|
| 51 |
+
A crash leaves `.document-search.lock`
|
| 52 |
+
with its owner PID; confirm that process has stopped before removing the lock.
|
| 53 |
+
Uncommitted `*.pending` files can then be removed. Keep the directory private and
|
| 54 |
+
do not modify it while the application is running.
|
| 55 |
+
|
| 56 |
+
For integration, import `createNodeDocumentSearch` from `./node.js`, call
|
| 57 |
+
`app.controller.openRetained()` (or `install()` initially), then use
|
| 58 |
+
`indexDocuments()` and `search()`. Always `await app.close()` in `finally`.
|
| 59 |
+
Existing release checkpoints and explicit retained-local authorization remain
|
| 60 |
+
part of the installation; offline use cannot discover unseen revocations.
|
document-search/node/releases/0.1.0/caa1f395d8a0943d9cd62442f87860a1ccbe6e5abb2eb3b5ff54375e4b1e1a6e/doppler-gpu-0.6.2.tgz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:73c0d1227f5d64e2e60d78b2a14d4ecb5b90535d932cf7b184d24eaa466c6b3e
|
| 3 |
+
size 2153927
|
document-search/node/releases/0.1.0/caa1f395d8a0943d9cd62442f87860a1ccbe6e5abb2eb3b5ff54375e4b1e1a6e/doppler-node-document-search-0.1.0.tgz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:caa1f395d8a0943d9cd62442f87860a1ccbe6e5abb2eb3b5ff54375e4b1e1a6e
|
| 3 |
+
size 8554262
|
document-search/node/releases/0.1.0/caa1f395d8a0943d9cd62442f87860a1ccbe6e5abb2eb3b5ff54375e4b1e1a6e/final-clean-qualification.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
document-search/node/releases/0.1.0/caa1f395d8a0943d9cd62442f87860a1ccbe6e5abb2eb3b5ff54375e4b1e1a6e/final-cli.json
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "doppler.node-document-search-cli/v1",
|
| 3 |
+
"passed": true,
|
| 4 |
+
"failure": null,
|
| 5 |
+
"config": {
|
| 6 |
+
"applicationDir": "/var/tmp/doppler-node-search-installed-20260925-05",
|
| 7 |
+
"storageDir": "/dev/shm/doppler-node-search-storage-20260925-03",
|
| 8 |
+
"fixturePath": "/home/x/deco/doppler/artifacts/document-search-delivery-2026-09-23/reference-corpus.json",
|
| 9 |
+
"requiredVendor": "amd",
|
| 10 |
+
"install": false,
|
| 11 |
+
"offline": true,
|
| 12 |
+
"lifecycle": false,
|
| 13 |
+
"outputPath": "/var/tmp/doppler-search-node-20260925/final-cli.json",
|
| 14 |
+
"offlineKernelRequired": true,
|
| 15 |
+
"previousReportPath": "/var/tmp/doppler-search-node-20260925/final-clean-qualification.json"
|
| 16 |
+
},
|
| 17 |
+
"exit": {
|
| 18 |
+
"code": 0,
|
| 19 |
+
"signal": null
|
| 20 |
+
},
|
| 21 |
+
"borrowedProviderRejected": true,
|
| 22 |
+
"results": [
|
| 23 |
+
{
|
| 24 |
+
"query": "How should I store the culture that leavens my bread when I only bake occasionally?",
|
| 25 |
+
"queryMs": 1071.242502000001,
|
| 26 |
+
"results": [
|
| 27 |
+
{
|
| 28 |
+
"id": "sourdough",
|
| 29 |
+
"title": "Maintaining a sourdough starter",
|
| 30 |
+
"score": 20.549711227416992,
|
| 31 |
+
"excerpt": "# Maintaining a sourdough starter\nA starter is a living mixture of flour, water, yeast and bacteria. Feed it fresh flour and water regularly. For occasional baking, keep it refrigerated and refresh it before mixing dough. Discard any starte"
|
| 32 |
+
},
|
| 33 |
+
{
|
| 34 |
+
"id": "starter-motor",
|
| 35 |
+
"title": "What a starter motor does",
|
| 36 |
+
"score": 1.7680528163909912,
|
| 37 |
+
"excerpt": "The starter motor uses electricity from a vehicle battery to rotate the engine until combustion can continue on its own. A clicking sound with no engine rotation can indicate a weak battery or poor connection. This electrical starter does n"
|
| 38 |
+
},
|
| 39 |
+
{
|
| 40 |
+
"id": "tire",
|
| 41 |
+
"title": "Repairing a bicycle puncture",
|
| 42 |
+
"score": 0.917273759841919,
|
| 43 |
+
"excerpt": "Remove the bicycle wheel and lift one tire bead off the rim. Pull out the tube and inflate it to locate the puncture. Check the tire for glass or thorns before patching the tube or fitting a replacement. Seat the bead and inflate to the tir"
|
| 44 |
+
}
|
| 45 |
+
]
|
| 46 |
+
},
|
| 47 |
+
{
|
| 48 |
+
"query": "What should I inspect before replacing the inner tube on my bike?",
|
| 49 |
+
"queryMs": 1194.9881900000037,
|
| 50 |
+
"results": [
|
| 51 |
+
{
|
| 52 |
+
"id": "tire",
|
| 53 |
+
"title": "Repairing a bicycle puncture",
|
| 54 |
+
"score": 20.673477172851562,
|
| 55 |
+
"excerpt": "Remove the bicycle wheel and lift one tire bead off the rim. Pull out the tube and inflate it to locate the puncture. Check the tire for glass or thorns before patching the tube or fitting a replacement. Seat the bead and inflate to the tir"
|
| 56 |
+
},
|
| 57 |
+
{
|
| 58 |
+
"id": "starter-motor",
|
| 59 |
+
"title": "What a starter motor does",
|
| 60 |
+
"score": 2.3796067237854004,
|
| 61 |
+
"excerpt": "The starter motor uses electricity from a vehicle battery to rotate the engine until combustion can continue on its own. A clicking sound with no engine rotation can indicate a weak battery or poor connection. This electrical starter does n"
|
| 62 |
+
},
|
| 63 |
+
{
|
| 64 |
+
"id": "sourdough",
|
| 65 |
+
"title": "Maintaining a sourdough starter",
|
| 66 |
+
"score": 2.3478808403015137,
|
| 67 |
+
"excerpt": "# Maintaining a sourdough starter\nA starter is a living mixture of flour, water, yeast and bacteria. Feed it fresh flour and water regularly. For occasional baking, keep it refrigerated and refresh it before mixing dough. Discard any starte"
|
| 68 |
+
}
|
| 69 |
+
]
|
| 70 |
+
}
|
| 71 |
+
],
|
| 72 |
+
"buildReceiptSha256": "5929241fca8a74c17db845d43b84c091e5ba523c51614539feb8a2826af8a8ef",
|
| 73 |
+
"probeSha256": "87894328a2ac0ce83a2482f61c1d134a0c2746f6345b04b6f05c105efc0876be",
|
| 74 |
+
"stdoutSha256": "63003e354a40aeaa8b38495e1088b902a50fadd45bc8b0e77dc54473ccc9b8ca",
|
| 75 |
+
"stderrSha256": "5ba3fc6bf23fd827f79ca3ec877413aadc0a982af7c67503a0566ee82b0eb1b1",
|
| 76 |
+
"physicalExecution": true,
|
| 77 |
+
"externalAdoption": false
|
| 78 |
+
}
|
document-search/node/releases/0.1.0/caa1f395d8a0943d9cd62442f87860a1ccbe6e5abb2eb3b5ff54375e4b1e1a6e/final-offline-qualification.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
document-search/node/releases/0.1.0/caa1f395d8a0943d9cd62442f87860a1ccbe6e5abb2eb3b5ff54375e4b1e1a6e/release.json
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "doppler.document-search-node-release/v1",
|
| 3 |
+
"passed": true,
|
| 4 |
+
"createdAtUtc": "2026-09-25T14:27:24.729Z",
|
| 5 |
+
"archive": {
|
| 6 |
+
"filename": "doppler-node-document-search-0.1.0.tgz",
|
| 7 |
+
"sha256": "caa1f395d8a0943d9cd62442f87860a1ccbe6e5abb2eb3b5ff54375e4b1e1a6e",
|
| 8 |
+
"sizeBytes": 8554262
|
| 9 |
+
},
|
| 10 |
+
"runtime": {
|
| 11 |
+
"version": "0.6.2",
|
| 12 |
+
"sha256": "73c0d1227f5d64e2e60d78b2a14d4ecb5b90535d932cf7b184d24eaa466c6b3e",
|
| 13 |
+
"sizeBytes": 2153927,
|
| 14 |
+
"source": "separately qualified vendored candidate; npm registry unchanged"
|
| 15 |
+
},
|
| 16 |
+
"buildReceiptSha256": "5929241fca8a74c17db845d43b84c091e5ba523c51614539feb8a2826af8a8ef",
|
| 17 |
+
"models": [
|
| 18 |
+
{
|
| 19 |
+
"role": "embedding",
|
| 20 |
+
"identity": {
|
| 21 |
+
"schema": "doppler.capsule/v3",
|
| 22 |
+
"capsuleId": "qwen-3-embedding-0-6b-f16-af32-capsule-v3-055c6df34d6a0b831a570caeed55847dbe9d93578f01d630587b0a241d423f13",
|
| 23 |
+
"semanticRoot": "sha256:055c6df34d6a0b831a570caeed55847dbe9d93578f01d630587b0a241d423f13",
|
| 24 |
+
"envelopeDigest": "sha256:b55dac90d845ca16e252d50b79d4009fda8fcd8834d023d1308da1b5091ea310",
|
| 25 |
+
"artifactClosureDigest": "sha256:6459bfac1fa531ef32bdebc9a7947149cea72e85782e2cd4d5096ffb6eaa1bcf"
|
| 26 |
+
}
|
| 27 |
+
},
|
| 28 |
+
{
|
| 29 |
+
"role": "reranker",
|
| 30 |
+
"identity": {
|
| 31 |
+
"schema": "doppler.capsule/v3",
|
| 32 |
+
"capsuleId": "qwen-3-reranker-0-6b-q4k-ehf16-af32-capsule-v3-86fd4533703b22f8a9ba875d5da62e2968bb3c2d7450ea25c6a816ca896283a5",
|
| 33 |
+
"semanticRoot": "sha256:86fd4533703b22f8a9ba875d5da62e2968bb3c2d7450ea25c6a816ca896283a5",
|
| 34 |
+
"envelopeDigest": "sha256:bd85fb9d46280d8ed4bff1a6df58638c1d64430f8fa50fd7ffd03ed0924c1026",
|
| 35 |
+
"artifactClosureDigest": "sha256:b2ce8fb7b5ffb60301d06351da485590a5321cbdb66fa3038d087619d541cf59"
|
| 36 |
+
}
|
| 37 |
+
}
|
| 38 |
+
],
|
| 39 |
+
"hardware": {
|
| 40 |
+
"vendor": "amd",
|
| 41 |
+
"architecture": "rdna-3",
|
| 42 |
+
"device": "radeon-8060s-graphics-radv-strix-halo-",
|
| 43 |
+
"description": "radv: Mesa 26.0.3-1ubuntu1",
|
| 44 |
+
"isFallbackAdapter": false
|
| 45 |
+
},
|
| 46 |
+
"nodeVersion": "v22.22.1",
|
| 47 |
+
"provider": {
|
| 48 |
+
"provider": "webgpu",
|
| 49 |
+
"version": "0.4.0",
|
| 50 |
+
"binary": "dist/linux-x64.dawn.node",
|
| 51 |
+
"sha256": "fbfe599055b469963e4c9bfc900a702843db962dcaba0799b3c81ae33fa43db1",
|
| 52 |
+
"sizeBytes": 18617336
|
| 53 |
+
},
|
| 54 |
+
"npmVersion": "9.2.0",
|
| 55 |
+
"checks": {
|
| 56 |
+
"cleanInstallation": true,
|
| 57 |
+
"publicShardDownloads": 32,
|
| 58 |
+
"installedAssetInventory": true,
|
| 59 |
+
"twoModelsResident": true,
|
| 60 |
+
"unchangedDocumentReuse": true,
|
| 61 |
+
"repeatedSearch": true,
|
| 62 |
+
"cancelledIndexAfterSubmission": {
|
| 63 |
+
"passed": true,
|
| 64 |
+
"submissions": 12
|
| 65 |
+
},
|
| 66 |
+
"cancelledQueryAfterSubmission": {
|
| 67 |
+
"passed": true,
|
| 68 |
+
"submissions": 12
|
| 69 |
+
},
|
| 70 |
+
"supersededQuery": true,
|
| 71 |
+
"interruptedSave": true,
|
| 72 |
+
"explicitClosure": true,
|
| 73 |
+
"corruptionRepair": true,
|
| 74 |
+
"deviceLossRecovery": true,
|
| 75 |
+
"offlineRestart": true,
|
| 76 |
+
"offlineRequests": 0,
|
| 77 |
+
"kernelSocketDenials": [
|
| 78 |
+
{
|
| 79 |
+
"host": "127.0.0.1",
|
| 80 |
+
"error": "EPERM"
|
| 81 |
+
},
|
| 82 |
+
{
|
| 83 |
+
"host": "::1",
|
| 84 |
+
"error": "EPERM"
|
| 85 |
+
}
|
| 86 |
+
],
|
| 87 |
+
"interactiveCli": true,
|
| 88 |
+
"borrowedProviderRejected": true
|
| 89 |
+
},
|
| 90 |
+
"timings": {
|
| 91 |
+
"initialInstallationMs": 223935.22875100002,
|
| 92 |
+
"coldIndexMs": 2219.9216650000017,
|
| 93 |
+
"firstQueryMs": 973.585665999999,
|
| 94 |
+
"subsequentQueryMedianMs": 1003.5095719999954,
|
| 95 |
+
"offlineReopenMs": 50906.993127
|
| 96 |
+
},
|
| 97 |
+
"memory": {
|
| 98 |
+
"sampledPeakProcessRssBytes": 3266555904,
|
| 99 |
+
"processHighWaterRssBytes": 3266555904,
|
| 100 |
+
"gpu": {
|
| 101 |
+
"submitCalls": 1293,
|
| 102 |
+
"createdBufferBytes": 33507633344,
|
| 103 |
+
"liveRequestedBufferBytes": 0,
|
| 104 |
+
"peakRequestedBufferBytes": 3989755736
|
| 105 |
+
},
|
| 106 |
+
"gpuScope": "Requested buffer allocation sizes and explicit destruction; not measured physical GPU residency."
|
| 107 |
+
},
|
| 108 |
+
"conditions": {
|
| 109 |
+
"storageFilesystem": {
|
| 110 |
+
"type": 16914836,
|
| 111 |
+
"rebootTested": false,
|
| 112 |
+
"physicalGpuResidencyMeasured": false
|
| 113 |
+
},
|
| 114 |
+
"systemUsableRamGiB": 122,
|
| 115 |
+
"repositoryCheckConcurrentWithPartOfQualification": true,
|
| 116 |
+
"timingScope": "Observed qualification diagnostics, not a controlled throughput comparison or minimum hardware claim."
|
| 117 |
+
},
|
| 118 |
+
"limitations": {
|
| 119 |
+
"diskBackedBrowserAcceptance": false,
|
| 120 |
+
"rebootAcceptance": false,
|
| 121 |
+
"minimumSystemMemoryEstablished": false,
|
| 122 |
+
"physicalGpuResidencyMeasured": false,
|
| 123 |
+
"externalAdoption": false,
|
| 124 |
+
"electronQualified": false,
|
| 125 |
+
"bunQualified": false
|
| 126 |
+
},
|
| 127 |
+
"evidence": {
|
| 128 |
+
"final-clean-qualification.json": "7bd0ea8cdde71cfba1f5b9fb1baa8af1815263f25489e27305855ab46a3e93e8",
|
| 129 |
+
"final-offline-qualification.json": "f9b903544a262d22f0265b1bb095399d96ff8d1e09116534ad0282b1483d2549",
|
| 130 |
+
"final-cli.json": "e77a40180b484caf6dfaea42752fb1aed17edd8dd230b0fb02c75a1308168742",
|
| 131 |
+
"build-receipt.json": "5929241fca8a74c17db845d43b84c091e5ba523c51614539feb8a2826af8a8ef"
|
| 132 |
+
}
|
| 133 |
+
}
|