Skip to content

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 Policy node'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

  1. 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.band exists for calibration and labor rules, not for ordering people.
  2. Edges are the truth; fields are projections. Org.managerOfRecordId is a denormalized read-model column populated from the manager_of_record edge. Writes go to edges.
  3. Every change has a reason and an actor. No write path exists without both. The actor is a human (prs_… of kind human), a run (run_…), or the system migrator (sys_migrator).
  4. Nothing is hard-deleted. Nodes and edges have validity intervals. Purge is a separate, audited, retention-driven operation.
  5. Agents are people too. Chonks and managed agent workers are Person nodes of kind agent. That is what lets reports_to be one edge type and what makes AG-1 (agent workers as nodes) a configuration rather than a new schema.
  6. 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:

  1. Migrations are forward-only and idempotent. Each has a schemaVersion target; the tenant's current schemaVersion is stored with the tenant record.
  2. Data migrations run per tenant inside one transaction per tenant, take a snapshot first, and produce a single Change whose ops list every touched row. Large tenants are migrated in batches of changes with the same migrationId.
  3. 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.
  4. Invariants are re-checked after migration; a failing invariant halts the rollout for that tenant and pages ops. The migration cannot be "partially applied".
  5. 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):

  1. Choose canonical: the Person with a verified HRIS identity; if both or neither, the older createdAt.
  2. Union identities; on provider collision keep the verified one and record the other in attrs.supersededIdentities.
  3. Re-point every active edge from from to into; the merge_person op records edgeMap with each edge's original endpoint so unmerge is exact.
  4. Re-key people memory facts (memory-service.rekey(from → into)) and thread mappings; audit entries are never rewritten (they reference from, which now resolves via mergedInto).
  5. Set from.status='merged', from.mergedInto=into, end its edges.
  6. 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.missed escalations 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

  1. Multi-primary membership. Some agencies staff people 50/50 across two teams with two rituals; the single primary flag is a simplification. Decide whether briefs merge both teams' context or the person picks.
  2. Chonk instances per org. One Person node per Chonk per tenant (current) versus one per managed org (would allow per-org voice settings and cleaner reports_to). Leaning: keep one per tenant; voice is scoped by policy.
  3. Goal metrics with external sources. Whether metric.current should be written by the analyst (cited) or read live from the mirror at render time; current answer is written, with healthAsOf.
  4. Retention of changes for merged persons. The change log references the pre-merge ID forever; confirm this is acceptable under data-subject deletion requests or design a tombstone.
  5. Portfolio slots. orgKind='portfolio_slot' is reserved for the portfolio view (OW-5); its edges are undefined until that doc exists.