Found during the 2026-07-25 full-repo review. Filed for the record — not proposed for action right now.
Status: intentionally deferred
pyproject.toml declares exactly one runtime dependency (chonkie>=1.0). Undeclared but required at runtime: sift-kg, kreuzberg, pydantic, networkx, pyyaml, httpx, fastapi, sse-starlette, and more.
This is already documented in the file's own header comment, which states that declaring the full dependency graph is "a future migration (post-v3.0)" and that uv pip install -e . alone "will NOT produce a working install". That is a deliberate decision, and this issue does not argue against it.
Why it is still worth recording
The same file also declares a console entry point:
[project.scripts]
epistract = "epistract.cli:main"
So uv pip install -e . does not fail cleanly — it produces an installed, importable, broken CLI. A user who installs the package the conventional way gets a command that exists and then fails at import time on the first heavy dependency, rather than an error at install time telling them to run scripts/setup.sh.
That interaction between the partial dependency declaration and the advertised entry point is the part worth revisiting when the deferral is lifted.
Possible resolutions, for whenever this is picked up
- Declare the full runtime dependency set (the documented eventual plan).
- Keep the partial declaration but move the heavy imports behind a lazy path in
cli.py, so the CLI's stdlib-only subcommands work and the rest fails with an actionable message.
- Add an
[project.optional-dependencies] extra (e.g. pipeline) so uv pip install -e ".[pipeline]" is a supported, discoverable path.
No action taken pending a decision on which of these is wanted.
Found during the 2026-07-25 full-repo review. Filed for the record — not proposed for action right now.
Status: intentionally deferred
pyproject.tomldeclares exactly one runtime dependency (chonkie>=1.0). Undeclared but required at runtime: sift-kg, kreuzberg, pydantic, networkx, pyyaml, httpx, fastapi, sse-starlette, and more.This is already documented in the file's own header comment, which states that declaring the full dependency graph is "a future migration (post-v3.0)" and that
uv pip install -e .alone "will NOT produce a working install". That is a deliberate decision, and this issue does not argue against it.Why it is still worth recording
The same file also declares a console entry point:
So
uv pip install -e .does not fail cleanly — it produces an installed, importable, broken CLI. A user who installs the package the conventional way gets a command that exists and then fails at import time on the first heavy dependency, rather than an error at install time telling them to runscripts/setup.sh.That interaction between the partial dependency declaration and the advertised entry point is the part worth revisiting when the deferral is lifted.
Possible resolutions, for whenever this is picked up
cli.py, so the CLI's stdlib-only subcommands work and the rest fails with an actionable message.[project.optional-dependencies]extra (e.g.pipeline) souv pip install -e ".[pipeline]"is a supported, discoverable path.No action taken pending a decision on which of these is wanted.