{
  "schema": "oce-public-surface-ledger/v1",
  "authority": "docs/public-surface-contract.md",
  "range_encoding": "One-based inclusive rows in the named blessed baseline; SHA-256 binds row numbers to exact baseline bytes.",
  "statuses": [
    "stable-candidate",
    "conditional",
    "deprecated",
    "unstable/deferred",
    "implementation-leakage-to-remove"
  ],
  "baselines": [
    {
      "id": "oce-api",
      "path": "crates/oce-api/tests/public-api.txt",
      "sha256": "db804469b3d16c4d7388a6540204c3304ecacdb5ba55172f07d7016e8a3fb948",
      "item_count": 2560
    },
    {
      "id": "oce-store",
      "path": "crates/oce-store/tests/public-api.txt",
      "sha256": "78cf5fdbcbd415a4ca3c521501c9c1a9ccca099551839c2fd360edc311fcbafe",
      "item_count": 1230
    }
  ],
  "groups": {
    "facade-stable": {
      "status": "stable-candidate",
      "surface": "Working oce-api facade operations, owned DTOs, typed errors, model-local value identities, state images and read-only portability inspection, the closed public-fact compatibility descriptor with distinct catalog/complete-export tags, and bounded canonical exact per-frame replay records with accepted-input retention and distinct noncryptographic content identity.",
      "provenance": "crates/oce-api/tests/public-api.txt plus public definitions re-exported by crates/oce-api/src/lib.rs",
      "rationale": "This is the intended long-lived embeddable host contract; exact signatures remain baseline-owned. Descriptor equality is not executable, unique-build, generation, state-wire or security authority."
    },
    "domain-key-stable": {
      "status": "stable-candidate",
      "surface": "DomainKey and its generated trait/inherent surface in the semantic-key and LoadReport.model_id role.",
      "provenance": "crates/oce-store/src/lib.rs DomainKey and crates/oce-api/src/loading.rs LoadReport::model_id",
      "rationale": "The semantic key is database-free and is already the facade model-id DTO; ModelId remains a prose role, not a new Rust type."
    },
    "storage-port-conditional": {
      "status": "conditional",
      "surface": "oce-store ports/DTOs plus Engine::with_store, Engine::store, and the facade's oce_store module re-export.",
      "provenance": "crates/oce-store/tests/public-api.txt and the named rows in crates/oce-api/tests/public-api.txt",
      "rationale": "Supported for app-side adapters under the database-free port, adapter lifecycle, and handle-validity contract."
    },
    "deprecated-compatibility": {
      "status": "deprecated",
      "surface": "ExportReport::content_id.",
      "provenance": "crates/oce-api/src/export.rs",
      "rationale": "Retained compatibility method; content_id_complete is the supported replacement that refuses incomplete exports."
    },
    "schedule-leakage": {
      "status": "implementation-leakage-to-remove",
      "surface": "Engine::schedule.",
      "provenance": "crates/oce-api/src/engine.rs and crates/oce-api/tests/public-api.txt",
      "rationale": "Exposes the internal graph schedule for historical trace tooling; removal is deferred to a coordinated compatibility change."
    }
  },
  "entries": [
    {
      "baseline": "oce-api",
      "group": "facade-stable",
      "ranges": ["1-1564", "1566-1568", "1570-1574", "1576-1625", "1627-2559"]
    },
    {
      "baseline": "oce-api",
      "group": "schedule-leakage",
      "ranges": ["1565"]
    },
    {
      "baseline": "oce-api",
      "group": "storage-port-conditional",
      "ranges": ["1569", "1575", "2560"]
    },
    {
      "baseline": "oce-api",
      "group": "deprecated-compatibility",
      "ranges": ["1626"]
    },
    {
      "baseline": "oce-store",
      "group": "storage-port-conditional",
      "ranges": ["1-5", "7-28", "30-39", "41-50", "52-56", "58-80", "82-96", "98-123", "125-147", "149-162", "164-189", "191-216", "218-243", "245-270", "272-293", "295-298", "300-318", "320-338", "340-365", "367-392", "394-419", "421-446", "448-473", "475-500", "502-527", "529-553", "555-581", "583-661", "680-1105", "1107-1135", "1139-1208", "1210-1230"]
    },
    {
      "baseline": "oce-store",
      "group": "domain-key-stable",
      "ranges": ["6", "29", "40", "51", "57", "81", "97", "124", "148", "163", "190", "217", "244", "271", "294", "299", "319", "339", "366", "393", "420", "447", "474", "501", "528", "554", "582", "662-679", "1106", "1136-1138", "1209"]
    }
  ]
}
