Skip to the page

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

Hearthholdintroductions for chosen family

5 Under the hood

How Hearthhold is built

Hearthhold is a Kindling Pool host with three Pools on one domain: two public, one unlisted. Here is how vouching, visibility, messaging, the OAuth minimum and block lists work, every setting and file, and what the v0.1 schema cannot say yet.

In plain words

The six things that make it work

Vouching

In Platonic Life Partners and Intentional Co-Parents, a steward meets each person before vouching for them: once on a call for the first, twice for the second. The Pool’s consent model is vouching-required §3.2, which may add steps before the handshake but never removes the right to decline or leave §5.4. A vouch is local to the Pool that gave it §4.4: Dana’s card reads “Vouched for by the curator” in Platonic Life Partners, and that vouch means nothing anywhere else.

Unlisted versus public

Platonic Life Partners and Later-Life Housemates are public: they are in our discovery file, and anyone can read them. Intentional Co-Parents is unlisted: it is in no directory and no registry, and its address travels from a steward, after two meetings §3.2 §8.2. Unlisted is not private. The protocol has no access control on a manifest §3.1; anyone who holds the address can read it. Our promise is how we share the address, and that no page of ours lists its members.

Messaging rules

Every member of the two vouching Pools keeps accept_from: vouched and no_cold_messages: true §7.2. So only people vouched for in the same Pool can write at all, and nobody writes first until a steward has proposed an introduction and both have said yes. In Later-Life Housemates there is no Pool rule, and each person’s own page decides.

The OAuth minimum

The two vouching Pools set minimum_sender_verification: oauth, a Pool-level default the manifest allows §3.3. The page checks it with canMessage and ctx.pool_min_sender. Leo is vouched in Platonic Life Partners, but his own identity is email verified, so he signs in with OAuth once before he writes. See the gap on this below.

Block lists

Every Pool subscribes to the Kindling project’s public list and the Circular consortium’s list §7.3. A sender on either is refused before any other rule is checked, in every Pool, for every member. Both lists and their entries are below.

Money

Nothing at the connection layer is charged for §1.3. Our paid help, written agreements and mediation, sits outside the protocol, is offered only after two people have been introduced and have decided to build something, and appears in no field: only as a sentence in governance_rules.

Settings

What we chose, and why

SettingValueSpecWhy Hearthhold chose it
Consent model, Platonic Life Partners and Co-Parentsvouching-required§3.2 §5.4A steward meets people before vouching. Each person still says yes or no, and can leave in a minute.
Pre-handshake stepa call; for Co-Parents, two meetings§5.4Stricter models may add steps before the handshake, as long as the person can still decline or withdraw.
Consent model, Housematesuniversal-opt-in§3.2 §5.2Anyone may say yes to a link. People listing themselves to share a home do not need a steward first.
Visibility, Platonic Life Partners and Housematespublic§3.2 §8.1So anyone looking can find them, and any client can read them by the members’ consent.
Visibility, Co-Parentsunlisted§3.2 §8.2Its address travels from a steward, after two meetings, and nowhere else.
Well-known filelists the two public Pools§8.3 §10.1Crawlers and registries can find them. Co-Parents is left out on purpose.
Registriesnone yet; Co-Parents never§8.4 §8.5Listing is the curator’s choice.
Curator verificationoauth§4.3Both stewards sign in with OAuth. Cryptographic identity is planned for v0.2 (§4.6).
Entry verificationcurator-vouched (two Pools); email (Housemates)§4.4 §4.5A vouch is given after a meeting and counts in that Pool only.
Pool minimum sender verificationoauth (two Pools); not set (Housemates)§3.3 §7.1A higher floor where people plan households and children; none where each person’s own rules already say enough.
Each member’s accept_from, two Poolsvouched§7.2Only people vouched for in the same Pool can write.
Each member’s no_cold_messages, two Poolstrue§7.2Nobody writes first until both have said yes to an introduction.
Block listsKindling public · Circular consortium§7.3Shared lists catch what one small service would not see.
Handshake window14 days, in each request’s expires_at§5.2The default. v0.1 has no manifest field for it, so each request carries it.
Auto-acceptnone; no member has a rule§5.5Every listing here was a decision someone made that day.
Withdrawalone action, processed at once§5.3The spec allows sixty seconds. Leaving should never wait on us.
Introductionsintro message, via_pool, email§6.1 §6.2 §6.3Sent only after both said yes: one envelope to each person.
Proposals and answerssystem message; reply§6.3v0.1 has no proposal type. See below.
kindling_noindexfalse for every member§2.7Privacy inside a Pool comes from its visibility, never from noindex, which means “not in any Pool at all”.
Moneynone at the connection layer§1.3Nobody pays to be listed or introduced. Paid help comes after, off the protocol, only if asked for.

