Skip to content

feat: implement issue #696 — F4: canary-rollout engine operates on v<major>-<tier> channels (fallback-safe) [#657] - #697

Merged
don-petry merged 3 commits into
mainfrom
dev-lead/issue-696-20260713-0541
Jul 13, 2026
Merged

feat: implement issue #696 — F4: canary-rollout engine operates on v<major>-<tier> channels (fallback-safe) [#657]#697
don-petry merged 3 commits into
mainfrom
dev-lead/issue-696-20260713-0541

Conversation

@don-petry

@don-petry don-petry commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Closes #696

Implemented by dev-lead agent. Please review.

Summary by CodeRabbit

  • New Features

    • Added major-version-scoped canary channels for more precise rollout tracking.
    • Rollouts now prefer version-specific channel tags when available and retain legacy fallback behavior.
    • Promotions and candidate creation advance the appropriate major-version channel.
  • Bug Fixes

    • Improved channel resolution and evaluation across major release lines.
    • Preserved existing behavior when version-specific channels are unavailable.
  • Tests

    • Added coverage for major-scoped channels, promotions, major bumps, patch updates, and fallback scenarios.

@don-petry
don-petry requested a review from a team as a code owner July 13, 2026 06:11
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@coderabbitai

coderabbitai Bot commented Jul 13, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@don-petry, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 38 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: a93b6dfa-2f8b-48cb-83f9-a58151e29dbc

📥 Commits

Reviewing files that changed from the base of the PR and between 5aa5bac and 85bbb0d.

📒 Files selected for processing (3)
  • scripts/canary-rollout.sh
  • scripts/lib/canary-rollout.sh
  • tests/canary_rollout.bats
📝 Walkthrough

Walkthrough

The canary rollout engine now resolves major-scoped v<M>-<tier> tags, falls back to bare-tier tags, evaluates and promotes resolved channels, and advances major-aware next tags during autocut. Pure semver/tag helpers and comprehensive v-line and fallback tests were added.

Changes

Major-scoped canary channels

Layer / File(s) Summary
Channel tag construction contracts
scripts/lib/canary-rollout.sh
Adds pure helpers for extracting a strict semver major and formatting legacy or v<major>-<tier> channel tags.
Channel resolution and promotion
scripts/canary-rollout.sh
Resolves existing major-scoped tags before bare-tier tags, updates evaluation output and matching, and promotes the resolved frontier tag.
Autocut major-line advancement and validation
scripts/canary-rollout.sh, tests/canary_rollout.bats
Selects major-aware next tags for autocut and tests v-line preference, major and patch behavior, and byte-identical legacy fallback.

Estimated code review effort: 4 (Complex) | ~45 minutes

Possibly related issues

  • Issue 694 — Continues related major-scoped channel work in the canary rollout engine.

Possibly related PRs

Suggested labels: needs-human-review

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is specific and accurately summarizes the main change: fallback-safe major-scoped canary rollout channels.
Linked Issues check ✅ Passed The changes implement major-scoped v- resolution, major-aware autocut/promote behavior, and pure lib helpers as requested.
Out of Scope Changes check ✅ Passed The diff stays within the canary-rollout engine, its pure helpers, and matching tests, with no unrelated feature work.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dev-lead/issue-696-20260713-0541

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@don-petry

Copy link
Copy Markdown
Contributor Author

Dev-Lead — waiting on PR blockers (intent: review-changes)

PR: #697
No changes were committed, but the PR still has blocking checks or reviews (failing or cancelled checks, or changes-requested reviews). The retry cron will re-attempt automatically. Next attempt after: 2026-07-13T06:42:45Z

@don-petry

Copy link
Copy Markdown
Contributor Author

Note

@don-petry I reviewed this PR and no code changes were needed, but it still has blocking checks or reviews (failing or cancelled checks, or changes-requested reviews), so I cannot mark it done yet. I'll re-check automatically.
Next attempt after: 2026-07-13T06:42:45Z

@don-petry
don-petry enabled auto-merge (squash) July 13, 2026 06:12

@gemini-code-assist gemini-code-assist Bot 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.

Code Review

