Files
KArtSell.Aegis/db/migrations/0021_v16_reference_implementation_closure.sql
kjh2064 dcd1322d41
ci / backend (push) Failing after 12s
ci / frontend (push) Failing after 19s
ci / static (push) Failing after 45s
Initial commit: Add project files
2026-08-02 05:15:36 +09:00

88 lines
4.8 KiB
SQL

-- v16.0 reference implementation closure.
-- Evaluation/proposal/audit only. Automatic model activation, customer publication,
-- automatic order submission and KIS submission remain forbidden.
create table if not exists evaluation.model_operation_lease (
operation_code text not null,
scope_key text not null,
fencing_token bigint not null check (fencing_token > 0),
lease_owner text not null,
acquired_at timestamptz not null,
expires_at timestamptz not null,
heartbeat_at timestamptz not null,
dispatch_revision integer not null check (dispatch_revision >= 0),
primary key (operation_code, scope_key),
check (expires_at > acquired_at),
check (heartbeat_at >= acquired_at)
);
create table if not exists evaluation.model_evaluation_reconciliation (
reconciliation_id uuid primary key,
prediction_evidence_id uuid not null,
window_trading_days integer not null check (window_trading_days in (1,5,20,63,126,252)),
action text not null check (action in ('NONE','PLAN_MISSING','QUARANTINE_DUPLICATE','BUSINESS_HOLD_LATE','RECALCULATE_REVISION')),
metric_definition_set_hash text not null,
cohort_definition_hash text not null,
dataset_id text not null,
source_revision_hash text not null,
reason_code text not null,
content_hash text not null unique,
created_at timestamptz not null,
unique (prediction_evidence_id, window_trading_days, content_hash)
);
create table if not exists building_blocks.projection_rebuild_request (
rebuild_request_id uuid primary key,
projection_name text not null,
requested_version integer not null check (requested_version > 0),
source_watermark text not null,
requested_by text not null,
reason_code text not null,
status text not null check (status in ('REQUESTED','RUNNING','SUCCEEDED','FAILED','QUARANTINED')),
before_hash text null,
after_hash text null,
requested_at timestamptz not null,
completed_at timestamptz null,
content_hash text not null unique,
check (completed_at is null or completed_at >= requested_at)
);
create table if not exists governance.ui_adapter_compatibility_evidence (
compatibility_evidence_id uuid primary key,
contract_version text not null,
provider_id text not null,
provider_version text not null,
capability_hash text not null,
contract_test_hash text not null,
accessibility_test_hash text not null,
visual_test_hash text null,
performance_test_hash text null,
rollback_test_hash text null,
status text not null check (status in ('PROPOSED','APPROVED','REJECTED','RETIRED')),
approved_by text null,
approved_at timestamptz null,
created_at timestamptz not null,
content_hash text not null unique,
check (status <> 'APPROVED' or (approved_by is not null and approved_at is not null))
);
drop trigger if exists model_evaluation_reconciliation_append_only on evaluation.model_evaluation_reconciliation;
create trigger model_evaluation_reconciliation_append_only before update or delete on evaluation.model_evaluation_reconciliation
for each row execute function building_blocks.prevent_append_only_change();
drop trigger if exists ui_adapter_compatibility_evidence_append_only on governance.ui_adapter_compatibility_evidence;
create trigger ui_adapter_compatibility_evidence_append_only before update or delete on governance.ui_adapter_compatibility_evidence
for each row execute function building_blocks.prevent_append_only_change();
insert into evaluation.model_operation_schedule
(schedule_id, operation_code, operation_name, scope_key, cadence, automation_mode, queue_name,
schedule_version, enabled, next_due_at, max_lag, primary_owner, secondary_owner,
calendar_id, due_policy, dependency_json, catch_up_policy, max_catch_up, anchor_at, timezone_id)
values
('e4100000-0000-4000-8000-000000000041','J41','SchedulerLeaseIntegrityAudit','GLOBAL','DAILY','EVALUATION_ONLY','q-control',1,false,now()+interval '1 day',interval '1 day','SRE/QA','BE/DBA','GLOBAL_UTC','FIXED_CADENCE','["LEASE_CONTRACT_APPROVED","ALERT_RUNBOOK_APPROVED"]','LATEST_ONLY',1,now()+interval '1 day','UTC'),
('e4100000-0000-4000-8000-000000000042','J42','ModelEvaluationReconciliation','GLOBAL','DAILY','EVALUATION_ONLY','q-evaluation',1,false,now()+interval '1 day',interval '1 day','Quant/QA','Data/Risk','GLOBAL_UTC','FIXED_CADENCE','["TRADING_CALENDAR_APPROVED","METRIC_COHORT_APPROVED","SOURCE_REVISION_INDEX_READY"]','LATEST_ONLY',1,now()+interval '1 day','UTC')
on conflict (operation_code, scope_key, schedule_version) do nothing;
comment on table evaluation.model_operation_lease is 'Lease fencing prevents stale workers from advancing schedules or duplicating model evaluation side effects.';
comment on table evaluation.model_evaluation_reconciliation is 'Append-only evaluation repair plan. It never activates a model or submits an order.';