Provelume 0.9.0 “Lectio”
Pre-releaseProvelume Core 0.9.0 — Lectio release record
Lectio is the published preview for local OCR and richer document intake. S01
defined the OCR contract, S02 implemented bounded local execution and document bundles, S03
implemented provider-neutral local email identity and intake, S04 implemented replaceable
read-only Gmail/Drive adapters, and S05 implemented versioned local transcript profiles. S06 adds
cross-source qualification findings and reversible human correction overlays without automatic
merge. S07 completes the Windows shell, endpoint, EN/IT usability, accessibility, signing-truth
and release-quality contracts. Release workstream #158 aligns package, runtime, embedded and
Windows identity to 0.9.0 and publishes only through the verified exact-commit pipeline.
Machine-readable planning state
RELEASE_PLAN_SCHEMA: 1
RELEASE_STATE: PUBLISHED_PREVIEW
PLANNED_VERSION: 0.9.0
MILESTONE_TITLE: NONE
CURRENT_PACKAGE_VERSION: 0.9.0
PACKAGE_VERSION_UPDATE: APPLIED
PUBLISHED_TAG: v0.9.0
PUBLISHED_RELEASE: PRERELEASE
PARENT_TRACKER: #137
RELEASE_ISSUE: #158
RELEASE_OWNER_PR: #159
DELIVERED_SLICES: 0.9/S01,0.9/S02,0.9/S03,0.9/S04,0.9/S05,0.9/S06,0.9/S07
DELIVERED_SLICE_ISSUES: #5,#140,#143,#149,#151,#153,#155
DELIVERED_SLICE_OWNER_PRS: #138,#141,#147,#150,#152,#154,#156
CURRENT_SLICE: NONE
CURRENT_SLICE_ISSUE: NONE
CURRENT_SLICE_BRANCH: NONE
CURRENT_SLICE_OWNER_PR: NONE
CURRENT_SLICE_STATE: NONE
NEXT_SLICE: NONE
NEXT_FORECAST: 0.10.0
NEXT_FORECAST_STATE: NOT_ACTIVATED
GitHub remains authoritative for issue, pull-request and merge state.
Delivered slice — 0.9/S01
S01 established the disabled-by-default local/offline configuration, explicit modes/languages and
input limits; selected Tesseract CLI 5.5.3 behind a replaceable seam; defined capability, page
result, uncertainty, provenance/idempotency/checkpoint records; and set the optional packaging and
redistribution gates. It shipped no execution path. The completed owner records are
#5 and
PR #138.
Delivered slice — 0.9/S02
S02 is owned by #140 and
PR #141 and adds only:
- bounded PDF/TIFF/image inspection and per-page PNG staging through the replaceable
pypdfium2/PDFium/Pillow renderer seam; - a Tesseract CLI process adapter with explicit executable/version/language discovery,
shell=False, minimal environment, bounded output/time and process-tree cleanup; - deterministic
disabled,automatic,forcedandselected-pagebehavior; - Vigilia scheduler integration with exact idempotency, lease/heartbeat, page checkpoints,
cancellation, retry and expired-lease/crash recovery; - atomic, schema-versioned, checksum-bound derived OCR bundles with page text, coordinates,
confidence, warnings, source-page identity and full component provenance; - local CLI, protected loopback Browser and read-only API capability/job/bundle surfaces;
- derived removal/rebuild without Original or canonical-knowledge mutation;
- an explicit external-component manifest/BOM/notice and real-component CI smoke.
The real S02 qualification is Ubuntu 24.04 x86-64, Python 3.12, distribution Tesseract 5.x with
the local eng pack, pypdfium2 5.13.0/PDFium 153.0.7999.0 and Pillow 12.3.0. It exercises scanned
PDF, TIFF, PNG, JPEG and BMP. Every other platform, architecture, pack or version combination is
unqualified unless separately proved.
Delivered slice — 0.9/S03
S03 is owned by #143 and
PR #147 and adds only:
- an explicit disabled-by-default local email Source with separate
eml-file-v1and
maildir-cur-new-v1capability profiles, manual policy and no discovery or hidden activity; - a custom bounded exact-byte reader and snapshot/recheck boundary; Python standard-library
email.parser.BytesParser(policy=policy.default)remains replaceable andmailboxis not used
to read or delimit authoritative message bytes; - exact message Originals plus accepted attachment child Originals, with the message's
Document/Version and acquisition links and every attachment's Source/MIME-part provenance; - Source-scoped cryptographic identity and idempotency that keep
Message-ID, reply headers and
observed threads non-authoritative, retain declared-ID collisions and perform no cross-Source
merge; - a bounded schema-1
email_message_bundlefor envelope, selected body, MIME tree, attachments,
observed thread, warnings, parser/settings/limits and complete verification evidence; - Vigilia job leases, heartbeat, message/attachment checkpoints, retry/crash recovery,
cancellation, mutation recheck and atomic per-message promotion; - local CLI/service and protected EN/IT Browser controls plus read-only API views, with no HTTP
upload or remote intake endpoint; - attachment OCR eligibility as a separate observation that never starts OCR implicitly.
The qualification target is EML on Ubuntu 24.04 x86-64 and Windows Server 2025 x86-64 with CPython 3.12, plus
Maildir only on Ubuntu 24.04 x86-64 with CPython 3.12. Maildir on Windows and every other
platform/architecture combination remain unqualified; mbox is unsupported. The permanent
real-parser smoke and required repository workflows bind this qualification to the unchanged owner
head before merge.
The effective schema-1 ceilings include 32 MiB per message, 512 MiB per observed container, 500
messages and 256 MiB read per run, 512/256 KiB/16 KiB header count/block/line limits, 256 MIME
parts, MIME depth 16, nested-message depth 4, 100 attachments, 20 MiB per attachment, 30 MiB total
attachment and 32 MiB transfer-decoded output per message, 256 MiB decoded per run, 500,000 body
characters, 512 MiB temporary space, 30 seconds per message and 600 seconds per job. The full
closed table is in the English and
Italian guides.
Delivered slice — 0.9/S04
S04 is owned by #149 and
PR #150 and adds only:
- one provider-neutral ConnectorInstance for each explicit Google identity and separate Gmail and
Drive capability consent, read-only scope, enablement, revocation and reauthorization state; - explicit mailbox/label and file/folder Sources with independent lifecycle, schedule, cursor,
page fingerprints and health and no implicit cross-Source merge; - bounded Gmail raw-message reads that reuse S03 exact message/attachment Originals and removable
representations while hashing provider message/revision/thread/label observations; - bounded Drive binary reads and supported Docs/Sheets/Slides exports with exact-byte Originals,
provider-neutral file/revision evidence, origin/export formats, checksum and provenance; - Vigilia leases, checkpoint/replay, retry/rate-limit, cancellation and visible OAuth expiry,
cursor invalidation and remote-mutation failure; - service/CLI, protected EN/IT loopback Browser and read-only API surfaces for connector,
capability, Source, job, cursor, revocation and evidence state; - deterministic no-network synthetic CI, secret-absence and portable backup/export/import tests,
with the real Google claim explicitly unqualified.
The adapter REST seam uses the closed Google HTTPS allowlist and GET only. Gmail send/label/delete,
Drive update/delete/share, Calendar, IMAP/POP/SMTP, implicit OCR and provider write-back are absent.
The qualification state is local-conformance-preview and real_google_qualified=false because no
permanent authorized authenticated Google smoke is available.
Delivered slice — 0.9/S05
S05 is delivered through #151 and owner
PR #152. Lectio publishes only:
- one disabled local ConnectorInstance/Source for each explicit file or non-recursive folder and
profile configuration, with no discovery, watcher, known network selector, credential or source
write; - the closed versioned
srt-v1andwebvtt-v1UTF-8/UTF-8-BOM matrix behind parser protocol 1
and the replaceable first-partyprovelume.bounded-transcript1.0.0 implementation; - exact-byte Original capture and provider-neutral Document/Version/Acquisition, transcript,
revision and cue identity, with every filename/path/title/meeting/speaker/timestamp/provider
value retained only as a non-authoritative observation; - parser/format-free canonical revision evidence plus durable versioned derivation recipes and
checksum-bound inert cue/text bundles that can be removed and rebuilt without canonical or
Original mutation; - deterministic closed warning/error behavior for encoding, malformed cues, duplicate/overlap/
order anomalies, ambiguous/absent speaker labels, hostile markup/links and every size/count/
duration/output/deadline ceiling; - Source-confined cursor/checkpoint/resync, bounded batch/retry/cancellation/lease recovery and
atomic promotion with content-free operational evidence; - service/CLI, read-only API and protected EN/IT loopback Browser surfaces, deep validation,
backup/restore, portable export/import and permanent synthetic exact-head smoke coverage.
S05 has no plain-text or proprietary profile, provider/cloud import, audio/video intake, ASR,
diarization, AI/RAG, semantic promotion, cross-Source merge or authenticated-provider claim. The
permanent target is Ubuntu 24.04 and Windows Server 2025 x86-64 on CPython 3.12 for the two exact
profiles; a head is qualified only after both transcript-smoke jobs are positive. Every other
platform, architecture, runtime, encoding and profile remains unqualified.
Delivered slice — 0.9/S06
S06 is owned by #153 on
product/0.9-s06-cross-source-qualification with owner
PR #154, opened only after a real candidate head
existed. This published Lectio slice adds:
- a closed schema-1/version-
2026-09-01.1matrix for filesystem/document, OCR bundle, local email,
Gmail synthetic, Drive synthetic, SRT and WebVTT observations; - a replaceable
provelume.cross-source-qualification1.0.0 provider with stable typed findings,
sanitized evidence, internal object fingerprints, epistemic/confidence state and exact limits; - explicit bounded queue, batch, checkpoint, retry, cancellation, lease recovery, resync, replay,
recalculation and deterministic supersession of obsolete derived findings; - additive append-only attributed decisions for acknowledge/accept/reject/defer, distinctness,
explicit non-merging relations, derived-observation correction, supersession, withdrawal and
reversal, with optimistic concurrency and stale-reference checks; - service/CLI and protected accessible EN/IT loopback controls, an inspection-only API, deep
validation, backup/restore, portable export/import and permanent synthetic exact-head smoke.
S06 never merges Sources, Documents, Versions, Acquisitions, Originals or people; performs no
semantic deduplication/entity resolution; changes no provider object; and promotes no candidate to
verified canonical data. Gmail/Drive synthetic conformance is not authenticated provider
qualification. No network, SDK, model, AI, runtime download, remote fallback, provider write-back,
tag, release, asset, version or port change is introduced.
Delivered slice — 0.9/S07
S07 is owned by #155 on
product/0.9-s07-windows-shell-endpoint-ux. Owner
PR #156 was created only after the complete
candidate source head existed. S07 adds:
- public reproducible SVG/ICO identity across executable, installer, uninstaller, shortcuts,
taskbar, windows and native tray, plusProvelume.Desktopand truthful0.9.0metadata; - explicit unsigned-development classification and a fail-closed future signed-release verifier;
no certificate/key exists andUnknown publisheris not claimed resolved; - tray-default installed lifecycle, separate tray opt-out/login-startup choices, one child service,
labelled EN/IT native actions and controlled crash/restart/quit cleanup; - closed schema-2 external shell preferences and stable
127.0.0.1:44851default, with explicit
bounded custom port, occupied-port failure, atomic revisioned apply, known-port rollback, upgrade
preservation, reset and portable preference transfer; - read-only API inspection, protected local Browser controls, grouped navigation,
system/light/dark theme, keyboard/screen-reader semantics, forced colors, zoom/reflow and reduced
motion without remote assets or active content; - a permanent Windows shell smoke and complete deterministic four-shard Windows Core execution to
resolve the evidenced cumulative serial-test budget only when the candidate run itself completes
positively within the unchanged permanent limit.
S07 makes no API mutation endpoint, LAN/wildcard bind, firewall rule, random port, runtime download,
remote fallback, provider mutation, Instance canonical mutation, version change, tag, release or
release asset. Release preparation/publication is not part of this slice.
Stable invariants
- Originals and canonical knowledge remain authoritative and unchanged across success, error,
cancellation, removal and rebuild. - OCR text and observations remain derived, removable, rebuildable and bound to exact page and
component provenance. - Machine recognition is never presented as verified text; low confidence requires review.
- Layout, table, barcode and QR observations remain separate and empty for the baseline adapter.
- Disabled/unavailable/execution paths perform no product network access, runtime download or
remote fallback. - Partial work is resumable but never presented as a successful bundle.
- Email headers, addresses, filenames, dates,
Message-IDand thread links remain Source
observations; they do not become verified identities, contacts, facts, decisions or tasks. - Email parsing, body selection, attachment extraction, rebuild and inspection perform no network
access, active rendering, link/image fetch, attachment execution or implicit OCR. - Only bounded
text/plaincan become a derived body in S03; HTML stays in the exact message
Original and no HTML-to-text fallback is installed. - Google credential values never become durable state; only validated environment/keyring
references exist. Gmail and Drive remain independently revocable and disabled execution opens no
network connection. - Google provider identities, cursors and observations remain confined to their adapter/Source;
provider IDs never become global Document identity and no implicit cross-Source merge occurs. - Transcript profile, format, parser and filesystem observations remain outside provider-neutral
canonical revision evidence; unchanged bytes do not create a new Version or Acquisition. - Transcript markup, scripts, links, escape-like payloads and embedded references remain inert;
local profiles have no network, provider, download, source mutation or media-association path. - Cross-source findings remain derived candidates with Source/object fingerprints and sanitized
evidence; decisions are append-only reversible overlays and never rewrite the observation,
Original, Version, provider object or another Source.
Packaging and release boundary
The Provelume wheel, sdist and Windows installer include no Tesseract, Leptonica, language pack,
pypdfium2/PDFium or Pillow payload and add no OCR runtime dependency. Explicitly installed local
components are external. The S02 external-component CycloneDX record is qualification evidence,
not a release SBOM. Windows has no qualified OCR component payload.
S03 adds no runtime dependency or separately distributed parser component. The wheel and sdist add
only Provelume code and schemas; the selected email module belongs to the CPython 3.12 standard
library already used by the runtime. mailbox was evaluated but is not selected for
byte reading or mailbox delimitation. There is no provider SDK, native payload, credential, mailbox
corpus, runtime download or new release-SBOM component.
S04 adds no Google SDK dependency, provider payload or credential. It uses the standard-library
HTTP client behind a replaceable adapter and public CI uses only synthetic fixtures. The packaging
evidence distinguishes local conformance preview from real-provider qualification.
S05 adds no dependency, provider SDK, native component, codec, model or private fixture. The
first-party bounded parser uses only the CPython 3.12 standard library. Its packaging manifest and
CycloneDX development record define a permanent synthetic conformance target, not a published
release SBOM or provider qualification.
S06 adds no dependency, provider SDK, model, native component, credential or private fixture. Its
schemas, closed matrix manifest and empty-component CycloneDX development record describe the
first-party local algorithm and permanent public synthetic smoke; they are not a release SBOM or
authenticated Gmail/Drive claim.
S07 adds only first-party code, templates, public icon sources/generated ICO, installer metadata,
tests, workflows and documentation. It adds no runtime dependency. The signing verifier includes
no signing material and the Windows evidence is explicitly unsigned development evidence.
No S01/S02/S03/S04/S05/S06/S07 implementation commit created a tag, release or asset. The separate
#158 release workstream aligns package, __version__, embedded build identity, executable,
installer and uninstaller metadata to 0.9.0. Only its verified squash merge commit may become
v0.9.0 and only the permanent trusted tag path may publish assets.
Publication, installation and verification
The official release contains the wheel, sdist, unsigned Windows installer, update metadata,
release manifest, CycloneDX SBOM, build-input locks, deterministic build and independent rebuild
evidence, offline rebuild evidence, release assurance, SHA256SUMS and the offline verifier. The
manifest and checksum file enumerate the exact asset names, sizes and SHA-256 values; an asset not
listed there is not part of the qualified release bundle.
Build a local development candidate and run the offline checks with the checked-in commands:
python scripts/bootstrap.py
.venv/bin/python -m ruff check core tests scripts tools
.venv/bin/python -m pytest -q
git diff --check
.venv/bin/python -m build --outdir dist
.venv/bin/python -m scripts.verify_release_bundle --helpFor an official downloaded bundle, verify SHA256SUMS, then run
verify-provelume-release.py --expected-version 0.9.0 --expected-tag v0.9.0 --expected-commit <exact-40-character-commit> --json. Verify an installed wheel with
provelume verify-installation; passing local integrity does not independently establish GitHub
origin or an authenticated Windows publisher.
Install the wheel into a fresh Python 3.12 environment or use the per-user Windows installer.
Before upgrading, create and verify an Instance backup and separately export shell preferences.
Upgrade preserves compatible Instance and shell state. Rollback never silently downgrades schemas:
uninstall the newer runtime, install an earlier immutable official release, and restore a matching
verified backup into a separate directory. Uninstall removes runtime files and registration while
preserving launcher settings and every Instance; data removal is a separate explicit decision.
Qualification and known limitations
The release qualification contract is ../qualification/0.9.0.md.
OCR is qualified only on the documented Ubuntu/Python/Tesseract/PDFium/Pillow matrix; the Windows
installer bundles no OCR engine, language pack or native OCR payload. Google qualification is
synthetic local conformance only: real authenticated Gmail/Drive remains unqualified. Windows
executable, installer and uninstaller artifacts are explicitly unsigned. Neobeta metadata is
descriptive, Unknown publisher is not resolved, and signed mode remains fail-closed without an
authorized certificate, valid chain, expected publisher, timestamp and exact-artifact SHA-256.
No cloud OCR, new provider, runtime download, remote fallback, LAN binding, firewall rule, AI/RAG,
classification, synthesis, audio/video ingestion, ASR, diarization, Action Center, #157, S08 or
0.10.0 capability is included.
Post-Lectio forecast
0.9/S04 is completed by #149 and owner PR #150. 0.9/S05 is completed by #151 and owner PR
#152. 0.9/S06 cross-source qualification and correction findings is delivered through #153 and
owner PR #154 without publishing 0.9.0. S07 Windows shell/endpoint is implemented through #155
and its single candidate owner PR #156 without publishing 0.9.0. Action
Center, AI, RAG, vision/remote OCR and every 0.10+ capability are outside this release. Port
44851 is the preserved default. There is no S08. The next canonical forecast is unactivated
0.10.0 — Perceptio; issue #157 remains closed as not planned and owns no workstream.