π Release Highlights
This release delivers a major A/B experimentation infrastructure, significant performance optimizations, improved security hardening, and a growing set of engine/model improvements.
β¨ What's New
π§ͺ A/B Experiments CLI & Infrastructure
A full experiment lifecycle is now supported: define variants, run them round-robin, collect per-run state, and analyze results statistically. New commands include gh aw experiments to read experiment state from storage branches and gh aw experiments analyze for statistical computation (significance testing, sample-size tracking). Workflows can now store experiment state in either cache or a dedicated repo branch.
- #30020 Add
experimentscommand for reading experiment state - #30029 Extend
experiments analyzewith statistical computation - #29985 Experiment schema additions, per-run state, OTEL attributes, audit accuracy
- #29996 Add storage option (
cache|repo, defaultrepo) to experiments - #29988 Select randomly on cache miss instead of always picking first variant
π€ Codex Engine: Default Harness with Retry Logic
Codex workflows now get a default codex_harness.cjs with built-in retry logic, making Codex-engine workflows more resilient out of the box. (#30035)
π¬ AWF /reflect Endpoint Integration
Agent harnesses now fetch the /reflect endpoint before and after running the agent, surfacing model introspection data in step summaries for better observability. (#29420, #30028)
π Pull Request Security: pwn-request Detection
The compiler now validates pull_request_target workflows and detects patterns that could expose secrets to untrusted code β protecting repositories from confused-deputy attacks. (#29433)
π Multiple OTLP Endpoints
The endpoint field in OTLP observability config is now polymorphic β supply a single endpoint string or an array to fan out telemetry to multiple backends simultaneously. (#30021)
π·οΈ Model Aliases & Validation
New builtin aliases gpt-4.1, reasoning (o1/o3/o4 families), and gpt-5-nano; fixed gpt-5-mini multiplier placeholder (was 0). Model aliases are now validated against the Model Alias Format spec. GitHub Actions expressions are now supported in alias parsers. (#30003, #30000, #29995)
π Minimal Secrets Inheritance by Default
Workflows no longer use secrets: inherit by default β the compiler now infers the minimal set of secrets actually needed, reducing the blast radius of any token compromise. (#29455)
β±οΈ --cool-down Flag for update Command
gh aw update now accepts --cool-down (default 7d) to avoid re-updating workflows that were recently refreshed. (#29454)
πΌοΈ <img> Tags in Safe Outputs
Safe-outputs HTML rendering now allows <img> tags, enabling richer formatted output in issue/PR comments. (#29401)
β‘ Performance
- YAML generation: -7% latency, -10% allocations on hot paths (#29409)
- Validation: 73% reduction in allocations β 11 β 3 allocs/op (#29408)
- Compiler: Eliminated redundant frontmatter re-parse in
buildJobs(#29410)
π Bug Fixes & Improvements
- Compiler detects single-quoted bash commands that crash Copilot CLI and now sanitizes them automatically (#30040)
- Action version downgrade prevention:
UpdateActionsno longer pins actions to older SHAs (#29477) - MCP stdin piping:
mcp-cli-bridgenow supports multiline tool arguments via stdin (#29446) - Schema validation errors: Raw schema errors are now transformed into actionable, human-readable messages (#29406)
- Dependabot security: Bot filtering is now guarded against confused-deputy attacks via dependabot (#29432)
- COPILOT_PROVIDER_ strict-mode*: Tokens are now allowed through strict-mode allowlist; BYOK mode documented (#29411)
- Round-robin on cache miss: Starting item is now randomly selected to avoid thundering-herd on first run (#30005)
π Documentation
- W3C-style A/B Experiments Specification β formal spec for experiment definitions
- Model Alias Format Specification
- COPILOT_PROVIDER_* variables and BYOK mode are now documented (#29411)
- Updated tools instructions and builtin prompts for
gh-proxymode (#29412)
π Community Contributions
A huge thank you to the community members who reported issues that were resolved in this release!
@bartul
Upload activation artifactstep missinginclude-hidden-files: trueβ silently drops.claude/.githubfrom activation snapshot (direct issue)
@MauroDruwel
- docs: COPILOT_PROVIDER_* variables not documented and strict-mode allowlist not updated (direct issue)
- question: why is COPILOT_GITHUB_TOKEN still required when using an external provider? (direct issue)
@sg650
- Add
<img>to safe-outputs HTML tag allowlist (direct issue)
@szabta89
For complete details, see CHANGELOG.
Generated by Release Β· β 1.1M
What's Changed
- fix: resolve stale wasm golden files and missing serena.md test fixture by @Copilot in #29370
- Introduce shared/daily-pr-base.md for automated code-improvement PR workflows by @Copilot in #29368
- Fix thundering-herd rate-limit failures: spread FUZZY:DAILY pool from 3h to 18h window by @Copilot in #29369
- [spec-enforcer] Enforce specifications for timeutil, tty, types by @github-actions[bot] in #29385
- fix(daily-community-attribution): cap Tier 3 lookups and add token budget guardrails to stop runaway by @Copilot in #29383
- fix(smoke-claude): resolve only unresolved review threads in test #16 by @Copilot in #29373
- Introduce shared/daily-issue-base.md for scheduled issue-creating workflows by @Copilot in #29374
- feat(copilot-session-insights): add orphaned branch escalation detection for high-gate CI waste by @Copilot in #29384
- fix(design-decision-gate): add MCP keepalive-interval: 60 to prevent GitHub MCP HTTP connection drops by @Copilot in #29375
- [FAQ] Add: controlling the agent's working branch at runtime by @chrizbo in #29377
- feat: add label-triggered jobs (disable workflow, apply safe outputs) to maintenance workflow by @Copilot in #29269
- fix: replace deprecated
{{#import}}with{{#runtime-import}}in workflow files by @Copilot in #29399 - feat: add
<img>to safe-outputs HTML tag allowlist by @Copilot in #29401 - optimize: reduce repository-quality-improver token usage ~800K/run by @Copilot in #29407
- fix(mcp): transform raw schema validation errors into helpful "Did you mean?" messages by @Copilot in #29406
- perf: eliminate redundant file read and frontmatter re-parse in buildJobs by @Copilot in #29410
- perf: optimize YAML generation hot paths (-7% latency, -10% allocations) by @Copilot in #29409
- docs: update tools instructions and builtin prompts for gh-proxy mode by @Copilot in #29412
- perf: reduce BenchmarkValidation allocations 73% (11 β 3 allocs/op) by @Copilot in #29408
- fix: add COPILOT_PROVIDER_* to strict-mode allowlist, skip token validation in BYOK mode, and document Copilot BYOK by @Copilot in #29411
- feat(token-optimizer): migrate prompt to gh-proxy mode with bash+jq efficiency guidance by @Copilot in #29415
- Convert 55.8% of agentic workflows to use tools.github mode: gh-proxy and tools.cli-proxy by @Copilot in #29418
- Fix integration tests: update domain checks from CLI flags to JSON config keys by @Copilot in #29429
- Add pull_request_target security validation (pwn request detection) by @Copilot in #29433
- [jsweep] Clean add_reaction_and_edit_comment.cjs by @github-actions[bot] in #29439
- fix: safe_output_summary shows final posted body including footer for add_comment by @Copilot in #29435
- feat: add AWF /reflect endpoint fetch to agent harness and step summary by @Copilot in #29420
- security: guard bot filtering against dependabot confused deputy attacks by @Copilot in #29432
- fix(mcp-cli-bridge): add stdin piping support for multiline tool arguments by @Copilot in #29446
- fix(jsweep): resolve 100% cache miss by adding concrete state management by @Copilot in #29452
- [instructions] Add on.labels, comment-memory, allowed-base-branches by @github-actions[bot] in #29473
- [architecture] Update architecture diagram - 2026-05-01 by @github-actions[bot] in #29488
- fix: prevent action version downgrades in UpdateActions by @Copilot in #29477
- fix(cache): persist meaningful state and add hit-history tracking in Smoke Codex by @Copilot in #29479
- fix(go-fan): specify explicit cache file path to suppress false cache_memory_miss alerts by @Copilot in #29485
- [caveman] Optimize instruction verbosity β developer.instructions.md (2026-05-01) by @github-actions[bot] in #29490
- chore: bump CLI/MCP tool versions (Claude Code 2.1.126, Copilot 1.0.39, Codex 0.128.0, Playwright MCP 0.0.72, MCP Gateway v0.3.3) by @Copilot in #29484
- feat: add --cool-down flag to update command with 7d default by @Copilot in #29454
- feat: avoid secrets:inherit as default, infer minimal set automatically by @Copilot in #29455
- [spec-extractor] Update package specifications for agentdrain, cli, console, constants by @github-actions[bot] in #29500
- Add codemods to auto-remove deprecated sandbox.mcp.* and sandbox.agent: false keys by @Copilot in #29483
- fix: add
include-hidden-files: trueto activation artifact upload step by @Copilot in #29510 - refactor: extract shared MCP script handler execution envelope by @Copilot in #29497
- Add add-comment, noop, and staged safe-outputs to stale-repo-identifier by @Copilot in #29515
- docs: add refusal-labels to integrity filtering and MCP gateway spec (v1.14.0) by @Copilot in #29516
- [docs] Update glossary - daily scan by @github-actions[bot] in #29518
- fix(rgs-004): add author_association guard to pre_activation jobs for comment-triggered workflows by @Copilot in #29481
- Improve test quality: pkg/cli/update_cooldown_test.go by @Copilot in #29522
- fix: add mcp_handler_process.cjs to setup.sh file lists and fix TS type annotation by @Copilot in #29523
- Add TruffleHog shared agentic workflow for secret detection in smoke-codex by @Copilot in #29512
- fix: sanitize repo-memory filenames before artifact upload to prevent NTFS character failures by @Copilot in #29520
- [FAQ] Update: off-platform admission control for safe outputs by @chrizbo in #29535
- fix: resolve 8 CLI help text consistency issues by @Copilot in #29550
- [docs] Developer instructions v8.3 maintenance tone scan by @github-actions[bot] in #29569
- refactor: address four code organization findings from semantic analysis by @Copilot in #29549
- fix(scatter): eliminate concurrent schedule bursts via composite-seed two-hash scatter by @Copilot in #29565
- Fix silent safe-output write failures under installation token rate limiting by @Copilot in #29543
- feat: extend frontmatter with A/B experiments section by @Copilot in #29534
- feat: add schedule heatmap calendar to --stats output by @Copilot in #29587
- refactor: split LogAnalysis into read-only and mutable interfaces by @Copilot in #29579
- refactor: decompose generateMainJobSteps and buildConsolidatedSafeOutputsJob by @Copilot in #29567
- Remove top-level
botsfrom main JSON schema by @Copilot in #29592 - test: add skip-path and generate-path coverage for generateInterpolationAndTemplateStep by @Copilot in #29590
- refactor: EngineRegistry.Register returns error instead of panicking on invalid port by @Copilot in #29580
- Improve side-repo maintenance workflow header with better explanation and doc link by @Copilot in #29595
- feat: add daily ab-testing-advisor workflow by @Copilot in #29599
- feat: add experiment information as OTLP telemetry attribute by @Copilot in #29593
- Fix docs nav dropdown rendering off-screen with large fonts on Android Chrome by @Copilot in #29583
- fix: surface frontmatter hash computation failure instead of silently continuing by @Copilot in #29578
- feat: detect known credential-leaking actions and clean their artifacts before agent execution by @Copilot in #29588
- Add daily-experiment-report workflow by @Copilot in #29606
- Add .github/aw/experiments.md instruction file for A/B testing experiments by @Copilot in #29601
- feat(claude): add retry harness for transient Anthropic API failures by @Copilot in #29581
- fix(claude_harness): don't retry error_max_turns exits via --continue by @Copilot in #29619
- docs: add ExpertOps pattern (#expert-ops) by @Copilot in #29624
- feat: enhance experiment frontmatter schema with metadata fields by @Copilot in #29618
- Enhance pick_experiment.cjs step summary with description and issue link by @Copilot in #29627
- feat(audit): add --experiment and --variant filter flags, surface experiment in overview, update MCP tool by @Copilot in #29628
- [ab-advisor] A/B experiment: prompt_style for daily-community-attribution by @Copilot in #29620
- docs: document
{{#if}}/{{#else}}/{{#endif}}template syntax in instructions files by @Copilot in #29637 - feat(mcp-cli-bridge): stdin JSON payload mode for multi-argument tool calls by @Copilot in #29636
- docs: add otlp.cjs helper and guide for emitting custom OTLP attributes from shared workflows by @Copilot in #29623
- feat: rewrite daily-experiment-report workflow with statistical analysis, bar charts, and discussion output by @Copilot in #29635
- feat: Support configurable MCP gateway tool timeout via engine.mcp.tool-timeout by @Copilot in #29633
- [FAQ] Add: How agent actions are constrained (commenting, PRs, files, external tools) by @chrizbo in #29642
- Fix build failure in integration tests: missing
coolDownarg inresolveLatestRefcalls by @Copilot in #29643 - fix(daily-security-red-team): add cache-memory to enable scan state persistence by @Copilot in #29645
- fix(slide-deck-maintainer): persist cache-memory state for round-robin source tracking by @Copilot in #29644
- [docs] Self-healing documentation fixes from issue analysis - 2026-05-02 by @github-actions[bot] in #29649
- Fix failing JS Tests (shard 3/4): align create_issue retry test assertions with RATE_LIMIT_RETRY_CONFIG by @Copilot in #29647
- fix(tests): update TestAPITargetDomains tests to check AWF JSON config instead of CLI flags by @Copilot in #29646
- feat: add body-header message type to safe outputs by @Copilot in #29648
- fix: add file-redirection example for JSON stdin mode in mcp_cli_tools_prompt (#29649) by @Copilot in #29653
- fix: add messages_header.cjs to SAFE_OUTPUTS_FILES in setup.sh by @Copilot in #29662
- fix: default sandbox agent type to AWF when not explicit; reject empty type in strict mode by @Copilot in #29663
- [community] Update community contributions in README by @github-actions[bot] in #29672
- [log] Add debug logging to AWF config, MCP validation, and experiment/chain metrics by @github-actions[bot] in #29677
- feat(experiments): extend schema with guardrails/hypothesis/min_samples, enrich reporting & OTEL by @Copilot in #29670
- [code-simplifier] Flatten nested if in sandbox strict-mode validation by @github-actions[bot] in #29676
- [architecture] Update architecture diagram 2026-05-02 by @github-actions[bot] in #29713
- [instructions] Sync github-agentic-workflows.md with recent ADRs by @github-actions[bot] in #29710
- [docs] Update editor preview screenshots β 2026-05-02 by @github-actions[bot] in #29707
- fix(sec-004): add safe-outputs-exempt annotations to 4 handler files by @Copilot in #29714
- [actions] Update GitHub Actions versions - 2026-05-02 by @github-actions[bot] in #29705
- fix(ci): pass github.token via env mapping instead of direct run interpolation by @Copilot in #29719
- feat: add gh-aw.trigger.comment_id to setup and conclusion OTLP spans by @Copilot in #29733
- fix: surface ReadDir error in detectFirewallAuditArtifacts instead of silently returning partial results by @Copilot in #29724
- refactor: decompose generatePostAgentCollectionAndUpload into focused helpers by @Copilot in #29721
- fix: remove --ignore-scripts for crush install and add crush --version step by @Copilot in #29735
- fix: include workflow ID in experiment artifact cache keys and artifact name by @Copilot in #29747
- fix: suppress GitHub REST API deprecation warnings by adding X-GitHub-Api-Version header by @Copilot in #29743
- fix: update TestFirewallArgsIntegration for --allow-domainsβconfig file migration and strict mode id requirement by @Copilot in #29753
- [spec-enforcer] Enforce specifications for actionpins, agentdrain, cli by @github-actions[bot] in #29763
- feat: add inline sub-agent syntax using
## agent: \name`` / H2 boundary delimiters with per-engine placement (experimental) by @Copilot in #29668 - docs: AW harness design plan (Pi SDK + extensions) by @pelikhan in #29667
- fix(spec-enforcer): add enforce_all input to process all packages in one run by @Copilot in #29765
- [docs] Tone scan v8.4: fix 6 marketing language issues in 3 spec files by @github-actions[bot] in #29772
- [dead-code] chore: remove dead functions β 1 function removed by @github-actions[bot] in #29773
- fix: remove all stdin
-placeholder syntax and optimize MCP CLI prompts/help (#29775) by @Copilot in #29781 - refactor: handle real filesystem errors in filepath.Walk log-scanning functions by @Copilot in #29776
- feat: daily-subagent-optimizer β Claude workflow that proposes inline sub-agent refactorings by @Copilot in #29787
- perf: fix 14% CompileSimpleWorkflow regression by eliminating intermediate YAML buffer allocations by @Copilot in #29780
- Add inline sub-agents and deterministic pre-agent steps to unbloat-docs workflow by @Copilot in #29792
- Add best-effort inline sub-agent frontmatter validation in imports and runtime-imports by @Copilot in #29793
- feat: add Pi agentic engine (experimental) by @Copilot in #29789
- [docs] docs: reduce bloat in ephemerals guide by @github-actions[bot] in #29800
- Remove custom LLM gateway ports for OpenCode, Crush, and Pi agents by @Copilot in #29809
- feat: protect well-known top-level .md files from agent modification by @Copilot in #29794
- Add experiment values to agent caller context payload by @Copilot in #29799
- chore: update Copilot CLI 1.0.39β1.0.40, Playwright MCP 0.0.72β0.0.73 by @Copilot in #29803
- [docs] docs: remove redundant bullets in cost-management episode cost section by @github-actions[bot] in #29818
- Investigating sub-agent usage and token consumption by @Copilot in #29802
- fix: use localhost for Gemini MCP gateway URLs on host runner by @Copilot in #29814
- feat: surface missing_tool and missing_data as agent failures in failure issue comments by @Copilot in #29804
- feat: add pi_steering_extension.cjs with automatic injection and cpi.yml integration tests by @Copilot in #29833
- Bump DefaultFirewallVersion to v0.25.35 by @Copilot in #29832
- feat: add smoke-pi workflow and switch smoke-crush/smoke-opencode to water label by @Copilot in #29842
- optimize agent-performance-analyzer with inline sub-agents by @Copilot in #29843
- [docs] Self-healing documentation fixes from issue analysis - 2026-05-03 by @github-actions[bot] in #29845
- feat: add tools.playwright.mode (mcp/cli) and enable cli mode in smoke-copilot by @Copilot in #29840
- feat: migrate playwright workflows to CLI mode, deprecate MCP mode by @Copilot in #29860
- [code-simplifier] Simplify playwright workflow code by @github-actions[bot] in #29872
- refactor: extract shared process_runner.cjs from claude and copilot harnesses by @Copilot in #29888
- fix: Pi engine uses COPILOT_GITHUB_TOKEN instead of PI_API_KEY by @Copilot in #29899
- fix(skill-optimizer): update workflow for v2.0.0 CLI interface by @Copilot in #29902
- [instructions] Sync github-agentic-workflows.md with playwright CLI mode by @github-actions[bot] in #29904
- [docs] Update documentation for engine.bare and tools.cli-proxy by @github-actions[bot] in #29912
- [architecture] Update architecture diagram - 2026-05-03 by @github-actions[bot] in #29907
- fix: replace
fmt.Errorf("%s", str)anti-pattern witherrors.New(str)in pkg/cli by @Copilot in #29901 - [jsweep] Clean convert_gateway_config_gemini.cjs by @github-actions[bot] in #29878
- [docs] docs: tone scan v8.5 β fix 3 marketing phrases in oh-my-code.md by @github-actions[bot] in #29926
- fix: add context.Context to ResolveSHA for graceful cancellation by @Copilot in #29900
- docs: resolve API drift in pkg/parser, pkg/workflow, pkg/cli, pkg/console by @Copilot in #29925
- [dead-code] chore: remove dead functions β 2 functions removed by @github-actions[bot] in #29929
- feat(spec-librarian): add inline sub-agents for phases 1β3 by @Copilot in #29930
- fix(design-decision-gate): increase max-turns from 12 to 20 by @Copilot in #29932
- [mcp-tools] Add missing toolsets and tools to GitHub MCP server docs by @Copilot in #29937
- fix: version-pin AWF config $schema URL and add _schema field to JSONL types by @Copilot in #29848
- Rename
GetActionPinByRepotoGetLatestActionPinByRepoin pkg/actionpins by @Copilot in #29934 - feat: update daily-subagent-optimizer to prioritize common tool prefix optimization by @Copilot in #29950
- fix: change Copilot engine inline sub-agent directory from .agents/agents to .github/agents by @Copilot in #29953
- fix: standardize
pre-prefix hyphenation in workflow step names by @Copilot in #29951 - perf: fix YAMLGeneration regression β eliminate duplicate domain computation and lazy line iteration by @Copilot in #29933
- feat: optimize developer-docs-consolidator with inline sub-agents for Phases 1 & 2 by @Copilot in #29956
- perf: fix FindIncludesInContent regression (~18% slower) by @Copilot in #29949
- fix: harden isSafeExpression β refuse literal operands in &&/|| and fix spec-enforcer expression by @Copilot in #29936
- refactor(pkg/cli): semantic function clustering β consolidate scattered utilities by @Copilot in #29952
- perf: fix ExtractWorkflowNameFromFile regression β stream file instead of slurping by @Copilot in #29960
- perf: fix CompileMCPWorkflow regression β eliminate per-compile allocation in validateStrictFirewall by @Copilot in #29959
- docs: add cache-memory baseline pattern for stateful analysis workflows by @Copilot in #29968
- fix: standardize safe outputs setup step names to use "Generate" verb consistently by @Copilot in #29958
- feat: add pre-agent workspace audit step after clean credentials by @Copilot in #29961
- Add model aliases and fallbacks to AWF config by @Copilot in #29858
- fix: replace unsupported gpt-4.1-mini with gpt-4.1 in github-remote-mcp-auth-test by @Copilot in #29976
- Improve test quality in pkg/cli/actions_test.go by @Copilot in #29972
- [ab-advisor] A/B experiment for daily-astrostylelite-markdown-spellcheck: prompt_style by @Copilot in #29986
- Add model alias format specification by @Copilot in #29984
- feat: select randomly when cache is empty instead of always picking first variant by @Copilot in #29988
- feat: OTel for episodes by @mnkiefer in #29963
- feat: add gen_ai.usage token breakdown to conclusion spans by @Copilot in #29987
- feat: add model alias validation enforcing the Model Alias Format spec by @Copilot in #29995
- feat: experiment infrastructure β schema additions, per-run state, OTEL attributes, audit accuracy by @Copilot in #29985
- docs: extend DataOps pattern with inline sub-agents for cheap per-item reasoning by @Copilot in #29998
- fix: smoke-copilot add_comment targets newly created discussion, not the one closed by close-older-discussions by @Copilot in #29999
- Add daily model inventory checker workflow by @Copilot in #30001
- feat: add storage option to experiments (cache | repo, default repo) by @Copilot in #29996
- feat: allow GitHub Actions expressions in models alias parser by @Copilot in #30000
- fix: randomly select starting item on cache miss in round-robin workflows by @Copilot in #30005
- feat: add
gpt-4.1builtin model alias by @Copilot in #30003 - feat: add provider-prefix support to Pi engine (copilot/claude/codex routing) by @Copilot in #29962
- fix: pass WorkflowData to generateSetupStep in compiler_experiments.go by @Copilot in #30009
- fix(ab-testing-advisor): add missing bash commands, rich experiment template, cache-memory, and strict mode by @Copilot in #30004
- [caveman] Optimize instruction verbosity β workflows_shared_reporting.md (2026-05-03) by @github-actions[bot] in #30013
- improve daily-model-inventory: richer endpoint data and token multiplier analysis by @Copilot in #30018
- fix: use proper
experiments.NAME == "value"syntax in experiment docs and advisor prompt by @Copilot in #30023 - Add A/B experiment for issue-arborist prompt_style (#30015) by @Copilot in #30016
- docs: W3C-style A/B experiments specification by @Copilot in #30024
- fix: resolve TypeScript typecheck errors in JS files by @Copilot in #30026
- Remove
ownerfield from experiments by @Copilot in #30025 - feat: add hidden
experimentscommand to read experiment state from storage repo branches by @Copilot in #30020 - Mark experiments as experimental with compiler warning by @Copilot in #30027
- feat: add support for multiple OTLP endpoints via polymorphic
endpointfield by @Copilot in #30021 - feat: query /reflect before and after running the agent in harnesses by @Copilot in #30028
- fix: single-quote GH_AW_OTLP_ENDPOINTS to prevent YAML sequence parsing by @Copilot in #30030
- feat: add default codex_harness.cjs with retry logic for Codex engine by @Copilot in #30035
- feat: extend experiments analyze command with statistical computation by @Copilot in #30029
- fix: compiler detects and sanitizes single-quoted bash tool commands that crash Copilot CLI by @Copilot in #30040
- feat: add api-proxy test coverage for Pi engine, use printf for models.json, and fix models.json baseUrl hostname (#pi-api-proxy) by @Copilot in #30032
- feat: update daily-experiment-report to use experiments CLI commands by @Copilot in #30044
- Analysis: branch storage supports multiple experiments per workflow ID; simplification to single-experiment API not recommended by @Copilot in #30046
- [blog] Weekly blog post β 2026-05-04 by @github-actions[bot] in #30056
- refactor: eliminate duplicate utilities and trivial alias functions by @Copilot in #30053
- feat(models): add reasoning/gpt-5-nano aliases, fix multipliers β 2026-05-04 inventory sync by @Copilot in #30054
- fix(pi): use api-proxy Docker service hostname for LLM gateway routing to enable /reflect access by @Copilot in #30045
- feat: migrate sergo workflow from cache-memory to repo-memory by @Copilot in #30059
- feat: add daily-geo-optimizer agentic workflow for GEO auditing by @Copilot in #30057
Full Changelog: v0.71.3...v0.71.4