Skip to content

chore(release): bump version to 2.0.0 - #6928

Merged
LearningCircuit merged 3 commits into
mainfrom
release/v2.0.0
Oct 18, 2026
Merged

LearningCircuit merged 3 commits into
mainfrom
release/v2.0.0

Conversation

@LearningCircuit

@LearningCircuit LearningCircuit commented Sep 27, 2026 •

Copy link
Copy Markdown
Owner

Set src/local_deep_research/__version__.py, package.json and the npm lockfile root to 2.0.0. The FastAPI/Uvicorn migration changes HTTP, authentication, Socket.IO, deployment and database behavior, so this is a SemVer major release. The code diff remains limited to those three version files.

Merge this PR last. The release is not yet qualified. Merging the version change starts the automated release pipeline. The release owner performs the individual PR merges.

Each selected fix must land through its focused canonical PR targeting main. #6929 is reference material only; do not accumulate or publish further fixes there. Its historical component tests do not qualify current main or the final 2.0.0 artifacts. Preserve contributor ownership and compare current main and existing PRs before carrying any still-missing change forward.

Current evidence — October 15–16

The October 15, 22:09 UTC (October 16, 00:09 CEST) inventory snapshot contains 222 open PRs and 887 open issues. It includes new #7441–#7450 and the additional main merges listed below. No new issues were opened after the preceding 21:48 UTC snapshot. Related task conversations, PR discussions and the #7199 backup acceptance were read. This is scope triage and remote-state reconciliation, not a claim that every current diff has passed adversarial review.

Tracker #7137 retains the earlier scope decisions but its checkboxes are stale. At the earlier reconciliation, 123 of 167 referenced PR entries were merged, 41 were open and 3 were closed without merging; 95 unchecked entries were already merged. Those open entries included old sources, alternatives and holds, so they did not represent 41 independent required merges. The source map below reconciles those distinctions without dropping selected behavior.

Release behavior and upgrade requirements

The release moves the web application to FastAPI/Uvicorn and carries database revisions that v1.10.7 does not understand. It includes library identity/retry/indexing corrections, recoverable encrypted backups, stronger settings contracts, safer frontend rendering, search/report improvements and metrics that preserve research ownership and caller transactions. Some selected follow-ups below remain open; the final release notes must describe only what actually lands.

Already-landed behavior includes:

Before upgrading from v1.10.7, follow the upgrade/rollback guide and reverse-proxy guide:

  1. Stop the application and take a verified offline backup of data, configuration and external library/index locations. Preserve matching database/salt material. Automatic retention is not a substitute. Rollback requires the old application and pre-upgrade data; never start v1.10.7 against upgraded databases.
  2. Preserve existing library locations, including the shipped ~/Documents/LocalDeepResearch/Library default. The path is operator-managed. Changing its deployment override does not move files and applies across accounts; docs(settings): name the library path variable the code reads #7391 corrects the configuration reference and upgrade wording.
  3. Run one Uvicorn process. For TLS termination, enable TRUST_PROXY_HEADERS, restrict LDR_SERVER_FORWARDED_ALLOW_IPS to actual trusted proxies and isolate the backend. Update custom Socket.IO clients/proxies to /ws/socket.io.
  4. Expect users to sign in again. Queued background work waits when its session expires; already-running research may finish. Missing or unreadable persistent session keys stop startup.
  5. Update clients for CSRF headers and 403 failures, ISO dates, 422 malformed numeric path parameters and the documented news/context-overflow contracts. Model-cache refresh and indexing actions use POST with CSRF protection.
  6. Correct invalid saved settings and environment overrides before upgrading to strict settings reads. Preserve optional defaults and explicit inheritance of per-engine time periods. Supported news refresh intervals are 1–10,080 minutes.
  7. Automatic reads from the ambiguous old shared PDF root are removed. Existing files remain; use the guide's owner-verified recovery process. Assisted migration remains future work (Library resource_id collides on disk: a per-user helper exists but ~8 call sites bypass it #5521).

Verify login, saved settings, research completion, reconnects, library search/indexing and restart behavior before retiring backups.

Selected work still requiring resolution

