Skip to content

fix(ordination): align varpart2 fraction order and F-statistic rtol in unit tests - #260

Merged
hyperpolymath merged 1 commit into
mainfrom
arena/52dfbdf7-metamanifold-webui
Oct 23, 2026
Merged

hyperpolymath merged 1 commit into
mainfrom
arena/52dfbdf7-metamanifold-webui

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

Follow-up test alignment for constrained ordinations (#19 / #258) caught on the full Julia tests CI run (259/265 passing on first run, 0 runtime errors):

  1. vegan::varpart2 fraction order (test/unit/test_ordination.jl, src/analysis/ordination.jl): vegan::varpart2 orders part$indfract rows with the two testable unique fractions first ([a] = X1 | X2, [c] = X2 | X1), followed by [b] (shared overlap, 0 df) and [d] = Residuals. Aligns ind[2] / ind[3] in test_ordination.jl and the partial-Condition(...) two-way ind_rows table in src/analysis/ordination.jl to that exact ordering.
  2. Pure-Julia f_statistic relative tolerance (test/unit/test_ordination.jl): Adds rtol=1e-9 alongside atol=1e-8 when comparing pure_linear_rda(...).f_statistic (F ≈ 820) against the 12-decimal rounded ordination_reference.json fixture (1.7e-12 relative difference, 1.4e-9 absolute).
  3. Distinct sample names across fixture runs (test/unit/test_ordination.jl): Uses c1..c3 and t1..t3 across Control/run1 and Treatment/run2 in _ord_with_study_root so independent samples do not inadvertently trigger repeated-measures complete-enumeration warnings.

…n unit tests

- vegan::varpart2 orders `part$indfract` rows as `[a] = X1 | X2` (unique_x1),
  `[c] = X2 | X1` (unique_x2), `[b]` (shared overlap, 0 df), and `[d] = Residuals`.
  Align both `test/unit/test_ordination.jl` (`ind[2]` vs `ind[3]`) and the
  partial-Condition two-way `ind_rows` fallback in `src/analysis/ordination.jl`
  to that exact ordering.
- Add `rtol=1e-9` alongside `atol=1e-8` on `res.f_statistic` in the pure-Julia
  reference comparison (`F ~ 820` computed from 12-decimal rounded fixture
  matrices has `1.7e-12` relative difference, `1.4e-9` absolute).
- Use distinct sample column names (`c1..c3`, `t1..t3`) across the two fixture
  runs in `_ord_with_study_root` so independent samples do not inadvertently
  form 2-sample repeated-measures blocks.

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ⚠️ Failed 2026-10-23T22:17:01.322200Z
We couldn’t complete this review. Comment @codex review to try again.
a16a278 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@coderabbitai

coderabbitai Bot commented Oct 23, 2026

Copy link
Copy Markdown

Warning

Review limit reached

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

Next included review available in 22 minutes.

Check out review usage here.

View limit details

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

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: b89a6266-e91b-44ec-a5d6-ae87933d0182
📥 Commits

Reviewing files that changed from the base of the PR and between cde012d and a16a278.

📒 Files selected for processing: 2
  • src/analysis/ordination.jl
  • test/unit/test_ordination.jl
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

Fork governance

Lane Status Run
DEED syntax (repo deed) 🟢 conformant run 40032589163
K9 conformance (L0–L2; L3 not verified) green (job: success) same run
Hypatia verdict grid purple (job: success) same run

Hypatia grid purple

🟣 critical · commit a16a27869ae2 · run 40032589163

Reporter Status Critical High Medium Minor Since previous revision
Hypatia scan 🟣 critical 54 66 26 0 — no comparable baseline
panic-attack assail 🔴 high 0 8 3 0 — no comparable baseline
pons asinorum 🟡 medium 0 0 4 0 — no comparable baseline
rhodibot (RSR compliance) 🟠 indeterminate 0 0 0 0 — no comparable baseline
panicbot (panic recovery, error handling) 🟠 indeterminate 0 0 0 0 — no comparable baseline
echidnabot (formal verification: proofs/) 🟠 indeterminate 0 0 0 0 — no comparable baseline
seambot (integration health: API routes) 🟠 indeterminate 0 0 0 0 — no comparable baseline
finishingbot (release readiness) 🟠 indeterminate 0 0 0 0 — no comparable baseline
accessibilitybot (WCAG on the React UI) 🟠 indeterminate 0 0 0 0 — no comparable baseline
glambot (presentation quality) 🟠 indeterminate 0 0 0 0 — no comparable baseline
cipherbot ⚪ not applicable 0 0 0 0 — no comparable baseline
sustainabot ⚪ not applicable 0 0 0 0 — no comparable baseline
Hypatia scan: 146 finding(s)
  • critical cicd_rules/banned_language_file — frontend/src/views/run/parseFilterYaml.ts — TypeScript file detected -- banned language
  • critical cicd_rules/banned_language_file — frontend/src/figure/encode.ts — TypeScript file detected -- banned language
  • critical cicd_rules/banned_language_file — frontend/src/figure/charts.ts — TypeScript file detected -- banned language
  • critical cicd_rules/banned_language_file — frontend/src/figure/export.ts — TypeScript file detected -- banned language
  • critical cicd_rules/banned_language_file — frontend/src/figure/figure.test.ts — TypeScript file detected -- banned language
  • critical cicd_rules/banned_language_file — frontend/src/figure/legend.ts — TypeScript file detected -- banned language
  • critical cicd_rules/banned_language_file — frontend/src/figure/types.ts — TypeScript file detected -- banned language
  • critical cicd_rules/banned_language_file — frontend/src/utils/download.ts — TypeScript file detected -- banned language
  • critical cicd_rules/banned_language_file — frontend/src/utils/text.test.ts — TypeScript file detected -- banned language
  • critical cicd_rules/banned_language_file — frontend/src/utils/timeago.ts — TypeScript file detected -- banned language
  • critical cicd_rules/banned_language_file — frontend/src/utils/text.ts — TypeScript file detected -- banned language
  • critical cicd_rules/banned_language_file — frontend/src/hooks/useUnsavedGuard.ts — TypeScript file detected -- banned language
  • critical cicd_rules/banned_language_file — frontend/src/hooks/useApi.test.ts — TypeScript file detected -- banned language
  • critical cicd_rules/banned_language_file — frontend/src/hooks/useApi.ts — TypeScript file detected -- banned language
  • critical cicd_rules/banned_language_file — frontend/src/hooks/useAnalysis.ts — TypeScript file detected -- banned language
  • critical cicd_rules/banned_language_file — frontend/src/hooks/useSSE.ts — TypeScript file detected -- banned language
  • critical cicd_rules/banned_language_file — frontend/src/hooks/useTabParam.ts — TypeScript file detected -- banned language
  • critical cicd_rules/banned_language_file — frontend/src/hooks/useNavRefresh.ts — TypeScript file detected -- banned language
  • critical cicd_rules/banned_language_file — frontend/src/hooks/useJobEvents.ts — TypeScript file detected -- banned language
  • critical cicd_rules/banned_language_file — frontend/src/about.ts — TypeScript file detected -- banned language
  • 126 more; see the structured report in the artifact.
panic-attack assail: 11 finding(s)
  • high DynamicCodeExecution — src/pipeline/dada2/context.jl — eval/Meta.parse in src/pipeline/dada2/context.jl
  • high DynamicCodeExecution — src/analysis/analysis.jl — eval/Meta.parse in src/analysis/analysis.jl
  • high DynamicCodeExecution — src/analysis/differential.jl — eval/Meta.parse in src/analysis/differential.jl
  • high DynamicCodeExecution — src/analysis/ordination.jl — eval/Meta.parse in src/analysis/ordination.jl
  • high DynamicCodeExecution — src/core/provenance.jl — eval/Meta.parse in src/core/provenance.jl
  • high UnboundedLoop — scripts/formats/descendants.py — Unbounded while True loop in scripts/formats/descendants.py
  • high DynamicCodeExecution — scripts/check-julia-syntax.jl — eval/Meta.parse in scripts/check-julia-syntax.jl
  • high DynamicCodeExecution — test/unit/test_permanova.jl — eval/Meta.parse in test/unit/test_permanova.jl
  • medium UnsafeFFI — src/core/memory_probe.jl — 3 ccall/FFI calls in src/core/memory_probe.jl
  • medium UnsafeFFI — install.jl — 1 ccall/FFI calls in install.jl
  • medium ProofDrift — test/unit/test_statistics_properties.jl — 2 `@test x isa Y` assertion(s) with no value check — type-only tests may substitute for an unwritten formal theorem in test/unit/test_statistics_properties.jl
pons asinorum: 4 finding(s)
  • medium swallowed-error — ./scripts/formats/process.py:127 — empty or pass-only exception handler (T0, HEURISTIC)
  • medium swallowed-error — ./scripts/formats/descendants.py:86 — empty or pass-only exception handler (T0, HEURISTIC)
  • medium swallowed-error — ./scripts/formats/descendants.py:55 — empty or pass-only exception handler (T0, HEURISTIC)
  • medium swallowed-error — ./scripts/formats/descendants.py:50 — empty or pass-only exception handler (T0, HEURISTIC)
rhodibot (RSR compliance): not_run — enrolled, but no report-back was received
  • 🟠 indeterminate: enrolled, but no report-back was received
panicbot (panic recovery, error handling): not_run — enrolled, but no report-back was received
  • 🟠 indeterminate: enrolled, but no report-back was received
echidnabot (formal verification: proofs/): not_run — enrolled, but no report-back was received
  • 🟠 indeterminate: enrolled, but no report-back was received
seambot (integration health: API routes): not_run — enrolled, but no report-back was received
  • 🟠 indeterminate: enrolled, but no report-back was received
finishingbot (release readiness): not_run — enrolled, but no report-back was received
  • 🟠 indeterminate: enrolled, but no report-back was received
accessibilitybot (WCAG on the React UI): not_run — enrolled, but no report-back was received
  • 🟠 indeterminate: enrolled, but no report-back was received
glambot (presentation quality): not_run — enrolled, but no report-back was received
  • 🟠 indeterminate: enrolled, but no report-back was received
cipherbot: not_applicable — no cryptography is implemented in this repository
  • ⚪ not applicable: no cryptography is implemented in this repository
sustainabot: not_applicable — fleet adapter slot reserved; no adapter exists yet (gitbot-fleet README)
  • ⚪ not applicable: fleet adapter slot reserved; no adapter exists yet (gitbot-fleet README)

Scope: static findings reported by each row's tool at the named commit. Purple, red, yellow and blue grade the worst finding present; orange is evidence missing, malformed or a scanner that did not run; grey is an explicit scope exclusion with its reason. No row is a security certification. report.json, badge.json and the raw findings are in the verdict-grid artifact on the linked run.

K9 L0–L2 green

🟢 conformant · commit a16a27869ae2 · run 40032589163 · validator hyperpolymath/standards@c6d78606f392

Category Status Pass Fail Indeterminate N/A Since previous revision
K9 contract typecheck 🟢 conformant 1 0 0 0 — no comparable baseline
K9 validator self-test 🟢 conformant 37 0 0 0 — no comparable baseline
K9 live corpus (L0–L2) 🟢 conformant 3 0 0 0 — no comparable baseline

Scope: K9 components L0–L2 against contract v1.0.0 at the named standards commit. L3 signature verification and routed coordination-dialect files are not certified. Green is limited to this scope. Orange is missing evidence; yellow is grandfathered debt or warnings; grey is an explicit scope exclusion. report.json, badge.json and the validator logs are in the k9-grid artifact on the linked run.

@hyperpolymath
hyperpolymath merged commit 4c05aaa into main Oct 23, 2026
23 of 25 checks passed
@hyperpolymath
hyperpolymath deleted the arena/52dfbdf7-metamanifold-webui branch October 23, 2026 22:19
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