lilrae 8.0.0__py3-none-any.whl

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.
Files changed (1585) hide show
  1. aptl/__init__.py +9 -0
  2. aptl/_asset_manifest.py +91 -0
  3. aptl/_labdata/.dockerignore +26 -0
  4. aptl/_labdata/.env.example +84 -0
  5. aptl/_labdata/.mcp.json.example +53 -0
  6. aptl/_labdata/README.md +194 -0
  7. aptl/_labdata/appliance/guest/aptl-appliance-first-boot +50 -0
  8. aptl/_labdata/appliance/guest/aptl-appliance-first-boot.service +23 -0
  9. aptl/_labdata/appliance/guest/aptl-launch.mount +12 -0
  10. aptl/_labdata/appliance/guest/claude/package-lock.json +142 -0
  11. aptl/_labdata/appliance/guest/claude/package.json +8 -0
  12. aptl/_labdata/appliance/guest/desktop-compose.yml +57 -0
  13. aptl/_labdata/appliance/guest/desktop-handoff.py +334 -0
  14. aptl/_labdata/appliance/guest/desktop-mcp-smoke.py +43 -0
  15. aptl/_labdata/appliance/guest/desktop-nginx.conf +16 -0
  16. aptl/_labdata/appliance/guest/desktop-session.sh +20 -0
  17. aptl/_labdata/appliance/guest/provision-offline.sh +230 -0
  18. aptl/_labdata/appliance/guest/scan-golden.sh +155 -0
  19. aptl/_labdata/appliance/guest/seat-desktop.py +136 -0
  20. aptl/_labdata/appliance/guest/seat-privilege-qualification.py +93 -0
  21. aptl/_labdata/appliance/guest/seat-privileges.py +198 -0
  22. aptl/_labdata/appliance/guest/seat-qualification-smoke.service +14 -0
  23. aptl/_labdata/appliance/guest/seat-qualification-smoke.sh +111 -0
  24. aptl/_labdata/appliance/guest/system-packages.sha256 +387 -0
  25. aptl/_labdata/config/certs.yml +16 -0
  26. aptl/_labdata/config/cortex/analyzers/APTLObservable/APTL_Observable.json +26 -0
  27. aptl/_labdata/config/cortex/analyzers/APTLObservable/aptl_observable.py +61 -0
  28. aptl/_labdata/config/cortex/application.conf +50 -0
  29. aptl/_labdata/config/cortex/index-mapping.json +140 -0
  30. aptl/_labdata/config/cortex/thehive-cortex.env +7 -0
  31. aptl/_labdata/config/otel/grafana-datasources.yaml +9 -0
  32. aptl/_labdata/config/otel/otel-collector-config.yaml +30 -0
  33. aptl/_labdata/config/otel/tempo-config.yaml +23 -0
  34. aptl/_labdata/config/suricata/rules/local.rules +46 -0
  35. aptl/_labdata/config/suricata/rules/misp/misp-iocs.rules +6 -0
  36. aptl/_labdata/config/suricata/rules/misp/misp-md5.list +2 -0
  37. aptl/_labdata/config/suricata/rules/misp/misp-sha1.list +2 -0
  38. aptl/_labdata/config/suricata/rules/misp/misp-sha256.list +2 -0
  39. aptl/_labdata/config/suricata/suricata.yaml +121 -0
  40. aptl/_labdata/config/thehive/application.conf +20 -0
  41. aptl/_labdata/config/wazuh-certs-tool.sh +925 -0
  42. aptl/_labdata/config/wazuh_cluster/etc/lists/active-response-whitelist +34 -0
  43. aptl/_labdata/config/wazuh_cluster/filebeat_wazuh_module.yml +35 -0
  44. aptl/_labdata/config/wazuh_cluster/patch-rule-path.py +40 -0
  45. aptl/_labdata/config/wazuh_cluster/wazuh_manager.conf +443 -0
  46. aptl/_labdata/config/wazuh_dashboard/opensearch_dashboards.yml +12 -0
  47. aptl/_labdata/config/wazuh_dashboard/wazuh.yml +7 -0
  48. aptl/_labdata/config/wazuh_indexer/wazuh.indexer.yml +30 -0
  49. aptl/_labdata/containers/_host-identity/aptl-host-identity +17 -0
  50. aptl/_labdata/containers/_host-identity/aptl-host-identity.service +13 -0
  51. aptl/_labdata/containers/_host-identity/install.sh +18 -0
  52. aptl/_labdata/containers/_wazuh-agent/aptl-firewall-drop.sh +179 -0
  53. aptl/_labdata/containers/_wazuh-agent/install-active-response.sh +34 -0
  54. aptl/_labdata/containers/_wazuh-agent/install-rhel.sh +21 -0
  55. aptl/_labdata/containers/_wazuh-agent/install.sh +50 -0
  56. aptl/_labdata/containers/_wazuh-agent/ossec.conf.template +27 -0
  57. aptl/_labdata/containers/_wazuh-agent/wazuh-agent.sh +169 -0
  58. aptl/_labdata/containers/_wazuh-agent/wazuh.repo +7 -0
  59. aptl/_labdata/containers/appliance-egress-proxy/Dockerfile +13 -0
  60. aptl/_labdata/containers/appliance-egress-proxy/proxy.py +322 -0
  61. aptl/_labdata/containers/base/Dockerfile.rocky +86 -0
  62. aptl/_labdata/containers/base/Dockerfile.ubuntu +86 -0
  63. aptl/_labdata/containers/base/falco_custom.yaml +25 -0
  64. aptl/_labdata/containers/base/scripts/entrypoint-base.sh +172 -0
  65. aptl/_labdata/containers/base/scripts/ossec.conf.template +85 -0
  66. aptl/_labdata/containers/base/sshd/00-aptl-hardening.conf +13 -0
  67. aptl/_labdata/containers/generic-samba-ad-base/Dockerfile +30 -0
  68. aptl/_labdata/containers/generic-samba-ad-base/provider-start.sh +9 -0
  69. aptl/_labdata/containers/generic-samba-ad-base/provision-domain.sh +40 -0
  70. aptl/_labdata/containers/generic-samba-ad-wazuh-agent-base/Dockerfile +12 -0
  71. aptl/_labdata/containers/generic-systemd-base/Dockerfile +46 -0
  72. aptl/_labdata/containers/generic-systemd-base-debian/Dockerfile +36 -0
  73. aptl/_labdata/containers/generic-systemd-node22-base/Dockerfile +73 -0
  74. aptl/_labdata/containers/generic-systemd-wazuh-agent-base/Dockerfile +15 -0
  75. aptl/_labdata/containers/generic-systemd-wazuh-agent-base-debian/Dockerfile +8 -0
  76. aptl/_labdata/containers/generic-wazuh-agent-base-debian/Dockerfile +12 -0
  77. aptl/_labdata/containers/kali/audit/aptl.rules +43 -0
  78. aptl/_labdata/containers/kali-capture/Dockerfile +24 -0
  79. aptl/_labdata/containers/kali-capture/broker.py +595 -0
  80. aptl/_labdata/containers/kali-capture/entrypoint.sh +57 -0
  81. aptl/_labdata/containers/kali-capture/sshd_config +20 -0
  82. aptl/_labdata/containers/keys/aptl_lab_key.pub +1 -0
  83. aptl/_labdata/containers/keys/authorized_keys +1 -0
  84. aptl/_labdata/containers/mailserver/setup.sh +21 -0
  85. aptl/_labdata/containers/misp-suricata-sync/Dockerfile +47 -0
  86. aptl/_labdata/containers/network-boundary-helper/Dockerfile +13 -0
  87. aptl/_labdata/containers/network-boundary-helper/helper.py +1080 -0
  88. aptl/_labdata/containers/network-boundary-helper/probe.py +71 -0
  89. aptl/_labdata/containers/operator-access-proxy/Dockerfile +13 -0
  90. aptl/_labdata/containers/operator-access-proxy/proxy.py +76 -0
  91. aptl/_labdata/containers/reverse/Dockerfile +110 -0
  92. aptl/_labdata/containers/reverse/README.md +152 -0
  93. aptl/_labdata/containers/reverse/entrypoint.sh +15 -0
  94. aptl/_labdata/containers/reverse/install-all.sh +39 -0
  95. aptl/_labdata/containers/reverse/install-falco.sh +42 -0
  96. aptl/_labdata/containers/reverse/install-wazuh.sh +77 -0
  97. aptl/_labdata/containers/reverse/rebuild_container.sh +4 -0
  98. aptl/_labdata/containers/reverse/reverse-tools-install.service +15 -0
  99. aptl/_labdata/containers/reverse/setup-reverse-tools.sh +95 -0
  100. aptl/_labdata/containers/suricata-wazuh-agent/Dockerfile +23 -0
  101. aptl/_labdata/containers/windows-victim/README.md +160 -0
  102. aptl/_labdata/containers/windows-victim/enable-rdp.ps1 +16 -0
  103. aptl/_labdata/containers/windows-victim/join-domain.ps1 +27 -0
  104. aptl/_labdata/containers/windows-victim/setup-ghidra.ps1 +93 -0
  105. aptl/_labdata/containers/windows-victim/setup-python-re.ps1 +59 -0
  106. aptl/_labdata/containers/windows-victim/setup-re-tools.ps1 +85 -0
  107. aptl/_labdata/containers/windows-victim/setup-ssh.ps1 +26 -0
  108. aptl/_labdata/containers/windows-victim/setup-sysinternals.ps1 +64 -0
  109. aptl/_labdata/containers/windows-victim/setup-sysmon.ps1 +39 -0
  110. aptl/_labdata/containers/windows-victim/setup-vs-buildtools.ps1 +58 -0
  111. aptl/_labdata/containers/windows-victim/setup-wazuh-agent.ps1 +29 -0
  112. aptl/_labdata/containers/windows-victim/setup-wdk.ps1 +68 -0
  113. aptl/_labdata/containers/windows-victim/setup-x64dbg.ps1 +81 -0
  114. aptl/_labdata/docker-compose.capture.yml +46 -0
  115. aptl/_labdata/docker-compose.observability.yml +95 -0
  116. aptl/_labdata/docker-compose.yml +1102 -0
  117. aptl/_labdata/generate-indexer-certs.yml +56 -0
  118. aptl/_labdata/hatch_build.py +179 -0
  119. aptl/_labdata/mcp/aptl-mcp-common/package-lock.json +2941 -0
  120. aptl/_labdata/mcp/aptl-mcp-common/package.json +43 -0
  121. aptl/_labdata/mcp/aptl-mcp-common/src/captures.ts +276 -0
  122. aptl/_labdata/mcp/aptl-mcp-common/src/config.ts +326 -0
  123. aptl/_labdata/mcp/aptl-mcp-common/src/endpoint-url.ts +58 -0
  124. aptl/_labdata/mcp/aptl-mcp-common/src/http.ts +465 -0
  125. aptl/_labdata/mcp/aptl-mcp-common/src/index.ts +70 -0
  126. aptl/_labdata/mcp/aptl-mcp-common/src/redaction.ts +1008 -0
  127. aptl/_labdata/mcp/aptl-mcp-common/src/runs.ts +285 -0
  128. aptl/_labdata/mcp/aptl-mcp-common/src/server.ts +248 -0
  129. aptl/_labdata/mcp/aptl-mcp-common/src/shells.ts +129 -0
  130. aptl/_labdata/mcp/aptl-mcp-common/src/ssh-contracts.ts +137 -0
  131. aptl/_labdata/mcp/aptl-mcp-common/src/ssh-manager.ts +468 -0
  132. aptl/_labdata/mcp/aptl-mcp-common/src/ssh-session.ts +623 -0
  133. aptl/_labdata/mcp/aptl-mcp-common/src/ssh.ts +19 -0
  134. aptl/_labdata/mcp/aptl-mcp-common/src/telemetry-export.ts +58 -0
  135. aptl/_labdata/mcp/aptl-mcp-common/src/telemetry.ts +240 -0
  136. aptl/_labdata/mcp/aptl-mcp-common/src/tools/api-definitions.ts +92 -0
  137. aptl/_labdata/mcp/aptl-mcp-common/src/tools/api-handlers.ts +265 -0
  138. aptl/_labdata/mcp/aptl-mcp-common/src/tools/definitions.ts +187 -0
  139. aptl/_labdata/mcp/aptl-mcp-common/src/tools/handlers.ts +636 -0
  140. aptl/_labdata/mcp/aptl-mcp-common/src/utils.ts +17 -0
  141. aptl/_labdata/mcp/aptl-mcp-common/tests/api-tools.test.ts +198 -0
  142. aptl/_labdata/mcp/aptl-mcp-common/tests/captures.test.ts +498 -0
  143. aptl/_labdata/mcp/aptl-mcp-common/tests/config-env-substitution.test.ts +291 -0
  144. aptl/_labdata/mcp/aptl-mcp-common/tests/config-logic.test.ts +122 -0
  145. aptl/_labdata/mcp/aptl-mcp-common/tests/endpoint-url.test.ts +71 -0
  146. aptl/_labdata/mcp/aptl-mcp-common/tests/http-ca.test.ts +173 -0
  147. aptl/_labdata/mcp/aptl-mcp-common/tests/http-endpoint-security.test.ts +90 -0
  148. aptl/_labdata/mcp/aptl-mcp-common/tests/http-insecure.test.ts +236 -0
  149. aptl/_labdata/mcp/aptl-mcp-common/tests/http.test.ts +187 -0
  150. aptl/_labdata/mcp/aptl-mcp-common/tests/redaction.parity.test.ts +51 -0
  151. aptl/_labdata/mcp/aptl-mcp-common/tests/redaction.test.ts +923 -0
  152. aptl/_labdata/mcp/aptl-mcp-common/tests/runs.test.ts +269 -0
  153. aptl/_labdata/mcp/aptl-mcp-common/tests/server-hook.test.ts +265 -0
  154. aptl/_labdata/mcp/aptl-mcp-common/tests/server-logic.test.ts +106 -0
  155. aptl/_labdata/mcp/aptl-mcp-common/tests/shells.test.ts +215 -0
  156. aptl/_labdata/mcp/aptl-mcp-common/tests/ssh-facade.test.ts +42 -0
  157. aptl/_labdata/mcp/aptl-mcp-common/tests/ssh.test.ts +1703 -0
  158. aptl/_labdata/mcp/aptl-mcp-common/tests/telemetry-export.test.ts +38 -0
  159. aptl/_labdata/mcp/aptl-mcp-common/tests/telemetry.test.ts +328 -0
  160. aptl/_labdata/mcp/aptl-mcp-common/tests/tools-definitions.test.ts +81 -0
  161. aptl/_labdata/mcp/aptl-mcp-common/tests/tools-handlers.test.ts +463 -0
  162. aptl/_labdata/mcp/aptl-mcp-common/tsconfig.json +15 -0
  163. aptl/_labdata/mcp/aptl-mcp-common/vitest.config.ts +14 -0
  164. aptl/_labdata/mcp/build-all-mcps.sh +22 -0
  165. aptl/_labdata/mcp/mcp-casemgmt/.gitignore +2 -0
  166. aptl/_labdata/mcp/mcp-casemgmt/docker-lab-config.json +102 -0
  167. aptl/_labdata/mcp/mcp-casemgmt/package-lock.json +2351 -0
  168. aptl/_labdata/mcp/mcp-casemgmt/package.json +33 -0
  169. aptl/_labdata/mcp/mcp-casemgmt/src/index.ts +10 -0
  170. aptl/_labdata/mcp/mcp-casemgmt/tsconfig.build.json +13 -0
  171. aptl/_labdata/mcp/mcp-casemgmt/tsconfig.json +17 -0
  172. aptl/_labdata/mcp/mcp-indexer/.gitignore +2 -0
  173. aptl/_labdata/mcp/mcp-indexer/docker-lab-config.json +88 -0
  174. aptl/_labdata/mcp/mcp-indexer/package-lock.json +3546 -0
  175. aptl/_labdata/mcp/mcp-indexer/package.json +42 -0
  176. aptl/_labdata/mcp/mcp-indexer/src/index.ts +11 -0
  177. aptl/_labdata/mcp/mcp-indexer/tsconfig.build.json +9 -0
  178. aptl/_labdata/mcp/mcp-indexer/tsconfig.json +16 -0
  179. aptl/_labdata/mcp/mcp-indexer/vitest.config.ts +7 -0
  180. aptl/_labdata/mcp/mcp-network/.gitignore +2 -0
  181. aptl/_labdata/mcp/mcp-network/docker-lab-config.json +120 -0
  182. aptl/_labdata/mcp/mcp-network/package-lock.json +2351 -0
  183. aptl/_labdata/mcp/mcp-network/package.json +33 -0
  184. aptl/_labdata/mcp/mcp-network/src/index.ts +10 -0
  185. aptl/_labdata/mcp/mcp-network/tsconfig.build.json +13 -0
  186. aptl/_labdata/mcp/mcp-network/tsconfig.json +17 -0
  187. aptl/_labdata/mcp/mcp-red/.gitignore +4 -0
  188. aptl/_labdata/mcp/mcp-red/.prettierrc +7 -0
  189. aptl/_labdata/mcp/mcp-red/docker-lab-config.json +26 -0
  190. aptl/_labdata/mcp/mcp-red/eslint.config.js +41 -0
  191. aptl/_labdata/mcp/mcp-red/package-lock.json +3787 -0
  192. aptl/_labdata/mcp/mcp-red/package.json +43 -0
  193. aptl/_labdata/mcp/mcp-red/src/capture.ts +207 -0
  194. aptl/_labdata/mcp/mcp-red/src/classifier.ts +790 -0
  195. aptl/_labdata/mcp/mcp-red/src/effective-mode.ts +75 -0
  196. aptl/_labdata/mcp/mcp-red/src/extractor.ts +963 -0
  197. aptl/_labdata/mcp/mcp-red/src/index.ts +169 -0
  198. aptl/_labdata/mcp/mcp-red/src/logger.ts +456 -0
  199. aptl/_labdata/mcp/mcp-red/tests/capture.test.ts +335 -0
  200. aptl/_labdata/mcp/mcp-red/tests/classifier.test.ts +396 -0
  201. aptl/_labdata/mcp/mcp-red/tests/effective-mode.test.ts +166 -0
  202. aptl/_labdata/mcp/mcp-red/tests/extractor.test.ts +646 -0
  203. aptl/_labdata/mcp/mcp-red/tests/logger.test.ts +595 -0
  204. aptl/_labdata/mcp/mcp-red/tsconfig.build.json +9 -0
  205. aptl/_labdata/mcp/mcp-red/tsconfig.json +16 -0
  206. aptl/_labdata/mcp/mcp-red/vitest.config.ts +15 -0
  207. aptl/_labdata/mcp/mcp-reverse/.gitignore +4 -0
  208. aptl/_labdata/mcp/mcp-reverse/.prettierrc +7 -0
  209. aptl/_labdata/mcp/mcp-reverse/docker-lab-config.json +25 -0
  210. aptl/_labdata/mcp/mcp-reverse/eslint.config.js +41 -0
  211. aptl/_labdata/mcp/mcp-reverse/package-lock.json +3547 -0
  212. aptl/_labdata/mcp/mcp-reverse/package.json +42 -0
  213. aptl/_labdata/mcp/mcp-reverse/src/index.ts +10 -0
  214. aptl/_labdata/mcp/mcp-reverse/tsconfig.build.json +9 -0
  215. aptl/_labdata/mcp/mcp-reverse/tsconfig.json +16 -0
  216. aptl/_labdata/mcp/mcp-reverse/vitest.config.ts +8 -0
  217. aptl/_labdata/mcp/mcp-soar/.gitignore +2 -0
  218. aptl/_labdata/mcp/mcp-soar/docker-lab-config.json +82 -0
  219. aptl/_labdata/mcp/mcp-soar/package-lock.json +2351 -0
  220. aptl/_labdata/mcp/mcp-soar/package.json +33 -0
  221. aptl/_labdata/mcp/mcp-soar/src/index.ts +10 -0
  222. aptl/_labdata/mcp/mcp-soar/tsconfig.build.json +13 -0
  223. aptl/_labdata/mcp/mcp-soar/tsconfig.json +17 -0
  224. aptl/_labdata/mcp/mcp-threatintel/.gitignore +2 -0
  225. aptl/_labdata/mcp/mcp-threatintel/docker-lab-config.json +85 -0
  226. aptl/_labdata/mcp/mcp-threatintel/package-lock.json +2351 -0
  227. aptl/_labdata/mcp/mcp-threatintel/package.json +33 -0
  228. aptl/_labdata/mcp/mcp-threatintel/src/index.ts +10 -0
  229. aptl/_labdata/mcp/mcp-threatintel/tsconfig.build.json +13 -0
  230. aptl/_labdata/mcp/mcp-threatintel/tsconfig.json +17 -0
  231. aptl/_labdata/mcp/mcp-wazuh/docker-lab-config.json +82 -0
  232. aptl/_labdata/mcp/mcp-wazuh/package-lock.json +2471 -0
  233. aptl/_labdata/mcp/mcp-wazuh/package.json +33 -0
  234. aptl/_labdata/mcp/mcp-wazuh/src/index.ts +10 -0
  235. aptl/_labdata/mcp/mcp-wazuh/tsconfig.build.json +13 -0
  236. aptl/_labdata/mcp/mcp-wazuh/tsconfig.json +17 -0
  237. aptl/_labdata/mcp/package-lock.json +6 -0
  238. aptl/_labdata/pyproject.toml +229 -0
  239. aptl/_labdata/requirements/ci.txt +640 -0
  240. aptl/_labdata/requirements/dev.txt +1279 -0
  241. aptl/_labdata/requirements/docs.txt +1223 -0
  242. aptl/_labdata/requirements/runtime.txt +1033 -0
  243. aptl/_labdata/requirements/web.txt +1053 -0
  244. aptl/_labdata/scripts/appliance/acquire-guest-system-packages.sh +55 -0
  245. aptl/_labdata/scripts/appliance/assemble-seat-inputs.py +223 -0
  246. aptl/_labdata/scripts/appliance/build-local-images.sh +80 -0
  247. aptl/_labdata/scripts/appliance/build-seat-image.sh +305 -0
  248. aptl/_labdata/scripts/appliance/publish-images.sh +124 -0
  249. aptl/_labdata/scripts/appliance/publish-seat-image.sh +158 -0
  250. aptl/_labdata/scripts/appliance/qualify-seat-image.sh +69 -0
  251. aptl/_labdata/scripts/appliance/qualify-seat-privileges.sh +110 -0
  252. aptl/_labdata/scripts/appliance/seat-base-image.env +5 -0
  253. aptl/_labdata/scripts/appliance/seat-build-record.py +89 -0
  254. aptl/_labdata/scripts/appliance/write-seat-image-config.py +99 -0
  255. aptl/_labdata/scripts/aptl-env.sh +62 -0
  256. aptl/_labdata/scripts/aptl-range.service +25 -0
  257. aptl/_labdata/scripts/ci/assert_boot_realization.py +729 -0
  258. aptl/_labdata/scripts/ci/assert_project_teardown.py +193 -0
  259. aptl/_labdata/scripts/cortex-apikey.sh +274 -0
  260. aptl/_labdata/scripts/cortex-index-init.sh +35 -0
  261. aptl/_labdata/scripts/generate-ssh-keys.sh +49 -0
  262. aptl/_labdata/scripts/launch-ranges.sh +119 -0
  263. aptl/_labdata/scripts/provision-range.sh +159 -0
  264. aptl/_labdata/scripts/seed-misp.sh +246 -0
  265. aptl/_labdata/scripts/seed-prime.sh +304 -0
  266. aptl/_labdata/scripts/seed-shuffle.sh +267 -0
  267. aptl/_labdata/scripts/setup-purple-demo.sh +75 -0
  268. aptl/_labdata/scripts/setup-rdp.sh +96 -0
  269. aptl/_labdata/scripts/setup-vulnerable-victim.sh +217 -0
  270. aptl/_labdata/scripts/test-continuity-audit.sh +98 -0
  271. aptl/_labdata/scripts/test-wazuh-ar-drop.sh +225 -0
  272. aptl/_labdata/scripts/test-wazuh-ar-whitelist.sh +108 -0
  273. aptl/_labdata/scripts/thehive-apikey.sh +113 -0
  274. aptl/_labdata/src/aptl/__init__.py +9 -0
  275. aptl/_labdata/src/aptl/_asset_manifest.py +91 -0
  276. aptl/_labdata/src/aptl/api/__init__.py +1 -0
  277. aptl/_labdata/src/aptl/api/deps.py +243 -0
  278. aptl/_labdata/src/aptl/api/main.py +177 -0
  279. aptl/_labdata/src/aptl/api/middleware/__init__.py +1 -0
  280. aptl/_labdata/src/aptl/api/middleware/bff.py +188 -0
  281. aptl/_labdata/src/aptl/api/routers/__init__.py +1 -0
  282. aptl/_labdata/src/aptl/api/routers/config.py +62 -0
  283. aptl/_labdata/src/aptl/api/routers/kill.py +50 -0
  284. aptl/_labdata/src/aptl/api/routers/lab.py +203 -0
  285. aptl/_labdata/src/aptl/api/routers/scenarios.py +96 -0
  286. aptl/_labdata/src/aptl/api/routers/terminal.py +357 -0
  287. aptl/_labdata/src/aptl/api/scenario_projection.py +277 -0
  288. aptl/_labdata/src/aptl/api/schemas.py +338 -0
  289. aptl/_labdata/src/aptl/api/session.py +166 -0
  290. aptl/_labdata/src/aptl/appliance/__init__.py +1 -0
  291. aptl/_labdata/src/aptl/appliance/access_service.py +363 -0
  292. aptl/_labdata/src/aptl/appliance/access_service_support.py +208 -0
  293. aptl/_labdata/src/aptl/appliance/download.py +264 -0
  294. aptl/_labdata/src/aptl/appliance/errors.py +5 -0
  295. aptl/_labdata/src/aptl/appliance/guest_observation.py +631 -0
  296. aptl/_labdata/src/aptl/appliance/guest_services.py +27 -0
  297. aptl/_labdata/src/aptl/appliance/guest_surfaces.py +142 -0
  298. aptl/_labdata/src/aptl/appliance/input_images.py +185 -0
  299. aptl/_labdata/src/aptl/appliance/input_profile.py +244 -0
  300. aptl/_labdata/src/aptl/appliance/loopback_proxy.py +123 -0
  301. aptl/_labdata/src/aptl/appliance/policy.py +55 -0
  302. aptl/_labdata/src/aptl/appliance/seat/__init__.py +45 -0
  303. aptl/_labdata/src/aptl/appliance/seat/_device.py +45 -0
  304. aptl/_labdata/src/aptl/appliance/seat/access.py +445 -0
  305. aptl/_labdata/src/aptl/appliance/seat/access_clients.py +87 -0
  306. aptl/_labdata/src/aptl/appliance/seat/access_state.py +104 -0
  307. aptl/_labdata/src/aptl/appliance/seat/allocation.py +359 -0
  308. aptl/_labdata/src/aptl/appliance/seat/aptl-seat.pub +4 -0
  309. aptl/_labdata/src/aptl/appliance/seat/context.py +71 -0
  310. aptl/_labdata/src/aptl/appliance/seat/errors.py +12 -0
  311. aptl/_labdata/src/aptl/appliance/seat/exposure.py +136 -0
  312. aptl/_labdata/src/aptl/appliance/seat/image.py +492 -0
  313. aptl/_labdata/src/aptl/appliance/seat/image_config.py +99 -0
  314. aptl/_labdata/src/aptl/appliance/seat/image_disk_cache.py +149 -0
  315. aptl/_labdata/src/aptl/appliance/seat/image_selection.py +466 -0
  316. aptl/_labdata/src/aptl/appliance/seat/image_trust.py +190 -0
  317. aptl/_labdata/src/aptl/appliance/seat/image_update.py +96 -0
  318. aptl/_labdata/src/aptl/appliance/seat/kiosk.py +144 -0
  319. aptl/_labdata/src/aptl/appliance/seat/launch_descriptor.py +104 -0
  320. aptl/_labdata/src/aptl/appliance/seat/lifecycle.py +1272 -0
  321. aptl/_labdata/src/aptl/appliance/seat/locking.py +129 -0
  322. aptl/_labdata/src/aptl/appliance/seat/maintenance.py +66 -0
  323. aptl/_labdata/src/aptl/appliance/seat/models.py +81 -0
  324. aptl/_labdata/src/aptl/appliance/seat/namespace.py +48 -0
  325. aptl/_labdata/src/aptl/appliance/seat/observation.py +403 -0
  326. aptl/_labdata/src/aptl/appliance/seat/overlay.py +172 -0
  327. aptl/_labdata/src/aptl/appliance/seat/overlay_cleanup.py +38 -0
  328. aptl/_labdata/src/aptl/appliance/seat/overlay_identity.py +130 -0
  329. aptl/_labdata/src/aptl/appliance/seat/paths.py +48 -0
  330. aptl/_labdata/src/aptl/appliance/seat/persistence.py +96 -0
  331. aptl/_labdata/src/aptl/appliance/seat/prereqs.py +289 -0
  332. aptl/_labdata/src/aptl/appliance/seat/private_vm.py +156 -0
  333. aptl/_labdata/src/aptl/appliance/seat/privileges.py +122 -0
  334. aptl/_labdata/src/aptl/appliance/seat/readiness.py +247 -0
  335. aptl/_labdata/src/aptl/appliance/seat/retained_image.py +83 -0
  336. aptl/_labdata/src/aptl/appliance/seat/vm.py +465 -0
  337. aptl/_labdata/src/aptl/appliance/versioning.py +35 -0
  338. aptl/_labdata/src/aptl/backends/__init__.py +6 -0
  339. aptl/_labdata/src/aptl/backends/_compose_profile_index.py +160 -0
  340. aptl/_labdata/src/aptl/backends/_raes_admission_helpers.py +86 -0
  341. aptl/_labdata/src/aptl/backends/_raes_apply_helpers.py +77 -0
  342. aptl/_labdata/src/aptl/backends/_raes_apply_reporting.py +172 -0
  343. aptl/_labdata/src/aptl/backends/_raes_artifact_delivery_observation.py +332 -0
  344. aptl/_labdata/src/aptl/backends/_raes_backend_generated_artifacts.py +204 -0
  345. aptl/_labdata/src/aptl/backends/_raes_backend_implementation_catalog.py +449 -0
  346. aptl/_labdata/src/aptl/backends/_raes_backend_implementation_images.py +17 -0
  347. aptl/_labdata/src/aptl/backends/_raes_backend_implementation_profiles.py +259 -0
  348. aptl/_labdata/src/aptl/backends/_raes_backend_implementation_types.py +96 -0
  349. aptl/_labdata/src/aptl/backends/_raes_conformance_probe.py +146 -0
  350. aptl/_labdata/src/aptl/backends/_raes_content_spec.py +50 -0
  351. aptl/_labdata/src/aptl/backends/_raes_dataset_content.py +82 -0
  352. aptl/_labdata/src/aptl/backends/_raes_docker_materializer_observations.py +182 -0
  353. aptl/_labdata/src/aptl/backends/_raes_docker_observation_values.py +53 -0
  354. aptl/_labdata/src/aptl/backends/_raes_evaluator_engine.py +333 -0
  355. aptl/_labdata/src/aptl/backends/_raes_evaluator_progress.py +170 -0
  356. aptl/_labdata/src/aptl/backends/_raes_evidence_refresh_policy.py +46 -0
  357. aptl/_labdata/src/aptl/backends/_raes_guest_os_observation.py +63 -0
  358. aptl/_labdata/src/aptl/backends/_raes_guest_package_observation.py +174 -0
  359. aptl/_labdata/src/aptl/backends/_raes_guest_process_limits.py +125 -0
  360. aptl/_labdata/src/aptl/backends/_raes_image_policy.py +154 -0
  361. aptl/_labdata/src/aptl/backends/_raes_manifest_resources.py +26 -0
  362. aptl/_labdata/src/aptl/backends/_raes_native_evidence_acquisition.py +181 -0
  363. aptl/_labdata/src/aptl/backends/_raes_network_observation.py +41 -0
  364. aptl/_labdata/src/aptl/backends/_raes_node_realization.py +278 -0
  365. aptl/_labdata/src/aptl/backends/_raes_observation_helpers.py +478 -0
  366. aptl/_labdata/src/aptl/backends/_raes_observation_index.py +161 -0
  367. aptl/_labdata/src/aptl/backends/_raes_observation_ordering.py +198 -0
  368. aptl/_labdata/src/aptl/backends/_raes_operational_observation.py +229 -0
  369. aptl/_labdata/src/aptl/backends/_raes_participant_crossing.py +215 -0
  370. aptl/_labdata/src/aptl/backends/_raes_participant_evidence.py +203 -0
  371. aptl/_labdata/src/aptl/backends/_raes_participant_execution.py +485 -0
  372. aptl/_labdata/src/aptl/backends/_raes_participant_manifest.py +82 -0
  373. aptl/_labdata/src/aptl/backends/_raes_participant_models.py +73 -0
  374. aptl/_labdata/src/aptl/backends/_raes_participant_planning.py +383 -0
  375. aptl/_labdata/src/aptl/backends/_raes_participant_snapshot.py +37 -0
  376. aptl/_labdata/src/aptl/backends/_raes_participant_transport.py +352 -0
  377. aptl/_labdata/src/aptl/backends/_raes_proposition_truth.py +395 -0
  378. aptl/_labdata/src/aptl/backends/_raes_provisioner_start.py +296 -0
  379. aptl/_labdata/src/aptl/backends/_raes_provisioning_helpers.py +135 -0
  380. aptl/_labdata/src/aptl/backends/_raes_realization_diagnostics.py +92 -0
  381. aptl/_labdata/src/aptl/backends/_raes_runtime_container_observation.py +250 -0
  382. aptl/_labdata/src/aptl/backends/_raes_runtime_environment_observation.py +93 -0
  383. aptl/_labdata/src/aptl/backends/_raes_runtime_materialization_admission.py +168 -0
  384. aptl/_labdata/src/aptl/backends/_raes_runtime_network_observation.py +154 -0
  385. aptl/_labdata/src/aptl/backends/_raes_runtime_target_options.py +31 -0
  386. aptl/_labdata/src/aptl/backends/_raes_scenario_queries.py +187 -0
  387. aptl/_labdata/src/aptl/backends/_raes_scenario_resolution.py +76 -0
  388. aptl/_labdata/src/aptl/backends/_raes_service_index_placement.py +84 -0
  389. aptl/_labdata/src/aptl/backends/_raes_shuffle_implementation_catalog.py +103 -0
  390. aptl/_labdata/src/aptl/backends/_raes_start_failure.py +49 -0
  391. aptl/_labdata/src/aptl/backends/_raes_stateful_observation.py +264 -0
  392. aptl/_labdata/src/aptl/backends/_raes_stateful_values.py +39 -0
  393. aptl/_labdata/src/aptl/backends/_raes_transcript_qualification.py +71 -0
  394. aptl/_labdata/src/aptl/backends/_runtime_concern_disclosure.py +60 -0
  395. aptl/_labdata/src/aptl/backends/_runtime_concern_excess.py +248 -0
  396. aptl/_labdata/src/aptl/backends/_runtime_mount_observation.py +113 -0
  397. aptl/_labdata/src/aptl/backends/_scenario_environment.py +78 -0
  398. aptl/_labdata/src/aptl/backends/_scenario_startup_runtime.py +172 -0
  399. aptl/_labdata/src/aptl/backends/identity.py +28 -0
  400. aptl/_labdata/src/aptl/backends/pack_interaction.py +110 -0
  401. aptl/_labdata/src/aptl/backends/pack_interaction_discovery.py +336 -0
  402. aptl/_labdata/src/aptl/backends/raes.py +495 -0
  403. aptl/_labdata/src/aptl/backends/raes_account_realization.py +134 -0
  404. aptl/_labdata/src/aptl/backends/raes_acl_realization.py +228 -0
  405. aptl/_labdata/src/aptl/backends/raes_artifact_availability.py +495 -0
  406. aptl/_labdata/src/aptl/backends/raes_artifact_mechanisms.py +460 -0
  407. aptl/_labdata/src/aptl/backends/raes_artifact_satisfaction.py +425 -0
  408. aptl/_labdata/src/aptl/backends/raes_backend_implementation.py +410 -0
  409. aptl/_labdata/src/aptl/backends/raes_base_substrate.py +409 -0
  410. aptl/_labdata/src/aptl/backends/raes_content_realization.py +480 -0
  411. aptl/_labdata/src/aptl/backends/raes_content_satisfaction.py +196 -0
  412. aptl/_labdata/src/aptl/backends/raes_content_source_policy.py +74 -0
  413. aptl/_labdata/src/aptl/backends/raes_dependency_closure.py +374 -0
  414. aptl/_labdata/src/aptl/backends/raes_diagnostics.py +314 -0
  415. aptl/_labdata/src/aptl/backends/raes_docker_materializer.py +474 -0
  416. aptl/_labdata/src/aptl/backends/raes_evaluator.py +488 -0
  417. aptl/_labdata/src/aptl/backends/raes_evidence.py +175 -0
  418. aptl/_labdata/src/aptl/backends/raes_evidence_acquisition.py +466 -0
  419. aptl/_labdata/src/aptl/backends/raes_execution_helpers.py +46 -0
  420. aptl/_labdata/src/aptl/backends/raes_image_realization.py +460 -0
  421. aptl/_labdata/src/aptl/backends/raes_literal_content_realization.py +267 -0
  422. aptl/_labdata/src/aptl/backends/raes_manifest.py +493 -0
  423. aptl/_labdata/src/aptl/backends/raes_materializer.py +466 -0
  424. aptl/_labdata/src/aptl/backends/raes_materializer_engine.py +415 -0
  425. aptl/_labdata/src/aptl/backends/raes_node_materialization.py +232 -0
  426. aptl/_labdata/src/aptl/backends/raes_observability_scope.py +112 -0
  427. aptl/_labdata/src/aptl/backends/raes_observation.py +492 -0
  428. aptl/_labdata/src/aptl/backends/raes_operating_systems.py +151 -0
  429. aptl/_labdata/src/aptl/backends/raes_operator_access.py +52 -0
  430. aptl/_labdata/src/aptl/backends/raes_orchestrator.py +309 -0
  431. aptl/_labdata/src/aptl/backends/raes_pack_interaction.py +73 -0
  432. aptl/_labdata/src/aptl/backends/raes_package_managers.py +247 -0
  433. aptl/_labdata/src/aptl/backends/raes_participant_actions.py +480 -0
  434. aptl/_labdata/src/aptl/backends/raes_participant_apparatus.py +278 -0
  435. aptl/_labdata/src/aptl/backends/raes_participant_apparatus_models.py +44 -0
  436. aptl/_labdata/src/aptl/backends/raes_participant_bindings.py +490 -0
  437. aptl/_labdata/src/aptl/backends/raes_participant_candidates.py +171 -0
  438. aptl/_labdata/src/aptl/backends/raes_participant_control_evidence.py +155 -0
  439. aptl/_labdata/src/aptl/backends/raes_participant_delivery.py +33 -0
  440. aptl/_labdata/src/aptl/backends/raes_participant_driver.py +495 -0
  441. aptl/_labdata/src/aptl/backends/raes_participant_evidence_publication.py +127 -0
  442. aptl/_labdata/src/aptl/backends/raes_participant_execution_support.py +69 -0
  443. aptl/_labdata/src/aptl/backends/raes_participant_exposure.py +159 -0
  444. aptl/_labdata/src/aptl/backends/raes_participant_fixture.py +72 -0
  445. aptl/_labdata/src/aptl/backends/raes_participant_fixture_blue.py +311 -0
  446. aptl/_labdata/src/aptl/backends/raes_participant_fixture_core.py +456 -0
  447. aptl/_labdata/src/aptl/backends/raes_participant_fixture_green.py +339 -0
  448. aptl/_labdata/src/aptl/backends/raes_participant_fixture_red.py +285 -0
  449. aptl/_labdata/src/aptl/backends/raes_participant_projection.py +415 -0
  450. aptl/_labdata/src/aptl/backends/raes_participant_provider.py +285 -0
  451. aptl/_labdata/src/aptl/backends/raes_participant_realization_execution.py +485 -0
  452. aptl/_labdata/src/aptl/backends/raes_participant_realizations.py +482 -0
  453. aptl/_labdata/src/aptl/backends/raes_participant_runtime.py +484 -0
  454. aptl/_labdata/src/aptl/backends/raes_participant_support.py +101 -0
  455. aptl/_labdata/src/aptl/backends/raes_placement_realization.py +223 -0
  456. aptl/_labdata/src/aptl/backends/raes_planning_compat.py +499 -0
  457. aptl/_labdata/src/aptl/backends/raes_profiles.py +412 -0
  458. aptl/_labdata/src/aptl/backends/raes_provisioner.py +364 -0
  459. aptl/_labdata/src/aptl/backends/raes_realization.py +404 -0
  460. aptl/_labdata/src/aptl/backends/raes_realization_envelope.py +145 -0
  461. aptl/_labdata/src/aptl/backends/raes_realization_model.py +394 -0
  462. aptl/_labdata/src/aptl/backends/raes_realization_networks.py +285 -0
  463. aptl/_labdata/src/aptl/backends/raes_realization_values.py +378 -0
  464. aptl/_labdata/src/aptl/backends/raes_repro.py +201 -0
  465. aptl/_labdata/src/aptl/backends/raes_runtime_attestation.py +391 -0
  466. aptl/_labdata/src/aptl/backends/raes_runtime_guest_observation.py +437 -0
  467. aptl/_labdata/src/aptl/backends/raes_runtime_model_artifact.py +66 -0
  468. aptl/_labdata/src/aptl/backends/raes_runtime_observation.py +478 -0
  469. aptl/_labdata/src/aptl/backends/raes_runtime_orchestration.py +318 -0
  470. aptl/_labdata/src/aptl/backends/raes_service_index_schema.py +192 -0
  471. aptl/_labdata/src/aptl/backends/raes_start_model.py +73 -0
  472. aptl/_labdata/src/aptl/backends/raes_stateful_realization.py +479 -0
  473. aptl/_labdata/src/aptl/backends/raes_substrate.py +172 -0
  474. aptl/_labdata/src/aptl/backends/scenario_capture.py +80 -0
  475. aptl/_labdata/src/aptl/backends/scenario_capture_discovery.py +159 -0
  476. aptl/_labdata/src/aptl/backends/scenario_planning_compatibility.py +130 -0
  477. aptl/_labdata/src/aptl/backends/scenario_planning_compatibility_discovery.py +182 -0
  478. aptl/_labdata/src/aptl/backends/scenario_runtime_hooks.py +65 -0
  479. aptl/_labdata/src/aptl/backends/scenario_runtime_parameters.py +118 -0
  480. aptl/_labdata/src/aptl/backends/scenario_runtime_selection.py +52 -0
  481. aptl/_labdata/src/aptl/backends/scenario_service_policy.py +303 -0
  482. aptl/_labdata/src/aptl/backends/scenario_startup.py +496 -0
  483. aptl/_labdata/src/aptl/backends/scenario_startup_policy.py +211 -0
  484. aptl/_labdata/src/aptl/cli/__init__.py +0 -0
  485. aptl/_labdata/src/aptl/cli/_common.py +148 -0
  486. aptl/_labdata/src/aptl/cli/_start_residue.py +70 -0
  487. aptl/_labdata/src/aptl/cli/config.py +88 -0
  488. aptl/_labdata/src/aptl/cli/container.py +126 -0
  489. aptl/_labdata/src/aptl/cli/continuity.py +363 -0
  490. aptl/_labdata/src/aptl/cli/doctor.py +92 -0
  491. aptl/_labdata/src/aptl/cli/experiment.py +143 -0
  492. aptl/_labdata/src/aptl/cli/kill.py +66 -0
  493. aptl/_labdata/src/aptl/cli/lab.py +735 -0
  494. aptl/_labdata/src/aptl/cli/lab_init.py +66 -0
  495. aptl/_labdata/src/aptl/cli/lab_render.py +466 -0
  496. aptl/_labdata/src/aptl/cli/lifecycle.py +155 -0
  497. aptl/_labdata/src/aptl/cli/main.py +57 -0
  498. aptl/_labdata/src/aptl/cli/mcp_access.py +179 -0
  499. aptl/_labdata/src/aptl/cli/participant_profile.py +88 -0
  500. aptl/_labdata/src/aptl/cli/runs.py +344 -0
  501. aptl/_labdata/src/aptl/cli/seat.py +489 -0
  502. aptl/_labdata/src/aptl/cli/seat_inputs.py +119 -0
  503. aptl/_labdata/src/aptl/cli/web.py +164 -0
  504. aptl/_labdata/src/aptl/core/__init__.py +0 -0
  505. aptl/_labdata/src/aptl/core/_credential_sources.py +122 -0
  506. aptl/_labdata/src/aptl/core/_doctor_common.py +59 -0
  507. aptl/_labdata/src/aptl/core/_doctor_runtime.py +405 -0
  508. aptl/_labdata/src/aptl/core/_pack_staging.py +76 -0
  509. aptl/_labdata/src/aptl/core/_port_bindings.py +119 -0
  510. aptl/_labdata/src/aptl/core/_soc_ca_builders.py +136 -0
  511. aptl/_labdata/src/aptl/core/_soc_ca_chain.py +405 -0
  512. aptl/_labdata/src/aptl/core/_soc_ca_generation.py +205 -0
  513. aptl/_labdata/src/aptl/core/_soc_ca_io.py +182 -0
  514. aptl/_labdata/src/aptl/core/appliance_boundary.py +300 -0
  515. aptl/_labdata/src/aptl/core/appliance_boundary_gate.py +62 -0
  516. aptl/_labdata/src/aptl/core/appliance_boundary_inventory.py +422 -0
  517. aptl/_labdata/src/aptl/core/archival/__init__.py +58 -0
  518. aptl/_labdata/src/aptl/core/archival/context.py +111 -0
  519. aptl/_labdata/src/aptl/core/archival/coordinator.py +230 -0
  520. aptl/_labdata/src/aptl/core/archival/discovery_index.py +432 -0
  521. aptl/_labdata/src/aptl/core/archival/layout.py +62 -0
  522. aptl/_labdata/src/aptl/core/archival/legacy_manifest.py +153 -0
  523. aptl/_labdata/src/aptl/core/archival/run_record.py +144 -0
  524. aptl/_labdata/src/aptl/core/archival/seal.py +233 -0
  525. aptl/_labdata/src/aptl/core/archival/status.py +128 -0
  526. aptl/_labdata/src/aptl/core/archival/verify.py +149 -0
  527. aptl/_labdata/src/aptl/core/assets.py +289 -0
  528. aptl/_labdata/src/aptl/core/attacks.py +91 -0
  529. aptl/_labdata/src/aptl/core/certs.py +394 -0
  530. aptl/_labdata/src/aptl/core/collectors.py +384 -0
  531. aptl/_labdata/src/aptl/core/config.py +461 -0
  532. aptl/_labdata/src/aptl/core/content_seed.py +196 -0
  533. aptl/_labdata/src/aptl/core/continuity.py +651 -0
  534. aptl/_labdata/src/aptl/core/contracts.py +79 -0
  535. aptl/_labdata/src/aptl/core/correlation/__init__.py +10 -0
  536. aptl/_labdata/src/aptl/core/correlation/_assemble.py +362 -0
  537. aptl/_labdata/src/aptl/core/correlation/_extract.py +268 -0
  538. aptl/_labdata/src/aptl/core/correlation/builder.py +131 -0
  539. aptl/_labdata/src/aptl/core/correlation/clock.py +131 -0
  540. aptl/_labdata/src/aptl/core/correlation/identity.py +93 -0
  541. aptl/_labdata/src/aptl/core/correlation/models.py +412 -0
  542. aptl/_labdata/src/aptl/core/correlation/persistence.py +240 -0
  543. aptl/_labdata/src/aptl/core/correlation/rules.py +98 -0
  544. aptl/_labdata/src/aptl/core/credentials.py +464 -0
  545. aptl/_labdata/src/aptl/core/deployment/__init__.py +122 -0
  546. aptl/_labdata/src/aptl/core/deployment/_account_credentials.py +174 -0
  547. aptl/_labdata/src/aptl/core/deployment/_account_provider.py +442 -0
  548. aptl/_labdata/src/aptl/core/deployment/_application_provider_realization.py +91 -0
  549. aptl/_labdata/src/aptl/core/deployment/_authored_service_hosts.py +61 -0
  550. aptl/_labdata/src/aptl/core/deployment/_compose_account_realization.py +479 -0
  551. aptl/_labdata/src/aptl/core/deployment/_compose_account_verification.py +197 -0
  552. aptl/_labdata/src/aptl/core/deployment/_compose_autoremove.py +165 -0
  553. aptl/_labdata/src/aptl/core/deployment/_compose_base_container_realization.py +353 -0
  554. aptl/_labdata/src/aptl/core/deployment/_compose_base_substrate.py +489 -0
  555. aptl/_labdata/src/aptl/core/deployment/_compose_boundary.py +211 -0
  556. aptl/_labdata/src/aptl/core/deployment/_compose_boundary_realization.py +346 -0
  557. aptl/_labdata/src/aptl/core/deployment/_compose_build_dedupe.py +98 -0
  558. aptl/_labdata/src/aptl/core/deployment/_compose_capture_apparatus.py +404 -0
  559. aptl/_labdata/src/aptl/core/deployment/_compose_capture_config.py +196 -0
  560. aptl/_labdata/src/aptl/core/deployment/_compose_content_mounts.py +260 -0
  561. aptl/_labdata/src/aptl/core/deployment/_compose_content_realization.py +211 -0
  562. aptl/_labdata/src/aptl/core/deployment/_compose_direct_network.py +130 -0
  563. aptl/_labdata/src/aptl/core/deployment/_compose_environment.py +316 -0
  564. aptl/_labdata/src/aptl/core/deployment/_compose_generic_base_images.py +190 -0
  565. aptl/_labdata/src/aptl/core/deployment/_compose_image_fetch.py +81 -0
  566. aptl/_labdata/src/aptl/core/deployment/_compose_image_realization.py +491 -0
  567. aptl/_labdata/src/aptl/core/deployment/_compose_lifecycle.py +177 -0
  568. aptl/_labdata/src/aptl/core/deployment/_compose_mixed_realization.py +275 -0
  569. aptl/_labdata/src/aptl/core/deployment/_compose_model_realization.py +289 -0
  570. aptl/_labdata/src/aptl/core/deployment/_compose_network_conflicts.py +124 -0
  571. aptl/_labdata/src/aptl/core/deployment/_compose_network_realization.py +497 -0
  572. aptl/_labdata/src/aptl/core/deployment/_compose_node_generation.py +229 -0
  573. aptl/_labdata/src/aptl/core/deployment/_compose_node_topology.py +165 -0
  574. aptl/_labdata/src/aptl/core/deployment/_compose_observability.py +263 -0
  575. aptl/_labdata/src/aptl/core/deployment/_compose_owned_start.py +345 -0
  576. aptl/_labdata/src/aptl/core/deployment/_compose_owner_labels.py +31 -0
  577. aptl/_labdata/src/aptl/core/deployment/_compose_ownership_override.py +250 -0
  578. aptl/_labdata/src/aptl/core/deployment/_compose_port_readback.py +57 -0
  579. aptl/_labdata/src/aptl/core/deployment/_compose_port_realization.py +166 -0
  580. aptl/_labdata/src/aptl/core/deployment/_compose_post_start.py +172 -0
  581. aptl/_labdata/src/aptl/core/deployment/_compose_project_cleanup.py +127 -0
  582. aptl/_labdata/src/aptl/core/deployment/_compose_project_inventory.py +174 -0
  583. aptl/_labdata/src/aptl/core/deployment/_compose_queries.py +468 -0
  584. aptl/_labdata/src/aptl/core/deployment/_compose_realization.py +463 -0
  585. aptl/_labdata/src/aptl/core/deployment/_compose_realization_networks.py +299 -0
  586. aptl/_labdata/src/aptl/core/deployment/_compose_receipt_capture.py +482 -0
  587. aptl/_labdata/src/aptl/core/deployment/_compose_resource_ownership.py +357 -0
  588. aptl/_labdata/src/aptl/core/deployment/_compose_resource_resolution.py +487 -0
  589. aptl/_labdata/src/aptl/core/deployment/_compose_runtime_config.py +386 -0
  590. aptl/_labdata/src/aptl/core/deployment/_compose_runtime_inventory.py +99 -0
  591. aptl/_labdata/src/aptl/core/deployment/_compose_runtime_materialization.py +102 -0
  592. aptl/_labdata/src/aptl/core/deployment/_compose_runtime_observation.py +164 -0
  593. aptl/_labdata/src/aptl/core/deployment/_compose_runtime_observation_helpers.py +105 -0
  594. aptl/_labdata/src/aptl/core/deployment/_compose_runtime_orchestration.py +360 -0
  595. aptl/_labdata/src/aptl/core/deployment/_compose_seed_attribution.py +202 -0
  596. aptl/_labdata/src/aptl/core/deployment/_compose_seed_execution.py +147 -0
  597. aptl/_labdata/src/aptl/core/deployment/_compose_seed_safety.py +30 -0
  598. aptl/_labdata/src/aptl/core/deployment/_compose_service_health.py +262 -0
  599. aptl/_labdata/src/aptl/core/deployment/_compose_service_index_realization.py +210 -0
  600. aptl/_labdata/src/aptl/core/deployment/_compose_spawn_image_realization.py +352 -0
  601. aptl/_labdata/src/aptl/core/deployment/_compose_stateful_artifact_helpers.py +232 -0
  602. aptl/_labdata/src/aptl/core/deployment/_compose_stateful_constants.py +86 -0
  603. aptl/_labdata/src/aptl/core/deployment/_compose_stateful_graph.py +265 -0
  604. aptl/_labdata/src/aptl/core/deployment/_compose_stateful_model.py +492 -0
  605. aptl/_labdata/src/aptl/core/deployment/_compose_stateful_override.py +47 -0
  606. aptl/_labdata/src/aptl/core/deployment/_compose_stateful_readiness.py +435 -0
  607. aptl/_labdata/src/aptl/core/deployment/_compose_stateful_realization.py +459 -0
  608. aptl/_labdata/src/aptl/core/deployment/_compose_stateful_services.py +49 -0
  609. aptl/_labdata/src/aptl/core/deployment/_compose_stateful_volumes.py +93 -0
  610. aptl/_labdata/src/aptl/core/deployment/_compose_stop.py +181 -0
  611. aptl/_labdata/src/aptl/core/deployment/_compose_substrate_attestation.py +309 -0
  612. aptl/_labdata/src/aptl/core/deployment/_compose_substrate_gate.py +337 -0
  613. aptl/_labdata/src/aptl/core/deployment/_compose_traffic_mirror.py +266 -0
  614. aptl/_labdata/src/aptl/core/deployment/_compose_volume_cleanup.py +80 -0
  615. aptl/_labdata/src/aptl/core/deployment/_cortex_service_credentials.py +102 -0
  616. aptl/_labdata/src/aptl/core/deployment/_declared_listener_readiness.py +125 -0
  617. aptl/_labdata/src/aptl/core/deployment/_docker_endpoint_binding.py +205 -0
  618. aptl/_labdata/src/aptl/core/deployment/_docker_image_identity.py +211 -0
  619. aptl/_labdata/src/aptl/core/deployment/_environment_bindings.py +460 -0
  620. aptl/_labdata/src/aptl/core/deployment/_flag_signing_keys.py +102 -0
  621. aptl/_labdata/src/aptl/core/deployment/_forwarding_agent_realization.py +321 -0
  622. aptl/_labdata/src/aptl/core/deployment/_misp_cache_credential.py +178 -0
  623. aptl/_labdata/src/aptl/core/deployment/_misp_server_tls.py +119 -0
  624. aptl/_labdata/src/aptl/core/deployment/_operator_access.py +411 -0
  625. aptl/_labdata/src/aptl/core/deployment/_operator_access_endpoints.py +90 -0
  626. aptl/_labdata/src/aptl/core/deployment/_operator_access_proof.py +251 -0
  627. aptl/_labdata/src/aptl/core/deployment/_proc_net_listeners.py +232 -0
  628. aptl/_labdata/src/aptl/core/deployment/_realization_primitives.py +222 -0
  629. aptl/_labdata/src/aptl/core/deployment/_runtime_materialization_effective.py +327 -0
  630. aptl/_labdata/src/aptl/core/deployment/_runtime_materialization_qualification.py +392 -0
  631. aptl/_labdata/src/aptl/core/deployment/_runtime_materialization_types.py +50 -0
  632. aptl/_labdata/src/aptl/core/deployment/_service_index_materialization.py +453 -0
  633. aptl/_labdata/src/aptl/core/deployment/_ssh_key_bundle.py +217 -0
  634. aptl/_labdata/src/aptl/core/deployment/_stateful_certificates.py +352 -0
  635. aptl/_labdata/src/aptl/core/deployment/_wazuh_agent_configuration.py +201 -0
  636. aptl/_labdata/src/aptl/core/deployment/_wazuh_agent_realization.py +406 -0
  637. aptl/_labdata/src/aptl/core/deployment/_wazuh_attestation.py +377 -0
  638. aptl/_labdata/src/aptl/core/deployment/_wazuh_identity.py +129 -0
  639. aptl/_labdata/src/aptl/core/deployment/backend.py +441 -0
  640. aptl/_labdata/src/aptl/core/deployment/backend_container_ops.py +183 -0
  641. aptl/_labdata/src/aptl/core/deployment/backend_host_inventory.py +92 -0
  642. aptl/_labdata/src/aptl/core/deployment/boundary.py +395 -0
  643. aptl/_labdata/src/aptl/core/deployment/boundary_compiler.py +311 -0
  644. aptl/_labdata/src/aptl/core/deployment/docker_compose.py +437 -0
  645. aptl/_labdata/src/aptl/core/deployment/errors.py +40 -0
  646. aptl/_labdata/src/aptl/core/deployment/observation.py +86 -0
  647. aptl/_labdata/src/aptl/core/deployment/realization.py +472 -0
  648. aptl/_labdata/src/aptl/core/deployment/runtime_materialization.py +21 -0
  649. aptl/_labdata/src/aptl/core/deployment/ssh_compose.py +143 -0
  650. aptl/_labdata/src/aptl/core/detection.py +248 -0
  651. aptl/_labdata/src/aptl/core/doctor.py +247 -0
  652. aptl/_labdata/src/aptl/core/endpoints.py +350 -0
  653. aptl/_labdata/src/aptl/core/env.py +424 -0
  654. aptl/_labdata/src/aptl/core/ephemeral_containers.py +175 -0
  655. aptl/_labdata/src/aptl/core/evidence/__init__.py +6 -0
  656. aptl/_labdata/src/aptl/core/evidence/_persist.py +373 -0
  657. aptl/_labdata/src/aptl/core/evidence/adapters/__init__.py +6 -0
  658. aptl/_labdata/src/aptl/core/evidence/adapters/builtins.py +129 -0
  659. aptl/_labdata/src/aptl/core/evidence/adapters/sources.py +154 -0
  660. aptl/_labdata/src/aptl/core/evidence/adapters/wiring.py +49 -0
  661. aptl/_labdata/src/aptl/core/evidence/content_store.py +123 -0
  662. aptl/_labdata/src/aptl/core/evidence/coordinator.py +465 -0
  663. aptl/_labdata/src/aptl/core/evidence/outcomes.py +110 -0
  664. aptl/_labdata/src/aptl/core/evidence/protocol.py +119 -0
  665. aptl/_labdata/src/aptl/core/evidence/records.py +172 -0
  666. aptl/_labdata/src/aptl/core/evidence/visibility.py +39 -0
  667. aptl/_labdata/src/aptl/core/evidence_bundle/__init__.py +31 -0
  668. aptl/_labdata/src/aptl/core/evidence_bundle/_collect.py +430 -0
  669. aptl/_labdata/src/aptl/core/evidence_bundle/_io.py +78 -0
  670. aptl/_labdata/src/aptl/core/evidence_bundle/archive.py +247 -0
  671. aptl/_labdata/src/aptl/core/evidence_bundle/build.py +259 -0
  672. aptl/_labdata/src/aptl/core/evidence_bundle/closure.py +148 -0
  673. aptl/_labdata/src/aptl/core/evidence_bundle/codes.py +43 -0
  674. aptl/_labdata/src/aptl/core/evidence_bundle/envelope.py +158 -0
  675. aptl/_labdata/src/aptl/core/evidence_bundle/errors.py +24 -0
  676. aptl/_labdata/src/aptl/core/evidence_bundle/inventory.py +175 -0
  677. aptl/_labdata/src/aptl/core/evidence_bundle/limits.py +48 -0
  678. aptl/_labdata/src/aptl/core/evidence_bundle/models.py +92 -0
  679. aptl/_labdata/src/aptl/core/evidence_bundle/projections/__init__.py +31 -0
  680. aptl/_labdata/src/aptl/core/evidence_bundle/projections/jsonl.py +109 -0
  681. aptl/_labdata/src/aptl/core/evidence_bundle/projections/ocsf.py +105 -0
  682. aptl/_labdata/src/aptl/core/evidence_bundle/projections/parquet.py +267 -0
  683. aptl/_labdata/src/aptl/core/evidence_bundle/projections/registry.py +120 -0
  684. aptl/_labdata/src/aptl/core/evidence_bundle/schemas.py +111 -0
  685. aptl/_labdata/src/aptl/core/evidence_bundle/verify.py +366 -0
  686. aptl/_labdata/src/aptl/core/execution/__init__.py +31 -0
  687. aptl/_labdata/src/aptl/core/execution/apparatus.py +173 -0
  688. aptl/_labdata/src/aptl/core/execution/assembly.py +417 -0
  689. aptl/_labdata/src/aptl/core/execution/bridges.py +177 -0
  690. aptl/_labdata/src/aptl/core/execution/executor.py +272 -0
  691. aptl/_labdata/src/aptl/core/execution_boundary.py +454 -0
  692. aptl/_labdata/src/aptl/core/experiment/__init__.py +10 -0
  693. aptl/_labdata/src/aptl/core/experiment/_capture_matching.py +89 -0
  694. aptl/_labdata/src/aptl/core/experiment/admission.py +412 -0
  695. aptl/_labdata/src/aptl/core/experiment/admission_artifacts.py +273 -0
  696. aptl/_labdata/src/aptl/core/experiment/admission_steps.py +375 -0
  697. aptl/_labdata/src/aptl/core/experiment/apparatus.py +452 -0
  698. aptl/_labdata/src/aptl/core/experiment/bindings.py +434 -0
  699. aptl/_labdata/src/aptl/core/experiment/capture_mapping.py +122 -0
  700. aptl/_labdata/src/aptl/core/experiment/capture_plan.py +207 -0
  701. aptl/_labdata/src/aptl/core/experiment/capture_registry.py +462 -0
  702. aptl/_labdata/src/aptl/core/experiment/controller.py +142 -0
  703. aptl/_labdata/src/aptl/core/experiment/errors.py +227 -0
  704. aptl/_labdata/src/aptl/core/experiment/policy.py +182 -0
  705. aptl/_labdata/src/aptl/core/experiment/resolver.py +367 -0
  706. aptl/_labdata/src/aptl/core/experiment/spec_loading.py +311 -0
  707. aptl/_labdata/src/aptl/core/experiment/trial_plan.py +483 -0
  708. aptl/_labdata/src/aptl/core/experiment/trial_plan_models.py +111 -0
  709. aptl/_labdata/src/aptl/core/exporter.py +200 -0
  710. aptl/_labdata/src/aptl/core/flags.py +176 -0
  711. aptl/_labdata/src/aptl/core/health.py +139 -0
  712. aptl/_labdata/src/aptl/core/host_keys.py +242 -0
  713. aptl/_labdata/src/aptl/core/host_ports.py +422 -0
  714. aptl/_labdata/src/aptl/core/hostenv.py +141 -0
  715. aptl/_labdata/src/aptl/core/kill.py +497 -0
  716. aptl/_labdata/src/aptl/core/lab.py +4888 -0
  717. aptl/_labdata/src/aptl/core/lab_types.py +221 -0
  718. aptl/_labdata/src/aptl/core/lifecycle_cleanup.py +248 -0
  719. aptl/_labdata/src/aptl/core/lifecycle_enforce.py +346 -0
  720. aptl/_labdata/src/aptl/core/lifecycle_guard.py +454 -0
  721. aptl/_labdata/src/aptl/core/lifecycle_policy.py +257 -0
  722. aptl/_labdata/src/aptl/core/mcp_ingress.py +56 -0
  723. aptl/_labdata/src/aptl/core/objectives.py +161 -0
  724. aptl/_labdata/src/aptl/core/operator_group_state.py +100 -0
  725. aptl/_labdata/src/aptl/core/provenance/__init__.py +27 -0
  726. aptl/_labdata/src/aptl/core/provenance/coordinator.py +370 -0
  727. aptl/_labdata/src/aptl/core/provenance/identity.py +150 -0
  728. aptl/_labdata/src/aptl/core/provenance/outcomes.py +172 -0
  729. aptl/_labdata/src/aptl/core/provenance/protocol.py +97 -0
  730. aptl/_labdata/src/aptl/core/provenance/providers/__init__.py +13 -0
  731. aptl/_labdata/src/aptl/core/provenance/providers/_degraded.py +93 -0
  732. aptl/_labdata/src/aptl/core/provenance/providers/apparatus.py +111 -0
  733. aptl/_labdata/src/aptl/core/provenance/providers/artifacts.py +156 -0
  734. aptl/_labdata/src/aptl/core/provenance/providers/config_identity.py +173 -0
  735. aptl/_labdata/src/aptl/core/provenance/providers/detection.py +284 -0
  736. aptl/_labdata/src/aptl/core/provenance/providers/experiment.py +166 -0
  737. aptl/_labdata/src/aptl/core/provenance/providers/participant.py +103 -0
  738. aptl/_labdata/src/aptl/core/provenance/providers/runtime_facts.py +269 -0
  739. aptl/_labdata/src/aptl/core/provenance/record.py +133 -0
  740. aptl/_labdata/src/aptl/core/provenance/registrations.py +222 -0
  741. aptl/_labdata/src/aptl/core/provenance/registry.py +219 -0
  742. aptl/_labdata/src/aptl/core/runstore.py +487 -0
  743. aptl/_labdata/src/aptl/core/runstore_internals.py +234 -0
  744. aptl/_labdata/src/aptl/core/runtime/__init__.py +13 -0
  745. aptl/_labdata/src/aptl/core/runtime/workflow_engine.py +436 -0
  746. aptl/_labdata/src/aptl/core/scenario_bundle.py +317 -0
  747. aptl/_labdata/src/aptl/core/scenario_catalog.py +285 -0
  748. aptl/_labdata/src/aptl/core/scenarios.py +39 -0
  749. aptl/_labdata/src/aptl/core/seed_spec.py +59 -0
  750. aptl/_labdata/src/aptl/core/services.py +320 -0
  751. aptl/_labdata/src/aptl/core/session.py +408 -0
  752. aptl/_labdata/src/aptl/core/snapshot.py +469 -0
  753. aptl/_labdata/src/aptl/core/snapshot_models.py +127 -0
  754. aptl/_labdata/src/aptl/core/soc_ca.py +365 -0
  755. aptl/_labdata/src/aptl/core/ssh.py +362 -0
  756. aptl/_labdata/src/aptl/core/startup_reset_state.py +407 -0
  757. aptl/_labdata/src/aptl/core/suricata_seed.py +377 -0
  758. aptl/_labdata/src/aptl/core/sysreqs.py +266 -0
  759. aptl/_labdata/src/aptl/core/telemetry.py +277 -0
  760. aptl/_labdata/src/aptl/core/telemetry_export.py +87 -0
  761. aptl/_labdata/src/aptl/runtime_authority.py +123 -0
  762. aptl/_labdata/src/aptl/services/__init__.py +1 -0
  763. aptl/_labdata/src/aptl/services/misp_suricata_sync/__init__.py +10 -0
  764. aptl/_labdata/src/aptl/services/misp_suricata_sync/config.py +174 -0
  765. aptl/_labdata/src/aptl/services/misp_suricata_sync/main.py +191 -0
  766. aptl/_labdata/src/aptl/services/misp_suricata_sync/misp_client.py +108 -0
  767. aptl/_labdata/src/aptl/services/misp_suricata_sync/models.py +48 -0
  768. aptl/_labdata/src/aptl/services/misp_suricata_sync/rule_writer.py +46 -0
  769. aptl/_labdata/src/aptl/services/misp_suricata_sync/suricata_reloader.py +95 -0
  770. aptl/_labdata/src/aptl/services/misp_suricata_sync/translator.py +357 -0
  771. aptl/_labdata/src/aptl/utils/__init__.py +0 -0
  772. aptl/_labdata/src/aptl/utils/_pathsafe_core.py +231 -0
  773. aptl/_labdata/src/aptl/utils/_pathsafe_read.py +188 -0
  774. aptl/_labdata/src/aptl/utils/curl_safe.py +286 -0
  775. aptl/_labdata/src/aptl/utils/deterministic_archive.py +82 -0
  776. aptl/_labdata/src/aptl/utils/logging.py +44 -0
  777. aptl/_labdata/src/aptl/utils/mcp_packaging.py +262 -0
  778. aptl/_labdata/src/aptl/utils/pathsafe.py +409 -0
  779. aptl/_labdata/src/aptl/utils/placeholders.py +32 -0
  780. aptl/_labdata/src/aptl/utils/redaction.py +1094 -0
  781. aptl/_labdata/src/aptl/utils/shell.py +134 -0
  782. aptl/_labdata/src/aptl/utils/strict_json.py +47 -0
  783. aptl/_labdata/src/aptl/validation/__init__.py +1 -0
  784. aptl/_labdata/src/aptl/validation/_account_parity.py +126 -0
  785. aptl/_labdata/src/aptl/validation/_gate_checks.py +430 -0
  786. aptl/_labdata/src/aptl/validation/_gate_no_start_backend.py +295 -0
  787. aptl/_labdata/src/aptl/validation/_gate_raes_cli.py +100 -0
  788. aptl/_labdata/src/aptl/validation/_live_gate_alerts.py +25 -0
  789. aptl/_labdata/src/aptl/validation/_live_gate_checks.py +414 -0
  790. aptl/_labdata/src/aptl/validation/_live_gate_models.py +198 -0
  791. aptl/_labdata/src/aptl/validation/_live_gate_operations.py +260 -0
  792. aptl/_labdata/src/aptl/validation/_live_gate_probes.py +437 -0
  793. aptl/_labdata/src/aptl/validation/_live_gate_readiness.py +192 -0
  794. aptl/_labdata/src/aptl/validation/_live_gate_telemetry.py +110 -0
  795. aptl/_labdata/src/aptl/validation/_live_gate_variation.py +92 -0
  796. aptl/_labdata/src/aptl/validation/_scenario_verification_contract.py +323 -0
  797. aptl/_labdata/src/aptl/validation/curated_live_proof.py +325 -0
  798. aptl/_labdata/src/aptl/validation/mcp_protocol.py +271 -0
  799. aptl/_labdata/src/aptl/validation/participant_live_proof.py +452 -0
  800. aptl/_labdata/src/aptl/validation/participant_mcp_smoke.py +223 -0
  801. aptl/_labdata/src/aptl/validation/participant_profile.py +369 -0
  802. aptl/_labdata/src/aptl/validation/participant_profile_models.py +366 -0
  803. aptl/_labdata/src/aptl/validation/participant_proof_redaction.py +107 -0
  804. aptl/_labdata/src/aptl/validation/participant_qualification.py +320 -0
  805. aptl/_labdata/src/aptl/validation/participant_qualification_evidence.py +333 -0
  806. aptl/_labdata/src/aptl/validation/range_snapshot_summary.py +51 -0
  807. aptl/_labdata/src/aptl/validation/realization_declaration_gate.py +112 -0
  808. aptl/_labdata/src/aptl/validation/research_scenario_catalog.py +45 -0
  809. aptl/_labdata/src/aptl/validation/scenario_verification.py +343 -0
  810. aptl/_labdata/src/aptl/validation/scenario_verification_discovery.py +395 -0
  811. aptl/_labdata/src/aptl/validation/techvault_gate.py +152 -0
  812. aptl/_labdata/src/aptl/validation/techvault_live_gate.py +475 -0
  813. aptl/_labdata/src/aptl/workbench/__init__.py +57 -0
  814. aptl/_labdata/src/aptl/workbench/_pipe_exchange.py +186 -0
  815. aptl/_labdata/src/aptl/workbench/access.py +154 -0
  816. aptl/_labdata/src/aptl/workbench/access_clients.py +183 -0
  817. aptl/_labdata/src/aptl/workbench/agent.py +493 -0
  818. aptl/_labdata/src/aptl/workbench/app.py +326 -0
  819. aptl/_labdata/src/aptl/workbench/bootstrap.py +299 -0
  820. aptl/_labdata/src/aptl/workbench/browser_gateway.py +372 -0
  821. aptl/_labdata/src/aptl/workbench/browser_mcp.py +190 -0
  822. aptl/_labdata/src/aptl/workbench/client_files.py +163 -0
  823. aptl/_labdata/src/aptl/workbench/codex_agent.py +313 -0
  824. aptl/_labdata/src/aptl/workbench/credentials.py +81 -0
  825. aptl/_labdata/src/aptl/workbench/decision_schema.py +63 -0
  826. aptl/_labdata/src/aptl/workbench/dispatch.py +224 -0
  827. aptl/_labdata/src/aptl/workbench/guest_binding.py +464 -0
  828. aptl/_labdata/src/aptl/workbench/mcp_results.py +76 -0
  829. aptl/_labdata/src/aptl/workbench/participant_source_binding.py +156 -0
  830. aptl/_labdata/src/aptl/workbench/preparation.py +262 -0
  831. aptl/_labdata/src/aptl/workbench/process.py +385 -0
  832. aptl/_labdata/src/aptl/workbench/profiles.py +334 -0
  833. aptl/_labdata/src/aptl/workbench/relay.py +295 -0
  834. aptl/_labdata/src/aptl/workbench/runtime.py +363 -0
  835. aptl/_labdata/src/aptl_techvault/README.md +102 -0
  836. aptl/_labdata/src/aptl_techvault/__init__.py +30 -0
  837. aptl/_labdata/src/aptl_techvault/build_cache.py +113 -0
  838. aptl/_labdata/src/aptl_techvault/capture.py +123 -0
  839. aptl/_labdata/src/aptl_techvault/capture_registrations.py +478 -0
  840. aptl/_labdata/src/aptl_techvault/database.py +312 -0
  841. aptl/_labdata/src/aptl_techvault/database_access.py +287 -0
  842. aptl/_labdata/src/aptl_techvault/database_support.py +99 -0
  843. aptl/_labdata/src/aptl_techvault/evidence/__init__.py +1 -0
  844. aptl/_labdata/src/aptl_techvault/evidence/_techvault_native_cortex.py +183 -0
  845. aptl/_labdata/src/aptl_techvault/evidence/proposition_truth.py +211 -0
  846. aptl/_labdata/src/aptl_techvault/evidence/techvault.py +441 -0
  847. aptl/_labdata/src/aptl_techvault/evidence/techvault_enrollment_baseline.py +99 -0
  848. aptl/_labdata/src/aptl_techvault/evidence/techvault_manager_alerts.py +98 -0
  849. aptl/_labdata/src/aptl_techvault/evidence/techvault_misp_readiness.py +179 -0
  850. aptl/_labdata/src/aptl_techvault/evidence/techvault_native.py +457 -0
  851. aptl/_labdata/src/aptl_techvault/evidence/techvault_native_readiness.py +465 -0
  852. aptl/_labdata/src/aptl_techvault/evidence/techvault_native_support.py +209 -0
  853. aptl/_labdata/src/aptl_techvault/evidence/techvault_readiness.py +164 -0
  854. aptl/_labdata/src/aptl_techvault/evidence/techvault_readiness_probes.py +446 -0
  855. aptl/_labdata/src/aptl_techvault/evidence/techvault_telemetry_stimulus.py +215 -0
  856. aptl/_labdata/src/aptl_techvault/evidence/techvault_transcript.py +384 -0
  857. aptl/_labdata/src/aptl_techvault/evidence/techvault_wazuh_agent_readiness.py +180 -0
  858. aptl/_labdata/src/aptl_techvault/evidence/transcript_parsing.py +303 -0
  859. aptl/_labdata/src/aptl_techvault/log_source_support.py +407 -0
  860. aptl/_labdata/src/aptl_techvault/log_sources.py +445 -0
  861. aptl/_labdata/src/aptl_techvault/participant_smoke.py +202 -0
  862. aptl/_labdata/src/aptl_techvault/planning_compatibility.py +68 -0
  863. aptl/_labdata/src/aptl_techvault/redis_acl_observation.py +149 -0
  864. aptl/_labdata/src/aptl_techvault/runtime_parameters.py +77 -0
  865. aptl/_labdata/src/aptl_techvault/serving.py +89 -0
  866. aptl/_labdata/src/aptl_techvault/startup.py +493 -0
  867. aptl/_labdata/src/aptl_techvault/study.py +105 -0
  868. aptl/_labdata/src/aptl_techvault/study_capture_registrations.py +62 -0
  869. aptl/_labdata/src/aptl_techvault/verification.py +255 -0
  870. aptl/_labdata/src/aptl_techvault/wazuh_credentials.py +62 -0
  871. aptl/_labdata/uv.lock +2928 -0
  872. aptl/_labdata/web/.dockerignore +6 -0
  873. aptl/_labdata/web/Caddyfile +33 -0
  874. aptl/_labdata/web/Dockerfile +39 -0
  875. aptl/_labdata/web/Dockerfile.api +57 -0
  876. aptl/_labdata/web/caddy-build/go.mod +171 -0
  877. aptl/_labdata/web/caddy-build/go.sum +587 -0
  878. aptl/_labdata/web/caddy-build/main.go +12 -0
  879. aptl/_labdata/web/package-lock.json +3749 -0
  880. aptl/_labdata/web/package.json +41 -0
  881. aptl/_labdata/web/src/app.css +225 -0
  882. aptl/_labdata/web/src/app.html +16 -0
  883. aptl/_labdata/web/src/lib/api.ts +182 -0
  884. aptl/_labdata/web/src/lib/bff.ts +138 -0
  885. aptl/_labdata/web/src/lib/components/ConfigSummaryList.svelte +84 -0
  886. aptl/_labdata/web/src/lib/components/ContainerCard.svelte +96 -0
  887. aptl/_labdata/web/src/lib/components/ContainerGrid.svelte +22 -0
  888. aptl/_labdata/web/src/lib/components/KillConfirmDialog.svelte +70 -0
  889. aptl/_labdata/web/src/lib/components/LabStartNotice.svelte +111 -0
  890. aptl/_labdata/web/src/lib/components/LabStatusBadge.svelte +20 -0
  891. aptl/_labdata/web/src/lib/components/LocalUseNoticeDialog.svelte +45 -0
  892. aptl/_labdata/web/src/lib/components/NavBar.svelte +32 -0
  893. aptl/_labdata/web/src/lib/components/PrivacyDetailsPanel.svelte +61 -0
  894. aptl/_labdata/web/src/lib/components/ScenarioCard.svelte +72 -0
  895. aptl/_labdata/web/src/lib/components/SettingsDialog.svelte +169 -0
  896. aptl/_labdata/web/src/lib/components/Terminal.svelte +217 -0
  897. aptl/_labdata/web/src/lib/components/kit/Badge.svelte +37 -0
  898. aptl/_labdata/web/src/lib/components/kit/Button.svelte +57 -0
  899. aptl/_labdata/web/src/lib/components/kit/Dialog.svelte +96 -0
  900. aptl/_labdata/web/src/lib/components/kit/Field.svelte +60 -0
  901. aptl/_labdata/web/src/lib/components/kit/Menu.svelte +153 -0
  902. aptl/_labdata/web/src/lib/components/kit/Select.svelte +62 -0
  903. aptl/_labdata/web/src/lib/components/kit/StatusBadge.svelte +17 -0
  904. aptl/_labdata/web/src/lib/components/kit/Table.svelte +48 -0
  905. aptl/_labdata/web/src/lib/components/kit/TextInput.svelte +56 -0
  906. aptl/_labdata/web/src/lib/components/kit/field-context.ts +16 -0
  907. aptl/_labdata/web/src/lib/components/kit/focus-trap.ts +70 -0
  908. aptl/_labdata/web/src/lib/components/kit/id.ts +13 -0
  909. aptl/_labdata/web/src/lib/components/kit/index.ts +28 -0
  910. aptl/_labdata/web/src/lib/components/kit/tone.ts +64 -0
  911. aptl/_labdata/web/src/lib/components/workbench/ContainerStatusBlock.svelte +35 -0
  912. aptl/_labdata/web/src/lib/components/workbench/NarrativeBlock.svelte +15 -0
  913. aptl/_labdata/web/src/lib/components/workbench/ObjectiveBlock.svelte +33 -0
  914. aptl/_labdata/web/src/lib/components/workbench/SectionDivider.svelte +13 -0
  915. aptl/_labdata/web/src/lib/components/workbench/SiemQueryBlock.svelte +31 -0
  916. aptl/_labdata/web/src/lib/components/workbench/StepBlock.svelte +32 -0
  917. aptl/_labdata/web/src/lib/components/workbench/TerminalBlock.svelte +41 -0
  918. aptl/_labdata/web/src/lib/components/workbench/WorkbenchStatusBar.svelte +92 -0
  919. aptl/_labdata/web/src/lib/container-state.ts +6 -0
  920. aptl/_labdata/web/src/lib/markdown.ts +12 -0
  921. aptl/_labdata/web/src/lib/session.ts +75 -0
  922. aptl/_labdata/web/src/lib/stores/lab.ts +91 -0
  923. aptl/_labdata/web/src/lib/stores/preferences.ts +259 -0
  924. aptl/_labdata/web/src/lib/stores/ui.ts +60 -0
  925. aptl/_labdata/web/src/lib/time.ts +44 -0
  926. aptl/_labdata/web/src/lib/types.ts +221 -0
  927. aptl/_labdata/web/src/routes/+error.svelte +16 -0
  928. aptl/_labdata/web/src/routes/+layout.svelte +53 -0
  929. aptl/_labdata/web/src/routes/+layout.ts +16 -0
  930. aptl/_labdata/web/src/routes/+page.svelte +245 -0
  931. aptl/_labdata/web/src/routes/+page.ts +24 -0
  932. aptl/_labdata/web/src/routes/config/+page.svelte +26 -0
  933. aptl/_labdata/web/src/routes/config/+page.ts +21 -0
  934. aptl/_labdata/web/src/routes/scenarios/[id]/+page.svelte +52 -0
  935. aptl/_labdata/web/src/routes/scenarios/[id]/+page.ts +27 -0
  936. aptl/_labdata/web/src/routes/terminal/[container]/+page.svelte +95 -0
  937. aptl/_labdata/web/svelte.config.js +36 -0
  938. aptl/_labdata/web/tests/components/ConfigSummaryList.test.ts +76 -0
  939. aptl/_labdata/web/tests/components/KillConfirmDialog.test.ts +81 -0
  940. aptl/_labdata/web/tests/components/LabStartNotice.test.ts +147 -0
  941. aptl/_labdata/web/tests/components/LabStatusBadge.test.ts +17 -0
  942. aptl/_labdata/web/tests/components/LocalUseNoticeDialog.test.ts +55 -0
  943. aptl/_labdata/web/tests/components/NavBar.test.ts +31 -0
  944. aptl/_labdata/web/tests/components/PrivacyDetailsPanel.test.ts +40 -0
  945. aptl/_labdata/web/tests/components/ScenarioCard.test.ts +76 -0
  946. aptl/_labdata/web/tests/components/SettingsDialog.test.ts +60 -0
  947. aptl/_labdata/web/tests/components/Terminal.test.ts +231 -0
  948. aptl/_labdata/web/tests/components/kit/Badge.test.ts +42 -0
  949. aptl/_labdata/web/tests/components/kit/Button.test.ts +51 -0
  950. aptl/_labdata/web/tests/components/kit/Dialog.test.ts +64 -0
  951. aptl/_labdata/web/tests/components/kit/Field.test.ts +37 -0
  952. aptl/_labdata/web/tests/components/kit/Menu.test.ts +74 -0
  953. aptl/_labdata/web/tests/components/kit/Select.test.ts +35 -0
  954. aptl/_labdata/web/tests/components/kit/StatusBadge.test.ts +17 -0
  955. aptl/_labdata/web/tests/components/kit/Table.test.ts +28 -0
  956. aptl/_labdata/web/tests/components/kit/TextInput.test.ts +28 -0
  957. aptl/_labdata/web/tests/components/kit/fixtures/DialogHarness.svelte +22 -0
  958. aptl/_labdata/web/tests/components/kit/fixtures/FieldHarness.svelte +17 -0
  959. aptl/_labdata/web/tests/components/kit/fixtures/SelectHarness.svelte +23 -0
  960. aptl/_labdata/web/tests/components/kit/fixtures/TableHarness.svelte +20 -0
  961. aptl/_labdata/web/tests/components/kit/fixtures/TextInputHarness.svelte +16 -0
  962. aptl/_labdata/web/tests/components/kit/focus-trap.test.ts +78 -0
  963. aptl/_labdata/web/tests/components/kit/helpers.ts +15 -0
  964. aptl/_labdata/web/tests/components/kit/tone.test.ts +48 -0
  965. aptl/_labdata/web/tests/components/workbench/blocks.test.ts +99 -0
  966. aptl/_labdata/web/tests/lib/api.test.ts +331 -0
  967. aptl/_labdata/web/tests/lib/bff.test.ts +185 -0
  968. aptl/_labdata/web/tests/lib/container-state.test.ts +23 -0
  969. aptl/_labdata/web/tests/lib/markdown.test.ts +48 -0
  970. aptl/_labdata/web/tests/lib/preferences.test.ts +158 -0
  971. aptl/_labdata/web/tests/lib/routes.test.ts +130 -0
  972. aptl/_labdata/web/tests/lib/session.test.ts +79 -0
  973. aptl/_labdata/web/tests/lib/stores.test.ts +220 -0
  974. aptl/_labdata/web/tests/lib/time.test.ts +30 -0
  975. aptl/_labdata/web/tests/lib/ui.test.ts +84 -0
  976. aptl/_labdata/web/tests/routes/config-page.test.ts +64 -0
  977. aptl/_labdata/web/tests/routes/fixtures/LayoutHarness.svelte +7 -0
  978. aptl/_labdata/web/tests/routes/layout.test.ts +32 -0
  979. aptl/_labdata/web/tests/routes/page.test.ts +193 -0
  980. aptl/_labdata/web/tests/routes/scenario-workbench.test.ts +139 -0
  981. aptl/_labdata/web/tests/routes/terminal-page.test.ts +97 -0
  982. aptl/_labdata/web/tests/setup.ts +1 -0
  983. aptl/_labdata/web/tsconfig.json +14 -0
  984. aptl/_labdata/web/vite.config.ts +20 -0
  985. aptl/_labdata/web/vitest.config.ts +22 -0
  986. aptl/api/__init__.py +1 -0
  987. aptl/api/deps.py +243 -0
  988. aptl/api/main.py +177 -0
  989. aptl/api/middleware/__init__.py +1 -0
  990. aptl/api/middleware/bff.py +188 -0
  991. aptl/api/routers/__init__.py +1 -0
  992. aptl/api/routers/config.py +62 -0
  993. aptl/api/routers/kill.py +50 -0
  994. aptl/api/routers/lab.py +203 -0
  995. aptl/api/routers/scenarios.py +96 -0
  996. aptl/api/routers/terminal.py +357 -0
  997. aptl/api/scenario_projection.py +277 -0
  998. aptl/api/schemas.py +338 -0
  999. aptl/api/session.py +166 -0
  1000. aptl/appliance/__init__.py +1 -0
  1001. aptl/appliance/access_service.py +363 -0
  1002. aptl/appliance/access_service_support.py +208 -0
  1003. aptl/appliance/download.py +264 -0
  1004. aptl/appliance/errors.py +5 -0
  1005. aptl/appliance/guest_observation.py +631 -0
  1006. aptl/appliance/guest_services.py +27 -0
  1007. aptl/appliance/guest_surfaces.py +142 -0
  1008. aptl/appliance/input_images.py +185 -0
  1009. aptl/appliance/input_profile.py +244 -0
  1010. aptl/appliance/loopback_proxy.py +123 -0
  1011. aptl/appliance/policy.py +55 -0
  1012. aptl/appliance/seat/__init__.py +45 -0
  1013. aptl/appliance/seat/_device.py +45 -0
  1014. aptl/appliance/seat/access.py +445 -0
  1015. aptl/appliance/seat/access_clients.py +87 -0
  1016. aptl/appliance/seat/access_state.py +104 -0
  1017. aptl/appliance/seat/allocation.py +359 -0
  1018. aptl/appliance/seat/aptl-seat.pub +4 -0
  1019. aptl/appliance/seat/context.py +71 -0
  1020. aptl/appliance/seat/errors.py +12 -0
  1021. aptl/appliance/seat/exposure.py +136 -0
  1022. aptl/appliance/seat/image.py +492 -0
  1023. aptl/appliance/seat/image_config.py +99 -0
  1024. aptl/appliance/seat/image_disk_cache.py +149 -0
  1025. aptl/appliance/seat/image_selection.py +466 -0
  1026. aptl/appliance/seat/image_trust.py +190 -0
  1027. aptl/appliance/seat/image_update.py +96 -0
  1028. aptl/appliance/seat/kiosk.py +144 -0
  1029. aptl/appliance/seat/launch_descriptor.py +104 -0
  1030. aptl/appliance/seat/lifecycle.py +1272 -0
  1031. aptl/appliance/seat/locking.py +129 -0
  1032. aptl/appliance/seat/maintenance.py +66 -0
  1033. aptl/appliance/seat/models.py +81 -0
  1034. aptl/appliance/seat/namespace.py +48 -0
  1035. aptl/appliance/seat/observation.py +403 -0
  1036. aptl/appliance/seat/overlay.py +172 -0
  1037. aptl/appliance/seat/overlay_cleanup.py +38 -0
  1038. aptl/appliance/seat/overlay_identity.py +130 -0
  1039. aptl/appliance/seat/paths.py +48 -0
  1040. aptl/appliance/seat/persistence.py +96 -0
  1041. aptl/appliance/seat/prereqs.py +289 -0
  1042. aptl/appliance/seat/private_vm.py +156 -0
  1043. aptl/appliance/seat/privileges.py +122 -0
  1044. aptl/appliance/seat/readiness.py +247 -0
  1045. aptl/appliance/seat/retained_image.py +83 -0
  1046. aptl/appliance/seat/vm.py +465 -0
  1047. aptl/appliance/versioning.py +35 -0
  1048. aptl/backends/__init__.py +6 -0
  1049. aptl/backends/_compose_profile_index.py +160 -0
  1050. aptl/backends/_raes_admission_helpers.py +86 -0
  1051. aptl/backends/_raes_apply_helpers.py +77 -0
  1052. aptl/backends/_raes_apply_reporting.py +172 -0
  1053. aptl/backends/_raes_artifact_delivery_observation.py +332 -0
  1054. aptl/backends/_raes_backend_generated_artifacts.py +204 -0
  1055. aptl/backends/_raes_backend_implementation_catalog.py +449 -0
  1056. aptl/backends/_raes_backend_implementation_images.py +17 -0
  1057. aptl/backends/_raes_backend_implementation_profiles.py +259 -0
  1058. aptl/backends/_raes_backend_implementation_types.py +96 -0
  1059. aptl/backends/_raes_conformance_probe.py +146 -0
  1060. aptl/backends/_raes_content_spec.py +50 -0
  1061. aptl/backends/_raes_dataset_content.py +82 -0
  1062. aptl/backends/_raes_docker_materializer_observations.py +182 -0
  1063. aptl/backends/_raes_docker_observation_values.py +53 -0
  1064. aptl/backends/_raes_evaluator_engine.py +333 -0
  1065. aptl/backends/_raes_evaluator_progress.py +170 -0
  1066. aptl/backends/_raes_evidence_refresh_policy.py +46 -0
  1067. aptl/backends/_raes_guest_os_observation.py +63 -0
  1068. aptl/backends/_raes_guest_package_observation.py +174 -0
  1069. aptl/backends/_raes_guest_process_limits.py +125 -0
  1070. aptl/backends/_raes_image_policy.py +154 -0
  1071. aptl/backends/_raes_manifest_resources.py +26 -0
  1072. aptl/backends/_raes_native_evidence_acquisition.py +181 -0
  1073. aptl/backends/_raes_network_observation.py +41 -0
  1074. aptl/backends/_raes_node_realization.py +278 -0
  1075. aptl/backends/_raes_observation_helpers.py +478 -0
  1076. aptl/backends/_raes_observation_index.py +161 -0
  1077. aptl/backends/_raes_observation_ordering.py +198 -0
  1078. aptl/backends/_raes_operational_observation.py +229 -0
  1079. aptl/backends/_raes_participant_crossing.py +215 -0
  1080. aptl/backends/_raes_participant_evidence.py +203 -0
  1081. aptl/backends/_raes_participant_execution.py +485 -0
  1082. aptl/backends/_raes_participant_manifest.py +82 -0
  1083. aptl/backends/_raes_participant_models.py +73 -0
  1084. aptl/backends/_raes_participant_planning.py +383 -0
  1085. aptl/backends/_raes_participant_snapshot.py +37 -0
  1086. aptl/backends/_raes_participant_transport.py +352 -0
  1087. aptl/backends/_raes_proposition_truth.py +395 -0
  1088. aptl/backends/_raes_provisioner_start.py +296 -0
  1089. aptl/backends/_raes_provisioning_helpers.py +135 -0
  1090. aptl/backends/_raes_realization_diagnostics.py +92 -0
  1091. aptl/backends/_raes_runtime_container_observation.py +250 -0
  1092. aptl/backends/_raes_runtime_environment_observation.py +93 -0
  1093. aptl/backends/_raes_runtime_materialization_admission.py +168 -0
  1094. aptl/backends/_raes_runtime_network_observation.py +154 -0
  1095. aptl/backends/_raes_runtime_target_options.py +31 -0
  1096. aptl/backends/_raes_scenario_queries.py +187 -0
  1097. aptl/backends/_raes_scenario_resolution.py +76 -0
  1098. aptl/backends/_raes_service_index_placement.py +84 -0
  1099. aptl/backends/_raes_shuffle_implementation_catalog.py +103 -0
  1100. aptl/backends/_raes_start_failure.py +49 -0
  1101. aptl/backends/_raes_stateful_observation.py +264 -0
  1102. aptl/backends/_raes_stateful_values.py +39 -0
  1103. aptl/backends/_raes_transcript_qualification.py +71 -0
  1104. aptl/backends/_runtime_concern_disclosure.py +60 -0
  1105. aptl/backends/_runtime_concern_excess.py +248 -0
  1106. aptl/backends/_runtime_mount_observation.py +113 -0
  1107. aptl/backends/_scenario_environment.py +78 -0
  1108. aptl/backends/_scenario_startup_runtime.py +172 -0
  1109. aptl/backends/identity.py +28 -0
  1110. aptl/backends/pack_interaction.py +110 -0
  1111. aptl/backends/pack_interaction_discovery.py +336 -0
  1112. aptl/backends/raes.py +495 -0
  1113. aptl/backends/raes_account_realization.py +134 -0
  1114. aptl/backends/raes_acl_realization.py +228 -0
  1115. aptl/backends/raes_artifact_availability.py +495 -0
  1116. aptl/backends/raes_artifact_mechanisms.py +460 -0
  1117. aptl/backends/raes_artifact_satisfaction.py +425 -0
  1118. aptl/backends/raes_backend_implementation.py +410 -0
  1119. aptl/backends/raes_base_substrate.py +409 -0
  1120. aptl/backends/raes_content_realization.py +480 -0
  1121. aptl/backends/raes_content_satisfaction.py +196 -0
  1122. aptl/backends/raes_content_source_policy.py +74 -0
  1123. aptl/backends/raes_dependency_closure.py +374 -0
  1124. aptl/backends/raes_diagnostics.py +314 -0
  1125. aptl/backends/raes_docker_materializer.py +474 -0
  1126. aptl/backends/raes_evaluator.py +488 -0
  1127. aptl/backends/raes_evidence.py +175 -0
  1128. aptl/backends/raes_evidence_acquisition.py +466 -0
  1129. aptl/backends/raes_execution_helpers.py +46 -0
  1130. aptl/backends/raes_image_realization.py +460 -0
  1131. aptl/backends/raes_literal_content_realization.py +267 -0
  1132. aptl/backends/raes_manifest.py +493 -0
  1133. aptl/backends/raes_materializer.py +466 -0
  1134. aptl/backends/raes_materializer_engine.py +415 -0
  1135. aptl/backends/raes_node_materialization.py +232 -0
  1136. aptl/backends/raes_observability_scope.py +112 -0
  1137. aptl/backends/raes_observation.py +492 -0
  1138. aptl/backends/raes_operating_systems.py +151 -0
  1139. aptl/backends/raes_operator_access.py +52 -0
  1140. aptl/backends/raes_orchestrator.py +309 -0
  1141. aptl/backends/raes_pack_interaction.py +73 -0
  1142. aptl/backends/raes_package_managers.py +247 -0
  1143. aptl/backends/raes_participant_actions.py +480 -0
  1144. aptl/backends/raes_participant_apparatus.py +278 -0
  1145. aptl/backends/raes_participant_apparatus_models.py +44 -0
  1146. aptl/backends/raes_participant_bindings.py +490 -0
  1147. aptl/backends/raes_participant_candidates.py +171 -0
  1148. aptl/backends/raes_participant_control_evidence.py +155 -0
  1149. aptl/backends/raes_participant_delivery.py +33 -0
  1150. aptl/backends/raes_participant_driver.py +495 -0
  1151. aptl/backends/raes_participant_evidence_publication.py +127 -0
  1152. aptl/backends/raes_participant_execution_support.py +69 -0
  1153. aptl/backends/raes_participant_exposure.py +159 -0
  1154. aptl/backends/raes_participant_fixture.py +72 -0
  1155. aptl/backends/raes_participant_fixture_blue.py +311 -0
  1156. aptl/backends/raes_participant_fixture_core.py +456 -0
  1157. aptl/backends/raes_participant_fixture_green.py +339 -0
  1158. aptl/backends/raes_participant_fixture_red.py +285 -0
  1159. aptl/backends/raes_participant_projection.py +415 -0
  1160. aptl/backends/raes_participant_provider.py +285 -0
  1161. aptl/backends/raes_participant_realization_execution.py +485 -0
  1162. aptl/backends/raes_participant_realizations.py +482 -0
  1163. aptl/backends/raes_participant_runtime.py +484 -0
  1164. aptl/backends/raes_participant_support.py +101 -0
  1165. aptl/backends/raes_placement_realization.py +223 -0
  1166. aptl/backends/raes_planning_compat.py +499 -0
  1167. aptl/backends/raes_profiles.py +412 -0
  1168. aptl/backends/raes_provisioner.py +364 -0
  1169. aptl/backends/raes_realization.py +404 -0
  1170. aptl/backends/raes_realization_envelope.py +145 -0
  1171. aptl/backends/raes_realization_model.py +394 -0
  1172. aptl/backends/raes_realization_networks.py +285 -0
  1173. aptl/backends/raes_realization_values.py +378 -0
  1174. aptl/backends/raes_repro.py +201 -0
  1175. aptl/backends/raes_runtime_attestation.py +391 -0
  1176. aptl/backends/raes_runtime_guest_observation.py +437 -0
  1177. aptl/backends/raes_runtime_model_artifact.py +66 -0
  1178. aptl/backends/raes_runtime_observation.py +478 -0
  1179. aptl/backends/raes_runtime_orchestration.py +318 -0
  1180. aptl/backends/raes_service_index_schema.py +192 -0
  1181. aptl/backends/raes_start_model.py +73 -0
  1182. aptl/backends/raes_stateful_realization.py +479 -0
  1183. aptl/backends/raes_substrate.py +172 -0
  1184. aptl/backends/scenario_capture.py +80 -0
  1185. aptl/backends/scenario_capture_discovery.py +159 -0
  1186. aptl/backends/scenario_planning_compatibility.py +130 -0
  1187. aptl/backends/scenario_planning_compatibility_discovery.py +182 -0
  1188. aptl/backends/scenario_runtime_hooks.py +65 -0
  1189. aptl/backends/scenario_runtime_parameters.py +118 -0
  1190. aptl/backends/scenario_runtime_selection.py +52 -0
  1191. aptl/backends/scenario_service_policy.py +303 -0
  1192. aptl/backends/scenario_startup.py +496 -0
  1193. aptl/backends/scenario_startup_policy.py +211 -0
  1194. aptl/cli/__init__.py +0 -0
  1195. aptl/cli/_common.py +148 -0
  1196. aptl/cli/_start_residue.py +70 -0
  1197. aptl/cli/config.py +88 -0
  1198. aptl/cli/container.py +126 -0
  1199. aptl/cli/continuity.py +363 -0
  1200. aptl/cli/doctor.py +92 -0
  1201. aptl/cli/experiment.py +143 -0
  1202. aptl/cli/kill.py +66 -0
  1203. aptl/cli/lab.py +735 -0
  1204. aptl/cli/lab_init.py +66 -0
  1205. aptl/cli/lab_render.py +466 -0
  1206. aptl/cli/lifecycle.py +155 -0
  1207. aptl/cli/main.py +57 -0
  1208. aptl/cli/mcp_access.py +179 -0
  1209. aptl/cli/participant_profile.py +88 -0
  1210. aptl/cli/runs.py +344 -0
  1211. aptl/cli/seat.py +489 -0
  1212. aptl/cli/seat_inputs.py +119 -0
  1213. aptl/cli/web.py +164 -0
  1214. aptl/core/__init__.py +0 -0
  1215. aptl/core/_credential_sources.py +122 -0
  1216. aptl/core/_doctor_common.py +59 -0
  1217. aptl/core/_doctor_runtime.py +405 -0
  1218. aptl/core/_pack_staging.py +76 -0
  1219. aptl/core/_port_bindings.py +119 -0
  1220. aptl/core/_soc_ca_builders.py +136 -0
  1221. aptl/core/_soc_ca_chain.py +405 -0
  1222. aptl/core/_soc_ca_generation.py +205 -0
  1223. aptl/core/_soc_ca_io.py +182 -0
  1224. aptl/core/appliance_boundary.py +300 -0
  1225. aptl/core/appliance_boundary_gate.py +62 -0
  1226. aptl/core/appliance_boundary_inventory.py +422 -0
  1227. aptl/core/archival/__init__.py +58 -0
  1228. aptl/core/archival/context.py +111 -0
  1229. aptl/core/archival/coordinator.py +230 -0
  1230. aptl/core/archival/discovery_index.py +432 -0
  1231. aptl/core/archival/layout.py +62 -0
  1232. aptl/core/archival/legacy_manifest.py +153 -0
  1233. aptl/core/archival/run_record.py +144 -0
  1234. aptl/core/archival/seal.py +233 -0
  1235. aptl/core/archival/status.py +128 -0
  1236. aptl/core/archival/verify.py +149 -0
  1237. aptl/core/assets.py +289 -0
  1238. aptl/core/attacks.py +91 -0
  1239. aptl/core/certs.py +394 -0
  1240. aptl/core/collectors.py +384 -0
  1241. aptl/core/config.py +461 -0
  1242. aptl/core/content_seed.py +196 -0
  1243. aptl/core/continuity.py +651 -0
  1244. aptl/core/contracts.py +79 -0
  1245. aptl/core/correlation/__init__.py +10 -0
  1246. aptl/core/correlation/_assemble.py +362 -0
  1247. aptl/core/correlation/_extract.py +268 -0
  1248. aptl/core/correlation/builder.py +131 -0
  1249. aptl/core/correlation/clock.py +131 -0
  1250. aptl/core/correlation/identity.py +93 -0
  1251. aptl/core/correlation/models.py +412 -0
  1252. aptl/core/correlation/persistence.py +240 -0
  1253. aptl/core/correlation/rules.py +98 -0
  1254. aptl/core/credentials.py +464 -0
  1255. aptl/core/deployment/__init__.py +122 -0
  1256. aptl/core/deployment/_account_credentials.py +174 -0
  1257. aptl/core/deployment/_account_provider.py +442 -0
  1258. aptl/core/deployment/_application_provider_realization.py +91 -0
  1259. aptl/core/deployment/_authored_service_hosts.py +61 -0
  1260. aptl/core/deployment/_compose_account_realization.py +479 -0
  1261. aptl/core/deployment/_compose_account_verification.py +197 -0
  1262. aptl/core/deployment/_compose_autoremove.py +165 -0
  1263. aptl/core/deployment/_compose_base_container_realization.py +353 -0
  1264. aptl/core/deployment/_compose_base_substrate.py +489 -0
  1265. aptl/core/deployment/_compose_boundary.py +211 -0
  1266. aptl/core/deployment/_compose_boundary_realization.py +346 -0
  1267. aptl/core/deployment/_compose_build_dedupe.py +98 -0
  1268. aptl/core/deployment/_compose_capture_apparatus.py +404 -0
  1269. aptl/core/deployment/_compose_capture_config.py +196 -0
  1270. aptl/core/deployment/_compose_content_mounts.py +260 -0
  1271. aptl/core/deployment/_compose_content_realization.py +211 -0
  1272. aptl/core/deployment/_compose_direct_network.py +130 -0
  1273. aptl/core/deployment/_compose_environment.py +316 -0
  1274. aptl/core/deployment/_compose_generic_base_images.py +190 -0
  1275. aptl/core/deployment/_compose_image_fetch.py +81 -0
  1276. aptl/core/deployment/_compose_image_realization.py +491 -0
  1277. aptl/core/deployment/_compose_lifecycle.py +177 -0
  1278. aptl/core/deployment/_compose_mixed_realization.py +275 -0
  1279. aptl/core/deployment/_compose_model_realization.py +289 -0
  1280. aptl/core/deployment/_compose_network_conflicts.py +124 -0
  1281. aptl/core/deployment/_compose_network_realization.py +497 -0
  1282. aptl/core/deployment/_compose_node_generation.py +229 -0
  1283. aptl/core/deployment/_compose_node_topology.py +165 -0
  1284. aptl/core/deployment/_compose_observability.py +263 -0
  1285. aptl/core/deployment/_compose_owned_start.py +345 -0
  1286. aptl/core/deployment/_compose_owner_labels.py +31 -0
  1287. aptl/core/deployment/_compose_ownership_override.py +250 -0
  1288. aptl/core/deployment/_compose_port_readback.py +57 -0
  1289. aptl/core/deployment/_compose_port_realization.py +166 -0
  1290. aptl/core/deployment/_compose_post_start.py +172 -0
  1291. aptl/core/deployment/_compose_project_cleanup.py +127 -0
  1292. aptl/core/deployment/_compose_project_inventory.py +174 -0
  1293. aptl/core/deployment/_compose_queries.py +468 -0
  1294. aptl/core/deployment/_compose_realization.py +463 -0
  1295. aptl/core/deployment/_compose_realization_networks.py +299 -0
  1296. aptl/core/deployment/_compose_receipt_capture.py +482 -0
  1297. aptl/core/deployment/_compose_resource_ownership.py +357 -0
  1298. aptl/core/deployment/_compose_resource_resolution.py +487 -0
  1299. aptl/core/deployment/_compose_runtime_config.py +386 -0
  1300. aptl/core/deployment/_compose_runtime_inventory.py +99 -0
  1301. aptl/core/deployment/_compose_runtime_materialization.py +102 -0
  1302. aptl/core/deployment/_compose_runtime_observation.py +164 -0
  1303. aptl/core/deployment/_compose_runtime_observation_helpers.py +105 -0
  1304. aptl/core/deployment/_compose_runtime_orchestration.py +360 -0
  1305. aptl/core/deployment/_compose_seed_attribution.py +202 -0
  1306. aptl/core/deployment/_compose_seed_execution.py +147 -0
  1307. aptl/core/deployment/_compose_seed_safety.py +30 -0
  1308. aptl/core/deployment/_compose_service_health.py +262 -0
  1309. aptl/core/deployment/_compose_service_index_realization.py +210 -0
  1310. aptl/core/deployment/_compose_spawn_image_realization.py +352 -0
  1311. aptl/core/deployment/_compose_stateful_artifact_helpers.py +232 -0
  1312. aptl/core/deployment/_compose_stateful_constants.py +86 -0
  1313. aptl/core/deployment/_compose_stateful_graph.py +265 -0
  1314. aptl/core/deployment/_compose_stateful_model.py +492 -0
  1315. aptl/core/deployment/_compose_stateful_override.py +47 -0
  1316. aptl/core/deployment/_compose_stateful_readiness.py +435 -0
  1317. aptl/core/deployment/_compose_stateful_realization.py +459 -0
  1318. aptl/core/deployment/_compose_stateful_services.py +49 -0
  1319. aptl/core/deployment/_compose_stateful_volumes.py +93 -0
  1320. aptl/core/deployment/_compose_stop.py +181 -0
  1321. aptl/core/deployment/_compose_substrate_attestation.py +309 -0
  1322. aptl/core/deployment/_compose_substrate_gate.py +337 -0
  1323. aptl/core/deployment/_compose_traffic_mirror.py +266 -0
  1324. aptl/core/deployment/_compose_volume_cleanup.py +80 -0
  1325. aptl/core/deployment/_cortex_service_credentials.py +102 -0
  1326. aptl/core/deployment/_declared_listener_readiness.py +125 -0
  1327. aptl/core/deployment/_docker_endpoint_binding.py +205 -0
  1328. aptl/core/deployment/_docker_image_identity.py +211 -0
  1329. aptl/core/deployment/_environment_bindings.py +460 -0
  1330. aptl/core/deployment/_flag_signing_keys.py +102 -0
  1331. aptl/core/deployment/_forwarding_agent_realization.py +321 -0
  1332. aptl/core/deployment/_misp_cache_credential.py +178 -0
  1333. aptl/core/deployment/_misp_server_tls.py +119 -0
  1334. aptl/core/deployment/_operator_access.py +411 -0
  1335. aptl/core/deployment/_operator_access_endpoints.py +90 -0
  1336. aptl/core/deployment/_operator_access_proof.py +251 -0
  1337. aptl/core/deployment/_proc_net_listeners.py +232 -0
  1338. aptl/core/deployment/_realization_primitives.py +222 -0
  1339. aptl/core/deployment/_runtime_materialization_effective.py +327 -0
  1340. aptl/core/deployment/_runtime_materialization_qualification.py +392 -0
  1341. aptl/core/deployment/_runtime_materialization_types.py +50 -0
  1342. aptl/core/deployment/_service_index_materialization.py +453 -0
  1343. aptl/core/deployment/_ssh_key_bundle.py +217 -0
  1344. aptl/core/deployment/_stateful_certificates.py +352 -0
  1345. aptl/core/deployment/_wazuh_agent_configuration.py +201 -0
  1346. aptl/core/deployment/_wazuh_agent_realization.py +406 -0
  1347. aptl/core/deployment/_wazuh_attestation.py +377 -0
  1348. aptl/core/deployment/_wazuh_identity.py +129 -0
  1349. aptl/core/deployment/backend.py +441 -0
  1350. aptl/core/deployment/backend_container_ops.py +183 -0
  1351. aptl/core/deployment/backend_host_inventory.py +92 -0
  1352. aptl/core/deployment/boundary.py +395 -0
  1353. aptl/core/deployment/boundary_compiler.py +311 -0
  1354. aptl/core/deployment/docker_compose.py +437 -0
  1355. aptl/core/deployment/errors.py +40 -0
  1356. aptl/core/deployment/observation.py +86 -0
  1357. aptl/core/deployment/realization.py +472 -0
  1358. aptl/core/deployment/runtime_materialization.py +21 -0
  1359. aptl/core/deployment/ssh_compose.py +143 -0
  1360. aptl/core/detection.py +248 -0
  1361. aptl/core/doctor.py +247 -0
  1362. aptl/core/endpoints.py +350 -0
  1363. aptl/core/env.py +424 -0
  1364. aptl/core/ephemeral_containers.py +175 -0
  1365. aptl/core/evidence/__init__.py +6 -0
  1366. aptl/core/evidence/_persist.py +373 -0
  1367. aptl/core/evidence/adapters/__init__.py +6 -0
  1368. aptl/core/evidence/adapters/builtins.py +129 -0
  1369. aptl/core/evidence/adapters/sources.py +154 -0
  1370. aptl/core/evidence/adapters/wiring.py +49 -0
  1371. aptl/core/evidence/content_store.py +123 -0
  1372. aptl/core/evidence/coordinator.py +465 -0
  1373. aptl/core/evidence/outcomes.py +110 -0
  1374. aptl/core/evidence/protocol.py +119 -0
  1375. aptl/core/evidence/records.py +172 -0
  1376. aptl/core/evidence/visibility.py +39 -0
  1377. aptl/core/evidence_bundle/__init__.py +31 -0
  1378. aptl/core/evidence_bundle/_collect.py +430 -0
  1379. aptl/core/evidence_bundle/_io.py +78 -0
  1380. aptl/core/evidence_bundle/archive.py +247 -0
  1381. aptl/core/evidence_bundle/build.py +259 -0
  1382. aptl/core/evidence_bundle/closure.py +148 -0
  1383. aptl/core/evidence_bundle/codes.py +43 -0
  1384. aptl/core/evidence_bundle/envelope.py +158 -0
  1385. aptl/core/evidence_bundle/errors.py +24 -0
  1386. aptl/core/evidence_bundle/inventory.py +175 -0
  1387. aptl/core/evidence_bundle/limits.py +48 -0
  1388. aptl/core/evidence_bundle/models.py +92 -0
  1389. aptl/core/evidence_bundle/projections/__init__.py +31 -0
  1390. aptl/core/evidence_bundle/projections/jsonl.py +109 -0
  1391. aptl/core/evidence_bundle/projections/ocsf.py +105 -0
  1392. aptl/core/evidence_bundle/projections/parquet.py +267 -0
  1393. aptl/core/evidence_bundle/projections/registry.py +120 -0
  1394. aptl/core/evidence_bundle/schemas.py +111 -0
  1395. aptl/core/evidence_bundle/verify.py +366 -0
  1396. aptl/core/execution/__init__.py +31 -0
  1397. aptl/core/execution/apparatus.py +173 -0
  1398. aptl/core/execution/assembly.py +417 -0
  1399. aptl/core/execution/bridges.py +177 -0
  1400. aptl/core/execution/executor.py +272 -0
  1401. aptl/core/execution_boundary.py +454 -0
  1402. aptl/core/experiment/__init__.py +10 -0
  1403. aptl/core/experiment/_capture_matching.py +89 -0
  1404. aptl/core/experiment/admission.py +412 -0
  1405. aptl/core/experiment/admission_artifacts.py +273 -0
  1406. aptl/core/experiment/admission_steps.py +375 -0
  1407. aptl/core/experiment/apparatus.py +452 -0
  1408. aptl/core/experiment/bindings.py +434 -0
  1409. aptl/core/experiment/capture_mapping.py +122 -0
  1410. aptl/core/experiment/capture_plan.py +207 -0
  1411. aptl/core/experiment/capture_registry.py +462 -0
  1412. aptl/core/experiment/controller.py +142 -0
  1413. aptl/core/experiment/errors.py +227 -0
  1414. aptl/core/experiment/policy.py +182 -0
  1415. aptl/core/experiment/resolver.py +367 -0
  1416. aptl/core/experiment/spec_loading.py +311 -0
  1417. aptl/core/experiment/trial_plan.py +483 -0
  1418. aptl/core/experiment/trial_plan_models.py +111 -0
  1419. aptl/core/exporter.py +200 -0
  1420. aptl/core/flags.py +176 -0
  1421. aptl/core/health.py +139 -0
  1422. aptl/core/host_keys.py +242 -0
  1423. aptl/core/host_ports.py +422 -0
  1424. aptl/core/hostenv.py +141 -0
  1425. aptl/core/kill.py +497 -0
  1426. aptl/core/lab.py +4888 -0
  1427. aptl/core/lab_types.py +221 -0
  1428. aptl/core/lifecycle_cleanup.py +248 -0
  1429. aptl/core/lifecycle_enforce.py +346 -0
  1430. aptl/core/lifecycle_guard.py +454 -0
  1431. aptl/core/lifecycle_policy.py +257 -0
  1432. aptl/core/mcp_ingress.py +56 -0
  1433. aptl/core/objectives.py +161 -0
  1434. aptl/core/operator_group_state.py +100 -0
  1435. aptl/core/provenance/__init__.py +27 -0
  1436. aptl/core/provenance/coordinator.py +370 -0
  1437. aptl/core/provenance/identity.py +150 -0
  1438. aptl/core/provenance/outcomes.py +172 -0
  1439. aptl/core/provenance/protocol.py +97 -0
  1440. aptl/core/provenance/providers/__init__.py +13 -0
  1441. aptl/core/provenance/providers/_degraded.py +93 -0
  1442. aptl/core/provenance/providers/apparatus.py +111 -0
  1443. aptl/core/provenance/providers/artifacts.py +156 -0
  1444. aptl/core/provenance/providers/config_identity.py +173 -0
  1445. aptl/core/provenance/providers/detection.py +284 -0
  1446. aptl/core/provenance/providers/experiment.py +166 -0
  1447. aptl/core/provenance/providers/participant.py +103 -0
  1448. aptl/core/provenance/providers/runtime_facts.py +269 -0
  1449. aptl/core/provenance/record.py +133 -0
  1450. aptl/core/provenance/registrations.py +222 -0
  1451. aptl/core/provenance/registry.py +219 -0
  1452. aptl/core/runstore.py +487 -0
  1453. aptl/core/runstore_internals.py +234 -0
  1454. aptl/core/runtime/__init__.py +13 -0
  1455. aptl/core/runtime/workflow_engine.py +436 -0
  1456. aptl/core/scenario_bundle.py +317 -0
  1457. aptl/core/scenario_catalog.py +285 -0
  1458. aptl/core/scenarios.py +39 -0
  1459. aptl/core/seed_spec.py +59 -0
  1460. aptl/core/services.py +320 -0
  1461. aptl/core/session.py +408 -0
  1462. aptl/core/snapshot.py +469 -0
  1463. aptl/core/snapshot_models.py +127 -0
  1464. aptl/core/soc_ca.py +365 -0
  1465. aptl/core/ssh.py +362 -0
  1466. aptl/core/startup_reset_state.py +407 -0
  1467. aptl/core/suricata_seed.py +377 -0
  1468. aptl/core/sysreqs.py +266 -0
  1469. aptl/core/telemetry.py +277 -0
  1470. aptl/core/telemetry_export.py +87 -0
  1471. aptl/runtime_authority.py +123 -0
  1472. aptl/services/__init__.py +1 -0
  1473. aptl/services/misp_suricata_sync/__init__.py +10 -0
  1474. aptl/services/misp_suricata_sync/config.py +174 -0
  1475. aptl/services/misp_suricata_sync/main.py +191 -0
  1476. aptl/services/misp_suricata_sync/misp_client.py +108 -0
  1477. aptl/services/misp_suricata_sync/models.py +48 -0
  1478. aptl/services/misp_suricata_sync/rule_writer.py +46 -0
  1479. aptl/services/misp_suricata_sync/suricata_reloader.py +95 -0
  1480. aptl/services/misp_suricata_sync/translator.py +357 -0
  1481. aptl/utils/__init__.py +0 -0
  1482. aptl/utils/_pathsafe_core.py +231 -0
  1483. aptl/utils/_pathsafe_read.py +188 -0
  1484. aptl/utils/curl_safe.py +286 -0
  1485. aptl/utils/deterministic_archive.py +82 -0
  1486. aptl/utils/logging.py +44 -0
  1487. aptl/utils/mcp_packaging.py +262 -0
  1488. aptl/utils/pathsafe.py +409 -0
  1489. aptl/utils/placeholders.py +32 -0
  1490. aptl/utils/redaction.py +1094 -0
  1491. aptl/utils/shell.py +134 -0
  1492. aptl/utils/strict_json.py +47 -0
  1493. aptl/validation/__init__.py +1 -0
  1494. aptl/validation/_account_parity.py +126 -0
  1495. aptl/validation/_gate_checks.py +430 -0
  1496. aptl/validation/_gate_no_start_backend.py +295 -0
  1497. aptl/validation/_gate_raes_cli.py +100 -0
  1498. aptl/validation/_live_gate_alerts.py +25 -0
  1499. aptl/validation/_live_gate_checks.py +414 -0
  1500. aptl/validation/_live_gate_models.py +198 -0
  1501. aptl/validation/_live_gate_operations.py +260 -0
  1502. aptl/validation/_live_gate_probes.py +437 -0
  1503. aptl/validation/_live_gate_readiness.py +192 -0
  1504. aptl/validation/_live_gate_telemetry.py +110 -0
  1505. aptl/validation/_live_gate_variation.py +92 -0
  1506. aptl/validation/_scenario_verification_contract.py +323 -0
  1507. aptl/validation/curated_live_proof.py +325 -0
  1508. aptl/validation/mcp_protocol.py +271 -0
  1509. aptl/validation/participant_live_proof.py +452 -0
  1510. aptl/validation/participant_mcp_smoke.py +223 -0
  1511. aptl/validation/participant_profile.py +369 -0
  1512. aptl/validation/participant_profile_models.py +366 -0
  1513. aptl/validation/participant_proof_redaction.py +107 -0
  1514. aptl/validation/participant_qualification.py +320 -0
  1515. aptl/validation/participant_qualification_evidence.py +333 -0
  1516. aptl/validation/range_snapshot_summary.py +51 -0
  1517. aptl/validation/realization_declaration_gate.py +112 -0
  1518. aptl/validation/research_scenario_catalog.py +45 -0
  1519. aptl/validation/scenario_verification.py +343 -0
  1520. aptl/validation/scenario_verification_discovery.py +395 -0
  1521. aptl/validation/techvault_gate.py +152 -0
  1522. aptl/validation/techvault_live_gate.py +475 -0
  1523. aptl/workbench/__init__.py +57 -0
  1524. aptl/workbench/_pipe_exchange.py +186 -0
  1525. aptl/workbench/access.py +154 -0
  1526. aptl/workbench/access_clients.py +183 -0
  1527. aptl/workbench/agent.py +493 -0
  1528. aptl/workbench/app.py +326 -0
  1529. aptl/workbench/bootstrap.py +299 -0
  1530. aptl/workbench/browser_gateway.py +372 -0
  1531. aptl/workbench/browser_mcp.py +190 -0
  1532. aptl/workbench/client_files.py +163 -0
  1533. aptl/workbench/codex_agent.py +313 -0
  1534. aptl/workbench/credentials.py +81 -0
  1535. aptl/workbench/decision_schema.py +63 -0
  1536. aptl/workbench/dispatch.py +224 -0
  1537. aptl/workbench/guest_binding.py +464 -0
  1538. aptl/workbench/mcp_results.py +76 -0
  1539. aptl/workbench/participant_source_binding.py +156 -0
  1540. aptl/workbench/preparation.py +262 -0
  1541. aptl/workbench/process.py +385 -0
  1542. aptl/workbench/profiles.py +334 -0
  1543. aptl/workbench/relay.py +295 -0
  1544. aptl/workbench/runtime.py +363 -0
  1545. aptl_techvault/README.md +102 -0
  1546. aptl_techvault/__init__.py +30 -0
  1547. aptl_techvault/build_cache.py +113 -0
  1548. aptl_techvault/capture.py +123 -0
  1549. aptl_techvault/capture_registrations.py +478 -0
  1550. aptl_techvault/database.py +312 -0
  1551. aptl_techvault/database_access.py +287 -0
  1552. aptl_techvault/database_support.py +99 -0
  1553. aptl_techvault/evidence/__init__.py +1 -0
  1554. aptl_techvault/evidence/_techvault_native_cortex.py +183 -0
  1555. aptl_techvault/evidence/proposition_truth.py +211 -0
  1556. aptl_techvault/evidence/techvault.py +441 -0
  1557. aptl_techvault/evidence/techvault_enrollment_baseline.py +99 -0
  1558. aptl_techvault/evidence/techvault_manager_alerts.py +98 -0
  1559. aptl_techvault/evidence/techvault_misp_readiness.py +179 -0
  1560. aptl_techvault/evidence/techvault_native.py +457 -0
  1561. aptl_techvault/evidence/techvault_native_readiness.py +465 -0
  1562. aptl_techvault/evidence/techvault_native_support.py +209 -0
  1563. aptl_techvault/evidence/techvault_readiness.py +164 -0
  1564. aptl_techvault/evidence/techvault_readiness_probes.py +446 -0
  1565. aptl_techvault/evidence/techvault_telemetry_stimulus.py +215 -0
  1566. aptl_techvault/evidence/techvault_transcript.py +384 -0
  1567. aptl_techvault/evidence/techvault_wazuh_agent_readiness.py +180 -0
  1568. aptl_techvault/evidence/transcript_parsing.py +303 -0
  1569. aptl_techvault/log_source_support.py +407 -0
  1570. aptl_techvault/log_sources.py +445 -0
  1571. aptl_techvault/participant_smoke.py +202 -0
  1572. aptl_techvault/planning_compatibility.py +68 -0
  1573. aptl_techvault/redis_acl_observation.py +149 -0
  1574. aptl_techvault/runtime_parameters.py +77 -0
  1575. aptl_techvault/serving.py +89 -0
  1576. aptl_techvault/startup.py +493 -0
  1577. aptl_techvault/study.py +105 -0
  1578. aptl_techvault/study_capture_registrations.py +62 -0
  1579. aptl_techvault/verification.py +255 -0
  1580. aptl_techvault/wazuh_credentials.py +62 -0
  1581. lilrae-8.0.0.dist-info/METADATA +252 -0
  1582. lilrae-8.0.0.dist-info/RECORD +1585 -0
  1583. lilrae-8.0.0.dist-info/WHEEL +4 -0
  1584. lilrae-8.0.0.dist-info/entry_points.txt +34 -0
  1585. lilrae-8.0.0.dist-info/licenses/LICENSE +21 -0