These are release requirements or selected changes, not blanket merge recommendations. Preserve each canonical PR, review its current diff and discussion, resolve overlaps, and validate against current main. Draft PRs remain held. A green check does not replace review of a newer revision.

Area Canonical work and acceptance requirement
Settings and inherited search periods #7288, #5588. #7288 is conflict-free after the 1f6575dd344b push, including main through 3d626c2a4 and the reviewed bulk-save atomicity correction. Local settings/API/proxy/upgrade, persistence, HTTP, frontend and negative-control checks passed; current hosted full pytest remains pending. Invalid configured managed values/type metadata must raise explicit safe errors; absent optional settings, repair exports and documented environment bypasses remain supported. In-memory imports must not partially apply failed conversions; startup must not hide invalid scheduler settings. Preserve global inheritance and operator-only locations.
Saved news scheduling #6919 remains open; its reviewed correction and main synchronization are pushed at 2b8312a1a876, with fresh full CI pending. Reject invalid saved subscription intervals before trigger creation, manual/overdue dispatch and schedule advancement; preserve valid rows in the same batch and give users a repair path. Qualify this with merged #7078's legacy migration.
Background subscription model dispatch #7444, pushed at 378c1b5f6bcd, is the focused canonical correction. Forward explicit providers through the existing runtime overlay and normalize empty optional stored provider/model fields to inherit current settings. Actual scheduled dispatch through committed subscriptions, worker context and real provider policy is covered. Validation passed 796 affected tests with one skip, 32 new regressions included, plus 16 offline integration checks; discriminating baseline controls and independent review passed. Full pytest is requested and incomplete; the current OSV check fails. This is separate from #7228's creation/Run Once decoding fix and #7363's worker authentication context.
Backup failure status #7199 → #7443 supplies the remaining user-visible failure status; merged #7032 covers the filename-collision requirement. Select persistent, owner-scoped failure reporting for backup acceptance: an old backup must not conceal a later failure, a successful new backup clears the warning, and reporting failures must not change backup results. Native Windows SQLCipher checks for Python 3.12 and 3.14 failed at 6c828c02a478. The test-pool cleanup correction is pushed at 91a70ae7c7cb; the native Windows workflow now passes on Python 3.12 and 3.14 at that head. Full pytest remains incomplete. Current OSV and FastAPI migration-quality checks fail; the latter reports the backup-status endpoint's bare-dict exception response and its changed reachable-status contract. Resolve these failures against the intended response contract before readiness sign-off. This does not supply live restore or replace upgrade/rollback rehearsal.
Report and fetch-summary budgets #6800 (draft), #7313. Qualify context budgeting with the selected model and preserve SettingsValueError propagation when composed with #7288 and merged #7194. #7313's current context/output-budget revision d48f0529b21f awaits full pytest. #6800's custom-model budget correction is pushed at 5dd175604bfc; its task reports full-diff/conversation/affected-code review clear and 1,133 local passes with two existing xfails. Current hosted CI remains pending and its draft hold remains.
Rekey, credentials and sessions #6662/#6750/#6752/#6935, #6440/#6688/#6712/#6675. Preserve coordinated login/logout/rekey cleanup, durable epochs, correct credential lifetime, newer sessions/sockets and fail-safe cleanup. Resolve the actual overlap and dependency order before main-targeted qualification; do not merge every source blindly. Several remain drafts.
Login and model refresh #7133. Preserve external-link login and asynchronous discovery cancellation while CSRF-protecting model-refresh writes. The ordinary-GET cache-write correction and composition with merged #6926's cancellation handling are pushed at 80ef0d625c24. The branch is conflict-free; fresh hosted full pytest is pending. Local browser checks are reported passed; final browser/artifact qualification remains a release gate. Merged #7135 supplies the upload/WAL-snapshot companion behavior.
Library identity and index lifecycle #7201, #6917, #7083. Preserve identity-qualified tracker history, canonical text/provenance, PDF snapshots, intentional text-only completion and intentionally removed PDFs. Keep old search/index visibility until a successful rebuild; retain admission/cancellation checks, transaction ownership and the collection lock through retirement cleanup. Parent #7068 and retry/sync fixes #7202/#7229/#7246/#7307 are already on main.
Collection upload persistence and recovery #5680/#5681 → #7446, pushed at 82b7394c41a0, is the canonical follow-up to merged #5495/#7135. Select its confirmed-storage/error/indexing recovery behavior for library acceptance. Preserve committed files and collection links after partial request failure, report PDF-storage failures, admit newly linked PDF upgrades and recover already-stored unindexed content without duplicates. Keep parsing outside an open database snapshot, per-file SAVEPOINT isolation and indexing admission protections. Its task reports 335 focused Python passes, 17 browser passes and real SQLite/SQLCipher/FAISS recovery controls, with regressions against main. Current hosted CI and final affected-code qualification remain required. Storage, queue admission and completed indexing are separate outcomes.
Metrics transactions #7227 is merged into main; #7107 is its overlapping source, not another required merge. Preserve merged #7052/#7053/#7087/#7088 and #7283–#7286. Telemetry must never commit or roll back its caller's work or mix research owners; preserve that contract in final integration and upgrade qualification.
Local embedding lifecycle #7263, independently of Auto Research. Reuse weights while keeping inference facades isolated; preserve artifact-change detection, cycle-safe directory traversal, nonblocking cache clearing and eventual cleanup.
Frontend and HTTP contracts #5632, #7089. Preserve supported Markdown/math/tables, URL restrictions, theme/lifecycle behavior and JSON error envelopes. Qualify real browser flows with the merged #7050/#7051/#7055/#7057/#7146 changes; #7049 overlaps #7146 and must not be applied twice.
Egress, logging and proxy identity #7106 remains selected; #7143 is merged. Reconcile #7142 with already-merged #3139/#6541/#6996/#7072/#7156: its task's source review reports the selected behavior already on main, so verify residual coverage before counting another merge. Retain transport/disclosure boundaries and trust only the configured proxy chain. #4870 is #7143's related source, not another independent requirement.
Parser isolation and output bounds Contributor #6545 remains canonical for #6360; existing owned #7147 is an unresolved overlapping alternative. Continue review without taking over contributor work. #7248 remains selected for compatibility/source qualification and security review; retain merged extraction limits.
Path containment #6883 is merged. Reconcile the non-library portions of #5769 with that delivered behavior and qualify any still-missing work. The library-path clamp in #5769 conflicts with the approved preserved-location policy and is held. A broader containment issue does not authorize silently relocating user libraries.
Search cleanup and archive access Preserve the selected #6915 → #7310 → #7317 sequence. #6915 is merged; review and qualify the latter two against main in order. This supersedes the historical #7081 restoration choice.
Current scanner findings #7377 covers the two Bearer findings; #7400 covers the Gitleaks/DevSkim false-positive dispositions. Require the scoped changes to land, then inspect fresh reports and indexed alerts. The unstructured OSV finding needs a dependency/compatibility disposition; existing #7379 changes the application lockfile and currently fails full pytest. The six Scorecard findings still match current main; #7450 fixes the two Towncrier tool installs and awaits current full CI, merge and fresh scan evidence. Preserve consumer-resolution tests while addressing the other four findings. Semgrep bumps #7342/#7350 both retain vulnerable MCP 1.29.0 and do not resolve the two tool alerts. Keep the official Python image gate separate.

