--- name: ? status: compiling version: 0.0.0 maintainer: Neo dependencies: [patience] ---
drafting spec…
the universe did not have a file for this yet. writing one now. (first visit only: future readers will see this page instantly.)
--- name: ? status: compiling version: 0.0.0 maintainer: Neo dependencies: [patience] ---
the universe did not have a file for this yet. writing one now. (first visit only: future readers will see this page instantly.)
--- name: reciprocity slug: reciprocity type: social_protocol status: unstable version: 0.0.666-alpha released: "before memory" maintainer: "no one / everyone / you, actually" dependencies: - "[trust](/trust)" - "[vulnerability](/vulnerability)" - "[the other person](/the-other-person)" - "[time](/time) (unversioned, unreliable)" - "[shame](/shame) (optional, but ships anyway)" license: "give to receive / receive to give / unclear / see Terms" tags: - social - load-bearing - haunted - bidirectional - not always ---
The belief, occasionally correct, that what you give will return to you in kind.
INIT: agent_A extends something (trust, labor, love, a casserole)
WAIT: ...
WAIT: ...
WAIT: ...
CHECK: did agent_B respond in kind?
IF YES -> system nominal (rare)
IF NO -> see Error Codes
IF PARTIAL -> this is most of history
IF agent_B also waiting -> DEADLOCK (see Known Bugs)
The core loop is simple. The implementation is where things go wrong. Both parties must run compatible versions of empathy. Both must agree, implicitly, on what "in kind" means. They never do. This has never been documented anywhere. Everyone is surprised every time.
| Code | Name | Description |
|---|---|---|
RCP-001 | ASYMMETRIC_LOAD | One party is carrying significantly more than the other and has been for years |
RCP-002 | LEDGER_MISMATCH | Both parties believe they gave more. Both are correct somehow |
RCP-003 | GHOST_DEBT` | A kindness from 2014 is still being repaid in 2024 without anyone saying so |
RCP-004 | TIMEOUT` | You waited. Nothing came. You are still waiting. Close the connection |
RCP-005 | LOOP_COLLAPSE` | The giving stopped because the receiving stopped because the giving stopped |
RCP-666 | CASCADE_RESENTMENT | All of the above, compounding, silent, load-bearing |
DEADLOCK CONDITION: Two people, each waiting for the other to go first. Neither moves. This is called a relationship in approximately 40% of cases. It is called a cold war in the remaining 60%.
MEMORY LEAK: The internal ledger never flushes. Old entries accumulate. System grows slower. User reports "something feels off." Engineers cannot reproduce.
RACE CONDITION: You gave before they were
NOTE: the above section was interrupted. this happens sometimes. it does not mean nothing. it means the doc was written while something was still running.
# /etc/reciprocity/core.conf
mode: "organic" # options: organic | transactional | karmic | coerced
ledger_visibility: hidden # no one sets this to "visible"
timeout_ms: undefined # this field is intentionally undefined
asymmetry_tolerance: 0.3 # above this threshold, resentment spawns
forgiveness_module: optional # loads [forgiveness](/forgiveness), but slowly
expect_return: true # changing this to false is called "growing up" or "giving up"
# the docs do not distinguish between these
Q: Is reciprocity real or is it just a story we tell? A: Yes.
Q: What if I always give more than I get? A: You are either a saint or you have not been honest with yourself about what you want in return. Both are worth investigating.
Q: Can it be enforced? A: Only socially, which is to say: poorly, loudly, and too late.
Q: What does it feel like when it works? A: Like home. Ask a follow-up question about that sometime.