AncestryLLM 0.6.0
AncestryLLM 0.6.0 advances the Astral tooling modernization, hardens the packaged desktop sidecar lifecycle, and completes the v0.6 Diátaxis documentation cutover alongside the v0.5.0 desktop foundation.
Highlights
- Packaged desktop startup now verifies an embedded-digest-bound, exact target/build payload inventory before token generation or process spawn, rejects payload and protocol/build mismatches, bounds crash retries, and supervises full POSIX and Windows process trees through shutdown. Integrity failures preserve the crash-restart budget and recover only through the separately bounded manual retry after the payload is repaired.
- Shutdown drains the currently implemented Uvicorn listener/server, stdio, sidecar process tree, and temporary launch directory. Future jobs, provider streams, and database sessions must register their own drains before their routes ship.
- The unreleased desktop source now presents a versioned, allowlisted schema for five non-secret settings with optimistic revisions and atomic owner-only publication. Its fixed bridge also provides status, set, and verified-delete credential operations while keeping values write-only in the Python OS keyring boundary. Environment-managed credentials remain read-only, and the renderer retains status rather than secret input. Packaged-runtime evidence for these new methods remains part of the Issue #131 desktop gate.
- The unreleased desktop renderer now uses a reusable responsive application shell with typed navigation, capability-gate, seven-state async, coded-error, and dialog-focus contracts. Persistent local/offline status, a keyboard destination palette, deterministic skip and focus behavior, exact-lock Chromium accessibility scans, and minimum-window 200% zoom coverage establish source-level presentation evidence without adding IPC, network, filesystem, provider, consent, or domain authority. Target-matched screen-reader and packaged accessibility evidence remains part of Issue #131.
- First-run desktop onboarding now recommends the only available mode, Local Desktop, while keeping Connect Remote and Host Remote visibly advanced and unavailable. A typed startup report checks configuration, SQLCipher, keyring, and workspace readiness without exposing secrets, paths, records, prompts, or host identity. Blocking failures preserve a read-only recovery shell; one bounded retry only rechecks state and cannot initialize a database, overwrite a key, fall back to plaintext, or open a listener. Packaged desktop secret access is keyring-only, while the documented CLI/headless environment fallback remains unchanged.
- A schema-v1 deployment-profile control plane now makes Local Desktop the explicit safe default and exposes reviewed copy, previews, confirmation-bound local recovery, diagnostics, and redacted backup/support metadata through the canonical CLI/service boundary. It never discovers a server, opens or widens a listener, starts a container, or moves genealogy data. Connect Remote and Host Remote remain visibly advanced but fail closed until their separate enrollment and host-runtime work ships.
- Electron Main now contains a deliberately unwired, schema-v1 host container-control foundation for later Local Desktop and Host Remote work. It verifies an app-owned Unix endpoint and Engine identity, ignores ambient Docker selection, validates an exact hardened Compose plan, runs bounded no-shell lifecycle commands, and reconciles only exactly labeled resources. Native macOS arm64 evidence exercises its isolated Colima lifecycle and cleanup without changing the default engine. No profile activates it, no Docker authority crosses to preload, renderer, or containers, and it is not a container-runtime availability claim.
- Diátaxis information architecture applied to the documentation navigation
and
Home.md, with clear Diátaxis mode headings in the sidebar. - Page-level SEO metadata sidecar (
docs/_data/page_metadata.json) injected into the Pages staging tree; Wiki output remains front-matter free. jekyll-seo-tagandjekyll-sitemapenabled in the Pages build.robots.txtpublished to the documentation site.- GitHub Pages workflow upgraded to
upload-pages-artifactv5, which uses the repository-pinnedupload-artifactv7 internally. docs/DOCS_AUTHORING.mdauthoring rules, Diátaxis migration inventory, and editorial baseline added.- ADR-0026 records the accepted local-container and advanced remote deployment architecture, ownership model, quantitative budgets, and threat-model gates. The profile control plane and host-only control foundation described above are implemented, but no container or remote application runtime support is added in this release.
docs/release-evidence/0.6.0/evidence directory added.- Repository setup, CI, release-readiness, release, desktop-sidecar, and
release-project proof jobs verify the pinned
uv0.12.1 release archive, executable hash, and GitHub provenance before first execution. - Sanitized schema-v1 bootstrap receipts are retained by CI and are required by
release evidence; stock-
pipwheel and sdist consumer smoke tests remain. - The former
devextra is replaced by locked PEP 735 groups for linting, typing, tests, security, builds, and release verification. Purpose-specific CI jobs synchronize only their declared profiles; provider and desktop extras retain their user-facing installation meaning. - Repository environment ownership is centralized in Make and exact
uv0.12.1 commands. A system Python 3.12-3.14 is required,.python-versionselects 3.12 by default, anduvcannot download another interpreter. - Exact
ty 0.0.69runs visibly beside strict mypy as a nonblocking advisory. Its complete-tree diagnostics, parity fixtures, timings, and suppressions are recorded in the ty advisory evaluation; strict mypy andpydantic.mypyremain the authoritative 0.6 release gate. - Ruff remains at 0.16.1 while reviewed typing, performance, modernization, and correctness rule families are enabled in separate batches. Provider-import, Pydantic-runtime, GEDCOM characterization, and startup evidence are recorded in the Ruff rule-expansion evaluation.
- A locked
uv_build0.12 candidate is evaluated reproducibly beside the unchanged production setuptools backend. Candidate outputs are internally reproducible but fail artifact equivalence because of source, license, metadata, and wheel-record drift, so adoption is rejected/deferred; the complete result is in the uv_build evaluation. - Isolated user installation now supports
uv tool install ancestryllmalongside the retained pipx and ordinary pip consumer paths. - Exact-commit upstream Ruff and uv hooks replace the former local wrappers,
while local gitleaks and canonical pre-push gates remain. The complete
dependency audit proves parity between
uv export --locked --all-extras --all-groupsanduv.lock, and every tracked Markdown file receives the same GFM validation. - Checked-in VS Code settings use Ruff for linting and formatting without
unsafe fixes. Because the 0.6 ty evaluation did not pass every cutover gate,
mypy editor ownership and strict
pydantic.mypychecking remain authoritative.
Documentation
Upgrade notes
Developer and release tooling now uses the verified repository-local uv
bootstrap and purpose-specific locked groups. Contributors must install a
supported system Python and run make setup; the repository will not download
Python or accept a different uv, and the former .[dev] installation path is
no longer supported.
No genealogy, provider-consent, storage, or public API contract has changed.
The CLI adds the deployment command family for profile copy, status, preview,
explicit local recovery, diagnostics, and redacted evidence. The private
loopback API and fixed Electron bridge add the versioned settings and write-only
credential-management operations described above; packaged Electron sidecar
startup and shutdown are hardened as described above.
Project-produced 0.x binaries remain unsigned. The sidecar manifest detects payload substitution relative to the built Electron main process; it is not a publisher signature or whole-application protection. Issue #132 owns publisher signing and notarization for v1.0.0. Verification and process spawn remain separate filesystem operations, leaving a narrow local time-of-check/time-of-use replacement residual. The macOS CI verification overlay preserves the exact manifested payload bytes by excluding only the sidecar resource tree from Electron’s second ad hoc signing pass; PyInstaller’s nested signatures remain intact and the outer application signature still seals the resource tree.
No GEDCOM, provider execution or consent, storage, application-container, or remote-hosting behavior has changed. Selecting a default-provider setting neither activates a provider nor grants cloud consent. Deployment profile selection is now an implemented fail-closed control-plane constraint; the unwired host supervisor is a reviewed future-runtime foundation. Neither is a container or remote-runtime availability claim.