Version 1.6.0
SOIT v1.6.0 cost reconciliation and document access release highlights, database compatibility, and upgrade notes.
SOIT v1.6.0 is the cost reconciliation and document access release, released on 2026-10-02: costs can be checked against a provider's bill, calls with no price can be refused, and knowledge documents can be restricted to the people who may read them.
Highlights
- Cost reconciliation —
GET /api/v1/runs/costs/entriesfilters cost rows by API key, principal, run source, model, provider, tool, port, operation, currency, and pricing status, and each row says whether it ispriced,estimated,free, orunpriced.GET /api/v1/runs/costs/reconciliationtotals a window per currency and groups it, without counting unpriced rows as zero or adding currencies together. Observe › Costs shows the same and exports CSV to set beside a bill. See Budgets and Cost. - Provider ids on cost rows — model call cost rows keep the provider's
upstream_idandupstream_request_idfor OpenAI, Anthropic, Gemini, and LiteLLM, so a row can be found on the provider's side. The ledger contract moves to1.1. - Calls with no price — a workspace setting in Settings › Security is
allow(as before),refuse_when_budgeted, orrefuse. A refused call is answered403PRICING_NOT_CONFIGUREDbefore the provider or tool is called, and is audited; a virtual model moves on to a priced target. - Document-level knowledge permissions — a restricted document is readable only by the workspace's Owners and Admins, the knowledge base's creator, and holders of a
knowledge_documentread grant. Everyone else meets it nowhere: not in listings, not by id, and not in retrieval by any strategy. Restrictions are kept per document key, so new versions and connector syncs stay restricted. See Knowledge. - Stored copies follow current access — citations,
knowledge_queryresults, source events, thread messages, tool results, and replays leave out documents the reader may not read now; step summaries and approval context that came from such a document are withheld whole. Stored records are not changed. - Gateway pilot kit —
examples/pilotsets up a provider, models, a failover virtual model, a limited key, and a budget over the HTTP API, checks allowed and refused calls, failover, idempotency, cost reconciliation, and an evidence bundle, and tears it all down. A mock provider rehearses it without credentials. See OpenAI-Compatible Gateway. - Security fixes of v1.5.2 — granting resource access takes a workspace Owner or Admin, and a document's
file_idmust name a file of the same knowledge base. soit-cli1.6.0 is on PyPI.
Database compatibility
- Fresh installations migrate from
baseto20261002120000. - Three migrations are added:
20261002100000(provider ids onrun_cost_entries),20261002110000(unpriced_call_policyonworkspaces,allowfor existing workspaces), and20261002120000(knowledge_document_restrictions, empty until someone restricts a document). - The supported N-1 upgrade range is
20260927160000..20261002120000: a v1.5.x database (20261001110000) upgrades in place. - All three migrations have a downgrade. Downgrading to
20261001110000drops the provider ids, every unpriced call policy, and every document restriction, so restricted documents become readable to everyone their knowledge base admits. Restoring the pre-upgrade backup is the preferred way back.
Upgrading
Back up the database and object storage, run alembic upgrade head, and restart the API, the workers, and the web console on the new images. No setting is added. Review the behaviour changes — ledger contract 1.1, stored copies following current knowledge access, the keyword fallback answering from the latest document versions only, and dashboards no longer adding currencies together — in Migration and Upgrade.
Known limitations
- Cost reconciliation lines the ledger up beside a bill; SOIT does not import or read provider bills.
- Text a model wrote from retrieved documents (a response's answer, assistant messages, later workflow nodes that used it) is shown as written to every reader; only its citations are filtered.
- A run records how many documents retrieval left out, not which grant or role let it read each one.
- A document read grant names one member or service principal; there are no groups. Connector-synced documents do not inherit the source system's permissions.
- Steps recorded before v1.6.0 do not know which documents they came from, so their summaries are withheld more broadly when the reader may not read some document of the knowledge base, or workspace, they queried.
- The known limitations of v1.5.0 still apply, except where the changelog lists them as fixed.
Related pages
- Budgets and Cost, Knowledge, OpenAI-Compatible Gateway — the capabilities this release extends.
- Migration and Upgrade — upgrade notes.