Library acceptance must also retain the qualified retry distinctions: completed stored PDFs still repair tracker/queue/collection state while reusing canonical storage; the missing-PDF refill exception must coexist with rejection of conflicting regenerated bytes before mutating either document or tracker. Uploads without provenance must extract their own PDF, and a refused new snapshot must not borrow an unrelated snapshot's text. Accepted text improvements must remain pending across restarts until indexed, including bulk, parallel, direct-batch and scheduled selection. Preserve collection/source/model/provider selection, decorated-URL history without rewriting stored hashes, and rejection of unsupported remote-vector rebuilds before database work.

At the 22:09 UTC snapshot and follow-up mergeability checks, #5632 ea96af0296f8, #7201 c5ba09836579, #7083 b9e6b8066937, #7322 14c1d1ba156c, #7327 6cddd4d4bb0f, #7378 81e5f081eb90, #7391 abcf846f75a1, #7397 eb4a6db53e27, #7400 547eef66e984 and #7363 45a57de485a3 have successful recorded full pytest and no failed/pending checks on those heads, with no conflicts on the latest checks. Approval remains necessary. These recorded passes do not resolve newer dependency/pinning alerts or qualify final main. #6752 ef924d24e628 also has recorded passing full pytest but retains its draft hold and overlap/dependency review. #7288 1f6575dd344b and #7133 80ef0d625c24 have had their conflicts corrected and await fresh full validation. #7288's local checks include 1,952 settings/API/configuration tests with 13 existing xfails, 327 persistence/security tests with one existing xfail, eight new HTTP/SQLite regressions, final diagnostic controls and 91 frontend tests across 17 suites. Independent review found no remaining blocker after the integer composition and bulk-save correction; local checks do not substitute for hosted full pytest.

