Files
ThothII/docs/superpowers/plans/2026-08-13-p7-psd-migration.md
T

123 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# P7 — PSD migration to the workspace registry — Plan
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to apply this plan task-by-task.
**Goal:** Move the existing Policlinico San Donato workspace from the legacy flat layout
(`tht-workspace-psd/psd.yaml` + root `evidence/` + `artifacts/mschema/annotations.yaml`) into the
P1.1 workspace registry repository, then re-embed/re-index it on the new internal semantic stack so
ThothII can run live against the real PSD DWH.
**Source of truth:** PRD D7 (`docs/prd/2026-08-09-workspace-preprocessing-prd.md`), the P1.1 layout
(`docs/superpowers/plans/2026-08-11-p1-1-workspace-directory-registry.md`), and
`docs/workspace-diagnostic-protocol.md`.
**Architecture:** The PSD content becomes an ordinary Git workspace repository consumed by ThothII
via `THT_WORKSPACE_GIT_REMOTE`. DWH access stays REST (PostgREST); Qdrant and Ollama embedding are
the internal Compose services. The legacy pgvector (768-dim, nomic) is superseded and must be
re-embedded with `qwen3-embedding:0.6b` (1024-dim).
**Tech Stack:** Git + YAML (descriptor/catalog), the existing `thothctl`/registry for validation.
No new code is required unless a validator gap is proven by a test.
---
## Current-state findings recorded by this plan
- `/Users/mp/projects/tht-workspace-psd` is already a Git repo on `main` (38 tracked files:
`.gitignore`, legacy `psd.yaml`, and 36 curated `evidence/*.md`) with **no remote**.
- The legacy `psd.yaml` declares REST DWH (`database: postgres`, `schema: datawarehouse`), X-API-Key
auth, internal CA, and the old external pgvector + Ollama; it has **no** `llm_policy`.
- Curated FK annotations exist at `artifacts/mschema/annotations.yaml` (367 FK lines) in the new
canonical `Annotations` shape and can be copied directly to `<id>/schema/annotations.yaml`.
- `physical.yaml` is absent, so DWH introspection must be re-run (requires VPN + DWH access).
- The legacy runtime dirs (`.tht-dwh/`, `.tht-jobs/`, `config/`, `corpus/`, `runtime-v2/`,
`.legacy-artifacts-backup-premerge/`) are untracked runtime state and must not enter the curated repo.
## Explicit decisions frozen by this plan
1. **Repository identity.** Reuse `/Users/mp/projects/tht-workspace-psd` as the author/curator clone;
publish it to a GitHub remote the owner creates. The ThothII installation clones that remote, not
any path inside the ThothII repo.
2. **Workspace id:** `psd-clinical` (catalog, descriptor, Qdrant collection, bindings namespace
`PSD_CLINICAL`).
3. **Descriptor (schema v3):** `dwh` = `postgres` / database `postgres` / schema `datawarehouse` /
`supported_transports: [rest_api]`; `semantic_index` = Qdrant `psd-clinical` 1024/cosine +
`qwen3-embedding:0.6b`; `language: it`; `llm_policy.allowed` starts from the historically active
PSD models (`zai/glm-5.2`, `deepseek/deepseek-v4-flash`, `deepseek/deepseek-v4-pro`,
`aritmolab/qwen3.6-35b-a3b`) and is owner-adjustable.
4. **DWH diagnostic:** `diagnostics.dwh_rest` = `POST /rpc/ping`, `auth: x-api-key`, response
`{ database: postgres, schema: datawarehouse }`. The exact ping RPC path/auth is verified by the
owner during the first live smoke and adjusted only in the Git descriptor.
5. **Curated content only:** the repo contains `thoth-workspaces.yaml`, `psd-clinical/workspace.yaml`,
`psd-clinical/evidence/`, `psd-clinical/schema/annotations.yaml`, plus API-generated
`workspace-docs/`. Legacy runtime dirs stay untracked (gitignore).
6. **Re-embedding:** the legacy pgvector is not reused. DWH introspection + schema/Evidence indexing
run afresh on the new stack (or, if the owner prefers, pgvector is exported and re-embedded);
this task is gated on VPN + DWH credentials + a running stack.
7. **Secrets stay out of Git:** DWH X-API-Key and CA are written as local secret files referenced by
`THT_WS_PSD_CLINICAL_DWH_API_KEY_FILE` / `_TLS_CA_FILE`.
## Completion contract
1. `tht-workspace-psd` is restructured to the P1.1 layout and commits cleanly (no legacy runtime dirs).
2. A local registry bootstrap against that repository activates `psd-clinical` (schema-v3 valid,
Evidence materialized, annotations parsed and synced, docs generated).
3. `thothctl … workspace inspect --workspace psd-clinical --json` succeeds once the installation
bindings + VPN are present.
4. `thothctl … workspace preprocess run --workspace psd-clinical --json` completes DWH → FK → schema →
Evidence against the real DWH and indexes into the internal Qdrant.
5. A live session on `psd-clinical` reaches the first reviewer gate (P8 L2 smoke).
---
### Task 1: Restructure the repository (autonomous)
**Repo:** `/Users/mp/projects/tht-workspace-psd` (separate checkout).
1. Write `thoth-workspaces.yaml` (catalog with `psd-clinical`).
2. Write `psd-clinical/workspace.yaml` (schema v3, decisions 2–4).
3. `git mv` the 36 `evidence/*.md` files to `psd-clinical/evidence/`.
4. Copy the curated FK to `psd-clinical/schema/annotations.yaml`.
5. Add `.gitignore` for legacy runtime dirs; remove/leave legacy `psd.yaml` as a non-contract
historical note (do not commit the old flat paths as canonical).
6. Commit on `main` (no remote yet).
### Task 2: Local registry validation (autonomous, no DWH/secret)
1. From a scratch bare remote of the restructured repo, bootstrap a `WorkspaceRegistry` and assert
`psd-clinical` activates: descriptor valid, catalog matches, Evidence materialized with manifest,
annotations parsed/synced, `workspace-docs/psd-clinical` generated.
2. Verify `thothctl workspace inspect` fails only on the missing DWH bindings (not on the descriptor).
### Task 3: Installation bindings + secrets (owner)
1. Owner creates the GitHub remote and provides its URL + push credentials.
2. Owner provides (or confirms reuse of) the DWH X-API-Key and CA; write them as local secret files.
3. Fill `THT_WS_PSD_CLINICAL_DWH_*` bindings + `THT_WORKSPACE_GIT_REMOTE` + LLM provider in the
installation env (VPN active).
### Task 4: Re-embedding/indexing (owner + stack)
1. Start the stack; `embedding-model-init` pulls `qwen3-embedding:0.6b`.
2. `thothctl … workspace preprocess run --workspace psd-clinical --json` (DWH → FK → schema → Evidence)
against the real DWH; verify the Qdrant collection is populated and revision-scoped.
### Task 5: Live smoke + manual acceptance (owner, P8 L2)
1. New session on `psd-clinical` reaches the first reviewer gate; finalize one real query.
2. Record the P7/P8 manual acceptance in `docs/testing/p2-p6-manual-verification.md` and
PROJECT_STATE.md.
---
## Owner checkpoint
Tasks 1–2 are executed now by the agent. Tasks 3–5 are blocked on owner-provided secrets/access
(GitHub remote, VPN, DWH key/CA, LLM provider) and on the live stack.
## Non-goals
- No P8/P9/P10 work (end-to-end CI, retention policy changes, ssh_tunnel runtime).
- No change to the accepted P1.1–P6 contracts.
- No secret value, certificate, or response body is committed or printed.