Implement C transport library and Common Lisp client bridge #3
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
nsaspy/cl-discord-self#3
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?
Depends on
Issue #2 is not a prerequisite for fixture-only C transport work. Compatibility manifests and upstream-oracle selection must not block this implementation.
Goal
Implement
libcldiscordcurlbehind the committed ABI and connect it to the existing Common Lisp client transport protocol, producing a runnable Common Lisp client that uses the C transport library against local fixture servers without contacting Discord.Required first vertical slice
libcldiscordcurlC library under Nixtransport-*generic functionsFollow-on scope in this issue
Constraints
CURL*, socket descriptor, callback pointer, or native allocation address crosses the public boundaryExit gate
AGENTS.mdNext-layer execution prompt
You are implementing Issue #3 in
lost-rob0t/cl-discord-self.Read the repository-root
AGENTS.mdcompletely before changing anything. Treat its merge-on-green policy as mandatory. Read Issue #3 and the merged client-core implementation from PR #15. Do not work on compatibility manifests, upstream-oracle selection, StarIntel adapters, or live Discord connectivity in this pass.Objective
Deliver the first runnable Common Lisp client path that uses the C transport library against loopback fixture servers.
Branch
Create or use
codex/issue-3-c-transport-a1from the currentmain. Do not stack on another unmerged branch.Required implementation
libcldiscordcurlC library under Nix using the committed public header.cdc_abi_version, runtime/C-library version reporting,cdc_runtime_create,cdc_poll, bounded shutdown, and destroy.cdc_pollreturns one C-allocated event transferred to the caller;cdc_event_freereleases it exactly once.cdc_http_submit.transport-open,transport-receive,transport-send,transport-close, andtransport-open-pprotocol where applicable. Do not expose C pointers through the public Lisp API.make-client/start-client/run-client/poll-event/stop-clientlifecycle through the C transport adapter in an integration test.Engineering constraints
CURL*, socket descriptor, callback pointer, or allocation address crosses the ABI.Validation
Run and record:
nix flake check -L --no-update-lock-fileReview the complete diff for ownership leaks, unbounded queues, secret exposure, hidden C handles, unrelated work, and accidental live-network access.
PR and merge
Open a non-draft PR linked to Issue #3 once the vertical slice is complete. Include exact commands and results, skipped checks, ownership rules, and remaining WebSocket follow-up. Watch the exact current head SHA. When CI is green, GitHub reports the PR mergeable, and there is no unresolved blocking thread or explicit blocker, merge immediately. Repository auto-merge is disabled, so perform a direct merge using the verified head SHA. Then continue from updated
main.