feat(perf): versioned report envelope around the baseline aggregation (#951 increment 4) - #1056
Conversation
…#951 increment 4) app/perf/baseline_report.py build_baseline_report(profile_name, *, repeat, seed=None) wraps the raw aggregate_baseline output in a buyer-facing envelope -- the same pattern app.spec.normalization_report (#947) applies to the normalization assessment: - report_version (REPORT_VERSION="1"), generated_at (UTC ISO-8601); - schema_fingerprint: "sha256:"-prefixed digest of the exact workload snapshot that was measured, so a report ties back to its schema; - summary: {headline, path_count, slowest_path_by_wall_p95} -- names the path with the largest wall-time 95th percentile using names and counts only, never a duration value; - statistics: the full aggregate_baseline output, unmodified. Observations only -- no threshold, no verdict (meta-test enforces the module has no ms/percentile/throughput literal). The schema_fingerprint helper is a local copy of the #947 one until both branches land. 8 tests; mypy app clean; interrogate 100%. Stacked on #1045 (feat/perf-baseline-stats-20260901). Blocked from merge by ContextualWisdomLab/.github#1531. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013SeQS8tSee5QVeyGpJ9SaY
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Team Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
| ## Decision — versioned report envelope (this increment) | ||
|
|
||
| `app/perf/baseline_report.py` `build_baseline_report(profile_name, *, | ||
| repeat, seed=None)` wraps the raw `aggregate_baseline` output in a | ||
| buyer-facing envelope, mirroring what `app.spec.normalization_report` | ||
| (#947) does for the normalization assessment: `report_version`, | ||
| `generated_at` (UTC ISO-8601), a `schema_fingerprint` (`"sha256:"`-prefixed | ||
| digest of the exact workload snapshot that was measured, so a report can be | ||
| tied back to its schema), and a `summary` block — | ||
| `{headline, path_count, slowest_path_by_wall_p95}` — that names the path an | ||
| engineer should look at first (largest wall-time 95th percentile) using | ||
| **names and counts only, never a duration value**. The full statistics | ||
| block is preserved verbatim under `statistics`. The `schema_fingerprint` | ||
| helper is a local copy of `app.spec.normalization_report.schema_fingerprint` | ||
| for now (the two branches are unmerged); unify them once both land. |
There was a problem hiding this comment.
- #951 section: #1056 bullet -- app/perf/baseline_report.py build_baseline_report, a versioned buyer-facing envelope around aggregate_baseline (report_version / generated_at / schema_fingerprint / summary with names+counts only / verbatim statistics). Mirrors the #1032 normalization-report envelope. "Remaining increments" trimmed. - #946 section: backfill the #1051 bullet (the pure APP_SECRET dual-read/single-write rotation core -- dual_read_decrypt + plan_key_rotation, needs_key_recovery for undecryptable rows) which was shipped at iter22 but not recorded here. "Remaining increments" now separates the pure core (done) from the DB migration job (needs a PG fixture). - Blocker section: 16 stacked increment PRs; fenced merge-wave block adds #1045 -> #1056 and #1037 -> #1051. - Maintenance note + "Last consolidated" -> iter28 / 2026-09-02 UTC. MD018-clean. Docs-only; tests/test_docstrings.py green. .github queue ~1417 (still rising). Still blocked from merge by ContextualWisdomLab/.github#1531. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013SeQS8tSee5QVeyGpJ9SaY
Fourth increment on #951.
app/perf/baseline_report.pybuild_baseline_report(profile_name, *, repeat, seed=None)wraps the rawaggregate_baselineoutput in a buyer-facing envelope — the same patternapp.spec.normalization_report(#947) applies to the normalization assessment:report_version(REPORT_VERSION="1"),generated_at(UTC ISO-8601);schema_fingerprint—"sha256:"-prefixed digest of the exact workload snapshot that was measured, so a report ties back to its schema;summary—{headline, path_count, slowest_path_by_wall_p95}; names the path with the largest wall-time 95th percentile using names and counts only, never a duration value;statistics— the fullaggregate_baselineoutput, unmodified (the envelope is additive).Observations only — no threshold, no verdict (a meta-test enforces the module has no
ms/ percentile-comparison / throughput literal and states targets are measured, not invented). Theschema_fingerprinthelper is a local copy of the #947 one until both branches land onmain; unify then.8 tests;
mypy appclean; interrogate 100%.Stacked on #1045 (
base=feat/perf-baseline-stats-20260901). Rebase ontomainas the #951 chain merges. Blocked from merge byContextualWisdomLab/.github#1531.🤖 Generated with Claude Code