Skip to content

fix(core): compute the profile statistics Aggregate_Profile never assigned - #67

Merged
hyperpolymath merged 1 commit into
mainfrom
fix/aggregate-profile-stats
Sep 1, 2026
Merged

fix(core): compute the profile statistics Aggregate_Profile never assigned#67
hyperpolymath merged 1 commit into
mainfrom
fix/aggregate-profile-stats

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

What

Aggregate_Profile computed means only. Std_Dev_ISA, Median_ISA, Category_Std_Devs, Category_Medians and Evaluated_At were returned uninitialized, and vexometer-reports.adb prints those fields into CSV/HTML/LaTeX/text reports — so every generated report carried undefined memory as real statistics.

Why now

The E2E assertion Std_Dev_ISA >= 0.0 failed nondeterministically on PR #63 — the first CI test runs in this repo's history, enabled by the #66 gate repair. Identical sources passed on #64/#65/#66 and failed on #63: classic uninitialized-read behaviour (GNAT warned "Profile" may be referenced before it has a value at vexometer-core.adb:100 all along; that warning is now gone).

How

  • Standard deviations use the two-pass form — summed squared deviations cannot go negative, unlike E[x²] − E[x]².
  • Medians sort a copy (Ada.Containers.Generic_Array_Sort), correct for odd and even N.
  • Numeric components of Model_Profile now default to zero, so the N = 0 path returns defined values.
  • Evaluated_At is stamped with Ada.Calendar.Clock.

Verification

just test in vexometer/: 1282/1282 assertions pass, three consecutive runs, exit 0 each (previously flaky). No manifest-tracked files touched.

🤖 Generated with Claude Code

…igned

Aggregate_Profile computed means only: Std_Dev_ISA, Median_ISA,
Category_Std_Devs, Category_Medians and Evaluated_At were returned
uninitialized, and reports printed that undefined memory as real
statistics. The E2E assertion Std_Dev_ISA >= 0.0 failed
nondeterministically on stack garbage (first caught on PR #63, the
first CI runs after the #66 gate repair; GNAT warned at
vexometer-core.adb:100 all along).

Std deviations use the two-pass form -- summed squared deviations
cannot go negative, unlike E[x^2] - E[x]^2. Medians sort a copy.
Numeric record components now default to zero so the N = 0 path
returns defined values.

Verified: 1282/1282 assertions pass, three consecutive runs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 1, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 5 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Team

Run ID: 1e5baf50-3fc9-4abf-a741-ac468fb1d061

📥 Commits

Reviewing files that changed from the base of the PR and between ad14ffa and 5d4b61a.

📒 Files selected for processing (2)
  • vexometer/src/vexometer-core.adb
  • vexometer/src/vexometer-core.ads

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.

@hyperpolymath
hyperpolymath merged commit 9cc04cf into main Sep 1, 2026
21 checks passed
@hyperpolymath
hyperpolymath deleted the fix/aggregate-profile-stats branch September 1, 2026 14:49
hyperpolymath added a commit that referenced this pull request Sep 1, 2026
## Summary

Closes out the 2026-09-01 decode-and-repair pass with the situation
report and the last mechanical documentation fixes. Everything narrative
lives in the sitrep itself: **docs/sitrep-2026-09-01.adoc**.

- **Sitrep** — repo/branch state and the lossless rebase resolution, the
quality-gate outage (#66) and the two defects the repaired gates caught
immediately (#67 uninitialized profile statistics, #64 unparseable
workflow-linter), the verified Anthropic-paper provenance and the
ISA/safety-alignment boundary, a documentation honesty audit, and a debt
register (D1–D7) with done-conditions.
- **STATE.a2ml** — `last-updated` refreshed; the 25%-vs-70% divergence
and the assertion-execution counting convention annotated (true refresh
= D3).
- **SATELLITES.adoc** — dead `.scm` links repointed to
`.machine_readable/6a2/*.a2ml`; retired-format NOTE on the ECOSYSTEM.scm
template section.
- **vexometer-satellites/README.adoc** — false claim to hold the
protocol specs removed; dead `docs/*-format.adoc` links repointed to the
real specs; trust manifest regenerated in the same commit per the
manifest contract.
- **TEST-NEEDS.adoc** — the 1282 figure annotated as assertion
executions (420 loop-amplified), ~55 static sites.

## Verification

- `bash scripts/run-must-gates.sh` → exit 0, "all must gates passed"
(with the regenerated vexometer-satellites manifest).
- All links added here resolve on this branch; no `link:*.scm` remains
in SATELLITES.adoc.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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