fix(agent99): require verified outcomes before resolution
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
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
|
||||
Reference in New Issue
Block a user