<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mw.eckford.ca:443/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tux</id>
	<title>MediaWiki-1.39 - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://mw.eckford.ca:443/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tux"/>
	<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php/Special:Contributions/Tux"/>
	<updated>2026-07-17T12:59:53Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Rs2&amp;diff=199</id>
		<title>Rs2</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Rs2&amp;diff=199"/>
		<updated>2026-04-10T01:31:46Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[File:pallette.jpg|thumb|right|150px|colour pallette]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    Did you know: &lt;br /&gt;
&lt;br /&gt;
    That Ye Olde Box(es) are machines that should be treated tenderly&lt;br /&gt;
    That Sh1re is hearth of security&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An online source of RADARSAT-2 operations data and documentation since launch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Navigation Methods&amp;lt;/h2&amp;gt;&lt;br /&gt;
{{Enhanced|From a desktop machine:}}&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://sh1rs2wikidu01.mda.ca/Main_Page &amp;lt;strong&amp;gt;R2 Wiki&amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://transferdepot.sh1rs2wikidu01.mda.ca &amp;lt;strong&amp;gt;TransferDepot &amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://sh1rs2wikidu01.mda.ca/Special:ApprovedManuals &amp;lt;strong&amp;gt;Operational Manual Procedures&amp;lt;/strong&amp;gt;]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Safe|From the Control Room and legacy machines:}}&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.81/index.php/Main_Page?useskin=monobook &amp;lt;strong&amp;gt;R2 Wiki&amp;lt;/strong&amp;gt; ] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.62/ &amp;lt;strong&amp;gt;TransferDepot&amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.81/Special:ApprovedManuals?useskin=monobook &amp;lt;strong&amp;gt;Operational Manual Procedures&amp;lt;/strong&amp;gt;] &amp;lt;/strong&amp;gt; &amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System Configuration ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MDA R2-Wiki New stuff/should read:&#039;&#039;&#039;&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Cortex|Cortex Explained:]] Mission Control &amp;amp; High level description&amp;lt;BR&amp;gt;&lt;br /&gt;
-----&lt;br /&gt;
[[MissionPriorities| Mission Priorities:]] Top Mission Priorities from SAF, Bugs and projects &amp;lt;BR&amp;gt;&lt;br /&gt;
[[Current Spacecraft Configuration| Current Spacecraft Configuration:]] Overview of current Spacecraft configuration, subsystem status and performance &amp;lt;BR&amp;gt;&lt;br /&gt;
[[System_Configuration|Ground System Configuration:]] Ground Segment SW&amp;lt;BR&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=MediaWiki:Sidebar&amp;diff=197</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=MediaWiki:Sidebar&amp;diff=197"/>
		<updated>2026-03-16T14:11:44Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** Rs2|rs2 prod&lt;br /&gt;
** Definitions|Definitions&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
** MediaWiki_Tips|MW for the Sh1re&lt;br /&gt;
** Special:ListFiles|Uploaded Files&lt;br /&gt;
** Special:Upload|Upload Files&lt;br /&gt;
** MediaWiki:Sidebar|MediaWiki Sidebar&lt;br /&gt;
** Special:AllPages/Template:|Templates&lt;br /&gt;
** purge-main|page purges&lt;br /&gt;
&lt;br /&gt;
deployment&lt;br /&gt;
* Special:Upload|Upload Package&lt;br /&gt;
* Special:ListFiles|Deployment Files&lt;br /&gt;
&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Now you can&amp;lt;/h3&amp;gt; &lt;br /&gt;
&amp;lt;p&amp;gt;This one was different&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;** MediaWiki:Sidebar|MediaWiki Sidebar&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Link to other MediaWiki: pages (like MediaWiki:Common.css, MediaWiki:Mainpage-description), just remember to include the full namespace like MediaWiki:Mainpage-description &amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=MediaWiki:Sidebar&amp;diff=196</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=MediaWiki:Sidebar&amp;diff=196"/>
		<updated>2026-03-16T14:10:41Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** Rs2|rs2&lt;br /&gt;
** Definitions|Definitions&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
** MediaWiki_Tips|MW for the Sh1re&lt;br /&gt;
** Special:ListFiles|Uploaded Files&lt;br /&gt;
** Special:Upload|Upload Files&lt;br /&gt;
** MediaWiki:Sidebar|MediaWiki Sidebar&lt;br /&gt;
** Special:AllPages/Template:|Templates&lt;br /&gt;
** purge-main|page purges&lt;br /&gt;
&lt;br /&gt;
deployment&lt;br /&gt;
* Special:Upload|Upload Package&lt;br /&gt;
* Special:ListFiles|Deployment Files&lt;br /&gt;
&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Now you can&amp;lt;/h3&amp;gt; &lt;br /&gt;
&amp;lt;p&amp;gt;This one was different&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;** MediaWiki:Sidebar|MediaWiki Sidebar&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Link to other MediaWiki: pages (like MediaWiki:Common.css, MediaWiki:Mainpage-description), just remember to include the full namespace like MediaWiki:Mainpage-description &amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=195</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=195"/>
		<updated>2026-03-16T13:59:41Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Info|Updated March 16, 2026.}}&lt;br /&gt;
&lt;br /&gt;
= ROUTINE troubleshooting notes =&lt;br /&gt;
&lt;br /&gt;
These notes are for checking or changing the active ROUTINE in the Manual Procedures workflow.&lt;br /&gt;
&lt;br /&gt;
== Normal workflow ==&lt;br /&gt;
&lt;br /&gt;
# Log in.&lt;br /&gt;
# Open &#039;&#039;&#039;Approved manuals&#039;&#039;&#039;.&lt;br /&gt;
# Note the ROUTINE shown at the top of the page.&lt;br /&gt;
# Open &#039;&#039;&#039;ROUTINE tags&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== To activate or roll back to an existing ROUTINE ===&lt;br /&gt;
&lt;br /&gt;
Use the &#039;&#039;&#039;top ROUTINE field&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Enter the exact existing ROUTINE value you want to use, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then click &#039;&#039;&#039;Activate tag&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This can be used to:&lt;br /&gt;
&lt;br /&gt;
* activate the current working ROUTINE&lt;br /&gt;
* return to a previous ROUTINE&lt;br /&gt;
* confirm that an existing ROUTINE bundle still works&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do not&#039;&#039;&#039; use &#039;&#039;&#039;Clone ROUTINE release&#039;&#039;&#039; for rollback.&lt;br /&gt;
&lt;br /&gt;
=== To create the next ROUTINE ===&lt;br /&gt;
&lt;br /&gt;
First make sure the current ROUTINE is correct in the &#039;&#039;&#039;top ROUTINE field&#039;&#039;&#039;.  &lt;br /&gt;
If needed, enter the current ROUTINE there and click &#039;&#039;&#039;Activate tag&#039;&#039;&#039; first.&lt;br /&gt;
&lt;br /&gt;
Then use &#039;&#039;&#039;Clone ROUTINE release&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Enter:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Source ROUTINE&#039;&#039;&#039;: the current active release, for example &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;New ROUTINE&#039;&#039;&#039;: the new release, for example &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then submit the form.&lt;br /&gt;
&lt;br /&gt;
This should:&lt;br /&gt;
&lt;br /&gt;
* create the new ROUTINE tag&lt;br /&gt;
* copy the current bundle into the new ROUTINE&lt;br /&gt;
* activate the new ROUTINE automatically&lt;br /&gt;
&lt;br /&gt;
== What to check immediately after ==&lt;br /&gt;
&lt;br /&gt;
After activating or cloning:&lt;br /&gt;
&lt;br /&gt;
# Stay on the page and note the message shown at the top.&lt;br /&gt;
# Open &#039;&#039;&#039;Approved manuals&#039;&#039;&#039; again.&lt;br /&gt;
# Confirm whether the ROUTINE heading changed.&lt;br /&gt;
# Confirm whether the manual list changed as expected.&lt;br /&gt;
&lt;br /&gt;
== Important ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Activate tag&#039;&#039;&#039; uses an existing ROUTINE.&lt;br /&gt;
* &#039;&#039;&#039;Clone ROUTINE release&#039;&#039;&#039; creates a new ROUTINE from an existing one.&lt;br /&gt;
* &#039;&#039;&#039;Rollback&#039;&#039;&#039; means activating an existing ROUTINE in the top field.&lt;br /&gt;
* Enter the ROUTINE exactly as written, for example &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Changing approved document revisions does &#039;&#039;&#039;not&#039;&#039;&#039; by itself create a new ROUTINE label.&lt;br /&gt;
* A new ROUTINE appears only after it is cloned or otherwise created in the ROUTINE tables.&lt;br /&gt;
&lt;br /&gt;
= Emergency fallback test in LocalSettings.php =&lt;br /&gt;
&lt;br /&gt;
Use this only if the normal ROUTINE activation path is not working and you need to test whether the wiki is falling back to configuration.&lt;br /&gt;
&lt;br /&gt;
== Method 1: Change the fallback ROUTINE in &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Edit this line in &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgCustomQueryPageDefaultTag = &#039;ROUTINE_4.111&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
# Save the file.&lt;br /&gt;
# Reload [[Special:RoutineTags]].&lt;br /&gt;
# Reload [[Special:ApprovedManuals]].&lt;br /&gt;
&lt;br /&gt;
If nothing changes:&lt;br /&gt;
&lt;br /&gt;
# Do a hard refresh in the browser.&lt;br /&gt;
# If it is still unchanged, ask the sysadmin to restart PHP or the container.&lt;br /&gt;
# Reload both special pages again.&lt;br /&gt;
&lt;br /&gt;
Expected result:&lt;br /&gt;
&lt;br /&gt;
* If the page starts showing &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, the extension is reading the fallback value from configuration.&lt;br /&gt;
* If it still shows &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;, this change did not affect the current read path.&lt;br /&gt;
&lt;br /&gt;
== Method 2: Quick page check ==&lt;br /&gt;
&lt;br /&gt;
After Method 1, check both pages, not just one:&lt;br /&gt;
&lt;br /&gt;
* [[Special:RoutineTags]]&lt;br /&gt;
* [[Special:ApprovedManuals]]&lt;br /&gt;
&lt;br /&gt;
Things to confirm:&lt;br /&gt;
&lt;br /&gt;
* Does [[Special:RoutineTags]] show &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt; as the visible current or default tag?&lt;br /&gt;
* Does the heading on [[Special:ApprovedManuals]] change to the new ROUTINE?&lt;br /&gt;
* Does the document list appear to match the intended release?&lt;br /&gt;
&lt;br /&gt;
== Method 3: See documentation ==&lt;br /&gt;
&lt;br /&gt;
Use the ROUTINE workflow and recovery notes for deeper troubleshooting.&lt;br /&gt;
&lt;br /&gt;
Known points:&lt;br /&gt;
&lt;br /&gt;
* ROUTINE labels are stored in &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt;.&lt;br /&gt;
* ROUTINE membership is stored in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The current approved set is stored in &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The active selected ROUTINE is stored in &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Activating a ROUTINE rebuilds &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Rollback is done by reactivating the previous ROUTINE.&lt;br /&gt;
&lt;br /&gt;
If the manual &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; edit and page refresh do not restore expected behaviour, continue with the documented extension workflow and technical recovery notes.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
= DEBUG STEPS = &lt;br /&gt;
&lt;br /&gt;
== In a nutshell == &lt;br /&gt;
&lt;br /&gt;
* What ROUTINE is showing on Approved manuals?&lt;br /&gt;
&lt;br /&gt;
* What ROUTINE tag displays on the ROUTINE tags page?&lt;br /&gt;
&lt;br /&gt;
* What exact message appeared after clicking the button?&lt;br /&gt;
&lt;br /&gt;
== Tech Fixes ==&lt;br /&gt;
&lt;br /&gt;
Please let me know if this is fixed or if you need another step. Based on what&#039;s happening, I can probably help :)&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
{{Info| Released Vesion 1.0 is available as Latest Version released Feb 26, 2026}}&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
File:CustomQueryPage-latest.tgz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Data model summary:&#039;&#039;&#039; &amp;lt;code&amp;gt;page_latest&amp;lt;/code&amp;gt; tracks the most recent edit, &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt; identifies the revision currently approved for display, and each ROUTINE snapshot in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; records which revision belongs to that release.&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
The following information can be used as an installation guide. Only download files tagged latest&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=  OBSOLETE Pre-release =&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
See procedure for rollback to reset to a previous version. Set tag ONLY. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Note: Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; does not exist yet, or if you are intentionally applying the CustomQueryPage schema changes in a controlled maintenance window.}}&lt;br /&gt;
&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=194</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=194"/>
		<updated>2026-03-16T13:51:15Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Info|Updated March 16, 2026.}}&lt;br /&gt;
