================================================================ STOCKLAB — FINAL RELEASE GATE 2 SL-001 → SL-009 FAIL-CLOSED PRODUCTION = READ ONLY ================================================================ STAMP=20260910-235000-FINAL2 RC=/data/files/bmw/stocklab-audit-remediation-SL006-SL007-SL008-SL009-20260910-224500-FIX2 QA=/data/files/bmw/stocklab-audit-remediation-FINAL-20260910-235000-FINAL2 ================================================================ 0. RC / PRISTINE DISCOVERY ================================================================ RC_SOURCE=PASS PRISTINE=/data/files/bmw/stocklab-audit-remediation-SL006-SL007-SL008-SL009-20260910-224500/pristine PRISTINE_SOURCE=PASS MIGRATION=/data/files/bmw/stocklab-audit-remediation-SL006-SL007-SL008-SL009-20260910-224500-FIX2/app/alembic/versions/0005_harden_financial_period_uniqueness.py MIGRATION_FILE=PASS ================================================================ 1. BASE IMAGE INTEGRITY ================================================================ IMAGE_ID=413a2618ce5e1832dc08fe1ee0c14a449374d8b3c3c94723bd87a6a639248cbe IMAGE_DIGEST=localhost/stocklab-backend@sha256:924c7d7641dacf65536f517cf9aa42f2f661431afa4d92e6b03a6059d34612db BASE_IMAGE_ID=PASS BASE_IMAGE_DIGEST=PASS ================================================================ 2. WHOLE RC PYTHON SYNTAX ================================================================ PYTHON_FILES_CHECKED= 140 WHOLE_RC_PYCOMPILE=PASS ================================================================ 3. STATIC CONTRACTS ================================================================ AST_recompute=PASS AST_rankings=PASS AST_resolver=PASS AST_validation=PASS AST_ingest=PASS AST_celery=PASS AST_common=PASS AST_executor=PASS AST_fmp=PASS AST_eodhd=PASS SL001_TTM_PERIOD_END=PASS SL001_TTM_FILING_DATE=PASS SL001_AS_OF=PASS SL002_EXPLICIT_IMPORTS=PASS SL002_INGEST_IMPORT=PASS SL002_RECOMPUTE_IMPORT=PASS SL003_SCORE_LATEST=PASS SL003_VALUATION_LATEST=PASS SL004_FIELD_CONFLICT=PASS SL005_INGEST_VALIDATION=PASS SL006_FMP_PROFILE_CURRENCY=PASS SL006_FMP_PRICE_CURRENCY=PASS SL006_EODHD_PROFILE_CURRENCY=PASS SL006_EODHD_PRICE_CURRENCY=PASS SL008_HTTPX_TRANSPORT=PASS SL009_EMPTY_PROVIDER_GUARD=PASS SL015_FILTER_BOUND=PASS SCREENER_PERCENTAGE_NORMALIZATION=PASS STATIC_CONTRACT_GATE=PASS STATIC_GATE=PASS ================================================================ 4. RUNTIME REMEDIATION RECHECK ================================================================ RUNTIME_REMEDIATION_GATE=FAIL ================================================================ 5. SL-008 — ACTUAL CELERY REGISTRY ================================================================ SL008_CELERY_FINAL=FAIL ================================================================ 6. REAL POSTGRESQL 16 — ALEMBIC 0001 → 0005 ================================================================ POSTGRES16_START=PASS INFO [alembic.runtime.migration] Context impl PostgresqlImpl. INFO [alembic.runtime.migration] Will assume transactional DDL. INFO [alembic.runtime.migration] Running upgrade -> 0001, initial schema INFO [alembic.runtime.migration] Running upgrade 0001 -> 0002, add confidence_score/data_quality_score columns to scores INFO [alembic.runtime.migration] Running upgrade 0002 -> 0003, add revoked_tokens table (refresh-token revocation/rotation) INFO [alembic.runtime.migration] Running upgrade 0003 -> 0004, add alert_events and emerging_classifications tables INFO [alembic.runtime.migration] Running upgrade 0004 -> 0005, Harden nullable financial-period uniqueness. ALEMBIC_0001_TO_0005=PASS ALEMBIC_HEAD=0005 ALEMBIC_HEAD_0005=PASS ---------------------------------------------------------------- SL-007 — REAL CONSTRAINT BEHAVIOR ---------------------------------------------------------------- UNIQUE NULLS NOT DISTINCT (security_id, period_end, period_type, filing_date) SL007_CONSTRAINT=PASS ERROR: null value in column "company_id" of relation "securities" violates not-null constraint DETAIL: Failing row contains (1, null, null, FINALQA, null, null, COMMON, null, t, null, null, ACTIVE, null, 2026-09-10 18:48:55.929843+00, 2026-09-10 18:48:55.929843+00).