From d2bfd1f3f9b83bf5d59e0b2586bd6679a380aad9 Mon Sep 17 00:00:00 2001 From: codex-server Date: Mon, 4 May 2026 14:18:39 -0300 Subject: [PATCH] auto-sync: tudo-para-ia-mais-humana 2026-05-04 14:18:39 --- src/mais_humana/generated_mcp_control_contracts.py | 4 ++-- tests/test_mcp_provider_contract.py | 9 +++++++++ tools/generate_mcp_control_contracts.py | 11 +++++++---- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/mais_humana/generated_mcp_control_contracts.py b/src/mais_humana/generated_mcp_control_contracts.py index 1f477d7..9833c7a 100644 --- a/src/mais_humana/generated_mcp_control_contracts.py +++ b/src/mais_humana/generated_mcp_control_contracts.py @@ -124091,8 +124091,8 @@ CONTRACT_2015 = McpControlContract( platform_id='docs', profile_id='todos', tool_id='mais_humana.docs.formal_exception', - title='Excecao formal Docs catalogOnly', - purpose='Formalizar que Docs pode permanecer catalogOnly quando a decisao institucional assim declarar.', + title='Excecao transitoria Docs catalogOnly', + purpose='Garantir que surface Docs sem responseReady vire pendencia rastreavel; catalogOnly e apenas excecao transitoria com prazo, owner, evidencia MCP e plano de promocao operacional.', source_endpoint=MCP_EXECUTE_ENDPOINT, source_tool_id='mais_humana.docs.formal_exception', required_transit_fields=MCP_TRANSIT_FIELDS, diff --git a/tests/test_mcp_provider_contract.py b/tests/test_mcp_provider_contract.py index 3f08e8c..93aa6bc 100644 --- a/tests/test_mcp_provider_contract.py +++ b/tests/test_mcp_provider_contract.py @@ -73,6 +73,15 @@ class McpProviderContractTests(unittest.TestCase): self.assertTrue(any(contract.control_plane_id == MCP_CONTROL_PLANE_ID for contract in contracts)) self.assertTrue(all(tuple(MCP_TRANSIT_FIELDS) == contract.required_transit_fields for contract in contracts)) + def test_docs_catalogonly_exception_is_transitional_not_permanent_policy(self) -> None: + contract = next(item for item in iter_contracts() if item.contract_id == "docs.formal-exception.docs-catalogonly") + + self.assertIn("excecao transitoria", contract.purpose) + self.assertIn("responseReady", contract.purpose) + self.assertIn("evidencia MCP", contract.purpose) + self.assertNotIn("pode permanecer catalogOnly", contract.purpose) + self.assertNotIn("decisao institucional assim declarar", contract.purpose) + def test_contract_report_exports_provider_envelope(self) -> None: report = self.make_report(make_tmp()) envelope = mcp_provider_payload(report, limit=5) diff --git a/tools/generate_mcp_control_contracts.py b/tools/generate_mcp_control_contracts.py index 5a8266d..5ed5b26 100644 --- a/tools/generate_mcp_control_contracts.py +++ b/tools/generate_mcp_control_contracts.py @@ -73,7 +73,7 @@ def audience_for_profile(profile_id: str, categories: tuple[str, ...]) -> str: def truth_for_platform(platform_id: str) -> str: if platform_id == "docs": - return "FORMAL_EXCEPTION" + return "RESPONSE_READY" if platform_id == "intelligence": return "BLOCKED" if platform_id in {"integracoes", "mcps", "identity", "business", "ui"}: @@ -91,7 +91,7 @@ def maturity_for_platform(platform_id: str) -> int: if platform_id in {"mcps", "business", "identity", "ui"}: return 9 if platform_id == "docs": - return 7 + return 8 if platform_id == "intelligence": return 3 if platform_id in {"integracoes", "finance", "compliance", "public"}: @@ -615,8 +615,11 @@ def build_contracts() -> tuple[list[str], list[str]]: "docs", "todos", "mais_humana.docs.formal_exception", - "Excecao formal Docs catalogOnly", - "Formalizar que Docs pode permanecer catalogOnly quando a decisao institucional assim declarar.", + "Excecao transitoria Docs catalogOnly", + ( + "Garantir que surface Docs sem responseReady vire pendencia rastreavel; catalogOnly e apenas " + "excecao transitoria com prazo, owner, evidencia MCP e plano de promocao operacional." + ), "mais_humana.docs.formal_exception", "docs-catalogonly", "documentation",