Skip to content

Refresh conda-forge feedstock submission evidence#345

Merged
edithatogo merged 3 commits into
masterfrom
codex/conda-forge-feedstock-submission
Jul 4, 2026
Merged

Refresh conda-forge feedstock submission evidence#345
edithatogo merged 3 commits into
masterfrom
codex/conda-forge-feedstock-submission

Conversation

@edithatogo

Copy link
Copy Markdown
Owner

Summary

  • add conda-forge-specific live probes to the language registry report, including Anaconda API/page checks and parsed noarch repodata package matches
  • add a dated 2026-07-03 conda-forge public-probe evidence file showing nwau-py 0.2.2 is still not visible in Anaconda API or noarch repodata
  • update the conda-forge contract, track metadata/spec/plan, and roadmap wording to keep publication fail-closed and avoid overclaiming current CI status
  • mark only the public registry propagation query subtask complete; leave publication/closure gates open

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

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.

@amazon-q-developer amazon-q-developer 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.

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.


⚠️ This PR contains more than 30 files. Amazon Q is better at reviewing smaller PRs, and may miss issues in larger changesets.

@gemini-code-assist gemini-code-assist 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.

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.

Comment on lines +133 to +137
matches = {
filename: payload
for filename, payload in repodata.get("packages", {}).items()
if filename.startswith(f"{package}-")
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

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.

Suggested change
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

Comment thread nwau_py/mcp_server.py
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()

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

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"

Comment thread nwau_py/mcp_server.py
)
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()

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

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()

@edithatogo
edithatogo marked this pull request as ready for review July 4, 2026 09:49
Copilot AI review requested due to automatic review settings July 4, 2026 09:49
@cursor

cursor Bot commented Jul 4, 2026

Copy link
Copy Markdown

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.

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

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
@edithatogo
edithatogo force-pushed the codex/conda-forge-feedstock-submission branch from e8a2a53 to 329f3e5 Compare July 4, 2026 09:52
@cursor

cursor Bot commented Jul 4, 2026

Copy link
Copy Markdown

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.

@edithatogo
edithatogo merged commit 9fc8d0f into master Jul 4, 2026
9 of 10 checks passed
@edithatogo
edithatogo deleted the codex/conda-forge-feedstock-submission branch July 4, 2026 09:53
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