feat: establish unified administration and model context baseline
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
# Context shelf A: implementation and local acceptance
|
||||
|
||||
Date: 2026-09-12. Status: implemented and deployed to local Docker; not deployed to the server.
|
||||
|
||||
## Accepted scope
|
||||
|
||||
The owner selected the latest option A and explicitly required functional
|
||||
preservation of Core and session management. Aesthetic refinement is limited to
|
||||
the agreed Administration workbench and global context.
|
||||
|
||||
- Workspace, Evidence, Memory, Database and Pi open as peer pages in the work area.
|
||||
- A single top collapsible shelf selects workspace and interaction model.
|
||||
Explicit choices are independently remembered per origin, mount and principal;
|
||||
installation defaults fill only missing choices. Invalid saved choices fail
|
||||
closed instead of silently choosing another context.
|
||||
- Core's composer, eight phases, review widgets and left activity log remain the
|
||||
original production components. Session scope tabs, grouping, rename, archive,
|
||||
bulk operations, read-only inspection and guarded Resume remain intact.
|
||||
- Visited Admin pages and Core remain mounted during page navigation.
|
||||
Unsaved Admin edits block navigation/context changes until saved or explicitly
|
||||
cancelled in the editor. Failed saves and failed catalog refreshes preserve drafts.
|
||||
- Workspace/model selectors are locked during operations. A navigation drawer
|
||||
preserves access to the session rail when the log is open or space is narrow.
|
||||
- The unified Installation Model Catalog remains the only model authority.
|
||||
Core and metadata generation consume the same canonical selection.
|
||||
Resume now includes the session's pinned `workspaceId` in successful responses,
|
||||
binding the global workspace immediately without replacing the selected model;
|
||||
older backends have a manifest fallback.
|
||||
- Impeccable informed typography, warm surfaces, restrained red, spacing,
|
||||
natural help-text wrapping and container-responsive layout. No Omics header
|
||||
or left sidebar was added to production ThothII.
|
||||
- A, B and C prototype sources and launch scripts were preserved.
|
||||
|
||||
## Verification
|
||||
|
||||
Using Node 24.16.0:
|
||||
|
||||
| Check | Result |
|
||||
| --- | --- |
|
||||
| Full frontend Vitest suite (two workers) | 671 tests passed, 82 files |
|
||||
| Full backend Vitest suite (two workers) | Passed; existing 40 opt-in auth runtime projection tests skipped |
|
||||
| Frontend TypeScript build check | Passed |
|
||||
| Backend TypeScript check | Passed |
|
||||
| Frontend production Vite build | Passed; bundle-size advisory remains |
|
||||
| Git whitespace check | Passed |
|
||||
| Strict MkDocs build | Passed |
|
||||
|
||||
Regression fixtures now provide valid context where they exercise normal Core
|
||||
or session workflows. Separate tests explicitly cover invalid saved context,
|
||||
global selector uniqueness, lock/unlock, failed and successful saves, retained
|
||||
drafts across refresh failure, Core/Admin round trips, and pinned-workspace Resume.
|
||||
The existing 40 session-management tests remain green.
|
||||
|
||||
Browser acceptance used the actual production React application against a
|
||||
temporary read-only synthetic API, not the earlier prototype implementation.
|
||||
Checked Core, expanded/collapsed shelf, Memory, session scope tabs and mobile
|
||||
navigation at 390, 768 and 1280 CSS-pixel application widths. The test frame
|
||||
scaled wider layouts to fit the inspection panel; layout width inside the frame
|
||||
remained the stated CSS width. No real data, provider calls or runtime mutations
|
||||
were performed. This is sampled visual acceptance, not certification of every
|
||||
Admin editor on the real portal.
|
||||
|
||||
## Remaining release gates
|
||||
|
||||
### Local Docker update
|
||||
|
||||
At the owner's subsequent request, core and frontend were rebuilt from
|
||||
`/Users/mp/projects/ThothII` and recreated in the existing
|
||||
`thothii-18998cca7b0a` project. Its launcher preserves all previous Compose
|
||||
bindings and adds `/private/tmp/thothii-context-a.compose.yaml` last to override
|
||||
the old worktree build context. Only core/frontend were recreated; PostgreSQL,
|
||||
Qdrant, embedding and persistent volumes were retained.
|
||||
|
||||
Verified HTTP 200 for the frontend and both direct/proxied core health endpoints.
|
||||
The served production bundle contains the global shelf and unsaved-change guard,
|
||||
without the synthetic preview API. All five persistent services report healthy.
|
||||
The mounted catalog is schema v2, default `zai/glm-5.3`, with shared
|
||||
DeepSeek Pro/Flash, local Qwen and GLM model identities.
|
||||
Previous image tags are retained as `before-context-a-20260912` for each image.
|
||||
This startup check does not exercise authenticated Core/provider or Admin workflows.
|
||||
|
||||
### Server release
|
||||
|
||||
1. Integrate on the server beneath Omics Portal's actual red header and beside
|
||||
its existing sidebar. Supply available height through `--thoth-app-height`
|
||||
when the host is shorter than the viewport. Check real host styles, widths,
|
||||
zoom, keyboard traversal and Back/Forward.
|
||||
2. Use approved test data to verify configured Core/Pi and Admin/LiteLLM models
|
||||
through their real workflows. Unit fixtures do not certify provider compatibility.
|
||||
3. Verify workspace readiness, synchronization and resume on the configured
|
||||
stack before release. Follow the existing guarded server migration runbook.
|
||||
4. Gitea publication and final independent standards/spec review remain separate
|
||||
gates; no remote issues or deployment are claimed by this implementation.
|
||||
|
||||
The working tree also contains earlier model-catalog and Administration work.
|
||||
Unrelated changes were preserved; this report does not claim a clean or committed tree.
|
||||
@@ -0,0 +1,80 @@
|
||||
# Unified interaction LLM — local implementation
|
||||
|
||||
Date: 2026-09-12. This change is separate from selection of the final administration/context-shelf
|
||||
prototype. No deployment, Gitea issue publication, or Omics Portal modification was performed.
|
||||
|
||||
## Implemented
|
||||
|
||||
- One authored `modelCatalog.defaults.interaction` per installation, independent of workspace.
|
||||
The local PSD descriptor and tracked example now use `zai/glm-5.3` in this field.
|
||||
- One generated `defaultInteraction` in runtime catalog schema v2; host projections, backend
|
||||
settings, Pi diagnostics, Core admission and metadata-generation consumers use that value.
|
||||
- Separate Pi/LiteLLM adapters remain. When Admin AI is configured, both public lists and Pi's
|
||||
enabled list use their intersection. Single-use entries remain inventory, not global choices.
|
||||
Core-only installations remain possible when no Admin model is configured. Embedding is unchanged.
|
||||
- Equal legacy defaults normalize on read without rewriting the source; divergent defaults or
|
||||
mixed old/new fields fail with migration guidance. Generated schema-v1 catalogs must be regenerated.
|
||||
- The existing Core and Database selectors now share application preferences, using complete
|
||||
canonical IDs, including when two providers use the same short model name.
|
||||
- Explicit LLM choices are remembered in browser storage per origin/application mount and
|
||||
authenticated issuer/subject. Automatic defaults are not stored as explicit choices. Workspace
|
||||
and thinking preferences retain their existing in-memory lifetime.
|
||||
- Core/description-generation activity disables the existing model controls using existing state
|
||||
and the shared run cache. This is not a new cross-workspace/background job subsystem.
|
||||
- New sessions reject unavailable selections without fallback. Resume receives the global model
|
||||
(or uses the installation default when omitted), keeps the historical workspace/revision and does
|
||||
not overwrite the original manifest model fields. Archived/finalized sessions remain read-only.
|
||||
- Pi management instructions and the configuration guide require an operator to exercise each
|
||||
model in both Core and Administration. There is no automatic certification flag or live probe.
|
||||
|
||||
## PSD DeepSeek consolidation
|
||||
|
||||
Following explicit operator approval, the local PSD descriptor and its tracked example use one
|
||||
`deepseek` provider with native Pi and LiteLLM adapters. Both `deepseek/deepseek-v4-pro` and
|
||||
`deepseek/deepseek-v4-flash` are eligible for shared selection. The duplicate `deepseek-metadata`
|
||||
provider declaration is removed; historical records remain unchanged. The installation default
|
||||
stays `zai/glm-5.3`.
|
||||
|
||||
A value-free comparison confirmed that the existing Pi DeepSeek key and the existing
|
||||
`DEEPSEEK_API_KEY` bundle entry are identical; both source files have mode 0600. No secret file
|
||||
was changed. The catalog now declares `secret_env` / `DEEPSEEK_API_KEY` as the authoritative
|
||||
source for both paths. Pi session snapshots exclude the selected provider's old auth entry,
|
||||
without changing the original store or unrelated entries. Missing bundle keys fail closed instead
|
||||
of falling back to old Pi auth or the generic key file. Availability enumeration, credential status,
|
||||
and isolated provider smoke checks follow the catalog declaration as well.
|
||||
|
||||
## Verification
|
||||
|
||||
- All host CLI Go packages pass `go test ./...`.
|
||||
- Backend under Node 24.16.0 after DeepSeek consolidation: 108 test files pass, 1 skipped;
|
||||
1,377 tests pass, 40 skipped.
|
||||
Backend TypeScript check passes.
|
||||
- New regression coverage checks shared DeepSeek configuration/projection, canonical Core/Admin
|
||||
identities, bundle-backed model enumeration, stale Pi auth precedence, missing-key refusal,
|
||||
preservation of the source auth store, and sanitized credential status. All credentials in these
|
||||
tests are synthetic; no model inference is performed.
|
||||
- Full frontend run: 658 tests pass; three remaining failures concern existing administration-layout
|
||||
work: Workspace preprocessing region, Catalog status placement, and Sync history entry point.
|
||||
These controls were already being changed in the dirty worktree before this model change.
|
||||
- The focused Core/Admin model synchronization test also verifies locking during Core and
|
||||
description-generation activity, unlocking afterward, and provider-qualified identity. It passes.
|
||||
- Frontend typecheck still reports three `exact` option errors in the pre-existing, untracked
|
||||
`AppShell.administration.test.tsx` (lines 48, 66, 71). No new type errors are reported.
|
||||
- Earlier parallel runs encountered timing-sensitive auth-helper failures; the complete backend
|
||||
rerun with Node 24 and two workers passes. The Homebrew `node@24` path on this machine actually
|
||||
reported Node 25; the verified Node 24 executable is under the user's nvm installation.
|
||||
- No live provider calls or full deployed Pi/LiteLLM/Omics acceptance tests were performed.
|
||||
- `git diff --check` passes. Strict documentation build remains blocked by an existing link in
|
||||
the untracked `plans/2026-09-10-administration-pages-spec.md` pointing outside the documentation
|
||||
tree to the administration-review prototype README. The updated configuration guide adds no warning.
|
||||
|
||||
The full frontend gate is not green; this is not a deployment-ready acceptance claim. Pre-existing
|
||||
production UI edits and every prototype are preserved. The final collapsible global context layout,
|
||||
general Core/Admin admission policy and server assembly remain in the wider UI workstream.
|
||||
|
||||
## Applying later
|
||||
|
||||
Use the matching host/backend release, review the installation descriptor, then apply the normal
|
||||
installation lifecycle to regenerate **all** runtime projections together. Do not deploy only the new
|
||||
backend against an old generated catalog. Follow the dual-path operator checklist in
|
||||
[Installation Model Catalog](../general/pi-configuration.md).
|
||||
Reference in New Issue
Block a user