This is the main implementation bullet of M1.
nomenclature
Decide, either:
- we extend the current Special:ViewAbstract/<qid> page so that it's usable from abstract clients, or
- we build a new Special:PreviewAbstract/<qid> page to isolate functionalities and make this one only accessible on AbstractClient mode
- if we do this, we can also use it in abstract.wikipedia.org/wiki/Special:PreviewAbstract/qid?uselang=lang as an effective M0 exit criteria, instead of T422635: Migrate abstract.wikipedia.org's read path to the new durable storage layer
properties and behavior
- The special page is reached under the URL subpage /<qid> with the language selected from uselang, the user interface language, and a documented fallback chain when the requested language is unavailable.
- The page looks up a Wikidata item for the display label
- composes a whole-article blob from the section blobs stored in the storage layer populated by M0,
- renders that blob with appropriate lang/dir attributes and provenance framing,
- exposes the skin-level chrome (tabs, subtitles, help link) pointing at the right places cross-wiki.
challenges or concerns
- Unstored sections follow the cold-path fallback established by M0's migration bullet.
- Cross-wiki fetch path from the client wiki to the durable storage: Depending on the substrate selected in M0, this may be a direct read against x1, a call into a service, or a read against an object store; the client-side code must be written against an abstraction that lets the substrate decision slot in without rewriting the special page.
out of scope
- any non-special-page surface for Abstract Content (M2),
- any editing affordance on the client wiki (abstract content is read-only here; the tab-linking sub-bullet below handles "edit" by sending the reader to abstract.wikipedia.org),
- any per-reader personalisation beyond language selection,
- and any integration with VisualEditor or WikiEditor on the client wiki.
Acceptance criteria:
- A special page (name chosen by the implementer per the M1 header) is reachable on Test Wikipedia at the URL suffix /<qid> when abstract-client mode is enabled, and inaccessible when it is not.
- On a successful request, the page renders a whole article, composed from the section blobs in the M0 storage layer; for non-stored sections follow the M0 cold-path fallback and return a legible response.
- The cross-wiki fetch path is abstracted over the substrate selected in M0, so that replacing the substrate would not require rewriting the special page.
- The class-structure decision (new class / mode branch on existing class / shared base) from the M1 header is recorded in a code comment at the chosen class's top, with a short justification for the choice.
- Language selection follows the fallback chain driven by uselang and the UI-language chain, with the fallback behaviour documented in the class comment.
- The three sub-bullets above (Wikidata label, banner, tab linking) are complete.