Full pytest is queued for #6917, #7313, #7089, #7106, #7310 and #7441; #7377 is now running full pytest. #6919 2b8312a1a876, #7444 378c1b5f6bcd, #7443 91a70ae7c7cb, #7317 6ad643e24c74, #7446 82b7394c41a0, #7450 1d32fd40184b and the other selected pushes still await complete current validation. OSV checks now fail on #7228, #7310, #7317, #7330, #7441, #6662, #7443 and #7444. #7443 also fails two migration-quality guards on the backup-status response contract; passing native Windows SQLCipher jobs do not clear those failures. #7263 has both a recorded full pass and later image/full-check failures with a replacement run pending; it is held until the resulting required checks succeed. #7318, #7227 and #7323 are merged, not pending PR validation. The #6986 task also reports its main conflicts resolved at 0c8614792320, with current CI pending; that synchronization supplies no runtime-image waiver.

The new scanner findings have the following source dispositions at main 15a4b89aebd0:

  • Scorecard alerts 9735 and 9734 are the two unhashed Towncrier tool installs in release.yml. The other four are intentional fresh-resolution installs of the wheel, extras, source distribution and published package in release-gate.yml/publish.yml. These still match current source; older indexing is not their resolution. Any correction must preserve the ability to detect broken consumer dependency resolution. Existing fix(ci): verify tool hashes and SQL scanner data flow #7082's tool-lock changes do not cover these call sites. New canonical fix(release): hash-lock Towncrier installs #7450 adds the complete binary-only Towncrier lock, isolated tool environments and the sparse-checkout input. Six real-pip offline regression tests pass and all six fail with the original installers. The existing CI suite passes 1,227 tests and 921 subtests, with seven native Semgrep CLI checks skipped. All 153 hashes match official metadata, and both actual render/cleanup paths produce identical notes from all 415 current fragments. Full independent seven-file review and changed-file hooks pass; full hosted CI is requested with test:pytest and is incomplete. The current release classifier treats all six as blocking medium findings, with no active exceptions; older Scorecard documentation does not waive that gate.
  • Both Dependabot alerts are the same public MCP SDK advisory, GHSA-84m7-p3x7-pcfv (fixed in 1.30.0), in Semgrep's tool environment. The application lockfile already contains MCP 1.30.0. Official package metadata for Semgrep 1.179.0, both proposed 1.180.0 bumps and the current 1.181.0 release requires exactly MCP 1.29.0. Adding mcp>=1.30.0 would make those requirements unsatisfiable. Require an upstream-compatible scanner release or a separately reviewed remediation strategy; do not use an unchecked transitive override or create a new exception implicitly. 🤖 Update dependencies #7379 is not a fix for these tool requirements.

New inventory decisions

The refreshed review read all 42 newer open issue discussions and 34 newer non-routine open PRs, checked related conversations and compared existing overlapping work. A further pass read the five new issues #7436–#7440 and checked their relationship to current main and existing PRs. These are scope decisions; current code review and CI remain separate.

