C2 20260329
Submission ID: C2-20260329 Submitted by: jer Date: 2026-03-29 Policy artifact location: v22.0 C2 Retention Policy Proposal
Field-level policy table:
-
field:
decisionretention_window:365 daysdeletion_trigger:time_based,decision_supersededdeletion_executor:manual_governance_runbookverification_evidence: pending dated read-only query output -
field:
decision_dateretention_window:365 daysdeletion_trigger:time_based,decision_supersededdeletion_executor:manual_governance_runbookverification_evidence: pending dated read-only query output -
field:
redline_checklist_versionretention_window:365 daysdeletion_trigger:time_based,decision_supersededdeletion_executor:manual_governance_runbookverification_evidence: pending dated read-only query output -
field:
violations[]retention_window:365 daysdeletion_trigger:time_based,decision_supersededdeletion_executor:manual_governance_runbookverification_evidence: pending dated read-only query output -
field:
compensating_controls[]retention_window:365 daysdeletion_trigger:time_based,decision_supersededdeletion_executor:manual_governance_runbookverification_evidence: pending dated read-only query output -
field:
owners[]retention_window:365 daysdeletion_trigger:time_based,decision_supersededdeletion_executor:manual_governance_runbookverification_evidence: pending dated read-only query output
Privacy sign-off:
- Reviewer: jer
- Date: 2026-03-29
- Decision: approved
- Notes: Approval covers the existing 365-day retention policy with
time_basedanddecision_supersededdeletion triggers andmanual_governance_runbookexecutor, with no policy changes.
Verification evidence:
- Status: complete
- Environment used: Supabase Dashboard SQL Editor
- Execution timestamp: approximately 2026-03-29 20:10 America/Toronto (exact time not captured)
- Reviewer note: No pilot integration feasibility decision rows currently exist, so there are no deletion candidates under the approved policy.
- Query executed:
with ordered as (
select
id,
decision,
decision_date,
created_at,
row_number() over (order by decision_date desc, created_at desc) as recency_rank
from pilot_integration_feasibility_decisions
),
aged_candidates as (
select id, 'older_than_365_days' as candidate_reason
from ordered
where decision_date < (current_date - interval '365 days')
),
superseded_candidates as (
select id, 'superseded_by_newer_decision' as candidate_reason
from ordered
where recency_rank > 1
),
all_candidates as (
select * from aged_candidates
union all
select * from superseded_candidates
)
select
(select count(*) from pilot_integration_feasibility_decisions) as total_rows,
(select count(*) from aged_candidates) as aged_candidate_rows,
(select count(*) from superseded_candidates) as superseded_candidate_rows,
(select count(distinct id) from all_candidates) as unique_candidate_rows;
Observed result:
| total_rows | aged_candidate_rows | superseded_candidate_rows | unique_candidate_rows |
|---|---|---|---|
| 0 | 0 | 0 | 0 |