Skip to content

refactor: remove the dynamic trigger RPC and the second workflow registry - #450

Open
KillerX wants to merge 1 commit into
fix/unbounded-histories-payloadsfrom
refactor/remove-dynamic-trigger-rpc
Open

refactor: remove the dynamic trigger RPC and the second workflow registry#450
KillerX wants to merge 1 commit into
fix/unbounded-histories-payloadsfrom
refactor/remove-dynamic-trigger-rpc

Conversation

@KillerX

@KillerX KillerX commented Aug 13, 2026

Copy link
Copy Markdown
Member

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 /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 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 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, 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.

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:61 executes MoveFileByImportDate as an activity that is registered nowhere, so that flow cannot run regardless of which list it is in.

🤖 Generated with Claude Code

@KillerX
KillerX force-pushed the refactor/remove-dynamic-trigger-rpc branch from c6bfbfe to 10c2de2 Compare August 13, 2026 08:48
@KillerX
KillerX force-pushed the refactor/remove-dynamic-trigger-rpc branch from 10c2de2 to ccc6e9a Compare August 13, 2026 13:26
…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
KillerX force-pushed the refactor/remove-dynamic-trigger-rpc branch from ccc6e9a to 75e5bd5 Compare August 14, 2026 06:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant