113 lines
5.8 KiB
SQL
113 lines
5.8 KiB
SQL
-- v15.0 execution-completeness delta.
|
|
-- Evidence evaluation/proposal automation only. Automatic model activation, client publication,
|
|
-- automatic order submission and KIS submission remain forbidden.
|
|
|
|
alter table evaluation.model_operation_schedule
|
|
add column if not exists dispatch_revision integer not null default 0 check (dispatch_revision >= 0),
|
|
add column if not exists anchor_at timestamptz null,
|
|
add column if not exists timezone_id text not null default 'UTC',
|
|
add column if not exists last_completed_at timestamptz null,
|
|
add column if not exists last_hold_code text null;
|
|
|
|
update evaluation.model_operation_schedule
|
|
set anchor_at = coalesce(anchor_at, next_due_at)
|
|
where anchor_at is null;
|
|
|
|
alter table evaluation.model_operation_request
|
|
add column if not exists execution_revision integer not null default 1 check (execution_revision > 0),
|
|
add column if not exists last_heartbeat_at timestamptz null,
|
|
add column if not exists hold_until timestamptz null,
|
|
add column if not exists status_reason_code text null,
|
|
add column if not exists scheduled_for timestamptz null;
|
|
|
|
create table if not exists evaluation.prediction_evaluation_window (
|
|
window_request_id uuid primary key,
|
|
prediction_evidence_id uuid not null,
|
|
scope_key text not null,
|
|
calendar_id text not null,
|
|
prediction_session date not null,
|
|
window_trading_days integer not null check (window_trading_days in (1,5,20,63,126,252)),
|
|
due_session date not null,
|
|
status text not null check (status in ('PLANNED','MATURED','EVALUATED','BUSINESS_HOLD','QUARANTINED')),
|
|
dataset_id text not null,
|
|
model_version text not null,
|
|
metric_definition_set_hash text not null,
|
|
content_hash text not null unique,
|
|
created_at timestamptz not null,
|
|
matured_at timestamptz null,
|
|
evaluated_at timestamptz null,
|
|
check (due_session >= prediction_session),
|
|
unique (prediction_evidence_id, window_trading_days, metric_definition_set_hash)
|
|
);
|
|
|
|
create index if not exists ix_prediction_evaluation_window_due
|
|
on evaluation.prediction_evaluation_window (due_session, status, scope_key)
|
|
where status in ('PLANNED','BUSINESS_HOLD');
|
|
|
|
create table if not exists evaluation.metric_cohort_definition (
|
|
cohort_code text not null,
|
|
definition_version integer not null check (definition_version > 0),
|
|
scope_expression text not null,
|
|
inclusion_expression text not null,
|
|
exclusion_expression text not null,
|
|
minimum_sample_size integer not null check (minimum_sample_size >= 0),
|
|
effective_from timestamptz not null,
|
|
effective_to timestamptz null,
|
|
status text not null check (status in ('PROPOSED','APPROVED','RETIRED')),
|
|
content_hash text not null unique,
|
|
approved_by text null,
|
|
approved_at timestamptz null,
|
|
primary key (cohort_code, definition_version),
|
|
check (effective_to is null or effective_to > effective_from),
|
|
check (status <> 'APPROVED' or (approved_by is not null and approved_at is not null))
|
|
);
|
|
|
|
create table if not exists governance.ui_contract_release (
|
|
ui_contract_release_id uuid primary key,
|
|
contract_version text not null,
|
|
provider_id text not null,
|
|
provider_version text not null,
|
|
capability_hash text not null,
|
|
screen_template_hash text not null,
|
|
accessibility_evidence_hash text not null,
|
|
visual_regression_hash text null,
|
|
performance_evidence_hash text null,
|
|
status text not null check (status in ('PROPOSED','APPROVED','RETIRED')),
|
|
approved_by text null,
|
|
approved_at timestamptz null,
|
|
created_at timestamptz not null default now(),
|
|
content_hash text not null unique,
|
|
unique (contract_version, provider_id, provider_version),
|
|
check (status <> 'APPROVED' or (approved_by is not null and approved_at is not null))
|
|
);
|
|
|
|
-- Evaluation windows, cohort definitions and UI contract approvals are immutable evidence.
|
|
drop trigger if exists prediction_evaluation_window_append_only on evaluation.prediction_evaluation_window;
|
|
create trigger prediction_evaluation_window_append_only
|
|
before update or delete on evaluation.prediction_evaluation_window
|
|
for each row execute function building_blocks.prevent_append_only_change();
|
|
|
|
drop trigger if exists metric_cohort_definition_append_only on evaluation.metric_cohort_definition;
|
|
create trigger metric_cohort_definition_append_only
|
|
before update or delete on evaluation.metric_cohort_definition
|
|
for each row execute function building_blocks.prevent_append_only_change();
|
|
|
|
drop trigger if exists ui_contract_release_append_only on governance.ui_contract_release;
|
|
create trigger ui_contract_release_append_only
|
|
before update or delete on governance.ui_contract_release
|
|
for each row execute function building_blocks.prevent_append_only_change();
|
|
|
|
comment on table evaluation.prediction_evaluation_window is
|
|
'Immutable 1/5/20/63/126/252 trading-session maturity plan. Revisions create new evidence rows.';
|
|
comment on table governance.ui_contract_release is
|
|
'Approved normalized UI contract/provider evidence. It does not authorize feature behavior or investment decisions.';
|
|
|
|
-- Integrity audit remains disabled until approved calendar/cohort definitions and alert runbook exist.
|
|
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-000000000040','J40','EvaluationWindowIntegrityAudit','GLOBAL','DAILY','EVALUATION_ONLY','q-control',1,false,now()+interval '1 day',interval '1 day','Quant/QA','Data/SRE','GLOBAL_UTC','FIXED_CADENCE','["TRADING_CALENDAR_APPROVED","METRIC_COHORT_APPROVED"]','LATEST_ONLY',1,now()+interval '1 day','UTC')
|
|
on conflict (operation_code, scope_key, schedule_version) do nothing;
|