fix(evidence): isolate vectors by workspace
This commit is contained in:
@@ -102,3 +102,23 @@ JobRunner tests.
|
||||
|
||||
Focused default/mixed/no-ACTIVE/search-pack tests pass, the real Docker pgvector lifecycle passes,
|
||||
and the final full harness plus scoped Ruff/diff invocation completed with exit code 0.
|
||||
|
||||
## Workspace-scoped Evidence isolation
|
||||
|
||||
- Evidence manifests, vector metadata, and record keys now carry the stable JobRunner workspace id
|
||||
derived from the configured workspace identity (config stem), never credentials or absolute paths.
|
||||
- Every ACTIVE server-side predicate includes `workspace_id`. Legacy unscoped rows therefore fail
|
||||
closed and cannot appear in Evidence results.
|
||||
- Vector generation inventory and deletion require the workspace namespace across the port, direct
|
||||
pgvector adapter, HTTP client/adapter, and allowlisted RPC SQL. Legacy unscoped RPC overloads are
|
||||
explicitly dropped during migration; destructive SQL matches collection, kind, generation, and
|
||||
workspace together.
|
||||
- GC recovers the persisted namespace from ACTIVE for explicit/restarted cleanup and can only list
|
||||
or delete that workspace's generations. Real shared-pgvector coverage proves deleting a generation
|
||||
for workspace A preserves the same generation in workspace B.
|
||||
- `PipelineResult.model_dump` now serializes fields explicitly instead of `dataclasses.asdict`,
|
||||
avoiding deepcopy of immutable `FrozenDict` metadata while preserving pristine JSON CLI output.
|
||||
|
||||
Final focused verification: `89 passed` across corpus/CLI JSON, direct/HTTP parity, migrations, and
|
||||
real Docker pgvector lifecycle; scoped Ruff and `git diff --check` clean. A contemporaneous full-suite
|
||||
run reached unrelated Task 6 immutable-file tamper tests; those files were deliberately not changed.
|
||||
|
||||
Reference in New Issue
Block a user