diff --git a/docs/design/openapi-client-contract.md b/docs/design/openapi-client-contract.md index 0f3567607..1dd53ede3 100644 --- a/docs/design/openapi-client-contract.md +++ b/docs/design/openapi-client-contract.md @@ -130,7 +130,7 @@ global code that is not referenced by any operation is staleness only. Provider-readiness/runtime reason registries are separate string registries: `READINESS_REASON_CODES` and `REASON_CODES` live at `solstone/think/providers/state.py:33-47`, runtime codes live at -`solstone/think/providers/shared.py:213-225`, and readiness presentation lives +`solstone/think/providers/shared.py:250-269`, and readiness presentation lives at `solstone/convey/provider_readiness.py:83-299`. None of the 14 fragments should import those registries. diff --git a/solstone/think/providers/shared.py b/solstone/think/providers/shared.py index ac0bf4986..a9aed7e88 100644 --- a/solstone/think/providers/shared.py +++ b/solstone/think/providers/shared.py @@ -210,6 +210,8 @@ def _chain_has_status_code(exc: BaseException, code: int) -> bool: def mark_cloud_model_request(exc: BaseException) -> None: + # OpenHands may classify __cause__/__context__ via _unwrap_provider_exception, + # so marking only the caught wrapper would lose transport provenance. for item in exception_chain(exc): try: setattr(item, _CLOUD_MODEL_REQUEST_ATTR, True) @@ -724,7 +726,6 @@ __all__ = [ "classify_canned_generate", "classify_provider_error", "exception_chain", - "has_cloud_model_request_mark", "is_cloud_model_not_found", "mark_cloud_model_request", "safe_raw",