Files
obsidian-vault/wiki/personal-os-schema.md
T

4.5 KiB

source, content_hash, namespace, last_synced, confidence, tags
source content_hash namespace last_synced confidence tags
raw/schema.sql 71b47e47b483834c887de14c76d5b16506d90ad64198d76a92a7b3731132dab8 work 2026-05-31 0.9
personal-os
postgres
schema
database

Personal OS — Postgres Schema

The personal_os Postgres database is the system of record for Asana sync, agent annotations, wiki sources, and semantic memory. Extensions: vector (pgvector) and pg_trgm.

Core Asana Tables

tasks

One row per Asana task GID, upserted on every sync. Tracks name, notes (plain + HTML), due/start dates, completion, assignee, creator, project membership, and a source enum:

  • my_tasks — assigned to me, in My Tasks sections
  • following — I'm a follower (CC'd, commented)
  • delegated — I created it, someone else is assignee
  • project — member of a project, not otherwise classified

Sync bookkeeping: fetched_at, stories_fetched_before (cursor for incremental story pulls), raw_json (full Asana response).

Later additions: namespace (default work), possibly_deleted, last_seen_in_full_sync.

Indexes cover modified time, due date (partial WHERE NOT completed), section, assignee, source, completed, and trigram on name for fuzzy search.

stories

Raw event log per task. resource_subtype is Asana's event type (comment_added, assigned, due_date_changed, section_changed, dependency_added, attachment_added, marked_complete, etc.). Stores both plain text and HTML so embedded task GID refs can be parsed out.

task_edges

Directed graph between tasks. relation_type:

  • subtask — related is a subtask of task
  • dependency — task is blocked by related
  • dependent — task is blocking related
  • project_sibling — same project + section
  • mention — related was referenced in a story on task

Composite PK (task_gid, related_gid, relation_type). related_gid may not yet exist in tasks.

task_annotations

Agent-written (or user-written) tags. annotation_type: irrelevant, watching, needs_action, snoozed. Includes agent reasoning note and snoozed_until date. annotated_by distinguishes agent vs user.

sync_state

One row per logical sync stream keyed by stream name (my_tasks, following, delegated, project:{gid}, workspace_events). Stores cursor (ISO timestamp or events sync_token) and full_sync_at for when the last full pull happened.

Vector / Wiki / Memory Tables

task_embeddings

Voyage AI 1024-dim vectors with HNSW cosine index for semantic task search.

file_references

Tracks files (macOS security-scoped bookmarks in bookmark_data) and web URLs that should be ingested into the wiki. content_hash for incremental sync, wiki_stale=true triggers reprocessing, modification_log keeps before/after hash history. Namespace constrained to work | personal | family.

wiki_pages

LLM-synthesised wiki entries (NOT raw copies). Carries sources JSONB, confidence float, superseded_by self-ref for version chains, last_synced_hash, and a 1536-dim embedding for semantic search. Note: the live system has moved off this table — the wiki now lives in the Obsidian vault (~/obsidian/wiki/) and uses file-frontmatter hashing instead. See wiki-ingest-process.

memory_store

Semantic memory accumulated from Discord/Claude/manual sources. type: fact | preference | decision | person. Carries entity refs in JSONB, 1536-dim embedding, optional expires_at (null = permanent).

Views

active_tasks

Convenience view: non-completed, non-irrelevant, non-snoozed tasks joined with their annotations. Ordered by source priority (my_tasks > delegated > following > project), then due date, then modified date. Used as the starting point for the agent's daily review.

Migration Tables (Catch-Up Plan 2026-04-27)

Three additions land via the catch-up plan and are referenced by the state doc as applied:

  • corrections_log — Tactic records pushback, Retrospector aggregates patterns by reason_tag and week_number.
  • executor_runs — state machine row per Executor task (states: analyzing → awaiting_analysis_approval → fixing → pr_open → ci_running → ci_failed → awaiting_user → complete | abandoned).
  • activity_daily.quadrant — column added for weekly drift detection (project | aor | career | strategy | other).

See personal-os-catchup-plan-2026-04-27 for the rationale (DB over markdown/YAML, extend existing components).

personal-os-state-2026-04-27 personal-os-catchup-plan-2026-04-27 wiki-ingest-process