Invented example, from an invented consortium · built on Kindling · Why Kindling · The library · The spec · The Circular

The CircularThe consortium paper · Mondays

An introduction

Circle one. They decide.

On Sunday, 30 August, Ruth Adler asked June Okafor whether she would write the garden column. The ask was a Kindling handshake: June’s page could not go into the paper’s Pool until she said yes (§5.1). She said yes on 1 September. Here is the request as it reached her. Answer it for her; every button works, and nothing leaves this page.

A notice from the column’s keeper · the garden column

Ruth would like to run your page in Circular Correspondents.

From The Circular, on behalf of Ruth Adler Signed in with OAuthSent 30 August

Your ad, as it would runProof

Code given on yes

June Okafor. Retired shipyard electrician. Saves seeds from the same tomatoes her mother grew. Walks the harbor loop most mornings.

Reply to june-okafor.notion.example

Email verified
What it’s for
People who write for the Circular: a column, a notice, a report from a Pool worth knowing about. Unpaid, credited, edited kindly. We print only what Pools publish about themselves.
Who keeps it
Ruth AdlerSigned in with OAuth the paper’s editor.
Who reads it
Public. Anyone can read the column and your ad in it (§3.2).
For
writing · editing · volunteering
If you say yes
The Pool reads your page at june-okafor.notion.example and runs your ad, with your verification beside it (§5.2, step 4).
How you leave
Any time, from any message. Your ad comes out within sixty seconds (§5.3).
What it costs
Nothing. The column is unpaid and credited, and nobody pays to be introduced.

A no is remembered, and Ruth can’t ask again unless you say she may. If nobody answers, the request expires on 13 September, after 14 days, and nothing changes (§5.2, steps 5 and 6).

Circular CorrespondentsThe column now

Kept byRuth AdlerSigned in with OAuth

  • CI1-01

    Ruth Adler. Editor of the Circular. Spent thirty years on a city desk and still circles things in red.

    she/her · Chicago, Illinois · Reply to ruth-adler.notion.example

    Signed in with OAuthTakes messages from anyone verified.

  • CI1-02

    Imani Brooks. Built the reader that prints the Circular from well-known files. Writes small tools that do one thing.

    she/her · Baltimore, Maryland · Reply to imani-builds.example

    Signed in with OAuthTakes messages from anyone verified.

  • CI1-03

    Obinna Eze. Technology reporter. Covers open protocols and the people who keep them running.

    he/him · Lagos, Nigeria · Reply to obinna-eze.example

    Email verifiedTakes messages from anyone verified.

Ruth’s side

Ruth can send a new request after June leaves or after one expires. After a no, the Pool refuses, unless June has said she may (§5.2, step 5).

The clock

Demo time: . “Let the window pass” moves it past the 14 days. A request nobody answers expires, and nothing is listed (§5.2, step 6).

The log, and the exact messages

    One circled ad, all the way through

    Theo circles Darío’s ad in the music column.

    Three steps: the circle, the rules check, and the message. The paper takes part in the first two, on your screen, and never in the third.

    1. 1 · The circle

      Theo Lindqvist, reading as himself, circles ad FR2-03 in Start a Band: Port Ellery, a column kept by Oswaldo “Ozzie” Reyes at Ferry Room Players.

      • FR2-03Circled

        Darío Méndez. Bass player from Veracruz, eleven years in Port Ellery. Subs on short notice. Wants his written English to sound like his spoken English.

        he/him · Port Ellery · Reply to dario-bajo.bandcamp.example

        Signed in with OAuthTakes messages from people in a Pool with them.

        Also runs in Conversation Partners, Any Language, Friday Subs, Español ↔ English, Slack Water 2026 and Session Players.

    2. 2 · The rules check

      Before anything goes anywhere, the paper checks Darío’s rules and the Pool’s, for Theo, with KindlingDemo.canMessage:

      • Block lists this Pool reads. Not on Kindling public block list or The Circular consortium block list. (§7.3)
      • Who may write to Darío. Darío takes messages from people in a Pool with them. Theo is in this Pool too. (§7.2)

      Allowed The introduction may go. Darío will see who asked, with Theo’s verification, and decide.

      The same circle, another column. Darío is also in Friday Subs, and Theo is too. There it is held: The Pool asks senders to be at least “Signed in with OAuth”. Theo is “Email verified”. (§7.2 minimum-sender-verification)

    3. 3 · The message

      Theo’s own client writes to Darío’s address, through the Pool. It is a Kindling intro message with via_pool naming Start a Band: Port Ellery, carried by email (§6.1, §6.2). The paper never holds it. Here it is, exactly:

      {
        "schema_version": "0.1",
        "message_id": "msg-circular-start-a-band-theo-dario",
        "type": "intro",
        "sender": {
          "identity": "theo@mail.example",
          "display_name": "Theo Lindqvist",
          "verification_level": "email",
          "profile_url": "https://theo-lindqvist.carrd.example"
        },
        "recipient": {
          "identity": "dario@mail.example",
          "profile_url": "https://dario-bajo.bandcamp.example"
        },
        "via_pool": {
          "url": "https://ferryroom.example/pools/start-a-band.json",
          "id": "start-a-band",
          "name": "Start a Band: Port Ellery"
        },
        "sent_at": "2026-09-28T09:00:00Z",
        "subject": "Theo Lindqvist circled your ad in Start a Band: Port Ellery",
        "body": {
          "content_type": "text/plain",
          "content": "Hello Darío. I saw your ad in the Circular. I play drums, badly and enthusiastically, and I’m in Start a Band too. Would you like to play one evening this week? Theo"
        },
        "transport": {
          "type": "email"
        }
      }

      Nothing was sent. This is an example. The same message is saved as messages/circled-intro.json and validates against kindling_message.schema.json.