60 lines
2.5 KiB
Python
60 lines
2.5 KiB
Python
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
_REPO_ROOT = Path(__file__).resolve().parents[3]
|
|
_CONTROL_PLANE = _REPO_ROOT / "agent99-control-plane.ps1"
|
|
_BOOTSTRAP = _REPO_ROOT / "agent99-bootstrap.ps1"
|
|
|
|
|
|
def test_agent99_queue_uses_verified_outcome_not_exit_code() -> None:
|
|
source = _CONTROL_PLANE.read_text(encoding="utf-8")
|
|
|
|
assert "function Get-AgentOutcomeContract" in source
|
|
assert 'schemaVersion = "agent99_outcome_contract_v1"' in source
|
|
assert "ok = [bool]$outcome.resolved" in source
|
|
assert "outcomeState = $outcome.state" in source
|
|
assert "verifierPassed = [bool]$outcome.verifierPassed" in source
|
|
assert "sourceEventResolutionRequired" in source
|
|
assert '"verifying"' in source
|
|
assert '"candidate_ready"' in source
|
|
assert "ok = [bool]($exitCode -eq 0)" not in source
|
|
|
|
|
|
def test_agent99_problem_counts_separate_verified_resolution() -> None:
|
|
source = _CONTROL_PLANE.read_text(encoding="utf-8")
|
|
|
|
assert 'schemaVersion = "agent99_problem_counts_v2"' in source
|
|
assert "totalVerifiedResolved" in source
|
|
assert "legacyResolvedCountMayIncludeTransportOnly" in source
|
|
assert "verifiedResolved" in source
|
|
assert "totalDegraded" in source
|
|
assert "totalBlocked" in source
|
|
assert "totalVerifying" in source
|
|
assert "totalCandidateReady" in source
|
|
|
|
|
|
def test_agent99_runtime_manifest_is_generated_and_self_checked() -> None:
|
|
control_source = _CONTROL_PLANE.read_text(encoding="utf-8")
|
|
bootstrap_source = _BOOTSTRAP.read_text(encoding="utf-8")
|
|
|
|
assert "function Test-AgentRuntimeManifest" in control_source
|
|
assert 'reason = "runtime_manifest_missing"' in control_source
|
|
assert "runtimeManifest = Test-AgentRuntimeManifest" in control_source
|
|
assert 'schemaVersion = "agent99_runtime_manifest_v1"' in bootstrap_source
|
|
assert 'Join-Path $StateDir "runtime-manifest.json"' in bootstrap_source
|
|
assert "Get-FileHash -Algorithm SHA256" in bootstrap_source
|
|
assert "if (-not $runtimeMatched)" in bootstrap_source
|
|
|
|
|
|
def test_agent99_outcome_contract_has_runtime_self_test() -> None:
|
|
source = _CONTROL_PLANE.read_text(encoding="utf-8")
|
|
|
|
assert "[switch]$SelfTestOutcomeContract" in source
|
|
assert "function Invoke-AgentOutcomeContractSelfTest" in source
|
|
assert '$operatorResolved.state -eq "resolved"' in source
|
|
assert '$alertVerifying.state -eq "verifying"' in source
|
|
assert '$failedPostCondition.state -eq "degraded"' in source
|
|
assert '$transportFailed.state -eq "failed"' in source
|
|
assert '$securityCandidate.state -eq "candidate_ready"' in source
|