Skip to content

Commit 19bc95b

Browse files
mpstatonclaude
andcommitted
fix(org-relations): peer-first framing — funder_of joins the kind vocabulary, hierarchy demoted to special case
Operator correction after ship: peer relationships with a descriptive kind are the NORMAL shape of org relations; parent/child hierarchy is the special case. The suggestion vocabulary and didi's discipline both said otherwise-ish — fixed. RelatedOrgs kind datalist: funder_of added (replacing the ambiguous "funds"), reordered peer-flavored kinds first (funder_of, partners_with, agency_of). agency_of was already present. Kinds are open vocabulary and orthogonal to rel — funder_of and agency_of ride peer edges as readily as hierarchical ones. didi's workbench slab: the relations discipline now says default to rel "peer" with a descriptive kind unless the operator's phrasing states containment, citing the proven precedent (upmobility ↔ urban-institute is peer/partners_with, not initiative_of). Verified: svelte-check 0/0, workspace tsc clean, service rebuilt. Files changed: - apps/org-workbench/src/RelatedOrgs.svelte - services/workspace/src/chat.ts Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RW28dw3kQAKXr2ZNefCukE
1 parent ed4f436 commit 19bc95b

2 files changed

Lines changed: 9 additions & 6 deletions

File tree

apps/org-workbench/src/RelatedOrgs.svelte

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,18 @@
2020
onopen: (slug: string) => void;
2121
} = $props();
2222
23-
// Open vocabulary — datalist suggestions, never enum-enforced.
23+
// Open vocabulary — datalist suggestions, never enum-enforced. Kinds are
24+
// orthogonal to rel: funder_of / agency_of ride PEER edges as readily as
25+
// hierarchical ones (operator ruling 2026-07-27 — hierarchy is the
26+
// special case, peer + a descriptive kind is the normal shape).
2427
const KIND_SUGGESTIONS = [
28+
'funder_of',
29+
'partners_with',
30+
'agency_of',
2531
'initiative_of',
2632
'fund_of',
2733
'program_of',
28-
'agency_of',
2934
'chapter_of',
30-
'funds',
31-
'partners_with',
3235
];
3336
3437
let relations = $state<OrgRelations>({ parents: [], children: [], peers: [] });

services/workspace/src/chat.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ ORG RELATIONS + TAGS (per context-v/plans/Org-Relations-Parent-Child-Peer-Plus-O
135135
organization.relations — Read one org's family tree: parents / children / peers, each with kind + description.
136136
args: { org_slug: string, client: string }
137137
138-
organization.relate — Connect two EXISTING orgs. rel is relative to org_slug: "parent" = other_slug is the parent. kind is an open vocabulary (initiative_of, fund_of, program_of, agency_of, chapter_of, funds, partners_with); description carries the human context worth keeping.
138+
organization.relate — Connect two EXISTING orgs. rel is relative to org_slug: "parent" = other_slug is the parent. kind is an open vocabulary (funder_of, partners_with, agency_of, initiative_of, fund_of, program_of, chapter_of); description carries the human context worth keeping.
139139
args: { org_slug: string, other_slug: string, rel: "parent" | "child" | "peer", kind?: string, description?: string, client: string }
140140
141141
organization.tag.add — Tag an org for what it IS (Initiative, Program, Fund, Funder, Think-Tank…). Train-Case by convention.
@@ -144,7 +144,7 @@ organization.tag.add — Tag an org for what it IS (Initiative, Program, Fund, F
144144
RELATIONS DISCIPLINE:
145145
- Relations are judgment calls — chat_propose by default; chat_invoke only when the operator stated the relationship themselves ("X is an initiative of Y" → relate X→parent Y, kind initiative_of, and quote their phrasing into description).
146146
- Both orgs must already exist — if one is missing, propose creating it first (resolver.search before ever proposing a mint).
147-
- Not every pairing is a hierarchy: funders/grantees and partners are rel "peer" with kind "funds" / "partners_with".
147+
- PEER IS THE NORMAL SHAPE; hierarchy (parent/child) is the special case. kind is orthogonal to rel — funder_of, agency_of, partners_with ride peer edges as readily as hierarchical ones. Default to rel "peer" with a descriptive kind unless the operator's phrasing states containment ("initiative of", "fund of", "part of"). The proven precedent: upmobility-foundation ↔ urban-institute is peer/partners_with, NOT initiative_of.
148148
`;
149149

150150
// Slab 3 — active skills. First resident (2026-07-25): the condensed

0 commit comments

Comments
 (0)