platformforge 0.1.1__tar.gz → 0.1.2__tar.gz

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 (1384) hide show
  1. platformforge-0.1.2/.github/workflows/publish-pypi.yml +194 -0
  2. {platformforge-0.1.1 → platformforge-0.1.2}/CHANGELOG.md +7 -0
  3. {platformforge-0.1.1 → platformforge-0.1.2}/PKG-INFO +1 -1
  4. {platformforge-0.1.1 → platformforge-0.1.2}/docs/economy-parity/VALIDATION-RECEIPT.json +2 -2
  5. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/__init__.py +1 -1
  6. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/_forge_portal.py +2 -2
  7. platformforge-0.1.2/platformforge/_portal_telemetry.py +256 -0
  8. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/portal_adapter.py +45 -34
  9. platformforge-0.1.2/portal/assets/chunk-B6-SnBYR.js +1 -0
  10. platformforge-0.1.2/portal/assets/chunk-BCNptXUN.js +1 -0
  11. platformforge-0.1.2/portal/assets/chunk-BLx5JhZj.js +1 -0
  12. platformforge-0.1.2/portal/assets/chunk-BYYLUO5t.js +1 -0
  13. platformforge-0.1.2/portal/assets/chunk-BhA7s971.js +1 -0
  14. platformforge-0.1.1/portal/assets/chunk-DQvfYR07.js → platformforge-0.1.2/portal/assets/chunk-BiFkDKwK.js +1 -1
  15. platformforge-0.1.2/portal/assets/chunk-BmwkYp7x.js +3 -0
  16. platformforge-0.1.2/portal/assets/chunk-BqMqB2xY.js +1 -0
  17. platformforge-0.1.2/portal/assets/chunk-BqWusG3k.js +1 -0
  18. platformforge-0.1.2/portal/assets/chunk-Bs3fXOeP.js +1 -0
  19. platformforge-0.1.2/portal/assets/chunk-Bz1rYEmS.js +1 -0
  20. platformforge-0.1.2/portal/assets/chunk-C0nXO1-7.js +1 -0
  21. platformforge-0.1.2/portal/assets/chunk-C3EdlW-0.js +1 -0
  22. platformforge-0.1.1/portal/assets/chunk-D2KAfPv6.js → platformforge-0.1.2/portal/assets/chunk-C8lOpg3j.js +1 -1
  23. platformforge-0.1.2/portal/assets/chunk-CCHwcZ3Q.js +5 -0
  24. platformforge-0.1.2/portal/assets/chunk-CEkKt3jx.js +1 -0
  25. platformforge-0.1.2/portal/assets/chunk-CM0T98Hn.js +1 -0
  26. platformforge-0.1.2/portal/assets/chunk-CMtL9dJD.js +322 -0
  27. platformforge-0.1.2/portal/assets/chunk-Ca0umSMB.js +1 -0
  28. platformforge-0.1.2/portal/assets/chunk-CdjWoiPd.js +5 -0
  29. platformforge-0.1.1/portal/assets/chunk-BBusSOqc.js → platformforge-0.1.2/portal/assets/chunk-Cq-eK9ux.js +1 -1
  30. platformforge-0.1.2/portal/assets/chunk-CyIkteAc.js +1 -0
  31. platformforge-0.1.2/portal/assets/chunk-DDQs0Fva.js +1 -0
  32. platformforge-0.1.2/portal/assets/chunk-DOMhvl2h.js +1 -0
  33. platformforge-0.1.2/portal/assets/chunk-DTTwuwxc.js +1 -0
  34. platformforge-0.1.2/portal/assets/chunk-DXn5h-qA.js +1 -0
  35. platformforge-0.1.2/portal/assets/chunk-DYZh4vGE.js +1 -0
  36. platformforge-0.1.1/portal/assets/chunk-Bqgc-mwk.js → platformforge-0.1.2/portal/assets/chunk-DainJSmQ.js +1 -1
  37. platformforge-0.1.2/portal/assets/chunk-DiM6mH3O.js +1 -0
  38. platformforge-0.1.2/portal/assets/chunk-Dr99IBD1.js +1 -0
  39. platformforge-0.1.2/portal/assets/chunk-NOzavK8E.js +1 -0
  40. platformforge-0.1.2/portal/assets/chunk-Onvj36bT.js +1 -0
  41. platformforge-0.1.2/portal/assets/chunk-OywyDaLv.js +1 -0
  42. platformforge-0.1.2/portal/assets/chunk-VtbIXmp9.js +1 -0
  43. platformforge-0.1.1/portal/assets/chunk-0WpwvubF.js → platformforge-0.1.2/portal/assets/chunk-YOPJhFLo.js +1 -1
  44. platformforge-0.1.2/portal/assets/chunk-pVzsnrcB.js +1 -0
  45. platformforge-0.1.2/portal/assets/chunk-uVK-pwMG.js +1 -0
  46. platformforge-0.1.2/portal/assets/chunk-yqMTkZh4.js +1 -0
  47. {platformforge-0.1.1 → platformforge-0.1.2}/portal/assets/index.html +2 -2
  48. platformforge-0.1.2/portal/assets/main-GU444GPT.js +1 -0
  49. platformforge-0.1.2/portal/assets/styles-B6ZRGG3C.css +1 -0
  50. platformforge-0.1.2/portal/manifest.json +186 -0
  51. {platformforge-0.1.1 → platformforge-0.1.2}/pyproject.toml +2 -1
  52. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_contracts.py +1 -1
  53. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_portal_adapter.py +30 -0
  54. platformforge-0.1.1/.github/workflows/publish-pypi.yml +0 -32
  55. platformforge-0.1.1/portal/assets/chunk-1IC1Ht1p.js +0 -3
  56. platformforge-0.1.1/portal/assets/chunk-B5UUjcvD.js +0 -5
  57. platformforge-0.1.1/portal/assets/chunk-BKRLVsID.js +0 -1
  58. platformforge-0.1.1/portal/assets/chunk-BKcxAbqq.js +0 -1
  59. platformforge-0.1.1/portal/assets/chunk-BOg-dd4X.js +0 -1
  60. platformforge-0.1.1/portal/assets/chunk-BUdnTjRC.js +0 -1
  61. platformforge-0.1.1/portal/assets/chunk-BZzb34kV.js +0 -1
  62. platformforge-0.1.1/portal/assets/chunk-BelLryvf.js +0 -5
  63. platformforge-0.1.1/portal/assets/chunk-BhLaTFvG.js +0 -1
  64. platformforge-0.1.1/portal/assets/chunk-BiLsIL6D.js +0 -1
  65. platformforge-0.1.1/portal/assets/chunk-BtsfId7c.js +0 -1
  66. platformforge-0.1.1/portal/assets/chunk-C5-CCisw.js +0 -1
  67. platformforge-0.1.1/portal/assets/chunk-CXfCkbMK.js +0 -1
  68. platformforge-0.1.1/portal/assets/chunk-Cci2spkQ.js +0 -1
  69. platformforge-0.1.1/portal/assets/chunk-CiuPOfJ0.js +0 -1
  70. platformforge-0.1.1/portal/assets/chunk-D2-KpBLI.js +0 -1
  71. platformforge-0.1.1/portal/assets/chunk-D34eMkm4.js +0 -1
  72. platformforge-0.1.1/portal/assets/chunk-D51YTy_x.js +0 -1
  73. platformforge-0.1.1/portal/assets/chunk-D67lmMI_.js +0 -1
  74. platformforge-0.1.1/portal/assets/chunk-D84lgeyr.js +0 -1
  75. platformforge-0.1.1/portal/assets/chunk-DJd3bKJi.js +0 -1
  76. platformforge-0.1.1/portal/assets/chunk-DKmatQN-.js +0 -1
  77. platformforge-0.1.1/portal/assets/chunk-DbK2Y3UO.js +0 -1
  78. platformforge-0.1.1/portal/assets/chunk-DcK6E10F.js +0 -1
  79. platformforge-0.1.1/portal/assets/chunk-DjkjLihA.js +0 -1
  80. platformforge-0.1.1/portal/assets/chunk-DmeV4Ae_.js +0 -322
  81. platformforge-0.1.1/portal/assets/chunk-DpHwlXuY.js +0 -1
  82. platformforge-0.1.1/portal/assets/chunk-DvTxSJhT.js +0 -1
  83. platformforge-0.1.1/portal/assets/chunk-Dx9x1gxm.js +0 -1
  84. platformforge-0.1.1/portal/assets/chunk-NryuIUhX.js +0 -1
  85. platformforge-0.1.1/portal/assets/chunk-vTT25rMv.js +0 -1
  86. platformforge-0.1.1/portal/assets/main-A2NKRJGT.js +0 -1
  87. platformforge-0.1.1/portal/assets/styles-G23E7YXX.css +0 -1
  88. platformforge-0.1.1/portal/manifest.json +0 -174
  89. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/pf-extractor.md +0 -0
  90. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/pf-graph-builder.md +0 -0
  91. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/pf-inventory.md +0 -0
  92. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/pf-judge.md +0 -0
  93. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/pf-reconciler.md +0 -0
  94. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/pf-simulator.md +0 -0
  95. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/pf-synthesizer.md +0 -0
  96. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/pf-verifier.md +0 -0
  97. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-adversarial-critic.md +0 -0
  98. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-ai-infra-specialist.md +0 -0
  99. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-architecture-reviewer.md +0 -0
  100. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-aws-specialist.md +0 -0
  101. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-capacity-specialist.md +0 -0
  102. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-change-coordinator.md +0 -0
  103. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-crossplane-specialist.md +0 -0
  104. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-debate-referee.md +0 -0
  105. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-economy-reviewer.md +0 -0
  106. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-evidence-reviewer.md +0 -0
  107. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-federation-specialist.md +0 -0
  108. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-finops-specialist.md +0 -0
  109. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-fleet-coordinator.md +0 -0
  110. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-fleet-specialist.md +0 -0
  111. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-gitops-specialist.md +0 -0
  112. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-graph-specialist.md +0 -0
  113. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-iac-specialist.md +0 -0
  114. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-incident-coordinator.md +0 -0
  115. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-kubernetes-specialist.md +0 -0
  116. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-operations-safety-reviewer.md +0 -0
  117. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-optimization-coordinator.md +0 -0
  118. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-orchestrator.md +0 -0
  119. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-planner.md +0 -0
  120. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-policy-specialist.md +0 -0
  121. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-privacy-reviewer.md +0 -0
  122. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-product-coordinator.md +0 -0
  123. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-product-specialist.md +0 -0
  124. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-release-guardian.md +0 -0
  125. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-security-reviewer.md +0 -0
  126. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-security-specialist.md +0 -0
  127. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-sre-specialist.md +0 -0
  128. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-task-spec-reviewer.md +0 -0
  129. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/agents/platform-verifier.md +0 -0
  130. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/skills/platformforge-agents/SKILL.md +0 -0
  131. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/skills/platformforge-change/SKILL.md +0 -0
  132. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/skills/platformforge-core/SKILL.md +0 -0
  133. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/skills/platformforge-economy/SKILL.md +0 -0
  134. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/skills/platformforge-finops/SKILL.md +0 -0
  135. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/skills/platformforge-fleet/SKILL.md +0 -0
  136. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/skills/platformforge-governance/SKILL.md +0 -0
  137. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/skills/platformforge-graph/SKILL.md +0 -0
  138. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/skills/platformforge-lab/SKILL.md +0 -0
  139. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/skills/platformforge-sdd/SKILL.md +0 -0
  140. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/skills/platformforge-security/SKILL.md +0 -0
  141. {platformforge-0.1.1 → platformforge-0.1.2}/.agents/skills/platformforge-sre/SKILL.md +0 -0
  142. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/pf-extractor.md +0 -0
  143. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/pf-graph-builder.md +0 -0
  144. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/pf-inventory.md +0 -0
  145. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/pf-judge.md +0 -0
  146. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/pf-reconciler.md +0 -0
  147. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/pf-simulator.md +0 -0
  148. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/pf-synthesizer.md +0 -0
  149. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/pf-verifier.md +0 -0
  150. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-adversarial-critic.md +0 -0
  151. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-ai-infra-specialist.md +0 -0
  152. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-architecture-reviewer.md +0 -0
  153. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-aws-specialist.md +0 -0
  154. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-capacity-specialist.md +0 -0
  155. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-change-coordinator.md +0 -0
  156. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-crossplane-specialist.md +0 -0
  157. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-debate-referee.md +0 -0
  158. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-economy-reviewer.md +0 -0
  159. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-evidence-reviewer.md +0 -0
  160. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-federation-specialist.md +0 -0
  161. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-finops-specialist.md +0 -0
  162. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-fleet-coordinator.md +0 -0
  163. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-fleet-specialist.md +0 -0
  164. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-gitops-specialist.md +0 -0
  165. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-graph-specialist.md +0 -0
  166. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-iac-specialist.md +0 -0
  167. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-incident-coordinator.md +0 -0
  168. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-kubernetes-specialist.md +0 -0
  169. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-operations-safety-reviewer.md +0 -0
  170. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-optimization-coordinator.md +0 -0
  171. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-orchestrator.md +0 -0
  172. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-planner.md +0 -0
  173. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-policy-specialist.md +0 -0
  174. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-privacy-reviewer.md +0 -0
  175. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-product-coordinator.md +0 -0
  176. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-product-specialist.md +0 -0
  177. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-release-guardian.md +0 -0
  178. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-security-reviewer.md +0 -0
  179. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-security-specialist.md +0 -0
  180. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-sre-specialist.md +0 -0
  181. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-task-spec-reviewer.md +0 -0
  182. {platformforge-0.1.1 → platformforge-0.1.2}/.claude/agents/platform-verifier.md +0 -0
  183. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/pf-extractor.toml +0 -0
  184. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/pf-graph-builder.toml +0 -0
  185. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/pf-inventory.toml +0 -0
  186. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/pf-judge.toml +0 -0
  187. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/pf-reconciler.toml +0 -0
  188. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/pf-simulator.toml +0 -0
  189. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/pf-synthesizer.toml +0 -0
  190. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/pf-verifier.toml +0 -0
  191. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-adversarial-critic.toml +0 -0
  192. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-ai-infra-specialist.toml +0 -0
  193. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-architecture-reviewer.toml +0 -0
  194. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-aws-specialist.toml +0 -0
  195. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-capacity-specialist.toml +0 -0
  196. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-change-coordinator.toml +0 -0
  197. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-crossplane-specialist.toml +0 -0
  198. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-debate-referee.toml +0 -0
  199. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-economy-reviewer.toml +0 -0
  200. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-evidence-reviewer.toml +0 -0
  201. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-federation-specialist.toml +0 -0
  202. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-finops-specialist.toml +0 -0
  203. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-fleet-coordinator.toml +0 -0
  204. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-fleet-specialist.toml +0 -0
  205. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-gitops-specialist.toml +0 -0
  206. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-graph-specialist.toml +0 -0
  207. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-iac-specialist.toml +0 -0
  208. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-incident-coordinator.toml +0 -0
  209. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-kubernetes-specialist.toml +0 -0
  210. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-operations-safety-reviewer.toml +0 -0
  211. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-optimization-coordinator.toml +0 -0
  212. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-orchestrator.toml +0 -0
  213. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-planner.toml +0 -0
  214. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-policy-specialist.toml +0 -0
  215. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-privacy-reviewer.toml +0 -0
  216. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-product-coordinator.toml +0 -0
  217. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-product-specialist.toml +0 -0
  218. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-release-guardian.toml +0 -0
  219. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-security-reviewer.toml +0 -0
  220. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-security-specialist.toml +0 -0
  221. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-sre-specialist.toml +0 -0
  222. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-task-spec-reviewer.toml +0 -0
  223. {platformforge-0.1.1 → platformforge-0.1.2}/.codex/agents/platform-verifier.toml +0 -0
  224. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/pf-extractor.md +0 -0
  225. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/pf-graph-builder.md +0 -0
  226. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/pf-inventory.md +0 -0
  227. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/pf-judge.md +0 -0
  228. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/pf-reconciler.md +0 -0
  229. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/pf-simulator.md +0 -0
  230. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/pf-synthesizer.md +0 -0
  231. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/pf-verifier.md +0 -0
  232. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-adversarial-critic.md +0 -0
  233. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-ai-infra-specialist.md +0 -0
  234. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-architecture-reviewer.md +0 -0
  235. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-aws-specialist.md +0 -0
  236. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-capacity-specialist.md +0 -0
  237. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-change-coordinator.md +0 -0
  238. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-crossplane-specialist.md +0 -0
  239. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-debate-referee.md +0 -0
  240. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-economy-reviewer.md +0 -0
  241. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-evidence-reviewer.md +0 -0
  242. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-federation-specialist.md +0 -0
  243. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-finops-specialist.md +0 -0
  244. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-fleet-coordinator.md +0 -0
  245. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-fleet-specialist.md +0 -0
  246. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-gitops-specialist.md +0 -0
  247. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-graph-specialist.md +0 -0
  248. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-iac-specialist.md +0 -0
  249. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-incident-coordinator.md +0 -0
  250. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-kubernetes-specialist.md +0 -0
  251. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-operations-safety-reviewer.md +0 -0
  252. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-optimization-coordinator.md +0 -0
  253. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-orchestrator.md +0 -0
  254. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-planner.md +0 -0
  255. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-policy-specialist.md +0 -0
  256. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-privacy-reviewer.md +0 -0
  257. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-product-coordinator.md +0 -0
  258. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-product-specialist.md +0 -0
  259. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-release-guardian.md +0 -0
  260. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-security-reviewer.md +0 -0
  261. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-security-specialist.md +0 -0
  262. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-sre-specialist.md +0 -0
  263. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-task-spec-reviewer.md +0 -0
  264. {platformforge-0.1.1 → platformforge-0.1.2}/.devin/agents/platform-verifier.md +0 -0
  265. {platformforge-0.1.1 → platformforge-0.1.2}/.github/CODEOWNERS +0 -0
  266. {platformforge-0.1.1 → platformforge-0.1.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  267. {platformforge-0.1.1 → platformforge-0.1.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  268. {platformforge-0.1.1 → platformforge-0.1.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  269. {platformforge-0.1.1 → platformforge-0.1.2}/.github/workflows/ci.yml +0 -0
  270. {platformforge-0.1.1 → platformforge-0.1.2}/.gitignore +0 -0
  271. {platformforge-0.1.1 → platformforge-0.1.2}/.platformforge/cases/golden/argo-bad-rollout/case.yaml +0 -0
  272. {platformforge-0.1.1 → platformforge-0.1.2}/.platformforge/cases/golden/aws-dump/case.yaml +0 -0
  273. {platformforge-0.1.1 → platformforge-0.1.2}/.platformforge/cases/golden/container-unsigned/case.yaml +0 -0
  274. {platformforge-0.1.1 → platformforge-0.1.2}/.platformforge/cases/golden/gitops-drift/case.yaml +0 -0
  275. {platformforge-0.1.1 → platformforge-0.1.2}/.platformforge/cases/golden/k8s-bad-readiness/case.yaml +0 -0
  276. {platformforge-0.1.1 → platformforge-0.1.2}/.platformforge/cases/golden/k8s-single-replica/case.yaml +0 -0
  277. {platformforge-0.1.1 → platformforge-0.1.2}/.platformforge/cases/golden/network-policy-missing/case.yaml +0 -0
  278. {platformforge-0.1.1 → platformforge-0.1.2}/.platformforge/cases/golden/secret-exposure/case.yaml +0 -0
  279. {platformforge-0.1.1 → platformforge-0.1.2}/.platformforge/cases/golden/slo-burn/case.yaml +0 -0
  280. {platformforge-0.1.1 → platformforge-0.1.2}/.platformforge/cases/golden/terraform-public-bucket/case.yaml +0 -0
  281. {platformforge-0.1.1 → platformforge-0.1.2}/.platformforge/cases/holdout/cost-idle-workload/case.yaml +0 -0
  282. {platformforge-0.1.1 → platformforge-0.1.2}/.platformforge/cases/holdout/crossplane-platform/case.yaml +0 -0
  283. {platformforge-0.1.1 → platformforge-0.1.2}/.platformforge/cases/holdout/demo-platform/case.yaml +0 -0
  284. {platformforge-0.1.1 → platformforge-0.1.2}/.platformforge/cases/holdout/k8s-missing-limits/case.yaml +0 -0
  285. {platformforge-0.1.1 → platformforge-0.1.2}/.platformforge/cases/holdout/secret-prose-mixed/case.yaml +0 -0
  286. {platformforge-0.1.1 → platformforge-0.1.2}/.platformforge/cases/holdout/terraform-iam-wildcard/case.yaml +0 -0
  287. {platformforge-0.1.1 → platformforge-0.1.2}/.platformforge/ledgers/false-negatives.yaml +0 -0
  288. {platformforge-0.1.1 → platformforge-0.1.2}/.platformforge/ledgers/false-positives.yaml +0 -0
  289. {platformforge-0.1.1 → platformforge-0.1.2}/AGENTIC-OS.md +0 -0
  290. {platformforge-0.1.1 → platformforge-0.1.2}/AGENTS.md +0 -0
  291. {platformforge-0.1.1 → platformforge-0.1.2}/AI-PLATFORM.md +0 -0
  292. {platformforge-0.1.1 → platformforge-0.1.2}/APPROVALS.md +0 -0
  293. {platformforge-0.1.1 → platformforge-0.1.2}/ARCHITECTURE.md +0 -0
  294. {platformforge-0.1.1 → platformforge-0.1.2}/CAPABILITIES.md +0 -0
  295. {platformforge-0.1.1 → platformforge-0.1.2}/CAPACITY.md +0 -0
  296. {platformforge-0.1.1 → platformforge-0.1.2}/CLI-REFERENCE.md +0 -0
  297. {platformforge-0.1.1 → platformforge-0.1.2}/CLOUD.md +0 -0
  298. {platformforge-0.1.1 → platformforge-0.1.2}/CODE_OF_CONDUCT.md +0 -0
  299. {platformforge-0.1.1 → platformforge-0.1.2}/COLLECTORS.md +0 -0
  300. {platformforge-0.1.1 → platformforge-0.1.2}/COMPATIBILITY.md +0 -0
  301. {platformforge-0.1.1 → platformforge-0.1.2}/CONTRIBUTING.md +0 -0
  302. {platformforge-0.1.1 → platformforge-0.1.2}/CREDITS.md +0 -0
  303. {platformforge-0.1.1 → platformforge-0.1.2}/DEPRECATION.md +0 -0
  304. {platformforge-0.1.1 → platformforge-0.1.2}/DOMAIN-MAP.md +0 -0
  305. {platformforge-0.1.1 → platformforge-0.1.2}/ECONOMY.md +0 -0
  306. {platformforge-0.1.1 → platformforge-0.1.2}/ENTERPRISE.md +0 -0
  307. {platformforge-0.1.1 → platformforge-0.1.2}/EVALS.md +0 -0
  308. {platformforge-0.1.1 → platformforge-0.1.2}/EXECUTION.md +0 -0
  309. {platformforge-0.1.1 → platformforge-0.1.2}/FEDERATION.md +0 -0
  310. {platformforge-0.1.1 → platformforge-0.1.2}/FLEET.md +0 -0
  311. {platformforge-0.1.1 → platformforge-0.1.2}/GLOSSARY.md +0 -0
  312. {platformforge-0.1.1 → platformforge-0.1.2}/GOLDEN-PATH-ANALYTICS.md +0 -0
  313. {platformforge-0.1.1 → platformforge-0.1.2}/GOLDEN-PATHS.md +0 -0
  314. {platformforge-0.1.1 → platformforge-0.1.2}/GRAPHFY.md +0 -0
  315. {platformforge-0.1.1 → platformforge-0.1.2}/INCIDENTS.md +0 -0
  316. {platformforge-0.1.1 → platformforge-0.1.2}/KNOWLEDGE.md +0 -0
  317. {platformforge-0.1.1 → platformforge-0.1.2}/LICENSE +0 -0
  318. {platformforge-0.1.1 → platformforge-0.1.2}/LIVE.md +0 -0
  319. {platformforge-0.1.1 → platformforge-0.1.2}/MCP.md +0 -0
  320. {platformforge-0.1.1 → platformforge-0.1.2}/MULTI-CLUSTER.md +0 -0
  321. {platformforge-0.1.1 → platformforge-0.1.2}/OBSERVATION-MODEL.md +0 -0
  322. {platformforge-0.1.1 → platformforge-0.1.2}/OPS.md +0 -0
  323. {platformforge-0.1.1 → platformforge-0.1.2}/OPTIMIZATION.md +0 -0
  324. {platformforge-0.1.1 → platformforge-0.1.2}/PLATFORM-ANALYTICS.md +0 -0
  325. {platformforge-0.1.1 → platformforge-0.1.2}/PLATFORM-MEASUREMENT.md +0 -0
  326. {platformforge-0.1.1 → platformforge-0.1.2}/POLICY-INTELLIGENCE.md +0 -0
  327. {platformforge-0.1.1 → platformforge-0.1.2}/QUALITY-PER-TOKEN.md +0 -0
  328. {platformforge-0.1.1 → platformforge-0.1.2}/README.md +0 -0
  329. {platformforge-0.1.1 → platformforge-0.1.2}/README.pt-BR.md +0 -0
  330. {platformforge-0.1.1 → platformforge-0.1.2}/RECONCILIATION.md +0 -0
  331. {platformforge-0.1.1 → platformforge-0.1.2}/RESEARCH.md +0 -0
  332. {platformforge-0.1.1 → platformforge-0.1.2}/ROADMAP.md +0 -0
  333. {platformforge-0.1.1 → platformforge-0.1.2}/ROLLBACK.md +0 -0
  334. {platformforge-0.1.1 → platformforge-0.1.2}/RULES.md +0 -0
  335. {platformforge-0.1.1 → platformforge-0.1.2}/RUNBOOKS.md +0 -0
  336. {platformforge-0.1.1 → platformforge-0.1.2}/RUNTIME-TOPOLOGY.md +0 -0
  337. {platformforge-0.1.1 → platformforge-0.1.2}/SDD.md +0 -0
  338. {platformforge-0.1.1 → platformforge-0.1.2}/SECURITY.md +0 -0
  339. {platformforge-0.1.1 → platformforge-0.1.2}/SOURCES.md +0 -0
  340. {platformforge-0.1.1 → platformforge-0.1.2}/SUPPORT.md +0 -0
  341. {platformforge-0.1.1 → platformforge-0.1.2}/VERIFICATION.md +0 -0
  342. {platformforge-0.1.1 → platformforge-0.1.2}/agents/pf-extractor.md +0 -0
  343. {platformforge-0.1.1 → platformforge-0.1.2}/agents/pf-graph-builder.md +0 -0
  344. {platformforge-0.1.1 → platformforge-0.1.2}/agents/pf-inventory.md +0 -0
  345. {platformforge-0.1.1 → platformforge-0.1.2}/agents/pf-judge.md +0 -0
  346. {platformforge-0.1.1 → platformforge-0.1.2}/agents/pf-reconciler.md +0 -0
  347. {platformforge-0.1.1 → platformforge-0.1.2}/agents/pf-simulator.md +0 -0
  348. {platformforge-0.1.1 → platformforge-0.1.2}/agents/pf-synthesizer.md +0 -0
  349. {platformforge-0.1.1 → platformforge-0.1.2}/agents/pf-verifier.md +0 -0
  350. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-adversarial-critic.md +0 -0
  351. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-ai-infra-specialist.md +0 -0
  352. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-architecture-reviewer.md +0 -0
  353. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-aws-specialist.md +0 -0
  354. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-capacity-specialist.md +0 -0
  355. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-change-coordinator.md +0 -0
  356. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-crossplane-specialist.md +0 -0
  357. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-debate-referee.md +0 -0
  358. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-economy-reviewer.md +0 -0
  359. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-evidence-reviewer.md +0 -0
  360. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-federation-specialist.md +0 -0
  361. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-finops-specialist.md +0 -0
  362. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-fleet-coordinator.md +0 -0
  363. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-fleet-specialist.md +0 -0
  364. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-gitops-specialist.md +0 -0
  365. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-graph-specialist.md +0 -0
  366. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-iac-specialist.md +0 -0
  367. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-incident-coordinator.md +0 -0
  368. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-kubernetes-specialist.md +0 -0
  369. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-operations-safety-reviewer.md +0 -0
  370. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-optimization-coordinator.md +0 -0
  371. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-orchestrator.md +0 -0
  372. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-planner.md +0 -0
  373. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-policy-specialist.md +0 -0
  374. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-privacy-reviewer.md +0 -0
  375. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-product-coordinator.md +0 -0
  376. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-product-specialist.md +0 -0
  377. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-release-guardian.md +0 -0
  378. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-security-reviewer.md +0 -0
  379. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-security-specialist.md +0 -0
  380. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-sre-specialist.md +0 -0
  381. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-task-spec-reviewer.md +0 -0
  382. {platformforge-0.1.1 → platformforge-0.1.2}/agents/platform-verifier.md +0 -0
  383. {platformforge-0.1.1 → platformforge-0.1.2}/config.example.yaml +0 -0
  384. {platformforge-0.1.1 → platformforge-0.1.2}/contracts/agent-handoff.schema.json +0 -0
  385. {platformforge-0.1.1 → platformforge-0.1.2}/contracts/agent-run.schema.json +0 -0
  386. {platformforge-0.1.1 → platformforge-0.1.2}/contracts/agent-spec.schema.json +0 -0
  387. {platformforge-0.1.1 → platformforge-0.1.2}/contracts/capability.schema.json +0 -0
  388. {platformforge-0.1.1 → platformforge-0.1.2}/contracts/change-event.schema.json +0 -0
  389. {platformforge-0.1.1 → platformforge-0.1.2}/contracts/change-intent.schema.json +0 -0
  390. {platformforge-0.1.1 → platformforge-0.1.2}/contracts/change-plan.schema.json +0 -0
  391. {platformforge-0.1.1 → platformforge-0.1.2}/contracts/collector-receipt.schema.json +0 -0
  392. {platformforge-0.1.1 → platformforge-0.1.2}/contracts/context-pack.schema.json +0 -0
  393. {platformforge-0.1.1 → platformforge-0.1.2}/contracts/debate.schema.json +0 -0
  394. {platformforge-0.1.1 → platformforge-0.1.2}/contracts/distribution-manifest-v1.schema.json +0 -0
  395. {platformforge-0.1.1 → platformforge-0.1.2}/contracts/drift-event.schema.json +0 -0
  396. {platformforge-0.1.1 → platformforge-0.1.2}/contracts/fact.schema.json +0 -0
  397. {platformforge-0.1.1 → platformforge-0.1.2}/contracts/finding.schema.json +0 -0
  398. {platformforge-0.1.1 → platformforge-0.1.2}/contracts/graph-v2.schema.json +0 -0
  399. {platformforge-0.1.1 → platformforge-0.1.2}/contracts/graph.schema.json +0 -0
  400. {platformforge-0.1.1 → platformforge-0.1.2}/contracts/install-receipt-v1.schema.json +0 -0
  401. {platformforge-0.1.1 → platformforge-0.1.2}/contracts/observation.schema.json +0 -0
  402. {platformforge-0.1.1 → platformforge-0.1.2}/contracts/receipt.schema.json +0 -0
  403. {platformforge-0.1.1 → platformforge-0.1.2}/contracts/recommendation.schema.json +0 -0
  404. {platformforge-0.1.1 → platformforge-0.1.2}/contracts/refusal.schema.json +0 -0
  405. {platformforge-0.1.1 → platformforge-0.1.2}/contracts/slo-contract.schema.json +0 -0
  406. {platformforge-0.1.1 → platformforge-0.1.2}/contracts/task-spec.schema.json +0 -0
  407. {platformforge-0.1.1 → platformforge-0.1.2}/contracts/workspace-manifest-v1.schema.json +0 -0
  408. {platformforge-0.1.1 → platformforge-0.1.2}/docs/CLI-SURFACE.md +0 -0
  409. {platformforge-0.1.1 → platformforge-0.1.2}/docs/INDEX.md +0 -0
  410. {platformforge-0.1.1 → platformforge-0.1.2}/docs/README.md +0 -0
  411. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0001-deterministic-core-first.md +0 -0
  412. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0002-graphfy-as-spine.md +0 -0
  413. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0003-economy-by-architecture.md +0 -0
  414. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0004-planned-provenance.md +0 -0
  415. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0005-context-redaction.md +0 -0
  416. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0006-rule-provenance.md +0 -0
  417. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0007-version-unresolved-semantics.md +0 -0
  418. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0008-quality-per-token.md +0 -0
  419. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0009-cloud-common-model.md +0 -0
  420. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0010-golden-path-model.md +0 -0
  421. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0011-observation-model.md +0 -0
  422. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0012-collector-boundary.md +0 -0
  423. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0013-absence-semantics.md +0 -0
  424. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0014-freshness-coverage.md +0 -0
  425. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0015-temporal-graphfy.md +0 -0
  426. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0016-identity-resolution.md +0 -0
  427. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0017-reconciliation-classes.md +0 -0
  428. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0018-runtime-edge-semantics.md +0 -0
  429. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0019-credential-boundary.md +0 -0
  430. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0020-provider-call-economy.md +0 -0
  431. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0021-no-arbitrary-shell.md +0 -0
  432. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0022-source-of-truth-first.md +0 -0
  433. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0023-autonomy-levels.md +0 -0
  434. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0024-risk-classes.md +0 -0
  435. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0025-approval-hash-binding.md +0 -0
  436. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0026-operation-state-machine.md +0 -0
  437. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0027-execution-adapter-boundary.md +0 -0
  438. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0028-verification-not-command-success.md +0 -0
  439. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0029-rollback-semantics.md +0 -0
  440. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0030-policy-precedence.md +0 -0
  441. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0031-fleet-canonical-model.md +0 -0
  442. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0032-org-graphfy-layers.md +0 -0
  443. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0033-history-boundaries.md +0 -0
  444. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0034-deterministic-baseline-first.md +0 -0
  445. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0035-platform-metric-provenance.md +0 -0
  446. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0036-optimization-changeintent.md +0 -0
  447. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0037-federation-no-credentials.md +0 -0
  448. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0038-no-individual-scoring.md +0 -0
  449. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0039-ai-platform-boundary.md +0 -0
  450. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0040-pluggable-analytics-storage.md +0 -0
  451. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0041-canonical-agent-roster.md +0 -0
  452. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0042-agents-vs-engines.md +0 -0
  453. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0043-coordinator-dispatch-boundary.md +0 -0
  454. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0044-verifier-independence.md +0 -0
  455. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0045-agent-budget-model.md +0 -0
  456. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0046-agent-context-economy.md +0 -0
  457. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0047-debate-referee-contract.md +0 -0
  458. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0048-host-mirror-generation.md +0 -0
  459. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0049-zero-subagent-fallback.md +0 -0
  460. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0050-agent-operation-boundary.md +0 -0
  461. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0051-fleet-scale-context-policy.md +0 -0
  462. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0052-architecture-freeze-policy.md +0 -0
  463. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0053-economy-control-plane.md +0 -0
  464. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0054-multilayer-cache-invalidation.md +0 -0
  465. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0055-context-gateway-as-the-single-context-entry-point.md +0 -0
  466. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0056-budgetenvelope-dimensions-and-hard-soft-limits.md +0 -0
  467. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0057-checkpoint-and-resume-carry-spend.md +0 -0
  468. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0058-observed-vs-estimated-accounting.md +0 -0
  469. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0059-declared-provider-pricing.md +0 -0
  470. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0060-selective-verification,-not-test-skipping.md +0 -0
  471. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0061-agent-fanout-economy.md +0 -0
  472. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0062-champion-challenger-routing.md +0 -0
  473. {platformforge-0.1.1 → platformforge-0.1.2}/docs/adr/0063-fleet-context-boundary.md +0 -0
  474. {platformforge-0.1.1 → platformforge-0.1.2}/docs/agents/AGENT_ARCHITECTURE.md +0 -0
  475. {platformforge-0.1.1 → platformforge-0.1.2}/docs/agents/AGENT_OUTPUT_CONTRACT.md +0 -0
  476. {platformforge-0.1.1 → platformforge-0.1.2}/docs/agents/AGENT_PROTOCOL.md +0 -0
  477. {platformforge-0.1.1 → platformforge-0.1.2}/docs/agents/AGENT_RISK_MATRIX.md +0 -0
  478. {platformforge-0.1.1 → platformforge-0.1.2}/docs/agents/AGENT_SKILL_MATRIX.md +0 -0
  479. {platformforge-0.1.1 → platformforge-0.1.2}/docs/agents/AGENT_TOOL_MATRIX.md +0 -0
  480. {platformforge-0.1.1 → platformforge-0.1.2}/docs/agents/DEBATE.md +0 -0
  481. {platformforge-0.1.1 → platformforge-0.1.2}/docs/agents/ECONOMY.md +0 -0
  482. {platformforge-0.1.1 → platformforge-0.1.2}/docs/agents/HOST_PARITY.md +0 -0
  483. {platformforge-0.1.1 → platformforge-0.1.2}/docs/agents/ROUTING.md +0 -0
  484. {platformforge-0.1.1 → platformforge-0.1.2}/docs/agents/VERIFICATION.md +0 -0
  485. {platformforge-0.1.1 → platformforge-0.1.2}/docs/assets/logo.png +0 -0
  486. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle2/ARCHITECTURAL-REVIEW.md +0 -0
  487. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle2/FINAL-ECONOMY.md +0 -0
  488. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle2/FINAL-MATRIX.md +0 -0
  489. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle2/FINAL-QUALITY.md +0 -0
  490. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle2/FINAL-REPORT.md +0 -0
  491. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle2/FINAL-SECURITY.md +0 -0
  492. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle2/NORTH-STAR.md +0 -0
  493. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle2.1/BASELINE.md +0 -0
  494. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle2.1/CI-VALIDATION.md +0 -0
  495. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle2.1/FINAL-MATRIX.md +0 -0
  496. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle2.1/VALIDATION-RECEIPT.json +0 -0
  497. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle3/BASELINE.md +0 -0
  498. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle3/FINAL-REPORT.md +0 -0
  499. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle3/PROPOSAL.md +0 -0
  500. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle3/RESEARCH-LEDGER.md +0 -0
  501. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle4/BASELINE.md +0 -0
  502. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle4/FINAL-REPORT.md +0 -0
  503. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle4/RESEARCH-LEDGER.md +0 -0
  504. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle4.1/BASELINE.md +0 -0
  505. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle4.1/FINAL-MATRIX.md +0 -0
  506. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle4.1/FINAL-REPORT.md +0 -0
  507. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle4.1/VALIDATION-RECEIPT.md +0 -0
  508. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle5/BASELINE.md +0 -0
  509. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle5/ECONOMY-REPORT.md +0 -0
  510. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle5/ENTERPRISE-REVIEW.md +0 -0
  511. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle5/FINAL-MATRIX.md +0 -0
  512. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle5/FINAL-REPORT.md +0 -0
  513. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle5/OPTIMIZATION-REPORT.md +0 -0
  514. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle5/RESEARCH-LEDGER.md +0 -0
  515. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle5/SCALE-BENCHMARKS.md +0 -0
  516. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle5/SECURITY-PRIVACY-REVIEW.md +0 -0
  517. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle5/VALIDATION-RECEIPT.json +0 -0
  518. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle5.1/AGENT-BENCHMARKS.md +0 -0
  519. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle5.1/AGENT-MATRIX.md +0 -0
  520. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle5.1/AGENTIC-RUNTIME-REPORT.md +0 -0
  521. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle5.1/BASELINE.md +0 -0
  522. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle5.1/FINAL-MATRIX.md +0 -0
  523. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle5.1/FINAL-REPORT.md +0 -0
  524. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle5.1/FREEZE-REVIEW.md +0 -0
  525. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle5.1/SCALE-BENCHMARKS.md +0 -0
  526. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle5.1/SOAK-REPORT.md +0 -0
  527. {platformforge-0.1.1 → platformforge-0.1.2}/docs/cycle5.1/VALIDATION-RECEIPT.json +0 -0
  528. {platformforge-0.1.1 → platformforge-0.1.2}/docs/discovery/forge-audit.md +0 -0
  529. {platformforge-0.1.1 → platformforge-0.1.2}/docs/economy/AGENTIC-ECONOMY.md +0 -0
  530. {platformforge-0.1.1 → platformforge-0.1.2}/docs/economy/ARCHITECTURE.md +0 -0
  531. {platformforge-0.1.1 → platformforge-0.1.2}/docs/economy/BUDGETS.md +0 -0
  532. {platformforge-0.1.1 → platformforge-0.1.2}/docs/economy/CACHE.md +0 -0
  533. {platformforge-0.1.1 → platformforge-0.1.2}/docs/economy/CHECKPOINT-RESUME.md +0 -0
  534. {platformforge-0.1.1 → platformforge-0.1.2}/docs/economy/CONTEXT-GATEWAY.md +0 -0
  535. {platformforge-0.1.1 → platformforge-0.1.2}/docs/economy/PRICING.md +0 -0
  536. {platformforge-0.1.1 → platformforge-0.1.2}/docs/economy/RECONCILIATION.md +0 -0
  537. {platformforge-0.1.1 → platformforge-0.1.2}/docs/economy/ROUTING.md +0 -0
  538. {platformforge-0.1.1 → platformforge-0.1.2}/docs/economy/VERIFICATION-ECONOMY.md +0 -0
  539. {platformforge-0.1.1 → platformforge-0.1.2}/docs/economy-parity/AGENTIC-ECONOMY-REPORT.md +0 -0
  540. {platformforge-0.1.1 → platformforge-0.1.2}/docs/economy-parity/BASELINE.md +0 -0
  541. {platformforge-0.1.1 → platformforge-0.1.2}/docs/economy-parity/BENCHMARKS.json +0 -0
  542. {platformforge-0.1.1 → platformforge-0.1.2}/docs/economy-parity/CACHE-REPORT.md +0 -0
  543. {platformforge-0.1.1 → platformforge-0.1.2}/docs/economy-parity/ECONOMY-BENCHMARKS.md +0 -0
  544. {platformforge-0.1.1 → platformforge-0.1.2}/docs/economy-parity/FINAL-MATRIX.md +0 -0
  545. {platformforge-0.1.1 → platformforge-0.1.2}/docs/economy-parity/FINAL-REPORT.md +0 -0
  546. {platformforge-0.1.1 → platformforge-0.1.2}/docs/economy-parity/GAP-MATRIX.md +0 -0
  547. {platformforge-0.1.1 → platformforge-0.1.2}/docs/economy-parity/POLISH-BASELINE.md +0 -0
  548. {platformforge-0.1.1 → platformforge-0.1.2}/docs/economy.md +0 -0
  549. {platformforge-0.1.1 → platformforge-0.1.2}/docs/engineering-excellence/fitness-and-gates.md +0 -0
  550. {platformforge-0.1.1 → platformforge-0.1.2}/docs/experience/accessibility.md +0 -0
  551. {platformforge-0.1.1 → platformforge-0.1.2}/docs/experience/automation-mode.md +0 -0
  552. {platformforge-0.1.1 → platformforge-0.1.2}/docs/experience/fase4-report.md +0 -0
  553. {platformforge-0.1.1 → platformforge-0.1.2}/docs/experience/installation-wizard.md +0 -0
  554. {platformforge-0.1.1 → platformforge-0.1.2}/docs/experience/interactive-cli.md +0 -0
  555. {platformforge-0.1.1 → platformforge-0.1.2}/docs/experience/themes.md +0 -0
  556. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/AGENTIC-RECEIPT.json +0 -0
  557. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/ARCHITECTURE-FREEZE-REVIEW.md +0 -0
  558. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/DOGFOOD.md +0 -0
  559. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/FINAL-MATRIX.md +0 -0
  560. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/FINAL-REPORT.md +0 -0
  561. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/FREEZE-MANIFEST.md +0 -0
  562. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/KNOWLEDGE-REVIEW.md +0 -0
  563. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/LICENSE-INVENTORY.txt +0 -0
  564. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/LIFECYCLE.md +0 -0
  565. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/PERFORMANCE-BASELINE.json +0 -0
  566. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/PERFORMANCE-RECEIPT.json +0 -0
  567. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/README.md +0 -0
  568. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/REAL-WORLD-ISSUES.md +0 -0
  569. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/RELEASE-HARDENING.md +0 -0
  570. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/SBOM.cdx.json +0 -0
  571. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/SECURITY-REVIEW.md +0 -0
  572. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/SOAK-RECEIPT.json +0 -0
  573. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/UNFREEZE-RFC.md +0 -0
  574. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/VALIDATION-RECEIPT.json +0 -0
  575. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/dogfood/api-collect.json +0 -0
  576. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/dogfood/api-inspect.json +0 -0
  577. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/dogfood/context-audit.json +0 -0
  578. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/dogfood/route-audit.json +0 -0
  579. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/dogfood/self-analyze-iac.json +0 -0
  580. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/dogfood/self-analyze-k8s.json +0 -0
  581. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/dogfood/self-analyze-secrets.json +0 -0
  582. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/dogfood/self-collect.json +0 -0
  583. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/dogfood/self-graph.json +0 -0
  584. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/dogfood/self-inspect.json +0 -0
  585. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/dogfood/spark-collect.json +0 -0
  586. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/dogfood/spark-inspect.json +0 -0
  587. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/exceptions/FE-000-template.json +0 -0
  588. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/exceptions/FE-001.json +0 -0
  589. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/exceptions/FE-002.json +0 -0
  590. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/exceptions/FE-003.json +0 -0
  591. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/exceptions/FE-004.json +0 -0
  592. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/rfc/RFC-ECONOMY-UNFREEZE.md +0 -0
  593. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/rfc/RFC-PORTABLE-DISTRIBUTION.md +0 -0
  594. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/snapshots/agents.json +0 -0
  595. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/snapshots/capabilities.json +0 -0
  596. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/snapshots/cli.json +0 -0
  597. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/snapshots/knowledge.json +0 -0
  598. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/snapshots/mcp.json +0 -0
  599. {platformforge-0.1.1 → platformforge-0.1.2}/docs/freeze/snapshots/schemas.json +0 -0
  600. {platformforge-0.1.1 → platformforge-0.1.2}/docs/installation/account-installation.md +0 -0
  601. {platformforge-0.1.1 → platformforge-0.1.2}/docs/installation/claude-code.md +0 -0
  602. {platformforge-0.1.1 → platformforge-0.1.2}/docs/installation/codex-cli.md +0 -0
  603. {platformforge-0.1.1 → platformforge-0.1.2}/docs/installation/copilot-cli.md +0 -0
  604. {platformforge-0.1.1 → platformforge-0.1.2}/docs/installation/devin-cli.md +0 -0
  605. {platformforge-0.1.1 → platformforge-0.1.2}/docs/installation/global-installation.md +0 -0
  606. {platformforge-0.1.1 → platformforge-0.1.2}/docs/installation/mcp.md +0 -0
  607. {platformforge-0.1.1 → platformforge-0.1.2}/docs/installation/portable-installation.md +0 -0
  608. {platformforge-0.1.1 → platformforge-0.1.2}/docs/installation/quickstart.en.md +0 -0
  609. {platformforge-0.1.1 → platformforge-0.1.2}/docs/installation/quickstart.md +0 -0
  610. {platformforge-0.1.1 → platformforge-0.1.2}/docs/installation/troubleshooting.en.md +0 -0
  611. {platformforge-0.1.1 → platformforge-0.1.2}/docs/installation/troubleshooting.md +0 -0
  612. {platformforge-0.1.1 → platformforge-0.1.2}/docs/installation/uninstall.md +0 -0
  613. {platformforge-0.1.1 → platformforge-0.1.2}/docs/installation/update-and-repair.md +0 -0
  614. {platformforge-0.1.1 → platformforge-0.1.2}/docs/installation/workspace-installation.md +0 -0
  615. {platformforge-0.1.1 → platformforge-0.1.2}/docs/knowledge-program/broken-link-report.md +0 -0
  616. {platformforge-0.1.1 → platformforge-0.1.2}/docs/knowledge-program/classification-report.md +0 -0
  617. {platformforge-0.1.1 → platformforge-0.1.2}/docs/knowledge-program/command-drift-report.md +0 -0
  618. {platformforge-0.1.1 → platformforge-0.1.2}/docs/knowledge-program/context-map.jsonl +0 -0
  619. {platformforge-0.1.1 → platformforge-0.1.2}/docs/knowledge-program/documentation-quality-report.md +0 -0
  620. {platformforge-0.1.1 → platformforge-0.1.2}/docs/knowledge-program/duplicate-content-report.md +0 -0
  621. {platformforge-0.1.1 → platformforge-0.1.2}/docs/knowledge-program/final-report.md +0 -0
  622. {platformforge-0.1.1 → platformforge-0.1.2}/docs/knowledge-program/inventory.jsonl +0 -0
  623. {platformforge-0.1.1 → platformforge-0.1.2}/docs/knowledge-program/obsolete-document-report.md +0 -0
  624. {platformforge-0.1.1 → platformforge-0.1.2}/docs/knowledge-program/pipeline.json +0 -0
  625. {platformforge-0.1.1 → platformforge-0.1.2}/docs/knowledge-program/semantic-review-ledger.jsonl +0 -0
  626. {platformforge-0.1.1 → platformforge-0.1.2}/docs/knowledge-program/tutorial-coverage-report.md +0 -0
  627. {platformforge-0.1.1 → platformforge-0.1.2}/docs/learn/README.md +0 -0
  628. {platformforge-0.1.1 → platformforge-0.1.2}/docs/learn/recipes/cicd.md +0 -0
  629. {platformforge-0.1.1 → platformforge-0.1.2}/docs/learn/recipes/custos.md +0 -0
  630. {platformforge-0.1.1 → platformforge-0.1.2}/docs/learn/recipes/graph-deps.md +0 -0
  631. {platformforge-0.1.1 → platformforge-0.1.2}/docs/learn/recipes/graph-studio.md +0 -0
  632. {platformforge-0.1.1 → platformforge-0.1.2}/docs/learn/recipes/hosts.md +0 -0
  633. {platformforge-0.1.1 → platformforge-0.1.2}/docs/learn/recipes/impacto-blast.md +0 -0
  634. {platformforge-0.1.1 → platformforge-0.1.2}/docs/learn/recipes/inspect-repo.md +0 -0
  635. {platformforge-0.1.1 → platformforge-0.1.2}/docs/learn/recipes/judge-policy.md +0 -0
  636. {platformforge-0.1.1 → platformforge-0.1.2}/docs/learn/recipes/kubernetes.md +0 -0
  637. {platformforge-0.1.1 → platformforge-0.1.2}/docs/learn/recipes/seguranca.md +0 -0
  638. {platformforge-0.1.1 → platformforge-0.1.2}/docs/learn/recipes/sre.md +0 -0
  639. {platformforge-0.1.1 → platformforge-0.1.2}/docs/learn/recipes/terraform.md +0 -0
  640. {platformforge-0.1.1 → platformforge-0.1.2}/docs/learn/recipes/usar-agents.md +0 -0
  641. {platformforge-0.1.1 → platformforge-0.1.2}/docs/learn/recipes/usar-skills.md +0 -0
  642. {platformforge-0.1.1 → platformforge-0.1.2}/docs/learn/recipes/verificar-mcp.md +0 -0
  643. {platformforge-0.1.1 → platformforge-0.1.2}/docs/portable/ARCHITECTURE.md +0 -0
  644. {platformforge-0.1.1 → platformforge-0.1.2}/docs/portable/FINAL-MATRIX.md +0 -0
  645. {platformforge-0.1.1 → platformforge-0.1.2}/docs/portable/FINAL-REPORT.md +0 -0
  646. {platformforge-0.1.1 → platformforge-0.1.2}/docs/portable/INSTALL.md +0 -0
  647. {platformforge-0.1.1 → platformforge-0.1.2}/docs/portable/OFFLINE.md +0 -0
  648. {platformforge-0.1.1 → platformforge-0.1.2}/docs/portable/WORKSPACES.md +0 -0
  649. {platformforge-0.1.1 → platformforge-0.1.2}/docs/reference/agents.md +0 -0
  650. {platformforge-0.1.1 → platformforge-0.1.2}/docs/reference/command-rationale.json +0 -0
  651. {platformforge-0.1.1 → platformforge-0.1.2}/docs/reference/commands.generated.json +0 -0
  652. {platformforge-0.1.1 → platformforge-0.1.2}/docs/reference/commands.md +0 -0
  653. {platformforge-0.1.1 → platformforge-0.1.2}/docs/reference/divergence.generated.json +0 -0
  654. {platformforge-0.1.1 → platformforge-0.1.2}/docs/reference/skills.md +0 -0
  655. {platformforge-0.1.1 → platformforge-0.1.2}/docs/releasing/pypi-patch-plan.md +0 -0
  656. {platformforge-0.1.1 → platformforge-0.1.2}/docs/reports/experience-3.md +0 -0
  657. {platformforge-0.1.1 → platformforge-0.1.2}/docs/tutorials/first-run.md +0 -0
  658. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/agent-budget-exhaustion/case.yaml +0 -0
  659. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/agent-conflicting-specialists/case.yaml +0 -0
  660. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/agent-fleet-optimization/case.yaml +0 -0
  661. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/agent-host-no-subagents/case.yaml +0 -0
  662. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/agent-incident-multi/case.yaml +0 -0
  663. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/agent-missing-evidence/case.yaml +0 -0
  664. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/agent-multi-domain-audit/case.yaml +0 -0
  665. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/agent-production-change/case.yaml +0 -0
  666. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/agent-security-mandatory/case.yaml +0 -0
  667. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/agent-simple-iac/case.yaml +0 -0
  668. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/approval-integrity-seal/case.yaml +0 -0
  669. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/capacity-hot/case.yaml +0 -0
  670. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/capacity-hot/fixture/capacity.json +0 -0
  671. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/catalog-noowner/case.yaml +0 -0
  672. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/catalog-noowner/fixture/catalog-info.yaml +0 -0
  673. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/contract-fact/case.yaml +0 -0
  674. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/contract-fact/fixture/doc.json +0 -0
  675. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/cosign-unverified/case.yaml +0 -0
  676. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/cosign-unverified/fixture/sig.json +0 -0
  677. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/expected-delta-refusal/case.yaml +0 -0
  678. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/finops-noattr/case.yaml +0 -0
  679. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/finops-noattr/fixture/costs.json +0 -0
  680. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/fleet-inv-absent-allocation-unknown/case.yaml +0 -0
  681. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/fleet-inv-centrality-not-criticality/case.yaml +0 -0
  682. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/fleet-inv-correlation-not-causality/case.yaml +0 -0
  683. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/fleet-inv-dx-no-person-metrics/case.yaml +0 -0
  684. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/fleet-inv-federation-restricted-denied/case.yaml +0 -0
  685. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/fleet-inv-federation-secret-denied/case.yaml +0 -0
  686. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/fleet-inv-history-window-deterministic/case.yaml +0 -0
  687. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/fleet-inv-low-util-not-deletable/case.yaml +0 -0
  688. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/fleet-inv-member-key-deterministic/case.yaml +0 -0
  689. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/fleet-inv-missing-denominator/case.yaml +0 -0
  690. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/fleet-inv-partial-coverage-visible/case.yaml +0 -0
  691. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/fleet-inv-plan-changeintent-only/case.yaml +0 -0
  692. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/fleet-inv-report-all-cited/case.yaml +0 -0
  693. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/fleet-inv-small-sample-confidence/case.yaml +0 -0
  694. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/fleet-inv-uncertain-optimization-suppressed/case.yaml +0 -0
  695. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/gha-dangerous/case.yaml +0 -0
  696. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/gha-dangerous/fixture/.github/workflows/ci.yaml +0 -0
  697. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/gitops-v2/case.yaml +0 -0
  698. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/gitops-v2/fixture/argo.yaml +0 -0
  699. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/graph-k8s-blast/case.yaml +0 -0
  700. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/graph-k8s-blast/fixture/deploy.yaml +0 -0
  701. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/iac-module-nopin/case.yaml +0 -0
  702. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/iac-module-nopin/fixture/main.tf +0 -0
  703. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/iac-plan-replace/case.yaml +0 -0
  704. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/iac-plan-replace/fixture/plan.json +0 -0
  705. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/iac-sg-open/case.yaml +0 -0
  706. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/iac-sg-open/fixture/main.tf +0 -0
  707. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/iam-oidc/case.yaml +0 -0
  708. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/iam-oidc/fixture/policy.json +0 -0
  709. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/iam-wildcard-positive/case.yaml +0 -0
  710. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/iam-wildcard-positive/fixture/policy.json +0 -0
  711. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/k8s-bad-actor/case.yaml +0 -0
  712. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/k8s-bad-actor/fixture/app.yaml +0 -0
  713. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/k8s-beta-api/case.yaml +0 -0
  714. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/k8s-beta-api/fixture/cr.yaml +0 -0
  715. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/k8s-dep-api-boundary/case.yaml +0 -0
  716. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/k8s-dep-api-boundary/fixture/app.yaml +0 -0
  717. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/k8s-dep-api-clean/case.yaml +0 -0
  718. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/k8s-dep-api-clean/fixture/app.yaml +0 -0
  719. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/k8s-dep-api-unknown/case.yaml +0 -0
  720. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/k8s-dep-api-unknown/fixture/app.yaml +0 -0
  721. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/k8s-dep-api-v120/case.yaml +0 -0
  722. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/k8s-dep-api-v120/fixture/app.yaml +0 -0
  723. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/k8s-dep-api-v129/case.yaml +0 -0
  724. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/k8s-dep-api-v129/fixture/app.yaml +0 -0
  725. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/k8s-hpa-noreq/case.yaml +0 -0
  726. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/k8s-hpa-noreq/fixture/app.yaml +0 -0
  727. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/k8s-limits-boundary/case.yaml +0 -0
  728. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/k8s-limits-boundary/fixture/app.yaml +0 -0
  729. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/k8s-limits-negative/case.yaml +0 -0
  730. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/k8s-limits-negative/fixture/deploy.yaml +0 -0
  731. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/k8s-limits-positive/case.yaml +0 -0
  732. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/k8s-limits-positive/fixture/deploy.yaml +0 -0
  733. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/k8s-nopdb/case.yaml +0 -0
  734. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/k8s-nopdb/fixture/app.yaml +0 -0
  735. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/knowledge-registry/case.yaml +0 -0
  736. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/kyverno-dep/case.yaml +0 -0
  737. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/kyverno-dep/fixture/pol.yaml +0 -0
  738. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/kyverno-legacy/case.yaml +0 -0
  739. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/kyverno-legacy/fixture/pol.yaml +0 -0
  740. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-aws-collect/case.yaml +0 -0
  741. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-aws-collect/fixture/aws/ec2_describe-vpcs.json +0 -0
  742. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-aws-collect/fixture/aws/iam_list-users.denied.txt +0 -0
  743. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-aws-collect/fixture/aws/sts_get-caller-identity.json +0 -0
  744. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-drift/case.yaml +0 -0
  745. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-drift/fixture/after.json +0 -0
  746. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-drift/fixture/before.json +0 -0
  747. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-incident/case.yaml +0 -0
  748. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-incident/fixture/changes.json +0 -0
  749. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-incident/fixture/incident.json +0 -0
  750. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-k8s-collect/case.yaml +0 -0
  751. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-k8s-collect/fixture/kubectl/get_configmaps.denied.txt +0 -0
  752. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-k8s-collect/fixture/kubectl/get_deployments.apps.json +0 -0
  753. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-k8s-collect/fixture/kubectl/get_pods.json +0 -0
  754. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-k8s-collect/fixture/kubectl/get_secrets.json +0 -0
  755. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-multicluster/case.yaml +0 -0
  756. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-multicluster/fixture/clusters.json +0 -0
  757. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-plan/case.yaml +0 -0
  758. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-plan/fixture/drift.json +0 -0
  759. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-reconcile/case.yaml +0 -0
  760. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-reconcile/fixture/desired.json +0 -0
  761. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-reconcile/fixture/observed.json +0 -0
  762. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-secrets-boundary/case.yaml +0 -0
  763. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-secrets-boundary/fixture/envelope.json +0 -0
  764. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-temporal-graph/case.yaml +0 -0
  765. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/live-temporal-graph/fixture/graph.json +0 -0
  766. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/ops-approval/case.yaml +0 -0
  767. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/ops-convergence/case.yaml +0 -0
  768. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/ops-execution-safety/case.yaml +0 -0
  769. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/ops-intent/case.yaml +0 -0
  770. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/ops-planning/case.yaml +0 -0
  771. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/ops-policy/case.yaml +0 -0
  772. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/ops-rollback/case.yaml +0 -0
  773. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/ops-verification/case.yaml +0 -0
  774. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/rollback-argocd-revision/case.yaml +0 -0
  775. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/rollback-blind-inverse/case.yaml +0 -0
  776. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/rollback-git-commit/case.yaml +0 -0
  777. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/rollback-impossible/case.yaml +0 -0
  778. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/rollback-k8s-annotation-restore/case.yaml +0 -0
  779. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/rollback-k8s-scale/case.yaml +0 -0
  780. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/rollback-material-tamper/case.yaml +0 -0
  781. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/rollback-terraform-replan/case.yaml +0 -0
  782. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/rollback-unknown/case.yaml +0 -0
  783. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/routing-specialist/case.yaml +0 -0
  784. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/rtk-roundtrip/case.yaml +0 -0
  785. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/rtk-roundtrip/fixture/verbose.txt +0 -0
  786. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/sbom-vuln/case.yaml +0 -0
  787. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/sbom-vuln/fixture/sbom.json +0 -0
  788. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/secret-prose-mixed/fixture/app.env +0 -0
  789. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/secret-prose-mixed/fixture/policy-notes.md +0 -0
  790. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/secrets-noleak/case.yaml +0 -0
  791. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/secrets-noleak/fixture/app.env +0 -0
  792. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/slo-fastburn/case.yaml +0 -0
  793. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/slo-fastburn/fixture/events.yaml +0 -0
  794. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/slo-fastburn/fixture/slo.yaml +0 -0
  795. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/slo-noinput/case.yaml +0 -0
  796. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/slo-noinput/fixture/events.yaml +0 -0
  797. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/slo-noinput/fixture/slo.yaml +0 -0
  798. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/sot-conflict/case.yaml +0 -0
  799. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/token-budget/case.yaml +0 -0
  800. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/token-budget/fixture/big.py +0 -0
  801. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/xr-delete/case.yaml +0 -0
  802. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/xr-delete/fixture/xr.yaml +0 -0
  803. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/xr-graph-chain/case.yaml +0 -0
  804. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/xr-graph-chain/fixture/xrd.yaml +0 -0
  805. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/xr-negative-crd/case.yaml +0 -0
  806. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/xr-negative-crd/fixture/widget.yaml +0 -0
  807. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/xr-upbound-mr/case.yaml +0 -0
  808. {platformforge-0.1.1 → platformforge-0.1.2}/evals/cases/xr-upbound-mr/fixture/bucket.yaml +0 -0
  809. {platformforge-0.1.1 → platformforge-0.1.2}/evals/qpt-bench/change-review/case.yaml +0 -0
  810. {platformforge-0.1.1 → platformforge-0.1.2}/evals/qpt-bench/change-review/fixture/plan.json +0 -0
  811. {platformforge-0.1.1 → platformforge-0.1.2}/evals/qpt-bench/gha-security/case.yaml +0 -0
  812. {platformforge-0.1.1 → platformforge-0.1.2}/evals/qpt-bench/gha-security/fixture/ci.yml +0 -0
  813. {platformforge-0.1.1 → platformforge-0.1.2}/evals/qpt-bench/iam-investigate/case.yaml +0 -0
  814. {platformforge-0.1.1 → platformforge-0.1.2}/evals/qpt-bench/iam-investigate/fixture/policy.json +0 -0
  815. {platformforge-0.1.1 → platformforge-0.1.2}/evals/qpt-bench/incident-analysis/case.yaml +0 -0
  816. {platformforge-0.1.1 → platformforge-0.1.2}/evals/qpt-bench/incident-analysis/fixture/query.json +0 -0
  817. {platformforge-0.1.1 → platformforge-0.1.2}/evals/qpt-bench/incident-analysis/fixture/rules.yaml +0 -0
  818. {platformforge-0.1.1 → platformforge-0.1.2}/evals/qpt-bench/k8s-review/case.yaml +0 -0
  819. {platformforge-0.1.1 → platformforge-0.1.2}/evals/qpt-bench/k8s-review/fixture/deploy.yaml +0 -0
  820. {platformforge-0.1.1 → platformforge-0.1.2}/evals/qpt-bench/tf-security/case.yaml +0 -0
  821. {platformforge-0.1.1 → platformforge-0.1.2}/evals/qpt-bench/tf-security/fixture/main.tf +0 -0
  822. {platformforge-0.1.1 → platformforge-0.1.2}/factory/specs/archive/2026/cyc9-07-scenarios-platform.md +0 -0
  823. {platformforge-0.1.1 → platformforge-0.1.2}/forge.agentic.json +0 -0
  824. {platformforge-0.1.1 → platformforge-0.1.2}/forge.json +0 -0
  825. {platformforge-0.1.1 → platformforge-0.1.2}/install.ps1 +0 -0
  826. {platformforge-0.1.1 → platformforge-0.1.2}/install.sh +0 -0
  827. {platformforge-0.1.1 → platformforge-0.1.2}/knowledge/aws/eks.yaml +0 -0
  828. {platformforge-0.1.1 → platformforge-0.1.2}/knowledge/aws/iam.yaml +0 -0
  829. {platformforge-0.1.1 → platformforge-0.1.2}/knowledge/aws/network-exposure.yaml +0 -0
  830. {platformforge-0.1.1 → platformforge-0.1.2}/knowledge/aws/organizations.yaml +0 -0
  831. {platformforge-0.1.1 → platformforge-0.1.2}/knowledge/crossplane/composition-providers.yaml +0 -0
  832. {platformforge-0.1.1 → platformforge-0.1.2}/knowledge/crossplane/managed-resources.yaml +0 -0
  833. {platformforge-0.1.1 → platformforge-0.1.2}/knowledge/crossplane/v1-v2.yaml +0 -0
  834. {platformforge-0.1.1 → platformforge-0.1.2}/knowledge/kubernetes/api-deprecations.yaml +0 -0
  835. {platformforge-0.1.1 → platformforge-0.1.2}/knowledge/kubernetes/autoscaling-rbac.yaml +0 -0
  836. {platformforge-0.1.1 → platformforge-0.1.2}/knowledge/kubernetes/gateway-api.yaml +0 -0
  837. {platformforge-0.1.1 → platformforge-0.1.2}/knowledge/kubernetes/pod-security.yaml +0 -0
  838. {platformforge-0.1.1 → platformforge-0.1.2}/knowledge/sources.yaml +0 -0
  839. {platformforge-0.1.1 → platformforge-0.1.2}/knowledge/terraform/lifecycle.yaml +0 -0
  840. {platformforge-0.1.1 → platformforge-0.1.2}/knowledge/terraform/plan-semantics.yaml +0 -0
  841. {platformforge-0.1.1 → platformforge-0.1.2}/lab/chaos-pod-kill/chaos.yaml +0 -0
  842. {platformforge-0.1.1 → platformforge-0.1.2}/lab/chaos-pod-kill/facts.json +0 -0
  843. {platformforge-0.1.1 → platformforge-0.1.2}/lab/fleets/acme/capacity.yaml +0 -0
  844. {platformforge-0.1.1 → platformforge-0.1.2}/lab/fleets/acme/costs.yaml +0 -0
  845. {platformforge-0.1.1 → platformforge-0.1.2}/lab/fleets/acme/events.yaml +0 -0
  846. {platformforge-0.1.1 → platformforge-0.1.2}/lab/fleets/acme/fleet.yaml +0 -0
  847. {platformforge-0.1.1 → platformforge-0.1.2}/lab/fleets/acme/graph.yaml +0 -0
  848. {platformforge-0.1.1 → platformforge-0.1.2}/lab/fleets/acme/policies.yaml +0 -0
  849. {platformforge-0.1.1 → platformforge-0.1.2}/lab/fleets/acme/requests.yaml +0 -0
  850. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/argo-bad-rollout/expected.yaml +0 -0
  851. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/argo-bad-rollout/fixture/app.yaml +0 -0
  852. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/aws-dump/expected.yaml +0 -0
  853. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/aws-dump/fixture/compute.json +0 -0
  854. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/aws-dump/fixture/iam.json +0 -0
  855. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/aws-dump/fixture/network.json +0 -0
  856. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/aws-dump/fixture/org.json +0 -0
  857. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/aws-dump/fixture/storage.json +0 -0
  858. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/container-unsigned/expected.yaml +0 -0
  859. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/container-unsigned/fixture/supply.json +0 -0
  860. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/cost-idle-workload/expected.yaml +0 -0
  861. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/cost-idle-workload/fixture/costs.json +0 -0
  862. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/crossplane-platform/expected.yaml +0 -0
  863. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/crossplane-platform/fixture/negative.yaml +0 -0
  864. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/crossplane-platform/fixture/xrd.yaml +0 -0
  865. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/demo-platform/expected.yaml +0 -0
  866. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/demo-platform/fixture/.github/workflows/ci.yml +0 -0
  867. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/demo-platform/fixture/deploy.yaml +0 -0
  868. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/demo-platform/fixture/infra.tf +0 -0
  869. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/fleet-ai/expected.yaml +0 -0
  870. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/fleet-capacity/expected.yaml +0 -0
  871. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/fleet-cost/expected.yaml +0 -0
  872. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/fleet-federation/expected.yaml +0 -0
  873. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/fleet-golden-path/expected.yaml +0 -0
  874. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/fleet-op-hotspot/expected.yaml +0 -0
  875. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/fleet-ownership/expected.yaml +0 -0
  876. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/fleet-partial/expected.yaml +0 -0
  877. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/fleet-policy-friction/expected.yaml +0 -0
  878. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/fleet-recurring-incident/expected.yaml +0 -0
  879. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/fleet-report/expected.yaml +0 -0
  880. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/fleet-risk/expected.yaml +0 -0
  881. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/gitops-drift/expected.yaml +0 -0
  882. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/gitops-drift/fixture/app.yaml +0 -0
  883. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/k8s-bad-readiness/expected.yaml +0 -0
  884. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/k8s-bad-readiness/fixture/deploy.yaml +0 -0
  885. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/k8s-bad-readiness/fixture/netpol.yaml +0 -0
  886. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/k8s-missing-limits/expected.yaml +0 -0
  887. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/k8s-missing-limits/fixture/deploy.yaml +0 -0
  888. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/k8s-missing-limits/fixture/netpol.yaml +0 -0
  889. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/k8s-single-replica/expected.yaml +0 -0
  890. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/k8s-single-replica/fixture/deploy.yaml +0 -0
  891. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/k8s-single-replica/fixture/netpol.yaml +0 -0
  892. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/live-aws-collect/expected.yaml +0 -0
  893. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/live-aws-collect/fixture/aws/ec2_describe-vpcs.json +0 -0
  894. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/live-aws-collect/fixture/aws/iam_list-users.denied.txt +0 -0
  895. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/live-aws-collect/fixture/aws/sts_get-caller-identity.json +0 -0
  896. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/live-k8s-collect/expected.yaml +0 -0
  897. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/live-k8s-collect/fixture/kubectl/get_configmaps.denied.txt +0 -0
  898. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/live-k8s-collect/fixture/kubectl/get_deployments.apps.json +0 -0
  899. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/live-k8s-collect/fixture/kubectl/get_pods.json +0 -0
  900. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/live-k8s-collect/fixture/kubectl/get_secrets.json +0 -0
  901. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/live-kind/expected.yaml +0 -0
  902. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/live-kind/fixture/kubectl/get_configmaps.denied.txt +0 -0
  903. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/live-kind/fixture/kubectl/get_deployments.apps.json +0 -0
  904. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/live-kind/fixture/kubectl/get_pods.json +0 -0
  905. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/live-kind/fixture/kubectl/get_secrets.json +0 -0
  906. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/network-policy-missing/expected.yaml +0 -0
  907. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/network-policy-missing/fixture/deploy.yaml +0 -0
  908. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-bad-rollout/expected.yaml +0 -0
  909. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-bad-rollout/fixture/ops.yaml +0 -0
  910. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-break-glass/expected.yaml +0 -0
  911. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-break-glass/fixture/ops.yaml +0 -0
  912. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-broken-selector/expected.yaml +0 -0
  913. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-broken-selector/fixture/ops.yaml +0 -0
  914. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-changed-plan-hash/expected.yaml +0 -0
  915. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-changed-plan-hash/fixture/ops.yaml +0 -0
  916. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-conflicting-operation/expected.yaml +0 -0
  917. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-conflicting-operation/fixture/ops.yaml +0 -0
  918. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-expired-approval/expected.yaml +0 -0
  919. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-expired-approval/fixture/ops.yaml +0 -0
  920. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-partial-failure/expected.yaml +0 -0
  921. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-partial-failure/fixture/ops.yaml +0 -0
  922. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-policy-denial/expected.yaml +0 -0
  923. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-policy-denial/fixture/ops.yaml +0 -0
  924. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-replica-drift/expected.yaml +0 -0
  925. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-replica-drift/fixture/ops.yaml +0 -0
  926. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-rollback-annotate/expected.yaml +0 -0
  927. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-rollback-annotate/fixture/ops.yaml +0 -0
  928. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-rollback-gitops/expected.yaml +0 -0
  929. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-rollback-gitops/fixture/ops.yaml +0 -0
  930. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-rollback-impossible/expected.yaml +0 -0
  931. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-rollback-impossible/fixture/ops.yaml +0 -0
  932. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-rollback-scale/expected.yaml +0 -0
  933. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-rollback-scale/fixture/ops.yaml +0 -0
  934. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-rollback-terraform/expected.yaml +0 -0
  935. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-rollback-terraform/fixture/ops.yaml +0 -0
  936. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-rollback-terraform/fixture/tf/tfplan.bin +0 -0
  937. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-stale-observation/expected.yaml +0 -0
  938. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/ops-stale-observation/fixture/ops.yaml +0 -0
  939. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/secret-exposure/expected.yaml +0 -0
  940. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/secret-exposure/fixture/app.env +0 -0
  941. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/slo-burn/expected.yaml +0 -0
  942. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/slo-burn/fixture/events.yaml +0 -0
  943. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/slo-burn/fixture/slo.yaml +0 -0
  944. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/terraform-iam-wildcard/expected.yaml +0 -0
  945. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/terraform-iam-wildcard/fixture/policy.json +0 -0
  946. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/terraform-public-bucket/expected.yaml +0 -0
  947. {platformforge-0.1.1 → platformforge-0.1.2}/lab/scenarios/terraform-public-bucket/fixture/main.tf +0 -0
  948. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/__main__.py +0 -0
  949. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/_graphstudio.py +0 -0
  950. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/_graphview.py +0 -0
  951. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/_installkit.py +0 -0
  952. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/agents/__init__.py +0 -0
  953. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/agents/bench.py +0 -0
  954. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/agents/contextpack.py +0 -0
  955. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/agents/contracts.py +0 -0
  956. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/agents/coordinators.py +0 -0
  957. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/agents/critic.py +0 -0
  958. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/agents/debate.py +0 -0
  959. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/agents/executors.py +0 -0
  960. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/agents/guardian.py +0 -0
  961. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/agents/mirrors.py +0 -0
  962. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/agents/orchestrator.py +0 -0
  963. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/agents/planner.py +0 -0
  964. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/agents/playbook.py +0 -0
  965. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/agents/referee.py +0 -0
  966. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/agents/reviewers.py +0 -0
  967. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/agents/roster.py +0 -0
  968. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/agents/runledger.py +0 -0
  969. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/agents/runstore.py +0 -0
  970. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/agents/specialists.py +0 -0
  971. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/agents/taskspec.py +0 -0
  972. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/agents/uniqueness.py +0 -0
  973. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/agents/verifier.py +0 -0
  974. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/aiplat/__init__.py +0 -0
  975. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/aiplat/models.py +0 -0
  976. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/analytics/__init__.py +0 -0
  977. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/analytics/capacity.py +0 -0
  978. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/analytics/debt.py +0 -0
  979. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/analytics/dx.py +0 -0
  980. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/analytics/finops_v4.py +0 -0
  981. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/analytics/goldenpath.py +0 -0
  982. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/analytics/history.py +0 -0
  983. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/analytics/measurement.py +0 -0
  984. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/analytics/models.py +0 -0
  985. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/analytics/opsanalytics.py +0 -0
  986. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/analytics/policyintel.py +0 -0
  987. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/analytics/reliability.py +0 -0
  988. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/analytics/soak.py +0 -0
  989. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/analytics/store.py +0 -0
  990. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/bench.py +0 -0
  991. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/cases/__init__.py +0 -0
  992. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/cases/casefile.py +0 -0
  993. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/cases/context_audit.py +0 -0
  994. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/cases/ledgers.py +0 -0
  995. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/cases/replay.py +0 -0
  996. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/cases/routing_audit.py +0 -0
  997. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/caveman/__init__.py +0 -0
  998. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/caveman/compress.py +0 -0
  999. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/cicd/__init__.py +0 -0
  1000. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/cicd/backstage.py +0 -0
  1001. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/cicd/dockerfile.py +0 -0
  1002. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/cicd/github_actions.py +0 -0
  1003. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/cicd/gitlab_ci.py +0 -0
  1004. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/cicd/gitops.py +0 -0
  1005. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/cli/__init__.py +0 -0
  1006. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/cli/fleetcmd.py +0 -0
  1007. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/cli/main.py +0 -0
  1008. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/cloud/__init__.py +0 -0
  1009. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/cloud/aws.py +0 -0
  1010. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/cloud/common.py +0 -0
  1011. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/cloud/multicloud.py +0 -0
  1012. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/collect/__init__.py +0 -0
  1013. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/collect/detect.py +0 -0
  1014. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/context/__init__.py +0 -0
  1015. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/context/capsule.py +0 -0
  1016. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/context/gateway.py +0 -0
  1017. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/context/refs.py +0 -0
  1018. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/context/sufficiency.py +0 -0
  1019. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/core/__init__.py +0 -0
  1020. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/core/hashing.py +0 -0
  1021. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/core/ownership.py +0 -0
  1022. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/core/receipts.py +0 -0
  1023. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/core/redaction.py +0 -0
  1024. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/core/store.py +0 -0
  1025. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/core/workspace.py +0 -0
  1026. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/data/portable_skills/platformforge-agents/SKILL.md +0 -0
  1027. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/data/portable_skills/platformforge-change/SKILL.md +0 -0
  1028. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/data/portable_skills/platformforge-core/SKILL.md +0 -0
  1029. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/data/portable_skills/platformforge-economy/SKILL.md +0 -0
  1030. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/data/portable_skills/platformforge-finops/SKILL.md +0 -0
  1031. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/data/portable_skills/platformforge-fleet/SKILL.md +0 -0
  1032. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/data/portable_skills/platformforge-governance/SKILL.md +0 -0
  1033. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/data/portable_skills/platformforge-graph/SKILL.md +0 -0
  1034. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/data/portable_skills/platformforge-lab/SKILL.md +0 -0
  1035. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/data/portable_skills/platformforge-sdd/SKILL.md +0 -0
  1036. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/data/portable_skills/platformforge-security/SKILL.md +0 -0
  1037. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/data/portable_skills/platformforge-sre/SKILL.md +0 -0
  1038. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/diagnose/__init__.py +0 -0
  1039. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/distribution/__init__.py +0 -0
  1040. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/distribution/bundle.py +0 -0
  1041. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/distribution/hostflow.py +0 -0
  1042. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/distribution/models.py +0 -0
  1043. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/distribution/service.py +0 -0
  1044. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/economy/__init__.py +0 -0
  1045. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/economy/bench.py +0 -0
  1046. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/economy/budget.py +0 -0
  1047. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/economy/cache.py +0 -0
  1048. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/economy/checkpoint.py +0 -0
  1049. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/economy/collection.py +0 -0
  1050. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/economy/doctor.py +0 -0
  1051. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/economy/engine.py +0 -0
  1052. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/economy/envelope.py +0 -0
  1053. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/economy/fleetpack.py +0 -0
  1054. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/economy/ledger.py +0 -0
  1055. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/economy/plan.py +0 -0
  1056. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/economy/pricing.py +0 -0
  1057. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/economy/qpt.py +0 -0
  1058. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/economy/reconcile.py +0 -0
  1059. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/economy/verifyplan.py +0 -0
  1060. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/economy/waste.py +0 -0
  1061. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/evals/__init__.py +0 -0
  1062. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/evals/coverage.py +0 -0
  1063. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/evals/fleet_invariants.py +0 -0
  1064. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/evals/ops_invariants.py +0 -0
  1065. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/evals/runner.py +0 -0
  1066. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/federation/__init__.py +0 -0
  1067. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/federation/node.py +0 -0
  1068. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/finops/__init__.py +0 -0
  1069. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/finops/alloc.py +0 -0
  1070. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/finops/costs.py +0 -0
  1071. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/finops/focus.py +0 -0
  1072. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/finops/graph_cost.py +0 -0
  1073. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/finops/ingest.py +0 -0
  1074. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/finops/insights.py +0 -0
  1075. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/finops/unit.py +0 -0
  1076. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/fleet/__init__.py +0 -0
  1077. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/fleet/loader.py +0 -0
  1078. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/fleet/models.py +0 -0
  1079. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/fleet/orggraph.py +0 -0
  1080. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/fleet/query.py +0 -0
  1081. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/forge/__init__.py +0 -0
  1082. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/forge/collect.py +0 -0
  1083. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/forge/delegate.py +0 -0
  1084. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/forge/manifest.py +0 -0
  1085. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/freeze/__init__.py +0 -0
  1086. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/freeze/exceptions.py +0 -0
  1087. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/freeze/manifest.py +0 -0
  1088. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/freeze/snapshots.py +0 -0
  1089. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/graph/__init__.py +0 -0
  1090. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/graph/backend.py +0 -0
  1091. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/graph/bench.py +0 -0
  1092. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/graph/build.py +0 -0
  1093. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/graph/delivery.py +0 -0
  1094. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/graph/diff.py +0 -0
  1095. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/graph/events.py +0 -0
  1096. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/graph/migrate.py +0 -0
  1097. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/graph/model.py +0 -0
  1098. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/graph/persist.py +0 -0
  1099. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/graph/query.py +0 -0
  1100. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/graph/temporal.py +0 -0
  1101. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/graph/vocab.py +0 -0
  1102. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/graphview.py +0 -0
  1103. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/iac/__init__.py +0 -0
  1104. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/iac/drift.py +0 -0
  1105. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/iac/plan.py +0 -0
  1106. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/iac/terraform.py +0 -0
  1107. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/install/__init__.py +0 -0
  1108. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/install/service.py +0 -0
  1109. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/k8s/__init__.py +0 -0
  1110. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/k8s/helm.py +0 -0
  1111. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/k8s/hubble.py +0 -0
  1112. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/k8s/manifests.py +0 -0
  1113. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/knowledge/__init__.py +0 -0
  1114. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/knowledge/packs.py +0 -0
  1115. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/knowledge/registry.py +0 -0
  1116. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/knowledge/select.py +0 -0
  1117. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/lab/__init__.py +0 -0
  1118. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/lab/chaos.py +0 -0
  1119. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/lab/fleetlab.py +0 -0
  1120. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/lab/opslab.py +0 -0
  1121. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/lab/runner.py +0 -0
  1122. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/live/__init__.py +0 -0
  1123. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/live/budget.py +0 -0
  1124. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/live/capability.py +0 -0
  1125. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/live/collectors/__init__.py +0 -0
  1126. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/live/collectors/aws.py +0 -0
  1127. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/live/collectors/aws_transport.py +0 -0
  1128. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/live/collectors/k8s.py +0 -0
  1129. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/live/collectors/k8s_transport.py +0 -0
  1130. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/live/cursors.py +0 -0
  1131. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/live/drift.py +0 -0
  1132. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/live/envelope.py +0 -0
  1133. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/live/federation.py +0 -0
  1134. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/live/fixtures.py +0 -0
  1135. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/live/identity.py +0 -0
  1136. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/live/incident.py +0 -0
  1137. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/live/models.py +0 -0
  1138. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/live/reconcile.py +0 -0
  1139. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/live/remediate.py +0 -0
  1140. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/live/store.py +0 -0
  1141. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/live/topology.py +0 -0
  1142. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/mcp/__init__.py +0 -0
  1143. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/mcp/parity.py +0 -0
  1144. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/mcp/registry.py +0 -0
  1145. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/mcp/server.py +0 -0
  1146. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/mcp/tools.py +0 -0
  1147. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/models/__init__.py +0 -0
  1148. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/models/base.py +0 -0
  1149. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/observe/__init__.py +0 -0
  1150. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/observe/capacity.py +0 -0
  1151. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/observe/dr.py +0 -0
  1152. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/observe/grafana.py +0 -0
  1153. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/observe/incident.py +0 -0
  1154. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/observe/otel.py +0 -0
  1155. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/observe/postmortem.py +0 -0
  1156. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/observe/prometheus.py +0 -0
  1157. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/observe/slo.py +0 -0
  1158. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/__init__.py +0 -0
  1159. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/actions.py +0 -0
  1160. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/analytics.py +0 -0
  1161. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/approval.py +0 -0
  1162. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/autorem.py +0 -0
  1163. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/config.py +0 -0
  1164. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/engine.py +0 -0
  1165. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/envelope.py +0 -0
  1166. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/executors/__init__.py +0 -0
  1167. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/executors/base.py +0 -0
  1168. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/executors/git.py +0 -0
  1169. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/executors/gitops.py +0 -0
  1170. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/executors/terraform.py +0 -0
  1171. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/gates.py +0 -0
  1172. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/goldenpath.py +0 -0
  1173. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/material.py +0 -0
  1174. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/models.py +0 -0
  1175. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/operation.py +0 -0
  1176. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/opgraph.py +0 -0
  1177. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/policy.py +0 -0
  1178. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/preconditions.py +0 -0
  1179. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/registry.py +0 -0
  1180. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/risk.py +0 -0
  1181. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/rollback.py +0 -0
  1182. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/rollback_builders.py +0 -0
  1183. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/runbook.py +0 -0
  1184. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/simulate.py +0 -0
  1185. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/source_of_truth.py +0 -0
  1186. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/store.py +0 -0
  1187. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ops/verify.py +0 -0
  1188. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/optimize/__init__.py +0 -0
  1189. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/optimize/engine.py +0 -0
  1190. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/optimize/models.py +0 -0
  1191. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/optimize/scan.py +0 -0
  1192. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/plan/__init__.py +0 -0
  1193. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/portable_cli.py +0 -0
  1194. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/product/__init__.py +0 -0
  1195. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/product/backstage.py +0 -0
  1196. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/product/catalog.py +0 -0
  1197. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/product/crossplane.py +0 -0
  1198. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/product/golden_paths/__init__.py +0 -0
  1199. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/product/golden_paths/engine.py +0 -0
  1200. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/product/golden_paths/library.yaml +0 -0
  1201. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/product/golden_paths/model.py +0 -0
  1202. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/product/maturity.py +0 -0
  1203. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/product/scorecards.py +0 -0
  1204. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/resources.py +0 -0
  1205. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/risk/__init__.py +0 -0
  1206. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/risk/engine.py +0 -0
  1207. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/risk/signals.py +0 -0
  1208. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/routing/__init__.py +0 -0
  1209. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/routing/decision.py +0 -0
  1210. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/routing/router.py +0 -0
  1211. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/rtk/__init__.py +0 -0
  1212. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/rtk/compact.py +0 -0
  1213. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/rtk/parsers.py +0 -0
  1214. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/rules/__init__.py +0 -0
  1215. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/rules/engine.py +0 -0
  1216. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/sandbox/__init__.py +0 -0
  1217. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/sandbox/env.py +0 -0
  1218. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/sandbox/review.py +0 -0
  1219. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/sdd/__init__.py +0 -0
  1220. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/sdd/lifecycle.py +0 -0
  1221. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/security/__init__.py +0 -0
  1222. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/security/cosign.py +0 -0
  1223. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/security/iam.py +0 -0
  1224. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/security/identity.py +0 -0
  1225. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/security/kyverno.py +0 -0
  1226. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/security/sbom.py +0 -0
  1227. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/security/scan.py +0 -0
  1228. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/security/slsa.py +0 -0
  1229. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/security/supply.py +0 -0
  1230. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/tokensave/__init__.py +0 -0
  1231. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/tokensave/budget.py +0 -0
  1232. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/tokensave/estimate.py +0 -0
  1233. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/tokensave/index.py +0 -0
  1234. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/tokensave/ledger.py +0 -0
  1235. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/tokensave/packs.py +0 -0
  1236. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ui/__init__.py +0 -0
  1237. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ui/app.py +0 -0
  1238. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ui/home.py +0 -0
  1239. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ui/i18n.py +0 -0
  1240. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ui/kit.py +0 -0
  1241. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ui/screen.py +0 -0
  1242. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ui/tui.py +0 -0
  1243. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/ui/wizard.py +0 -0
  1244. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/workspace/__init__.py +0 -0
  1245. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/workspace/models.py +0 -0
  1246. {platformforge-0.1.1 → platformforge-0.1.2}/platformforge/workspace/service.py +0 -0
  1247. {platformforge-0.1.1 → platformforge-0.1.2}/portal/assets/chunk-D-7Jr8A3.js +0 -0
  1248. {platformforge-0.1.1 → platformforge-0.1.2}/portal/assets/chunk-DuZy_X7l.js +0 -0
  1249. {platformforge-0.1.1 → platformforge-0.1.2}/portal/assets/favicon.ico +0 -0
  1250. {platformforge-0.1.1 → platformforge-0.1.2}/rules/catalog/finops.yaml +0 -0
  1251. {platformforge-0.1.1 → platformforge-0.1.2}/rules/catalog/gitops.yaml +0 -0
  1252. {platformforge-0.1.1 → platformforge-0.1.2}/rules/catalog/iac.yaml +0 -0
  1253. {platformforge-0.1.1 → platformforge-0.1.2}/rules/catalog/k8s.yaml +0 -0
  1254. {platformforge-0.1.1 → platformforge-0.1.2}/rules/catalog/orchestration.yaml +0 -0
  1255. {platformforge-0.1.1 → platformforge-0.1.2}/rules/catalog/product.yaml +0 -0
  1256. {platformforge-0.1.1 → platformforge-0.1.2}/rules/catalog/routing.yaml +0 -0
  1257. {platformforge-0.1.1 → platformforge-0.1.2}/rules/catalog/security.yaml +0 -0
  1258. {platformforge-0.1.1 → platformforge-0.1.2}/rules/catalog/sre.yaml +0 -0
  1259. {platformforge-0.1.1 → platformforge-0.1.2}/scripts/bench_economy.py +0 -0
  1260. {platformforge-0.1.1 → platformforge-0.1.2}/scripts/docs/check_docs.py +0 -0
  1261. {platformforge-0.1.1 → platformforge-0.1.2}/scripts/docs/doc_catalogs.py +0 -0
  1262. {platformforge-0.1.1 → platformforge-0.1.2}/scripts/docs/doc_index.py +0 -0
  1263. {platformforge-0.1.1 → platformforge-0.1.2}/scripts/docs/doc_inventory.py +0 -0
  1264. {platformforge-0.1.1 → platformforge-0.1.2}/scripts/docs/doc_manifest.py +0 -0
  1265. {platformforge-0.1.1 → platformforge-0.1.2}/scripts/docs/doc_reference.py +0 -0
  1266. {platformforge-0.1.1 → platformforge-0.1.2}/scripts/docs/final_report.py +0 -0
  1267. {platformforge-0.1.1 → platformforge-0.1.2}/scripts/docs/regen_docs.py +0 -0
  1268. {platformforge-0.1.1 → platformforge-0.1.2}/scripts/forge_bootstrap.py +0 -0
  1269. {platformforge-0.1.1 → platformforge-0.1.2}/scripts/forge_installkit.py +0 -0
  1270. {platformforge-0.1.1 → platformforge-0.1.2}/scripts/freeze_perf_receipt.py +0 -0
  1271. {platformforge-0.1.1 → platformforge-0.1.2}/scripts/freeze_soak_receipt.py +0 -0
  1272. {platformforge-0.1.1 → platformforge-0.1.2}/scripts/freeze_validation_receipt.py +0 -0
  1273. {platformforge-0.1.1 → platformforge-0.1.2}/scripts/gen_cli_surface.py +0 -0
  1274. {platformforge-0.1.1 → platformforge-0.1.2}/scripts/lab/platformforge_lab.py +0 -0
  1275. {platformforge-0.1.1 → platformforge-0.1.2}/scripts/validate.py +0 -0
  1276. {platformforge-0.1.1 → platformforge-0.1.2}/setup.ps1 +0 -0
  1277. {platformforge-0.1.1 → platformforge-0.1.2}/setup.sh +0 -0
  1278. {platformforge-0.1.1 → platformforge-0.1.2}/tests/__init__.py +0 -0
  1279. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_agent_adversarial.py +0 -0
  1280. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_agent_budget.py +0 -0
  1281. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_agent_debate.py +0 -0
  1282. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_agent_economy.py +0 -0
  1283. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_agent_handoffs.py +0 -0
  1284. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_agent_mirrors.py +0 -0
  1285. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_agent_protocol.py +0 -0
  1286. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_agent_routing.py +0 -0
  1287. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_agents.py +0 -0
  1288. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_cases.py +0 -0
  1289. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_cicd.py +0 -0
  1290. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_cli_ops.py +0 -0
  1291. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_cloud.py +0 -0
  1292. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_command_rationale.py +0 -0
  1293. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_coordinators.py +0 -0
  1294. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_core.py +0 -0
  1295. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_crossplane.py +0 -0
  1296. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_cycle5_analytics.py +0 -0
  1297. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_cycle5_hardening.py +0 -0
  1298. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_doc_drift.py +0 -0
  1299. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_doc_manifest.py +0 -0
  1300. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_docs_drift.py +0 -0
  1301. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_economy.py +0 -0
  1302. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_economy_agents_waste.py +0 -0
  1303. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_economy_cache.py +0 -0
  1304. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_economy_closure.py +0 -0
  1305. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_economy_contracts.py +0 -0
  1306. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_economy_evals.py +0 -0
  1307. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_economy_fleet_qpt.py +0 -0
  1308. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_economy_gateway.py +0 -0
  1309. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_economy_pricing_verify.py +0 -0
  1310. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_economy_v2.py +0 -0
  1311. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_executors.py +0 -0
  1312. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_federation.py +0 -0
  1313. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_finops.py +0 -0
  1314. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_fleet.py +0 -0
  1315. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_fleet_adversarial.py +0 -0
  1316. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_forge.py +0 -0
  1317. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_freeze.py +0 -0
  1318. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_graph.py +0 -0
  1319. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_graph_v2.py +0 -0
  1320. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_hardening.py +0 -0
  1321. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_hosts_flow.py +0 -0
  1322. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_iac.py +0 -0
  1323. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_install_lifecycle.py +0 -0
  1324. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_k8s.py +0 -0
  1325. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_k8s_depth.py +0 -0
  1326. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_knowledge_packs.py +0 -0
  1327. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_lab.py +0 -0
  1328. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_ledgers.py +0 -0
  1329. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_live_aws.py +0 -0
  1330. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_live_capability.py +0 -0
  1331. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_live_drift.py +0 -0
  1332. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_live_identity.py +0 -0
  1333. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_live_incident.py +0 -0
  1334. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_live_k8s.py +0 -0
  1335. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_live_remediate.py +0 -0
  1336. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_live_security_props.py +0 -0
  1337. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_mcp.py +0 -0
  1338. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_missing_input_refusals.py +0 -0
  1339. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_observation.py +0 -0
  1340. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_observe.py +0 -0
  1341. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_observe_v2.py +0 -0
  1342. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_offline.py +0 -0
  1343. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_ops_adversarial41.py +0 -0
  1344. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_ops_approval.py +0 -0
  1345. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_ops_autorem.py +0 -0
  1346. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_ops_executors.py +0 -0
  1347. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_ops_gapwave.py +0 -0
  1348. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_ops_goldenpath.py +0 -0
  1349. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_ops_hardening.py +0 -0
  1350. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_ops_models.py +0 -0
  1351. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_ops_operation.py +0 -0
  1352. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_ops_opgraph.py +0 -0
  1353. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_ops_pipeline.py +0 -0
  1354. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_ops_policy.py +0 -0
  1355. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_ops_property.py +0 -0
  1356. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_ops_risk.py +0 -0
  1357. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_ops_rollback.py +0 -0
  1358. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_ops_runbook.py +0 -0
  1359. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_ops_runbook41.py +0 -0
  1360. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_ops_verify.py +0 -0
  1361. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_orchestrator.py +0 -0
  1362. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_portable_distribution.py +0 -0
  1363. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_portable_workspace.py +0 -0
  1364. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_product.py +0 -0
  1365. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_product_v2.py +0 -0
  1366. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_qpt_v2.py +0 -0
  1367. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_reconcile.py +0 -0
  1368. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_redaction.py +0 -0
  1369. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_reviewers.py +0 -0
  1370. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_routing_audit.py +0 -0
  1371. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_sdd.py +0 -0
  1372. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_security.py +0 -0
  1373. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_soak.py +0 -0
  1374. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_specialists.py +0 -0
  1375. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_surface.py +0 -0
  1376. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_topology.py +0 -0
  1377. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_truth.py +0 -0
  1378. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_ui_resilience.py +0 -0
  1379. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_ui_tui.py +0 -0
  1380. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_wave_h.py +0 -0
  1381. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_wave_k.py +0 -0
  1382. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_wave_l.py +0 -0
  1383. {platformforge-0.1.1 → platformforge-0.1.2}/tests/test_wave_n.py +0 -0
  1384. {platformforge-0.1.1 → platformforge-0.1.2}/uv.lock +0 -0
@@ -0,0 +1,194 @@
1
+ name: publish-pypi
2
+
3
+ # Secure PyPI release pipeline — build once, publish the same artifact.
4
+ #
5
+ # build — version gate + `python -m build` + integrity manifest + artifact
6
+ # upload (contents:read only)
7
+ # publish — downloads the SAME dist/ built above, re-verifies sha256, then
8
+ # publishes via PyPI Trusted Publishing (OIDC — no stored token)
9
+ # verify — installs the published version from PyPI in a clean venv and
10
+ # smoke-tests the console script
11
+ #
12
+ # Trusted Publishing (OIDC) — no stored token. The publisher registered on
13
+ # PyPI must point to:
14
+ # owner/repo: <org>/<repo> workflow: publish-pypi.yml environment: release
15
+ # NOTE: the previous pipeline used an empty environment — update the PyPI
16
+ # publisher registration to `release` before the first run of this workflow.
17
+ #
18
+ # `environment: release` also enables repo protection — configure required
19
+ # reviewers/rules under Settings > Environments > release.
20
+ #
21
+ # GitHub artifact attestations (PEP 740) are intentionally disabled to keep
22
+ # this pipeline minimal; to enable later, add `attestations: write` to the
23
+ # publish job permissions and `attestations: true` to the pypi-publish inputs.
24
+ on:
25
+ workflow_dispatch:
26
+ inputs:
27
+ version:
28
+ description: "Version to publish — must match [project] version in pyproject.toml"
29
+ required: true
30
+ type: string
31
+
32
+ permissions:
33
+ contents: read
34
+
35
+ jobs:
36
+ build:
37
+ name: Build release artifact
38
+ runs-on: ubuntu-latest
39
+ permissions:
40
+ contents: read
41
+ steps:
42
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
43
+ - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
44
+ with:
45
+ python-version: "3.12"
46
+
47
+ - name: Version gate (input match, PyPI freshness, changelog)
48
+ env:
49
+ EXPECTED_VERSION: ${{ inputs.version }}
50
+ run: |
51
+ python - <<'PY'
52
+ import json, os, re, sys, tomllib, urllib.error, urllib.request
53
+
54
+ def fail(msg):
55
+ print(f"::error::version gate: {msg}")
56
+ sys.exit(1)
57
+
58
+ with open("pyproject.toml", "rb") as fh:
59
+ project = tomllib.load(fh)["project"]
60
+ name = project["name"]
61
+ version = project["version"]
62
+ print(f"pyproject.toml: {name} == {version}")
63
+
64
+ expected = os.environ.get("EXPECTED_VERSION", "").strip()
65
+ if expected:
66
+ if version != expected:
67
+ fail(f"dispatch input {expected!r} != pyproject.toml version {version!r}")
68
+ print(f"dispatch input matches pyproject version: {version}")
69
+ else:
70
+ print("no version input supplied — input-match check skipped")
71
+
72
+ pypi_name = re.sub(r"[-_.]+", "-", name).lower()
73
+ url = f"https://pypi.org/pypi/{pypi_name}/json"
74
+ releases = None
75
+ try:
76
+ with urllib.request.urlopen(url, timeout=15) as resp:
77
+ releases = json.load(resp).get("releases", {})
78
+ except urllib.error.HTTPError as e:
79
+ if e.code == 404:
80
+ print(f"{pypi_name}: not on PyPI yet (HTTP 404) — first publish")
81
+ else:
82
+ fail(f"PyPI JSON returned HTTP {e.code}; refusing to publish unverified")
83
+ except Exception as e:
84
+ fail(f"PyPI check failed: {e}")
85
+ if releases is not None and version in releases:
86
+ fail(f"{pypi_name} {version} is already published on PyPI")
87
+
88
+ if os.path.exists("CHANGELOG.md"):
89
+ lines = open("CHANGELOG.md", encoding="utf-8").read().splitlines()
90
+ tracks = any(re.match(r"##\s*\[?\d+\.\d+", l) for l in lines[:40])
91
+ if not tracks:
92
+ print("CHANGELOG.md does not track versions — changelog gate skipped")
93
+ elif any(l.startswith("##") and version in l for l in lines):
94
+ print(f"CHANGELOG.md has an entry for {version}")
95
+ else:
96
+ fail(f"CHANGELOG.md tracks versions but has no entry for {version}")
97
+ else:
98
+ print("no CHANGELOG.md — changelog gate skipped")
99
+
100
+ print(f"version gate OK: {name} {version}")
101
+ PY
102
+
103
+ - name: Build wheel + sdist
104
+ run: python -m pip install --quiet build twine && python -m build
105
+
106
+ - name: Twine check
107
+ run: python -m twine check dist/*
108
+
109
+ - name: Inspect wheel contents
110
+ run: |
111
+ for whl in dist/*.whl; do
112
+ echo "== $whl"
113
+ python -m zipfile -l "$whl"
114
+ done
115
+
116
+ - name: Record artifact checksums
117
+ run: (cd dist && sha256sum -- *) | tee dist-checksums.txt
118
+
119
+ - name: Upload release artifact
120
+ uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
121
+ with:
122
+ name: release-dist
123
+ path: |
124
+ dist/
125
+ dist-checksums.txt
126
+ if-no-files-found: error
127
+ retention-days: 7
128
+
129
+ publish:
130
+ name: Publish to PyPI
131
+ needs: build
132
+ runs-on: ubuntu-latest
133
+ # configure protection rules/reviewers for the "release" environment
134
+ # in repo Settings > Environments
135
+ environment: release
136
+ permissions:
137
+ contents: read
138
+ id-token: write # OIDC for PyPI trusted publishing — scoped to this job only
139
+ steps:
140
+ - name: Download release artifact
141
+ uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
142
+ with:
143
+ name: release-dist
144
+
145
+ - name: Verify artifact integrity (same artifact that was built)
146
+ run: |
147
+ test -f dist-checksums.txt
148
+ cd dist && sha256sum --check ../dist-checksums.txt
149
+
150
+ - name: Publish to PyPI (trusted publishing)
151
+ uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # release/v1
152
+
153
+ verify:
154
+ name: Verify published package
155
+ needs: publish
156
+ runs-on: ubuntu-latest
157
+ permissions:
158
+ contents: read
159
+ steps:
160
+ - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
161
+ with:
162
+ python-version: "3.12"
163
+
164
+ - name: Wait for release to appear on PyPI
165
+ env:
166
+ PKG_NAME: platformforge
167
+ EXPECTED_VERSION: ${{ inputs.version }}
168
+ run: |
169
+ python - <<'PY'
170
+ import os, sys, time, urllib.request
171
+ name = os.environ["PKG_NAME"]
172
+ version = os.environ["EXPECTED_VERSION"]
173
+ url = f"https://pypi.org/pypi/{name}/{version}/json"
174
+ for attempt in range(1, 21): # up to ~5 min
175
+ try:
176
+ with urllib.request.urlopen(url, timeout=15) as resp:
177
+ if resp.status == 200:
178
+ print(f"{name} {version} live on PyPI (attempt {attempt})")
179
+ sys.exit(0)
180
+ except Exception as e:
181
+ print(f"attempt {attempt}/20: not live yet ({e})")
182
+ time.sleep(15)
183
+ sys.exit(f"{name} {version} not visible on PyPI after ~5 minutes")
184
+ PY
185
+
186
+ - name: Install published package in clean venv
187
+ run: |
188
+ python -m venv /tmp/verify-venv
189
+ /tmp/verify-venv/bin/python -m pip install --no-cache-dir \
190
+ --index-url https://pypi.org/simple \
191
+ "platformforge==${{ inputs.version }}"
192
+
193
+ - name: Smoke test console script
194
+ run: /tmp/verify-venv/bin/platformforge --version
@@ -2,6 +2,13 @@
2
2
 
3
3
  All notable changes. Format: wave/feature, the "why", key commits.
4
4
 
5
+ ## [0.1.2] - 2026-10-18
6
+
7
+ ### Changed
8
+ - Portal 2.2 vendored generation (44-asset frontend, telemetry,
9
+ py3.10-safe server); hardened PyPI pipeline (build-once/
10
+ publish-same-artifact, version gate, post-publish verify)
11
+
5
12
  ## [0.1.1] - 2026-10-18
6
13
 
7
14
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: platformforge
3
- Version: 0.1.1
3
+ Version: 0.1.2
4
4
  Summary: Agentic Platform Engineering intelligence platform — deterministic, offline-first, evidence-first
5
5
  Project-URL: Homepage, https://github.com/EdgarSocrates98/platform-forge
6
6
  Project-URL: Repository, https://github.com/EdgarSocrates98/platform-forge
@@ -93,8 +93,8 @@
93
93
  "remote_ci": "PR pending; local gates canonical",
94
94
  "schema": "platformforge/economy-validation-receipt/v1",
95
95
  "spec": "prompt_evo_economy.md",
96
- "validated_sha": "32c2eac6f648c72e0271f533966d2002329c8aa5",
96
+ "validated_sha": "11e2ace198d34d02cc0f6ca799317ce0ba78c4da",
97
97
  "validator": "scripts/validate.py",
98
98
  "validator_version": "economy-validation-receipt/v1",
99
99
  "verdict": "validated"
100
- }
100
+ }
@@ -4,4 +4,4 @@ Deterministic-first, offline-first, evidence-first. The core never imports
4
4
  LLM SDKs, cloud SDKs, or MCP — those live behind optional adapters.
5
5
  """
6
6
 
7
- __version__ = "0.1.1"
7
+ __version__ = "0.1.2"
@@ -65,9 +65,9 @@ _REDACT_EXEMPT = frozenset({"plan_token"})
65
65
  def _utc_now() -> str:
66
66
  """Real wall-clock timestamp for telemetry — emitted at record time,
67
67
  never back-filled for events that already happened."""
68
- from datetime import UTC, datetime
68
+ from datetime import datetime, timezone
69
69
 
70
- return datetime.now(UTC).isoformat(timespec="milliseconds").replace("+00:00", "Z")
70
+ return datetime.now(timezone.utc).isoformat(timespec="milliseconds").replace("+00:00", "Z")
71
71
 
72
72
 
73
73
  # ---------------------------------------------------------------------------
@@ -0,0 +1,256 @@
1
+ # telemetry.py — forge/PortalEvent/1: execution telemetry for the portal.
2
+ #
3
+ # Lives OUTSIDE forge_portal.py on purpose (same pattern as
4
+ # registry_ops.py): the vendored server stays a request/transport layer
5
+ # and only learns to EMIT events (PortalServer.emit_event); this module
6
+ # is the storage + read side an adapter opts into.
7
+ #
8
+ # Contract (docs/observability/execution-events.md):
9
+ # - `schema` + `event_type` are the only mandatory keys; `timestamp`
10
+ # is stamped by emit_event at record time — never back-filled for
11
+ # history, never synthesized. Consumers must tolerate absence.
12
+ # - Optional: event_id, correlation_id, trace_id, span_id,
13
+ # parent_span_id, source, target, status, duration_ms, metadata,
14
+ # evidence. All additive — older producers keep working.
15
+ # - Nothing leaves this machine: events live in a bounded in-process
16
+ # buffer; there is no remote sink.
17
+ #
18
+ # Opt-in (one line in an adapter):
19
+ # self.event_sink = (rec := EventRecorder()).emit
20
+ # self.ops = default_operations(self) + telemetry.operations(rec) + [...]
21
+ #
22
+ # `PortalServer` picks `adapter.event_sink` up automatically, so every
23
+ # op boundary (start/end/refusal/timeout) is recorded for free plus
24
+ # the transport refusals (session/origin/rate-limit/confirm…). Domain
25
+ # events are emitted by the adapter itself via `ctx.emit(...)`.
26
+
27
+ from __future__ import annotations
28
+
29
+ import threading
30
+ from collections import deque
31
+ from collections.abc import Callable
32
+ from typing import Any
33
+
34
+ from platformforge import _forge_portal as fp
35
+
36
+ EVENT_SCHEMA = fp.EVENT_SCHEMA
37
+ REPORT_SCHEMA = "forge/PortalEventReport/1"
38
+ DEFAULT_CAPACITY = 500
39
+
40
+ # Closed vocabulary of statuses the portal itself emits; adapters may
41
+ # use their own values — consumers render them verbatim.
42
+ KNOWN_STATUSES = frozenset(
43
+ {"started", "ok", "refused", "failed", "timeout", "skipped"}
44
+ )
45
+
46
+ # Event types the vendored server emits. Adapter-emitted types are
47
+ # free-form (`task.planned`, `mcp.verification`, `tool.invocation`,
48
+ # `receipt`, `state.change`, …) — consumers must not assume a closed
49
+ # enum, only the field contract.
50
+ CORE_EVENT_TYPES = frozenset(
51
+ {"operation.start", "operation.end", "request.rejected"}
52
+ )
53
+
54
+
55
+ def _scalarish(value: Any, depth: int = 0) -> Any:
56
+ """Whitelist event payloads to scalars/small containers — same rule
57
+ as `read_registry_state`: events stay data, never objects. Caps
58
+ keep a pathological metadata blob from bloating the buffer."""
59
+ if depth > 6:
60
+ return str(value)
61
+ if value is None or isinstance(value, (bool, int, float, str)):
62
+ return value
63
+ if isinstance(value, list):
64
+ return [_scalarish(v, depth + 1) for v in value[:200]]
65
+ if isinstance(value, dict):
66
+ return {
67
+ str(k): _scalarish(v, depth + 1)
68
+ for k, v in list(value.items())[:50]
69
+ }
70
+ return str(value)
71
+
72
+
73
+ class EventRecorder:
74
+ """Bounded in-process store of forge/PortalEvent/1 records.
75
+
76
+ Thread-safe: op handlers run on the server's worker pool. `emit`
77
+ validates the contract floor (schema/event_type/timestamp present),
78
+ mints `event_id` when the producer did not, keeps insertion order,
79
+ and counts — the counters feed the /metrics projection. Evicted
80
+ events bump `dropped` so reports can mark themselves truncated
81
+ instead of silently pretending completeness."""
82
+
83
+ def __init__(self, maxlen: int = DEFAULT_CAPACITY) -> None:
84
+ self._events: deque[dict[str, Any]] = deque(maxlen=maxlen)
85
+ self._lock = threading.Lock()
86
+ self._seq = 0
87
+ self._dropped = 0
88
+ self._counters: dict[str, int] = {}
89
+
90
+ # -- write side ----------------------------------------------------
91
+ def emit(self, event: dict[str, Any]) -> dict[str, Any] | None:
92
+ """Store one event (already redacted by emit_event). Returns the
93
+ stored record, or None when it fails the contract floor — a
94
+ malformed event is dropped, never repaired into fake data."""
95
+ if not isinstance(event, dict):
96
+ return None
97
+ if event.get("schema") != EVENT_SCHEMA:
98
+ return None
99
+ etype = event.get("event_type")
100
+ if not isinstance(etype, str) or not etype:
101
+ return None
102
+ clean: dict[str, Any] = _scalarish(event)
103
+ with self._lock:
104
+ self._seq += 1
105
+ clean.setdefault("event_id", f"evt-{self._seq}")
106
+ if len(self._events) == self._events.maxlen:
107
+ self._dropped += 1 # the append below evicts the oldest
108
+ self._events.append(clean)
109
+ self._counters[etype] = self._counters.get(etype, 0) + 1
110
+ status = clean.get("status")
111
+ if isinstance(status, str) and status:
112
+ key = f"{etype}.{status}"
113
+ self._counters[key] = self._counters.get(key, 0) + 1
114
+ return clean
115
+
116
+ # -- read side -----------------------------------------------------
117
+ def snapshot(self) -> list[dict[str, Any]]:
118
+ with self._lock:
119
+ return list(self._events)
120
+
121
+ @property
122
+ def dropped(self) -> int:
123
+ with self._lock:
124
+ return self._dropped
125
+
126
+ def counters(self) -> dict[str, int]:
127
+ with self._lock:
128
+ return dict(self._counters)
129
+
130
+ def events_for_task(
131
+ self, task_id: str, correlation_id: str | None = None
132
+ ) -> list[dict[str, Any]]:
133
+ """Events that really belong to a task: `metadata.task_id`
134
+ naming the record, or sharing the task's own correlation_id.
135
+ No task_id/correlation match is ever inferred from timing."""
136
+ out: list[dict[str, Any]] = []
137
+ for e in self.snapshot():
138
+ raw_meta: Any = e.get("metadata")
139
+ meta: dict[str, Any] = raw_meta if isinstance(raw_meta, dict) else {}
140
+ if meta.get("task_id") == task_id:
141
+ out.append(e)
142
+ continue
143
+ if correlation_id and e.get("correlation_id") == correlation_id:
144
+ out.append(e)
145
+ return out
146
+
147
+ # -- report projections --------------------------------------------
148
+ def report(self, *, forge_id: str | None = None) -> dict[str, Any]:
149
+ """forge/PortalEventReport/1 — the full contract view."""
150
+ events = self.snapshot()
151
+ return {
152
+ "schema": REPORT_SCHEMA,
153
+ "generated_at": fp._utc_now(),
154
+ "forge_id": forge_id,
155
+ "count": len(events),
156
+ "dropped": self.dropped,
157
+ "truncated": self.dropped > 0,
158
+ "capacity": self._events.maxlen,
159
+ "counters": self.counters(),
160
+ "events": events,
161
+ }
162
+
163
+ def metrics_report(self) -> dict[str, Any]:
164
+ """MetricsReport projection (forge/PortalApi/1 §5.4) — the field
165
+ names the frontend already consumes. Pure projection of real
166
+ recorded events; `truncated` mirrors the buffer's honesty."""
167
+ events = self.snapshot()
168
+ return {
169
+ "generated_at": fp._utc_now(),
170
+ "counters": self.counters(),
171
+ "events": [self._to_metrics_event(e) for e in events],
172
+ "truncated": self.dropped > 0,
173
+ }
174
+
175
+ @staticmethod
176
+ def _to_metrics_event(e: dict[str, Any]) -> dict[str, Any]:
177
+ raw_meta: Any = e.get("metadata")
178
+ meta: dict[str, Any] = raw_meta if isinstance(raw_meta, dict) else {}
179
+ return {
180
+ "kind": e.get("event_type"),
181
+ "at": e.get("timestamp"),
182
+ "duration_ms": e.get("duration_ms"),
183
+ "status": e.get("status") or "recorded",
184
+ "origin": e.get("source") or "portal",
185
+ "correlation_id": e.get("correlation_id"),
186
+ "detail": meta.get("detail") if isinstance(meta.get("detail"), str) else None,
187
+ }
188
+
189
+
190
+ # ---------------------------------------------------------------------------
191
+ # ops — compose into an adapter's ops list
192
+ # ---------------------------------------------------------------------------
193
+
194
+
195
+ def _events_op(
196
+ recorder: EventRecorder, adapter: fp.PortalAdapter
197
+ ) -> Callable[[fp.RequestContext], Any]:
198
+ def h(ctx: fp.RequestContext) -> Any:
199
+ report = recorder.report(forge_id=adapter.forge_id)
200
+ # read-only filters over the recorded window only — the adapter
201
+ # never fabricates history the buffer already evicted.
202
+ q = ctx.query
203
+ cid = (q.get("correlation_id") or [""])[0].strip()
204
+ etype = (q.get("type") or [""])[0].strip()
205
+ status = (q.get("status") or [""])[0].strip()
206
+ events = report["events"]
207
+ if cid:
208
+ events = [e for e in events if e.get("correlation_id") == cid]
209
+ if etype:
210
+ events = [e for e in events if e.get("event_type") == etype]
211
+ if status:
212
+ events = [e for e in events if e.get("status") == status]
213
+ try:
214
+ limit = int((q.get("limit") or ["0"])[0])
215
+ except ValueError:
216
+ limit = 0
217
+ if limit > 0:
218
+ events = events[-limit:]
219
+ return {**report, "count": len(events), "events": events}
220
+
221
+ return h
222
+
223
+
224
+ def operations(recorder: EventRecorder, adapter: fp.PortalAdapter) -> list[fp.Operation]:
225
+ """`GET /events` (full forge/PortalEvent/1 window) + `GET /metrics`
226
+ (the §5.4 projection the frontend already renders). Both read-only
227
+ over the recorded buffer — empty means "nothing recorded yet",
228
+ absent op means "adapter did not opt in" (UNVERIFIED upstream)."""
229
+ return [
230
+ fp.Operation("GET", "/events", _events_op(recorder, adapter)),
231
+ fp.Operation("GET", "/metrics", lambda ctx: recorder.metrics_report()),
232
+ ]
233
+
234
+
235
+ def task_events_op(
236
+ recorder: EventRecorder, tasks: Callable[[], list[dict[str, Any]]]
237
+ ) -> fp.Operation:
238
+ """`GET /tasks/{task_id}/events` — the recorded events belonging to
239
+ one task record: `metadata.task_id` matches plus every event sharing
240
+ the task's own correlation_id (both are real links, never timing
241
+ guesses). A task id that matches no record returns an honest empty
242
+ window with `task: None` — consumers distinguish it from a 404."""
243
+
244
+ def h(ctx: fp.RequestContext) -> Any:
245
+ task_id = ctx.params["task_id"]
246
+ task = next((t for t in tasks() if t.get("id") == task_id), None)
247
+ cid = task.get("correlation_id") if isinstance(task, dict) else None
248
+ return {
249
+ "schema": REPORT_SCHEMA,
250
+ "task_id": task_id,
251
+ "task": task,
252
+ "events": recorder.events_for_task(task_id, cid),
253
+ "truncated": recorder.dropped > 0,
254
+ }
255
+
256
+ return fp.Operation("GET", "/tasks/{task_id}/events", h)
@@ -12,6 +12,7 @@ from pathlib import Path
12
12
  from typing import Any
13
13
 
14
14
  from platformforge import _forge_portal as fp
15
+ from platformforge import _portal_telemetry as _pt
15
16
  from platformforge.install import service
16
17
 
17
18
  _PACKAGE_ROOT = Path(__file__).resolve().parent
@@ -89,40 +90,50 @@ class PlatformForgePortal(fp.PortalAdapter):
89
90
  self.assets_dir = _ASSETS_DIR
90
91
  self._tasks: list[dict[str, Any]] = []
91
92
  self._task_seq = 0
92
- self.ops = fp.default_operations(self) + [
93
- fp.Operation("GET", "/profiles", lambda ctx: self._profiles()),
94
- fp.Operation("GET", "/hosts", lambda ctx: self._hosts()),
95
- fp.Operation("GET", "/mcp/servers", lambda ctx: self._mcp_servers()),
96
- fp.Operation("GET", "/skills", lambda ctx: self._skills()),
97
- fp.Operation("GET", "/agents", lambda ctx: self._agents()),
98
- fp.Operation("GET", "/tasks", lambda ctx: list(self._tasks)),
99
- fp.Operation("GET", "/graphs", lambda ctx: self._graphs()),
100
- fp.Operation("GET", "/docs/search", lambda ctx: self._docs_search(ctx)),
101
- fp.Operation("POST", "/installation/plan", self._install_plan, mutating=True),
102
- fp.Operation(
103
- "POST", "/installation/apply", self._install_apply,
104
- mutating=True, confirm="apply", needs_plan_token=True,
105
- ),
106
- fp.Operation(
107
- "POST", "/installation/repair", self._install_repair,
108
- mutating=True, confirm="repair",
109
- ),
110
- fp.Operation(
111
- "POST", "/installation/uninstall", self._install_uninstall,
112
- mutating=True, confirm="uninstall",
113
- ),
114
- fp.Operation(
115
- "POST", "/profiles/apply", self._profiles_apply,
116
- mutating=True, confirm="apply",
117
- ),
118
- fp.Operation("POST", "/hosts/launch", self._hosts_launch, mutating=False),
119
- fp.Operation("POST", "/mcp/verify", self._mcp_verify, mutating=True, confirm="verify"),
120
- fp.Operation("POST", "/tasks/plan", self._tasks_plan, mutating=True),
121
- fp.Operation(
122
- "POST", "/tasks/execute", self._tasks_execute,
123
- mutating=True, confirm="execute", needs_plan_token=True, timeout=120,
124
- ),
125
- ]
93
+ self._telemetry_recorder = _pt.EventRecorder()
94
+ self.event_sink = self._telemetry_recorder.emit
95
+ self.ops = (
96
+ fp.default_operations(self)
97
+ + _pt.operations(self._telemetry_recorder, self)
98
+ + [
99
+ fp.Operation("GET", "/profiles", lambda ctx: self._profiles()),
100
+ fp.Operation("GET", "/hosts", lambda ctx: self._hosts()),
101
+ fp.Operation("GET", "/mcp/servers", lambda ctx: self._mcp_servers()),
102
+ fp.Operation("GET", "/skills", lambda ctx: self._skills()),
103
+ fp.Operation("GET", "/agents", lambda ctx: self._agents()),
104
+ fp.Operation("GET", "/tasks", lambda ctx: list(self._tasks)),
105
+ _pt.task_events_op(self._telemetry_recorder, lambda: list(self._tasks)),
106
+ fp.Operation("GET", "/graphs", lambda ctx: self._graphs()),
107
+ fp.Operation("GET", "/docs/search", lambda ctx: self._docs_search(ctx)),
108
+ fp.Operation("POST", "/installation/plan", self._install_plan, mutating=True),
109
+ fp.Operation(
110
+ "POST", "/installation/apply", self._install_apply,
111
+ mutating=True, confirm="apply", needs_plan_token=True,
112
+ ),
113
+ fp.Operation(
114
+ "POST", "/installation/repair", self._install_repair,
115
+ mutating=True, confirm="repair",
116
+ ),
117
+ fp.Operation(
118
+ "POST", "/installation/uninstall", self._install_uninstall,
119
+ mutating=True, confirm="uninstall",
120
+ ),
121
+ fp.Operation(
122
+ "POST", "/profiles/apply", self._profiles_apply,
123
+ mutating=True, confirm="apply",
124
+ ),
125
+ fp.Operation("POST", "/hosts/launch", self._hosts_launch, mutating=False),
126
+ fp.Operation(
127
+ "POST", "/mcp/verify", self._mcp_verify,
128
+ mutating=True, confirm="verify",
129
+ ),
130
+ fp.Operation("POST", "/tasks/plan", self._tasks_plan, mutating=True),
131
+ fp.Operation(
132
+ "POST", "/tasks/execute", self._tasks_execute,
133
+ mutating=True, confirm="execute", needs_plan_token=True, timeout=120,
134
+ ),
135
+ ]
136
+ )
126
137
 
127
138
  # ------------------------------------------------------------------
128
139
  # descriptor / health / capabilities
@@ -0,0 +1 @@
1
+ import{$ as dS,At as qm,Bt as tn,Et as p,F as Sa,H as Xm,Ht as ty,J as aC,Jt as vd,P as SS,Q as cE,Qt as yS,S as Ma,Ut as uC,Y as aE,Z as bd,at as ey,ct as hD,et as da,gt as k,i as Ar,it as ei,jt as rC,kt as qS,lt as hE,ot as gS,p as Hh,qt as vc,s as DS,ut as hS,vt as lC,yt as mS,z as Vh}from"./chunk-CdjWoiPd.js";import{i as n,o as f,r as g,t as g$1}from"./main-GU444GPT.js";import{a as l,o as w,s as y}from"./chunk-YOPJhFLo.js";import{t as _}from"./chunk-CEkKt3jx.js";import{t as D}from"./chunk-Bz1rYEmS.js";import{n as k$1,t as I}from"./chunk-C8lOpg3j.js";import{t as T}from"./chunk-Cq-eK9ux.js";var le=e=>({time:e});var ne=(e,n)=>n.k;var pe=(e,n)=>n.name;function se(e,n){if(e&1&&(da(0,`span`),qS(1),aC(2,`t`),vd()),e&2){let t=SS();hD(),bd(` · `,uC(2,1,`common.updatedAt`,rC(4,le,t.stamp(n))))}}function de(e,n){e&1&&(da(0,`div`,7),Sa(1,`ui-state-badge`,23),da(2,`span`),qS(3),aC(4,`t`),vd()()),e&2&&(hD(3),ey(lC(4,1,`registry.cliUnavailable`)))}function ce(e,n){if(e&1&&Sa(0,`option`,13),e&2){let t=n.$implicit;qm(`value`,t)}}function me(e,n){if(e&1){let t=DS();da(0,`button`,24),Ma(`click`,function(){let c=Hh(t).$implicit,f=SS();return Vh(f.plan(c))}),qS(1),aC(2,`t`),vd()}if(e&2){let t=n.$implicit,o=SS();Xm(`btn--danger`,t===`uninstall`),qm(`disabled`,o.busy()||!o.forge().trim()),Ar(`data-plan`,t),hD(),bd(` `,lC(2,5,`registry.action.`+t),` `)}}function _e(e,n){e&1&&(da(0,`div`,16),Sa(1,`div`,25),da(2,`p`,4),qS(3),aC(4,`t`),vd()()),e&2&&(hD(3),ey(lC(4,1,`registry.planning`)))}function ue(e,n){if(e&1&&(da(0,`div`)(1,`dt`),qS(2),vd(),da(3,`dd`),qS(4),vd()()),e&2){let t=n.$implicit;hD(2),ey(t.k),hD(2),ey(t.v)}}function ge(e,n){if(e&1&&(da(0,`dl`,28),mS(1,ue,5,2,`div`,null,ne),vd()),e&2){let t=SS(2);hD(),yS(t.previewEntries())}}function ye(e,n){e&1&&(da(0,`pre`,29),qS(1),vd()),e&2&&(hD(),ey(n))}function ve(e,n){e&1&&(da(0,`p`,4),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`registry.previewEmpty`)))}function xe(e,n){if(e&1){let t=DS();da(0,`section`,17)(1,`div`,26)(2,`h3`),qS(3),aC(4,`t`),vd(),Sa(5,`ui-state-badge`,27),vd(),da(6,`p`,4),qS(7),aC(8,`t`),vd(),da(9,`dl`,28)(10,`div`)(11,`dt`),qS(12),aC(13,`t`),vd(),da(14,`dd`)(15,`code`),qS(16),vd()()(),da(17,`div`)(18,`dt`),qS(19),aC(20,`t`),vd(),da(21,`dd`)(22,`code`),qS(23),vd()()()(),dS(24,ge,3,0,`dl`,28)(25,ye,2,1,`pre`,29)(26,ve,3,3,`p`,4),da(27,`details`,30)(28,`summary`),qS(29),aC(30,`t`),vd(),da(31,`pre`),qS(32),vd()(),da(33,`div`,31)(34,`button`,32),Ma(`click`,function(){Hh(t);let c=SS();return Vh(c.confirmExecute())}),Sa(35,`ui-icon`,33),qS(36),aC(37,`t`),vd(),da(38,`button`,32),Ma(`click`,function(){Hh(t);let c=SS();return Vh(c.reset())}),qS(39),aC(40,`t`),vd()()()}if(e&2){let t,o=n,c=SS();Ar(`data-action`,o.plan.action)(`data-forge`,o.plan.forge)(`data-status`,o.status),hD(3),ey(lC(4,21,`registry.review`)),hD(2),qm(`state`,o.status),hD(2),ey(lC(8,23,`registry.review.hint`)),hD(5),ey(lC(13,25,`registry.op`)),hD(4),ey(o.plan.action),hD(3),ey(lC(20,27,`registry.forge`)),hD(4),ey(o.plan.forge),hD(),hS(c.previewEntries().length?24:(t=c.previewText())?25:26,t),hD(5),ey(lC(30,29,`fdoc.raw`)),hD(3),ey(c.planText(o)),hD(2),Xm(`btn--primary`,!c.destructive())(`btn--danger`,c.destructive()),Ar(`data-exec`,o.plan.action),hD(),qm(`size`,15),hD(),bd(` `,lC(37,31,`install.confirm.execute`),` `),hD(3),ey(lC(40,33,`state.cancel`))}}function fe(e,n){e&1&&(da(0,`div`,18),Sa(1,`div`,25),da(2,`p`,4),qS(3),aC(4,`t`),vd()()),e&2&&(hD(3),ey(lC(4,1,`registry.executing`)))}function be(e,n){if(e&1&&(da(0,`div`)(1,`dt`),qS(2),vd(),da(3,`dd`),qS(4),vd()()),e&2){let t=n.$implicit;hD(2),ey(t.k),hD(2),ey(t.v)}}function Se(e,n){if(e&1&&(da(0,`dl`,28),mS(1,be,5,2,`div`,null,ne),vd()),e&2){let t=SS(2);hD(),yS(t.resultEntries())}}function Ce(e,n){if(e&1){let t=DS();da(0,`section`,19)(1,`div`,26)(2,`h3`),qS(3),aC(4,`t`),vd(),Sa(5,`ui-state-badge`,27),vd(),dS(6,Se,3,0,`dl`,28),da(7,`details`,30)(8,`summary`),qS(9),aC(10,`t`),vd(),da(11,`pre`),qS(12),vd()(),da(13,`div`,31)(14,`button`,32),Ma(`click`,function(){Hh(t);let c=SS();return Vh(c.reset())}),qS(15),aC(16,`t`),vd()()()}if(e&2){let t=n,o=SS();Ar(`data-status`,t.status),hD(3),ey(lC(4,7,`registry.receipt`)),hD(2),qm(`state`,t.status),hD(),hS(o.resultEntries().length?6:-1),hD(3),ey(lC(10,9,`fdoc.raw`)),hD(3),ey(o.resultText(t)),hD(3),ey(lC(16,11,`registry.newOp`))}}function he(e,n){if(e&1){let t=DS();da(0,`ui-error`,34),Ma(`retry`,function(){Hh(t);let c=SS();return Vh(c.reset())}),vd()}e&2&&qm(`error`,n)}function Ee(e,n){e&1&&(da(0,`div`,7),Sa(1,`ui-state-badge`,23),da(2,`span`),qS(3),aC(4,`t`),vd()()),e&2&&(hD(3),ey(lC(4,1,`registry.unavailable`)))}function we(e,n){if(e&1){let t=DS();da(0,`ui-error`,34),Ma(`retry`,function(){Hh(t);let c=SS();return Vh(c.load())}),vd()}e&2&&qm(`error`,n)}function Pe(e,n){e&1&&(da(0,`div`,22),aC(1,`t`),Sa(2,`ui-skeleton`,35),vd()),e&2&&(Ar(`aria-label`,lC(1,2,`state.loading`)),hD(2),qm(`lines`,2))}function Ne(e,n){if(e&1&&(da(0,`div`,36),Sa(1,`ui-state-badge`,27),da(2,`span`),qS(3),aC(4,`t`),vd(),da(5,`code`,4),qS(6),vd()()),e&2){let t=SS();hD(),qm(`state`,t.error===`malformed`?`FAILED`:`UNVERIFIED`),hD(2),ey(lC(4,3,t.error===`malformed`?`registry.malformed`:`registry.absent`)),hD(3),ey(t.state_path)}}function Oe(e,n){if(e&1&&(da(0,`span`,41),aC(1,`t`),qS(2),aC(3,`t`),vd()),e&2){let t=SS().$implicit;Ar(`title`,lC(1,3,`registry.pinned`)),hD(2),ty(` `,lC(3,5,`registry.pinned`),` `,t.receipt.pinned,` `)}}function Re(e,n){if(e&1){let t=DS();da(0,`button`,44),Ma(`click`,function(){let c=Hh(t).$implicit,f=SS().$implicit,N=SS(3);return Vh(N.plan(c,f.name))}),qS(1),aC(2,`t`),vd()}if(e&2){let t=n.$implicit,o=SS().$implicit,c=SS(3);Xm(`rops__op--danger`,t===`uninstall`),qm(`disabled`,c.busy()),Ar(`data-plan`,t)(`data-forge`,o.name),hD(),bd(` `,lC(2,6,`registry.action.`+t),` `)}}function Ie(e,n){if(e&1&&(da(0,`tr`)(1,`td`)(2,`code`),qS(3),vd(),dS(4,Oe,4,7,`span`,41),vd(),da(5,`td`),qS(6),vd(),da(7,`td`)(8,`code`),qS(9),vd()(),da(10,`td`),qS(11),vd(),da(12,`td`)(13,`div`,42),mS(14,Re,3,8,`button`,43,gS),vd()()()),e&2){let t=n.$implicit,o=SS(3);Ar(`data-forge`,t.name),hD(3),ey(t.name),hD(),hS(t.receipt.pinned?4:-1),hD(2),ey(t.receipt.version??`—`),hD(3),ey(t.receipt.method??t.receipt.dist??`—`),hD(2),ey(t.receipt.installedAt??`—`),hD(3),yS(o.rowActions(t))}}function ke(e,n){if(e&1&&(da(0,`div`,37)(1,`table`,39)(2,`thead`)(3,`tr`)(4,`th`,40),qS(5),aC(6,`t`),vd(),da(7,`th`,40),qS(8),aC(9,`t`),vd(),da(10,`th`,40),qS(11),aC(12,`t`),vd(),da(13,`th`,40),qS(14),aC(15,`t`),vd(),da(16,`th`,40),qS(17),aC(18,`t`),vd()()(),da(19,`tbody`),mS(20,Ie,16,6,`tr`,null,pe),vd()()()),e&2){let t=SS(2);hD(5),ey(lC(6,5,`registry.forge`)),hD(3),ey(lC(9,7,`settings.version`)),hD(3),ey(lC(12,9,`registry.method`)),hD(3),ey(lC(15,11,`registry.installedAt`)),hD(3),ey(lC(18,13,`registry.colOps`)),hD(3),yS(t.rows())}}function Te(e,n){e&1&&(Sa(0,`ui-empty`,38),aC(1,`t`)),e&2&&qm(`title`,lC(1,1,`registry.none`))}function Be(e,n){if(e&1&&dS(0,Ne,7,5,`div`,36)(1,ke,22,15,`div`,37)(2,Te,2,3,`ui-empty`,38),e&2){let t=SS();hS(n.present?t.rows().length?1:2:0)}}var J=class e{api=p(g);toast=p(f);state=new l;phase=k(`idle`);forge=k(``);planReceipt=k(null);execReceipt=k(null);error=k(null);cliUnavailable=k(!1);actions=[`install`,`update`,`reinstall`,`rollback`,`pin`,`unpin`,`repair`,`uninstall`];busy=tn(()=>this.phase()===`planning`||this.phase()===`executing`);destructive=tn(()=>{let n=this.planReceipt()?.plan.action;return n===`uninstall`||n===`rollback`});rows=tn(()=>Object.entries(this.state.data()?.forges??{}).map(([n,t])=>({name:n,receipt:t})));installedNames=tn(()=>this.rows().map(n=>n.name));previewEntries=tn(()=>ie(this.planReceipt()?.plan.preview));previewText=tn(()=>{let n=this.planReceipt()?.plan.preview;return typeof n==`string`?n:null});resultEntries=tn(()=>ie(this.execReceipt()?.result));stamp=y;constructor(){this.load()}async load(){await this.state.load(()=>this.api.registryState())}rowActions(n){let t=[`update`,`reinstall`,`rollback`,`repair`];return t.push(n.receipt.pinned?`unpin`:`pin`),t.push(`uninstall`),t}async plan(n,t){let o=(t??this.forge()).trim();if(!(this.busy()||!o)){t!==void 0&&this.forge.set(t),this.error.set(null),this.planReceipt.set(null),this.execReceipt.set(null),this.phase.set(`planning`);try{let c=await hE(this.api.registryPlan({action:n,forge:o}));this.planReceipt.set(c),this.phase.set(`review`),c.status===`planned`&&this.toast.show(`registry.toast.planned`,`info`,{params:{action:n,forge:o}})}catch(c){this.fail(c)}}}async confirmExecute(){let n=this.planReceipt();if(!(this.phase()!==`review`||!n)){this.error.set(null),this.phase.set(`executing`);try{let t=await hE(this.api.registryExecute({action:n.plan.action,forge:n.plan.forge,plan:n.plan,planToken:n.plan_token}));this.execReceipt.set(t),this.phase.set(`receipt`),this.toast.show(`registry.toast.executed`,t.status===`executed`?`success`:`error`,{params:{action:n.plan.action,forge:n.plan.forge,status:t.status}}),await this.load()}catch(t){this.fail(t)}}}reset(){this.phase.set(`idle`),this.planReceipt.set(null),this.execReceipt.set(null),this.error.set(null)}asText(n){return n.target?.value??``}planText(n){return JSON.stringify(n.plan,null,2)}resultText(n){return JSON.stringify(n.result??n,null,2)}fail(n$1){let t=n$1 instanceof n?n$1:new n(0);t.body.code===`PORTAL-CLI-UNAVAILABLE`&&this.cliUnavailable.set(!0),this.error.set(t),this.phase.set(`idle`)}static ɵfac=function(t){return new(t||e)};static ɵcmp=ei({type:e,selectors:[[`registry-ops-panel`]],decls:44,vars:36,consts:[[`data-section`,`registry-ops`,`aria-labelledby`,`rops-h`,1,`card`],[1,`rops__head`],[`id`,`rops-h`],[1,`src`],[1,`muted`],[1,`icon-btn`,3,`click`,`disabled`],[`name`,`refresh`,3,`size`],[`role`,`note`,1,`unv`],[1,`rops__form`],[`for`,`registry-forge`,1,`rops__field`],[1,`lbl`],[`id`,`registry-forge`,`name`,`registry-forge`,`type`,`text`,`list`,`registry-forges`,`autocomplete`,`off`,3,`input`,`value`,`disabled`],[`id`,`registry-forges`],[3,`value`],[`role`,`group`,1,`rops__actions`],[1,`btn`,3,`btn--danger`,`disabled`],[`role`,`status`,`aria-live`,`polite`,`data-section`,`registry-planning`,1,`running`],[`data-section`,`registry-review`,1,`rops__review`],[`role`,`status`,`aria-live`,`polite`,`data-section`,`registry-executing`,1,`running`],[`data-section`,`registry-receipt`,1,`rops__receipt`],[3,`error`],[`data-section`,`registry-state`,1,`rops__state`],[`role`,`status`],[`state`,`UNVERIFIED`],[1,`btn`,3,`click`,`disabled`],[`aria-hidden`,`true`,1,`running__spinner`],[1,`rops__review-head`],[3,`state`],[1,`rops__kv`],[1,`rops__pre`],[1,`raw`],[1,`rops__row`],[1,`btn`,3,`click`],[`name`,`shield-check`,3,`size`],[3,`retry`,`error`],[`kind`,`row`,3,`lines`],[`role`,`note`,`data-state`,`absent`,1,`unv`],[1,`rops__table-wrap`],[`icon`,`gem`,3,`title`],[1,`table`],[`scope`,`col`],[1,`rops__pin`],[1,`rops__row-ops`],[1,`rops__op`,3,`rops__op--danger`,`disabled`],[1,`rops__op`,3,`click`,`disabled`]],template:function(t,o){if(t&1&&(da(0,`section`,0)(1,`div`,1)(2,`div`)(3,`h2`,2),qS(4),aC(5,`t`),vd(),da(6,`p`,3)(7,`code`),qS(8,`POST /api/v1/registry/plan · POST /api/v1/registry/execute · GET /api/v1/registry/state`),vd(),dS(9,se,3,6,`span`),vd(),da(10,`p`,4),qS(11),aC(12,`t`),vd()(),da(13,`button`,5),aC(14,`t`),Ma(`click`,function(){return o.load()}),Sa(15,`ui-icon`,6),vd()(),dS(16,de,5,3,`div`,7),da(17,`div`,8)(18,`label`,9)(19,`span`,10),qS(20),aC(21,`t`),vd(),da(22,`input`,11),aC(23,`t`),Ma(`input`,function(f){return o.forge.set(o.asText(f))}),vd()(),da(24,`datalist`,12),mS(25,ce,1,1,`option`,13,gS),vd(),da(27,`div`,14),aC(28,`t`),mS(29,me,3,7,`button`,15,gS),vd()(),dS(31,_e,5,3,`div`,16),dS(32,xe,41,35,`section`,17),dS(33,fe,5,3,`div`,18),dS(34,Ce,17,13,`section`,19),dS(35,he,1,1,`ui-error`,20),da(36,`div`,21)(37,`h3`),qS(38),aC(39,`t`),vd(),dS(40,Ee,5,3,`div`,7),dS(41,we,1,1,`ui-error`,20),dS(42,Pe,3,4,`div`,22),dS(43,Be,3,1),vd()()),t&2){let c,f,N,K,Q,W;hD(4),ey(lC(5,22,`registry.title`)),hD(5),hS((c=o.state.loadedAt())?9:-1,c),hD(2),ey(lC(12,24,`registry.hint`)),hD(2),qm(`disabled`,o.busy()),Ar(`aria-label`,lC(14,26,`state.refresh`)),hD(2),qm(`size`,14),hD(),hS(o.cliUnavailable()?16:-1),hD(4),ey(lC(21,28,`registry.forge`)),hD(2),qm(`value`,o.forge())(`disabled`,o.busy()),Ar(`placeholder`,lC(23,30,`registry.forge.hint`)),hD(3),yS(o.installedNames()),hD(2),Ar(`aria-label`,lC(28,32,`registry.title`)),hD(2),yS(o.actions),hD(2),hS(o.phase()===`planning`?31:-1),hD(),hS((f=o.phase()===`review`&&o.planReceipt())?32:-1,f),hD(),hS(o.phase()===`executing`?33:-1),hD(),hS((N=o.phase()===`receipt`&&o.execReceipt())?34:-1,N),hD(),hS((K=o.error())?35:-1,K),hD(3),ey(lC(39,34,`registry.state`)),hD(2),hS(o.state.unavailable()?40:-1),hD(),hS((Q=o.state.error())?41:-1,Q),hD(),hS(o.state.loading()&&!o.state.data()?42:-1),hD(),hS((W=o.state.data())?43:-1,W)}},dependencies:[I,D,_,cE,k$1,aE],styles:[`.rops__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.rops__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650}.src[_ngcontent-%COMP%]{margin:4px 0 0;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.unv[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--%NS%space-3);padding:var(--%NS%space-3);margin-bottom:var(--%NS%space-3);border:1px dashed color-mix(in srgb,var(--%NS%warn) 55%,transparent);border-radius:var(--%NS%radius-md);background:var(--%NS%warn-bg);font-size:var(--%NS%font-sm)}.rops__form[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.rops__field[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:min(30rem,100%);padding:var(--%NS%space-2) var(--%NS%space-3);border:1px solid var(--%NS%border-strong);border-radius:var(--%NS%radius-md);background:var(--%NS%bg);color:var(--%NS%fg);font:inherit}.rops__actions[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2)}.rops__review[_ngcontent-%COMP%], .rops__receipt[_ngcontent-%COMP%]{border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-lg);padding:var(--%NS%space-3);margin-bottom:var(--%NS%space-3);background:var(--%NS%bg-elevated)}.rops__review-head[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3)}.rops__review-head[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-md)}.rops__kv[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2);margin:var(--%NS%space-3) 0 0}.rops__kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-3)}.rops__kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{min-width:8rem;color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm)}.rops__kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;min-width:0;overflow-wrap:anywhere}.rops__pre[_ngcontent-%COMP%]{background:var(--%NS%bg);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);padding:var(--%NS%space-3);overflow-x:auto;font-size:var(--%NS%font-xs);white-space:pre-wrap}.rops__row[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2);margin-top:var(--%NS%space-3)}.rops__state[_ngcontent-%COMP%]{margin-top:var(--%NS%space-4)}.rops__state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-2);font-size:var(--%NS%font-md)}.rops__table-wrap[_ngcontent-%COMP%]{overflow-x:auto}.rops__pin[_ngcontent-%COMP%]{display:inline-block;margin-left:var(--%NS%space-2);font-size:var(--%NS%font-xs);font-weight:700;color:var(--%NS%accent-ink);background:var(--%NS%accent-bg);border-radius:var(--%NS%radius-pill);padding:1px 8px}.rops__row-ops[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:4px}.rops__op[_ngcontent-%COMP%]{padding:2px 8px;border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-pill);background:transparent;color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs);font-weight:600;cursor:pointer}.rops__op[_ngcontent-%COMP%]:hover{color:var(--%NS%fg);border-color:var(--%NS%border-strong);background:var(--%NS%bg-hover)}.rops__op--danger[_ngcontent-%COMP%]{color:var(--%NS%error);border-color:color-mix(in srgb,var(--%NS%error) 45%,transparent)}.rops__op--%NS%danger[_ngcontent-%COMP%]:hover{background:color-mix(in srgb,var(--%NS%error) 12%,transparent);color:var(--%NS%error)}.rops__op[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:default}`]})};function ie(e){if(!e||typeof e!=`object`||Array.isArray(e))return[];let n=[];for(let[t,o]of Object.entries(e)){if(n.length>=14)break;n.push({k:t,v:o==null?`—`:typeof o==`object`?JSON.stringify(o):String(o)})}return n}var Me=e=>({time:e});var Fe=e=>[`/forges`,e];var Ve=(e,n)=>n.id;function De(e,n){if(e&1&&(da(0,`span`),qS(1),aC(2,`t`),vd()),e&2){let t=SS();hD(),bd(` · `,uC(2,1,`common.updatedAt`,rC(4,Me,t.stamp(n))))}}function Ae(e,n){if(e&1&&(da(0,`p`,5)(1,`span`),qS(2),aC(3,`t`),vd(),da(4,`span`),qS(5),aC(6,`t`),vd(),da(7,`span`),qS(8),aC(9,`t`),vd(),da(10,`span`),qS(11),aC(12,`t`),vd()()),e&2){let t=n;hD(2),ty(``,lC(3,8,`federation.catalog`),`: `,t.summary.catalog),hD(3),ty(``,lC(6,10,`federation.installed`),`: `,t.summary.installed),hD(3),ty(``,lC(9,12,`federation.mcp`),`: `,t.summary.with_mcp),hD(3),ty(``,lC(12,14,`federation.checkouts`),`: `,t.summary.with_checkout)}}function ze(e,n){e&1&&(da(0,`div`,6),Sa(1,`ui-state-badge`,11),da(2,`span`),qS(3),aC(4,`t`),vd()()),e&2&&(hD(3),ey(lC(4,1,`federation.unavailable`)))}function $e(e,n){if(e&1){let t=DS();da(0,`ui-error`,12),Ma(`retry`,function(){Hh(t);let c=SS();return Vh(c.load())}),vd()}e&2&&qm(`error`,n)}function Ue(e,n){e&1&&(da(0,`div`,8),aC(1,`t`),Sa(2,`ui-skeleton`,13),vd()),e&2&&(Ar(`aria-label`,lC(1,2,`state.loading`)),hD(2),qm(`lines`,4))}function Le(e,n){e&1&&Sa(0,`ui-icon`,18),e&2&&qm(`size`,15)}function je(e,n){e&1&&(da(0,`span`,21),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`explorer.serving`)))}function He(e,n){e&1&&(da(0,`span`,22),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`explorer.registryOnly`)))}function Je(e,n){e&1&&Sa(0,`ui-state-badge`,11)}function Ge(e,n){e&1&&(da(0,`span`,24),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`state.absent`)))}function qe(e,n){if(e&1&&(da(0,`code`,25),qS(1),vd()),e&2){let t=SS().$implicit;Ar(`title`,t.checkout),hD(),ey(t.checkout)}}function Ke(e,n){e&1&&Sa(0,`ui-state-badge`,11)}function Qe(e,n){if(e&1&&(da(0,`span`,24),qS(1),aC(2,`t`),vd()),e&2){let t=SS().$implicit;hD(),ey(lC(2,1,t.mcp===null?`federation.mcpAbsent`:`federation.mcpReady`))}}function We(e,n){if(e&1&&(da(0,`tr`)(1,`td`)(2,`div`,17),dS(3,Le,1,1,`ui-icon`,18),da(4,`div`,19)(5,`strong`),qS(6),vd(),da(7,`code`,20),qS(8),vd()(),dS(9,je,3,3,`span`,21),dS(10,He,3,3,`span`,22),vd()(),da(11,`td`),Sa(12,`ui-state-badge`,23),vd(),da(13,`td`),qS(14),vd(),da(15,`td`),dS(16,Je,1,0,`ui-state-badge`,11)(17,Ge,3,3,`span`,24)(18,qe,2,2,`code`,25),vd(),da(19,`td`),dS(20,Ke,1,0,`ui-state-badge`,11)(21,Qe,3,3,`span`,24),vd(),da(22,`td`)(23,`a`,26),aC(24,`t`),Sa(25,`ui-icon`,27),vd()()()),e&2){let t=n.$implicit;Ar(`data-serving`,t.serving||null),hD(3),hS(t.serving?3:-1),hD(3),ey(t.name??t.id),hD(2),ey(t.id),hD(),hS(t.serving?9:-1),hD(),hS(t.registryOnly?10:-1),hD(2),qm(`state`,t.state??`UNVERIFIED`),hD(2),ey(t.version??`—`),hD(2),hS(t.checkout===void 0?16:t.checkout===null?17:18),hD(4),hS(t.mcp===void 0?20:21),hD(3),qm(`routerLink`,rC(15,Fe,t.id)),Ar(`aria-label`,lC(24,13,`state.viewDetails`)),hD(2),qm(`size`,15)}}function Xe(e,n){if(e&1&&(da(0,`div`,9)(1,`table`,14)(2,`thead`)(3,`tr`)(4,`th`,15),qS(5),aC(6,`t`),vd(),da(7,`th`,15),qS(8),aC(9,`t`),vd(),da(10,`th`,15),qS(11),aC(12,`t`),vd(),da(13,`th`,15),qS(14),aC(15,`t`),vd(),da(16,`th`,15),qS(17),aC(18,`t`),vd(),da(19,`th`,15)(20,`span`,16),qS(21),aC(22,`t`),vd()()()(),da(23,`tbody`),mS(24,We,26,17,`tr`,null,Ve),vd()()()),e&2){let t=SS();hD(5),ey(lC(6,6,`table.id`)),hD(3),ey(lC(9,8,`skills.state`)),hD(3),ey(lC(12,10,`settings.version`)),hD(3),ey(lC(15,12,`explorer.checkout`)),hD(3),ey(lC(18,14,`mcp.title`)),hD(4),ey(lC(22,16,`state.viewDetails`)),hD(3),yS(t.rows())}}function Ye(e,n){e&1&&(Sa(0,`ui-empty`,10),aC(1,`t`)),e&2&&qm(`title`,lC(1,1,`explorer.empty`))}var ae=class e{api=p(g);store=p(g$1);fed=new l;rows=tn(()=>w(this.store.descriptor(),this.store.health(),this.fed.data()));stamp=y;constructor(){this.load()}async load(){await Promise.allSettled([this.store.refreshHealth(),this.fed.load(()=>this.api.federation())])}static ɵfac=function(t){return new(t||e)};static ɵcmp=ei({type:e,selectors:[[`page-explorer`]],decls:19,vars:16,consts:[[`hintId`,`forge`,3,`title`,`subtitle`],[1,`btn`,3,`click`],[`name`,`refresh`,3,`size`],[`data-section`,`forges`,1,`card`],[1,`src`],[1,`sum`],[`role`,`note`,1,`unv`],[3,`error`],[`role`,`status`],[1,`table-wrap`],[`icon`,`network`,3,`title`],[`state`,`UNVERIFIED`],[3,`retry`,`error`],[`kind`,`row`,3,`lines`],[1,`table`],[`scope`,`col`],[1,`sr-only`],[1,`id`],[`name`,`gem`,3,`size`],[1,`id__text`],[1,`id__slug`],[1,`chip`],[1,`chip`,`chip--mut`],[3,`state`],[1,`muted`],[1,`path`],[1,`icon-btn`,3,`routerLink`],[`name`,`chevron-right`,3,`size`]],template:function(t,o){if(t&1&&(da(0,`ui-page-header`,0),aC(1,`t`),aC(2,`t`),da(3,`button`,1),Ma(`click`,function(){return o.load()}),Sa(4,`ui-icon`,2),qS(5),aC(6,`t`),vd()(),da(7,`section`,3)(8,`p`,4)(9,`code`),qS(10,`bootstrap · GET /api/v1/federation`),vd(),dS(11,De,3,6,`span`),vd(),dS(12,Ae,13,16,`p`,5),dS(13,ze,5,3,`div`,6),dS(14,$e,1,1,`ui-error`,7),dS(15,Ue,3,4,`div`,8),dS(16,Xe,26,18,`div`,9)(17,Ye,2,3,`ui-empty`,10),vd(),Sa(18,`registry-ops-panel`)),t&2){let c,f,N;qm(`title`,lC(1,10,`explorer.title`))(`subtitle`,lC(2,12,`explorer.subtitle`)),hD(4),qm(`size`,15),hD(),bd(` `,lC(6,14,`state.refresh`),` `),hD(6),hS((c=o.fed.loadedAt())?11:-1,c),hD(),hS((f=o.fed.data())?12:-1,f),hD(),hS(o.fed.unavailable()?13:-1),hD(),hS((N=o.fed.error())?14:-1,N),hD(),hS(o.fed.loading()&&!o.fed.data()?15:-1),hD(),hS(o.rows().length?16:o.fed.attempted()&&!o.fed.loading()&&!o.fed.error()&&!o.fed.unavailable()?17:-1)}},dependencies:[vc,T,I,_,D,cE,k$1,J,aE],styles:[`.card[_ngcontent-%COMP%]{padding:var(--%NS%space-3)}.src[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-2);padding:0 var(--%NS%space-2);font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.sum[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2) var(--%NS%space-4);margin:0 0 var(--%NS%space-3);padding:0 var(--%NS%space-2);font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.unv[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3);padding:var(--%NS%space-3);margin:0 var(--%NS%space-2) var(--%NS%space-3);border:1px dashed color-mix(in srgb,var(--%NS%warn) 55%,transparent);border-radius:var(--%NS%radius-md);background:var(--%NS%warn-bg);font-size:var(--%NS%font-sm)}.table-wrap[_ngcontent-%COMP%]{overflow-x:auto}.table[_ngcontent-%COMP%]{min-width:640px}.id[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);min-width:0}.id[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);flex:none}.id__text[_ngcontent-%COMP%]{display:grid;min-width:0}.id__slug[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chip[_ngcontent-%COMP%]{flex:none;font-size:var(--%NS%font-xs);font-weight:700;color:var(--%NS%accent-ink);background:var(--%NS%accent-bg);border-radius:var(--%NS%radius-pill);padding:1px 8px}.chip--mut[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);background:var(--%NS%bg-hover)}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.path[_ngcontent-%COMP%]{display:inline-block;max-width:38ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}`]})};export{ae as ExplorerPage};