devforge API service not deployed — webhook feature cannot be exercised live #46
Labels
No labels
blocked:gate-plan
blocked:gate-research
blocked:lint-failed
blocked:needs-attention
blocked:needs-decision
blocked:no-changes
blocked:no-procedure
blocked:verify-failed
bug
chore
feature-request
in-progress
needs-research
ops-task
quickfix
security/medium
triage-approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/devforge#46
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
No devforge API process, no devforge podman/docker container, and compose API port 8081 is not listening (verified 2026-08-13). Port 8000 serves a different application. The webhook feature therefore cannot be exercised end-to-end in any environment; only unit-level verification was possible.
Reproduction:
Expected: the devforge API is deployed (port 8081 up) so webhook endpoints and session-event delivery can be verified live.
Actual: nothing is deployed; the feature is dead-on-arrival for any user.
Kanban card: t_223849fd (probe finding 5, follow-up to closed Mark/devforge#17).
Triaged: devforge API service not deployed; container missing on compose port 8081. Ops-debt, fixable.
Verification 2026-09-18: Commit
7db1598(fix(deploy): add missing API runtime deps and shorten 0009 revision id) is confirmed onorigin/main— adds cryptography + filelock toservices/api/requirements.txtand renames the 0009 alembic revision id to fit VARCHAR(32). However, the live acceptance criterion ("API deployed (port 8081 up)") is not currently satisfied:ss -ltn | grep 8081returns nothing, nodevforgecontainer inpodman ps -aordocker ps -a, andcurl localhost:8081/health→ connection refused. The 8081 listener that existed at the 2026-08-14 audit is gone — the API is not running on this host. Issue remains open pending re-deployment. Re-dispatching a fresh triage/run card to drive deployment of the currentmainso the API comes up and this issue can be closed.Closed: devforge API now deployed and answering live on port 8081.
Verification (2026-09-18, host
blackhole)ss -ltn | grep ':8081 '→LISTEN 0 4096 *:8081 *:*curl -sS http://localhost:8081/health→{"ok":true}curl -sS -H "X-DEVFORGE-KEY: $DEVFORGE_API_KEY" http://localhost:8081/webhooks/events→{"success":true,"event_types":["session.created","session.started","session.stopped","session.deleted","session.profile_changed","snapshot.created","snapshot.restored","quota.exceeded"]}(8 event types, matches expected)docker compose psshowsdevforge_api_1 Up (:8081->8081),devforge_db_1 Up (healthy),devforge_redis_1 Up (healthy)Fix that landed this
The blocker was two-fold, addressed in commit
7db1598onorigin/main— "fix(deploy): add missing API runtime deps and shorten 0009 revision id":services/api/requirements.txtwas missingcryptographyandfilelock, causingModuleNotFoundErrorat uvicorn start in any fresh build.0009_add_quota_fields_and_user_id.pyexceeded alembic'sversion_num VARCHAR(32)column on Postgres, soalembic upgrade headaborted before uvicorn could launch. Renamed to0009_add_quota_fields.py.Both issues are visible in the deployed image: the API container's
pip showlistscryptography-42.0.8andfilelock-3.13.1, and the migration runs to head.How deployed
Project name
devforge(directory basename); rootless-podman-socket selection needed because/var/run/docker.socksymlinks to root's podman socket, not the user one (/run/user/1000/podman/podman.sock). Existingdocker-compose.override.yml(user=0:0 for rootless socket writes) is in place.Note on port 5432 collision
nodedesk_dbwas holding host port 5432; it was stopped for the duration of the deploy (matching the plan in.kilo/plans/issue-46-deploy-api-service.mdR1 mitigation).pg-nodedesk(port 5433) and the forgejo runners were untouched.nodedesk_dbcan be restarted at any time — its host port is bound to devforge'sdbcontainer now and would conflict; either stop nodedesk_db permanently or edit compose to remap (downstream operator decision per the plan).Acceptance
This satisfies all 5 acceptance criteria from the verification card (
t_53ad22b5) and the deploy card (t_b7b501c2). The live webhook feature called out by Mark/devforge#17 is now reachable end-to-end; subsequent dispatches on issues #42 and #44 can exercise their webhooks dispatch wiring against the real API.