From 205f1d51cc5a840d0c71580289364f8941bd53bf Mon Sep 17 00:00:00 2001 From: fullsend-code <278716306+fullsend-ai-coder[bot]@users.noreply.github.com> Date: Sun, 2 Aug 2026 08:55:48 +0000 Subject: [PATCH 1/2] fix(#825): remove dead defaults.auto_merge config field MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit RepoDefaults.AutoMerge was declared, defaulted, parsed, and tested but never consumed to gate any merge behavior. Remove the field from the Go struct, constructor, test fixtures, web admin TypeScript type, YAML fixtures, and ADR 0045 reference table. Existing config.yaml files containing auto_merge will continue to parse without error — yaml.v3 silently ignores unknown keys. Note: pre-commit could not run in the sandbox (network-restricted). TypeScript tests could not run (no node_modules in sandbox). Go tests for config and layers packages passed. Closes #825 --- docs/ADRs/0045-forge-portable-harness-schema.md | 1 - internal/config/config.go | 4 +--- internal/config/config_test.go | 6 ------ internal/layers/enrollment_test.go | 4 ++-- web/admin/src/lib/layers/configRepo.test.ts | 1 - .../src/lib/layers/fixtures/configrepo/config-valid.yaml | 1 - web/admin/src/lib/layers/orgConfigParse.ts | 1 - 7 files changed, 3 insertions(+), 15 deletions(-) diff --git a/docs/ADRs/0045-forge-portable-harness-schema.md b/docs/ADRs/0045-forge-portable-harness-schema.md index 9683fb6846..e17b4f48f0 100644 --- a/docs/ADRs/0045-forge-portable-harness-schema.md +++ b/docs/ADRs/0045-forge-portable-harness-schema.md @@ -442,7 +442,6 @@ harness files: | `inference` | Inference provider (vertex, etc.) | | `defaults.roles` | Which roles are active by default for new repos | | `defaults.max_implementation_retries` | Org-wide retry policy | -| `defaults.auto_merge` | Org-wide auto-merge policy | | `repos` | Per-repo enabled/disabled and role overrides | | `allowed_remote_resources` | URL allowlist for remote harness resources | diff --git a/internal/config/config.go b/internal/config/config.go index f91588696f..67c39d7d0d 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -123,14 +123,13 @@ type RepoDefaults struct { Roles []string `yaml:"roles"` Runtime string `yaml:"runtime,omitempty"` MaxImplementationRetries int `yaml:"max_implementation_retries"` - AutoMerge bool `yaml:"auto_merge"` StatusNotifications *StatusNotificationConfig `yaml:"status_notifications,omitempty"` } // RepoConfig holds per-repo configuration. // StatusNotifications is intentionally absent here — notification style is an // org-wide UX decision (consistent appearance across all repos), unlike roles -// and auto_merge which are operationally per-repo. +// which are operationally per-repo. type RepoConfig struct { Roles []string `yaml:"roles,omitempty"` Enabled bool `yaml:"enabled"` @@ -247,7 +246,6 @@ func NewOrgConfig(allRepos, enabledRepos, roles []string, inferenceProvider, org Roles: roles, Runtime: "claude", MaxImplementationRetries: 2, - AutoMerge: false, }, Repos: repos, AllowedRemoteResources: DefaultAllowedRemoteResources(), diff --git a/internal/config/config_test.go b/internal/config/config_test.go index 013246f34f..7c45e91e78 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -54,7 +54,6 @@ func TestNewOrgConfig(t *testing.T) { assert.Equal(t, "1", cfg.ConfigVersion()) assert.Equal(t, "github-actions", cfg.DispatchSettings().Platform) assert.Equal(t, 2, cfg.OrgRepoDefaults().MaxImplementationRetries) - assert.False(t, cfg.OrgRepoDefaults().AutoMerge) assert.Equal(t, roles, cfg.OrgRepoDefaults().Roles) assert.True(t, cfg.RepoMap()["repo-a"].Enabled) @@ -76,7 +75,6 @@ func TestOrgConfigMarshal(t *testing.T) { Defaults: RepoDefaults{ Roles: []string{"fullsend"}, MaxImplementationRetries: 2, - AutoMerge: false, }, Repos: map[string]RepoConfig{ "my-repo": {Enabled: true}, @@ -245,7 +243,6 @@ defaults: - fullsend - coder max_implementation_retries: 3 - auto_merge: true repos: repo-x: enabled: true @@ -259,7 +256,6 @@ repos: assert.Equal(t, "1", cfg.ConfigVersion()) assert.Equal(t, "github-actions", cfg.DispatchSettings().Platform) assert.Equal(t, 3, cfg.OrgRepoDefaults().MaxImplementationRetries) - assert.True(t, cfg.OrgRepoDefaults().AutoMerge) assert.Equal(t, []string{"fullsend", "coder"}, cfg.OrgRepoDefaults().Roles) assert.True(t, cfg.RepoMap()["repo-x"].Enabled) assert.False(t, cfg.RepoMap()["repo-y"].Enabled) @@ -348,7 +344,6 @@ defaults: roles: - fullsend max_implementation_retries: 2 - auto_merge: false agents: [] repos: {} ` @@ -553,7 +548,6 @@ defaults: roles: - fullsend max_implementation_retries: 2 - auto_merge: false agents: [] repos: {} ` diff --git a/internal/layers/enrollment_test.go b/internal/layers/enrollment_test.go index d55e40a92c..5e56c05bbb 100644 --- a/internal/layers/enrollment_test.go +++ b/internal/layers/enrollment_test.go @@ -234,7 +234,7 @@ dispatch: defaults: roles: [triage] max_implementation_retries: 2 - auto_merge: false + agents: [] repos: repo-a: @@ -304,7 +304,7 @@ dispatch: defaults: roles: [triage] max_implementation_retries: 2 - auto_merge: false + agents: [] repos: repo-a: diff --git a/web/admin/src/lib/layers/configRepo.test.ts b/web/admin/src/lib/layers/configRepo.test.ts index 6b49b178e8..b3a21e3a17 100644 --- a/web/admin/src/lib/layers/configRepo.test.ts +++ b/web/admin/src/lib/layers/configRepo.test.ts @@ -9,7 +9,6 @@ dispatch: defaults: roles: [fullsend] max_implementation_retries: 2 - auto_merge: false agents: [] repos: {} `; diff --git a/web/admin/src/lib/layers/fixtures/configrepo/config-valid.yaml b/web/admin/src/lib/layers/fixtures/configrepo/config-valid.yaml index cfe2136618..08858dd847 100644 --- a/web/admin/src/lib/layers/fixtures/configrepo/config-valid.yaml +++ b/web/admin/src/lib/layers/fixtures/configrepo/config-valid.yaml @@ -4,5 +4,4 @@ dispatch: defaults: roles: [fullsend] max_implementation_retries: 2 - auto_merge: false repos: {} diff --git a/web/admin/src/lib/layers/orgConfigParse.ts b/web/admin/src/lib/layers/orgConfigParse.ts index 229fed8fff..7c2d576641 100644 --- a/web/admin/src/lib/layers/orgConfigParse.ts +++ b/web/admin/src/lib/layers/orgConfigParse.ts @@ -7,7 +7,6 @@ export type OrgConfigYaml = { defaults?: { roles?: string[]; max_implementation_retries?: number; - auto_merge?: boolean; }; agents?: { role: string; name?: string; slug?: string }[]; repos?: Record; From 89d78f0dc519b2c9272af2722d88b200501a495d Mon Sep 17 00:00:00 2001 From: fullsend-fix <278716306+fullsend-ai-coder[bot]@users.noreply.github.com> Date: Sun, 2 Aug 2026 10:35:01 +0000 Subject: [PATCH 2/2] fix: remove stray blank lines in enrollment test YAML fixtures Remove blank lines left between max_implementation_retries and agents keys in two test YAML blocks after auto_merge field removal. Addresses review feedback on #855 --- internal/layers/enrollment_test.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/internal/layers/enrollment_test.go b/internal/layers/enrollment_test.go index 5e56c05bbb..f7de8a8868 100644 --- a/internal/layers/enrollment_test.go +++ b/internal/layers/enrollment_test.go @@ -234,7 +234,6 @@ dispatch: defaults: roles: [triage] max_implementation_retries: 2 - agents: [] repos: repo-a: @@ -304,7 +303,6 @@ dispatch: defaults: roles: [triage] max_implementation_retries: 2 - agents: [] repos: repo-a: