Manual acceptance suite (1.0) — maintainer runbook¶
Status: executable kit for a 1.0 freeze pass
Related: release_severity_triage.md, install_verification_matrix.md, first_notebook.md, known_limitations.md
Authoritative maintainer acceptance checklist for the notebook workbench. Automated pytest is complementary, not a substitute. 0.9.0 still keys off U2 + I6; this runbook joins the 1.0 checklist in release_governance.md.
Offline steps are written so CI / # light-test can cover them. Live OCR is a
human / # deep-test step and is skipped when Ollama is down — never a
silent pass.
0. Prerequisites¶
Check |
Criterion |
|---|---|
Candidate identity |
Record package version + exact git SHA |
Clean worktree intent |
Prefer a tagged/candidate commit; note dirty files |
Disposable data root |
Do not contaminate a production projects dir |
Install profile |
Docker Compose (recommended) and/or native as claimed |
Streamlit |
Record |
1. Journey classification¶
Class |
Rule |
|---|---|
required |
Must pass for this profile, or 1.0 is blocked |
conditional |
Required when the profile claims the capability (live OCR, native GUI) |
optional |
Strongly expected when practical; skip needs reason + severity |
Skipping a required journey needs: skip rationale, severity, and evidence.
2. Ordered journeys¶
2.1 Installation and launch — required¶
Install / launch UI per chosen profile on port 8510 (never 8501).
Home loads without traceback.
Offline: python -c "import transcribe; print(transcribe.__version__)" plus
make test-smoke on the SHA. Live UI: Docker or ./transcribe.sh ui.
2.2 Import or Open sample — required¶
Offline: New notebook → Open sample, or import
tests/fixtures/mini_page.pngwith the fakeVisionOCRProvider.Library / notebook list shows the new notebook.
Do not require live Ollama for this journey.
2.3 Transcribe or pre-seeded text — required (one of)¶
Path |
When |
Class |
|---|---|---|
Pre-seeded |
Always available offline |
required |
Fake vision provider on |
Default suite / light-test |
required (offline) |
Live Ollama vision OCR |
Human / deep-test |
conditional — skip if daemon or vision tag is missing |
Live OCR skip is skipped (Ollama down), not a pass.
2.4 Review correction survives — required (offline)¶
Edit a page’s
edited_textin Review.Re-run OCR (fake or live) and confirm the human edit is still the published text.
Contract: notebook identity, original scans, and human edits survive re-OCR.
Covered in the default suite; record the pytest node id when using tests as evidence.
2.5 Analyse Quick — required (offline)¶
Run Analyse Quick (no text LLM, no heavy modules) on the sample or mini notebook.
Overview opens without crash. Missing optional extras (
bertopic) stayunavailable_extra, not a silent substitute.
2.6 Export — required (offline)¶
Export Markdown (or HTML) of the notebook.
Ignored pages stay omitted from reading formats when the export toggle is on. Reading hides the same pages unless Show ignored pages is on.
2.7 Backup verify — required (offline)¶
transcribe backup createthentranscribe backup verify <archive.zip>.Schema bumps that Transcribe cannot load refuse with a clear message; recover via backup (backup_and_restore.md).
2.8 Failure recovery — required (at least two cases)¶
Case |
Expected |
Severity if broken |
|---|---|---|
Missing Ollama when a vision/text module is selected |
Clear message; no silent hang |
must-fix |
Fake provider / mini_page import of a missing path |
Rejected; no corrupt index |
must-fix / blocker |
Optional BERTopic extra absent |
|
must-fix |
Cancelled OCR job |
Cancel acknowledged; no corrupt half-commit |
must-fix |
Exercise ≥2 cases. Offline suite already covers several; live missing-Ollama is conditional.
3. Environments¶
Env |
Notes |
|---|---|
Docker Compose (recommended) |
Port 8510, loopback bind, host Ollama |
Native (if claiming support) |
|
4. Evidence table¶
Copy one row per journey:
Field |
Value |
|---|---|
environment |
Docker / native |
package version |
|
SHA |
|
date |
|
journey id |
e.g. 2.3 live OCR |
class |
required / conditional / optional |
outcome |
pass / fail / skip |
skip rationale |
required if skip |
severity |
blocker / must-fix / known limitation / post-1.0 / — |
evidence link |
pytest node id, log path, or ticket |