You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The primary #39 follow-up. Gate production reliance on this.
The X long-form Article capture shipped in #39 (on develop via #65) is pinned entirely against constructed fixtures — no live X payload has ever been validated. Until that happens the structured path is unproven; it degrades safely to text-only, but we don't actually know it fires on a real Article.
Do
Capture one live bookmarked-Article GraphQL response (log the intercepted response(s) during a real xbrain fetch-x run against a bookmarked /i/article/…).
Validate the entity path (PR2): confirm article.article_results.result.rest_id resolves on the real payload.
Validate the content_state op-name + Draft.js shape (PR3): confirm the intercepted GraphQL op-name substring (_ARTICLE_GRAPHQL_HINT = "article") matches, and that content_state parses to ordered blocks (text runs + inline-image atomic blocks resolving via the entityMap).
Commit it as a recorded fixture (replace/augment the constructed fixtures in tests/test_article.py / tests/test_fetch_x.py) so drift is caught by the suite.
The parser anchors on stable key names and degrades to (None, []) / text-only on any drift (so it's safe), but "safe fallback" is not "works". A real payload is the only thing that proves the structured blogpost path actually triggers, and it's the prerequisite for relying on this in production.
The primary #39 follow-up. Gate production reliance on this.
The X long-form Article capture shipped in #39 (on
developvia #65) is pinned entirely against constructed fixtures — no live X payload has ever been validated. Until that happens the structured path is unproven; it degrades safely to text-only, but we don't actually know it fires on a real Article.Do
xbrain fetch-xrun against a bookmarked/i/article/…).article.article_results.result.rest_idresolves on the real payload._ARTICLE_GRAPHQL_HINT = "article") matches, and thatcontent_stateparses to orderedblocks(text runs + inline-imageatomicblocks resolving via theentityMap).tests/test_article.py/tests/test_fetch_x.py) so drift is caught by the suite.Why it matters
The parser anchors on stable key names and degrades to
(None, [])/ text-only on any drift (so it's safe), but "safe fallback" is not "works". A real payload is the only thing that proves the structured blogpost path actually triggers, and it's the prerequisite for relying on this in production.Refs: #39 (RFC open-Q #4), #65.