The files

Every document, validated

Each file below validates against the repository’s JSON Schemas.

Discovery

The well-known file

/.well-known/kindling-pool

File: .well-known/kindling-pool · operator Hearthhold, introductions for chosen family: platonic partners, co-parents and housemates, stewards@hearthhold.example

It lists the two public Pools. Intentional Co-Parents is left out on purpose, and is in no registry §8.3 §8.4.

PoolVisibilityStatusIntentUpdated
Platonic Life Partners
https://hearthhold.example/pools/platonic-partners.json
publicactiveplatonic-partnership, chosen-family22 September 2026
Later-Life Housemates
https://hearthhold.example/pools/later-life-housemates.json
publicactivehousemates, later-life, friendship25 September 2026
The raw JSON
{
  "schema_version": "0.1",
  "pools": [
    {
      "manifest_url": "https://hearthhold.example/pools/platonic-partners.json",
      "name": "Platonic Life Partners",
      "intent_tags": [
        "platonic-partnership",
        "chosen-family"
      ],
      "visibility": "public",
      "status": "active",
      "geographic_scope": {
        "city": "Port Ellery",
        "country": "United States"
      },
      "last_updated": "2026-09-22T18:00:00Z"
    },
    {
      "manifest_url": "https://hearthhold.example/pools/later-life-housemates.json",
      "name": "Later-Life Housemates",
      "intent_tags": [
        "housemates",
        "later-life",
        "friendship"
      ],
      "visibility": "public",
      "status": "active",
      "geographic_scope": {
        "city": "Port Ellery",
        "country": "United States"
      },
      "last_updated": "2026-09-25T10:00:00Z"
    }
  ],
  "operator": {
    "name": "Hearthhold, introductions for chosen family: platonic partners, co-parents and housemates",
    "contact": "stewards@hearthhold.example",
    "url": "https://hearthhold.example"
  }
}

Manifests

Three Pools, in readable form

Platonic Life Partners

File: pools/platonic-partners.json · served at https://hearthhold.example/pools/platonic-partners.json

