Command line interface for accessing the Open Web Index shards and slices.

docs(remote): state what listing an object-store remote costs, and fix ls --help master

F4, plus a bug found while doing it. Documented on `GET /remote/ls` (docs/source/http.md, new "Listing Cost" section) and in `owi remote ls --help`, with both measurements: 84.1 s to return 0 datasets from the s3a mirror against 7.1 s to return 584 from LEXIS. The cost tracks the size of the store, not the size of the answer, so it is slowest when it has least to say. Consumers are told to budget minutes, to cache, and not to use `ls` as a liveness probe. The cheap existence check asked for already exists: FileBasedRepository.status does one fs.exists per access level and never enumerates -- and F7 is what stopped it raising for exactly these backends. The docs now point at POST /remote/doctor/status for health views. A cheap *count* is deliberately not offered, and the measurement is the reason rather than an assumption: the 84 s call returned zero datasets, so load_metadata was never reached and the whole 84 s was listdir/ls traversal. A "shallow count" skipping per-dataset metadata would cost the same 84 s while advertising itself as cheap. Serving a count without enumerating needs a maintained index, which is a different feature. F8, found by running the command whose help I was editing: `owi remote ls --help` crashed with MarkupError -- the specifier syntax `[/<filter>]` in the docstring is also valid Rich markup, and Typer renders docstrings as markup. Help for the most-used remote command produced a traceback. Reproduced at v5.7.0, so it predates this work. Nothing had ever invoked --help in a test. tests/owilix/cli/test_help_renders.py now sweeps all 57 commands; it fails at v5.7.0 on exactly `remote ls` and passes everywhere else. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017phbSd6D8u4iEQsCAPEw6s


+186 -7
4 changed files