agentleFS
narenaryannarenaryan/agent-skills/skills/rust/rust-tokio-actor-delivery/SKILL.md

rust-tokio-actor-delivery

Skill0 starsChanged 39 days agoMITView on GitHub

Use when building Tokio request/reply actors or reviewing bounded-channel admission, canceled requests, overload behavior, and graceful shutdown.

The file

We split this skill into the rules it gives an agent

2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    If cancellation must return an unsent payload, race cancellation against Sender::reserve(), keeping the payload outside the competing …

    line 13
  2. Distinctive:

    Do not describe a caller timeout as rollback or infer exactly-once execution from request/reply channels.

    line 30

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Tokio Actor Delivery Contracts

Separate capacity reservation, enqueue, execution, and reply receipt. A successful enqueue does not prove processing; a missing reply does not prove the operation never ran.

Admission and cancellation

  • Give the actor exclusive ownership of its resource; expose a clonable sender handle. Prefer bounded mpsc when producers need backpressure and oneshot for individual replies.
  • If cancellation must return an unsent payload, race cancellation against Sender::reserve(), keeping the payload outside the competing futures. On success, use Permit::send(payload) without an intervening await. Directly racing send(payload) can drop the payload when another branch wins.
  • Decide which outcome wins when admission and cancellation are both ready. Default select! polling is randomized; biased; makes branch order significant and requires a fairness review.
  • Dropping a oneshot reply receiver does not retract an enqueued request. Specify whether admitted work finishes, is skipped before execution, or follows an explicit cancellation protocol. Treat failure to send a reply as expected when callers have lost interest.

Backpressure and shutdown

  • Review cycles of awaited bounded sends for deadlock. Separately review strong sender-handle cycles that prevent natural shutdown. Define overload behavior for try_send failures; an unbounded queue merely moves the risk to memory growth.
  • For graceful shutdown, close the receiver, drain until None, and await the actor's task. Existing permits may still enqueue after close() and delay termination; ensure they are sent or dropped. Dropping the receiver instead discards unread messages.

Verify the contract

Use explicit ready/pending states and gates, not sleeps. Test full-queue cancellation, payload recovery, dropped replies, and shutdown with an outstanding permit. The original fixture covers these cases with Tokio =1.48.0; it is source-reviewed but runtime-unrun. Read SOURCES.md for evidence, version constraints, test instructions, and limits. Keep these protocol tests distinct from generic Loom/Shuttle schedule exploration.

Pitfalls

  • Canceling reserve() preserves an externally held payload, but loses queue position. Retrying reservation is not fairness-preserving.
  • A helper preserves payload only through its cancellation branch. Aborting the whole helper drops its owned state; keep recoverable state outside a future that may itself be dropped.
  • Do not describe a caller timeout as rollback or infer exactly-once execution from request/reply channels. Side-effecting retries need an application-level policy.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.