68 lines
2.5 KiB
Python
68 lines
2.5 KiB
Python
from __future__ import annotations
|
|
|
|
import json
|
|
from pathlib import Path
|
|
|
|
ROOT=Path(__file__).resolve().parents[1]
|
|
|
|
|
|
def test_executor_has_single_model_governance_sqlite_write_path():
|
|
unit=(ROOT/"deploy/systemd/aios-external-agent-executor.service").read_text()
|
|
assert "AIOS_MODEL_GOVERNANCE_DB=/var/lib/aios-model-governance/state.sqlite3" in unit
|
|
assert "AIOS_MODEL_GOVERNANCE_ENABLED=1" in unit
|
|
assert "ReadWritePaths=/var/lib/aios-model-governance" in unit
|
|
assert "ReadWritePaths=/var/lib/aios-external-agent-executor" in unit
|
|
assert "InaccessiblePaths=/etc/aios-gitops" in unit
|
|
assert "InaccessiblePaths=/data/aios-gitops" in unit
|
|
|
|
|
|
def test_tmpfiles_owner_matches_external_executor():
|
|
line=(ROOT/"deploy/tmpfiles.d/aios-model-governance.conf").read_text().strip()
|
|
assert line == (
|
|
"d /var/lib/aios-model-governance 0750 "
|
|
"aios-engineering-executor aios-executor-exchange -"
|
|
)
|
|
|
|
|
|
def test_staging_models_use_real_e2e_evaluation_evidence():
|
|
value=json.loads(
|
|
(ROOT/"config/model-governance/model-governance.staging.json").read_text()
|
|
)
|
|
assert value["schema"]=="aios.model-governance.bootstrap.v1"
|
|
models={item["model_id"]:item for item in value["models"]}
|
|
assert models["deepseek-v4-flash"]["evaluation_sha256"] == (
|
|
"43ae0db1640daeb6d33e2787769732844f366d36070065d3a2239905bd9a823b"
|
|
)
|
|
assert models["openai/deepseek-v4-flash"]["evaluation_sha256"] == (
|
|
"7b1c89634eb9c0e7cb5a3d75323d904ebbd91b3ae5494ce938bd8316a4cf5b12"
|
|
)
|
|
|
|
|
|
def test_runtime_profiles_bind_model_from_governance_not_task():
|
|
for name in ("hermes","openclaw"):
|
|
value=json.loads(
|
|
(ROOT/"config/external-agent-runtime.d"/f"{name}.profile.json").read_text()
|
|
)
|
|
governance=value["model_governance"]
|
|
assert governance["required"] is True
|
|
assert governance["provider_ids"]
|
|
assert governance["max_output_tokens"] > 0
|
|
serialized=json.dumps(value["argv"])+json.dumps(value.get("environment",{}))
|
|
assert "{model_id}" in serialized or "{provider_id}" in serialized
|
|
|
|
|
|
def test_staging_bootstrap_has_explicit_tenant_live_policy():
|
|
value=json.loads(
|
|
(ROOT/"config/model-governance/model-governance.staging.json").read_text()
|
|
)
|
|
keys={
|
|
(
|
|
item["scope_type"],
|
|
item.get("tenant_id"),
|
|
item.get("project_id"),
|
|
)
|
|
for item in value["policies"]
|
|
}
|
|
assert ("legacy",None,None) in keys
|
|
assert ("tenant","model-governance-live","staging") in keys
|