# public-api coverage baseline (the ratchet floor).
# SPDX-License-Identifier: AGPL-3.0-or-later
#
# Each admitted crate with a lib target SHOULD have a crates/<crate>/public-api.txt
# baseline (the locked public-API surface, diffed by .github/workflows/public-api.yml
# + classified breaking-vs-additive by semver-checks.yml). Today only a subset is
# covered. This file is the MONOTONIC floor: every crate listed here MUST keep its
# public-api.txt (a regression → RED). Uncovered lib crates are a YELLOW ratchet
# target (generate the baseline, add the crate here, the floor rises). Never remove
# a line by hand.
#
# Generate a baseline:  cargo public-api -p <crate> --all-features --omit auto-trait-impls > crates/<crate>/public-api.txt
#
# Enforced by scripts/hygiene/check-public-api-coverage.sh (vector 38) AND projected
# into .github/workflows/public-api.yml (surface diff) + semver-checks.yml (breaking-
# vs-additive). ONE source of truth → three consumers (ADR-090). Add a crate here +
# commit its public-api.txt, and all three pick it up.
#
# Two classes of admitted lib crate are deliberately NOT floored:
#   - WIP crates — their public surface churns by design, so locking it only
#     generates CI noise (regen chore per edit) with nothing stable to protect.
#     Floored at admission. Hold-out: nika-schema.
#   - Platform-divergent surfaces — the baseline is generated on the developer host
#     (macOS) but CI diffs it on ubuntu. A crate whose PUBLIC surface differs by OS
#     can't be locked with one cross-platform snapshot. nika-screen's surface carries
#     macOS-only `objc2::…::AutoreleaseSafe` blanket impls (via xcap's objc2 dep) that
#     don't exist on linux; `--omit auto-trait-impls` doesn't strip them. To cover it,
#     generate the baseline on linux (CI-side) OR add `--omit blanket-impls` to ALL
#     consumers + regen every baseline. Until then: hold-out.
# (a11y/ocr also use OS-specific deps but keep them PRIVATE — their public surface is
#  neutral, verified by a platform-symbol sweep, so they ARE floored.)
nika-types
nika-error
nika-catalog
nika-kernel
nika-kernel-mock
# --- 2026-06-10: the platform-neutral admitted lib crates (L0 / L0.5 / L1) ---
nika-a11y
nika-bm25
nika-catalog-codegen
nika-clock
nika-event
nika-kernel-ai
nika-kernel-core
nika-kernel-plugin
nika-kernel-runtime
nika-ocr
# --- 2026-06-10: the L1 effect crates admitted on main (fs reworked to FsError) ---
nika-fs
nika-http
nika-blob
nika-exec-runner
# --- 2026-06-10: M2.4 write-side computer-use · public contract frozen at B.2
# (the enigo backend lands at B.3 as an INTERNAL impl · surface stays stable) ---
nika-input
# --- 2026-06-11: M2.5 web arm · Guard-5 pure core public, CDP internal at B.3 ---
nika-browser
# --- 2026-06-11: s-ladder pack crate (session-B admission · floored here · platform-neutral) ---
nika-pack
# --- 2026-06-11: s8.5 announce-ladder · the L1.5 provider layer (14 profiles ·
# 3 wire formats · kernel http seam · consumed by verb-infer s9 + verb-agent) ---
nika-providers
# --- 2026-06-11: L2 verb crates (session-B admissions s9-s11 · floored on consolidation · platform-neutral) ---
nika-verb-exec
nika-verb-infer
nika-verb-invoke
nika-verb-agent
