platformforge 0.1.2__tar.gz → 0.1.4__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.
- {platformforge-0.1.2 → platformforge-0.1.4}/.github/workflows/ci.yml +4 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.github/workflows/publish-pypi.yml +10 -3
- {platformforge-0.1.2 → platformforge-0.1.4}/CHANGELOG.md +14 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/PKG-INFO +2 -1
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/economy-parity/VALIDATION-RECEIPT.json +21 -21
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/installation/account-installation.md +1 -1
- {platformforge-0.1.2 → platformforge-0.1.4}/install.ps1 +4 -2
- {platformforge-0.1.2 → platformforge-0.1.4}/install.sh +4 -2
- platformforge-0.1.4/install.windows.sh +156 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/__init__.py +1 -1
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/_forge_portal.py +4 -1
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/_installkit.py +27 -1
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/evals/fleet_invariants.py +3 -1
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/freeze/manifest.py +12 -3
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/live/envelope.py +7 -2
- platformforge-0.1.4/platformforge/resources.py +56 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/manifest.json +2 -2
- {platformforge-0.1.2 → platformforge-0.1.4}/pyproject.toml +4 -1
- {platformforge-0.1.2 → platformforge-0.1.4}/scripts/forge_bootstrap.py +512 -49
- {platformforge-0.1.2 → platformforge-0.1.4}/scripts/forge_installkit.py +107 -2
- platformforge-0.1.4/tests/test_artifact_contents.py +55 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_contracts.py +1 -1
- {platformforge-0.1.2 → platformforge-0.1.4}/uv.lock +49 -1
- platformforge-0.1.2/platformforge/resources.py +0 -36
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/pf-extractor.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/pf-graph-builder.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/pf-inventory.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/pf-judge.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/pf-reconciler.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/pf-simulator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/pf-synthesizer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/pf-verifier.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-adversarial-critic.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-ai-infra-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-architecture-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-aws-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-capacity-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-change-coordinator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-crossplane-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-debate-referee.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-economy-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-evidence-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-federation-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-finops-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-fleet-coordinator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-fleet-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-gitops-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-graph-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-iac-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-incident-coordinator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-kubernetes-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-operations-safety-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-optimization-coordinator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-orchestrator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-planner.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-policy-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-privacy-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-product-coordinator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-product-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-release-guardian.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-security-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-security-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-sre-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-task-spec-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/agents/platform-verifier.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/skills/platformforge-agents/SKILL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/skills/platformforge-change/SKILL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/skills/platformforge-core/SKILL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/skills/platformforge-economy/SKILL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/skills/platformforge-finops/SKILL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/skills/platformforge-fleet/SKILL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/skills/platformforge-governance/SKILL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/skills/platformforge-graph/SKILL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/skills/platformforge-lab/SKILL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/skills/platformforge-sdd/SKILL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/skills/platformforge-security/SKILL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.agents/skills/platformforge-sre/SKILL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/pf-extractor.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/pf-graph-builder.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/pf-inventory.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/pf-judge.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/pf-reconciler.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/pf-simulator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/pf-synthesizer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/pf-verifier.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-adversarial-critic.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-ai-infra-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-architecture-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-aws-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-capacity-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-change-coordinator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-crossplane-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-debate-referee.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-economy-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-evidence-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-federation-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-finops-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-fleet-coordinator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-fleet-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-gitops-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-graph-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-iac-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-incident-coordinator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-kubernetes-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-operations-safety-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-optimization-coordinator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-orchestrator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-planner.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-policy-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-privacy-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-product-coordinator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-product-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-release-guardian.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-security-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-security-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-sre-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-task-spec-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.claude/agents/platform-verifier.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/pf-extractor.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/pf-graph-builder.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/pf-inventory.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/pf-judge.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/pf-reconciler.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/pf-simulator.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/pf-synthesizer.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/pf-verifier.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-adversarial-critic.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-ai-infra-specialist.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-architecture-reviewer.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-aws-specialist.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-capacity-specialist.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-change-coordinator.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-crossplane-specialist.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-debate-referee.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-economy-reviewer.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-evidence-reviewer.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-federation-specialist.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-finops-specialist.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-fleet-coordinator.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-fleet-specialist.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-gitops-specialist.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-graph-specialist.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-iac-specialist.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-incident-coordinator.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-kubernetes-specialist.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-operations-safety-reviewer.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-optimization-coordinator.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-orchestrator.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-planner.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-policy-specialist.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-privacy-reviewer.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-product-coordinator.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-product-specialist.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-release-guardian.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-security-reviewer.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-security-specialist.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-sre-specialist.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-task-spec-reviewer.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.codex/agents/platform-verifier.toml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/pf-extractor.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/pf-graph-builder.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/pf-inventory.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/pf-judge.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/pf-reconciler.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/pf-simulator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/pf-synthesizer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/pf-verifier.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-adversarial-critic.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-ai-infra-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-architecture-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-aws-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-capacity-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-change-coordinator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-crossplane-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-debate-referee.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-economy-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-evidence-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-federation-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-finops-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-fleet-coordinator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-fleet-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-gitops-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-graph-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-iac-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-incident-coordinator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-kubernetes-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-operations-safety-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-optimization-coordinator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-orchestrator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-planner.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-policy-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-privacy-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-product-coordinator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-product-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-release-guardian.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-security-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-security-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-sre-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-task-spec-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.devin/agents/platform-verifier.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.github/CODEOWNERS +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.gitignore +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.platformforge/cases/golden/argo-bad-rollout/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.platformforge/cases/golden/aws-dump/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.platformforge/cases/golden/container-unsigned/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.platformforge/cases/golden/gitops-drift/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.platformforge/cases/golden/k8s-bad-readiness/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.platformforge/cases/golden/k8s-single-replica/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.platformforge/cases/golden/network-policy-missing/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.platformforge/cases/golden/secret-exposure/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.platformforge/cases/golden/slo-burn/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.platformforge/cases/golden/terraform-public-bucket/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.platformforge/cases/holdout/cost-idle-workload/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.platformforge/cases/holdout/crossplane-platform/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.platformforge/cases/holdout/demo-platform/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.platformforge/cases/holdout/k8s-missing-limits/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.platformforge/cases/holdout/secret-prose-mixed/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.platformforge/cases/holdout/terraform-iam-wildcard/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.platformforge/ledgers/false-negatives.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/.platformforge/ledgers/false-positives.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/AGENTIC-OS.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/AGENTS.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/AI-PLATFORM.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/APPROVALS.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/ARCHITECTURE.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/CAPABILITIES.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/CAPACITY.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/CLI-REFERENCE.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/CLOUD.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/CODE_OF_CONDUCT.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/COLLECTORS.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/COMPATIBILITY.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/CONTRIBUTING.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/CREDITS.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/DEPRECATION.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/DOMAIN-MAP.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/ECONOMY.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/ENTERPRISE.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/EVALS.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/EXECUTION.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/FEDERATION.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/FLEET.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/GLOSSARY.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/GOLDEN-PATH-ANALYTICS.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/GOLDEN-PATHS.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/GRAPHFY.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/INCIDENTS.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/KNOWLEDGE.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/LICENSE +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/LIVE.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/MCP.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/MULTI-CLUSTER.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/OBSERVATION-MODEL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/OPS.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/OPTIMIZATION.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/PLATFORM-ANALYTICS.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/PLATFORM-MEASUREMENT.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/POLICY-INTELLIGENCE.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/QUALITY-PER-TOKEN.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/README.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/README.pt-BR.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/RECONCILIATION.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/RESEARCH.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/ROADMAP.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/ROLLBACK.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/RULES.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/RUNBOOKS.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/RUNTIME-TOPOLOGY.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/SDD.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/SECURITY.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/SOURCES.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/SUPPORT.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/VERIFICATION.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/pf-extractor.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/pf-graph-builder.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/pf-inventory.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/pf-judge.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/pf-reconciler.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/pf-simulator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/pf-synthesizer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/pf-verifier.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-adversarial-critic.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-ai-infra-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-architecture-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-aws-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-capacity-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-change-coordinator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-crossplane-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-debate-referee.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-economy-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-evidence-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-federation-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-finops-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-fleet-coordinator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-fleet-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-gitops-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-graph-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-iac-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-incident-coordinator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-kubernetes-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-operations-safety-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-optimization-coordinator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-orchestrator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-planner.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-policy-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-privacy-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-product-coordinator.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-product-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-release-guardian.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-security-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-security-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-sre-specialist.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-task-spec-reviewer.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/agents/platform-verifier.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/config.example.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/contracts/agent-handoff.schema.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/contracts/agent-run.schema.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/contracts/agent-spec.schema.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/contracts/capability.schema.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/contracts/change-event.schema.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/contracts/change-intent.schema.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/contracts/change-plan.schema.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/contracts/collector-receipt.schema.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/contracts/context-pack.schema.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/contracts/debate.schema.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/contracts/distribution-manifest-v1.schema.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/contracts/drift-event.schema.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/contracts/fact.schema.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/contracts/finding.schema.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/contracts/graph-v2.schema.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/contracts/graph.schema.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/contracts/install-receipt-v1.schema.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/contracts/observation.schema.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/contracts/receipt.schema.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/contracts/recommendation.schema.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/contracts/refusal.schema.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/contracts/slo-contract.schema.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/contracts/task-spec.schema.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/contracts/workspace-manifest-v1.schema.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/CLI-SURFACE.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/INDEX.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/README.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0001-deterministic-core-first.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0002-graphfy-as-spine.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0003-economy-by-architecture.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0004-planned-provenance.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0005-context-redaction.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0006-rule-provenance.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0007-version-unresolved-semantics.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0008-quality-per-token.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0009-cloud-common-model.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0010-golden-path-model.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0011-observation-model.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0012-collector-boundary.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0013-absence-semantics.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0014-freshness-coverage.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0015-temporal-graphfy.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0016-identity-resolution.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0017-reconciliation-classes.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0018-runtime-edge-semantics.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0019-credential-boundary.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0020-provider-call-economy.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0021-no-arbitrary-shell.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0022-source-of-truth-first.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0023-autonomy-levels.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0024-risk-classes.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0025-approval-hash-binding.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0026-operation-state-machine.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0027-execution-adapter-boundary.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0028-verification-not-command-success.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0029-rollback-semantics.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0030-policy-precedence.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0031-fleet-canonical-model.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0032-org-graphfy-layers.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0033-history-boundaries.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0034-deterministic-baseline-first.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0035-platform-metric-provenance.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0036-optimization-changeintent.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0037-federation-no-credentials.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0038-no-individual-scoring.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0039-ai-platform-boundary.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0040-pluggable-analytics-storage.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0041-canonical-agent-roster.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0042-agents-vs-engines.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0043-coordinator-dispatch-boundary.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0044-verifier-independence.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0045-agent-budget-model.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0046-agent-context-economy.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0047-debate-referee-contract.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0048-host-mirror-generation.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0049-zero-subagent-fallback.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0050-agent-operation-boundary.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0051-fleet-scale-context-policy.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0052-architecture-freeze-policy.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0053-economy-control-plane.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0054-multilayer-cache-invalidation.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0055-context-gateway-as-the-single-context-entry-point.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0056-budgetenvelope-dimensions-and-hard-soft-limits.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0057-checkpoint-and-resume-carry-spend.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0058-observed-vs-estimated-accounting.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0059-declared-provider-pricing.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0060-selective-verification,-not-test-skipping.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0061-agent-fanout-economy.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0062-champion-challenger-routing.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/adr/0063-fleet-context-boundary.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/agents/AGENT_ARCHITECTURE.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/agents/AGENT_OUTPUT_CONTRACT.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/agents/AGENT_PROTOCOL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/agents/AGENT_RISK_MATRIX.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/agents/AGENT_SKILL_MATRIX.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/agents/AGENT_TOOL_MATRIX.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/agents/DEBATE.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/agents/ECONOMY.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/agents/HOST_PARITY.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/agents/ROUTING.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/agents/VERIFICATION.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/assets/logo.png +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle2/ARCHITECTURAL-REVIEW.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle2/FINAL-ECONOMY.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle2/FINAL-MATRIX.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle2/FINAL-QUALITY.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle2/FINAL-REPORT.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle2/FINAL-SECURITY.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle2/NORTH-STAR.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle2.1/BASELINE.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle2.1/CI-VALIDATION.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle2.1/FINAL-MATRIX.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle2.1/VALIDATION-RECEIPT.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle3/BASELINE.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle3/FINAL-REPORT.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle3/PROPOSAL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle3/RESEARCH-LEDGER.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle4/BASELINE.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle4/FINAL-REPORT.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle4/RESEARCH-LEDGER.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle4.1/BASELINE.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle4.1/FINAL-MATRIX.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle4.1/FINAL-REPORT.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle4.1/VALIDATION-RECEIPT.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle5/BASELINE.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle5/ECONOMY-REPORT.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle5/ENTERPRISE-REVIEW.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle5/FINAL-MATRIX.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle5/FINAL-REPORT.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle5/OPTIMIZATION-REPORT.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle5/RESEARCH-LEDGER.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle5/SCALE-BENCHMARKS.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle5/SECURITY-PRIVACY-REVIEW.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle5/VALIDATION-RECEIPT.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle5.1/AGENT-BENCHMARKS.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle5.1/AGENT-MATRIX.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle5.1/AGENTIC-RUNTIME-REPORT.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle5.1/BASELINE.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle5.1/FINAL-MATRIX.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle5.1/FINAL-REPORT.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle5.1/FREEZE-REVIEW.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle5.1/SCALE-BENCHMARKS.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle5.1/SOAK-REPORT.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/cycle5.1/VALIDATION-RECEIPT.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/discovery/forge-audit.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/economy/AGENTIC-ECONOMY.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/economy/ARCHITECTURE.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/economy/BUDGETS.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/economy/CACHE.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/economy/CHECKPOINT-RESUME.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/economy/CONTEXT-GATEWAY.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/economy/PRICING.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/economy/RECONCILIATION.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/economy/ROUTING.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/economy/VERIFICATION-ECONOMY.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/economy-parity/AGENTIC-ECONOMY-REPORT.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/economy-parity/BASELINE.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/economy-parity/BENCHMARKS.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/economy-parity/CACHE-REPORT.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/economy-parity/ECONOMY-BENCHMARKS.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/economy-parity/FINAL-MATRIX.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/economy-parity/FINAL-REPORT.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/economy-parity/GAP-MATRIX.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/economy-parity/POLISH-BASELINE.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/economy.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/engineering-excellence/fitness-and-gates.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/experience/accessibility.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/experience/automation-mode.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/experience/fase4-report.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/experience/installation-wizard.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/experience/interactive-cli.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/experience/themes.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/AGENTIC-RECEIPT.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/ARCHITECTURE-FREEZE-REVIEW.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/DOGFOOD.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/FINAL-MATRIX.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/FINAL-REPORT.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/FREEZE-MANIFEST.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/KNOWLEDGE-REVIEW.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/LICENSE-INVENTORY.txt +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/LIFECYCLE.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/PERFORMANCE-BASELINE.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/PERFORMANCE-RECEIPT.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/README.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/REAL-WORLD-ISSUES.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/RELEASE-HARDENING.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/SBOM.cdx.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/SECURITY-REVIEW.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/SOAK-RECEIPT.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/UNFREEZE-RFC.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/VALIDATION-RECEIPT.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/dogfood/api-collect.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/dogfood/api-inspect.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/dogfood/context-audit.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/dogfood/route-audit.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/dogfood/self-analyze-iac.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/dogfood/self-analyze-k8s.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/dogfood/self-analyze-secrets.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/dogfood/self-collect.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/dogfood/self-graph.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/dogfood/self-inspect.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/dogfood/spark-collect.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/dogfood/spark-inspect.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/exceptions/FE-000-template.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/exceptions/FE-001.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/exceptions/FE-002.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/exceptions/FE-003.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/exceptions/FE-004.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/rfc/RFC-ECONOMY-UNFREEZE.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/rfc/RFC-PORTABLE-DISTRIBUTION.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/snapshots/agents.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/snapshots/capabilities.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/snapshots/cli.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/snapshots/knowledge.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/snapshots/mcp.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/freeze/snapshots/schemas.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/installation/claude-code.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/installation/codex-cli.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/installation/copilot-cli.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/installation/devin-cli.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/installation/global-installation.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/installation/mcp.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/installation/portable-installation.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/installation/quickstart.en.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/installation/quickstart.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/installation/troubleshooting.en.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/installation/troubleshooting.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/installation/uninstall.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/installation/update-and-repair.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/installation/workspace-installation.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/knowledge-program/broken-link-report.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/knowledge-program/classification-report.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/knowledge-program/command-drift-report.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/knowledge-program/context-map.jsonl +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/knowledge-program/documentation-quality-report.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/knowledge-program/duplicate-content-report.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/knowledge-program/final-report.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/knowledge-program/inventory.jsonl +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/knowledge-program/obsolete-document-report.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/knowledge-program/pipeline.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/knowledge-program/semantic-review-ledger.jsonl +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/knowledge-program/tutorial-coverage-report.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/learn/README.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/learn/recipes/cicd.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/learn/recipes/custos.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/learn/recipes/graph-deps.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/learn/recipes/graph-studio.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/learn/recipes/hosts.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/learn/recipes/impacto-blast.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/learn/recipes/inspect-repo.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/learn/recipes/judge-policy.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/learn/recipes/kubernetes.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/learn/recipes/seguranca.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/learn/recipes/sre.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/learn/recipes/terraform.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/learn/recipes/usar-agents.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/learn/recipes/usar-skills.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/learn/recipes/verificar-mcp.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/portable/ARCHITECTURE.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/portable/FINAL-MATRIX.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/portable/FINAL-REPORT.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/portable/INSTALL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/portable/OFFLINE.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/portable/WORKSPACES.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/reference/agents.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/reference/command-rationale.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/reference/commands.generated.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/reference/commands.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/reference/divergence.generated.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/reference/skills.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/releasing/pypi-patch-plan.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/reports/experience-3.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/docs/tutorials/first-run.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/agent-budget-exhaustion/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/agent-conflicting-specialists/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/agent-fleet-optimization/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/agent-host-no-subagents/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/agent-incident-multi/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/agent-missing-evidence/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/agent-multi-domain-audit/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/agent-production-change/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/agent-security-mandatory/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/agent-simple-iac/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/approval-integrity-seal/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/capacity-hot/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/capacity-hot/fixture/capacity.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/catalog-noowner/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/catalog-noowner/fixture/catalog-info.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/contract-fact/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/contract-fact/fixture/doc.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/cosign-unverified/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/cosign-unverified/fixture/sig.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/expected-delta-refusal/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/finops-noattr/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/finops-noattr/fixture/costs.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/fleet-inv-absent-allocation-unknown/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/fleet-inv-centrality-not-criticality/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/fleet-inv-correlation-not-causality/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/fleet-inv-dx-no-person-metrics/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/fleet-inv-federation-restricted-denied/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/fleet-inv-federation-secret-denied/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/fleet-inv-history-window-deterministic/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/fleet-inv-low-util-not-deletable/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/fleet-inv-member-key-deterministic/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/fleet-inv-missing-denominator/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/fleet-inv-partial-coverage-visible/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/fleet-inv-plan-changeintent-only/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/fleet-inv-report-all-cited/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/fleet-inv-small-sample-confidence/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/fleet-inv-uncertain-optimization-suppressed/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/gha-dangerous/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/gha-dangerous/fixture/.github/workflows/ci.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/gitops-v2/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/gitops-v2/fixture/argo.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/graph-k8s-blast/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/graph-k8s-blast/fixture/deploy.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/iac-module-nopin/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/iac-module-nopin/fixture/main.tf +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/iac-plan-replace/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/iac-plan-replace/fixture/plan.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/iac-sg-open/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/iac-sg-open/fixture/main.tf +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/iam-oidc/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/iam-oidc/fixture/policy.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/iam-wildcard-positive/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/iam-wildcard-positive/fixture/policy.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/k8s-bad-actor/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/k8s-bad-actor/fixture/app.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/k8s-beta-api/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/k8s-beta-api/fixture/cr.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/k8s-dep-api-boundary/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/k8s-dep-api-boundary/fixture/app.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/k8s-dep-api-clean/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/k8s-dep-api-clean/fixture/app.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/k8s-dep-api-unknown/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/k8s-dep-api-unknown/fixture/app.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/k8s-dep-api-v120/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/k8s-dep-api-v120/fixture/app.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/k8s-dep-api-v129/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/k8s-dep-api-v129/fixture/app.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/k8s-hpa-noreq/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/k8s-hpa-noreq/fixture/app.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/k8s-limits-boundary/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/k8s-limits-boundary/fixture/app.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/k8s-limits-negative/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/k8s-limits-negative/fixture/deploy.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/k8s-limits-positive/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/k8s-limits-positive/fixture/deploy.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/k8s-nopdb/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/k8s-nopdb/fixture/app.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/knowledge-registry/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/kyverno-dep/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/kyverno-dep/fixture/pol.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/kyverno-legacy/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/kyverno-legacy/fixture/pol.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-aws-collect/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-aws-collect/fixture/aws/ec2_describe-vpcs.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-aws-collect/fixture/aws/iam_list-users.denied.txt +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-aws-collect/fixture/aws/sts_get-caller-identity.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-drift/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-drift/fixture/after.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-drift/fixture/before.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-incident/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-incident/fixture/changes.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-incident/fixture/incident.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-k8s-collect/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-k8s-collect/fixture/kubectl/get_configmaps.denied.txt +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-k8s-collect/fixture/kubectl/get_deployments.apps.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-k8s-collect/fixture/kubectl/get_pods.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-k8s-collect/fixture/kubectl/get_secrets.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-multicluster/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-multicluster/fixture/clusters.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-plan/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-plan/fixture/drift.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-reconcile/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-reconcile/fixture/desired.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-reconcile/fixture/observed.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-secrets-boundary/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-secrets-boundary/fixture/envelope.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-temporal-graph/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/live-temporal-graph/fixture/graph.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/ops-approval/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/ops-convergence/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/ops-execution-safety/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/ops-intent/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/ops-planning/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/ops-policy/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/ops-rollback/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/ops-verification/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/rollback-argocd-revision/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/rollback-blind-inverse/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/rollback-git-commit/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/rollback-impossible/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/rollback-k8s-annotation-restore/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/rollback-k8s-scale/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/rollback-material-tamper/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/rollback-terraform-replan/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/rollback-unknown/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/routing-specialist/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/rtk-roundtrip/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/rtk-roundtrip/fixture/verbose.txt +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/sbom-vuln/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/sbom-vuln/fixture/sbom.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/secret-prose-mixed/fixture/app.env +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/secret-prose-mixed/fixture/policy-notes.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/secrets-noleak/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/secrets-noleak/fixture/app.env +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/slo-fastburn/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/slo-fastburn/fixture/events.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/slo-fastburn/fixture/slo.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/slo-noinput/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/slo-noinput/fixture/events.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/slo-noinput/fixture/slo.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/sot-conflict/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/token-budget/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/token-budget/fixture/big.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/xr-delete/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/xr-delete/fixture/xr.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/xr-graph-chain/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/xr-graph-chain/fixture/xrd.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/xr-negative-crd/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/xr-negative-crd/fixture/widget.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/xr-upbound-mr/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/cases/xr-upbound-mr/fixture/bucket.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/qpt-bench/change-review/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/qpt-bench/change-review/fixture/plan.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/qpt-bench/gha-security/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/qpt-bench/gha-security/fixture/ci.yml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/qpt-bench/iam-investigate/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/qpt-bench/iam-investigate/fixture/policy.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/qpt-bench/incident-analysis/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/qpt-bench/incident-analysis/fixture/query.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/qpt-bench/incident-analysis/fixture/rules.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/qpt-bench/k8s-review/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/qpt-bench/k8s-review/fixture/deploy.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/qpt-bench/tf-security/case.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/evals/qpt-bench/tf-security/fixture/main.tf +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/factory/specs/archive/2026/cyc9-07-scenarios-platform.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/forge.agentic.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/forge.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/knowledge/aws/eks.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/knowledge/aws/iam.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/knowledge/aws/network-exposure.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/knowledge/aws/organizations.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/knowledge/crossplane/composition-providers.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/knowledge/crossplane/managed-resources.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/knowledge/crossplane/v1-v2.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/knowledge/kubernetes/api-deprecations.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/knowledge/kubernetes/autoscaling-rbac.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/knowledge/kubernetes/gateway-api.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/knowledge/kubernetes/pod-security.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/knowledge/sources.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/knowledge/terraform/lifecycle.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/knowledge/terraform/plan-semantics.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/chaos-pod-kill/chaos.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/chaos-pod-kill/facts.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/fleets/acme/capacity.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/fleets/acme/costs.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/fleets/acme/events.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/fleets/acme/fleet.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/fleets/acme/graph.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/fleets/acme/policies.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/fleets/acme/requests.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/argo-bad-rollout/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/argo-bad-rollout/fixture/app.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/aws-dump/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/aws-dump/fixture/compute.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/aws-dump/fixture/iam.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/aws-dump/fixture/network.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/aws-dump/fixture/org.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/aws-dump/fixture/storage.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/container-unsigned/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/container-unsigned/fixture/supply.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/cost-idle-workload/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/cost-idle-workload/fixture/costs.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/crossplane-platform/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/crossplane-platform/fixture/negative.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/crossplane-platform/fixture/xrd.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/demo-platform/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/demo-platform/fixture/.github/workflows/ci.yml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/demo-platform/fixture/deploy.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/demo-platform/fixture/infra.tf +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/fleet-ai/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/fleet-capacity/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/fleet-cost/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/fleet-federation/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/fleet-golden-path/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/fleet-op-hotspot/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/fleet-ownership/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/fleet-partial/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/fleet-policy-friction/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/fleet-recurring-incident/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/fleet-report/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/fleet-risk/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/gitops-drift/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/gitops-drift/fixture/app.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/k8s-bad-readiness/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/k8s-bad-readiness/fixture/deploy.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/k8s-bad-readiness/fixture/netpol.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/k8s-missing-limits/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/k8s-missing-limits/fixture/deploy.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/k8s-missing-limits/fixture/netpol.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/k8s-single-replica/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/k8s-single-replica/fixture/deploy.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/k8s-single-replica/fixture/netpol.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/live-aws-collect/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/live-aws-collect/fixture/aws/ec2_describe-vpcs.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/live-aws-collect/fixture/aws/iam_list-users.denied.txt +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/live-aws-collect/fixture/aws/sts_get-caller-identity.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/live-k8s-collect/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/live-k8s-collect/fixture/kubectl/get_configmaps.denied.txt +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/live-k8s-collect/fixture/kubectl/get_deployments.apps.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/live-k8s-collect/fixture/kubectl/get_pods.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/live-k8s-collect/fixture/kubectl/get_secrets.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/live-kind/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/live-kind/fixture/kubectl/get_configmaps.denied.txt +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/live-kind/fixture/kubectl/get_deployments.apps.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/live-kind/fixture/kubectl/get_pods.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/live-kind/fixture/kubectl/get_secrets.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/network-policy-missing/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/network-policy-missing/fixture/deploy.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-bad-rollout/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-bad-rollout/fixture/ops.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-break-glass/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-break-glass/fixture/ops.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-broken-selector/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-broken-selector/fixture/ops.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-changed-plan-hash/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-changed-plan-hash/fixture/ops.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-conflicting-operation/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-conflicting-operation/fixture/ops.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-expired-approval/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-expired-approval/fixture/ops.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-partial-failure/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-partial-failure/fixture/ops.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-policy-denial/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-policy-denial/fixture/ops.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-replica-drift/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-replica-drift/fixture/ops.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-rollback-annotate/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-rollback-annotate/fixture/ops.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-rollback-gitops/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-rollback-gitops/fixture/ops.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-rollback-impossible/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-rollback-impossible/fixture/ops.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-rollback-scale/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-rollback-scale/fixture/ops.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-rollback-terraform/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-rollback-terraform/fixture/ops.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-rollback-terraform/fixture/tf/tfplan.bin +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-stale-observation/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/ops-stale-observation/fixture/ops.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/secret-exposure/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/secret-exposure/fixture/app.env +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/slo-burn/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/slo-burn/fixture/events.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/slo-burn/fixture/slo.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/terraform-iam-wildcard/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/terraform-iam-wildcard/fixture/policy.json +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/terraform-public-bucket/expected.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/lab/scenarios/terraform-public-bucket/fixture/main.tf +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/__main__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/_graphstudio.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/_graphview.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/_portal_telemetry.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/agents/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/agents/bench.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/agents/contextpack.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/agents/contracts.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/agents/coordinators.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/agents/critic.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/agents/debate.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/agents/executors.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/agents/guardian.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/agents/mirrors.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/agents/orchestrator.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/agents/planner.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/agents/playbook.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/agents/referee.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/agents/reviewers.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/agents/roster.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/agents/runledger.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/agents/runstore.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/agents/specialists.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/agents/taskspec.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/agents/uniqueness.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/agents/verifier.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/aiplat/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/aiplat/models.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/analytics/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/analytics/capacity.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/analytics/debt.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/analytics/dx.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/analytics/finops_v4.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/analytics/goldenpath.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/analytics/history.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/analytics/measurement.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/analytics/models.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/analytics/opsanalytics.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/analytics/policyintel.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/analytics/reliability.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/analytics/soak.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/analytics/store.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/bench.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/cases/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/cases/casefile.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/cases/context_audit.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/cases/ledgers.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/cases/replay.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/cases/routing_audit.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/caveman/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/caveman/compress.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/cicd/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/cicd/backstage.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/cicd/dockerfile.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/cicd/github_actions.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/cicd/gitlab_ci.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/cicd/gitops.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/cli/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/cli/fleetcmd.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/cli/main.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/cloud/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/cloud/aws.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/cloud/common.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/cloud/multicloud.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/collect/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/collect/detect.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/context/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/context/capsule.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/context/gateway.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/context/refs.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/context/sufficiency.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/core/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/core/hashing.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/core/ownership.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/core/receipts.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/core/redaction.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/core/store.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/core/workspace.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/data/portable_skills/platformforge-agents/SKILL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/data/portable_skills/platformforge-change/SKILL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/data/portable_skills/platformforge-core/SKILL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/data/portable_skills/platformforge-economy/SKILL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/data/portable_skills/platformforge-finops/SKILL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/data/portable_skills/platformforge-fleet/SKILL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/data/portable_skills/platformforge-governance/SKILL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/data/portable_skills/platformforge-graph/SKILL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/data/portable_skills/platformforge-lab/SKILL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/data/portable_skills/platformforge-sdd/SKILL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/data/portable_skills/platformforge-security/SKILL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/data/portable_skills/platformforge-sre/SKILL.md +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/diagnose/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/distribution/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/distribution/bundle.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/distribution/hostflow.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/distribution/models.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/distribution/service.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/economy/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/economy/bench.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/economy/budget.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/economy/cache.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/economy/checkpoint.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/economy/collection.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/economy/doctor.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/economy/engine.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/economy/envelope.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/economy/fleetpack.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/economy/ledger.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/economy/plan.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/economy/pricing.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/economy/qpt.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/economy/reconcile.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/economy/verifyplan.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/economy/waste.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/evals/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/evals/coverage.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/evals/ops_invariants.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/evals/runner.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/federation/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/federation/node.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/finops/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/finops/alloc.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/finops/costs.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/finops/focus.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/finops/graph_cost.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/finops/ingest.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/finops/insights.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/finops/unit.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/fleet/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/fleet/loader.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/fleet/models.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/fleet/orggraph.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/fleet/query.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/forge/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/forge/collect.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/forge/delegate.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/forge/manifest.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/freeze/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/freeze/exceptions.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/freeze/snapshots.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/graph/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/graph/backend.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/graph/bench.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/graph/build.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/graph/delivery.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/graph/diff.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/graph/events.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/graph/migrate.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/graph/model.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/graph/persist.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/graph/query.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/graph/temporal.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/graph/vocab.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/graphview.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/iac/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/iac/drift.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/iac/plan.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/iac/terraform.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/install/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/install/service.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/k8s/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/k8s/helm.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/k8s/hubble.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/k8s/manifests.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/knowledge/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/knowledge/packs.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/knowledge/registry.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/knowledge/select.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/lab/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/lab/chaos.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/lab/fleetlab.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/lab/opslab.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/lab/runner.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/live/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/live/budget.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/live/capability.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/live/collectors/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/live/collectors/aws.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/live/collectors/aws_transport.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/live/collectors/k8s.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/live/collectors/k8s_transport.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/live/cursors.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/live/drift.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/live/federation.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/live/fixtures.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/live/identity.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/live/incident.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/live/models.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/live/reconcile.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/live/remediate.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/live/store.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/live/topology.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/mcp/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/mcp/parity.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/mcp/registry.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/mcp/server.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/mcp/tools.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/models/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/models/base.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/observe/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/observe/capacity.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/observe/dr.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/observe/grafana.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/observe/incident.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/observe/otel.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/observe/postmortem.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/observe/prometheus.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/observe/slo.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/actions.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/analytics.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/approval.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/autorem.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/config.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/engine.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/envelope.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/executors/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/executors/base.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/executors/git.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/executors/gitops.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/executors/terraform.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/gates.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/goldenpath.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/material.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/models.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/operation.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/opgraph.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/policy.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/preconditions.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/registry.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/risk.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/rollback.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/rollback_builders.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/runbook.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/simulate.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/source_of_truth.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/store.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ops/verify.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/optimize/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/optimize/engine.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/optimize/models.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/optimize/scan.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/plan/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/portable_cli.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/portal_adapter.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/product/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/product/backstage.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/product/catalog.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/product/crossplane.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/product/golden_paths/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/product/golden_paths/engine.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/product/golden_paths/library.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/product/golden_paths/model.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/product/maturity.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/product/scorecards.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/risk/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/risk/engine.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/risk/signals.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/routing/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/routing/decision.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/routing/router.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/rtk/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/rtk/compact.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/rtk/parsers.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/rules/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/rules/engine.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/sandbox/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/sandbox/env.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/sandbox/review.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/sdd/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/sdd/lifecycle.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/security/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/security/cosign.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/security/iam.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/security/identity.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/security/kyverno.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/security/sbom.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/security/scan.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/security/slsa.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/security/supply.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/tokensave/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/tokensave/budget.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/tokensave/estimate.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/tokensave/index.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/tokensave/ledger.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/tokensave/packs.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ui/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ui/app.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ui/home.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ui/i18n.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ui/kit.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ui/screen.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ui/tui.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/ui/wizard.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/workspace/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/workspace/models.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/platformforge/workspace/service.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-B6-SnBYR.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-BCNptXUN.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-BLx5JhZj.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-BYYLUO5t.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-BhA7s971.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-BiFkDKwK.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-BmwkYp7x.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-BqMqB2xY.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-BqWusG3k.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-Bs3fXOeP.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-Bz1rYEmS.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-C0nXO1-7.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-C3EdlW-0.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-C8lOpg3j.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-CCHwcZ3Q.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-CEkKt3jx.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-CM0T98Hn.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-CMtL9dJD.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-Ca0umSMB.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-CdjWoiPd.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-Cq-eK9ux.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-CyIkteAc.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-D-7Jr8A3.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-DDQs0Fva.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-DOMhvl2h.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-DTTwuwxc.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-DXn5h-qA.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-DYZh4vGE.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-DainJSmQ.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-DiM6mH3O.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-Dr99IBD1.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-DuZy_X7l.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-NOzavK8E.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-Onvj36bT.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-OywyDaLv.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-VtbIXmp9.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-YOPJhFLo.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-pVzsnrcB.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-uVK-pwMG.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/chunk-yqMTkZh4.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/favicon.ico +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/index.html +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/main-GU444GPT.js +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/portal/assets/styles-B6ZRGG3C.css +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/rules/catalog/finops.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/rules/catalog/gitops.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/rules/catalog/iac.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/rules/catalog/k8s.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/rules/catalog/orchestration.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/rules/catalog/product.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/rules/catalog/routing.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/rules/catalog/security.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/rules/catalog/sre.yaml +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/scripts/bench_economy.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/scripts/docs/check_docs.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/scripts/docs/doc_catalogs.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/scripts/docs/doc_index.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/scripts/docs/doc_inventory.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/scripts/docs/doc_manifest.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/scripts/docs/doc_reference.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/scripts/docs/final_report.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/scripts/docs/regen_docs.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/scripts/freeze_perf_receipt.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/scripts/freeze_soak_receipt.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/scripts/freeze_validation_receipt.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/scripts/gen_cli_surface.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/scripts/lab/platformforge_lab.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/scripts/validate.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/setup.ps1 +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/setup.sh +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/__init__.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_agent_adversarial.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_agent_budget.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_agent_debate.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_agent_economy.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_agent_handoffs.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_agent_mirrors.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_agent_protocol.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_agent_routing.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_agents.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_cases.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_cicd.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_cli_ops.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_cloud.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_command_rationale.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_coordinators.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_core.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_crossplane.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_cycle5_analytics.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_cycle5_hardening.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_doc_drift.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_doc_manifest.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_docs_drift.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_economy.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_economy_agents_waste.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_economy_cache.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_economy_closure.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_economy_contracts.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_economy_evals.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_economy_fleet_qpt.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_economy_gateway.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_economy_pricing_verify.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_economy_v2.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_executors.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_federation.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_finops.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_fleet.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_fleet_adversarial.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_forge.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_freeze.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_graph.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_graph_v2.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_hardening.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_hosts_flow.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_iac.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_install_lifecycle.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_k8s.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_k8s_depth.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_knowledge_packs.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_lab.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_ledgers.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_live_aws.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_live_capability.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_live_drift.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_live_identity.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_live_incident.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_live_k8s.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_live_remediate.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_live_security_props.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_mcp.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_missing_input_refusals.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_observation.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_observe.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_observe_v2.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_offline.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_ops_adversarial41.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_ops_approval.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_ops_autorem.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_ops_executors.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_ops_gapwave.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_ops_goldenpath.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_ops_hardening.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_ops_models.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_ops_operation.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_ops_opgraph.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_ops_pipeline.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_ops_policy.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_ops_property.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_ops_risk.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_ops_rollback.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_ops_runbook.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_ops_runbook41.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_ops_verify.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_orchestrator.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_portable_distribution.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_portable_workspace.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_portal_adapter.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_product.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_product_v2.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_qpt_v2.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_reconcile.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_redaction.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_reviewers.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_routing_audit.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_sdd.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_security.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_soak.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_specialists.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_surface.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_topology.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_truth.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_ui_resilience.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_ui_tui.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_wave_h.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_wave_k.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_wave_l.py +0 -0
- {platformforge-0.1.2 → platformforge-0.1.4}/tests/test_wave_n.py +0 -0
|
@@ -32,6 +32,10 @@ jobs:
|
|
|
32
32
|
python-version: ${{ matrix.python }}
|
|
33
33
|
- name: Install
|
|
34
34
|
run: pip install -e ".[dev]"
|
|
35
|
+
# lf-0019 B2 — rota Git Bash no Windows depende deste shim;
|
|
36
|
+
# `bash -n` pega erro de sintaxe/CRLF antes de qualquer usuário.
|
|
37
|
+
- name: Git Bash installer syntax (lf-0019)
|
|
38
|
+
run: bash -n install.windows.sh
|
|
35
39
|
- name: Lint
|
|
36
40
|
run: python scripts/validate.py --gate lint
|
|
37
41
|
- name: Tests
|
|
@@ -186,9 +186,16 @@ jobs:
|
|
|
186
186
|
- name: Install published package in clean venv
|
|
187
187
|
run: |
|
|
188
188
|
python -m venv /tmp/verify-venv
|
|
189
|
-
|
|
190
|
-
--
|
|
191
|
-
|
|
189
|
+
for i in 1 2 3 4 5 6 7 8 9 10; do
|
|
190
|
+
if /tmp/verify-venv/bin/python -m pip install --no-cache-dir \
|
|
191
|
+
--index-url https://pypi.org/simple \
|
|
192
|
+
"platformforge==${{ inputs.version }}"; then break; fi
|
|
193
|
+
|
|
194
|
+
echo "install attempt $i failed (index propagation); retrying in 30s"
|
|
195
|
+
|
|
196
|
+
sleep 30
|
|
197
|
+
|
|
198
|
+
done
|
|
192
199
|
|
|
193
200
|
- name: Smoke test console script
|
|
194
201
|
run: /tmp/verify-venv/bin/platformforge --version
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
3
|
All notable changes. Format: wave/feature, the "why", key commits.
|
|
4
|
+
## [0.1.4] - 2026-10-20
|
|
5
|
+
|
|
6
|
+
### Changed
|
|
7
|
+
- Cycle 12.1: vendored `scripts/forge_bootstrap.py` re-stamped to the canonical ruff-formatted source; `install.windows.sh` added as the Git Bash/MSYS install route; CI gains a `bash -n` gate for it; economy validation receipt rebound to the release head.
|
|
8
|
+
|
|
9
|
+
## [0.1.3] - 2026-10-20
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
- Cycle 12 portable distribution: `data_path()` zipimport-safe via
|
|
13
|
+
`as_file` + ExitStack with thread-safe dedupe; contracts/freeze/envelope
|
|
14
|
+
loaders resolve packaged data without a checkout.
|
|
15
|
+
- `test_artifact_contents.py` builds the real wheel and asserts
|
|
16
|
+
`data/{rules,knowledge,contracts,evals}` file-by-file.
|
|
17
|
+
- Economy-parity validation receipt rebound to the functional HEAD.
|
|
4
18
|
|
|
5
19
|
## [0.1.2] - 2026-10-18
|
|
6
20
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: platformforge
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
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
|
|
@@ -46,6 +46,7 @@ Requires-Dist: pyyaml>=6.0
|
|
|
46
46
|
Provides-Extra: aws
|
|
47
47
|
Requires-Dist: boto3<2,>=1.34; extra == 'aws'
|
|
48
48
|
Provides-Extra: dev
|
|
49
|
+
Requires-Dist: build>=1.0; extra == 'dev'
|
|
49
50
|
Requires-Dist: pytest<10,>=9; extra == 'dev'
|
|
50
51
|
Requires-Dist: ruff<1,>=0.7; extra == 'dev'
|
|
51
52
|
Provides-Extra: mcp
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"benchmarks": {
|
|
3
3
|
"control_plane_overhead": "docs/economy-parity/ECONOMY-BENCHMARKS.md",
|
|
4
|
-
"end_to_end": "insufficient evidence
|
|
4
|
+
"end_to_end": "insufficient evidence \u2014 no production corpus claimed"
|
|
5
5
|
},
|
|
6
6
|
"closure_sha": null,
|
|
7
7
|
"cycle": "economy-parity",
|
|
@@ -11,89 +11,89 @@
|
|
|
11
11
|
"economy-agentic": {
|
|
12
12
|
"ok": true,
|
|
13
13
|
"reproduce": "pytest -q tests/test_economy_agents_waste.py tests/test_economy_evals.py -k uniqueness or debate or duplication or fanout or waste or stagnant",
|
|
14
|
-
"seconds": 0.
|
|
14
|
+
"seconds": 0.88
|
|
15
15
|
},
|
|
16
16
|
"economy-budget": {
|
|
17
17
|
"ok": true,
|
|
18
18
|
"reproduce": "pytest -q tests/test_economy_contracts.py -k budget or limit or protected or dimension",
|
|
19
|
-
"seconds": 0.
|
|
19
|
+
"seconds": 0.71
|
|
20
20
|
},
|
|
21
21
|
"economy-cache": {
|
|
22
22
|
"ok": true,
|
|
23
23
|
"reproduce": "pytest -q tests/test_economy_cache.py",
|
|
24
|
-
"seconds":
|
|
24
|
+
"seconds": 1.03
|
|
25
25
|
},
|
|
26
26
|
"economy-closure": {
|
|
27
27
|
"ok": true,
|
|
28
28
|
"reproduce": "python -c import sys\nfrom pathlib import Path\nreq = {'docs/economy-parity/FINAL-REPORT.md':\n ['validated_sha', 'remote_ci', 'known gap'],\n 'docs/economy-parity/FINAL-MATRIX.md':\n ['validated', 'externally-unverified'],\n 'docs/economy-parity/ECONOMY-BENCHMARKS.md':\n ['Control Plane Overhead', 'End-to-End'],\n 'docs/economy/ROUTING.md':\n ['decide', 'advisory'],\n 'docs/economy-parity/POLISH-BASELINE.md': ['drift']}\nbad = []\nfor f, needles in req.items():\n p = Path(f)\n if not p.is_file(): bad.append(('missing', f)); continue\n txt = p.read_text()\n for n in needles:\n if n not in txt: bad.append((f, n))\nm = Path('docs/economy-parity/FINAL-MATRIX.md').read_text()\nif '\\n' + '|' in m and ' fully-production' in m:\n bad.append(('matrix', 'overclaimed status'))\nif bad: print(bad); sys.exit(1)\nprint('closure docs coherent')\n && pytest -q tests/test_economy_closure.py",
|
|
29
|
-
"seconds": 0.
|
|
29
|
+
"seconds": 0.71
|
|
30
30
|
},
|
|
31
31
|
"economy-context": {
|
|
32
32
|
"ok": true,
|
|
33
33
|
"reproduce": "pytest -q tests/test_economy_gateway.py -k TestGateway or TestLazy or TestRole or Suff",
|
|
34
|
-
"seconds": 0.
|
|
34
|
+
"seconds": 0.53
|
|
35
35
|
},
|
|
36
36
|
"economy-contracts": {
|
|
37
37
|
"ok": true,
|
|
38
38
|
"reproduce": "pytest -q tests/test_economy_contracts.py tests/test_economy_v2.py",
|
|
39
|
-
"seconds": 0.
|
|
39
|
+
"seconds": 0.86
|
|
40
40
|
},
|
|
41
41
|
"economy-evals": {
|
|
42
42
|
"ok": true,
|
|
43
43
|
"reproduce": "pytest -q tests/test_economy_evals.py",
|
|
44
|
-
"seconds": 0.
|
|
44
|
+
"seconds": 0.68
|
|
45
45
|
},
|
|
46
46
|
"economy-qpt": {
|
|
47
47
|
"ok": true,
|
|
48
48
|
"reproduce": "pytest -q tests/test_qpt_v2.py tests/test_economy_fleet_qpt.py",
|
|
49
|
-
"seconds":
|
|
49
|
+
"seconds": 2.03
|
|
50
50
|
},
|
|
51
51
|
"economy-receipt": {
|
|
52
52
|
"ok": true,
|
|
53
|
-
"reproduce": "python -c import json, re, subprocess, sys\nfrom pathlib import Path\nsys.path.insert(0, 'scripts')\nimport validate as V\np = Path(V.ECONOMY_RECEIPT_PATH)\nif not p.is_file():\n print('missing receipt:', p); sys.exit(1)\nr = json.loads(p.read_text())\nbad = []\nif r.get('schema') != V.ECONOMY_RECEIPT_SCHEMA:\n bad.append(('schema', r.get('schema')))\nvs = r.get('validated_sha') or ''\nok_sha = subprocess.run(['git','cat-file','-e',\n vs + '^{commit}'], capture_output=True).returncode == 0\nif not ok_sha: bad.append(('validated_sha-not-a-commit', vs))\nhead = subprocess.run(['git','rev-parse','HEAD'],\n capture_output=True, text=True).stdout.strip()\n# PR merge ref: HEAD^2 is the pushed branch tip
|
|
54
|
-
"seconds": 0.
|
|
53
|
+
"reproduce": "python -c import json, re, subprocess, sys\nfrom pathlib import Path\nsys.path.insert(0, 'scripts')\nimport validate as V\np = Path(V.ECONOMY_RECEIPT_PATH)\nif not p.is_file():\n print('missing receipt:', p); sys.exit(1)\nr = json.loads(p.read_text())\nbad = []\nif r.get('schema') != V.ECONOMY_RECEIPT_SCHEMA:\n bad.append(('schema', r.get('schema')))\nvs = r.get('validated_sha') or ''\nok_sha = subprocess.run(['git','cat-file','-e',\n vs + '^{commit}'], capture_output=True).returncode == 0\nif not ok_sha: bad.append(('validated_sha-not-a-commit', vs))\nhead = subprocess.run(['git','rev-parse','HEAD'],\n capture_output=True, text=True).stdout.strip()\n# PR merge ref: HEAD^2 is the pushed branch tip \u2014 the Option-A\n# pair (functional commit + receipt commit) sits one level down.\nhead2 = subprocess.run(['git','rev-parse','HEAD^2'],\n capture_output=True, text=True).stdout.strip()\nbase = head2 if __import__('re').fullmatch(r'[0-9a-f]{40}', head2) else head\nhead1 = subprocess.run(['git','rev-parse', base + '~1'],\n capture_output=True, text=True).stdout.strip()\nif vs not in (base, head1):\n bad.append(('validated_sha-stale', vs, head))\ncanon = set(V._economy_gate_names())\nextra = set(r.get('gates', {})) - canon\nif extra: bad.append(('noncanonical-gates', sorted(extra)))\npat = re.compile('tests/' + r'\\S+' + r'\\.py')\nfor g, e in r.get('gates', {}).items():\n for t in pat.findall(e.get('reproduce') or ''):\n if not Path(t).is_file():\n bad.append(('dead-reproduce-path', g, t))\nif r.get('verdict') not in ('validated', 'failed'):\n bad.append(('verdict', r.get('verdict')))\nif bad: print(bad); sys.exit(1)\nprint('receipt coherent:', len(r['gates']), 'gates,',\n 'sha bound')\n",
|
|
54
|
+
"seconds": 0.07
|
|
55
55
|
},
|
|
56
56
|
"economy-reconcile": {
|
|
57
57
|
"ok": true,
|
|
58
58
|
"reproduce": "pytest -q tests/test_economy_gateway.py tests/test_economy_evals.py -k reconcil or mismatch or unobserved",
|
|
59
|
-
"seconds": 0.
|
|
59
|
+
"seconds": 0.7
|
|
60
60
|
},
|
|
61
61
|
"economy-resume": {
|
|
62
62
|
"ok": true,
|
|
63
63
|
"reproduce": "pytest -q tests/test_economy_gateway.py -k resume or checkpoint",
|
|
64
|
-
"seconds": 0.
|
|
64
|
+
"seconds": 0.7
|
|
65
65
|
},
|
|
66
66
|
"economy-routing": {
|
|
67
67
|
"ok": true,
|
|
68
68
|
"reproduce": "pytest -q tests/test_economy_evals.py -k routing or profile or champion or simple_task",
|
|
69
|
-
"seconds": 0.
|
|
69
|
+
"seconds": 0.82
|
|
70
70
|
},
|
|
71
71
|
"economy-surface": {
|
|
72
72
|
"ok": true,
|
|
73
73
|
"reproduce": "python -c import subprocess, sys\ncmds = [\n ['platformforge','economy','doctor'],\n ['platformforge','economy','checkpoint','--run-id','gate',\n '--spent','{\"tokens\":1}'],\n ['platformforge','economy','resume','--run-id','gate'],\n ['platformforge','economy','reconcile',\n '--planned','{\"tokens\":1}','--observed','{\"tokens\":2}'],\n ['platformforge','economy','explain','--run-id','gate'],\n ['platformforge','cache','stats'],\n ['platformforge','cache','gc'],\n ['platformforge','context','capsule','--task','t',\n '--facts','[{\"fact_id\":\"f\"}]'],\n ['platformforge','context','gc'],\n ['platformforge','routing','explain','--signal','{}'],\n ['platformforge','routing','compare',\n '--champion','{}','--challenger','{}'],\n]\nfor c in cmds:\n r = subprocess.run(c, capture_output=True)\n if r.returncode not in (0, 2):\n print('FAIL', c, r.returncode, r.stderr[-300:])\n sys.exit(1)\nprint('all economy verbs respond')\n",
|
|
74
|
-
"seconds":
|
|
74
|
+
"seconds": 3.65
|
|
75
75
|
},
|
|
76
76
|
"economy-verification": {
|
|
77
77
|
"ok": true,
|
|
78
78
|
"reproduce": "pytest -q tests/test_economy_pricing_verify.py",
|
|
79
|
-
"seconds": 0.
|
|
79
|
+
"seconds": 0.78
|
|
80
80
|
}
|
|
81
81
|
},
|
|
82
|
-
"generated_at": "2026-10-
|
|
82
|
+
"generated_at": "2026-10-20T14:25:20Z",
|
|
83
83
|
"kind": "platformforge/economy-validation-receipt/1",
|
|
84
84
|
"known_gaps": [
|
|
85
85
|
"real provider pricing catalog not bundled (declared-rates engine only, by design)",
|
|
86
|
-
"money axis lacks a real model-call corpus
|
|
86
|
+
"money axis lacks a real model-call corpus \u2014 QPC money is unresolved without declared pricing + measured usage",
|
|
87
87
|
"production savings unproven; microbench overhead only",
|
|
88
|
-
"analysis cache reuse requires identical evidence/policy/risk tuple
|
|
88
|
+
"analysis cache reuse requires identical evidence/policy/risk tuple \u2014 conservative by construction"
|
|
89
89
|
],
|
|
90
90
|
"quality": {
|
|
91
91
|
"note": "QPT/QPC floors enforced inside economy-qpt / economy-evals gates; quality floors gate every economy claim"
|
|
92
92
|
},
|
|
93
|
-
"remote_ci": "
|
|
93
|
+
"remote_ci": "not independently verified",
|
|
94
94
|
"schema": "platformforge/economy-validation-receipt/v1",
|
|
95
95
|
"spec": "prompt_evo_economy.md",
|
|
96
|
-
"validated_sha": "
|
|
96
|
+
"validated_sha": "b94d5ed481cd7ad18f5b21d710bda9af0ea3337b",
|
|
97
97
|
"validator": "scripts/validate.py",
|
|
98
98
|
"validator_version": "economy-validation-receipt/v1",
|
|
99
99
|
"verdict": "validated"
|
|
@@ -4,6 +4,6 @@ Run `install.sh` (POSIX) or `install.ps1` (Windows) from this checkout. Installe
|
|
|
4
4
|
|
|
5
5
|
Published variables use prefix `PLATFORM_FORGE`: `HOME`, `INSTALL_ROOT`, `VENV`, `PYTHON`, `CLI`, and `LAUNCHER`. Underscores are canonical because POSIX shells reject hyphens. Windows also receives aliases such as `PLATFORM-FORGE-HOME`, without administrator permission.
|
|
6
6
|
|
|
7
|
-
POSIX installer writes `~/.config/forjas/env.sh`; open a new shell or run `source ~/.config/forjas/env.sh`. Windows processes opened after installation receive HKCU variables. Under Windows Git Bash, `install.sh` writes both HKCU variables and this Bash environment file; reload with `source ~/.config/forjas/env.sh`.
|
|
7
|
+
POSIX installer writes `~/.config/forjas/env.sh`; open a new shell or run `source ~/.config/forjas/env.sh`. Windows processes opened after installation receive HKCU variables. Under Windows Git Bash, `install.sh` writes both HKCU variables and this Bash environment file; reload with `source ~/.config/forjas/env.sh`. When PowerShell is unavailable or blocked by policy, `install.windows.sh` is the dedicated Git Bash route — it runs the same shared bootstrap and never spawns `powershell.exe`/`pwsh`.
|
|
8
8
|
|
|
9
9
|
`setup.sh`/`setup.ps1` remains compatibility mode. The Forge doctor and Portal validate runtime paths while never reading credentials.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
# Forge account install —
|
|
1
|
+
# Forge account install — wheel runtime + user-scoped environment.
|
|
2
2
|
# Persists HKCU variables and can refresh current session when dot-sourced.
|
|
3
|
+
# The default installs a built wheel (no checkout dependence). Pass --editable
|
|
4
|
+
# for the development flow (CLI tied to this checkout).
|
|
3
5
|
$ErrorActionPreference = "Stop"
|
|
4
6
|
$isDotSourced = $MyInvocation.InvocationName -eq "."
|
|
5
7
|
$oldLocation = Get-Location
|
|
@@ -16,7 +18,7 @@ try {
|
|
|
16
18
|
}
|
|
17
19
|
}
|
|
18
20
|
if (-not $py) { throw "install: no Python executable on PATH (need >=3.10)" }
|
|
19
|
-
$installArgs = @("--
|
|
21
|
+
$installArgs = @("--persist-env", "--allow-download") + $args
|
|
20
22
|
& $py @pyArgs scripts/forge_bootstrap.py @installArgs
|
|
21
23
|
$status = $LASTEXITCODE
|
|
22
24
|
if ($status -eq 0) {
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# Forge account install —
|
|
2
|
+
# Forge account install — wheel runtime + user-scoped environment.
|
|
3
3
|
# Works from POSIX shells and native Windows Git Bash.
|
|
4
|
+
# The default installs a built wheel (no checkout dependence). Pass --editable
|
|
5
|
+
# for the development flow (CLI tied to this checkout).
|
|
4
6
|
set -euo pipefail
|
|
5
7
|
|
|
6
8
|
_forge_is_sourced=0
|
|
@@ -37,7 +39,7 @@ if [ -z "$PY" ]; then
|
|
|
37
39
|
if [ "$_forge_is_sourced" -eq 1 ]; then return 2; fi
|
|
38
40
|
exit 2
|
|
39
41
|
fi
|
|
40
|
-
ARGS=(--
|
|
42
|
+
ARGS=(--persist-env --allow-download "$@")
|
|
41
43
|
if "$PY" "${PY_ARGS[@]}" scripts/forge_bootstrap.py "${ARGS[@]}"; then
|
|
42
44
|
status=0
|
|
43
45
|
else
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Forge account install — Windows Git Bash route (MSYS2 / Git for Windows).
|
|
3
|
+
#
|
|
4
|
+
# Thin adapter over scripts/forge_bootstrap.py — the SAME shared Python
|
|
5
|
+
# bootstrap install.sh and install.ps1 exec. Nothing here reimplements a
|
|
6
|
+
# pipeline stage: env discovery → python resolution → venv → runtime →
|
|
7
|
+
# launcher → HKCU + Git Bash env.sh persistence → InstallReceipt → smoke
|
|
8
|
+
# verify all live in the bootstrap; this script only picks the
|
|
9
|
+
# interpreter, invokes it and surfaces FORGE-* refusal codes.
|
|
10
|
+
#
|
|
11
|
+
# Primary target: Git Bash. On a non-MSYS POSIX shell the script still
|
|
12
|
+
# runs (documented decision — the shared bootstrap is platform-agnostic)
|
|
13
|
+
# but install.sh stays the canonical POSIX route and the script says so.
|
|
14
|
+
# It NEVER spawns powershell.exe/pwsh — PowerShell is not a fallback on
|
|
15
|
+
# this route; a shell that is not bash refuses FORGE-SHELL-UNAVAILABLE.
|
|
16
|
+
#
|
|
17
|
+
# CRLF: keep LF endings. A checkout cloned with core.autocrlf=true can
|
|
18
|
+
# hand bash a CRLF file it cannot parse (the \r lands inside tokens) —
|
|
19
|
+
# repair a converted copy once with: sed -i 's/\r$//' install.windows.sh
|
|
20
|
+
if [ -z "${BASH_VERSION:-}" ]; then
|
|
21
|
+
echo "install.windows.sh: FORGE-SHELL-UNAVAILABLE — esta rota exige bash (Git Bash); a shell atual nao e bash" >&2
|
|
22
|
+
echo " remedy: run 'bash install.windows.sh' inside Git Bash, or use install.ps1 under PowerShell" >&2
|
|
23
|
+
exit 2
|
|
24
|
+
fi
|
|
25
|
+
set -euo pipefail
|
|
26
|
+
|
|
27
|
+
_forge_is_sourced=0
|
|
28
|
+
if [[ "${BASH_SOURCE[0]}" != "$0" ]]; then
|
|
29
|
+
_forge_is_sourced=1
|
|
30
|
+
fi
|
|
31
|
+
_forge_original_dir=$PWD
|
|
32
|
+
_forge_root="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)"
|
|
33
|
+
cd "$_forge_root"
|
|
34
|
+
|
|
35
|
+
_forge_is_git_bash=0
|
|
36
|
+
case "${MSYSTEM:-}:${OSTYPE:-}" in
|
|
37
|
+
*MSYS*|*MINGW*|*UCRT*|*CYGWIN*) _forge_is_git_bash=1 ;;
|
|
38
|
+
*)
|
|
39
|
+
# Tolerated, documented (lf-0018): the shared bootstrap is
|
|
40
|
+
# platform-agnostic so a stray POSIX invocation still works — but
|
|
41
|
+
# install.sh is the canonical POSIX route and we say so.
|
|
42
|
+
echo "install.windows.sh: esta e a rota Windows Git Bash; em POSIX o caminho canonico e ./install.sh — continuando (mesmo bootstrap compartilhado)" >&2
|
|
43
|
+
echo "install.windows.sh: this is the Windows Git Bash route; on POSIX the canonical route is ./install.sh — continuing (same shared bootstrap)" >&2
|
|
44
|
+
;;
|
|
45
|
+
esac
|
|
46
|
+
_forge_dry_run=0
|
|
47
|
+
for arg in "$@"; do
|
|
48
|
+
if [ "$arg" = "--dry-run" ]; then _forge_dry_run=1; break; fi
|
|
49
|
+
done
|
|
50
|
+
|
|
51
|
+
# Interpreter selection, same priority as the lf-0017 pipeline:
|
|
52
|
+
# --python flag > FORGE_PYTHON > PATH scan (python3|python|py -3).
|
|
53
|
+
_forge_python_arg=""
|
|
54
|
+
_forge_prev=""
|
|
55
|
+
for arg in "$@"; do
|
|
56
|
+
if [ "$_forge_prev" = "--python" ]; then _forge_python_arg="$arg"; fi
|
|
57
|
+
case "$arg" in
|
|
58
|
+
--python=*) _forge_python_arg="${arg#--python=}" ;;
|
|
59
|
+
esac
|
|
60
|
+
_forge_prev="$arg"
|
|
61
|
+
done
|
|
62
|
+
|
|
63
|
+
PY=""
|
|
64
|
+
PY_ARGS=()
|
|
65
|
+
if [ -n "$_forge_python_arg" ]; then
|
|
66
|
+
PY="$_forge_python_arg"
|
|
67
|
+
elif [ -n "${FORGE_PYTHON:-}" ]; then
|
|
68
|
+
PY="$FORGE_PYTHON"
|
|
69
|
+
fi
|
|
70
|
+
if [ -n "$PY" ]; then
|
|
71
|
+
# Intentional word-split: FORGE_PYTHON/--python may carry an
|
|
72
|
+
# invocation ("py -3.11") — the bootstrap validates it independently
|
|
73
|
+
# (FORGE_PYTHON reaches find_python via the environment itself).
|
|
74
|
+
# shellcheck disable=SC2206
|
|
75
|
+
_forge_py_argv=($PY)
|
|
76
|
+
PY="${_forge_py_argv[0]}"
|
|
77
|
+
PY_ARGS=("${_forge_py_argv[@]:1}")
|
|
78
|
+
else
|
|
79
|
+
for candidate in python3 python py; do
|
|
80
|
+
if command -v "$candidate" >/dev/null 2>&1; then
|
|
81
|
+
PY="$(command -v "$candidate")"
|
|
82
|
+
case "$(basename -- "$PY")" in
|
|
83
|
+
py|py.exe) PY_ARGS=(-3) ;;
|
|
84
|
+
esac
|
|
85
|
+
break
|
|
86
|
+
fi
|
|
87
|
+
done
|
|
88
|
+
fi
|
|
89
|
+
if [ -z "$PY" ]; then
|
|
90
|
+
echo "install.windows.sh: FORGE-PYTHON-NOT-FOUND — nenhum interpretador em PATH (precisa >=3.10)" >&2
|
|
91
|
+
echo " remedio: instale Python e reabra o Git Bash, ou aponte FORGE_PYTHON=<caminho/python.exe>, ou rode ./install.windows.sh --python <exe>" >&2
|
|
92
|
+
echo " remedy: install Python and reopen Git Bash, or set FORGE_PYTHON=<python.exe path>, or run ./install.windows.sh --python <exe>" >&2
|
|
93
|
+
cd "$_forge_original_dir"
|
|
94
|
+
if [ "$_forge_is_sourced" -eq 1 ]; then return 2; fi
|
|
95
|
+
exit 2
|
|
96
|
+
fi
|
|
97
|
+
if ! command -v "$PY" >/dev/null 2>&1 && [ ! -x "$PY" ]; then
|
|
98
|
+
echo "install.windows.sh: FORGE-PYTHON-UNEXECUTABLE — o interpretador apontado nao executa: $PY" >&2
|
|
99
|
+
echo " remedio: corrija --python/FORGE_PYTHON ou remova a variavel para a varredura de PATH" >&2
|
|
100
|
+
echo " remedy: fix --python/FORGE_PYTHON or unset it to fall back to the PATH scan" >&2
|
|
101
|
+
cd "$_forge_original_dir"
|
|
102
|
+
if [ "$_forge_is_sourced" -eq 1 ]; then return 2; fi
|
|
103
|
+
exit 2
|
|
104
|
+
fi
|
|
105
|
+
|
|
106
|
+
ARGS=(--persist-env --allow-download "$@")
|
|
107
|
+
_forge_log="${TMPDIR:-${TMP:-/tmp}}/forge-install-windows.$$.log"
|
|
108
|
+
status=0
|
|
109
|
+
if command -v tee >/dev/null 2>&1; then
|
|
110
|
+
# tee keeps live output AND lets us lift the FORGE-* kind from the
|
|
111
|
+
# bootstrap's JSON report on failure.
|
|
112
|
+
"$PY" "${PY_ARGS[@]}" scripts/forge_bootstrap.py "${ARGS[@]}" 2>&1 | tee "$_forge_log" || status=${PIPESTATUS[0]}
|
|
113
|
+
else
|
|
114
|
+
"$PY" "${PY_ARGS[@]}" scripts/forge_bootstrap.py "${ARGS[@]}" 2>&1 || status=$?
|
|
115
|
+
fi
|
|
116
|
+
|
|
117
|
+
if [ "$status" -eq 0 ]; then
|
|
118
|
+
rm -f "$_forge_log"
|
|
119
|
+
env_file="${XDG_CONFIG_HOME:-$HOME/.config}/forjas/env.sh"
|
|
120
|
+
if [ "$_forge_dry_run" -eq 1 ]; then
|
|
121
|
+
echo "Install plan complete. No files, variables or registry entries were written."
|
|
122
|
+
elif [ "$_forge_is_git_bash" -eq 1 ]; then
|
|
123
|
+
echo "Install complete. Windows user variables saved in HKCU\Environment and Git Bash environment saved in: $env_file"
|
|
124
|
+
echo "Reload current Git Bash with: source '$env_file'"
|
|
125
|
+
else
|
|
126
|
+
echo "Install complete. Open a new shell or run: source '$env_file'"
|
|
127
|
+
fi
|
|
128
|
+
if [ "$_forge_is_sourced" -eq 1 ] && [ -f "$env_file" ]; then
|
|
129
|
+
# A sourced installer can update its caller; an executed child cannot.
|
|
130
|
+
# shellcheck disable=SC1090
|
|
131
|
+
. "$env_file"
|
|
132
|
+
fi
|
|
133
|
+
else
|
|
134
|
+
_forge_kind=""
|
|
135
|
+
_forge_detail=""
|
|
136
|
+
if [ -f "$_forge_log" ]; then
|
|
137
|
+
_forge_kind="$(sed -n 's/.*"kind"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' "$_forge_log" | tail -n 1)"
|
|
138
|
+
_forge_detail="$(sed -n 's/.*"detail"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' "$_forge_log" | tail -n 1)"
|
|
139
|
+
fi
|
|
140
|
+
rm -f "$_forge_log"
|
|
141
|
+
if [ -n "$_forge_kind" ]; then
|
|
142
|
+
echo "install.windows.sh: ${_forge_kind} — o bootstrap recusou: ${_forge_detail:-ver o relatorio JSON acima}" >&2
|
|
143
|
+
echo "install.windows.sh: ${_forge_kind} — bootstrap refused: ${_forge_detail:-see the JSON report above}" >&2
|
|
144
|
+
else
|
|
145
|
+
# Bootstrap crashed without a named refusal (traceback, no JSON).
|
|
146
|
+
echo "install.windows.sh: FORGE-INSTALL-BOOTSTRAP-FAILED — scripts/forge_bootstrap.py saiu com codigo $status sem recusa nomeada" >&2
|
|
147
|
+
echo "install.windows.sh: FORGE-INSTALL-BOOTSTRAP-FAILED — scripts/forge_bootstrap.py exited $status with no named refusal" >&2
|
|
148
|
+
fi
|
|
149
|
+
echo " remedio: corrija a causa indicada pelo codigo FORGE-* e reexecute ./install.windows.sh; o receipt fica em ~/.forge/installations/" >&2
|
|
150
|
+
echo " remedy: fix the cause named by the FORGE-* code and re-run ./install.windows.sh; the receipt lives under ~/.forge/installations/" >&2
|
|
151
|
+
fi
|
|
152
|
+
cd "$_forge_original_dir"
|
|
153
|
+
if [ "$_forge_is_sourced" -eq 1 ]; then
|
|
154
|
+
return "$status"
|
|
155
|
+
fi
|
|
156
|
+
exit "$status"
|
|
@@ -243,8 +243,11 @@ class PortalAdapter:
|
|
|
243
243
|
return detect_account_environment(self)
|
|
244
244
|
|
|
245
245
|
|
|
246
|
+
PORTAL_VERSION = "1.0.0"
|
|
247
|
+
|
|
248
|
+
|
|
246
249
|
def portal_version() -> str:
|
|
247
|
-
return
|
|
250
|
+
return PORTAL_VERSION
|
|
248
251
|
|
|
249
252
|
|
|
250
253
|
def workspace_name(root: str | None) -> str | None:
|
|
@@ -22,6 +22,7 @@ import hashlib
|
|
|
22
22
|
import json
|
|
23
23
|
import os
|
|
24
24
|
import platform
|
|
25
|
+
import re
|
|
25
26
|
import sys
|
|
26
27
|
import tempfile
|
|
27
28
|
import time
|
|
@@ -34,7 +35,7 @@ from typing import Any
|
|
|
34
35
|
_INSTALLKIT_VERSION = "1.0.0"
|
|
35
36
|
# Filled by the vendor step (scripts/installkit/vendor.py) — the sha256 of
|
|
36
37
|
# the canonical source body, so drift checks can compare vendored copies.
|
|
37
|
-
_SOURCE_SHA256 = "
|
|
38
|
+
_SOURCE_SHA256 = "bc189dd2ae0028ce"
|
|
38
39
|
|
|
39
40
|
SCHEMA_MANIFEST = "forge/InstallationManifest/v1"
|
|
40
41
|
SCHEMA_RECEIPT = "forge/InstallReceipt/v1"
|
|
@@ -89,6 +90,20 @@ class InstallError(Exception):
|
|
|
89
90
|
}
|
|
90
91
|
|
|
91
92
|
|
|
93
|
+
_URL_USERINFO_RE = re.compile(r"(https?://)[^/@\s]+@")
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def redact_url_userinfo(text: str) -> str:
|
|
97
|
+
"""Strip ``user:pass@`` userinfo from URLs in persisted/logged text.
|
|
98
|
+
|
|
99
|
+
``--dist "name @ https://user:token@host/x.whl"`` must never land in
|
|
100
|
+
manifests, receipts or stdout verbatim (prompt §6.5 — nunca registrar
|
|
101
|
+
valores secretos). Host and path survive so diagnostics still identify
|
|
102
|
+
the wheelhouse.
|
|
103
|
+
"""
|
|
104
|
+
return _URL_USERINFO_RE.sub(r"\1***@", text)
|
|
105
|
+
|
|
106
|
+
|
|
92
107
|
def _utc_now() -> str:
|
|
93
108
|
from datetime import datetime, timezone
|
|
94
109
|
|
|
@@ -1286,6 +1301,7 @@ def manifest_for(
|
|
|
1286
1301
|
version: str,
|
|
1287
1302
|
source: dict[str, Any],
|
|
1288
1303
|
shim: Path | None,
|
|
1304
|
+
installation_method: str | None = None,
|
|
1289
1305
|
) -> dict[str, Any]:
|
|
1290
1306
|
doc = {
|
|
1291
1307
|
"schema": SCHEMA_MANIFEST,
|
|
@@ -1301,6 +1317,16 @@ def manifest_for(
|
|
|
1301
1317
|
"satisfies": spec.python_spec,
|
|
1302
1318
|
},
|
|
1303
1319
|
"source": source,
|
|
1320
|
+
"installation_method": installation_method
|
|
1321
|
+
or (
|
|
1322
|
+
"pypi-wheel"
|
|
1323
|
+
if source.get("kind") == "pypi"
|
|
1324
|
+
else (
|
|
1325
|
+
"git-checkout"
|
|
1326
|
+
if source.get("editable", source.get("kind") == "git-checkout")
|
|
1327
|
+
else "wheel"
|
|
1328
|
+
)
|
|
1329
|
+
),
|
|
1304
1330
|
"installed_at": _utc_now(),
|
|
1305
1331
|
"installed_by": {"agent": "forge_bootstrap", "version": _INSTALLKIT_VERSION},
|
|
1306
1332
|
}
|
|
@@ -240,7 +240,9 @@ def probe_fleet_report_all_cited(tmp) -> dict[str, Any]:
|
|
|
240
240
|
from pathlib import Path
|
|
241
241
|
|
|
242
242
|
from platformforge.cli.fleetcmd import cmd_fleet
|
|
243
|
-
|
|
243
|
+
from platformforge.resources import data_path
|
|
244
|
+
|
|
245
|
+
src = data_path("lab", "fleets", "acme")
|
|
244
246
|
with tempfile.TemporaryDirectory() as td:
|
|
245
247
|
for f in src.glob("*.yaml"):
|
|
246
248
|
(Path(td) / f.name).write_text(f.read_text())
|
|
@@ -7,7 +7,14 @@ from pathlib import Path
|
|
|
7
7
|
from typing import Any
|
|
8
8
|
|
|
9
9
|
SCHEMA = "platformforge/freeze-manifest/v1"
|
|
10
|
-
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def _contracts_dir() -> Path:
|
|
13
|
+
# `parents[2]` so existe no checkout; no wheel os schemas moram em
|
|
14
|
+
# `platformforge/data/contracts` (force-include) — `data_path` resolve os dois.
|
|
15
|
+
from platformforge.resources import data_path
|
|
16
|
+
|
|
17
|
+
return data_path("contracts")
|
|
11
18
|
|
|
12
19
|
|
|
13
20
|
def _cli_verbs() -> list[str]:
|
|
@@ -30,7 +37,7 @@ def _capabilities() -> dict[str, Any]:
|
|
|
30
37
|
|
|
31
38
|
|
|
32
39
|
def _schemas() -> dict[str, Any]:
|
|
33
|
-
files = sorted(p.name for p in
|
|
40
|
+
files = sorted(p.name for p in _contracts_dir().glob("*.schema.json"))
|
|
34
41
|
return {"count": len(files), "files": files}
|
|
35
42
|
|
|
36
43
|
|
|
@@ -44,7 +51,9 @@ def _agents() -> dict[str, Any]:
|
|
|
44
51
|
|
|
45
52
|
|
|
46
53
|
def _knowledge_packs() -> dict[str, Any]:
|
|
47
|
-
|
|
54
|
+
from platformforge.resources import data_path
|
|
55
|
+
|
|
56
|
+
kroot = data_path("knowledge")
|
|
48
57
|
packs = sorted(p.name for p in kroot.iterdir() if p.is_dir())
|
|
49
58
|
srcs = 0
|
|
50
59
|
import yaml
|
|
@@ -16,11 +16,16 @@ import jsonschema
|
|
|
16
16
|
from platformforge.core.redaction import redact_obj, redact_text_report
|
|
17
17
|
from platformforge.live.models import SCHEMA, CollectorReceipt, ObservationEnvelope
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
|
|
20
|
+
def _contract_dir() -> Path:
|
|
21
|
+
# Checkout le `contracts/` da raiz; wheel le `platformforge/data/contracts`.
|
|
22
|
+
from platformforge.resources import data_path
|
|
23
|
+
|
|
24
|
+
return data_path("contracts")
|
|
20
25
|
|
|
21
26
|
|
|
22
27
|
def _schema(name: str) -> dict[str, Any]:
|
|
23
|
-
p =
|
|
28
|
+
p = _contract_dir() / name
|
|
24
29
|
if not p.exists():
|
|
25
30
|
return {}
|
|
26
31
|
return json.loads(p.read_text())
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"""Bundled data resolution — one contract for checkout and installed wheel.
|
|
2
|
+
|
|
3
|
+
Data directories (`rules/`, `knowledge/`, `contracts/`, `evals/`, `lab/`) live
|
|
4
|
+
at the repository root in development. In the wheel they are force-included
|
|
5
|
+
under ``platformforge/data/`` (see pyproject.toml), so an installed package is
|
|
6
|
+
self-contained: every loader resolves through :func:`data_path` and never
|
|
7
|
+
depends on the checkout being present.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
import atexit
|
|
13
|
+
import threading
|
|
14
|
+
from contextlib import ExitStack
|
|
15
|
+
from importlib import resources
|
|
16
|
+
from pathlib import Path
|
|
17
|
+
|
|
18
|
+
_MATERIALIZED = ExitStack()
|
|
19
|
+
_MATERIALIZE_LOCK = threading.Lock()
|
|
20
|
+
_MATERIALIZED_PATHS: dict[tuple[str, ...], Path] = {}
|
|
21
|
+
atexit.register(_MATERIALIZED.close)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def data_path(*parts: str) -> Path:
|
|
25
|
+
"""Resolve a bundled data path.
|
|
26
|
+
|
|
27
|
+
Order: ``platformforge/data/<parts>`` inside an installed wheel first,
|
|
28
|
+
then the repository root (development checkout / editable install where
|
|
29
|
+
no bundled ``data/`` tree exists inside the package).
|
|
30
|
+
|
|
31
|
+
``platformforge/data/`` also exists in a checkout — it ships
|
|
32
|
+
``portable_skills`` as regular package content — so the probe checks
|
|
33
|
+
the requested path itself (``data/<parts>``, defaulting to
|
|
34
|
+
``data/rules`` when nothing was asked), not a fixed sentinel.
|
|
35
|
+
"""
|
|
36
|
+
probe = parts if parts else ("rules",)
|
|
37
|
+
try:
|
|
38
|
+
pkg = resources.files("platformforge")
|
|
39
|
+
with _MATERIALIZE_LOCK:
|
|
40
|
+
installed = pkg.joinpath("data", *probe)
|
|
41
|
+
if installed.is_dir() or installed.is_file():
|
|
42
|
+
# as_file materializa o recurso num caminho real — Path(str(t))
|
|
43
|
+
# devolve um pseudo-caminho dentro do zip sob zipimport. O
|
|
44
|
+
# ExitStack vive ate o fim do processo para o path seguir
|
|
45
|
+
# valido; o lock + o cache evitam re-materializar o mesmo
|
|
46
|
+
# traversable a cada chamada sob zipimport/threads.
|
|
47
|
+
if parts in _MATERIALIZED_PATHS:
|
|
48
|
+
return _MATERIALIZED_PATHS[parts]
|
|
49
|
+
path = _MATERIALIZED.enter_context(
|
|
50
|
+
resources.as_file(pkg.joinpath("data", *parts))
|
|
51
|
+
)
|
|
52
|
+
_MATERIALIZED_PATHS[parts] = path
|
|
53
|
+
return path
|
|
54
|
+
except (ModuleNotFoundError, TypeError, FileNotFoundError):
|
|
55
|
+
pass
|
|
56
|
+
return Path(__file__).resolve().parents[1].joinpath(*parts)
|
|
@@ -179,8 +179,8 @@
|
|
|
179
179
|
},
|
|
180
180
|
"portal_version": "1.0.0",
|
|
181
181
|
"schema": "forge/PortalAssets/1",
|
|
182
|
-
"server_generation": "
|
|
183
|
-
"server_sha256": "
|
|
182
|
+
"server_generation": "fed7e298fc06c131",
|
|
183
|
+
"server_sha256": "fed7e298fc06c131d24c39d04f95eaf09501773a8e19cd6247a4c4d4d3153051",
|
|
184
184
|
"telemetry_generation": "74a161196765669a",
|
|
185
185
|
"telemetry_sha256": "74a161196765669a23a6989f7a06ae6cb38823eafdd7c78beecf322be3c1a457"
|
|
186
186
|
}
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "platformforge"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.4"
|
|
8
8
|
description = "Agentic Platform Engineering intelligence platform — deterministic, offline-first, evidence-first"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { file = "LICENSE" }
|
|
@@ -33,6 +33,9 @@ mcp = ["mcp>=2.2,<3"]
|
|
|
33
33
|
dev = [
|
|
34
34
|
"pytest>=9,<10",
|
|
35
35
|
"ruff>=0.7,<1",
|
|
36
|
+
# Sem isto `.[dev]` nao traz `python -m build` e o teste de
|
|
37
|
+
# artefato real (test_artifact_contents) pularia o gate da wheel.
|
|
38
|
+
"build>=1.0",
|
|
36
39
|
]
|
|
37
40
|
|
|
38
41
|
[project.scripts]
|