<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://kfdani-001-site10.gtempurl.com/index.php?action=history&amp;feed=atom&amp;title=OpenSite%2FReference%2FFeatures%2FExtension_platform</id>
	<title>OpenSite/Reference/Features/Extension platform - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://kfdani-001-site10.gtempurl.com/index.php?action=history&amp;feed=atom&amp;title=OpenSite%2FReference%2FFeatures%2FExtension_platform"/>
	<link rel="alternate" type="text/html" href="https://kfdani-001-site10.gtempurl.com/index.php?title=OpenSite/Reference/Features/Extension_platform&amp;action=history"/>
	<updated>2026-10-30T01:54:15Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://kfdani-001-site10.gtempurl.com/index.php?title=OpenSite/Reference/Features/Extension_platform&amp;diff=905&amp;oldid=prev</id>
		<title>BathAfrica: Link adjacent OpenSite reference pages in reading order</title>
		<link rel="alternate" type="text/html" href="https://kfdani-001-site10.gtempurl.com/index.php?title=OpenSite/Reference/Features/Extension_platform&amp;diff=905&amp;oldid=prev"/>
		<updated>2026-10-29T21:15:10Z</updated>

		<summary type="html">&lt;p&gt;Link adjacent OpenSite reference pages in reading order&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:15, 29 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l74&quot;&gt;Line 74:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 74:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:OpenSite documentation]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:OpenSite documentation]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div class=&quot;os-page-nav&quot;&amp;gt;{{Docnav|OpenSite/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Getting started&lt;/del&gt;|OpenSite/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Guides&lt;/del&gt;|OpenSite/Guides|All guides}}&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div class=&quot;os-page-nav&quot;&amp;gt;{{Docnav|OpenSite/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Reference/Features/Document files&lt;/ins&gt;|OpenSite/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Reference/Features/Message catalog&lt;/ins&gt;|OpenSite/Guides|All guides}}&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>BathAfrica</name></author>
	</entry>
	<entry>
		<id>https://kfdani-001-site10.gtempurl.com/index.php?title=OpenSite/Reference/Features/Extension_platform&amp;diff=842&amp;oldid=prev</id>
		<title>BathAfrica: Reorganize OpenSite reference with shared scope and related workflows</title>
		<link rel="alternate" type="text/html" href="https://kfdani-001-site10.gtempurl.com/index.php?title=OpenSite/Reference/Features/Extension_platform&amp;diff=842&amp;oldid=prev"/>
		<updated>2026-10-29T20:59:48Z</updated>

		<summary type="html">&lt;p&gt;Reorganize OpenSite reference with shared scope and related workflows&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:59, 29 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;__NOTOC__&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;__NOTOC__&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{OpenSite scope}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{BathAfrica Feature&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{BathAfrica Feature&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|review=Development documentation for OpenSite 0.0.1, source snapshot 77c3fee (Phase 13C). Reviewed against implementation on 29 October 2026. Tests and the Windows desktop were not rerun for this publication; this is not a released-product support claim.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|id=extensions.platform&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|id=extensions.platform&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|summary=Register extension object types, groups, templates, services and cooperative jobs through the shared application platform.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|summary=Register extension object types, groups, templates, services and cooperative jobs through the shared application platform.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l60&quot;&gt;Line 60:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 60:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  nonfinite=non_finite_value&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  nonfinite=non_finite_value&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Try this workflow ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[OpenSite/Guides/Build a native plugin|Build a native plugin]] — a worked lesson with expected results.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Documentation basis ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Documentation basis ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l70&quot;&gt;Line 70:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 73:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[OpenSite|OpenSite overview]] · [[OpenSite/Reference|Reference]] · [[OpenSite/Guides|Guides]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[OpenSite|OpenSite overview]] · [[OpenSite/Reference|Reference]] · [[OpenSite/Guides|Guides]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:OpenSite documentation]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:OpenSite documentation]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;div class=&quot;os-page-nav&quot;&amp;gt;{{Docnav|OpenSite/Getting started|OpenSite/Guides|OpenSite/Guides|All guides}}&amp;lt;/div&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>BathAfrica</name></author>
	</entry>
	<entry>
		<id>https://kfdani-001-site10.gtempurl.com/index.php?title=OpenSite/Reference/Features/Extension_platform&amp;diff=798&amp;oldid=prev</id>
		<title>BathAfrica: Use BathAfrica sidebar contents without duplicate inline contents box</title>
		<link rel="alternate" type="text/html" href="https://kfdani-001-site10.gtempurl.com/index.php?title=OpenSite/Reference/Features/Extension_platform&amp;diff=798&amp;oldid=prev"/>
		<updated>2026-10-29T20:11:35Z</updated>

		<summary type="html">&lt;p&gt;Use BathAfrica sidebar contents without duplicate inline contents box&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:11, 29 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;__NOTOC__&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{BathAfrica Feature&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{BathAfrica Feature&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|review=Development documentation for OpenSite 0.0.1, source snapshot 77c3fee (Phase 13C). Reviewed against implementation on 29 October 2026. Tests and the Windows desktop were not rerun for this publication; this is not a released-product support claim.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|review=Development documentation for OpenSite 0.0.1, source snapshot 77c3fee (Phase 13C). Reviewed against implementation on 29 October 2026. Tests and the Windows desktop were not rerun for this publication; this is not a released-product support claim.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>BathAfrica</name></author>
	</entry>
	<entry>
		<id>https://kfdani-001-site10.gtempurl.com/index.php?title=OpenSite/Reference/Features/Extension_platform&amp;diff=765&amp;oldid=prev</id>
		<title>BathAfrica: Publish Cursor documentation reconciled with OpenSite source 77c3fee; tests not rerun</title>
		<link rel="alternate" type="text/html" href="https://kfdani-001-site10.gtempurl.com/index.php?title=OpenSite/Reference/Features/Extension_platform&amp;diff=765&amp;oldid=prev"/>
		<updated>2026-10-29T20:06:54Z</updated>

		<summary type="html">&lt;p&gt;Publish Cursor documentation reconciled with OpenSite source 77c3fee; tests not rerun&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{BathAfrica Feature&lt;br /&gt;
|review=Development documentation for OpenSite 0.0.1, source snapshot 77c3fee (Phase 13C). Reviewed against implementation on 29 October 2026. Tests and the Windows desktop were not rerun for this publication; this is not a released-product support claim.&lt;br /&gt;
|id=extensions.platform&lt;br /&gt;
|summary=Register extension object types, groups, templates, services and cooperative jobs through the shared application platform.&lt;br /&gt;
|status=Implemented in the reviewed development source. Historical test evidence is recorded by the repository; no test rerun or product release is claimed by this publication.&lt;br /&gt;
|units=Service quantities use the units engine. Activity text is a catalog key. The service does not translate it.&lt;br /&gt;
|behavior=A provider registers a namespaced type, a template, and a service through &amp;lt;code&amp;gt;PluginServices&amp;lt;/code&amp;gt; or the Python &amp;lt;code&amp;gt;register_extension_*&amp;lt;/code&amp;gt; functions. A template creates an independent instance. A group holds members and does not add a calculation dependency. A protected service or job checks the authorization policy already installed on the application. &amp;lt;code&amp;gt;pump_job&amp;lt;/code&amp;gt; advances one step of the oldest running job, then the oldest queued job, on the owner thread.&lt;br /&gt;
|errors=&amp;lt;code&amp;gt;duplicate_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dependency_cycle&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;command_unavailable&amp;lt;/code&amp;gt;, authorization errors, &amp;lt;code&amp;gt;gui_unavailable&amp;lt;/code&amp;gt; for a headless GUI request, &amp;lt;code&amp;gt;cancelled&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;stale_document&amp;lt;/code&amp;gt;. These depend on the operation. Plugin objects are now preserved by document persistence; the old blanket save refusal is obsolete.&lt;br /&gt;
|limitations=No independent worker-thread or solver capability is implied by the cooperative job queue. Cancellation waits for a checkpoint and cannot forcibly stop native code. Provider id, type id, schema version and payload are preserved on save. This is not a sandbox for trusted in-process code.&lt;br /&gt;
|hosts=C++ &amp;lt;code&amp;gt;ExtensionCatalog&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;JobService&amp;lt;/code&amp;gt;. Python &amp;lt;code&amp;gt;execute&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;update_extension_template&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;add_service_requirement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;invoke_service&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;submit_extension_job&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;job_progress&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;request_gui&amp;lt;/code&amp;gt;.&lt;br /&gt;
|licensing=OpenSite code. The sample provider does not add a third-party solver or a scientific package.&lt;br /&gt;
|verification=Repository evidence references (not rerun for this publication): &amp;lt;code&amp;gt;docs/verification/Phase-7A-Acceptance.md&amp;lt;/code&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The runnable script is &amp;lt;code&amp;gt;examples/python/extension_platform.py&amp;lt;/code&amp;gt;. Run it with the development host after the native sample has been built into a child of &amp;lt;code&amp;gt;--plugins&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 opensite-python --development-host --runtime &amp;amp;lt;prefix&amp;amp;gt;\runtime --plugins &amp;amp;lt;plugins&amp;amp;gt; examples\python\extension_platform.py&lt;br /&gt;
&lt;br /&gt;
Each line:&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;import opensite&amp;lt;/code&amp;gt; loads the headless module.&lt;br /&gt;
# &amp;lt;code&amp;gt;load_plugin(&amp;quot;sample.native&amp;quot;)&amp;lt;/code&amp;gt; loads that discovered provider and registers &amp;lt;code&amp;gt;sample_native.item&amp;lt;/code&amp;gt;, the starter template, and &amp;lt;code&amp;gt;measure&amp;lt;/code&amp;gt;.&lt;br /&gt;
# The two &amp;lt;code&amp;gt;parse_quantity&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;document.create_section&amp;lt;/code&amp;gt; create an ordinary section so the script has a document handle.&lt;br /&gt;
# &amp;lt;code&amp;gt;extension.instantiate&amp;lt;/code&amp;gt; copies the template. The template length is 2 m, and the provider evaluator stores 4 m in &amp;lt;code&amp;gt;doubled&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &amp;lt;code&amp;gt;extension.create_group&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;extension.add_member&amp;lt;/code&amp;gt; put that instance in a group. Membership is not a calculation dependency.&lt;br /&gt;
# The two &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; lines report the doubled length and that the group lists the new object.&lt;br /&gt;
# &amp;lt;code&amp;gt;invoke_service&amp;lt;/code&amp;gt; calls &amp;lt;code&amp;gt;sample_native.measure&amp;lt;/code&amp;gt; version 1. The capability is &amp;lt;code&amp;gt;document.edit&amp;lt;/code&amp;gt;. The development policy allows it.&lt;br /&gt;
# &amp;lt;code&amp;gt;step&amp;lt;/code&amp;gt; reports one completed step out of two and the catalog key &amp;lt;code&amp;gt;jobs.sample.extension&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &amp;lt;code&amp;gt;watch&amp;lt;/code&amp;gt; records activity keys. &amp;lt;code&amp;gt;submit_extension_job&amp;lt;/code&amp;gt; queues the job. The first &amp;lt;code&amp;gt;pump_job&amp;lt;/code&amp;gt; runs one step. &amp;lt;code&amp;gt;cancel_job&amp;lt;/code&amp;gt; records the request. The second &amp;lt;code&amp;gt;pump_job&amp;lt;/code&amp;gt; stops at the checkpoint and does not publish a document result.&lt;br /&gt;
# &amp;lt;code&amp;gt;document.save&amp;lt;/code&amp;gt; keeps the plugin object and prints &amp;lt;code&amp;gt;save=accepted&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &amp;lt;code&amp;gt;request_gui&amp;lt;/code&amp;gt; raises &amp;lt;code&amp;gt;gui_unavailable&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &amp;lt;code&amp;gt;update_extension_template&amp;lt;/code&amp;gt; replaces the starter copy. The instance created earlier keeps 2 m. The next &amp;lt;code&amp;gt;extension.instantiate&amp;lt;/code&amp;gt; copies 9 m.&lt;br /&gt;
# &amp;lt;code&amp;gt;extension.relate&amp;lt;/code&amp;gt; links those two instances. &amp;lt;code&amp;gt;extension.remove_member&amp;lt;/code&amp;gt; takes the first instance out of the group and leaves the instance in the document.&lt;br /&gt;
# &amp;lt;code&amp;gt;register_extension_service&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;add_service_requirement&amp;lt;/code&amp;gt; attach &amp;lt;code&amp;gt;sample_script.ready&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;sample_native.measure&amp;lt;/code&amp;gt;. The requirement is checked on the next invoke.&lt;br /&gt;
# The note type is registered in the script. &amp;lt;code&amp;gt;document.set_string&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;document.set_integer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;document.set_real&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;document.set_boolean&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;document.set_label&amp;lt;/code&amp;gt; edit it. &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;integer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;real&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;boolean&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;live_text&amp;lt;/code&amp;gt; read it back. No transaction is open, so the live read matches the published text.&lt;br /&gt;
# &amp;lt;code&amp;gt;duplicate&amp;lt;/code&amp;gt; returns two fields named &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;invoke_service&amp;lt;/code&amp;gt; raises &amp;lt;code&amp;gt;duplicate_id&amp;lt;/code&amp;gt; and returns no fields.&lt;br /&gt;
# &amp;lt;code&amp;gt;infinite&amp;lt;/code&amp;gt; returns a non-finite real. &amp;lt;code&amp;gt;invoke_service&amp;lt;/code&amp;gt; raises &amp;lt;code&amp;gt;non_finite_value&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Expected terminal output:&lt;br /&gt;
&lt;br /&gt;
 doubled=4.0&lt;br /&gt;
 member=True&lt;br /&gt;
 service=4.0&lt;br /&gt;
 job=cancelled&lt;br /&gt;
 activity=jobs.sample.extension&lt;br /&gt;
 save=accepted&lt;br /&gt;
 gui=gui_unavailable&lt;br /&gt;
 kept=2.0&lt;br /&gt;
 later=9.0&lt;br /&gt;
 related=True&lt;br /&gt;
 removed=True&lt;br /&gt;
 requirement=ok&lt;br /&gt;
 label=Beam&lt;br /&gt;
 count=3&lt;br /&gt;
 factor=1.5&lt;br /&gt;
 flag=True&lt;br /&gt;
 live=Beam&lt;br /&gt;
 duplicate=duplicate_id&lt;br /&gt;
 nonfinite=non_finite_value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Documentation basis ==&lt;br /&gt;
Source-reviewed against development commit &amp;lt;code&amp;gt;77c3fee13944bcc4b5d487c77eb1f82fbe4c6ea7&amp;lt;/code&amp;gt;, branch &amp;lt;code&amp;gt;feature/phase-13c-properties-python-expressions&amp;lt;/code&amp;gt;. This review inspected the implementation and repository evidence; it did not run the Windows application or repeat CTest.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;src/application/extension.cpp&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;src/document/persistence.cpp&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;examples/python/extension_platform.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[OpenSite|OpenSite overview]] · [[OpenSite/Reference|Reference]] · [[OpenSite/Guides|Guides]]&lt;br /&gt;
[[Category:OpenSite documentation]]&lt;/div&gt;</summary>
		<author><name>BathAfrica</name></author>
	</entry>
</feed>