Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.encoreos.io/llms.txt

Use this file to discover all available pages before exploring further.

Version: 2.0.0
Last Updated: 2025-12-31
This section documents the data models for each core to ensure proper integration patterns are followed.

LO Core: Leadership Operating System Data Model

Status: ✅ Implemented (LO-01 through LO-09)

Tables

TablePurposeKey Relationships
lo_accountability_chartOne per organizationorganization_idpf_organizations
lo_role_definitionsRoles with 5-7 key functionsaccountability_chart_idlo_accountability_chart
lo_seat_assignmentsPerson-to-role mappingsprofile_idpf_profiles (NOT hr_employees)
lo_gwc_assessmentsGWC scores per seat assignmentseat_assignment_idlo_seat_assignments
lo_vision_documentsVision, mission, core valuesorganization_idpf_organizations
lo_strategic_goals3-year and 1-year goalsvision_document_idlo_vision_documents
lo_quarterly_rocks90-day prioritiesorganization_idpf_organizations
lo_rock_milestonesSub-tasks within rocksrock_idlo_quarterly_rocks
lo_rock_assignmentsTeam rock assignmentsrock_idlo_quarterly_rocks
lo_todosTask managementorganization_idpf_organizations
lo_todo_commentsTask discussion threadstodo_idlo_todos
lo_scorecardsWeekly scorecard recordsrole_idlo_role_definitions
lo_scorecard_metricsKPI definitionsorganization_idpf_organizations
lo_scorecard_valuesWeekly metric valuesscorecard_idlo_scorecards
lo_meetingsMeeting recordsorganization_idpf_organizations
lo_meeting_attendeesAttendance trackingmeeting_idlo_meetings
lo_meeting_action_itemsAction items linked to todosmeeting_idlo_meetings, todo_idlo_todos
lo_issuesIssue records (IDR process)organization_idpf_organizations, meeting_idlo_meetings
lo_issue_discussionsDiscussion threads for issuesissue_idlo_issues
lo_one_on_ones1-on-1 meeting recordsorganization_idpf_organizations
lo_feedbackFeedback entriesorganization_idpf_organizations, one_on_one_idlo_one_on_ones
lo_assessmentsAssessment definitionsorganization_idpf_organizations, form_idfw_forms
lo_assessment_schedulesDistribution schedulesassessment_idlo_assessments
lo_assessment_recipientsWho receives assessmentsschedule_idlo_assessment_schedules
lo_assessment_responsesResponse trackingschedule_idlo_assessment_schedules, submission_idfw_form_submissions
lo_module_settingsOrg-level LO configurationorganization_idpf_organizations
lo_knowledge_categoriesHierarchical category managementorganization_idpf_organizations
lo_knowledge_articlesKnowledge base articles with full-text searchorganization_idpf_organizations
lo_knowledge_article_versionsAutomatic version historyarticle_idlo_knowledge_articles

Key Design Decisions

  1. User References: lo_seat_assignments.profile_id references pf_profiles.id (NOT hr_employees.id)
    • Reason: Not all users in seats are employees; allows external board members, advisors, etc.
  2. RLS Pattern: All tables use lo_has_org_access() SECURITY DEFINER function
    • Prevents infinite recursion when checking pf_user_role_assignments
  3. Vision-to-Role Alignment: lo_role_definitions.vision_alignment and strategic_goal_ids[]
    • Links roles to strategic goals for accountability
  4. Validation Triggers: Use triggers instead of CHECK constraints
    • lo_validate_meeting() - meeting_type and status validation
    • lo_validate_meeting_attendee() - attendee status validation
    • lo_validate_issue() - issue priority and status validation
    • lo_validate_one_on_one() - 1-on-1 status validation
    • lo_validate_feedback() - feedback type and GWC category validation
    • lo_validate_assessment() - assessment type validation
    • lo_validate_assessment_schedule() - schedule status and scope validation
    • lo_validate_assessment_response() - response status validation

RLS Security Functions

-- SECURITY DEFINER function used by all LO RLS policies
CREATE OR REPLACE FUNCTION lo_has_org_access(org_id UUID, user_id UUID)
RETURNS BOOLEAN
LANGUAGE plpgsql
SECURITY DEFINER
SET search_path = public
AS $$
BEGIN
  RETURN EXISTS (
    SELECT 1 FROM pf_user_role_assignments
    WHERE pf_user_role_assignments.organization_id = org_id
      AND pf_user_role_assignments.user_id = user_id
  );
END;
$$;

-- Admin access function for elevated operations
CREATE OR REPLACE FUNCTION lo_has_admin_access(org_id UUID, user_id UUID)
RETURNS BOOLEAN
LANGUAGE plpgsql
SECURITY DEFINER
SET search_path = public
AS $$
BEGIN
  RETURN EXISTS (
    SELECT 1 FROM pf_user_role_assignments
    WHERE pf_user_role_assignments.organization_id = org_id
      AND pf_user_role_assignments.user_id = user_id
      AND pf_user_role_assignments.system_role >= 'org_admin'
  );
END;
$$;

Integration Points

Consumes:
  • pf_profiles - User identity and display names
  • pf_organizations - Multi-tenant context
  • pf_user_role_assignments - RBAC (via SECURITY DEFINER function)
  • fw_forms - Assessment forms (LO-09)
Publishes Events:
  • rock_completed - When rock is completed ✅
  • todo_created - When task is created ✅
  • todo_completed - When task is completed ✅
  • todo_overdue - When task becomes overdue ✅
  • scorecard_updated - When scorecard is updated ✅
  • metric_threshold_breached - When metric breaches threshold ✅
  • meeting_scheduled - When meeting is scheduled ✅
  • meeting_completed - When meeting is completed ✅
  • action_item_created - When action item created ✅
  • issue_identified - When issue is identified ✅
  • issue_resolved - When issue is resolved ✅
  • assessment_distributed - When assessment is distributed ✅
  • assessment_completed - When assessment is completed ✅
Downstream Consumers:
  • LO-03: Rocks assigned to roles
  • LO-04: To-dos from action items
  • LO-05: Scorecards owned by roles
  • LO-06: Meetings with agenda items
  • LO-07: Issues linked to meetings
  • LO-08: Feedback linked to roles
Planned Events:
  • one_on_one_scheduled - When 1-on-1 is scheduled
  • feedback_submitted - When feedback is provided
  • vision_updated - When vision is updated
  • strategic_goal_created - When strategic goal is created
  • rock_created - When rock is created
  • role_assigned - When person assigned to role
  • accountability_chart_updated - When accountability chart structure changes
  • knowledge_article_created - When knowledge article is created
  • process_updated - When process is updated


Next Review: 2026-03-03 (Quarterly)