# Phase Metrics Comparison and Gate Decisions Date captured: 2026-04-20 (Australia/Sydney) ## Scope and method - Baseline source: `phase0-baseline.md`. - Post-change source: live local workspace state (`db.sqlite3`, `reports/`) and one-shot canonical benchmark run. - Commands used: - `sqlite3 -readonly db.sqlite3 ""` - `find reports -type f | wc -l` - `go run . -settings settings.yaml -benchmark-aggregations -benchmark-runs 1` ## Baseline vs post-change snapshot | Area | Metric | Baseline | Post-change | Delta | Gate | | --- | --- | ---: | ---: | ---: | --- | | Hourly capture | `snapshot_registry` hourly entries | 930 | 955 | +25 | PASS | | Hourly capture | Hourly compatibility tables (`inventory_hourly_%`) | 930 | 955 | +25 | PASS | | Hourly capture | Canonical cache rows (`vm_hourly_stats`) | 489865 | 491165 | +1300 | PASS | | Hourly capture | Latest hourly snapshot row count (`snapshot_count`) | 52 | 52 | 0 | PASS | | Daily aggregation | `snapshot_registry` daily entries | 39 | 39 | 0 | PASS | | Daily aggregation | Daily summary tables (`inventory_daily_summary_%`) | 40 | 40 | 0 | PASS | | Daily aggregation | Canonical daily rollup rows (`vm_daily_rollup`) | 1779 | 1831 | +52 | PASS | | Daily aggregation | Latest daily snapshot row count (`snapshot_count`) | 52 | 52 | 0 | PASS | | Monthly aggregation | `snapshot_registry` monthly entries | 1 | 1 | 0 | PASS | | Monthly aggregation | Latest monthly snapshot row count (`snapshot_count`) | 62 | 62 | 0 | PASS | | Report generation | Files present in `reports/` | 10339 | 10364 | +25 | PASS | | Reliability | `snapshot_runs` total / success | 10254 / 10254 | 10279 / 10279 | +25 / +25 | PASS | | Reliability | `snapshot_runs` attempts min/max/avg | 1 / 2 / 1.0001 | 1 / 2 / 1.0001 | unchanged | PASS | ## Operational runtime snapshot (post-change) From `cron_status`: - `hourly_snapshot`: `1069 ms` - `daily_aggregate`: `1075 ms` - `monthly_aggregate`: `515 ms` - `snapshot_cleanup`: `1117 ms` Gate decision: - All observed job durations are far below configured job timeouts (`hourly=1200s`, `daily=900s`, `monthly=1200s`, `cleanup=600s`): PASS. ## Canonical aggregation benchmark snapshot (post-change) Command: - `go run . -settings settings.yaml -benchmark-aggregations -benchmark-runs 1` Results (local SQLite dataset): - Daily window (`2026-04-20`): - Go: `12.676 ms` (`52` rows) - SQL: `9.026667 ms` (`52` rows) - Monthly window (`2026-04`): - Go: `4.077125 ms` (`52` rows) - SQL: `2.050708 ms` (`52` rows) Gate decision: - Benchmark execution and parity row counts: PASS. - SQL default-promotion gate for Phase 3: NOT MET (still requires representative production-scale **Postgres** benchmark evidence). ## Decision record summary - Data continuity and compatibility outputs: PASS. - Canonical cache growth and aggregation continuity: PASS. - Report output continuity: PASS. - Reliability indicators (`snapshot_runs`): PASS. - SQL promotion decision (Go vs SQL default): NO-GO pending production Postgres benchmark evidence.