Skip to the page

Invented example · built on Kindling · Why Kindling · The library · The spec · The Circular

Foul Weather Friendsmutual aid in and around Port Ellery

5 Under the hood

How the lists stay up

Foul Weather Friends is a Kindling Pool host with four Pools on one domain: three public and copied, one unlisted and never copied. Here is how the copies, the sheet, email and the block lists work, every setting and file, and what the v0.1 schema cannot say yet, starting with copies.

In plain words

Six things that make it work

The copies

Each public list is one JSON file §3.1. Our site serves the original. The Port Ellery Free Library copies it every hour, byte for byte, and serves the copy from its own domain; when a keeper emails the library about a withdrawal, it copies again at once. The copies keep the same id and the same entries, with every consent proof. We publish a SHA-256 of each file so anyone can check a copy against the original.

The printed sheet

Printed on Sundays from the three public files. It carries every person’s name, verification level in words, their own words and their email address, and no street addresses. It cannot be updated, so a withdrawal is struck through by hand the same day at each place it hangs.

Email is the floor

Every message is structured email §6.1: from one person’s address to another’s, validated against the message schema §6.2. Our site is never in the path, so its outage cannot stop a message. When a list was read from a copy, the message still names the original in via_pool and adds a header saying where the list was read.

Nobody owns the directory

Our discovery file lists the three public Pools §8.3 §10.1. Any registry may list them §8.5, the Circular reads them, and any client may read them by the members’ consent. The Check-In Circle is in none of these.

If we stop

Every Pool has a second keeper or a copy. A Pool whose keepers take no action for 90 days is marked dormant and any active member may nominate a new keeper §9.1 §9.3. If our domain lapsed, the library’s copies would still hold the same people and the same yeses.

Safety that travels

Every file subscribes to the Kindling public block list and the Circular consortium’s §7.3. Both are hosted elsewhere and both subscriptions are in every copy, so the check still runs when our site is down.

Honest limits

What the v0.1 schema can’t say yet

Where the specification text and a schema disagree, our JSON follows the schema. The first seven gaps are about copies and outages, which is what this site is for. The rest touch every Kindling site.

  1. v0.1 has no word for a copy.

    §3.1 lets a Pool be served “from a public Git repository or from a Pool API endpoint”, and §8.2 asks only that “the URL resolves to a valid Pool manifest”. Nothing says two addresses hold the same Pool. The manifest has an id, but no field for its own address or for its copies, so we name them in a sentence in governance_rules and in copies.json, a small file of our own that no Kindling reader is required to understand.

  2. A Pool is known by its address.

    A message’s via_pool, a handshake’s pool.url, a pool-mates-only rule §7.2 and a block list’s pool_url entries all key on one address. A client reading the library’s copy would, by default, treat it as a different Pool: a block-list entry against our original would miss the copy, and a pool-mates rule would fail. Our demo uses the original’s address for every check, and says so; another client would need to be told.

  3. Nothing proves a copy is unaltered.

    No field signs a manifest or carries a checksum. We publish a SHA-256 of each file in copies.json and on each list’s page, so a reader can compare. Cryptographic identity is planned for v0.2 §4.6; it is not yet clear whether it will cover whole manifests.

  4. Withdrawal says nothing about copies.

    §5.3 requires a withdrawal to be processed within 60 seconds of receipt, by the implementation that receives it. A copy is not told. We email the library’s copy at once and strike printed lines by hand the same day, but a printed sheet cannot be recalled, and anyone’s private copy stays as it was until they refresh it.

  5. A copy cannot be announced as a copy.

    The discovery file lists Pools “on the domain” §10.2. If the library listed our Pools in its own discovery file, a crawler or registry would count each one twice, with two addresses. So the library lists none of ours, and the copies are found only through our sentence, our sheet and copies.json.

  6. There is no status for “the host is down”.

    A Pool is active, dormant or archived §9.1 §9.4. A host that is unreachable is none of these, and a copy has no way to say that the original is down or that it is serving in its place.

  7. Continuity assumes the host survives.

    The curator transition in §9.3 happens inside a Pool at its address. If our domain lapsed, a new host would serve the same file at a new address, and no field says the Pool moved; every consent proof points to a handshake sent from the old one.

  8. Who checks on whom has no field, and that is fine.

    The Check-In Circle’s pairings are agreed by email and written nowhere. We would not want a field for them. But unlisted is not private: the protocol has no access control on a manifest §3.1, so anyone holding the circle’s address can read who is in it. Our care is in how the address travels and what members’ pages say.

  9. Level names differ between the text and the schema.

    §4.5 names email-verified, oauth-verified, curator-vouched and unverified. The schemas say email, oauth, curator-vouched, unverified and cryptographic, and a curator can only be email, oauth or cryptographic. Our JSON follows the schemas; our pages and the sheet use the words.

  10. The window is configurable in text, not in the manifest.

    §5.2 says the 14-day window is “configurable per Pool”. There is no field for it, so each request carries it in expires_at. We use the default.

  11. Message types and field names differ.

    §6.3 lists four message types; the schema has six, adding withdrawal and system. §6.2 calls the Pool reference pool_ref; the schema calls it via_pool. §12.1 names kindling_version; every schema uses schema_version. §10.2 names pool_url and a per-Pool curator_contact; the well-known schema uses manifest_url, with one contact on operator. Our JSON follows the schemas.

  12. No provenance field on parsed profiles.

    §2.3 names extraction_source, but the parsed-profile schema has no such field and forbids extra ones. Our lines cannot say which words were marked up on a person’s page and which were inferred.

