Skip to content

Verify an identity integrity change ​

Use this guide to record evidence that an identity change preserves authority, audit history, wire compatibility, and private-data boundaries across the three repositories.

Prerequisites ​

  • The Continuous Tracking, Cognitive Companion, person identification, and documentation repositories are available.
  • Project virtual environments and locked dependencies are installed.
  • Docker is available for tests that use PostgreSQL, Redis, or MinIO-compatible containers.
  • The affected architecture decisions and contract rows have been identified.

1. Record the change scope ​

Create a verification record with these fields:

text
Change:
Commit or change set:
Date and timezone:
Verifier:
Repositories and branches:
Relevant architecture decisions:
Expected runtime changes:
Expected schema changes:
Expected wire or API changes:
Expected configuration changes:
Explicit exclusions:

Record unrelated dirty worktree files before editing. Confirm that private media, captured embeddings, populated manifests, credentials, and presigned URLs are absent.

2. Run repository checks ​

Run the checks that match the changed surface. Record each command exactly as executed.

bash
cd continuous-tracking
make check

cd ../cognitive-companion
make check-all

cd ../person-identification-service
uv run ruff check .
uv run mypy app/
uv run pytest

cd ../silvermind-project.github.io
npm run test
npm run docs:build

Use this table for results:

RepositoryCommandResultPassedFailedXfailedXpassedNotes
Continuous Tracking
Cognitive Companion backend
Cognitive Companion frontend
Person identification
Documentation

A strict xfail must name the change that replaces it with a positive assertion. An unexpected pass is a failure until the xfail marker is removed.

3. Verify migration state ​

Record:

  • CTS migration head before and after;
  • Cognitive Companion Alembic head before and after;
  • person identification migration head before and after;
  • schema qualification for every CTS object;
  • up and down behavior, or baseline recreation behavior;
  • whether production data was mutated.

Use not applicable: documentation-only change when no schema changed.

Every CTS DDL object belongs to continuous_tracking. A CTS migration starts with SET search_path = continuous_tracking, public; and schema-qualifies references.

4. Verify wire compatibility ​

For every changed stream or API contract, record:

  • protobuf files and new tag numbers;
  • generated bindings in CTS and Cognitive Companion;
  • producer contract test result;
  • consumer contract test result;
  • old-reader and new-writer result;
  • new-reader and old-writer result;
  • compatibility end condition and owner;
  • confirmation that Redis values are raw protobuf bytes.

Do not leave a dual-codec reader in place as a compatibility shortcut.

5. Record replay and metrics ​

Use synthetic fixtures for committed tests. A private replay manifest stays local and may be referenced only by a non-sensitive hash.

MeasurementResult
Replay scenariosuv run pytest tests/integration/test_unknown_backfill_postgres.py (backfill)
uv run pytest tests/test_visitor_store.py -k test_milestone_completion_criterion (visitor)
Identity swaps
Duplicate-active violations
Unknown rate and baseline delta
Failed projection acknowledgements
Correction projection latency
Pending, verified, and rejected gallery counts
Calibration degraded states

An authoritative identity swap in a reviewed two-person replay blocks release. A higher Unknown rate may be acceptable when it replaces an unsafe confident label, but it must be reported.

6. Verify UI states ​

For a browser-visible change, record desktop and mobile screenshots and check:

  • loading, empty, partial, error, forbidden, stale, and retry states;
  • keyboard operation and focus restoration;
  • identity authority and confidence labels from server fields;
  • browser console warnings and errors.

Use not applicable: no UI change for backend and documentation changes.

7. Write rollback notes ​

The record must state:

  • rollback trigger;
  • code or documentation revert;
  • flag rollback and expected behavior;
  • schema downgrade or compensating migration;
  • projection reconciliation by revision_id;
  • object-retention consequences;
  • verification commands after rollback.

Rollback keeps immutable correction and review history. Disabling ReID voting is safer than restoring unreviewed gallery seeding.

Troubleshooting ​

A Cognitive Companion test cannot start PostgreSQL ​

The backend test suite uses Docker testcontainers. Confirm Docker is running and that the current user can access the Docker socket. Do not replace the database fixture with a mock.

A protobuf test passes in one repository only ​

Regenerate bindings in both CTS and Cognitive Companion, then rerun producer and consumer contract tests. Check that new fields use unused tag numbers.

Use a root-relative VitePress link such as /features/continuous-tracking/identity-integrity/contracts. Do not link to a developer's local filesystem.

Completion checklist ​

  • [ ] Relevant architecture review items pass.
  • [ ] Every changed contract row names producer, consumer, owner, and compatibility end.
  • [ ] Expected tests pass and strict xfails name their removal change.
  • [ ] Test counts and migration status are recorded.
  • [ ] Metrics, screenshots, and rollback notes are present or marked not applicable.
  • [ ] Repository status contains no private or unrelated files.
  • [ ] Public documentation describes deployed behavior and labels accepted future behavior.

Next steps ​

Released under the AGPL-3.0 License.