platformforge 0.1.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 (659) hide show
  1. platformforge/__init__.py +7 -0
  2. platformforge/__main__.py +5 -0
  3. platformforge/_forge_portal.py +913 -0
  4. platformforge/_graphstudio.py +376 -0
  5. platformforge/_graphview.py +181 -0
  6. platformforge/_installkit.py +1706 -0
  7. platformforge/agents/__init__.py +156 -0
  8. platformforge/agents/bench.py +61 -0
  9. platformforge/agents/contextpack.py +137 -0
  10. platformforge/agents/contracts.py +394 -0
  11. platformforge/agents/coordinators.py +98 -0
  12. platformforge/agents/critic.py +113 -0
  13. platformforge/agents/debate.py +161 -0
  14. platformforge/agents/executors.py +160 -0
  15. platformforge/agents/guardian.py +48 -0
  16. platformforge/agents/mirrors.py +240 -0
  17. platformforge/agents/orchestrator.py +295 -0
  18. platformforge/agents/planner.py +116 -0
  19. platformforge/agents/playbook.py +51 -0
  20. platformforge/agents/referee.py +132 -0
  21. platformforge/agents/reviewers.py +113 -0
  22. platformforge/agents/roster.py +893 -0
  23. platformforge/agents/runledger.py +85 -0
  24. platformforge/agents/runstore.py +74 -0
  25. platformforge/agents/specialists.py +73 -0
  26. platformforge/agents/taskspec.py +94 -0
  27. platformforge/agents/uniqueness.py +115 -0
  28. platformforge/agents/verifier.py +106 -0
  29. platformforge/aiplat/__init__.py +4 -0
  30. platformforge/aiplat/models.py +175 -0
  31. platformforge/analytics/__init__.py +6 -0
  32. platformforge/analytics/capacity.py +109 -0
  33. platformforge/analytics/debt.py +92 -0
  34. platformforge/analytics/dx.py +69 -0
  35. platformforge/analytics/finops_v4.py +171 -0
  36. platformforge/analytics/goldenpath.py +131 -0
  37. platformforge/analytics/history.py +233 -0
  38. platformforge/analytics/measurement.py +149 -0
  39. platformforge/analytics/models.py +127 -0
  40. platformforge/analytics/opsanalytics.py +119 -0
  41. platformforge/analytics/policyintel.py +139 -0
  42. platformforge/analytics/reliability.py +106 -0
  43. platformforge/analytics/soak.py +135 -0
  44. platformforge/analytics/store.py +254 -0
  45. platformforge/bench.py +174 -0
  46. platformforge/cases/__init__.py +13 -0
  47. platformforge/cases/casefile.py +106 -0
  48. platformforge/cases/context_audit.py +134 -0
  49. platformforge/cases/ledgers.py +174 -0
  50. platformforge/cases/replay.py +142 -0
  51. platformforge/cases/routing_audit.py +162 -0
  52. platformforge/caveman/__init__.py +11 -0
  53. platformforge/caveman/compress.py +156 -0
  54. platformforge/cicd/__init__.py +16 -0
  55. platformforge/cicd/backstage.py +51 -0
  56. platformforge/cicd/dockerfile.py +64 -0
  57. platformforge/cicd/github_actions.py +122 -0
  58. platformforge/cicd/gitlab_ci.py +56 -0
  59. platformforge/cicd/gitops.py +130 -0
  60. platformforge/cli/__init__.py +0 -0
  61. platformforge/cli/fleetcmd.py +457 -0
  62. platformforge/cli/main.py +3832 -0
  63. platformforge/cloud/__init__.py +8 -0
  64. platformforge/cloud/aws.py +254 -0
  65. platformforge/cloud/common.py +69 -0
  66. platformforge/cloud/multicloud.py +143 -0
  67. platformforge/collect/__init__.py +11 -0
  68. platformforge/collect/detect.py +254 -0
  69. platformforge/context/__init__.py +10 -0
  70. platformforge/context/capsule.py +60 -0
  71. platformforge/context/gateway.py +227 -0
  72. platformforge/context/refs.py +49 -0
  73. platformforge/context/sufficiency.py +50 -0
  74. platformforge/core/__init__.py +1 -0
  75. platformforge/core/hashing.py +39 -0
  76. platformforge/core/ownership.py +220 -0
  77. platformforge/core/receipts.py +74 -0
  78. platformforge/core/redaction.py +97 -0
  79. platformforge/core/store.py +119 -0
  80. platformforge/core/workspace.py +89 -0
  81. platformforge/data/contracts/agent-handoff.schema.json +26 -0
  82. platformforge/data/contracts/agent-run.schema.json +27 -0
  83. platformforge/data/contracts/agent-spec.schema.json +43 -0
  84. platformforge/data/contracts/capability.schema.json +23 -0
  85. platformforge/data/contracts/change-event.schema.json +22 -0
  86. platformforge/data/contracts/change-intent.schema.json +62 -0
  87. platformforge/data/contracts/change-plan.schema.json +43 -0
  88. platformforge/data/contracts/collector-receipt.schema.json +36 -0
  89. platformforge/data/contracts/context-pack.schema.json +29 -0
  90. platformforge/data/contracts/debate.schema.json +31 -0
  91. platformforge/data/contracts/distribution-manifest-v1.schema.json +81 -0
  92. platformforge/data/contracts/drift-event.schema.json +21 -0
  93. platformforge/data/contracts/fact.schema.json +35 -0
  94. platformforge/data/contracts/finding.schema.json +20 -0
  95. platformforge/data/contracts/graph-v2.schema.json +67 -0
  96. platformforge/data/contracts/graph.schema.json +40 -0
  97. platformforge/data/contracts/install-receipt-v1.schema.json +49 -0
  98. platformforge/data/contracts/observation.schema.json +93 -0
  99. platformforge/data/contracts/receipt.schema.json +21 -0
  100. platformforge/data/contracts/recommendation.schema.json +32 -0
  101. platformforge/data/contracts/refusal.schema.json +16 -0
  102. platformforge/data/contracts/slo-contract.schema.json +25 -0
  103. platformforge/data/contracts/task-spec.schema.json +37 -0
  104. platformforge/data/contracts/workspace-manifest-v1.schema.json +62 -0
  105. platformforge/data/evals/cases/agent-budget-exhaustion/case.yaml +6 -0
  106. platformforge/data/evals/cases/agent-conflicting-specialists/case.yaml +11 -0
  107. platformforge/data/evals/cases/agent-fleet-optimization/case.yaml +13 -0
  108. platformforge/data/evals/cases/agent-host-no-subagents/case.yaml +6 -0
  109. platformforge/data/evals/cases/agent-incident-multi/case.yaml +13 -0
  110. platformforge/data/evals/cases/agent-missing-evidence/case.yaml +6 -0
  111. platformforge/data/evals/cases/agent-multi-domain-audit/case.yaml +14 -0
  112. platformforge/data/evals/cases/agent-production-change/case.yaml +15 -0
  113. platformforge/data/evals/cases/agent-security-mandatory/case.yaml +12 -0
  114. platformforge/data/evals/cases/agent-simple-iac/case.yaml +14 -0
  115. platformforge/data/evals/cases/approval-integrity-seal/case.yaml +6 -0
  116. platformforge/data/evals/cases/capacity-hot/case.yaml +7 -0
  117. platformforge/data/evals/cases/capacity-hot/fixture/capacity.json +5 -0
  118. platformforge/data/evals/cases/catalog-noowner/case.yaml +7 -0
  119. platformforge/data/evals/cases/catalog-noowner/fixture/catalog-info.yaml +6 -0
  120. platformforge/data/evals/cases/contract-fact/case.yaml +5 -0
  121. platformforge/data/evals/cases/contract-fact/fixture/doc.json +2 -0
  122. platformforge/data/evals/cases/cosign-unverified/case.yaml +8 -0
  123. platformforge/data/evals/cases/cosign-unverified/fixture/sig.json +33 -0
  124. platformforge/data/evals/cases/expected-delta-refusal/case.yaml +6 -0
  125. platformforge/data/evals/cases/finops-noattr/case.yaml +9 -0
  126. platformforge/data/evals/cases/finops-noattr/fixture/costs.json +7 -0
  127. platformforge/data/evals/cases/fleet-inv-absent-allocation-unknown/case.yaml +7 -0
  128. platformforge/data/evals/cases/fleet-inv-centrality-not-criticality/case.yaml +7 -0
  129. platformforge/data/evals/cases/fleet-inv-correlation-not-causality/case.yaml +7 -0
  130. platformforge/data/evals/cases/fleet-inv-dx-no-person-metrics/case.yaml +7 -0
  131. platformforge/data/evals/cases/fleet-inv-federation-restricted-denied/case.yaml +7 -0
  132. platformforge/data/evals/cases/fleet-inv-federation-secret-denied/case.yaml +7 -0
  133. platformforge/data/evals/cases/fleet-inv-history-window-deterministic/case.yaml +7 -0
  134. platformforge/data/evals/cases/fleet-inv-low-util-not-deletable/case.yaml +7 -0
  135. platformforge/data/evals/cases/fleet-inv-member-key-deterministic/case.yaml +7 -0
  136. platformforge/data/evals/cases/fleet-inv-missing-denominator/case.yaml +7 -0
  137. platformforge/data/evals/cases/fleet-inv-partial-coverage-visible/case.yaml +7 -0
  138. platformforge/data/evals/cases/fleet-inv-plan-changeintent-only/case.yaml +7 -0
  139. platformforge/data/evals/cases/fleet-inv-report-all-cited/case.yaml +7 -0
  140. platformforge/data/evals/cases/fleet-inv-small-sample-confidence/case.yaml +7 -0
  141. platformforge/data/evals/cases/fleet-inv-uncertain-optimization-suppressed/case.yaml +7 -0
  142. platformforge/data/evals/cases/gha-dangerous/case.yaml +12 -0
  143. platformforge/data/evals/cases/gha-dangerous/fixture/.github/workflows/ci.yaml +11 -0
  144. platformforge/data/evals/cases/gitops-v2/case.yaml +11 -0
  145. platformforge/data/evals/cases/gitops-v2/fixture/argo.yaml +41 -0
  146. platformforge/data/evals/cases/graph-k8s-blast/case.yaml +7 -0
  147. platformforge/data/evals/cases/graph-k8s-blast/fixture/deploy.yaml +15 -0
  148. platformforge/data/evals/cases/iac-module-nopin/case.yaml +8 -0
  149. platformforge/data/evals/cases/iac-module-nopin/fixture/main.tf +3 -0
  150. platformforge/data/evals/cases/iac-plan-replace/case.yaml +8 -0
  151. platformforge/data/evals/cases/iac-plan-replace/fixture/plan.json +12 -0
  152. platformforge/data/evals/cases/iac-sg-open/case.yaml +8 -0
  153. platformforge/data/evals/cases/iac-sg-open/fixture/main.tf +9 -0
  154. platformforge/data/evals/cases/iam-oidc/case.yaml +8 -0
  155. platformforge/data/evals/cases/iam-oidc/fixture/policy.json +11 -0
  156. platformforge/data/evals/cases/iam-wildcard-positive/case.yaml +8 -0
  157. platformforge/data/evals/cases/iam-wildcard-positive/fixture/policy.json +3 -0
  158. platformforge/data/evals/cases/k8s-bad-actor/case.yaml +19 -0
  159. platformforge/data/evals/cases/k8s-bad-actor/fixture/app.yaml +97 -0
  160. platformforge/data/evals/cases/k8s-beta-api/case.yaml +8 -0
  161. platformforge/data/evals/cases/k8s-beta-api/fixture/cr.yaml +7 -0
  162. platformforge/data/evals/cases/k8s-dep-api-boundary/case.yaml +15 -0
  163. platformforge/data/evals/cases/k8s-dep-api-boundary/fixture/app.yaml +25 -0
  164. platformforge/data/evals/cases/k8s-dep-api-clean/case.yaml +12 -0
  165. platformforge/data/evals/cases/k8s-dep-api-clean/fixture/app.yaml +29 -0
  166. platformforge/data/evals/cases/k8s-dep-api-unknown/case.yaml +11 -0
  167. platformforge/data/evals/cases/k8s-dep-api-unknown/fixture/app.yaml +25 -0
  168. platformforge/data/evals/cases/k8s-dep-api-v120/case.yaml +12 -0
  169. platformforge/data/evals/cases/k8s-dep-api-v120/fixture/app.yaml +25 -0
  170. platformforge/data/evals/cases/k8s-dep-api-v129/case.yaml +9 -0
  171. platformforge/data/evals/cases/k8s-dep-api-v129/fixture/app.yaml +25 -0
  172. platformforge/data/evals/cases/k8s-hpa-noreq/case.yaml +8 -0
  173. platformforge/data/evals/cases/k8s-hpa-noreq/fixture/app.yaml +28 -0
  174. platformforge/data/evals/cases/k8s-limits-boundary/case.yaml +10 -0
  175. platformforge/data/evals/cases/k8s-limits-boundary/fixture/app.yaml +15 -0
  176. platformforge/data/evals/cases/k8s-limits-negative/case.yaml +8 -0
  177. platformforge/data/evals/cases/k8s-limits-negative/fixture/deploy.yaml +15 -0
  178. platformforge/data/evals/cases/k8s-limits-positive/case.yaml +8 -0
  179. platformforge/data/evals/cases/k8s-limits-positive/fixture/deploy.yaml +14 -0
  180. platformforge/data/evals/cases/k8s-nopdb/case.yaml +7 -0
  181. platformforge/data/evals/cases/k8s-nopdb/fixture/app.yaml +34 -0
  182. platformforge/data/evals/cases/knowledge-registry/case.yaml +10 -0
  183. platformforge/data/evals/cases/kyverno-dep/case.yaml +10 -0
  184. platformforge/data/evals/cases/kyverno-dep/fixture/pol.yaml +18 -0
  185. platformforge/data/evals/cases/kyverno-legacy/case.yaml +8 -0
  186. platformforge/data/evals/cases/kyverno-legacy/fixture/pol.yaml +7 -0
  187. platformforge/data/evals/cases/live-aws-collect/case.yaml +11 -0
  188. platformforge/data/evals/cases/live-aws-collect/fixture/aws/ec2_describe-vpcs.json +15 -0
  189. platformforge/data/evals/cases/live-aws-collect/fixture/aws/iam_list-users.denied.txt +1 -0
  190. platformforge/data/evals/cases/live-aws-collect/fixture/aws/sts_get-caller-identity.json +5 -0
  191. platformforge/data/evals/cases/live-drift/case.yaml +8 -0
  192. platformforge/data/evals/cases/live-drift/fixture/after.json +22 -0
  193. platformforge/data/evals/cases/live-drift/fixture/before.json +22 -0
  194. platformforge/data/evals/cases/live-incident/case.yaml +7 -0
  195. platformforge/data/evals/cases/live-incident/fixture/changes.json +8 -0
  196. platformforge/data/evals/cases/live-incident/fixture/incident.json +7 -0
  197. platformforge/data/evals/cases/live-k8s-collect/case.yaml +10 -0
  198. platformforge/data/evals/cases/live-k8s-collect/fixture/kubectl/get_configmaps.denied.txt +1 -0
  199. platformforge/data/evals/cases/live-k8s-collect/fixture/kubectl/get_deployments.apps.json +25 -0
  200. platformforge/data/evals/cases/live-k8s-collect/fixture/kubectl/get_pods.json +17 -0
  201. platformforge/data/evals/cases/live-k8s-collect/fixture/kubectl/get_secrets.json +13 -0
  202. platformforge/data/evals/cases/live-multicluster/case.yaml +7 -0
  203. platformforge/data/evals/cases/live-multicluster/fixture/clusters.json +6 -0
  204. platformforge/data/evals/cases/live-plan/case.yaml +7 -0
  205. platformforge/data/evals/cases/live-plan/fixture/drift.json +8 -0
  206. platformforge/data/evals/cases/live-reconcile/case.yaml +7 -0
  207. platformforge/data/evals/cases/live-reconcile/fixture/desired.json +7 -0
  208. platformforge/data/evals/cases/live-reconcile/fixture/observed.json +18 -0
  209. platformforge/data/evals/cases/live-secrets-boundary/case.yaml +8 -0
  210. platformforge/data/evals/cases/live-secrets-boundary/fixture/envelope.json +16 -0
  211. platformforge/data/evals/cases/live-temporal-graph/case.yaml +10 -0
  212. platformforge/data/evals/cases/live-temporal-graph/fixture/graph.json +22 -0
  213. platformforge/data/evals/cases/ops-approval/case.yaml +6 -0
  214. platformforge/data/evals/cases/ops-convergence/case.yaml +6 -0
  215. platformforge/data/evals/cases/ops-execution-safety/case.yaml +6 -0
  216. platformforge/data/evals/cases/ops-intent/case.yaml +6 -0
  217. platformforge/data/evals/cases/ops-planning/case.yaml +6 -0
  218. platformforge/data/evals/cases/ops-policy/case.yaml +6 -0
  219. platformforge/data/evals/cases/ops-rollback/case.yaml +6 -0
  220. platformforge/data/evals/cases/ops-verification/case.yaml +6 -0
  221. platformforge/data/evals/cases/rollback-argocd-revision/case.yaml +6 -0
  222. platformforge/data/evals/cases/rollback-blind-inverse/case.yaml +6 -0
  223. platformforge/data/evals/cases/rollback-git-commit/case.yaml +6 -0
  224. platformforge/data/evals/cases/rollback-impossible/case.yaml +6 -0
  225. platformforge/data/evals/cases/rollback-k8s-annotation-restore/case.yaml +6 -0
  226. platformforge/data/evals/cases/rollback-k8s-scale/case.yaml +6 -0
  227. platformforge/data/evals/cases/rollback-material-tamper/case.yaml +6 -0
  228. platformforge/data/evals/cases/rollback-terraform-replan/case.yaml +6 -0
  229. platformforge/data/evals/cases/rollback-unknown/case.yaml +6 -0
  230. platformforge/data/evals/cases/routing-specialist/case.yaml +9 -0
  231. platformforge/data/evals/cases/rtk-roundtrip/case.yaml +5 -0
  232. platformforge/data/evals/cases/rtk-roundtrip/fixture/verbose.txt +300 -0
  233. platformforge/data/evals/cases/sbom-vuln/case.yaml +9 -0
  234. platformforge/data/evals/cases/sbom-vuln/fixture/sbom.json +9 -0
  235. platformforge/data/evals/cases/secret-prose-mixed/fixture/app.env +1 -0
  236. platformforge/data/evals/cases/secret-prose-mixed/fixture/policy-notes.md +7 -0
  237. platformforge/data/evals/cases/secrets-noleak/case.yaml +5 -0
  238. platformforge/data/evals/cases/secrets-noleak/fixture/app.env +2 -0
  239. platformforge/data/evals/cases/slo-fastburn/case.yaml +8 -0
  240. platformforge/data/evals/cases/slo-fastburn/fixture/events.yaml +2 -0
  241. platformforge/data/evals/cases/slo-fastburn/fixture/slo.yaml +4 -0
  242. platformforge/data/evals/cases/slo-noinput/case.yaml +8 -0
  243. platformforge/data/evals/cases/slo-noinput/fixture/events.yaml +1 -0
  244. platformforge/data/evals/cases/slo-noinput/fixture/slo.yaml +4 -0
  245. platformforge/data/evals/cases/sot-conflict/case.yaml +6 -0
  246. platformforge/data/evals/cases/token-budget/case.yaml +6 -0
  247. platformforge/data/evals/cases/token-budget/fixture/big.py +50 -0
  248. platformforge/data/evals/cases/xr-delete/case.yaml +8 -0
  249. platformforge/data/evals/cases/xr-delete/fixture/xr.yaml +10 -0
  250. platformforge/data/evals/cases/xr-graph-chain/case.yaml +8 -0
  251. platformforge/data/evals/cases/xr-graph-chain/fixture/xrd.yaml +90 -0
  252. platformforge/data/evals/cases/xr-negative-crd/case.yaml +8 -0
  253. platformforge/data/evals/cases/xr-negative-crd/fixture/widget.yaml +19 -0
  254. platformforge/data/evals/cases/xr-upbound-mr/case.yaml +8 -0
  255. platformforge/data/evals/cases/xr-upbound-mr/fixture/bucket.yaml +12 -0
  256. platformforge/data/evals/qpt-bench/change-review/case.yaml +5 -0
  257. platformforge/data/evals/qpt-bench/change-review/fixture/plan.json +9 -0
  258. platformforge/data/evals/qpt-bench/gha-security/case.yaml +5 -0
  259. platformforge/data/evals/qpt-bench/gha-security/fixture/ci.yml +10 -0
  260. platformforge/data/evals/qpt-bench/iam-investigate/case.yaml +5 -0
  261. platformforge/data/evals/qpt-bench/iam-investigate/fixture/policy.json +6 -0
  262. platformforge/data/evals/qpt-bench/incident-analysis/case.yaml +5 -0
  263. platformforge/data/evals/qpt-bench/incident-analysis/fixture/query.json +5 -0
  264. platformforge/data/evals/qpt-bench/incident-analysis/fixture/rules.yaml +6 -0
  265. platformforge/data/evals/qpt-bench/k8s-review/case.yaml +6 -0
  266. platformforge/data/evals/qpt-bench/k8s-review/fixture/deploy.yaml +15 -0
  267. platformforge/data/evals/qpt-bench/tf-security/case.yaml +5 -0
  268. platformforge/data/evals/qpt-bench/tf-security/fixture/main.tf +17 -0
  269. platformforge/data/knowledge/aws/eks.yaml +20 -0
  270. platformforge/data/knowledge/aws/iam.yaml +28 -0
  271. platformforge/data/knowledge/aws/network-exposure.yaml +19 -0
  272. platformforge/data/knowledge/aws/organizations.yaml +19 -0
  273. platformforge/data/knowledge/crossplane/composition-providers.yaml +20 -0
  274. platformforge/data/knowledge/crossplane/managed-resources.yaml +26 -0
  275. platformforge/data/knowledge/crossplane/v1-v2.yaml +25 -0
  276. platformforge/data/knowledge/kubernetes/api-deprecations.yaml +33 -0
  277. platformforge/data/knowledge/kubernetes/autoscaling-rbac.yaml +27 -0
  278. platformforge/data/knowledge/kubernetes/gateway-api.yaml +20 -0
  279. platformforge/data/knowledge/kubernetes/pod-security.yaml +26 -0
  280. platformforge/data/knowledge/sources.yaml +516 -0
  281. platformforge/data/knowledge/terraform/lifecycle.yaml +18 -0
  282. platformforge/data/knowledge/terraform/plan-semantics.yaml +26 -0
  283. platformforge/data/lab/chaos-pod-kill/chaos.yaml +3 -0
  284. platformforge/data/lab/chaos-pod-kill/facts.json +13 -0
  285. platformforge/data/lab/fleets/acme/capacity.yaml +35 -0
  286. platformforge/data/lab/fleets/acme/costs.yaml +25 -0
  287. platformforge/data/lab/fleets/acme/events.yaml +41 -0
  288. platformforge/data/lab/fleets/acme/fleet.yaml +51 -0
  289. platformforge/data/lab/fleets/acme/graph.yaml +45 -0
  290. platformforge/data/lab/fleets/acme/policies.yaml +28 -0
  291. platformforge/data/lab/fleets/acme/requests.yaml +24 -0
  292. platformforge/data/lab/scenarios/argo-bad-rollout/expected.yaml +6 -0
  293. platformforge/data/lab/scenarios/argo-bad-rollout/fixture/app.yaml +9 -0
  294. platformforge/data/lab/scenarios/aws-dump/expected.yaml +19 -0
  295. platformforge/data/lab/scenarios/aws-dump/fixture/compute.json +4 -0
  296. platformforge/data/lab/scenarios/aws-dump/fixture/iam.json +7 -0
  297. platformforge/data/lab/scenarios/aws-dump/fixture/network.json +6 -0
  298. platformforge/data/lab/scenarios/aws-dump/fixture/org.json +4 -0
  299. platformforge/data/lab/scenarios/aws-dump/fixture/storage.json +4 -0
  300. platformforge/data/lab/scenarios/container-unsigned/expected.yaml +5 -0
  301. platformforge/data/lab/scenarios/container-unsigned/fixture/supply.json +11 -0
  302. platformforge/data/lab/scenarios/cost-idle-workload/expected.yaml +5 -0
  303. platformforge/data/lab/scenarios/cost-idle-workload/fixture/costs.json +12 -0
  304. platformforge/data/lab/scenarios/crossplane-platform/expected.yaml +16 -0
  305. platformforge/data/lab/scenarios/crossplane-platform/fixture/negative.yaml +18 -0
  306. platformforge/data/lab/scenarios/crossplane-platform/fixture/xrd.yaml +90 -0
  307. platformforge/data/lab/scenarios/demo-platform/expected.yaml +16 -0
  308. platformforge/data/lab/scenarios/demo-platform/fixture/.github/workflows/ci.yml +10 -0
  309. platformforge/data/lab/scenarios/demo-platform/fixture/deploy.yaml +16 -0
  310. platformforge/data/lab/scenarios/demo-platform/fixture/infra.tf +5 -0
  311. platformforge/data/lab/scenarios/fleet-ai/expected.yaml +12 -0
  312. platformforge/data/lab/scenarios/fleet-capacity/expected.yaml +12 -0
  313. platformforge/data/lab/scenarios/fleet-cost/expected.yaml +18 -0
  314. platformforge/data/lab/scenarios/fleet-federation/expected.yaml +11 -0
  315. platformforge/data/lab/scenarios/fleet-golden-path/expected.yaml +18 -0
  316. platformforge/data/lab/scenarios/fleet-op-hotspot/expected.yaml +11 -0
  317. platformforge/data/lab/scenarios/fleet-ownership/expected.yaml +17 -0
  318. platformforge/data/lab/scenarios/fleet-partial/expected.yaml +10 -0
  319. platformforge/data/lab/scenarios/fleet-policy-friction/expected.yaml +10 -0
  320. platformforge/data/lab/scenarios/fleet-recurring-incident/expected.yaml +12 -0
  321. platformforge/data/lab/scenarios/fleet-report/expected.yaml +13 -0
  322. platformforge/data/lab/scenarios/fleet-risk/expected.yaml +18 -0
  323. platformforge/data/lab/scenarios/gitops-drift/expected.yaml +6 -0
  324. platformforge/data/lab/scenarios/gitops-drift/fixture/app.yaml +12 -0
  325. platformforge/data/lab/scenarios/k8s-bad-readiness/expected.yaml +6 -0
  326. platformforge/data/lab/scenarios/k8s-bad-readiness/fixture/deploy.yaml +23 -0
  327. platformforge/data/lab/scenarios/k8s-bad-readiness/fixture/netpol.yaml +9 -0
  328. platformforge/data/lab/scenarios/k8s-missing-limits/expected.yaml +6 -0
  329. platformforge/data/lab/scenarios/k8s-missing-limits/fixture/deploy.yaml +26 -0
  330. platformforge/data/lab/scenarios/k8s-missing-limits/fixture/netpol.yaml +9 -0
  331. platformforge/data/lab/scenarios/k8s-single-replica/expected.yaml +5 -0
  332. platformforge/data/lab/scenarios/k8s-single-replica/fixture/deploy.yaml +26 -0
  333. platformforge/data/lab/scenarios/k8s-single-replica/fixture/netpol.yaml +4 -0
  334. platformforge/data/lab/scenarios/live-aws-collect/expected.yaml +4 -0
  335. platformforge/data/lab/scenarios/live-aws-collect/fixture/aws/ec2_describe-vpcs.json +15 -0
  336. platformforge/data/lab/scenarios/live-aws-collect/fixture/aws/iam_list-users.denied.txt +1 -0
  337. platformforge/data/lab/scenarios/live-aws-collect/fixture/aws/sts_get-caller-identity.json +5 -0
  338. platformforge/data/lab/scenarios/live-k8s-collect/expected.yaml +4 -0
  339. platformforge/data/lab/scenarios/live-k8s-collect/fixture/kubectl/get_configmaps.denied.txt +1 -0
  340. platformforge/data/lab/scenarios/live-k8s-collect/fixture/kubectl/get_deployments.apps.json +25 -0
  341. platformforge/data/lab/scenarios/live-k8s-collect/fixture/kubectl/get_pods.json +17 -0
  342. platformforge/data/lab/scenarios/live-k8s-collect/fixture/kubectl/get_secrets.json +13 -0
  343. platformforge/data/lab/scenarios/live-kind/expected.yaml +14 -0
  344. platformforge/data/lab/scenarios/live-kind/fixture/kubectl/get_configmaps.denied.txt +1 -0
  345. platformforge/data/lab/scenarios/live-kind/fixture/kubectl/get_deployments.apps.json +25 -0
  346. platformforge/data/lab/scenarios/live-kind/fixture/kubectl/get_pods.json +17 -0
  347. platformforge/data/lab/scenarios/live-kind/fixture/kubectl/get_secrets.json +13 -0
  348. platformforge/data/lab/scenarios/network-policy-missing/expected.yaml +6 -0
  349. platformforge/data/lab/scenarios/network-policy-missing/fixture/deploy.yaml +26 -0
  350. platformforge/data/lab/scenarios/ops-bad-rollout/expected.yaml +3 -0
  351. platformforge/data/lab/scenarios/ops-bad-rollout/fixture/ops.yaml +33 -0
  352. platformforge/data/lab/scenarios/ops-break-glass/expected.yaml +3 -0
  353. platformforge/data/lab/scenarios/ops-break-glass/fixture/ops.yaml +21 -0
  354. platformforge/data/lab/scenarios/ops-broken-selector/expected.yaml +3 -0
  355. platformforge/data/lab/scenarios/ops-broken-selector/fixture/ops.yaml +21 -0
  356. platformforge/data/lab/scenarios/ops-changed-plan-hash/expected.yaml +3 -0
  357. platformforge/data/lab/scenarios/ops-changed-plan-hash/fixture/ops.yaml +20 -0
  358. platformforge/data/lab/scenarios/ops-conflicting-operation/expected.yaml +3 -0
  359. platformforge/data/lab/scenarios/ops-conflicting-operation/fixture/ops.yaml +21 -0
  360. platformforge/data/lab/scenarios/ops-expired-approval/expected.yaml +3 -0
  361. platformforge/data/lab/scenarios/ops-expired-approval/fixture/ops.yaml +20 -0
  362. platformforge/data/lab/scenarios/ops-partial-failure/expected.yaml +3 -0
  363. platformforge/data/lab/scenarios/ops-partial-failure/fixture/ops.yaml +24 -0
  364. platformforge/data/lab/scenarios/ops-policy-denial/expected.yaml +3 -0
  365. platformforge/data/lab/scenarios/ops-policy-denial/fixture/ops.yaml +17 -0
  366. platformforge/data/lab/scenarios/ops-replica-drift/expected.yaml +3 -0
  367. platformforge/data/lab/scenarios/ops-replica-drift/fixture/ops.yaml +28 -0
  368. platformforge/data/lab/scenarios/ops-rollback-annotate/expected.yaml +3 -0
  369. platformforge/data/lab/scenarios/ops-rollback-annotate/fixture/ops.yaml +41 -0
  370. platformforge/data/lab/scenarios/ops-rollback-gitops/expected.yaml +3 -0
  371. platformforge/data/lab/scenarios/ops-rollback-gitops/fixture/ops.yaml +38 -0
  372. platformforge/data/lab/scenarios/ops-rollback-impossible/expected.yaml +3 -0
  373. platformforge/data/lab/scenarios/ops-rollback-impossible/fixture/ops.yaml +34 -0
  374. platformforge/data/lab/scenarios/ops-rollback-scale/expected.yaml +3 -0
  375. platformforge/data/lab/scenarios/ops-rollback-scale/fixture/ops.yaml +40 -0
  376. platformforge/data/lab/scenarios/ops-rollback-terraform/expected.yaml +3 -0
  377. platformforge/data/lab/scenarios/ops-rollback-terraform/fixture/ops.yaml +38 -0
  378. platformforge/data/lab/scenarios/ops-rollback-terraform/fixture/tf/tfplan.bin +1 -0
  379. platformforge/data/lab/scenarios/ops-stale-observation/expected.yaml +3 -0
  380. platformforge/data/lab/scenarios/ops-stale-observation/fixture/ops.yaml +20 -0
  381. platformforge/data/lab/scenarios/secret-exposure/expected.yaml +5 -0
  382. platformforge/data/lab/scenarios/secret-exposure/fixture/app.env +2 -0
  383. platformforge/data/lab/scenarios/slo-burn/expected.yaml +5 -0
  384. platformforge/data/lab/scenarios/slo-burn/fixture/events.yaml +2 -0
  385. platformforge/data/lab/scenarios/slo-burn/fixture/slo.yaml +4 -0
  386. platformforge/data/lab/scenarios/terraform-iam-wildcard/expected.yaml +5 -0
  387. platformforge/data/lab/scenarios/terraform-iam-wildcard/fixture/policy.json +14 -0
  388. platformforge/data/lab/scenarios/terraform-public-bucket/expected.yaml +6 -0
  389. platformforge/data/lab/scenarios/terraform-public-bucket/fixture/main.tf +5 -0
  390. platformforge/data/portable_skills/platformforge-agents/SKILL.md +47 -0
  391. platformforge/data/portable_skills/platformforge-change/SKILL.md +41 -0
  392. platformforge/data/portable_skills/platformforge-core/SKILL.md +62 -0
  393. platformforge/data/portable_skills/platformforge-economy/SKILL.md +42 -0
  394. platformforge/data/portable_skills/platformforge-finops/SKILL.md +34 -0
  395. platformforge/data/portable_skills/platformforge-fleet/SKILL.md +39 -0
  396. platformforge/data/portable_skills/platformforge-governance/SKILL.md +76 -0
  397. platformforge/data/portable_skills/platformforge-graph/SKILL.md +46 -0
  398. platformforge/data/portable_skills/platformforge-lab/SKILL.md +39 -0
  399. platformforge/data/portable_skills/platformforge-sdd/SKILL.md +39 -0
  400. platformforge/data/portable_skills/platformforge-security/SKILL.md +38 -0
  401. platformforge/data/portable_skills/platformforge-sre/SKILL.md +41 -0
  402. platformforge/data/rules/catalog/finops.yaml +26 -0
  403. platformforge/data/rules/catalog/gitops.yaml +161 -0
  404. platformforge/data/rules/catalog/iac.yaml +84 -0
  405. platformforge/data/rules/catalog/k8s.yaml +322 -0
  406. platformforge/data/rules/catalog/orchestration.yaml +99 -0
  407. platformforge/data/rules/catalog/product.yaml +42 -0
  408. platformforge/data/rules/catalog/routing.yaml +122 -0
  409. platformforge/data/rules/catalog/security.yaml +159 -0
  410. platformforge/data/rules/catalog/sre.yaml +67 -0
  411. platformforge/diagnose/__init__.py +75 -0
  412. platformforge/distribution/__init__.py +18 -0
  413. platformforge/distribution/bundle.py +127 -0
  414. platformforge/distribution/hostflow.py +247 -0
  415. platformforge/distribution/models.py +80 -0
  416. platformforge/distribution/service.py +225 -0
  417. platformforge/economy/__init__.py +27 -0
  418. platformforge/economy/bench.py +66 -0
  419. platformforge/economy/budget.py +198 -0
  420. platformforge/economy/cache.py +287 -0
  421. platformforge/economy/checkpoint.py +112 -0
  422. platformforge/economy/collection.py +142 -0
  423. platformforge/economy/doctor.py +207 -0
  424. platformforge/economy/engine.py +158 -0
  425. platformforge/economy/envelope.py +61 -0
  426. platformforge/economy/fleetpack.py +86 -0
  427. platformforge/economy/ledger.py +232 -0
  428. platformforge/economy/plan.py +131 -0
  429. platformforge/economy/pricing.py +101 -0
  430. platformforge/economy/qpt.py +286 -0
  431. platformforge/economy/reconcile.py +86 -0
  432. platformforge/economy/verifyplan.py +107 -0
  433. platformforge/economy/waste.py +123 -0
  434. platformforge/evals/__init__.py +16 -0
  435. platformforge/evals/coverage.py +140 -0
  436. platformforge/evals/fleet_invariants.py +260 -0
  437. platformforge/evals/ops_invariants.py +158 -0
  438. platformforge/evals/runner.py +541 -0
  439. platformforge/federation/__init__.py +4 -0
  440. platformforge/federation/node.py +135 -0
  441. platformforge/finops/__init__.py +14 -0
  442. platformforge/finops/alloc.py +31 -0
  443. platformforge/finops/costs.py +79 -0
  444. platformforge/finops/focus.py +100 -0
  445. platformforge/finops/graph_cost.py +51 -0
  446. platformforge/finops/ingest.py +144 -0
  447. platformforge/finops/insights.py +193 -0
  448. platformforge/finops/unit.py +36 -0
  449. platformforge/fleet/__init__.py +5 -0
  450. platformforge/fleet/loader.py +73 -0
  451. platformforge/fleet/models.py +155 -0
  452. platformforge/fleet/orggraph.py +172 -0
  453. platformforge/fleet/query.py +154 -0
  454. platformforge/forge/__init__.py +9 -0
  455. platformforge/forge/collect.py +88 -0
  456. platformforge/forge/delegate.py +77 -0
  457. platformforge/forge/manifest.py +106 -0
  458. platformforge/freeze/__init__.py +22 -0
  459. platformforge/freeze/exceptions.py +56 -0
  460. platformforge/freeze/manifest.py +167 -0
  461. platformforge/freeze/snapshots.py +108 -0
  462. platformforge/graph/__init__.py +39 -0
  463. platformforge/graph/backend.py +174 -0
  464. platformforge/graph/bench.py +245 -0
  465. platformforge/graph/build.py +130 -0
  466. platformforge/graph/delivery.py +183 -0
  467. platformforge/graph/diff.py +292 -0
  468. platformforge/graph/events.py +116 -0
  469. platformforge/graph/migrate.py +44 -0
  470. platformforge/graph/model.py +264 -0
  471. platformforge/graph/persist.py +97 -0
  472. platformforge/graph/query.py +290 -0
  473. platformforge/graph/temporal.py +78 -0
  474. platformforge/graph/vocab.py +63 -0
  475. platformforge/graphview.py +94 -0
  476. platformforge/iac/__init__.py +7 -0
  477. platformforge/iac/drift.py +53 -0
  478. platformforge/iac/plan.py +84 -0
  479. platformforge/iac/terraform.py +123 -0
  480. platformforge/install/__init__.py +1 -0
  481. platformforge/install/service.py +421 -0
  482. platformforge/k8s/__init__.py +8 -0
  483. platformforge/k8s/helm.py +152 -0
  484. platformforge/k8s/hubble.py +87 -0
  485. platformforge/k8s/manifests.py +513 -0
  486. platformforge/knowledge/__init__.py +1 -0
  487. platformforge/knowledge/packs.py +157 -0
  488. platformforge/knowledge/registry.py +249 -0
  489. platformforge/knowledge/select.py +127 -0
  490. platformforge/lab/__init__.py +5 -0
  491. platformforge/lab/chaos.py +71 -0
  492. platformforge/lab/fleetlab.py +351 -0
  493. platformforge/lab/opslab.py +271 -0
  494. platformforge/lab/runner.py +219 -0
  495. platformforge/live/__init__.py +36 -0
  496. platformforge/live/budget.py +92 -0
  497. platformforge/live/capability.py +80 -0
  498. platformforge/live/collectors/__init__.py +6 -0
  499. platformforge/live/collectors/aws.py +370 -0
  500. platformforge/live/collectors/aws_transport.py +98 -0
  501. platformforge/live/collectors/k8s.py +389 -0
  502. platformforge/live/collectors/k8s_transport.py +85 -0
  503. platformforge/live/cursors.py +48 -0
  504. platformforge/live/drift.py +130 -0
  505. platformforge/live/envelope.py +85 -0
  506. platformforge/live/federation.py +113 -0
  507. platformforge/live/fixtures.py +168 -0
  508. platformforge/live/identity.py +258 -0
  509. platformforge/live/incident.py +200 -0
  510. platformforge/live/models.py +435 -0
  511. platformforge/live/reconcile.py +382 -0
  512. platformforge/live/remediate.py +169 -0
  513. platformforge/live/store.py +256 -0
  514. platformforge/live/topology.py +249 -0
  515. platformforge/mcp/__init__.py +7 -0
  516. platformforge/mcp/parity.py +69 -0
  517. platformforge/mcp/registry.py +427 -0
  518. platformforge/mcp/server.py +84 -0
  519. platformforge/mcp/tools.py +732 -0
  520. platformforge/models/__init__.py +21 -0
  521. platformforge/models/base.py +214 -0
  522. platformforge/observe/__init__.py +26 -0
  523. platformforge/observe/capacity.py +39 -0
  524. platformforge/observe/dr.py +67 -0
  525. platformforge/observe/grafana.py +76 -0
  526. platformforge/observe/incident.py +58 -0
  527. platformforge/observe/otel.py +135 -0
  528. platformforge/observe/postmortem.py +72 -0
  529. platformforge/observe/prometheus.py +88 -0
  530. platformforge/observe/slo.py +125 -0
  531. platformforge/ops/__init__.py +8 -0
  532. platformforge/ops/actions.py +215 -0
  533. platformforge/ops/analytics.py +83 -0
  534. platformforge/ops/approval.py +275 -0
  535. platformforge/ops/autorem.py +101 -0
  536. platformforge/ops/config.py +175 -0
  537. platformforge/ops/engine.py +758 -0
  538. platformforge/ops/envelope.py +135 -0
  539. platformforge/ops/executors/__init__.py +1 -0
  540. platformforge/ops/executors/base.py +211 -0
  541. platformforge/ops/executors/git.py +77 -0
  542. platformforge/ops/executors/gitops.py +134 -0
  543. platformforge/ops/executors/terraform.py +84 -0
  544. platformforge/ops/gates.py +135 -0
  545. platformforge/ops/goldenpath.py +180 -0
  546. platformforge/ops/material.py +181 -0
  547. platformforge/ops/models.py +421 -0
  548. platformforge/ops/operation.py +335 -0
  549. platformforge/ops/opgraph.py +233 -0
  550. platformforge/ops/policy.py +275 -0
  551. platformforge/ops/preconditions.py +109 -0
  552. platformforge/ops/registry.py +101 -0
  553. platformforge/ops/risk.py +216 -0
  554. platformforge/ops/rollback.py +287 -0
  555. platformforge/ops/rollback_builders.py +163 -0
  556. platformforge/ops/runbook.py +269 -0
  557. platformforge/ops/simulate.py +125 -0
  558. platformforge/ops/source_of_truth.py +198 -0
  559. platformforge/ops/store.py +157 -0
  560. platformforge/ops/verify.py +190 -0
  561. platformforge/optimize/__init__.py +4 -0
  562. platformforge/optimize/engine.py +109 -0
  563. platformforge/optimize/models.py +68 -0
  564. platformforge/optimize/scan.py +196 -0
  565. platformforge/plan/__init__.py +107 -0
  566. platformforge/portable_cli.py +199 -0
  567. platformforge/portal_adapter.py +740 -0
  568. platformforge/portal_assets/chunk-7_l-b4Tr.js +1 -0
  569. platformforge/portal_assets/chunk-B0Iad6pD.js +1 -0
  570. platformforge/portal_assets/chunk-B605XnCF.js +1 -0
  571. platformforge/portal_assets/chunk-B7N3TXcn.js +1 -0
  572. platformforge/portal_assets/chunk-BAj6yGem.js +1 -0
  573. platformforge/portal_assets/chunk-BGUitn2r.js +1 -0
  574. platformforge/portal_assets/chunk-BVKnCv85.js +1 -0
  575. platformforge/portal_assets/chunk-BYyM9V_w.js +1 -0
  576. platformforge/portal_assets/chunk-BaQMhq-G.js +1 -0
  577. platformforge/portal_assets/chunk-BavOrxVm.js +1 -0
  578. platformforge/portal_assets/chunk-Bb0C24YV.js +1 -0
  579. platformforge/portal_assets/chunk-BfCFGPzs.js +1 -0
  580. platformforge/portal_assets/chunk-C2t4OUVu.js +1 -0
  581. platformforge/portal_assets/chunk-C3pI4QjU.js +1 -0
  582. platformforge/portal_assets/chunk-C4gpbtbP.js +1 -0
  583. platformforge/portal_assets/chunk-CGWeHhKY.js +1 -0
  584. platformforge/portal_assets/chunk-CJCT86Dr.js +1 -0
  585. platformforge/portal_assets/chunk-CXcsLDPJ.js +1 -0
  586. platformforge/portal_assets/chunk-CcjxoLxw.js +1 -0
  587. platformforge/portal_assets/chunk-D-gBPXHa.js +1 -0
  588. platformforge/portal_assets/chunk-D3eZogIe.js +1 -0
  589. platformforge/portal_assets/chunk-DQU0VyoQ.js +1 -0
  590. platformforge/portal_assets/chunk-DqWNkF1O.js +1 -0
  591. platformforge/portal_assets/chunk-DuPPkSIE.js +3 -0
  592. platformforge/portal_assets/chunk-DyIHOW_a.js +1 -0
  593. platformforge/portal_assets/chunk-Fx4zSGL5.js +1 -0
  594. platformforge/portal_assets/chunk-UBKt05Rg.js +1 -0
  595. platformforge/portal_assets/chunk-htnJDQEY.js +1 -0
  596. platformforge/portal_assets/chunk-kXRFMGqe.js +1 -0
  597. platformforge/portal_assets/chunk-qe3u763a.js +1 -0
  598. platformforge/portal_assets/favicon.ico +0 -0
  599. platformforge/portal_assets/index.html +13 -0
  600. platformforge/portal_assets/main-QDFVZK3T.js +5 -0
  601. platformforge/portal_assets/styles-MQEBDFDX.css +1 -0
  602. platformforge/product/__init__.py +10 -0
  603. platformforge/product/backstage.py +49 -0
  604. platformforge/product/catalog.py +74 -0
  605. platformforge/product/crossplane.py +341 -0
  606. platformforge/product/golden_paths/__init__.py +5 -0
  607. platformforge/product/golden_paths/engine.py +97 -0
  608. platformforge/product/golden_paths/library.yaml +198 -0
  609. platformforge/product/golden_paths/model.py +84 -0
  610. platformforge/product/maturity.py +107 -0
  611. platformforge/product/scorecards.py +84 -0
  612. platformforge/resources.py +36 -0
  613. platformforge/risk/__init__.py +5 -0
  614. platformforge/risk/engine.py +95 -0
  615. platformforge/risk/signals.py +49 -0
  616. platformforge/routing/__init__.py +13 -0
  617. platformforge/routing/decision.py +191 -0
  618. platformforge/routing/router.py +328 -0
  619. platformforge/rtk/__init__.py +9 -0
  620. platformforge/rtk/compact.py +127 -0
  621. platformforge/rtk/parsers.py +199 -0
  622. platformforge/rules/__init__.py +5 -0
  623. platformforge/rules/engine.py +345 -0
  624. platformforge/sandbox/__init__.py +7 -0
  625. platformforge/sandbox/env.py +151 -0
  626. platformforge/sandbox/review.py +92 -0
  627. platformforge/sdd/__init__.py +8 -0
  628. platformforge/sdd/lifecycle.py +239 -0
  629. platformforge/security/__init__.py +19 -0
  630. platformforge/security/cosign.py +67 -0
  631. platformforge/security/iam.py +112 -0
  632. platformforge/security/identity.py +84 -0
  633. platformforge/security/kyverno.py +106 -0
  634. platformforge/security/sbom.py +59 -0
  635. platformforge/security/scan.py +63 -0
  636. platformforge/security/slsa.py +86 -0
  637. platformforge/security/supply.py +62 -0
  638. platformforge/tokensave/__init__.py +20 -0
  639. platformforge/tokensave/budget.py +62 -0
  640. platformforge/tokensave/estimate.py +21 -0
  641. platformforge/tokensave/index.py +172 -0
  642. platformforge/tokensave/ledger.py +121 -0
  643. platformforge/tokensave/packs.py +285 -0
  644. platformforge/ui/__init__.py +28 -0
  645. platformforge/ui/app.py +465 -0
  646. platformforge/ui/home.py +113 -0
  647. platformforge/ui/i18n.py +143 -0
  648. platformforge/ui/kit.py +689 -0
  649. platformforge/ui/screen.py +628 -0
  650. platformforge/ui/tui.py +94 -0
  651. platformforge/ui/wizard.py +309 -0
  652. platformforge/workspace/__init__.py +13 -0
  653. platformforge/workspace/models.py +35 -0
  654. platformforge/workspace/service.py +69 -0
  655. platformforge-0.1.0.dist-info/METADATA +212 -0
  656. platformforge-0.1.0.dist-info/RECORD +659 -0
  657. platformforge-0.1.0.dist-info/WHEEL +4 -0
  658. platformforge-0.1.0.dist-info/entry_points.txt +3 -0
  659. platformforge-0.1.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,9 @@
