Skip to content

ci: model Cabal package-index readiness - #100

Merged
hyperpolymath merged 6 commits into
mainfrom
ci/cabal-index-evidence
Nov 3, 2026
Merged

hyperpolymath merged 6 commits into
mainfrom
ci/cabal-index-evidence

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

First regression case from game-server-admin run 41404909112. Model and fixtures need integration with the runner before this is an enforcing gate.

@coderabbitai

coderabbitai Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

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 51 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: b6fe8122-ff21-44a5-bfa5-31a483d301e6
Commits

Reviewing files that changed from the base of the PR and between 63fea0a and bc8d82f.

Files selected for processing: 2
  • .github/workflows/ci.yml
  • fixtures/ci/cabal-index.jsonl

No actionable comments were generated in the recent review.

Summary

Summary by CodeRabbit

  • Tests
    • Expanded coverage for package resolution when index data is missing, unrecognised, or verified, including cases where refreshing is needed before resolution.
    • Added automated checks to ensure the scenarios cover all three index states and that each expected resolution plan is recognised, with the generated checks validated during continuous integration.

Three Cabal index fixture cases define expected resolution actions. A CI workflow step validates fixture coverage and plan names, generates Idris2 cases, and checks the generated module. A REUSE annotation assigns the fixture file its copyright attribution and licence.

Changes: Cabal index fixture cases

Layer / File(s) Summary
Fixture validation in CI
fixtures/ci/cabal-index.jsonl, .github/workflows/ci.yml, REUSE.toml
Three fixtures cover missing, unknown, and available indexes. The CI step validates fixture coverage and expected plans, generates an Idris2 module, and checks it. The clean-runner fixture records source run 41404909112. REUSE metadata assigns the fixture file its copyright attribution and MPL-2.0 licence.

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Feature

Merge Risk: Minimal · previous review 63fea

The fixture cases match the pinned model and now have valid REUSE metadata; no merge-blocking risk remains.

Pre-merge checks: Passed 5
Check name Status Explanation
Description check Passed The description identifies the regression case and explains that runner integration is still required. It relates directly to the Cabal fixture and CI changes.
Title check Passed The title clearly and concisely describes the main change: modelling Cabal package-index readiness in CI.
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 0 files. (2 skipped: 2 unsupported.)

  • 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

CodeRabbit Verify

  • Run CodeRabbit Verify to test the changes in this pull request.
Recent review info
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: 782fd088-c49a-44bc-9a97-b5be2669e3f6
Commits

Reviewing files that changed from the base of the PR and between 7c34d81 and 63fea0a.

Files selected for processing: 2
  • .github/workflows/ci.yml
  • REUSE.toml

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

Recent review details
Context from checks skipped due to timeout: 3
  • GitHub Check: CodeRabbit
  • GitHub Check: semgrep-cloud-platform/scan
  • GitHub Check: CodeQL Analysis (actions, none)
CI failures not shown inline: 2

GitHub Actions: CI (Idris2) / 0_Build, test and benchmark.txt: ci: model Cabal package-index readiness

Conclusion: failure

View job details

