For implementers
Under the hood
How Scattered Light uses Kindling v0.1, setting by setting, and where the v0.1 schema can’t yet say what a rare-condition network needs.
I
Our settings, mapped to the spec
| Setting | Value | Spec | Why we chose it |
|---|---|---|---|
| The Heron · visibility | invite-only | §3.2 | Nobody can browse or search for it. Its address travels only from a steward to a newcomer. |
| The Heron · consent_model | vouching-required | §3.2, §5.4 | A steward meets each person first. The vouch comes before the handshake and never replaces the person’s own yes. |
| Where The Heron is findable | Shared by a steward only | §8.1, §8.2 | §8.1 asks for at least one surface. Social sharing is one, and it is the only one we use for The Heron. |
| Well-known file | Lists the Stewards Pool only | §8.3, §10.2 | Crawlers can find a steward to write to. They cannot find The Heron. |
| Registries | The Heron is in none | §8.4, §8.5 | Inclusion in a registry is a curator decision, and ours is no. |
| Stewards Pool · visibility | public | §3.2 | So anyone can find a steward to write to. |
| Stewards Pool · consent_model | curator-only-adds | §3.2, §5.4 | Only a curator proposes a steward. Each steward still accepted a handshake. |
| Curators | Inés Calloway (primary), Clare Whitford · oauth | §3.2, §4.3 | Both Pools name the same two stewards, at a level everyone can see. |
| Member verification | curator-vouched | §4.4, §4.5 | Shown in words as “Vouched for by the curator”. It counts in The Heron only. |
Members · accept_from | vouched | §7.1, §7.2 | Only people a steward vouched for in The Heron can write to a member. |
Members · no_cold_messages | true | §7.2 | Nobody writes first until both have said they would like to hear from each other. |
| Stewards · messaging | accept_from: verified, no_cold_messages: false | §7.1, §7.2 | A newcomer with a verified email can write to a steward first. |
kindling_noindex | false for everyone | §2.7 | noindex means “no Pool at all”. It would keep a person out of The Heron. See below. |
| Photos | None stored · no photo_hints | §2.5 | A photo is only ever a link. Our pages draw a star instead. |
| Handshake window | 14 days, the default | §5.2 | Carried in each request’s expires_at. |
| Auto-accept | Cannot apply | §5.5 | A rule may only allow public or unlisted Pools, so no rule can accept an invitation into The Heron. |
| Withdrawal | One step, within sixty seconds | §5.3 | “Leave this Pool” sits at the top of the member view, never buried. |
| Block lists | Kindling public, and the Circular consortium | §7.3 | Senders on either list are held back before any other rule is checked. |
II · §3.2 · §8.1 · §8.2 · §8.3
Invite-only, and the well-known file
Our domain hosts two Pools. The well-known file lists one of them, the Stewards Pool, because it exists to be found. The Heron is invite-only and appears in no discovery surface: not the well-known file, not the Kindling registry, not any third-party registry.
§8.1 asks that every Pool be findable through at least one surface. For The Heron that surface is social sharing (§8.2): after a video call, a steward sends one newcomer the Pool’s address. Kindling has no opinion about how a Pool URL is shared, only that it resolves to a valid manifest, and it does.
Invite-only changes who can find the Pool. It does not change consent: every member of The Heron still accepted a handshake, and the glossary says so in as many words.
What a crawler sees
/.well-known/kindling-pool, operated by Scattered Light, a rare-condition peer network (nonprofit):
| Pool | Visibility | Status | Manifest |
|---|---|---|---|
| Scattered Light Stewards | public | active | https://scatteredlight.example/pools/stewards.json |
One Pool. The Heron is not there.
What a newcomer receives
From a steward, after a call, in a message to their own address: the Heron’s manifest address, https://scatteredlight.example/pools/the-heron.json, and then the handshake invitation (see it).
The address is not secret in the way a password is. Anyone who has it can read the manifest, so our stewards share it only with the person they vouched for.
The well-known file, exactly
{
"schema_version": "0.1",
"pools": [
{
"manifest_url": "https://scatteredlight.example/pools/stewards.json",
"name": "Scattered Light Stewards",
"intent_tags": [
"peer-support",
"stewarding"
],
"visibility": "public",
"status": "active",
"geographic_scope": {
"online": true
},
"last_updated": "2026-09-01T10:00:00Z"
}
],
"operator": {
"name": "Scattered Light, a rare-condition peer network (nonprofit)",
"contact": "stewards@scatteredlight.example",
"url": "https://scatteredlight.example"
}
}
A vouch stays in one Pool
A steward’s vouch is local to The Heron and carries nowhere else. Every vouched entry says so in the same fields, shown here for Felix Brandt:
- verification_level
curator-vouched· shown as Vouched for by the curator- parsed_profile.verification.verifier
ines@mail.example- consent_proof.method
curator-vouching- consent_proof.handshake_id
hs-scattered-light-the-heron-felix- added_by
ines@mail.example
It works in both directions. Noah Feld is a steward in our public Stewards Pool, but he has no standing in The Heron: on the introduction page, canMessage holds his message to a member back under the vouched-only rule. And a Heron member’s vouch gives them nothing in the Stewards Pool or anywhere else.
The vouch is a step before the handshake, never instead of it (§5.4). Devika was vouched for by Clare and still had to say yes, and could have said no.
IV · §2.7
Why not noindex
It is tempting to reach for kindling_noindex to protect people in a sensitive Pool. It does the opposite of what you want. §2.7 says a profile with the directive MUST NOT be included “in any Pool, registry, or discovery surface”. Set it on a member’s page and The Heron would have to refuse them.
So every member of The Heron has kindling_noindex: false, and their privacy comes from four other places:
| What you want | What does it | Spec |
|---|---|---|
| Nobody can find the Pool | visibility: invite-only, left out of the well-known file and every registry | §3.2, §8.3 |
| Nobody gets in without meeting a steward | consent_model: vouching-required, then the handshake | §4.4, §5.4 |
| Nobody inside writes to you first | accept_from: vouched and no_cold_messages: true | §7.2 |
| Known abusers are held back | Two block-list subscriptions | §7.3 |
| Out of every Pool, everywhere | kindling_noindex: true, and that includes this one | §2.7 |
noindex is also a polite signal rather than a lock: a scraper can ignore it, and the block lists are the backstop. That is one more reason it is the wrong tool for privacy inside a Pool.
Messaging rules
Every vouched member has the same two settings. The stewards keep theirs open, so a newcomer or a member can always reach one.
| Person | Level | accept_from | no_cold_messages |
|---|---|---|---|
| Inés Calloway | Signed in with OAuth | verified | false |
| Felix Brandt | Vouched for by the curator | vouched | true |
| Aroha Tane | Vouched for by the curator | vouched | true |
| Devika Rao | Vouched for by the curator | vouched | true |
| Mateo Quispe | Vouched for by the curator | vouched | true |
| Yusuf Demir | Vouched for by the curator | vouched | true |
| Clare Whitford | Signed in with OAuth | verified | false |
The order of checks follows the kit’s KindlingDemo.canMessage: block lists first (§7.3), then the recipient’s accept_from (§7.1, §7.2), then no_cold_messages, which needs confirmed mutual interest.
Confirmed mutual interest is where v0.1 goes quiet. The Heron does it like this: a member tells a steward who they would like to hear from; the steward asks the other person with a system message through the Pool; if both have said yes, the steward sends each of them an intro, and the line is drawn. If the answer is no, the first person hears only that it isn’t happening this time, which is also what they hear when nobody answers.
The exact messages: the steward’s question (system), the intro to Aroha and the intro to Mateo (intro), and a member leaving (withdrawal). Each validates against kindling_message.schema.json.
VI · §2.5
Photos
Photos are referenced by URL only, and no Pool may store photo bytes. None of our members’ parsed profiles lists a photo_hints URL, and our pages never show a face: each person is a star. If a member adds a photo to their own page, The Heron would keep its address and nothing else, and we still would not display it unless the member asked.
The files
Every document here validates against the repo’s schemas. Links go to the raw JSON.
The Heron
- name
- The Heron
- curator
- Inés Calloway ·
ines@mail.example· Signed in with OAuth · primary
Clare Whitford ·clare@mail.example· Signed in with OAuth - intent_tags
peer-support- visibility
invite-only- consent_model
vouching-required- curator_contact
- stewards@scatteredlight.example
- charter
- Adults living with Harrow–Vance syndrome (a condition invented for this example), anywhere in the world. Peers only: we share what it is like, what questions helped at appointments, and who else is out there. No medical advice, no products, no research recruiting. A steward meets each person first and vouches for them here. Nobody is ever added without saying yes, and anyone can leave in a minute.
- governance_rules
- Invite-only. Not listed in our well-known file or any registry; the Pool’s address travels only from a steward to a newcomer. Every member is vouched for by a steward after a video call. The vouch is local to this Pool.
- geographic_scope
- online
- block_list_subscriptions
https://protocol.kindling.foundation/blocklist.jsonhttps://thecircular.example/blocklist.json- status
active- created_at · updated_at
- February 1, 2026 · September 24, 2026
| Entry | Level | Consent proof | Accepts first messages from | noindex |
|---|---|---|---|---|
| Inés Calloway | Signed in with OAuth | oauth · February 1, 2026 | verified | false |
| Felix Brandt | Vouched for by the curator | curator-vouching · February 20, 2026 | vouched · no cold | false |
| Aroha Tane | Vouched for by the curator | curator-vouching · March 11, 2026 | vouched · no cold | false |
| Devika Rao | Vouched for by the curator | curator-vouching · May 2, 2026 | vouched · no cold | false |
| Mateo Quispe | Vouched for by the curator | curator-vouching · June 18, 2026 | vouched · no cold | false |
| Yusuf Demir | Vouched for by the curator | curator-vouching · August 9, 2026 | vouched · no cold | false |
| Clare Whitford | Signed in with OAuth | oauth · February 1, 2026 | verified | false |
The Heron’s manifest, exactly
{
"schema_version": "0.1",
"id": "the-heron",
"name": "The Heron",
"curator": [
{
"identity": "ines@mail.example",
"display_name": "Inés Calloway",
"verification_level": "oauth",
"primary": true
},
{
"identity": "clare@mail.example",
"display_name": "Clare Whitford",
"verification_level": "oauth",
"primary": false
}
],
"intent_tags": [
"peer-support"
],
"visibility": "invite-only",
"consent_model": "vouching-required",
"curator_contact": "stewards@scatteredlight.example",
"charter": "Adults living with Harrow–Vance syndrome (a condition invented for this example), anywhere in the world. Peers only: we share what it is like, what questions helped at appointments, and who else is out there. No medical advice, no products, no research recruiting. A steward meets each person first and vouches for them here. Nobody is ever added without saying yes, and anyone can leave in a minute.",
"geographic_scope": {
"online": true
},
"governance_rules": "Invite-only. Not listed in our well-known file or any registry; the Pool’s address travels only from a steward to a newcomer. Every member is vouched for by a steward after a video call. The vouch is local to this Pool.",
"messaging_preferences": {
"block_list_subscriptions": [
"https://protocol.kindling.foundation/blocklist.json",
"https://thecircular.example/blocklist.json"
]
},
"status": "active",
"created_at": "2026-02-01T17:30:00Z",
"updated_at": "2026-09-24T11:00:00Z",
"entries": [
{
"profile_url": "https://ines-calloway.notion.example",
"parsed_profile": {
"schema_version": "0.1",
"profile_url": "https://ines-calloway.notion.example",
"display_name": "Inés Calloway",
"pronouns": "she/her",
"location": {
"city": "Tucson",
"region": "Arizona",
"country": "United States"
},
"intent_tags": [
"peer-support",
"stewarding",
"curating"
],
"about": "Steward at Scattered Light. Spent eleven years looking for one other person with her diagnosis. Now vouches for newcomers after a video call.",
"contact_methods": [
{
"type": "email",
"value": "ines@mail.example",
"label": "Kindling identity"
}
],
"verification": {
"level": "oauth",
"verified_at": "2026-02-01T18:00:00Z",
"verifier": "google"
},
"messaging_preferences": {
"accept_from": "verified",
"no_cold_messages": false,
"minimum_curator_verification": "email"
},
"kindling_noindex": false,
"parsed_at": "2026-02-01T18:00:00Z",
"parser": "kindling-parser/0.1.1"
},
"parsed_at": "2026-02-01T18:00:00Z",
"consent_proof": {
"handshake_id": "hs-scattered-light-the-heron-ines",
"accepted_at": "2026-02-01T18:00:00Z",
"method": "oauth"
},
"verification_level": "oauth",
"added_at": "2026-02-01T18:00:00Z",
"added_by": "ines@mail.example"
},
{
"profile_url": "https://docs.example/d/felix-brandt",
"parsed_profile": {
"schema_version": "0.1",
"profile_url": "https://docs.example/d/felix-brandt",
"display_name": "Felix Brandt",
"pronouns": "he/him",
"location": {
"city": "Hamburg",
"country": "Germany"
},
"intent_tags": [
"peer-support"
],
"about": "Harbor logistics. Likes comparing notes on what doctors did and did not know.",
"contact_methods": [
{
"type": "email",
"value": "felix@mail.example",
"label": "Kindling identity"
}
],
"verification": {
"level": "curator-vouched",
"verified_at": "2026-02-20T09:15:00Z",
"verifier": "ines@mail.example"
},
"messaging_preferences": {
"accept_from": "vouched",
"no_cold_messages": true,
"minimum_curator_verification": "email"
},
"kindling_noindex": false,
"parsed_at": "2026-02-20T09:15:00Z",
"parser": "kindling-parser/0.1.1"
},
"parsed_at": "2026-02-20T09:15:00Z",
"consent_proof": {
"handshake_id": "hs-scattered-light-the-heron-felix",
"accepted_at": "2026-02-20T09:15:00Z",
"method": "curator-vouching"
},
"verification_level": "curator-vouched",
"added_at": "2026-02-20T09:15:00Z",
"added_by": "ines@mail.example"
},
{
"profile_url": "https://aroha-tane.notion.example",
"parsed_profile": {
"schema_version": "0.1",
"profile_url": "https://aroha-tane.notion.example",
"display_name": "Aroha Tane",
"pronouns": "she/her",
"location": {
"city": "Wellington",
"country": "New Zealand"
},
"intent_tags": [
"peer-support"
],
"about": "Primary school teacher. Wants someone in a close time zone who gets the tiredness without an explanation.",
"contact_methods": [
{
"type": "email",
"value": "aroha@mail.example",
"label": "Kindling identity"
}
],
"verification": {
"level": "curator-vouched",
"verified_at": "2026-03-11T21:40:00Z",
"verifier": "ines@mail.example"
},
"messaging_preferences": {
"accept_from": "vouched",
"no_cold_messages": true,
"minimum_curator_verification": "email"
},
"kindling_noindex": false,
"parsed_at": "2026-03-11T21:40:00Z",
"parser": "kindling-parser/0.1.1"
},
"parsed_at": "2026-03-11T21:40:00Z",
"consent_proof": {
"handshake_id": "hs-scattered-light-the-heron-aroha",
"accepted_at": "2026-03-11T21:40:00Z",
"method": "curator-vouching"
},
"verification_level": "curator-vouched",
"added_at": "2026-03-11T21:40:00Z",
"added_by": "ines@mail.example"
},
{
"profile_url": "https://devika-rao.carrd.example",
"parsed_profile": {
"schema_version": "0.1",
"profile_url": "https://devika-rao.carrd.example",
"display_name": "Devika Rao",
"pronouns": "she/her",
"location": {
"city": "Pune",
"region": "Maharashtra",
"country": "India"
},
"intent_tags": [
"peer-support"
],
"about": "Software tester and new parent. Found this through a clinic nurse who had heard of one other case.",
"contact_methods": [
{
"type": "email",
"value": "devika@mail.example",
"label": "Kindling identity"
}
],
"verification": {
"level": "curator-vouched",
"verified_at": "2026-05-02T06:30:00Z",
"verifier": "clare@mail.example"
},
"messaging_preferences": {
"accept_from": "vouched",
"no_cold_messages": true,
"minimum_curator_verification": "email"
},
"kindling_noindex": false,
"parsed_at": "2026-05-02T06:30:00Z",
"parser": "kindling-parser/0.1.1"
},
"parsed_at": "2026-05-02T06:30:00Z",
"consent_proof": {
"handshake_id": "hs-scattered-light-the-heron-devika",
"accepted_at": "2026-05-02T06:30:00Z",
"method": "curator-vouching"
},
"verification_level": "curator-vouched",
"added_at": "2026-05-02T06:30:00Z",
"added_by": "clare@mail.example"
},
{
"profile_url": "https://docs.example/d/mateo-quispe",
"parsed_profile": {
"schema_version": "0.1",
"profile_url": "https://docs.example/d/mateo-quispe",
"display_name": "Mateo Quispe",
"pronouns": "he/him",
"location": {
"city": "Cusco",
"country": "Peru"
},
"intent_tags": [
"peer-support"
],
"about": "Tour guide at altitude, which is its own conversation. Writes in Spanish and English.",
"contact_methods": [
{
"type": "email",
"value": "mateo@mail.example",
"label": "Kindling identity"
}
],
"verification": {
"level": "curator-vouched",
"verified_at": "2026-06-18T23:05:00Z",
"verifier": "ines@mail.example"
},
"messaging_preferences": {
"accept_from": "vouched",
"no_cold_messages": true,
"minimum_curator_verification": "email"
},
"kindling_noindex": false,
"parsed_at": "2026-06-18T23:05:00Z",
"parser": "kindling-parser/0.1.1"
},
"parsed_at": "2026-06-18T23:05:00Z",
"consent_proof": {
"handshake_id": "hs-scattered-light-the-heron-mateo",
"accepted_at": "2026-06-18T23:05:00Z",
"method": "curator-vouching"
},
"verification_level": "curator-vouched",
"added_at": "2026-06-18T23:05:00Z",
"added_by": "ines@mail.example"
},
{
"profile_url": "https://yusuf-demir.example",
"parsed_profile": {
"schema_version": "0.1",
"profile_url": "https://yusuf-demir.example",
"display_name": "Yusuf Demir",
"pronouns": "he/him",
"location": {
"city": "İzmir",
"country": "Türkiye"
},
"intent_tags": [
"peer-support"
],
"about": "Retired pharmacist. The oldest person in the group, and the first to answer anyone.",
"contact_methods": [
{
"type": "email",
"value": "yusuf@mail.example",
"label": "Kindling identity"
}
],
"verification": {
"level": "curator-vouched",
"verified_at": "2026-08-09T12:20:00Z",
"verifier": "clare@mail.example"
},
"messaging_preferences": {
"accept_from": "vouched",
"no_cold_messages": true,
"minimum_curator_verification": "email"
},
"kindling_noindex": false,
"parsed_at": "2026-08-09T12:20:00Z",
"parser": "kindling-parser/0.1.1"
},
"parsed_at": "2026-08-09T12:20:00Z",
"consent_proof": {
"handshake_id": "hs-scattered-light-the-heron-yusuf",
"accepted_at": "2026-08-09T12:20:00Z",
"method": "curator-vouching"
},
"verification_level": "curator-vouched",
"added_at": "2026-08-09T12:20:00Z",
"added_by": "clare@mail.example"
},
{
"profile_url": "https://clare-whitford.notion.example",
"parsed_profile": {
"schema_version": "0.1",
"profile_url": "https://clare-whitford.notion.example",
"display_name": "Clare Whitford",
"pronouns": "she/her",
"location": {
"city": "Leeds",
"country": "United Kingdom"
},
"intent_tags": [
"peer-support",
"stewarding"
],
"about": "Steward. Keeps the group’s shared notes on which questions to bring to appointments.",
"contact_methods": [
{
"type": "email",
"value": "clare@mail.example",
"label": "Kindling identity"
}
],
"verification": {
"level": "oauth",
"verified_at": "2026-02-01T18:30:00Z",
"verifier": "google"
},
"messaging_preferences": {
"accept_from": "verified",
"no_cold_messages": false,
"minimum_curator_verification": "email"
},
"kindling_noindex": false,
"parsed_at": "2026-02-01T18:30:00Z",
"parser": "kindling-parser/0.1.1"
},
"parsed_at": "2026-02-01T18:30:00Z",
"consent_proof": {
"handshake_id": "hs-scattered-light-the-heron-clare",
"accepted_at": "2026-02-01T18:30:00Z",
"method": "oauth"
},
"verification_level": "oauth",
"added_at": "2026-02-01T18:30:00Z",
"added_by": "ines@mail.example"
}
]
}
Scattered Light Stewards
- name
- Scattered Light Stewards
- curator
- Inés Calloway ·
ines@mail.example· Signed in with OAuth · primary
Clare Whitford ·clare@mail.example· Signed in with OAuth - intent_tags
peer-support,stewarding- visibility
public- consent_model
curator-only-adds- curator_contact
- stewards@scatteredlight.example
- charter
- Volunteer stewards who meet newcomers on a video call and vouch for them into a constellation. Stewards are peers, not clinicians, and give no medical advice. Listed publicly so anyone can find a steward to write to.
- geographic_scope
- online
- block_list_subscriptions
https://protocol.kindling.foundation/blocklist.jsonhttps://thecircular.example/blocklist.json- status
active- created_at · updated_at
- January 15, 2026 · September 1, 2026
| Entry | Level | Consent proof | Accepts first messages from | noindex |
|---|---|---|---|---|
| Inés Calloway | Signed in with OAuth | oauth · January 15, 2026 | verified | false |
| Clare Whitford | Signed in with OAuth | oauth · January 16, 2026 | verified | false |
| Noah Feld | Signed in with OAuth | oauth · March 2, 2026 | verified | false |
The Stewards Pool’s manifest, exactly
{
"schema_version": "0.1",
"id": "stewards",
"name": "Scattered Light Stewards",
"curator": [
{
"identity": "ines@mail.example",
"display_name": "Inés Calloway",
"verification_level": "oauth",
"primary": true
},
{
"identity": "clare@mail.example",
"display_name": "Clare Whitford",
"verification_level": "oauth",
"primary": false
}
],
"intent_tags": [
"peer-support",
"stewarding"
],
"visibility": "public",
"consent_model": "curator-only-adds",
"curator_contact": "stewards@scatteredlight.example",
"charter": "Volunteer stewards who meet newcomers on a video call and vouch for them into a constellation. Stewards are peers, not clinicians, and give no medical advice. Listed publicly so anyone can find a steward to write to.",
"geographic_scope": {
"online": true
},
"messaging_preferences": {
"block_list_subscriptions": [
"https://protocol.kindling.foundation/blocklist.json",
"https://thecircular.example/blocklist.json"
]
},
"status": "active",
"created_at": "2026-01-15T17:00:00Z",
"updated_at": "2026-09-01T10:00:00Z",
"entries": [
{
"profile_url": "https://ines-calloway.notion.example",
"parsed_profile": {
"schema_version": "0.1",
"profile_url": "https://ines-calloway.notion.example",
"display_name": "Inés Calloway",
"pronouns": "she/her",
"location": {
"city": "Tucson",
"region": "Arizona",
"country": "United States"
},
"intent_tags": [
"peer-support",
"stewarding",
"curating"
],
"about": "Steward at Scattered Light. Spent eleven years looking for one other person with her diagnosis. Now vouches for newcomers after a video call.",
"contact_methods": [
{
"type": "email",
"value": "ines@mail.example",
"label": "Kindling identity"
}
],
"verification": {
"level": "oauth",
"verified_at": "2026-01-15T18:00:00Z",
"verifier": "google"
},
"messaging_preferences": {
"accept_from": "verified",
"no_cold_messages": false,
"minimum_curator_verification": "email"
},
"kindling_noindex": false,
"parsed_at": "2026-01-15T18:00:00Z",
"parser": "kindling-parser/0.1.1"
},
"parsed_at": "2026-01-15T18:00:00Z",
"consent_proof": {
"handshake_id": "hs-scattered-light-stewards-ines",
"accepted_at": "2026-01-15T18:00:00Z",
"method": "oauth"
},
"verification_level": "oauth",
"added_at": "2026-01-15T18:00:00Z",
"added_by": "ines@mail.example"
},
{
"profile_url": "https://clare-whitford.notion.example",
"parsed_profile": {
"schema_version": "0.1",
"profile_url": "https://clare-whitford.notion.example",
"display_name": "Clare Whitford",
"pronouns": "she/her",
"location": {
"city": "Leeds",
"country": "United Kingdom"
},
"intent_tags": [
"peer-support",
"stewarding"
],
"about": "Steward. Keeps the group’s shared notes on which questions to bring to appointments.",
"contact_methods": [
{
"type": "email",
"value": "clare@mail.example",
"label": "Kindling identity"
}
],
"verification": {
"level": "oauth",
"verified_at": "2026-01-16T10:00:00Z",
"verifier": "google"
},
"messaging_preferences": {
"accept_from": "verified",
"no_cold_messages": false,
"minimum_curator_verification": "email"
},
"kindling_noindex": false,
"parsed_at": "2026-01-16T10:00:00Z",
"parser": "kindling-parser/0.1.1"
},
"parsed_at": "2026-01-16T10:00:00Z",
"consent_proof": {
"handshake_id": "hs-scattered-light-stewards-clare",
"accepted_at": "2026-01-16T10:00:00Z",
"method": "oauth"
},
"verification_level": "oauth",
"added_at": "2026-01-16T10:00:00Z",
"added_by": "ines@mail.example"
},
{
"profile_url": "https://noah-feld.carrd.example",
"parsed_profile": {
"schema_version": "0.1",
"profile_url": "https://noah-feld.carrd.example",
"display_name": "Noah Feld",
"pronouns": "he/him",
"location": {
"city": "Toronto",
"region": "Ontario",
"country": "Canada"
},
"intent_tags": [
"peer-support",
"stewarding"
],
"about": "Steward. Trains new stewards in how to vouch without prying.",
"contact_methods": [
{
"type": "email",
"value": "noah@mail.example",
"label": "Kindling identity"
}
],
"verification": {
"level": "oauth",
"verified_at": "2026-03-02T15:30:00Z",
"verifier": "google"
},
"messaging_preferences": {
"accept_from": "verified",
"no_cold_messages": false,
"minimum_curator_verification": "email"
},
"kindling_noindex": false,
"parsed_at": "2026-03-02T15:30:00Z",
"parser": "kindling-parser/0.1.1"
},
"parsed_at": "2026-03-02T15:30:00Z",
"consent_proof": {
"handshake_id": "hs-scattered-light-stewards-noah",
"accepted_at": "2026-03-02T15:30:00Z",
"method": "oauth"
},
"verification_level": "oauth",
"added_at": "2026-03-02T15:30:00Z",
"added_by": "ines@mail.example"
}
]
}
The other documents
- .well-known/kindling-pool · lists the Stewards Pool only.
- handshake/demo-request.json · the invitation Devika received, a
handshake-request. - messages/heron-ask-mateo.json, messages/heron-intro-aroha.json, messages/heron-intro-mateo.json and messages/heron-withdrawal-devika.json · the demo’s messages.
VIII · §7.3
The block lists we subscribe to
Both of our Pools subscribe to the same two lists.
Kindling public block list
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.
Version 3 · published September 20, 2026 · https://protocol.kindling.foundation/blocklist.json
| Target | Type | Reason |
|---|---|---|
scrapekit/0.3 | implementation | scraping · Ignores kindling-noindex and robots signals. |
promo-blast@mail.example | identity | spam |
The Circular consortium block list
Shared by every member of the Circular consortium. Each member subscribes; any member may propose an entry, and two others must second it.
Version 8 · published September 27, 2026 · https://thecircular.example/blocklist.json
| Target | Type | Reason |
|---|---|---|
listed-them-anyway@mail.example | curator_identity | consent_violation · Submitted other people’s pages, a whole household’s among them, to Pools without asking any of them. |
https://free-friends-now.example/pools/everyone.json | pool_url | consent_violation · Listed profiles that never accepted a handshake. |
bulk-intros@relay.example | identity | spam |
scrapekit/0.3 | implementation | scraping · Also on the Kindling public list. |
IX
What the v0.1 schema can’t say yet
Where the spec text and the schemas disagree, our JSON follows the schemas. These are the gaps that touch a rare-condition network.
- Invite-only Pools and the well-known file
§10.2 says the file MUST list “each Pool on the domain”. The schema describes its
poolsas “all Pools hosted on this domain that are discoverable”. We follow the schema and leave The Heron out, and §8.1 is met by sharing (§8.2). v0.1 should say plainly that invite-only Pools are omitted. The two also name fields differently: §10.2 haspool_urland a per-Poolcurator_contact; the schema hasmanifest_urland oneoperator.contact. - noindex is all or nothing
kindling_noindex: truemeans “do not include me in any Pool” (§2.7). There is no way to say “only the Pools I have accepted, and no crawler”. So privacy inside a Pool has to come fromvisibilityand messaging rules, never from noindex. - Confirmed mutual interest has no message
§7.2 asks for “confirmed mutual interest” before a first message, but no schema says how interest is expressed or confirmed. The Heron records each “I would like to hear from them” itself, asks the other person with a
systemmessage, and sends anintroto each person when both have said yes. - Pool messages and vouched-only members
With
accept_from: "vouched", a strict reading would hold back a steward’s own question to a member, because curators are not vouched members. §7.2 does not say whether a Pool’s own notices pass a member’s rules. We treatsystemmessages sent through the Pool by its curator as notices, not first messages. - Four message types in the text, six in the schema
§6.3 lists four types.
kindling_message.schema.jsonhas six, addingwithdrawalandsystem. This site uses both:withdrawalwhen a member leaves, andsystemfor a steward’s question. §6.2 also names the Pool referencepool_ref; the schema calls itvia_pool. - Rule names in the text and values in the schema
§7.2 names
vouched-only,no-cold-messagesandopen-to-all. The schema writes them asaccept_from: "vouched",no_cold_messages: trueandaccept_from: "anyone". Our JSON follows the schema. - Verification level names
§4.5 names
email-verified,oauth-verified,curator-vouchedandunverified. The schemas useemail,oauth,curator-vouched,unverifiedandcryptographic, and curators may only beemail,oauthorcryptographic. Our JSON follows the schemas; our pages say the level in words. - Auto-accept and invite-only Pools
A rule’s
allowed_visibilitymay only listpublicorunlisted(§5.5), so a rule can never auto-accept into The Heron. We think that is right for us; the spec text does not say it, only the schema does. - Extraction provenance
§2.3 says parsed profiles carry an
extraction_sourcefield.parsed_profile.schema.jsonhas no such field and forbids extra properties, so our members’ profiles cannot say which fields came from h-card and which were inferred. - The handshake window
§5.2 says the 14-day window is “configurable per Pool”, but the manifest has no field for it. The Heron uses the default, carried in each request’s
expires_at. - The version field
§12.1 asks every document for a
kindling_versionfield. The schemas requireschema_versioninstead, and our JSON carries that.