Skip to content

feat(whaleflow): add serializable run result records#2815

Merged
Hmbown merged 2 commits into
codex/v0.9.0-stewardshipfrom
codex/v090-whaleflow-results-ir
Jun 6, 2026
Merged

feat(whaleflow): add serializable run result records#2815
Hmbown merged 2 commits into
codex/v0.9.0-stewardshipfrom
codex/v090-whaleflow-results-ir

Conversation

@Hmbown
Copy link
Copy Markdown
Owner

@Hmbown Hmbown commented Jun 6, 2026

Summary

Stewardship notes

This is a narrow maintainer slice toward #2668. It preserves the WhaleFlow direction from #2482/#2486 and keeps @AdityaVG13 credited in the changelog, but deliberately avoids enabling a workflow_run tool, executor behavior, or guessed TraceStore migrations before replay/cancellation/worktree semantics are proven.

Verification

  • cargo test -p codewhale-whaleflow --locked
  • ./scripts/release/check-versions.sh
  • cmp -s CHANGELOG.md crates/tui/CHANGELOG.md && echo changelogs-match
  • git diff --check

Copy link
Copy Markdown
Contributor

@greptile-apps greptile-apps Bot left a comment

Choose a reason for hiding this comment

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

Hmbown has reached the 50-review limit for trial accounts. To continue receiving code reviews, upgrade your plan.

Copy link
Copy Markdown
Contributor

@greptile-apps greptile-apps Bot left a comment

Choose a reason for hiding this comment

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

Hmbown has reached the 50-review limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@Hmbown Hmbown merged commit f8b26b4 into codex/v0.9.0-stewardship Jun 6, 2026
1 check passed
@Hmbown Hmbown deleted the codex/v090-whaleflow-results-ir branch June 6, 2026 02:48
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

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 serializable result records (BranchResult, LeafResult, and ControlNodeResult) along with supporting enums (WorkflowRunStatus, ControlNodeKind) and corresponding serialization tests to support the TraceStore contract. The review feedback suggests optimizing the serialized JSON payload size by omitting None values for optional fields (notes, output, and summary) using #[serde(skip_serializing_if = "Option::is_none")].

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 +256 to +257
#[serde(default)]
pub notes: Option<String>,
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

To keep the serialized JSON representation clean and compact (especially for TraceStore storage), consider omitting None fields from serialization using #[serde(skip_serializing_if = "Option::is_none")].

    #[serde(default, skip_serializing_if = "Option::is_none")]\n    pub notes: Option<String>,

Comment on lines +265 to +266
#[serde(default)]
pub output: Option<String>,
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

To keep the serialized JSON representation clean and compact (especially for TraceStore storage), consider omitting None fields from serialization using #[serde(skip_serializing_if = "Option::is_none")].

    #[serde(default, skip_serializing_if = "Option::is_none")]\n    pub output: Option<String>,

Comment on lines +278 to +279
#[serde(default)]
pub summary: Option<String>,
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

To keep the serialized JSON representation clean and compact (especially for TraceStore storage), consider omitting None fields from serialization using #[serde(skip_serializing_if = "Option::is_none")].

    #[serde(default, skip_serializing_if = "Option::is_none")]\n    pub summary: Option<String>,

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.

1 participant