&lt;br /&gt;
= ROUTINE troubleshooting notes =&lt;br /&gt;
&lt;br /&gt;
These notes are for checking or changing the active ROUTINE in the Manual Procedures workflow.&lt;br /&gt;
&lt;br /&gt;
== Normal workflow ==&lt;br /&gt;
&lt;br /&gt;
# Log in.&lt;br /&gt;
# Open &#039;&#039;&#039;Approved manuals&#039;&#039;&#039;.&lt;br /&gt;
# Note the ROUTINE shown at the top of the page.&lt;br /&gt;
# Open &#039;&#039;&#039;ROUTINE tags&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== To activate or roll back to an existing ROUTINE ===&lt;br /&gt;
&lt;br /&gt;
Use the &#039;&#039;&#039;top ROUTINE field&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Enter the exact existing ROUTINE value you want to use, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then click &#039;&#039;&#039;Activate tag&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This can be used to:&lt;br /&gt;
&lt;br /&gt;
* activate the current working ROUTINE&lt;br /&gt;
* return to a previous ROUTINE&lt;br /&gt;
* confirm that an existing ROUTINE bundle still works&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do not&#039;&#039;&#039; use &#039;&#039;&#039;Clone ROUTINE release&#039;&#039;&#039; for rollback.&lt;br /&gt;
&lt;br /&gt;
=== To create the next ROUTINE ===&lt;br /&gt;
&lt;br /&gt;
First make sure the current ROUTINE is correct in the &#039;&#039;&#039;top ROUTINE field&#039;&#039;&#039;.  &lt;br /&gt;
If needed, enter the current ROUTINE there and click &#039;&#039;&#039;Activate tag&#039;&#039;&#039; first.&lt;br /&gt;
&lt;br /&gt;
Then use &#039;&#039;&#039;Clone ROUTINE release&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Enter:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Source ROUTINE&#039;&#039;&#039;: the current active release, for example &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;New ROUTINE&#039;&#039;&#039;: the new release, for example &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then submit the form.&lt;br /&gt;
&lt;br /&gt;
This should:&lt;br /&gt;
&lt;br /&gt;
* create the new ROUTINE tag&lt;br /&gt;
* copy the current bundle into the new ROUTINE&lt;br /&gt;
* activate the new ROUTINE automatically&lt;br /&gt;
&lt;br /&gt;
== What to check immediately after ==&lt;br /&gt;
&lt;br /&gt;
After activating or cloning:&lt;br /&gt;
&lt;br /&gt;
# Stay on the page and note the message shown at the top.&lt;br /&gt;
# Open &#039;&#039;&#039;Approved manuals&#039;&#039;&#039; again.&lt;br /&gt;
# Confirm whether the ROUTINE heading changed.&lt;br /&gt;
# Confirm whether the manual list changed as expected.&lt;br /&gt;
&lt;br /&gt;
== Important ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Activate tag&#039;&#039;&#039; uses an existing ROUTINE.&lt;br /&gt;
* &#039;&#039;&#039;Clone ROUTINE release&#039;&#039;&#039; creates a new ROUTINE from an existing one.&lt;br /&gt;
* &#039;&#039;&#039;Rollback&#039;&#039;&#039; means activating an existing ROUTINE in the top field.&lt;br /&gt;
* Enter the ROUTINE exactly as written, for example &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Changing approved document revisions does &#039;&#039;&#039;not&#039;&#039;&#039; by itself create a new ROUTINE label.&lt;br /&gt;
* A new ROUTINE appears only after it is cloned or otherwise created in the ROUTINE tables.&lt;br /&gt;
&lt;br /&gt;
= Emergency fallback test in LocalSettings.php =&lt;br /&gt;
&lt;br /&gt;
Use this only if the normal ROUTINE activation path is not working and you need to test whether the wiki is falling back to configuration.&lt;br /&gt;
&lt;br /&gt;
== Method 1: Change the fallback ROUTINE in &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Edit this line in &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgCustomQueryPageDefaultTag = &#039;ROUTINE_4.111&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
# Save the file.&lt;br /&gt;
# Reload [[Special:RoutineTags]].&lt;br /&gt;
# Reload [[Special:ApprovedManuals]].&lt;br /&gt;
&lt;br /&gt;
If nothing changes:&lt;br /&gt;
&lt;br /&gt;
# Do a hard refresh in the browser.&lt;br /&gt;
# If it is still unchanged, ask the sysadmin to restart PHP or the container.&lt;br /&gt;
# Reload both special pages again.&lt;br /&gt;
&lt;br /&gt;
Expected result:&lt;br /&gt;
&lt;br /&gt;
* If the page starts showing &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, the extension is reading the fallback value from configuration.&lt;br /&gt;
* If it still shows &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;, this change did not affect the current read path.&lt;br /&gt;
&lt;br /&gt;
== Method 2: Quick page check ==&lt;br /&gt;
&lt;br /&gt;
After Method 1, check both pages, not just one:&lt;br /&gt;
&lt;br /&gt;
* [[Special:RoutineTags]]&lt;br /&gt;
* [[Special:ApprovedManuals]]&lt;br /&gt;
&lt;br /&gt;
Things to confirm:&lt;br /&gt;
&lt;br /&gt;
* Does [[Special:RoutineTags]] show &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt; as the visible current or default tag?&lt;br /&gt;
* Does the heading on [[Special:ApprovedManuals]] change to the new ROUTINE?&lt;br /&gt;
* Does the document list appear to match the intended release?&lt;br /&gt;
&lt;br /&gt;
== Method 3: See documentation ==&lt;br /&gt;
&lt;br /&gt;
Use the ROUTINE workflow and recovery notes for deeper troubleshooting.&lt;br /&gt;
&lt;br /&gt;
Known points:&lt;br /&gt;
&lt;br /&gt;
* ROUTINE labels are stored in &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt;.&lt;br /&gt;
* ROUTINE membership is stored in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The current approved set is stored in &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The active selected ROUTINE is stored in &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Activating a ROUTINE rebuilds &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Rollback is done by reactivating the previous ROUTINE.&lt;br /&gt;
&lt;br /&gt;
If the manual &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; edit and page refresh do not restore expected behaviour, continue with the documented extension workflow and technical recovery notes.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Hi Lisa, If this doesn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
{{Info| Released Vesion 1.0 is available as Latest Version released Feb 26, 2026}}&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
File:CustomQueryPage-latest.tgz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Data model summary:&#039;&#039;&#039; &amp;lt;code&amp;gt;page_latest&amp;lt;/code&amp;gt; tracks the most recent edit, &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt; identifies the revision currently approved for display, and each ROUTINE snapshot in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; records which revision belongs to that release.&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
The following information can be used as an installation guide. Only download files tagged latest&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=  OBSOLETE Pre-release =&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
See procedure for rollback to reset to a previous version. Set tag ONLY. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Note: Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; does not exist yet, or if you are intentionally applying the CustomQueryPage schema changes in a controlled maintenance window.}}&lt;br /&gt;
&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=193</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=193"/>
		<updated>2026-03-16T13:44:37Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Info|Updated March 16, 2026.}}&lt;br /&gt;
