Skip to content

feat(perf): versioned report envelope around the baseline aggregation (#951 increment 4) - #1056

Open
seonghobae wants to merge 1 commit into
feat/perf-baseline-stats-20260901from
feat/perf-baseline-report-envelope-20260902
Open

feat(perf): versioned report envelope around the baseline aggregation (#951 increment 4)#1056
seonghobae wants to merge 1 commit into
feat/perf-baseline-stats-20260901from
feat/perf-baseline-report-envelope-20260902

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator

Fourth increment on #951. 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 (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). The schema_fingerprint helper is a local copy of the #947 one until both branches land on main; unify then.

8 tests; mypy app clean; interrogate 100%.

Stacked on #1045 (base = feat/perf-baseline-stats-20260901). Rebase onto main as the #951 chain merges. Blocked from merge by ContextualWisdomLab/.github#1531.

🤖 Generated with Claude Code


Devin Review

…#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
@coderabbitai

coderabbitai Bot commented Sep 2, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: 4c727660-03fb-4d2d-b873-7928378f54d3

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 potential issue.

Devin Review

Comment on lines +93 to +107
## 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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 Research grounding remains incomplete

This substantive performance increment adds no redistributable paper, linked citation, or research summary. The repository’s research-grounding requirement needs follow-up.

Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

seonghobae added a commit that referenced this pull request Sep 2, 2026
- #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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant