fix(agent99): require verified outcomes before resolution

This commit is contained in:
ogt
2026-07-10 16:05:54 +08:00
parent 7134ff338e
commit 85cb7fba42
5 changed files with 669 additions and 31 deletions

View File

@@ -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