015-embedding-pipeline

Embeddings: a local default, a governed provider trait, an outbox worker that cannot lose a memory

Lifecycle approvedImplementation in-progressVerification unknownQualification unknown

The predecessor captured a memory in two non-atomic calls: insert the row, then update the embedding. A failure between them produced a memory that search could never reach and nothing ever retried. This spec makes the second half a durable job: capture stages outbox work in the same transaction as the row, a worker drains it idempotently with backoff and a dead letter state that preflight reports, and every stored vector names the model, dimension, and normalization it was produced under so a model change is a migration rather than a silent reinterpretation.

Read the full pinned specification ↗

Relationships

Claimed units

  • establishes
    {
      "kind": "file",
      "path": "crates/aicortex-embed/Cargo.toml"
    }
  • establishes
    {
      "kind": "file",
      "path": "crates/aicortex-embed/src/lib.rs"
    }
  • establishes
    {
      "kind": "file",
      "path": "crates/aicortex-embed/src/provider.rs"
    }
  • establishes
    {
      "kind": "file",
      "path": "crates/aicortex-embed/src/local.rs"
    }
  • establishes
    {
      "kind": "file",
      "path": "crates/aicortex-embed/src/remote.rs"
    }
  • establishes
    {
      "kind": "file",
      "path": "crates/aicortex-embed/src/chunk.rs"
    }
  • establishes
    {
      "kind": "file",
      "path": "crates/aicortex-embed/src/worker.rs"
    }
  • establishes
    {
      "kind": "file",
      "path": "crates/aicortex-embed/src/registry.rs"
    }
  • establishes
    {
      "kind": "file",
      "path": "crates/aicortex-embed/src/migrations.rs"
    }
  • establishes
    {
      "kind": "file",
      "path": "crates/aicortex-embed/tests/worker.rs"
    }
  • establishes
    {
      "kind": "file",
      "path": "crates/aicortex-embed/tests/chunk.rs"
    }
  • establishes
    {
      "kind": "file",
      "path": "crates/aicortex-embed/testdata/vectors/"
    }
  • establishes
    {
      "kind": "file",
      "path": "crates/aicortex-store/src/embedding_memory.rs"
    }
  • extends
    {
      "nature": "additive",
      "spec": "012-store-schema-and-repositories",
      "unit": {
        "kind": "file",
        "path": "crates/aicortex-store/src/migrations.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "012-store-schema-and-repositories",
      "unit": {
        "kind": "file",
        "path": "crates/aicortex-store/src/lifecycle.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "012-store-schema-and-repositories",
      "unit": {
        "kind": "file",
        "path": "crates/aicortex-store/src/memory_repo.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "012-store-schema-and-repositories",
      "unit": {
        "kind": "file",
        "path": "crates/aicortex-store/src/lib.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "010-chassis-adoption-and-workspace",
      "unit": {
        "kind": "file",
        "path": "apps/aicortex/manifest.toml"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "012-store-schema-and-repositories",
      "unit": {
        "kind": "file",
        "path": "crates/aicortex-store/Cargo.toml"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "014-memory-lifecycle-and-erasure",
      "unit": {
        "kind": "file",
        "path": "crates/aicortex-store/src/erasure.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "012-store-schema-and-repositories",
      "unit": {
        "kind": "file",
        "path": "crates/aicortex-store/tests/common/mod.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "014-memory-lifecycle-and-erasure",
      "unit": {
        "kind": "file",
        "path": "crates/aicortex-store/tests/lifecycle.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "012-store-schema-and-repositories",
      "unit": {
        "kind": "file",
        "path": "crates/aicortex-store/tests/repo.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "012-store-schema-and-repositories",
      "unit": {
        "kind": "file",
        "path": "crates/aicortex-store/tests/schema.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "014-memory-lifecycle-and-erasure",
      "unit": {
        "kind": "file",
        "path": "crates/aicortex-store/tests/erasure.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "013-write-gate-and-redaction",
      "unit": {
        "kind": "file",
        "path": "crates/aicortex-gate/tests/common/mod.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "013-write-gate-and-redaction",
      "unit": {
        "kind": "file",
        "path": "crates/aicortex-gate/Cargo.toml"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "010-chassis-adoption-and-workspace",
      "unit": {
        "kind": "file",
        "path": "apps/aicortex/Cargo.toml"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "010-chassis-adoption-and-workspace",
      "unit": {
        "kind": "file",
        "path": "apps/aicortex/src/main.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "010-chassis-adoption-and-workspace",
      "unit": {
        "kind": "file",
        "path": "apps/aicortex/src/cell.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "012-store-schema-and-repositories",
      "unit": {
        "kind": "file",
        "path": "apps/aicortex/tests/migrate.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "053-host-library-mode",
      "unit": {
        "id": "aicortex-external-host-fixture",
        "kind": "crate"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "010-chassis-adoption-and-workspace",
      "unit": {
        "anchor": "workspace.dependencies",
        "file": "Cargo.toml",
        "kind": "section"
      }
    }
  • constrains
    {
      "flavor": "invariant-freeze",
      "note": "a memory is never left unembedded and unreported; constitution XI",
      "unit": {
        "kind": "file",
        "path": "crates/aicortex-embed/src/worker.rs"
      }
    }

Source headings

  1. 015: Embeddings
  2. 1. Purpose
  3. 2. Territory
  4. 3. Behavior
  5. 4. Functional requirements
  6. 5. Acceptance criteria
  7. 6. Out of scope
  8. 7. Resolved decisions
  9. Status (2026-09-29, in progress: runtime and chassis hooks required)
  10. Verification

Frozen anchors

No frozen anchors declared.