Item Release disposition
Scorecard 9734/9735 → #7450: Towncrier tool hashes Required scanner remediation through this focused main-targeted PR. Preserve Towncrier 24.8.0 rendering, both downstream consumers and fresh package-consumer resolution. Local integrity, refusal, sparse-checkout and real-render evidence is recorded above. Current full CI, merge and fresh main indexing remain required.
#5680/#5681 → #7446: collection uploads Select the confirmed-storage and indexing-recovery behavior described above. Keep the existing canonical PR and its owner; do not start another upload-pipeline implementation. Qualify its full response, browser, transaction and persistent-index contracts before merge readiness.
#7445: contribution/test guidance Nonblocking documentation and PR-template follow-up. It asks for automated tests that fail without a fix and exercise real feature paths; it does not replace current release qualification or establish merge readiness by itself.
#7447/#7448/#7449: tool updates Review through the existing bot PRs before choosing updates to the frozen release toolchain. #7447/#7448 touch the builder/CI bootstrap locks; #7449 updates Vitest and coverage together. In particular, #7448's upstream notes include shell-activation escaping and seed-tool changes, so check the actual bootstrap behavior and regenerated hashes. None touches Semgrep's MCP requirements or constitutes Python runtime-image clearance. These are separate compatibility/review decisions, not automatic additional feature scope.
#7362 → #7363: web benchmark workers Add to required correctness work; current-head full pytest now passes, approval remains. The worker needs authenticated owner context before research starts. Merged #7005 fixes grader ownership only. Qualify real worker execution, cleanup and strict-settings interactions. Keep the separate CLI override gap #7118 visible.
#7391: library-path upgrade guidance Select before finalizing release guidance. Correct the declared environment variable and explain that the operator override applies across accounts while preserving existing/default locations.
#7397: import-time analytics opt-out Select for privacy review and qualification. Verify the opt-out is established before the first unstructured import. Reconcile its shared helper without selecting the overlapping parser alternative #7147 over contributor #6545.
#7378: RIS title handling Select the already-public follow-up to #6991 for the existing export/disclosure boundary. Full diff, conversation and affected-code review at 81e5f081eb90 found no actionable issue within the documented policy; 1,837 affected tests, six public regression controls against main and independent security/compatibility checks passed. Current-head full pytest is green; required GitHub approval remains. Keep any newly discovered undisclosed variants in the separate advisory process.
#7321: remaining PubMed normalization Select the focused continuation of merged contributor #7279. Qualify phrase preservation on the latest corrected revision and require current full CI; earlier passing runs do not establish its readiness.
#7436 → residual #7228: subscription model dispatch Correction pushed at 5173799f7cf3; CI pending and draft retained. The residual patch preserves merged contributor #6694 and synchronizes main through bf7be7a8. Creation and Run Once share registry-backed decoding, preserve native model colons and normalize surrounding whitespace (#7437/#7438). Both independent adversarial reviews found no in-scope blocker. Validation passed 180 affected Python tests and 159 tests across 19 news JavaScript suites; 14 negative-control cases fail against main, with two benign controls passing. Real persistence and manual/overdue provider dispatch are covered, including changed defaults after creation. Local Vitest differs from the lockfile, so hosted validation remains required. The separate background-scheduler correction is in #7444 above.
#7393 → contributor #7414: canonical-text coverage Main already contains #7229's quality/coverage guard and #7307's index invalidation. #7414 changes tests only and adds useful production-session/detached-tracker coverage. Review and run it as library acceptance coverage; its closing link does not establish a new runtime repair or prove a current-main defect.
#7375, #7394: library deletion/retry acceptance Confirm the reported foreign-key deletion failure on current main and reproduce the explicitly unproven failed-row hash-collision scenario before deciding additional work. Reconcile with #7201/#7083 and merged retry/sync fixes. Neither is automatically covered by #7414; preserve an explicit disposition before claiming complete library acceptance.
#7395: environment-locked provider/search overrides Include in settings acceptance. Strict reads in #7288 do not by themselves enforce request override locks. Preserve the contributor's claimed provider/search work and the field-specific policy; do not confuse it with optional sampling controls.
#7417: benchmark output containment Remains within the existing #5769/#6883 reconciliation. Preserve the approved library-path policy; do not create a duplicate or merge the conflicting library clamp wholesale.
#7430: legacy zero news intervals Verify merged #7078's legacy migration together with the still-open #6919 runtime guards during upgrade qualification. The remaining migration test/documentation pins are follow-ups; do not create a duplicate interval repair from the issue title.
#7396: content-block relevance replies Reconcile existing overlap among owned draft #4766, contributor #7312 and focused contributor #7405. Require the compatibility fix before/with the affected optional feature if selected. Do not choose a competing implementation implicitly or promote the broader features merely to obtain the shared fix. #7336's empty-response retries are a different case.
Contributor #7402: storage modal policy Desirable UI consistency: hide disallowed filesystem choices and display effective storage mode. Existing runtime enforcement already applies. Keep it nonblocking pending its own review and CI.