&lt;br /&gt;
= ROUTINE troubleshooting notes =&lt;br /&gt;
&lt;br /&gt;
These notes are for checking or changing the active ROUTINE in the Manual Procedures workflow.&lt;br /&gt;
&lt;br /&gt;
== Normal workflow ==&lt;br /&gt;
&lt;br /&gt;
# Log in.&lt;br /&gt;
# Open &#039;&#039;&#039;Approved manuals&#039;&#039;&#039;.&lt;br /&gt;
# Note the ROUTINE shown at the top of the page.&lt;br /&gt;
# Open &#039;&#039;&#039;ROUTINE tags&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== To roll back to an existing ROUTINE ===&lt;br /&gt;
&lt;br /&gt;
Use the &#039;&#039;&#039;top ROUTINE field&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Enter the exact existing ROUTINE value you want to return to, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then save or activate it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do not&#039;&#039;&#039; use &#039;&#039;&#039;Clone ROUTINE release&#039;&#039;&#039; for rollback.&lt;br /&gt;
&lt;br /&gt;
=== To create the next ROUTINE ===&lt;br /&gt;
&lt;br /&gt;
Use &#039;&#039;&#039;Clone ROUTINE release&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Enter:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Source ROUTINE&#039;&#039;&#039;: the current release, for example &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;New ROUTINE&#039;&#039;&#039;: the new release, for example &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then submit the form.&lt;br /&gt;
&lt;br /&gt;
== What to check immediately after ==&lt;br /&gt;
&lt;br /&gt;
After saving or cloning:&lt;br /&gt;
&lt;br /&gt;
# Stay on the page and note the message shown at the top.&lt;br /&gt;
# Open &#039;&#039;&#039;Approved manuals&#039;&#039;&#039; again.&lt;br /&gt;
# Confirm whether the ROUTINE heading changed.&lt;br /&gt;
# Confirm whether the manual list changed as expected.&lt;br /&gt;
&lt;br /&gt;
== Important ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Rollback&#039;&#039;&#039; means activating an existing ROUTINE in the top field.&lt;br /&gt;
* &#039;&#039;&#039;Clone&#039;&#039;&#039; means creating a new ROUTINE in the lower form.&lt;br /&gt;
* Enter the ROUTINE exactly as written, for example &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Changing approved document revisions does &#039;&#039;&#039;not&#039;&#039;&#039; by itself create a new ROUTINE label.&lt;br /&gt;
* A new ROUTINE appears only after it is cloned or otherwise created in the ROUTINE tables.&lt;br /&gt;
&lt;br /&gt;
= Emergency fallback test in LocalSettings.php =&lt;br /&gt;
&lt;br /&gt;
Use this only if the normal ROUTINE activation path is not working and you need to test whether the wiki is falling back to configuration.&lt;br /&gt;
&lt;br /&gt;
== Method 1: Change the fallback ROUTINE in &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Edit this line in &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgCustomQueryPageDefaultTag = &#039;ROUTINE_4.111&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
# Save the file.&lt;br /&gt;
# Reload [[Special:RoutineTags]].&lt;br /&gt;
# Reload [[Special:ApprovedManuals]].&lt;br /&gt;
&lt;br /&gt;
If nothing changes:&lt;br /&gt;
&lt;br /&gt;
# Do a hard refresh in the browser.&lt;br /&gt;
# If it is still unchanged, ask the sysadmin to restart PHP or the container.&lt;br /&gt;
# Reload both special pages again.&lt;br /&gt;
&lt;br /&gt;
Expected result:&lt;br /&gt;
&lt;br /&gt;
* If the page starts showing &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, the extension is reading the fallback value from configuration.&lt;br /&gt;
* If it still shows &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;, this change did not affect the current read path.&lt;br /&gt;
&lt;br /&gt;
== Method 2: Quick page check ==&lt;br /&gt;
&lt;br /&gt;
After Method 1, check both pages, not just one:&lt;br /&gt;
&lt;br /&gt;
* [[Special:RoutineTags]]&lt;br /&gt;
* [[Special:ApprovedManuals]]&lt;br /&gt;
&lt;br /&gt;
Things to confirm:&lt;br /&gt;
&lt;br /&gt;
* Does [[Special:RoutineTags]] show &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt; as the visible current or default tag?&lt;br /&gt;
* Does the heading on [[Special:ApprovedManuals]] change to the new ROUTINE?&lt;br /&gt;
* Does the document list appear to match the intended release?&lt;br /&gt;
&lt;br /&gt;
== Method 3: See documentation ==&lt;br /&gt;
&lt;br /&gt;
Use the ROUTINE workflow and recovery notes for deeper troubleshooting.&lt;br /&gt;
&lt;br /&gt;
Known points:&lt;br /&gt;
&lt;br /&gt;
* ROUTINE labels are stored in &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt;.&lt;br /&gt;
* ROUTINE membership is stored in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The current approved set is stored in &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The active selected ROUTINE is stored in &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Activating a ROUTINE rebuilds &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Rollback is done by reactivating the previous ROUTINE.&lt;br /&gt;
&lt;br /&gt;
If the manual &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; edit and page refresh do not restore expected behaviour, continue with the documented extension workflow and technical recovery notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
{{Info| Released Vesion 1.0 is available as Latest Version released Feb 26, 2026}}&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
File:CustomQueryPage-latest.tgz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Data model summary:&#039;&#039;&#039; &amp;lt;code&amp;gt;page_latest&amp;lt;/code&amp;gt; tracks the most recent edit, &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt; identifies the revision currently approved for display, and each ROUTINE snapshot in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; records which revision belongs to that release.&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
The following information can be used as an installation guide. Only download files tagged latest&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=  OBSOLETE Pre-release =&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
See procedure for rollback to reset to a previous version. Set tag ONLY. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Note: Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; does not exist yet, or if you are intentionally applying the CustomQueryPage schema changes in a controlled maintenance window.}}&lt;br /&gt;
&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=192</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=192"/>
		<updated>2026-03-16T13:44:13Z</updated>

		<summary type="html">&lt;p&gt;Tux: Add debug steps to Operational Procedures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;```mediawiki&lt;br /&gt;
{{Info|Updated March 16, 2026.}}&lt;br /&gt;
&lt;br /&gt;
= ROUTINE troubleshooting notes =&lt;br /&gt;
&lt;br /&gt;
These notes are for checking or changing the active ROUTINE in the Manual Procedures workflow.&lt;br /&gt;
&lt;br /&gt;
== Normal workflow ==&lt;br /&gt;
&lt;br /&gt;
# Log in.&lt;br /&gt;
# Open &#039;&#039;&#039;Approved manuals&#039;&#039;&#039;.&lt;br /&gt;
# Note the ROUTINE shown at the top of the page.&lt;br /&gt;
# Open &#039;&#039;&#039;ROUTINE tags&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== To roll back to an existing ROUTINE ===&lt;br /&gt;
&lt;br /&gt;
Use the &#039;&#039;&#039;top ROUTINE field&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Enter the exact existing ROUTINE value you want to return to, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then save or activate it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do not&#039;&#039;&#039; use &#039;&#039;&#039;Clone ROUTINE release&#039;&#039;&#039; for rollback.&lt;br /&gt;
&lt;br /&gt;
=== To create the next ROUTINE ===&lt;br /&gt;
&lt;br /&gt;
Use &#039;&#039;&#039;Clone ROUTINE release&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Enter:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Source ROUTINE&#039;&#039;&#039;: the current release, for example &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;New ROUTINE&#039;&#039;&#039;: the new release, for example &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then submit the form.&lt;br /&gt;
&lt;br /&gt;
== What to check immediately after ==&lt;br /&gt;
&lt;br /&gt;
After saving or cloning:&lt;br /&gt;
&lt;br /&gt;
# Stay on the page and note the message shown at the top.&lt;br /&gt;
# Open &#039;&#039;&#039;Approved manuals&#039;&#039;&#039; again.&lt;br /&gt;
# Confirm whether the ROUTINE heading changed.&lt;br /&gt;
# Confirm whether the manual list changed as expected.&lt;br /&gt;
&lt;br /&gt;
== Important ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Rollback&#039;&#039;&#039; means activating an existing ROUTINE in the top field.&lt;br /&gt;
* &#039;&#039;&#039;Clone&#039;&#039;&#039; means creating a new ROUTINE in the lower form.&lt;br /&gt;
* Enter the ROUTINE exactly as written, for example &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Changing approved document revisions does &#039;&#039;&#039;not&#039;&#039;&#039; by itself create a new ROUTINE label.&lt;br /&gt;
* A new ROUTINE appears only after it is cloned or otherwise created in the ROUTINE tables.&lt;br /&gt;
&lt;br /&gt;
= Emergency fallback test in LocalSettings.php =&lt;br /&gt;
&lt;br /&gt;
Use this only if the normal ROUTINE activation path is not working and you need to test whether the wiki is falling back to configuration.&lt;br /&gt;
&lt;br /&gt;
== Method 1: Change the fallback ROUTINE in &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Edit this line in &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgCustomQueryPageDefaultTag = &#039;ROUTINE_4.111&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
# Save the file.&lt;br /&gt;
# Reload [[Special:RoutineTags]].&lt;br /&gt;
# Reload [[Special:ApprovedManuals]].&lt;br /&gt;
&lt;br /&gt;
If nothing changes:&lt;br /&gt;
&lt;br /&gt;
# Do a hard refresh in the browser.&lt;br /&gt;
# If it is still unchanged, ask the sysadmin to restart PHP or the container.&lt;br /&gt;
# Reload both special pages again.&lt;br /&gt;
&lt;br /&gt;
Expected result:&lt;br /&gt;
&lt;br /&gt;
* If the page starts showing &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, the extension is reading the fallback value from configuration.&lt;br /&gt;
* If it still shows &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;, this change did not affect the current read path.&lt;br /&gt;
&lt;br /&gt;
== Method 2: Quick page check ==&lt;br /&gt;
&lt;br /&gt;
After Method 1, check both pages, not just one:&lt;br /&gt;
&lt;br /&gt;
* [[Special:RoutineTags]]&lt;br /&gt;
* [[Special:ApprovedManuals]]&lt;br /&gt;
&lt;br /&gt;
Things to confirm:&lt;br /&gt;
&lt;br /&gt;
* Does [[Special:RoutineTags]] show &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt; as the visible current or default tag?&lt;br /&gt;
* Does the heading on [[Special:ApprovedManuals]] change to the new ROUTINE?&lt;br /&gt;
* Does the document list appear to match the intended release?&lt;br /&gt;
&lt;br /&gt;
== Method 3: See documentation ==&lt;br /&gt;
&lt;br /&gt;
Use the ROUTINE workflow and recovery notes for deeper troubleshooting.&lt;br /&gt;
&lt;br /&gt;
Known points:&lt;br /&gt;
&lt;br /&gt;
* ROUTINE labels are stored in &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt;.&lt;br /&gt;
* ROUTINE membership is stored in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The current approved set is stored in &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The active selected ROUTINE is stored in &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Activating a ROUTINE rebuilds &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Rollback is done by reactivating the previous ROUTINE.&lt;br /&gt;
&lt;br /&gt;
If the manual &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; edit and page refresh do not restore expected behaviour, continue with the documented extension workflow and technical recovery notes.&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
{{Info| Released Vesion 1.0 is available as Latest Version released Feb 26, 2026}}&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
File:CustomQueryPage-latest.tgz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Data model summary:&#039;&#039;&#039; &amp;lt;code&amp;gt;page_latest&amp;lt;/code&amp;gt; tracks the most recent edit, &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt; identifies the revision currently approved for display, and each ROUTINE snapshot in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; records which revision belongs to that release.&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
The following information can be used as an installation guide. Only download files tagged latest&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=  OBSOLETE Pre-release =&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
See procedure for rollback to reset to a previous version. Set tag ONLY. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Note: Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; does not exist yet, or if you are intentionally applying the CustomQueryPage schema changes in a controlled maintenance window.}}&lt;br /&gt;
&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=191</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=191"/>
		<updated>2026-03-14T00:50:18Z</updated>

		<summary type="html">&lt;p&gt;Tux: /* ROUTINE issue patch to fallback settings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{{Info| Updated March 12, 2026.}}&lt;br /&gt;
&lt;br /&gt;
= Reset ROUTINE manually =&lt;br /&gt;
&lt;br /&gt;
==ROUTINE issue patch to fallback settings==&lt;br /&gt;
&lt;br /&gt;
== Method 1: Change the fallback ROUTINE in &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Use this as a quick test or temporary recovery step.  ssh tux 210.32.36.141   /home/tux/mw1359/LocalSettings.php&lt;br /&gt;
&lt;br /&gt;
Edit this line in &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$wgCustomQueryPageDefaultTag = &#039;ROUTINE_4.111&#039;;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
# Save the file.&lt;br /&gt;
# Reload [[Special:RoutineTags]].&lt;br /&gt;
# Reload [[Special:ApprovedManuals]].&lt;br /&gt;
&lt;br /&gt;
If nothing changes:&lt;br /&gt;
&lt;br /&gt;
# Do a hard refresh in the browser.&lt;br /&gt;
# If it is still unchanged, ask the sysadmin to restart PHP or the container.&lt;br /&gt;
# Reload both special pages again.&lt;br /&gt;
&lt;br /&gt;
Expected result:&lt;br /&gt;
&lt;br /&gt;
* If the page starts showing &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, the extension is reading the fallback value from configuration.&lt;br /&gt;
* If it still shows &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;, this change did not affect the current read path.&lt;br /&gt;
&lt;br /&gt;
== Method 2: Quick page check ==&lt;br /&gt;
&lt;br /&gt;
After Method 1, check both pages, not just one:&lt;br /&gt;
&lt;br /&gt;
* [[Special:RoutineTags]]&lt;br /&gt;
* [[Special:ApprovedManuals]]&lt;br /&gt;
&lt;br /&gt;
Things to confirm:&lt;br /&gt;
&lt;br /&gt;
* Does [[Special:RoutineTags]] show &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt; as the visible current or default tag?&lt;br /&gt;
* Does the heading on [[Special:ApprovedManuals]] change to the new ROUTINE?&lt;br /&gt;
* Does the document list appear to match the intended release?&lt;br /&gt;
&lt;br /&gt;
This is the easiest check available when direct SQL access is not available.&lt;br /&gt;
&lt;br /&gt;
== Method 3: See documentation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Link TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use the ROUTINE workflow and recovery notes for deeper troubleshooting.&lt;br /&gt;
&lt;br /&gt;
Known points:&lt;br /&gt;
&lt;br /&gt;
* ROUTINE labels are stored in &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt;.&lt;br /&gt;
* ROUTINE membership is stored in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The current approved set is stored in &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The active selected ROUTINE is stored in &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Activating a ROUTINE rebuilds &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Rollback is done by reactivating the previous ROUTINE.&lt;br /&gt;
&lt;br /&gt;
If the manual &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; edit and page refresh do not restore expected behaviour, continue with the documented extension workflow and technical recovery notes.&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
{{Info| Released Vesion 1.0 is available as Latest Version released Feb 26, 2026}}&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
File:CustomQueryPage-latest.tgz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Data model summary:&#039;&#039;&#039; &amp;lt;code&amp;gt;page_latest&amp;lt;/code&amp;gt; tracks the most recent edit, &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt; identifies the revision currently approved for display, and each ROUTINE snapshot in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; records which revision belongs to that release.&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
The following information can be used as an installation guide. Only download files tagged latest&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=  OBSOLETE Pre-release =&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
Nice to have: the Special:CustomQuerySettings page has a [Clone ROUTINE] button it should also have a [Reset] button in case I want to do it again. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Note: Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; does not exist yet, or if you are intentionally applying the CustomQueryPage schema changes in a controlled maintenance window.}}&lt;br /&gt;
&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=190</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=190"/>
		<updated>2026-03-14T00:48:26Z</updated>

		<summary type="html">&lt;p&gt;Tux: /* Method 1: Change the fallback ROUTINE in LocalSettings.php */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{{Info| Updated March 12, 2026.}}&lt;br /&gt;
&lt;br /&gt;
= Reset ROUTINE manually =&lt;br /&gt;
&lt;br /&gt;
== ROUTINE issue patch to fallback settings == &lt;br /&gt;
&lt;br /&gt;
== Method 1: Change the fallback ROUTINE in &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Use this as a quick test or temporary recovery step.  ssh tux 210.32.36.141   /home/tux/mw1359/LocalSettings.php&lt;br /&gt;
&lt;br /&gt;
Edit this line in &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$wgCustomQueryPageDefaultTag = &#039;ROUTINE_4.111&#039;;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
# Save the file.&lt;br /&gt;
# Reload [[Special:RoutineTags]].&lt;br /&gt;
# Reload [[Special:ApprovedManuals]].&lt;br /&gt;
&lt;br /&gt;
If nothing changes:&lt;br /&gt;
&lt;br /&gt;
# Do a hard refresh in the browser.&lt;br /&gt;
# If it is still unchanged, ask the sysadmin to restart PHP or the container.&lt;br /&gt;
# Reload both special pages again.&lt;br /&gt;
&lt;br /&gt;
Expected result:&lt;br /&gt;
&lt;br /&gt;
* If the page starts showing &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, the extension is reading the fallback value from configuration.&lt;br /&gt;
* If it still shows &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;, this change did not affect the current read path.&lt;br /&gt;
&lt;br /&gt;
== Method 2: Quick page check ==&lt;br /&gt;
&lt;br /&gt;
After Method 1, check both pages, not just one:&lt;br /&gt;
&lt;br /&gt;
* [[Special:RoutineTags]]&lt;br /&gt;
* [[Special:ApprovedManuals]]&lt;br /&gt;
&lt;br /&gt;
Things to confirm:&lt;br /&gt;
&lt;br /&gt;
* Does [[Special:RoutineTags]] show &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt; as the visible current or default tag?&lt;br /&gt;
* Does the heading on [[Special:ApprovedManuals]] change to the new ROUTINE?&lt;br /&gt;
* Does the document list appear to match the intended release?&lt;br /&gt;
&lt;br /&gt;
This is the easiest check available when direct SQL access is not available.&lt;br /&gt;
&lt;br /&gt;
== Method 3: See documentation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Link TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use the ROUTINE workflow and recovery notes for deeper troubleshooting.&lt;br /&gt;
&lt;br /&gt;
Known points:&lt;br /&gt;
&lt;br /&gt;
* ROUTINE labels are stored in &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt;.&lt;br /&gt;
* ROUTINE membership is stored in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The current approved set is stored in &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The active selected ROUTINE is stored in &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Activating a ROUTINE rebuilds &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Rollback is done by reactivating the previous ROUTINE.&lt;br /&gt;
&lt;br /&gt;
If the manual &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; edit and page refresh do not restore expected behaviour, continue with the documented extension workflow and technical recovery notes.&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
{{Info| Released Vesion 1.0 is available as Latest Version released Feb 26, 2026}}&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
File:CustomQueryPage-latest.tgz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Data model summary:&#039;&#039;&#039; &amp;lt;code&amp;gt;page_latest&amp;lt;/code&amp;gt; tracks the most recent edit, &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt; identifies the revision currently approved for display, and each ROUTINE snapshot in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; records which revision belongs to that release.&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
The following information can be used as an installation guide. Only download files tagged latest&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=  OBSOLETE Pre-release =&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
Nice to have: the Special:CustomQuerySettings page has a [Clone ROUTINE] button it should also have a [Reset] button in case I want to do it again. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Note: Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; does not exist yet, or if you are intentionally applying the CustomQueryPage schema changes in a controlled maintenance window.}}&lt;br /&gt;
&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=189</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=189"/>
		<updated>2026-03-14T00:39:45Z</updated>

		<summary type="html">&lt;p&gt;Tux: /* 1. Seed the ROUTINE in the DB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{{Info| Updated March 12, 2026.}}&lt;br /&gt;
&lt;br /&gt;
= Reset ROUTINE manually =&lt;br /&gt;
&lt;br /&gt;
== ROUTINE issue patch to fallback settings == &lt;br /&gt;
&lt;br /&gt;
== Method 1: Change the fallback ROUTINE in &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Use this as a quick test or temporary recovery step.&lt;br /&gt;
&lt;br /&gt;
Edit this line in &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgCustomQueryPageDefaultTag = &#039;ROUTINE_4.111&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
# Save the file.&lt;br /&gt;
# Reload [[Special:RoutineTags]].&lt;br /&gt;
# Reload [[Special:ApprovedManuals]].&lt;br /&gt;
&lt;br /&gt;
If nothing changes:&lt;br /&gt;
&lt;br /&gt;
# Do a hard refresh in the browser.&lt;br /&gt;
# If it is still unchanged, ask the sysadmin to restart PHP or the container.&lt;br /&gt;
# Reload both special pages again.&lt;br /&gt;
&lt;br /&gt;
Expected result:&lt;br /&gt;
&lt;br /&gt;
* If the page starts showing &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, the extension is reading the fallback value from configuration.&lt;br /&gt;
* If it still shows &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;, this change did not affect the current read path.&lt;br /&gt;
&lt;br /&gt;
== Method 2: Quick page check ==&lt;br /&gt;
&lt;br /&gt;
After Method 1, check both pages, not just one:&lt;br /&gt;
&lt;br /&gt;
* [[Special:RoutineTags]]&lt;br /&gt;
* [[Special:ApprovedManuals]]&lt;br /&gt;
&lt;br /&gt;
Things to confirm:&lt;br /&gt;
&lt;br /&gt;
* Does [[Special:RoutineTags]] show &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt; as the visible current or default tag?&lt;br /&gt;
* Does the heading on [[Special:ApprovedManuals]] change to the new ROUTINE?&lt;br /&gt;
* Does the document list appear to match the intended release?&lt;br /&gt;
&lt;br /&gt;
This is the easiest check available when direct SQL access is not available.&lt;br /&gt;
&lt;br /&gt;
== Method 3: See documentation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Link TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use the ROUTINE workflow and recovery notes for deeper troubleshooting.&lt;br /&gt;
&lt;br /&gt;
Known points:&lt;br /&gt;
&lt;br /&gt;
* ROUTINE labels are stored in &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt;.&lt;br /&gt;
* ROUTINE membership is stored in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The current approved set is stored in &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The active selected ROUTINE is stored in &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Activating a ROUTINE rebuilds &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Rollback is done by reactivating the previous ROUTINE.&lt;br /&gt;
&lt;br /&gt;
If the manual &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; edit and page refresh do not restore expected behaviour, continue with the documented extension workflow and technical recovery notes.&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
{{Info| Released Vesion 1.0 is available as Latest Version released Feb 26, 2026}}&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
File:CustomQueryPage-latest.tgz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Data model summary:&#039;&#039;&#039; &amp;lt;code&amp;gt;page_latest&amp;lt;/code&amp;gt; tracks the most recent edit, &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt; identifies the revision currently approved for display, and each ROUTINE snapshot in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; records which revision belongs to that release.&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
The following information can be used as an installation guide. Only download files tagged latest&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=  OBSOLETE Pre-release =&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
Nice to have: the Special:CustomQuerySettings page has a [Clone ROUTINE] button it should also have a [Reset] button in case I want to do it again. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Note: Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; does not exist yet, or if you are intentionally applying the CustomQueryPage schema changes in a controlled maintenance window.}}&lt;br /&gt;
&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=188</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=188"/>
		<updated>2026-03-14T00:35:28Z</updated>

		<summary type="html">&lt;p&gt;Tux: /* OBSOLETE Pre-release */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{{Info| Updated March 12, 2026.}}&lt;br /&gt;
&lt;br /&gt;
= Reset ROUTINE manually =&lt;br /&gt;
&lt;br /&gt;
== ROUTINE issue patch to fallback settings == &lt;br /&gt;
&lt;br /&gt;
== Method 1: Change the fallback ROUTINE in &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Use this as a quick test or temporary recovery step.&lt;br /&gt;
&lt;br /&gt;
Edit this line in &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgCustomQueryPageDefaultTag = &#039;ROUTINE_4.111&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
# Save the file.&lt;br /&gt;
# Reload [[Special:RoutineTags]].&lt;br /&gt;
# Reload [[Special:ApprovedManuals]].&lt;br /&gt;
&lt;br /&gt;
If nothing changes:&lt;br /&gt;
&lt;br /&gt;
# Do a hard refresh in the browser.&lt;br /&gt;
# If it is still unchanged, ask the sysadmin to restart PHP or the container.&lt;br /&gt;
# Reload both special pages again.&lt;br /&gt;
&lt;br /&gt;
Expected result:&lt;br /&gt;
&lt;br /&gt;
* If the page starts showing &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, the extension is reading the fallback value from configuration.&lt;br /&gt;
* If it still shows &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;, this change did not affect the current read path.&lt;br /&gt;
&lt;br /&gt;
== Method 2: Quick page check ==&lt;br /&gt;
&lt;br /&gt;
After Method 1, check both pages, not just one:&lt;br /&gt;
&lt;br /&gt;
* [[Special:RoutineTags]]&lt;br /&gt;
* [[Special:ApprovedManuals]]&lt;br /&gt;
&lt;br /&gt;
Things to confirm:&lt;br /&gt;
&lt;br /&gt;
* Does [[Special:RoutineTags]] show &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt; as the visible current or default tag?&lt;br /&gt;
* Does the heading on [[Special:ApprovedManuals]] change to the new ROUTINE?&lt;br /&gt;
* Does the document list appear to match the intended release?&lt;br /&gt;
&lt;br /&gt;
This is the easiest check available when direct SQL access is not available.&lt;br /&gt;
&lt;br /&gt;
== Method 3: See documentation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Link TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use the ROUTINE workflow and recovery notes for deeper troubleshooting.&lt;br /&gt;
&lt;br /&gt;
Known points:&lt;br /&gt;
&lt;br /&gt;
* ROUTINE labels are stored in &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt;.&lt;br /&gt;
* ROUTINE membership is stored in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The current approved set is stored in &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The active selected ROUTINE is stored in &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Activating a ROUTINE rebuilds &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Rollback is done by reactivating the previous ROUTINE.&lt;br /&gt;
&lt;br /&gt;
If the manual &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; edit and page refresh do not restore expected behaviour, continue with the documented extension workflow and technical recovery notes.&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
{{Info| Released Vesion 1.0 is available as Latest Version released Feb 26, 2026}}&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
File:CustomQueryPage-latest.tgz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Data model summary:&#039;&#039;&#039; &amp;lt;code&amp;gt;page_latest&amp;lt;/code&amp;gt; tracks the most recent edit, &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt; identifies the revision currently approved for display, and each ROUTINE snapshot in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; records which revision belongs to that release.&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
The following information can be used as an installation guide. Only download files tagged latest&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=  OBSOLETE Pre-release =&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
Nice to have: the Special:CustomQuerySettings page has a [Clone ROUTINE] button it should also have a [Reset] button in case I want to do it again. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; doesn&#039;t exist yet.}}&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=187</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=187"/>
		<updated>2026-03-14T00:34:39Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{{Info| Updated March 12, 2026.}}&lt;br /&gt;
&lt;br /&gt;
= Reset ROUTINE manually =&lt;br /&gt;
&lt;br /&gt;
== ROUTINE issue patch to fallback settings == &lt;br /&gt;
&lt;br /&gt;
== Method 1: Change the fallback ROUTINE in &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Use this as a quick test or temporary recovery step.&lt;br /&gt;
&lt;br /&gt;
Edit this line in &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgCustomQueryPageDefaultTag = &#039;ROUTINE_4.111&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
# Save the file.&lt;br /&gt;
# Reload [[Special:RoutineTags]].&lt;br /&gt;
# Reload [[Special:ApprovedManuals]].&lt;br /&gt;
&lt;br /&gt;
If nothing changes:&lt;br /&gt;
&lt;br /&gt;
# Do a hard refresh in the browser.&lt;br /&gt;
# If it is still unchanged, ask the sysadmin to restart PHP or the container.&lt;br /&gt;
# Reload both special pages again.&lt;br /&gt;
&lt;br /&gt;
Expected result:&lt;br /&gt;
&lt;br /&gt;
* If the page starts showing &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, the extension is reading the fallback value from configuration.&lt;br /&gt;
* If it still shows &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;, this change did not affect the current read path.&lt;br /&gt;
&lt;br /&gt;
== Method 2: Quick page check ==&lt;br /&gt;
&lt;br /&gt;
After Method 1, check both pages, not just one:&lt;br /&gt;
&lt;br /&gt;
* [[Special:RoutineTags]]&lt;br /&gt;
* [[Special:ApprovedManuals]]&lt;br /&gt;
&lt;br /&gt;
Things to confirm:&lt;br /&gt;
&lt;br /&gt;
* Does [[Special:RoutineTags]] show &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt; as the visible current or default tag?&lt;br /&gt;
* Does the heading on [[Special:ApprovedManuals]] change to the new ROUTINE?&lt;br /&gt;
* Does the document list appear to match the intended release?&lt;br /&gt;
&lt;br /&gt;
This is the easiest check available when direct SQL access is not available.&lt;br /&gt;
&lt;br /&gt;
== Method 3: See documentation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Link TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use the ROUTINE workflow and recovery notes for deeper troubleshooting.&lt;br /&gt;
&lt;br /&gt;
Known points:&lt;br /&gt;
&lt;br /&gt;
* ROUTINE labels are stored in &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt;.&lt;br /&gt;
* ROUTINE membership is stored in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The current approved set is stored in &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The active selected ROUTINE is stored in &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Activating a ROUTINE rebuilds &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Rollback is done by reactivating the previous ROUTINE.&lt;br /&gt;
&lt;br /&gt;
If the manual &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; edit and page refresh do not restore expected behaviour, continue with the documented extension workflow and technical recovery notes.&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
{{Info| Released Vesion 1.0 is available as Latest Version released Feb 26, 2026}}&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
File:CustomQueryPage-latest.tgz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Data model summary:&#039;&#039;&#039; &amp;lt;code&amp;gt;page_latest&amp;lt;/code&amp;gt; tracks the most recent edit, &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt; identifies the revision currently approved for display, and each ROUTINE snapshot in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; records which revision belongs to that release.&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
The following information can be used as an installation guide. Only download files tagged latest&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=====  OBSOLETE Pre-release =====&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
Nice to have: the Special:CustomQuerySettings page has a [Clone ROUTINE] button it should also have a [Reset] button in case I want to do it again. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; doesn&#039;t exist yet.}}&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=186</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=186"/>
		<updated>2026-03-14T00:32:56Z</updated>

		<summary type="html">&lt;p&gt;Tux: Test fallback routine to set ROUTINE&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Info|ROUTINE issue patch to fallback settings. Updated March 12, 2026.}}&lt;br /&gt;
&lt;br /&gt;
= Reset ROUTINE manually =&lt;br /&gt;
&lt;br /&gt;
== Method 1: Change the fallback ROUTINE in &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Use this as a quick test or temporary recovery step.&lt;br /&gt;
&lt;br /&gt;
Edit this line in &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgCustomQueryPageDefaultTag = &#039;ROUTINE_4.111&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
# Save the file.&lt;br /&gt;
# Reload [[Special:RoutineTags]].&lt;br /&gt;
# Reload [[Special:ApprovedManuals]].&lt;br /&gt;
&lt;br /&gt;
If nothing changes:&lt;br /&gt;
&lt;br /&gt;
# Do a hard refresh in the browser.&lt;br /&gt;
# If it is still unchanged, ask the sysadmin to restart PHP or the container.&lt;br /&gt;
# Reload both special pages again.&lt;br /&gt;
&lt;br /&gt;
Expected result:&lt;br /&gt;
&lt;br /&gt;
* If the page starts showing &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, the extension is reading the fallback value from configuration.&lt;br /&gt;
* If it still shows &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;, this change did not affect the current read path.&lt;br /&gt;
&lt;br /&gt;
== Method 2: Quick page check ==&lt;br /&gt;
&lt;br /&gt;
After Method 1, check both pages, not just one:&lt;br /&gt;
&lt;br /&gt;
* [[Special:RoutineTags]]&lt;br /&gt;
* [[Special:ApprovedManuals]]&lt;br /&gt;
&lt;br /&gt;
Things to confirm:&lt;br /&gt;
&lt;br /&gt;
* Does [[Special:RoutineTags]] show &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt; as the visible current or default tag?&lt;br /&gt;
* Does the heading on [[Special:ApprovedManuals]] change to the new ROUTINE?&lt;br /&gt;
* Does the document list appear to match the intended release?&lt;br /&gt;
&lt;br /&gt;
This is the easiest check available when direct SQL access is not available.&lt;br /&gt;
&lt;br /&gt;
== Method 3: See documentation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Link TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use the ROUTINE workflow and recovery notes for deeper troubleshooting.&lt;br /&gt;
&lt;br /&gt;
Known points:&lt;br /&gt;
&lt;br /&gt;
* ROUTINE labels are stored in &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt;.&lt;br /&gt;
* ROUTINE membership is stored in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The current approved set is stored in &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The active selected ROUTINE is stored in &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Activating a ROUTINE rebuilds &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Rollback is done by reactivating the previous ROUTINE.&lt;br /&gt;
&lt;br /&gt;
If the manual &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; edit and page refresh do not restore expected behaviour, continue with the documented extension workflow and technical recovery notes.&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
{{Info| Released Vesion 1.0 is available as Latest Version released Feb 26, 2026}}&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
File:CustomQueryPage-latest.tgz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Data model summary:&#039;&#039;&#039; &amp;lt;code&amp;gt;page_latest&amp;lt;/code&amp;gt; tracks the most recent edit, &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt; identifies the revision currently approved for display, and each ROUTINE snapshot in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; records which revision belongs to that release.&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
The following information can be used as an installation guide. Only download files tagged latest&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=====  OBSOLETE Pre-release =====&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
Nice to have: the Special:CustomQuerySettings page has a [Clone ROUTINE] button it should also have a [Reset] button in case I want to do it again. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; doesn&#039;t exist yet.}}&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=185</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=185"/>
		<updated>2026-03-14T00:30:42Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Info| ROUTINE issue patch to fallback settings Updated March 12, 2026}}&lt;br /&gt;
&lt;br /&gt;
## Reset ROUTINE manually&lt;br /&gt;
&lt;br /&gt;
### Method 1 — Change the default ROUTINE in `LocalSettings.php`&lt;br /&gt;
&lt;br /&gt;
Use this when you want a quick operational test or temporary recovery.&lt;br /&gt;
&lt;br /&gt;
Edit this line in `LocalSettings.php`:&lt;br /&gt;
&lt;br /&gt;
```php&lt;br /&gt;
$wgCustomQueryPageDefaultTag = &#039;ROUTINE_4.111&#039;;&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
1. save the file&lt;br /&gt;
2. reload `Special:RoutineTags`&lt;br /&gt;
3. reload `Special:ApprovedManuals`&lt;br /&gt;
&lt;br /&gt;
If nothing changes:&lt;br /&gt;
&lt;br /&gt;
1. do a hard refresh&lt;br /&gt;
2. if still unchanged, have the sysadmin restart PHP / the container&lt;br /&gt;
3. reload both pages again&lt;br /&gt;
&lt;br /&gt;
Expected result:&lt;br /&gt;
&lt;br /&gt;
* if the page starts showing `ROUTINE_4.111`, this path is affecting what the extension reads&lt;br /&gt;
* if it still shows `ROUTINE_4.110`, this method did not change the active read path&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
### Method 2 — Quick sanity check&lt;br /&gt;
&lt;br /&gt;
After Method 1, verify both pages, not just one.&lt;br /&gt;
&lt;br /&gt;
Check:&lt;br /&gt;
&lt;br /&gt;
* `Special:RoutineTags`&lt;br /&gt;
* `Special:ApprovedManuals`&lt;br /&gt;
&lt;br /&gt;
What to look for:&lt;br /&gt;
&lt;br /&gt;
* does `Special:RoutineTags` show `ROUTINE_4.111` as the visible current/default tag?&lt;br /&gt;
* does `Special:ApprovedManuals` heading change to the new ROUTINE?&lt;br /&gt;
* does the document list appear to match the intended release?&lt;br /&gt;
&lt;br /&gt;
This is the easiest non-SQL confirmation available when direct DB access is not available onsite.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
### Method 3 — See documentation  Link TBD&lt;br /&gt;
&lt;br /&gt;
Use the documented release workflow and recovery notes.&lt;br /&gt;
&lt;br /&gt;
Key points already established:&lt;br /&gt;
&lt;br /&gt;
* ROUTINE labels live in `mw_tags`&lt;br /&gt;
* ROUTINE membership lives in `mw_tag_pages`&lt;br /&gt;
* the current approved set is `mw_approved_revs`&lt;br /&gt;
* the active selected ROUTINE is stored in `mw_customquerypage_settings`&lt;br /&gt;
* activating a ROUTINE rebuilds `mw_approved_revs`&lt;br /&gt;
* rollback is done by reactivating the previous ROUTINE&lt;br /&gt;
&lt;br /&gt;
If manual file edit and page refresh do not restore expected behavior, use the documented extension workflow and technical notes for deeper recovery.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
{{Info| Released Vesion 1.0 is available as Latest Version released Feb 26, 2026}}&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
File:CustomQueryPage-latest.tgz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Data model summary:&#039;&#039;&#039; &amp;lt;code&amp;gt;page_latest&amp;lt;/code&amp;gt; tracks the most recent edit, &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt; identifies the revision currently approved for display, and each ROUTINE snapshot in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; records which revision belongs to that release.&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
The following information can be used as an installation guide. Only download files tagged latest&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=====  OBSOLETE Pre-release =====&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
Nice to have: the Special:CustomQuerySettings page has a [Clone ROUTINE] button it should also have a [Reset] button in case I want to do it again. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; doesn&#039;t exist yet.}}&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=184</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=184"/>
		<updated>2026-03-07T02:39:31Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
{{Info| Released Vesion 1.0 is available as Latest Version released Feb 26, 2026}}&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
File:CustomQueryPage-latest.tgz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Data model summary:&#039;&#039;&#039; &amp;lt;code&amp;gt;page_latest&amp;lt;/code&amp;gt; tracks the most recent edit, &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt; identifies the revision currently approved for display, and each ROUTINE snapshot in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; records which revision belongs to that release.&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
The following information can be used as an installation guide. Only download files tagged latest&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=====  OBSOLETE Pre-release =====&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
Nice to have: the Special:CustomQuerySettings page has a [Clone ROUTINE] button it should also have a [Reset] button in case I want to do it again. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; doesn&#039;t exist yet.}}&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=183</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=183"/>
		<updated>2026-03-07T02:38:32Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
{{Info| Released Vesion 1.0 is available as Latest Version released Feb 26, 2026}}&lt;br /&gt;
[[Special:ListFiles|Uploaded Files]]&lt;br /&gt;
&lt;br /&gt;
File:CustomQueryPage-latest.tgz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Data model summary:&#039;&#039;&#039; &amp;lt;code&amp;gt;page_latest&amp;lt;/code&amp;gt; tracks the most recent edit, &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt; identifies the revision currently approved for display, and each ROUTINE snapshot in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; records which revision belongs to that release.&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
The following information can be used as an installation guide. Only download files tagged latest&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=====  OBSOLETE Pre-release =====&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
Nice to have: the Special:CustomQuerySettings page has a [Clone ROUTINE] button it should also have a [Reset] button in case I want to do it again. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; doesn&#039;t exist yet.}}&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=182</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=182"/>
		<updated>2026-03-07T02:36:38Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
{{Info| Released Vesion 1.0 is available as Latest Version released Feb 26, 2026}}&lt;br /&gt;
[[Special:ListFiles|Uploaded Files]]&lt;br /&gt;
&lt;br /&gt;
File:CustomQueryPage-latest.tgz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Data model summary:&#039;&#039;&#039; &amp;lt;code&amp;gt;page_latest&amp;lt;/code&amp;gt; tracks the most recent edit, &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt; identifies the revision currently approved for display, and each ROUTINE snapshot in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; records which revision belongs to that release.&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;ToDo: Document the location of the uploaded file Version 1.0&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=====  OBSOLETE Pre-release =====&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
Nice to have: the Special:CustomQuerySettings page has a [Clone ROUTINE] button it should also have a [Reset] button in case I want to do it again. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[:File:CustomQueryPage-latest.tgz|CustomQueryPage – latest deployment bundle]]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; doesn&#039;t exist yet.}}&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=181</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=181"/>
		<updated>2026-03-07T02:26:02Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
{{Info| Released Vesion 1.0 is available as Latest Version released Feb 26, 2026}}&lt;br /&gt;
[[Special:ListFiles|Uploaded Files]]&lt;br /&gt;
&lt;br /&gt;
File:CustomQueryPage-latest.tgz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Data model summary:&#039;&#039;&#039; &amp;lt;code&amp;gt;page_latest&amp;lt;/code&amp;gt; tracks the most recent edit, &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt; identifies the revision currently approved for display, and each ROUTINE snapshot in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; records which revision belongs to that release.&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;ToDo: Document the location of the uploaded file Version 1.0&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=====  OBSOLETE Pre-release =====&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
Nice to have: the Special:CustomQuerySettings page has a [Clone ROUTINE] button it should also have a [Reset] button in case I want to do it again. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; doesn&#039;t exist yet.}}&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=180</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=180"/>
		<updated>2026-03-07T02:24:07Z</updated>

		<summary type="html">&lt;p&gt;Tux: /* OBSOLETE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
{{Tip|Latest Version released Feb 26, 2026}}&lt;br /&gt;
[[Special:ListFiles|Uploaded Files]]&lt;br /&gt;
&lt;br /&gt;
File:CustomQueryPage-latest.tgz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Data model summary:&#039;&#039;&#039; &amp;lt;code&amp;gt;page_latest&amp;lt;/code&amp;gt; tracks the most recent edit, &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt; identifies the revision currently approved for display, and each ROUTINE snapshot in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; records which revision belongs to that release.&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;ToDo: Document the location of the uploaded file Version 1.0&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=====  OBSOLETE Pre-release =====&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
Nice to have: the Special:CustomQuerySettings page has a [Clone ROUTINE] button it should also have a [Reset] button in case I want to do it again. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; doesn&#039;t exist yet.}}&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=179</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=179"/>
		<updated>2026-03-07T02:23:28Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
{{Tip|Latest Version released Feb 26, 2026}}&lt;br /&gt;
[[Special:ListFiles|Uploaded Files]]&lt;br /&gt;
&lt;br /&gt;
File:CustomQueryPage-latest.tgz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Data model summary:&#039;&#039;&#039; &amp;lt;code&amp;gt;page_latest&amp;lt;/code&amp;gt; tracks the most recent edit, &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt; identifies the revision currently approved for display, and each ROUTINE snapshot in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; records which revision belongs to that release.&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;ToDo: Document the location of the uploaded file Version 1.0&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=====  OBSOLETE =====&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
Nice to have: the Special:CustomQuerySettings page has a [Clone ROUTINE] button it should also have a [Reset] button in case I want to do it again. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; doesn&#039;t exist yet.}}&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=MediaWiki:Sidebar&amp;diff=178</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=MediaWiki:Sidebar&amp;diff=178"/>
		<updated>2026-03-07T01:48:50Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** Definitions|Definitions&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** Rs2|rs2&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
** MediaWiki_Tips|MW for the Sh1re&lt;br /&gt;
** Special:ListFiles|Uploaded Files&lt;br /&gt;
** Special:Upload|Upload Files&lt;br /&gt;
** MediaWiki:Sidebar|MediaWiki Sidebar&lt;br /&gt;
** Special:AllPages/Template:|Templates&lt;br /&gt;
** purge-main|page purges&lt;br /&gt;
&lt;br /&gt;
deployment&lt;br /&gt;
* Special:Upload|Upload Package&lt;br /&gt;
* Special:ListFiles|Deployment Files&lt;br /&gt;
&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Now you can&amp;lt;/h3&amp;gt; &lt;br /&gt;
&amp;lt;p&amp;gt;This one was different&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;** MediaWiki:Sidebar|MediaWiki Sidebar&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Link to other MediaWiki: pages (like MediaWiki:Common.css, MediaWiki:Mainpage-description), just remember to include the full namespace like MediaWiki:Mainpage-description &amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=MediaWiki:Sidebar&amp;diff=177</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=MediaWiki:Sidebar&amp;diff=177"/>
		<updated>2026-03-07T01:42:43Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** Definitions|Definitions&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** Rs2|rs2&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
** MediaWiki_Tips|MW for the Sh1re&lt;br /&gt;
** Special:ListFiles|Uploaded Files&lt;br /&gt;
** MediaWiki:Sidebar|MediaWiki Sidebar&lt;br /&gt;
** Special:AllPages/Template:|Templates&lt;br /&gt;
** purge-main|page purges&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Now you can&amp;lt;/h3&amp;gt; &lt;br /&gt;
&amp;lt;p&amp;gt;This one was different&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;** MediaWiki:Sidebar|MediaWiki Sidebar&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Link to other MediaWiki: pages (like MediaWiki:Common.css, MediaWiki:Mainpage-description), just remember to include the full namespace like MediaWiki:Mainpage-description &amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=MediaWiki:Sidebar&amp;diff=176</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=MediaWiki:Sidebar&amp;diff=176"/>
		<updated>2026-03-07T01:39:25Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** Definitions|Definitions&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** Rs2|rs2&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
** MediaWiki_Tips|MW for the Sh1re&lt;br /&gt;
** listfiles|Uploaded Files&lt;br /&gt;
** MediaWiki:Sidebar|MediaWiki Sidebar&lt;br /&gt;
** Special:AllPages/Template:|Templates&lt;br /&gt;
** purge-main|page purges&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Now you can&amp;lt;/h3&amp;gt; &lt;br /&gt;
&amp;lt;p&amp;gt;This one was different&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;** MediaWiki:Sidebar|MediaWiki Sidebar&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Link to other MediaWiki: pages (like MediaWiki:Common.css, MediaWiki:Mainpage-description), just remember to include the full namespace like MediaWiki:Mainpage-description &amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=175</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=175"/>
		<updated>2026-03-07T01:34:06Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
{{Tip|Latest Version released Feb 26, 2026}}&lt;br /&gt;
[[Special:ListFiles|Uploaded Files]]&lt;br /&gt;
&lt;br /&gt;
File:CustomQueryPage-latest.tgz&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;ToDo: Document the location of the uploaded file Version 1.0&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039; This version is missing one critical feature. It is now obsolete. This is pre-release. &#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039; The revision ID does not appear to be updated on the documents that have been updated for this ROUTINE release. &lt;br /&gt;
All the docs are tagged with the new release, but we have to do a refresh first so the docs that have been updated --- and approved display the &#039;&#039;&#039;&#039;&#039;updated rel_id&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
Be sure to only take revid from the Source of Truth itself: mw_revision&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
Nice to have: the Special:CustomQuerySettings page has a [Clone ROUTINE] button it should also have a [Reset] button in case I want to do it again. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; doesn&#039;t exist yet.}}&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=174</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=174"/>
		<updated>2026-03-07T01:33:38Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Tip|Latest Version released Feb 26, 2026}}&lt;br /&gt;
&lt;br /&gt;
File:CustomQueryPage-latest.tgz&lt;br /&gt;
&lt;br /&gt;
[[Special:ListFiles|Uploaded Files]]&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;ToDo: Document the location of the uploaded file Version 1.0&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039; This version is missing one critical feature. It is now obsolete. This is pre-release. &#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039; The revision ID does not appear to be updated on the documents that have been updated for this ROUTINE release. &lt;br /&gt;
All the docs are tagged with the new release, but we have to do a refresh first so the docs that have been updated --- and approved display the &#039;&#039;&#039;&#039;&#039;updated rel_id&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
Be sure to only take revid from the Source of Truth itself: mw_revision&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
Nice to have: the Special:CustomQuerySettings page has a [Clone ROUTINE] button it should also have a [Reset] button in case I want to do it again. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; doesn&#039;t exist yet.}}&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=ROUTINE-Data-Model&amp;diff=173</id>
		<title>ROUTINE-Data-Model</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=ROUTINE-Data-Model&amp;diff=173"/>
		<updated>2026-03-07T01:27:41Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== TL;DR – ROUTINE Release Model ==&lt;br /&gt;
&lt;br /&gt;
ROUTINE releases are defined entirely by two tables:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mw_tags&lt;br /&gt;
mw_tag_pages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;mw_tags.tag_id&amp;lt;/code&amp;gt; stores the ROUTINE label (for example &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; maps each ROUTINE to the exact page revision that belongs to that release&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tag_id      → release label&lt;br /&gt;
tag_page    → page_id&lt;br /&gt;
tag_rev     → approved revision for that release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Everything else is derived.&lt;br /&gt;
&lt;br /&gt;
=== Source of truth ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mw_tags&lt;br /&gt;
mw_tag_pages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Supporting wiki data ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mw_page&lt;br /&gt;
mw_revision&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Derived runtime table ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mw_approved_revs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt; is not migration data and can always be regenerated from the ROUTINE snapshot.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== ROUTINE Data Relationships (Overview) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Table&lt;br /&gt;
! Role&lt;br /&gt;
! Key Fields&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;mw_tags&#039;&#039;&#039;&lt;br /&gt;
| Defines each ROUTINE release label&lt;br /&gt;
| &amp;lt;code&amp;gt;tag_id&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;publish&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;locked&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;deleted&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;comment&amp;lt;/code&amp;gt;&lt;br /&gt;
| Example: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;mw_tag_pages&#039;&#039;&#039;&lt;br /&gt;
| Release snapshot mapping pages to revisions&lt;br /&gt;
| &amp;lt;code&amp;gt;tag_id&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;tag_page&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;tag_rev&amp;lt;/code&amp;gt;&lt;br /&gt;
| Defines exactly which revision belongs to a ROUTINE release&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;mw_revision&#039;&#039;&#039;&lt;br /&gt;
| Stores revision history&lt;br /&gt;
| &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;rev_page&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;rev_timestamp&amp;lt;/code&amp;gt;&lt;br /&gt;
| Each revision belongs to a page&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;mw_page&#039;&#039;&#039;&lt;br /&gt;
| Page identity and metadata&lt;br /&gt;
| &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;page_namespace&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;page_title&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;page_latest&amp;lt;/code&amp;gt;&lt;br /&gt;
| Used for display and navigation&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;mw_approved_revs&#039;&#039;&#039;&lt;br /&gt;
| Runtime projection used by ApprovedRevs&lt;br /&gt;
| &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;approver_id&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;approval_date&amp;lt;/code&amp;gt;&lt;br /&gt;
| Derived table rebuilt during ROUTINE activation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Data Flow ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mw_tags&lt;br /&gt;
   ↓&lt;br /&gt;
mw_tag_pages&lt;br /&gt;
   ↓&lt;br /&gt;
mw_revision&lt;br /&gt;
   ↓&lt;br /&gt;
mw_page&lt;br /&gt;
&lt;br /&gt;
Activation rebuilds:&lt;br /&gt;
&lt;br /&gt;
mw_tag_pages → mw_revision → mw_approved_revs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Important Principle ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The authoritative ROUTINE snapshot lives in:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mw_tags + mw_tag_pages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Everything else can be regenerated.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Administrator Rule ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do not edit &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt; manually.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If something looks wrong in ApprovedRevs:&lt;br /&gt;
&lt;br /&gt;
# Activate the correct ROUTINE tag.&lt;br /&gt;
# Allow the system to rebuild &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt; from the ROUTINE snapshot.&lt;br /&gt;
&lt;br /&gt;
This guarantees consistency between the release label and approved revisions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Operational Behavior ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Activate ROUTINE&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ROUTINE tag selected&lt;br /&gt;
      ↓&lt;br /&gt;
mw_tag_pages snapshot identified&lt;br /&gt;
      ↓&lt;br /&gt;
mw_approved_revs rebuilt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rollback&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Activate older ROUTINE tag&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Approved revisions immediately revert to that snapshot.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Key Insight (Breakthrough) ==&lt;br /&gt;
&lt;br /&gt;
The ROUTINE system does &#039;&#039;&#039;not&#039;&#039;&#039; store approval history in &amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Instead it stores the release snapshot in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mw_tag_pages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That snapshot defines exactly which revision of each page belongs to a release.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt; is only a runtime projection used by the ApprovedRevs extension.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Safe Test Dataset ==&lt;br /&gt;
&lt;br /&gt;
To build an offsite development stub you only need:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mw_tags&lt;br /&gt;
mw_tag_pages&lt;br /&gt;
mw_page&lt;br /&gt;
mw_revision&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt; can be empty and regenerated during activation.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== One Sentence Summary ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ROUTINE releases are simply named snapshots of page revisions stored in &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Everything else can be rebuilt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== ROUTINE Data Model and Test Stub Notes ==&lt;br /&gt;
&lt;br /&gt;
These notes describe the data structures used by the ROUTINE workflow in MediaWiki and how to construct a reusable development stub dataset for offsite work.&lt;br /&gt;
&lt;br /&gt;
The goal is to preserve the important relationships between ROUTINE labels, pages, and revisions without requiring production data.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 1. Authoritative ROUTINE Data ==&lt;br /&gt;
&lt;br /&gt;
The authoritative release mapping lives in two tables.&lt;br /&gt;
&lt;br /&gt;
=== mw_tags ===&lt;br /&gt;
&lt;br /&gt;
Defines each ROUTINE label.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field&lt;br /&gt;
! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| tag_id&lt;br /&gt;
| ROUTINE identifier (for example ROUTINE_4.110)&lt;br /&gt;
|-&lt;br /&gt;
| publish&lt;br /&gt;
| Indicates whether the tag is considered published&lt;br /&gt;
|-&lt;br /&gt;
| locked&lt;br /&gt;
| Prevents edits to the tag&lt;br /&gt;
|-&lt;br /&gt;
| deleted&lt;br /&gt;
| Soft delete flag&lt;br /&gt;
|-&lt;br /&gt;
| comment&lt;br /&gt;
| Optional deployment comment&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Important note:&lt;br /&gt;
&lt;br /&gt;
In this system the ROUTINE identifier is stored in &#039;&#039;&#039;tag_id&#039;&#039;&#039;, not &amp;lt;code&amp;gt;tag_name&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
All extension logic joins on:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mw_tags.tag_id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example values:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ROUTINE_4.110&lt;br /&gt;
ROUTINE_4.111&lt;br /&gt;
ROUTINE_4.112&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== mw_tag_pages ===&lt;br /&gt;
&lt;br /&gt;
Defines which revision of each page belongs to a ROUTINE release.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field&lt;br /&gt;
! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| tag_id&lt;br /&gt;
| ROUTINE label&lt;br /&gt;
|-&lt;br /&gt;
| tag_page&lt;br /&gt;
| Page ID&lt;br /&gt;
|-&lt;br /&gt;
| tag_rev&lt;br /&gt;
| Approved revision ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This table represents the &#039;&#039;&#039;release snapshot&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! tag_id&lt;br /&gt;
! tag_page&lt;br /&gt;
! tag_rev&lt;br /&gt;
|-&lt;br /&gt;
| ROUTINE_4.110&lt;br /&gt;
| 101&lt;br /&gt;
| 5001&lt;br /&gt;
|-&lt;br /&gt;
| ROUTINE_4.110&lt;br /&gt;
| 102&lt;br /&gt;
| 5002&lt;br /&gt;
|-&lt;br /&gt;
| ROUTINE_4.111&lt;br /&gt;
| 101&lt;br /&gt;
| 5001&lt;br /&gt;
|-&lt;br /&gt;
| ROUTINE_4.111&lt;br /&gt;
| 102&lt;br /&gt;
| 5009&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This means:&lt;br /&gt;
&lt;br /&gt;
* page 101 did not change between releases&lt;br /&gt;
* page 102 received a new revision in 4.111&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 2. Supporting MediaWiki Core Data ==&lt;br /&gt;
&lt;br /&gt;
The ROUTINE workflow relies on normal MediaWiki tables.&lt;br /&gt;
&lt;br /&gt;
=== mw_page ===&lt;br /&gt;
&lt;br /&gt;
Identifies pages.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field&lt;br /&gt;
! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| page_id&lt;br /&gt;
| Primary page identifier&lt;br /&gt;
|-&lt;br /&gt;
| page_namespace&lt;br /&gt;
| Namespace&lt;br /&gt;
|-&lt;br /&gt;
| page_title&lt;br /&gt;
| Page title&lt;br /&gt;
|-&lt;br /&gt;
| page_latest&lt;br /&gt;
| Current revision ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Relationship:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mw_revision.rev_page = mw_page.page_id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== mw_revision ===&lt;br /&gt;
&lt;br /&gt;
Stores revision history.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field&lt;br /&gt;
! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| rev_id&lt;br /&gt;
| Revision ID&lt;br /&gt;
|-&lt;br /&gt;
| rev_page&lt;br /&gt;
| Page ID&lt;br /&gt;
|-&lt;br /&gt;
| rev_timestamp&lt;br /&gt;
| Revision timestamp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Relationship used by ROUTINE logic:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mw_tag_pages.tag_rev = mw_revision.rev_id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 3. Derived Runtime Table ==&lt;br /&gt;
&lt;br /&gt;
=== mw_approved_revs ===&lt;br /&gt;
&lt;br /&gt;
This table is &#039;&#039;&#039;not&#039;&#039;&#039; part of the migrated ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
It is a runtime projection used by the ApprovedRevs extension.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field&lt;br /&gt;
! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| page_id&lt;br /&gt;
| Page identifier&lt;br /&gt;
|-&lt;br /&gt;
| rev_id&lt;br /&gt;
| Approved revision&lt;br /&gt;
|-&lt;br /&gt;
| approver_id&lt;br /&gt;
| User who approved&lt;br /&gt;
|-&lt;br /&gt;
| approval_date&lt;br /&gt;
| Approval timestamp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Important constraint:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
page_id UNIQUE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only one approved revision per page can exist at a time.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Important Operational Insight ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mw_approved_revs&amp;lt;/code&amp;gt; was not included in the ROUTINE migration.&lt;br /&gt;
&lt;br /&gt;
On the sh0re environment the table still existed only because the environment was not dropped during migration.&lt;br /&gt;
&lt;br /&gt;
Therefore:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;mw_approved_revs should be considered derived state.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It can always be rebuilt from:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mw_tags&lt;br /&gt;
mw_tag_pages&lt;br /&gt;
mw_revision&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Final Operational Principle ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;source of truth&#039;&#039;&#039; for ROUTINE releases is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mw_tags + mw_tag_pages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Everything else can be regenerated.&lt;br /&gt;
&lt;br /&gt;
This makes rollback, cloning, and importer workflows safe and predictable.&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
This version will render cleanly in MediaWiki because it uses:&lt;br /&gt;
&lt;br /&gt;
* `== headings ==`&lt;br /&gt;
* `{| class=&amp;quot;wikitable&amp;quot; |}` tables&lt;br /&gt;
* `&amp;lt;pre&amp;gt;` blocks instead of ``` fences&lt;br /&gt;
* `&amp;lt;code&amp;gt;` inline formatting&lt;br /&gt;
&lt;br /&gt;
---&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=ROUTINE-Data-Model&amp;diff=172</id>
		<title>ROUTINE-Data-Model</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=ROUTINE-Data-Model&amp;diff=172"/>
		<updated>2026-03-07T01:21:56Z</updated>

		<summary type="html">&lt;p&gt;Tux: Release notes with Version 1 created&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Good idea. A TL;DR at the top saves future-you (and Simon) from rereading the whole document.&lt;br /&gt;
&lt;br /&gt;
Here’s a clean one you can drop **at the very top of the notes**.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
# TL;DR – ROUTINE Release Model&lt;br /&gt;
&lt;br /&gt;
ROUTINE releases are defined entirely by **two tables**:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
mw_tags&lt;br /&gt;
mw_tag_pages&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
* `mw_tags.tag_id` stores the ROUTINE label (e.g. `ROUTINE_4.110`)&lt;br /&gt;
* `mw_tag_pages` maps each ROUTINE to the **exact page revision** that belongs to that release&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
tag_id      → release label&lt;br /&gt;
tag_page    → page_id&lt;br /&gt;
tag_rev     → approved revision for that release&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
Everything else is derived.&lt;br /&gt;
&lt;br /&gt;
### Source of truth&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
mw_tags&lt;br /&gt;
mw_tag_pages&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
### Supporting wiki data&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
mw_page&lt;br /&gt;
mw_revision&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
### Derived runtime table&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
mw_approved_revs&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
`mw_approved_revs` is **not migration data** and can always be regenerated from the ROUTINE snapshot.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
# Operational Behavior&lt;br /&gt;
&lt;br /&gt;
**Activate ROUTINE**&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
ROUTINE tag selected&lt;br /&gt;
      ↓&lt;br /&gt;
mw_tag_pages snapshot identified&lt;br /&gt;
      ↓&lt;br /&gt;
mw_approved_revs rebuilt&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
**Rollback**&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
Activate older ROUTINE tag&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
Approved revisions immediately revert to that snapshot.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
# Key Insight (Breakthrough)&lt;br /&gt;
&lt;br /&gt;
The ROUTINE system does **not store approval history in mw_approved_revs**.&lt;br /&gt;
&lt;br /&gt;
Instead it stores the **release snapshot** in:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
mw_tag_pages&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
That snapshot defines exactly which revision of each page belongs to a release.&lt;br /&gt;
&lt;br /&gt;
`mw_approved_revs` is only a **runtime projection** used by the ApprovedRevs extension.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
# Safe Test Dataset&lt;br /&gt;
&lt;br /&gt;
To build an offsite development stub you only need:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
mw_tags&lt;br /&gt;
mw_tag_pages&lt;br /&gt;
mw_page&lt;br /&gt;
mw_revision&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
`mw_approved_revs` can be empty and regenerated during activation.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
# One Sentence Summary&lt;br /&gt;
&lt;br /&gt;
**ROUTINE releases are simply named snapshots of page revisions stored in `mw_tag_pages`.**&lt;br /&gt;
&lt;br /&gt;
Everything else can be rebuilt.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
If you&#039;d like, I can also give you a **very small ASCII diagram of the data relationships** that fits on one screen. It&#039;s surprisingly helpful when someone new inherits the system (Simon in particular).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
# ROUTINE Data Model and Test Stub Notes&lt;br /&gt;
&lt;br /&gt;
These notes describe the data structures used by the ROUTINE workflow in MediaWiki and how to construct a reusable development stub dataset for offsite work.&lt;br /&gt;
&lt;br /&gt;
The goal is to preserve the important relationships between ROUTINE labels, pages, and revisions without requiring production data.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
# 1. Authoritative ROUTINE Data&lt;br /&gt;
&lt;br /&gt;
The authoritative release mapping lives in two tables.&lt;br /&gt;
&lt;br /&gt;
## `mw_tags`&lt;br /&gt;
&lt;br /&gt;
Defines each ROUTINE label.&lt;br /&gt;
&lt;br /&gt;
Example fields:&lt;br /&gt;
&lt;br /&gt;
| Field     | Purpose                                           |&lt;br /&gt;
| --------- | ------------------------------------------------- |&lt;br /&gt;
| `tag_id`  | ROUTINE identifier (e.g. `ROUTINE_4.110`)         |&lt;br /&gt;
| `publish` | Indicates whether the tag is considered published |&lt;br /&gt;
| `locked`  | Prevents edits to the tag                         |&lt;br /&gt;
| `deleted` | Soft delete flag                                  |&lt;br /&gt;
| `comment` | Optional deployment comment                       |&lt;br /&gt;
&lt;br /&gt;
Important note:&lt;br /&gt;
&lt;br /&gt;
In this system the ROUTINE identifier is stored in **`tag_id`**, not `tag_name`.&lt;br /&gt;
&lt;br /&gt;
All extension logic joins on:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
mw_tags.tag_id&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
Example values:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
ROUTINE_4.110&lt;br /&gt;
ROUTINE_4.111&lt;br /&gt;
ROUTINE_4.112&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## `mw_tag_pages`&lt;br /&gt;
&lt;br /&gt;
Defines which revision of each page belongs to a ROUTINE release.&lt;br /&gt;
&lt;br /&gt;
Fields:&lt;br /&gt;
&lt;br /&gt;
| Field      | Purpose              |&lt;br /&gt;
| ---------- | -------------------- |&lt;br /&gt;
| `tag_id`   | ROUTINE label        |&lt;br /&gt;
| `tag_page` | Page ID              |&lt;br /&gt;
| `tag_rev`  | Approved revision ID |&lt;br /&gt;
&lt;br /&gt;
This table represents the **release snapshot**.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
| tag_id        | tag_page | tag_rev |&lt;br /&gt;
| ------------- | -------- | ------- |&lt;br /&gt;
| ROUTINE_4.110 | 101      | 5001    |&lt;br /&gt;
| ROUTINE_4.110 | 102      | 5002    |&lt;br /&gt;
| ROUTINE_4.111 | 101      | 5001    |&lt;br /&gt;
| ROUTINE_4.111 | 102      | 5009    |&lt;br /&gt;
&lt;br /&gt;
This means:&lt;br /&gt;
&lt;br /&gt;
* page 101 did not change between releases&lt;br /&gt;
* page 102 received a new revision in 4.111&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
# 2. Supporting MediaWiki Core Data&lt;br /&gt;
&lt;br /&gt;
The ROUTINE workflow relies on normal MediaWiki tables.&lt;br /&gt;
&lt;br /&gt;
## `mw_page`&lt;br /&gt;
&lt;br /&gt;
Identifies pages.&lt;br /&gt;
&lt;br /&gt;
Important fields:&lt;br /&gt;
&lt;br /&gt;
| Field            | Purpose                 |&lt;br /&gt;
| ---------------- | ----------------------- |&lt;br /&gt;
| `page_id`        | Primary page identifier |&lt;br /&gt;
| `page_namespace` | Namespace               |&lt;br /&gt;
| `page_title`     | Page title              |&lt;br /&gt;
| `page_latest`    | Current revision ID     |&lt;br /&gt;
&lt;br /&gt;
Relationship:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
mw_revision.rev_page = mw_page.page_id&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## `mw_revision`&lt;br /&gt;
&lt;br /&gt;
Stores revision history.&lt;br /&gt;
&lt;br /&gt;
Important fields:&lt;br /&gt;
&lt;br /&gt;
| Field           | Purpose            |&lt;br /&gt;
| --------------- | ------------------ |&lt;br /&gt;
| `rev_id`        | Revision ID        |&lt;br /&gt;
| `rev_page`      | Page ID            |&lt;br /&gt;
| `rev_timestamp` | Revision timestamp |&lt;br /&gt;
&lt;br /&gt;
Relationship used by ROUTINE logic:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
mw_tag_pages.tag_rev = mw_revision.rev_id&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
# 3. Derived Runtime Table&lt;br /&gt;
&lt;br /&gt;
## `mw_approved_revs`&lt;br /&gt;
&lt;br /&gt;
This table is **not part of the migrated ROUTINE data**.&lt;br /&gt;
&lt;br /&gt;
It is a runtime projection used by the **ApprovedRevs extension**.&lt;br /&gt;
&lt;br /&gt;
Schema:&lt;br /&gt;
&lt;br /&gt;
| Field           | Purpose            |&lt;br /&gt;
| --------------- | ------------------ |&lt;br /&gt;
| `page_id`       | Page identifier    |&lt;br /&gt;
| `rev_id`        | Approved revision  |&lt;br /&gt;
| `approver_id`   | User who approved  |&lt;br /&gt;
| `approval_date` | Approval timestamp |&lt;br /&gt;
&lt;br /&gt;
Important constraint:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
page_id UNIQUE&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
Only one approved revision per page can exist at a time.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
# Important Operational Insight&lt;br /&gt;
&lt;br /&gt;
`mw_approved_revs` was **not included in the ROUTINE migration**.&lt;br /&gt;
&lt;br /&gt;
On the sh0re environment the table still existed only because the environment was not dropped during migration.&lt;br /&gt;
&lt;br /&gt;
Therefore:&lt;br /&gt;
&lt;br /&gt;
**`mw_approved_revs` should be considered derived state.**&lt;br /&gt;
&lt;br /&gt;
It can always be rebuilt from:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
mw_tags&lt;br /&gt;
mw_tag_pages&lt;br /&gt;
mw_revision&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
# 4. Activation Workflow&lt;br /&gt;
&lt;br /&gt;
When a ROUTINE tag is activated:&lt;br /&gt;
&lt;br /&gt;
1. The selected ROUTINE label is verified in `mw_tags`.&lt;br /&gt;
2. All pages belonging to that tag are identified via `mw_tag_pages`.&lt;br /&gt;
3. `mw_approved_revs` is refreshed to match the snapshot.&lt;br /&gt;
&lt;br /&gt;
Conceptually:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
mw_tag_pages → mw_revision → mw_approved_revs&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
Rollback is therefore simple:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
activate ROUTINE_4.110&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
and the approved revisions revert to that snapshot.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
# 5. Reusable Test Dataset&lt;br /&gt;
&lt;br /&gt;
A reusable development stub should include:&lt;br /&gt;
&lt;br /&gt;
### Required tables&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
mw_tags&lt;br /&gt;
mw_tag_pages&lt;br /&gt;
mw_page&lt;br /&gt;
mw_revision&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
### Optional&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
mw_approved_revs (empty)&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
# Recommended Stub Structure&lt;br /&gt;
&lt;br /&gt;
A useful small dataset contains:&lt;br /&gt;
&lt;br /&gt;
| Item         | Suggested Count |&lt;br /&gt;
| ------------ | --------------- |&lt;br /&gt;
| ROUTINE tags | 3               |&lt;br /&gt;
| pages        | 5–8             |&lt;br /&gt;
| revisions    | 6–10            |&lt;br /&gt;
| tag mappings | 8–15            |&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
# Example Release Story&lt;br /&gt;
&lt;br /&gt;
### ROUTINE_4.110&lt;br /&gt;
&lt;br /&gt;
Pages:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
Startup_Procedure&lt;br /&gt;
Shutdown_Procedure&lt;br /&gt;
Network_Check&lt;br /&gt;
Incident_Escalation&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
### ROUTINE_4.111&lt;br /&gt;
&lt;br /&gt;
Pages:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
Startup_Procedure (unchanged)&lt;br /&gt;
Shutdown_Procedure (new revision)&lt;br /&gt;
Backup_Verification (new page)&lt;br /&gt;
Incident_Escalation (unchanged)&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
This creates realistic test scenarios:&lt;br /&gt;
&lt;br /&gt;
| Scenario       | Purpose                |&lt;br /&gt;
| -------------- | ---------------------- |&lt;br /&gt;
| unchanged page | verify revision reuse  |&lt;br /&gt;
| updated page   | verify revision update |&lt;br /&gt;
| removed page   | verify exclusion       |&lt;br /&gt;
| new page       | verify clone/import    |&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
# 6. Minimal Fields That Must Be Accurate&lt;br /&gt;
&lt;br /&gt;
The following identifiers must remain correct in any stub dataset:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
mw_tags.tag_id&lt;br /&gt;
mw_tag_pages.tag_id&lt;br /&gt;
mw_tag_pages.tag_page&lt;br /&gt;
mw_tag_pages.tag_rev&lt;br /&gt;
mw_page.page_id&lt;br /&gt;
mw_page.page_title&lt;br /&gt;
mw_revision.rev_id&lt;br /&gt;
mw_revision.rev_page&lt;br /&gt;
mw_revision.rev_timestamp&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
Everything else may be dummy data if necessary.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
# 7. Future Importer Design&lt;br /&gt;
&lt;br /&gt;
If a JSON/API importer is later introduced, its logical structure should mirror the release mapping.&lt;br /&gt;
&lt;br /&gt;
Example conceptual payload:&lt;br /&gt;
&lt;br /&gt;
```json&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;tag_id&amp;quot;: &amp;quot;ROUTINE_4.112&amp;quot;,&lt;br /&gt;
  &amp;quot;pages&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;page_id&amp;quot;: 101,&lt;br /&gt;
      &amp;quot;rev_id&amp;quot;: 5001&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;page_id&amp;quot;: 102,&lt;br /&gt;
      &amp;quot;rev_id&amp;quot;: 5009&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
This maps directly to `mw_tag_pages`.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
# Final Operational Principle&lt;br /&gt;
&lt;br /&gt;
The **source of truth** for ROUTINE releases is:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
mw_tags + mw_tag_pages&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
Everything else can be regenerated.&lt;br /&gt;
&lt;br /&gt;
This makes rollback, cloning, and importer workflows safe and predictable.&lt;br /&gt;
&lt;br /&gt;
---&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=171</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=171"/>
		<updated>2026-03-07T00:47:21Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Tip|Latest Version released Feb 26, 2026}}&lt;br /&gt;
&lt;br /&gt;
File:CustomQueryPage-latest.tgz&lt;br /&gt;
&lt;br /&gt;
* Download Latest: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;ToDo: Document the location of the uploaded file Version 1.0&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039; This version is missing one critical feature. It is now obsolete. This is pre-release. &#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039; The revision ID does not appear to be updated on the documents that have been updated for this ROUTINE release. &lt;br /&gt;
All the docs are tagged with the new release, but we have to do a refresh first so the docs that have been updated --- and approved display the &#039;&#039;&#039;&#039;&#039;updated rel_id&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
Be sure to only take revid from the Source of Truth itself: mw_revision&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
Nice to have: the Special:CustomQuerySettings page has a [Clone ROUTINE] button it should also have a [Reset] button in case I want to do it again. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; doesn&#039;t exist yet.}}&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=170</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=170"/>
		<updated>2026-03-07T00:46:23Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Version 1.0|Latest Version released Feb 26, 2026}}&lt;br /&gt;
&lt;br /&gt;
File:CustomQueryPage-latest.tgz&lt;br /&gt;
&lt;br /&gt;
* Download Latest: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;ToDo: Document the location of the uploaded file Version 1.0&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039; This version is missing one critical feature. It is now obsolete. This is pre-release. &#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039; The revision ID does not appear to be updated on the documents that have been updated for this ROUTINE release. &lt;br /&gt;
All the docs are tagged with the new release, but we have to do a refresh first so the docs that have been updated --- and approved display the &#039;&#039;&#039;&#039;&#039;updated rel_id&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
Be sure to only take revid from the Source of Truth itself: mw_revision&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
Nice to have: the Special:CustomQuerySettings page has a [Clone ROUTINE] button it should also have a [Reset] button in case I want to do it again. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; doesn&#039;t exist yet.}}&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=169</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=169"/>
		<updated>2026-03-07T00:43:30Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Latest Version released Feb 26, 2026&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Version 1.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File:CustomQueryPage-latest.tgz&lt;br /&gt;
&lt;br /&gt;
* Download Latest: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;ToDo: Document the location of the uploaded file Version 1.0&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039; This version is missing one critical feature. It is now obsolete. This is pre-release. &#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039; The revision ID does not appear to be updated on the documents that have been updated for this ROUTINE release. &lt;br /&gt;
All the docs are tagged with the new release, but we have to do a refresh first so the docs that have been updated --- and approved display the &#039;&#039;&#039;&#039;&#039;updated rel_id&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
Be sure to only take revid from the Source of Truth itself: mw_revision&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
Nice to have: the Special:CustomQuerySettings page has a [Clone ROUTINE] button it should also have a [Reset] button in case I want to do it again. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; doesn&#039;t exist yet.}}&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=168</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=168"/>
		<updated>2026-03-07T00:18:43Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;ToDo: Document the location of the uploaded file Version 1.0&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039; This version is missing one critical feature. It is now obsolete. This is pre-release. &#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039; The revision ID does not appear to be updated on the documents that have been updated for this ROUTINE release. &lt;br /&gt;
All the docs are tagged with the new release, but we have to do a refresh first so the docs that have been updated --- and approved display the &#039;&#039;&#039;&#039;&#039;updated rel_id&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
Be sure to only take revid from the Source of Truth itself: mw_revision&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
Nice to have: the Special:CustomQuerySettings page has a [Clone ROUTINE] button it should also have a [Reset] button in case I want to do it again. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; doesn&#039;t exist yet.}}&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=167</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=167"/>
		<updated>2026-03-07T00:17:55Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;ToDo: Document the location of the uploaded file Version 1.0&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039; This version is missing one critical feature. It is now obsolete. This is pre-release. &#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039; The revision ID does not appear to be updated on the documents that have been updated for this ROUTINE release. &lt;br /&gt;
All the docs are tagged with the new release, but we have to do a refresh first so the docs that have been updated --- and approved display the &#039;&#039;&#039;&#039;&#039;updated rel_id&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
Be sure to only take revid from the Source of Truth itself: mw_revision&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
Nice to have: the Special:CustomQuerySettings page has a [Clone ROUTINE] button it should also have a [Reset] button in case I want to do it again. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; doesn&#039;t exist yet.}}&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=File:CustomQueryPage-latest.tgz&amp;diff=165</id>
		<title>File:CustomQueryPage-latest.tgz</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=File:CustomQueryPage-latest.tgz&amp;diff=165"/>
		<updated>2026-03-06T22:07:19Z</updated>

		<summary type="html">&lt;p&gt;Tux: Released version 1.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Released version 1.0&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=164</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=164"/>
		<updated>2026-02-14T00:26:03Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039; This version is missing one critical feature. The revision ID does not appear to be updated on the documents that have been updated for this ROUTINE release. &lt;br /&gt;
All the docs are tagged with the new release, but we have to do a refresh first so the docs that have been updated --- and approved display the &#039;&#039;&#039;&#039;&#039;updated rel_id&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
Be sure to only take revid from the Source of Truth itself: mw_revision&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
Nice to have: the Special:CustomQuerySettings page has a [Clone ROUTINE] button it should also have a [Reset] button in case I want to do it again. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; doesn&#039;t exist yet.}}&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=MediaWiki:Sidebar&amp;diff=163</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=MediaWiki:Sidebar&amp;diff=163"/>
		<updated>2026-02-14T00:22:10Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** Definitions|Definitions&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** Rs2|rs2&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
** MediaWiki_Tips|MW for the Sh1re&lt;br /&gt;
** MediaWiki:Sidebar|MediaWiki Sidebar&lt;br /&gt;
** Special:AllPages/Template:|Templates&lt;br /&gt;
** purge-main|page purges&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Now you can&amp;lt;/h3&amp;gt; &lt;br /&gt;
&amp;lt;p&amp;gt;This one was different&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;** MediaWiki:Sidebar|MediaWiki Sidebar&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Link to other MediaWiki: pages (like MediaWiki:Common.css, MediaWiki:Mainpage-description), just remember to include the full namespace like MediaWiki:Mainpage-description &amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Definitions&amp;diff=162</id>
		<title>Definitions</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Definitions&amp;diff=162"/>
		<updated>2026-02-14T00:17:33Z</updated>

		<summary type="html">&lt;p&gt;Tux: Created page with &amp;quot;  ; AI Agents  : An AI agent is a system that autonomously performs tasks by perceiving its environment, making decisions, and taking actions to achieve specific goals. These systems can operate with limited human supervision and are designed to handle complex workflows using available tools&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
; AI Agents&lt;br /&gt;
&lt;br /&gt;
: An AI agent is a system that autonomously performs tasks by perceiving its environment, making decisions, and taking actions to achieve specific goals. These systems can operate with limited human supervision and are designed to handle complex workflows using available tools&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=161</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=161"/>
		<updated>2026-01-30T19:11:57Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039; This version is missing one critical feature. The revision ID does not appear to be updated on the documents that have been updated for this ROUTINE release. &lt;br /&gt;
All the docs are tagged with the new release, but we have to do a refresh first so the docs that have been updated --- and approved display the &#039;&#039;&#039;&#039;&#039;updated rel_id&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
Nice to have: the Special:CustomQuerySettings page has a [Clone ROUTINE] button it should also have a [Reset] button in case I want to do it again. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; doesn&#039;t exist yet.}}&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=160</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=160"/>
		<updated>2026-01-30T19:11:31Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039; This version is missing one critical feature. The revision ID does not appear to be updated on the documents that have been updated for this ROUTINE release. &lt;br /&gt;
All the docs are tagged with the new release, but we have to do a refresh first so the docs that have been updated --- and approved display the updated rel_id.&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
Nice to have: the Special:CustomQuerySettings page has a [Clone ROUTINE] button it should also have a [Reset] button in case I want to do it again. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; doesn&#039;t exist yet.}}&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=159</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Main_Page&amp;diff=159"/>
		<updated>2026-01-30T19:10:56Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
````` This version is missing one critical feature. The revision ID does not appear to be updated on the documents that have been updated for this ROUTINE release. &lt;br /&gt;
All the docs are tagged with the new release, but we have to do a refresh first so the docs that have been updated --- and approved display the updated rel_id.`````&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{Notice&lt;br /&gt;
| event_name  = Wiki launch&lt;br /&gt;
| date        = February 12th&lt;br /&gt;
| location    = Lisa&#039;s Desk &lt;br /&gt;
| description = Count down to the retirement of the efs3 server!&lt;br /&gt;
}} &lt;br /&gt;
{{{Hatnote|content is content}}}&lt;br /&gt;
&lt;br /&gt;
== Import CustomQueryPage ==&lt;br /&gt;
This install is originally intended for the ROUTINE Manuals publication workflow. That&#039;s all it does now, but hey, it&#039;s a good place to keep notes too. Did you know for MediaWiki you create a page by writing the name in the address bar? How tricky is that?&lt;br /&gt;
&lt;br /&gt;
== NOTE ==&lt;br /&gt;
Nice to have: the Special:CustomQuerySettings page has a [Clone ROUTINE] button it should also have a [Reset] button in case I want to do it again. &lt;br /&gt;
&lt;br /&gt;
== Let&#039;s Get Started ==&lt;br /&gt;
&lt;br /&gt;
* [https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz CustomQueryPage for mw1359]&lt;br /&gt;
&lt;br /&gt;
=== Installing CustomQueryPage ===&lt;br /&gt;
* Download the bundle: &amp;lt;code&amp;gt;wget https://mw.eckford.ca/downloads/CustomQueryPage-mw1359.tar.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract it into your extensions folder:&lt;br /&gt;
** &amp;lt;code&amp;gt;tar -xzf CustomQueryPage-mw1359.tar.gz -C /srv/mediawiki/extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; and add &amp;lt;code&amp;gt;wfLoadExtension( &#039;CustomQueryPage&#039; );&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Visit &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;, set the ROUTINE tag (e.g., &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;), and confirm &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Quick Start: ROUTINE Management =&lt;br /&gt;
&lt;br /&gt;
=== 1. Seed the ROUTINE in the DB ===&lt;br /&gt;
Before Lisa touches the UI, make sure the database has ROUTINE data.&lt;br /&gt;
&lt;br /&gt;
* Use the import script or manual SQL method.&lt;br /&gt;
* Required tables:&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; — one row per ROUTINE (e.g., &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt; — one row per approved page.&lt;br /&gt;
* If needed, run: &amp;lt;code&amp;gt;php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Note|Only run &amp;lt;code&amp;gt;update.php&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;mw_customquerypage_settings&amp;lt;/code&amp;gt; doesn&#039;t exist yet.}}&lt;br /&gt;
=== 2. Use the Special Page to Switch or Clone ===&lt;br /&gt;
&lt;br /&gt;
Please note that the Revision is part of this query and display. Any documents that have been approved since the last release should have a new revision and this new revision should be included in the ROUTINE_tag &lt;br /&gt;
&lt;br /&gt;
* Go to: &amp;lt;code&amp;gt;Special:CustomQuerySettings&amp;lt;/code&amp;gt;&lt;br /&gt;
* Two options:&lt;br /&gt;
** &#039;&#039;&#039;Set Active Tag&#039;&#039;&#039; — type &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;, then Save.&lt;br /&gt;
** &#039;&#039;&#039;Clone ROUTINE → New ROUTINE&#039;&#039;&#039;:&lt;br /&gt;
*** From: &amp;lt;code&amp;gt;ROUTINE_4.110&amp;lt;/code&amp;gt;&lt;br /&gt;
*** To: &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Submit → this copies rows and updates the active tag.&lt;br /&gt;
&lt;br /&gt;
=== 3. Verify the Result ===&lt;br /&gt;
&lt;br /&gt;
* Visit: &amp;lt;code&amp;gt;Special:ApprovedManuals&amp;lt;/code&amp;gt;&lt;br /&gt;
* Confirm the listing shows &amp;lt;code&amp;gt;ROUTINE_4.111&amp;lt;/code&amp;gt;&lt;br /&gt;
* Lisa can now publish or review the approved manuals.&lt;br /&gt;
* No DB access required.&lt;br /&gt;
&lt;br /&gt;
= Optional: JSON/API Importer =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re ready to skip the SQL import:&lt;br /&gt;
&lt;br /&gt;
* Define a JSON payload that includes:&lt;br /&gt;
** &amp;lt;code&amp;gt;page_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rev_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;deploy_comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wikitext&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Build a:&lt;br /&gt;
** REST endpoint, or&lt;br /&gt;
** Action API module, or&lt;br /&gt;
** Maintenance script that reads JSON&lt;br /&gt;
&lt;br /&gt;
Once defined, MediaWiki can import directly into &amp;lt;code&amp;gt;mw_tags&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mw_tag_pages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid touching the database manually if you want to adopt the JSON route. The importer will safely handle all insertions.}}&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Rs2&amp;diff=154</id>
		<title>Rs2</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Rs2&amp;diff=154"/>
		<updated>2026-01-23T21:07:59Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[File:pallette.jpg|thumb|right|150px|colour pallette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An online source of RADARSAT-2 operations data and documentation since launch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Navigation Methods&amp;lt;/h2&amp;gt;&lt;br /&gt;
{{Enhanced|From a desktop machine:}}&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://sh1rs2wikidu01.mda.ca/Main_Page &amp;lt;strong&amp;gt;R2 Wiki&amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://transferdepot.sh1rs2wikidu01.mda.ca &amp;lt;strong&amp;gt;TransferDepot &amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://sh1rs2wikidu01.mda.ca/Special:ApprovedManuals &amp;lt;strong&amp;gt;Operational Manual Procedures&amp;lt;/strong&amp;gt;]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Safe|From the Control Room and legacy machines:}}&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.81/index.php/Main_Page?useskin=monobook &amp;lt;strong&amp;gt;R2 Wiki&amp;lt;/strong&amp;gt; ] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.62/ &amp;lt;strong&amp;gt;TransferDepot&amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.81/Special:ApprovedManuals?useskin=monobook &amp;lt;strong&amp;gt;Operational Manual Procedures&amp;lt;/strong&amp;gt;] &amp;lt;/strong&amp;gt; &amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System Configuration ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MDA R2-Wiki New stuff/should read:&#039;&#039;&#039;&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Cortex|Cortex Explained:]] Mission Control &amp;amp; High level description&amp;lt;BR&amp;gt;&lt;br /&gt;
-----&lt;br /&gt;
[[MissionPriorities| Mission Priorities:]] Top Mission Priorities from SAF, Bugs and projects &amp;lt;BR&amp;gt;&lt;br /&gt;
[[Current Spacecraft Configuration| Current Spacecraft Configuration:]] Overview of current Spacecraft configuration, subsystem status and performance &amp;lt;BR&amp;gt;&lt;br /&gt;
[[System_Configuration|Ground System Configuration:]] Ground Segment SW&amp;lt;BR&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Rs2&amp;diff=153</id>
		<title>Rs2</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Rs2&amp;diff=153"/>
		<updated>2026-01-23T21:07:38Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[File:pallette.jpg|thumb|right|250px|colour pallette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An online source of RADARSAT-2 operations data and documentation since launch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Navigation Methods&amp;lt;/h2&amp;gt;&lt;br /&gt;
{{Enhanced|From a desktop machine:}}&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://sh1rs2wikidu01.mda.ca/Main_Page &amp;lt;strong&amp;gt;R2 Wiki&amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://transferdepot.sh1rs2wikidu01.mda.ca &amp;lt;strong&amp;gt;TransferDepot &amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://sh1rs2wikidu01.mda.ca/Special:ApprovedManuals &amp;lt;strong&amp;gt;Operational Manual Procedures&amp;lt;/strong&amp;gt;]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Safe|From the Control Room and legacy machines:}}&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.81/index.php/Main_Page?useskin=monobook &amp;lt;strong&amp;gt;R2 Wiki&amp;lt;/strong&amp;gt; ] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.62/ &amp;lt;strong&amp;gt;TransferDepot&amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.81/Special:ApprovedManuals?useskin=monobook &amp;lt;strong&amp;gt;Operational Manual Procedures&amp;lt;/strong&amp;gt;] &amp;lt;/strong&amp;gt; &amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System Configuration ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MDA R2-Wiki New stuff/should read:&#039;&#039;&#039;&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Cortex|Cortex Explained:]] Mission Control &amp;amp; High level description&amp;lt;BR&amp;gt;&lt;br /&gt;
-----&lt;br /&gt;
[[MissionPriorities| Mission Priorities:]] Top Mission Priorities from SAF, Bugs and projects &amp;lt;BR&amp;gt;&lt;br /&gt;
[[Current Spacecraft Configuration| Current Spacecraft Configuration:]] Overview of current Spacecraft configuration, subsystem status and performance &amp;lt;BR&amp;gt;&lt;br /&gt;
[[System_Configuration|Ground System Configuration:]] Ground Segment SW&amp;lt;BR&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Rs2&amp;diff=152</id>
		<title>Rs2</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Rs2&amp;diff=152"/>
		<updated>2026-01-23T20:41:32Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[File:pallette.jpg|thumb|right|150px|colour pallette]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An online source of RADARSAT-2 operations data and documentation since launch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Navigation Methods&amp;lt;/h2&amp;gt;&lt;br /&gt;
{{Enhanced|From a desktop machine:}}&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://sh1rs2wikidu01.mda.ca/Main_Page &amp;lt;strong&amp;gt;R2 Wiki&amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://transferdepot.sh1rs2wikidu01.mda.ca &amp;lt;strong&amp;gt;TransferDepot &amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://sh1rs2wikidu01.mda.ca/Special:ApprovedManuals &amp;lt;strong&amp;gt;Operational Manual Procedures&amp;lt;/strong&amp;gt;]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Safe|From the Control Room and legacy machines:}}&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.81/index.php/Main_Page?useskin=monobook &amp;lt;strong&amp;gt;R2 Wiki&amp;lt;/strong&amp;gt; ] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.62/ &amp;lt;strong&amp;gt;TransferDepot&amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.81/Special:ApprovedManuals?useskin=monobook &amp;lt;strong&amp;gt;Operational Manual Procedures&amp;lt;/strong&amp;gt;] &amp;lt;/strong&amp;gt; &amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System Configuration ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MDA R2-Wiki New stuff/should read:&#039;&#039;&#039;&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Cortex|Cortex Explained:]] Mission Control &amp;amp; High level description&amp;lt;BR&amp;gt;&lt;br /&gt;
-----&lt;br /&gt;
[[MissionPriorities| Mission Priorities:]] Top Mission Priorities from SAF, Bugs and projects &amp;lt;BR&amp;gt;&lt;br /&gt;
[[Current Spacecraft Configuration| Current Spacecraft Configuration:]] Overview of current Spacecraft configuration, subsystem status and performance &amp;lt;BR&amp;gt;&lt;br /&gt;
[[System_Configuration|Ground System Configuration:]] Ground Segment SW&amp;lt;BR&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Rs2&amp;diff=151</id>
		<title>Rs2</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Rs2&amp;diff=151"/>
		<updated>2026-01-23T20:41:08Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[File:pallette.jpg|thumb|left|150px|This is a caption]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An online source of RADARSAT-2 operations data and documentation since launch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Navigation Methods&amp;lt;/h2&amp;gt;&lt;br /&gt;
{{Enhanced|From a desktop machine:}}&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://sh1rs2wikidu01.mda.ca/Main_Page &amp;lt;strong&amp;gt;R2 Wiki&amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://transferdepot.sh1rs2wikidu01.mda.ca &amp;lt;strong&amp;gt;TransferDepot &amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://sh1rs2wikidu01.mda.ca/Special:ApprovedManuals &amp;lt;strong&amp;gt;Operational Manual Procedures&amp;lt;/strong&amp;gt;]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Safe|From the Control Room and legacy machines:}}&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.81/index.php/Main_Page?useskin=monobook &amp;lt;strong&amp;gt;R2 Wiki&amp;lt;/strong&amp;gt; ] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.62/ &amp;lt;strong&amp;gt;TransferDepot&amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.81/Special:ApprovedManuals?useskin=monobook &amp;lt;strong&amp;gt;Operational Manual Procedures&amp;lt;/strong&amp;gt;] &amp;lt;/strong&amp;gt; &amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System Configuration ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MDA R2-Wiki New stuff/should read:&#039;&#039;&#039;&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Cortex|Cortex Explained:]] Mission Control &amp;amp; High level description&amp;lt;BR&amp;gt;&lt;br /&gt;
-----&lt;br /&gt;
[[MissionPriorities| Mission Priorities:]] Top Mission Priorities from SAF, Bugs and projects &amp;lt;BR&amp;gt;&lt;br /&gt;
[[Current Spacecraft Configuration| Current Spacecraft Configuration:]] Overview of current Spacecraft configuration, subsystem status and performance &amp;lt;BR&amp;gt;&lt;br /&gt;
[[System_Configuration|Ground System Configuration:]] Ground Segment SW&amp;lt;BR&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Rs2&amp;diff=150</id>
		<title>Rs2</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Rs2&amp;diff=150"/>
		<updated>2026-01-23T20:38:37Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[Image: pallette.jpg  |right]]&lt;br /&gt;
&lt;br /&gt;
An online source of RADARSAT-2 operations data and documentation since launch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Navigation Methods&amp;lt;/h2&amp;gt;&lt;br /&gt;
{{Enhanced|From a desktop machine:}}&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://sh1rs2wikidu01.mda.ca/Main_Page &amp;lt;strong&amp;gt;R2 Wiki&amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://transferdepot.sh1rs2wikidu01.mda.ca &amp;lt;strong&amp;gt;TransferDepot &amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://sh1rs2wikidu01.mda.ca/Special:ApprovedManuals &amp;lt;strong&amp;gt;Operational Manual Procedures&amp;lt;/strong&amp;gt;]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Safe|From the Control Room and legacy machines:}}&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.81/index.php/Main_Page?useskin=monobook &amp;lt;strong&amp;gt;R2 Wiki&amp;lt;/strong&amp;gt; ] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.62/ &amp;lt;strong&amp;gt;TransferDepot&amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.81/Special:ApprovedManuals?useskin=monobook &amp;lt;strong&amp;gt;Operational Manual Procedures&amp;lt;/strong&amp;gt;] &amp;lt;/strong&amp;gt; &amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System Configuration ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MDA R2-Wiki New stuff/should read:&#039;&#039;&#039;&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Cortex|Cortex Explained:]] Mission Control &amp;amp; High level description&amp;lt;BR&amp;gt;&lt;br /&gt;
-----&lt;br /&gt;
[[MissionPriorities| Mission Priorities:]] Top Mission Priorities from SAF, Bugs and projects &amp;lt;BR&amp;gt;&lt;br /&gt;
[[Current Spacecraft Configuration| Current Spacecraft Configuration:]] Overview of current Spacecraft configuration, subsystem status and performance &amp;lt;BR&amp;gt;&lt;br /&gt;
[[System_Configuration|Ground System Configuration:]] Ground Segment SW&amp;lt;BR&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Rs2&amp;diff=149</id>
		<title>Rs2</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Rs2&amp;diff=149"/>
		<updated>2026-01-23T20:37:09Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An online source of RADARSAT-2 operations data and documentation since launch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Navigation Methods&amp;lt;/h2&amp;gt;&lt;br /&gt;
{{Enhanced|From a desktop machine:}}&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://sh1rs2wikidu01.mda.ca/Main_Page &amp;lt;strong&amp;gt;R2 Wiki&amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://transferdepot.sh1rs2wikidu01.mda.ca &amp;lt;strong&amp;gt;TransferDepot &amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://sh1rs2wikidu01.mda.ca/Special:ApprovedManuals &amp;lt;strong&amp;gt;Operational Manual Procedures&amp;lt;/strong&amp;gt;]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Safe|From the Control Room and legacy machines:}}&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.81/index.php/Main_Page?useskin=monobook &amp;lt;strong&amp;gt;R2 Wiki&amp;lt;/strong&amp;gt; ] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.62/ &amp;lt;strong&amp;gt;TransferDepot&amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.81/Special:ApprovedManuals?useskin=monobook &amp;lt;strong&amp;gt;Operational Manual Procedures&amp;lt;/strong&amp;gt;] &amp;lt;/strong&amp;gt; &amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System Configuration ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MDA R2-Wiki New stuff/should read:&#039;&#039;&#039;&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Cortex|Cortex Explained:]] Mission Control &amp;amp; High level description&amp;lt;BR&amp;gt;&lt;br /&gt;
-----&lt;br /&gt;
[[MissionPriorities| Mission Priorities:]] Top Mission Priorities from SAF, Bugs and projects &amp;lt;BR&amp;gt;&lt;br /&gt;
[[Current Spacecraft Configuration| Current Spacecraft Configuration:]] Overview of current Spacecraft configuration, subsystem status and performance &amp;lt;BR&amp;gt;&lt;br /&gt;
[[System_Configuration|Ground System Configuration:]] Ground Segment SW&amp;lt;BR&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Rs2&amp;diff=148</id>
		<title>Rs2</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Rs2&amp;diff=148"/>
		<updated>2026-01-23T20:32:56Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[Image: pallette.jpg  |right]]&lt;br /&gt;
&lt;br /&gt;
An online source of RADARSAT-2 operations data and documentation since launch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Navigation Methods&amp;lt;/h2&amp;gt;&lt;br /&gt;
{{Enhanced|From a desktop machine:}}&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://sh1rs2wikidu01.mda.ca/Main_Page &amp;lt;strong&amp;gt;R2 Wiki&amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://transferdepot.sh1rs2wikidu01.mda.ca &amp;lt;strong&amp;gt;TransferDepot &amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://sh1rs2wikidu01.mda.ca/Special:ApprovedManuals &amp;lt;strong&amp;gt;Operational Manual Procedures&amp;lt;/strong&amp;gt;]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Safe|From the Control Room and legacy machines:}}&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.81/index.php/Main_Page?useskin=monobook &amp;lt;strong&amp;gt;R2 Wiki&amp;lt;/strong&amp;gt; ] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.62/ &amp;lt;strong&amp;gt;TransferDepot&amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.81/Special:ApprovedManuals?useskin=monobook &amp;lt;strong&amp;gt;Operational Manual Procedures&amp;lt;/strong&amp;gt;] &amp;lt;/strong&amp;gt; &amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System Configuration ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MDA R2-Wiki New stuff/should read:&#039;&#039;&#039;&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Cortex|Cortex Explained:]] Mission Control &amp;amp; High level description&amp;lt;BR&amp;gt;&lt;br /&gt;
-----&lt;br /&gt;
[[MissionPriorities| Mission Priorities:]] Top Mission Priorities from SAF, Bugs and projects &amp;lt;BR&amp;gt;&lt;br /&gt;
[[Current Spacecraft Configuration| Current Spacecraft Configuration:]] Overview of current Spacecraft configuration, subsystem status and performance &amp;lt;BR&amp;gt;&lt;br /&gt;
[[System_Configuration|Ground System Configuration:]] Ground Segment SW&amp;lt;BR&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Rs2&amp;diff=147</id>
		<title>Rs2</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Rs2&amp;diff=147"/>
		<updated>2026-01-23T20:32:43Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An online source of RADARSAT-2 operations data and documentation since launch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Navigation Methods&amp;lt;/h2&amp;gt;&lt;br /&gt;
{{Enhanced|From a desktop machine:}}&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://sh1rs2wikidu01.mda.ca/Main_Page &amp;lt;strong&amp;gt;R2 Wiki&amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://transferdepot.sh1rs2wikidu01.mda.ca &amp;lt;strong&amp;gt;TransferDepot &amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://sh1rs2wikidu01.mda.ca/Special:ApprovedManuals &amp;lt;strong&amp;gt;Operational Manual Procedures&amp;lt;/strong&amp;gt;]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Safe|From the Control Room and legacy machines:}}&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.81/index.php/Main_Page?useskin=monobook &amp;lt;strong&amp;gt;R2 Wiki&amp;lt;/strong&amp;gt; ] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.62/ &amp;lt;strong&amp;gt;TransferDepot&amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.81/Special:ApprovedManuals?useskin=monobook &amp;lt;strong&amp;gt;Operational Manual Procedures&amp;lt;/strong&amp;gt;] &amp;lt;/strong&amp;gt; &amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System Configuration ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MDA R2-Wiki New stuff/should read:&#039;&#039;&#039;&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Cortex|Cortex Explained:]] Mission Control &amp;amp; High level description&amp;lt;BR&amp;gt;&lt;br /&gt;
-----&lt;br /&gt;
[[MissionPriorities| Mission Priorities:]] Top Mission Priorities from SAF, Bugs and projects &amp;lt;BR&amp;gt;&lt;br /&gt;
[[Current Spacecraft Configuration| Current Spacecraft Configuration:]] Overview of current Spacecraft configuration, subsystem status and performance &amp;lt;BR&amp;gt;&lt;br /&gt;
[[System_Configuration|Ground System Configuration:]] Ground Segment SW&amp;lt;BR&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=File:Pallette.jpg&amp;diff=146</id>
		<title>File:Pallette.jpg</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=File:Pallette.jpg&amp;diff=146"/>
		<updated>2026-01-23T20:31:47Z</updated>

		<summary type="html">&lt;p&gt;Tux: Tux uploaded a new version of File:Pallette.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=Rs2&amp;diff=145</id>
		<title>Rs2</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=Rs2&amp;diff=145"/>
		<updated>2026-01-23T20:31:20Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[Image: spallette.jpg  |right]]&lt;br /&gt;
&lt;br /&gt;
An online source of RADARSAT-2 operations data and documentation since launch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Navigation Methods&amp;lt;/h2&amp;gt;&lt;br /&gt;
{{Enhanced|From a desktop machine:}}&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://sh1rs2wikidu01.mda.ca/Main_Page &amp;lt;strong&amp;gt;R2 Wiki&amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://transferdepot.sh1rs2wikidu01.mda.ca &amp;lt;strong&amp;gt;TransferDepot &amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[https://sh1rs2wikidu01.mda.ca/Special:ApprovedManuals &amp;lt;strong&amp;gt;Operational Manual Procedures&amp;lt;/strong&amp;gt;]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Safe|From the Control Room and legacy machines:}}&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.81/index.php/Main_Page?useskin=monobook &amp;lt;strong&amp;gt;R2 Wiki&amp;lt;/strong&amp;gt; ] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.62/ &amp;lt;strong&amp;gt;TransferDepot&amp;lt;/strong&amp;gt;] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://142.73.160.81/Special:ApprovedManuals?useskin=monobook &amp;lt;strong&amp;gt;Operational Manual Procedures&amp;lt;/strong&amp;gt;] &amp;lt;/strong&amp;gt; &amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System Configuration ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MDA R2-Wiki New stuff/should read:&#039;&#039;&#039;&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Cortex|Cortex Explained:]] Mission Control &amp;amp; High level description&amp;lt;BR&amp;gt;&lt;br /&gt;
-----&lt;br /&gt;
[[MissionPriorities| Mission Priorities:]] Top Mission Priorities from SAF, Bugs and projects &amp;lt;BR&amp;gt;&lt;br /&gt;
[[Current Spacecraft Configuration| Current Spacecraft Configuration:]] Overview of current Spacecraft configuration, subsystem status and performance &amp;lt;BR&amp;gt;&lt;br /&gt;
[[System_Configuration|Ground System Configuration:]] Ground Segment SW&amp;lt;BR&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
	<entry>
		<id>https://mw.eckford.ca:443/index.php?title=File:Pallette.jpg&amp;diff=144</id>
		<title>File:Pallette.jpg</title>
		<link rel="alternate" type="text/html" href="https://mw.eckford.ca:443/index.php?title=File:Pallette.jpg&amp;diff=144"/>
		<updated>2026-01-23T20:27:11Z</updated>

		<summary type="html">&lt;p&gt;Tux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tux</name></author>
	</entry>
</feed>