The plugin surface is too small for the plugins that exist: every official plugin imports past postulo.plugins.api #229
Labels
No labels
accessibility
authentication
breaking change
bug
documentation
enhancement
interface
internationalisation
observability
security
tier
1
tier
2
tier
3
tier/4
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Postulo/postulo#229
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
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?
postulo/plugins/api.py:25-28says anything outside the surface "may move without warning". Every official Python plugin imports past it anyway, and the wiki teaches those imports. Found in the 2026-09-15 code audit, which read the sibling repositories.What the plugins reach for
postulo.plugins.http(DestinationRefused,check_destination) andpostulo.plugins.base.postulo.plugins.base.postulo.applications.ical,.models,.services;postulo.core.phone_numbers,web_links;postulo.jobs.models.Contact;postulo.plugins.models.SyncLink.Application,Suggestion,suggest,Contact.from postulo.plugins.base import …,from postulo.plugins import httpandfrom postulo.notifications.base import Notification.What is missing from the surface
Notification,NotifierPluginandEVENTSlive innotifications/base.pyand are not onapi(the core's owntest_plugin_surface.pyrecords the built-in reaching past for them).Notificationalso lacks:key, so retries cannot be deduplicated;language;occurred_at;data(the reminder, application or due time).DestinationRefused,check_destination, plus the guarded-socket helper from the outbound-requests issue (#215).SyncLinkandsuggest, which the wiki already treats as public.get_or_create_company,reschedule_interview,settle_interview,record_event, primary phone and link getters, andical.event_lines.Proposal
postulo.plugins.api, each with a wiki line (test_wiki_surface.pywill require it).Notificationwithkey,language,occurred_atanddata, and document them.postulo.plugins.api.tests/test_plugin_surface.pyas a reusable test (for example inpostulo-messages, or apostulo.plugins.testingmodule) so each plugin's CI can run it.Application,Suggestion,suggestandContactare on it now #2