Skip to content

feat(claude-remote): steward fix_mode never on feat/agents- entries - #1508

Merged
mashkovd merged 2 commits into
mainfrom
feat/claude-remote-steward-fix-mode-never
Oct 3, 2026
Merged

mashkovd merged 2 commits into
mainfrom
feat/claude-remote-steward-fix-mode-never

Conversation

@mashkovd

@mashkovd mashkovd commented Oct 3, 2026

Copy link
Copy Markdown
Member

Summary

This turns on the owner-approved single-owner rule for review remediation on DevLoop PRs. The code shipped in mctlhq/mctl-claude-remote#78 (image 0.13.3).

It adds "fix_mode": "never" to the four feat/agents- steward entries:

  • mctl-design
  • mctl-gitops
  • mctl-telegram
  • mctl-pairdesk

The rule for those entries:

  • Review findings and remediation: only the DevLoop shepherd CWFT fixes them. These services are in SHEPHERD_FIX_ONLY_SERVICES.
  • pr-steward: it starts no model tick until the PR is approved at its current head. After that it owns only the merge path.

Invariant: for one PR/head in the review-remediation phase, exactly one actor makes changes.

claude/* and fix/* entries are unchanged: the steward still owns them end to end. The key is set per entry rather than at the top level for exactly that reason. The ownership comment in the file is also corrected; it still described the pre-issue-292 partition.

Why

Rollout and rollback

  • Merge timing: merge only after labs-claude-remote runs 0.13.3. Older images ignore the key, so merging early is harmless, but merging after keeps the effect aligned with the image.
  • Verify: on the next mctl-telegram DevLoop PR, steward.log shows no address-review from the steward, every non-human fix push comes from mctl-agents[bot], and the merge still lands as steward:merged.
  • Rollback: revert this PR. Without the key, every entry behaves as auto, which is today's behaviour.

🤖 Generated with Claude Code

https://claude.ai/code/session_012kWiYf1BX6wcXB2kc8x15U

Owner decision 2026-10-03: on DevLoop feat/agents-* PRs the shepherd CWFT
is the only actor that fixes review findings; the steward runs no model
tick until the PR is approved at its current head and then owns only the
merge path. On mctl-telegram#730 both actors fixed the same findings and
the steward's tick lost a non-fast-forward race to the shepherd's push
($1.64 wasted); #715 and #722 show the same overlap.

Sets "fix_mode": "never" on the four feat/agents- entries only (claude/
and fix/ keep today's steward behaviour) and corrects the ownership
comment, which still described the pre-issue-292 repo partition. Needs
image 0.13.3; removing the key restores today's behaviour.

Claude-Session: https://claude.ai/code/session_012kWiYf1BX6wcXB2kc8x15U
Copilot AI balanced review requested due to automatic review settings October 3, 2026 16:36

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@claude

claude Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

Claude finished @mashkovd's task in 3m 22s —— View job


Reviewing PR #1508

  • Gather context (diff, CLAUDE.md conventions)
  • Review changed file for correctness/security/operational safety
  • Post findings / submit verdict

Verdict: APPROVE (no P1/P2, 1 P3)

Reviewed git diff b71ef232...aa2abaea7 against platform-gitops/services/labs/claude-remote/values.yaml.

  • "fix_mode": "never" was added to exactly the four feat/agents- entries named in the PR description — mctl-design, mctl-gitops, mctl-telegram, mctl-pairdesk — and the claude/* / fix/* entries for mctl-telegram are correctly left untouched, matching the stated invariant (one actor per PR/head during review remediation).
  • The embedded pr-steward.config.json block remains syntactically valid (braces/commas checked by inspection).
  • No secrets, RBAC, or resource-limit changes — this is a config-value-only diff.

P3 (nit, inline): the rewritten top comment now references both SHEPHERD_SKIP_SERVICES and SHEPHERD_FIX_ONLY_SERVICES, but the untouched per-repo comment for mctl-pairdesk a few lines down still says it's "in SHEPHERD_SKIP_SERVICES." Worth confirming which list mctl-pairdesk actually belongs to and updating that stale line — otherwise a future reader could conclude review findings on pairdesk feat/agents- PRs have no owner (shepherd skips it, and now the steward is also blocked by fix_mode: never).

Note: helm template/python3 invocations were blocked by sandbox approval in this run, so JSON/YAML validity was confirmed by careful manual inspection rather than a rendered dry-run.

@github-actions

github-actions Bot commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

Antigravity (agy) review — informational

Model: gemini-3.8-flash-medium · commit aa2abae.

No significant issues found.

@claude claude 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.

No P1/P2 findings (1 P3). The fix_mode: never key is correctly added to exactly the four feat/agents- entries named in the PR description (mctl-design, mctl-gitops, mctl-telegram, mctl-pairdesk); claude/* and fix/* entries are untouched. JSON structure (commas/braces) is valid. One P3 left inline: the updated top comment references both SHEPHERD_SKIP_SERVICES and SHEPHERD_FIX_ONLY_SERVICES, but the untouched per-repo comment for mctl-pairdesk still says it's in SHEPHERD_SKIP_SERVICES — worth reconciling so a future reader doesn't conclude review findings on pairdesk feat/agents- PRs have no owner. Good to merge.

SHEPHERD_SKIP_SERVICES is only mctl-academy since issue-292; mctl-pairdesk
moved to SHEPHERD_FIX_ONLY_SERVICES (cwft-mctl-agents-shepherd.yaml).

Claude-Session: https://claude.ai/code/session_012kWiYf1BX6wcXB2kc8x15U
@claude

claude Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

Claude finished @mashkovd's task in 1m 3s —— View job


Reviewing PR #1508 (commit e5438cf2)

  • Gather context (diff between pinned SHAs, CLAUDE.md conventions)
  • Review changed file for correctness/security/operational safety
  • Post verdict

Verdict: APPROVE (0 P1/P2, 0 P3)

Reviewed git diff b71ef232...e5438cf2 against platform-gitops/services/labs/claude-remote/values.yaml.

  • "fix_mode": "never" is added to exactly the four feat/agents- entries named in the PR description — mctl-design, mctl-gitops, mctl-telegram, mctl-pairdesk — and the claude/* / fix/* entries for mctl-telegram are untouched, matching the stated single-owner invariant.
  • The second commit on this PR (e5438cf2) fixes the P3 nit raised by earlier review passes: the mctl-pairdesk per-repo comment now says "in SHEPHERD_FIX_ONLY_SERVICES" instead of the stale "SHEPHERD_SKIP_SERVICES". I cross-checked this against platform-gitops/argo-workflows/cluster-templates/cwft-mctl-agents-shepherd.yaml:780 — SHEPHERD_FIX_ONLY_SERVICES is literally "mctl-design,mctl-telegram,mctl-gitops,mctl-pairdesk", so the corrected comment is accurate.
  • The embedded pr-steward.config.json block is well-formed JSON (checked the full repos array by inspection) and no merge_mode values were altered.
  • No secrets, RBAC, or resource-limit changes — this is a config-value-only diff, consistent with the repo's branch-protection exception guidance for config bumps.

Submitted as a formal GitHub review approval bound to commit e5438cf2b8315bf4b35abe0a9aac5fbc0ef62367.

@github-actions

github-actions Bot commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

Antigravity (agy) review — informational

Model: gemini-3.8-flash-medium · commit e5438cf.

No significant issues found.

@claude claude 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.

Config-value-only diff: fix_mode: never added to exactly the 4 named feat/agents- entries; the follow-up commit also fixes the stale mctl-pairdesk comment (confirmed against cwft-mctl-agents-shepherd.yaml: pairdesk is indeed in SHEPHERD_FIX_ONLY_SERVICES, not SKIP). JSON valid, no secrets/RBAC/resource changes.

@mashkovd
mashkovd merged commit b38fede into main Oct 3, 2026
21 checks passed
@mashkovd
mashkovd deleted the feat/claude-remote-steward-fix-mode-never branch October 3, 2026 16:48
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.

2 participants