docs: wheel-konsumenten får de to git-kravene i install-instruksen

Wheel-beslutningen tatt på den ene armen som ligger i DETTE repoet: dokumentér
kravene. Å publisere de to pakkene er de to ANDRE repoenes beslutning
(open/llm-ingestion-okf, open/llm-ingestion-pipeline-security) og forblir åpen.

Premisset målt på nytt før teksten ble skrevet, ikke arvet: wheelen bygget her og
Requires-Dist lest ut — llm-ingestion-okf og llm-ingestion-guard står som BARE
NAVN, som rapportens §7.2 forutsa. Install-kommandoen er kopiert ordrett fra den
målte i §7.2 (65 pakker, exit 0), ikke formulert på nytt.

Rettet samtidig en påstand som var blitt ufullstendig av 4a: «an installed
distribution works without a checkout» gjaldt DATAEN (shared/ som pakkede data),
ikke avhengighetene. Presisert til «finds its knowledge without a checkout».

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018GfbDLY7YVLKVqpUHnbwVW
This commit is contained in:
Kjell Tore Guttormsen 2026-08-14 00:07:17 +02:00
commit 9a869baf8a

View file

@ -24,10 +24,28 @@ uv sync
```
The clone is the documented path because the walkthrough below points at files in the tree. It is
no longer a technical requirement: a built wheel carries the shared spec, the persona skill and the
example bundles under [`shared/`](shared/README.md) as packaged data, and the resolver prefers a
working tree when one is present (`PORTFOLIO_SHARED_ROOT` overrides both) — so an installed
distribution works without a checkout.
no longer a technical requirement for the DATA: a built wheel carries the shared spec, the persona
skill and the example bundles under [`shared/`](shared/README.md) as packaged data, and the
resolver prefers a working tree when one is present (`PORTFOLIO_SHARED_ROOT` overrides both) — so
an installed distribution finds its knowledge without a checkout.
### Installing a built wheel
A wheel is **not installable on its own**, and the failure is a resolver error rather than a
missing file. Two dependencies are pinned to git tags, and `[tool.uv.sources]` is uv configuration
that does not travel with wheel metadata — so the wheel names `llm-ingestion-okf` and
`llm-ingestion-guard` as bare names that no package index can resolve. Supply the two requirements
alongside the wheel (measured: 65 packages, exit 0):
```bash
uv pip install portfolio_optimiser-1.0.0-py3-none-any.whl \
"llm-ingestion-okf @ git+https://git.fromaitochitta.com/open/llm-ingestion-okf.git@v0.3.2" \
"llm-ingestion-guard @ git+https://git.fromaitochitta.com/open/llm-ingestion-pipeline-security.git@v0.3.4"
```
Both are tag-pinned deliberately: they are security components, and a version that can move under
an install is a gate that can stop gating without a local diff. `uv sync` from a clone reads the
pins from `pyproject.toml`, which is why the source path above needs none of this.
`uv sync` installs two commands: `portfolio-optimiser` (the CLI) and `portfolio-optimiser-demo`
(the offline end-to-end proof). They are equivalent to the `python -m portfolio_optimiser.run` and