Skip to content

v1.2.2

Choose a tag to compare

@FFidan FFidan released this 01 Aug 08:59
· 6 commits to main since this release
af13f0f

v1.2.2 — Derived-data integrity, honest job outcomes, and a hardened update path

A patch release that makes content derived from a replaced source document follow that replacement everywhere, keeps each account's analysis results private, makes long-running jobs report what actually happened, and rebuilds the update path so installations on every supported release upgrade safely.
This release includes four automatic migrations (0107 through 0110); they apply on startup and need no operator action.
This release changes application code, so the :1.2.2 images differ from :1.2.1.

Fixed

  • Content derived from a replaced source document. Promoting a paper to shared visibility discards the processed content of the source it replaces and reclaims its stored files and vectors. Excerpts, PDFs and page images are served only while a current stored record backs them, and summaries, extractions and other machine-generated evidence from an earlier source no longer appear as current. User notes, spatial highlights and flashcards are retained but visibly marked stale, and are excluded from study, Anki export and Zotero export until regenerated.
  • Contradiction and consensus privacy. Holding the same papers as another user no longer reveals that user's contradiction results or their consensus assessment. Each account's scan records and returns its own rows; migration 0110 preserves all existing records.
  • Requester-scoped processing. Flashcard generation reads only the requesting user's own summary, rebuilding a shared paper's derived content requires holding that paper, and background-generated related papers draw only from shared papers — a private paper may therefore show fewer automatic suggestions.
  • Zotero sync. Attachments, notes and annotations no longer create placeholder papers, an import without a PDF no longer queues analysis that cannot run, and each sync reports parse failures, temporary failures, exhausted retries and deferred work. An incomplete poll reports a partial outcome rather than unqualified success.
  • Honest batch outcomes. A cancelled batch reports its cancellation with completed, skipped, failed and remaining counts, a batch with skipped or failed work reports a partial outcome, and a failure part-way through saving search results identifies what was saved. A consensus view built from a truncated evidence set says so, and claim topics written in any script cluster by their actual text.
  • Answers across your library. Papers whose stored content is no longer available are set aside before an answer chooses its sources, so they no longer take a place from a relevant paper. Similar-paper suggestions, discovery results and citation graphs apply their visibility and stored-content checks before result limits.
  • Pulse relevance. A thumbs-down now hides that paper from future decks for 60 days at the deck sizes people actually use. Decks may therefore look different for anyone with recent thumbs-down history.
  • Scheduled discovery. Each topic is searched with its configured query terms rather than its name alone.
  • Startup and input validation. Database credentials containing special characters connect correctly, database hosts and ports are validated before a connection is attempted, request fields are bounded to the width of the column that stores them, and an instance starting while another holds the migration lock verifies the resulting schema before serving.
  • The update path. Installations on v1.1.3, v1.2.0 or v1.2.1 load the v1.2.2 lifecycle command with a one-time bootstrap, so the target command recognizes the current backup and recovery state before the checkout advances. Before a data-changing migration the updater creates and authenticates a complete restore point covering both databases, uploaded PDFs and data-coupled secrets, and an interrupted update leaves a durable transaction record it resumes from when re-run. Setup and updates wait through a service's recoverable starting states for the stated timeout, and an update records its new application version only after every required service reaches an acceptable state.

Changed

  • Corrected operator and user documentation to match current behavior: the headless restore request in the recovery runbook now carries the identity fields the restore entrypoint requires, and install guidance derives its default models and 27-54 GB disk range from the same selectors and calculator used by setup.

Upgrading

Every installation upgrading to this release runs the one-time bootstrap from the installation directory:

(
  set -e
  bootstrap="$(mktemp)"
  trap 'rm -f "$bootstrap"' EXIT
  curl -fsSL -o "$bootstrap" \
    https://raw.githubusercontent.com/limitcycle-oss/jarvis-rd-assistant/v1.2.2/scripts/update-bootstrap.sh
  bash "$bootstrap" --repo "$PWD" --to v1.2.2
)

The bootstrap validates the selected release, creates and authenticates a restore point, stages the new images, advances the checkout fast-forward only, and commits after services report healthy. Because this release migrates data, rolling back to an earlier version afterwards requires a matching database restore.

Full changelog: CHANGELOG.md