KB-1EA3 rev 3
P3D — B3-F1a Soft Gate Rollback (rev3)
4 min read Revision 3
p3db3f1asoft-gaterollbackrev32026-05-13
P3D — B3-F1a Soft Gate Rollback (rev3)
Mode: COMPILE-ONLY. NOT executed. Rev: 3. Date: 2026-05-13.
Scope
Drops everything B3-F1b creates and nothing else. Specifically:
- Drops trigger
trg_collection_onboarding_soft_gateonpublic.collection_registry. - Drops function
public.fn_collection_onboarding_soft_gate(). - Drops helper
public.fn_b3f1_log_collection_onboarding_gap(text, text, text, text).
Does NOT touch:
fn_birth_registry_auto,fn_birth_registry_auto_id, or any other birth-pipeline function.- Any other trigger on
collection_registry. dot_config['policy.birth_trigger.accepted_sibling_scope'].system_issuesrows (those are logged data, kept for audit).- B3-A artifacts.
Rollback names match the rev3 artifact set
| object dropped here | matches B3-F1b artifact? |
|---|---|
trg_collection_onboarding_soft_gate |
yes (compiled-trigger.sql.md rev3) |
fn_collection_onboarding_soft_gate() |
yes (compiled-function.sql.md rev3) |
fn_b3f1_log_collection_onboarding_gap(text, text, text, text) |
yes (compiled-function.sql.md rev3, helper section) |
No generic _log_onboarding_gap is dropped (it is not created by rev3).
No COMMENT ON is dropped because rev3 does not install any.
Rollback DDL
-- 1. Drop trigger first (uses the function)
DROP TRIGGER IF EXISTS trg_collection_onboarding_soft_gate
ON public.collection_registry;
-- 2. Drop the gate function
DROP FUNCTION IF EXISTS public.fn_collection_onboarding_soft_gate();
-- 3. Drop the task-specific helper (signature pinned)
DROP FUNCTION IF EXISTS public.fn_b3f1_log_collection_onboarding_gap(text, text, text, text);
Optional post-rollback verification (read-only)
SELECT
(SELECT count(*) FROM pg_trigger t
JOIN pg_class c ON c.oid = t.tgrelid
JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE n.nspname='public' AND c.relname='collection_registry'
AND t.tgname='trg_collection_onboarding_soft_gate'
AND NOT t.tgisinternal) AS trigger_remaining,
(SELECT count(*) FROM pg_proc p
JOIN pg_namespace n ON n.oid = p.pronamespace
WHERE n.nspname='public'
AND p.proname IN ('fn_collection_onboarding_soft_gate',
'fn_b3f1_log_collection_onboarding_gap')
AND p.pronargs IN (0, 4)) AS functions_remaining;
-- expected: 0, 0
Optional cleanup of logged issues (NOT part of rollback)
If reviewer decides to also clear gate-emitted issues (kept by default for audit):
-- READ-ONLY preview:
SELECT count(*) FROM public.system_issues
WHERE source = 'dot-soft-gate-collection-onboarding'
AND issue_type = 'collection_onboarding_gap';
-- Archival (governed action; requires explicit approval):
-- UPDATE public.system_issues
-- SET status = 'archived', resolved_at = now(), resolved_by = 'b3f1a-rollback'
-- WHERE source = 'dot-soft-gate-collection-onboarding'
-- AND issue_type = 'collection_onboarding_gap'
-- AND status = 'open';
The archival statement is intentionally commented out — rollback does not mutate logged data without explicit approval.