Skip to content

Release blocker: Ollama support gaps found in 0.1.1 regression (B1-B2, H1-H3) #156

Description

@himanshu231204

Context

End-to-end regression against a live Ollama daemon (issue #11 GPU/CPU work merged in PR #155) ahead of the 0.1.1 release ("full production-level Ollama support"). Unit 109 passed, integration 3 passed, e2e 16 passed, ruff/mypy/format clean — but manual exercise of the public surface surfaced blocker bugs.

Blocker bugs (must fix before 0.1.1)

B1 — Cannot load/info/install any model not in the bundled catalog

LifecycleOrchestrator.load() (src/modeldock/core/lifecycle.py:61-62) and ModelManager.info()/install() validate every name against BundledRegistry, which only knows catalog entries (codellama, llama3, ...). A model already installed locally (llama2:latest, mistral:latest) is rejected with ModelNotFoundError.

  • md.load('llama2:latest') -> ModelNotFoundError
  • md.info('llama2:latest') -> ModelNotFoundError
  • modeldock load load llama2:latest -> same
  • modeldock info llama2 -> same
  • md.update('llama2:latest') -> same

A user who pulls a model outside ModelDock can never manage it. Fix: fall back to the runtime's installed refs when the catalog lookup misses.

B2 — cache.path() returns the literal string "<cache>"

CacheService.path() (src/modeldock/core/cache.py:36-39) calls get_record("__none__") and falls back to "<cache>". CachePort has no path() method (src/modeldock/ports/cache.py) and FilesystemCache never exposes _cache_dir. So md.cache.path() and modeldock cache path both print <cache>. Broken API.

High-severity

H1 — load() silently ignores the backend argument

src/modeldock/__init__.py:56-58: the if backend is not None: branch is dead — both branches call _manager().load(name, auto_install=auto_install) and never pass backend. Same dead-branch pattern in install/update/remove/verify (they take backend but ignore it).

H2 — SDK has no run() export

ModelManager.run() exists and modeldock run (CLI) works, but modeldock.run is missing from __all__ (src/modeldock/__init__.py). Public SDK surface is inconsistent with the CLI and the documented API in CONTEXT.md.

H3 — info() installed-tags feature (issue #10) is effectively dead

info() intersects installed refs with the catalog name, but the bundled catalog and locally-installed models share no names (catalog: codellama/llama3; installed: llama2/mistral/cloud). installed_tags is always [] for real installed models.

Medium / edge-case

  • M1remove() on a cloud model (tag contains cloud) is slow / can hang (>60s) before 404ing; should short-circuit with a clear error.
  • M2update() does remove() then pull() with no confirmation / size guard; re-downloads gigabytes.
  • M3FilesystemCache.clean() looks for {name}.bin artifacts that are never written, so it would wipe all manifest entries; cache manifest is also never populated by the Ollama flow (unreachable due to B1).
  • M4 — Version not bumped: __version__ and pyproject.toml still 0.1.0; need 0.1.1.

What works

installed(), list(), search(), categories(), recommend(), CLI run (streams tokens), GPU/CPU device detection (issue #11, integration test passes live), verify(). Quality gates clean.

Recommendation

Do not release 0.1.1 until B1 + B2 are fixed (small, well-scoped: catalog fallback + a path() on the cache port/adapter) and H1 + H2 are addressed. Then re-run the regression and bump to 0.1.1.

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions