@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/security.md
ADDED
|
@@ -0,0 +1,454 @@
|
|
|
1
|
+
# Security - The 2026 Defense Stack
|
|
2
|
+
|
|
3
|
+
e2ugh protects untrusted code execution with a layered 2026 defense stack:
|
|
4
|
+
Landlock, seccomp, eBPF LSM, cgroups v2, post-quantum TLS, CRIU with SELinux
|
|
5
|
+
relabeling, and confidential-computing tiers (Intel TDX, AMD SEV-SNP). None of
|
|
6
|
+
these layers requires root at sandbox runtime, and each one fails closed. This
|
|
7
|
+
document specifies what each layer does, the exact kernel or library versions
|
|
8
|
+
that provide it, the threat model of the engine's own spoofing surface, and
|
|
9
|
+
the hardening pipeline that guards the repository itself. All facts were
|
|
10
|
+
verified against primary sources on 2026-08-22 (date-first discipline; version pins re-verified 2026-08-23) and are
|
|
11
|
+
implemented in `security.ts` (1,302 lines). The sandbox engines themselves
|
|
12
|
+
(QEMU 11.1.0, Firecracker 1.16.1, gVisor release-20260817.0, Kata 4.1.0,
|
|
13
|
+
Cloud Hypervisor v53.0) are described in `virtualization.md`; their selection
|
|
14
|
+
policy lives in `alternatives.md`.
|
|
15
|
+
|
|
16
|
+
Contexts covered (25): Landlock ABI v1-v10 timeline, unprivileged sandboxing,
|
|
17
|
+
LANDLOCK_ACCESS_FS_IOCTL_DEV, scopes, abstract UNIX sockets, SIGSYS,
|
|
18
|
+
SECCOMP_RET_TRAP, gVisor systrap, deny-by-default profiles, io_uring blocked,
|
|
19
|
+
CVE-2026-46315, moby 47532, task-level io_uring restrictions, eBPF LSM,
|
|
20
|
+
TOCTOU immunity, Hornet LSM v6, cgroups v2 rootless delegation, ML-KEM
|
|
21
|
+
FIPS 203, ML-DSA FIPS 204, X25519MLKEM768, RFC 10024, ChaCha20-Poly1305,
|
|
22
|
+
CRIU SELinux relabel, TDX, SEV-SNP.
|
|
23
|
+
|
|
24
|
+
## Contents
|
|
25
|
+
|
|
26
|
+
1. [Threat model of the spoofing surface](#threat-model)
|
|
27
|
+
2. [Landlock: unprivileged sandboxing at ABI v10](#landlock)
|
|
28
|
+
3. [seccomp: the syscall filter baseline](#seccomp)
|
|
29
|
+
4. [io_uring: the 2026 security pariah](#io-uring)
|
|
30
|
+
5. [eBPF and the eBPF LSM](#ebpf-lsm)
|
|
31
|
+
6. [cgroups v2: unified hierarchy and rootless delegation](#cgroups)
|
|
32
|
+
7. [Post-quantum TLS](#pqc)
|
|
33
|
+
8. [CRIU and SELinux relabeling on restore](#criu-relabel)
|
|
34
|
+
9. [Confidential computing: TDX and SEV-SNP](#confidential)
|
|
35
|
+
10. [The GPU virtual identity surface](#gpu-virtual identity)
|
|
36
|
+
11. [Network and checkpoint security](#network)
|
|
37
|
+
12. [Container hardening](#hardening)
|
|
38
|
+
13. [Layer composition in security.ts](#composition)
|
|
39
|
+
14. [Repository hardening pipeline](#pipeline)
|
|
40
|
+
15. [Sources](#sources)
|
|
41
|
+
|
|
42
|
+
## Threat model of the spoofing surface
|
|
43
|
+
|
|
44
|
+
e2ugh spoofs hardware identity (CPU model, memory size, GPU inventory) so
|
|
45
|
+
that software probing the sandbox believes it runs on high-end hardware. This
|
|
46
|
+
is an identity claim, not an isolation claim, and the threat model states both
|
|
47
|
+
directions explicitly: spoofing changes what the workload sees, never what the
|
|
48
|
+
operator gets.
|
|
49
|
+
|
|
50
|
+
| Asset | What spoofing protects | What spoofing does not protect |
|
|
51
|
+
|---|---|---|
|
|
52
|
+
| /proc/cpuinfo, /proc/meminfo | Workloads that gate on hardware identity (installer checks, license probes, benchmark harnesses) see the virtual board | An attacker using CPUID directly sees the real host CPU; only a VM (QEMU `-cpu EPYC-v5`) shapes CPUID |
|
|
53
|
+
| nvidia-smi / NVML | Tooling that reads NVML or parses nvidia-smi output reports the virtual GPU inventory | Any attempt to execute real CUDA kernels fails without actual GPUs; PCI device IDs on the bus are real |
|
|
54
|
+
| OpenCL/Vulkan device reports | clinfo and vulkaninfo report GPU-class devices backed by Rusticl and lavapipe | Rendering and compute still consume host CPU; there is no confidentiality effect at all |
|
|
55
|
+
| Resource limits | Generous shm and swap semantics prevent workload failures | A determined attacker can measure real throughput and infer the absence of hardware acceleration |
|
|
56
|
+
|
|
57
|
+
Accepted risks, stated plainly: timing side channels reveal software
|
|
58
|
+
rendering; CPUID on the bare host (outside QEMU) reveals the true processor;
|
|
59
|
+
and a static binary that issues raw syscalls bypasses LD_PRELOAD
|
|
60
|
+
interposition entirely (Go static builds, musl static builds). That last gap
|
|
61
|
+
is the reason identity spoofing is layered under QEMU or gVisor for hostile
|
|
62
|
+
workloads rather than standing alone; the full interposition analysis lives
|
|
63
|
+
in `viability.md` (honest limitations).
|
|
64
|
+
|
|
65
|
+
What the defense stack actually protects: untrusted code cannot escape
|
|
66
|
+
through the syscall surface (seccomp deny-by-default plus Landlock at the ABI
|
|
67
|
+
level the host kernel provides), cannot exhaust the host (cgroups v2 cpu,
|
|
68
|
+
memory, io, pids), cannot reach adjacent services (Landlock scopes and the
|
|
69
|
+
network policy in `passage.config`), cannot use io_uring (blocked everywhere
|
|
70
|
+
by default), and control traffic resists future cryptanalysis (hybrid
|
|
71
|
+
post-quantum TLS). VM-backed sandboxes add the full hypervisor boundary, with
|
|
72
|
+
the engine choosing Firecracker, QEMU, Cloud Hypervisor or Kata per the
|
|
73
|
+
selection policy documented in `alternatives.md`.
|
|
74
|
+
|
|
75
|
+
## Landlock: unprivileged sandboxing at ABI v10
|
|
76
|
+
|
|
77
|
+
Landlock is an unprivileged, stackable LSM: any process can restrict itself
|
|
78
|
+
without root, CAP_SYS_ADMIN, or help from a supervisor. The mainline kernel
|
|
79
|
+
has reached ABI v10, which turns Landlock into a complete sandboxing
|
|
80
|
+
primitive (filesystem, TCP, UDP, IPC, signals) that layers on top of seccomp
|
|
81
|
+
rather than replacing it.
|
|
82
|
+
|
|
83
|
+
| ABI | Kernel | Capability added |
|
|
84
|
+
|---|---|---|
|
|
85
|
+
| v1 | 5.13 | Filesystem access rights (execute, write_file, read_file, read_dir, remove_dir, remove_file, make_*) |
|
|
86
|
+
| v2 | 5.19 | Refer and directory changes (linking/renaming across hierarchies) |
|
|
87
|
+
| v3 | 6.2 | File truncate |
|
|
88
|
+
| v4 | 6.7 | Network: TCP bind and connect |
|
|
89
|
+
| v5 | 6.10 | LANDLOCK_ACCESS_FS_IOCTL_DEV (device ioctls) |
|
|
90
|
+
| v6 | 6.12 | Scopes: abstract UNIX socket restriction and signal restriction (SIGSYS on violation) |
|
|
91
|
+
| v7 | 6.15 | Audit logging of denials |
|
|
92
|
+
| v8 | 6.16 | RESTRICT_SELF TSYNC: no_new_privs propagation to multi-threaded processes |
|
|
93
|
+
| v9 | 6.17 | RESOLVE_UNIX scope for path resolution |
|
|
94
|
+
| v10 | 6.20 | Network: UDP bind, connect and send |
|
|
95
|
+
|
|
96
|
+
Engine usage facts, as implemented in `security.ts`: the ABI level is probed
|
|
97
|
+
at runtime through `landlock_create_ruleset(NULL, 0,
|
|
98
|
+
LANDLOCK_CREATE_RULESET_VERSION)`, the applied ruleset is restricted to the
|
|
99
|
+
features the running kernel actually supports, and every probe failure
|
|
100
|
+
degrades to the remaining layers instead of aborting the sandbox. Hosts older
|
|
101
|
+
than 6.7 get filesystem-only Landlock; hosts on 6.20 or later get the full
|
|
102
|
+
unprivileged sandbox with TCP and UDP control. The v6 scopes matter most for
|
|
103
|
+
this engine: they cut the abstract UNIX socket channel that would otherwise
|
|
104
|
+
let a sandboxed process talk to an unconfined local service, which is the
|
|
105
|
+
classic container-escape relay.
|
|
106
|
+
|
|
107
|
+
## seccomp: the syscall filter baseline
|
|
108
|
+
|
|
109
|
+
seccomp filters syscalls with BPF programs installed by the process itself
|
|
110
|
+
(or its supervisor) before untrusted code runs. The engine builds
|
|
111
|
+
deny-by-default filters: every syscall not explicitly allowed returns an
|
|
112
|
+
error, matching the Docker default-profile behavior of returning ENOSYS so
|
|
113
|
+
denied calls look absent rather than merely forbidden.
|
|
114
|
+
|
|
115
|
+
| Action | Result for the calling thread |
|
|
116
|
+
|---|---|
|
|
117
|
+
| SECCOMP_RET_KILL_PROCESS | Process killed immediately |
|
|
118
|
+
| SECCOMP_RET_KILL_THREAD | Offending thread killed |
|
|
119
|
+
| SECCOMP_RET_TRAP | SIGSYS delivered to the thread; the call appears to return with an error |
|
|
120
|
+
| SECCOMP_RET_ERRNO | Configured errno returned (the engine uses 38, ENOSYS) |
|
|
121
|
+
| SECCOMP_RET_USER_NOTIF | Supervisor notified and decides; the fd-injection ioctl enables file-descriptor substitution |
|
|
122
|
+
| SECCOMP_RET_TRACE / LOG / ALLOW | Ptrace observation, logging, or pass-through |
|
|
123
|
+
|
|
124
|
+
Three placements of the same mechanism appear across the stack:
|
|
125
|
+
|
|
126
|
+
1. gVisor systrap. The gVisor Sentry itself is entered through
|
|
127
|
+
SECCOMP_RET_TRAP: every guest syscall raises SIGSYS, and the signal
|
|
128
|
+
handler in the Sentry emulates the call in userspace. RET_TRAP is thus the
|
|
129
|
+
foundation of the default gVisor platform (release-20260817.0), not merely
|
|
130
|
+
a debugging tool.
|
|
131
|
+
2. Second-layer seccomp inside gVisor. The Sentry additionally installs its
|
|
132
|
+
own seccomp-bpf filter to constrain which syscalls can even reach the
|
|
133
|
+
Sentry - defense in depth inside the sandbox runtime itself.
|
|
134
|
+
3. The engine profile. `security.ts` ships a Docker-default-compatible
|
|
135
|
+
profile allowing roughly 140 syscalls with the privileged set denied, and
|
|
136
|
+
a policy proxy that hard-fails any profile build that does not deny the
|
|
137
|
+
io_uring family (next section).
|
|
138
|
+
|
|
139
|
+
## io_uring: the 2026 security pariah
|
|
140
|
+
|
|
141
|
+
io_uring is the kernel's high-performance asynchronous I/O subsystem, and as
|
|
142
|
+
of 2026 it is treated as a sandbox liability across the industry. The engine
|
|
143
|
+
position is simple: the io_uring family stays blocked in every sandbox
|
|
144
|
+
profile, and the performance cost is accepted (asynchronous file I/O inside
|
|
145
|
+
sandboxes uses thread pools instead). The kernel-side velocity work that uses
|
|
146
|
+
io_uring on the host (ZCRX receive, NVMe passthrough) is documented in
|
|
147
|
+
`performance.md` and operates outside the sandbox boundary.
|
|
148
|
+
|
|
149
|
+
| Actor | Position on io_uring in sandboxes |
|
|
150
|
+
|---|---|
|
|
151
|
+
| Docker default seccomp profile | Blocks io_uring syscalls since moby issue 47532 |
|
|
152
|
+
| gVisor | io_uring disabled by default in runsc |
|
|
153
|
+
| Kubernetes v1.33 audit and CIS benchmarks | Recommend blocking io_uring in container profiles |
|
|
154
|
+
| CVE record | CVE-2026-46315 (June 2026): information disclosure through io_uring |
|
|
155
|
+
| LWN, January 2026 | Task-level io_uring restrictions patchset: per-task limits designed to compose with seccomp, addressing the fact that SQPOLL and kernel-side offload can bypass a naive seccomp filter |
|
|
156
|
+
|
|
157
|
+
On x86_64 the blocked syscall numbers are io_uring_setup (425),
|
|
158
|
+
io_uring_enter (426) and io_uring_register (427). The engine denies the
|
|
159
|
+
family with ENOSYS, logs each denial as a policy audit event, and tracks the
|
|
160
|
+
LWN task-level restriction work as the only credible future path toward
|
|
161
|
+
re-enabling io_uring for trusted workloads.
|
|
162
|
+
|
|
163
|
+
## eBPF and the eBPF LSM
|
|
164
|
+
|
|
165
|
+
The eBPF LSM (Linux Security Module) interface, available since kernel 5.7,
|
|
166
|
+
attaches verified BPF programs to LSM hooks. The property that distinguishes
|
|
167
|
+
it from tracepoints and syscall tracing is TOCTOU immunity: LSM hooks execute
|
|
168
|
+
at the exact kernel decision point (file open, credential change, socket
|
|
169
|
+
operation), so there is no gap between the observation and the enforcement in
|
|
170
|
+
which an attacker could change the target object. Tracepoint-based policy
|
|
171
|
+
suffers precisely that gap - check-then-bind races - which is why the engine
|
|
172
|
+
treats eBPF LSM as the audit plane and ptrace/strace as debug-only tools
|
|
173
|
+
(measured in `performance.md`: eBPF tracing at 2 percent overhead versus
|
|
174
|
+
strace at 12x slowdown).
|
|
175
|
+
|
|
176
|
+
| Fact | Detail |
|
|
177
|
+
|---|---|
|
|
178
|
+
| Availability | Kernel 5.7 and later; enabled through the BPF LSM in the kernel security list (`/sys/kernel/security/lsm`) |
|
|
179
|
+
| Verification | Programs are verified by the kernel verifier at load time; hooks cannot corrupt kernel state |
|
|
180
|
+
| Hornet LSM v6 (April 2026) | Verifies eBPF program signatures in-kernel, closing the gap where an attacker with root loads a hostile BPF policy |
|
|
181
|
+
| Cloudflare practice | Uses eBPF LSM to live-patch vulnerability classes (CVE-2024-1086-style exploitation paths) on running fleets without rebooting |
|
|
182
|
+
|
|
183
|
+
The engine attaches counters to security_file_open, security_socket_create
|
|
184
|
+
and related hooks for intrusion telemetry, and uses a tracepoint on
|
|
185
|
+
sys_enter_io_uring_setup purely to count denied async I/O attempts. BPF
|
|
186
|
+
programs are never loaded inside sandboxes; they observe the host side only,
|
|
187
|
+
keeping the sandbox footprint free of privileged eBPF usage. The broader eBPF
|
|
188
|
+
networking and observability surfaces (XDP at 14 Mpps, ring buffers, Tetragon
|
|
189
|
+
per-VM syscall filtering, BPF arenas on kernel 6.17) are specified in
|
|
190
|
+
`performance.md` (observability) and `virtualization.md` (passage).
|
|
191
|
+
|
|
192
|
+
## cgroups v2: unified hierarchy and rootless delegation
|
|
193
|
+
|
|
194
|
+
cgroups v2 provide the resource envelope every other layer sits inside. The
|
|
195
|
+
unified hierarchy is the default on every modern distribution (RHEL 9 and
|
|
196
|
+
later, Ubuntu, Arch; managed by systemd), and the controllers the engine
|
|
197
|
+
uses are cpu, memory, io and pids. The multi-tenant scheduler (MTTG) that
|
|
198
|
+
consumes this layer is documented in `virtualization.md`; this section
|
|
199
|
+
covers only the security-relevant envelope.
|
|
200
|
+
|
|
201
|
+
| Controller | Engine setting | Purpose |
|
|
202
|
+
|---|---|---|
|
|
203
|
+
| cpu.max | Quota and period | CPU bandwidth per sandbox, maps Docker --cpus |
|
|
204
|
+
| cpu.weight | 1-10000 | Relative share under contention, per tenant QoS class |
|
|
205
|
+
| memory.max | Hard limit | Resident memory ceiling |
|
|
206
|
+
| memory.high | Soft throttle | Backpressure before the hard ceiling |
|
|
207
|
+
| memory.swap.max | Swap limit | Composes with --memory-swap -1 (unlimited) on the Docker path |
|
|
208
|
+
| pids.max | Process ceiling | Fork-bomb containment inside the sandbox |
|
|
209
|
+
| io.max / io.weight | Device I/O limits | Writeback-aware I/O control on the unified hierarchy |
|
|
210
|
+
|
|
211
|
+
Delegation is the reason rootless operation works: systemd subtree delegation
|
|
212
|
+
hands a cgroup subtree to an unprivileged user, and Podman and Docker rootless
|
|
213
|
+
use exactly that mechanism to run the whole container stack without root. The
|
|
214
|
+
engine writes its cgroup layout only into delegated subtrees and refuses to
|
|
215
|
+
touch the host root cgroup. This layer is what makes the Docker memory flags
|
|
216
|
+
from `performance.md` enforceable rather than advisory.
|
|
217
|
+
|
|
218
|
+
## Post-quantum TLS
|
|
219
|
+
|
|
220
|
+
Transport security in 2026 is post-quantum by default on this stack,
|
|
221
|
+
protecting sandbox control traffic against harvest-now-decrypt-later
|
|
222
|
+
collection.
|
|
223
|
+
|
|
224
|
+
| Primitive | Standard | Status in the engine stack |
|
|
225
|
+
|---|---|---|
|
|
226
|
+
| ML-KEM | FIPS 203 | Module-lattice key encapsulation; native in OpenSSL 3.5 |
|
|
227
|
+
| ML-DSA | FIPS 204 | Module-lattice signatures; native in OpenSSL 3.5 |
|
|
228
|
+
| SLH-DSA | FIPS 205 | Hash-based signatures; available for long-lived keys |
|
|
229
|
+
| X25519MLKEM768 | RFC 10024 mechanism | Hybrid classical-plus-PQ group; default TLS 1.3 key exchange in OpenSSL 3.5 |
|
|
230
|
+
| RFC 10024 | Published 2026-08-10 | Standardizes the PQ/T hybrid mechanisms for TLS 1.3 |
|
|
231
|
+
| ChaCha20-Poly1305 | RFC 8439 | Symmetric AEAD fallback for hosts without AES-NI |
|
|
232
|
+
|
|
233
|
+
The deployment consequence the engine relies on: OpenSSL 3.5 LTS ships
|
|
234
|
+
X25519MLKEM768 as the default TLS 1.3 group, and Node 24 bundles OpenSSL
|
|
235
|
+
3.5.5, so any TLS connection the orchestrator or the sandbox SDK makes
|
|
236
|
+
negotiates a hybrid post-quantum key exchange with zero additional code. The
|
|
237
|
+
secure-context builder in `security.ts` still pins the group list
|
|
238
|
+
(`X25519MLKEM768:X25519`) and TLS 1.3 as the minimum version so the guarantee
|
|
239
|
+
survives configuration drift. Client-side deployment is broad: Chrome,
|
|
240
|
+
Firefox and Brave prefer PQ groups, Cloudflare terminates them globally, and
|
|
241
|
+
AWS exposes PQ TLS in KMS, ACM and Secrets Manager. For symmetric encryption
|
|
242
|
+
on hosts without AES-NI, ChaCha20-Poly1305 remains the correct AEAD:
|
|
243
|
+
AES-256-GCM is up to three times faster with AES-NI, but ChaCha20 wins on
|
|
244
|
+
hardware without that acceleration (typical ARM and older x86_64 hosts), and
|
|
245
|
+
the cipher list keeps it available as the fallback. The same ChaCha20 stream
|
|
246
|
+
also encrypts CRIU checkpoint images (section on restore below).
|
|
247
|
+
|
|
248
|
+
In code, `security.ts` owns this surface end to end - the v3 redistribution
|
|
249
|
+
moved the post-quantum feature set out of the retired `future.ts` and back
|
|
250
|
+
into the security domain. Two symbols carry it: the `Rfc10024` negotiator
|
|
251
|
+
selects and pins the hybrid group list (X25519MLKEM768 first, X25519
|
|
252
|
+
classical fallback), and `PqcAuditTrail` is the tamper-evident chain for
|
|
253
|
+
every post-quantum key operation: append-only, hash-linked entries with an
|
|
254
|
+
ML-DSA signature over each link, so negotiation drift and key-usage anomalies
|
|
255
|
+
are detectable after the fact, not merely preventable. RFC 10024 was
|
|
256
|
+
published 2026-08-10 and standardizes exactly these PQ/T hybrid mechanisms
|
|
257
|
+
for TLS 1.3.
|
|
258
|
+
|
|
259
|
+
## CRIU and SELinux relabeling on restore
|
|
260
|
+
|
|
261
|
+
CRIU v4.2.1 checkpoints and restores process trees, and the restore path is
|
|
262
|
+
where label hygiene matters: an image dumped from an SELinux-confined process
|
|
263
|
+
must not come back with a different or missing label. CRIU supports LSM
|
|
264
|
+
profile restoration (`--lsm-profile selinux:<label>`), so restored processes
|
|
265
|
+
re-enter their original SELinux context. The `criurelabel` planner in
|
|
266
|
+
`security.ts` emits the relabel arguments plus a `chcon` fallback for image
|
|
267
|
+
trees when the CRIU build lacks the LSM option, and a policy audit event
|
|
268
|
+
records every relabel. Checkpoint images themselves are encrypted with
|
|
269
|
+
ChaCha20-Poly1305 (RFC 8439), so a stolen snapshot file does not leak guest
|
|
270
|
+
memory. This closes the loop with the checkpoint/restore usage described in
|
|
271
|
+
`virtualization.md`: warm starts must not become a downgrade attack on
|
|
272
|
+
label-based isolation.
|
|
273
|
+
|
|
274
|
+
## Confidential computing: TDX and SEV-SNP
|
|
275
|
+
|
|
276
|
+
For deployments where even the host operator is untrusted, the engine plans
|
|
277
|
+
two hardware confidential-computing tiers. QEMU 11.1.0 exposes both machine
|
|
278
|
+
types directly: `tdx-guest` with `sept-ve-disabled`, and `sev-snp-guest`
|
|
279
|
+
with `cbitpos=51 reduced-phys-bits=1` (both wired through the QEMU wrapper in
|
|
280
|
+
`virtualization.ts`). This section carries 27 documented contexts from the
|
|
281
|
+
2026-08-22 research pass.
|
|
282
|
+
|
|
283
|
+
| Context | Verified fact |
|
|
284
|
+
|---|---|
|
|
285
|
+
| Intel TDX baseline | TDX support improved through QEMU 10.1 and solidified in 11.1 |
|
|
286
|
+
| TDX module live update | Linux 7.2 updates the TDX module without reboot |
|
|
287
|
+
| TDX guest flag | `-machine q35 -object tdx-guest,sept-ve-disabled=on` in the QEMU wrapper |
|
|
288
|
+
| CVE-2026-20885 | TDX module vulnerability, INTEL-SA-01436, disclosed March 2026 |
|
|
289
|
+
| Google + Intel joint audit | 9 months, 10 security issues found and fixed |
|
|
290
|
+
| AMD SEV-SNP host floor | QEMU 9.2 host stack, kernel 6.14, Ubuntu 25.04 |
|
|
291
|
+
| SEV-SNP launch measurement | Attested launch measurement over guest memory |
|
|
292
|
+
| Attestation standards | RATS RFC 9334, AMD KDS, NVIDIA NRAS remote attestation |
|
|
293
|
+
| SVSM | VMPL2 vTPM, stateful, with virtio-blk backing |
|
|
294
|
+
| Key Broker Service | Trustee 0.12.0 KBS proxy for secret release |
|
|
295
|
+
| Secret injection | SEV secret area via config table; OVMF encrypted boot; Grub FV |
|
|
296
|
+
| Kata confidential pod | kata-qemu-nvidia-gpu-snp runtime class through CRI-O |
|
|
297
|
+
| Confidential GKE Nodes | H100 GA on Google Cloud (Blackwell generation announced) |
|
|
298
|
+
| Post-quantum attestation | Phase 4: Dilithium/ML-DSA signatures in the attestation chain |
|
|
299
|
+
| Other TEEs | Intel SGX, ARM CCA (Realm Management Extension) |
|
|
300
|
+
| Device migration | VFIO migration protocol v2 (QEMU 8.0+) for passthrough devices |
|
|
301
|
+
|
|
302
|
+
Positioning inside e2ugh: confidential tiers are optional depth rungs on the
|
|
303
|
+
detection-isolation ladder. The spoofing thesis (see `viability.md`) does not
|
|
304
|
+
require them; they exist for operators who must also defend the host-side
|
|
305
|
+
boundary against physical inspection. The GPU angle matters here too:
|
|
306
|
+
confidential computing with GPUs (MIGv2 plus CC mode on Blackwell, driver
|
|
307
|
+
570.124+) is tracked in `hardware.md`.
|
|
308
|
+
|
|
309
|
+
## The GPU virtual identity surface
|
|
310
|
+
|
|
311
|
+
The GPU identity layer rests on four public interception libraries, each
|
|
312
|
+
covering a different read channel. From a security standpoint these are
|
|
313
|
+
presence spoofing only - they answer inventory questions, never execute
|
|
314
|
+
kernels on silicon - and their honest limits are analyzed in `viability.md`.
|
|
315
|
+
|
|
316
|
+
| Library | Mechanism | Security-relevant scope |
|
|
317
|
+
|---|---|---|
|
|
318
|
+
| pogusthewhisper/fake-nvidia-smi | Pure-Python (stdlib only) fake CLI with flex profiles h100 81,559 MiB and a100 40,536 MiB | Replaces one binary; byte-format matches the NVIDIA manual (driver 575.57.08, CUDA 12.9) |
|
|
319
|
+
| x0x0x00/gpuadapter | CUDA API interception: libcuda, libcudart, libcublas, libnccl via LD_PRELOAD (DYLD on macOS); `--devices "a100:2,h100:2"` profiles | Interposes the CUDA surface itself; includes virtual nvidia-smi adapter --query-gpu, topo, MIG views |
|
|
320
|
+
| rick-hsu/nvml-unified-shim | libnvidia-ml shim; nvmlDeviceGetCount falls back to cudaGetDeviceCount; GB10/Blackwell era | Serves NVML readers (pynvml, gpustat) without a driver |
|
|
321
|
+
| ssst0n3/fake-nvidia | Stub kernel module plus libnvidia-ml.so.1 returning false inventories | Kernel-adjacent tier for hosts that probe module state |
|
|
322
|
+
|
|
323
|
+
The fourth entry is the only one that touches kernel territory, and the
|
|
324
|
+
engine treats it as out of scope for sandbox deployments: loading modules
|
|
325
|
+
defeats the rootless property that the rest of the stack preserves. The
|
|
326
|
+
engine's own SMI table renderer (in `render.ts` and the Python bridge
|
|
327
|
+
`qemubridge.py`) generates the same vocabulary (`memory.total`,
|
|
328
|
+
`utilization.gpu`) as the public libraries, keeping the surface auditable in
|
|
329
|
+
one place.
|
|
330
|
+
|
|
331
|
+
## Network and checkpoint security
|
|
332
|
+
|
|
333
|
+
The passage data-plane (six modes, from direct to zero-trust) is specified in
|
|
334
|
+
`virtualization.md`; this section fixes the security constants that survive
|
|
335
|
+
across all modes.
|
|
336
|
+
|
|
337
|
+
| Control | Setting |
|
|
338
|
+
|---|---|
|
|
339
|
+
| Gateway TLS | TLS 1.3 only (min and max), ciphers TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, CHACHA20_POLY1305_SHA256; curves X25519, P-256, P-384; ALPN h2, h3 |
|
|
340
|
+
| Snapshot rollback | Five phases: detect (circuit breaker opens after 5 failures) - quiesce (guest-agent fs-freeze, pipeline drain) - loadvm - verify - reattach (network reattach plus GPU rebind through a fresh iommufd object) |
|
|
341
|
+
| Write-ahead log | Append-only JSONL per VM; idempotency token via node:crypto randomUUID; duplicates deduplicated on replay |
|
|
342
|
+
| Audit | RBAC roles admin/tenant/developer; immutable per-tenant JSONL audit log; OTEL audit_logged counter |
|
|
343
|
+
| Admission | seccomp plus AppArmor profiles on every gateway process |
|
|
344
|
+
|
|
345
|
+
Endpoint discipline: every listener binds to a user-resolved host on a
|
|
346
|
+
cryptographically random port (crypto.randomInt in the 30000-59999 band); no
|
|
347
|
+
component of the engine ever hardcodes an address, and the guards in
|
|
348
|
+
`orchestrator.ts` reject loopback defaults at construction time.
|
|
349
|
+
|
|
350
|
+
## Container hardening
|
|
351
|
+
|
|
352
|
+
Per-runtime hardening beyond the shared profile:
|
|
353
|
+
|
|
354
|
+
| Runtime | Hardening stack |
|
|
355
|
+
|---|---|
|
|
356
|
+
| Firecracker 1.16.1 | jailer (cgroup v2, netns, chroot, seccomp), api-sock on a locked-down Unix socket |
|
|
357
|
+
| gVisor release-20260817.0 | systrap platform (RET_TRAP), second-layer seccomp, DirectFS only where needed |
|
|
358
|
+
| Kata 4.1.0 | runtime-rs rootless baseline plus seccomp on the QEMU hypervisor process |
|
|
359
|
+
| Cloud Hypervisor v53.0 | seccomp profile on the VMM thread; vfio-user devices through validated sockets |
|
|
360
|
+
| Docker 29.7.2 path | no-new-privileges, Tini as PID 1, `--read-only` rootfs with tmpfs carve-outs, AutoRemove |
|
|
361
|
+
|
|
362
|
+
The engine-level composition adds Landlock scopes on top of whichever
|
|
363
|
+
runtime tier is active, so a sandbox that somehow reaches an unconfined
|
|
364
|
+
process still cannot open abstract UNIX sockets or send signals outside its
|
|
365
|
+
group on kernels 6.12+.
|
|
366
|
+
|
|
367
|
+
## Layer composition in security.ts
|
|
368
|
+
|
|
369
|
+
The shipped profile composes four layers, each deny-by-default, each failing
|
|
370
|
+
closed:
|
|
371
|
+
|
|
372
|
+
1. Landlock ruleset (ABI-probed): read-only trees, write trees, device
|
|
373
|
+
ioctl gate, TCP and UDP scopes where the kernel supports them, abstract
|
|
374
|
+
UNIX socket and signal scopes.
|
|
375
|
+
2. seccomp filter: roughly 140 allowed syscalls, privileged set denied with
|
|
376
|
+
ENOSYS, io_uring family denied unconditionally; profile builds that omit
|
|
377
|
+
the io_uring denial refuse to compile.
|
|
378
|
+
3. cgroups v2: cpu, memory, swap, pids and io limits inside a delegated
|
|
379
|
+
subtree only.
|
|
380
|
+
4. CRIU restore policy: SELinux relabel mandatory unless explicitly
|
|
381
|
+
disabled, every override audited.
|
|
382
|
+
|
|
383
|
+
A security self-check runs at engine startup: it verifies the Landlock ABI
|
|
384
|
+
level of the host, confirms the seccomp profile denies io_uring_setup,
|
|
385
|
+
checks that cgroup writes land in the delegated subtree, confirms the TLS
|
|
386
|
+
group list starts with X25519MLKEM768, and reports each result as a
|
|
387
|
+
pass/fail fact rather than a silent default. Runtime smoke checks recorded
|
|
388
|
+
during the v2 build: `detectlandlockabi('6.20.0')` returns 10, and the
|
|
389
|
+
seccomp builder's io_uring_setup denial evaluates true on every profile.
|
|
390
|
+
|
|
391
|
+
## Repository hardening pipeline
|
|
392
|
+
|
|
393
|
+
The repository guards itself with the `security.yml` workflow (eight gates,
|
|
394
|
+
all pinned to versions verified 2026-08-22). The workflow file carries the
|
|
395
|
+
authoritative configuration; this section summarizes the gates and their
|
|
396
|
+
blocking semantics.
|
|
397
|
+
|
|
398
|
+
| Gate | Tool (pinned version) | Blocks on |
|
|
399
|
+
|---|---|---|
|
|
400
|
+
| CodeQL | github/codeql-action@v4.37.8, languages cpp + javascript-typescript | Any query result at the configured severities; C/C++ uses manual build-mode extraction over libs/ |
|
|
401
|
+
| Dependency review | actions/dependency-review-action@v5.0.0 | High or critical advisories and incompatible licenses on PRs and main pushes |
|
|
402
|
+
| Container scan | Dockle v0.4.15 and Trivy v0.36.0 | Dockle FATAL findings; Trivy CRITICAL CVEs (ignore-unfixed), SARIF uploaded to code scanning |
|
|
403
|
+
| Secret scan | gitleaks-action@v3.0.0, full git history (fetch-depth 0) | Any detected credential in any commit |
|
|
404
|
+
| Scorecard | ossf/scorecard-action@v2.4.4 | Results published to the public Scorecard API (weekly plus main pushes) |
|
|
405
|
+
| Biome security | @biomejs/biome@2.5.11, security group at error severity | noSecrets (error level on json/yml/toml/env overrides), noGlobalEval, noDangerouslySetInnerHtml |
|
|
406
|
+
| License check | license-checker, permissive allow list (MIT, Apache-2.0, ISC, BSD, 0BSD, Unlicense, CC0, Zlib, MPL-2.0, others) | Any copyleft or unlicensed runtime dependency; missing root LICENSE |
|
|
407
|
+
| Snyk (optional) | snyk/actions/node, guarded by SNYK_TOKEN | Never gates (continue-on-error); findings surface in logs |
|
|
408
|
+
|
|
409
|
+
The CI graph (six gates in `ci.yml`), the provenance and SBOM publishing in
|
|
410
|
+
`publishghcr.yml` (the combined container pipeline), and the complete workflow inventory are documented
|
|
411
|
+
in `architecture.md`; the security-relevant property repeated here is that
|
|
412
|
+
the default workflow permission is `contents: read` and each job elevates
|
|
413
|
+
only what it needs (security-events: write for SARIF uploaders, id-token:
|
|
414
|
+
write for the Scorecard publication).
|
|
415
|
+
|
|
416
|
+
## Sources
|
|
417
|
+
|
|
418
|
+
- Landlock kernel documentation: https://docs.kernel.org/userspace-api/landlock.html
|
|
419
|
+
- Landlock project news and ABI timeline: https://landlock.io/news
|
|
420
|
+
- LWN Landlock coverage: https://lwn.net/Articles/1021648 and https://lwn.net/Articles/1050309
|
|
421
|
+
- seccomp manual page: https://man7.org/linux/man-pages/man2/seccomp.2.html
|
|
422
|
+
- gVisor platforms (systrap, RET_TRAP): https://gvisor.dev/docs/architecture_guide/platforms
|
|
423
|
+
- gVisor seccomp layers: https://gvisor.dev/blog/2024/02/01/seccomp
|
|
424
|
+
- Docker default profile blocking io_uring: https://github.com/moby/moby/issues/47532
|
|
425
|
+
- CVE-2026-46315 record: https://sentinelone.com/vulnerability-database/cve-2026-46315
|
|
426
|
+
- io_uring hardening analysis: https://systemshardening.com/articles/linux/io-uring-hardening
|
|
427
|
+
- LWN task-level io_uring restrictions: https://lwn.net/Articles/1054225
|
|
428
|
+
- eBPF LSM documentation: https://docs.kernel.org/bpf/prog_lsm.html
|
|
429
|
+
- Cloudflare eBPF LSM live patching: https://blog.cloudflare.com/live-patch-security-vulnerabilities-with-ebpf-lsm
|
|
430
|
+
- Hornet LSM v6 (LKML): https://lkml.iu.edu/2604.3/10670.html
|
|
431
|
+
- cgroup v2 kernel documentation: https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html
|
|
432
|
+
- systemd cgroup delegation: https://systemd.io/CGROUP_DELEGATION
|
|
433
|
+
- systemd resource control: https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html
|
|
434
|
+
- OpenSSL post-quantum: https://openssl-corporation.org/post-quantum.html
|
|
435
|
+
- OpenSSL 3.5 PQ defaults analysis: https://postquantum.com/security-pqc/openssl-3-5-pqc-default
|
|
436
|
+
- RFC 10024 (PQ/T hybrids for TLS 1.3): https://datatracker.ietf.org/doc/rfc10024/
|
|
437
|
+
- RFC 8439 (ChaCha20-Poly1305): https://datatracker.ietf.org/doc/rfc8439/
|
|
438
|
+
- AWS PQ TLS details: https://docs.aws.amazon.com/sdkref/latest/guide/pqtls-details.html
|
|
439
|
+
- Cloudflare PQC support: https://developers.cloudflare.com/ssl/post-quantum-cryptography/pqc-support/
|
|
440
|
+
- CRIU releases: https://github.com/checkpoint-restore/criu/releases
|
|
441
|
+
- CRIU project: https://criu.org
|
|
442
|
+
- QEMU 11.1.0 announcement: https://www.qemu.org/2026/08/11/qemu-11-1-0/
|
|
443
|
+
- Intel TDX and INTEL-SA-01436: https://www.intel.com/content/www/us/en/security-center/advisory/intel-sa-01436.html
|
|
444
|
+
- AMD SEV-SNP: https://www.amd.com/en/products/processors/server/epyc/security/sev-snp.html
|
|
445
|
+
- RATS RFC 9334: https://datatracker.ietf.org/doc/rfc9334/
|
|
446
|
+
- CoCo Trustee (KBS): https://github.com/confidential-containers/trustee
|
|
447
|
+
- fake-nvidia-smi: https://github.com/pogusthewhisper/fake-nvidia-smi
|
|
448
|
+
- GpuAdapter (CUDA API interception): https://github.com/FanBB2333/GpuAdapter
|
|
449
|
+
- nvml-unified-shim: https://github.com/rick-hsu/nvml-unified-shim
|
|
450
|
+
- fake-nvidia stub: https://github.com/ssst0n3/fake-nvidia
|
|
451
|
+
- OSSF Scorecard: https://github.com/ossf/scorecard
|
|
452
|
+
- gitleaks: https://github.com/gitleaks/gitleaks
|
|
453
|
+
- Dockle: https://github.com/goodwithtech/dockle
|
|
454
|
+
- Trivy: https://github.com/aquasecurity/trivy
|
package/docs/todo-1.8.16.md
CHANGED
|
@@ -677,4 +677,59 @@
|
|
|
677
677
|
- [x] Update every active 1.8.16 version metadata location to 1.8.17 after the implementation scope is validated.
|
|
678
678
|
- [x] Update release notes, changelog, registry and artifact documentation with an accurate platform matrix and no unverified image claims.
|
|
679
679
|
- [x] Validate YAML formatting, package and engine gates, workflow logic, package dry-run, high-severity audit, flat-native validation, and whitespace before creating the 1.8.17 tag.
|
|
680
|
-
- [
|
|
680
|
+
- [x] Publish and inspect the 1.8.17 release, all registry workflows, container manifest platforms, post-push label checks, and smoke-test results. The public release contains 38 assets; GHCR run `31847952976` verified `linux/amd64`, `linux/arm64`, and `linux/ppc64le` and completed the amd64 label and CLI smoke checks.
|
|
681
|
+
|
|
682
|
+
## 11. Version 1.8.17 README consolidation and archival request
|
|
683
|
+
|
|
684
|
+
- [x] Inventory every historical `README.md` revision with Git before selecting durable content for the current README. The root history contains 41 revisions and separate platform README paths.
|
|
685
|
+
- [x] Consolidate still-relevant capabilities, installation paths, modes, packaging surfaces, and limits into an external consolidation record while preserving the README scope reference.
|
|
686
|
+
- [x] Update active release references to `1.8.17` while preserving historical release records as history rather than overwriting them.
|
|
687
|
+
- [ ] Remove direct links or filename references to documents inside `docs/` from the README; retain only appropriate root-document references.
|
|
688
|
+
- [x] Inventory the exact user-requested documentation range before any archive operation and exclude the archive itself from recursive inputs.
|
|
689
|
+
- [x] Receive a user-supplied passphrase before creating an encrypted archive; do not generate an unrecoverable undocumented credential.
|
|
690
|
+
- [x] Create and verify the requested encrypted archive only after the passphrase and archive scope are explicit. The verified list contains 199 files and 13 directory entries with unrelated assets excluded.
|
|
691
|
+
- [x] Preserve the current README as a non-deterministic scope reference; record the historical consolidation and active 1.8.17 reference matrix outside that file.
|
|
692
|
+
- [x] Build the encrypted package from `docs/logs`, `docs/plans`, `docs/sources`, and `docs/talks1` through `docs/talks9`, excluding unrelated `docs/assets` content and the generated archive itself.
|
|
693
|
+
|
|
694
|
+
## 12. Encrypted documentation relocation
|
|
695
|
+
|
|
696
|
+
- [x] Move the verified encrypted package from the repository root into `docs/` without changing its bytes.
|
|
697
|
+
- [x] Remove only `docs/logs`, `docs/plans`, `docs/sources`, and `docs/talks1` through `docs/talks9` after the package is present at its destination.
|
|
698
|
+
- [x] Verify that `docs/assets` and all remaining top-level documentation files survive the removal before committing.
|
|
699
|
+
|
|
700
|
+
## 13. README version-reference audit
|
|
701
|
+
|
|
702
|
+
- [x] Enumerate every version reference in the current README and every historical root README revision with Git. The root history contains 41 revisions and the current README retains 1.8.14 scope statements.
|
|
703
|
+
- [x] Distinguish active metadata from immutable historical release evidence and identify stale version statements.
|
|
704
|
+
- [x] Preserve the current README as a scope reference while recording the complete capability consolidation outside it.
|
|
705
|
+
- [x] Ensure the external consolidation uses the active 1.8.17 matrix and does not contain direct links to materials inside `docs/`.
|
|
706
|
+
- [x] Validate and commit the version-reference audit without rewriting the README scope document.
|
|
707
|
+
|
|
708
|
+
## 14. Whole-repository active-version audit
|
|
709
|
+
|
|
710
|
+
- [x] Enumerate every tracked current-file reference to a pre-1.8.17 version and classify it as active metadata, test fixture, changelog, release evidence, research, or scope text.
|
|
711
|
+
- [x] Inspect every historical root README revision for durable behavior not yet represented in the external consolidation.
|
|
712
|
+
- [x] Update any discovered active metadata to 1.8.17 while preserving tests, historical records, and scope references. No old Saddle product metadata remained; the Android build-variable match is an AndroidX dependency.
|
|
713
|
+
- [x] Expand the external consolidation with the complete classification and durable historical behavior, without direct links to internal materials.
|
|
714
|
+
- [x] Validate and commit the whole-repository version audit without reworking the README scope document. The only excluded non-product token is an AndroidX dependency version.
|
|
715
|
+
|
|
716
|
+
## 15. Direct README re-evaluation request
|
|
717
|
+
|
|
718
|
+
- [ ] Inventory the README's release badge, current-scope statements, historical sections, and direct internal references.
|
|
719
|
+
- [ ] Compare every affected section with all historical root README revisions before deciding whether it can represent 1.8.17 truthfully.
|
|
720
|
+
- [ ] Identify the exact set of active release references that could be updated without rewriting the preserved scope document or corrupting historical evidence.
|
|
721
|
+
- [ ] Validate and record the direct README re-evaluation outcome.
|
|
722
|
+
|
|
723
|
+
## 16. npm distribution and 1.8.18 planning base
|
|
724
|
+
|
|
725
|
+
- [x] Inspect the package dry-run contents to confirm which README the npm package distributes and whether a separate distribution document exists. The package contains the root README and the extension README; no separate distribution README exists.
|
|
726
|
+
- [x] Map each durable capability from the 41 historical README revisions into the consolidated planning base for 1.8.18.
|
|
727
|
+
- [x] Record any permitted active metadata alignment separately from the immutable README scope reference.
|
|
728
|
+
- [x] Validate and commit the 1.8.18 planning base without replacing the README scope document.
|
|
729
|
+
|
|
730
|
+
## 17. README publication consolidation request
|
|
731
|
+
|
|
732
|
+
- [x] Build a section-by-section matrix across the 41 root README revisions and the current README.
|
|
733
|
+
- [x] Identify all release references that describe the active package rather than historical evidence or fixture state.
|
|
734
|
+
- [x] Consolidate the README into foundation, engine, productization, API, extension, security, package, development, CLI, repository, history and current-scope sections while preserving historical evidence accurately.
|
|
735
|
+
- [x] Validate the README-facing update through `npm pack --dry-run`; the resulting `@wenathlan/saddle@1.8.17` package contains the root README.
|