Goal
A new operator should be able to go from git clone to running mpi search and mpi queue list against the fixture corpus in under 5 minutes, without reading the existing per-area design docs. Today the README is policy-heavy and the CLI fails opaquely if the DB or fixture corpus is missing.
This is R3 of six release milestones (R1–R6) leading to v0.1.0.
Evidence
README.md documents a venv install but no curated walkthrough of the operator workflow (search → queue → export).
src/mailplus_intelligence/cli.py:11 defaults --db to :memory:, so cold-start state isn't preserved between commands and the user can't actually approve and re-inspect anything without specifying --db <path>.
cli.py has no top-level try/except around DB connect, fixture load, or extractor runs — exceptions surface as raw tracebacks.
mpi doctor (per src/mailplus_intelligence/doctor.py) reports check status but doesn't print actionable next steps when a check is gated/failed.
Acceptance criteria
Quickstart
CLI ergonomics
Doctor improvements
Tests
Definition of done
- A teammate (or anyone) can follow
docs/quickstart.md start to finish on a fresh clone with no prior context.
- All acceptance criteria boxes checked.
bash scripts/ci/run-fast-checks.sh green.
Goal
A new operator should be able to go from
git cloneto runningmpi searchandmpi queue listagainst the fixture corpus in under 5 minutes, without reading the existing per-area design docs. Today the README is policy-heavy and the CLI fails opaquely if the DB or fixture corpus is missing.This is R3 of six release milestones (R1–R6) leading to v0.1.0.
Evidence
README.mddocuments a venv install but no curated walkthrough of the operator workflow (search → queue → export).src/mailplus_intelligence/cli.py:11defaults--dbto:memory:, so cold-start state isn't preserved between commands and the user can't actually approve and re-inspect anything without specifying--db <path>.cli.pyhas no top-leveltry/exceptaround DB connect, fixture load, or extractor runs — exceptions surface as raw tracebacks.mpi doctor(persrc/mailplus_intelligence/doctor.py) reports check status but doesn't print actionable next steps when a check is gated/failed.Acceptance criteria
Quickstart
docs/quickstart.mdwalks through:pip install -e .(or post-R2:pip install mailplus-intelligence)mpi doctorto confirm fixture corpus and schemampi --db ./mpi.db sync …(or fixture-corpus seed command, see below) to populate fromfixtures/mailplus_metadatampi --db ./mpi.db search --keyword …mpi --db ./mpi.db thread <key>mpi --db ./mpi.db queue list→queue approve <id>→queue inspect <id>mpi --db ./mpi.db export --output ./out(and explanation that this is dry-run only — see R4)README.mddirectly under the "Recommended starting point" section.CLI ergonomics
mpi seed --from-fixtures <dir>(or wire the existingsync_from_fixture_corpushelper into the CLI) so the quickstart doesn't require Python invocation to populate the index.try/exceptthat catchesFileNotFoundError,sqlite3.OperationalError,LiveAdapterNotConfigured, and the newLLMNotAvailable(from R2), printing a single-line actionable error and returning a non-zero exit code.--db :memory:(the current default) prints a one-line warning that approvals/state will not persist; recommend a path.mpi --versionprints package version (sourced fromimportlib.metadata).Doctor improvements
DoctorCheckincludes anext_stepstring surfaced in the human-readable report ("To enable LLM extraction, runpip install 'mailplus-intelligence[llm]'", "To enable live MailPlus, set MAILPLUS_HOST/USER/TOKEN", etc.).mpi doctor --jsonschema documented in the doc page (one line per check).Tests
mpi --version.mpi seedpopulates a fresh DB andmpi searchreturns expected fixture rows.Definition of done
docs/quickstart.mdstart to finish on a fresh clone with no prior context.bash scripts/ci/run-fast-checks.shgreen.