aptl/__init__.py ADDED
@@ -0,0 +1,9 @@
1
+ """Advanced Purple Team Lab CLI."""
2
+
3
+ # Version is bumped by release-please in lockstep with pyproject.toml on every
4
+ # release, via the `extra-files` entry in release-please-config.json plus the
5
+ # `x-release-please-version` annotation below (the python updater only rewrites
6
+ # pyproject.toml, not this src-layout __init__.py). Keep the annotation comment
7
+ # on the same line as the literal, and keep the literal equal to pyproject's
8
+ # `version` — test_version_consistency.py enforces the latter.
9
+ __version__ = "8.0.0" # x-release-please-version
@@ -0,0 +1,91 @@
1
+ """Single source of truth for the bundled lab-asset manifest (DEP-008).
2
+
3
+ This module is imported by *two* consumers that run in different
4
+ environments, so it must stay dependency-free (standard library only):
5
+
6
+ * ``aptl.core.assets`` (runtime) — decides what a source checkout
7
+ materializes into a lab project directory.
8
+ * ``hatch_build.py`` (build time) — decides what the wheel ships under
9
+ ``aptl/_labdata/``. The build environment only has build backend
10
+ dependencies, so this module must not import pydantic, typer, or any
11
+ other runtime dependency.
12
+
13
+ Keeping the manifest here means the wheel's bundled asset set and a
14
+ checkout's materialized set can never drift.
15
+ """
16
+
17
+ from __future__ import annotations
18
+
19
+ # Top-level asset roots bundled into the wheel and materialized by
20
+ # ``aptl lab init``. Each tracked file maps to the same relative path.
21
+ # Derived from docker-compose.yml build contexts and bind mounts plus the
22
+ # host-side steps in ``aptl lab start`` (issue #659):
23
+ # - several services build with ``context: .`` and
24
+ # ``COPY pyproject.toml README.md src`` + ``pip install .``
25
+ # (misp-suricata-sync, web API), so those + ``hatch_build.py`` (a declared
26
+ # wheel build hook) are needed;
27
+ # - ``web/`` is its own build context and ``scripts/`` is bind-mounted;
28
+ # - ``mcp/`` holds ``build-all-mcps.sh`` and the MCP server sources that the
29
+ # ``build_mcps`` start step compiles (needs node/npm on the host);
30
+ # - ``.mcp.json.example`` seeds MCP client config; ``.dockerignore`` keeps
31
+ # build contexts lean.
32
+ # ``keys/`` and ``.aptl/`` are generated at lab start (zero tracked files) and
33
+ # are intentionally absent.
34
+ ASSET_ROOTS: tuple[str, ...] = (
35
+ "docker-compose.yml",
36
+ "docker-compose.observability.yml",
37
+ "docker-compose.capture.yml",
38
+ ".dockerignore",
39
+ "generate-indexer-certs.yml",
40
+ ".env.example",
41
+ ".mcp.json.example",
42
+ "pyproject.toml",
43
+ "uv.lock",
44
+ "requirements",
45
+ "README.md",
46
+ "hatch_build.py",
47
+ "src",
48
+ "participant-profiles/techvault-full-v1",
49
+ "appliance",
50
+ "config",
51
+ "containers",
52
+ "web",
53
+ "scripts",
54
+ "mcp",
55
+ )
56
+
57
+ # Presence of this file marks a full lab-distribution build context. Minimal
58
+ # package build contexts — e.g. the service container images that
59
+ # ``COPY pyproject.toml README.md src`` then ``pip install .`` — do not carry
60
+ # it, so the build hook skips asset bundling there (issue #659 review): those
61
+ # images must still load the declared hook (hatch_build.py is copied in), but
62
+ # must not pull the multi-megabyte lab bundle into a service wheel.
63
+ DISTRIBUTION_MARKER = "docker-compose.yml"
64
+
65
+ # Directory names never bundled even beneath a tracked root. Only consulted
66
+ # by the no-git walk fallback; ``git ls-files`` already omits every one.
67
+ # Mirrors the gitignored secret/state and dev-artifact directories so a
68
+ # fallback selection cannot ship them.
69
+ EXCLUDED_DIR_NAMES: frozenset[str] = frozenset(
70
+ {
71
+ "__pycache__",
72
+ "node_modules",
73
+ ".venv",
74
+ "dist",
75
+ "build",
76
+ ".mypy_cache",
77
+ ".ruff_cache",
78
+ ".pytest_cache",
79
+ ".hypothesis",
80
+ ".git",
81
+ "soc_certs",
82
+ "lab-ssh",
83
+ "wazuh_indexer_ssl_certs",
84
+ }
85
+ )
86
+
87
+ EXCLUDED_SUFFIXES: tuple[str, ...] = (".pyc", ".pyo")
88
+
89
+ # Where the bundle lives inside the wheel / installed package.
90
+ LABDATA_DIRNAME = "_labdata"
91
+ LABDATA_PREFIX = f"aptl/{LABDATA_DIRNAME}"
@@ -0,0 +1,26 @@
1
+ .git
2
+ .github
3
+ .venv
4
+ .pytest_cache
5
+ .mypy_cache
6
+ __pycache__
7
+ *.pyc
8
+ node_modules
9
+ **/node_modules
10
+ # `containers/` is intentionally NOT excluded: the in-process target
11
+ # images (ad / dns / fileshare / webapp; issue #248) and the remaining
12
+ # `wazuh-sidecar` image build from the repo root and need access to the
13
+ # shared `containers/_wazuh-agent/` files plus their own per-container
14
+ # subdirectory. Per-container build contexts (victim, workstation, kali,
15
+ # etc.) read their own `.dockerignore` so they're unaffected.
16
+ docs/
17
+ notes/
18
+ coverage.xml
19
+ .coverage
20
+ *.egg-info
21
+ dist/
22
+ build/
23
+ .svelte-kit
24
+ web/node_modules
25
+ web/.svelte-kit
26
+ web/tests
@@ -0,0 +1,84 @@
1
+ # APTL Lab Credentials
2
+ # Copy this file to .env; `aptl lab start` hydrates it, filling every
3
+ # CHANGE_ME placeholder with a runnable value (randomizing real secrets). You
4
+ # only need to supply values you specifically want to pin.
5
+ # The .env file is gitignored and will not be committed.
6
+ #
7
+ # NOTE: INDEXER_* and DASHBOARD_* below are NOT user-selectable. They must match
8
+ # the OpenSearch demo-user hashes baked into the checked-in
9
+ # config/wazuh_indexer/internal_users.yml (admin=SecretPassword,
10
+ # kibanaserver=kibanaserver); the indexer never recomputes those hashes from
11
+ # .env. Leave the placeholders (hydration fills the correct fixtures) or set the
12
+ # exact fixture values. Any other value is reconciled back at start with a
13
+ # warning, because the indexer would otherwise reject it.
14
+
15
+ # Wazuh Indexer / OpenSearch admin credentials (auto-managed fixture)
16
+ INDEXER_USERNAME=admin
17
+ INDEXER_PASSWORD=CHANGE_ME_indexer_password
18
+
19
+ # Wazuh Dashboard internal user (auto-managed fixture)
20
+ DASHBOARD_USERNAME=kibanaserver
21
+ DASHBOARD_PASSWORD=CHANGE_ME_dashboard_password
22
+
23
+ # Wazuh API credentials
24
+ API_USERNAME=wazuh-wui
25
+ API_PASSWORD=CHANGE_ME_api_password
26
+
27
+ # Wazuh cluster key
28
+ WAZUH_CLUSTER_KEY=CHANGE_ME_cluster_key
29
+
30
+ # Web control-plane API token (ADR-039). Required when running the optional
31
+ # aptl-web-api and aptl-web-ui services. The API rejects missing, empty, or
32
+ # placeholder values at runtime. Generate a real token with:
33
+ # python3 -c 'import secrets; print(secrets.token_hex(32))'
34
+ APTL_API_TOKEN=CHANGE_ME_api_token
35
+
36
+ # Identity of the aptl-web-api container (issue #1193). It never runs as root:
37
+ # it runs as the user that owns this project (the one who runs `aptl lab
38
+ # start`), so it can read the owner-only lab state under .aptl/, and joins only
39
+ # the Docker socket's group. Set both from the project owner's shell:
40
+ # echo "APTL_WEB_API_USER=$(id -u):$(id -g)"
41
+ # echo "APTL_DOCKER_SOCKET_GID=$(stat -c %g /var/run/docker.sock)"
42
+ # Left unset, the web API container refuses to start.
43
+ APTL_WEB_API_USER=CHANGE_ME_uid:gid
44
+ APTL_DOCKER_SOCKET_GID=CHANGE_ME_docker_socket_gid
45
+
46
+ # Enterprise services
47
+ DB_PASSWORD=techvault_db_pass
48
+ AD_ADMIN_PASSWORD=Admin123!
49
+
50
+ # SOC tools
51
+ MISP_ADMIN_PASSWORD=MispAdmin2024!
52
+ # MISP REST API auth key. Used by both the MISP server (as ADMIN_KEY) and
53
+ # every downstream consumer (aptl-misp-suricata-sync, mcp-threatintel, etc.).
54
+ # Generate a fresh 40-character alphanumeric value with:
55
+ # tr -dc A-Za-z0-9 </dev/urandom | head -c 40 ; echo
56
+ # The placeholder below is rejected by aptl-misp-suricata-sync at startup
57
+ # so the lab fails loudly if you forget to replace it.
58
+ MISP_API_KEY=PLEASEREPLACEMEPLEASEREPLACEMEPLEASEREPLACE
59
+ # TLS verification for SOC stack consumers connecting to MISP.
60
+ # SEC-006 / ADR-034 (issue #258) made the lab-managed CA the default
61
+ # trust anchor: ServiceConfig defaults MISP_VERIFY_SSL to true, and the
62
+ # misp-suricata-sync container mounts the CA bundle at
63
+ # /etc/lab-ca/lab-ca.pem. Leaving these lines commented out (or unset)
64
+ # lets the in-code defaults win. Override only for local debugging, e.g.
65
+ # while iterating on a self-signed MISP fork:
66
+ # MISP_VERIFY_SSL=false
67
+ # MISP_CA_CERT_PATH=
68
+ # MISP_VERIFY_SSL=true
69
+ # MISP_CA_CERT_PATH=/etc/lab-ca/lab-ca.pem
70
+ THEHIVE_SECRET=aptl-thehive-lab-secret-key-2024-purple
71
+ SHUFFLE_ADMIN_PASSWORD=ShuffleAdmin2024!
72
+ SHUFFLE_API_KEY=31a211c4-ea5c-4a49-b022-5e2434e758a7
73
+
74
+ # Grafana (OTel observability stack)
75
+ GRAFANA_ADMIN_USER=admin
76
+ GRAFANA_ADMIN_PASSWORD=CHANGE_ME_grafana_password
77
+
78
+ # Host-port publishing. Every service's published host port has a
79
+ # `${APTL_HP_<SERVICE>_<PORT>:-default}` override. `aptl lab start` probes
80
+ # each default and, if it is already in use on this host (e.g. an editor's
81
+ # port-forwarding, another app), automatically publishes that service on a
82
+ # free port instead and reports the real port in the start summary. Set any of
83
+ # these to pin a specific port; a value you set here is always honored as-is.
84
+ # APTL_HP_WAZUH_DASHBOARD_5601=443
@@ -0,0 +1,53 @@
1
+ {
2
+ "mcpServers": {
3
+ "aptl-red": {
4
+ "command": "node",
5
+ "args": ["./mcp/mcp-red/build/index.js"],
6
+ "env": {
7
+ "OTEL_EXPORTER_OTLP_ENDPOINT": "http://localhost:4318"
8
+ }
9
+ },
10
+ "aptl-indexer": {
11
+ "command": "node",
12
+ "args": ["./mcp/mcp-indexer/build/index.js"],
13
+ "env": {
14
+ "OTEL_EXPORTER_OTLP_ENDPOINT": "http://localhost:4318"
15
+ }
16
+ },
17
+ "aptl-wazuh": {
18
+ "command": "node",
19
+ "args": ["./mcp/mcp-wazuh/build/index.js"],
20
+ "env": {
21
+ "OTEL_EXPORTER_OTLP_ENDPOINT": "http://localhost:4318"
22
+ }
23
+ },
24
+ "aptl-network": {
25
+ "command": "node",
26
+ "args": ["./mcp/mcp-network/build/index.js"],
27
+ "env": {
28
+ "OTEL_EXPORTER_OTLP_ENDPOINT": "http://localhost:4318"
29
+ }
30
+ },
31
+ "aptl-threatintel": {
32
+ "command": "node",
33
+ "args": ["./mcp/mcp-threatintel/build/index.js"],
34
+ "env": {
35
+ "OTEL_EXPORTER_OTLP_ENDPOINT": "http://localhost:4318"
36
+ }
37
+ },
38
+ "aptl-casemgmt": {
39
+ "command": "node",
40
+ "args": ["./mcp/mcp-casemgmt/build/index.js"],
41
+ "env": {
42
+ "OTEL_EXPORTER_OTLP_ENDPOINT": "http://localhost:4318"
43
+ }
44
+ },
45
+ "aptl-soar": {
46
+ "command": "node",
47
+ "args": ["./mcp/mcp-soar/build/index.js"],
48
+ "env": {
49
+ "OTEL_EXPORTER_OTLP_ENDPOINT": "http://localhost:4318"
50
+ }
51
+ }
52
+ }
53
+ }
@@ -0,0 +1,194 @@
1
+ [![Quality gate](https://sonarcloud.io/api/project_badges/quality_gate?project=Brad-Edwards_aptl&token=4dd88be3421d6d030a4615b86ac8ab0e3c9eb4d3)](https://sonarcloud.io/summary/new_code?id=Brad-Edwards_aptl)
2
+ [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/OpenRAE/lilrae/badge)](https://scorecard.dev/viewer/?uri=github.com/OpenRAE/lilrae)
3
+
4
+ 🎤 **Accepted to [Black Hat USA Arsenal 2026](https://blackhat.com/us-26/arsenal/schedule/#aptl-advanced-purple-team-labs-52322), [SecTor Arsenal 2026](https://blackhat.com/sector/arsenal/schedule/index.html#aptl-advanced-purple-team-labs-54785), and SecTor 2026 Briefings.**
5
+
6
+ # LilRAE (formerly APTL)
7
+
8
+ > **APTL is now LilRAE, and the package is now `lilrae`.** The Advanced Purple
9
+ > Team Lab (APTL) repository moved to
10
+ > [github.com/OpenRAE/lilrae](https://github.com/OpenRAE/lilrae) and was
11
+ > renamed. It is the same project, with the same source, history, features,
12
+ > and issue tracker. Releases publish to PyPI as
13
+ > [`lilrae`](https://pypi.org/project/lilrae/) from version 8.0.0.
14
+ > `aptl-labs` 7.0.0 was the last `aptl-labs` release. The import package is
15
+ > still `aptl`, the command is still `aptl`, and existing configuration, state
16
+ > directories, and runtime identifiers keep their `aptl` names. Where current
17
+ > pages still say APTL, they mean LilRAE. See
18
+ > [ADR-062](https://github.com/OpenRAE/lilrae/blob/main/docs/adrs/adr-062-lilrae-name-and-naming-convention.md).
19
+ >
20
+ > The two distributions install the same `aptl` package and commands. Do not
21
+ > install `lilrae` over `aptl-labs`, because one installation overwrites the
22
+ > files of the other. Remove `aptl-labs` first, then install `lilrae` with the
23
+ > same extras.
24
+ >
25
+ > With pipx:
26
+ >
27
+ > ```shell
28
+ > pipx uninstall aptl-labs
29
+ > pipx install lilrae
30
+ > aptl --version
31
+ > ```
32
+ >
33
+ > With pip in a virtual environment, for example with the `[s3]` extra:
34
+ >
35
+ > ```shell
36
+ > python -m pip uninstall aptl-labs
37
+ > python -m pip install "lilrae[s3]"
38
+ > ```
39
+ >
40
+ > To roll back, remove `lilrae`, then install the last legacy release:
41
+ >
42
+ > ```shell
43
+ > pipx uninstall lilrae
44
+ > pipx install "aptl-labs==7.0.0"
45
+ > ```
46
+ >
47
+ > The [installation guide](https://github.com/OpenRAE/lilrae/blob/main/docs/getting-started/installation.md#move-from-aptl-labs-to-lilrae)
48
+ > has the full procedure. All earlier `aptl-labs` releases stay on PyPI.
49
+
50
+ LilRAE is a local purple-team lab where human operators and AI agents exercise
51
+ red- and blue-team workflows against an intentionally vulnerable enterprise
52
+ range. Scenario documents select and realize the target, attacker, and SOC
53
+ topology; the CLI owns validation, startup, readiness, access discovery,
54
+ teardown, and run records.
55
+
56
+ Use cases include autonomous cyber-operations research, purple-team training,
57
+ and AI threat-actor assessment.
58
+
59
+ ## Status And Safety
60
+
61
+ **Active development. Not for production. Not hardened.** LilRAE gives AI agents
62
+ penetration-testing tools and starts intentionally vulnerable services. Use a
63
+ dedicated, rebuildable host, keep unrelated credentials and workloads
64
+ elsewhere, control the surrounding network, and operate only on systems you are
65
+ authorized to test.
66
+
67
+ Ordinary `aptl lab start` uses the selected Docker daemon. On native Linux that
68
+ can give the lab and its control components authority over the physical host's
69
+ Docker engine; Docker Desktop or another Docker VM changes that placement but
70
+ is not, by its name alone, a qualified containment boundary. `aptl lab start`
71
+ and `aptl lab info` report the observed transport and boundary, or `unknown`
72
+ when they cannot establish one. See [tested profiles, host exposure and
73
+ limits](docs/getting-started/prerequisites.md#tested-execution-profiles-and-limits).
74
+
75
+ For stronger host and cross-seat isolation on Linux/KVM, use a disposable
76
+ [`aptl seat`](docs/reference/appliance-seat-launcher.md). A VM boundary reduces
77
+ risk but does not eliminate it; keep the host kernel and hypervisor current. A
78
+ seat needs KVM, QEMU, OVMF, adequate per-seat resources and a verified image;
79
+ it does not make the workloads inside its guest mutually isolated.
80
+ **Seats have no default outbound network controls.** The guest can initiate
81
+ ordinary internet and LAN connections through user-mode NAT, subject to the
82
+ host network and any rules defined by the selected scenario. Event-specific
83
+ outbound restrictions are the operator's responsibility.
84
+
85
+ ## Quick Start
86
+
87
+ Install the released CLI and materialize its bundled lab assets. No source
88
+ checkout is required:
89
+
90
+ ```shell
91
+ pipx install lilrae
92
+ aptl lab init my-lab
93
+ cd my-lab
94
+ aptl lab start --scenario techvault
95
+ ```
96
+
97
+ Startup validates the selected scenario, creates private project state,
98
+ realizes the topology, waits for required readiness checks, and reports a
99
+ structured outcome with the observed execution boundary. Inspect the fresh
100
+ runtime-derived state, boundary and access information:
101
+
102
+ ```shell
103
+ aptl lab status
104
+ aptl lab info
105
+ aptl container list
106
+ ```
107
+
108
+ URLs, host ports, available containers, usernames, and credential locations
109
+ belong to the realized project. Use `aptl lab info`; do not rely on static
110
+ values copied from documentation.
111
+
112
+ At the end of the session:
113
+
114
+ ```shell
115
+ aptl lab stop # preserve project volumes
116
+ aptl lab stop -v # confirm and destroy project volume data
117
+ ```
118
+
119
+ Read the [first-lab guide](docs/getting-started/quick-start.md) for scenario
120
+ selection, safe activity, result inspection, troubleshooting, and teardown.
121
+
122
+ ## Requirements
123
+
124
+ - Python 3.12 or newer and [pipx](https://pipx.pypa.io/)
125
+ - Docker Engine 28.0 or newer (native, or inside Docker Desktop or Colima)
126
+ with Compose and Buildx, on a cgroup v2 host
127
+ - OpenSSH client with `ssh-keygen` on `PATH`
128
+ - Node.js 20 or newer and npm for MCP artifact builds
129
+ - 20GB or more of free disk space
130
+ - Sufficient Docker memory for the selected scenario; the full acquired
131
+ TechVault stack needs more than 20GB
132
+
133
+ See [Prerequisites](docs/getting-started/prerequisites.md) for platform-specific
134
+ setup and verification.
135
+
136
+ ## Supported Interfaces
137
+
138
+ - [CLI](docs/reference/cli.md) is the primary lab control plane.
139
+ - [MCP servers](docs/reference/mcp.md) give authorized agents scenario-aware
140
+ red- and blue-team tools through generated private client configuration.
141
+ - [Web interface](docs/reference/web.md) provides a loopback-first local
142
+ operator UI and typed API.
143
+
144
+ The APTL operator UI, vulnerable target applications, and third-party SOC
145
+ interfaces are separate surfaces. The selected scenario determines which ones
146
+ exist.
147
+
148
+ ## Scenarios
149
+
150
+ The APTL startup catalog exposes the scenario selections supported by the
151
+ installed release. Reusable environment-pack definitions and authoring support
152
+ live in the companion [OpenRAE/env-packs](https://github.com/OpenRAE/env-packs)
153
+ repository; APTL owns admission, realization, readiness, and operation of the
154
+ selected scenario in the local lab.
155
+
156
+ ## Documentation
157
+
158
+ The published site is the canonical user manual:
159
+
160
+ - [Documentation home](https://openrae.github.io/lilrae/)
161
+ - [Installation](docs/getting-started/installation.md)
162
+ - [Run your first lab](docs/getting-started/quick-start.md)
163
+ - [Troubleshooting](docs/troubleshooting/index.md)
164
+ - [Architecture and historical records](docs/architecture/index.md)
165
+ - [OpenSSF Best Practices assessment](docs/security/openssf-best-practices.md)
166
+
167
+ The README is the GitHub and package-index gateway, not a second copy of the
168
+ manual.
169
+
170
+ ## Project Links
171
+
172
+ - [Get support](https://github.com/OpenRAE/lilrae/blob/dev/SUPPORT.md)
173
+ - [Contribute](https://github.com/OpenRAE/lilrae/blob/dev/CONTRIBUTING.md)
174
+ - [Report a vulnerability privately](https://github.com/OpenRAE/lilrae/security/advisories/new)
175
+ - [Review the OpenSSF Best Practices assessment](docs/security/openssf-best-practices.md)
176
+
177
+ Do not report suspected vulnerabilities through a public issue. The
178
+ [security policy](SECURITY.md) describes scope and the private fallback contact
179
+ path.
180
+
181
+ ## Ethics And Disclaimer
182
+
183
+ APTL uses commodity services and standard security tooling. AI agents get Kali
184
+ access; this public repository does not add red-team enhancements to their
185
+ latent capabilities. You are responsible for following all applicable laws and
186
+ for obtaining authorization before testing a system.
187
+
188
+ The repository contains intentional test credentials used only by lab
189
+ fixtures. They are not production secrets. Runtime control-plane credentials
190
+ are generated into private project files and must not be committed or shared.
191
+
192
+ ## License
193
+
194
+ MIT
@@ -0,0 +1,50 @@
1
+ #!/bin/sh
2
+ # Start the already-provisioned seat inside its disposable overlay.
3
+ set -eu
4
+ umask 077
5
+
6
+ # shellcheck disable=SC1091
7
+ . /etc/aptl/appliance-release.env
8
+ : "${APTL_SEAT_COMMIT:?missing baked seat identity}"
9
+ test -r /run/aptl-launch/appliance-launch.json
10
+ test -r /run/aptl-launch/boundary-policy.json
11
+ test -r /opt/aptl/offline/oci-images.tar
12
+ guest_python=/usr/bin/python3
13
+ guest_path=/opt/aptl/app:/opt/aptl/python
14
+
15
+ # Apply the descriptor-bound account choice before xrdp or the browser desktop
16
+ # can accept a participant login. The root lab service retains Docker access.
17
+ PYTHONPATH="$guest_path" "$guest_python" /opt/aptl/desktop/seat-privileges.py
18
+
19
+ install -d -m 0700 /var/lib/aptl/overlay
20
+ images_loaded=/var/lib/aptl/overlay/images-loaded
21
+ if test ! -f "$images_loaded"; then
22
+ docker load --input /opt/aptl/offline/oci-images.tar
23
+ marker=$(mktemp /var/lib/aptl/overlay/.images-loaded.XXXXXX)
24
+ sha256sum /opt/aptl/offline/oci-images.tar >"$marker"
25
+ chmod 0600 "$marker"
26
+ mv "$marker" "$images_loaded"
27
+ else
28
+ /usr/local/bin/aptl kill --containers --project-dir /opt/aptl/project
29
+ fi
30
+
31
+ # The desktop account and Guacamole connection are configured in this overlay.
32
+ # Only the gateway's loopback HTTP port is forwarded to the physical host.
33
+ rm -f /home/aptl/.config/aptl/run-ready
34
+ /usr/local/bin/start-seat-desktop
35
+
36
+ PYTHONPATH="$guest_path" "$guest_python" -m aptl.appliance.guest_services proxy &
37
+ proxy_pid=$!
38
+ cleanup() {
39
+ kill "$proxy_pid" 2>/dev/null || true
40
+ }
41
+ trap cleanup EXIT INT TERM
42
+
43
+ /usr/local/bin/aptl lab start \
44
+ --project-dir /opt/aptl/project \
45
+ --offline-staged \
46
+ --appliance-launch-descriptor /run/aptl-launch/appliance-launch.json \
47
+ --appliance-readiness-challenge /run/aptl-launch/readiness-challenge.json \
48
+ --appliance-readiness-device /dev/virtio-ports/org.aptl.readiness
49
+
50
+ wait "$proxy_pid"
@@ -0,0 +1,23 @@
1
+ [Unit]
2
+ Description=APTL disposable appliance first-boot readiness
3
+ After=docker.service network-online.target
4
+ After=run-aptl\x2dlaunch.mount
5
+ Requires=docker.service
6
+ Requires=run-aptl\x2dlaunch.mount
7
+ Wants=network-online.target
8
+
9
+ [Service]
10
+ Type=exec
11
+ ExecStart=/usr/local/libexec/aptl-appliance-first-boot
12
+ Environment=HOME=/var/lib/aptl
13
+ Environment=APTL_SEAT_DESKTOP_HANDOFF=1
14
+ Environment=APTL_SEAT_DESKTOP_MCP_SMOKE=1
15
+ UMask=0077
16
+ NoNewPrivileges=true
17
+ PrivateTmp=true
18
+ ProtectHome=false
19
+ ProtectSystem=strict
20
+ ReadWritePaths=/var/lib/aptl /opt/aptl/project /home/aptl /etc /usr/local/share/ca-certificates
21
+
22
+ [Install]
23
+ WantedBy=multi-user.target
@@ -0,0 +1,12 @@
1
+ [Unit]
2
+ Description=APTL read-only appliance launch inputs
3
+ Before=aptl-appliance-first-boot.service
4
+
5
+ [Mount]
6
+ What=aptl-launch
7
+ Where=/run/aptl-launch
8
+ Type=9p
9
+ Options=trans=virtio,version=9p2000.L,ro
10
+
11
+ [Install]
12
+ WantedBy=multi-user.target