schema_version
0.1
id
platonic-partners
curator
Mireille Dufresne (primary) mireille@mail.example Signed in with OAuth
Omar Qureshi omar@mail.example Signed in with OAuth
charter
People looking for a committed partner who is not a romantic one: a shared household, shared decisions, each other’s emergency contact. Aromantic, asexual, widowed, single on purpose, and anyone else who wants this. A steward meets you before you are listed.
intent_tags
platonic-partnership, chosen-family
visibility
public
consent_model
vouching-required
curator_contact
stewards@hearthhold.example
geographic_scope
Port Ellery, United States
governance_rules
A steward meets each person on a call before vouching for them; the vouch is local to this Pool. Every member keeps no_cold_messages on. Hearthhold charges nothing to be listed or introduced; it charges only for help after two people decide to build something, such as a written agreement or a mediation session.
messaging_preferences
https://protocol.kindling.foundation/blocklist.json
https://thecircular.example/blocklist.json
minimum_sender_verification: oauth
status
active · created 10 April 2026 · updated 22 September 2026
EntryLevelConsent proofAddedTheir messaging
Dana Whitcombe
https://dana-whitcombe.carrd.example
Vouched for by the curatorcurator-vouching
hs-hearthhold-platonic-partners-dana
12 April 2026vouched, no cold: true
Leo Marchetti
https://leo-marchetti.example
Vouched for by the curatorcurator-vouching
hs-hearthhold-platonic-partners-leo
3 May 2026vouched, no cold: true
Sam Adebayo
https://sam-adebayo.notion.example
Vouched for by the curatorcurator-vouching
hs-hearthhold-platonic-partners-sam
21 June 2026vouched, no cold: true
The raw JSON
{
  "schema_version": "0.1",
  "id": "platonic-partners",
  "name": "Platonic Life Partners",
  "curator": [
    {
      "identity": "mireille@mail.example",
      "display_name": "Mireille Dufresne",
      "verification_level": "oauth",
      "primary": true
    },
    {
      "identity": "omar@mail.example",
      "display_name": "Omar Qureshi",
      "verification_level": "oauth",
      "primary": false
    }
  ],
  "intent_tags": [
    "platonic-partnership",
    "chosen-family"
  ],
  "visibility": "public",
  "consent_model": "vouching-required",
  "curator_contact": "stewards@hearthhold.example",
  "charter": "People looking for a committed partner who is not a romantic one: a shared household, shared decisions, each other’s emergency contact. Aromantic, asexual, widowed, single on purpose, and anyone else who wants this. A steward meets you before you are listed.",
  "geographic_scope": {
    "city": "Port Ellery",
    "country": "United States"
  },
  "governance_rules": "A steward meets each person on a call before vouching for them; the vouch is local to this Pool. Every member keeps no_cold_messages on. Hearthhold charges nothing to be listed or introduced; it charges only for help after two people decide to build something, such as a written agreement or a mediation session.",
  "messaging_preferences": {
    "block_list_subscriptions": [
      "https://protocol.kindling.foundation/blocklist.json",
      "https://thecircular.example/blocklist.json"
    ],
    "minimum_sender_verification": "oauth"
  },
  "status": "active",
  "created_at": "2026-04-10T12:00:00Z",
  "updated_at": "2026-09-22T18:00:00Z",
  "entries": [
    {
      "profile_url": "https://dana-whitcombe.carrd.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://dana-whitcombe.carrd.example",
        "display_name": "Dana Whitcombe",
        "pronouns": "she/her",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "platonic-partnership",
          "chosen-family"
        ],
        "about": "Aromantic, 38, a hospital pharmacist. Looking for a life partner who is not a romantic one: a household, shared decisions, each other’s emergency contact.",
        "contact_methods": [
          {
            "type": "email",
            "value": "dana@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "curator-vouched",
          "verified_at": "2026-04-12T18:30:00Z",
          "verifier": "omar@mail.example"
        },
        "messaging_preferences": {
          "accept_from": "vouched",
          "no_cold_messages": true,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-04-12T18:30:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-04-12T18:30:00Z",
      "consent_proof": {
        "handshake_id": "hs-hearthhold-platonic-partners-dana",
        "accepted_at": "2026-04-12T18:30:00Z",
        "method": "curator-vouching"
      },
      "verification_level": "curator-vouched",
      "added_at": "2026-04-12T18:30:00Z",
      "added_by": "omar@mail.example"
    },
    {
      "profile_url": "https://leo-marchetti.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://leo-marchetti.example",
        "display_name": "Leo Marchetti",
        "pronouns": "he/him",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "platonic-partnership",
          "chosen-family"
        ],
        "about": "Widowed at 44. I miss having someone to run a life with more than I miss romance. Carpenter, early riser, good at taxes.",
        "contact_methods": [
          {
            "type": "email",
            "value": "leo@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "curator-vouched",
          "verified_at": "2026-05-03T17:00:00Z",
          "verifier": "omar@mail.example"
        },
        "messaging_preferences": {
          "accept_from": "vouched",
          "no_cold_messages": true,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-05-03T17:00:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-05-03T17:00:00Z",
      "consent_proof": {
        "handshake_id": "hs-hearthhold-platonic-partners-leo",
        "accepted_at": "2026-05-03T17:00:00Z",
        "method": "curator-vouching"
      },
      "verification_level": "curator-vouched",
      "added_at": "2026-05-03T17:00:00Z",
      "added_by": "omar@mail.example"
    },
    {
      "profile_url": "https://sam-adebayo.notion.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://sam-adebayo.notion.example",
        "display_name": "Sam Adebayo",
        "pronouns": "they/them",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "platonic-partnership",
          "chosen-family"
        ],
        "about": "Asexual, 41, a union electrician. Looking for a person to buy a house with and grow old next to.",
        "contact_methods": [
          {
            "type": "email",
            "value": "sam@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "curator-vouched",
          "verified_at": "2026-06-21T20:10:00Z",
          "verifier": "omar@mail.example"
        },
        "messaging_preferences": {
          "accept_from": "vouched",
          "no_cold_messages": true,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-06-21T20:10:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-06-21T20:10:00Z",
      "consent_proof": {
        "handshake_id": "hs-hearthhold-platonic-partners-sam",
        "accepted_at": "2026-06-21T20:10:00Z",
        "method": "curator-vouching"
      },
      "verification_level": "curator-vouched",
      "added_at": "2026-06-21T20:10:00Z",
      "added_by": "omar@mail.example"
    }
  ]
}

Intentional Co-Parents

File: pools/co-parents.json · served at https://hearthhold.example/pools/co-parents.json

schema_version
0.1
id
co-parents
curator
Mireille Dufresne (primary) mireille@mail.example Signed in with OAuth
Omar Qureshi omar@mail.example Signed in with OAuth
charter
Adults who want to raise a child together as co-parents rather than as a couple. A steward meets each person twice before vouching. Unlisted: the address travels from a steward. Introductions are slow here on purpose.
intent_tags
co-parenting, chosen-family
visibility
unlisted
consent_model
vouching-required
curator_contact
stewards@hearthhold.example
geographic_scope
Port Ellery, United States
governance_rules
A steward meets each person twice, once on a call and once in person, before vouching for them; the vouch is local to this Pool. Every member keeps no_cold_messages on. Hearthhold charges nothing to be listed or introduced; it charges only for help after two people decide to build something, such as a written agreement or a mediation session.
messaging_preferences
https://protocol.kindling.foundation/blocklist.json
https://thecircular.example/blocklist.json
minimum_sender_verification: oauth
status
active · created 15 May 2026 · updated 10 September 2026
Its 3 entries

In practice this file’s address travels only from a steward, after two meetings, and no page of ours lists who is in it. We show it here because this is an example and every person in it is invented. Anyone who holds the address of an unlisted Pool can read it; that is the honest limit of unlisted.

EntryLevelConsent proofAddedTheir messaging
Priyanka Sethi
https://priyanka-sethi.example
Vouched for by the curatorcurator-vouching
hs-hearthhold-co-parents-priyanka
18 May 2026vouched, no cold: true
Graham Ellis
https://graham-ellis.carrd.example
Vouched for by the curatorcurator-vouching
hs-hearthhold-co-parents-graham
2 June 2026vouched, no cold: true
Toni Alvarado
https://toni-alvarado.notion.example
Vouched for by the curatorcurator-vouching
hs-hearthhold-co-parents-toni
15 July 2026vouched, no cold: true
The raw JSON
{
  "schema_version": "0.1",
  "id": "co-parents",
  "name": "Intentional Co-Parents",
  "curator": [
    {
      "identity": "mireille@mail.example",
      "display_name": "Mireille Dufresne",
      "verification_level": "oauth",
      "primary": true
    },
    {
      "identity": "omar@mail.example",
      "display_name": "Omar Qureshi",
      "verification_level": "oauth",
      "primary": false
    }
  ],
  "intent_tags": [
    "co-parenting",
    "chosen-family"
  ],
  "visibility": "unlisted",
  "consent_model": "vouching-required",
  "curator_contact": "stewards@hearthhold.example",
  "charter": "Adults who want to raise a child together as co-parents rather than as a couple. A steward meets each person twice before vouching. Unlisted: the address travels from a steward. Introductions are slow here on purpose.",
  "geographic_scope": {
    "city": "Port Ellery",
    "country": "United States"
  },
  "governance_rules": "A steward meets each person twice, once on a call and once in person, before vouching for them; the vouch is local to this Pool. Every member keeps no_cold_messages on. Hearthhold charges nothing to be listed or introduced; it charges only for help after two people decide to build something, such as a written agreement or a mediation session.",
  "messaging_preferences": {
    "block_list_subscriptions": [
      "https://protocol.kindling.foundation/blocklist.json",
      "https://thecircular.example/blocklist.json"
    ],
    "minimum_sender_verification": "oauth"
  },
  "status": "active",
  "created_at": "2026-05-15T12:00:00Z",
  "updated_at": "2026-09-10T19:00:00Z",
  "entries": [
    {
      "profile_url": "https://priyanka-sethi.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://priyanka-sethi.example",
        "display_name": "Priyanka Sethi",
        "pronouns": "she/her",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "co-parenting",
          "chosen-family"
        ],
        "about": "Pediatric nurse, 37. Want to raise a child with a co-parent who is a close friend, not a spouse. I have a spreadsheet and I am not ashamed of it.",
        "contact_methods": [
          {
            "type": "email",
            "value": "priyanka@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "curator-vouched",
          "verified_at": "2026-05-18T19:00:00Z",
          "verifier": "omar@mail.example"
        },
        "messaging_preferences": {
          "accept_from": "vouched",
          "no_cold_messages": true,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-05-18T19:00:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-05-18T19:00:00Z",
      "consent_proof": {
        "handshake_id": "hs-hearthhold-co-parents-priyanka",
        "accepted_at": "2026-05-18T19:00:00Z",
        "method": "curator-vouching"
      },
      "verification_level": "curator-vouched",
      "added_at": "2026-05-18T19:00:00Z",
      "added_by": "omar@mail.example"
    },
    {
      "profile_url": "https://graham-ellis.carrd.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://graham-ellis.carrd.example",
        "display_name": "Graham Ellis",
        "pronouns": "he/him",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "co-parenting",
          "chosen-family"
        ],
        "about": "Gay, 40, a high school counselor. Ready to parent, with a partner in parenting rather than romance.",
        "contact_methods": [
          {
            "type": "email",
            "value": "graham@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "curator-vouched",
          "verified_at": "2026-06-02T18:45:00Z",
          "verifier": "omar@mail.example"
        },
        "messaging_preferences": {
          "accept_from": "vouched",
          "no_cold_messages": true,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-06-02T18:45:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-06-02T18:45:00Z",
      "consent_proof": {
        "handshake_id": "hs-hearthhold-co-parents-graham",
        "accepted_at": "2026-06-02T18:45:00Z",
        "method": "curator-vouching"
      },
      "verification_level": "curator-vouched",
      "added_at": "2026-06-02T18:45:00Z",
      "added_by": "omar@mail.example"
    },
    {
      "profile_url": "https://toni-alvarado.notion.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://toni-alvarado.notion.example",
        "display_name": "Toni Alvarado",
        "pronouns": "she/her",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "co-parenting",
          "chosen-family"
        ],
        "about": "Single, 39, a civil engineer. Would like to co-parent with someone who shares my values about school, money and grandparents.",
        "contact_methods": [
          {
            "type": "email",
            "value": "toni@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "curator-vouched",
          "verified_at": "2026-07-15T20:30:00Z",
          "verifier": "omar@mail.example"
        },
        "messaging_preferences": {
          "accept_from": "vouched",
          "no_cold_messages": true,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-07-15T20:30:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-07-15T20:30:00Z",
      "consent_proof": {
        "handshake_id": "hs-hearthhold-co-parents-toni",
        "accepted_at": "2026-07-15T20:30:00Z",
        "method": "curator-vouching"
      },
      "verification_level": "curator-vouched",
      "added_at": "2026-07-15T20:30:00Z",
      "added_by": "omar@mail.example"
    }
  ]
}

Later-Life Housemates

File: pools/later-life-housemates.json · served at https://hearthhold.example/pools/later-life-housemates.json

schema_version
0.1
id
later-life-housemates
curator
Omar Qureshi (primary) omar@mail.example Signed in with OAuth
charter
People fifty-five and over who would like to share a home: company in the kitchen, help with the stairs, someone who notices. Friendship, not romance, unless two people decide otherwise on their own.
intent_tags
housemates, later-life, friendship
visibility
public
consent_model
universal-opt-in
curator_contact
stewards@hearthhold.example
geographic_scope
Port Ellery, United States
governance_rules
Anyone may say yes to being listed. Hearthhold helps with house agreements after two or more people decide to share a home, and charges only then.
messaging_preferences
https://protocol.kindling.foundation/blocklist.json
https://thecircular.example/blocklist.json
minimum_sender_verification: not set
status
active · created 1 August 2026 · updated 25 September 2026
EntryLevelConsent proofAddedTheir messaging
Walt Kessler
https://walt-kessler.example
Email verifiedemail-link
hs-hearthhold-later-life-housemates-walt
3 August 2026verified, no cold: false
Rosalind Achebe
https://rosalind-achebe.carrd.example
Email verifiedemail-link
hs-hearthhold-later-life-housemates-rosalind
11 August 2026verified, no cold: false
Evelyn Marsh
https://evelyn-marsh.carrd.example/home
Email verifiedemail-link
hs-hearthhold-later-life-housemates-evelyn
2 September 2026vouched, no cold: true
The raw JSON
{
  "schema_version": "0.1",
  "id": "later-life-housemates",
  "name": "Later-Life Housemates",
  "curator": [
    {
      "identity": "omar@mail.example",
      "display_name": "Omar Qureshi",
      "verification_level": "oauth",
      "primary": true
    }
  ],
  "intent_tags": [
    "housemates",
    "later-life",
    "friendship"
  ],
  "visibility": "public",
  "consent_model": "universal-opt-in",
  "curator_contact": "stewards@hearthhold.example",
  "charter": "People fifty-five and over who would like to share a home: company in the kitchen, help with the stairs, someone who notices. Friendship, not romance, unless two people decide otherwise on their own.",
  "geographic_scope": {
    "city": "Port Ellery",
    "country": "United States"
  },
  "governance_rules": "Anyone may say yes to being listed. Hearthhold helps with house agreements after two or more people decide to share a home, and charges only then.",
  "messaging_preferences": {
    "block_list_subscriptions": [
      "https://protocol.kindling.foundation/blocklist.json",
      "https://thecircular.example/blocklist.json"
    ]
  },
  "status": "active",
  "created_at": "2026-08-01T09:00:00Z",
  "updated_at": "2026-09-25T10:00:00Z",
  "entries": [
    {
      "profile_url": "https://walt-kessler.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://walt-kessler.example",
        "display_name": "Walt Kessler",
        "pronouns": "he/him",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "housemates",
          "later-life",
          "friendship"
        ],
        "about": "Retired harbor master, 68. The house is too big and too quiet. I cook, I fix things, and I go to bed at nine.",
        "contact_methods": [
          {
            "type": "email",
            "value": "walt@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "email",
          "verified_at": "2026-08-03T10:00:00Z"
        },
        "messaging_preferences": {
          "accept_from": "verified",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-08-03T10:00:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-08-03T10:00:00Z",
      "consent_proof": {
        "handshake_id": "hs-hearthhold-later-life-housemates-walt",
        "accepted_at": "2026-08-03T10:00:00Z",
        "method": "email-link"
      },
      "verification_level": "email",
      "added_at": "2026-08-03T10:00:00Z",
      "added_by": "omar@mail.example"
    },
    {
      "profile_url": "https://rosalind-achebe.carrd.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://rosalind-achebe.carrd.example",
        "display_name": "Rosalind Achebe",
        "pronouns": "she/her",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "housemates",
          "later-life",
          "friendship"
        ],
        "about": "Retired choir director, 71. Looking for housemates who like music in the kitchen and quiet after ten.",
        "contact_methods": [
          {
            "type": "email",
            "value": "rosalind@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "email",
          "verified_at": "2026-08-11T14:20:00Z"
        },
        "messaging_preferences": {
          "accept_from": "verified",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-08-11T14:20:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-08-11T14:20:00Z",
      "consent_proof": {
        "handshake_id": "hs-hearthhold-later-life-housemates-rosalind",
        "accepted_at": "2026-08-11T14:20:00Z",
        "method": "email-link"
      },
      "verification_level": "email",
      "added_at": "2026-08-11T14:20:00Z",
      "added_by": "omar@mail.example"
    },
    {
      "profile_url": "https://evelyn-marsh.carrd.example/home",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://evelyn-marsh.carrd.example/home",
        "display_name": "Evelyn Marsh",
        "pronouns": "she/her",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "housemates",
          "later-life",
          "friendship"
        ],
        "about": "Retired schoolteacher, two grown sons who live far away. I would like to share a house with people who read at the table and do not mind a small sailboat in the driveway.",
        "contact_methods": [
          {
            "type": "email",
            "value": "evelyn@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "email",
          "verified_at": "2026-09-02T11:45:00Z"
        },
        "messaging_preferences": {
          "accept_from": "vouched",
          "no_cold_messages": true,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-09-02T11:45:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-09-02T11:45:00Z",
      "consent_proof": {
        "handshake_id": "hs-hearthhold-later-life-housemates-evelyn",
        "accepted_at": "2026-09-02T11:45:00Z",
        "method": "email-link"
      },
      "verification_level": "email",
      "added_at": "2026-09-02T11:45:00Z",
      "added_by": "omar@mail.example"
    }
  ]
}

Block lists

The two lists every Pool subscribes to

Messages and handshakes from anything on these lists are refused §7.3.

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

Honest limits

What the v0.1 schema can’t say yet

Where the specification text and a schema disagree, our JSON follows the schema. These are the gaps that touch Hearthhold.

  1. 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 use the words.

  2. The Pool’s OAuth floor and a vouched sender.

    §7.1 says curator-vouched senders must pass within the Pool that vouched for them. Our two vouching Pools also set an OAuth minimum, and minimum_sender_verification can only name unverified, email or oauth. We read the floor as a Pool rule on top of §7.1, like a per-profile rule in §7.2, so Leo, vouched here but email verified, signs in with OAuth before he writes. The protocol does not say which reading is right.

  3. There is no message type for a proposal, or for answering one.

    §6.3 lists four types; the schema has six, adding withdrawal and system. Neither has a proposal. We send a steward’s note as a system message and each answer as a reply to it. The schema accepts both, but another client would not know they are a proposal.

  4. Nothing records that both said yes.

    no_cold_messages needs “confirmed mutual interest” §7.2, but no field carries it. We keep the two replies and check them ourselves before the introduction goes.

  5. An introduction has two people; an intro has one recipient.

    The envelope’s recipient is a single identity, so we send two envelopes, one to each, sharing a thread header.

  6. A steward’s own mail and vouched-only rules.

    Every member of the two vouching Pools accepts messages from vouched senders only. A steward is the curator, not vouched, so a strict reading of §7.2 would hold back their own invitations and introductions. We treat mail from a Pool’s curator about that Pool as the Pool’s own, which each member agreed to by saying yes. The protocol does not say.

  7. A Pool cannot require its members’ rules.

    Our governance text says every member keeps no_cold_messages on. The manifest’s messaging_preferences holds only block lists and a sender minimum §3.3, so the rule lives on each member’s own page, and we check it when we vouch.

  8. How a steward met someone, and how often, is prose.

    A vouched profile records verifier and verified_at §4.4. That Platonic Life Partners means one call and Co-Parents means two meetings lives only in the charters and governance text. A client reading the JSON cannot check it.

  9. Fifty-five and over is prose.

    There is no field for who a Pool is for beyond intent tags and a place. Later-Life Housemates says its age in the charter, and nothing verifies it.

  10. The invitation cannot state the consent model.

    A handshake request’s pool object names the curator, charter, intent and visibility §5.2, but not consent_model. Anton’s letter says “only a steward proposes” in words; a client reading the JSON could not.

  11. Unlisted is not private.

    The protocol has no access control on a manifest §3.1. Anyone who holds the address of Intentional Co-Parents can read who is in it. “We never publish its members” is a promise about our own pages and how we share the address.

  12. 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.

  13. Field names in the text and the schemas differ.

    §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.

  14. 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 members’ cards cannot say which lines were marked up and which were inferred.

  15. Paid help after has no place in v0.1.

    A chargeable surface at the connection layer is a non-goal §1.3, and the v0.2 draft adds only voluntary thanks after an introduction, which it says can never become a paywall. Our written agreements and mediation are a separate service, off the protocol, and appear only as a sentence in governance_rules.