Nonblocking PR follow-ups remain #7322/#7327/#7329/#7330, #7336/#7338/#7339, #7355/#7356/#7357, #7369/#7370, #7441 and contributor #7415. #7352 and #7364 are now merged. Contributor #7442 is a useful, nonblocking test-only follow-up to #7422/#7340: it makes the unindexed-collection regression discriminate the skip path and updates stale test documentation. Preserve its ownership and require its own review/CI; it adds no runtime fix. Registration defaults (#7329) and unconditional full-CI scheduling (#7372) are separate policy changes; neither silently replaces the current release criteria. #7338's dormant cancellation hook must not be advertised as live end-to-end MCP cancellation. #7330 adds diagnostics; the transaction repair is delivered by merged #7227. #7441 is desirable but nonblocking: it completes the deferred #6848 diagnostics follow-up to merged #6576 without changing refusal decisions. It complements #7322 and is independent of #7321/#7330. Its scope triage is complete; independent merge review and successful current full CI remain required.

Record the unresolved #7360/#7371 dropdown-layout overlap without taking over or closing either contributor PR. #6954 is now merged; compare the remaining #7367 citation-whitespace diff against main before treating it as still-missing behavior, preserving contributor ownership. #7368's log-preview floor is already covered by merged #7354; compare residual differences before treating it as additional work. New provider #7403 and broad ingestion #7416 remain optional.

The #7437/#7438 whitespace and provider-registry follow-ups are implemented in the updated #7228 decoder patch and await its current full CI and merge; they are not separate release gates. #7439/#7440 remain nonblocking test-caption and dormant-fallback follow-ups.

Most #7421–#7435 are explicitly extracted test, documentation or defense-in-depth follow-ups. In particular, #7431 asks a separate ignored-manifest scan-scope policy decision; merged #7318 guarantees completion of the selected invocation, not universal discovery of ignored files. #7429's legacy NULL-mode checks must be considered with the merged migration/defaults. Preserve the existing post-v2 treatment of #7361/#7365/#7373/#7374/#7390/#7392 and their contributor claims. Do not claim universal parser isolation, immediate revocation of every active socket, or complete sanitization parity from narrower selected fixes.

Source choices, overlaps and holds

