pierrejeambrun opened a new pull request, #76747: URL: https://github.com/apache/airflow/pull/76747
With an XCom backend that keeps values in external storage (for example `common.io` with `xcom_objectstorage_threshold` set), the public XCom endpoint the AI Model tab reads returns the reference the backend stored in the database, not the value. The API server deliberately never runs the backend's `deserialize_value`, so the tab cannot get the real value. Each section handled that differently, and none of them told the user: - the model badge showed the reference as if it were the model name; - the usage stat boxes disappeared; - the skills section disappeared. So an offloaded value looked the same as a task that never published it. The tab now lists each value kept in external storage with its reference. Usage and skills are recognised by type (a string where an object or a list is expected). The model name is a string either way, so it counts as a reference when it holds a URI scheme (`://`), which a model name never does. The observability docs already described this limitation; they now describe the new behaviour. ### Screenshots Same agent task, run once with XComs in the database and once with every XCom offloaded (`XComObjectStorageBackend`, threshold `0`): | | `main` | This PR | |---|---|---| | XComs offloaded | BEFORE_OFFLOADED | AFTER_OFFLOADED | | XComs in the database (unchanged) | BEFORE_IN_DATABASE | AFTER_IN_DATABASE | --- ##### Was generative AI tooling used to co-author this PR? - [X] Yes — Claude Code (Opus 5.5) Generated-by: Claude Code (Opus 5.5) following [the guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#gen-ai-assisted-contributions) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
