Skip to content

Remove experimental state from forecast command and simplify output - #48911

Merged
pelikhan merged 3 commits into
mainfrom
pelikhan/forecast-remove-experimental
Jul 29, 2026
Merged

Remove experimental state from forecast command and simplify output#48911
pelikhan merged 3 commits into
mainfrom
pelikhan/forecast-remove-experimental

Conversation

@pelikhan

@pelikhan pelikhan commented Jul 29, 2026

Copy link
Copy Markdown
Collaborator

Overview

Promotes the gh aw forecast command out of experimental status. Removes the [EXPERIMENTAL] command-line label and the experimental-status stderr warning, replacing them with a permanent accuracy-disclosure note stating that forecasts are estimates derived from historical samples and may be inaccurate. The forecast specification document is updated from "Experimental Draft" (v0.1.0) to "Draft" (v1.0.0). Two unrelated maintenance changes are bundled in this PR (see below).

Behavior changes

  • RunForecast (pkg/cli/forecast.go) no longer emits "forecast is an experimental command and may change without notice" to stderr.
  • renderForecastTable (pkg/cli/forecast_render.go) now emits "All forecasts are estimates derived from historical samples and may be inaccurate." via console.FormatWarningMessage on every non-JSON invocation (suppressed for --json, per R-IMPL-040). Footer message ordering was also adjusted, and "Monte Carlo" wording was replaced with generic "usage"/"statistical simulation" wording in console output.
  • NewForecastCommand (pkg/cli/forecast_command.go) Short/Long help text no longer carries [EXPERIMENTAL]; Long help now includes the accuracy disclaimer inline and refers to "statistical simulation" instead of "Monte Carlo simulation".

Files changed — forecast experimental-status removal

File Change
docs/src/content/docs/reference/glossary.md Removed "experimental" designation from Forecast glossary entry; added accuracy disclaimer.
docs/src/content/docs/setup/cli.md Removed [EXPERIMENTAL] label from CLI reference; description now notes forecasts may be inaccurate.
docs/src/content/docs/specs/forecast-specification.md Promoted spec status from "Experimental Draft" v0.1.0 to "Draft" v1.0.0; removed experimental warning box and production-use promotion tracking table; renamed §11.5 "Experimental Status Behavior" to "Accuracy Disclosure Behavior"; R-IMPL-040 requirement changed from experimental warning to accuracy note; T-FC-055 and compliance checklist updated accordingly; added v1.0.0 change-log entry.
pkg/cli/README.md Removed "(experimental)" annotations from the gh aw forecast command table and ForecastConfig type table.
pkg/cli/forecast.go Removed the experimental-status stderr warning emission in RunForecast.
pkg/cli/forecast_command.go Removed [EXPERIMENTAL] labels from help text; replaced "Monte Carlo" wording; added inline accuracy disclaimer.
pkg/cli/forecast_render.go Reordered footer info messages; replaced "Monte Carlo simulation" wording with generic usage wording; added accuracy-disclosure warning line to console output.
pkg/cli/forecast_test.go Removed TestRunForecast_R_IMPL_040_ExperimentalWarning, which asserted the old experimental warning appeared/was suppressed on stderr. No replacement test asserting the new accuracy-disclosure note was added in this diff.

Files changed — unrelated bundled fixes

Commit 2db6e0cb9 — Claude model fallback constant fix:

File Change
pkg/workflow/model_env_vars_test.go Updated three test assertions (agent job, detection job, expression-model env var tests) to expect constants.SonnetDefaultModel instead of constants.CopilotBYOKDefaultModel for Claude engine fallback defaults.

Commit c9e263dc1 — wasm golden test resilience:

File Change
pkg/workflow/testdata/TestWasmGolden_CompileFixtures/playwright-cli-mode.golden Replaced the full inline AWF firewall config JSON literal with the placeholder token AWF_CONFIG_PAYLOAD.
pkg/workflow/testdata/TestWasmGolden_CompileFixtures/smoke-copilot.golden Same placeholder-token replacement for the AWF config JSON literal.

This makes the golden snapshots independent of AWF config payload contents (domain allowlists, model lists, container image tag), so future AWF config changes won't require golden-file updates.

Notable test impact

  • No new unit test was added in this diff to directly assert the new accuracy-disclosure stderr message; the only forecast-warning test (TestRunForecast_R_IMPL_040_ExperimentalWarning) was deleted rather than updated.

Generated by PR Description Updater for #48911 · aut00 · 93 AIC · ⌖ 4.84 AIC · ⊞ 6.8K ·

Simplify the forecast command's console output by centralizing all
explanations in the footer, removing user-facing Monte Carlo wording,
and adding a note that all forecasts are estimates and may be inaccurate.

