Repository navigation
fix(analysis): load CompositionalModels and include clade_cumulus once - #277
hyperpolymath wants to merge 2 commits into
Conversation
main cannot load. src/analysis/differential.jl:36 imports CompositionalFit,
CompositionalRefusal and RuntimeRefusal from ..CompositionalModels, and
src/analysis/compositional.jl defines that module, but src/MetaManifold.jl never
included it, so the package dies with
UndefVarError: `CompositionalModels` not defined in `MetaManifold`
at differential.jl:38 before any test runs (CI run 39873811778). The module is
now included before differential.jl. It has no dependencies of its own, so it
needs no other ordering constraint, and every name differential.jl imports from
it is exported.
clade_cumulus.jl was included twice in the same block, which redefines a module
rather than reusing it; Julia warns 'replacing module CladeCumulus' and re-runs
every top-level definition. One include, in the same position, is enough.
Not changed: src/server/routes/cladistics.jl exists but is not included by
src/server/server.jl, so its /api/v1/studies/{study}/cladistics endpoints are
unreachable. Wiring it adds new routes, which is a behaviour change rather than
a load fix, so it is left for whoever owns that feature.
Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Warning Review limit reachedYou'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 45 minutes. View limit details
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 |
|
Add Carrot credits or activate Agent usage billing to use Autofix |
Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Fork governance
🟣 critical · commit
Hypatia scan: 75 finding(s)
panic-attack assail: 8 finding(s)
rhodibot (RSR compliance): not_run — enrolled, but no report-back was received
panicbot (panic recovery, error handling): not_run — enrolled, but no report-back was received
echidnabot (formal verification: proofs/): not_run — enrolled, but no report-back was received
seambot (integration health: API routes): not_run — enrolled, but no report-back was received
finishingbot (release readiness): not_run — enrolled, but no report-back was received
accessibilitybot (WCAG on the React UI): not_run — enrolled, but no report-back was received
glambot (presentation quality): not_run — enrolled, but no report-back was received
cipherbot: not_applicable — no cryptography is implemented in this repository
sustainabot: 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. 🟢 conformant · commit
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. |
|
Closed as superseded, not merged. This is a measurement, not a judgement about the work.
The load fix it proposes is already on
Nothing is lost by closing this. A closed pull request keeps its head reachable at The branch itself is deleted because 13 heads of the same shape are what made a fresh pull request impossible to pick out of the list. Background and the classification rules: docs/maintenance/repository-hygiene.md. Reopen this pull request, or open a new one from the current tip, if any of the commits above still applies. |
Pull request was closed
…les (#285) ## Change and reason `main`'s remote held **fifteen heads**: `main`, the orphan data branch the badge publisher force-pushes, and **thirteen branches cut from snapshots between 5 and 119 commits old** — every one of them carrying an open pull request. Six required contexts (`Julia tests`, `Agda proofs`, `Code relevance`, `Occupancy relevance`, `Occupancy disagreement test`, `Occupancy typed peak`) mean a branch in that state reports `BLOCKED` indefinitely, so a reviewer saw thirteen blocked pull requests and no signal about which of them was alive. Each also started a full CI run that could never go green, which is the mechanism that made the pile stable rather than self-correcting. `CONTRIBUTING.md` already required a branch to start at the tip of `main` (rule 1) and to carry no merge commits from it (rule 2). Nothing enforced either sentence. This PR adds the enforcement, the measurement, and the record — and nothing that deletes anything: | Path | What it is | | --- | --- | | `scripts/maintenance/check-pr-freshness.sh` | Answers rules 1 and 2 from the merge base and the commit graph. Annotates the failure for the checks API. Exits 2 rather than passing when it cannot judge. | | `scripts/maintenance/triage-branches.sh` | Classes every remote head as `base`, `unrelated`, `contained`, `fresh`, `salvage` or `stale`. Read-only: `--format table\|markdown\|json`, `--fail-on`. | | `.github/workflows/pr-freshness.yml` | Runs the freshness check on pull request open, push, reopen and ready-for-review. | | `.github/workflows/branch-hygiene.yml` | Weekly: runs the triage into **one** rolling issue that updates in place and closes itself when no drifted branch remains. A job that opens an issue every week is the mechanism that produced the pile it is meant to clear. | | `scripts/tests/test-*.sh` | Fixture-repository tests for both scripts: merged, drifted-with-nothing-new, drifted-with-a-file-the-base-lacks, orphan, unrelated history, shallow, and the Actions annotation path. Wired into the `Advisory scan contract` job beside the other shell tests. | | `docs/maintenance/repository-hygiene.md` | The classes, what happens to each, the recovery path, the 2026-10-25 measurement, the order the work was done in, and the four decisions left to the owner. | | `CONTRIBUTING.md`, `.gitignore` | Points at the doc above; `!docs/maintenance/` follows the existing whitelist pattern (`docs/*` is ignored except published notes). | Two things both scripts refuse to do, because a wrong answer is worse than none: report on a **shallow clone** (it reports its graft point as the merge base, which makes every branch look `fresh`), and delete anything. `governance-badges` is classed `unrelated` and left alone — it is an output, not a spare branch: `README.md` reads it through `img.shields.io/endpoint`. ## Work already done on the remote with these scripts The cleanup is not in this diff, because it is not a file change. Measured, then closed, then the branch deleted — in that order, so each pull request keeps its head reachable at `refs/pull/<n>/head`: - **contained** (`ahead` 0, nothing to merge): #283, #281. - **stale** (behind, adds no file `main` lacks): #284, #280, #279, #278, #274. - **fresh but a duplicate**: #277 — its load fix is already on `main`, and it arrived through a merge commit, which rule 2 forbids. - **salvage** (behind, holds files `main` lacks — closed, not merged, because a merge would revert the 119 commits in between): #276 (Full Evidence Mode, parked by the absorption register per #7), #272, #270, #269 (placement-LWR `ComputingNote.tsx` + threshold test), #271 (evidence-27 review docs). Every close comment carries its own branch's numbers and the `git fetch origin pull/<n>/head` recovery command. The remote is now `main` + `governance-badges`; `triage-branches.sh` reports 2 heads, 0 stale. ## Validation Run here, on this branch: ``` bash scripts/tests/test-triage-branches.sh # 13 passed, 0 failed bash scripts/tests/test-check-pr-freshness.sh # 11 passed, 0 failed bash scripts/check-governance-contract.sh # 70 checks passed bash scripts/tests/test-governance-contract.sh # all mutations rejected bash scripts/tests/test-scanner-boundaries.sh # ok bash scripts/tests/test-ci-logging.sh # ok bash scripts/ci/check-shell-secrets.sh # no credentials in tree or history bash scripts/lint-sonar-reliability.sh # OK: no S2871 or S7758 in frontend/src bash scripts/maintenance/triage-branches.sh # 2 heads after the cleanup bash scripts/maintenance/check-pr-freshness.sh # OK: at the base tip, no merge commits ``` Both new workflows were parsed as YAML and their embedded shell extracted and checked with `bash -n`; the rolling-issue upsert was exercised against a stub `gh` for all three paths (create, update, close). **Not run:** the Julia suite and the frontend suite — neither is touched by this diff, and neither can run in this sandbox; CI is the first execution of anything in this PR on a runner. ## Scope Deliberately not done, each recorded in `docs/maintenance/repository-hygiene.md` under *Decisions for the owner*: 1. **`Branch freshness` is not a required context yet.** It cannot be: a required check that no workflow produces blocks every pull request, including the one that would add it. Add it to the `Branch-Floor` ruleset after this merges. 2. **Push-run concurrency on `main` is untouched.** `cancel-in-progress: false` for pushes serialises the queue — at the time of measurement the run for `a3a4a8e` was still going and the run for `f3816e5a` had not started 25 minutes later. Changing it trades a per-commit result for latency; that is the owner's call, not a CI fix I should make silently. 3. **The SonarCloud gate is untouched.** It failed on most of those pull requests with `C Security Rating on New Code`, is not a required context, and is already documented in `docs/sonar-quality-gate.md`. It was a symptom of the huge stale diffs, not a defect in this repository. 4. **`docs/milestones/02-deferred-issues.md` is referenced by issue #4 and absent from `main`.** The pre-sync archive had it. Restoring it re-adds content that overlaps `docs/statistics/method-catalogue-v1.md`; editing the issue's reference may be the better answer. No lockfile, dependency, generated or vendored file changes. ## Contribution checks - [x] I followed [CONTRIBUTING.md](../CONTRIBUTING.md). - [x] This branch starts at current upstream main and contains no merges from fork main (`merge base f3816e5` = `main` tip). - [x] CI has run and passes — the branch's first CI run is this pull request. - [x] Existing licensing, citation and acknowledgement text is unchanged. --------- Co-authored-by: Arena Agent <agent@arena.ai> Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>



main cannot load. src/analysis/differential.jl:36 imports CompositionalFit, CompositionalRefusal and RuntimeRefusal from ..CompositionalModels, and src/analysis/compositional.jl defines that module, but src/MetaManifold.jl never included it, so the package dies with
at differential.jl:38 before any test runs (CI run 39873811778). The module is now included before differential.jl. It has no dependencies of its own, so it needs no other ordering constraint, and every name differential.jl imports from it is exported.
clade_cumulus.jl was included twice in the same block, which redefines a module rather than reusing it; Julia warns 'replacing module CladeCumulus' and re-runs every top-level definition. One include, in the same position, is enough.
Not changed: src/server/routes/cladistics.jl exists but is not included by src/server/server.jl, so its /api/v1/studies/{study}/cladistics endpoints are unreachable. Wiring it adds new routes, which is a behaviour change rather than a load fix, so it is left for whoever owns that feature.
Change and reason
Validation
Scope
Contribution checks