Page MenuHomePhabricator

tstarling (Tim Starling)
UserAdministrator

Projects (29)

Today

  • No visible events.

Tomorrow

  • No visible events.

Wednesday

  • No visible events.

User Details

User Since
Oct 15 2014, 8:27 PM (599 w, 4 d)
Roles
Administrator
Availability
Available
LDAP User
Tim Starling
MediaWiki User
Tim Starling (WMF) [ Global Accounts ]

Recent Activity

Today

tstarling added a comment to T423027: 2026-04-12 Gerrit Outage (was: DiskSpace).

Does this mean I can try to recheck once again now?

Mon, Apr 13, 6:51 AM · Wikimedia-Incident, Gerrit, collaboration-services
tstarling added a comment to T423027: 2026-04-12 Gerrit Outage (was: DiskSpace).

Presumably Lucene got that "no space" exception and closed the writer, storing the exception. Then every time it tried to write to the index, an AlreadyClosedException was thrown, wrapping the stored "no space" exception. I restarted Gerrit, that seems to have fixed it. Gate jobs are running now on my core change.

Mon, Apr 13, 3:38 AM · Wikimedia-Incident, Gerrit, collaboration-services
tstarling added a comment to T423027: 2026-04-12 Gerrit Outage (was: DiskSpace).

Here's the Gerrit error log when I hit +2 on a core change. Lucene throws an exception with "No space left on device".

Mon, Apr 13, 3:26 AM · Wikimedia-Incident, Gerrit, collaboration-services

Thu, Apr 9

tstarling added a comment to T157614: Investigate if it is legally okay to have h264 decoder run on production and/or labs, or provide the decoder in JS for a browser to run.

There are two other patent pools competing with VIA. Avanci Video offers patent licenses for AV1, H.265, H.266, MPEG-DASH, and VP9, all together in a bundle, for a percentage of video-related revenue. And Access Advance VDP is a pool covering AV1, H.265, H.266 and VP9 which has a royalty waiver tier for small businesses.

Thu, Apr 9, 1:15 AM · WMF-Legal, Video, Multimedia

Tue, Mar 31

tstarling added a comment to T157614: Investigate if it is legally okay to have h264 decoder run on production and/or labs, or provide the decoder in JS for a browser to run.

@tstarling Would it make a difference if you used the hardware decoder from an integrated GPU?

Tue, Mar 31, 5:53 AM · WMF-Legal, Video, Multimedia
tstarling added a comment to T157614: Investigate if it is legally okay to have h264 decoder run on production and/or labs, or provide the decoder in JS for a browser to run.

So to use an AVC licensed product, we would have to use some kind of commercial decoder, not FFmpeg.

Tue, Mar 31, 2:38 AM · WMF-Legal, Video, Multimedia

Mon, Mar 30

tstarling added a comment to T157614: Investigate if it is legally okay to have h264 decoder run on production and/or labs, or provide the decoder in JS for a browser to run.

VIA sells codec licenses for between zero and $0.20 per copy. Licensed products are required to have a EULA statement along the lines of:

Mon, Mar 30, 11:39 PM · WMF-Legal, Video, Multimedia

Wed, Mar 25

tstarling added a comment to T393348: Add infrastructure to MW (stash) upload pipeline to allow converting on upload.

This is a historically controversial subject, so community consensus would have to be sought before enabling anything like this. This task is just about implementing the necessary pieces in MW, not the politics of the final results.

Wed, Mar 25, 11:35 PM · Patch-For-Review, MediaWiki-Uploading
tstarling renamed T415631: Produnto sandbox: previewing unreleased changes from Produnto previewing unreleased changes to Produnto sandbox: previewing unreleased changes.
Wed, Mar 25, 1:34 AM · Patch-For-Review, Produnto, Scribunto
tstarling closed T412337: Produnto schema, a subtask of T411834: Scribunto external dependencies - roadmap and requirements, as Resolved.
Wed, Mar 25, 1:33 AM · Produnto, Scribunto
tstarling closed T412337: Produnto schema as Resolved.
Wed, Mar 25, 1:33 AM · Produnto
tstarling closed T412323: Produnto deployment state updater, a subtask of T411834: Scribunto external dependencies - roadmap and requirements, as Resolved.
Wed, Mar 25, 1:33 AM · Produnto, Scribunto
tstarling closed T412323: Produnto deployment state updater as Resolved.
Wed, Mar 25, 1:33 AM · Produnto, Scribunto
tstarling closed T412320: Produnto package fetcher, a subtask of T411834: Scribunto external dependencies - roadmap and requirements, as Resolved.
Wed, Mar 25, 1:33 AM · Produnto, Scribunto
tstarling closed T412320: Produnto package fetcher as Resolved.
Wed, Mar 25, 1:33 AM · Produnto, Scribunto

