diff --git a/dokimi/CHANGELOG.md b/dokimi/CHANGELOG.md index a276d106..0364e90f 100644 --- a/dokimi/CHANGELOG.md +++ b/dokimi/CHANGELOG.md @@ -23,3 +23,50 @@ Pending changes are fragments in [`changelog.d/`](changelog.d/), collected here when a version is released. + + +## [0.1.0] — 2026-10-19 + +First release on PyPI. Requires Python 3.11 to 3.14. + +### Added + +- `dokimi --version`; runs and scorecards record `dokimi_version`. +- `tools preference`: how much one change to a tool moves a model's choice between two equal tools; `--max-cost-usd` caps its spend. +- `repo compare`: treatment arms against a baseline arm, paired by task. +- `context trace`: prompt size of every model call in a Claude Code trace. +- `novelty --max-usd` spend cap; `novelty routing --catalog` tests against the real sibling skills. +- Guidance-only repo manifests: `repo scan`, `reach` and `validate` without tasks. +- `repo run --build-timeout` and `repo tasks check --build-timeout` (default 3 h). +- Arms artifacts store the exact text the judge read; `eval cross-judge --judges` re-scores on it. +- Novelty `bundle` records name what was measured (`artifact_name`, `artifact_ref`, `measured_digest`). +- Documentation site at https://intel.github.io/dokimi/. + +### Changed + +- Default models: answers and generation `openai/gpt-6.1-sol`, judge `anthropic/claude-sonnet-5-5`, on every command. Scores differ from earlier defaults. +- `--judge-provider` alone picks that provider's default judge model; `google`, `google-vertex` and `openrouter` require `--judge-model`; `openai-codex` is no longer offered. +- Question sets are written as `questions.v2` (`question` instead of `text`); v1 sets still load. +- A golden set under `--questions-root` is answered as-is: no question generation, no persona discovery. +- Every judge path refuses a record with no question text before the first judge call (exit 2). +- `eval panel-score` checks numeric claims the way the single judge does. Panel scores differ from earlier runs. +- `harmful_atoms` reports `measured: false` when the conflict check did not cover every atom pair. +- `command:`, Harbor, BenchFlow and explorer timeouts kill the whole process tree. +- Bundled registries and the spec schema ship inside the package. +- RAGAS is an optional extra: `eval ragas` and `answers generate --ragas` need `pip install 'dokimi[ragas]'`, and exit 1 before any model call without it. +- `beautifulsoup4` and `anthropic` are no longer direct dependencies. + +### Removed + +- Python 3.10. +- The top-level `cli` module is no longer installed; use `dokimi`, `python -m dokimi` or `dokimi.cli`. + +### Fixed + +- `eval panel-score` judged every answer with an empty question and no context. Panel scores differ from earlier runs. +- Judge and panel replies with non-finite or out-of-range scores are rejected and not cached. +- The trust gate's retrieval hit rate read a field nothing wrote, so it reported 100% for runs with no documents. +- `tasks run` could score a failed cell as passed (relative `--output-dir`, or a stale run dir that could not be cleared). +- Question id `0` was read as missing. +- The agentic arm ran a tool on `{}` when its arguments did not parse; failed calls are now recorded. +- Novelty no longer counts truncated or failed replies, non-atom rows or non-boolean verdicts as results. diff --git a/dokimi/README.md b/dokimi/README.md index 0a116469..2b0e2ec4 100644 --- a/dokimi/README.md +++ b/dokimi/README.md @@ -70,13 +70,19 @@ The project is pre-1.0; interfaces and artifact schemas may still change. - Optional extras: `ragas` (`eval ragas`, `answers generate --ragas`), `ocr` (Docling ingestion) and `mcp` (real MCP servers). +```bash +pip install dokimi # the released package and the `dokimi` command +``` + +From a source checkout (to contribute, or to run the bundled tasks): + ```bash pip install -e ".[dev]" # installs the `dokimi` command plus test tooling # or, without installing the package: pip install -r requirements.txt -r requirements-test.txt ``` -The examples below use `python cli.py …`; after `pip install -e .` the +The examples below use `python cli.py …` from a checkout; the installed `dokimi …` command is equivalent. For what a run costs in API calls, see the [cost estimate](https://github.com/intel/dokimi/blob/main/dokimi/docs/quickstart.md#cost-estimate). diff --git a/dokimi/changelog.d/20261014_000000_versioning.md b/dokimi/changelog.d/20261014_000000_versioning.md deleted file mode 100644 index 77e7048f..00000000 --- a/dokimi/changelog.d/20261014_000000_versioning.md +++ /dev/null @@ -1,29 +0,0 @@ -### Added - -- **Versioned releases, starting at 0.1.0** — `dokimi --version` prints the - version, `dokimi.__version__` exposes it, and the `dokimi run` manifest and the subject - scorecard `run_manifest` record it as `dokimi_version`, so either of those two results - can be tied to the release that produced it (other artifacts do not record it yet). - The version is single-sourced from `project.version` in `pyproject.toml`. -- **Changelog** — this file, built at release time from per-PR fragments in - `changelog.d/` (`scriv create`). - -### Changed - -- **Bundled registries and the spec schema live in the package** — - `products.yaml`, `intents.yaml`, `config/products.yaml` and - `benchmarks/spec.schema.json` moved to `dokimi/products.yaml`, - `dokimi/intents.yaml`, `dokimi/config/products.yaml` and - `dokimi/runner/spec.schema.json`, so an installed wheel carries them and - works outside a source checkout. A `config/products.yaml` in the working - directory still overrides the bundled one for `answers generate` and - `questions generate`. `explore` without `--tasks-root` in an installed - package now says the bundled tasks need a source checkout, instead of - finding no tasks. - -### Removed - -- **The top-level `cli` module is no longer installed** — the wheel used to ship - `cli.py` as a top-level module, so `import cli` and `python -m cli` worked after - `pip install`. Use the `dokimi` command, `python -m dokimi` or - `from dokimi.cli import main`; `python cli.py` still works in a source checkout. diff --git a/dokimi/changelog.d/20261016_122720_napetrov_refactor-novelty-bundle.md b/dokimi/changelog.d/20261016_122720_napetrov_refactor-novelty-bundle.md deleted file mode 100644 index e900af32..00000000 --- a/dokimi/changelog.d/20261016_122720_napetrov_refactor-novelty-bundle.md +++ /dev/null @@ -1,26 +0,0 @@ -### Added - -- **The novelty `bundle` record names what it measured** — the `analyze` artifact's - `bundle` block (`novelty.v1`) gains `artifact_name`, `artifact_ref` and `measured_digest` - (the digest of exactly the files measured; every novelty `ref_digest` is this value), and - the `probes.json` bundle block gains `artifact_ref` and `files`. Older records still - validate. - -### Changed - -- **A saved answer key survives a new symlink or image** — `novelty probe` no longer - reports a key as stale when a symlink or a non-text file was added to the skill after - extraction; an edited measured file or a new file the run would measure still does. -- **Hand-edited or partial `bundle` records read differently** — an `atoms.json` whose - `bundle` block lacks `policy_excluded_words` or `unreadable_files` now gets them from its - `excluded` rows, and a word count that is not a number (`"n/a"`, `[1]`, `Infinity`) reads as - 0 (an unusable stored file count is recounted from the `excluded` rows), so the `artifact_coverage` gate value of such a record can differ from before (no - writer produces them). Records the tool writes gate and report exactly as before. -- **The pre-run note of a bundle run** says "words over the budgets"; it no longer says - "or filtered by role", since role-filtered words were never in that count. - -### Fixed - -- **`novelty probe` errors name the file you passed** — a stale-key message quotes the - `--atoms` path instead of a hard-coded `atoms.json`, and a missing or malformed entry - point exits with `cannot load ...` instead of a traceback. diff --git a/dokimi/changelog.d/20261016_122905_napetrov_feat-tool-preference-cost-cap.md b/dokimi/changelog.d/20261016_122905_napetrov_feat-tool-preference-cost-cap.md deleted file mode 100644 index 1b2b696b..00000000 --- a/dokimi/changelog.d/20261016_122905_napetrov_feat-tool-preference-cost-cap.md +++ /dev/null @@ -1,3 +0,0 @@ -### Added - -- **Tool-preference cost cap (`--max-cost-usd`)** — stop starting new model calls once the sum of `cost_usd` from completed calls reaches the cap. The run exits 2 when the cap, or a call with no price, leaves calls unstarted (an unpriced call that leaves none only warns); the partial artifact records `max_cost_usd`, `skipped` calls, and the count of skipped items (`n_skipped`). Calls already in flight finish, so the spend can overshoot by up to `--concurrency − 1` calls. A call that fails but was billed (and carries usage) counts toward the cap. The calls that ran are a prefix in item order, so only the last group reached may be partial. diff --git a/dokimi/changelog.d/20261016_130000_nikolay.a.petrov_harnesses_on_runner.md b/dokimi/changelog.d/20261016_130000_nikolay.a.petrov_harnesses_on_runner.md deleted file mode 100644 index 10d4b549..00000000 --- a/dokimi/changelog.d/20261016_130000_nikolay.a.petrov_harnesses_on_runner.md +++ /dev/null @@ -1,24 +0,0 @@ -### Changed - -- **`command:`, Harbor, BenchFlow and explorer processes are contained** — - these now start through the process runner, so a timeout kills the whole process - tree (an agent's tool calls, `harbor`'s children), not only the command, and - anything the command leaves running when it exits is killed too. The command's - stdin is closed, and its output is read as UTF-8 whatever the locale. A timed-out - `bench` gets SIGTERM and 15 s to stop before SIGKILL, also on Ctrl-C (where - `bench` used to be left running); a second Ctrl-C does not restart that grace. - A timed-out `harbor` gets SIGTERM and 60 s, so it removes its trial container and - image instead of leaving them behind (harbor 0.20.0 still leaves them for a task - with `allow_internet = false`). - A `command:` harness's timeout of 0 or less is an immediate timeout (rc 124, - reward 0) and `CommandExplorer(timeout_sec=None)` runs without a limit, as - before. -- **`repo run` stops its container gently and bounds docker calls** — a timed-out - `docker run` CLI gets SIGTERM and 10 s before SIGKILL, then `docker kill` stops - the container by name once the CLI is gone; `docker build` fails after 3 h and - `docker image inspect` after 60 s instead of hanging the batch. -- **Library API** — `repos.container.kill_group` is removed (the runner kills the - group), `run_process` takes a `runner` argument, and - `BenchflowHarness.preflight()` is an instance method. `bench.log` keeps the first and last 512 KiB of each of `bench`'s - streams. A wrapper that relied on a background process outliving its cell must - now wait for it. diff --git a/dokimi/changelog.d/20261016_174000_napetrov_outcome-contracts.md b/dokimi/changelog.d/20261016_174000_napetrov_outcome-contracts.md deleted file mode 100644 index 4a580226..00000000 --- a/dokimi/changelog.d/20261016_174000_napetrov_outcome-contracts.md +++ /dev/null @@ -1,29 +0,0 @@ -### Added - -- **User outcome contracts** — `pytest --outcomes` checks each promise in - `tests/outcomes/*.json` (the doc that states it, the code that keeps it, and - evidence ids) against the tests that ran. A test claims an id with - `@pytest.mark.outcome("")`. An id no test claims is an error, a claimed - test that fails fails the verdict, and an id whose claimed tests were all - skipped is inconclusive (exit 3). The verdict is written to `outcomes-result.json` - (`--outcomes-report=` moves it). CI runs the tests with `--outcomes` and - uploads the file with the other test artifacts. The first contract covers - pinned question sets. - -### Changed - -- **`--questions-root` pins the question set** — when `_golden.json` - exists in the root, `benchmark run` and `evaluate` answer exactly that set and - skip question generation, where they used to merge it into generated - questions. Counts and `question_set_hash` of such runs change. A cached - `questions/.json` in the output directory still wins until - `--force-regen`; a cached set that differs from the golden set now logs a - warning with both hashes. -- **`benchmark preflight --questions-root` validates the golden set** — a - missing root, a missing or empty golden file, or an unreadable or malformed - one exits 1 and the check prints the golden file path and item count. -- **Pinned runs skip persona discovery** — with a golden set under - `--questions-root`, `evaluate` and `benchmark run` do not discover personas - (`benchmark run` also skips them for `--questions-from`, even with - `--force-regen`), and `evaluate` no longer prints a `Personas:` path for - such a run. diff --git a/dokimi/changelog.d/20261016_190000_napetrov_empty-question-rule.md b/dokimi/changelog.d/20261016_190000_napetrov_empty-question-rule.md deleted file mode 100644 index fe7b3210..00000000 --- a/dokimi/changelog.d/20261016_190000_napetrov_empty-question-rule.md +++ /dev/null @@ -1,20 +0,0 @@ -### Changed - -- **One rule for a record without a question** — every judge path (`eval score`, - `eval panel-score`, the RAGAS meta-evaluation of `eval ragas` and - `answers generate --ragas`, `arms` judging, `eval pairwise`, `eval checklist`, - `eval cross-judge`, and the degradation pairs of `eval judge-validity` / - `eval judge-wording`) now checks the records it would send to a judge before - the first judge call, and before the `--judge-temperature` sampling probe, and - refuses the run when one has a missing or blank question text, naming the - record. A record the path would skip anyway is not refused: an answer-error - record with no answer, a record with only empty answers, one without expected - points (`eval checklist`), one without a baseline answer or with only arms left - out by `--arms` (`eval pairwise`), one whose answers are all under the - degradation length floor, and one without a question id (the degradation - pairs). `arms run --judge` checks every question before any answer is paid - for. Before, `eval score` recorded a per-question error only when the key was - missing, the degradation pairs skipped the record silently, RAGAS reported a - warning, and the other paths sent an empty question to the judge. The CLI - prints `Error: …` and exits 2, the code these commands use for other input - errors (1 stays the verdict of `eval judge-validity` and the `--strict` gates). diff --git a/dokimi/changelog.d/20261016_190100_napetrov_judge_materials.md b/dokimi/changelog.d/20261016_190100_napetrov_judge_materials.md deleted file mode 100644 index 72f9e0f4..00000000 --- a/dokimi/changelog.d/20261016_190100_napetrov_judge_materials.md +++ /dev/null @@ -1,19 +0,0 @@ -### Added - -- **Judge's treatment material stored in arms artifacts** — `dokimi arms run` now keeps - the exact text the judge reads (or would read) for each arm and question, with or - without `--judge`, indexed by SHA256 digest. Later readers of the artifact (e.g., - `dokimi eval cross-judge --judges` re-scoring the same answers) see the stored material - instead of a 200-char snippet fallback, so the re-scored judge reads what the original - judge saw. Artifact sizes grow by one copy per - distinct text per arm (perf skill +0.3% for the text itself, docs runs grow by the - answerer's 15,000-char context cut per question). - -### Changed - -- **`eval cross-judge --judges` accepts stored scores when the file keeps the material** — - it used to exit 2 for any arm judged on treatment material. It now re-scores with the - stored text and exits 2 only when a stored score cites different material than the arm - record serves, or a question's material cannot be read; the error names the questions. - `--no-stored` still compares the measures anyway, and `--pairwise` and `--checklist` - still refuse stored scores because those judges see only answers. diff --git a/dokimi/changelog.d/20261016_192848_napetrov_feat-questions-v2.md b/dokimi/changelog.d/20261016_192848_napetrov_feat-questions-v2.md deleted file mode 100644 index 99857a9f..00000000 --- a/dokimi/changelog.d/20261016_192848_napetrov_feat-questions-v2.md +++ /dev/null @@ -1,29 +0,0 @@ -### Added - -- **Question sets are written as `questions.v2`** — every writer (`questions generate`, - `questions refine`, `catalog trigger-set --format questions` and the `evaluate` / - `benchmark` pipeline's `questions/.json`) stores the text under `question` - instead of v1's `text`, stamps `"schema_version": "questions.v2"` and validates the set - before writing it; a set that fails is kept at `.rejected` before any answer is - paid for. Scripts that read `.text` from these files need `.question` - (`dokimi/schemas/questions.v2.json` documents every field). - -### Changed - -- **Question sets are read tolerantly, and a read never rewrites an input** — `v1` sets - (curated golden sets included) and older hand-written shapes (a bare list, - `question_id` / `question_text`, a list `metadata`, records with no `id`, `null` in a - field v1 leaves open) keep loading in the pipeline, `arms run`, `answers generate`, - `report generate`, `questions refine`, `eval checklist` and `dataset export`. A set that - needed more than the `text` → `question` rename logs one - `read in legacy questions format (...)` warning; fix the file by hand to stop it. - A `--questions-from` or `--custom-questions` file is no longer written over, even when - it is the run's own `questions/.json` (the one exception is a Python-API - `force_regen=True` merge that adds records to that file); the run writes its own v2 copy. - `report generate` and `questions refine` print `Error: ...` and exit 1 on an unusable set - instead of a traceback; `questions refine --fill-gaps` validates the cleaned set before - any gap-fill model call, so an invalid set costs nothing. -- **`question_set_hash` changes for sets whose records had no `id` key** — such records now - take their `question_id`, or are numbered `q0000`, `q0001`, ... by position, so the hash - of such a legacy set differs from earlier runs and their results are not paired with new - ones. Sets valid as v1 or v2 keep their ids and hash. diff --git a/dokimi/changelog.d/20261017_121500_antonwolfy_tool-preference-cost-cap.md b/dokimi/changelog.d/20261017_121500_antonwolfy_tool-preference-cost-cap.md deleted file mode 100644 index b7990c8a..00000000 --- a/dokimi/changelog.d/20261017_121500_antonwolfy_tool-preference-cost-cap.md +++ /dev/null @@ -1,3 +0,0 @@ -### Fixed - -- **`tools preference --max-cost-usd` stops at a reply it cannot price** — a call whose `usage` is missing or not a dict, or whose `cost_usd` is not a finite number, now leaves the cap blind (no new call starts after it) instead of being left out of the spend. A library caller of `run_probe` could run every call under a cap that way, and a string `cost_usd` crashed the run before the artifact was written. The calls that run under the cap are now a prefix of the jobs in item order at any `--concurrency`, so only the last group reached can be partial; before, a worker slow to start could leave a hole in an earlier group. The docs and `--help` no longer say an unpriced call always exits 2: it does when calls were left unstarted, and otherwise warns. diff --git a/dokimi/changelog.d/20261017_121600_antonwolfy_benchmark-persona-docs.md b/dokimi/changelog.d/20261017_121600_antonwolfy_benchmark-persona-docs.md deleted file mode 100644 index 3d281472..00000000 --- a/dokimi/changelog.d/20261017_121600_antonwolfy_benchmark-persona-docs.md +++ /dev/null @@ -1,3 +0,0 @@ -### Documentation - -- **`--force-regen` help and the pipeline docs say when personas are discovered** — `benchmark run --force-regen` and `benchmark batch --force-regen` no longer promise to regenerate personas: a run with a golden set under `--questions-root`, or with `--questions-from`, discovers none, and `--force-regen` re-reads the golden set. `README.md` and `docs/methodology.md` now say the same. diff --git a/dokimi/changelog.d/20261017_123000_antonwolfy_judge-provider-default.md b/dokimi/changelog.d/20261017_123000_antonwolfy_judge-provider-default.md deleted file mode 100644 index b12c0eba..00000000 --- a/dokimi/changelog.d/20261017_123000_antonwolfy_judge-provider-default.md +++ /dev/null @@ -1,7 +0,0 @@ -### Fixed - -- **`--judge-provider` alone picks a judge model that runs there** — on `benchmark run`, `benchmark preflight`, `benchmark batch`, `evaluate`, `eval score`, `eval judge-validity`, `eval checklist`, `eval judge-wording`, `eval pairwise`, `arms run`, `arms matrix-run` and `subjects run`, a `--judge-provider` without `--judge-model` was paired with `claude-sonnet-5-5`, so `--judge-provider openai` sent `openai/claude-sonnet-5-5` and failed at the first judge call. The judge model is now the default judge for that provider: `claude-sonnet-5-5` on `anthropic` and `amazon-bedrock` (as before), `gpt-6.1-sol` on `openai`. On `google`, `google-vertex` and `openrouter` the command exits before any model call and asks for `--judge-model`. With the default answer model, `--judge-provider openai` alone makes the judge the answering model, which the commands that check judge independence warn about. `novelty` already chose its judge this way. - -### Added - -- **`parse_args` on the legacy `cli.py` shim** — `from cli import parse_args` gives the same parse as `dokimi.cli.parse_args`, with the `--judge-model` default resolved for `--judge-provider`. `build_parser().parse_args()` still leaves the placeholder, which reads as `claude-sonnet-5-5`. diff --git a/dokimi/changelog.d/20261017_124500_antonwolfy_repo-build-timeout.md b/dokimi/changelog.d/20261017_124500_antonwolfy_repo-build-timeout.md deleted file mode 100644 index 5af5ba4d..00000000 --- a/dokimi/changelog.d/20261017_124500_antonwolfy_repo-build-timeout.md +++ /dev/null @@ -1,3 +0,0 @@ -### Added - -- **`repo run --build-timeout` and `repo tasks check --build-timeout`** — the seconds the image build may run before it fails as a container error, 10800 (3 hours) by default as before. A toolchain image that legitimately takes longer could not be built at all: the image tag is the eval tree's digest, so a retry rebuilt from scratch and hit the same cap. `DockerRunner.build` takes the bound as `timeout_s`. diff --git a/dokimi/changelog.d/20261018_120000_napetrov_ci-deptry.md b/dokimi/changelog.d/20261018_120000_napetrov_ci-deptry.md deleted file mode 100644 index 441a9971..00000000 --- a/dokimi/changelog.d/20261018_120000_napetrov_ci-deptry.md +++ /dev/null @@ -1,9 +0,0 @@ -### Changed - -- **Install dependencies follow the imports** — `pip install dokimi` no longer - installs `beautifulsoup4` (and its `soupsieve`), which nothing imports, and no - longer lists `anthropic` itself: it still comes in through - `langchain-anthropic`. `langchain-openai` and `langchain-core`, which - `eval ragas` imports, are now declared (`>=1.0,<2`) instead of arriving only - through `ragas`. Code that imported `bs4` from dokimi's environment installs it - itself. diff --git a/dokimi/changelog.d/20261018_120000_vchamarthi_partial-conflict-not-cleared.md b/dokimi/changelog.d/20261018_120000_vchamarthi_partial-conflict-not-cleared.md deleted file mode 100644 index 9972a396..00000000 --- a/dokimi/changelog.d/20261018_120000_vchamarthi_partial-conflict-not-cleared.md +++ /dev/null @@ -1,11 +0,0 @@ -### Fixed - -- **`harmful_atoms` no longer clears a conflict check that did not read the pair space** — - `novelty.v1` artifacts now record `conflict_coverage` (`pairs_compared`, `pairs_total`), - and the gate reports `harmful_atoms` as `measured: false` instead of a pass at 0 when fewer - than `min_conflict_coverage` (default 1.0) of the atom pairs were compared, when the atom - set was capped, or when `conflict_coverage` is present but malformed. A conflict that was - found is still reported. `analyze` now sends the whole capped atom set to the conflict - check in one call (it used batches of 40, which compared about a third of the pairs at the - default cap of 120), so full coverage is the normal case. Artifacts without the field keep - the old reading. diff --git a/dokimi/changelog.d/20261019_120000_antonwolfy_api-reference-package-pages.md b/dokimi/changelog.d/20261019_120000_antonwolfy_api-reference-package-pages.md deleted file mode 100644 index c9354674..00000000 --- a/dokimi/changelog.d/20261019_120000_antonwolfy_api-reference-package-pages.md +++ /dev/null @@ -1,3 +0,0 @@ -### Documentation - -- **The API reference's package pages have content** — `dokimi`, `dokimi.ingest`, `dokimi.metrics` and `dokimi.runner` had no module docstring. On the site, the `dokimi.metrics` page listed its usage record with no word on what the package is, and the other three showed only a heading. Each now says what the package does, and the `dokimi` page, the API reference's landing page, maps every subpackage to its evaluation track with a link to its page. diff --git a/dokimi/changelog.d/20261019_120000_vchamarthi_ragas-extra.md b/dokimi/changelog.d/20261019_120000_vchamarthi_ragas-extra.md deleted file mode 100644 index df32f1ff..00000000 --- a/dokimi/changelog.d/20261019_120000_vchamarthi_ragas-extra.md +++ /dev/null @@ -1,7 +0,0 @@ -### Changed - -- **RAGAS is an optional extra**: `pip install dokimi` no longer installs - `ragas`, `langchain-community`, `langchain-anthropic`, `langchain-openai` or - `langchain-core`. `eval ragas` and `answers generate --ragas` need - `pip install 'dokimi[ragas]'` (the `dev` extra includes it). Without the - extra, both exit 1 with the install command before any model call. diff --git a/dokimi/changelog.d/20261019_170000_antonwolfy_api-landing-dokimi-command.md b/dokimi/changelog.d/20261019_170000_antonwolfy_api-landing-dokimi-command.md deleted file mode 100644 index a8b729d2..00000000 --- a/dokimi/changelog.d/20261019_170000_antonwolfy_api-landing-dokimi-command.md +++ /dev/null @@ -1,3 +0,0 @@ -### Documentation - -- **The API reference's landing page names the installed `dokimi` command** — it called `python cli.py` the supported entry point, and a wheel install has no `cli.py`. It now names `dokimi`, with `python cli.py` for a source checkout, as the CLI reference does. diff --git a/dokimi/docs/quickstart.md b/dokimi/docs/quickstart.md index b7006243..329dc824 100644 --- a/dokimi/docs/quickstart.md +++ b/dokimi/docs/quickstart.md @@ -49,7 +49,9 @@ export GITHUB_TOKEN="ghp_..." ### 2. Dependencies ```bash -pip install -e ".[dev]" # package + dev tooling (recommended) +pip install dokimi # released package +# or, from a source checkout: +pip install -e ".[dev]" # package + dev tooling # or, dependencies only: pip install -r requirements.txt ``` diff --git a/dokimi/docs/releasing.md b/dokimi/docs/releasing.md index 678dc9f3..32b83f8d 100644 --- a/dokimi/docs/releasing.md +++ b/dokimi/docs/releasing.md @@ -96,8 +96,11 @@ conda-forge packages are built by a feedstock repository under `conda-forge/`, not from this repository. After the first PyPI release: 1. Generate a recipe from the PyPI sdist (`grayskull pypi dokimi`), make it - `noarch: python`, test with `dokimi --version` and `dokimi --help`, add the - maintainers, and open a PR to + `noarch: python` with `python {{ python_min }}.*` in host and test and + `python >={{ python_min }}` in run, where `python_min` is `3.11` unless the + conda-forge global value is already at least that (see conda-forge's + [noarch guide](https://conda-forge.org/docs/how-to/basics/noarch/)), test with + `dokimi --version` and `dokimi --help`, add the maintainers, and open a PR to [conda-forge/staged-recipes](https://github.com/conda-forge/staged-recipes). The sdist is the source because it is the project directory alone (this repository's `dokimi/`), with `LICENSE` at its root for `license_file`. @@ -107,4 +110,4 @@ conda-forge packages are built by a feedstock repository under Every runtime dependency in `pyproject.toml` is on conda-forge (checked for 0.1.0), including versions inside the current upper bounds. An optional extra -(`ocr`, `mcp`, `embeddings`, `typed-scorer`) is not part of the conda package. +(`ragas`, `ocr`, `mcp`, `embeddings`, `typed-scorer`) is not part of the conda package.