Skip to content

Qt-removal R7.4b: Ollama settings page (backend+frontend)#145

Merged
dovvnloading merged 1 commit into
mainfrom
qt-removal/r7-4b-ollama-settings
Jul 26, 2026
Merged

Qt-removal R7.4b: Ollama settings page (backend+frontend)#145
dovvnloading merged 1 commit into
mainfrom
qt-removal/r7-4b-ollama-settings

Conversation

@dovvnloading

Copy link
Copy Markdown
Owner

Summary

  • Closes the second of R2.5d's 3 deferred settings pages: reasoning mode, per-task model assignment (auto/inherit/explicit), real system model scan, and real model pull - 4 new backend/settings.py intents + a new OllamaPage/OllamaTaskField pair in SettingsDialog.tsx.
  • Proactively applies the R7.4a "fix classes not instances" lesson at design time: every intent argument is coerced before use, every read-modify-write happens inside one locked closure, and the reasoning-mode live-reapply collapses its check-then-act into a single hop so a concurrent provider switch can't be clobbered back to Ollama.
  • A 4-way adversarial review (backend/frontend/integration/legacy-parity) found and fixed 3 real issues: a stranded reentrancy gate on a scan/pull persistence failure, a missing task_chat + "inherit" normalization gap, and a misleading legacy-parity comment (the reasoning-mode live-reapply is actually a fix for a real legacy staleness bug, not a port of existing behavior). All fixes mutation-tested against reverted code.
  • Deliberately deferred, unchanged from the R7.4 scoping call: the Ollama page's "Scan Folder..." button stays disabled (visible tooltip, not silently broken) pending R7.4c's native folder-picker capability. "System Scan" is fully real.

Test plan

  • python -m compileall -q . clean
  • Burn-down gate (tests/test_no_qt_anywhere.py) unchanged: 152/84/68
  • Full backend pytest: 2456 passed (2453 + 3 net new)
  • Full frontend npm run check (schema-check/tsc/eslint/vitest/build): 1081 vitest passed, 0 lint errors, build clean
  • All 3 fix-pass regression tests mutation-verified (revert the fix → test fails)
  • Live WS drive against a real running backend with a real Ollama server (10 real models scanned, a real pull succeeded), using an isolated scratch settings file - the real ~/.graphlink/session.dat confirmed byte-identical before and after

Closes the second of R2.5d's 3 deferred settings pages: reasoning mode,
per-task model assignment (auto/inherit/explicit), real system model scan,
and real model pull, all wired through 4 new backend/settings.py intents
and a new OllamaPage/OllamaTaskField pair in SettingsDialog.tsx.

Proactively applies the R7.4a "fix classes not instances" lesson at
design time: every intent argument is coerced before use, every
read-modify-write happens inside one locked closure, and the reasoning-
mode live-reapply collapses its check-then-act into a single hop so a
concurrent provider switch can't be clobbered back to Ollama.

A 4-way adversarial review (backend/frontend/integration/legacy-parity)
found and fixed 3 real issues: a stranded reentrancy gate on a scan/pull
persistence failure, a missing task_chat + "inherit" normalization gap,
and a misleading legacy-parity comment (the reasoning-mode live-reapply
is actually a fix for a real legacy staleness bug, not a port of existing
behavior). All fixes mutation-tested against reverted code.

Verified with a live WS drive against a real backend with a real running
Ollama server (10 real models scanned, a real pull succeeded) using an
isolated scratch settings file - the real ~/.graphlink/session.dat
confirmed byte-identical before and after.
@dovvnloading
dovvnloading merged commit 46d9d16 into main Jul 26, 2026
2 checks passed
@dovvnloading
dovvnloading deleted the qt-removal/r7-4b-ollama-settings branch July 26, 2026 15:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant