@wenathlan/saddle 1.8.17 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Dockerfile +1339 -0
- package/README.md +68 -22
- package/alternatives.ts +1218 -0
- package/biome.json +153 -0
- package/boards.json +1517 -0
- package/compute.ts +3144 -0
- package/cores.json +1801 -0
- package/dist/acquisition.d.ts +359 -0
- package/dist/acquisition.d.ts.map +1 -0
- package/dist/acquisition.js +629 -0
- package/dist/acquisition.js.map +1 -0
- package/dist/alternatives.d.ts +509 -0
- package/dist/alternatives.d.ts.map +1 -0
- package/dist/alternatives.js +951 -0
- package/dist/alternatives.js.map +1 -0
- package/dist/automation.d.ts +426 -0
- package/dist/automation.d.ts.map +1 -0
- package/dist/automation.js +561 -0
- package/dist/automation.js.map +1 -0
- package/dist/browser.d.ts +562 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +1057 -0
- package/dist/browser.js.map +1 -0
- package/dist/capacitor.config.d.ts +13 -0
- package/dist/capacitor.config.d.ts.map +1 -0
- package/dist/capacitor.config.js +26 -0
- package/dist/capacitor.config.js.map +1 -0
- package/dist/cli.d.ts +17 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +111 -0
- package/dist/cli.js.map +1 -0
- package/dist/communication.d.ts +192 -0
- package/dist/communication.d.ts.map +1 -0
- package/dist/communication.js +418 -0
- package/dist/communication.js.map +1 -0
- package/dist/compute.d.ts +1161 -0
- package/dist/compute.d.ts.map +1 -0
- package/dist/compute.js +2273 -0
- package/dist/compute.js.map +1 -0
- package/dist/distribution.d.ts +529 -0
- package/dist/distribution.d.ts.map +1 -0
- package/dist/distribution.js +811 -0
- package/dist/distribution.js.map +1 -0
- package/dist/execution.d.ts +530 -0
- package/dist/execution.d.ts.map +1 -0
- package/dist/execution.js +761 -0
- package/dist/execution.js.map +1 -0
- package/dist/format.d.ts +19 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +60 -0
- package/dist/format.js.map +1 -0
- package/dist/foundation.d.ts +176 -0
- package/dist/foundation.d.ts.map +1 -0
- package/dist/foundation.js +309 -0
- package/dist/foundation.js.map +1 -0
- package/dist/index.d.ts +733 -122
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1018 -122
- package/dist/index.js.map +1 -1
- package/dist/integration.d.ts +236 -0
- package/dist/integration.d.ts.map +1 -0
- package/dist/integration.js +236 -0
- package/dist/integration.js.map +1 -0
- package/dist/intelligence.d.ts +94 -0
- package/dist/intelligence.d.ts.map +1 -0
- package/dist/intelligence.js +145 -0
- package/dist/intelligence.js.map +1 -0
- package/dist/isolation.d.ts +129 -0
- package/dist/isolation.d.ts.map +1 -0
- package/dist/isolation.js +96 -0
- package/dist/isolation.js.map +1 -0
- package/dist/media.d.ts +344 -0
- package/dist/media.d.ts.map +1 -0
- package/dist/media.js +986 -0
- package/dist/media.js.map +1 -0
- package/dist/modes.d.ts +359 -0
- package/dist/modes.d.ts.map +1 -0
- package/dist/modes.js +134 -0
- package/dist/modes.js.map +1 -0
- package/dist/{library/public.d.ts → operations.d.ts} +15 -1
- package/dist/operations.d.ts.map +1 -0
- package/dist/{library/public.js → operations.js} +18 -7
- package/dist/operations.js.map +1 -0
- package/dist/orchestrator.d.ts +1339 -0
- package/dist/orchestrator.d.ts.map +1 -0
- package/dist/orchestrator.js +4308 -0
- package/dist/orchestrator.js.map +1 -0
- package/dist/performance.d.ts +416 -0
- package/dist/performance.d.ts.map +1 -0
- package/dist/performance.js +827 -0
- package/dist/performance.js.map +1 -0
- package/dist/quantum.d.ts +810 -0
- package/dist/quantum.d.ts.map +1 -0
- package/dist/quantum.js +2073 -0
- package/dist/quantum.js.map +1 -0
- package/dist/render.d.ts +381 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +1073 -0
- package/dist/render.js.map +1 -0
- package/dist/scheduler.d.ts +596 -0
- package/dist/scheduler.d.ts.map +1 -0
- package/dist/scheduler.js +1259 -0
- package/dist/scheduler.js.map +1 -0
- package/dist/security.d.ts +501 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +1170 -0
- package/dist/security.js.map +1 -0
- package/dist/server.d.ts +21 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/{server/node.js → server.js} +16 -2
- package/dist/server.js.map +1 -0
- package/dist/tiers.d.ts +1002 -0
- package/dist/tiers.d.ts.map +1 -0
- package/dist/tiers.js +2165 -0
- package/dist/tiers.js.map +1 -0
- package/dist/virtual.d.ts +641 -0
- package/dist/virtual.d.ts.map +1 -0
- package/dist/virtual.js +1285 -0
- package/dist/virtual.js.map +1 -0
- package/dist/virtualcpu.d.ts +316 -0
- package/dist/virtualcpu.d.ts.map +1 -0
- package/dist/virtualcpu.js +1180 -0
- package/dist/virtualcpu.js.map +1 -0
- package/dist/virtualgpu.d.ts +345 -0
- package/dist/virtualgpu.d.ts.map +1 -0
- package/dist/virtualgpu.js +1000 -0
- package/dist/virtualgpu.js.map +1 -0
- package/dist/virtualization.d.ts +607 -0
- package/dist/virtualization.d.ts.map +1 -0
- package/dist/virtualization.js +1187 -0
- package/dist/virtualization.js.map +1 -0
- package/dist/virtualmemory.d.ts +818 -0
- package/dist/virtualmemory.d.ts.map +1 -0
- package/dist/virtualmemory.js +1796 -0
- package/dist/virtualmemory.js.map +1 -0
- package/dist/webscrape.d.ts +720 -0
- package/dist/webscrape.d.ts.map +1 -0
- package/dist/webscrape.js +2697 -0
- package/dist/webscrape.js.map +1 -0
- package/docker.config +769 -0
- package/docs/CONVERSA.txt +1523 -0
- package/docs/alternatives.md +499 -0
- package/docs/architecture-1.8.19.md +76 -0
- package/docs/architecture-1.8.19.mmd +33 -0
- package/docs/architecture-1.8.19.png +0 -0
- package/docs/architecture.md +355 -0
- package/docs/artifactavailability.md +6 -0
- package/docs/brancharchive-2026-08-18.md +18 -0
- package/docs/browser.md +7 -0
- package/docs/consolidation.md +70 -0
- package/docs/e2ugh-engine.md +528 -0
- package/{dist/examples/localjob.js → docs/example-localjob.ts} +3 -3
- package/{dist/examples/publicapi.js → docs/example-publicapi.ts} +2 -2
- package/docs/hardware.md +342 -0
- package/docs/optimization.md +126 -0
- package/docs/performance.md +499 -0
- package/docs/planning.1.8.18.md +94 -0
- package/docs/planning.1.8.19.md +49 -0
- package/docs/releasenotes-1.8.17.md +6 -0
- package/docs/releasenotes-1.8.18.md +32 -0
- package/docs/releasenotes-1.8.19.md +35 -0
- package/docs/research-1.8.18-isolation.md +43 -0
- package/docs/research-1.8.19-virtual-browser.md +27 -0
- package/docs/saddle.archive.1.8.17.tar.gz.gpg +0 -0
- package/docs/security.md +454 -0
- package/docs/todo-1.8.16.md +56 -1
- package/docs/todo-1.8.18.md +164 -0
- package/docs/todo-1.8.19.md +241 -0
- package/docs/viability.md +777 -0
- package/docs/virtualization.md +335 -0
- package/docs/web-duplicatecleanup.md +9 -0
- package/docs/web-ideas.md +106 -0
- package/docs/workflowimprovements-2026-08-19.md +70 -0
- package/gpumonitor.cpp +1543 -0
- package/gpus.json +2408 -0
- package/index.ts +1478 -0
- package/media.ts +1337 -0
- package/mttg.config +1549 -0
- package/orchestrator.ts +5462 -0
- package/package.json +304 -55
- package/passage.config +1331 -0
- package/performance.ts +1049 -0
- package/processors.json +2217 -0
- package/qemu.config +1062 -0
- package/qemubridge.py +1340 -0
- package/quantum.ts +2393 -0
- package/render.ts +1325 -0
- package/scheduler.ts +1600 -0
- package/security.ts +1449 -0
- package/tiers.ts +2871 -0
- package/tsconfig.json +29 -0
- package/virtualcpu.ts +1273 -0
- package/virtualgpu.ts +1181 -0
- package/virtualhardware.c +1011 -0
- package/virtualhardware.json +739 -0
- package/virtualization.ts +1628 -0
- package/virtualizationcore.cpp +4635 -0
- package/virtualmemory.ts +2303 -0
- package/vm.config.json +1910 -0
- package/{extension → web/extension}/manifest.json +1 -1
- package/web/readme.md +382 -0
- package/web/tsconfig.json +25 -0
- package/dist/adapters/forge.d.ts +0 -17
- package/dist/adapters/forge.d.ts.map +0 -1
- package/dist/adapters/forge.js +0 -19
- package/dist/adapters/forge.js.map +0 -1
- package/dist/adapters/forgejo.d.ts +0 -49
- package/dist/adapters/forgejo.d.ts.map +0 -1
- package/dist/adapters/forgejo.js +0 -8
- package/dist/adapters/forgejo.js.map +0 -1
- package/dist/adapters/github.d.ts +0 -12
- package/dist/adapters/github.d.ts.map +0 -1
- package/dist/adapters/github.js +0 -20
- package/dist/adapters/github.js.map +0 -1
- package/dist/adapters/gitlab.d.ts +0 -17
- package/dist/adapters/gitlab.d.ts.map +0 -1
- package/dist/adapters/gitlab.js +0 -10
- package/dist/adapters/gitlab.js.map +0 -1
- package/dist/adapters/huggingface.d.ts +0 -17
- package/dist/adapters/huggingface.d.ts.map +0 -1
- package/dist/adapters/huggingface.js +0 -6
- package/dist/adapters/huggingface.js.map +0 -1
- package/dist/adapters/socket.d.ts +0 -11
- package/dist/adapters/socket.d.ts.map +0 -1
- package/dist/adapters/socket.js +0 -17
- package/dist/adapters/socket.js.map +0 -1
- package/dist/adapters/transport.d.ts +0 -7
- package/dist/adapters/transport.d.ts.map +0 -1
- package/dist/adapters/transport.js +0 -36
- package/dist/adapters/transport.js.map +0 -1
- package/dist/ai/chunk.d.ts +0 -2
- package/dist/ai/chunk.d.ts.map +0 -1
- package/dist/ai/chunk.js +0 -36
- package/dist/ai/chunk.js.map +0 -1
- package/dist/ai/llmstxt.d.ts +0 -6
- package/dist/ai/llmstxt.d.ts.map +0 -1
- package/dist/ai/llmstxt.js +0 -12
- package/dist/ai/llmstxt.js.map +0 -1
- package/dist/ai/provenance.d.ts +0 -22
- package/dist/ai/provenance.d.ts.map +0 -1
- package/dist/ai/provenance.js +0 -25
- package/dist/ai/provenance.js.map +0 -1
- package/dist/ai/rag.d.ts +0 -26
- package/dist/ai/rag.d.ts.map +0 -1
- package/dist/ai/rag.js +0 -22
- package/dist/ai/rag.js.map +0 -1
- package/dist/ai/tokens.d.ts +0 -15
- package/dist/ai/tokens.d.ts.map +0 -1
- package/dist/ai/tokens.js +0 -9
- package/dist/ai/tokens.js.map +0 -1
- package/dist/api/auth.d.ts +0 -16
- package/dist/api/auth.d.ts.map +0 -1
- package/dist/api/auth.js +0 -19
- package/dist/api/auth.js.map +0 -1
- package/dist/api/contracts.d.ts +0 -28
- package/dist/api/contracts.d.ts.map +0 -1
- package/dist/api/contracts.js +0 -14
- package/dist/api/contracts.js.map +0 -1
- package/dist/api/control.d.ts +0 -10
- package/dist/api/control.d.ts.map +0 -1
- package/dist/api/control.js +0 -35
- package/dist/api/control.js.map +0 -1
- package/dist/api/http.d.ts +0 -7
- package/dist/api/http.d.ts.map +0 -1
- package/dist/api/http.js +0 -12
- package/dist/api/http.js.map +0 -1
- package/dist/api/rate.d.ts +0 -28
- package/dist/api/rate.d.ts.map +0 -1
- package/dist/api/rate.js +0 -36
- package/dist/api/rate.js.map +0 -1
- package/dist/api/security.d.ts +0 -12
- package/dist/api/security.d.ts.map +0 -1
- package/dist/api/security.js +0 -56
- package/dist/api/security.js.map +0 -1
- package/dist/api/service.d.ts +0 -5
- package/dist/api/service.d.ts.map +0 -1
- package/dist/api/service.js +0 -70
- package/dist/api/service.js.map +0 -1
- package/dist/apps/registry.d.ts +0 -33
- package/dist/apps/registry.d.ts.map +0 -1
- package/dist/apps/registry.js +0 -24
- package/dist/apps/registry.js.map +0 -1
- package/dist/binary/archive.d.ts +0 -27
- package/dist/binary/archive.d.ts.map +0 -1
- package/dist/binary/archive.js +0 -46
- package/dist/binary/archive.js.map +0 -1
- package/dist/binary/build.d.ts +0 -29
- package/dist/binary/build.d.ts.map +0 -1
- package/dist/binary/build.js +0 -17
- package/dist/binary/build.js.map +0 -1
- package/dist/binary/transform.d.ts +0 -70
- package/dist/binary/transform.d.ts.map +0 -1
- package/dist/binary/transform.js +0 -105
- package/dist/binary/transform.js.map +0 -1
- package/dist/bot/adapter.d.ts +0 -5
- package/dist/bot/adapter.d.ts.map +0 -1
- package/dist/bot/adapter.js +0 -11
- package/dist/bot/adapter.js.map +0 -1
- package/dist/bot/bot.d.ts +0 -28
- package/dist/bot/bot.d.ts.map +0 -1
- package/dist/bot/bot.js +0 -52
- package/dist/bot/bot.js.map +0 -1
- package/dist/bot/commands.d.ts +0 -8
- package/dist/bot/commands.d.ts.map +0 -1
- package/dist/bot/commands.js +0 -19
- package/dist/bot/commands.js.map +0 -1
- package/dist/bot/permissions.d.ts +0 -13
- package/dist/bot/permissions.d.ts.map +0 -1
- package/dist/bot/permissions.js +0 -16
- package/dist/bot/permissions.js.map +0 -1
- package/dist/browser/actions.d.ts +0 -33
- package/dist/browser/actions.d.ts.map +0 -1
- package/dist/browser/actions.js +0 -44
- package/dist/browser/actions.js.map +0 -1
- package/dist/browser/agent.d.ts +0 -21
- package/dist/browser/agent.d.ts.map +0 -1
- package/dist/browser/agent.js +0 -13
- package/dist/browser/agent.js.map +0 -1
- package/dist/browser/context.d.ts +0 -43
- package/dist/browser/context.d.ts.map +0 -1
- package/dist/browser/context.js +0 -54
- package/dist/browser/context.js.map +0 -1
- package/dist/browser/fingerprint.d.ts +0 -4
- package/dist/browser/fingerprint.d.ts.map +0 -1
- package/dist/browser/fingerprint.js +0 -12
- package/dist/browser/fingerprint.js.map +0 -1
- package/dist/browser/index.d.ts +0 -11
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/browser/index.js +0 -11
- package/dist/browser/index.js.map +0 -1
- package/dist/browser/playwright.d.ts +0 -11
- package/dist/browser/playwright.d.ts.map +0 -1
- package/dist/browser/playwright.js +0 -24
- package/dist/browser/playwright.js.map +0 -1
- package/dist/browser/recorder.d.ts +0 -21
- package/dist/browser/recorder.d.ts.map +0 -1
- package/dist/browser/recorder.js +0 -58
- package/dist/browser/recorder.js.map +0 -1
- package/dist/browser/session.d.ts +0 -14
- package/dist/browser/session.d.ts.map +0 -1
- package/dist/browser/session.js +0 -21
- package/dist/browser/session.js.map +0 -1
- package/dist/browser/snapshot.d.ts +0 -69
- package/dist/browser/snapshot.d.ts.map +0 -1
- package/dist/browser/snapshot.js +0 -133
- package/dist/browser/snapshot.js.map +0 -1
- package/dist/captcha/contract.d.ts +0 -35
- package/dist/captcha/contract.d.ts.map +0 -1
- package/dist/captcha/contract.js +0 -17
- package/dist/captcha/contract.js.map +0 -1
- package/dist/captcha/evidence.d.ts +0 -10
- package/dist/captcha/evidence.d.ts.map +0 -1
- package/dist/captcha/evidence.js +0 -9
- package/dist/captcha/evidence.js.map +0 -1
- package/dist/captcha/guard.d.ts +0 -23
- package/dist/captcha/guard.d.ts.map +0 -1
- package/dist/captcha/guard.js +0 -12
- package/dist/captcha/guard.js.map +0 -1
- package/dist/cli/main.d.ts +0 -4
- package/dist/cli/main.d.ts.map +0 -1
- package/dist/cli/main.js +0 -46
- package/dist/cli/main.js.map +0 -1
- package/dist/core/errors.d.ts +0 -84
- package/dist/core/errors.d.ts.map +0 -1
- package/dist/core/errors.js +0 -54
- package/dist/core/errors.js.map +0 -1
- package/dist/core/events.d.ts +0 -9
- package/dist/core/events.d.ts.map +0 -1
- package/dist/core/events.js +0 -21
- package/dist/core/events.js.map +0 -1
- package/dist/core/hash.d.ts +0 -10
- package/dist/core/hash.d.ts.map +0 -1
- package/dist/core/hash.js +0 -82
- package/dist/core/hash.js.map +0 -1
- package/dist/core/ids.d.ts +0 -10
- package/dist/core/ids.d.ts.map +0 -1
- package/dist/core/ids.js +0 -15
- package/dist/core/ids.js.map +0 -1
- package/dist/delivery/manifest.d.ts +0 -35
- package/dist/delivery/manifest.d.ts.map +0 -1
- package/dist/delivery/manifest.js +0 -68
- package/dist/delivery/manifest.js.map +0 -1
- package/dist/deploy/index.d.ts +0 -6
- package/dist/deploy/index.d.ts.map +0 -1
- package/dist/deploy/index.js +0 -6
- package/dist/deploy/index.js.map +0 -1
- package/dist/dispatch/resumable.d.ts +0 -102
- package/dist/dispatch/resumable.d.ts.map +0 -1
- package/dist/dispatch/resumable.js +0 -64
- package/dist/dispatch/resumable.js.map +0 -1
- package/dist/dispatch/workflow.d.ts +0 -6
- package/dist/dispatch/workflow.d.ts.map +0 -1
- package/dist/dispatch/workflow.js +0 -37
- package/dist/dispatch/workflow.js.map +0 -1
- package/dist/domain/artifacts.d.ts +0 -12
- package/dist/domain/artifacts.d.ts.map +0 -1
- package/dist/domain/artifacts.js +0 -14
- package/dist/domain/artifacts.js.map +0 -1
- package/dist/domain/jobs.d.ts +0 -12
- package/dist/domain/jobs.d.ts.map +0 -1
- package/dist/domain/jobs.js +0 -20
- package/dist/domain/jobs.js.map +0 -1
- package/dist/domain/providers.d.ts +0 -10
- package/dist/domain/providers.d.ts.map +0 -1
- package/dist/domain/providers.js +0 -8
- package/dist/domain/providers.js.map +0 -1
- package/dist/domain/runtime.d.ts +0 -14
- package/dist/domain/runtime.d.ts.map +0 -1
- package/dist/domain/runtime.js +0 -10
- package/dist/domain/runtime.js.map +0 -1
- package/dist/domain/sessions.d.ts +0 -12
- package/dist/domain/sessions.d.ts.map +0 -1
- package/dist/domain/sessions.js +0 -57
- package/dist/domain/sessions.js.map +0 -1
- package/dist/examples/localjob.d.ts +0 -2
- package/dist/examples/localjob.d.ts.map +0 -1
- package/dist/examples/localjob.js.map +0 -1
- package/dist/examples/publicapi.d.ts +0 -2
- package/dist/examples/publicapi.d.ts.map +0 -1
- package/dist/examples/publicapi.js.map +0 -1
- package/dist/extension/build.d.ts +0 -9
- package/dist/extension/build.d.ts.map +0 -1
- package/dist/extension/build.js +0 -85
- package/dist/extension/build.js.map +0 -1
- package/dist/extension/content.d.ts +0 -6
- package/dist/extension/content.d.ts.map +0 -1
- package/dist/extension/content.js +0 -135
- package/dist/extension/content.js.map +0 -1
- package/dist/extension/index.d.ts +0 -7
- package/dist/extension/index.d.ts.map +0 -1
- package/dist/extension/index.js +0 -7
- package/dist/extension/index.js.map +0 -1
- package/dist/extension/pagebridge.d.ts +0 -6
- package/dist/extension/pagebridge.d.ts.map +0 -1
- package/dist/extension/pagebridge.js +0 -42
- package/dist/extension/pagebridge.js.map +0 -1
- package/dist/extension/permissions.d.ts +0 -26
- package/dist/extension/permissions.d.ts.map +0 -1
- package/dist/extension/permissions.js +0 -28
- package/dist/extension/permissions.js.map +0 -1
- package/dist/extension/popup.d.ts +0 -5
- package/dist/extension/popup.d.ts.map +0 -1
- package/dist/extension/popup.js +0 -26
- package/dist/extension/popup.js.map +0 -1
- package/dist/extension/protocol.d.ts +0 -58
- package/dist/extension/protocol.d.ts.map +0 -1
- package/dist/extension/protocol.js +0 -101
- package/dist/extension/protocol.js.map +0 -1
- package/dist/extension/serviceworker.d.ts +0 -25
- package/dist/extension/serviceworker.d.ts.map +0 -1
- package/dist/extension/serviceworker.js +0 -102
- package/dist/extension/serviceworker.js.map +0 -1
- package/dist/extension/worker.d.ts +0 -28
- package/dist/extension/worker.d.ts.map +0 -1
- package/dist/extension/worker.js +0 -22
- package/dist/extension/worker.js.map +0 -1
- package/dist/format/check.d.ts +0 -8
- package/dist/format/check.d.ts.map +0 -1
- package/dist/format/check.js +0 -38
- package/dist/format/check.js.map +0 -1
- package/dist/library/public.d.ts.map +0 -1
- package/dist/library/public.js.map +0 -1
- package/dist/mcp/browser.d.ts +0 -9
- package/dist/mcp/browser.d.ts.map +0 -1
- package/dist/mcp/browser.js +0 -13
- package/dist/mcp/browser.js.map +0 -1
- package/dist/mcp/server.d.ts +0 -35
- package/dist/mcp/server.d.ts.map +0 -1
- package/dist/mcp/server.js +0 -40
- package/dist/mcp/server.js.map +0 -1
- package/dist/mcp/transport.d.ts +0 -7
- package/dist/mcp/transport.d.ts.map +0 -1
- package/dist/mcp/transport.js +0 -17
- package/dist/mcp/transport.js.map +0 -1
- package/dist/memory/bridge.d.ts +0 -14
- package/dist/memory/bridge.d.ts.map +0 -1
- package/dist/memory/bridge.js +0 -16
- package/dist/memory/bridge.js.map +0 -1
- package/dist/memory/engine.d.ts +0 -38
- package/dist/memory/engine.d.ts.map +0 -1
- package/dist/memory/engine.js +0 -109
- package/dist/memory/engine.js.map +0 -1
- package/dist/memory/modes.d.ts +0 -43
- package/dist/memory/modes.d.ts.map +0 -1
- package/dist/memory/modes.js +0 -66
- package/dist/memory/modes.js.map +0 -1
- package/dist/memory/objects.d.ts +0 -21
- package/dist/memory/objects.d.ts.map +0 -1
- package/dist/memory/objects.js +0 -20
- package/dist/memory/objects.js.map +0 -1
- package/dist/memory/planner.d.ts +0 -66
- package/dist/memory/planner.d.ts.map +0 -1
- package/dist/memory/planner.js +0 -108
- package/dist/memory/planner.js.map +0 -1
- package/dist/memory/targets.d.ts +0 -78
- package/dist/memory/targets.d.ts.map +0 -1
- package/dist/memory/targets.js +0 -29
- package/dist/memory/targets.js.map +0 -1
- package/dist/memory/transforms.d.ts +0 -19
- package/dist/memory/transforms.d.ts.map +0 -1
- package/dist/memory/transforms.js +0 -14
- package/dist/memory/transforms.js.map +0 -1
- package/dist/modes/matrix.d.ts +0 -23
- package/dist/modes/matrix.d.ts.map +0 -1
- package/dist/modes/matrix.js +0 -18
- package/dist/modes/matrix.js.map +0 -1
- package/dist/modes/modes.d.ts +0 -33
- package/dist/modes/modes.d.ts.map +0 -1
- package/dist/modes/modes.js +0 -15
- package/dist/modes/modes.js.map +0 -1
- package/dist/modes/resolve.d.ts +0 -96
- package/dist/modes/resolve.d.ts.map +0 -1
- package/dist/modes/resolve.js +0 -48
- package/dist/modes/resolve.js.map +0 -1
- package/dist/observability/metrics.d.ts +0 -14
- package/dist/observability/metrics.d.ts.map +0 -1
- package/dist/observability/metrics.js +0 -18
- package/dist/observability/metrics.js.map +0 -1
- package/dist/packager/manifest.d.ts +0 -66
- package/dist/packager/manifest.d.ts.map +0 -1
- package/dist/packager/manifest.js +0 -94
- package/dist/packager/manifest.js.map +0 -1
- package/dist/packager/publish.d.ts +0 -51
- package/dist/packager/publish.d.ts.map +0 -1
- package/dist/packager/publish.js +0 -18
- package/dist/packager/publish.js.map +0 -1
- package/dist/packager/targetcli.d.ts +0 -7
- package/dist/packager/targetcli.d.ts.map +0 -1
- package/dist/packager/targetcli.js +0 -22
- package/dist/packager/targetcli.js.map +0 -1
- package/dist/persistence/adapter.d.ts +0 -5
- package/dist/persistence/adapter.d.ts.map +0 -1
- package/dist/persistence/adapter.js +0 -11
- package/dist/persistence/adapter.js.map +0 -1
- package/dist/persistence/drizzle.d.ts +0 -2
- package/dist/persistence/drizzle.d.ts.map +0 -1
- package/dist/persistence/drizzle.js +0 -12
- package/dist/persistence/drizzle.js.map +0 -1
- package/dist/persistence/memory.d.ts +0 -2
- package/dist/persistence/memory.d.ts.map +0 -1
- package/dist/persistence/memory.js +0 -27
- package/dist/persistence/memory.js.map +0 -1
- package/dist/persistence/migrations.d.ts +0 -19
- package/dist/persistence/migrations.d.ts.map +0 -1
- package/dist/persistence/migrations.js +0 -13
- package/dist/persistence/migrations.js.map +0 -1
- package/dist/persistence/prisma.d.ts +0 -2
- package/dist/persistence/prisma.d.ts.map +0 -1
- package/dist/persistence/prisma.js +0 -25
- package/dist/persistence/prisma.js.map +0 -1
- package/dist/persistence/schema.d.ts +0 -63
- package/dist/persistence/schema.d.ts.map +0 -1
- package/dist/persistence/schema.js +0 -28
- package/dist/persistence/schema.js.map +0 -1
- package/dist/persistence/sql.d.ts +0 -3
- package/dist/persistence/sql.d.ts.map +0 -1
- package/dist/persistence/sql.js +0 -37
- package/dist/persistence/sql.js.map +0 -1
- package/dist/protocol/blocks.d.ts +0 -10
- package/dist/protocol/blocks.d.ts.map +0 -1
- package/dist/protocol/blocks.js +0 -26
- package/dist/protocol/blocks.js.map +0 -1
- package/dist/protocol/json.d.ts +0 -6
- package/dist/protocol/json.d.ts.map +0 -1
- package/dist/protocol/json.js +0 -6
- package/dist/protocol/json.js.map +0 -1
- package/dist/protocol/ndjson.d.ts +0 -3
- package/dist/protocol/ndjson.d.ts.map +0 -1
- package/dist/protocol/ndjson.js +0 -20
- package/dist/protocol/ndjson.js.map +0 -1
- package/dist/protocol/sse.d.ts +0 -7
- package/dist/protocol/sse.d.ts.map +0 -1
- package/dist/protocol/sse.js +0 -25
- package/dist/protocol/sse.js.map +0 -1
- package/dist/proxy/pool.d.ts +0 -9
- package/dist/proxy/pool.d.ts.map +0 -1
- package/dist/proxy/pool.js +0 -27
- package/dist/proxy/pool.js.map +0 -1
- package/dist/queue/idempotency.d.ts +0 -10
- package/dist/queue/idempotency.d.ts.map +0 -1
- package/dist/queue/idempotency.js +0 -13
- package/dist/queue/idempotency.js.map +0 -1
- package/dist/queue/persistent.d.ts +0 -14
- package/dist/queue/persistent.d.ts.map +0 -1
- package/dist/queue/persistent.js +0 -66
- package/dist/queue/persistent.js.map +0 -1
- package/dist/queue/queue.d.ts +0 -7
- package/dist/queue/queue.d.ts.map +0 -1
- package/dist/queue/queue.js +0 -55
- package/dist/queue/queue.js.map +0 -1
- package/dist/queue/saga.d.ts +0 -5
- package/dist/queue/saga.d.ts.map +0 -1
- package/dist/queue/saga.js +0 -20
- package/dist/queue/saga.js.map +0 -1
- package/dist/release/assets.d.ts +0 -144
- package/dist/release/assets.d.ts.map +0 -1
- package/dist/release/assets.js +0 -157
- package/dist/release/assets.js.map +0 -1
- package/dist/release/evidence.d.ts +0 -92
- package/dist/release/evidence.d.ts.map +0 -1
- package/dist/release/evidence.js +0 -148
- package/dist/release/evidence.js.map +0 -1
- package/dist/release/verify.d.ts +0 -12
- package/dist/release/verify.d.ts.map +0 -1
- package/dist/release/verify.js +0 -112
- package/dist/release/verify.js.map +0 -1
- package/dist/runners/chain.d.ts +0 -125
- package/dist/runners/chain.d.ts.map +0 -1
- package/dist/runners/chain.js +0 -95
- package/dist/runners/chain.js.map +0 -1
- package/dist/runners/health.d.ts +0 -36
- package/dist/runners/health.d.ts.map +0 -1
- package/dist/runners/health.js +0 -26
- package/dist/runners/health.js.map +0 -1
- package/dist/runners/heartbeat.d.ts +0 -23
- package/dist/runners/heartbeat.d.ts.map +0 -1
- package/dist/runners/heartbeat.js +0 -29
- package/dist/runners/heartbeat.js.map +0 -1
- package/dist/runners/inprocess.d.ts +0 -17
- package/dist/runners/inprocess.d.ts.map +0 -1
- package/dist/runners/inprocess.js +0 -20
- package/dist/runners/inprocess.js.map +0 -1
- package/dist/runners/scheduler.d.ts +0 -5
- package/dist/runners/scheduler.d.ts.map +0 -1
- package/dist/runners/scheduler.js +0 -19
- package/dist/runners/scheduler.js.map +0 -1
- package/dist/runtime/abort.d.ts +0 -8
- package/dist/runtime/abort.d.ts.map +0 -1
- package/dist/runtime/abort.js +0 -13
- package/dist/runtime/abort.js.map +0 -1
- package/dist/runtime/compatibility.d.ts +0 -37
- package/dist/runtime/compatibility.d.ts.map +0 -1
- package/dist/runtime/compatibility.js +0 -10
- package/dist/runtime/compatibility.js.map +0 -1
- package/dist/runtime/detect.d.ts +0 -13
- package/dist/runtime/detect.d.ts.map +0 -1
- package/dist/runtime/detect.js +0 -18
- package/dist/runtime/detect.js.map +0 -1
- package/dist/runtime/engine.d.ts +0 -20
- package/dist/runtime/engine.d.ts.map +0 -1
- package/dist/runtime/engine.js +0 -61
- package/dist/runtime/engine.js.map +0 -1
- package/dist/runtime/retry.d.ts +0 -19
- package/dist/runtime/retry.d.ts.map +0 -1
- package/dist/runtime/retry.js +0 -54
- package/dist/runtime/retry.js.map +0 -1
- package/dist/runtime/worker.d.ts +0 -10
- package/dist/runtime/worker.d.ts.map +0 -1
- package/dist/runtime/worker.js +0 -25
- package/dist/runtime/worker.js.map +0 -1
- package/dist/scrape/cache.d.ts +0 -45
- package/dist/scrape/cache.d.ts.map +0 -1
- package/dist/scrape/cache.js +0 -45
- package/dist/scrape/cache.js.map +0 -1
- package/dist/scrape/crawl.d.ts +0 -47
- package/dist/scrape/crawl.d.ts.map +0 -1
- package/dist/scrape/crawl.js +0 -114
- package/dist/scrape/crawl.js.map +0 -1
- package/dist/scrape/extract.d.ts +0 -63
- package/dist/scrape/extract.d.ts.map +0 -1
- package/dist/scrape/extract.js +0 -47
- package/dist/scrape/extract.js.map +0 -1
- package/dist/scrape/normalize.d.ts +0 -52
- package/dist/scrape/normalize.d.ts.map +0 -1
- package/dist/scrape/normalize.js +0 -102
- package/dist/scrape/normalize.js.map +0 -1
- package/dist/scrape/robots.d.ts +0 -37
- package/dist/scrape/robots.d.ts.map +0 -1
- package/dist/scrape/robots.js +0 -71
- package/dist/scrape/robots.js.map +0 -1
- package/dist/scrape/schema.d.ts +0 -23
- package/dist/scrape/schema.d.ts.map +0 -1
- package/dist/scrape/schema.js +0 -92
- package/dist/scrape/schema.js.map +0 -1
- package/dist/scrape/scraper.d.ts +0 -6
- package/dist/scrape/scraper.d.ts.map +0 -1
- package/dist/scrape/scraper.js +0 -46
- package/dist/scrape/scraper.js.map +0 -1
- package/dist/scrape/semantic.d.ts +0 -25
- package/dist/scrape/semantic.d.ts.map +0 -1
- package/dist/scrape/semantic.js +0 -27
- package/dist/scrape/semantic.js.map +0 -1
- package/dist/server/node.d.ts +0 -7
- package/dist/server/node.d.ts.map +0 -1
- package/dist/server/node.js.map +0 -1
- package/dist/sessions/file.d.ts +0 -25
- package/dist/sessions/file.d.ts.map +0 -1
- package/dist/sessions/file.js +0 -13
- package/dist/sessions/file.js.map +0 -1
- package/dist/sessions/replay.d.ts +0 -9
- package/dist/sessions/replay.d.ts.map +0 -1
- package/dist/sessions/replay.js +0 -70
- package/dist/sessions/replay.js.map +0 -1
- package/dist/sessions/store.d.ts +0 -25
- package/dist/sessions/store.d.ts.map +0 -1
- package/dist/sessions/store.js +0 -13
- package/dist/sessions/store.js.map +0 -1
- package/dist/storage/adapter.d.ts +0 -5
- package/dist/storage/adapter.d.ts.map +0 -1
- package/dist/storage/adapter.js +0 -11
- package/dist/storage/adapter.js.map +0 -1
- package/dist/storage/cache.d.ts +0 -23
- package/dist/storage/cache.d.ts.map +0 -1
- package/dist/storage/cache.js +0 -79
- package/dist/storage/cache.js.map +0 -1
- package/dist/storage/checksum.d.ts +0 -3
- package/dist/storage/checksum.d.ts.map +0 -1
- package/dist/storage/checksum.js +0 -19
- package/dist/storage/checksum.js.map +0 -1
- package/dist/storage/chunked.d.ts +0 -21
- package/dist/storage/chunked.d.ts.map +0 -1
- package/dist/storage/chunked.js +0 -67
- package/dist/storage/chunked.js.map +0 -1
- package/dist/storage/content.d.ts +0 -24
- package/dist/storage/content.d.ts.map +0 -1
- package/dist/storage/content.js +0 -44
- package/dist/storage/content.js.map +0 -1
- package/dist/storage/filehosting.d.ts +0 -2
- package/dist/storage/filehosting.d.ts.map +0 -1
- package/dist/storage/filehosting.js +0 -24
- package/dist/storage/filehosting.js.map +0 -1
- package/dist/storage/githubcontents.d.ts +0 -2
- package/dist/storage/githubcontents.d.ts.map +0 -1
- package/dist/storage/githubcontents.js +0 -29
- package/dist/storage/githubcontents.js.map +0 -1
- package/dist/storage/index.d.ts +0 -12
- package/dist/storage/index.d.ts.map +0 -1
- package/dist/storage/index.js +0 -12
- package/dist/storage/index.js.map +0 -1
- package/dist/storage/local.d.ts +0 -2
- package/dist/storage/local.d.ts.map +0 -1
- package/dist/storage/local.js +0 -72
- package/dist/storage/local.js.map +0 -1
- package/dist/storage/memory.d.ts +0 -6
- package/dist/storage/memory.d.ts.map +0 -1
- package/dist/storage/memory.js +0 -36
- package/dist/storage/memory.js.map +0 -1
- package/dist/storage/pool.d.ts +0 -95
- package/dist/storage/pool.d.ts.map +0 -1
- package/dist/storage/pool.js +0 -202
- package/dist/storage/pool.js.map +0 -1
- package/dist/storage/s3compatible.d.ts +0 -3
- package/dist/storage/s3compatible.d.ts.map +0 -1
- package/dist/storage/s3compatible.js +0 -70
- package/dist/storage/s3compatible.js.map +0 -1
- package/dist/storage/sync.d.ts +0 -47
- package/dist/storage/sync.d.ts.map +0 -1
- package/dist/storage/sync.js +0 -75
- package/dist/storage/sync.js.map +0 -1
- package/dist/surfaces/adapters.d.ts +0 -97
- package/dist/surfaces/adapters.d.ts.map +0 -1
- package/dist/surfaces/adapters.js +0 -50
- package/dist/surfaces/adapters.js.map +0 -1
- package/dist/surfaces/controls.d.ts +0 -18
- package/dist/surfaces/controls.d.ts.map +0 -1
- package/dist/surfaces/controls.js +0 -45
- package/dist/surfaces/controls.js.map +0 -1
- package/dist/surfaces/manifest.d.ts +0 -68
- package/dist/surfaces/manifest.d.ts.map +0 -1
- package/dist/surfaces/manifest.js +0 -42
- package/dist/surfaces/manifest.js.map +0 -1
- package/dist/surfaces/n8n.d.ts +0 -25
- package/dist/surfaces/n8n.d.ts.map +0 -1
- package/dist/surfaces/n8n.js +0 -31
- package/dist/surfaces/n8n.js.map +0 -1
- package/dist/surfaces/operations.d.ts +0 -32
- package/dist/surfaces/operations.d.ts.map +0 -1
- package/dist/surfaces/operations.js +0 -53
- package/dist/surfaces/operations.js.map +0 -1
- package/dist/surfaces/requirements.d.ts +0 -29
- package/dist/surfaces/requirements.d.ts.map +0 -1
- package/dist/surfaces/requirements.js +0 -50
- package/dist/surfaces/requirements.js.map +0 -1
- package/dist/surfaces/targets.d.ts +0 -196
- package/dist/surfaces/targets.d.ts.map +0 -1
- package/dist/surfaces/targets.js +0 -27
- package/dist/surfaces/targets.js.map +0 -1
- package/dist/webhook/delivery.d.ts +0 -18
- package/dist/webhook/delivery.d.ts.map +0 -1
- package/dist/webhook/delivery.js +0 -36
- package/dist/webhook/delivery.js.map +0 -1
- package/dist/webhook/receiver.d.ts +0 -26
- package/dist/webhook/receiver.d.ts.map +0 -1
- package/dist/webhook/receiver.js +0 -24
- package/dist/webhook/receiver.js.map +0 -1
- package/dist/webhook/signature.d.ts +0 -3
- package/dist/webhook/signature.d.ts.map +0 -1
- package/dist/webhook/signature.js +0 -7
- package/dist/webhook/signature.js.map +0 -1
- package/dist/workflow/manifest.d.ts +0 -22
- package/dist/workflow/manifest.d.ts.map +0 -1
- package/dist/workflow/manifest.js +0 -21
- package/dist/workflow/manifest.js.map +0 -1
- package/dist/workflow/registry.d.ts +0 -7
- package/dist/workflow/registry.d.ts.map +0 -1
- package/dist/workflow/registry.js +0 -18
- package/dist/workflow/registry.js.map +0 -1
- package/dist/workflow/templates.d.ts +0 -6
- package/dist/workflow/templates.d.ts.map +0 -1
- package/dist/workflow/templates.js +0 -18
- package/dist/workflow/templates.js.map +0 -1
- package/dist/workflow/triggers.d.ts +0 -64
- package/dist/workflow/triggers.d.ts.map +0 -1
- package/dist/workflow/triggers.js +0 -99
- package/dist/workflow/triggers.js.map +0 -1
- package/docs/logs/.gitkeep +0 -0
- package/docs/plans/00.index.md +0 -50
- package/docs/plans/01.architecture.md +0 -86
- package/docs/plans/02.research.computer.use.md +0 -58
- package/docs/plans/03.research.captcha.bypass.md +0 -68
- package/docs/plans/04.research.sandbox.ai.md +0 -52
- package/docs/plans/05.capture.platform.md +0 -57
- package/docs/plans/06.dependencies.md +0 -97
- package/docs/plans/07.captcha.test.page.md +0 -41
- package/docs/plans/08.production.infra.md +0 -70
- package/docs/plans/09.database.schema.md +0 -121
- package/docs/plans/10.cloudinary.storage.md +0 -57
- package/docs/plans/11.movement.logs.json.md +0 -72
- package/docs/plans/12.research.atlas.agent.browser.md +0 -79
- package/docs/plans/13.research.anti.detection.md +0 -898
- package/docs/plans/14.research.proxy.md +0 -1495
- package/docs/plans/15.research.retry.rate.limit.md +0 -1958
- package/docs/plans/16.research.crawling.md +0 -1417
- package/docs/plans/17.research.caching.md +0 -1610
- package/docs/plans/18.research.content.extraction.md +0 -1952
- package/docs/plans/19.research.errors.events.md +0 -1523
- package/docs/plans/20.research.zod.validation.md +0 -1350
- package/docs/plans/21.research.batch.concurrency.md +0 -1888
- package/docs/plans/22.research.universal.runtime.md +0 -944
- package/docs/plans/23.research.ai.integration.md +0 -1465
- package/docs/plans/24.research.memory.persistence.md +0 -1979
- package/docs/plans/25.research.server.api.md +0 -342
- package/docs/plans/26.research.compilation.md +0 -249
- package/docs/plans/27.research.html.parsing.md +0 -251
- package/docs/plans/28.action.plan.md +0 -50
- package/docs/plans/29.api.reference.md +0 -174
- package/docs/plans/30.architecture.plan.md +0 -94
- package/docs/plans/31.auditoria.dados.md +0 -163
- package/docs/plans/32.bots.automacao.computacional.md +0 -214
- package/docs/plans/33.bots.codigo.revisao.md +0 -220
- package/docs/plans/34.bots.seguranca.cicd.md +0 -366
- package/docs/plans/35.comparativo.concorrencia.md +0 -464
- package/docs/plans/36.computational.memory.md +0 -340
- package/docs/plans/37.deploystrategy.md +0 -394
- package/docs/plans/38.flow.md +0 -155
- package/docs/plans/39.multi.platform.bot.md +0 -252
- package/docs/plans/40.npm.publish.md +0 -250
- package/docs/plans/41.o.que.falta.md +0 -407
- package/docs/plans/42.pesquisa.concorrencia.md +0 -721
- package/docs/plans/43.plan.universal.architecture.md +0 -496
- package/docs/plans/44.reference.md +0 -100
- package/docs/plans/45.robotarchitecture.md +0 -237
- package/docs/plans/46.scdnintegration.md +0 -284
- package/docs/plans/47.multiforge.readme.md +0 -129
- package/docs/plans/48.theory.v4.repo.os.md +0 -152
- package/docs/plans/49.third.party.infra.md +0 -12
- package/docs/plans/50.file.as.compute.md +0 -39
- package/docs/plans/51.architecture.virtual.processor.md +0 -80
- package/docs/plans/52.manifesto.v8.md +0 -11
- package/docs/plans/58.cdn.list.md +0 -23
- package/docs/plans/59.sql.frameworks.md +0 -33
- package/docs/plans/60.sql.thirdparty.md +0 -26
- package/docs/plans/61.objective.multiforge.md +0 -63
- package/docs/plans/62.huggingface.upload.md +0 -26
- package/docs/plans/63.kaggle.upload.md +0 -24
- package/docs/plans/64.npm.storage.md +0 -30
- package/docs/plans/65.rclone.terabox.md +0 -32
- package/docs/plans/66.buckets.and.models.todo.md +0 -14
- package/docs/plans/67.database.todo.md +0 -13
- package/docs/plans/68.deploy.packages.todo.md +0 -12
- package/docs/plans/69.report.human.operator.md +0 -133
- package/docs/plans/70.report.brain2qwerty.ems.md +0 -135
- package/docs/plans/71.report.hd.infinito.vram.md +0 -155
- package/docs/plans/72.plan.hd.infinito.node.md +0 -146
- package/docs/plans/73.plan.scifi.repos.md +0 -125
- package/docs/plans/74.000.manifesto.v8.flat.2..md +0 -11
- package/docs/plans/README.md +0 -489
- package/docs/plans/aggregate_platforms.mjs +0 -146
- package/docs/plans/examplesession.json +0 -36
- package/docs/plans/missing-facts.md +0 -192
- package/docs/plans/models.md +0 -64
- package/docs/plans/organize.cjs +0 -270
- package/docs/plans/platforms.md +0 -2887
- package/docs/plans/sites.md +0 -31322
- package/docs/sources/farm.py +0 -117
- package/docs/sources/html/saddle1.html +0 -132
- package/docs/sources/html/saddle2.html +0 -157
- package/docs/sources/html/saddle3.html +0 -119
- package/docs/sources/html/saddle4.html +0 -144
- package/docs/sources/html/saddle5.html +0 -72
- package/docs/sources/html/saddle6.html +0 -171
- package/docs/sources/html/saddle7.html +0 -236
- package/docs/sources/saddle.ts +0 -74
- package/docs/sources/schema.prisma +0 -88
- package/docs/sources/script.sh +0 -64
- package/docs/sources/workflows.yml +0 -458
- package/docs/talks1/_body.txt +0 -14
- package/docs/talks1/_index.md +0 -15
- package/docs/talks1/_screenshot.png +0 -0
- package/docs/talks1/assistant-01.md +0 -5
- package/docs/talks1/assistant-02.md +0 -5
- package/docs/talks1/assistant-03.md +0 -531
- package/docs/talks1/assistant-04.md +0 -26
- package/docs/talks1/assistant-05.md +0 -774
- package/docs/talks1/assistant-06.md +0 -1718
- package/docs/talks1/scrape-share.cjs +0 -185
- package/docs/talks1/scrape-share.ts +0 -183
- package/docs/talks1/user-01.md +0 -3
- package/docs/talks1/user-02.md +0 -3
- package/docs/talks1/user-03.md +0 -88
- package/docs/talks1/user-04.md +0 -3
- package/docs/talks1/user-05.md +0 -3
- package/docs/talks1/user-06.md +0 -88
- package/docs/talks1/user-07.md +0 -88
- package/docs/talks2/_body.txt +0 -14
- package/docs/talks2/_index.md +0 -16
- package/docs/talks2/_screenshot.png +0 -0
- package/docs/talks2/assistant-01.md +0 -5
- package/docs/talks2/assistant-02.md +0 -5
- package/docs/talks2/assistant-03.md +0 -424
- package/docs/talks2/assistant-04.md +0 -598
- package/docs/talks2/assistant-05.md +0 -1280
- package/docs/talks2/assistant-06.md +0 -1227
- package/docs/talks2/assistant-07.md +0 -1252
- package/docs/talks2/user-01.md +0 -3
- package/docs/talks2/user-02.md +0 -3
- package/docs/talks2/user-03.md +0 -88
- package/docs/talks2/user-04.md +0 -88
- package/docs/talks2/user-05.md +0 -88
- package/docs/talks2/user-06.md +0 -88
- package/docs/talks2/user-07.md +0 -3
- package/docs/talks3/_body.txt +0 -467
- package/docs/talks3/_index.md +0 -10
- package/docs/talks3/_screenshot.png +0 -0
- package/docs/talks3/assistant-01.md +0 -417
- package/docs/talks3/assistant-02.md +0 -417
- package/docs/talks3/assistant-03.md +0 -29
- package/docs/talks3/assistant-04.md +0 -727
- package/docs/talks3/user-01.md +0 -88
- package/docs/talks3/user-02.md +0 -88
- package/docs/talks3/user-03.md +0 -3
- package/docs/talks3/user-04.md +0 -3
- package/docs/talks4/_body.txt +0 -14
- package/docs/talks4/_index.md +0 -12
- package/docs/talks4/_screenshot.png +0 -0
- package/docs/talks4/assistant-01.md +0 -5
- package/docs/talks4/assistant-02.md +0 -5
- package/docs/talks4/assistant-03.md +0 -35
- package/docs/talks4/assistant-04.md +0 -512
- package/docs/talks4/assistant-05.md +0 -599
- package/docs/talks4/user-01.md +0 -3
- package/docs/talks4/user-02.md +0 -3
- package/docs/talks4/user-03.md +0 -88
- package/docs/talks4/user-04.md +0 -88
- package/docs/talks4/user-05.md +0 -7
- package/docs/talks5/_body.txt +0 -14
- package/docs/talks5/_index.md +0 -13
- package/docs/talks5/_screenshot.png +0 -0
- package/docs/talks5/assistant-01.md +0 -5
- package/docs/talks5/assistant-02.md +0 -5
- package/docs/talks5/assistant-03.md +0 -690
- package/docs/talks5/assistant-04.md +0 -758
- package/docs/talks5/assistant-05.md +0 -974
- package/docs/talks5/user-01.md +0 -3
- package/docs/talks5/user-02.md +0 -3
- package/docs/talks5/user-03.md +0 -105
- package/docs/talks5/user-04.md +0 -105
- package/docs/talks5/user-05.md +0 -63
- package/docs/talks5/user-06.md +0 -105
- package/docs/talks6/_body.txt +0 -14
- package/docs/talks6/_index.md +0 -9
- package/docs/talks6/_screenshot.png +0 -0
- package/docs/talks6/assistant-01.md +0 -5
- package/docs/talks6/assistant-02.md +0 -5
- package/docs/talks6/assistant-03.md +0 -1499
- package/docs/talks6/user-01.md +0 -3
- package/docs/talks6/user-02.md +0 -3
- package/docs/talks6/user-03.md +0 -88
- package/docs/talks6/user-04.md +0 -88
- package/docs/talks7/_body.txt +0 -14
- package/docs/talks7/_index.md +0 -10
- package/docs/talks7/_screenshot.png +0 -0
- package/docs/talks7/assistant-01.md +0 -5
- package/docs/talks7/assistant-02.md +0 -5
- package/docs/talks7/assistant-03.md +0 -523
- package/docs/talks7/assistant-04.md +0 -617
- package/docs/talks7/user-01.md +0 -3
- package/docs/talks7/user-02.md +0 -3
- package/docs/talks7/user-03.md +0 -105
- package/docs/talks7/user-04.md +0 -67
- package/docs/talks8/conversa1.txt +0 -1322
- package/docs/talks8/conversa2.txt +0 -237
- package/docs/talks9/Beyond the Obvious_ 50 Plataformas Auto-Hospedadas de Forja de C/303/263digo para Al/303/251m de Gitea e GitLab.md" +0 -174
- package/docs/talks9/De NPM a Multi-Linguagem_ Uma Arquitetura T/303/251cnica para a Execu/303/247/303/243o Integrada de C/303/263digo no Ecossistema Node.js.md" +0 -59
- package/docs/talks9/De NPM a VMs Virtuais_ Uma An/303/241lise Arquitet/303/264nica para a Realiza/303/247/303/243o do Ciclo de Vida do Projeto SADDLE.md" +0 -91
- package/docs/talks9/Mapeamento da Engrenagem Computacional_ Uma Arquitetura para Execu/303/247/303/243o Isolada e Persist/303/252ncia em Ambientes Distribu/303/255dos.md" +0 -116
- package/docs/talks9/O Cen/303/241rio Pr/303/241tico do SADDLE_ Uma An/303/241lise de Viabilidade e Modelo de Ciclo de Vida Integrado.md" +0 -128
- package/docs/talks9/README (2).md +0 -489
- package/docs/talks9/README.md +0 -198
- package/docs/talks9/Viabilidade do Saddle_ Uma An/303/241lise T/303/251cnica da Transforma/303/247/303/243o de Armazenamento Remoto em Mem/303/263ria Computacional.md" +0 -80
- package/docs/talks9/conversa.txt +0 -544
- package/docs/talks9/other (2).md +0 -39
- package/docs/talks9/other.md +0 -57
- package/docs/talks9/outro.txt +0 -24
- /package/{extension/README.md → docs/extension.md} +0 -0
package/docs/hardware.md
ADDED
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
# e2ugh v6 - Hardware Bank Reference
|
|
2
|
+
|
|
3
|
+
This document specifies the virtual hardware bank: the processor catalog (57 identities), the GPU catalog (19 discrete devices plus APU graphics), the boards, the modularity ceilings with their policies, the selection logic, the encoding matrix, the generated procfs and nvidia-smi texts, and the integration points into QEMU, Docker and passage. Architecture decisions live in `architecture.md`; the engines that execute these identities live in `virtualization.md`; the Mesa stack that renders the GPU identities is bound by `render.ts`. Every specification was verified against vendor pages, the TechPowerUp databases and PCI ID registries on 2026-08-22, with the Xeon 6980P and Apple M3 Ultra rows re-verified against vendor pages on 2026-08-23.
|
|
4
|
+
|
|
5
|
+
Context map (25 related contexts): processor bank, EPYC 9965, EPYC 9955,
|
|
6
|
+
Threadripper PRO 9995WX, Threadripper 7980X, Ryzen 9 9950X3D, Core Ultra 9
|
|
7
|
+
285K, OMNI catalog families, Xeon 6980P verification, Apple M3 Ultra
|
|
8
|
+
verification, Ryzen X3D deep dive, core topology,
|
|
9
|
+
boards, GPU bank, PCI identifiers, HBM3e and GDDR7 subsystems, MIG catalog,
|
|
10
|
+
vGPU formula, SR-IOV, vCPU modularity, RAM modularity, vRAM modularity,
|
|
11
|
+
selection logic, encoding matrix, generated cpuinfo, generated meminfo,
|
|
12
|
+
virtual nvidia-smi format.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 1. Processor bank
|
|
17
|
+
|
|
18
|
+
### 1.1 The six verified identities (line by line)
|
|
19
|
+
|
|
20
|
+
The immutable bank `BEST_VIRTUAL_PROCESSORS` in `virtualcpu.ts` carries 26 fields per model so the procfs generators never need a network lookup.
|
|
21
|
+
|
|
22
|
+
| Field | AMD EPYC 9965 | AMD EPYC 9955 | AMD Ryzen 9 9950X3D | AMD TR PRO 9995WX | AMD TR 7980X | Intel Core Ultra 9 285K |
|
|
23
|
+
|---|---|---|---|---|---|---|
|
|
24
|
+
| Cores / threads | 192c / 384t | 128c / 256t | 16c / 32t | 96c / 192t | 64c / 128t | 24c / 24t (8P+16E, no HT) |
|
|
25
|
+
| Base clock | 2.25 GHz | 2.60 GHz | 4.30 GHz | 2.50 GHz | 3.20 GHz | 3.70 GHz (P-core) |
|
|
26
|
+
| Max boost | 3.70 GHz | 3.75 GHz | 5.70 GHz | 5.40 GHz | 5.10 GHz | 5.70 GHz (E max 4.6) |
|
|
27
|
+
| All-core boost | 3.35 GHz | 3.45 GHz | 5.40 GHz | 4.10 GHz | 4.40 GHz | 5.40 GHz |
|
|
28
|
+
| L3 cache | 384 MB | 384 MB | 128 MB | 384 MB | 256 MB | 36 MB |
|
|
29
|
+
| L2 cache | 192 MB | 128 MB | 16 MB (144 MB total) | 96 MB | 64 MB | 36 MB |
|
|
30
|
+
| Socket | SP5 (LGA6096) | SP5 | AM5 | sTR5 (LGA4844) | sTR5 | LGA1851 |
|
|
31
|
+
| TDP | 500 W (cTDP 450-500) | 400 W | 170 W (200 W max) | 350 W | 350 W | 125 W base / 250 W turbo |
|
|
32
|
+
| PCIe | 5.0 x128 | 5.0 x128 | 5.0 x24 | 5.0 x128 | 5.0 x48 | 5.0 x20 + 4.0 x4 |
|
|
33
|
+
| Max memory | 6 TB DDR5-6400 ECC RDIMM | 6 TB DDR5-6400 ECC RDIMM | 192 GB DDR5-5600 | 2 TB DDR5-6400 ECC RDIMM | 1 TB DDR5-6400 | 192 GB DDR5-6400 |
|
|
34
|
+
| Memory channels | 12 | 12 | 2 | 8 | 4 | 2 |
|
|
35
|
+
| Microarchitecture | Zen 5c (Turin, TSMC 3 nm) | Zen 5c (Turin dense) | Zen 5 X3D (V-Cache on one CCD) | Zen 5 (Shimada Peak, WRX90) | Zen 5 (TRX50) | Arrow Lake (Lion Cove + Skymont) |
|
|
36
|
+
| cpu family / model / stepping | 25 / 17 / 2 | 25 / 17 / 2 | 25 / 17 / 2 | 25 / 17 / 2 | 25 / 17 / 2 | 6 / 191 / 2 |
|
|
37
|
+
| Address sizes | 52/57 bits | 52/57 bits | 48/57 bits | 52/57 bits | 52/57 bits | 46/57 bits |
|
|
38
|
+
| Launch | 2024-10-10 | 2024-10-10 | 2025-03-12 | 2025-07 | 2023-10 | 2024-10-24 |
|
|
39
|
+
|
|
40
|
+
Engineering notes carried into the generators: the 9965 tops the 9005 series with dense Zen 5c cores on 12 DDR5 channels, the full 384 MB of shared L3 and 128 PCIe 5.0 lanes; the 9950X3D "144 MB" marketing figure decomposes as 96 MB 3D V-Cache on CCD0 plus 32 MB standard L3 on CCD1 plus 16 MB L2 (the generator renders 128 MB into the `cache size` line and carries the split in topology); the 9995WX holds the workstation record (96 Zen 5 cores, 2 TB eight-channel DDR5-6400, 128 lanes on sTR5); the 285K is the only non-SMT entry, so its cpuinfo omits the `ht` flag on purpose and the Arrow Lake profile ships AVX2-era flags only.
|
|
41
|
+
|
|
42
|
+
### 1.2 Scoring, topology and registry
|
|
43
|
+
|
|
44
|
+
`cpuscore` orders the bank (weighted product of cores, clocks, cache and memory bandwidth); `compareVirtualProcessors` and `listBestVirtualProcessors` consume it. `solvetopology` derives package topology from a requested vCPU count: AMD models assume SMT factor 2, Arrow Lake assumes 1, and the solver computes `siblings`, `core id`, `cpu cores` and APIC identifiers for every logical processor. `stableModelId` derives a deterministic sha256-12 identifier; the case-insensitive `cpuRegistry` accepts runtime registration through `registerVirtualCpu` (the `modellease` disposable cleans up on scope exit via `using`).
|
|
45
|
+
|
|
46
|
+
### 1.3 OMNI catalog (the other 51 identities, by family)
|
|
47
|
+
|
|
48
|
+
`processors.json` unifies the six-identity bank with the 55-CPU OMNI catalog (2024-2026 releases); the V5-first rule keeps v5 canonical fields, OMNI adds cTDP ranges and both family ids. Summary by family:
|
|
49
|
+
|
|
50
|
+
| Family | Members (highlights) | Notes |
|
|
51
|
+
|---|---|---|
|
|
52
|
+
| Ryzen 9000 Granite Ridge | 9950X3D, 9950X, 9900X3D, 9900X, 9850X3D refresh, 9800X3D, 9700X, 9600X, 9950X3D2 | Zen 5 N4X CCD + N6 IOD; 8-wide decode, 448 ROB, AVX-512 full 512-bit datapath; X3D detection rule `cache.l3 >= 192` selects the 9950X3D2 |
|
|
53
|
+
| Ryzen 9950X3D2 (CES 2026) | 16c/32t, 192 MB L3 (96+96 dual X3D CCD), 208 MB total, 200 W, $899, launch 2026-04-22 | First desktop dual X3D; kept as a distinct identity with its own cache layout |
|
|
54
|
+
| Threadripper 9000 Shimada Peak | 9995WX 96c, 9985WX 64c, 9975WX 32c, 9965WX 24c; HEDT 9980X/9970X/9960X | sTR5; 9995WX maps to 672-vCPU custom topologies (7x cores / 3.5x threads) in the overcommit matrix |
|
|
55
|
+
| Threadripper 7000 legacy | 7995WX 96c $11999, 7980X 64c (bank member), 7970X, 7960X | sTR5; overlaps resolved V5-first in the registry |
|
|
56
|
+
| EPYC 9005 Turin | 9965 192c, 9955 128c, 9755 128c 2.7/4.1 GHz 512 MB, 9575F 64c 3.3/5.0 GHz | SP5, 12ch DDR5-6400, CXL 1.0 host interfaces |
|
|
57
|
+
| Intel Xeon 6 | 6980P 128c/256t Granite Rapids-AP, base 2.0 GHz / max 3.9 GHz, 504 MB L3, 500 W, LGA7529 (confirmed: Intel sku 240777); 6972P/6960P catalog siblings | 12ch DDR5-6400 ECC MRDIMM; the QEMU side uses the `GraniteRapids` model + AVX10 flags |
|
|
58
|
+
| Intel Core Ultra 200S | 285K, 285K Refresh (+100 MHz), 265K/KF | LGA1851, NPU 13 TOPS (PCI 8086:7D19), DDR5-6400 JEDEC |
|
|
59
|
+
| Apple Silicon | M3 Ultra (up to 32-core CPU as 24P+8E, up to 80-core GPU, 819 GB/s unified memory, announced 2025-03-05), M4, M4 Pro/Max | Unified memory; HVF `virt` arm64 guest only; the M4 Ultra does not exist as of 2026-08 - the catalog notes M3 Ultra (a dual M3 Max on UltraFusion) as the top end |
|
|
60
|
+
| ARM Neoverse | V3, Cobalt-200 | aarch64 guests under TCG (weak-on-strong MTTCG rule) |
|
|
61
|
+
|
|
62
|
+
OMNI count arithmetic (how 55 catalog entries yield 51 beyond the bank): 55 OMNI identities minus the 5 that overlap bank members (9965, 9955, 9995WX lineage, 7980X, 285K) plus the 9950X3D2 promotion equals 51 additional rows; every overlap keeps the v5 canonical field spellings (`modelName`, `maxBoostGhz`, `tdpWatts`, `baseClockGhz`) with the OMNI cTDP range preserved as `ctdpRangeWattsOmni` and both family ids attached.
|
|
63
|
+
|
|
64
|
+
The full 57-row table with clocks, caches, TDP/cTDP, PCIe lane counts, sockets and launch dates lives in `processors.json` (`processors` array); this document keeps the verified six verbatim and summarizes the rest. Two of those rows were re-verified against vendor pages on 2026-08-23 and both already exist as catalog identities: `xeon-6980p` (Intel sku 240777: 128 cores / 256 threads, 2.0 GHz base / 3.9 GHz max, 504 MB L3, 500 W, Granite Rapids) and `apple-m3-ultra` (up to 32 CPU cores as 24P+8E, up to 80 GPU cores, 819 GB/s unified memory per apple.com; the json entry carries the 800 GB/s announcement figure and the 2025-03-05 release date).
|
|
65
|
+
|
|
66
|
+
## 2. Boards and platforms
|
|
67
|
+
|
|
68
|
+
`boards.json` carries 20 retail boards in three tiers plus the platform reference:
|
|
69
|
+
|
|
70
|
+
| Tier | Boards (examples) | Virtualization-relevant facts |
|
|
71
|
+
|---|---|---|
|
|
72
|
+
| AM5 flagship | ASUS Crosshair X870E Hero (BIOS 1805 AGESA 1.2.0.3a, 4x DDR5 192 GB 8200+ OC, 1x Gen5 x16 + shared x8/x8, 3 Gen5 M.2, USB4 x2), MSI MEG X870E Godlike (256 GB, 10+5 GbE) | X870E dual Promontory 21; 24 CPU lanes (16 GPU + 8 NVMe); q35 + amd-iommu emulation profile, ACS-optimal grouping |
|
|
73
|
+
| AM5 mid | Gigabyte B850M Aorus Pro, ASUS ROG Strix B850G, MSI MAG B850M Mortar (256 GB), ASRock B850M Steel Legend | single Promontory 21; Gen5 GPU slot + Gen5 M.2 retained |
|
|
74
|
+
| Workstation | ASUS Pro WS TRX50-SAGE, ASRock TRX50 WS, Gigabyte TRX50 Aero D (4ch RDIMM 1 TB, 48 lanes) | TRX50 tier for Shimada Peak HEDT |
|
|
75
|
+
| Workstation server | ASUS Pro WS WRX90E-SAGE SE (E-ATX, 8ch 2 TB RDIMM, 128 lanes, 7 dual-slot GPU spacing), Supermicro MBD-H13SRA-F | WRX90 tier for 9995WX-class identities |
|
|
76
|
+
| Platform reference | SP5, TR5/sTR5, AM5 socket envelopes | lane budgets, channel counts, IOMMU hints consumed by the affinity validator |
|
|
77
|
+
|
|
78
|
+
Board-processor affinity validation (socket match, BIOS/AGESE floor, memory QVL, VRM versus PPT, bifurcation for dual-GPU passthrough) throws `BOARD_002_SOCKET_MISMATCH` / `BOARD_003_BIOS` style errors before a plan ever reaches QEMU.
|
|
79
|
+
|
|
80
|
+
## 3. Core topology
|
|
81
|
+
|
|
82
|
+
`cores.json` defines the P/E/LPE mapping the orchestrator uses for heterogeneous scheduling:
|
|
83
|
+
|
|
84
|
+
| Core type | Microarchitectures | Mapping |
|
|
85
|
+
|---|---|---|
|
|
86
|
+
| P-core | Lion Cove (Arrow Lake), Coyote Cove (next), Zen 5 | `performance` class; guaranteed QoS; CCD0-preferred on X3D parts |
|
|
87
|
+
| E-core | Skymont (clusters of 4), Arctic Wolf, Zen 5c | `efficiency` class; burstable/besteffort QoS |
|
|
88
|
+
| LP-E | Crestmont | `ultra_efficient` class; idle QoS |
|
|
89
|
+
|
|
90
|
+
Hybrid identities surface through CPUID leaves 0x1A (core type), 0x1F (extended topology) and 0x0B (x2APIC), with AMD Fn80000026 for cache topology on Zen 5. The vCPU factory emits 12 curated presets (1 to 1024, including hybrid 8P+16E and odd presets 1/13/37/137 from the vm.config data) plus step-1 custom counts; the orchestrator maps vCPU ranges to perf/efficiency/ultra_efficient lanes for MTTG placement.
|
|
91
|
+
|
|
92
|
+
Preset-to-topology mapping consumed by the NUMA planner:
|
|
93
|
+
|
|
94
|
+
| Preset (vCPUs) | Topology emitted | NUMA | Hugepages |
|
|
95
|
+
| --- | --- | --- | --- |
|
|
96
|
+
| 1 / 2 / 4 / 8 | single socket, single CCD | 1 node | 2M |
|
|
97
|
+
| 16 | 2 CCD, SMT2 | 2 nodes, distance 10/21 | 2M |
|
|
98
|
+
| 24 (hybrid) | 8P + 16E, no SMT on E | 2 nodes | 2M |
|
|
99
|
+
| 32 | dual CCD SMT pairing 0:16 siblings | 2 nodes | 2M |
|
|
100
|
+
| 64 / 128 | 4 / 8 nodes | distances 10/16/21/31 | 1G required |
|
|
101
|
+
| 256 / 512 / 1024 | 16 / 32 / 64 nodes (identity permitting) | full distance matrix | 1G + memfd |
|
|
102
|
+
|
|
103
|
+
Heterogeneous scheduling map: Intel Thread Director classes route vCPUs 0-7 (P) to guaranteed QoS and 8-23 (E) to besteffort; AMD Preferred Core pins vCPU 0-7 to the V-Cache CCD0 and background lanes to CCD1 (the 9950X3D asymmetric profile: CCD0 96 MB V-Cache for the game/video lane, CCD1 32 MB for audio-IO, emulator threads isolated on host cores 0-1, `emulatorPin` honored in the strict profile).
|
|
104
|
+
|
|
105
|
+
## 4. GPU bank
|
|
106
|
+
|
|
107
|
+
### 4.1 Verified identities (PCI IDs corrected)
|
|
108
|
+
|
|
109
|
+
The bank in `virtualgpu.ts` embeds seven identities confirmed against vendor pages, TechPowerUp and the PCI ID registries. The RTX PRO 6000 uses device 26B5; the 2BB5 spelling found in the v4 sources is a transcription error recorded in the JSDoc for traceability and intentionally not reproduced.
|
|
110
|
+
|
|
111
|
+
| Field | RTX 5090 | RTX PRO 6000 BW | NVIDIA B200 | NVIDIA H100 | NVIDIA A100 | RX 9070 XT | Instinct MI350X |
|
|
112
|
+
|---|---|---|---|---|---|---|---|
|
|
113
|
+
| VRAM | 32 GB GDDR7 | 96 GB GDDR7 ECC | 192 GB HBM3e | 80 GB HBM3 | 40 GB HBM2e | 16 GB GDDR6 | 288 GB HBM3e |
|
|
114
|
+
| Bus width | 512-bit | 512-bit | 8 stacks (8192-bit) | 5120-bit | 5120-bit | 256-bit | 8192-bit |
|
|
115
|
+
| Bandwidth | 1792 GB/s | 1792 (server 1597) | 8 TB/s | 3.35 TB/s | 1.55 TB/s | 640 GB/s | 8 TB/s |
|
|
116
|
+
| TDP | 575 W | 600 W (Max-Q 300) | 1000 W | 700 W | 400 W | 304 W TBP | 1000 W (MI355X 1400) |
|
|
117
|
+
| PCI ID | 10DE:2B85 | 10DE:26B5 | 10DE:2665 | 10DE:2330 | 10DE:20B0 | 1002:748E | 1002:75A0 |
|
|
118
|
+
| Silicon | GB202 (170 SM enabled of 192) | GB202 PRO (188 SM) | GB100 dual-die, 208 B transistors | GH100 SXM | GA100 | Navi 48 (64 CU) | Aqua Vanjaram CDNA 4 |
|
|
119
|
+
| Shading units | 21760 CUDA | 24064 CUDA | dual-die | 16896 CUDA | 6912 CUDA | 4096 SP | 30464 SP |
|
|
120
|
+
| Compute target | sm_120 | sm_120, MIG server-edition | sm_100 | sm_90, 7 MIG instances | sm_80 | gfx1201 RDNA 4 | gfx950 CDNA 4 |
|
|
121
|
+
| Driver anchor | 575.57.08 / CUDA 12.9 | 575.57.08 / CUDA 12.9 | 575.57.08 / CUDA 12.9 | 575.57.08 | 575.57.08 | Adrenalin 26.x / Mesa 26.2 | ROCm 7.x |
|
|
122
|
+
|
|
123
|
+
Full-die context preserved from the research: GB202 counts 192 SM / 24576 CUDA / 768 Tensor Gen5 at the architecture level; the 5090 product enables 170 SM; bandwidth is 1792 GB/s at 28 Gbps bins and 1920 GB/s at 30 Gbps bins - the engine cites the 1792 minimum. Cloud-consoles expose about 180 GB of B200 capacity, which the virtual identity honors when emulating cloud instances (196608 MiB physical, 184320 MiB visible in smi-adapter output).
|
|
124
|
+
|
|
125
|
+
### 4.2 Catalog extensions (data-file identities)
|
|
126
|
+
|
|
127
|
+
`gpus.json` adds: RTX 5080 (GB203, 16 GB, 960 GB/s), RTX 5070 Ti, RTX 5070, B100 (10DE:2664), GB200 superchip (Grace 72c + 2x B200, 384 GB HBM3e aggregate 16 TB/s, NVLink-C2C 900 GB/s), H200, A100-80GB, RX 8900 XTX (Navi 48 96 CU, 24 GB GDDR6 960 GB/s), RX 7900 XTX, Arc B770 (BMG-G31, 32 Xe2, 16 GB, SR-IOV capable), Arc B580, MI355X, and the virtio-gpu device identity (1AF4:1050 with venus context). `registergpudata` normalizes any of these JSON records into bank entries at runtime (accepting both the v5 field spellings and the Meta spellings). The five APU RDNA iGPU blocks (Raphael, Hawk Point, Strix Point, Strix Halo, Krackan Point) round out the integrated-graphics surface. RX 8800 XT note: the v4 pool carries an RX 8800 XT entry (Navi 48 cut-down, 64 CU / 4096 SP, 16 GB GDDR6, 260 W, $599) that did not reach any v3 data file; it is recorded here as a reserved catalog slot so the pool provenance is not lost, to be promoted into `gpus.json` when the SKU is verified against a vendor page.
|
|
128
|
+
|
|
129
|
+
### 4.3 Selection logic
|
|
130
|
+
|
|
131
|
+
`gpuselection`: vRAM at or above 90 GB selects the RTX PRO 6000 identity; anything below selects the RTX 5090; with no virtual identity target the engine falls back to the Lavapipe software device (env surface in `render.ts`). `cpuselection` by threads: at or above 256 threads selects EPYC 9965; at or above 96 selects TR PRO 9995WX; at or above 32 selects the 9950X3D2 dual-X3D identity; otherwise the 9950X3D.
|
|
132
|
+
|
|
133
|
+
## 5. GPU memory subsystems
|
|
134
|
+
|
|
135
|
+
| Subsystem | Constants (scoring inputs in `virtualmemory.ts` MEMORY_TIERS) |
|
|
136
|
+
|---|---|
|
|
137
|
+
| DDR5-6400 system memory | 51.2 GB/s per channel; 614.4 GB/s across 12 EPYC channels; 44.8 GB/s per AM5 channel; JEDEC 4800/5600, EXPO 6000-8400 |
|
|
138
|
+
| HBM3e stacked memory | 8-Hi stacks at ~1000-1024 GB/s per stack; 6 stacks = 8.0-8.2 TB/s (B200, MI350X); ~90 ns latency; on-die ECC; ~70-100 W per stack at full bandwidth |
|
|
139
|
+
| GDDR7 graphics memory | 30 Gbps PAM3 per pin (28 minimum bin), 512-bit bus = 1920 GB/s theoretical / 1792 GB/s measured after ECC; 1.1 V VDD; 85 C ceiling |
|
|
140
|
+
| GDDR6/GDDR6X legacy | 19-20 Gbps / 21-24 Gbps PAM4 for the cost tiers (RX 8900 XTX 960 GB/s, Arc B770 608 GB/s) |
|
|
141
|
+
| LPDDR5X unified | 8533 MT/s, 819 GB/s on M3 Ultra (apple.com figure; the catalog entry keeps the 800 GB/s announcement number), zero-copy CPU/GPU domain |
|
|
142
|
+
| CXL 2.0/3.0 Type-3 | 178-195 ns latency, 32-64 GB/s per x16 Gen5 link, interleave 2/4/8 for the placement tiers (DRAM_FAST, DRAM_SLOW, CXL_FM, CXL_PMEM, PMEM_DAX) |
|
|
143
|
+
|
|
144
|
+
## 6. vGPU, MIG and partitioning
|
|
145
|
+
|
|
146
|
+
MIG slicing follows the hardware feature exactly. The 96 GB profiles (`MIGPROFILES` in `virtualmemory.ts`, composed into the full catalog by `composemigcatalog` in `virtualgpu.ts`):
|
|
147
|
+
|
|
148
|
+
| MIG profile | Slice | Max instances | Typical mapping |
|
|
149
|
+
|---|---|---|---|
|
|
150
|
+
| 1g.24gb | 24 GB | 4 | four sandboxes, one quarter GPU each |
|
|
151
|
+
| 2g.48gb | 48 GB | 2 | two sandboxes, half each |
|
|
152
|
+
| 4g.96gb | 96 GB | 1 | full GPU, MIG disabled |
|
|
153
|
+
|
|
154
|
+
Blackwell layouts extend the catalog (`miglayoutblackwell`): 1g.12gb (14 SM, 7 instances) through 7g.192gb (192 SM, 7 decoders, 4 encoders, mdev `nvidia-b100-mig-*`), with `validatedensity` enforcing sum of slices at most 7 and sum of HBM at most 192 GB per GPU. The NVIDIA vGPU profile-size formula ships as code: `profileSize = X * 0x40000000`, `fbReservation = 0x8000000 + (profileSize - 0x40000000) / 0x10`, minimum 384 MiB framebuffer. SR-IOV per vendor: NVIDIA vGPU up to 32 VF per pGPU on licensed SKUs (16 memory-bound on B200), AMD MxGPU temporal partitioning up to 16 VF (Radeon PRO V710 28 GB single-slot as the SR-IOV-only reference), Intel Xe up to 7 VF via `xe.max_vfs=7` on i915/Xe DKMS (Arc B770 class); RDNA 4 exposes 8 VF per PF through the GIM driver. Intel GVT-g stays archived (security escapes documented). GPU mode table: `vfio` full card, `mig` hardware slice, `vgpu` firmware profile, `virtio` hostmem window (no discrete GPU needed), `none`.
|
|
155
|
+
|
|
156
|
+
## 7. Modularity ceilings (policy, with all three answers)
|
|
157
|
+
|
|
158
|
+
| Resource | Catalog ceiling | Factory ceiling | Hotplug ceiling | Policy |
|
|
159
|
+
|---|---|---|---|---|
|
|
160
|
+
| vCPUs | 1-192 (EPYC 9965 identity bound, presets 1..192) | 1-1024 (cores.json factory, any integer) | 4096 (`maxcpus` headroom, QMP `device_add`) | catalog = identity bound; factory = validated plan; hotplug = ACPI ceiling; `planlint` warns `mttg` floor, overcommit above 64 and topology mismatch |
|
|
161
|
+
| Threads | 2-384 (SMT2 derived: threads = vcpus x 2) | M:N grid to `MTTG_MAX` = 1,000,000 virtual threads | grid clamps to host lanes | QEMU `-smp` stays at the plan; MTTG multiplexes userspace on top |
|
|
162
|
+
| RAM | 1-1024 GB, step 1 GB, presets 4..1024 | 512 MB - 4 TB factory range | virtio-mem grow/shrink (`max_gib` default `max(2x, gib+32)`) | 128 GB default profile anchored by the `meminfo128g` artifact (MemTotal 134086656 kB after the kernel reservation) |
|
|
163
|
+
| vRAM | 8-96 GB, presets [8,16,32,64,96] | 1-192 GB (Blackwell extensions in gpus.json) | vram balloon 0.5x-1.5x bounds, hugepages 2 MiB | MIG bound for hardware slices; hostmem window otherwise; `ERR_BALLOON_BOUNDS` outside bounds |
|
|
164
|
+
|
|
165
|
+
Overcommit matrix (hardwarematrix section 17, verified): 4.0x production / 5.0x burstable / 6.0x besteffort; 9950X3D 32 threads -> 128-192 vCPUs; 9995WX 192 threads -> 768-1152 vCPUs with the 672 custom topology (8 NUMA nodes x 84 vCPU); formulas `vCPU = threads x ratio` and `vCPU = cores x ratio x SMT`, SMT 2 for AMD, 1 for Intel hybrid P. KVM steal at 6x lands at 8-15%; QoS classes map guaranteed 4.0 and besteffort 6.0.
|
|
166
|
+
|
|
167
|
+
## 8. Memory and vRAM personalization
|
|
168
|
+
|
|
169
|
+
Knobs (with numbers, not adjectives): sockets 1-8; dies 1-16 (CCD analogue; Turin dense up to 12, desktop Zen 5 at 2); cores per die 1-256; threads per core 1 or 2 (guest-visible SMT, independent of host); topology product `sockets x dies x cores x threads` (desktop default 1x2x8x2 = 32); `vcpus` 1-4096 advertised; `maxcpus` at least vcpus (leave headroom: vcpus 8, maxcpus 128); overcommit 1-64 (`vcpus / host_threads`; 1 no lie, 4 typical cloud, 8 batch, 64 demonstration); QEMU CPU model ladder `host` (lab, TOPOEXT) / `EPYC-Genoa` / `GraniteRapids` / `SierraForest` (portable) / `EPYC-v5` (engine default); feature flags default `+x2apic,+aes,+avx2`, unlock `+avx512f,+amx-tile` when host and guest agree; `memory.gib` guest RAM with delayed touch under overcommit; `memory.slots` 1-256 (at least 2 for virtio-mem); hugepages 2M/1G; balloon `deflate-on-oom=on,free-page-reporting=on` (never disable on overcommitted RAM); virtio-mem `requested-size` starts at `gib/4`; host overcommit `never/heuristic/always` with zswap zstd 20% pool; KSM on for fleets of identical guests (UKSM upstream is unmaintained - the sroeschus/uksm community fork, active and ported to recent kernels, is the only viable UKSM source; see `virtualization.md` section 9); `gpu.mode` and `vram_gib` 0-288 (above the SKU the architect warns `vram-window` and virtio-gpu maps host RAM: 64 GB on a 32 GB 5090 is a window, not GDDR); Looking Glass IVSHMEM 128M default; MIG/vGPU profile strings (`1g.10gb`, `3g.40gb`, `grid_rtx6000-8q`, ignored on GeForce); accelerator `kvm/hvf/whpx/tcg` with nested, SEV-SNP (AMD) and TDX (Intel) booleans; disk/net `aio=io_uring`, `discard=unmap`, `compression=zstd`, `queues=4`, `mq=on`, `vhost=on`.
|
|
170
|
+
|
|
171
|
+
Unlimited, in this repository, means: vCPU = min(4096, host_threads x overcommit 64); threads = min(1e6, MTTG); RAM = min(host overcommit, virtio-mem max_gib); VRAM = full card, or MIG/vGPU slice, or hostmem window with no discrete GPU at all.
|
|
172
|
+
|
|
173
|
+
## 9. Encoding matrix
|
|
174
|
+
|
|
175
|
+
| GPU / iGPU | H.264 encode | HEVC encode | AV1 encode (B-frames) | Dual engines | AV1 4:2:2 | Profile |
|
|
176
|
+
|---|---|---|---|---|---|---|
|
|
177
|
+
| RTX 5090 NVENC Gen9 | 8K60 4:4:4 | 8K120 4:4:4 10b | 8K120 dual (2x 8K60 or 4x 4K120), B-frames, temporal AQ 2.0 | 2x NVENC + 2x NVDEC Gen6 | 4K60 encode / 8K60 decode | `nvenc_av1_bframe` |
|
|
178
|
+
| RX 8900 XTX VCN5 | 8K60 | 8K60 HDR 10b | 8K60, B-frames (20% bitrate save) | 2x VCN | 8K60 decode | `amf_av1` |
|
|
179
|
+
| Arc B770 QSV (Xe2 VDBOX) | 8K60 | 8K60 | 8K60 | 2x media engines | 8K60 decode | `qsv_av1` |
|
|
180
|
+
| Arrow Lake Xe-LPG iGPU | 8K60 | 8K60 | 8K60 | - | partial | `qsv_av1_lowpower` |
|
|
181
|
+
| Apple M3 Ultra Media Engine | ProRes 8K60 | ProRes 8K60 | decode only (8K60) | 2x enc, 4x dec | - | `videotoolbox_prores` |
|
|
182
|
+
| Ryzen iGPU (RDNA2 2CU) | 4K60 | 4K60 | no encode | - | - | fallback only |
|
|
183
|
+
|
|
184
|
+
The NVENC dual-engine throughput table in `virtualgpu.ts` (1600/800x2 MPix/s, session limits H.264 480 / HEVC 800 / AV1 800 HDR10, 8192x8192 at 60 fps split-frame) drives `nvencCanFit` checks for transcode planning; the mttg.config pipeline encodes 31 modes across 5 codecs with this matrix as the capacity model. Software encoding floor: 9950X3D reaches SVT-AV1 4K preset 6 at about 18 fps CPU-only.
|
|
185
|
+
|
|
186
|
+
## 10. Hardware matrix (power, PCIe, baselines)
|
|
187
|
+
|
|
188
|
+
Power and cTDP: 9950X3D 170 W TDP / 200 PPT / 120-170 cTDP / TjMax 89 C; 9800X3D 120/162/65-120; 9995WX 350/500 (600 peak)/350-500/95 C; 285K 125 PBP / 250 MTP (Tau 56 s); Xeon 6980P 500 W (Granite Rapids-AP class); M3 Ultra 120 W module (catalog tdpWatts); RTX 5090 575 W TGP with the 12V-2x6 600 W connector (1000 W minimum PSU, 900 W 100 us transients); RX 8900 XTX 350/355; B770 250. PCIe budgets: AM5 24 CPU lanes (16 GPU + 8 NVMe) + 24 chipset Gen4; sTR5 128 Gen5 CPU lanes (8 root complexes, one IOMMU group per CCD); LGA1851 24 CPU (16 Gen5) + 24 PCH Gen4; LGA7529 96 Gen5 + CXL 2.0 on the Xeon 6 -AP tier; x16 Gen5 carries ~63 GB/s unidirectional; Blackwell BAR1 at 32 GB requires Above-4G + ReBAR (64 GB MMIO window via `X-PciMmio64Mb=65536` for 192 GB devices). Performance baselines (August 2026 test pass): QEMU Win11 boot 6.2 s (9950X3D+5090) / 8.1 s (9995WX+PRO 6000, NUMA) / 5.9 s (M3 Ultra, HVF); FFmpeg 4K60 AV1 hardware transcode 3.1x realtime (187 fps); Vulkan compute 420-510 fps; self-hosted Actions build 29-62 s; system idle/load 78-89 W to 789 W desktop class, 1150 W workstation class. Reserved future slots: `ryzen_10050x3d` (Zen 6, 2027), `rtx_6090` 48 GB, RDNA 5, Celestial, CXL 3.0 pooling to 512 GB vRAM.
|
|
189
|
+
|
|
190
|
+
## 11. Generated artifacts
|
|
191
|
+
|
|
192
|
+
### 11.1 /proc/cpuinfo (virtual identity example)
|
|
193
|
+
|
|
194
|
+
`generateVirtualCpuinfo(model, vcpus, options?)` renders one block per logical processor with kernel-exact tab alignment (`model` and `cpu MHz` two tabs, `fpu`/`wp`/`flags`/`bugs` two tabs, `cache_alignment` and `power management` none). An EPYC 9965 block:
|
|
195
|
+
|
|
196
|
+
```text
|
|
197
|
+
processor : 0
|
|
198
|
+
vendor_id : AuthenticAMD
|
|
199
|
+
cpu family : 25
|
|
200
|
+
model : 17
|
|
201
|
+
model name : AMD EPYC 9965 192-Core Processor
|
|
202
|
+
stepping : 2
|
|
203
|
+
microcode : 0xffffffff
|
|
204
|
+
cpu MHz : 2941.000
|
|
205
|
+
cache size : 384 MB
|
|
206
|
+
physical id : 0
|
|
207
|
+
siblings : 384
|
|
208
|
+
core id : 0
|
|
209
|
+
cpu cores : 192
|
|
210
|
+
apicid : 0
|
|
211
|
+
initial apicid : 0
|
|
212
|
+
fpu : yes
|
|
213
|
+
fpu_exception : yes
|
|
214
|
+
cpuid level : 16
|
|
215
|
+
wp : yes
|
|
216
|
+
flags : fpu vme de pse ... avx512f avx512dq avx512cd avx512bw
|
|
217
|
+
avx512vl avx512_bf16 avx512vbmi avx512vbmi2 avx512ifma avx512vnni
|
|
218
|
+
avx512vp2intersect avx512vpopcntdq avx512bitalg sha_ni gfni vaes
|
|
219
|
+
vpclmulqdq ... serialize flush_l1d arch_capabilities
|
|
220
|
+
bugs : sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass srso
|
|
221
|
+
bogomips : 4500.00
|
|
222
|
+
TLB size : 3584 2M/4M pages
|
|
223
|
+
clflush size : 64
|
|
224
|
+
cache_alignment: 64
|
|
225
|
+
address sizes : 52 bits physical, 57 bits virtual
|
|
226
|
+
power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14]
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
The Zen 5 profile carries 100+ flags from production Turin/Granite Ridge dumps (complete AVX-512 family, vector crypto `sha_ni gfni vaes vpclmulqdq`, memory extensions `movdiri movdir64b fsrm serialize cldemote`); the Arrow Lake profile swaps in `avx_vnni la57 user_shstk tsxldtrk`, drops every AVX-512 flag and `ht`. `cpu MHz` carries crypto-random jitter between base and boost; `bogomips` derives from twice the base clock; the Intel profile omits the TLB line because production Intel cpuinfo does. `generateVirtualLscpu` renders the matching util-linux summary with NUMA ranges and vulnerability lines. The entrypoint writes 192 blocks to `/etc/virtual_cpuinfo` and the interposer redirects reads there; the cpuid leaf for the virtual identity identity is 0xA70F10 (family 26 model 17 in the OMNI spelling).
|
|
230
|
+
|
|
231
|
+
### 11.1a /etc/virtual/lscpu (companion artifact)
|
|
232
|
+
|
|
233
|
+
`generateVirtualLscpu('AMD EPYC 9965', 192, 2)` renders the summary tools read from sysfs topology instead of cpuinfo:
|
|
234
|
+
|
|
235
|
+
```text
|
|
236
|
+
Architecture: x86_64
|
|
237
|
+
CPU op-mode(s): 32-bit, 64-bit
|
|
238
|
+
Byte Order: Little Endian
|
|
239
|
+
CPU(s): 384
|
|
240
|
+
On-line CPU(s) list: 0-383
|
|
241
|
+
Vendor ID: AuthenticAMD
|
|
242
|
+
BIOS Vendor ID: Advanced Micro Devices, Inc.
|
|
243
|
+
BIOS Model ID: 17 Model name: AMD EPYC 9965 192-Core Processor
|
|
244
|
+
BIOS CPU family: 25 Model: 17 Thread(s) per core: 2
|
|
245
|
+
Core(s) per socket: 192 Socket(s): 1 Stepping: 2
|
|
246
|
+
CPU(s) scaling MHz: 76% CPU max MHz: 3700.0000 CPU min MHz: 1500.0000
|
|
247
|
+
BogoMIPS: 4500.00
|
|
248
|
+
Flags: fpu vme de pse ... avx512f avx512dq avx512cd avx512bw avx512vl
|
|
249
|
+
Virtualization: AMD-V
|
|
250
|
+
L1d cache: 12 MiB (192 instances)
|
|
251
|
+
L1i cache: 12 MiB (192 instances)
|
|
252
|
+
L2 cache: 192 MiB (192 instances)
|
|
253
|
+
L3 cache: 384 MiB (24 instances)
|
|
254
|
+
NUMA node(s): 2
|
|
255
|
+
NUMA node0 CPU(s): 0-95,192-287
|
|
256
|
+
NUMA node1 CPU(s): 96-191,288-383
|
|
257
|
+
Vulnerability Itlb multihit: Not affected
|
|
258
|
+
Vulnerability L1tf: Not affected
|
|
259
|
+
Vulnerability Mds: Not affected
|
|
260
|
+
Vulnerability Meltdown: Not affected
|
|
261
|
+
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
|
|
262
|
+
Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization
|
|
263
|
+
Vulnerability Spectre v2: Mitigation; Retpolines; IBPB conditional; STIBP always-on; RSB filling
|
|
264
|
+
Vulnerability Srbds: Not affected
|
|
265
|
+
Vulnerability Tsx async abort: Not affected
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
The `Instances` counts, the split NUMA ranges and the vulnerability lines follow production Turin dumps; tools that read sysfs directly (lscpu, numactl, hwloc) therefore agree with the cpuinfo view byte for byte.
|
|
269
|
+
|
|
270
|
+
### 11.2 /proc/meminfo (53 fields, page aligned)
|
|
271
|
+
|
|
272
|
+
`generateVirtualMeminfo(totalgb, options?)` renders the complete table in kB with values right-aligned to the kernel column; every number passes a 4 kB page-alignment helper so `grep MemTotal /proc/meminfo` returns a multiple of 4 exactly like the kernel. Key fields for a 1024 GB guest:
|
|
273
|
+
|
|
274
|
+
| Field | Derivation |
|
|
275
|
+
|---|---|
|
|
276
|
+
| MemTotal | requested RAM minus a kernel reservation (about 0.4%) |
|
|
277
|
+
| MemFree / MemAvailable | free fraction near 2% / available near 60% defaults |
|
|
278
|
+
| Buffers / Cached / SwapCached | proportional fractions with page alignment |
|
|
279
|
+
| Active / Inactive + (anon) / (file) splits | anon-to-file ratio near 55/45 |
|
|
280
|
+
| SwapTotal / SwapFree | from the zram plus swapfile plan for large RAM sizes |
|
|
281
|
+
| Slab / SReclaimable / SUnreclaim | per-vCPU kernel allocations |
|
|
282
|
+
| CommitLimit | swap + 50% of RAM under `vm.overcommit_memory=2` |
|
|
283
|
+
| Committed_AS | sum of active anon plus a headroom factor |
|
|
284
|
+
| VmallocTotal | 34359738367 kB (32 TB) |
|
|
285
|
+
| AnonHugePages / Hugepagesize | transparent huge pages plus 2048 kB base pages |
|
|
286
|
+
| DirectMap4k / DirectMap2M / DirectMap1G | page-aligned breakdown of the direct map |
|
|
287
|
+
|
|
288
|
+
The 128 GB default is anchored by the `meminfo128g` evidence artifact: 134217728 kB requested total, 134086656 kB rendered MemTotal after the carve-out; options override swap size, free/available fractions, 1 GB hugepage count and the overcommit ratio; the default plan provisions a zram device (priority 100) plus a swapfile when RAM reaches 256 GB.
|
|
289
|
+
|
|
290
|
+
### 11.3 Virtual nvidia-smi adapter (89-character format)
|
|
291
|
+
|
|
292
|
+
`render.ts` reproduces the summary report byte-for-byte: driver 575.57.08, CUDA 12.9; the summary table is exactly 89 characters wide with pipe separators at offsets 1, 42 and 67; timestamp `Day-of-week Month Day HH:MM:SS Year`; performance states P0-P12; compute modes Default / Exclusive Process; MIG cell N/A when disabled; fan speed may legally exceed 100%; the process table is 75 characters wide with columns GPU, GI, CI, PID, Type (C/G/C+G), Process name, GPU Memory, and renders `No running processes found` when empty. Registered profiles render their real figures: RTX 5090 32768 MiB / 575 W, RTX PRO 6000 98304 MiB / 600 W (97887 MiB in the v4 data-file spelling, kept for compatibility), B200 196608 MiB / 1000 W (412 W draw, 34 C in the default facade), H100 81559 MiB, A100 40536 MiB, RX 9070 XT 16384 MiB / 304 W, MI350X 294912 MiB / 1000 W. The H100/A100 figures come from the verified [fake-nvidia-smi](https://github.com/pogusthewhisper/fake-nvidia-smi) profile table; the format rules from the [NVIDIA nvidia-smi deployment guide](https://docs.nvidia.com/deploy/nvidia-smi/).
|
|
293
|
+
|
|
294
|
+
## 12. Integration points
|
|
295
|
+
|
|
296
|
+
| Consumer | Binding |
|
|
297
|
+
|---|---|
|
|
298
|
+
| QEMU argv | per-SKU templates in `qemu.config` and `buildqemucmd` (`virtualization.ts`): EPYC identities `-cpu EPYC-v5,+avx512f,+avx512bw,+avx512vnni,+avx512bf16,+topoext`; Xeon `-cpu GraniteRapids,+avx10.1`; hybrid pinning maps P cores 0-7 to guaranteed QoS, E cores 8-23 to besteffort; 9995WX custom `-smp 96,cores=12,threads=2,sockets=8` with 8 NUMA nodes at distances 10/16/21/31 |
|
|
299
|
+
| Docker | `docker.config` container run reference: `--memory-swap=-1 --shm-size=2g --cpus` from vcpus/overcommit, `--pids-limit=0` for unlimited threads, `--gpus` via CDI `nvidia.com/gpu`, tmpfs 20G shader cache |
|
|
300
|
+
| passage | VFIO id table (10 GPUs with driver quirks) and the six network modes consume the PCI ids from section 4; see `virtualization.md` section 8 |
|
|
301
|
+
| Orchestrator | `bootstraphardwareview()` loads the eight hardware JSONs; `attachgpupassthrough()` reads `gpus.json` with `filterGpuCandidates`; SR-IOV VF lifecycle `registergpu/assigngpu/releasegpu` |
|
|
302
|
+
| forge (C++) | `libs/gpumonitor.cpp` forge mode validates vcpus at most 4096, overcommit at most 64, mttg at most 1e6 and emits the argv twins of the TS planner |
|
|
303
|
+
|
|
304
|
+
## 13. Provenance divergences (reconciliation notes)
|
|
305
|
+
|
|
306
|
+
The v4 analysis pool carries several data points that disagree with the v3 bank. The table records every known divergence and the resolution this repository adopts, so future audits can trace which value is canonical and why; nothing here changes the bank tables, which already follow the resolution column.
|
|
307
|
+
|
|
308
|
+
| Datum | Pool spelling | Bank / catalog value | Resolution |
|
|
309
|
+
|---|---|---|---|
|
|
310
|
+
| Ryzen 9 9950X3D L3 config | 64 MB + 80 MB (`cpu.json`) | 96 MB V-Cache + 32 MB standard L3 | v5 decomposition wins: the shipping layout is 96+32 (plus 16 MB L2 = the 144 MB marketing figure); 64+80 matches no retail SKU |
|
|
311
|
+
| TR PRO 9995WX base clock | 4.2 GHz (pool) | 2.50 GHz | 2.50 GHz confirmed against the vendor page; 4.2 GHz resembles an all-core boost figure and stays non-canonical |
|
|
312
|
+
| MI350X shading processors | 16384 (`gpu.profiles.json`) / 30464 (bank rendering) | 30464 SP in the section 4 table | vendor listings confirm 19456 SP (304 CU x 64) for the MI350-series SKU; 16384 and 30464 are recorded provenance variants, 19456 is the vendor-confirmed anchor |
|
|
313
|
+
| MI350X / MI355X PCI ids | ids inverted between pool files (gpu.profiles: mi355x=75a0, mi350x=75a3) | MI350X 1002:75A0 (bank), MI355X 75a3 (passage.config) | repo assignment kept: MI350X=75A0 is DeviceHunt-verified (source 12); the pool inversion is recorded as a transcription artifact |
|
|
314
|
+
| B200 capacity and bandwidth | 180 GiB / 7700 GB/s / 20480 shaders (pool SXM variant) | 192 GB / 8 TB/s | 192 GB HBM3e at 8 TB/s is canonical (DGX B200 source); about 180 GiB is the cloud-console visible fraction, which the smi-adapter facade honors |
|
|
315
|
+
|
|
316
|
+
Secondary divergences recorded without a canonical decision (both spellings kept as history): RTX 5090 600 W pool figure versus 575 W TGP (600 W reconciles as the 12V-2x6 connector ceiling); GB200 nvlink 144 GB/s (gpu.config draft) versus NVLink-C2C 900 GB/s; thermal throttle 83 C versus 90 C (90 kept in gpus.json); B200 FP8 9000 versus 4500 (4500 dense FP8 canonical, 9000 is the FP4 dense figure); RX 8900 XTX GDDR7 1344 GB/s variant versus the catalog GDDR6 960 GB/s; EPYC 9965 stepping 0 / DDR5-6000 / 576 GB/s versus stepping 2 / DDR5-6400 / 614.4 GB/s (vendor page wins); Sawtooth core 6-wide / L1i 128 KB versus 4-wide / 64 KB.
|
|
317
|
+
|
|
318
|
+
Launch MSRP anchors recovered from the pool (verified lane): Ryzen 9 9900X3D $599, Ryzen 7 9800X3D $479, Xeon 6980P $17,800, Threadripper PRO 9995WX $11,699 (siblings already in the catalog: 9950X3D $699, 7995WX $11,999). Throughput anchors: RTX PRO 6000 Blackwell FP32 126 TFLOPS / AI FP4 4000 with sparsity; B200 FP8 4500 TFLOPS dense canonical (FP4 9000); PRO 6000 blower dual-slot 8435 recorded in `mttg.config`.
|
|
319
|
+
|
|
320
|
+
## Sources
|
|
321
|
+
|
|
322
|
+
1. AMD EPYC 9965: https://www.amd.com/en/products/processors/server/epyc/9005-series/amd-epyc-9965.html
|
|
323
|
+
2. AMD Ryzen 9 9950X3D: https://www.amd.com/en/products/processors/desktops/ryzen/9000-series/amd-ryzen-9-9950x3d.html
|
|
324
|
+
3. AMD Threadripper PRO 9995WX: https://www.amd.com/en/products/processors/workstations/ryzen-threadripper/9000-wx-series/amd-ryzen-threadripper-pro-9995wx.html
|
|
325
|
+
4. Intel ARK Core Ultra 9 285K: https://www.intel.com/content/www/us/en/products/sku/241060/intel-core-ultra-9-processor-285k-36m-cache-up-to-5-70-ghz/specifications.html
|
|
326
|
+
5. TechPowerUp CPU database: https://www.techpowerup.com/cpu-specs/
|
|
327
|
+
6. TechPowerUp GPU database: https://www.techpowerup.com/gpu-specs/
|
|
328
|
+
7. NVIDIA RTX 5090: https://www.nvidia.com/en-us/geforce/graphics-cards/50-series/rtx-5090
|
|
329
|
+
8. NVIDIA RTX PRO 6000: https://www.nvidia.com/en-us/products/workstations/professional-desktop-gpus/rtx-pro-6000
|
|
330
|
+
9. NVIDIA DGX B200 (GB100, HBM3e): https://www.nvidia.com/en-us/data-center/dgx-b200
|
|
331
|
+
10. AMD Radeon RX 9070 XT: https://www.amd.com/en/products/graphics/desktops/radeon/9000-series/amd-radeon-rx-9070xt.html
|
|
332
|
+
11. AMD Instinct MI350X and CDNA 4 whitepaper: https://www.amd.com/en/products/accelerators/instinct/mi350/mi350x.html
|
|
333
|
+
12. DeviceHunt PCI registry (MI350X 1002:75A0): https://devicehunt.com/view/type/pci/vendor/1002/device/75A0
|
|
334
|
+
13. NVIDIA nvidia-smi deployment guide: https://docs.nvidia.com/deploy/nvidia-smi/
|
|
335
|
+
14. fake-nvidia-smi reference profiles: https://github.com/pogusthewhisper/fake-nvidia-smi
|
|
336
|
+
15. QEMU 11.1.0 CPU model table (EPYC-v5, target/i386/cpu.c): https://gitlab.com/qemu-project/qemu
|
|
337
|
+
16. JEDEC DDR5 and HBM3e bandwidth constants: https://www.jedec.org
|
|
338
|
+
17. vgpu-unlock profile formula (community references preserved in `virtualgpu.ts`): https://github.com/mbilker/vgpu_unlock and the vgpu_unlock-rs Rust rewrite
|
|
339
|
+
18. AMD MxGPU / Radeon PRO V710 SR-IOV: https://www.amd.com/en/products/graphics/professional
|
|
340
|
+
19. Intel i915/Xe SR-IOV DKMS parameters: https://github.com/strongtz/i915-sriov-dkms
|
|
341
|
+
20. Looking Glass B7 / kvmfr: https://looking-glass.io
|
|
342
|
+
21. Phoronix Test Suite 2026-08 dataset (performance baselines): https://www.phoronix-test-suite.com
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# e2ugh optimization roadmap — the slow QEMU/Mesa build pipeline
|
|
2
|
+
|
|
3
|
+
> Status: planning document (docs/optimization.md). The QEMU/Mesa
|
|
4
|
+
> pipeline is correct but heavy: a cold multi-arch validation run
|
|
5
|
+
> executes more than 2,700 compile steps (QEMU 11.1.0 from source with
|
|
6
|
+
> the x86_64-softmmu target, Mesa 26.2.1 with llvmpipe + lavapipe, LLVM
|
|
7
|
+
> 18 toolchain, gcc-14/g++-14 native shims) and the emulated legs
|
|
8
|
+
> (linux/arm64 and linux/ppc64le under qemu-user) dominate the wall
|
|
9
|
+
> clock. This document records the optimization backlog so each item can
|
|
10
|
+
> be scheduled without rediscovering the analysis.
|
|
11
|
+
|
|
12
|
+
## 1. Where the time goes today
|
|
13
|
+
|
|
14
|
+
| Stage | Runner cost | Emulated? | Bottleneck |
|
|
15
|
+
| --- | --- | --- | --- |
|
|
16
|
+
| QEMU 11.1.0 source build (x86_64-softmmu) | ~14 min native | yes on arm64/ppc64le legs | ~1,500 compile steps of C |
|
|
17
|
+
| Mesa 26.2.1 source build (llvmpipe + lavapipe) | ~9 min native | yes on arm64/ppc64le legs | ~800 compile steps of C + meson/ninja graph |
|
|
18
|
+
| LLVM 18 + gcc-14 toolchain apt install | ~3 min | no | package unpack under emulation is 3-5x slower |
|
|
19
|
+
| Native shims (virtualhardware.c, gpumonitor.cpp, virtualizationcore.cpp) | ~4 min | yes (LTO) | -O3 -flto link time under emulation |
|
|
20
|
+
| Runtime probes (cpuinfo/free/clinfo/vulkaninfo) | ~2 min | yes | LLVMpipe JIT warmup under emulation |
|
|
21
|
+
| **Total cold, three arches** | **~60-90 min** | | |
|
|
22
|
+
|
|
23
|
+
With a warm `type=gha` BuildKit cache the same grid completes in ~6-10
|
|
24
|
+
minutes, which is why the cache-retention policy keeps exactly one
|
|
25
|
+
buildkit cache family entry on the default branch.
|
|
26
|
+
|
|
27
|
+
## 2. Optimization backlog (ordered by expected win)
|
|
28
|
+
|
|
29
|
+
### 2.1 Cross-compilation instead of emulation (the big win)
|
|
30
|
+
|
|
31
|
+
Build the arm64 and ppc64le images from an amd64 runner using the
|
|
32
|
+
debian cross toolchains (`gcc-14-aarch64-linux-gnu`,
|
|
33
|
+
`gcc-14-powerpc64le-linux-gnu`, `clang --target=aarch64-linux-gnu`
|
|
34
|
+
with LLVM 18) instead of executing the entire toolchain under
|
|
35
|
+
qemu-user. Mesa and QEMU both cross-build cleanly with meson
|
|
36
|
+
(`--cross-file`); only the runtime probes still need emulation, and
|
|
37
|
+
those run against the finished image in seconds, not minutes.
|
|
38
|
+
|
|
39
|
+
Expected wall clock: the emulated 60-90 minute grid drops to roughly
|
|
40
|
+
3 parallel native-speed builds (~18-25 min total).
|
|
41
|
+
|
|
42
|
+
Blockers: the Dockerfile must gain a `CROSS` build mode (meson
|
|
43
|
+
cross-files, `PKG_CONFIG_PATH` per arch, `--cross-prefix` for the QEMU
|
|
44
|
+
configure) and the march baseline table must move from `TARGETARCH`
|
|
45
|
+
runtime probing to the cross file. Nothing in the engine logic changes:
|
|
46
|
+
the shims are arch-portable since the 1.2.0 KVM register guards.
|
|
47
|
+
|
|
48
|
+
### 2.2 Prebuilt QEMU base image
|
|
49
|
+
|
|
50
|
+
Pin QEMU 11.1.0 into a dedicated `ghcr.io/wenathlan/e2ugh-qemu` base
|
|
51
|
+
image (built once per release from the `qemu` stage) and consume it
|
|
52
|
+
with `FROM ghcr.io/wenathlan/e2ugh-qemu:11.1.0 AS qemu` in the main
|
|
53
|
+
Dockerfile. The ~14 minute QEMU compile then happens only when the
|
|
54
|
+
pinned tag moves, not on every cache-cold run.
|
|
55
|
+
|
|
56
|
+
Expected wall clock: -12 to -14 minutes on every cold build.
|
|
57
|
+
|
|
58
|
+
### 2.3 Prebuilt Mesa layer with a digest pin
|
|
59
|
+
|
|
60
|
+
Same pattern for Mesa 26.2.1: publish `ghcr.io/wenathlan/e2ugh-mesa`
|
|
61
|
+
with the compiled llvmpipe/lavapipe stack per arch and consume it as a
|
|
62
|
+
build stage. The sha256-verified source tarball stays in the repo as
|
|
63
|
+
the reproducible fallback (`MESA_FROM_SOURCE=1`).
|
|
64
|
+
|
|
65
|
+
Expected wall clock: -7 to -9 minutes on every cold build.
|
|
66
|
+
|
|
67
|
+
### 2.4 ccache for the native shims
|
|
68
|
+
|
|
69
|
+
The three shim translation units are small, but `-O3 -flto` link time
|
|
70
|
+
under emulation is disproportionate. Mount a `~/.ccache` Actions cache
|
|
71
|
+
keyed on `hashFiles('libs/**')` and compile through `ccache g++-14`.
|
|
72
|
+
Cheap (~15 lines of Dockerfile) and compounds with 2.1.
|
|
73
|
+
|
|
74
|
+
Expected wall clock: -1 to -2 minutes on cache-warm shim rebuilds.
|
|
75
|
+
|
|
76
|
+
### 2.5 Trim the QEMU target surface
|
|
77
|
+
|
|
78
|
+
The `qemu` stage configures the full x86_64-softmmu system emulator,
|
|
79
|
+
but the engine only ever boots the documented `-M` machine list
|
|
80
|
+
(docker.config `qemuRuntime`). Auditing the configure line for
|
|
81
|
+
`--disable-*` blocks (no block migration, no vnc, no spice, no
|
|
82
|
+
networking backends beyond the documented tap/user list) removes an
|
|
83
|
+
estimated 300-400 compile steps.
|
|
84
|
+
|
|
85
|
+
Expected wall clock: -3 to -4 minutes per arch on cold builds.
|
|
86
|
+
|
|
87
|
+
### 2.6 Matrix sharding for the emulated legs
|
|
88
|
+
|
|
89
|
+
If 2.1 lands late, shard the emulated Mesa build per arch into
|
|
90
|
+
per-arch digest pushes (already the publish pattern) and let the
|
|
91
|
+
validation legs consume the pushed digests instead of rebuilding the
|
|
92
|
+
image: validate probes run against `ghcr.io/...@sha256:...` pulled
|
|
93
|
+
with `--platform`. The rebuild-then-probe duplication disappears.
|
|
94
|
+
|
|
95
|
+
Expected wall clock: -8 to -12 minutes (the validate grid stops
|
|
96
|
+
rebuilding what publish just built).
|
|
97
|
+
|
|
98
|
+
### 2.7 Native arm64 runners
|
|
99
|
+
|
|
100
|
+
GitHub offers arm64 hosted runners; moving the linux/arm64 leg off
|
|
101
|
+
qemu-user removes its entire emulation multiplier (~5-8x on the Mesa
|
|
102
|
+
graph). ppc64le stays emulated (no hosted runner) but becomes the only
|
|
103
|
+
emulated leg.
|
|
104
|
+
|
|
105
|
+
Expected wall clock: arm64 leg ~35 min -> ~8 min.
|
|
106
|
+
|
|
107
|
+
## 3. Non-goals
|
|
108
|
+
|
|
109
|
+
- No caching of the final published images beyond the existing
|
|
110
|
+
provenance/SBOM attestations - the release chain must always build
|
|
111
|
+
from the tagged source.
|
|
112
|
+
- No `docker save` artifact juggling between validate and publish; the
|
|
113
|
+
digest registry is the transport.
|
|
114
|
+
- The cache-retention policy stays aggressive (one entry per family on
|
|
115
|
+
the default branch); the wins above must come from doing less work,
|
|
116
|
+
not from hoarding more cache.
|
|
117
|
+
|
|
118
|
+
## 4. Suggested sequence
|
|
119
|
+
|
|
120
|
+
1. 2.2 (QEMU base image) and 2.3 (Mesa layer) - pure infrastructure,
|
|
121
|
+
no Dockerfile semantics change, immediate cold-build win.
|
|
122
|
+
2. 2.5 (QEMU configure trim) - one-line audit, benefits every arch.
|
|
123
|
+
3. 2.1 (cross-compilation) - the structural win; schedule with the
|
|
124
|
+
march table refactor from the 1.2.0 portability work.
|
|
125
|
+
4. 2.7 (native arm64 runners) once the cross-build exists as fallback.
|
|
126
|
+
5. 2.4 and 2.6 opportunistically alongside any of the above.
|