Settings

What we chose, and why

SettingValueSpecWhy we chose it
Where each Pool livesa JSON file; original on our domain§3.1A file can be copied and printed. That is the whole idea.
Copiesthe library, hourly; a printed sheet, Sundays§3.1 §8.2So the list survives our outage. Named in governance_rules, because v0.1 has no field.
Visibility, three listspublic§3.2 §8.3Anyone looking for a ladder should find one; any client may read them.
Visibility, the Check-In Circleunlisted§3.2 §8.2Its address travels by hand. Never copied, printed or read by an app.
Consent, Lend and Borrow and Mealsuniversal-opt-in§3.2 §5.2Anyone may be sent a link; only the person says yes.
Consent, Rides and the circlevouching-required§3.2 §4.4 §5.4Cyrus rides along with each driver; Bet or Maggie knocks on each door. The vouch counts in that Pool only.
Who is listedlenders, drivers, cooks, circle members§5.1People who need help are never listed. They write, and nobody else learns they asked.
Lenders’, drivers’ and cooks’ accept_fromverified§7.1 §7.2Borrowers are not on the list, so a pool-mates-only rule would lock them out.
Circle members’ accept_fromshared-pool§7.2Only people in the circle can write to people in the circle.
Pool minimum sender verificationemail (Rides, the circle); not set (others)§3.3 §7.1Nobody unverified can write to a driver or to someone who lives alone.
Block listsKindling public · Circular consortium§7.3Hosted elsewhere, and written into every copy.
Handshake window14 days, in each request’s expires_at§5.2The default. v0.1 has no manifest field for it.
Auto-acceptnone§5.5Every listing here was a decision someone made at their own door or inbox.
Withdrawaloriginal within 60 seconds; library at once; sheets by hand the same day§5.3The spec speaks only of the original. We extend it to every copy we know of.
Messagesintro and reply, by email, via_pool = the original§6.1 §6.2 §6.3Email works when we do not.
Discoverywell-known file with the three public Pools§8.3 §10.1 §10.2The library’s copies are not in any discovery file; see the gaps.
Continuityco-keepers on two lists; copies of three§9.1 §9.3So the lists outlive any one of us.
kindling_noindexfalse for every member§2.7Privacy inside a Pool comes from visibility, never from noindex.
Moneynone at the connection layer§1.3Nobody pays. The domain comes from a jar; the library and the hall donate the rest.

The files

Every document

Each Kindling file below validates against the repository’s JSON Schemas. copies.json is ours, and says so inside.

Discovery

The well-known file

/.well-known/kindling-pool

File: .well-known/kindling-pool · operator Foul Weather Friends, a mutual-aid network in and around Port Ellery, keepers@foulweatherfriends.example

It lists the three public Pools. The Check-In Circle is left out on purpose, and is in no registry §8.3 §8.4. The library’s copies are in no discovery file at all; see gap 5.

PoolVisibilityStatusIntentUpdated
Lend and Borrow
https://foulweatherfriends.example/pools/lend-and-borrow.json
publicactivemutual-aid, lending, tools27 September 2026
Rides to Appointments
https://foulweatherfriends.example/pools/rides-to-appointments.json
publicactivemutual-aid, rides, carpool5 September 2026
Meals When It’s Hard
https://foulweatherfriends.example/pools/meals-when-its-hard.json
publicactivemutual-aid, meals, cooking6 September 2026
The raw JSON
{
  "schema_version": "0.1",
  "pools": [
    {
      "manifest_url": "https://foulweatherfriends.example/pools/lend-and-borrow.json",
      "name": "Lend and Borrow",
      "intent_tags": [
        "mutual-aid",
        "lending",
        "tools"
      ],
      "visibility": "public",
      "status": "active",
      "geographic_scope": {
        "city": "Port Ellery",
        "country": "United States"
      },
      "last_updated": "2026-09-27T21:10:00Z"
    },
    {
      "manifest_url": "https://foulweatherfriends.example/pools/rides-to-appointments.json",
      "name": "Rides to Appointments",
      "intent_tags": [
        "mutual-aid",
        "rides",
        "carpool"
      ],
      "visibility": "public",
      "status": "active",
      "geographic_scope": {
        "city": "Port Ellery",
        "country": "United States"
      },
      "last_updated": "2026-09-05T12:30:00Z"
    },
    {
      "manifest_url": "https://foulweatherfriends.example/pools/meals-when-its-hard.json",
      "name": "Meals When It’s Hard",
      "intent_tags": [
        "mutual-aid",
        "meals",
        "cooking"
      ],
      "visibility": "public",
      "status": "active",
      "geographic_scope": {
        "city": "Port Ellery",
        "country": "United States"
      },
      "last_updated": "2026-09-06T19:40:00Z"
    }
  ],
  "operator": {
    "name": "Foul Weather Friends, a mutual-aid network in and around Port Ellery",
    "contact": "keepers@foulweatherfriends.example",
    "url": "https://foulweatherfriends.example"
  }
}

Manifests

