Audit client/extension repos for stale manifest metadata (element_name / extension_type) → silent no-update #759
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Systemic follow-up from #752. The bare
/<owner>/<repo>/updates.xmlfeed is generated from a repo's first-class metadata (element_name,extension_type,display_name— theRepoMetadataDB fields;.mokogitea/manifest.xmlis removed). Joomla matches updates by (type, element), so if a repo's metadata is stale/wrong, the generated feed emits a(type, element)that the installed extension never matches → the client site silently never auto-updates.Concrete case (already fixed)
ClarksvilleFurs/client-mokosuite-clarksvillefurscarriedelement_name=tpl_clarksvillefurs,extension_type=template(leftover template-style setup) while the actual installed extension isfile/file_mokoonyx_clarksvillefurs. The bare feed emitted<type>template</type>/<element>tpl_clarksvillefurs</element>→ no match. Corrected viaPUT /repos/.../metadataand the feed regenerated correctly.Task
Audit every client/extension repo in the org: compare its first-class metadata
extension_type+element_nameagainst its actual Joomla extension<type>/<element>(from the installed package /*.xml). Fix mismatches viaPUT /repos/{owner}/{repo}/metadata.mokogitea_metadata_update(mcp-mokogitea-api #34, v1.5.0) exposeselement_name/extension_type.client-mokosuite-*,MokoSuite*extension repos, template-derived clients./updates.xmlemits the right(type, element).Refs #752 (comment), mcp-mokogitea-api #34.
https://claude.ai/code/session_01Wsno14cxE49MstXFs9G5KT
Branch created:
feature/759-audit-client-extension-repos-for-stale-mAudit results (read-only — no metadata changed)
Audited 38 client/extension candidates (
MokoSuite*+MokoOnyx/MokoJoomHero/MokoWaaS); 43 infra/tooling/template/mcp repos skipped. 6 flagged, 20 clean, 12 undetermined (stubs).Flagged — metadata drives a
(type, element)no installed extension matches → silent no-updatepkg_mokosuitecrmpkg_mokosuite_crmpkg_mokosuite_crmpkg_mokosuiteerppkg_mokosuite_erppkg_mokosuite_erppkg_mokosuiteinsightpkg_mokosuitesightpkg_mokosuitesightpkg_mokosuiteopengraphpkg_mokoogpkg_mokoogpkg_mokosuiteshoppkg_mokoshoppkg_mokoshoptemplate-genericpkg_mokowaaspackage, element →pkg_mokowaas(never customized from Template-Generic — closest ClarksvilleFurs analog)Clean (20)
Backup, Beauty, Child, Client, Create, Cross, Editor, Field, HQ, HRM, MRP, NPO, POS, Realty, Restaurant, StoreLocator, Support, Auto; plus MokoOnyx (template/
mokoonyx) and MokoJoomHero (module/mod_mokojoomhero). Note: Joomla templates use the raw folder name, notpl_prefix — so MokoOnyx'smokoonyxis correct.Undetermined — 12 stubs (metadata present, no source/manifest on
mainyet)Community, Booking, Church, Construction, Event, Gym, Library, Logistics, Marina, Rental, Storage, Taxi — internally-consistent
pkg_but no extension to verify against. Re-audit when source lands.Coverage gaps (need separate work)
client-mokosuite-*repos live in separate client orgs, notMokoConsulting— outside this org-scoped audit. A per-client-org sweep is needed to catch the ClarksvilleFurs class (the original reference case).MokoSuiteHQreferences.../MokoSuiteHQ/updates.xmlin<updateservers>but the file doesn't exist onmain— an update-server gap (separate from metadata staleness).https://claude.ai/code/session_01Wsno14cxE49MstXFs9G5KT
✅ 6 fixes applied + verified (2026-07-06)
All 6 flagged repos corrected via
PUT /metadata(200 each), and the bare/updates.xmlfeeds confirmed regenerating with the correct(type, element):pkg_mokosuite_crmpkg_mokosuite_erppkg_mokosuitesightpkg_mokoogpkg_mokoshoppackage/pkg_mokowaasSpot-checked:
MokoSuiteCRM/updates.xmlemits<type>package</type><element>pkg_mokosuite_crm</element>✓;MokoWaaS/updates.xmlemitspkg_mokowaas✓.MokoConsulting-org portion of this audit is done. Remaining: 12 stub repos (re-audit when source lands) and the two coverage gaps — the per-client-org sweep (filed separately) and the
MokoSuiteHQmissingupdates.xml. Closing the MokoConsulting scope.