Org Model spec
Purpose¶
The Org Model is the shared state every Chonk reads and writes: a versioned, tenant-scoped graph of Person, Role, Org, Goal, Project, Cadence, Policy, and Decision nodes connected by typed edges. This document is the schema, the invariants, the change and versioning model, the identity-merge and offboarding semantics, and the query patterns the harness and agents rely on. It is written to be implemented directly against Postgres; the two worked examples at the end double as the seed data for the simulation orgs (sim-lanternfish, sim-harbortable) used in tests throughout the docs.
Scope / Non-scope¶
In scope
- Node and edge schemas (TypeScript-style), storage layout, identifiers.
- Invariants and where each is enforced.
- Versioning, change records, snapshots, time-travel reads, migrations.
- Identity merging across HRIS, Slack, GitHub and the other connectors.
- Soft delete, offboarding, and retention hooks.
- Query patterns with SQL sketches.
- Worked JSON for a 40-person software company and a 3-location restaurant group.
Non-scope
- People memory facts (preferences, feedback, growth) → Manager Agents §6. Memory references the graph; it is not in it.
- Policy rule language and evaluation → Policy Engine. This doc defines the
Policynode's shape only. - Connector field mappings that produce the draft model → Integrations Spec.
- Full TypeScript for API payloads → Data Model and API Reference (which imports these types).
1. Design principles¶
- Hierarchy is for function. Edges say who owns what, who is managed by which Chonk, and who the human escalation owner is. There is no "level" edge.
Role.bandexists for calibration and labor rules, not for ordering people. - Edges are the truth; fields are projections.
Org.managerOfRecordIdis a denormalized read-model column populated from themanager_of_recordedge. Writes go to edges. - Every change has a reason and an actor. No write path exists without both. The actor is a human (
prs_…of kindhuman), a run (run_…), or the system migrator (sys_migrator). - Nothing is hard-deleted. Nodes and edges have validity intervals. Purge is a separate, audited, retention-driven operation.
- Agents are people too. Chonks and managed agent workers are
Personnodes of kindagent. That is what letsreports_tobe one edge type and what makes AG-1 (agent workers as nodes) a configuration rather than a new schema. - Small graph, strong invariants. A tenant has hundreds to low thousands of nodes. We spend the budget on correctness and versioning, not traversal performance.
2. Identifiers and common fields¶
IDs are ULIDs with a type prefix. The prefix is part of the ID and is validated on every write.
| Prefix | Type | Prefix | Type |
|---|---|---|---|
tnt_ |
Tenant | cad_ |
Cadence |
prs_ |
Person | pol_ |
Policy |
rol_ |
Role | dec_ |
Decision |
org_ |
Org | edg_ |
Edge |
gol_ |
Goal | chg_ |
Change |
prj_ |
Project | snp_ |
Snapshot |
type NodeKind = 'Person' | 'Role' | 'Org' | 'Goal' | 'Project' | 'Cadence' | 'Policy' | 'Decision';
interface NodeBase {
id: string; // prefixed ULID
tenantId: TenantId;
kind: NodeKind;
version: number; // tenant-wide monotonic version at which this row became current
validFrom: ISODateTime;
validTo?: ISODateTime; // set on soft delete / supersession
createdAt: ISODateTime;
updatedAt: ISODateTime;
labels?: string[]; // free-form, tenant-defined, never used by policy
externalRefs?: ExternalRef[];
}
interface ExternalRef {
provider: ConnectorProvider; // 'linear' | 'github' | 'slack' | 'gusto' | 'toast' | ...
externalId: string;
url?: string;
lastSyncedAt: ISODateTime;
}
interface Actor {
kind: 'human' | 'run' | 'system';
id: string; // prs_… | run_… | 'sys_migrator' | 'sys_onboarding'
onBehalfOf?: PersonId; // e.g. a run acting on an owner's confirmed decision
}
3. Node schemas¶
3.1 Person¶
interface Person extends NodeBase {
kind: 'Person';
personKind: 'human' | 'agent';
status: 'invited' | 'active' | 'on_leave' | 'offboarding' | 'offboarded' | 'merged';
displayName: string;
givenName?: string;
familyName?: string;
pronouns?: string; // self-declared only; never inferred
timezone: string; // IANA
locale: string; // BCP 47
identities: Identity[]; // see §8
contact: {
preferredSurface: 'slack' | 'teams' | 'sms' | 'app' | 'voice' | 'email';
surfaceOrder: Array<'slack' | 'teams' | 'sms' | 'app' | 'voice' | 'email'>; // fallback order
workEmail?: string;
phoneE164?: string; // atoms: SMS/voice
};
briefWindow?: { start: 'HH:mm'; end: 'HH:mm' }; // local time; default 08:00–09:00
quietHours?: { start: 'HH:mm'; end: 'HH:mm' }; // default 19:00–07:00 local
employment?: { // humans only; HRIS is the system of record
type: 'employee' | 'contractor' | 'intern' | 'agent_worker';
startDate: ISODate;
endDate?: ISODate;
laborClass?: 'exempt' | 'non_exempt' | 'hourly';
hrisRef?: ExternalRef;
isMinor?: boolean; // atoms labor rules; sourced from HRIS, never inferred
};
agent?: { // personKind === 'agent'
agentKind: 'chonk' | 'worker';
chonkId?: ChonkId; // 'chonksworth' | 'fin' | 'ops' | 'human' | 'porpoise' | 'build' | 'marketing' | 'revenue' | 'security'
endpoint?: string; // MCP endpoint for worker agents
charterRef?: string;
};
isOwner: boolean; // owner-layer human; may hold PortfolioGrants
mergedInto?: PersonId; // status === 'merged'
}
Anything that is a protected characteristic (age, health, religion, national origin, and so on) is not a field. employment.isMinor is the single exception, is sourced only from the HRIS, exists only because labor rules require it, and is readable only by the scheduling-solver and the Chief Security Officer's compliance runs.
3.2 Role¶
interface Role extends NodeBase {
kind: 'Role';
title: string; // "Backend Engineer", "Line Cook"
family: string; // "engineering" | "support" | "kitchen" | "front_of_house" | ...
band?: string; // calibration band; opaque string, tenant-defined
responsibilities: string[];
skills?: string[];
certifications?: string[]; // atoms: "food_handler", "alcohol_service"
shiftEligible?: boolean; // atoms
headcountPlan?: { period: string; planned: number };
}
3.3 Org¶
interface Org extends NodeBase {
kind: 'Org';
name: string;
orgKind: 'company' | 'department' | 'team' | 'location' | 'shift_group' | 'portfolio_slot';
timezone: string;
managedFunctions?: ManagementFunction[]; // Function mode: which functions Sea Suite runs here
location?: { // orgKind === 'location'
address: string;
operatingHours: Array<{ dow: 0|1|2|3|4|5|6; open: 'HH:mm'; close: 'HH:mm' }>;
laborJurisdiction: string; // e.g. "US-CA"
posRef?: ExternalRef;
schedulingRef?: ExternalRef;
};
// projections (read-only, maintained from edges):
parentId?: OrgId;
managerChonkId?: ChonkId;
managerOfRecordId?: PersonId;
}
3.4 Goal¶
interface Goal extends NodeBase {
kind: 'Goal';
title: string;
description?: string;
level: 'company' | 'org' | 'person';
period: { start: ISODate; end: ISODate };
metric?: {
name: string;
unit: string;
target: number;
baseline?: number;
current?: number;
direction: 'up' | 'down';
sourceRef?: ExternalRef; // where `current` is read from
};
status: 'draft' | 'proposed' | 'active' | 'achieved' | 'missed' | 'cancelled';
health: 'green' | 'yellow' | 'red' | 'unknown';
healthReason?: string; // always cited; written by analyst runs
healthAsOf?: ISODateTime;
sandbagFlag?: { flaggedAt: ISODateTime; reason: string; receiptId: string };
// projections:
ownerId?: PersonId;
reviewCadenceId?: CadenceId;
}
3.5 Project¶
interface Project extends NodeBase {
kind: 'Project';
title: string;
status: 'proposed' | 'active' | 'blocked' | 'paused' | 'done' | 'cancelled';
health: 'green' | 'yellow' | 'red' | 'unknown';
healthReason?: string;
dates: { start?: ISODate; target?: ISODate; actualEnd?: ISODate };
estimate?: { unit: 'person_weeks' | 'points' | 'shifts'; value: number; confidence: number };
scope?: string;
// projections:
orgId?: OrgId;
ownerId?: PersonId;
}
3.6 Cadence¶
type CadenceKind =
| 'morning_brief' | 'async_checkin' | 'one_on_one' | 'daily_standup' | 'weekly_review'
| 'monthly_retro' | 'quarterly_planning' | 'all_hands' | 'owner_update' | 'goal_review'
| 'pipeline_review' | 'shift_huddle' | 'schedule_publish' | 'checklist' | 'custom';
interface Cadence extends NodeBase {
kind: 'Cadence';
name: string;
cadenceKind: CadenceKind;
ownerChonkId: ChonkId;
format: 'written' | 'video' | 'live' | 'sms' | 'voice' | 'comic';
schedule: {
rrule: string; // RFC 5545
timezone: string; // or 'participant' for per-person local time
window?: { start: 'HH:mm'; end: 'HH:mm' }; // delivery window; fires at window start
graceMinutes: number; // after window end → cadence.missed
};
scope: { orgId?: OrgId; personId?: PersonId }; // exactly one set
inputs: Array<{ kind: 'org_model' | 'mirror' | 'memory' | 'reply'; spec: string }>;
outputs: Array<{ kind: 'message' | 'document' | 'video' | 'decision' | 'org_change'; spec: string }>;
status: 'active' | 'paused' | 'retired';
effectiveness?: { replyRate30d?: number; openRate30d?: number; lastTunedAt?: ISODateTime; tuneReason?: string };
priority: 'P0' | 'P1' | 'P2' | 'P3' | 'P4' | 'P5'; // scheduler priority class, see doc 03
}
3.7 Policy¶
type PolicyKind =
| 'hard_line' // owner-set, always BLOCK or HUMAN_ONLY
| 'threshold' // numeric gate → PROPOSE_CONFIRM above
| 'autonomy_override' // narrow an action's class for a scope
| 'outreach_cap' // max messages per person per day, quiet hours
| 'labor_rule' // atoms: max hours, breaks, minors, certifications
| 'approval_route' // who approves what
| 'retention' // memory/audit retention classes
| 'tone'; // tone dial bounds per scope
interface Policy extends NodeBase {
kind: 'Policy';
name: string;
policyKind: PolicyKind;
rule: PolicyRule; // evaluator AST; see doc 05
autonomyClass?: 'AUTONOMOUS' | 'PROPOSE_CONFIRM' | 'HUMAN_ONLY';
precedence: number; // higher wins on conflict; hard_line always ≥ 1000
setBy: PersonId; // human; policies are direction
effective: { from: ISODateTime; to?: ISODateTime };
// targets via `applies_to` edges; projection:
appliesTo?: Array<{ kind: 'Org' | 'Role' | 'Person' | 'Function'; id: string }>;
}
3.8 Decision¶
type DecisionKind =
| 'spend_approval' | 'plan_change' | 'goal_set' | 'req_open' | 'cadence_change'
| 'escalation_to_owner' | 'schedule_exception' | 'org_change' | 'identity_merge'
| 'human_only_packet' | 'graduation_change' | 'custom';
interface Decision extends NodeBase {
kind: 'Decision';
decisionKind: DecisionKind;
autonomyClass: 'AUTONOMOUS' | 'PROPOSE_CONFIRM' | 'HUMAN_ONLY';
effectiveMode: 'SHADOW' | 'PROPOSE_CONFIRM' | 'AUTONOMOUS' | 'HUMAN_ONLY';
proposedByChonkId: ChonkId;
runId: RunId;
summary: string;
recommendation?: string;
receiptId: ReceiptId;
status: 'proposed' | 'confirmed' | 'rejected' | 'executed' | 'expired' | 'recorded' | 'stale' | 'shadow';
routedTo?: PersonId[];
decidedBy?: PersonId;
decidedAt?: ISODateTime;
humanNote?: string;
expiresAt?: ISODateTime;
outcome?: { observedAt: ISODateTime; summary: string; receiptId?: ReceiptId };
}
Decisions are immutable after executed, rejected, expired, or recorded; outcome is the only field that may be appended later.
4. Edge schema and catalog¶
interface Edge<T extends EdgeType = EdgeType> {
id: EdgeId;
tenantId: TenantId;
type: T;
from: { kind: NodeKind; id: string };
to: { kind: NodeKind; id: string };
attrs: EdgeAttrs[T];
version: number;
validFrom: ISODateTime;
validTo?: ISODateTime;
reason: string;
actor: Actor;
}
| Edge type | From → To | Cardinality | Attrs | Meaning |
|---|---|---|---|---|
member_of |
Person → Org | many-to-many; ≥ 1 per active human | { allocation: 0..1, primary: boolean } |
Membership. Exactly one primary: true per person. |
holds_role |
Person → Role | many-to-many | { since: ISODate } |
Current roles. |
child_of |
Org → Org | ≤ 1 parent per org | {} |
Org tree. Root org has no parent. |
managed_by |
Org → Person(agent, chonk) | exactly 1 per in-scope org | { since } |
Which Chonk manages this org. |
manager_of_record |
Org → Person(human) | exactly 1 per org | { since, backupId?: PersonId } |
The named human escalation owner. |
reports_to |
Person → Person | ≤ 1 per person | { functional: true } |
Functional manager: a Chonk for managed humans; a human manager in Function mode; Chonks report to Chonksworth; Chonksworth reports to the owner. |
escalates_to |
Person → Person(human) | ≤ 1 per person | { reason } |
Optional override of the org's manager of record for one person (e.g., the MoR is the person's spouse in a family business). |
owns |
Person → Goal | Project | exactly 1 owner per Goal/Project | { since } |
Accountability. |
contributes_to |
Goal → Goal, Project → Goal | many-to-many | { weight?: 0..1 } |
Goal tree and project → goal alignment. |
depends_on |
Project → Project | many-to-many | { kind: 'blocking' \| 'soft', externalRef? } |
Dependencies for planning and chasing. |
reviewed_by |
Goal → Cadence | exactly 1 per active Goal | {} |
The cadence at which this goal's health is reviewed. |
participates_in |
Person → Cadence | many-to-many | { role: 'owner' \| 'required' \| 'optional' } |
Ritual participation. |
applies_to |
Policy → Org | Role | Person | many-to-many | { inherit: boolean } |
Policy scope; inherit cascades down child_of. |
about |
Decision → any | many | { relation: 'subject' \| 'affects' } |
What a decision concerns. |
backs_up |
Person → Person | many | { scope: string } |
Coverage during leave. |
scheduled_at |
Person → Org(location) | many | { homeLocation: boolean } |
Atoms: locations a person may be scheduled at. |
assigned_to |
Person → Project | many | { allocation: 0..1, from, to } |
Planning output; written by plan changes. |
Storage: one edges table with a type column, a composite index on (tenant_id, type, from_id) WHERE valid_to IS NULL and its mirror on to_id. Attrs are JSONB validated against the per-type schema at write time.
5. Invariants¶
Invariants are enforced at the write boundary (orgmodel-api transactions) and verified continuously by the Chief Security Officer's nightly integrity run. A write that would violate an invariant is rejected with E_ORG_INVARIANT_<ID> and never partially applied.
| ID | Invariant | Enforced at | On violation found later |
|---|---|---|---|
| I-ORG-01 | Every Org has exactly one active manager_of_record edge to a Person with personKind='human' and status='active'. |
Write; person status transitions | Block the status change; escalate to owner with the orgs needing a new MoR. |
| I-ORG-02 | Every in-scope Org (per tenant mode) has exactly one managed_by edge to an active Chonk Person. |
Write | Scheduler refuses to fire cadences for the org; admin alert. |
| I-ORG-03 | child_of, reports_to, escalates_to, contributes_to, depends_on are acyclic. |
Write (CTE cycle check bounded at depth 64) | Reject. |
| I-ORG-04 | Every active Goal has exactly one owns edge from an active Person and exactly one reviewed_by edge to an active Cadence. |
Write; goal activation; person offboarding | A goal that loses its owner becomes health='unknown', healthReason='orphaned', and an escalation goes to the org's MoR. |
| I-ORG-05 | Every active Project has exactly one owner and is a member of exactly one org (projection orgId). |
Write | Same as I-ORG-04. |
| I-ORG-06 | Every active human Person has ≥ 1 member_of edge and exactly one with primary=true. |
Write | Onboarding draft flags it; managers do not act on the person until fixed. |
| I-ORG-07 | Every active human Person has exactly one reports_to edge; the chain terminates at a human with isOwner=true. |
Write | Reject. |
| I-ORG-08 | The reports_to chain of any human contains at most one Chonk before reaching a human (Chonk → Chonksworth → owner is the longest agent segment). |
Write | Reject. |
| I-ORG-09 | Policy nodes with policyKind='hard_line' have precedence ≥ 1000 and setBy is a human with isOwner=true or an admin. |
Write | Reject. |
| I-ORG-10 | A Decision in a terminal status is immutable except for outcome. |
Write | Reject. |
| I-ORG-11 | Exactly one Org per tenant has orgKind='company' and no child_of edge. |
Write | Reject. |
| I-ORG-12 | Atoms: a Person with employment.isMinor=true has no scheduled_at edge to a location whose jurisdiction's minor rules are unknown to the labor-rule set. |
Write; schedule solve | Solver refuses shifts; CSO compliance escalation. |
| I-ORG-13 | A Person with status='merged' has mergedInto set, no active edges, and no identities. |
Merge transaction | Reject. |
| I-ORG-14 | Every node and edge write carries a non-empty reason and a resolvable actor. |
Write | Reject. |
6. Versioning and change reasons¶
6.1 Change records¶
Every transaction against the graph produces exactly one Change:
interface Change {
id: ChangeId;
tenantId: TenantId;
version: number; // tenant-wide monotonic; assigned in transaction
at: ISODateTime;
actor: Actor;
reason: string; // human-readable; required
reasonCode?: 'onboarding_draft' | 'owner_correction' | 'hris_sync' | 'plan_change'
| 'decision_executed' | 'offboarding' | 'merge' | 'migration' | 'manual_admin';
runId?: RunId; // when actor.kind === 'run'
decisionId?: DecisionId; // when the change executes a decision
ops: ChangeOp[]; // ordered, atomic
invariantsChecked: string[]; // I-ORG-* evaluated
schemaVersion: string;
}
type ChangeOp =
| { op: 'create_node'; node: NodeBase }
| { op: 'update_node'; id: string; patch: JsonPatch; before: object }
| { op: 'end_node'; id: string; validTo: ISODateTime; newStatus?: string }
| { op: 'create_edge'; edge: Edge }
| { op: 'end_edge'; id: EdgeId; validTo: ISODateTime }
| { op: 'merge_person'; from: PersonId; into: PersonId; edgeMap: Array<{ edgeId: EdgeId; originalFrom: PersonId }> };
version is a single counter per tenant. A node row's version is the change version that made it current; historical rows are kept (append-only rows keyed by (id, version) with valid_to closed on supersession). The changes table is the authoritative history; nodes/edges are projections of it and can be rebuilt.
6.2 Reads at a version¶
orgmodel-api supports asOf: { version } | { at: ISODateTime } on every read. Runs pin orgModelVersion at admission and read at that version for their whole life, which is what makes replay deterministic. Latest-version reads are served from the _current partial index.
6.3 Snapshots¶
A snapshot is a full materialization at a version, written to object storage as JSONL, taken nightly and before every migration. Snapshots exist for export (portability requirement), fast replay bootstrap, and the simulation orgs. They are not required for correctness.
6.4 Who may change what¶
| Source of change | Typical reasonCode |
Autonomy | Notes |
|---|---|---|---|
| Onboarding draft | onboarding_draft |
Draft only; owner approves | Nothing acts on the model until approved (OM-2). |
| Owner / admin edits | owner_correction, manual_admin |
Human | Direct writes with reason required in the UI. |
| HRIS sync | hris_sync |
AUTONOMOUS for identity and employment fields; PROPOSE_CONFIRM for org placement | HRIS is the system of record for employment; not for who manages whom. |
| Plan changes | plan_change |
AUTONOMOUS within scope; PROPOSE_CONFIRM if headcount or budget moves | Writes assigned_to, project dates, goal health. |
| Decision execution | decision_executed |
Per decision | Only after decision.confirmed (or AUTONOMOUS verdict). |
| Health updates | plan_change |
AUTONOMOUS | Goal.health, Project.health with cited healthReason. |
| Merge / offboarding | merge, offboarding |
See §8, §9 |
7. Migrations¶
A schema migration is code plus a Change with reasonCode='migration' and actor={kind:'system', id:'sys_migrator'}.
Rules:
- Migrations are forward-only and idempotent. Each has a
schemaVersiontarget; the tenant's currentschemaVersionis stored with the tenant record. - Data migrations run per tenant inside one transaction per tenant, take a snapshot first, and produce a single
Changewhoseopslist every touched row. Large tenants are migrated in batches of changes with the samemigrationId. - A migration that changes edge semantics (renaming a type, splitting a type) must ship with a read-compat shim for one release so replays of old runs still resolve.
- Invariants are re-checked after migration; a failing invariant halts the rollout for that tenant and pages ops. The migration cannot be "partially applied".
- Replays of runs pinned to a pre-migration version read through the shim; a replay is never blocked by a migration.
8. Identity merging¶
A human appears in several systems: the HRIS (Gusto, Rippling, Deel, BambooHR), Slack, GitHub, Linear, Google Workspace, and for atoms the scheduling tool and POS. Each produces an Identity.
interface Identity {
provider: ConnectorProvider;
externalId: string;
email?: string;
handle?: string;
displayName?: string;
verified: boolean; // provider asserts email ownership (SSO, HRIS)
linkedAt: ISODateTime;
linkedBy: Actor;
confidence: number; // 1.0 for verified; matcher score otherwise
}
8.1 Matching rules¶
The HRIS record is the anchor for humans. Everything else attaches to it.
| Rule | Condition | Action | Autonomy |
|---|---|---|---|
| M1 | Verified email on both sides equal (case-insensitive) | Link identity to the existing Person | AUTONOMOUS |
| M2 | Unverified email equal, same tenant, no conflicting link | Link | AUTONOMOUS, logged as confidence=0.9 |
| M3 | Display-name similarity ≥ 0.92 (normalized Jaro-Winkler) and shared org signal (same Slack channel membership as team members, or same GitHub org team) | Create MergeProposal |
PROPOSE_CONFIRM to admin |
| M4 | Two HRIS records with the same verified email | Create MergeProposal marked conflict |
PROPOSE_CONFIRM to admin; never auto |
| M5 | An identity already linked to Person A matches Person B by M1 | Create MergeProposal(A, B) |
PROPOSE_CONFIRM |
| M6 | No match | Create a new Person with status='invited' and no member_of (I-ORG-06 keeps managers from acting on them) |
AUTONOMOUS in onboarding draft; PROPOSE_CONFIRM afterwards |
8.2 Merge transaction¶
merge(from: PersonId, into: PersonId, reason, actor):
- Choose canonical: the Person with a verified HRIS identity; if both or neither, the older
createdAt. - Union
identities; on provider collision keep the verified one and record the other inattrs.supersededIdentities. - Re-point every active edge from
fromtointo; themerge_personop recordsedgeMapwith each edge's original endpoint so unmerge is exact. - Re-key people memory facts (
memory-service.rekey(from → into)) and thread mappings; audit entries are never rewritten (they referencefrom, which now resolves viamergedInto). - Set
from.status='merged',from.mergedInto=into, end its edges. - Emit
org.person.merged.
Unmerge is Change reversal: restore both nodes from the pre-merge rows, re-point edges per edgeMap, and re-key memory back. Memory written after the merge stays with the canonical Person and is flagged for admin review.
8.3 What merging must never do¶
- Combine two humans because they share a name. M3 requires an org signal and a human confirmation.
- Merge a human into an agent or vice versa (
E_ORG_MERGE_KIND_MISMATCH). - Change employment fields; those come from the HRIS on the next sync.
9. Soft delete and offboarding¶
9.1 Soft delete¶
end_node sets validTo and a terminal status; end_edge sets validTo. Readers at the latest version do not see ended rows; readers asOf an earlier version do. There is no DELETE in application code. Purge (physical removal) is a retention operation run by the Chief Security Officer's retention job or an admin legal request, and it writes an audit entry with the hash of the purged rows.
9.2 Person status machine¶
stateDiagram-v2
[*] --> invited: created (draft/HRIS/manual)
invited --> active: member_of + reports_to established
active --> on_leave: HRIS leave or admin (reason)
on_leave --> active: HRIS return
active --> offboarding: HRIS termination recorded OR admin offboard (HUMAN decision already made elsewhere)
on_leave --> offboarding
offboarding --> offboarded: endDate reached and checklist complete
active --> merged: merge()
invited --> merged: merge()
offboarded --> [*]: purge after retention
Sea Suite never decides termination (HUMAN_ONLY, and there is no code path). It processes one that a human recorded in the HRIS or entered in admin with a reason. The offboarding transition is therefore an administrative act, always with a human actor or an hris_sync change that references the HRIS event.
9.3 Offboarding checklist (enforced ordering)¶
| Step | Rule | Owner | Blocking |
|---|---|---|---|
| O1 | If the person is manager_of_record for any org, a replacement must be set first (I-ORG-01). |
Owner via Chonksworth packet | Yes — status change rejected until done |
| O2 | Owned goals and projects are reassigned; unassigned ones become orphaned with an escalation to the org MoR. |
Chief Operating Orca (PROPOSE_CONFIRM reassignment) | No |
| O3 | participates_in, assigned_to, backs_up, scheduled_at edges ended with reason='offboarding'. |
System | No |
| O4 | Manager thread set read-only; a final deterministic message tells the person what happens to their data and where to see it. | outreach-service | No |
| O5 | People memory enters retention: offboarded class (default purge at endDate + 30 days; tenant-configurable 0–90). |
memory-service | No |
| O6 | Connector-side access removal is proposed to the Chief Security Officer's packet; execution is by the admin (HUMAN_ONLY adjacent: access revocation for a departing employee is executed by a human, prepared by the CSO). | Chief Security Officer | No |
| O7 | On endDate, status → offboarded; edges already ended; audit retained per tenant retention policy. |
System | — |
Reversal (the person returns) creates a new Person linked by externalRefs to the old one; memory is not restored.
10. Query patterns¶
All examples assume tenant_id is set in the session (SET app.tenant_id) and RLS applies.
Q1 — Escalation chain for a person¶
Used by escalation-router for every escalation and rendered in every manager thread header.
-- 1. explicit override
SELECT to_id FROM edges
WHERE type='escalates_to' AND from_id=$person AND valid_to IS NULL;
-- 2. else walk primary org upward until a manager_of_record exists
WITH RECURSIVE up AS (
SELECT e.to_id AS org_id, 0 AS depth FROM edges e
WHERE e.type='member_of' AND e.from_id=$person AND e.valid_to IS NULL AND (e.attrs->>'primary')::bool
UNION ALL
SELECT c.to_id, up.depth+1 FROM up JOIN edges c
ON c.type='child_of' AND c.from_id=up.org_id AND c.valid_to IS NULL
WHERE up.depth < 64
)
SELECT m.to_id AS manager_of_record, up.org_id, up.depth
FROM up JOIN edges m ON m.type='manager_of_record' AND m.from_id=up.org_id AND m.valid_to IS NULL
ORDER BY up.depth LIMIT 1;
Returns the nearest MoR plus the full chain (for "and then the owner"). By I-ORG-01 the query always returns at least the company MoR.
Q2 — Org subtree with members and Chonk¶
WITH RECURSIVE tree AS (
SELECT id, 0 AS depth FROM nodes WHERE id=$org AND valid_to IS NULL
UNION ALL
SELECT c.from_id, tree.depth+1 FROM tree JOIN edges c
ON c.type='child_of' AND c.to_id=tree.id AND c.valid_to IS NULL
)
SELECT t.id AS org_id, t.depth, m.from_id AS person_id, (m.attrs->>'allocation')::float AS allocation,
mb.to_id AS chonk_person_id
FROM tree t
LEFT JOIN edges m ON m.type='member_of' AND m.to_id=t.id AND m.valid_to IS NULL
LEFT JOIN edges mb ON mb.type='managed_by' AND mb.from_id=t.id AND mb.valid_to IS NULL;
Q3 — Goals a person is accountable for or contributing to¶
Owned goals (owns), plus goals reached from projects the person is assigned_to via contributes_to, plus org goals of the primary org. Returned with health, healthReason, reviewCadenceId. This is the "what matters today" seed for the morning brief.
Q4 — Dependency closure of a project¶
Transitive depends_on with kind='blocking' first, bounded at depth 32; returns each dependency's owner, org, Chonk, and MoR. This is what the chaser uses to know whose thread to speak in.
Q5 — Policies applicable to an action¶
Union of policies whose applies_to targets are: the actor's Chonk function; the subject org or any ancestor (when inherit=true); any role the subject person holds; the subject person. Ordered by precedence DESC, effective.from DESC. The policy engine consumes this list; it does not query the graph itself.
Q6 — Cadences due in a window¶
SELECT … FROM cadences WHERE status='active' AND next_fire_at BETWEEN $from AND $to against the scheduler's cadence index, which is a projection of Cadence.schedule expanded per participant when timezone='participant'.
Q7 — "What my manager knows" (graph portion)¶
Every active edge touching the person, every Decision about the person, every Goal/Project they own, plus the memory facts from memory-service. Rendered with reason and actor for each edge so the person can see who put them on a team and why.
Q8 — Time travel¶
Any of the above with AND valid_from <= $at AND (valid_to IS NULL OR valid_to > $at) in place of valid_to IS NULL. The API exposes this as asOf.
11. Worked example A — Lanternfish Software (40 people, Full Suite)¶
Founder-led, 40 people, Full Suite. Founder Priya Raman is the owner and the manager of record for the company and the small orgs; senior ICs are MoR for the larger orgs and remain ICs. Nine Chonks are active. Abridged: all orgs, roles, cadences, policies; representative people, goals, projects, decisions; edges shown for the represented nodes (the pattern is identical for the other 33 people).
{
"tenant": { "id": "tnt_01J6LANTERNFISH", "name": "Lanternfish Software", "mode": "FULL_SUITE", "atoms": false, "phase": "ACTIVE", "schemaVersion": "2026.09" },
"nodes": {
"orgs": [
{ "id": "org_lf", "orgKind": "company", "name": "Lanternfish Software", "timezone": "America/Los_Angeles" },
{ "id": "org_eng", "orgKind": "department", "name": "Engineering", "timezone": "America/Los_Angeles" },
{ "id": "org_platform", "orgKind": "team", "name": "Platform", "timezone": "America/Los_Angeles" },
{ "id": "org_prodeng", "orgKind": "team", "name": "Product Engineering", "timezone": "America/Los_Angeles" },
{ "id": "org_product", "orgKind": "team", "name": "Product", "timezone": "America/Los_Angeles" },
{ "id": "org_design", "orgKind": "team", "name": "Design", "timezone": "America/Los_Angeles" },
{ "id": "org_support", "orgKind": "team", "name": "Support", "timezone": "America/New_York" },
{ "id": "org_sales", "orgKind": "team", "name": "Sales", "timezone": "America/New_York" },
{ "id": "org_marketing", "orgKind": "team", "name": "Marketing", "timezone": "America/Los_Angeles" },
{ "id": "org_bizops", "orgKind": "team", "name": "BizOps & Finance", "timezone": "America/Los_Angeles" }
],
"roles": [
{ "id": "rol_founder", "title": "Founder & CEO", "family": "leadership" },
{ "id": "rol_staff_eng", "title": "Staff Engineer", "family": "engineering", "band": "E5" },
{ "id": "rol_backend", "title": "Backend Engineer", "family": "engineering", "band": "E3" },
{ "id": "rol_frontend", "title": "Frontend Engineer", "family": "engineering", "band": "E3" },
{ "id": "rol_pm", "title": "Product Manager", "family": "product", "band": "P3" },
{ "id": "rol_designer", "title": "Product Designer", "family": "design", "band": "D3" },
{ "id": "rol_support_eng", "title": "Support Engineer", "family": "support", "band": "S2" },
{ "id": "rol_support_lead", "title": "Senior Support Engineer", "family": "support", "band": "S3" },
{ "id": "rol_ae", "title": "Account Executive", "family": "sales", "band": "R3" },
{ "id": "rol_marketer", "title": "Growth Marketer", "family": "marketing", "band": "M3" },
{ "id": "rol_bizops", "title": "BizOps Lead", "family": "operations", "band": "O3" }
],
"people": [
{ "id": "prs_priya", "personKind": "human", "status": "active", "displayName": "Priya Raman", "isOwner": true, "timezone": "America/Los_Angeles", "locale": "en-US",
"identities": [ { "provider": "gusto", "externalId": "g-1001", "email": "priya@lanternfish.dev", "verified": true, "confidence": 1 },
{ "provider": "slack", "externalId": "U01PRIYA", "email": "priya@lanternfish.dev", "verified": true, "confidence": 1 } ],
"contact": { "preferredSurface": "app", "surfaceOrder": ["app", "slack", "email", "sms"], "workEmail": "priya@lanternfish.dev" },
"employment": { "type": "employee", "startDate": "2021-03-01", "laborClass": "exempt" } },
{ "id": "prs_tomas", "personKind": "human", "status": "active", "displayName": "Tomás Ferreira", "isOwner": false, "timezone": "America/Los_Angeles", "locale": "en-US",
"identities": [ { "provider": "gusto", "externalId": "g-1007", "email": "tomas@lanternfish.dev", "verified": true, "confidence": 1 },
{ "provider": "slack", "externalId": "U01TOMAS", "verified": true, "confidence": 1 },
{ "provider": "github", "externalId": "tferreira", "handle": "tferreira", "verified": false, "confidence": 0.9 },
{ "provider": "linear", "externalId": "lin-77", "email": "tomas@lanternfish.dev", "verified": true, "confidence": 1 } ],
"contact": { "preferredSurface": "slack", "surfaceOrder": ["slack", "email"] },
"briefWindow": { "start": "08:30", "end": "09:00" },
"employment": { "type": "employee", "startDate": "2021-09-13", "laborClass": "exempt" } },
{ "id": "prs_ana", "personKind": "human", "status": "active", "displayName": "Ana Lindqvist", "isOwner": false, "timezone": "Europe/Stockholm", "locale": "en-GB",
"identities": [ { "provider": "deel", "externalId": "d-3310", "email": "ana@lanternfish.dev", "verified": true, "confidence": 1 },
{ "provider": "github", "externalId": "alindqvist", "verified": false, "confidence": 0.9 },
{ "provider": "slack", "externalId": "U02ANA", "verified": true, "confidence": 1 } ],
"contact": { "preferredSurface": "slack", "surfaceOrder": ["slack", "email"] },
"briefWindow": { "start": "08:00", "end": "08:30" },
"employment": { "type": "contractor", "startDate": "2024-02-05" } },
{ "id": "prs_ben", "personKind": "human", "status": "active", "displayName": "Ben Okoro", "isOwner": false, "timezone": "America/Los_Angeles", "locale": "en-US",
"identities": [ { "provider": "gusto", "externalId": "g-1019", "email": "ben@lanternfish.dev", "verified": true, "confidence": 1 },
{ "provider": "github", "externalId": "benokoro", "verified": false, "confidence": 0.9 },
{ "provider": "slack", "externalId": "U02BEN", "verified": true, "confidence": 1 } ],
"contact": { "preferredSurface": "slack", "surfaceOrder": ["slack", "email"] },
"employment": { "type": "employee", "startDate": "2023-06-12", "laborClass": "exempt" } },
{ "id": "prs_lena", "personKind": "human", "status": "active", "displayName": "Lena Fischer", "isOwner": false, "timezone": "America/New_York", "locale": "en-US",
"identities": [ { "provider": "gusto", "externalId": "g-1024", "email": "lena@lanternfish.dev", "verified": true, "confidence": 1 } ],
"contact": { "preferredSurface": "slack", "surfaceOrder": ["slack", "email"] },
"employment": { "type": "employee", "startDate": "2022-01-10", "laborClass": "exempt" } },
{ "id": "prs_marcus", "personKind": "human", "status": "active", "displayName": "Marcus Bell", "isOwner": false, "timezone": "America/New_York", "locale": "en-US",
"identities": [ { "provider": "gusto", "externalId": "g-1030", "email": "marcus@lanternfish.dev", "verified": true, "confidence": 1 } ],
"contact": { "preferredSurface": "slack", "surfaceOrder": ["slack", "sms"] },
"employment": { "type": "employee", "startDate": "2022-08-01", "laborClass": "exempt" } },
{ "id": "prs_chonk_chonksworth", "personKind": "agent", "status": "active", "displayName": "Chonksworth", "isOwner": false, "timezone": "America/Los_Angeles", "locale": "en-US", "identities": [], "contact": { "preferredSurface": "app", "surfaceOrder": ["app"] }, "agent": { "agentKind": "chonk", "chonkId": "chonksworth" } },
{ "id": "prs_chonk_build", "personKind": "agent", "status": "active", "displayName": "Chief Build Officer", "isOwner": false, "timezone": "America/Los_Angeles", "locale": "en-US", "identities": [], "contact": { "preferredSurface": "app", "surfaceOrder": ["app"] }, "agent": { "agentKind": "chonk", "chonkId": "build" } },
{ "id": "prs_chonk_human", "personKind": "agent", "status": "active", "displayName": "Chief Human Officer", "isOwner": false, "timezone": "America/Los_Angeles", "locale": "en-US", "identities": [], "contact": { "preferredSurface": "app", "surfaceOrder": ["app"] }, "agent": { "agentKind": "chonk", "chonkId": "human" } },
{ "id": "prs_chonk_ops", "personKind": "agent", "status": "active", "displayName": "Chief Operating Orca", "isOwner": false, "timezone": "America/Los_Angeles", "locale": "en-US", "identities": [], "contact": { "preferredSurface": "app", "surfaceOrder": ["app"] }, "agent": { "agentKind": "chonk", "chonkId": "ops" } },
{ "id": "prs_chonk_fin", "personKind": "agent", "status": "active", "displayName": "Chief Fin Officer", "isOwner": false, "timezone": "America/Los_Angeles", "locale": "en-US", "identities": [], "contact": { "preferredSurface": "app", "surfaceOrder": ["app"] }, "agent": { "agentKind": "chonk", "chonkId": "fin" } },
{ "id": "prs_chonk_porpoise", "personKind": "agent", "status": "active", "displayName": "Chief Porpoise Officer", "isOwner": false, "timezone": "America/Los_Angeles", "locale": "en-US", "identities": [], "contact": { "preferredSurface": "app", "surfaceOrder": ["app"] }, "agent": { "agentKind": "chonk", "chonkId": "porpoise" } },
{ "id": "prs_chonk_revenue", "personKind": "agent", "status": "active", "displayName": "Head of Revenue", "isOwner": false, "timezone": "America/New_York", "locale": "en-US", "identities": [], "contact": { "preferredSurface": "app", "surfaceOrder": ["app"] }, "agent": { "agentKind": "chonk", "chonkId": "revenue" } },
{ "id": "prs_chonk_marketing", "personKind": "agent", "status": "active", "displayName": "Chief Marketing Officer", "isOwner": false, "timezone": "America/Los_Angeles", "locale": "en-US", "identities": [], "contact": { "preferredSurface": "app", "surfaceOrder": ["app"] }, "agent": { "agentKind": "chonk", "chonkId": "marketing" } },
{ "id": "prs_chonk_security", "personKind": "agent", "status": "active", "displayName": "Chief Security Officer", "isOwner": false, "timezone": "America/Los_Angeles", "locale": "en-US", "identities": [], "contact": { "preferredSurface": "app", "surfaceOrder": ["app"] }, "agent": { "agentKind": "chonk", "chonkId": "security" } }
],
"goals": [
{ "id": "gol_arr", "level": "company", "title": "Reach $3.2M ARR", "period": { "start": "2026-07-01", "end": "2026-12-31" },
"metric": { "name": "ARR", "unit": "USD", "target": 3200000, "baseline": 2450000, "current": 2710000, "direction": "up", "sourceRef": { "provider": "stripe", "externalId": "arr-report", "lastSyncedAt": "2026-09-01T06:00:00Z" } },
"status": "active", "health": "yellow", "healthReason": "Run-rate reaches $3.05M by Dec 31 at current net-new [stripe:arr-report@2026-09-01]; two enterprise deals in Sales pipeline would close the gap [linear:SALES-88, SALES-91].", "healthAsOf": "2026-09-01T06:05:00Z" },
{ "id": "gol_v2api", "level": "org", "title": "v2 API generally available", "period": { "start": "2026-07-01", "end": "2026-10-31" },
"metric": { "name": "GA milestone", "unit": "boolean", "target": 1, "current": 0, "direction": "up" },
"status": "active", "health": "yellow", "healthReason": "Auth migration (prj_authmig) 6 days behind; critical path to GA [linear:ENG-401].", "healthAsOf": "2026-09-01T06:05:00Z" },
{ "id": "gol_deflect", "level": "org", "title": "Support ticket deflection 35%", "period": { "start": "2026-07-01", "end": "2026-12-31" },
"metric": { "name": "deflection_rate", "unit": "percent", "target": 35, "baseline": 18, "current": 24, "direction": "up" },
"status": "active", "health": "green", "healthReason": "On trend [intercom:deflection@2026-09-01]." },
{ "id": "gol_ana_growth", "level": "person", "title": "Lead the auth migration end to end", "period": { "start": "2026-07-01", "end": "2026-10-31" }, "status": "active", "health": "yellow", "healthReason": "Blocked on review throughput from Product Engineering [github:pr-412]." }
],
"projects": [
{ "id": "prj_v2ga", "title": "v2 API GA", "status": "active", "health": "yellow", "dates": { "start": "2026-07-07", "target": "2026-10-31" }, "estimate": { "unit": "person_weeks", "value": 38, "confidence": 0.7 },
"externalRefs": [ { "provider": "linear", "externalId": "ENG-400", "url": "https://linear.app/lf/issue/ENG-400", "lastSyncedAt": "2026-09-01T06:00:00Z" } ] },
{ "id": "prj_authmig", "title": "Auth migration", "status": "blocked", "health": "red", "healthReason": "PR #412 unreviewed 20h; reviewer in Product Engineering [github:pr-412].", "dates": { "start": "2026-07-14", "target": "2026-09-12" },
"externalRefs": [ { "provider": "linear", "externalId": "ENG-401", "lastSyncedAt": "2026-09-01T06:00:00Z" }, { "provider": "github", "externalId": "lanternfish/core#412", "lastSyncedAt": "2026-09-01T06:00:00Z" } ] },
{ "id": "prj_deflectbot", "title": "Support deflection assistant", "status": "active", "health": "green", "dates": { "start": "2026-08-01", "target": "2026-11-15" } }
],
"cadences": [
{ "id": "cad_brief", "name": "Morning brief", "cadenceKind": "morning_brief", "ownerChonkId": "human", "format": "written", "schedule": { "rrule": "FREQ=DAILY;BYDAY=MO,TU,WE,TH,FR", "timezone": "participant", "window": { "start": "08:00", "end": "09:00" }, "graceMinutes": 30 }, "scope": { "orgId": "org_lf" }, "inputs": [ { "kind": "org_model", "spec": "goals,projects,assignments" }, { "kind": "mirror", "spec": "linear,github,calendar" }, { "kind": "memory", "spec": "subject:self" } ], "outputs": [ { "kind": "message", "spec": "brief" } ], "status": "active", "priority": "P2" },
{ "id": "cad_checkin", "name": "Async check-in", "cadenceKind": "async_checkin", "ownerChonkId": "human", "format": "written", "schedule": { "rrule": "FREQ=WEEKLY;BYDAY=TU,TH", "timezone": "participant", "window": { "start": "15:00", "end": "17:00" }, "graceMinutes": 120 }, "scope": { "orgId": "org_lf" }, "inputs": [ { "kind": "reply", "spec": "optional" } ], "outputs": [ { "kind": "message", "spec": "checkin" } ], "status": "active", "priority": "P3" },
{ "id": "cad_platform_weekly", "name": "Platform weekly review", "cadenceKind": "weekly_review", "ownerChonkId": "build", "format": "written", "schedule": { "rrule": "FREQ=WEEKLY;BYDAY=FR;BYHOUR=14", "timezone": "America/Los_Angeles", "graceMinutes": 180 }, "scope": { "orgId": "org_platform" }, "inputs": [ { "kind": "mirror", "spec": "linear,github" } ], "outputs": [ { "kind": "document", "spec": "weekly_review" }, { "kind": "org_change", "spec": "project.health" } ], "status": "active", "priority": "P4" },
{ "id": "cad_owner_update", "name": "Weekly owner update", "cadenceKind": "owner_update", "ownerChonkId": "chonksworth", "format": "video", "schedule": { "rrule": "FREQ=WEEKLY;BYDAY=MO;BYHOUR=7", "timezone": "America/Los_Angeles", "graceMinutes": 120 }, "scope": { "orgId": "org_lf" }, "inputs": [ { "kind": "org_model", "spec": "all" }, { "kind": "memory", "spec": "narrative:org_lf" } ], "outputs": [ { "kind": "video", "spec": "owner_update" }, { "kind": "decision", "spec": "escalation_to_owner" } ], "status": "active", "priority": "P2" },
{ "id": "cad_qplan", "name": "Quarterly planning", "cadenceKind": "quarterly_planning", "ownerChonkId": "ops", "format": "written", "schedule": { "rrule": "FREQ=MONTHLY;BYMONTH=3,6,9,12;BYMONTHDAY=15", "timezone": "America/Los_Angeles", "graceMinutes": 1440 }, "scope": { "orgId": "org_lf" }, "inputs": [ { "kind": "org_model", "spec": "goals,capacity" } ], "outputs": [ { "kind": "decision", "spec": "goal_set" }, { "kind": "decision", "spec": "plan_change" } ], "status": "active", "priority": "P4" },
{ "id": "cad_pipeline", "name": "Pipeline review", "cadenceKind": "pipeline_review", "ownerChonkId": "revenue", "format": "written", "schedule": { "rrule": "FREQ=WEEKLY;BYDAY=WE;BYHOUR=9", "timezone": "America/New_York", "graceMinutes": 180 }, "scope": { "orgId": "org_sales" }, "inputs": [ { "kind": "mirror", "spec": "hubspot,stripe" } ], "outputs": [ { "kind": "document", "spec": "pipeline_review" } ], "status": "active", "priority": "P4" },
{ "id": "cad_1on1_ana", "name": "1:1 — Ana", "cadenceKind": "one_on_one", "ownerChonkId": "human", "format": "written", "schedule": { "rrule": "FREQ=WEEKLY;INTERVAL=2;BYDAY=WE", "timezone": "participant", "window": { "start": "10:00", "end": "12:00" }, "graceMinutes": 240 }, "scope": { "personId": "prs_ana" }, "inputs": [ { "kind": "memory", "spec": "subject:prs_ana" } ], "outputs": [ { "kind": "message", "spec": "one_on_one" } ], "status": "active", "priority": "P3" }
],
"policies": [
{ "id": "pol_discount", "name": "No discount below 20% without owner approval", "policyKind": "hard_line", "rule": { "when": { "action": "OFFER_DISCOUNT", "gt": ["discountPct", 20] } }, "autonomyClass": "PROPOSE_CONFIRM", "precedence": 1000, "setBy": "prs_priya", "effective": { "from": "2026-07-01T00:00:00Z" } },
{ "id": "pol_tooling_3k", "name": "Tooling spend over $3,000/month per org needs approval", "policyKind": "threshold", "rule": { "when": { "action": "APPROVE_SPEND", "category": "tooling", "gt": ["monthlyTotalWithRequest", 3000] } }, "autonomyClass": "PROPOSE_CONFIRM", "precedence": 500, "setBy": "prs_priya", "effective": { "from": "2026-07-01T00:00:00Z" } },
{ "id": "pol_outreach", "name": "Outreach cap", "policyKind": "outreach_cap", "rule": { "maxChasesPerPersonPerDay": 3, "maxMessagesPerPersonPerDay": 8, "quietHoursDefault": { "start": "19:00", "end": "07:00" } }, "precedence": 100, "setBy": "prs_priya", "effective": { "from": "2026-07-01T00:00:00Z" } },
{ "id": "pol_retention", "name": "Memory retention", "policyKind": "retention", "rule": { "work_signal": "P90D", "feedback": "P24M", "preference": "until_offboarded+P30D", "decision_log": "P7Y" }, "precedence": 100, "setBy": "prs_priya", "effective": { "from": "2026-07-01T00:00:00Z" } },
{ "id": "pol_tone", "name": "Tone dial", "policyKind": "tone", "rule": { "default": 0.7, "min": 0.2, "max": 0.9 }, "precedence": 100, "setBy": "prs_priya", "effective": { "from": "2026-07-01T00:00:00Z" } }
],
"decisions": [
{ "id": "dec_datadog", "decisionKind": "spend_approval", "autonomyClass": "PROPOSE_CONFIRM", "effectiveMode": "PROPOSE_CONFIRM", "proposedByChonkId": "fin", "runId": "run_01J6RAMP4800", "summary": "Approve $4,800 Datadog upgrade for Platform (tooling total $5,550 vs $3,000 threshold)", "recommendation": "Approve. Envelope has $1,250 left this month; overage is one-time and offsets $900/mo of self-hosted metrics cost from October [ledger:L-2291, ramp:v-datadog].", "receiptId": "rcp_01J6RAMP4800", "status": "confirmed", "routedTo": ["prs_priya"], "decidedBy": "prs_priya", "decidedAt": "2026-09-02T16:41:12Z", "expiresAt": "2026-09-05T15:00:00Z" }
]
},
"edges": [
{ "id": "edg_1", "type": "child_of", "from": { "kind": "Org", "id": "org_eng" }, "to": { "kind": "Org", "id": "org_lf" }, "attrs": {}, "reason": "Onboarding draft from Gusto departments", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_2", "type": "child_of", "from": { "kind": "Org", "id": "org_platform" }, "to": { "kind": "Org", "id": "org_eng" }, "attrs": {}, "reason": "Onboarding draft from GitHub teams", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_3", "type": "child_of", "from": { "kind": "Org", "id": "org_prodeng" }, "to": { "kind": "Org", "id": "org_eng" }, "attrs": {}, "reason": "Onboarding draft from GitHub teams", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_4", "type": "child_of", "from": { "kind": "Org", "id": "org_product" }, "to": { "kind": "Org", "id": "org_lf" }, "attrs": {}, "reason": "Owner correction: Product reports to company, not Engineering", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_5", "type": "child_of", "from": { "kind": "Org", "id": "org_design" }, "to": { "kind": "Org", "id": "org_lf" }, "attrs": {}, "reason": "Onboarding draft", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_6", "type": "child_of", "from": { "kind": "Org", "id": "org_support" }, "to": { "kind": "Org", "id": "org_lf" }, "attrs": {}, "reason": "Onboarding draft", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_7", "type": "child_of", "from": { "kind": "Org", "id": "org_sales" }, "to": { "kind": "Org", "id": "org_lf" }, "attrs": {}, "reason": "Onboarding draft", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_8", "type": "child_of", "from": { "kind": "Org", "id": "org_marketing" }, "to": { "kind": "Org", "id": "org_lf" }, "attrs": {}, "reason": "Onboarding draft", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_9", "type": "child_of", "from": { "kind": "Org", "id": "org_bizops" }, "to": { "kind": "Org", "id": "org_lf" }, "attrs": {}, "reason": "Onboarding draft", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_10", "type": "manager_of_record", "from": { "kind": "Org", "id": "org_lf" }, "to": { "kind": "Person", "id": "prs_priya" }, "attrs": { "since": "2026-07-01" }, "reason": "Owner is company MoR", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_11", "type": "manager_of_record", "from": { "kind": "Org", "id": "org_eng" }, "to": { "kind": "Person", "id": "prs_tomas" }, "attrs": { "since": "2026-07-01", "backupId": "prs_priya" }, "reason": "Staff engineer named human escalation owner for Engineering; remains IC", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_12", "type": "manager_of_record", "from": { "kind": "Org", "id": "org_platform" }, "to": { "kind": "Person", "id": "prs_tomas" }, "attrs": { "since": "2026-07-01" }, "reason": "Same as Engineering", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_13", "type": "manager_of_record", "from": { "kind": "Org", "id": "org_prodeng" }, "to": { "kind": "Person", "id": "prs_tomas" }, "attrs": { "since": "2026-07-01" }, "reason": "Same as Engineering", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_14", "type": "manager_of_record", "from": { "kind": "Org", "id": "org_support" }, "to": { "kind": "Person", "id": "prs_lena" }, "attrs": { "since": "2026-07-01" }, "reason": "Senior support engineer named MoR", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_15", "type": "manager_of_record", "from": { "kind": "Org", "id": "org_sales" }, "to": { "kind": "Person", "id": "prs_marcus" }, "attrs": { "since": "2026-07-01" }, "reason": "Senior AE named MoR", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_16", "type": "manager_of_record", "from": { "kind": "Org", "id": "org_product" }, "to": { "kind": "Person", "id": "prs_priya" }, "attrs": { "since": "2026-07-01" }, "reason": "Owner is MoR for small orgs", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_17", "type": "manager_of_record", "from": { "kind": "Org", "id": "org_design" }, "to": { "kind": "Person", "id": "prs_priya" }, "attrs": { "since": "2026-07-01" }, "reason": "Owner is MoR for small orgs", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_18", "type": "manager_of_record", "from": { "kind": "Org", "id": "org_marketing" }, "to": { "kind": "Person", "id": "prs_priya" }, "attrs": { "since": "2026-07-01" }, "reason": "Owner is MoR for small orgs", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_19", "type": "manager_of_record", "from": { "kind": "Org", "id": "org_bizops" }, "to": { "kind": "Person", "id": "prs_priya" }, "attrs": { "since": "2026-07-01" }, "reason": "Owner is MoR for small orgs", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_20", "type": "managed_by", "from": { "kind": "Org", "id": "org_lf" }, "to": { "kind": "Person", "id": "prs_chonk_chonksworth" }, "attrs": { "since": "2026-07-01" }, "reason": "Full Suite roster", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_21", "type": "managed_by", "from": { "kind": "Org", "id": "org_eng" }, "to": { "kind": "Person", "id": "prs_chonk_build" }, "attrs": { "since": "2026-07-01" }, "reason": "Full Suite roster", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_22", "type": "managed_by", "from": { "kind": "Org", "id": "org_platform" }, "to": { "kind": "Person", "id": "prs_chonk_build" }, "attrs": { "since": "2026-07-01" }, "reason": "Full Suite roster", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_23", "type": "managed_by", "from": { "kind": "Org", "id": "org_prodeng" }, "to": { "kind": "Person", "id": "prs_chonk_build" }, "attrs": { "since": "2026-07-01" }, "reason": "Full Suite roster", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_24", "type": "managed_by", "from": { "kind": "Org", "id": "org_product" }, "to": { "kind": "Person", "id": "prs_chonk_porpoise" }, "attrs": { "since": "2026-07-01" }, "reason": "Full Suite roster", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_25", "type": "managed_by", "from": { "kind": "Org", "id": "org_design" }, "to": { "kind": "Person", "id": "prs_chonk_porpoise" }, "attrs": { "since": "2026-07-01" }, "reason": "Full Suite roster", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_26", "type": "managed_by", "from": { "kind": "Org", "id": "org_support" }, "to": { "kind": "Person", "id": "prs_chonk_ops" }, "attrs": { "since": "2026-07-01" }, "reason": "Full Suite roster", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_27", "type": "managed_by", "from": { "kind": "Org", "id": "org_sales" }, "to": { "kind": "Person", "id": "prs_chonk_revenue" }, "attrs": { "since": "2026-07-01" }, "reason": "Full Suite roster", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_28", "type": "managed_by", "from": { "kind": "Org", "id": "org_marketing" }, "to": { "kind": "Person", "id": "prs_chonk_marketing" }, "attrs": { "since": "2026-07-01" }, "reason": "Full Suite roster", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_29", "type": "managed_by", "from": { "kind": "Org", "id": "org_bizops" }, "to": { "kind": "Person", "id": "prs_chonk_fin" }, "attrs": { "since": "2026-07-01" }, "reason": "Full Suite roster", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_30", "type": "member_of", "from": { "kind": "Person", "id": "prs_priya" }, "to": { "kind": "Org", "id": "org_lf" }, "attrs": { "allocation": 1, "primary": true }, "reason": "Gusto sync", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_31", "type": "member_of", "from": { "kind": "Person", "id": "prs_tomas" }, "to": { "kind": "Org", "id": "org_platform" }, "attrs": { "allocation": 1, "primary": true }, "reason": "Gusto sync", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_32", "type": "member_of", "from": { "kind": "Person", "id": "prs_ana" }, "to": { "kind": "Org", "id": "org_platform" }, "attrs": { "allocation": 1, "primary": true }, "reason": "Deel sync", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_33", "type": "member_of", "from": { "kind": "Person", "id": "prs_ben" }, "to": { "kind": "Org", "id": "org_prodeng" }, "attrs": { "allocation": 1, "primary": true }, "reason": "Gusto sync", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_34", "type": "member_of", "from": { "kind": "Person", "id": "prs_lena" }, "to": { "kind": "Org", "id": "org_support" }, "attrs": { "allocation": 1, "primary": true }, "reason": "Gusto sync", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_35", "type": "member_of", "from": { "kind": "Person", "id": "prs_marcus" }, "to": { "kind": "Org", "id": "org_sales" }, "attrs": { "allocation": 1, "primary": true }, "reason": "Gusto sync", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_40", "type": "holds_role", "from": { "kind": "Person", "id": "prs_priya" }, "to": { "kind": "Role", "id": "rol_founder" }, "attrs": { "since": "2021-03-01" }, "reason": "Gusto sync", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_41", "type": "holds_role", "from": { "kind": "Person", "id": "prs_tomas" }, "to": { "kind": "Role", "id": "rol_staff_eng" }, "attrs": { "since": "2024-01-01" }, "reason": "Gusto sync", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_42", "type": "holds_role", "from": { "kind": "Person", "id": "prs_ana" }, "to": { "kind": "Role", "id": "rol_backend" }, "attrs": { "since": "2024-02-05" }, "reason": "Deel sync", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_43", "type": "holds_role", "from": { "kind": "Person", "id": "prs_ben" }, "to": { "kind": "Role", "id": "rol_frontend" }, "attrs": { "since": "2023-06-12" }, "reason": "Gusto sync", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_50", "type": "reports_to", "from": { "kind": "Person", "id": "prs_tomas" }, "to": { "kind": "Person", "id": "prs_chonk_build" }, "attrs": { "functional": true }, "reason": "Platform is managed by the Chief Build Officer", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_51", "type": "reports_to", "from": { "kind": "Person", "id": "prs_ana" }, "to": { "kind": "Person", "id": "prs_chonk_build" }, "attrs": { "functional": true }, "reason": "Platform is managed by the Chief Build Officer", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_52", "type": "reports_to", "from": { "kind": "Person", "id": "prs_ben" }, "to": { "kind": "Person", "id": "prs_chonk_build" }, "attrs": { "functional": true }, "reason": "Product Engineering is managed by the Chief Build Officer", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_53", "type": "reports_to", "from": { "kind": "Person", "id": "prs_lena" }, "to": { "kind": "Person", "id": "prs_chonk_ops" }, "attrs": { "functional": true }, "reason": "Support is managed by the Chief Operating Orca", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_54", "type": "reports_to", "from": { "kind": "Person", "id": "prs_marcus" }, "to": { "kind": "Person", "id": "prs_chonk_revenue" }, "attrs": { "functional": true }, "reason": "Sales is managed by the Head of Revenue", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_55", "type": "reports_to", "from": { "kind": "Person", "id": "prs_chonk_build" }, "to": { "kind": "Person", "id": "prs_chonk_chonksworth" }, "attrs": { "functional": true }, "reason": "Roster hierarchy: escalation triage", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_56", "type": "reports_to", "from": { "kind": "Person", "id": "prs_chonk_ops" }, "to": { "kind": "Person", "id": "prs_chonk_chonksworth" }, "attrs": { "functional": true }, "reason": "Roster hierarchy", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_57", "type": "reports_to", "from": { "kind": "Person", "id": "prs_chonk_revenue" }, "to": { "kind": "Person", "id": "prs_chonk_chonksworth" }, "attrs": { "functional": true }, "reason": "Roster hierarchy", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_58", "type": "reports_to", "from": { "kind": "Person", "id": "prs_chonk_chonksworth" }, "to": { "kind": "Person", "id": "prs_priya" }, "attrs": { "functional": true }, "reason": "Chonksworth reports to the owner", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_60", "type": "owns", "from": { "kind": "Person", "id": "prs_priya" }, "to": { "kind": "Goal", "id": "gol_arr" }, "attrs": { "since": "2026-07-01" }, "reason": "Company goal owned by owner", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_61", "type": "owns", "from": { "kind": "Person", "id": "prs_tomas" }, "to": { "kind": "Goal", "id": "gol_v2api" }, "attrs": { "since": "2026-07-01" }, "reason": "Quarterly planning decision dec_q3plan", "actor": { "kind": "run", "id": "run_01J6QPLAN", "onBehalfOf": "prs_priya" } },
{ "id": "edg_62", "type": "owns", "from": { "kind": "Person", "id": "prs_lena" }, "to": { "kind": "Goal", "id": "gol_deflect" }, "attrs": { "since": "2026-07-01" }, "reason": "Quarterly planning decision dec_q3plan", "actor": { "kind": "run", "id": "run_01J6QPLAN", "onBehalfOf": "prs_priya" } },
{ "id": "edg_63", "type": "owns", "from": { "kind": "Person", "id": "prs_ana" }, "to": { "kind": "Goal", "id": "gol_ana_growth" }, "attrs": { "since": "2026-07-01" }, "reason": "Growth plan agreed in 1:1 2026-07-09", "actor": { "kind": "run", "id": "run_01J6ONEONONE" } },
{ "id": "edg_64", "type": "owns", "from": { "kind": "Person", "id": "prs_tomas" }, "to": { "kind": "Project", "id": "prj_v2ga" }, "attrs": { "since": "2026-07-07" }, "reason": "Plan", "actor": { "kind": "run", "id": "run_01J6QPLAN", "onBehalfOf": "prs_priya" } },
{ "id": "edg_65", "type": "owns", "from": { "kind": "Person", "id": "prs_ana" }, "to": { "kind": "Project", "id": "prj_authmig" }, "attrs": { "since": "2026-07-14" }, "reason": "Plan", "actor": { "kind": "run", "id": "run_01J6QPLAN", "onBehalfOf": "prs_priya" } },
{ "id": "edg_66", "type": "owns", "from": { "kind": "Person", "id": "prs_lena" }, "to": { "kind": "Project", "id": "prj_deflectbot" }, "attrs": { "since": "2026-08-01" }, "reason": "Plan", "actor": { "kind": "run", "id": "run_01J6QPLAN", "onBehalfOf": "prs_priya" } },
{ "id": "edg_70", "type": "contributes_to", "from": { "kind": "Goal", "id": "gol_v2api" }, "to": { "kind": "Goal", "id": "gol_arr" }, "attrs": { "weight": 0.5 }, "reason": "v2 API unblocks two enterprise deals", "actor": { "kind": "run", "id": "run_01J6QPLAN", "onBehalfOf": "prs_priya" } },
{ "id": "edg_71", "type": "contributes_to", "from": { "kind": "Goal", "id": "gol_deflect" }, "to": { "kind": "Goal", "id": "gol_arr" }, "attrs": { "weight": 0.2 }, "reason": "Deflection protects margin and NRR", "actor": { "kind": "run", "id": "run_01J6QPLAN", "onBehalfOf": "prs_priya" } },
{ "id": "edg_72", "type": "contributes_to", "from": { "kind": "Project", "id": "prj_v2ga" }, "to": { "kind": "Goal", "id": "gol_v2api" }, "attrs": {}, "reason": "Plan", "actor": { "kind": "run", "id": "run_01J6QPLAN" } },
{ "id": "edg_73", "type": "contributes_to", "from": { "kind": "Project", "id": "prj_authmig" }, "to": { "kind": "Goal", "id": "gol_v2api" }, "attrs": {}, "reason": "Plan", "actor": { "kind": "run", "id": "run_01J6QPLAN" } },
{ "id": "edg_74", "type": "contributes_to", "from": { "kind": "Project", "id": "prj_authmig" }, "to": { "kind": "Goal", "id": "gol_ana_growth" }, "attrs": {}, "reason": "Growth plan", "actor": { "kind": "run", "id": "run_01J6ONEONONE" } },
{ "id": "edg_75", "type": "depends_on", "from": { "kind": "Project", "id": "prj_v2ga" }, "to": { "kind": "Project", "id": "prj_authmig" }, "attrs": { "kind": "blocking", "externalRef": { "provider": "linear", "externalId": "ENG-400→ENG-401" } }, "reason": "Linear blocking relation", "actor": { "kind": "run", "id": "run_01J6LINSYNC" } },
{ "id": "edg_80", "type": "reviewed_by", "from": { "kind": "Goal", "id": "gol_arr" }, "to": { "kind": "Cadence", "id": "cad_owner_update" }, "attrs": {}, "reason": "Company goals reviewed weekly with owner", "actor": { "kind": "run", "id": "run_01J6QPLAN" } },
{ "id": "edg_81", "type": "reviewed_by", "from": { "kind": "Goal", "id": "gol_v2api" }, "to": { "kind": "Cadence", "id": "cad_platform_weekly" }, "attrs": {}, "reason": "Org goal reviewed in team weekly", "actor": { "kind": "run", "id": "run_01J6QPLAN" } },
{ "id": "edg_82", "type": "reviewed_by", "from": { "kind": "Goal", "id": "gol_deflect" }, "to": { "kind": "Cadence", "id": "cad_owner_update" }, "attrs": {}, "reason": "Support goal reviewed weekly with owner until Support weekly exists", "actor": { "kind": "run", "id": "run_01J6QPLAN" } },
{ "id": "edg_83", "type": "reviewed_by", "from": { "kind": "Goal", "id": "gol_ana_growth" }, "to": { "kind": "Cadence", "id": "cad_1on1_ana" }, "attrs": {}, "reason": "Person goals reviewed in 1:1", "actor": { "kind": "run", "id": "run_01J6ONEONONE" } },
{ "id": "edg_84", "type": "participates_in", "from": { "kind": "Person", "id": "prs_ana" }, "to": { "kind": "Cadence", "id": "cad_1on1_ana" }, "attrs": { "role": "required" }, "reason": "1:1", "actor": { "kind": "run", "id": "run_01J6ONEONONE" } },
{ "id": "edg_85", "type": "participates_in", "from": { "kind": "Person", "id": "prs_priya" }, "to": { "kind": "Cadence", "id": "cad_owner_update" }, "attrs": { "role": "required" }, "reason": "Owner", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_90", "type": "applies_to", "from": { "kind": "Policy", "id": "pol_discount" }, "to": { "kind": "Org", "id": "org_sales" }, "attrs": { "inherit": true }, "reason": "Direction", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_91", "type": "applies_to", "from": { "kind": "Policy", "id": "pol_tooling_3k" }, "to": { "kind": "Org", "id": "org_lf" }, "attrs": { "inherit": true }, "reason": "Direction", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_92", "type": "applies_to", "from": { "kind": "Policy", "id": "pol_outreach" }, "to": { "kind": "Org", "id": "org_lf" }, "attrs": { "inherit": true }, "reason": "Direction", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_93", "type": "applies_to", "from": { "kind": "Policy", "id": "pol_retention" }, "to": { "kind": "Org", "id": "org_lf" }, "attrs": { "inherit": true }, "reason": "Direction", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_94", "type": "applies_to", "from": { "kind": "Policy", "id": "pol_tone" }, "to": { "kind": "Org", "id": "org_lf" }, "attrs": { "inherit": true }, "reason": "Direction", "actor": { "kind": "human", "id": "prs_priya" } },
{ "id": "edg_95", "type": "about", "from": { "kind": "Decision", "id": "dec_datadog" }, "to": { "kind": "Org", "id": "org_platform" }, "attrs": { "relation": "subject" }, "reason": "Spend approval subject", "actor": { "kind": "run", "id": "run_01J6RAMP4800" } },
{ "id": "edg_96", "type": "backs_up", "from": { "kind": "Person", "id": "prs_tomas" }, "to": { "kind": "Person", "id": "prs_ana" }, "attrs": { "scope": "prj_authmig" }, "reason": "Coverage agreed in planning", "actor": { "kind": "run", "id": "run_01J6QPLAN" } }
]
}
Reading the example against the invariants: every org has one MoR (I-ORG-01) and one Chonk (I-ORG-02); Ana's reports_to chain is Ana → Chief Build Officer → Chonksworth → Priya (I-ORG-07, I-ORG-08); Q1 for Ana returns Tomás (Platform MoR) with backup Priya; Q4 for prj_v2ga returns prj_authmig owned by Ana, whose blocking reviewer Ben sits in Product Engineering with the same Chonk and the same MoR, which is why the chase in System Architecture §4.2 escalates to Tomás.
12. Worked example B — Harbor Table Group (3 locations, Atoms mode)¶
Owner-operated restaurant group, Full Suite plus Atoms. Three locations; each location is an Org of kind location with a human GM as manager of record, and Kitchen / Front-of-house teams beneath it. The Chief Operating Orca owns scheduling, the Chief Security Officer owns checklists and compliance, the Chief Human Officer owns the SMS manager thread. Abridged to one location's people.
{
"tenant": { "id": "tnt_01J6HARBORTABLE", "name": "Harbor Table Group", "mode": "FULL_SUITE", "atoms": true, "phase": "ACTIVE", "schemaVersion": "2026.09" },
"nodes": {
"orgs": [
{ "id": "org_htg", "orgKind": "company", "name": "Harbor Table Group", "timezone": "America/Chicago" },
{ "id": "org_downtown", "orgKind": "location", "name": "Harbor Table Downtown", "timezone": "America/Chicago",
"location": { "address": "112 Lake St, Chicago IL", "operatingHours": [ { "dow": 1, "open": "11:00", "close": "22:00" }, { "dow": 2, "open": "11:00", "close": "22:00" }, { "dow": 3, "open": "11:00", "close": "22:00" }, { "dow": 4, "open": "11:00", "close": "23:00" }, { "dow": 5, "open": "11:00", "close": "23:30" }, { "dow": 6, "open": "10:00", "close": "23:30" }, { "dow": 0, "open": "10:00", "close": "21:00" } ], "laborJurisdiction": "US-IL-Chicago", "posRef": { "provider": "toast", "externalId": "rest-dt-01", "lastSyncedAt": "2026-09-01T05:00:00Z" }, "schedulingRef": { "provider": "7shifts", "externalId": "loc-2201", "lastSyncedAt": "2026-09-01T05:00:00Z" } } },
{ "id": "org_eastside", "orgKind": "location", "name": "Harbor Table Eastside", "timezone": "America/Chicago", "location": { "address": "4400 E Grand Ave, Chicago IL", "operatingHours": [], "laborJurisdiction": "US-IL-Chicago", "posRef": { "provider": "toast", "externalId": "rest-es-02", "lastSyncedAt": "2026-09-01T05:00:00Z" } } },
{ "id": "org_airport", "orgKind": "location", "name": "Harbor Table O'Hare", "timezone": "America/Chicago", "location": { "address": "Terminal 3, ORD", "operatingHours": [], "laborJurisdiction": "US-IL-Chicago", "posRef": { "provider": "toast", "externalId": "rest-ord-03", "lastSyncedAt": "2026-09-01T05:00:00Z" } } },
{ "id": "org_dt_kitchen", "orgKind": "team", "name": "Downtown — Kitchen", "timezone": "America/Chicago" },
{ "id": "org_dt_foh", "orgKind": "team", "name": "Downtown — Front of House", "timezone": "America/Chicago" }
],
"roles": [
{ "id": "rol_owner", "title": "Owner", "family": "leadership" },
{ "id": "rol_gm", "title": "General Manager", "family": "operations", "shiftEligible": true, "certifications": ["food_handler", "alcohol_service"] },
{ "id": "rol_kitchen_lead", "title": "Kitchen Lead", "family": "kitchen", "shiftEligible": true, "certifications": ["food_handler"] },
{ "id": "rol_line_cook", "title": "Line Cook", "family": "kitchen", "shiftEligible": true, "certifications": ["food_handler"] },
{ "id": "rol_server", "title": "Server", "family": "front_of_house", "shiftEligible": true, "certifications": ["food_handler", "alcohol_service"] },
{ "id": "rol_host", "title": "Host", "family": "front_of_house", "shiftEligible": true },
{ "id": "rol_bartender", "title": "Bartender", "family": "front_of_house", "shiftEligible": true, "certifications": ["alcohol_service"] }
],
"people": [
{ "id": "prs_dolores", "personKind": "human", "status": "active", "displayName": "Dolores Reyes", "isOwner": true, "timezone": "America/Chicago", "locale": "en-US", "identities": [ { "provider": "gusto", "externalId": "g-9001", "email": "dolores@harbortable.com", "verified": true, "confidence": 1 } ], "contact": { "preferredSurface": "app", "surfaceOrder": ["app", "sms", "email"], "phoneE164": "+13125550101" }, "employment": { "type": "employee", "startDate": "2016-05-01", "laborClass": "exempt" } },
{ "id": "prs_kwame", "personKind": "human", "status": "active", "displayName": "Kwame Mensah", "isOwner": false, "timezone": "America/Chicago", "locale": "en-US", "identities": [ { "provider": "gusto", "externalId": "g-9010", "email": "kwame@harbortable.com", "verified": true, "confidence": 1 }, { "provider": "7shifts", "externalId": "7s-4410", "verified": false, "confidence": 0.9 } ], "contact": { "preferredSurface": "sms", "surfaceOrder": ["sms", "app", "voice"], "phoneE164": "+13125550110" }, "briefWindow": { "start": "09:30", "end": "10:00" }, "employment": { "type": "employee", "startDate": "2019-03-04", "laborClass": "exempt" } },
{ "id": "prs_rosa", "personKind": "human", "status": "active", "displayName": "Rosa Nguyen", "isOwner": false, "timezone": "America/Chicago", "locale": "en-US", "identities": [ { "provider": "gusto", "externalId": "g-9022", "verified": true, "confidence": 1 }, { "provider": "7shifts", "externalId": "7s-4421", "verified": false, "confidence": 0.9 } ], "contact": { "preferredSurface": "sms", "surfaceOrder": ["sms", "voice"], "phoneE164": "+13125550122" }, "briefWindow": { "start": "13:00", "end": "13:30" }, "employment": { "type": "employee", "startDate": "2022-10-17", "laborClass": "hourly" } },
{ "id": "prs_jamal", "personKind": "human", "status": "active", "displayName": "Jamal Carter", "isOwner": false, "timezone": "America/Chicago", "locale": "en-US", "identities": [ { "provider": "gusto", "externalId": "g-9031", "verified": true, "confidence": 1 }, { "provider": "7shifts", "externalId": "7s-4430", "verified": false, "confidence": 0.9 } ], "contact": { "preferredSurface": "sms", "surfaceOrder": ["sms"], "phoneE164": "+13125550131" }, "quietHours": { "start": "00:30", "end": "10:00" }, "employment": { "type": "employee", "startDate": "2025-06-02", "laborClass": "hourly", "isMinor": false } },
{ "id": "prs_mia", "personKind": "human", "status": "active", "displayName": "Mia Torres", "isOwner": false, "timezone": "America/Chicago", "locale": "es-US", "identities": [ { "provider": "gusto", "externalId": "g-9040", "verified": true, "confidence": 1 } ], "contact": { "preferredSurface": "sms", "surfaceOrder": ["sms"], "phoneE164": "+13125550140" }, "employment": { "type": "employee", "startDate": "2026-06-15", "laborClass": "hourly", "isMinor": true } },
{ "id": "prs_chonk_chonksworth", "personKind": "agent", "status": "active", "displayName": "Chonksworth", "isOwner": false, "timezone": "America/Chicago", "locale": "en-US", "identities": [], "contact": { "preferredSurface": "app", "surfaceOrder": ["app"] }, "agent": { "agentKind": "chonk", "chonkId": "chonksworth" } },
{ "id": "prs_chonk_ops", "personKind": "agent", "status": "active", "displayName": "Chief Operating Orca", "isOwner": false, "timezone": "America/Chicago", "locale": "en-US", "identities": [], "contact": { "preferredSurface": "app", "surfaceOrder": ["app"] }, "agent": { "agentKind": "chonk", "chonkId": "ops" } },
{ "id": "prs_chonk_human", "personKind": "agent", "status": "active", "displayName": "Chief Human Officer", "isOwner": false, "timezone": "America/Chicago", "locale": "en-US", "identities": [], "contact": { "preferredSurface": "app", "surfaceOrder": ["app"] }, "agent": { "agentKind": "chonk", "chonkId": "human" } },
{ "id": "prs_chonk_security", "personKind": "agent", "status": "active", "displayName": "Chief Security Officer", "isOwner": false, "timezone": "America/Chicago", "locale": "en-US", "identities": [], "contact": { "preferredSurface": "app", "surfaceOrder": ["app"] }, "agent": { "agentKind": "chonk", "chonkId": "security" } },
{ "id": "prs_chonk_fin", "personKind": "agent", "status": "active", "displayName": "Chief Fin Officer", "isOwner": false, "timezone": "America/Chicago", "locale": "en-US", "identities": [], "contact": { "preferredSurface": "app", "surfaceOrder": ["app"] }, "agent": { "agentKind": "chonk", "chonkId": "fin" } }
],
"goals": [
{ "id": "gol_foodcost", "level": "company", "title": "Food cost at or below 29%", "period": { "start": "2026-07-01", "end": "2026-12-31" }, "metric": { "name": "food_cost_pct", "unit": "percent", "target": 29, "baseline": 32.1, "current": 30.4, "direction": "down", "sourceRef": { "provider": "toast", "externalId": "cogs-report", "lastSyncedAt": "2026-09-01T05:00:00Z" } }, "status": "active", "health": "yellow", "healthReason": "Downtown at 28.9%, Eastside 31.8% (waste on seafood line) [toast:cogs-report@2026-09-01], O'Hare 30.6%." },
{ "id": "gol_dt_labor", "level": "org", "title": "Downtown labor at or below 27% of sales with zero unapproved overtime", "period": { "start": "2026-07-01", "end": "2026-12-31" }, "metric": { "name": "labor_pct", "unit": "percent", "target": 27, "current": 27.9, "direction": "down" }, "status": "active", "health": "yellow", "healthReason": "Two unapproved OT shifts last week [7shifts:timesheets@2026-09-01]." }
],
"projects": [
{ "id": "prj_es_waste", "title": "Eastside seafood waste reduction", "status": "active", "health": "yellow", "dates": { "start": "2026-08-18", "target": "2026-10-15" } }
],
"cadences": [
{ "id": "cad_brief_sms", "name": "Shift-day brief (SMS)", "cadenceKind": "morning_brief", "ownerChonkId": "human", "format": "sms", "schedule": { "rrule": "FREQ=DAILY", "timezone": "participant", "window": { "start": "-02:30", "end": "-02:00" }, "graceMinutes": 30 }, "scope": { "orgId": "org_htg" }, "inputs": [ { "kind": "mirror", "spec": "7shifts:shifts_today,toast:forecast" } ], "outputs": [ { "kind": "message", "spec": "brief_sms" } ], "status": "active", "priority": "P2" },
{ "id": "cad_huddle_dt", "name": "Downtown pre-shift huddle", "cadenceKind": "shift_huddle", "ownerChonkId": "ops", "format": "sms", "schedule": { "rrule": "FREQ=DAILY;BYHOUR=10,16", "timezone": "America/Chicago", "graceMinutes": 20 }, "scope": { "orgId": "org_downtown" }, "inputs": [ { "kind": "mirror", "spec": "toast:reservations,86_list" } ], "outputs": [ { "kind": "message", "spec": "huddle_notes" } ], "status": "active", "priority": "P2" },
{ "id": "cad_schedule", "name": "Weekly schedule publish", "cadenceKind": "schedule_publish", "ownerChonkId": "ops", "format": "written", "schedule": { "rrule": "FREQ=WEEKLY;BYDAY=TH;BYHOUR=12", "timezone": "America/Chicago", "graceMinutes": 360 }, "scope": { "orgId": "org_htg" }, "inputs": [ { "kind": "mirror", "spec": "toast:forecast,7shifts:availability" } ], "outputs": [ { "kind": "decision", "spec": "schedule_exception" }, { "kind": "org_change", "spec": "assigned_to" } ], "status": "active", "priority": "P1" },
{ "id": "cad_open_close", "name": "Opening / closing checklist", "cadenceKind": "checklist", "ownerChonkId": "security", "format": "sms", "schedule": { "rrule": "FREQ=DAILY;BYHOUR=10,23", "timezone": "America/Chicago", "graceMinutes": 45 }, "scope": { "orgId": "org_downtown" }, "inputs": [ { "kind": "reply", "spec": "required" } ], "outputs": [ { "kind": "document", "spec": "checklist_record" } ], "status": "active", "priority": "P1" },
{ "id": "cad_owner_update_htg", "name": "Weekly owner update", "cadenceKind": "owner_update", "ownerChonkId": "chonksworth", "format": "video", "schedule": { "rrule": "FREQ=WEEKLY;BYDAY=MO;BYHOUR=8", "timezone": "America/Chicago", "graceMinutes": 120 }, "scope": { "orgId": "org_htg" }, "inputs": [ { "kind": "org_model", "spec": "all" } ], "outputs": [ { "kind": "video", "spec": "owner_update" }, { "kind": "decision", "spec": "escalation_to_owner" } ], "status": "active", "priority": "P2" }
],
"policies": [
{ "id": "pol_ot", "name": "No overtime without approval", "policyKind": "hard_line", "rule": { "when": { "action": "SCHEDULE_SHIFT", "gt": ["weeklyHoursWithShift", 40] } }, "autonomyClass": "PROPOSE_CONFIRM", "precedence": 1000, "setBy": "prs_dolores", "effective": { "from": "2026-07-01T00:00:00Z" } },
{ "id": "pol_minors", "name": "Chicago minor labor rules", "policyKind": "labor_rule", "rule": { "jurisdiction": "US-IL-Chicago", "minor": { "latestEnd": "22:00", "maxDailyHours": 8, "maxWeeklyHours": 40, "schoolDayMaxHours": 3 } }, "autonomyClass": "HUMAN_ONLY", "precedence": 1000, "setBy": "prs_dolores", "effective": { "from": "2026-07-01T00:00:00Z" } },
{ "id": "pol_swap", "name": "Shift swaps within role and certification are autonomous", "policyKind": "autonomy_override", "rule": { "when": { "action": "SWAP_SHIFT", "sameRole": true, "certificationsCovered": true, "noOvertime": true } }, "autonomyClass": "AUTONOMOUS", "precedence": 300, "setBy": "prs_dolores", "effective": { "from": "2026-07-01T00:00:00Z" } },
{ "id": "pol_sms_cap", "name": "SMS cap", "policyKind": "outreach_cap", "rule": { "maxMessagesPerPersonPerDay": 5, "maxChasesPerPersonPerDay": 2, "quietHoursDefault": { "start": "23:00", "end": "08:00" }, "callOutException": true }, "precedence": 100, "setBy": "prs_dolores", "effective": { "from": "2026-07-01T00:00:00Z" } },
{ "id": "pol_tone_htg", "name": "Tone dial", "policyKind": "tone", "rule": { "default": 0.5, "min": 0.2, "max": 0.7, "surfaceOverrides": { "sms": 0.3 } }, "precedence": 100, "setBy": "prs_dolores", "effective": { "from": "2026-07-01T00:00:00Z" } }
],
"decisions": [
{ "id": "dec_ot_sat", "decisionKind": "schedule_exception", "autonomyClass": "PROPOSE_CONFIRM", "effectiveMode": "PROPOSE_CONFIRM", "proposedByChonkId": "ops", "runId": "run_01J6SCHED", "summary": "Saturday 9/6: Jamal would reach 44h; alternative is an open line-cook shift", "recommendation": "Approve 4h overtime; no other certified line cook is available Saturday 17:00–23:30 [7shifts:availability@2026-09-01]; forecast covers 112% of a normal Saturday [toast:forecast]." , "receiptId": "rcp_01J6SCHED", "status": "proposed", "routedTo": ["prs_kwame", "prs_dolores"], "expiresAt": "2026-09-04T12:00:00Z" }
]
},
"edges": [
{ "id": "edg_h1", "type": "child_of", "from": { "kind": "Org", "id": "org_downtown" }, "to": { "kind": "Org", "id": "org_htg" }, "attrs": {}, "reason": "Onboarding draft from Toast locations", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_h2", "type": "child_of", "from": { "kind": "Org", "id": "org_eastside" }, "to": { "kind": "Org", "id": "org_htg" }, "attrs": {}, "reason": "Onboarding draft from Toast locations", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_h3", "type": "child_of", "from": { "kind": "Org", "id": "org_airport" }, "to": { "kind": "Org", "id": "org_htg" }, "attrs": {}, "reason": "Onboarding draft from Toast locations", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_h4", "type": "child_of", "from": { "kind": "Org", "id": "org_dt_kitchen" }, "to": { "kind": "Org", "id": "org_downtown" }, "attrs": {}, "reason": "7shifts departments", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_h5", "type": "child_of", "from": { "kind": "Org", "id": "org_dt_foh" }, "to": { "kind": "Org", "id": "org_downtown" }, "attrs": {}, "reason": "7shifts departments", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_h10", "type": "manager_of_record", "from": { "kind": "Org", "id": "org_htg" }, "to": { "kind": "Person", "id": "prs_dolores" }, "attrs": { "since": "2026-07-01" }, "reason": "Owner", "actor": { "kind": "human", "id": "prs_dolores" } },
{ "id": "edg_h11", "type": "manager_of_record", "from": { "kind": "Org", "id": "org_downtown" }, "to": { "kind": "Person", "id": "prs_kwame" }, "attrs": { "since": "2026-07-01", "backupId": "prs_dolores" }, "reason": "GM is the human on site", "actor": { "kind": "human", "id": "prs_dolores" } },
{ "id": "edg_h12", "type": "manager_of_record", "from": { "kind": "Org", "id": "org_dt_kitchen" }, "to": { "kind": "Person", "id": "prs_kwame" }, "attrs": { "since": "2026-07-01" }, "reason": "GM covers both teams", "actor": { "kind": "human", "id": "prs_dolores" } },
{ "id": "edg_h13", "type": "manager_of_record", "from": { "kind": "Org", "id": "org_dt_foh" }, "to": { "kind": "Person", "id": "prs_kwame" }, "attrs": { "since": "2026-07-01" }, "reason": "GM covers both teams", "actor": { "kind": "human", "id": "prs_dolores" } },
{ "id": "edg_h14", "type": "manager_of_record", "from": { "kind": "Org", "id": "org_eastside" }, "to": { "kind": "Person", "id": "prs_dolores" }, "attrs": { "since": "2026-07-01" }, "reason": "Eastside GM position open; owner covers", "actor": { "kind": "human", "id": "prs_dolores" } },
{ "id": "edg_h15", "type": "manager_of_record", "from": { "kind": "Org", "id": "org_airport" }, "to": { "kind": "Person", "id": "prs_dolores" }, "attrs": { "since": "2026-07-01" }, "reason": "Abridged: O'Hare GM omitted from example", "actor": { "kind": "human", "id": "prs_dolores" } },
{ "id": "edg_h20", "type": "managed_by", "from": { "kind": "Org", "id": "org_htg" }, "to": { "kind": "Person", "id": "prs_chonk_chonksworth" }, "attrs": { "since": "2026-07-01" }, "reason": "Roster", "actor": { "kind": "human", "id": "prs_dolores" } },
{ "id": "edg_h21", "type": "managed_by", "from": { "kind": "Org", "id": "org_downtown" }, "to": { "kind": "Person", "id": "prs_chonk_ops" }, "attrs": { "since": "2026-07-01" }, "reason": "Locations managed by the Chief Operating Orca (scheduling, huddles)", "actor": { "kind": "human", "id": "prs_dolores" } },
{ "id": "edg_h22", "type": "managed_by", "from": { "kind": "Org", "id": "org_eastside" }, "to": { "kind": "Person", "id": "prs_chonk_ops" }, "attrs": { "since": "2026-07-01" }, "reason": "Roster", "actor": { "kind": "human", "id": "prs_dolores" } },
{ "id": "edg_h23", "type": "managed_by", "from": { "kind": "Org", "id": "org_airport" }, "to": { "kind": "Person", "id": "prs_chonk_ops" }, "attrs": { "since": "2026-07-01" }, "reason": "Roster", "actor": { "kind": "human", "id": "prs_dolores" } },
{ "id": "edg_h24", "type": "managed_by", "from": { "kind": "Org", "id": "org_dt_kitchen" }, "to": { "kind": "Person", "id": "prs_chonk_ops" }, "attrs": { "since": "2026-07-01" }, "reason": "Roster", "actor": { "kind": "human", "id": "prs_dolores" } },
{ "id": "edg_h25", "type": "managed_by", "from": { "kind": "Org", "id": "org_dt_foh" }, "to": { "kind": "Person", "id": "prs_chonk_ops" }, "attrs": { "since": "2026-07-01" }, "reason": "Roster", "actor": { "kind": "human", "id": "prs_dolores" } },
{ "id": "edg_h30", "type": "member_of", "from": { "kind": "Person", "id": "prs_kwame" }, "to": { "kind": "Org", "id": "org_downtown" }, "attrs": { "allocation": 1, "primary": true }, "reason": "Gusto sync", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_h31", "type": "member_of", "from": { "kind": "Person", "id": "prs_rosa" }, "to": { "kind": "Org", "id": "org_dt_kitchen" }, "attrs": { "allocation": 1, "primary": true }, "reason": "7shifts department", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_h32", "type": "member_of", "from": { "kind": "Person", "id": "prs_jamal" }, "to": { "kind": "Org", "id": "org_dt_kitchen" }, "attrs": { "allocation": 1, "primary": true }, "reason": "7shifts department", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_h33", "type": "member_of", "from": { "kind": "Person", "id": "prs_mia" }, "to": { "kind": "Org", "id": "org_dt_foh" }, "attrs": { "allocation": 1, "primary": true }, "reason": "7shifts department", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_h34", "type": "scheduled_at", "from": { "kind": "Person", "id": "prs_jamal" }, "to": { "kind": "Org", "id": "org_downtown" }, "attrs": { "homeLocation": true }, "reason": "Home location", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_h35", "type": "scheduled_at", "from": { "kind": "Person", "id": "prs_jamal" }, "to": { "kind": "Org", "id": "org_eastside" }, "attrs": { "homeLocation": false }, "reason": "Agreed to cover Eastside in 1:1 2026-08-20", "actor": { "kind": "run", "id": "run_01J6ONEONONE_J" } },
{ "id": "edg_h36", "type": "scheduled_at", "from": { "kind": "Person", "id": "prs_mia" }, "to": { "kind": "Org", "id": "org_downtown" }, "attrs": { "homeLocation": true }, "reason": "Home location", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_h40", "type": "holds_role", "from": { "kind": "Person", "id": "prs_kwame" }, "to": { "kind": "Role", "id": "rol_gm" }, "attrs": { "since": "2019-03-04" }, "reason": "Gusto sync", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_h41", "type": "holds_role", "from": { "kind": "Person", "id": "prs_rosa" }, "to": { "kind": "Role", "id": "rol_kitchen_lead" }, "attrs": { "since": "2024-04-01" }, "reason": "Gusto sync", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_h42", "type": "holds_role", "from": { "kind": "Person", "id": "prs_jamal" }, "to": { "kind": "Role", "id": "rol_line_cook" }, "attrs": { "since": "2025-06-02" }, "reason": "Gusto sync", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_h43", "type": "holds_role", "from": { "kind": "Person", "id": "prs_mia" }, "to": { "kind": "Role", "id": "rol_host" }, "attrs": { "since": "2026-06-15" }, "reason": "Gusto sync", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_h50", "type": "reports_to", "from": { "kind": "Person", "id": "prs_kwame" }, "to": { "kind": "Person", "id": "prs_chonk_ops" }, "attrs": { "functional": true }, "reason": "GM is managed by the Chief Operating Orca; remains MoR for staff", "actor": { "kind": "human", "id": "prs_dolores" } },
{ "id": "edg_h51", "type": "reports_to", "from": { "kind": "Person", "id": "prs_rosa" }, "to": { "kind": "Person", "id": "prs_chonk_ops" }, "attrs": { "functional": true }, "reason": "Roster", "actor": { "kind": "human", "id": "prs_dolores" } },
{ "id": "edg_h52", "type": "reports_to", "from": { "kind": "Person", "id": "prs_jamal" }, "to": { "kind": "Person", "id": "prs_chonk_ops" }, "attrs": { "functional": true }, "reason": "Roster", "actor": { "kind": "human", "id": "prs_dolores" } },
{ "id": "edg_h53", "type": "reports_to", "from": { "kind": "Person", "id": "prs_mia" }, "to": { "kind": "Person", "id": "prs_chonk_ops" }, "attrs": { "functional": true }, "reason": "Roster", "actor": { "kind": "human", "id": "prs_dolores" } },
{ "id": "edg_h54", "type": "reports_to", "from": { "kind": "Person", "id": "prs_chonk_ops" }, "to": { "kind": "Person", "id": "prs_chonk_chonksworth" }, "attrs": { "functional": true }, "reason": "Roster hierarchy", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_h55", "type": "reports_to", "from": { "kind": "Person", "id": "prs_chonk_chonksworth" }, "to": { "kind": "Person", "id": "prs_dolores" }, "attrs": { "functional": true }, "reason": "Chonksworth reports to the owner", "actor": { "kind": "system", "id": "sys_onboarding" } },
{ "id": "edg_h60", "type": "owns", "from": { "kind": "Person", "id": "prs_dolores" }, "to": { "kind": "Goal", "id": "gol_foodcost" }, "attrs": { "since": "2026-07-01" }, "reason": "Direction", "actor": { "kind": "human", "id": "prs_dolores" } },
{ "id": "edg_h61", "type": "owns", "from": { "kind": "Person", "id": "prs_kwame" }, "to": { "kind": "Goal", "id": "gol_dt_labor" }, "attrs": { "since": "2026-07-01" }, "reason": "Location goal owned by GM", "actor": { "kind": "run", "id": "run_01J6QPLAN_H", "onBehalfOf": "prs_dolores" } },
{ "id": "edg_h62", "type": "owns", "from": { "kind": "Person", "id": "prs_dolores" }, "to": { "kind": "Project", "id": "prj_es_waste" }, "attrs": { "since": "2026-08-18" }, "reason": "No Eastside GM; owner owns until hired", "actor": { "kind": "run", "id": "run_01J6QPLAN_H", "onBehalfOf": "prs_dolores" } },
{ "id": "edg_h63", "type": "contributes_to", "from": { "kind": "Goal", "id": "gol_dt_labor" }, "to": { "kind": "Goal", "id": "gol_foodcost" }, "attrs": { "weight": 0 }, "reason": "Tracked together in owner update; no metric contribution", "actor": { "kind": "run", "id": "run_01J6QPLAN_H" } },
{ "id": "edg_h64", "type": "contributes_to", "from": { "kind": "Project", "id": "prj_es_waste" }, "to": { "kind": "Goal", "id": "gol_foodcost" }, "attrs": { "weight": 0.6 }, "reason": "Eastside is the gap", "actor": { "kind": "run", "id": "run_01J6QPLAN_H" } },
{ "id": "edg_h65", "type": "reviewed_by", "from": { "kind": "Goal", "id": "gol_foodcost" }, "to": { "kind": "Cadence", "id": "cad_owner_update_htg" }, "attrs": {}, "reason": "Weekly with owner", "actor": { "kind": "run", "id": "run_01J6QPLAN_H" } },
{ "id": "edg_h66", "type": "reviewed_by", "from": { "kind": "Goal", "id": "gol_dt_labor" }, "to": { "kind": "Cadence", "id": "cad_schedule" }, "attrs": {}, "reason": "Labor goal reviewed at schedule publish", "actor": { "kind": "run", "id": "run_01J6QPLAN_H" } },
{ "id": "edg_h70", "type": "applies_to", "from": { "kind": "Policy", "id": "pol_ot" }, "to": { "kind": "Org", "id": "org_htg" }, "attrs": { "inherit": true }, "reason": "Direction", "actor": { "kind": "human", "id": "prs_dolores" } },
{ "id": "edg_h71", "type": "applies_to", "from": { "kind": "Policy", "id": "pol_minors" }, "to": { "kind": "Org", "id": "org_htg" }, "attrs": { "inherit": true }, "reason": "Jurisdiction", "actor": { "kind": "human", "id": "prs_dolores" } },
{ "id": "edg_h72", "type": "applies_to", "from": { "kind": "Policy", "id": "pol_swap" }, "to": { "kind": "Org", "id": "org_htg" }, "attrs": { "inherit": true }, "reason": "Direction", "actor": { "kind": "human", "id": "prs_dolores" } },
{ "id": "edg_h73", "type": "applies_to", "from": { "kind": "Policy", "id": "pol_sms_cap" }, "to": { "kind": "Org", "id": "org_htg" }, "attrs": { "inherit": true }, "reason": "Direction", "actor": { "kind": "human", "id": "prs_dolores" } },
{ "id": "edg_h74", "type": "applies_to", "from": { "kind": "Policy", "id": "pol_tone_htg" }, "to": { "kind": "Org", "id": "org_htg" }, "attrs": { "inherit": true }, "reason": "Direction", "actor": { "kind": "human", "id": "prs_dolores" } },
{ "id": "edg_h75", "type": "about", "from": { "kind": "Decision", "id": "dec_ot_sat" }, "to": { "kind": "Person", "id": "prs_jamal" }, "attrs": { "relation": "subject" }, "reason": "Schedule exception subject", "actor": { "kind": "run", "id": "run_01J6SCHED" } },
{ "id": "edg_h76", "type": "participates_in", "from": { "kind": "Person", "id": "prs_rosa" }, "to": { "kind": "Cadence", "id": "cad_open_close" }, "attrs": { "role": "required" }, "reason": "Kitchen lead completes opening checklist", "actor": { "kind": "run", "id": "run_01J6QPLAN_H" } }
]
}
Reading the example: Mia is a minor and a host; pol_minors is HUMAN_ONLY with precedence 1000, so the scheduling-solver treats "latestEnd 22:00" as a hard constraint and any exception is a packet for Kwame and Dolores, never a decision. Jamal's scheduled_at edge to Eastside (with the reason from a 1:1) is what lets the solver propose him for Eastside coverage. Eastside has no GM, so Dolores is MoR for it (I-ORG-01 satisfied) and the open GM req is the Chief Human Officer's hiring flow (HR-1) with the offer decision human-only. Q1 for Rosa returns Kwame with backup Dolores; the SMS surface and pol_tone_htg.surfaceOverrides.sms=0.3 keep the shift-day brief short and plain.
13. Edge cases¶
| ID | Scenario | Signal / detection | Rule | Action (autonomy class) | Escalation | Test |
|---|---|---|---|---|---|---|
| EC-ORG-001 | HRIS sync moves a person to a department that has no Org node yet |
hris_sync change references an unknown department code |
HRIS is not the source of truth for org placement | Create MergeProposal-style org_change decision: new Org under company with the person as member; do not act on the person until confirmed (PROPOSE_CONFIRM to admin) |
Admin | sim-lanternfish: push a Gusto department "Growth" for Marcus; assert proposal, no member_of change |
| EC-ORG-002 | Owner tries to offboard the only MoR of an org | end_node/status change would violate I-ORG-01 |
Replacement first | Reject with E_ORG_INVARIANT_I-ORG-01 and a Chonksworth packet listing affected orgs (HUMAN_ONLY packet; the owner picks) |
Owner | Attempt to offboard Tomás; assert rejection and packet |
| EC-ORG-003 | Two GitHub handles look like the same person (tferreira, tomas-f) |
M3 similarity ≥ 0.92 + shared team | Never auto-merge on name | MergeProposal (PROPOSE_CONFIRM to admin) |
None | Seed both handles; assert one proposal, zero merges |
| EC-ORG-004 | Contractor via Deel and employee via Gusto with the same verified email | M4 conflict | Never auto-merge two HRIS records | MergeProposal(conflict) (PROPOSE_CONFIRM) |
Admin | Seed both; assert conflict flag |
| EC-ORG-005 | A goal's review cadence is retired | end_node on Cadence with active reviewed_by inbound |
I-ORG-04 | Reject unless the change also re-points reviewed_by; Chief Operating Orca proposes a replacement cadence (PROPOSE_CONFIRM) |
MoR of goal's org | Retire cad_platform_weekly; assert rejection |
| EC-ORG-006 | depends_on import from Linear creates a cycle (A blocks B blocks A) |
Cycle check at write | I-ORG-03 | Reject the second edge; record org.import.rejected with both refs; Chief Build Officer raises it in the team weekly (AUTONOMOUS write-up) |
None | Seed a cycle in the Linear mirror; assert one edge and a write-up item |
| EC-ORG-007 | Person on leave is the owner of a red project | status=on_leave + owns Project with health=red |
Coverage must exist | Chief Operating Orca proposes reassignment to backs_up target if present, else to MoR (PROPOSE_CONFIRM) |
MoR | Set Ana on leave; assert proposal to Tomás |
| EC-ORG-008 | Replay of a run pinned to version 1,204 after a migration renamed member_of.allocation → fte |
Replay reads through the compat shim | Migrations ship shims for one release | Replay succeeds; shim usage logged (AUTONOMOUS) | Ops if shim missing | Run migration in sim; replay an older run |
| EC-ORG-009 | Atoms: a person is scheduled at a location they have no scheduled_at edge to |
Solver output violates edge constraint | Edges are truth | Solver rejects the assignment; if coverage is impossible, schedule_exception decision (PROPOSE_CONFIRM to GM) |
GM | Remove Jamal's Eastside edge; assert exception |
| EC-ORG-010 | Person requests deletion of a fact on the "what my manager knows" page that is actually an Org Model edge (e.g., "I don't report to that team") | Redaction request targets an edg_ id |
Edges are corrected, not redacted | Open an org_change decision to the org MoR with the person's note (PROPOSE_CONFIRM) |
MoR | Submit a redaction on edg_32; assert decision |
14. Risk control¶
RC-ORG-01 — Drift between connected systems and the Org Model. Owner: Chief Operating Orca. Metric: unresolved MergeProposals and org_change proposals older than 7 days (target 0); nightly invariant violations (target 0).
- Detect: nightly reconciliation compares HRIS, Slack, GitHub, and scheduling mirrors with the graph; invariant sweep; proposal age.
- Contain: people with unresolved placement are not acted on (I-ORG-06); cadences for orgs with invariant violations are paused with
cadence.missedescalations rather than run on bad data. - Correct: proposals routed to the admin with a one-tap accept; the Chief Operating Orca includes drift in the owner update when older than 7 days.
- Learn: matcher thresholds and connector mappings are tuned from accept/reject history; each rejected auto-link becomes a matcher test case.
Open questions¶
- Multi-primary membership. Some agencies staff people 50/50 across two teams with two rituals; the single
primaryflag is a simplification. Decide whether briefs merge both teams' context or the person picks. - Chonk instances per org. One
Personnode per Chonk per tenant (current) versus one per managed org (would allow per-org voice settings and cleanerreports_to). Leaning: keep one per tenant; voice is scoped by policy. - Goal metrics with external sources. Whether
metric.currentshould be written by the analyst (cited) or read live from the mirror at render time; current answer is written, withhealthAsOf. - Retention of
changesfor merged persons. The change log references the pre-merge ID forever; confirm this is acceptable under data-subject deletion requests or design a tombstone. - Portfolio slots.
orgKind='portfolio_slot'is reserved for the portfolio view (OW-5); its edges are undefined until that doc exists.