This pull request implements Phase F4 of the major-scoped channels epic (#657), enabling the canary rollout engine to resolve and promote major-scoped channel tags (v-) while remaining backward-compatible with the legacy bare-tier fleet. It introduces several helper functions to parse semver majors and resolve tags, updates evaluation, promotion, and autocut commands to use these resolved tags, and adds comprehensive test coverage. The review feedback suggests caching the results of _agent_current_major and _channel_tag_commit using associative arrays to avoid redundant GitHub API requests during execution.

Comment thread scripts/canary-rollout.sh
Comment thread scripts/canary-rollout.sh
@don-petry
don-petry disabled auto-merge July 13, 2026 06:14
@donpetry-bot

Copy link
Copy Markdown
Contributor

CI checks on this PR are still running. Once they complete, re-mention @donpetry-bot to trigger a fresh review.

Posted by the donpetry-bot PR-review cascade.

@donpetry-bot

Copy link
Copy Markdown
Contributor

@donpetry-bot I'm on it — starting a fresh review now. Results will appear in a few minutes.

@don-petry

Copy link
Copy Markdown
Contributor Author

Dev-Lead — fix-reviews (applied)

Changes committed and pushed.

@don-petry
don-petry enabled auto-merge (squash) July 13, 2026 06:23
@don-petry
don-petry disabled auto-merge July 13, 2026 06:24
@don-petry

Copy link
Copy Markdown
Contributor Author

Dev-Lead — waiting on PR blockers (intent: review-changes)

PR: #697
No changes were committed, but the PR still has blocking checks or reviews (failing or cancelled checks, or changes-requested reviews). The retry cron will re-attempt automatically. Next attempt after: 2026-07-13T06:54:52Z

@don-petry

Copy link
Copy Markdown
Contributor Author

Note

@don-petry I reviewed this PR and no code changes were needed, but it still has blocking checks or reviews (failing or cancelled checks, or changes-requested reviews), so I cannot mark it done yet. I'll re-check automatically.
Next attempt after: 2026-07-13T06:54:52Z

@don-petry
don-petry enabled auto-merge (squash) July 13, 2026 06:24
@donpetry-bot

Copy link
Copy Markdown
Contributor

CI checks on this PR are still running. Once they complete, re-mention @donpetry-bot to trigger a fresh review.

Posted by the donpetry-bot PR-review cascade.

@donpetry-bot

Copy link
Copy Markdown
Contributor

@donpetry-bot I'm on it — starting a fresh review now. Results will appear in a few minutes.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@scripts/canary-rollout.sh`:
- Around line 158-199: Memoize the result of _agent_current_major per agent for
the lifetime of the script invocation, and have _resolved_channel reuse that
cached value instead of calling _host_release_versions through
_agent_current_major on every lookup. Ensure all channel resolutions, including
evaluate and promote paths, share the same per-agent cache while preserving the
existing fallback behavior.
- Around line 152-156: Move the pure `_looks_like_oid` predicate from the
orchestrator script into `scripts/lib/canary-rollout.sh` alongside
`major_component` and `channel_tag`, and update callers to use the sourced
helper. Add direct bats coverage for valid 7–64-character lowercase hexadecimal
IDs and invalid values, preserving the predicate’s existing behavior.
- Around line 1499-1509: Update _autocut_agent to retain both the resolved
next-channel tag and commit from the existing channel_commit call near line
1488, rather than discarding the tag. For non-major bumps, reuse that captured
tag instead of calling _resolved_channel_tag "$agent" next again; keep the
major-bump channel_tag behavior unchanged.

In `@scripts/lib/canary-rollout.sh`:
- Around line 122-127: Update major_component to replace the [[ ... ]] && printf
... || true chain with an explicit if/then/else structure, preserving the
existing strict version match, major-number output, and empty output for
non-matching input while avoiding ShellCheck SC2015.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 420e0b93-597a-4f68-a566-9a586ee6a9c0

📥 Commits

Reviewing files that changed from the base of the PR and between e19767f and 5aa5bac.

📒 Files selected for processing (3)
  • scripts/canary-rollout.sh
  • scripts/lib/canary-rollout.sh
  • tests/canary_rollout.bats

Comment thread scripts/canary-rollout.sh Outdated
Comment thread scripts/canary-rollout.sh
Comment thread scripts/canary-rollout.sh
Comment thread scripts/lib/canary-rollout.sh
@don-petry
don-petry disabled auto-merge July 13, 2026 06:26
@donpetry-bot

donpetry-bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor
Superseded by automated re-review at f04b73bbe08fd7e56d74c3cc1588cf13f0a12475 — click to expand prior review.

Review — fix requested (cycle 1/3)

The automated review identified the following issues. Please address each one:

Findings to fix

Automated review — NEEDS HUMAN REVIEW

Risk: MEDIUM
Reviewed commit: f04b73bbe08fd7e56d74c3cc1588cf13f0a12475
Cascade: triage → deep (triage: haiku 4.5 → deep: opus 4.8 + duck: o4-mini → audit: fable 5)

Summary

F4 major-scoped canary channels (#657): resolves/promotes v- tags, fall-back-safe to the legacy bare tier, with 189 lines of bats covering v-line resolution, in-major promotion, autocut major/patch, and byte-identical bare-tier fallback. Code is well-quoted with no injection surface, no secrets/auth/DB touched — risk MEDIUM. CI is fully green and the head commit already added the memoization the bots requested, but the merge is BLOCKED: reviewDecision is CHANGES_REQUESTED and the required org-leads team review is still pending, so this cannot auto-approve. No downstream consumers impacted (downstream-impact = none).

Findings

  • major: Merge is BLOCKED: reviewDecision=CHANGES_REQUESTED and the required org-leads team review is still pending (requested, not submitted). A required human review gate is unsatisfied, so the PR cannot be auto-approved regardless of green CI.
  • minor: CodeRabbit CHANGES_REQUESTED was submitted against the older commit 5aa5ba; the current head (f04b73b) already added _AGENT_MAJOR_CACHE and _CHANNEL_COMMIT_CACHE memoization, which addresses the perf findings (agent-major and channel-commit redundant gh api calls) and mitigates the _autocut_agent double-resolution via the shared cache. Verify the stale CHANGES_REQUESTED review is re-evaluated/dismissed against head.
  • info: Remaining bot nits are non-blocking: (1) move the pure _looks_like_oid predicate into scripts/lib/canary-rollout.sh alongside major_component/channel_tag and add direct bats coverage; (2) major_component uses the SC2015-prone '[[..]] && printf || true' idiom — an explicit if/then/else is clearer, though ShellCheck CI is green. Author's discretion; not merge-blocking.
  • info: run_secret_scanning MCP tool was not available (GitHub Secret Protection not exposed for this repo); relied on the green gitleaks CI check. No scan fabricated.

Reviewed by the PR-review cascade (triage: haiku 4.5 → deep: opus 4.8 + duck: o4-mini → audit: fable 5). Reply if you need a human review.

Additional tasks

  1. Resolve all unresolved review thread comments from other reviewers
  2. Ensure all CI checks pass after your changes
  3. Rebase on the target branch if behind
  4. Do NOT modify files unrelated to the findings above

The review cascade will automatically re-review after new commits are pushed.

coderabbitai[bot]
coderabbitai Bot previously approved these changes Jul 13, 2026
@don-petry

Copy link
Copy Markdown
Contributor Author

Dev-Lead — fix-reviews (applied)

Changes committed and pushed.

@sonarqubecloud

Copy link
Copy Markdown

@don-petry

Copy link
Copy Markdown
Contributor Author

Dev-Lead — review-changes (no-changes)

No changes were needed for this PR.

@don-petry
don-petry enabled auto-merge (squash) July 13, 2026 06:34
@donpetry-bot

donpetry-bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor
Superseded by automated re-review at 85bbb0d502a91a276c7b6bf98564a7ab02ec8408 — click to expand prior review.

Review — fix requested (cycle 2/3)

The automated review identified the following issues. Please address each one:

Findings to fix

Automated review — NEEDS HUMAN REVIEW

Risk: MEDIUM
Reviewed commit: f04b73bbe08fd7e56d74c3cc1588cf13f0a12475
Cascade: triage → deep (triage: haiku 4.5 → deep: opus 4.8 + duck: o4-mini → audit: fable 5)

Summary

PR #697 implements epic #657 Phase F4 (major-version-scoped v- canary channels with fall-back-safe resolution) across scripts/canary-rollout.sh, scripts/lib/canary-rollout.sh, and bats coverage. The change is well-structured with strong test coverage and no security concerns (no secrets/auth/crypto/DB; all CI green incl. ShellCheck, CodeQL, SonarCloud, gitleaks, Agent Security Scan). The caching findings from Gemini and CodeRabbit were already addressed in commit f04b73b via per-invocation memoization. Risk is MEDIUM (non-trivial rollout-engine logic), but process gates fail: reviewDecision is still CHANGES_REQUESTED (coderabbitai), the org-leads team review is requested-not-approved, and mergeStateStatus is BLOCKED — so this escalates on gate failure, not for a security audit. Downstream impact: (none).

Findings

  • MAJOR: reviewDecision=CHANGES_REQUESTED (coderabbitai) is unresolved and mergeStateStatus=BLOCKED. The follow-up commit f04b73b resolved the caching comments, but CodeRabbit has not re-approved/dismissed and the org-leads team review remains requested-not-approved. Gate not satisfied.
  • INFO: CodeRabbit's caching suggestions (memoize _agent_current_major and _channel_tag_commit) were implemented in f04b73b via associative-array caches. Note the caches are per-process and never invalidated after a tag move; safe today because no code re-reads a channel commit after mutating it within the same invocation, but a future read-after-write would return a stale value.
  • MINOR: Unaddressed CodeRabbit nit: _looks_like_oid is a pure predicate defined in the orchestrator; CodeRabbit suggested moving it into scripts/lib/canary-rollout.sh alongside major_component/channel_tag with direct bats coverage. Author discretion; not blocking.
  • MINOR: Unaddressed CodeRabbit nit: major_component uses the [[ ... ]] && printf ... || true chain (SC2015 shape). Functionally correct (printf always succeeds) and ShellCheck CI passed, but an explicit if/then/else is clearer. Author discretion.
  • INFO: Fall-back safety looks sound: _resolved_channel only prefers the v-scoped tag when _looks_like_oid matches a real 7-64 hex commit, so an absent v-tag (empty or {} sentinel) falls back to the legacy bare tier, keeping the current bare-tier fleet byte-identical (covered by the 'byte-identical to pre-F4' bats test). No injection risk: agent/tier/major values come from the internal rings registry and major_component emits digits only.
  • INFO: MCP run_secret_scanning tool not available in this environment; relied on the passing gitleaks CI check. No secrets present in the diff.

Reviewed by the PR-review cascade (triage: haiku 4.5 → deep: opus 4.8 + duck: o4-mini → audit: fable 5). Reply if you need a human review.

Additional tasks

  1. Resolve all unresolved review thread comments from other reviewers
  2. Ensure all CI checks pass after your changes
  3. Rebase on the target branch if behind
  4. Do NOT modify files unrelated to the findings above

The review cascade will automatically re-review after new commits are pushed.

@donpetry-bot donpetry-bot 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.

Automated review — APPROVED ✓

Risk: MEDIUM
Reviewed commit: 85bbb0d502a91a276c7b6bf98564a7ab02ec8408
Review mode: triage-approved (single reviewer)

Summary

PR #697 implements epic #657 Phase F4: major-scoped v- canary channels with fall-back-safe resolution (prefer the v-scoped tag when it exists, else the legacy bare tier), covering channel resolution, evaluate, promote, and autocut, plus ~200 lines of new bats coverage including the transition-safety byte-identical guard. All prior review findings (CodeRabbit/Gemini memoization, _looks_like_oid relocation to lib, SC2015 idiom, autocut double-resolution) were addressed in commits f04b73b and 85bbb0d; CodeRabbit dismissed its changes-requested review and all 6 review threads are resolved. CI is fully green (ShellCheck, bats, CodeQL, SonarCloud, gitleaks, Agent Security Scan). Risk MEDIUM (non-trivial rollout-engine logic; no auth/secrets/DB/security surface).

Linked issue analysis

Closes #696 (F4 of epic #657). All five requirements are substantively addressed: (1) channel resolution prefers /v- with fallback to bare / via _resolved_channel, guarded by _looks_like_oid so absent/sentinel responses fall back; (2) autocut of a MAJOR bump seeds a fresh v-next line while minor/patch advance the current major's v-next, falling back to bare next on today's fleet; (3) promote advances the resolved tag within a major line (v2 promotion never touches v1-*, tested); (4) evaluate reports the major line (e.g. 'candidate (v2-next)'); (5) current major derived from the highest vX.Y.Z release tag — no new registry field. Pure helpers (major_component, channel_tag, _looks_like_oid) live in scripts/lib/canary-rollout.sh as required. Tests cover every scenario the issue lists, including the byte-identical bare-tier transition guard.

Findings

  • All 4 CodeRabbit actionable comments and both Gemini comments are resolved: memoization added (_AGENT_MAJOR_CACHE, _CHANNEL_COMMIT_CACHE), _looks_like_oid moved to lib with direct bats coverage, major_component rewritten as an explicit conditional, and autocut's duplicate next-resolution removed. CodeRabbit dismissed its CHANGES_REQUESTED review at head.
  • INFO (carried forward, non-blocking): the per-invocation caches are never invalidated after a tag move; safe today since nothing re-reads a channel commit after mutating it in the same run, but a future read-after-write would see a stale value.
  • INFO: fall-back safety is sound — _resolved_channel only prefers the v-form when the probe returns a real 7-64 hex oid; no injection surface (agent/tier come from the internal rings registry, major_component emits digits only).
  • INFO: run_secret_scanning MCP tool not available in this environment; relied on the green gitleaks CI check. No secrets in the diff.

CI status

All required checks green: ShellCheck, Lint and bats, CodeQL, SonarCloud (quality gate passed), gitleaks secret scan, Agent Security Scan, npm audit, agent-shield. The two CANCELLED dev-lead dispatch/ci-relay entries are the dev-lead agent's own superseded orchestration runs, not required checks; their later runs succeeded or were intentionally skipped ([skip ci-relay]).


Reviewed automatically by the PR-review agent (single-reviewer mode: fable 5). Reply if you need a human review.

@don-petry
don-petry merged commit 0ba3be0 into main Jul 13, 2026
25 of 29 checks passed
@don-petry
don-petry deleted the dev-lead/issue-696-20260713-0541 branch July 13, 2026 06:39

@donpetry-bot donpetry-bot 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.

Automated review — APPROVED ✓

Risk: MEDIUM
Reviewed commit: 85bbb0d502a91a276c7b6bf98564a7ab02ec8408
Review mode: triage-approved (single reviewer)

Summary

Implements epic #657 Phase F4: the canary-rollout engine can now resolve, promote, and autocut major-scoped v- channel tags while remaining fallback-safe on today's bare-tier fleet. Resolution prefers /v- when it exists (verified via _looks_like_oid), else the legacy bare /; a major-bump autocut seeds a fresh v-next line; promote advances the resolved tag within its major line. Pure helpers (major_component, channel_tag, _looks_like_oid) live in scripts/lib/canary-rollout.sh, keeping the lib pure per #696. 200+ lines of new bats coverage including the transition-safety guard (bare-tier fixture behaves byte-identically to pre-F4).

Linked issue analysis

Closes #696 (epic #657, Phase F4). All four change areas from the issue are implemented: (1) fallback-safe channel resolution in channel_commit/_resolved_channel; (2) _autocut_agent seeds v-next on a major bump and advances the current major's v-next (with bare fallback) on minor/patch; (3) cmd_promote advances the resolved frontier tag within a major line — a v2 promotion never touches v1-* tags (test-asserted); (4) evaluate reports the major line (e.g. 'candidate (v2-next)'). All five test scenarios mandated by the issue are present. The critical transition constraint (must not break the running bare-tier fleet before F5) is guarded by dedicated byte-identical fallback tests. Registry derivation approach used (major derived from highest vX.Y.Z release tag, no schema churn) — exactly as the issue preferred.

Findings

No blocking findings.

  • Secret scan: run_secret_scanning MCP tool unavailable in this environment; gitleaks CI check is green and manual diff inspection found no credentials (test fixtures use placeholder SHAs only).
  • Prior bot reviews fully addressed in commits f04b73b/85bbb0d5: memoization added (_AGENT_MAJOR_CACHE, _CHANNEL_COMMIT_CACHE) per gemini/CodeRabbit performance comments; _looks_like_oid moved to the pure lib; major_component avoids the SC2015 A && B || C idiom. CodeRabbit's CHANGES_REQUESTED review was dismissed after fixes; all 6 review threads are resolved.
  • Triage cleared this as low-risk; I classify it MEDIUM (non-trivial logic in the production tag-mutation engine), which still satisfies the auto-approve gate. The fallback design plus transition-safety tests mitigate the rollout risk.
  • Minor (non-blocking): _resolved_channel is invoked separately by _resolved_channel_tag in cmd_promote, but the memoization caches make repeated resolution cheap and consistent within a run.

CI status

All substantive checks green: ShellCheck, Lint and bats, CodeQL, Secret scan (gitleaks), Agent Security Scan, AgentShield, SonarCloud, npm audit, Analyze (actions). Cancelled/skipped entries (dev-lead dispatch/ci-relay, ecosystem-specific audits) are agent relay jobs superseded by later successful runs or N/A ecosystems — not failures.


Reviewed automatically by the PR-review agent (single-reviewer mode: fable 5). Reply if you need a human review.

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.

F4: canary-rollout engine operates on v<major>-<tier> channels (fallback-safe) [#657]

2 participants