##[group]Run pipx install reuse >/dev/null 2>&1 || pip install --quiet reuse
 �[36;1mpipx install reuse >/dev/null 2>&1 || pip install --quiet reuse�[0m
 �[36;1mreuse lint --json > /tmp/reuse.json || true�[0m
 �[36;1mpython3 - <<'PY'�[0m
 �[36;1mimport json, sys�[0m
 �[36;1md = json.load(open("/tmp/reuse.json"))�[0m
 �[36;1mnc = d.get("non_compliant", {})�[0m
 �[36;1mproblems = []�[0m
 �[36;1mfor key, val in nc.items():�[0m
 �[36;1m    if key == "unused_licenses":�[0m
 �[36;1m        extra = [u.get("license", u) if isinstance(u, dict) else u�[0m
 �[36;1m                 for u in val]�[0m
 �[36;1m        extra = [e for e in extra if "AGPL-3.0-or-later" not in str(e)]�[0m
 �[36;1m        if extra:�[0m
 �[36;1m            problems.append(f"unused licences beyond the tolerated one: {extra}")�[0m
 �[36;1m    elif val:�[0m
 �[36;1m        problems.append(f"{key}: {val}")�[0m
 �[36;1mif problems:�[0m
 �[36;1m    print("REUSE non-compliance beyond the documented L-1 tolerance:")�[0m
 �[36;1m    [print("  -", p) for p in problems]�[0m
 �[36;1m    sys.exit(1)�[0m
 �[36;1mfiles = d.get("summary", {}).get("files_total") or d.get("files_count") or "?"�[0m
 �[36;1mprint(f"OK: REUSE compliant across {files} files "�[0m
 �[36;1m      "(sole tolerated issue: unused AGPL-3.0-or-later, DEBT L-1)")�[0m
 �[36;1mPY�[0m
 shell: /usr/bin/bash -e {0}
 env:
   IDRIS2_VERSION: 0.7.0
 ##[endgroup]
 REUSE non-compliance beyond the documented L-1 tolerance:
   - missing_copyright_info: ['integrations/contract/proven-tests/downstream/rust/proven-evidence/Cargo.lock']
   - missing_licensing_info: ['integrations/contract/proven-tests/downstream/rust/proven-evidence/Cargo.lock']
 ##[error]Process completed with exit code 1.

GitHub Actions: CI (Idris2) / Build, test and benchmark: ci: model Cabal package-index readiness

Conclusion: failure

View job details

##[group]Run pipx install reuse >/dev/null 2>&1 || pip install --quiet reuse
 �[36;1mpipx install reuse >/dev/null 2>&1 || pip install --quiet reuse�[0m
 �[36;1mreuse lint --json > /tmp/reuse.json || true�[0m
 �[36;1mpython3 - <<'PY'�[0m
 �[36;1mimport json, sys�[0m
 �[36;1md = json.load(open("/tmp/reuse.json"))�[0m
 �[36;1mnc = d.get("non_compliant", {})�[0m
 �[36;1mproblems = []�[0m
 �[36;1mfor key, val in nc.items():�[0m
 �[36;1m    if key == "unused_licenses":�[0m
 �[36;1m        extra = [u.get("license", u) if isinstance(u, dict) else u�[0m
 �[36;1m                 for u in val]�[0m
 �[36;1m        extra = [e for e in extra if "AGPL-3.0-or-later" not in str(e)]�[0m
 �[36;1m        if extra:�[0m
 �[36;1m            problems.append(f"unused licences beyond the tolerated one: {extra}")�[0m
 �[36;1m    elif val:�[0m
 �[36;1m        problems.append(f"{key}: {val}")�[0m
 �[36;1mif problems:�[0m
 �[36;1m    print("REUSE non-compliance beyond the documented L-1 tolerance:")�[0m
 �[36;1m    [print("  -", p) for p in problems]�[0m
 �[36;1m    sys.exit(1)�[0m
 �[36;1mfiles = d.get("summary", {}).get("files_total") or d.get("files_count") or "?"�[0m
 �[36;1mprint(f"OK: REUSE compliant across {files} files "�[0m
 �[36;1m      "(sole tolerated issue: unused AGPL-3.0-or-later, DEBT L-1)")�[0m
 �[36;1mPY�[0m
 shell: /usr/bin/bash -e {0}
 env:
   IDRIS2_VERSION: 0.7.0
 ##[endgroup]
 REUSE non-compliance beyond the documented L-1 tolerance:
   - missing_copyright_info: ['integrations/contract/proven-tests/downstream/rust/proven-evidence/Cargo.lock']
   - missing_licensing_info: ['integrations/contract/proven-tests/downstream/rust/proven-evidence/Cargo.lock']
 ##[error]Process completed with exit code 1.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 2, 2026 •

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 ✅ Completed 2026-11-03T17:09:01.535241Z bc8d82f New commits
ℹ️ 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.

@coderabbitai coderabbitai Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

  • Fix comments: Fix CodeRabbit comments on this PR

Comment thread fixtures/ci/cabal-index.jsonl Resolved

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7c34d816a9

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@@ -0,0 +1,3 @@
{"case":"clean-runner","index":"missing","expected_plan":"refresh_then_resolve","source_run":"41404909112"}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Wire the Cabal readiness cases into an executable check

When a runner has a missing or unverified Cabal index, this addition does not prevent the resolver from running prematurely: a repository-wide search finds no script, test, or workflow that reads this fixture, so CI will remain green regardless of the plan selected. Add a runner/test that loads these cases, asserts expected_plan, and is invoked by the CI gate; otherwise the recorded failure from run 41404909112 is not actually covered.

Useful? React with 👍 / 👎.

@hyperpolymath
hyperpolymath enabled auto-merge (squash) November 2, 2026 21:05
Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com>
@sonarqubecloud

sonarqubecloud Bot commented Nov 3, 2026

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bc8d82fdfe

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@@ -0,0 +1,3 @@
{"case":"clean-runner","index":"missing","expected_plan":"refresh_then_resolve","source_run":"41404909112"}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Add REUSE metadata for the new fixture

On every checkout containing this fixture, the earlier REUSE compliance step in .github/workflows/ci.yml reports it as lacking copyright and licensing information and exits nonzero, because the file has no in-file SPDX declarations and REUSE.toml does not cover fixtures/ci/cabal-index.jsonl. Add a narrowly scoped REUSE annotation for this machine-readable fixture so the CI job can reach the new Cabal check.

Useful? React with 👍 / 👎.

@hyperpolymath
hyperpolymath merged commit d6c7b2d into main Nov 3, 2026
7 of 8 checks passed
@hyperpolymath
hyperpolymath deleted the ci/cabal-index-evidence branch November 3, 2026 17:10
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.

2 participants