Skip to content

Set suggested_experiment_status on generation nodes#4863

Open
CristianLara wants to merge 4 commits intofacebook:mainfrom
CristianLara:export-D88214256
Open

Set suggested_experiment_status on generation nodes#4863
CristianLara wants to merge 4 commits intofacebook:mainfrom
CristianLara:export-D88214256

Conversation

@CristianLara
Copy link
Contributor

Summary:
Set the suggested_experiment_status field on generation nodes throughout the codebase. This allows the orchestrator to automatically update experiment status based on the optimization phase.

What changed:

  1. Updated generation_strategy_dispatch.py to set suggested_experiment_status on:

    • Sobol nodes (INITIALIZATION)
    • MBM nodes (OPTIMIZATION)
  2. Updated generation_nodes.py to set suggested_experiment_status on:

    • Sobol nodes (INITIALIZATION)
    • MBM nodes (OPTIMIZATION)
    • PLBO nodes (OPTIMIZATION)
    • BOTL nodes (OPTIMIZATION)
    • ELC nodes (OPTIMIZATION)
  3. Updated generation_strategies.py to set suggested_experiment_status on:

    • BOTL nodes (OPTIMIZATION)
    • Factorial nodes (OPTIMIZATION)
    • EB TS nodes (OPTIMIZATION)
    • Random PE nodes (INITIALIZATION)
    • PE nodes (OPTIMIZATION)
    • Various other optimization nodes (OPTIMIZATION)

Why this change:
This builds on the infrastructure added in previous diffs which added the status field to Experiment, and GenerationNode. Now we're actually setting the field on nodes so that experiments will automatically transition through their lifecycle based on what GS node they're in.

Reviewed By: lena-kashtelyan, mgarrard

Differential Revision: D88214256

Cristian Olvera Lara and others added 4 commits February 5, 2026 09:07
Summary:
Pull Request resolved: facebook#4737

# Summary

Add `ExperimentStatus` enum with phases: DRAFT, INITIALIZATION, OPTIMIZATION, COMPLETED.

**Backward compatibility:**
The status field defaults to `None` for existing experiments, maintaining full backward compatibility. New experiments can optionally set status as needed.

Differential Revision: D86801911

Reviewed By: mgarrard
Summary:
Pull Request resolved: facebook#4738

# AOSC note

Land xdb schema changes first D88096914

# Summary

Store ExperimentStatus on Experiment class as `status` and introduce setters/getters, update SQA classes+encoder/decoder, and add tests.

Differential Revision: D90089265
Summary:
This change introduces an optional `suggested_experiment_state` field to
the `GenerationNode` class that allows tracking what experiment status is suggested
for a given generation node. This is part of a larger effort to add status tracking
to experiments.

The field is:
- Optional (defaults to None for backward compatibility)
- Advisory only (does not automatically update experiment.status)
- Configurable per GenerationNode instance
- Serialized automatically via SerializationMixin
- Displayed in __repr__ when set

This is Phase 1 where we are just adding the column but not yet doing anything with it. In the next diffs in this stack we will propagate this through the orchestrator and eventually set this status on the experiment.

Differential Revision: D88089767
Summary:
Set the suggested_experiment_status field on generation nodes throughout the codebase. This allows the orchestrator to automatically update experiment status based on the optimization phase.

**What changed:**
1. Updated generation_strategy_dispatch.py to set suggested_experiment_status on:
   - Sobol nodes (INITIALIZATION)
   - MBM nodes (OPTIMIZATION)

2. Updated generation_nodes.py to set suggested_experiment_status on:
   - Sobol nodes (INITIALIZATION)
   - MBM nodes (OPTIMIZATION)
   - PLBO nodes (OPTIMIZATION)
   - BOTL nodes (OPTIMIZATION)
   - ELC nodes (OPTIMIZATION)

3. Updated generation_strategies.py to set suggested_experiment_status on:
   - BOTL nodes (OPTIMIZATION)
   - Factorial nodes (OPTIMIZATION)
   - EB TS nodes (OPTIMIZATION)
   - Random PE nodes (INITIALIZATION)
   - PE nodes (OPTIMIZATION)
   - Various other optimization nodes (OPTIMIZATION)

**Why this change:**
This builds on the infrastructure added in previous diffs which added the status field to Experiment, and GenerationNode. Now we're actually setting the field on nodes so that experiments will automatically transition through their lifecycle based on what GS node they're in.

Reviewed By: lena-kashtelyan, mgarrard

Differential Revision: D88214256
@meta-cla meta-cla bot added the CLA Signed Do not delete this pull request or issue due to inactivity. label Feb 6, 2026
@meta-codesync
Copy link

meta-codesync bot commented Feb 6, 2026

@CristianLara has exported this pull request. If you are a Meta employee, you can view the originating Diff in D88214256.

@codecov-commenter
Copy link

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 96.76%. Comparing base (940092e) to head (79e0bfc).

Additional details and impacted files
@@           Coverage Diff            @@
##             main    #4863    +/-   ##
========================================
  Coverage   96.76%   96.76%            
========================================
  Files         589      591     +2     
  Lines       61832    61944   +112     
========================================
+ Hits        59829    59941   +112     
  Misses       2003     2003            

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed Do not delete this pull request or issue due to inactivity. fb-exported meta-exported

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants