feat(triggers): TriggerEvent union + webhook-normalize converters (NF-1) #342
Closed
code-lead
wants to merge 1 commit from
boss/322 into main
pull from: boss/322
merge into: charles:main
charles:main
charles:chore/sync-pre-push-from-forge-base
charles:fix/flows-yaml-dispatch-identity
charles:feat/board-tap-to-assign
charles:dev/1107
charles:code-lead/1106
charles:code-lead/1108
charles:dev/1104
charles:code-lead/1103
charles:code-lead/1080
charles:dev/1087
charles:feat/flows-yaml-ci-events
charles:chore/board-drop-stalled-and-density-controls
charles:fix/flows-yaml-routes-always-register
charles:flows-yaml/api-defaults
charles:dev/1023
charles:fix/event-log-history-bleed
charles:fix/janitor-fix-ci-logs-and-cap
charles:dev/1022
charles:fix/board-card-provider
charles:code-lead/1036
charles:dev/1025
charles:code-lead/1020
charles:dev/1017
charles:code-lead/1026
charles:feat/web-shortcut-registry-1018
charles:dev/1015
charles:code-lead/1009
charles:code-lead/1008
charles:dev/975
charles:dev/969
charles:dev/973
charles:dev/967
charles:code-lead/968
charles:code-lead/953
charles:dev/970
charles:dev/976
charles:code-lead/966
charles:code-lead/956
charles:code-lead/951
charles:dev/962
charles:dev/963
charles:dev/977
charles:dev/955
charles:dev/983
charles:dev/961
charles:dev/974
charles:code-lead/950
charles:code-lead/939
charles:dev/941
charles:dev/940
charles:dev/937
charles:dev/938
charles:dev/936
charles:dev/935
charles:feat/web-i18n-fr-locale
charles:feat/spec-editor-ui-polish
charles:chore/drop-legacy-compat
charles:fix/skills-drop-preview-pane
charles:fix/882-skills-safety-rail
charles:dev/911
charles:dev/909
charles:dev/923
charles:dev/917
charles:dev/915
charles:feat/879-sr11-m2-drop-legacy-skill
charles:code-lead/873
charles:dev/881
charles:code-lead/869
charles:dev/867
charles:code-lead/845
charles:code-lead/843
charles:code-lead/844
charles:dev/837
charles:dev/861
charles:dev/849
charles:code-lead/837
charles:code-lead/842
charles:fix/dedup-rebase-inflight
charles:dev/838
charles:code-lead/847
charles:dev/833
charles:code-lead/848
charles:pr/838
charles:code-lead/841
charles:feat/settings-save-bar/836
charles:code-lead/840
charles:dev/846
charles:code-lead/839
charles:dev/832
charles:fix/board-sse-stale-cache
charles:dev/834
charles:dev/835
charles:feat/settings-breadcrumbs
charles:feat/forge-oauth-credentials
charles:refactor/service-config-consolidation
charles:feat/agent-tokens-to-secrets
charles:feat/gitlab-oauth-to-db
charles:feat/authelia-rip-and-voice-fixes
charles:fix/rebase-storm-and-dead-letter
charles:code-lead/797
charles:code-lead/796
charles:dev/811
charles:code-lead/798
charles:dev/810
charles:code-lead/795
charles:dev/808
charles:code-lead/794
charles:dev/805
charles:dev/802
charles:dev/803
charles:feat/avatar-menu-settings-entry
charles:feat/per-agent-token-tracking
charles:dev/793
charles:dev/747
charles:dev/752
charles:code-lead/790
charles:code-lead/759
charles:dev/756
charles:dev/760
charles:dev/741
charles:dev/767
charles:dev/740
charles:dev/709
charles:dev/644
charles:dev/637
charles:boss/614
charles:dev/600
charles:dev/611
charles:dev/585
charles:fix/login-bonus-fixes
charles:boss/544
charles:dev/542
charles:refactor/api-prefix-and-session-gate
charles:dev/489
charles:boss/531
charles:boss/518
charles:dev/499
charles:boss/516
charles:dev/530
charles:dev/517
charles:dev/519
charles:dev/515
charles:dev/522
charles:dev/503
charles:dev/471
charles:boss/329
charles:dev/417
charles:dev/418
charles:dev/402
charles:boss/327
charles:dev/334
charles:dev/332
charles:boss/326
charles:boss/325
charles:dev/331
charles:boss/324
charles:boss/323
charles:dev/294
charles:test/s11-task-analytics
charles:dev/262
charles:boss/270
charles:dev/268
charles:foreman/ui-consolidation-spec
charles:dev/234
charles:boss/196
charles:boss/176
charles:boss/164
charles:fix/124-session-persist-bind
charles:boss/52
charles:dev/87
charles:boss/73
charles:dev/77
charles:dev/81
charles:dev/82
charles:boss/79
charles:dev/42
charles:dev/35
charles:boss/7
No reviewers
Labels
Clear labels
area:agents
Agent types, pool scheduling, per-instance config
area:dashboard
Dashboard UI and observability surfaces
area:database
DB layer — schema, migrations, ORM, raw SQL
area:design
UI/UX mockup work — routes to designer agent
area:design-review
Design review dispatch — routes to design-reviewer agent
area:flows
Flow runner — YAML loader, executor, op registry, expression eval
area:infra
Deployment, isolation, containers, systemd units
area:meta
Tracking, scaffolding, project setup
area:security
Security — routes to reviewer-security (opus)
area:sessions
Session-id store, Claude SDK resume logic
area:webhook
Forgejo webhook routing and handlers
area:workdir
Clone cache, worktrees, git identity
security
Security-sensitive issue
type:bug
Bug
type:chore
Chore
type:meta
Tracking or decisions, not implementation work
type:user-story
User story
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks!342
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "boss/322"
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?
Add a closed 20-variant
TriggerEventdiscriminated union mirroringspecs/node-flows.md§ Trigger catalog (v1) so the future Node Flows executor (NF-2) has a uniform input.Test plan
bun x turbo run typecheck— clean across all 4 packagesbun x biome check .— clean across 299 filesbun test src/http/webhook-normalize.test.ts— 56 pass (24 new round-trip fixtures, one per catalog row)bun x turbo run test— full server suite (1,419 pass, 0 fail)webhook-handlers.ts,webhook-ci.ts,webhook.tsdispatch paths unchangedTRIGGER_KINDSentry has a matching fixture; new catalog rows without fixtures will trip itCloses #322
Rebase aborted — superseded by merged #341.
Both PRs implement NF-1 with an identical 20-variant
TriggerEventunion (samekindstrings:issue.opened/closed/assigned/unassigned/labeled/unlabeled,issue_comment.created/slash_command,pull_request.opened/closed/ready_for_review/synchronize,pull_request_review.review_requested/submitted,check_suite.completed,cron.tick,task.completed/failed/cost_capped,manual). Main already carries #341'spackages/shared/src/trigger-event.ts+apps/server/src/http/webhook-normalize.{ts,test.ts}; this branch addstrigger-events.ts(plural) plus overlapping normalize files. Nothing net-new to rescue.Closing recommended — no force-push.
Rebase aborted — design invalidated by main.
NF-1 already landed via PR #341 (commit
173305c):packages/shared/src/trigger-event.ts(singular),webhook-normalize.tsconverter, and the fullTRIGGER_KINDSexport set. The merged implementation covers the same 20 catalog rows this branch introduces, and does so without extendingForgeEvent— it builds the extra trigger arms (issues.opened,issues.unassigned,issues.unlabeled,pull_request.ready_for_review) directly from raw webhook payloads in the normaliser.Three-way conflict on
packages/shared/src/index.ts,apps/server/src/http/webhook-normalize.ts, andapps/server/src/http/webhook-normalize.test.ts— both sides create overlapping but structurally different surfaces. Forcing a resolution would either (a) duplicate the union under two file names or (b) delete one implementation wholesale, and neither is what this PR was scoped to do.Recommend closing this PR. If the
ForgeEventextension is still wanted as a separate concern, it can ship on top of the merged NF-1 as a follow-up.Closing as superseded by #341 which landed NF-1 first and is already on main. Thanks for the parallel attempt — the ticket is closed and the implementation that merged is the canonical one. Closing this branch to keep the PR list clean.
Pull request closed