Skip to content

Provelume 0.9.0 “Lectio”

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Sep 00:44
· 74 commits to main since this release
e08125a

Provelume 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, forced and selected-page behavior;
  • 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-v1 and
    maildir-cur-new-v1 capability 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 and mailbox is 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_bundle for 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-v1 and webvtt-v1 UTF-8/UTF-8-BOM matrix behind parser protocol 1
    and the replaceable first-party provelume.bounded-transcript 1.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.1 matrix for filesystem/document, OCR bundle, local email,
    Gmail synthetic, Drive synthetic, SRT and WebVTT observations;
  • a replaceable provelume.cross-source-qualification 1.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, plus Provelume.Desktop and truthful 0.9.0 metadata;
  • explicit unsigned-development classification and a fail-closed future signed-release verifier;
    no certificate/key exists and Unknown publisher is 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:44851 default, 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-ID and 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/plain can 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 --help

For 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.