Hygiene follow-up surfaced during the batch-2 review of PR #261/#338 (the spp_dci case was fixed on PR #399). Several modules reference spp_security.group_spp_admin (or other spp_security xml_ids) in security XML but declare spp_security only transitively via spp_registry.
Severity: Low (robustness/hygiene — not a live vulnerability)
Problem
Load order and xml_id availability are only guaranteed through the declared dependency graph. A module that ref=s spp_security.group_spp_admin without declaring spp_security in depends resolves only because spp_registry (a declared dep) happens to depend on spp_security. If that transitive edge ever changes, a fresh install raises ValueError: External ID not found in the system: spp_security.group_spp_admin.
Modules to fix
Of the 33 modules extending spp_security.group_spp_admin, these lack a direct spp_security dependency (verified in the batch-2 review):
spp_disability_registry
spp_gis_report
spp_registry_search
spp_farmer_registry_demo (references via data/demo_users.xml)
(spp_dci was the fifth; fixed in PR #399's review response.)
Fix
Add "spp_security" to each module's __manifest__.py depends. One line each, zero runtime change (already in the dependency closure), no migration. Bump each module's patch version + HISTORY per the checklist.
Hygiene follow-up surfaced during the batch-2 review of PR #261/#338 (the
spp_dcicase was fixed on PR #399). Several modules referencespp_security.group_spp_admin(or otherspp_securityxml_ids) in security XML but declarespp_securityonly transitively viaspp_registry.Severity: Low (robustness/hygiene — not a live vulnerability)
Problem
Load order and xml_id availability are only guaranteed through the declared dependency graph. A module that
ref=sspp_security.group_spp_adminwithout declaringspp_securityindependsresolves only becausespp_registry(a declared dep) happens to depend onspp_security. If that transitive edge ever changes, a fresh install raisesValueError: External ID not found in the system: spp_security.group_spp_admin.Modules to fix
Of the 33 modules extending
spp_security.group_spp_admin, these lack a directspp_securitydependency (verified in the batch-2 review):spp_disability_registryspp_gis_reportspp_registry_searchspp_farmer_registry_demo(references viadata/demo_users.xml)(
spp_dciwas the fifth; fixed in PR #399's review response.)Fix
Add
"spp_security"to each module's__manifest__.pydepends. One line each, zero runtime change (already in the dependency closure), no migration. Bump each module's patch version + HISTORY per the checklist.