Add `WebhookNotifier.SUPPORTED_EVENTS` and a `--strict` guard holding `webhook_schema.md`'s event table to the emission sites
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 55/100
Research direction
Start with forgelm/webhook.py, where the event names must become a SUPPORTED_EVENTS frozenset, and with the eight-event table in docs/reference/webhook_schema.md (EN and TR). Use tools/check_audit_event_catalog.py as the pattern for the new tools/check_webhook_event_vocabulary.py --strict guard. Done when the guard fails on any mismatch between the docs and the emission sites, and the row at docs/roadmap/risks-and-decisions.md:264 is removed with its ID F-PR54-M10-followup in the CHANGELOG. Coordinate with #671 on the overlapping guard half.
Written by the indexing model from the issue text.
Description
Deferred work ·
F-PR54-M10-followup· severity Low · cost ~2 h · recorded indocs/roadmap/risks-and-decisions.md:264
Summary
Phase 14.5 shipped docs/reference/webhook_schema.md but not its optional third sub-task: a SUPPORTED_EVENTS frozenset as the single source of webhook event names, plus tools/check_webhook_event_vocabulary.py --strict. The eight-event table (EN + TR) is held to forgelm/webhook.py by review alone.
Condition or budget
None (optional).
State today (re-checked 2026-10-09)
forgelm/webhook.py has no SUPPORTED_EVENTS, and the guard does not exist; check_audit_event_catalog.py checks the names only against the audit-event catalog.
Related
#671 (CR-A17a-029) asks the catalog guard to check webhook event literals separately — it overlaps the guard half only.
Acceptance criteria
-
SUPPORTED_EVENTSis the single source, and a--strictguard fails whenwebhook_schema.md(EN or TR) and the emission sites disagree. - The row is removed from the deferral table and the CHANGELOG names its ID (the table's removal contract).
Recorded in docs/roadmap/risks-and-decisions.md (read at f94595f) and re-checked against the code on 2026-10-09. The row leaves that table only when the fix is on main, the CHANGELOG names its ID and any promised guard exists.
- Dominant language
- Python
- Stars
- 9
- Forks
- 1
- Avg merge
- 8h 10m
- Merged PRs (30d)
- 5
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from HodeTech/ForgeLM
-
area: dev-tooling bug severity: low source: roadmap wave: 4
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
area: site bug good first issue severity: low source: review-2026-09 wave: 4
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
-
documentation good first issue severity: medium source: review-2026-09 wave: 3
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
documentation good first issue severity: low source: review-2026-09 wave: 4
Difficulty 1/5 1-3 hours Newbie friendliness 80/100
-
documentation severity: medium source: review-2026-09 wave: 3
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
All issues in HodeTech/ForgeLM
Similar issues
-
python triage
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
microsoft/semantic-kernel#14590 ·
Maintainers usually reply within 3 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
pinterest/pymemcache#662 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 Half a day Newbie friendliness 62/100
gnocchixyz/gnocchi#1527 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
tenstorrent/tt-model-manager#181 ·
Maintainers usually reply within 1 day