Four Pools, in readable form

Lend and Borrow

File: pools/lend-and-borrow.json · served at foulweatherfriends.example/pools/lend-and-borrow.json

schema_version
0.1
id
lend-and-borrow
curator
Elena Vasquez (primary) elena@mail.example Email verified
Bet Larkin bet.larkin@mail.example Signed in with OAuth
charter
Neighbors in and around Port Ellery who will lend what they have: tools, ladders, a truck, a generator, a wet vacuum, a roof tarp. Each person says on their own page what they can lend; you write to them by email and they say yes or no each time. Nothing is rented and nobody pays. Borrowers are never listed.
intent_tags
mutual-aid, lending, tools
visibility
public
consent_model
universal-opt-in
curator_contact
keepers@foulweatherfriends.example
geographic_scope
Port Ellery, United States
governance_rules
Copies: this file is copied unchanged to the Port Ellery Free Library every hour, at https://board.elleryfreelibrary.example/copies/foul-weather-friends/pools/lend-and-borrow.json, and printed each Sunday on the sheet at the Mariners’ Hall, the library and the ferry waiting room. The original is https://foulweatherfriends.example/pools/lend-and-borrow.json, and every copy is the same Pool, not a new one. Anyone may keep a copy. v0.1 has no field for copies, so this sentence carries them. A withdrawal is processed on the original within 60 seconds, reaches the library’s copy by email at once, and is struck through by hand on every printed sheet the same day.
messaging_preferences
https://protocol.kindling.foundation/blocklist.json
https://thecircular.example/blocklist.json
minimum_sender_verification: not set
status
active · created 10 January 2026 · updated 27 September 2026
copies (ours)
board.elleryfreelibrary.example/copies/foul-weather-friends/pools/lend-and-borrow.json · printed Sundays · SHA-256 now 938f 75fc bd7b 1d76
EntryLevelConsent proofAddedaccept_from
Elena Vasquez
https://elena-v.notion.example/tool-shelf
Email verifiedemail-link
hs-foul-weather-friends-lend-and-borrow-elena
12 January 2026verified
June Okafor
https://june-okafor.notion.example/lend
Email verifiedemail-link
hs-foul-weather-friends-lend-and-borrow-june
18 January 2026verified
Walt Kessler
https://walt-kessler.example/lend
Email verifiedemail-link
hs-foul-weather-friends-lend-and-borrow-walt
2 February 2026verified
Wes Adeyemi
https://wes-mixes.example/lend
Signed in with OAuthoauth
hs-foul-weather-friends-lend-and-borrow-wes
20 February 2026verified
Marcus Hale
https://marcus-hale.notion.example/lend
Email verifiedemail-link
hs-foul-weather-friends-lend-and-borrow-marcus
14 March 2026verified
Maggie O’Rourke
https://maggie-walks.example/lend
Email verifiedemail-link
hs-foul-weather-friends-lend-and-borrow-maggie
7 April 2026verified
Pim Adair
https://pim-adair.carrd.example
Email verifiedemail-link
hs-foul-weather-friends-lend-and-borrow-pim.adair
11 June 2026verified
The raw JSON
{
  "schema_version": "0.1",
  "id": "lend-and-borrow",
  "name": "Lend and Borrow",
  "curator": [
    {
      "identity": "elena@mail.example",
      "display_name": "Elena Vasquez",
      "verification_level": "email",
      "primary": true
    },
    {
      "identity": "bet.larkin@mail.example",
      "display_name": "Bet Larkin",
      "verification_level": "oauth",
      "primary": false
    }
  ],
  "intent_tags": [
    "mutual-aid",
    "lending",
    "tools"
  ],
  "visibility": "public",
  "consent_model": "universal-opt-in",
  "curator_contact": "keepers@foulweatherfriends.example",
  "charter": "Neighbors in and around Port Ellery who will lend what they have: tools, ladders, a truck, a generator, a wet vacuum, a roof tarp. Each person says on their own page what they can lend; you write to them by email and they say yes or no each time. Nothing is rented and nobody pays. Borrowers are never listed.",
  "geographic_scope": {
    "city": "Port Ellery",
    "country": "United States"
  },
  "governance_rules": "Copies: this file is copied unchanged to the Port Ellery Free Library every hour, at https://board.elleryfreelibrary.example/copies/foul-weather-friends/pools/lend-and-borrow.json, and printed each Sunday on the sheet at the Mariners’ Hall, the library and the ferry waiting room. The original is https://foulweatherfriends.example/pools/lend-and-borrow.json, and every copy is the same Pool, not a new one. Anyone may keep a copy. v0.1 has no field for copies, so this sentence carries them. A withdrawal is processed on the original within 60 seconds, reaches the library’s copy by email at once, and is struck through by hand on every printed sheet the same day.",
  "messaging_preferences": {
    "block_list_subscriptions": [
      "https://protocol.kindling.foundation/blocklist.json",
      "https://thecircular.example/blocklist.json"
    ]
  },
  "status": "active",
  "created_at": "2026-01-10T18:00:00Z",
  "updated_at": "2026-09-27T21:10:00Z",
  "entries": [
    {
      "profile_url": "https://june-okafor.notion.example/lend",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://june-okafor.notion.example/lend",
        "display_name": "June Okafor",
        "pronouns": "she/her",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "lending",
          "generator",
          "tools",
          "mutual-aid"
        ],
        "about": "Retired shipyard electrician. Can lend a portable generator and two heavy outdoor cords, and will come and show you how to run it outside, well away from doors and windows. Also a voltage tester and a good flashlight.",
        "contact_methods": [
          {
            "type": "email",
            "value": "june@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "email",
          "verified_at": "2026-01-18T10:00:00Z"
        },
        "messaging_preferences": {
          "accept_from": "verified",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-01-18T10:00:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-01-18T10:00:00Z",
      "consent_proof": {
        "handshake_id": "hs-foul-weather-friends-lend-and-borrow-june",
        "accepted_at": "2026-01-18T10:00:00Z",
        "method": "email-link"
      },
      "verification_level": "email",
      "added_at": "2026-01-18T10:00:00Z",
      "added_by": "elena@mail.example"
    },
    {
      "profile_url": "https://elena-v.notion.example/tool-shelf",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://elena-v.notion.example/tool-shelf",
        "display_name": "Elena Vasquez",
        "pronouns": "she/her",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "lending",
          "tools",
          "ladder",
          "repair"
        ],
        "about": "Keeps the Fix-It Friday tool shelf in the library basement: two stepladders, pipe wrenches, clamps, a sewing machine and a soldering iron. Borrow on a Friday, or write and I will meet you.",
        "contact_methods": [
          {
            "type": "email",
            "value": "elena@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "email",
          "verified_at": "2026-01-12T19:30:00Z"
        },
        "messaging_preferences": {
          "accept_from": "verified",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-01-12T19:30:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-01-12T19:30:00Z",
      "consent_proof": {
        "handshake_id": "hs-foul-weather-friends-lend-and-borrow-elena",
        "accepted_at": "2026-01-12T19:30:00Z",
        "method": "email-link"
      },
      "verification_level": "email",
      "added_at": "2026-01-12T19:30:00Z",
      "added_by": "elena@mail.example"
    },
    {
      "profile_url": "https://walt-kessler.example/lend",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://walt-kessler.example/lend",
        "display_name": "Walt Kessler",
        "pronouns": "he/him",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "lending",
          "truck",
          "ladder",
          "tools"
        ],
        "about": "Retired harbor master. Can lend a pickup with a tow hitch and a 24-foot extension ladder. The chainsaw only comes with me attached.",
        "contact_methods": [
          {
            "type": "email",
            "value": "walt@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "email",
          "verified_at": "2026-02-02T08:15:00Z"
        },
        "messaging_preferences": {
          "accept_from": "verified",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-02-02T08:15:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-02-02T08:15:00Z",
      "consent_proof": {
        "handshake_id": "hs-foul-weather-friends-lend-and-borrow-walt",
        "accepted_at": "2026-02-02T08:15:00Z",
        "method": "email-link"
      },
      "verification_level": "email",
      "added_at": "2026-02-02T08:15:00Z",
      "added_by": "elena@mail.example"
    },
    {
      "profile_url": "https://wes-mixes.example/lend",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://wes-mixes.example/lend",
        "display_name": "Wes Adeyemi",
        "pronouns": "he/him",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "lending",
          "generator",
          "lights",
          "wet-vac"
        ],
        "about": "Sound engineer. Can lend a small, quiet generator from outdoor shows, two work lights and a wet-dry vacuum for a flooded basement. Evenings are easiest.",
        "contact_methods": [
          {
            "type": "email",
            "value": "wes@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "oauth",
          "verified_at": "2026-02-20T22:40:00Z",
          "verifier": "google"
        },
        "messaging_preferences": {
          "accept_from": "verified",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-02-20T22:40:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-02-20T22:40:00Z",
      "consent_proof": {
        "handshake_id": "hs-foul-weather-friends-lend-and-borrow-wes",
        "accepted_at": "2026-02-20T22:40:00Z",
        "method": "oauth"
      },
      "verification_level": "oauth",
      "added_at": "2026-02-20T22:40:00Z",
      "added_by": "elena@mail.example"
    },
    {
      "profile_url": "https://marcus-hale.notion.example/lend",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://marcus-hale.notion.example/lend",
        "display_name": "Marcus Hale",
        "pronouns": "he/him",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "lending",
          "tarp",
          "tools"
        ],
        "about": "Carpenter. Can lend sawhorses, a circular saw and a roof tarp big enough for most houses on the hill, and can help put it up once the wind drops.",
        "contact_methods": [
          {
            "type": "email",
            "value": "marcus@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "email",
          "verified_at": "2026-03-14T17:05:00Z"
        },
        "messaging_preferences": {
          "accept_from": "verified",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-03-14T17:05:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-03-14T17:05:00Z",
      "consent_proof": {
        "handshake_id": "hs-foul-weather-friends-lend-and-borrow-marcus",
        "accepted_at": "2026-03-14T17:05:00Z",
        "method": "email-link"
      },
      "verification_level": "email",
      "added_at": "2026-03-14T17:05:00Z",
      "added_by": "elena@mail.example"
    },
    {
      "profile_url": "https://maggie-walks.example/lend",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://maggie-walks.example/lend",
        "display_name": "Maggie O’Rourke",
        "pronouns": "she/her",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "lending",
          "camp-stove",
          "kitchen"
        ],
        "about": "Can lend two folding tables, a camp stove and a soup pot that feeds twenty. Also knows who on the harbor loop has what.",
        "contact_methods": [
          {
            "type": "email",
            "value": "maggie@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "email",
          "verified_at": "2026-04-07T09:20:00Z"
        },
        "messaging_preferences": {
          "accept_from": "verified",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-04-07T09:20:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-04-07T09:20:00Z",
      "consent_proof": {
        "handshake_id": "hs-foul-weather-friends-lend-and-borrow-maggie",
        "accepted_at": "2026-04-07T09:20:00Z",
        "method": "email-link"
      },
      "verification_level": "email",
      "added_at": "2026-04-07T09:20:00Z",
      "added_by": "elena@mail.example"
    },
    {
      "profile_url": "https://pim-adair.carrd.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://pim-adair.carrd.example",
        "display_name": "Pim Adair",
        "pronouns": "they/them",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "lending",
          "cargo-bike",
          "bikes",
          "mutual-aid"
        ],
        "about": "Bike mechanic at the co-op on Chandler Street. Can lend a cargo bike with a rain cover, and a trailer that carries a week of groceries.",
        "contact_methods": [
          {
            "type": "email",
            "value": "pim.adair@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "email",
          "verified_at": "2026-06-11T18:00:00Z"
        },
        "messaging_preferences": {
          "accept_from": "verified",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-06-11T18:00:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-06-11T18:00:00Z",
      "consent_proof": {
        "handshake_id": "hs-foul-weather-friends-lend-and-borrow-pim.adair",
        "accepted_at": "2026-06-11T18:00:00Z",
        "method": "email-link"
      },
      "verification_level": "email",
      "added_at": "2026-06-11T18:00:00Z",
      "added_by": "elena@mail.example"
    }
  ]
}

Rides to Appointments

File: pools/rides-to-appointments.json · served at foulweatherfriends.example/pools/rides-to-appointments.json

schema_version
0.1
id
rides-to-appointments
curator
Cyrus Otero (primary) cyrus.otero@mail.example Signed in with OAuth
charter
Neighbors who will drive you to an appointment, the pharmacy or the ferry, and wait if you like. Cyrus rides along once with every new driver before vouching for them here. Write a day ahead when you can; on storm days, write anyway. Nobody pays for a ride. People who ask for rides are never listed.
intent_tags
mutual-aid, rides, carpool
visibility
public
consent_model
vouching-required
curator_contact
keepers@foulweatherfriends.example
geographic_scope
Port Ellery, United States
governance_rules
Vouching-required: Cyrus rides along once with each new driver before vouching; the vouch counts in this Pool only. Copies: this file is copied unchanged to the Port Ellery Free Library every hour, at https://board.elleryfreelibrary.example/copies/foul-weather-friends/pools/rides-to-appointments.json, and printed each Sunday on the sheet at the Mariners’ Hall, the library and the ferry waiting room. The original is https://foulweatherfriends.example/pools/rides-to-appointments.json, and every copy is the same Pool, not a new one. Anyone may keep a copy. v0.1 has no field for copies, so this sentence carries them. A withdrawal is processed on the original within 60 seconds, reaches the library’s copy by email at once, and is struck through by hand on every printed sheet the same day.
messaging_preferences
https://protocol.kindling.foundation/blocklist.json
https://thecircular.example/blocklist.json
minimum_sender_verification: email
status
active · created 20 January 2026 · updated 5 September 2026
copies (ours)
board.elleryfreelibrary.example/copies/foul-weather-friends/pools/rides-to-appointments.json · printed Sundays · SHA-256 now 5ed0 4330 797b 8ccb
EntryLevelConsent proofAddedaccept_from
Cyrus Otero
https://cyrus-otero.example/rides
Signed in with OAuthoauth
hs-foul-weather-friends-rides-to-appointments-cyrus.otero
24 January 2026verified
Bram de Wit
https://bram-dewit.carrd.example/rides
Vouched for by the curatorcurator-vouching
hs-foul-weather-friends-rides-to-appointments-bram
2 March 2026verified
Theo Lindqvist
https://theo-lindqvist.carrd.example/rides
Vouched for by the curatorcurator-vouching
hs-foul-weather-friends-rides-to-appointments-theo
5 September 2026verified
The raw JSON
{
  "schema_version": "0.1",
  "id": "rides-to-appointments",
  "name": "Rides to Appointments",
  "curator": [
    {
      "identity": "cyrus.otero@mail.example",
      "display_name": "Cyrus Otero",
      "verification_level": "oauth",
      "primary": true
    }
  ],
  "intent_tags": [
    "mutual-aid",
    "rides",
    "carpool"
  ],
  "visibility": "public",
  "consent_model": "vouching-required",
  "curator_contact": "keepers@foulweatherfriends.example",
  "charter": "Neighbors who will drive you to an appointment, the pharmacy or the ferry, and wait if you like. Cyrus rides along once with every new driver before vouching for them here. Write a day ahead when you can; on storm days, write anyway. Nobody pays for a ride. People who ask for rides are never listed.",
  "geographic_scope": {
    "city": "Port Ellery",
    "country": "United States"
  },
  "governance_rules": "Vouching-required: Cyrus rides along once with each new driver before vouching; the vouch counts in this Pool only. Copies: this file is copied unchanged to the Port Ellery Free Library every hour, at https://board.elleryfreelibrary.example/copies/foul-weather-friends/pools/rides-to-appointments.json, and printed each Sunday on the sheet at the Mariners’ Hall, the library and the ferry waiting room. The original is https://foulweatherfriends.example/pools/rides-to-appointments.json, and every copy is the same Pool, not a new one. Anyone may keep a copy. v0.1 has no field for copies, so this sentence carries them. A withdrawal is processed on the original within 60 seconds, reaches the library’s copy by email at once, and is struck through by hand on every printed sheet the same day.",
  "messaging_preferences": {
    "block_list_subscriptions": [
      "https://protocol.kindling.foundation/blocklist.json",
      "https://thecircular.example/blocklist.json"
    ],
    "minimum_sender_verification": "email"
  },
  "status": "active",
  "created_at": "2026-01-20T12:00:00Z",
  "updated_at": "2026-09-05T12:30:00Z",
  "entries": [
    {
      "profile_url": "https://cyrus-otero.example/rides",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://cyrus-otero.example/rides",
        "display_name": "Cyrus Otero",
        "pronouns": "he/him",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "rides",
          "mutual-aid"
        ],
        "about": "Drove a school bus for twenty-six years. Drives a van with a fold-down step and room for a walker or a wheelchair. Weekdays, and storm days if the roads are open.",
        "contact_methods": [
          {
            "type": "email",
            "value": "cyrus.otero@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "oauth",
          "verified_at": "2026-01-24T15:00:00Z",
          "verifier": "google"
        },
        "messaging_preferences": {
          "accept_from": "verified",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-01-24T15:00:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-01-24T15:00:00Z",
      "consent_proof": {
        "handshake_id": "hs-foul-weather-friends-rides-to-appointments-cyrus.otero",
        "accepted_at": "2026-01-24T15:00:00Z",
        "method": "oauth"
      },
      "verification_level": "oauth",
      "added_at": "2026-01-24T15:00:00Z",
      "added_by": "cyrus.otero@mail.example"
    },
    {
      "profile_url": "https://bram-dewit.carrd.example/rides",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://bram-dewit.carrd.example/rides",
        "display_name": "Bram de Wit",
        "pronouns": "he/him",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "rides",
          "carpool"
        ],
        "about": "Drives to the coast three days a week with four empty seats. Happy to take you to an appointment on the way and bring you back.",
        "contact_methods": [
          {
            "type": "email",
            "value": "bram@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "curator-vouched",
          "verified_at": "2026-03-02T18:10:00Z",
          "verifier": "cyrus.otero@mail.example"
        },
        "messaging_preferences": {
          "accept_from": "verified",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-03-02T18:10:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-03-02T18:10:00Z",
      "consent_proof": {
        "handshake_id": "hs-foul-weather-friends-rides-to-appointments-bram",
        "accepted_at": "2026-03-02T18:10:00Z",
        "method": "curator-vouching"
      },
      "verification_level": "curator-vouched",
      "added_at": "2026-03-02T18:10:00Z",
      "added_by": "cyrus.otero@mail.example"
    },
    {
      "profile_url": "https://theo-lindqvist.carrd.example/rides",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://theo-lindqvist.carrd.example/rides",
        "display_name": "Theo Lindqvist",
        "pronouns": "he/him",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "rides",
          "mutual-aid"
        ],
        "about": "Works from home, so weekday mornings are free. Will drive you to an appointment and wait with a book.",
        "contact_methods": [
          {
            "type": "email",
            "value": "theo@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "curator-vouched",
          "verified_at": "2026-09-05T12:30:00Z",
          "verifier": "cyrus.otero@mail.example"
        },
        "messaging_preferences": {
          "accept_from": "verified",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-09-05T12:30:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-09-05T12:30:00Z",
      "consent_proof": {
        "handshake_id": "hs-foul-weather-friends-rides-to-appointments-theo",
        "accepted_at": "2026-09-05T12:30:00Z",
        "method": "curator-vouching"
      },
      "verification_level": "curator-vouched",
      "added_at": "2026-09-05T12:30:00Z",
      "added_by": "cyrus.otero@mail.example"
    }
  ]
}

Meals When It’s Hard

File: pools/meals-when-its-hard.json · served at foulweatherfriends.example/pools/meals-when-its-hard.json

schema_version
0.1
id
meals-when-its-hard
curator
Hester Oduya (primary) hester.oduya@mail.example Email verified
charter
Neighbors who will cook for a household going through something: an illness, a new baby, a death, a long week. Hester keeps the list and the calendar. Say what you cook and how often. People who need meals are never listed: a friend writes to Hester, with that household’s yes, and Hester asks the cooks.
intent_tags
mutual-aid, meals, cooking
visibility
public
consent_model
universal-opt-in
curator_contact
keepers@foulweatherfriends.example
geographic_scope
Port Ellery, United States
governance_rules
Copies: this file is copied unchanged to the Port Ellery Free Library every hour, at https://board.elleryfreelibrary.example/copies/foul-weather-friends/pools/meals-when-its-hard.json, and printed each Sunday on the sheet at the Mariners’ Hall, the library and the ferry waiting room. The original is https://foulweatherfriends.example/pools/meals-when-its-hard.json, and every copy is the same Pool, not a new one. Anyone may keep a copy. v0.1 has no field for copies, so this sentence carries them. A withdrawal is processed on the original within 60 seconds, reaches the library’s copy by email at once, and is struck through by hand on every printed sheet the same day.
messaging_preferences
https://protocol.kindling.foundation/blocklist.json
https://thecircular.example/blocklist.json
minimum_sender_verification: not set
status
active · created 10 February 2026 · updated 6 September 2026
copies (ours)
board.elleryfreelibrary.example/copies/foul-weather-friends/pools/meals-when-its-hard.json · printed Sundays · SHA-256 now 3a2c caf2 24cd 29a2
EntryLevelConsent proofAddedaccept_from
Hester Oduya
https://hester-oduya.notion.example
Email verifiedemail-link
hs-foul-weather-friends-meals-when-its-hard-hester.oduya
12 February 2026verified
Carl Jansen
https://carl-jansen.notion.example/soup
Email verifiedemail-link
hs-foul-weather-friends-meals-when-its-hard-carl
14 February 2026verified
Rosalind Achebe
https://rosalind-achebe.carrd.example/bread
Email verifiedemail-link
hs-foul-weather-friends-meals-when-its-hard-rosalind
4 May 2026verified
Theo Lindqvist
https://theo-lindqvist.carrd.example/meals
Email verifiedemail-link
hs-foul-weather-friends-meals-when-its-hard-theo
6 September 2026verified
The raw JSON
{
  "schema_version": "0.1",
  "id": "meals-when-its-hard",
  "name": "Meals When It’s Hard",
  "curator": [
    {
      "identity": "hester.oduya@mail.example",
      "display_name": "Hester Oduya",
      "verification_level": "email",
      "primary": true
    }
  ],
  "intent_tags": [
    "mutual-aid",
    "meals",
    "cooking"
  ],
  "visibility": "public",
  "consent_model": "universal-opt-in",
  "curator_contact": "keepers@foulweatherfriends.example",
  "charter": "Neighbors who will cook for a household going through something: an illness, a new baby, a death, a long week. Hester keeps the list and the calendar. Say what you cook and how often. People who need meals are never listed: a friend writes to Hester, with that household’s yes, and Hester asks the cooks.",
  "geographic_scope": {
    "city": "Port Ellery",
    "country": "United States"
  },
  "governance_rules": "Copies: this file is copied unchanged to the Port Ellery Free Library every hour, at https://board.elleryfreelibrary.example/copies/foul-weather-friends/pools/meals-when-its-hard.json, and printed each Sunday on the sheet at the Mariners’ Hall, the library and the ferry waiting room. The original is https://foulweatherfriends.example/pools/meals-when-its-hard.json, and every copy is the same Pool, not a new one. Anyone may keep a copy. v0.1 has no field for copies, so this sentence carries them. A withdrawal is processed on the original within 60 seconds, reaches the library’s copy by email at once, and is struck through by hand on every printed sheet the same day.",
  "messaging_preferences": {
    "block_list_subscriptions": [
      "https://protocol.kindling.foundation/blocklist.json",
      "https://thecircular.example/blocklist.json"
    ]
  },
  "status": "active",
  "created_at": "2026-02-10T12:00:00Z",
  "updated_at": "2026-09-06T19:40:00Z",
  "entries": [
    {
      "profile_url": "https://hester-oduya.notion.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://hester-oduya.notion.example",
        "display_name": "Hester Oduya",
        "pronouns": "she/her",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "mutual-aid",
          "meals",
          "cooking",
          "curating"
        ],
        "about": "Keeps the kitchen at the Mariners’ Hall on Water Street, and its office copier. Prints the Foul Weather Friends sheet every Sunday and keeps the meals calendar.",
        "contact_methods": [
          {
            "type": "email",
            "value": "hester.oduya@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "email",
          "verified_at": "2026-02-12T13:00:00Z"
        },
        "messaging_preferences": {
          "accept_from": "verified",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-02-12T13:00:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-02-12T13:00:00Z",
      "consent_proof": {
        "handshake_id": "hs-foul-weather-friends-meals-when-its-hard-hester.oduya",
        "accepted_at": "2026-02-12T13:00:00Z",
        "method": "email-link"
      },
      "verification_level": "email",
      "added_at": "2026-02-12T13:00:00Z",
      "added_by": "hester.oduya@mail.example"
    },
    {
      "profile_url": "https://carl-jansen.notion.example/soup",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://carl-jansen.notion.example/soup",
        "display_name": "Carl Jansen",
        "pronouns": "he/him",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "meals",
          "cooking"
        ],
        "about": "Retired ferry mechanic who cooks too much soup. Can bring a pot of it twice a week, and bread if the bakery is open.",
        "contact_methods": [
          {
            "type": "email",
            "value": "carl@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "email",
          "verified_at": "2026-02-14T17:20:00Z"
        },
        "messaging_preferences": {
          "accept_from": "verified",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-02-14T17:20:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-02-14T17:20:00Z",
      "consent_proof": {
        "handshake_id": "hs-foul-weather-friends-meals-when-its-hard-carl",
        "accepted_at": "2026-02-14T17:20:00Z",
        "method": "email-link"
      },
      "verification_level": "email",
      "added_at": "2026-02-14T17:20:00Z",
      "added_by": "hester.oduya@mail.example"
    },
    {
      "profile_url": "https://rosalind-achebe.carrd.example/bread",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://rosalind-achebe.carrd.example/bread",
        "display_name": "Rosalind Achebe",
        "pronouns": "she/her",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "meals",
          "baking"
        ],
        "about": "Bakes on Tuesdays and Fridays and always makes one loaf too many. Happy to leave it on your step.",
        "contact_methods": [
          {
            "type": "email",
            "value": "rosalind@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "email",
          "verified_at": "2026-05-04T10:10:00Z"
        },
        "messaging_preferences": {
          "accept_from": "verified",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-05-04T10:10:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-05-04T10:10:00Z",
      "consent_proof": {
        "handshake_id": "hs-foul-weather-friends-meals-when-its-hard-rosalind",
        "accepted_at": "2026-05-04T10:10:00Z",
        "method": "email-link"
      },
      "verification_level": "email",
      "added_at": "2026-05-04T10:10:00Z",
      "added_by": "hester.oduya@mail.example"
    },
    {
      "profile_url": "https://theo-lindqvist.carrd.example/meals",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://theo-lindqvist.carrd.example/meals",
        "display_name": "Theo Lindqvist",
        "pronouns": "he/him",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "meals",
          "delivery"
        ],
        "about": "Learning to cook for more than one. Will drive anything Hester has cooked to wherever it needs to go.",
        "contact_methods": [
          {
            "type": "email",
            "value": "theo@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "email",
          "verified_at": "2026-09-06T19:40:00Z"
        },
        "messaging_preferences": {
          "accept_from": "verified",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-09-06T19:40:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-09-06T19:40:00Z",
      "consent_proof": {
        "handshake_id": "hs-foul-weather-friends-meals-when-its-hard-theo",
        "accepted_at": "2026-09-06T19:40:00Z",
        "method": "email-link"
      },
      "verification_level": "email",
      "added_at": "2026-09-06T19:40:00Z",
      "added_by": "hester.oduya@mail.example"
    }
  ]
}

The Check-In Circle

File: pools/check-in-circle.json · served at foulweatherfriends.example/pools/check-in-circle.json

schema_version
0.1
id
check-in-circle
curator
Bet Larkin (primary) bet.larkin@mail.example Signed in with OAuth
Maggie O’Rourke maggie@mail.example Email verified
charter
Neighbors who live alone and would like someone to check on them in storms and cold snaps, and neighbors who will do the checking. Bet or Maggie meets each person at their own door first. You choose who checks on you, and they say yes too. Unlisted, never copied and never printed: its address travels by hand.
intent_tags
mutual-aid, check-ins, neighbors
visibility
unlisted
consent_model
vouching-required
curator_contact
keepers@foulweatherfriends.example
geographic_scope
Port Ellery, United States
governance_rules
Unlisted and vouching-required: Bet or Maggie meets each person at their own door before vouching, and the vouch counts in this Pool only. Nobody can put someone else in the circle; a relative or neighbor may tell us about a person, but only that person can say yes. This file is never copied to the library and never printed on the sheet. Each member keeps a card with only their own checkers’ names and email addresses. The pages members keep for the circle name no street and no door; checkers learn an address from the person, by email. Who checks on whom is agreed between the people involved, by email, and written nowhere else, including here. Pausing check-ins or leaving is one email.
messaging_preferences
https://protocol.kindling.foundation/blocklist.json
https://thecircular.example/blocklist.json
minimum_sender_verification: email
status
active · created 1 February 2026 · updated 22 September 2026
copies (ours)
None, ever.

Its entries are left off this page on purpose. The file sits in this example folder only because the example’s world writes every Pool; a real network would not serve it anywhere a stranger could find it. Its address travels by hand from Bet or Maggie, and anyone who holds it can read who is in it: that is the honest limit of unlisted.

Block lists

The two lists every file subscribes to

Messages and handshakes from anything on these lists are refused §7.3, whichever copy of our file a client read.

Kindling public block list

Copy: blocklist.json · published at https://protocol.kindling.foundation/blocklist.json · version 3, 20 September 2026

The block list the Kindling project will publish under SPEC.md §7.3, for identities and implementations with confirmed abuse. The entries here are illustrative until the registry opens. No personal details are ever published.

TypeTargetReasonDetailAdded
implementationscrapekit/0.3scrapingIgnores kindling-noindex and robots signals.2 July 2026
identitypromo-blast@mail.examplespam14 August 2026

The Circular consortium block list

Copy: circular/blocklist.json · published at https://thecircular.example/blocklist.json · version 8, 27 September 2026

Shared by every member of the Circular consortium. Each member subscribes; any member may propose an entry, and two others must second it.

TypeTargetReasonDetailAdded
curator_identitylisted-them-anyway@mail.exampleconsent_violationSubmitted other people’s pages, a whole household’s among them, to Pools without asking any of them.27 September 2026
pool_urlhttps://free-friends-now.example/pools/everyone.jsonconsent_violationListed profiles that never accepted a handshake.26 September 2026
identitybulk-intros@relay.examplespam3 September 2026
implementationscrapekit/0.3scrapingAlso on the Kindling public list.3 July 2026