Sources Disposition
#6974/#6976/#6977/#6978/#6979/#6980/#6982/#6989 Their canonical main ports are #7133/#7134/#7131/#7132/#7138/#7139/#7135. All those ports except #7133 are merged. Do not count the old release-targeted sources as independent remaining merges.
#6972/#6995 Both scopes are already on main through merged #7315 (API migration notes) and #7316 (research completion/reconnect/polling browser qualification). Exact-main ancestry and content were verified. Final browser/container execution remains required; no new implementation PR is needed.
#6983 Its main-targeted DNS-isolation port #7130 is merged.
#7082/#7091/#7092 Selected combined scanner implementation #7140 is merged. Compare any residual diff with main before selecting further work; preserve distinct SQL-sink, file-operation and request-taint coverage.
#6541; #6879/#6881/#6888/#6947/#6951 #6541, #6888, #6947 and combined #7156 are merged. Reconcile #7142 against that baseline; the older open logging sources are not automatically additional required merges.
#6694/#7228 Contributor #6694 is merged and retains credit for the delivered Run Once repair. The reconciled residual #7436/#7437/#7438 correction is pushed to existing draft #7228 at 5173799f7cf3; its title and description now reflect that remaining scope. Local validation and two independent reviews passed, while current hosted CI, draft disposition and approval remain. Do not treat the contributor PR as replaced; the separate scheduler correction is #7444.
#7211 Preserve the contributor's canonical stored-model case-matching PR. It remains draft and requires current review/main qualification; do not edit its branch.
#6545/#7147 Keep contributor #6545 canonical. The overlapping owned alternative is not implicitly authorized for expansion, replacement or integration.
#6759/#7226 Optional shared-cache feature. Contributor #6759 remains canonical; #7226's alternative disposition is unresolved.
#7194/#7266 Contributor #7194 is merged. Alternative #7266 is closed without merging; preserve the delivered setting when qualifying #7313.
#7154; #7010; #7141 Respectively covered by merged #7151, #6591 and #7000. #7141 is closed. No independent merge requirement is created by an old source remaining open.
#7239/#7244/#7261 Contributor fixes #7239/#7244 are merged; redundant #7261 is closed without merging.
#7222/#7242 #7222 is closed; selected #7213 and #7131 are merged, covering source-map-js and the fsspec-floor issue.
#6214/#7077/#7383 #7077 is merged and includes the obsolete-suppression cleanup. #7383's new CPython exception is not selected: the agreed policy is to wait for a patched official image. Neither a proposed suppression nor a disappearing alert proves the runtime is fixed.
#6892 Remains deferred pending authoritative support for the claimed IBM Classic metadata endpoint; denylist tests alone do not establish that premise.
#7277 Closed without merging. Its previous KaTeX compatibility hold is not a pending source-PR merge. Any newer dependency proposal needs its own compatibility/CI review.
#7279/#7321 Contributor #7279 is merged. #7321 is the separate follow-up for remaining PubMed phrase normalization (#7278); preserve contributor credit.
#6988/#7061/#6929 #6988 and #7061 are currently open drafts, despite stale tracker text calling them closed. All three are historical/reference candidates and do not qualify final main. Their metadata disposition is separate from release implementation.

Preserve already-landed behavior and contributor attribution from the earlier tracker, including #7066/#7086/#7166/#7172/#7165, #7074/#6381, #6434, #7144 and the release/test helpers #6897/#6921/#6932/#7084/#7210/#7212/#7221/#7234/#7255/#7265/#7267. Closed source candidates #6153/#6981/#7136/#7168/#7155/#7158 do not imply missing standalone fixes. Routine dependency updates remain subject to their own compatibility and scan evidence; the previously pending #7296–#7306 updates are now merged.

The broader #4448 Auto Research, #6251 collection-management/provider feature, #6759 shared cache, #7312 configurable reasoning/temperature/sampling and #7416 automatic ingestion/persistence are not release prerequisites. Preserve any already-selected shared correctness fixes through their existing canonical PRs; broader features and overlapping schema changes require their own decision and validation.

Existing deferrals remain: #7236/#7238/#7241/#7254/#7264, #7292/#7294, #7215/#7216/#7220, #7270/#7271/#7272 and #7273/#7274/#7275. Preserve contributor discussions. #5521 assisted legacy migration remains future work; #6356 requires a separate threat-model assessment; #5810/#6593 are not newly promoted release blockers. #7118's benchmark CLI override gap means those runs cannot stand in for qualification of the requested configuration. Related acceptance/follow-up issues such as #7097, #5681, #6847/#7093 and the broader #5835 work remain tracked; existing uncertainty is not evidence of a new missing fix.

