Refresh conda-forge feedstock submission evidence#345
Conversation
There was a problem hiding this comment.
This PR adds support for CRAN and conda-forge registry live probes and extends test coverage. The implementation follows established patterns in the codebase with appropriate error handling and HTTP timeouts. All changes have corresponding test coverage and no blocking issues were identified.
You can now have the agent implement changes and create commits directly on your pull request's source branch. Simply comment with /q followed by your request in natural language to ask the agent to make changes.
There was a problem hiding this comment.
Code Review
This pull request hardens the Rust CLI and MCP migration tracks by normalizing governance metadata, pinning the acute 2025 first-slice scope, making runtime-selection decisions explicit, and adding track-quality validation. It introduces the --runtime option to CLI commands and options.runtime to the MCP mchs.calculate tool, defaulting to Python while allowing opt-in Rust execution for acute 2025. Feedback on the changes suggests scanning both the 'packages' and 'packages.conda' keys in Conda repodata to properly detect published packages, explicitly handling null values for the runtime option in the MCP server to prevent invalid casting, and adding defensive checks for empty calculation outputs before accessing the first row.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| matches = { | ||
| filename: payload | ||
| for filename, payload in repodata.get("packages", {}).items() | ||
| if filename.startswith(f"{package}-") | ||
| } |
There was a problem hiding this comment.
Conda channels distribute packages in both the older .tar.bz2 format (under the "packages" key in repodata.json) and the newer .conda format (under the "packages.conda" key). Since conda-forge builds new packages as .conda by default, querying only "packages" will fail to detect the published package. Update the search to scan both keys.
| matches = { | |
| filename: payload | |
| for filename, payload in repodata.get("packages", {}).items() | |
| if filename.startswith(f"{package}-") | |
| } | |
| matches = {} | |
| for key in ("packages", "packages.conda"): | |
| for filename, payload in repodata.get(key, {}).items(): | |
| if filename.startswith(f"{package}-"): | |
| matches[filename] = payload |
| options = arguments.get("options") or {} | ||
| if not isinstance(options, dict): | ||
| raise McpError("MCHS-ERR-VAL-001", "options must be a JSON object.") | ||
| runtime = str(options.get("runtime", "python")).strip().lower() |
There was a problem hiding this comment.
If the client explicitly passes "runtime": null in the JSON options, options.get("runtime", "python") will return None. str(None) will then evaluate to "None", which is not in _VALID_RUNTIMES and will raise an invalid runtime error. Handle None values explicitly to allow a safe fallback to "python".
runtime_val = options.get("runtime")
runtime = str(runtime_val).strip().lower() if runtime_val is not None else "python"| ) | ||
| except ImportError as exc: | ||
| raise McpError("MCHS-MCP-RUST-UNAVAILABLE", str(exc)) from exc | ||
| row = output.iloc[0].where(pd.notna(output.iloc[0]), None).to_dict() |
There was a problem hiding this comment.
Defensive programming: check if the output DataFrame is None or empty before attempting to access iloc[0]. If the calculation returns no rows, accessing iloc[0] will raise an IndexError.
if output is None or output.empty:
raise McpError("MCHS-ERR-VAL-001", "Calculation returned no results.")
row = output.iloc[0].where(pd.notna(output.iloc[0]), None).to_dict()|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
Commit notes: - Added conda-forge-specific live probes to the language registry report, including Anaconda API/page checks and parsed noarch repodata package matches. - Added public_probe_20260703.json recording that nwau-py 0.2.2 is not visible in Anaconda API or noarch repodata and that staged-recipes PR #33452 remains open/unmerged. - Updated conda-forge contract, track metadata/spec, roadmap, and plan wording to keep publication_claimed=false and avoid overclaiming current CI state. Validation: - uv run ruff check scripts/language_registry_external_gate_report.py tests/test_language_registry_external_gate_report.py tests/test_registry_submission_checklists.py - PYTHONPATH=. uv run pytest -q tests/test_language_registry_external_gate_report.py tests/test_registry_submission_checklists.py tests/test_conductor_status_matrix.py - python scripts/language_registry_external_gate_report.py --promotion --live --json with conda_forge assertions - python -m json.tool on contract, conda metadata, and public probe evidence - python3 scripts/validate_conductor_status_matrix.py - git diff --check
Commit notes: - Review fix: replaced broad current CI-green wording in the conda-forge plan with the live evidence actually observed: PR open at bffc5bf1a85389dc695adfd96c87bf2413f4db25, conda-forge-linter success, maintainer review/merge pending. - The track remains blocked and not archive-eligible because no feedstock/public package evidence exists. Validation: - uv run ruff check scripts/language_registry_external_gate_report.py tests/test_language_registry_external_gate_report.py tests/test_registry_submission_checklists.py - PYTHONPATH=. uv run pytest -q tests/test_language_registry_external_gate_report.py tests/test_registry_submission_checklists.py tests/test_conductor_status_matrix.py - python scripts/language_registry_external_gate_report.py --promotion --live --json with conda_forge assertions - python -m json.tool on contract, conda metadata, and public probe evidence - python3 scripts/validate_conductor_status_matrix.py - git diff --check
e8a2a53 to
329f3e5
Compare
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
Summary
Validation
Status
Draft because the conda-forge publication gate remains external: staged-recipes PR #33452 is still open/unmerged, Anaconda API returns 404, and conda-forge noarch repodata has no nwau-py entries.