12 KiB
12 KiB
Task 13 Implementation Report
Status
DONE_WITH_CONCERNS
Changes
- Updated stale harness/backend/frontend tests and fixtures to the Task 13 internal Qdrant/Ollama contract.
- Made
deploy/workspaces/psd.yaml.examplegeneric while preserving schema-v3 Qdrant/Ollama shape. - Fixed
scripts/workspace-registry-smoke.shto pass the required legacy migration--collectionand prove exact Docker cleanup, including its smoke image. - Updated
PROJECT_STATE.mdwith only evidence observed in this run.
Changed files:
PROJECT_STATE.mdbackend/test/routes-workspaces.test.tsbackend/test/workspace-runtime-handoff.test.tsbackend/test/workspaces-contracts.test.tsbackend/test/workspaces-git-repository.test.tsdeploy/workspaces/psd.yaml.examplefrontend/src/shell/NewSessionDialog.test.tsxharness/tests/test_adapter_command_regressions.pyharness/tests/test_workspace.pyscripts/task13-runtime-fixture-check.tsscripts/test-verify-workspace-install-docs.shscripts/workspace-registry-smoke.sh
Verification
Deterministic gates:
cd harness && .venv/bin/pytest -q && .venv/bin/ruff check .- Initial red: 2 harness pytest failures.
- After fixture fixes: harness pytest passed
819 passed, 4 deselected, 74 warnings in 27.73s. - Ruff still failed with
Found 220 errors; treated as existing unrelated debt. - Touched harness files verified clean with
cd harness && .venv/bin/ruff check tests/test_adapter_command_regressions.py tests/test_workspace.py && .venv/bin/pytest -q tests/test_adapter_command_regressions.py::test_solved_index_writes_through_writer_only_factory_store tests/test_workspace.py::test_load_workspace_expands_env_vars:All checks passed!and2 passed, 2 warnings in 0.14s.
cd backend && npx vitest run && npx tsc --noEmit -p . && npm run build- Initial red: 4 backend Vitest failures.
- After fixes:
Test Files 39 passed (39),Tests 464 passed (464), TypeScript passed, build passed.
cd frontend && npx vitest run && npx tsc -b && npm run build- Initial red: 1 frontend Vitest failure.
- After fix: frontend Vitest passed
374/374, TypeScript passed, build passed with Vitebuilt in 6.55s.
git diff --check- Passed with no output.
Focused reruns:
cd backend && npx vitest run test/workspaces-migrate-legacy.test.ts test/workspaces-contracts.test.ts test/routes-workspaces.test.ts test/workspace-runtime-handoff.test.ts test/workspaces-git-repository.test.ts && cd .. && ./scripts/test-no-deployment-coupling.sh && ./scripts/verify-workspace-install-docs.sh --fixtures-only && git diff --checkTest Files 5 passed (5),Tests 35 passed (35).- Coupling guard passed:
no active retired deployment or external semantic coupling found. - Install docs fixtures passed through
relative secret-source fixture rejected passed.
Deployment contracts:
./scripts/test-default-compose.sh && ./scripts/test-unified-compose.sh && ./scripts/test-internal-semantic-compose.sh && ./scripts/test-no-deployment-coupling.sh && ./scripts/test-compose-secret-policy.sh && ./scripts/verify-workspace-install-docs.sh --fixtures-only- Passed. Output included:
default Compose contract passed.unified Compose contract passed.internal semantic Compose/script contracts passed.no active retired deployment or external semantic coupling found.Compose secret policy passed.- install-doc fixture checks through
relative secret-source fixture rejected passed.
- Passed. Output included:
Docker smokes:
/usr/bin/time -p ./scripts/internal-semantic-smoke.sh- Passed:
Task 13 internal semantic smoke passed. - Cleanup proof:
no labeled containers, volumes, networks, or images remain for 20260808200245-83368-17823. - Duration:
real 217.34.
- Passed:
/usr/bin/time -p ./scripts/workspace-registry-smoke.sh- Initial red:
usage: migrate-legacy --input <legacy-workspace.yaml> --output <repository-root> --collection <qdrant-collection> [--id <workspace-id>]. - After fix:
workspace registry smoke passed. - Cleanup proof:
no compose containers, volumes, networks, or image remain for thoth-workspace-registry-smoke-89671. - Duration:
real 9.93.
- Initial red:
/usr/bin/time -p ./scripts/unified-deployment-smoke.sh- Passed:
Task 13 full deployment smoke passed. - Cleanup proof:
no labeled containers, volumes, networks, or images remain for 20260808200706-85638-13391. - Duration:
real 125.57.
- Passed:
/usr/bin/time -p ./scripts/thothctl-update-smoke.sh- Passed:
Task 13 update deployment smoke passed. - Cleanup proof:
no labeled containers, volumes, networks, or images remain for 20260808200918-87340-10404. - Duration:
real 85.40.
- Passed:
/usr/bin/time -p ./scripts/server-deployment-smoke.sh- Passed:
Task 13 Linux server deployment smoke passed. - Cleanup proof:
no labeled containers, volumes, networks, or images remain for 20260808201047-88645-20675. - Duration:
real 55.99.
- Passed:
Final audit:
rg -n "pgvector|local-vector|THT_VECTOR_|EMBEDDING_BASE_URL|openai_compatible|ollama_compatible" . --glob '!docs/plans/**' --glob '!docs/superpowers/**' --glob '!**/node_modules/**' --glob '!**/.venv/**' --glob '!**/.git/**'- Returned matches in legacy schema-v1/v2 support, migration tests, negative guards, historical notes, and older harness docs/code.
- This remains a concern: the audit is not clean under the brief's strict expected outcome.
git status --short- Before report/commit, contained only intentional Task 13 changes.
Image and Host Evidence
- Host CPU:
Apple M4 Pro. - Host OS:
Darwin MacProM4-di-Marco.local 25.5.0 Darwin Kernel Version 25.5.0: Tue Jun 9 22:28:34 PDT 2026; root:xnu-12377.121.10~1/RELEASE_ARM64_T6041 arm64. - Docker server:
29.6.2 linux/arm64. - Verified pinned images:
qdrant/qdrant:v1.18.2@sha256:75eab8c4ba42096724fdcfde8b4de0b5713d529dde32f285a1f86fdcb2c9e50c.ollama/ollama:0.32.0@sha256:57f573b47f1f71ebb445789f279fe3e596a8beab182f7cf486db9205bad87c5a.
- Workspace registry smoke ephemeral image:
- Manifest list:
sha256:4d056bf2cb38d0e8ede91fbf121df1f9f18caee0d401581618ccef9ed8a55e73. - Config:
sha256:613f8fb28c0517adee4085f41bc447f2c3813b0fdbb7b26624bfb4cb192b6fd8. - Removed during cleanup.
- Manifest list:
Manual Gates
- GPU exposure gate (
THOTH_ENABLE_EMBEDDING_GPU=1on Linux): not executed in this run. - Windows Docker Desktop startup/manual job: not executed in this run.
Commits
4e810af(test: align qdrant ollama verification fixtures)7c09b98(docs: record qdrant ollama verification)
Known Limitations
- Broad harness Ruff remains existing unrelated debt:
Found 220 errors. - Final active-reference audit is not clean; it still finds legacy/negative-guard references outside explicit migration fixture files.
- Ephemeral Task 13 core/frontend image IDs from
internal-semantic-smoke.sh,unified-deployment-smoke.sh,thothctl-update-smoke.sh, andserver-deployment-smoke.shwere removed by exact cleanup and were not emitted in stdout; pinned Qdrant/Ollama digests and the workspace-registry smoke image digest were captured.
Fix Round 1 — reviewer findings
Status: DONE
Changes:
scripts/workspace-registry-smoke.shnow derives the smoke image reference from the already unique Compose project instead of using the global tagthothii-workspace-registry-smoke:local.- The workspace-registry cleanup helpers remove and verify only the exact per-run image reference, plus Compose resources labeled with the exact project.
- Added deterministic self-test coverage in
backend/test/workspaces-migrate-legacy.test.tsviaWORKSPACE_REGISTRY_SMOKE_SELF_TEST=image-cleanup-identity; it stubs Docker and fails if cleanup touches same-repository foreign tags such as:localor another project tag. - Updated active harness/testing/PRD docs and Python comments that still described the current semantic store as pgvector/vectordb. Preserved schema-v1/v2 and harness legacy compatibility fixtures.
- Updated
PROJECT_STATE.mdwith fix-round smoke evidence and a precise, non-overclaiming audit limitation.
Focused verification:
cd backend && npx vitest run test/workspaces-migrate-legacy.test.ts- Passed:
7 passed.
- Passed:
cd harness && .venv/bin/pytest -q tests/test_memory_save_one.py tests/test_adapter_command_regressions.py tests/test_solved_search_cli.py tests/test_search_pack.py- Passed:
22 passed, 14 warnings.
- Passed:
cd harness && .venv/bin/ruff check tht/memory.py tht/search/__init__.py tht/workspace.py tht/vectorstore/store.py tests/test_memory_save_one.py tests/test_adapter_command_regressions.py tests/test_solved_search_cli.py- Passed:
All checks passed!
- Passed:
bash -n scripts/workspace-registry-smoke.sh && WORKSPACE_REGISTRY_SMOKE_SELF_TEST=image-cleanup-identity bash scripts/workspace-registry-smoke.sh- Passed:
workspace registry smoke image cleanup identity self-test passed.
- Passed:
./scripts/test-no-deployment-coupling.sh- Passed:
no active retired deployment or external semantic coupling found.
- Passed:
./scripts/verify-workspace-install-docs.sh --fixtures-only- Passed through
relative secret-source fixture rejected passed.
- Passed through
cd backend && npx tsc --noEmit -p .- Passed with no output.
/usr/bin/time -p ./scripts/workspace-registry-smoke.sh- Passed:
workspace registry smoke passed. - Built exact per-run tag:
thothii-workspace-registry-smoke:thoth-workspace-registry-smoke-thoth-workspace-registry-smoke-10vi3a-19157. - Manifest list:
sha256:715b943057929418cad4aa71806d9edbaf823555d19bda6b875297617463fd4a. - Config:
sha256:a566521981e08958aae9a12bfc7803bb5f3f835536b4bb8c39df8fcf26063161. - Cleanup proof:
no compose containers, volumes, networks, or image remain for thoth-workspace-registry-smoke-thoth-workspace-registry-smoke-10vi3a-19157. - Duration:
real 42.06.
- Passed:
Fix-round audit command:
rg -n "pgvector|local-vector|THT_VECTOR_|EMBEDDING_BASE_URL|openai_compatible|ollama_compatible" . --glob '!docs/plans/**' --glob '!docs/superpowers/**' --glob '!**/node_modules/**' --glob '!**/.venv/**' --glob '!**/.git/**'
Categorized remaining hits:
- Backend legacy parser/migration compatibility, kept deliberately non-operational for schema-v1/v2 descriptors:
backend/src/workspaces/schema.ts,types.ts,migrate-legacy.ts,runtime-renderer.ts,bindings.ts,contracts.ts,diagnostics.ts. - Backend negative guards and legacy fixture tests:
backend/test/workspaces-schema.test.ts,workspaces-migrate-v2-qdrant.test.ts,workspace-registry.test.ts,workspace-runtime-renderer.test.ts,workspaces-bindings.test.ts,workspaces-contracts.test.ts,workspaces-diagnostics.test.ts,workspaces-git-repository.test.ts,routes-workspaces.test.ts,routes-sessions.test.ts,provider-credentials.test.ts. - Secret/env scrub guards for retired variables:
backend/src/config.ts,backend/src/config/secret-bundle.ts,backend/src/pi/provider-credentials.ts,scripts/compose-with-preflight.sh,scripts/test-external-compose-lifecycle.sh. - Deployment negative guards and fixture-scope tests:
scripts/test-no-deployment-coupling.sh,scripts/test-no-deployment-coupling-scope.sh,scripts/test-preprocess-compose-config.sh,scripts/test-verify-workspace-install-docs.sh,scripts/verify-workspace-install-docs.sh,scripts/vector-rotate-bootstrap-password.sh. - Harness legacy config compatibility and fixtures:
harness/tht/config.py,harness/tht/config_compat.py,harness/tests/test_config_resources.py,harness/tests/l2/test_session_ablazione.py,harness/workspaces/tht.example.yaml,harness/workspaces/tht-test.yaml. - Retained off-repository migration SQL fixtures:
harness/scripts/create_vector_reader_rpc.sql,harness/scripts/create_vector_writer_rpc.sql. - Historical/reference notes, not active operator contracts:
brain/codebase/datamart-builder-deployment-gotchas.md,PROJECT_STATE.md. - Gitignored task report self-reference:
.superpowers/sdd/2026-08-08-internal-qdrant-ollama/task-13-implementation.md.