Mar 13 2026

tstarling added a comment to T353891: https://lists.wikimedia.org is often slow to load.

https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ takes 111 seconds to load per FireFox network timing API data collected just now on my home network. That time is all attributed to "waiting". I think it is quite likely that the Python app is doing something inefficient or reliant on an underpowered backend service.

Mar 13 2026, 12:31 AM · collaboration-services, Upstream, SRE, Performance Issue, Wikimedia-Mailing-lists

Mar 6 2026

tstarling added a comment to T419107: The PHPUnit config override does not appear to be auto-generated.

Another failure after the core patch was merged: https://integration.wikimedia.org/ci/job/quibble-vendor-mysql-php83/47798/console

Mar 6 2026, 5:01 AM · MW-1.46-notes (1.46.0-wmf.19; 2026-03-10), MediaWiki-Core-Tests, Patch-For-Review, Release-Engineering-Team, ci-test-error (WMF-deployed Build Failure)
tstarling added a comment to T419107: The PHPUnit config override does not appear to be auto-generated.

1237375 failed gate checks three times in a row, although it failed in a different place each time. First in PHP 8.2, then in PHP 8.3 at split group 5, then in PHP 8.3 at split group 6. Each time with the error message

Mar 6 2026, 3:35 AM · MW-1.46-notes (1.46.0-wmf.19; 2026-03-10), MediaWiki-Core-Tests, Patch-For-Review, Release-Engineering-Team, ci-test-error (WMF-deployed Build Failure)

Feb 24 2026

tstarling added a comment to T364245: Recentchanges and cu_changes tables are occasionally missing revisions on multiple wikis.

Does this have implications for all post transaction / DeferredUpdate calls/Hooks/DomainEvents? When this happens, is it possible that any post transaction callback will not be run?

Feb 24 2026, 11:14 PM · Patch-For-Review, ServiceOps new, MW-on-K8s, MediaWiki-Recent-changes

Feb 20 2026

tstarling added a comment to T364245: Recentchanges and cu_changes tables are occasionally missing revisions on multiple wikis.

It would be nice if we had a diagram or explanation of the whole request flow, including every TCP connection. I see Effie's diagrams at c:Category:Wikimedia servers diagrams with their "it's complicated" boxes, and Timo's backend-focused diagrams, but none of them are really what I need. I've looked into the Envoy service inside the k8s pod in the past, so I should probably have been able to answer my own question, but I do get rusty when I don't have to touch this stuff for a while.

Feb 20 2026, 9:14 PM · Patch-For-Review, ServiceOps new, MW-on-K8s, MediaWiki-Recent-changes
tstarling added a comment to T364245: Recentchanges and cu_changes tables are occasionally missing revisions on multiple wikis.

What is the rationale for allowing keepalive on ATS to Apache connections? It's not using HTTPS is it? Inside a datacentre with unencrypted HTTP, the connection latency should be small compared to the average request time.

Feb 20 2026, 5:11 AM · Patch-For-Review, ServiceOps new, MW-on-K8s, MediaWiki-Recent-changes
tstarling placed T364245: Recentchanges and cu_changes tables are occasionally missing revisions on multiple wikis up for grabs.
Feb 20 2026, 1:37 AM · Patch-For-Review, ServiceOps new, MW-on-K8s, MediaWiki-Recent-changes
tstarling lowered the priority of T364245: Recentchanges and cu_changes tables are occasionally missing revisions on multiple wikis from Unbreak Now! to High.

Extending my detection method to the whole day of 2026-02-18, there were 72 possibly lost RC rows, for an implied loss rate of 0.04%.

Feb 20 2026, 1:37 AM · Patch-For-Review, ServiceOps new, MW-on-K8s, MediaWiki-Recent-changes
tstarling claimed T364245: Recentchanges and cu_changes tables are occasionally missing revisions on multiple wikis.
enwiki
SELECT COUNT(*) FROM revision LEFT JOIN recentchanges ON rev_id = rc_this_oldid AND (rc_source = 'mw.edit' OR rc_source = 'mw.new') LEFT JOIN page ON page_id = rev_page WHERE rev_timestamp LIKE '202512%';
-- Result: 5,295,851

