F [100%] =================================== FAILURES =================================== _________ test_selected_model_executes_registered_tool_over_real_http __________ policy_path = PosixPath('/tmp/pytest-of-catow/pytest-27/test_selected_model_executes_r0/host-policy/settings.json') monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7de3a5b65220> def test_selected_model_executes_registered_tool_over_real_http( policy_path: Path, monkeypatch: pytest.MonkeyPatch, ) -> None: # Given an owned HTTP provider/tool and a real compiled agent. with DesktopFixture() as fixture: write_policy(policy_path, fixture.url) monkeypatch.setenv("DECEPTICON_LLM__PROXY_URL", fixture.url) agent = create_agent( model=ChatOpenAI(model="unwanted-original", api_key=SecretStr("fixture-only")), tools=policy_tools("soundwave"), middleware=[ModelOverrideMiddleware(role="soundwave")], ) assert settings_capabilities().model_dump().get("observed_dispatches", []) == [] # When the graph requests and executes the approved fixture tool. result = agent.invoke({"messages": [HumanMessage(content="Run owned fixture")]}) save_receipts("selected-model-tool", fixture) # Then actual provider requests and actual tool bytes agree with policy. assert result["messages"][-1].content == "Fixture completed" model_requests = [ item["payload"] for item in fixture.receipts if item["path"] != "/tools/echo" ] assert len(model_requests) == 2 assert all(item["model"] == "openai/fixture-selected" for item in model_requests) assert all(item["reasoning_effort"] == "low" for item in model_requests) assert [item["payload"] for item in fixture.receipts if item["path"] == "/tools/echo"] == [ {"arguments": {"text": "owned fixture"}}, ] > assert settings_capabilities().model_dump().get("observed_dispatches") == [{ "role": "soundwave", "policy_revision": 1, "tool_names": ("desktop_fixture_echo",), }] E AssertionError: assert None == [{'policy_revision': 1, 'role': 'soundwave', 'tool_names': ('desktop_fixture_echo',)}] E + where None = ('observed_dispatches') E + where = {'activation': 'restart', 'effort_model_prefixes': ('openai/',), 'effort_values': ('low', 'medium', 'high'), 'engagement_id': 'engagement-a', ...}.get E + where {'activation': 'restart', 'effort_model_prefixes': ('openai/',), 'effort_values': ('low', 'medium', 'high'), 'engagement_id': 'engagement-a', ...} = model_dump() E + where model_dump = SettingsCapabilities(protocol_version=1, policy_validated=True, workspace_id='workspace-a', engagement_id='engagement-...effort_model_prefixes=('openai/',), tool_transport='http-json', activation='restart', revocation='dispatch-and-result').model_dump E + where SettingsCapabilities(protocol_version=1, policy_validated=True, workspace_id='workspace-a', engagement_id='engagement-...effort_model_prefixes=('openai/',), tool_transport='http-json', activation='restart', revocation='dispatch-and-result') = settings_capabilities() packages/decepticon/tests/integration/test_desktop_settings_runtime.py:82: AssertionError =============================== warnings summary =============================== packages/decepticon/decepticon/tools/ad/delegation.py:15 /home/catow/GIT/decepticon-oss-desktop-settings-policy-20261020/packages/decepticon/decepticon/tools/ad/delegation.py:15: DeprecationWarning: decepticon.tools.research.graph.KnowledgeGraph is deprecated; import from decepticon_core.types.kg.KnowledgeGraph instead (legacy path removed at 2.0.0) from decepticon.tools.research.graph import KnowledgeGraph packages/decepticon/decepticon/tools/ad/gpo.py:14 /home/catow/GIT/decepticon-oss-desktop-settings-policy-20261020/packages/decepticon/decepticon/tools/ad/gpo.py:14: DeprecationWarning: decepticon.tools.research.graph.EdgeKind is deprecated; import from decepticon_core.types.kg.EdgeKind instead (legacy path removed at 2.0.0) from decepticon.tools.research.graph import EdgeKind, KnowledgeGraph packages/decepticon/decepticon/__init__.py:29 /home/catow/GIT/decepticon-oss-desktop-settings-policy-20261020/packages/decepticon/decepticon/__init__.py:29: DeprecationWarning: Decepticon Phase 1 compat shims active. Migrate the following paths before 2.0.0: - decepticon.core.schemas -> decepticon_core.types.engagement - decepticon.llm.models -> decepticon_core.types.llm - decepticon.tools.research.graph -> decepticon_core.types.kg - decepticon.plugin_loader -> decepticon_core.plugin_loader - decepticon.core.config -> decepticon_core.utils.config - decepticon.core.logging -> decepticon_core.utils.logging - decepticon.agents.middleware_slots -> decepticon_core.contracts.slots (enum/SLOTS_PER_ROLE only) compat.register_legacy_imports() -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED packages/decepticon/tests/integration/test_desktop_settings_runtime.py::test_selected_model_executes_registered_tool_over_real_http 1 failed, 3 warnings in 5.22s exit=1