Skip to content

Release candidate v1.108.0 - #6601

Draft
siddhartha-quad wants to merge 83 commits into
mainfrom
release-candidate-v1.108.0
Draft

siddhartha-quad wants to merge 83 commits into
mainfrom
release-candidate-v1.108.0

Conversation

@siddhartha-quad

Copy link
Copy Markdown
Contributor

Release candidate v1.108.0

deepakrajk-quad and others added 30 commits October 16, 2026 21:56
Co-authored-by: Scott Gordon <scott.gordon@nag.com>
Co-authored-by: Scott Gordon <154335392+scott-nag@users.noreply.github.com>
…/ofe/infrastructure_files/gcs_bucket/webserver (#6517)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Neelabh Goyal <38628079+Neelabh94@users.noreply.github.com>
dependabot Bot and others added 25 commits October 28, 2026 15:43
…-build (#6557)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
)

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Adarsh Kullachi <54463538+AdarshK15@users.noreply.github.com>
Co-authored-by: AdarshK15 <adarshkullachi@google.com>
…ixes on deploy failure, and add --live skill evals (#6587)
@siddhartha-quad siddhartha-quad self-assigned this Oct 30, 2026
@siddhartha-quad siddhartha-quad added the release-chore To not include into release notes label Oct 30, 2026
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This release candidate v1.108.0 introduces significant enhancements to the Cluster Toolkit CLI, most notably the new gcluster explain command for better blueprint and module introspection. It also updates operational guidelines for coding agents, improves build and validation processes with new pre-commit hooks and Makefile targets, and provides greater flexibility in example blueprints through added configuration overrides.

Highlights

  • New gcluster explain command: Introduced a new gcluster explain command to discover and inspect blueprints, modules, and cluster specifications, providing better introspection for users and agents.
  • Enhanced Agent Guidelines: Updated AGENTS.md with stricter rules, mandatory confirmation gates, and clearer procedures for blueprint tasks to improve agent reliability and safety.
  • Build & Validation Improvements: Added new pre-commit hooks for catalog generation and README snippet validation, and updated Makefile targets to support documentation generation and live skills evaluation.
  • Configuration Overrides: Added support for optional machine type and node count overrides across multiple community example blueprints, increasing flexibility for deployments.
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/publish-release-notes.yml
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩

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

Code Review

This pull request introduces a new 'gcluster explain' command to discover, inspect, and match cluster specifications to blueprints or modules. It also adds end-to-end blueprints for deploying IBM Spectrum Symphony on GCE and GKE, and large-scale GKE blueprints (up to 5,000 nodes) with Kueue, JobSet, and GCS FUSE/Lustre. Additionally, it parameterizes machine types and storage settings across numerous community examples, improves the robustness of GKE/TPU/GPU orchestration (such as concurrent TPU slice resumes and disk provisioning settings), and updates coding agent guidelines in AGENTS.md. The reviewer's feedback correctly identifies a potential runtime panic in 'inspectCtyVariable' when handling marked or nil 'cty.Value' types, and a potential unhandled 'ValueError' crash in the 'sym_mig_provider.py' script. Both issues should be addressed using the provided code suggestions.

Comment thread cmd/explain.go
Comment on lines +906 to +914
func inspectCtyVariable(name string, v cty.Value) ExplainVariable {
if expr, isExpr := config.IsExpressionValue(v); isExpr {
return inspectExpressionVariable(name, expr)
}
if !v.IsKnown() || v.IsNull() {
return ExplainVariable{Name: name, Type: inferPlaceholderType(name), Required: true}
}
return inspectKnownCtyVariable(name, v)
}

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.

high

When working with cty.Value in Go, explicitly guard against cty.NilVal and unmark values (using .Unmark()) before checking Type(), IsNull(), or IsKnown() to prevent runtime panics. In inspectCtyVariable, calling v.IsKnown() and v.IsNull() directly on v without these guards can lead to a panic if the value is marked or nil.

func inspectCtyVariable(name string, v cty.Value) ExplainVariable {
	if v == cty.NilVal {
		return ExplainVariable{Name: name, Type: inferPlaceholderType(name), Required: true}
	}
	v, _ = v.Unmark()
	if expr, isExpr := config.IsExpressionValue(v); isExpr {
		return inspectExpressionVariable(name, expr)
	}
	if !v.IsKnown() || v.IsNull() {
		return ExplainVariable{Name: name, Type: inferPlaceholderType(name), Required: true}
	}
	return inspectKnownCtyVariable(name, v)
}
References
  1. When working with cty.Value in Go, explicitly guard against cty.NilVal and unmark values (using .Unmark()) before checking Type(), IsNull(), or IsKnown() to prevent runtime panics.
Comment on lines +68 to +79
try:
(id_str, max_str, mtype, ncpus_str, ncores_str, nram_str, zone, mig) = arg.split(',')
except ValueError:
print(f"Error: Invalid format for argument string: '{arg}'", file=sys.stderr)
print("Expected 8 comma-separated values.", file=sys.stderr)
continue # Skip this malformed argument

# Append the template to the list, converting numeric strings to integers
template_output['templates'].append(
make_template(
id=id_str,
max_num=int(max_str),

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.

medium

The conversion int(max_str) is performed outside of the try-except block. If max_str is not a valid integer string, this will raise an unhandled ValueError and crash the script. It is safer to parse and convert max_str within the try-except block to handle any malformed input gracefully.

Suggested change
try:
(id_str, max_str, mtype, ncpus_str, ncores_str, nram_str, zone, mig) = arg.split(',')
except ValueError:
print(f"Error: Invalid format for argument string: '{arg}'", file=sys.stderr)
print("Expected 8 comma-separated values.", file=sys.stderr)
continue # Skip this malformed argument
# Append the template to the list, converting numeric strings to integers
template_output['templates'].append(
make_template(
id=id_str,
max_num=int(max_str),
try:
(id_str, max_str, mtype, ncpus_str, ncores_str, nram_str, zone, mig) = arg.split(',')
max_num = int(max_str)
except ValueError:
print(f"Error: Invalid format or non-integer maxNumber in argument string: '{arg}'", file=sys.stderr)
print("Expected 8 comma-separated values with an integer for maxNumber.", file=sys.stderr)
continue # Skip this malformed argument
# Append the template to the list, converting numeric strings to integers
template_output['templates'].append(
make_template(
id=id_str,
max_num=max_num,
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release-chore To not include into release notes