SELECT COUNT(*) FROM revision LEFT JOIN recentchanges ON rev_id = rc_this_oldid AND (rc_source = 'mw.edit' OR rc_source = 'mw.new') LEFT JOIN page ON page_id = rev_page WHERE rev_timestamp LIKE '202512%' AND rc_id IS NULL;
-- Result: 152,168 = 2.8%

So this is not a 5% problem, but a 2.8% problem. Still huge. Let's look at namespaces, again. https://phabricator.wikimedia.org/P86763

  • nlwiki: Main 1% gap, Talk 12% gap, User 1% gap, User talk 1% gap, Project 0.6% gap, Template 4% gap, Category 8% gap
  • enwiktionary: Main 0.5% gap, User 2% gap, User_talk 3% gap, Template 4% gap, Category 6% gap
Feb 20 2026, 12:06 AM · Patch-For-Review, ServiceOps new, MW-on-K8s, MediaWiki-Recent-changes

Feb 18 2026

tstarling updated the task description for T412323: Produnto deployment state updater.
Feb 18 2026, 4:15 AM · Produnto, Scribunto

Feb 16 2026

tstarling created T417524: Scribunto external package link tracking.
Feb 16 2026, 2:12 AM · Produnto, Scribunto

Jan 30 2026

tstarling added a comment to T357199: Could we optimize Lua environment setup to improve {{#invoke:}} performance?.

The paranoia about sharing state between #invoke calls came out of a complete lack of trust Brad and I had for template developers at the time. In an ideal world, we would just say "please don't do that", and they wouldn't do it. But we were working in an adversarial environment. Remember the time Domas got into a wheel war with the ocwiki admins over slow templates? The attitude was don't worry about performance and template authors told us that if we didn't want them doing a thing, we would have made it impossible. Technical ability to do a thing was treated as permission and our direct communications were given no weight.

Jan 30 2026, 2:17 AM · Performance Issue, MW-1.43-notes (1.43.0-wmf.7; 2024-05-28), Scribunto

Jan 29 2026

tstarling closed T408894: Watchlist label RC filtering backend, a subtask of T406214: Filter by labels on Special:Watchlist, as Resolved.
Jan 29 2026, 5:47 AM · OKR-Work (WE1 FY2025-26), Story, Watchlist-Labels, Community-Tech
tstarling closed T408894: Watchlist label RC filtering backend as Resolved.
Jan 29 2026, 5:47 AM · MW-1.46-notes (1.46.0-wmf.3; 2025-11-19), Community-Tech (Fox Squad), Watchlist-Labels
tstarling closed T406843: Create watchlist labels database tables, a subtask of T413967: Deploy watchlist labels, as Resolved.
Jan 29 2026, 5:47 AM · Community-Tech (Fox Squad), Watchlist-Labels
tstarling closed T406843: Create watchlist labels database tables, a subtask of T406011: Watchlist label manager, as Resolved.
Jan 29 2026, 5:47 AM · OKR-Work (WE1 FY2025-26), Community-Tech, Story, Watchlist-Labels
tstarling closed T406843: Create watchlist labels database tables as Resolved.
Jan 29 2026, 5:47 AM · Data-Persistence (work done), MW-1.46-notes (1.46.0-wmf.2; 2025-11-12), Community-Tech (Fox Squad), Watchlist-Labels
tstarling added a comment to T249985: Lithuanian Category Collation: Articles starting with y grouped together with articles starting with i, but those are two different letters.

This was apparently done on purpose in https://unicode-org.atlassian.net/browse/CLDR-2748

Jan 29 2026, 4:09 AM · Upstream, MediaWiki-Categories, Wikimedia-Site-requests

Jan 28 2026

tstarling added a comment to T411834: Scribunto external dependencies - roadmap and requirements.

It has been proposed that we allow users to deploy Lua code which is stored in Git to multiple wikis.

Proposed by whom?

Jan 28 2026, 11:57 PM · Produnto, Scribunto
tstarling updated the task description for T411834: Scribunto external dependencies - roadmap and requirements.
Jan 28 2026, 11:46 PM · Produnto, Scribunto

Jan 27 2026

tstarling added a comment to T411834: Scribunto external dependencies - roadmap and requirements.

Maybe, a solution could be to extend Special:TemplateSandbox to allow reading in local code using the File System API.

I did have a couple of ideas, in the task description under the heading "Development cycle", not that one though so thanks for that, I'll consider it.

Jan 27 2026, 8:52 AM · Produnto, Scribunto
tstarling created T415631: Produnto sandbox: previewing unreleased changes.
Jan 27 2026, 8:43 AM · Patch-For-Review, Produnto, Scribunto
tstarling closed T415232: Produnto extension setup, a subtask of T411834: Scribunto external dependencies - roadmap and requirements, as Resolved.
Jan 27 2026, 1:21 AM · Produnto, Scribunto
tstarling closed T415232: Produnto extension setup as Resolved.
Jan 27 2026, 1:21 AM · Produnto
tstarling edited projects for T412473: Produnto purging, added: Produnto; removed Scribunto.
Jan 27 2026, 1:21 AM · Produnto
tstarling edited projects for T412337: Produnto schema, added: Produnto; removed Scribunto.
Jan 27 2026, 1:20 AM · Produnto
tstarling edited projects for T412320: Produnto package fetcher, added: Produnto; removed MediaWiki-General.
Jan 27 2026, 1:20 AM · Produnto, Scribunto
tstarling edited projects for T412317: Produnto package deployment dashboard, added: Produnto; removed MediaWiki-General.
Jan 27 2026, 1:19 AM · Produnto, Scribunto
tstarling added a project to T412181: Scribunto external package loader: Produnto.
Jan 27 2026, 1:19 AM · Patch-For-Review, Produnto, Scribunto
tstarling added a project to T411834: Scribunto external dependencies - roadmap and requirements: Produnto.
Jan 27 2026, 1:18 AM · Produnto, Scribunto
tstarling edited projects for T412323: Produnto deployment state updater, added: Produnto; removed MediaWiki-General.
Jan 27 2026, 1:18 AM · Produnto, Scribunto
tstarling created Produnto.
Jan 27 2026, 1:17 AM
tstarling updated the task description for T412323: Produnto deployment state updater.
Jan 27 2026, 1:13 AM · Produnto, Scribunto
tstarling updated the task description for T411834: Scribunto external dependencies - roadmap and requirements.
Jan 27 2026, 12:49 AM · Produnto, Scribunto
tstarling renamed T412320: Produnto package fetcher from Package fetcher to Produnto package fetcher.
Jan 27 2026, 12:32 AM · Produnto, Scribunto
tstarling renamed T412317: Produnto package deployment dashboard from Package deployment dashboard to Produnto package deployment dashboard.
Jan 27 2026, 12:28 AM · Produnto, Scribunto

Jan 22 2026

tstarling claimed T415232: Produnto extension setup.
Jan 22 2026, 2:41 AM · Produnto
tstarling created T415232: Produnto extension setup.
Jan 22 2026, 2:33 AM · Produnto

Jan 20 2026

tstarling added a comment to T412337: Produnto schema.

Increased hash sizes from 32 to 64 bytes to accommodate SHA-256 in hexadecimal format.

Jan 20 2026, 12:49 AM · Produnto
tstarling updated the task description for T412337: Produnto schema.
Jan 20 2026, 12:49 AM · Produnto
tstarling updated the task description for T412337: Produnto schema.
Jan 20 2026, 12:30 AM · Produnto
tstarling added a comment to T412337: Produnto schema.

I extended the text field types from MEDIUMBLOB to LONGBLOB because the overhead of the extra length byte will be a small percentage of the table size. Limits can be implemented at the application level -- there's no good rationale for making the DB be the first thing to break when someone tries to make a large file.

Jan 20 2026, 12:05 AM · Produnto
tstarling updated the task description for T412337: Produnto schema.
Jan 20 2026, 12:03 AM · Produnto
tstarling added a comment to T412337: Produnto schema.

I added produnto_deployment_data for storing a JSON file mapping the module name to package and file name. Scribunto builds this cache by parsing the package manifest, as described in T412181.

Jan 20 2026, 12:02 AM · Produnto

Jan 19 2026

tstarling updated the task description for T412337: Produnto schema.
Jan 19 2026, 11:58 PM · Produnto
tstarling added a comment to T412320: Produnto package fetcher.

Third-party wikis will want to use packages. Having the GitLab webhook post directly to the wiki is not a solution for them. Also they can't fetch zip files directly from GitLab, there would need to be a CDN.

Jan 19 2026, 1:55 AM · Produnto, Scribunto

Jan 13 2026

tstarling closed T413860: wikimedia/request-timeout's listed homepage in composer.json doesn't exist as Resolved.

I created the page.

Jan 13 2026, 5:42 AM · Composer, MediaWiki-libs-RequestTimeout
tstarling added a comment to T411834: Scribunto external dependencies - roadmap and requirements.

Maybe, a solution could be to extend Special:TemplateSandbox to allow reading in local code using the File System API.

Jan 13 2026, 12:07 AM · Produnto, Scribunto

Jan 12 2026

tstarling added a comment to T412225: 504 Gateway Timeout: httpReason\":\"upstreamrequesttimeout in action api.

The time felt, off so I timed it, and it is off (15 vs 60 seconds)...

time curl -as 'https://zh.wikipedia.org/w/rest.php/v1/revision/90601530/html'
{"httpCode":504,"httpReason":"upstream request timeout"}

real    0m15.305s
user    0m0.086s
sys     0m0.024s
Jan 12 2026, 5:11 AM · MW-Interfaces-Team, Wikimedia Enterprise, MediaWiki-Action-API

Dec 17 2025

tstarling updated the task description for T412337: Produnto schema.
Dec 17 2025, 6:08 AM · Produnto
tstarling added a comment to T412337: Produnto schema.

I updated the schema to make all tables be shared, and also for the new purging algorithm at T412473.

Dec 17 2025, 6:01 AM · Produnto
tstarling updated the task description for T412337: Produnto schema.
Dec 17 2025, 5:59 AM · Produnto
tstarling updated the task description for T412473: Produnto purging.
Dec 17 2025, 5:53 AM · Produnto
tstarling added a comment to T412337: Produnto schema.

It should simplify purging (T412473) if all tables are shared, since there is a need for global locking. You can check to make sure a package hasn't been touched recently before purging it, but ultimately you need a locked view of that condition.

Dec 17 2025, 2:21 AM · Produnto

Dec 15 2025

tstarling closed T400022: 2025 Commons SEO review, a subtask of T54647: MediaWiki images and image pages are not being indexed properly by external search engines, as Resolved.
Dec 15 2025, 11:23 PM · Community-Tech (Sea Lion Squad), Commons, SEO, MediaWiki-File-management, MediaWiki-General
tstarling closed T400022: 2025 Commons SEO review as Resolved.

This is done.

Dec 15 2025, 11:23 PM · Community-Wishlist, Commons, Community-Tech (Sea Lion Squad), SEO

Dec 14 2025

tstarling added a comment to T362937: Expose page view info to lua.

So that the data can be used alongside other parser capabilities, like Scribunto's SVG support to generate graphs. It could also be used with Charts, which I now see has a ticket for this use-case: T393500, which would be solved by this patch

Dec 14 2025, 10:59 PM · Patch-For-Review, Scribunto, PageViewInfo
tstarling added a comment to T412337: Produnto schema.

We could put the deployments in a shared table, with wiki ID columns.

Dec 14 2025, 10:43 PM · Produnto
tstarling added a comment to T412337: Produnto schema.

I haven't had time to review the proposed schema in depth (I'm in an offsite until next week) but to get the discussion starting, the number of tables per-wiki is still too many[1]. I wonder if the table with one row only can be merged into something else. I don't think these tables will grow much so I'd lean towards de-normalizing as much as possible.

[1] in s3, MariaDB process needs to open many many files because of combination of many wikis and many tables and each table creating two files. Adding three tables to every wiki adds around 6000 more files to be opened by the process which impacts the performance the database.

Dec 14 2025, 10:33 PM · Produnto

Dec 12 2025

tstarling updated the task description for T412337: Produnto schema.
Dec 12 2025, 1:50 AM · Produnto
tstarling updated the task description for T412473: Produnto purging.
Dec 12 2025, 1:47 AM · Produnto
tstarling renamed T412323: Produnto deployment state updater from Package deployment state updater to Produnto deployment state updater.
Dec 12 2025, 1:47 AM · Produnto, Scribunto
tstarling updated the task description for T412337: Produnto schema.
Dec 12 2025, 1:15 AM · Produnto
tstarling renamed T412337: Produnto schema from Packages schema to Produnto schema.
Dec 12 2025, 1:15 AM · Produnto
tstarling created T412473: Produnto purging.
Dec 12 2025, 1:11 AM · Produnto
tstarling updated the task description for T411834: Scribunto external dependencies - roadmap and requirements.
Dec 12 2025, 12:10 AM · Produnto, Scribunto

Dec 11 2025

tstarling updated the task description for T412320: Produnto package fetcher.
Dec 11 2025, 11:37 PM · Produnto, Scribunto
tstarling updated the task description for T412337: Produnto schema.
Dec 11 2025, 6:50 AM · Produnto
tstarling updated the task description for T412320: Produnto package fetcher.
Dec 11 2025, 6:46 AM · Produnto, Scribunto
tstarling created T412337: Produnto schema.
Dec 11 2025, 6:33 AM · Produnto
tstarling renamed T412323: Produnto deployment state updater from Package deployment state update to Package deployment state updater.
Dec 11 2025, 2:51 AM · Produnto, Scribunto
tstarling updated the task description for T412181: Scribunto external package loader.
Dec 11 2025, 1:19 AM · Patch-For-Review, Produnto, Scribunto
tstarling created T412323: Produnto deployment state updater.
Dec 11 2025, 1:07 AM · Produnto, Scribunto
tstarling created T412320: Produnto package fetcher.
Dec 11 2025, 12:25 AM · Produnto, Scribunto

Dec 10 2025

tstarling created T412317: Produnto package deployment dashboard.
Dec 10 2025, 11:54 PM · Produnto, Scribunto
tstarling added a comment to T362937: Expose page view info to lua.

Why get the parser involved? Why not load from the pageviews API on the client side?

Dec 10 2025, 11:18 PM · Patch-For-Review, Scribunto, PageViewInfo
tstarling created T412181: Scribunto external package loader.
Dec 10 2025, 6:39 AM · Patch-For-Review, Produnto, Scribunto

Dec 8 2025

tstarling added a comment to T412033: StandaloneInterpreterTest failure fwrite(): Write of 80 bytes failed with errno=32 Broken pipe.

It's reproducible by just putting sleep(1) after the proc_terminate().

Dec 8 2025, 11:09 PM · ci-test-error, Scribunto
tstarling added a comment to T410527: "mw.title.newBatch(...)" is unreasonably memory-hoggy.

Reportedly LUA can use 50 MiO RAM, quite generous. But if 7'000 pages hog 50 MiO, then every single page consumes ca 7 KiO. Does it really need so much? I could try to call "mw.title.newBatch(...)" in batches of 25 pages, and copy the relevant info from bloated title objects into a LUA table of booleans.

Dec 8 2025, 2:21 AM · Performance Issue, Scribunto

Dec 5 2025

tstarling updated the task description for T411834: Scribunto external dependencies - roadmap and requirements.
Dec 5 2025, 1:32 AM · Produnto, Scribunto
tstarling created T411834: Scribunto external dependencies - roadmap and requirements.
Dec 5 2025, 1:12 AM · Produnto, Scribunto

Dec 3 2025

tstarling closed T279736: "Preview page with this template" should only accept/suggest pages that transclude the template as Resolved.
Dec 3 2025, 11:29 AM · MW-1.46-notes (1.46.0-wmf.4; 2025-11-25), Wikimedia Wishathon, MediaWiki-extensions-TemplateSandbox
tstarling updated the task description for T279736: "Preview page with this template" should only accept/suggest pages that transclude the template.
Dec 3 2025, 11:28 AM · MW-1.46-notes (1.46.0-wmf.4; 2025-11-25), Wikimedia Wishathon, MediaWiki-extensions-TemplateSandbox
tstarling added a comment to T279736: "Preview page with this template" should only accept/suggest pages that transclude the template.

The "accept" part is resolved, but the "suggest" part is not.

Dec 3 2025, 11:24 AM · MW-1.46-notes (1.46.0-wmf.4; 2025-11-25), Wikimedia Wishathon, MediaWiki-extensions-TemplateSandbox
tstarling closed T355763: mw.text.jsonDecode() incorrectly interprets number strings as integers as Declined.

I can't read PHP. ChatGPT says: In this part of the code, if $isEncoding is true and the key $k is a string containing only digits (checked using ctype_digit), it converts the string to an integer using (int)$k. This is done to handle cases where JSON decoding may result in numeric keys represented as strings. The function then checks if the converted integer key forms a sequential sequence.

Is this intended? Is this a bug? If this is intended, can you add an option to allow no conversion like mw.loadJsonData("file.json", digit_conversion=False).

Dec 3 2025, 3:27 AM · Scribunto