Final release gates

  • Resolve selected behavior through canonical main-targeted PRs, including the new acceptance checks above. Review current diffs, full conversations and affected callers; preserve contributor ownership. A selection is not a merge recommendation, and a historical integration result is not evidence of current-main delivery.
  • For each PR prepared for merge, retain test:pytest, require successful All Pytest Tests + Coverage on the current PR test-merge revision, all other required checks and reviewer approval. Requalify stacked work on main after its parents land. Focused tests, skipped/cancelled runs and results from earlier heads do not satisfy this gate.
  • Complete source, dependency and image scanning on the final revision. Verify scan completeness, artifact provenance and indexed finding dispositions; do not treat a warning upload or old candidate's clean report as final qualification. The five findings covered by fix(security): resolve SQLCipher Bearer alerts and validate scan uploads #7377/fix(security): baseline a Gitleaks example and annotate two DevSkim checksums #7400, six Scorecard pinning findings (the two Towncrier fixes are in fix(release): hash-lock Towncrier installs #7450), the Python image finding, the unstructured dependency finding and two MCP SDK tool-requirement alerts still need the appropriate source/reachability disposition or fix and fresh evidence.
  • Wait for a patched official Python image; add no new exception. Verify the shipped runtime contains the required fixes, then qualify its pinned image and platform builds. Merged fix(docker): pin Python 3.14.8, retire the zipfile backport, and enforce interpreter and expat floors #7077's 3.14.8 image and proposed fix(security): accept CPython CVE-2026-12345 as an expiring release exception until 3.14.9 #7383 suppression do not close this gate.
  • Qualify clean installed wheels and source distributions, dependency resolution, strict package metadata, MCP entry points, Vite assets/manifests, read-only package operation and container startup/lifecycle. Require native amd64/arm64 coverage and the selected Windows SQLCipher Python 3.12/3.14 checks. Historical emulation or Linux separator tests do not substitute for those platform results.
  • Run verified v1.10.7-to-v2 upgrade and rollback rehearsals with representative encrypted databases, salts, saved settings and external library/index locations. Verify data/content identity, retention, operator-only paths, migration atomicity, session renewal, restart behavior and failed-upgrade recovery.
  • Complete the required browser and end-to-end authentication, research completion/reconnect/polling, news, library/indexing and supported Markdown/math flows on the final source/artifacts. A successful ordinary main Docker run does not supply the skipped suites.
  • Regenerate the v2 narrative, changelog, actual merged-PR list and complete notes attachment from the eventual release commit. Preserve Towncrier issue/PR links (fix(release): make Towncrier links work for issues and PRs #7132), complete attachment bytes (fix(release): preserve original release-note attachment bytes #7255), dispatch tracking (fix(release): bind PyPI monitor to its dispatch on main #7134) and cleanup ownership (fix(release): preserve Docker tags and pending release runs #7138). Old preview sizes, source appendices and artifact digests apply only to their original revisions.
  • Prepare the advisory release mapping and publication sequence through the separately authorized process. Verify the intended fixed commits and version ranges before release; keep undisclosed material outside this public plan.
  • Only after the pre-release gates above and the release owner's final review, merge this version-only PR last and verify the resulting release pipeline and published artifacts.
  • After the first fixed release is tagged, complete the separately authorized advisory publication. If that release is 2.0.0, verify the actual affected/patched ranges against the shipped fix. An untagged main fix is not a patched release; this post-tag step is not a prerequisite for merging the version bump.

@github-actions github-actions Bot added dependencies Updates project dependencies (packages, libraries). Release notes: ⬆️ Dependencies (9/20). python Python code changes. Release notes: 🐍 Python Changes (priority 13/20). labels Sep 27, 2026
@github-actions

github-actions Bot commented Sep 27, 2026 •

Copy link
Copy Markdown
Contributor

📊 Coverage Report

Metric Value
Line Coverage 95.3%
Branch Coverage 91.8%
Lines 65,579 / 68,835
Files Analyzed 567

📈 View Full Report (updates after merge)

📉 Coverage Details

Files needing attention (<50% coverage):

  • benchmarks/datasets.py: 0.0%
  • benchmarks/metrics.py: 0.0%

  • Coverage is calculated from src/ directory
  • Full interactive HTML report available after merge to main/dev
  • Download artifacts for immediate detailed view

Report for cb62339dd397 · workflow run

@LearningCircuit LearningCircuit added the code-ready-preliminary Passed an automated gate only. Not human-verified; must be re-checked before code-ready. label Oct 3, 2026
@LearningCircuit LearningCircuit added the test:pytest Maintainer request for full pytest before merge; reruns on later pushes while the label remains. label Oct 3, 2026

This branch was successfully deployed

1 active deployment
ci — cb62339d Deployed Oct 9, 2026 by LearningCircuit via All Pytest Tests + Coverage #19281
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

code-ready-preliminary Passed an automated gate only. Not human-verified; must be re-checked before code-ready. dependencies Updates project dependencies (packages, libraries). Release notes: ⬆️ Dependencies (9/20). follow-up-issues-extracted All eligible follow-up issues have been extracted from the PR review python Python code changes. Release notes: 🐍 Python Changes (priority 13/20). test:pytest Maintainer request for full pytest before merge; reruns on later pushes while the label remains.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant