Add 12 Tier 1 procedural deadline rules from curie's audit §10 (docs/research-deadlines-completeness-2026-05-25.md), backfill the UPC R.104/R.105 Interim Conference citation on upc.inf.cfi.interim (m/paliad#116 / m's 2026-05-25 report), and fold in the audit Q6 cleanup of the 40 _archived_litigation.* rows. New rules: T1.1 upc.inf.cfi.cmo_review 15d / R.333.2 T1.2 upc.inf.cfi.confidentiality_response 14d / R.262.2 (trigger 25) T1.3 upc.apl.order.grounds_orders 15d / R.224.2(b) T1.4 upc.apl.order.response_orders 15d / R.235.2 T1.5 upc.inf.cfi.cons_orders 2mo / R.118.4 T1.6 upc.inf.cfi.rectification 1mo / R.353 T1.7 upc.pi.cfi.deficiency 14d / R.207.6(a) T1.8 upc.pi.cfi.merits_start 31d OR 20wd (max) / R.213 + R.198.1 T1.9 upc.inf.cfi.translation_request 1mo BEFORE oral / R.109.1 T1.10 upc.inf.cfi.interpreter_cost 2wk BEFORE oral / R.109.4 T1.11 upc.inf.cfi.translations_lodge 2wk / R.109.5 (trigger 113) T1.12 upc.pi.cfi.response UPDATE: re-anchor on .app, court-set T1.8 uses Wave 2 Slice A primitives (mig 128: working_days unit + combine_op='max'). T1.9/T1.10 use timing='before' with the backward-snap path in deadline_calculator.go. Also drops the deadline_rule_audit.rule_id FK constraint. The mig 079 audit trigger had a latent bug — it could not log DELETEs because the FK rejected the post-delete INSERT (count(*) WHERE action='delete' was 0 across the entire history). Audit tables are append-only history and should not FK-constrain on live entity tables; before_json preserves the full row state. Unblocking this also unblocks the §13b Q6 cleanup. Verified on Supabase: 13 rows present in post-fix shape, all assertions in the DO-block pass, audit log now records 11 creates + 2 updates + 40 deletes for this migration.
77 lines
3.0 KiB
SQL
77 lines
3.0 KiB
SQL
-- Rollback of mig 132 (t-paliad-284 Wave 1 + m/paliad#116).
|
|
--
|
|
-- Reverses §0 (R.104/R.105 citation backfill) + §1..§11 (11 Tier 1
|
|
-- INSERTs) + §12 (T1.12 re-anchor of upc.pi.cfi.response).
|
|
--
|
|
-- Does NOT reverse §13b (Q6 archived-litigation cleanup) — those rows
|
|
-- were already in lifecycle_state='archived' before deletion and are not
|
|
-- surfaced by any product code path. Restoring them would require the
|
|
-- pre-mig-132 backup. Leaving them gone is the correct rollback choice;
|
|
-- emergency restore goes via mig 123 backup snapshot.
|
|
--
|
|
-- DOES restore §13a (re-add the deadline_rule_audit.rule_id FK) so the
|
|
-- audit-table schema returns to its pre-mig-132 shape on rollback. Any
|
|
-- orphan audit rows accumulated under mig 132 (rule_id pointing at
|
|
-- now-deleted rules) would block the FK re-add; the rollback DELETE
|
|
-- below removes them first.
|
|
|
|
SELECT set_config(
|
|
'paliad.audit_reason',
|
|
'mig 132 down: rollback Wave 1 Tier 1 rule additions + R.105 citation backfill + T1.12 re-anchor (t-paliad-284 / m/paliad#116)',
|
|
true);
|
|
|
|
-- §12 down — un-re-anchor upc.pi.cfi.response back to its broken root state.
|
|
UPDATE paliad.deadline_rules
|
|
SET parent_id = NULL,
|
|
is_court_set = false,
|
|
rule_code = NULL,
|
|
legal_source = NULL,
|
|
updated_at = now()
|
|
WHERE submission_code = 'upc.pi.cfi.response'
|
|
AND is_active = true
|
|
AND lifecycle_state = 'published'
|
|
AND is_court_set = true
|
|
AND rule_code = 'RoP.211.2';
|
|
|
|
-- §1..§11 down — delete the 11 Tier 1 INSERTs by submission_code.
|
|
DELETE FROM paliad.deadline_rules
|
|
WHERE submission_code IN (
|
|
'upc.inf.cfi.cmo_review',
|
|
'upc.inf.cfi.confidentiality_response',
|
|
'upc.apl.order.response_orders', -- delete child first (FK to grounds_orders)
|
|
'upc.apl.order.grounds_orders',
|
|
'upc.inf.cfi.cons_orders',
|
|
'upc.inf.cfi.rectification',
|
|
'upc.pi.cfi.deficiency',
|
|
'upc.pi.cfi.merits_start',
|
|
'upc.inf.cfi.translation_request',
|
|
'upc.inf.cfi.interpreter_cost',
|
|
'upc.inf.cfi.translations_lodge'
|
|
)
|
|
AND lifecycle_state = 'published';
|
|
|
|
-- §0 down — clear the R.104/R.105 citation on upc.inf.cfi.interim.
|
|
UPDATE paliad.deadline_rules
|
|
SET rule_code = NULL,
|
|
legal_source = NULL,
|
|
rule_codes = NULL,
|
|
updated_at = now()
|
|
WHERE submission_code = 'upc.inf.cfi.interim'
|
|
AND is_active = true
|
|
AND lifecycle_state = 'published'
|
|
AND rule_code = 'RoP.104'
|
|
AND legal_source = 'UPC.RoP.104';
|
|
|
|
-- §13a down — re-add the deadline_rule_audit.rule_id FK with the
|
|
-- original ON DELETE CASCADE shape. Purge any orphan audit rows first
|
|
-- (audit entries pointing at rule_ids that no longer exist in
|
|
-- deadline_rules) so the FK re-add doesn't fail validation.
|
|
DELETE FROM paliad.deadline_rule_audit a
|
|
WHERE NOT EXISTS (
|
|
SELECT 1 FROM paliad.deadline_rules dr WHERE dr.id = a.rule_id
|
|
);
|
|
|
|
ALTER TABLE paliad.deadline_rule_audit
|
|
ADD CONSTRAINT deadline_rule_audit_rule_id_fkey
|
|
FOREIGN KEY (rule_id) REFERENCES paliad.deadline_rules(id) ON DELETE CASCADE;
|