✔ D11 identical full generation preserves reusable rows and valid earlier checkpoint provenance (2210.9208ms) ℹ {"case":"identical full","before":5,"after":6,"writes":[["user_pr_overview_snapshot_headers","INSERT"],["user_pr_overview_snapshot_headers","INSERT"],["user_pr_overview_snapshot_headers","INSERT"],["user_pr_overview_rollover_state","UPDATE"]]} ✔ D11 real set edits, source replacement and deletion write only affected reusable rows (3269.0431ms) ℹ {"case":"same source set 100 to 110","writes":[["user_calendar_summary_dirty_dates","INSERT"],["user_calendar_summary_dirty_dates","UPDATE"],["user_calendar_summary_dirty_dates","UPDATE"],["user_calendar_summary_dirty_dates","UPDATE"],["user_calendar_summary_dirty_dates","UPDATE"],["user_calendar_summary_dirty_dates","DELETE"],["user_exercise_session_rollups","UPDATE"],["user_exercise_records","UPDATE"],["user_exercise_stats","UPDATE"],["user_exercise_period_stats","UPDATE"],["user_exercise_period_stats","UPDATE"],["user_exercise_period_stats","UPDATE"],["user_exercise_period_stats","UPDATE"],["user_exercise_period_stats","UPDATE"],["user_exercise_pr_events","UPDATE"],["user_exercise_pr_states","UPDATE"],["user_exercise_strength_observations","UPDATE"],["user_exercise_set_score_states","UPDATE"],["user_pr_exercise_summary_snapshots","INSERT"],["user_training_period_stats","UPDATE"],["user_training_period_stats","UPDATE"],["user_training_period_stats","UPDATE"],["user_training_period_stats","UPDATE"],["user_training_period_stats","UPDATE"],["user_calendar_day_summaries","UPDATE"],["user_pr_overview_snapshot_headers","INSERT"],["user_pr_overview_snapshot_headers","INSERT"],["user_pr_overview_snapshot_headers","INSERT"],["user_pr_exercise_summary_snapshots","INSERT"],["user_pr_exercise_summary_snapshots","INSERT"],["user_pr_overview_rollover_state","UPDATE"],["user_stats_sequential_days","UPDATE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_overview_snapshot_headers","DELETE"],["user_pr_overview_snapshot_headers","DELETE"],["user_pr_overview_snapshot_headers","DELETE"]]} ℹ {"case":"equal values with a real new source","writes":[["user_calendar_summary_dirty_dates","INSERT"],["user_calendar_summary_dirty_dates","UPDATE"],["user_exercise_records","UPDATE"],["user_exercise_session_rollups","UPDATE"],["user_exercise_strength_daily","DELETE"],["user_exercise_strength_observations","DELETE"],["user_exercise_strength_states","DELETE"],["user_calendar_summary_dirty_dates","UPDATE"],["user_calendar_summary_dirty_dates","UPDATE"],["user_calendar_summary_dirty_dates","UPDATE"],["user_calendar_summary_dirty_dates","UPDATE"],["user_calendar_summary_dirty_dates","DELETE"],["user_exercise_session_rollups","UPDATE"],["user_exercise_records","UPDATE"],["user_exercise_strength_observations","INSERT"],["user_exercise_strength_daily","INSERT"],["user_exercise_strength_states","INSERT"],["user_calendar_day_summaries","UPDATE"],["user_pr_overview_snapshot_headers","INSERT"],["user_pr_overview_snapshot_headers","INSERT"],["user_pr_overview_snapshot_headers","INSERT"],["user_pr_exercise_summary_snapshots","INSERT"],["user_pr_exercise_summary_snapshots","INSERT"],["user_pr_exercise_summary_snapshots","INSERT"],["user_pr_overview_rollover_state","UPDATE"],["user_stats_sequential_days","UPDATE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"]]} ℹ {"case":"remove one canonical set through save","writes":[["user_calendar_summary_dirty_dates","INSERT"],["user_calendar_summary_dirty_dates","UPDATE"],["user_exercise_records","UPDATE"],["user_exercise_session_rollups","UPDATE"],["user_exercise_strength_daily","DELETE"],["user_exercise_strength_observations","DELETE"],["user_exercise_strength_states","DELETE"],["user_calendar_summary_dirty_dates","UPDATE"],["user_calendar_summary_dirty_dates","UPDATE"],["user_calendar_summary_dirty_dates","UPDATE"],["user_calendar_summary_dirty_dates","DELETE"],["user_exercise_session_rollups","UPDATE"],["user_exercise_records","UPDATE"],["user_exercise_stats","UPDATE"],["user_exercise_period_stats","UPDATE"],["user_exercise_period_stats","UPDATE"],["user_exercise_period_stats","UPDATE"],["user_exercise_period_stats","UPDATE"],["user_exercise_period_stats","UPDATE"],["user_exercise_strength_daily","INSERT"],["user_exercise_strength_states","INSERT"],["user_training_period_stats","UPDATE"],["user_training_period_stats","UPDATE"],["user_training_period_stats","UPDATE"],["user_training_period_stats","UPDATE"],["user_training_period_stats","UPDATE"],["user_calendar_day_summaries","UPDATE"],["user_pr_overview_snapshot_headers","INSERT"],["user_pr_overview_snapshot_headers","INSERT"],["user_pr_overview_snapshot_headers","INSERT"],["user_pr_exercise_summary_snapshots","INSERT"],["user_pr_exercise_summary_snapshots","INSERT"],["user_pr_exercise_summary_snapshots","INSERT"],["user_pr_overview_rollover_state","UPDATE"],["user_stats_sequential_days","UPDATE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_overview_snapshot_headers","DELETE"],["user_pr_overview_snapshot_headers","DELETE"],["user_pr_overview_snapshot_headers","DELETE"]]} ℹ {"case":"delete edited session through delete command","writes":[["user_calendar_summary_dirty_dates","INSERT"],["user_exercise_records","UPDATE"],["user_exercise_session_rollups","DELETE"],["user_exercise_stats","UPDATE"],["user_exercise_stats","UPDATE"],["user_training_period_stats","DELETE"],["user_exercise_strength_observations","DELETE"],["user_exercise_records","UPDATE"],["user_exercise_records","UPDATE"],["user_exercise_stats","UPDATE"],["user_exercise_strength_daily","DELETE"],["user_exercise_strength_states","DELETE"],["user_stats_sequential_days","DELETE"],["user_calendar_summary_dirty_dates","DELETE"],["user_calendar_day_summaries","DELETE"],["user_training_period_stats","DELETE"],["user_training_period_stats","DELETE"],["user_training_period_stats","DELETE"],["user_training_period_stats","DELETE"],["user_exercise_pr_states","INSERT"],["user_exercise_pr_events","DELETE"],["user_exercise_pr_states","DELETE"],["user_exercise_period_stats","DELETE"],["user_exercise_period_stats","DELETE"],["user_exercise_period_stats","DELETE"],["user_exercise_period_stats","DELETE"],["user_exercise_period_stats","DELETE"],["user_exercise_records","DELETE"],["user_exercise_stats","UPDATE"],["user_exercise_strength_states","INSERT"],["user_exercise_set_score_states","UPDATE"],["user_pr_overview_snapshot_headers","INSERT"],["user_pr_overview_snapshot_headers","INSERT"],["user_pr_overview_snapshot_headers","INSERT"],["user_pr_exercise_summary_snapshots","INSERT"],["user_pr_exercise_summary_snapshots","INSERT"],["user_pr_exercise_summary_snapshots","INSERT"],["user_pr_overview_rollover_state","UPDATE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_exercise_summary_snapshots","DELETE"],["user_pr_overview_snapshot_headers","DELETE"],["user_pr_overview_snapshot_headers","DELETE"],["user_pr_overview_snapshot_headers","DELETE"]]} ✔ D10: another scanner skips the held source and cannot see an uncommitted cursor or request (876.6108ms) ✔ D10: lower catalog sequence committed after a completed fanout still requests a new generation (623.8078ms) ✔ D10: a catalog scanner skips another held scope without waiting or duplicating its request (617.214ms) ✔ D10: rollover converges through D08 claim/compute/publish while retaining the prior generation (575.4648ms) ✔ D10: disconnected scanner rolls back its cursor and enqueue, then another connection resumes (628.9238ms) ✔ D10: a writer-held enqueue lock records a retry while the following inactive owner advances (629.5462ms) ✔ D10: a lower key committed after the watermark pass is found on the next sweep (656.5101ms) ✔ D11 refuses a complete snapshot with a stale non-snapshot generation (514.0227ms) ✔ D11 refuses an old source after another canonical save and preserves pending work (390.132ms) ✔ D11 computation records every completed stage before publication (486.6001ms) ✔ D11 rejects missing period output without making stale data fresh (373.0923ms) ✔ D11 rejects incomplete stage list without making stale data fresh (460.6945ms) ✔ D11 rejects missing output row without making stale data fresh (405.8459ms) ✔ D11 rejects missing snapshot membership without making stale data fresh (372.617ms) ✔ D11 cutover preserves and resumes legacy computed, including rollback and rerun (734.6133ms) ✔ D11 cutover preserves and resumes legacy processing-without-run, including rollback and rerun (795.8361ms) ✔ D11 cutover preserves and resumes legacy failed-without-run, including rollback and rerun (713.6653ms) ✔ D11 legacy payload left behind a live migration lock is rejected and retried by the new publisher (743.5926ms) ✔ D11 cutover retains newer pending work and absorbs the older failed scope (779.5287ms) ✔ D11 cutover does not reset an exhausted retry budget (392.5101ms) ✔ D11 synchronous failure retains the shared backoff and cannot immediately spend another attempt (802.8951ms) ✔ D11 full/incremental shadows agree on every edited/imported corpus snapshot, provenance and public DTO (24662.5777ms) ℹ 12 canonical snapshots, 11 incremental candidates; numeric/logical-key/provenance/DTO differences: 0 ✔ D06 ISO-year week, same-day sessions, shared-set counts and exact sums survive full rebuild (2374.9598ms) ✔ D06 quarter date move and deletion of the maximum remove old buckets and reevaluate max (2246.8166ms) ✔ D06 append writes each changed exercise period once and preserves unrelated buckets physically (928.5788ms) ✔ D06 period average uses the observation sum and count, never the average of daily averages (1364.2068ms) ✔ D06 missing, incomplete and mismatched derived stages cannot write outputs or advance freshness (508.5725ms) ✔ D06 listed derived changes update exact period/calendar values and full uses the same assemblers (1029.919ms) ✔ D06 old source date affects the Thursday parent across the year boundary (1865.9947ms) ✔ D06 append writes one complete row per changed training/calendar bucket without rewriting previous years (921.4827ms) ✔ D06 incomplete derived input fails a real worker generation and normal retry converges without changing source facts (1651.817ms) ✔ D06 all period/calendar fields match the frozen pre-D06 full corpus (6215.1744ms) ✔ ① oracle 사례: 적재 → 큐 소진 → 투영 값이 손 계산 기대값과 같다 (6959.1275ms) ✔ ② D-1 결정성(oracle 소유자): 전체 재계산 전후 스냅샷이 같다 (6828.1705ms) ✔ ③ 정책 불변식(oracle 소유자): 위반 0 (31.9629ms) ✔ 고정 anchor: 다른 실행일의 창을 거부하고 원래 날짜로 발행하면 같은 스냅샷을 얻는다 (143.5148ms) [d01] history-1y: 세션 260개 적재 · 큐 소진 1라운드 · 스냅샷 exercise_set_observations=3120 exercise_strength_observations=3120 exercise_strength_daily=780 exercise_strength_states=13 exercise_max_rep_observations=1200 exercise_session_rollups=780 exercise_records=780 exercise_stats=13 exercise_period_stats=1715 training_period_stats=332 calendar_day_summaries=260 exercise_pr_events=8 exercise_pr_states=8 exercise_set_score_states=13 pr_exercise_summary_snapshots=72 pr_overview_snapshot_headers=3 ✔ ④ workload history-1y: 적재 → 결정성 → 불변식 → 기준 요약 (56142.2462ms) ✔ 장부 형식 — version 1·단계 6·투영 및 제어 표 23 (1.2149ms) ✔ ① 현재 작성자 = schema.sql 실제 작성 함수·열 (드리프트 없음) (145.7106ms) ✔ ② 표마다 목표 작성자 하나, 작성자 정의가 그 표를 소유한다 (0.3457ms) ✔ ③ 논리 키·제외 열은 실제 열이고 겹치지 않으며 사유가 정의돼 있다 (12.6412ms) ✔ ④ 동적 발행은 닫힌 18개 출력에만 등재되며 실제 SQL 도달 범위와 같다 (10.6354ms) ✔ 동적 작성자 해석은 public 발행만 잡고 temp 계산은 제외하며 미등록 출력은 거부한다 (0.7466ms) ✔ ⑤ refresh_* 함수가 쓰는 user_* 표는 전부 장부에 있다 (28.8839ms) ✔ ⑥ 단계 순서 — 표의 단계와 목표 작성자의 단계가 DAG 를 거스르지 않는다 (0.311ms) ✔ D07 suffix preserves legacy full values, source provenance, nulls and order after move/delete/composite/failure inputs (9253.3424ms) ✖ D07 restores daily seeds, preserves prefix rows and falls back after corruption, version and boundary mismatches (5775.9779ms) ✔ D07 impact lists only actual changed dates and includes every scored composite member (1435.7772ms) ✔ splitStatements keeps semicolons inside dollar quotes, strings and comments together (1.1181ms) ✔ function signatures drop names, defaults and OUT arguments and use type aliases (1.3976ms) ✔ supabase/definitions matches supabase/schema.sql, registry and exceptions are current (229.5803ms) ✔ statement multiset of the definition files equals the snapshot's sections 1 and 2 (independent of object grouping) (53.2439ms) ✔ every function statement in the snapshot lands in exactly one definition file, overloads in separate files (66.8806ms) ✔ extraction and registry are deterministic (150.1085ms) ✔ fixture: one character changed in a function body is reported on both sides (190.2776ms) ✔ fixture: a removed GRANT line is reported as missing in the definitions (185.8582ms) ✔ fixture: a removed policy is reported as missing in the definitions (211.4355ms) ✔ fixture: a new object in the definitions without a migration is reported as missing in the snapshot (191.9587ms) ✔ fixture: an object no rule classifies is reported as unclassified (200.3378ms) ✔ fixture: a hand-edited registry is reported as stale (182.6163ms) ✔ fixture: a definition placed in the wrong file is reported as a file mismatch (186.7743ms) ✔ layer rules: the current violation set equals exceptions.json, and it is a closed list (62.498ms) ✔ fixture: a new layer violation (engine granted to authenticated) is reported (192.6298ms) ✔ fixture: an exception that no longer applies is reported so the list stays honest (176.4641ms) ℹ tests 66 ℹ suites 0 ℹ pass 65 ℹ fail 1 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 156023.8942 ✖ failing tests: test at tests\support\nodeTestBudget.mjs:15:12 ✖ D07 restores daily seeds, preserves prefix rows and falls back after corruption, version and boundary mismatches (5775.9779ms) Error: d07-oracle: NOTICE: table "user_exercise_session_rollups" does not exist, skipping NOTICE: table "user_exercise_records" does not exist, skipping NOTICE: table "user_exercise_stats" does not exist, skipping NOTICE: table "user_exercise_period_stats" does not exist, skipping NOTICE: table "user_exercise_pr_events" does not exist, skipping NOTICE: table "user_exercise_pr_states" does not exist, skipping NOTICE: table "user_exercise_strength_observations" does not exist, skipping NOTICE: table "user_exercise_strength_daily" does not exist, skipping NOTICE: table "user_exercise_strength_states" does not exist, skipping NOTICE: table "user_exercise_set_score_states" does not exist, skipping NOTICE: table "user_exercise_max_rep_observations" does not exist, skipping NOTICE: table "user_training_period_stats" does not exist, skipping NOTICE: table "user_calendar_day_summaries" does not exist, skipping NOTICE: table "user_calendar_summary_dirty_dates" does not exist, skipping NOTICE: table "user_pr_overview_snapshot_headers" does not exist, skipping NOTICE: table "user_pr_exercise_summary_snapshots" does not exist, skipping NOTICE: table "user_pr_overview_rollover_state" does not exist, skipping NOTICE: table "user_stats_sequential_days" does not exist, skipping NOTICE: table "stats_projection_context" does not exist, skipping NOTICE: table "stats_sequential_replays_v1" does not exist, skipping NOTICE: table "set_observation_targets_v1" does not exist, skipping NOTICE: table "session_rollup_targets_v1" does not exist, skipping NOTICE: table "exercise_stats_affected" does not exist, skipping NOTICE: table "measured_pr_affected_exercises" does not exist, skipping NOTICE: table "measured_pr_candidates" does not exist, skipping NOTICE: table "measured_pr_transitions" does not exist, skipping NOTICE: table "strength_prefix_states_v1" does not exist, skipping NOTICE: table "strength_recent_prefix_v1" does not exist, skipping NOTICE: table "strength_recent_days_v1" does not exist, skipping NOTICE: table "strength_session_votes_v1" does not exist, skipping NOTICE: table "strength_rollup_votes_v1" does not exist, skipping NOTICE: table "strength_daily_candidates_v1" does not exist, skipping NOTICE: table "strength_prefix_states_v1" does not exist, skipping NOTICE: table "strength_recent_prefix_v1" does not exist, skipping NOTICE: table "strength_session_votes_v1" does not exist, skipping NOTICE: table "strength_rollup_votes_v1" does not exist, skipping NOTICE: table "strength_daily_candidates_v1" does not exist, skipping NOTICE: table "max_rep_recent_days_v1" does not exist, skipping NOTICE: table "d06_impacts" does not exist, skipping NOTICE: table "d06_exercise_rows" does not exist, skipping NOTICE: table "d06_training_rows" does not exist, skipping NOTICE: table "d06_calendar_rows" does not exist, skipping NOTICE: table "measured_pr_summary_rows" does not exist, skipping ERROR: D11 mixed checkpoint generation CONTEXT: PL/pgSQL function process_stats_projection_claimed_v1(uuid) line 15 at RAISE SQL statement "SELECT public.process_stats_projection_claimed_v1(v_job_id)" PL/pgSQL function refresh_user_exercise_stats_from(uuid,date,uuid[],jsonb) line 25 at PERFORM at Object.run (file:///C:/Users/USER/Documents/Codex/2026-09-10/14-2/work/barbelic-1422/tests/db/support/pgSessions.mjs:120:31) at process.processTicksAndRejections (node:internal/process/task_queues:104:5) at async TestContext. (file:///C:/Users/USER/Documents/Codex/2026-09-10/14-2/work/barbelic-1422/tests/db/statsSequentialReplay.test.mjs:150:7) at async Test.run (node:internal/test_runner/test:1313:7) at async Test.processPendingSubtests (node:internal/test_runner/test:897:7)