Folded into #77 (Refactor delivery targets to a Target interface). The log target is being reimplemented there as logTarget, including the full inbound body + headers logging @sneak asked…
Closing as superseded by #77. The log target is being reimplemented as logTarget under the Target-interface refactor, which also expands it to log the full inbound body and headers. Closing this…
Independent review — PASS (merge-ready)
Adversarial review against the issue spec and repo policies.
internal/database/retention.go:RetentionReaperruns a ticker sweep (configurable…
You're right — I over-constrained B. B does not mean a blocking sleep loop, and it does not lose durability: hand the target the per-webhook DB and the re-enqueue primitive and it does exactly…
What changed
Added a per-webhook event retention reaper that enforces RetentionDays.
Files changed (5, +604/-5):
internal/database/retention.go(new):RetentionReaperwith fx…
Design proposal (needs your sign-off before I implement)
I read the current internal/delivery engine. Findings, the proposed shape, and two decisions for you.
How it works today
-…
Updated the design above to match:
- each target owns its own retries/backoff — fire-and-forget targets (
log,database) deliver once;http/slackretry with backoff and the circuit…
Independent review — PASS (merge-ready)
Adversarial review against the issue spec and repo policies.
internal/delivery/engine.godeliverLog(): addswebhook_id,entrypoint_id, and…
Changes:
internal/delivery/engine.go(+3):deliverLog()now addswebhook_id,entrypoint_id, andoutcometo the structured slog entry it emits per delivered event (alongside the…
Independent review — PASS (merge-ready)
Adversarial review against the issue spec and repo policies.
internal/middleware/middleware.go:NoCache()setsCache-Control: no-storeand…
Diff summary (3 files, +63):
internal/middleware/middleware.go— newNoCache()middleware, same constructor style asSecurityHeaders(); setsCache-Control: no-storeand `Pragma:…
Implementation instructions
Confine to internal/delivery/engine.go (the deliverLog path) and a delivery-package test only. Do not touch other packages. The database archiving target is…
Implementation instructions
Implement the retention reaper as a cohesive, self-contained unit.
Files: a new reaper in one place (e.g. internal/database/retention.go, or a small new…
Implementation instructions
Confine to internal/middleware/middleware.go (plus its test) and internal/server/routes.go only.
- Add a
NoCache()middleware tomiddleware.gothat sets…