mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-11 13:52:20 +00:00
A new nullable column, coach_messages.results_encrypted, holds the tables of values a turn read as AES-GCM ciphertext; only their metadata rides the plaintext provenance. readMessageResults serves them to the owner, each table whole or withheld with a reason. The provenance restore learns the steps, method, table metadata, chips, clarification and the forced-answer marker, entry by entry against the wire schema. The column is registered for key rotation, carried through both backup formats (ciphertext in a disaster-recovery file, readable JSON in a portable one) and goes with its row on conversation delete and wipe.
15 lines
763 B
SQL
15 lines
763 B
SQL
-- The tables of values a Coach turn read, stored with the assistant message
|
|
-- that showed them: a JSON array of result tables, AES-256-GCM encrypted in
|
|
-- the same Bytes codec as the message body. The values are health data, so
|
|
-- they never sit in the plaintext `metric_source_json`, which carries only the
|
|
-- tables' metadata (ref, source, shape, row count).
|
|
--
|
|
-- A stored table keeps the values the answer was given with; a later edit or
|
|
-- sync does not rewrite what an earlier answer showed. The column goes with
|
|
-- its row, so deleting a conversation or wiping the account removes it by
|
|
-- the existing cascade.
|
|
--
|
|
-- Additive only: a nullable column, no table rewrite, no data change.
|
|
|
|
ALTER TABLE "coach_messages" ADD COLUMN "results_encrypted" BYTEA;
|