{
  "generated_at": "2026-04-24T15:53:58Z",
  "totals": {
    "done": 3,
    "in_progress": 0,
    "partial": 0,
    "stub": 1,
    "missing": 0,
    "oos": 0,
    "total": 4
  },
  "objectives": [
    {
      "id": "p1-01",
      "title": "Dashboard search - lexical message search via Postgres FTS",
      "priority": "p1",
      "status": "done",
      "scope": "mac-sync",
      "owner": "search",
      "updated_at": "2026-04-24",
      "blocked_by": [],
      "summary": "First-pass lexical search over iMessage bodies via Postgres full-text search. Scoped to the Messages tab in the mac-sync unified dashboard."
    },
    {
      "id": "p1-02",
      "title": "Dashboard search - semantic/vector search over message bodies",
      "priority": "p1",
      "status": "done",
      "scope": "mac-sync",
      "owner": "search",
      "updated_at": "2026-04-24",
      "blocked_by": [
        "p1-01"
      ],
      "summary": "Extend message search with semantic/embedding-based retrieval. Embeddings are generated via `@model-boss` on apricot (no local GPU). Results blend lexical FTS and cosine similarity via reciprocal rank fusion."
    },
    {
      "id": "p1-03",
      "title": "Dashboard search - unified cross-surface ranking (messages + mail + calendar)",
      "priority": "p1",
      "status": "done",
      "scope": "mac-sync",
      "owner": "search",
      "updated_at": "2026-04-24",
      "blocked_by": [
        "p1-02"
      ],
      "summary": "A single `GET /my/search?q=…` endpoint that fans out to per-surface candidate generators (FTS + vector top-K), then fuses results via reciprocal rank fusion with configurable per-surface weights. Photos deferred to p2-01 (blocked on @imajin classifier readiness)."
    },
    {
      "id": "p2-01",
      "title": "Dashboard search - photos surface in unified search (via @imajin classifier)",
      "priority": "p2",
      "status": "stub",
      "scope": "mac-sync",
      "owner": "search",
      "updated_at": "2026-04-24",
      "blocked_by": [
        "p1-03"
      ],
      "summary": "Add the photos surface to the unified search endpoint once both cross-surface ranking (p1-03) and the @imajin image classifier are production-ready. Photo embeddings generated via the @imajin classifier on apricot through @model-boss."
    }
  ],
  "blocked": [
    {
      "id": "p1-02",
      "blockedBy": [
        "p1-01"
      ]
    },
    {
      "id": "p1-03",
      "blockedBy": [
        "p1-02"
      ]
    },
    {
      "id": "p2-01",
      "blockedBy": [
        "p1-03"
      ]
    }
  ],
  "remaining_by_lead": [
    {
      "owner": "search",
      "remaining": 1
    }
  ]
}