Remove the experimental status entirely: drop the stderr experimental
warning and [EXPERIMENTAL] help labels, and promote the specification
from Experimental Draft (v0.1.0) to Draft (v1.0.0).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c8996a3a-0647-4237-9072-96b70c0baff4
Copilot AI review requested due to automatic review settings July 29, 2026 14:42

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

Pull request overview

Promotes gh aw forecast from experimental status and simplifies user-facing forecast messaging.

Changes:

  • Removes experimental warnings and labels.
  • Consolidates explanatory output in the footer.
  • Updates documentation and the forecast specification.
Show a summary per file
File Description
pkg/cli/README.md Removes experimental designation.
pkg/cli/forecast.go Removes experimental stderr warning.
pkg/cli/forecast_test.go Removes experimental-warning test.
pkg/cli/forecast_render.go Revises footer and accuracy messaging.
pkg/cli/forecast_command.go Updates command help.
docs/src/content/docs/specs/forecast-specification.md Promotes and revises specification.
docs/src/content/docs/setup/cli.md Updates CLI documentation.
docs/src/content/docs/reference/glossary.md Updates forecast definition.

Review details

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 8/8 changed files
  • Comments generated: 2
  • Review effort level: Medium

Comment on lines +115 to +116
fmt.Fprintln(os.Stderr, console.FormatWarningMessage(
"All forecasts are estimates derived from historical samples and may be inaccurate."))
Comment on lines +115 to +116
fmt.Fprintln(os.Stderr, console.FormatWarningMessage(
"All forecasts are estimates derived from historical samples and may be inaccurate."))
@pelikhan

Copy link
Copy Markdown
Collaborator Author

…nstead of CopilotBYOKDefaultModel

Three tests in pkg/workflow were using constants.CopilotBYOKDefaultModel ("auto")
as the expected fallback default for Claude, but claude_engine.go uses
constants.SonnetDefaultModel ("claude-sonnet-5"). Fix:

- model_env_vars_test.go: update expectedDefault/expectedFallbackVal for the three
  Claude test cases in TestModelEnvVarInjectionForAgentJob,
  TestModelEnvVarInjectionForDetectionJob, and TestExpressionModelUsesEnvVar
- wasm_golden_test.go: add SonnetDefaultModel to normalizeOutput() so golden files
  remain stable across Claude default model updates (mirrors the existing handling
  for CopilotBYOKDefaultModel and CodexDefaultModel)

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>

Copilot AI commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

@copilot fix https://github.com/github/gh-aw/actions/runs/30462244127/job/90611423501?pr=48911

Fixed in commit 9f5d39a. The CI failure was in pkg/workflow (not related to the forecast changes) — three Claude test cases were using constants.CopilotBYOKDefaultModel ("auto") as the expected fallback default, but claude_engine.go uses constants.SonnetDefaultModel ("claude-sonnet-5"). Fixed by:

  1. model_env_vars_test.go: corrected expectedDefault/expectedFallbackVal in TestModelEnvVarInjectionForAgentJob, TestModelEnvVarInjectionForDetectionJob, and TestExpressionModelUsesEnvVar for Claude cases to use SonnetDefaultModel.
  2. wasm_golden_test.go: added SonnetDefaultModel to normalizeOutput() so golden comparisons remain stable across Claude default model updates (same pattern as the existing CopilotBYOKDefaultModel and CodexDefaultModel normalization).

@pelikhan

Copy link
Copy Markdown
Collaborator Author

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>

Copilot AI commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

@copilot make wasm resilient in https://github.com/github/gh-aw/actions/runs/30463816156/job/90618614613?pr=48911
fix https://github.com/github/gh-aw/actions/runs/30463816156/job/90618939120?pr=48911

Fixed in commit c9e263d.

  • Added testAWFConfigPayloadRE in wasm_golden_test.go to replace the entire AWF firewall config JSON payload (which contains frequently-changing model aliases, domain allowlists, and container tags) with a stable AWF_CONFIG_PAYLOAD placeholder.
  • Mirrored as normalizeAWFConfigPayload() in scripts/test-wasm-golden.mjs so both the Go and JavaScript wasm golden tests apply the same normalization.
  • Regenerated all golden files for TestWasmGolden_AllEngines and TestWasmGolden_CompileFixtures with the placeholder in place.

@pelikhan
pelikhan merged commit fee6a58 into main Jul 29, 2026
28 checks passed
@pelikhan
pelikhan deleted the pelikhan/forecast-remove-experimental branch July 29, 2026 16:02
@github-actions

Copy link
Copy Markdown
Contributor

🎉 This pull request is included in a new release.

Release: v0.84.0

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