Standalone CrumbLLM analysis package + ecosystem cleanup (free crumb_llm name)#36
Standalone CrumbLLM analysis package + ecosystem cleanup (free crumb_llm name)#36slavazeph-coder wants to merge 3 commits into
crumb_llm name)#36Conversation
…_llm name Introduce a clean, self-contained crumb-llm/ package (package crumb_llm, CLI crumblm) that reads CRUMB files and packs and produces summaries, risks, next actions, and improved handoffs. It depends on crumb-format for parsing/ validation, contains no spec code and no IBM Bob logic, never trains by default, stores no secrets, and gates every result with quality checks (JSON validity, hallucinated-path detection, generic/empty answer detection). Providers are adapters behind one BaseProvider.generate() interface: OpenAI, Anthropic, Ollama, LM Studio, an experimental scratch model (cannibalized from FareedKhan-dev/train-llm-from-scratch, opt-in, torch-gated), and a default offline mock so the package works with no keys. Ecosystem cleanup: the existing physics/wave-field LM squatted on the crumb_llm import name (and shipped inside the crumb-format distribution), which collided with the new product. Rename it crumb_llm -> crumb_wavelm and repoint the `crumb llm` sub-CLI, MCP wiring, scripts, Docker entrypoint, configs, tests, and the standalone generator. Adds docs/CRUMB_ECOSYSTEM.md describing the three-repo separation (crumb-format / Crumb-Bob / CrumbLLM). Acceptance: pip install -e . works; crumblm --help works; crumblm analyze examples/basic.crumb works with the default provider; 24 package tests pass; no Bob-specific logic in core modules; no models/checkpoints/datasets committed.
|
| Risk | Type | Path | Detail |
|---|---|---|---|
| 🟠 HIGH | ai_dependency | crumb-llm/pyproject.toml |
AI SDK dependency: openai |
| 🟠 HIGH | ai_dependency | crumb-llm/pyproject.toml |
AI SDK dependency: anthropic |
Full text report
Shadow AI Scan Report
Scanned: /home/runner/work/crumb-format/crumb-format
Date: 2026-05-29 17:59:49
Total findings: 2
HIGH : 2
------------------------------------------------------------------------
[HIGH]
ai_dependency crumb-llm/pyproject.toml
AI SDK dependency: openai
ai_dependency crumb-llm/pyproject.toml
AI SDK dependency: anthropic
CRUMB Bench Results
Powered by crumb-format — two-stage context compression |
…llback The version/banner operator commands resolved their version from installed package metadata, returning "dev" in source-checkout CI (the validate job runs without `pip install`). Meanwhile two TestCliVersion tests still asserted the older 0.4.0 string, so CI was red on main independent of any feature work. Fall back to the canonical CLI_VERSION (1.1.0) when the package isn't installed so `crumb version` and the banner are stable across environments, and update the two stale assertions to 1.1.0.
|
Superseded — CrumbLLM now lives in its own standalone repository: https://github.com/XioAISolutions/CrumbLLM (released as The standalone package no longer depends on Closing this PR to keep a single source of truth in the CrumbLLM repo. The Follow-up for whoever prepares Generated by Claude Code |
What this is
A new, self-contained CrumbLLM package — the local/cloud AI engine that reads CRUMB files and packs and produces summaries, risks, next actions, PR notes, and improved handoffs — plus the ecosystem cleanup needed to make it viable.
It lives in
crumb-llm/(packagecrumb_llm, CLIcrumblm) and is ready togit subtree splitintoXioAISolutions/CrumbLLM(my GitHub access was scoped tocrumb-format, so I couldn't push there directly — split command below).Product boundaries (all enforced)
crumb_llm/crumb/parser_adapter.py..crumbfiles (no Bob coupling).confirm=True) and torch-gated.setupstores only provider/model/base-url; keys come from env vars at call time.ollama/lmstudio) or the built-in offlinemock(the default).Providers
BaseProvider.generate(prompt, max_tokens, temperature)with adapters: OpenAI (OPENAI_API_KEY), Anthropic (ANTHROPIC_API_KEY), Ollama (http://localhost:11434/api/generate), LM Studio (http://localhost:1234/v1), experimental Scratch (fails gracefully without torch/checkpoint), and a defaultmock. Cloud/local HTTP uses stdlib only — no SDK required.Quality gates (never silently trust output)
JSON validity when JSON is requested · hallucinated-path detection vs. source CRUMB paths · generic/empty-answer detection. All surfaced via
AnalysisResult.warnings.Training (cannibalized from FareedKhan-dev/train-llm-from-scratch)
export_dataset(jsonl),prepare_sft(instruction/response + EOT, optional tiktoken),train_scratch(tiny decoder-only GPT + AdamW). Experimental, opt-in, no artifacts committed.Ecosystem cleanup (the real "messy responsibilities" fix)
The existing physics/wave-field LM squatted on the
crumb_llmimport name and shipped inside the crumb-format distribution (requiring torch on import) — it would have collided withpip install crumb-llm. This PR renames itcrumb_llm→crumb_wavelmand repoints thecrumb llmsub-CLI, MCP wiring, scripts,Dockerfile.crumb-llm, configs, tests, and the standalone generator. Seedocs/CRUMB_ECOSYSTEM.mdfor the three-repo separation (crumb-format / Crumb-Bob / CrumbLLM) and remaining follow-ups.Acceptance criteria
pip install -e .works (deps resolve once crumb-format ≥1.1.0 is on PyPI; locally use the editable monorepo install)crumblm --helpworkscrumblm analyze examples/basic.crumbworks with the default provider.gitignoreblocks them)Test status
TestCliVersion) are pre-existing and unrelated — they assertCRUMB 0.4.0whilepyprojectdeclares1.1.0;test_crumb.pyis untouched by this PR.Splitting into XioAISolutions/CrumbLLM
🤖 Draft PR — opening for review.
https://claude.ai/code/session_01XNRzdaAb47vAm3UWVPDXyg
Generated by Claude Code