refactor: remove the dynamic trigger RPC and the second workflow registry - #450
Open
KillerX wants to merge 1 commit into
Open
refactor: remove the dynamic trigger RPC and the second workflow registry#450KillerX wants to merge 1 commit into
KillerX wants to merge 1 commit into
Conversation
KillerX
force-pushed
the
refactor/remove-dynamic-trigger-rpc
branch
from
August 13, 2026 08:48
c6bfbfe to
10c2de2
Compare
KillerX
force-pushed
the
refactor/remove-dynamic-trigger-rpc
branch
from
August 13, 2026 13:26
10c2de2 to
ccc6e9a
Compare
…stry GET /schemas published the full JSON Schema of every triggerable workflow's param struct, and POST /trigger-dynamic executed any of them by name through reflection — including scheduled.CleanupTemp and scheduled.MediabankenPurgeTrash, on a service with no authn or authz of its own. Nothing in this repository calls either endpoint. They were also the only reader of TriggerableWorkflows, the second of the two hand-maintained registration lists. Rather than derive one list from the other and add a test to keep them in step, both endpoints and the list go, which closes the drift by construction: a workflow is either in WorkerWorkflows or it cannot run. That also settles the six workflows the audit found missing from the triggerable list — BulkExportShorts, ExportShort, GenerateShort, IsilonExport, AssetJSON and ImportSubtitles. They were not reachable through /trigger-dynamic and now there is nothing for them to be missing from. /trigger/:job is untouched. That is the named-job endpoint the FileCatalyst and watcher integrations post to, and it has an explicit case per job rather than reflecting over a registry. Also removed: httpin's own copy of getFunctionName, which only the schema handler used, and the invopop/jsonschema dependency. The jsonschema struct tag on VXExportParams.Destinations went with it — the valid values are the AssetExportDestination enum, which VXExport already validates against. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
KillerX
force-pushed
the
refactor/remove-dynamic-trigger-rpc
branch
from
August 14, 2026 06:37
ccc6e9a to
75e5bd5
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
11/n of a stack. Base:
fix/unbounded-histories-payloads(#449). Closes the Registration drift between two hand-maintained lists finding, and the Tier 4 reflection RPC surface finding with it.GET /schemaspublished the full JSON Schema of every triggerable workflow's param struct, andPOST /trigger-dynamicexecuted any of them by name through reflection — includingscheduled.CleanupTempandscheduled.MediabankenPurgeTrash, on a service with no authn or authz of its own. Nothing in this repository calls either endpoint.They were also the only reader of
TriggerableWorkflows, the second of the two hand-maintained lists. Rather than derive one from the other and add a test to keep them in step, both endpoints and the list go, which closes the drift by construction: a workflow is either inWorkerWorkflowsor it cannot run.That also settles the six workflows the audit found missing from the triggerable list —
BulkExportShorts,ExportShort,GenerateShort,IsilonExport,AssetJSON,ImportSubtitles. They were not reachable through/trigger-dynamic, and now there is nothing for them to be missing from./trigger/:jobis untouched. That is the named-job endpoint the FileCatalyst and watcher integrations post to, and it has an explicit case per job rather than reflecting over a registry.Also removed: httpin's own copy of
getFunctionName, which only the schema handler used, and theinvopop/jsonschemadependency. Thejsonschemastruct tag onVXExportParams.Destinationswent with it — the valid values are theAssetExportDestinationenum, whichVXExportalready validates against.The one thing worth a second opinion before merging: these are a generic public API, and "no in-repo caller" is not proof that nothing external calls them. If something does, it breaks at merge rather than at deploy of a config change.
Not fixed by this, and still open:
cleanup_production.go:61executesMoveFileByImportDateas an activity that is registered nowhere, so that flow cannot run regardless of which list it is in.🤖 Generated with Claude Code