v3.4.0
One context pack can now span a web app and its API, change risk stops counting files that are only loose leads, and otito route shows each question's own confidence and says plainly when it has no recommendation. No command, field or schema was removed.
Added
context_packandotito contextread a repository'scompanionstoo: list sibling repositories in its.otitorc.json("companions": ["../api"], resolved against that file) and one pack covers them all, so a web bug whose cause is in the API response no longer gets a web-only pack. Explicitpathsstill win; a companion that is not checked out is skipped.otito routeshows each Score question's own confidence (specificity, blast radius) next to its score, not only the weaker of the two. Display only: confidence still never moves the tier.scoring.confidencescarries both.
Fixed
change_impactno longer raises a risk from a domain that only an advisory lead touches. An RSVP gallery fix ranked the RSVP payment-success page as a loose lead and warned of a money-flow change; risks now come from required and supporting files, plus any changed file.otito routeand the route prompt hook say no recommendation when otito matched no files, instead of presenting a read of an empty set as a tier. The fail-safe tier is still named, andtierin JSON is unchanged (premium), so callers that read onlytierbehave as before.version:checkcatches a stale docs site.docs/index.mdopens with a**vX.Y.Z** is publishedbanner, which replaced the**Status:** vline the release sync and drift check looked for, so neither saw it: 3.3.0 was released on 2026-09-27 withversion:checkgreen while bashbop.github.io/otito still announced v3.2.0 and had no 3.3.0 entry under What's New.syncPinnedDocVersionnow rewrites the banner,findPinnedDocVersionDriftreports it, and a newfindWhatsNewDriftfailsversion:checkwhen What's New has novX.Y.Z publishedentry for thepackage.jsonversion (it is written by hand, so the sync cannot add it). The site gets its v3.3.0 banner and entry.context_packreads a request that says "bug", "broken", "crash" or "regression" as debugging instead of an ambiguous action, and in a multi-repo query that names one repository by a word from its folder name, that repository's files rank first.change_impactno longer drops a UI page (page.tsx,layout.tsx) from required owners because the request used no API wording; controllers, DTOs and API routes still need it. A query term that recurs across most of the repository counts for less, and utility-file owners compete on score with conventional owners instead of only being a last resort.