> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kaireonai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Residuals & operator-enabled features

> Honest ledger of what is intentionally not shipped, what needs operator action to enable, and what has graduated since the W1-W10 plan close.

The 10-week consolidated plan (W1-W10) closed 2026-04-29. This page is
the honest ledger of what remained — reconciled against the codebase on
**2026-07-03**. Most of the original residuals have since shipped; they
are listed at the bottom for the record.

## Distribution splits

Intentionally in-repo until a separate distribution channel (PyPI for
the client SDK, a hosted leaderboard for the benchmark) is authorized.

| Item                          | Where it lives now              | What's needed                                                                                    |
| ----------------------------- | ------------------------------- | ------------------------------------------------------------------------------------------------ |
| `kaireon-py` PyPI package     | `platform/integrations/python/` | Publish the Python client SDK to PyPI ([integrations/python](/integrations/python))              |
| `decisioning-bench` benchmark | `tools/qa/decisioning-bench/`   | Hosted leaderboard for the decisioning benchmark ([decisioning-bench](/ai-ml/decisioning-bench)) |

## Operator-enabled features (by design, not gaps)

Code-complete and deliberately dormant until an operator enables them.
These are lazy-load / feature-gate designs, not TODOs.

| Item                                               | How to enable                                                                                                                                                                                                                                     |
| -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ONNX BYO scoring runtime                           | `npm install onnxruntime-node@^1.20` in the platform image — the runner lazy-loads it and returns a clear `OnnxNotInstalledError` until then ([onnx-byo](/ai-ml/onnx-byo))                                                                        |
| Streaming consumer tier (Kafka / Kinesis / Pulsar) | Provision a broker and set `FLOW_STREAMING_ENABLED=true`                                                                                                                                                                                          |
| Real cosign signing on provenance bundles          | Install is in the Docker image already; set `COSIGN_KEY` (see [provenance signing](/governance-security/provenance-cosign)) — without it, bundles are emitted unsigned with a typed reason                                                        |
| Slack / Teams interactive callbacks                | Register a Slack App / Teams Workflow so button clicks round-trip to `/api/v1/notifications/interactions`                                                                                                                                         |
| Cron tier via Helm / outbox publisher pod          | `helm upgrade` with the shipped templates ([cron-tier](/self-host/configure/cron-tier), [outbox-publisher](/self-host/configure/outbox-publisher)) — note the in-process maintenance scheduler already runs all cron jobs by default without this |

## Genuinely open code-side items

| Item                                                                                      | Surface                   | Why deferred                                                                                                                                        |
| ----------------------------------------------------------------------------------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| Error-tracking pattern (Sentry-style capture + `errorId`) in outbox publisher and workers | `lib/outbox-processor.ts` | Structured `getLogger().error` shipped V1; correlation-id migration tracked repo-wide                                                               |
| Python-native auto-binning in GBM training                                                | `lib/scoring/train.ts`    | TS-side bridge ships V1; a Python port doubles preprocessing maintenance for marginal gain                                                          |
| Branch protection on `main` requiring `audit-scaffold-coverage`                           | GitHub repo settings      | Plan-gated on the current GitHub plan for the private source repository; enable via a GitHub plan that includes branch protection for private repos |

## Graduated since W10 close (for the record)

Everything below was listed as a residual at W10 close and has since
shipped — see the [changelog](/changelog) for dates and details:

* Real cosign `sign-blob` signing on provenance bundles (placeholder removed)
* Stuck-`processing` outbox row reaper (`/api/v1/cron/outbox-reaper`)
* Multi-input / multi-output ONNX models with per-input dtypes
* ONNX out-of-band blob store (file:// and s3://) replacing the JSON-column cap
* LIME + counterfactual auto-run from `/api/v1/fairness/evaluate`
* Multi-stage four-eyes approvals (`approval_request_stages` + stage state machine)
* Negotiation apply-mode and multi-turn sessions wired into `/recommend` and dedicated routes
* Lagrangian cross-offer constraints (CRUD API + realtime pipeline wiring)
* Bandit arm sampling on realtime `/recommend` (`banditArmIndex` in responses)
* Slack webhook for nightly negotiation-eval failures
* `kaireon_outbox_pending_count` Prometheus gauge
* Cross-offer dual-loader consolidation (2026-07-03: the batch loader read a row shape the API never wrote — API-created constraints silently never applied on batch; single canonical loader now serves both paths)

## Why residuals exist (honest answer)

For operator-authorized items: we deliberately do not create new GitHub
repos, modify production secrets, or flip production flags from inside
an automated coding session.

For the open code-side items: each is called out inline in the
corresponding source file. None block production rollout; they are
next-iteration enhancements gated on tenant demand or a downstream
feature landing first.
