-
Notifications
You must be signed in to change notification settings - Fork 0
Wire plugin job dispatch bridge (host ABI + WASM handler) #268
Copy link
Copy link
Closed
Labels
area:jobsBackground jobs, cronBackground jobs, cronarea:plugin-hostWASM plugin runtimeWASM plugin runtimephase:P4-pluginsPhase 4 — PluginsPhase 4 — Pluginspriority:P1Important — should land in phaseImportant — should land in phaseskill:goGo programmingGo programmingskill:wasmWebAssembly / wazeroWebAssembly / wazerotype:featNew feature or implementation taskNew feature or implementation task
Milestone
Metadata
Metadata
Assignees
Labels
area:jobsBackground jobs, cronBackground jobs, cronarea:plugin-hostWASM plugin runtimeWASM plugin runtimephase:P4-pluginsPhase 4 — PluginsPhase 4 — Pluginspriority:P1Important — should land in phaseImportant — should land in phaseskill:goGo programmingGo programmingskill:wasmWebAssembly / wazeroWebAssembly / wazerotype:featNew feature or implementation taskNew feature or implementation task
Type
Fields
Give feedbackNo fields configured for issues without a type.
Summary
Wire the plugin job dispatch bridge per §4 and §17.4: plugins enqueue via the
queuehost ABI, the host rewrites task type toplugin:{slug}:{user_task_type}and pins queue toplugins, per-plugin concurrency semaphore + per-plugin rate limiter gate execution. Handler resolves the plugin, validates active+version, then dispatches via WASM with the manifest'sjob_fuel,job_memory_mb,job_timeoutcaps.Design reference
Acceptance criteria
queue.enqueue(task_type, payload, opts) -> Result<TaskID, Error>gated by thequeuecapability (returnsEPERMotherwise)EnqueueOptswhitelistsdelay,unique_for,max_retry(capped at registry value),idempotency_key— plugins cannot set the queueplugin:{slug}:{user_task_type}; queue forced topluginsPluginTaskPayload{Slug, Version, UserType, Body, EnqueuedBy}carries plugin versionpluginRateLimiter.Allow(slug, 1)default 60/min, configurable per-plugin by super_adminhandlePluginTaskresolves plugin, returnsSkipRetryif gone/inactive/version mismatchFuel: manifest.Limits.JobFuel,Memory: manifest.Limits.JobMemoryMB,Timeout: manifest.Limits.JobTimeouthigh_resource_jobscapability lifts caps (admin grants explicitly)plugin.activate/deactivate/uninstall.cleanuptasks wired with the §4.4 lifecycle semanticsERATELIMITto the pluginDependencies
#258, #194
Complexity
L