Skip to content

fix(#6818): append [skip ci] to GitLab scaffold MR title - #6819

Merged
ggallen merged 3 commits into
mainfrom
agent/6818-skip-ci-mr-title
Aug 31, 2026
Merged

fix(#6818): append [skip ci] to GitLab scaffold MR title#6819
ggallen merged 3 commits into
mainfrom
agent/6818-skip-ci-mr-title

Conversation

@fullsend-ai-coder

Copy link
Copy Markdown
Contributor

The scaffoldCommitFn in repos.go appended [skip ci] to meta.CommitMsg for GitLab forges but not to meta.PRTitle. On GitLab projects with merged-results pipelines, only the MR title check (from PR #6723) can suppress dispatch — the synthetic merge commit does not carry commit message trailers. This caused every scaffold install MR to trigger the review agent.

Add the matching PRTitle append so the dispatch job's CI_MERGE_REQUEST_TITLE check prevents the review agent from running on scaffold MRs.


Closes #6818

Post-script verification

  • Branch is not main/master (agent/6818-skip-ci-mr-title)
  • Secret scan passed (gitleaks — 1ac1750a661c6ccc170267c8b3919d2597cf7810..HEAD)
  • PR body secret scan: N/A (commit body path)

The scaffoldCommitFn in repos.go appended [skip ci] to
meta.CommitMsg for GitLab forges but not to meta.PRTitle.
On GitLab projects with merged-results pipelines, only the
MR title check (from PR #6723) can suppress dispatch — the
synthetic merge commit does not carry commit message
trailers. This caused every scaffold install MR to trigger
the review agent.

Add the matching PRTitle append so the dispatch job's
CI_MERGE_REQUEST_TITLE check prevents the review agent
from running on scaffold MRs.

Closes #6818
@fullsend-ai-coder
fullsend-ai-coder Bot requested a review from a team as a code owner August 31, 2026 19:22
@fullsend-ai-coder fullsend-ai-coder Bot added the ready-for-review Agent PR ready for human review label Aug 31, 2026
@fullsend-ai-review

fullsend-ai-review Bot commented Aug 31, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 7:24 PM UTC · Completed 7:42 PM UTC

Commit: 6287c2d · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $4.79

@fullsend-ai-review

fullsend-ai-review Bot commented Aug 31, 2026

Copy link
Copy Markdown

Risk Assessment: moderate (2/5)

Details

Minimal 1-line production change with strong test coverage (0.50 ratio) on a high-churn file with frequent recent fixes, yielding moderate risk driven primarily by git history volatility despite very low metadata risk. Re-review confirms no signal changes from prior assessment.

Previous run

Risk Assessment: moderate (2/5)

Details

Minimal 1-line production change with strong test coverage (0.50 ratio) on a high-churn file with frequent recent fixes, yielding moderate risk driven primarily by git history volatility despite very low metadata risk. Score unchanged from prior assessment.

Previous run (2)

Risk Assessment: moderate (2/5)

Details

Minimal 1-line production change with strong test coverage (0.50 ratio) on a high-churn file with frequent recent fixes, yielding moderate risk driven primarily by git history volatility despite very low metadata risk.

@fullsend-ai-review

fullsend-ai-review Bot commented Aug 31, 2026

Copy link
Copy Markdown

Looks good to me

Previous run

Review

Findings

Low

  • [error-handling-idiom] internal/cli/repos_test.go:1891 — The test discards the error from runReposInstall via _ = err. The comment explains this is intentional because partial failures are expected (e.g., GitLab bot-token setup requires a real client), but using t.Logf("runReposInstall: %v", err) would make the error visible in verbose test output without breaking the test when partial failures occur.
    Remediation: Replace _ = err with t.Logf("runReposInstall: %v", err) so the error is visible in verbose test output.

Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR
Previous run (2)

Review

Findings

Low

  • [error-handling-idiom] internal/cli/repos_test.go:1881 — Every other call to runReposInstall in this file captures the return value as err (34 occurrences). This test discards it with _ =, breaking the established convention.
    Remediation: Change _ = runReposInstall(...) to err := runReposInstall(...) to keep the test consistent with the rest of the file.

Labels: PR fixes GitLab scaffold install MR title to include [skip ci] for dispatch suppression


Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR

fullsend-ai-review[bot]

This comment was marked as outdated.

@fullsend-ai-review fullsend-ai-review Bot added component/install CLI install and app setup component/dispatch Workflow dispatch and triggers labels Aug 31, 2026
@fullsend-ai-coder

fullsend-ai-coder Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor Author

🤖 Finished Fix · ✅ Success · Started 7:44 PM UTC · Completed 7:52 PM UTC

Commit: 6287c2d · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $1.22

Change _ = runReposInstall(...) to err := runReposInstall(...) in
TestRunReposInstall_GitLabPRTitleIncludesSkipCI to match the error-
handling idiom used by every other call site in repos_test.go.

Addresses #6819
@fullsend-ai-coder

Copy link
Copy Markdown
Contributor Author

🔧 Fix agent — iteration 1 (bot-triggered)

Addressed the single low-severity finding: changed blank identifier assignment to named error capture in TestRunReposInstall_GitLabPRTitleIncludesSkipCI to match established file convention. Test passes, secret scan clean.

Fixed (1):

  1. error-handling-idiom: _ = runReposInstall breaks established convention (internal/cli/repos_test.go): Changed _ = runReposInstall(...) to err := runReposInstall(...) with _ = err to match the error-handling idiom used by all 34 other call sites in repos_test.go

Tests: passed

Next steps:

  • /fs-review — request a re-review of the changes
  • /fs-fix <your instruction> — run another fix pass with specific guidance
  • Push commits directly — review re-runs automatically on push
    Updated by fullsend fix agent

@fullsend-ai-review

fullsend-ai-review Bot commented Aug 31, 2026

Copy link
Copy Markdown

🤖 Review · ❌ Terminated · Started 7:54 PM UTC · Ended 8:13 PM UTC

Commit: c48514a · View workflow run →

@codecov

codecov Bot commented Aug 31, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

fullsend-ai-review[bot]

This comment was marked as outdated.

@fullsend-ai-review

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 7:54 PM UTC · Completed 8:13 PM UTC

Commit: c48514a · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $4.50

@fullsend-ai-coder

fullsend-ai-coder Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor Author

🤖 Finished Fix · ✅ Success · Started 8:14 PM UTC · Completed 8:21 PM UTC

Commit: c48514a · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $0.70

Replace `_ = err` with `t.Logf` in the GitLab scaffold MR title test
so partial-failure details are visible in verbose test output.

Addresses #6819
@fullsend-ai-coder

Copy link
Copy Markdown
Contributor Author

🔧 Fix agent — iteration 2 (bot-triggered)

Replaced _ = err with t.Logf in the GitLab scaffold MR title test to surface partial-failure details in verbose test output, as requested by the reviewer.

Fixed (1):

  1. error-handling-idiom: test discards error via _ = err (internal/cli/repos_test.go): Replaced _ = err with t.Logf("runReposInstall: %v", err) so the partial-failure error is visible in verbose test output without breaking the test.

Tests: passed

Next steps:

  • /fs-review — request a re-review of the changes
  • /fs-fix <your instruction> — run another fix pass with specific guidance
  • Push commits directly — review re-runs automatically on push
    Updated by fullsend fix agent

@fullsend-ai-review

fullsend-ai-review Bot commented Aug 31, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 8:23 PM UTC · Completed 8:36 PM UTC

Commit: 0ff7c3b · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $2.52

@fullsend-ai-review
fullsend-ai-review Bot dismissed stale reviews from themself August 31, 2026 20:36

Superseded by updated review

@fullsend-ai-review fullsend-ai-review Bot added the ready-for-merge All reviewers approved — ready to merge label Aug 31, 2026
@ggallen
ggallen enabled auto-merge August 31, 2026 20:40
@ggallen
ggallen added this pull request to the merge queue Aug 31, 2026
Merged via the queue into main with commit 097e98c Aug 31, 2026
53 checks passed
@ggallen
ggallen deleted the agent/6818-skip-ci-mr-title branch August 31, 2026 20:51
@fullsend-ai-retro

fullsend-ai-retro Bot commented Aug 31, 2026

Copy link
Copy Markdown

🤖 Finished Retro · ✅ Success · Started 8:53 PM UTC · Completed 9:04 PM UTC

Commit: 0ff7c3b · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $3.94

@fullsend-ai-retro

Copy link
Copy Markdown

Retro: PR #6819fix(#6818): append [skip ci] to GitLab scaffold MR title

Timeline: Issue #6818 opened → triage (6 min) → code agent (19 min) → PR #6819 opened → 3 review cycles + 2 fix cycles → human approval → merge. Total wall-clock: ~2 hours. Total agent cost: $13.73.

The code agent produced a correct 1-line production fix (meta.PRTitle += " [skip ci]" in repos.go) with a new test on the first attempt. The production code required no rework.

Review-fix cycling on low-severity findings (65% of total cost)

The review agent found a [low] error-handling-idiom violation in the test: _ = runReposInstall(...) instead of err := runReposInstall(...) (34 other calls in the file use err :=). However, its suggestion was incomplete — it said to capture the error but didn't specify what to do with the value. The fix agent chose _ = err, which the second review correctly flagged as still discarding the error. The second review suggested t.Logf("...", err), which the fix agent applied. The third review approved.

This two-cycle cascade cost $8.94 (2 extra reviews at $4.50 + $2.52, 2 fix runs at $1.22 + $0.70) — 65% of the total PR cost — for a low-severity test convention issue.

Evidence for existing issues (no new proposals needed):

E2E behaviour test flake

Run 33432918746 failed on commit c48514a with openshell: error: failed to download ...openshell_0.0.116-1_amd64.deb in the agent-settings.feature:40 scenario. The same test passed on the next commit (run 33435582933) with no relevant code change between them — the only diff was replacing _ = err with t.Logf in an unrelated test. This is a transient GitHub Releases CDN failure. See proposal below.

Related existing issues: #3902 covers retry logic for harness resource fetching (config files from raw.githubusercontent.com) but not the openshell binary download from GitHub Releases — these are different code paths. #4076 addresses yanked OpenShell releases (prevention via minimumReleaseAge) but not transient download failures (resilience via retry).

Proposals filed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

component/dispatch Workflow dispatch and triggers component/install CLI install and app setup ready-for-merge All reviewers approved — ready to merge ready-for-review Agent PR ready for human review risk/moderate PR risk: moderate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(gitlab): scaffold install MR title missing [skip ci] triggers review agent on merged-results pipelines

1 participant