1
+ id: routing-specialist
2
+ type: routing
3
+ signal:
4
+ task_type: analysis
5
+ domains: [k8s]
6
+ complexity: low
7
+ evidence_available: true
8
+ expect:
9
+ mode: single-specialist
@@ -0,0 +1,5 @@
1
+ id: rtk-roundtrip
2
+ type: property
3
+ fixture: fixture/verbose.txt
4
+ expect:
5
+ check: rtk_round_trip
@@ -0,0 +1,300 @@
1
+ INFO worker-0 processed 0 items
2
+ INFO worker-1 processed 137 items
3
+ INFO worker-2 processed 274 items
4
+ INFO worker-3 processed 411 items
5
+ INFO worker-4 processed 548 items
6
+ INFO worker-5 processed 685 items
7
+ INFO worker-6 processed 822 items
8
+ INFO worker-7 processed 959 items
9
+ INFO worker-8 processed 1096 items
10
+ INFO worker-9 processed 1233 items
11
+ INFO worker-10 processed 1370 items
12
+ INFO worker-11 processed 1507 items
13
+ INFO worker-12 processed 1644 items
14
+ INFO worker-13 processed 1781 items
15
+ INFO worker-14 processed 1918 items
16
+ INFO worker-15 processed 2055 items
17
+ INFO worker-16 processed 2192 items
18
+ INFO worker-17 processed 2329 items
19
+ INFO worker-18 processed 2466 items
20
+ INFO worker-19 processed 2603 items
21
+ INFO worker-20 processed 2740 items
22
+ INFO worker-21 processed 2877 items
23
+ INFO worker-22 processed 3014 items
24
+ INFO worker-23 processed 3151 items
25
+ INFO worker-24 processed 3288 items
26
+ INFO worker-25 processed 3425 items
27
+ INFO worker-26 processed 3562 items
28
+ INFO worker-27 processed 3699 items
29
+ INFO worker-28 processed 3836 items
30
+ INFO worker-29 processed 3973 items
31
+ INFO worker-30 processed 4110 items
32
+ INFO worker-31 processed 4247 items
33
+ INFO worker-32 processed 4384 items
34
+ INFO worker-33 processed 4521 items
35
+ INFO worker-34 processed 4658 items
36
+ INFO worker-35 processed 4795 items
37
+ INFO worker-36 processed 4932 items
38
+ INFO worker-37 processed 5069 items
39
+ INFO worker-38 processed 5206 items
40
+ INFO worker-39 processed 5343 items
41
+ INFO worker-40 processed 5480 items
42
+ INFO worker-41 processed 5617 items
43
+ INFO worker-42 processed 5754 items
44
+ INFO worker-43 processed 5891 items
45
+ INFO worker-44 processed 6028 items
46
+ INFO worker-45 processed 6165 items
47
+ INFO worker-46 processed 6302 items
48
+ INFO worker-47 processed 6439 items
49
+ INFO worker-48 processed 6576 items
50
+ INFO worker-49 processed 6713 items
51
+ INFO worker-50 processed 6850 items
52
+ INFO worker-51 processed 6987 items
53
+ INFO worker-52 processed 7124 items
54
+ INFO worker-53 processed 7261 items
55
+ INFO worker-54 processed 7398 items
56
+ INFO worker-55 processed 7535 items
57
+ INFO worker-56 processed 7672 items
58
+ INFO worker-57 processed 7809 items
59
+ INFO worker-58 processed 7946 items
60
+ INFO worker-59 processed 8083 items
61
+ INFO worker-60 processed 8220 items
62
+ INFO worker-61 processed 8357 items
63
+ INFO worker-62 processed 8494 items
64
+ INFO worker-63 processed 8631 items
65
+ INFO worker-64 processed 8768 items
66
+ INFO worker-65 processed 8905 items
67
+ INFO worker-66 processed 9042 items
68
+ INFO worker-67 processed 9179 items
69
+ INFO worker-68 processed 9316 items
70
+ INFO worker-69 processed 9453 items
71
+ INFO worker-70 processed 9590 items
72
+ INFO worker-71 processed 9727 items
73
+ INFO worker-72 processed 9864 items
74
+ INFO worker-73 processed 10001 items
75
+ INFO worker-74 processed 10138 items
76
+ INFO worker-75 processed 10275 items
77
+ INFO worker-76 processed 10412 items
78
+ INFO worker-77 processed 10549 items
79
+ INFO worker-78 processed 10686 items
80
+ INFO worker-79 processed 10823 items
81
+ INFO worker-80 processed 10960 items
82
+ INFO worker-81 processed 11097 items
83
+ INFO worker-82 processed 11234 items
84
+ INFO worker-83 processed 11371 items
85
+ INFO worker-84 processed 11508 items
86
+ INFO worker-85 processed 11645 items
87
+ INFO worker-86 processed 11782 items
88
+ INFO worker-87 processed 11919 items
89
+ INFO worker-88 processed 12056 items
90
+ INFO worker-89 processed 12193 items
91
+ INFO worker-90 processed 12330 items
92
+ INFO worker-91 processed 12467 items
93
+ INFO worker-92 processed 12604 items
94
+ INFO worker-93 processed 12741 items
95
+ INFO worker-94 processed 12878 items
96
+ INFO worker-95 processed 13015 items
97
+ INFO worker-96 processed 13152 items
98
+ INFO worker-97 processed 13289 items
99
+ INFO worker-98 processed 13426 items
100
+ INFO worker-99 processed 13563 items
101
+ INFO worker-100 processed 13700 items
102
+ INFO worker-101 processed 13837 items
103
+ INFO worker-102 processed 13974 items
104
+ INFO worker-103 processed 14111 items
105
+ INFO worker-104 processed 14248 items
106
+ INFO worker-105 processed 14385 items
107
+ INFO worker-106 processed 14522 items
108
+ INFO worker-107 processed 14659 items
109
+ INFO worker-108 processed 14796 items
110
+ INFO worker-109 processed 14933 items
111
+ INFO worker-110 processed 15070 items
112
+ INFO worker-111 processed 15207 items
113
+ INFO worker-112 processed 15344 items
114
+ INFO worker-113 processed 15481 items
115
+ INFO worker-114 processed 15618 items
116
+ INFO worker-115 processed 15755 items
117
+ INFO worker-116 processed 15892 items
118
+ INFO worker-117 processed 16029 items
119
+ INFO worker-118 processed 16166 items
120
+ INFO worker-119 processed 16303 items
121
+ INFO worker-120 processed 16440 items
122
+ INFO worker-121 processed 16577 items
123
+ INFO worker-122 processed 16714 items
124
+ INFO worker-123 processed 16851 items
125
+ INFO worker-124 processed 16988 items
126
+ INFO worker-125 processed 17125 items
127
+ INFO worker-126 processed 17262 items
128
+ INFO worker-127 processed 17399 items
129
+ INFO worker-128 processed 17536 items
130
+ INFO worker-129 processed 17673 items
131
+ INFO worker-130 processed 17810 items
132
+ INFO worker-131 processed 17947 items
133
+ INFO worker-132 processed 18084 items
134
+ INFO worker-133 processed 18221 items
135
+ INFO worker-134 processed 18358 items
136
+ INFO worker-135 processed 18495 items
137
+ INFO worker-136 processed 18632 items
138
+ INFO worker-137 processed 18769 items
139
+ INFO worker-138 processed 18906 items
140
+ INFO worker-139 processed 19043 items
141
+ INFO worker-140 processed 19180 items
142
+ INFO worker-141 processed 19317 items
143
+ INFO worker-142 processed 19454 items
144
+ INFO worker-143 processed 19591 items
145
+ INFO worker-144 processed 19728 items
146
+ INFO worker-145 processed 19865 items
147
+ INFO worker-146 processed 20002 items
148
+ INFO worker-147 processed 20139 items
149
+ INFO worker-148 processed 20276 items
150
+ INFO worker-149 processed 20413 items
151
+ INFO worker-150 processed 20550 items
152
+ INFO worker-151 processed 20687 items
153
+ INFO worker-152 processed 20824 items
154
+ INFO worker-153 processed 20961 items
155
+ INFO worker-154 processed 21098 items
156
+ INFO worker-155 processed 21235 items
157
+ INFO worker-156 processed 21372 items
158
+ INFO worker-157 processed 21509 items
159
+ INFO worker-158 processed 21646 items
160
+ INFO worker-159 processed 21783 items
161
+ INFO worker-160 processed 21920 items
162
+ INFO worker-161 processed 22057 items
163
+ INFO worker-162 processed 22194 items
164
+ INFO worker-163 processed 22331 items
165
+ INFO worker-164 processed 22468 items
166
+ INFO worker-165 processed 22605 items
167
+ INFO worker-166 processed 22742 items
168
+ INFO worker-167 processed 22879 items
169
+ INFO worker-168 processed 23016 items
170
+ INFO worker-169 processed 23153 items
171
+ INFO worker-170 processed 23290 items
172
+ INFO worker-171 processed 23427 items
173
+ INFO worker-172 processed 23564 items
174
+ INFO worker-173 processed 23701 items
175
+ INFO worker-174 processed 23838 items
176
+ INFO worker-175 processed 23975 items
177
+ INFO worker-176 processed 24112 items
178
+ INFO worker-177 processed 24249 items
179
+ INFO worker-178 processed 24386 items
180
+ INFO worker-179 processed 24523 items
181
+ INFO worker-180 processed 24660 items
182
+ INFO worker-181 processed 24797 items
183
+ INFO worker-182 processed 24934 items
184
+ INFO worker-183 processed 25071 items
185
+ INFO worker-184 processed 25208 items
186
+ INFO worker-185 processed 25345 items
187
+ INFO worker-186 processed 25482 items
188
+ INFO worker-187 processed 25619 items
189
+ INFO worker-188 processed 25756 items
190
+ INFO worker-189 processed 25893 items
191
+ INFO worker-190 processed 26030 items
192
+ INFO worker-191 processed 26167 items
193
+ INFO worker-192 processed 26304 items
194
+ INFO worker-193 processed 26441 items
195
+ INFO worker-194 processed 26578 items
196
+ INFO worker-195 processed 26715 items
197
+ INFO worker-196 processed 26852 items
198
+ INFO worker-197 processed 26989 items
199
+ INFO worker-198 processed 27126 items
200
+ INFO worker-199 processed 27263 items
201
+ INFO worker-200 processed 27400 items
202
+ INFO worker-201 processed 27537 items
203
+ INFO worker-202 processed 27674 items
204
+ INFO worker-203 processed 27811 items
205
+ INFO worker-204 processed 27948 items
206
+ INFO worker-205 processed 28085 items
207
+ INFO worker-206 processed 28222 items
208
+ INFO worker-207 processed 28359 items
209
+ INFO worker-208 processed 28496 items
210
+ INFO worker-209 processed 28633 items
211
+ INFO worker-210 processed 28770 items
212
+ INFO worker-211 processed 28907 items
213
+ INFO worker-212 processed 29044 items
214
+ INFO worker-213 processed 29181 items
215
+ INFO worker-214 processed 29318 items
216
+ INFO worker-215 processed 29455 items
217
+ INFO worker-216 processed 29592 items
218
+ INFO worker-217 processed 29729 items
219
+ INFO worker-218 processed 29866 items
220
+ INFO worker-219 processed 30003 items
221
+ INFO worker-220 processed 30140 items
222
+ INFO worker-221 processed 30277 items
223
+ INFO worker-222 processed 30414 items
224
+ INFO worker-223 processed 30551 items
225
+ INFO worker-224 processed 30688 items
226
+ INFO worker-225 processed 30825 items
227
+ INFO worker-226 processed 30962 items
228
+ INFO worker-227 processed 31099 items
229
+ INFO worker-228 processed 31236 items
230
+ INFO worker-229 processed 31373 items
231
+ INFO worker-230 processed 31510 items
232
+ INFO worker-231 processed 31647 items
233
+ INFO worker-232 processed 31784 items
234
+ INFO worker-233 processed 31921 items
235
+ INFO worker-234 processed 32058 items
236
+ INFO worker-235 processed 32195 items
237
+ INFO worker-236 processed 32332 items
238
+ INFO worker-237 processed 32469 items
239
+ INFO worker-238 processed 32606 items
240
+ INFO worker-239 processed 32743 items
241
+ INFO worker-240 processed 32880 items
242
+ INFO worker-241 processed 33017 items
243
+ INFO worker-242 processed 33154 items
244
+ INFO worker-243 processed 33291 items
245
+ INFO worker-244 processed 33428 items
246
+ INFO worker-245 processed 33565 items
247
+ INFO worker-246 processed 33702 items
248
+ INFO worker-247 processed 33839 items
249
+ INFO worker-248 processed 33976 items
250
+ INFO worker-249 processed 34113 items
251
+ INFO worker-250 processed 34250 items
252
+ INFO worker-251 processed 34387 items
253
+ INFO worker-252 processed 34524 items
254
+ INFO worker-253 processed 34661 items
255
+ INFO worker-254 processed 34798 items
256
+ INFO worker-255 processed 34935 items
257
+ INFO worker-256 processed 35072 items
258
+ INFO worker-257 processed 35209 items
259
+ INFO worker-258 processed 35346 items
260
+ INFO worker-259 processed 35483 items
261
+ INFO worker-260 processed 35620 items
262
+ INFO worker-261 processed 35757 items
263
+ INFO worker-262 processed 35894 items
264
+ INFO worker-263 processed 36031 items
265
+ INFO worker-264 processed 36168 items
266
+ INFO worker-265 processed 36305 items
267
+ INFO worker-266 processed 36442 items
268
+ INFO worker-267 processed 36579 items
269
+ INFO worker-268 processed 36716 items
270
+ INFO worker-269 processed 36853 items
271
+ INFO worker-270 processed 36990 items
272
+ INFO worker-271 processed 37127 items
273
+ INFO worker-272 processed 37264 items
274
+ INFO worker-273 processed 37401 items
275
+ INFO worker-274 processed 37538 items
276
+ INFO worker-275 processed 37675 items
277
+ INFO worker-276 processed 37812 items
278
+ INFO worker-277 processed 37949 items
279
+ INFO worker-278 processed 38086 items
280
+ INFO worker-279 processed 38223 items
281
+ INFO worker-280 processed 38360 items
282
+ INFO worker-281 processed 38497 items
283
+ INFO worker-282 processed 38634 items
284
+ INFO worker-283 processed 38771 items
285
+ INFO worker-284 processed 38908 items
286
+ INFO worker-285 processed 39045 items
287
+ INFO worker-286 processed 39182 items
288
+ INFO worker-287 processed 39319 items
289
+ INFO worker-288 processed 39456 items
290
+ INFO worker-289 processed 39593 items
291
+ INFO worker-290 processed 39730 items
292
+ INFO worker-291 processed 39867 items
293
+ INFO worker-292 processed 40004 items
294
+ INFO worker-293 processed 40141 items
295
+ INFO worker-294 processed 40278 items
296
+ INFO worker-295 processed 40415 items
297
+ INFO worker-296 processed 40552 items
298
+ INFO worker-297 processed 40689 items
299
+ INFO worker-298 processed 40826 items
300
+ INFO worker-299 processed 40963 items
@@ -0,0 +1,9 @@
1
+ id: sbom-vuln
2
+ type: golden
3
+ variant: positive
4
+ case_of: PF-SEC-021
5
+ domain: sbom
6
+ fixture: fixture
7
+ expect:
8
+ rules_fired: [PF-SEC-021]
9
+ rules_not_fired: [PF-SEC-020]
@@ -0,0 +1,9 @@
1
+ {
2
+ "bomFormat": "CycloneDX",
3
+ "components": [
4
+ {"name": "openssl", "version": "3.0.0",
5
+ "licenses": [{"license": {"id": "Apache-2.0"}}]},
6
+ {"name": "mystery-lib", "version": "0.1",
7
+ "licenses": []}
8
+ ]
9
+ }
@@ -0,0 +1 @@
1
+ DB_PASSWORD="hunter2!X9real"
@@ -0,0 +1,7 @@
1
+ # Password rotation policy
2
+
3
+ The password policy: refuse and route on failure.
4
+
5
+ - pass: the token gate requires rotation every quarter.
6
+ - db_pass: check the runbook before restarting the primary.
7
+ - pwd: operators must never paste credentials into tickets.
@@ -0,0 +1,5 @@
1
+ id: secrets-noleak
2
+ type: security
3
+ fixture: fixture
4
+ expect:
5
+ must_not_contain: ["AKIAIOSFODNN7EXAMPLE"]
@@ -0,0 +1,2 @@
1
+ AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
2
+ DB_PASSWORD=sup3r-s3cret-eval-value
@@ -0,0 +1,8 @@
1
+ id: slo-fastburn
2
+ type: golden
3
+ variant: positive
4
+ case_of: PF-SLO-002
5
+ domain: slo
6
+ fixture: fixture
7
+ expect:
8
+ rules_fired: [PF-SLO-002]
@@ -0,0 +1,2 @@
1
+ total_events: 1000000
2
+ bad_events: 3000
@@ -0,0 +1,4 @@
1
+ service: checkout
2
+ sli: availability
3
+ target: 99.9
4
+ window: 30d
@@ -0,0 +1,8 @@
1
+ id: slo-noinput
2
+ type: golden
3
+ variant: unresolved
4
+ case_of: PF-SLO-003
5
+ domain: slo
6
+ fixture: fixture
7
+ expect:
8
+ rules_fired: [PF-SLO-003]
@@ -0,0 +1 @@
1
+ # deliberately empty — no SLI events recorded
@@ -0,0 +1,4 @@
1
+ service: search
2
+ sli: latency
3
+ target: 99.5
4
+ window: 7d
@@ -0,0 +1,6 @@
1
+ id: sot-conflict
2
+ type: live
3
+ domain: ops-rollback
4
+ expect:
5
+ check: ops-invariant
6
+ probe: sot-conflict
@@ -0,0 +1,6 @@
1
+ id: token-budget
2
+ type: token_economy
3
+ fixture: fixture
4
+ query: "k8s deployment limits"
5
+ expect:
6
+ budget: 200
@@ -0,0 +1,50 @@
1
+ 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
@@ -0,0 +1,8 @@
1
+ id: xr-delete
2
+ type: golden
3
+ variant: positive
4
+ case_of: PF-XR-001
5
+ domain: crossplane
6
+ fixture: fixture
7
+ expect:
8
+ rules_fired: [PF-XR-001]
@@ -0,0 +1,10 @@
1
+ apiVersion: database.aws.crossplane.io/v1beta1
2
+ kind: RDSInstance
3
+ metadata:
4
+ name: prod-db
5
+ spec:
6
+ deletionPolicy: Delete
7
+ forProvider:
8
+ region: us-east-1
9
+ dbInstanceClass: db.t3.medium
10
+ engine: postgres
@@ -0,0 +1,8 @@
1
+ id: xr-graph-chain
2
+ type: graph_correctness
3
+ domain: crossplane
4
+ fixture: fixture
5
+ expect:
6
+ node: crossplane_provider/aws-prod
7
+ blast_of:
8
+ - crossplane_managed_resource/data-lake-prod
@@ -0,0 +1,90 @@
1
+ apiVersion: apiextensions.crossplane.io/v1
2
+ kind: CompositeResourceDefinition
3
+ metadata:
4
+ name: xbuckets.platform.example.org
5
+ spec:
6
+ group: platform.example.org
7
+ names:
8
+ kind: XBucket
9
+ plural: xbuckets
10
+ claimNames:
11
+ kind: BucketClaim
12
+ plural: bucketclaims
13
+ connectionSecretKeys:
14
+ - endpoint
15
+ versions:
16
+ - name: v1alpha1
17
+ kind: XBucket
18
+ served: true
19
+ referenceable: true
20
+ schema:
21
+ openAPIV3Schema:
22
+ type: object
23
+ properties:
24
+ spec:
25
+ type: object
26
+ properties:
27
+ region:
28
+ type: string
29
+ ---
30
+ apiVersion: apiextensions.crossplane.io/v1
31
+ kind: Composition
32
+ metadata:
33
+ name: bucket-aws
34
+ spec:
35
+ compositeTypeRef:
36
+ apiVersion: platform.example.org/v1alpha1
37
+ kind: XBucket
38
+ mode: Pipeline
39
+ pipeline:
40
+ - step: s3-bucket
41
+ functionRef:
42
+ name: function-auto-ready
43
+ - step: patch
44
+ functionRef:
45
+ name: function-patch-and-transform
46
+ ---
47
+ apiVersion: pkg.crossplane.io/v1
48
+ kind: Provider
49
+ metadata:
50
+ name: provider-aws-s3
51
+ spec:
52
+ package: xpkg.upbound.io/upbound/provider-aws-s3:v1.14.0
53
+ ---
54
+ apiVersion: aws.upbound.io/v1beta1
55
+ kind: ProviderConfig
56
+ metadata:
57
+ name: aws-prod
58
+ spec:
59
+ credentials:
60
+ source: Secret
61
+ secretRef:
62
+ namespace: crossplane-system
63
+ name: aws-creds
64
+ key: creds
65
+ ---
66
+ apiVersion: s3.aws.upbound.io/v1beta1
67
+ kind: Bucket
68
+ metadata:
69
+ name: data-lake-prod
70
+ spec:
71
+ forProvider:
72
+ region: us-east-1
73
+ managementPolicies:
74
+ - "*"
75
+ deletionPolicy: Delete
76
+ providerConfigRef:
77
+ name: aws-prod
78
+ ---
79
+ apiVersion: platform.example.org/v1alpha1
80
+ kind: XBucket
81
+ metadata:
82
+ name: analytics-bucket
83
+ spec:
84
+ compositionRef:
85
+ name: bucket-aws
86
+ resourceRefs:
87
+ - apiVersion: s3.aws.upbound.io/v1beta1
88
+ kind: Bucket
89
+ name: data-lake-prod
90
+ region: us-east-1
@@ -0,0 +1,8 @@
1
+ id: xr-negative-crd
2
+ type: golden
3
+ variant: negative
4
+ case_of: PF-XR-001
5
+ domain: crossplane
6
+ fixture: fixture
7
+ expect:
8
+ rules_not_fired: [PF-XR-001]
@@ -0,0 +1,19 @@
1
+ # §58 negative — not builtin, not Crossplane. Must produce zero facts.
2
+ apiVersion: foo.example.com/v1
3
+ kind: Widget
4
+ metadata:
5
+ name: gadget
6
+ spec:
7
+ deletionPolicy: Delete # same field name — must still NOT classify
8
+ forProvider:
9
+ region: us-east-1
10
+ ---
11
+ # Provider-shaped group, no MR shape → not a ManagedResource (§53).
12
+ apiVersion: spaces.upbound.io/v1beta1
13
+ kind: ControlPlane
14
+ metadata:
15
+ name: ctp
16
+ spec:
17
+ writeConnectionSecretToRef:
18
+ name: kc
19
+ namespace: upbound-system
@@ -0,0 +1,8 @@
1
+ id: xr-upbound-mr
2
+ type: golden
3
+ variant: positive
4
+ case_of: PF-XR-001
5
+ domain: crossplane
6
+ fixture: fixture
7
+ expect:
8
+ rules_fired: [PF-XR-001]
@@ -0,0 +1,12 @@
1
+ apiVersion: s3.aws.upbound.io/v1beta1
2
+ kind: Bucket
3
+ metadata:
4
+ name: logs-prod
5
+ spec:
6
+ forProvider:
7
+ region: us-east-1
8
+ tags:
9
+ team: platform
10
+ providerConfigRef:
11
+ name: aws-prod
12
+ deletionPolicy: Delete
@@ -0,0 +1,5 @@
1
+ id: change-review
2
+ task: "change review — terraform plan with replace + delete"
3
+ domain: plan
4
+ fixture: fixture/plan.json
5
+ budget: 50000
@@ -0,0 +1,9 @@
1
+ {"format_version":"1.2","terraform_version":"1.9.0",
2
+ "resource_changes":[
3
+ {"address":"aws_db_instance.db","type":"aws_db_instance",
4
+ "change":{"actions":["delete","create"],
5
+ "before":{"engine":"postgres"},
6
+ "after":{"engine":"postgres","storage_encrypted":true}}},
7
+ {"address":"aws_s3_bucket.logs","type":"aws_s3_bucket",
8
+ "change":{"actions":["delete"],"before":{"bucket":"logs"}}}
9
+ ]}
@@ -0,0 +1,5 @@
1
+ id: gha-security
2
+ task: "github actions security review — pinning, permissions, injection"
3
+ domain: gha
4
+ fixture: fixture/ci.yml
5
+ budget: 50000
@@ -0,0 +1,10 @@
1
+ name: ci
2
+ on: [pull_request_target]
3
+ permissions: write-all
4
+ jobs:
5
+ build:
6
+ runs-on: ubuntu-latest
7
+ steps:
8
+ - uses: actions/checkout@v4
9
+ - uses: docker/setup-buildx-action@master
10
+ - run: echo "${{ github.event.pull_request.title }}"