Skip to content

Conversation

@chaptersix
Copy link
Contributor

@chaptersix chaptersix commented Oct 10, 2025

What changed?

Added support for enabling experimental features via gRPC headers and namespace configuration:

  1. New experimental feature infrastructure:
    - Added temporal-experimental gRPC header support
    - supports comma-separated values, wildcards (*), and case-insensitive matching
    - Added FrontendEnabledExperiments dynamic config setting to allow per-namespace control of which experiments can be enabled
  2. CHASM scheduler experiment:
    - Defined ChasmSchedulerExperiment = "chasm-sch" constant
  3. Test improvements:
    - Refactored common/headers/headers_test.go to remove testify suite pattern and use standard table-driven tests with t.Parallel()

Why?

We need a safe, controlled way to roll out experimental features like the CHASM scheduler (v2). This infrastructure provides:

  • Dual gating mechanism: Experiments require both client opt-in (via header) AND server-side namespace configuration, preventing accidental enablement
  • Flexibility: Supports multiple experiments, wildcard enablement for testing, and per-namespace control

How did you test it?

  • built
  • added new unit tests

@chaptersix chaptersix marked this pull request as ready for review October 10, 2025 14:33
@chaptersix chaptersix requested review from a team as code owners October 10, 2025 14:33
chaptersix and others added 2 commits October 10, 2025 09:41
…ix nil slice

- Rename FrontendEnabledExperiments to FrontendAllowedExperiments to better reflect that this is an allowlist
- Change dynamic config key from frontend.enabledExperiments to frontend.allowedExperiments
- Fix default value from []string{} to []string(nil) to avoid shared structure warning
- Update all references in Config struct and IsExperimentEnabled method

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@chaptersix chaptersix requested a review from bergundy October 13, 2025 18:02
chaptersix and others added 5 commits October 15, 2025 09:24
- Add nolint:revive for cognitive-complexity in executors.go and handler.go
- Add nolint:staticcheck for deprecated API usage in nexus_workflow_test.go

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
# Conflicts:
#	components/nexusoperations/executors.go
#	components/nexusoperations/frontend/handler.go
#	tests/nexus_workflow_test.go
@chaptersix chaptersix requested a review from bergundy October 15, 2025 20:53
@chaptersix chaptersix merged commit 42edea7 into main Oct 16, 2025
57 checks passed
@chaptersix chaptersix deleted the alex/schv2_exp branch October 16, 2025 16:11
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.

3 participants