From 2004f8cce67f9ab8052b2954757fb4544dc50b5e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Apr 2026 17:09:33 +0000 Subject: [PATCH 1/8] Initial plan From aa5196ca7026e33c5ebc8cf7a460bb2cf9c2e256 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Apr 2026 17:44:34 +0000 Subject: [PATCH 2/8] feat: allow gated per-run base override for create_pull_request Agent-Logs-Url: https://github.com/github/gh-aw/sessions/7dec6392-323d-4a03-b1d5-ce76e49e2088 Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- actions/setup/js/create_pull_request.cjs | 84 ++++++++++++++ actions/setup/js/create_pull_request.test.cjs | 103 ++++++++++++++++++ actions/setup/js/safe_outputs_tools.json | 4 + .../reference/safe-outputs-specification.md | 2 + pkg/parser/schemas/main_workflow_schema.json | 7 ++ .../compiler_safe_outputs_config_test.go | 36 +++++- .../compiler_safe_outputs_handlers.go | 1 + pkg/workflow/create_pull_request.go | 1 + pkg/workflow/js/safe_outputs_tools.json | 4 + .../safe_outputs_validation_config.go | 1 + 10 files changed, 238 insertions(+), 5 deletions(-) diff --git a/actions/setup/js/create_pull_request.cjs b/actions/setup/js/create_pull_request.cjs index 46b50eba205..3cb4798a88f 100644 --- a/actions/setup/js/create_pull_request.cjs +++ b/actions/setup/js/create_pull_request.cjs @@ -31,6 +31,7 @@ const { isStagedMode } = require("./safe_output_helpers.cjs"); const { withRetry, isTransientError } = require("./error_recovery.cjs"); const { tryEnforceArrayLimit } = require("./limit_enforcement_helpers.cjs"); const { findAgent, getIssueDetails, assignAgentToIssue } = require("./assign_agent_helpers.cjs"); +const { globPatternToRegex } = require("./glob_pattern_helpers.cjs"); /** * @typedef {import('./types/handler-factory').HandlerFactoryFunction} HandlerFactoryFunction @@ -88,6 +89,50 @@ const LABEL_MAX_RETRIES = 3; /** @type {number} Initial delay in ms before the first label retry (3 seconds) */ const LABEL_INITIAL_DELAY_MS = 3000; +/** + * Parse allowed base branch patterns from config value (array or comma-separated string) + * @param {string[]|string|undefined} allowedBaseBranchesValue + * @returns {Set} + */ +function parseAllowedBaseBranches(allowedBaseBranchesValue) { + const set = new Set(); + if (Array.isArray(allowedBaseBranchesValue)) { + allowedBaseBranchesValue + .map(branch => String(branch).trim()) + .filter(Boolean) + .forEach(branch => set.add(branch)); + } else if (typeof allowedBaseBranchesValue === "string") { + allowedBaseBranchesValue + .split(",") + .map(branch => branch.trim()) + .filter(Boolean) + .forEach(branch => set.add(branch)); + } + return set; +} + +/** + * Check if a base branch matches an allowed pattern. + * Supports exact matches and "*" glob patterns (e.g. "release/*"). + * @param {string} baseBranch + * @param {Set} allowedBaseBranches + * @returns {boolean} + */ +function isBaseBranchAllowed(baseBranch, allowedBaseBranches) { + if (allowedBaseBranches.has(baseBranch)) { + return true; + } + for (const pattern of allowedBaseBranches) { + if (pattern === "*") { + return true; + } + if (pattern.includes("*") && globPatternToRegex(pattern, { pathMode: true, caseSensitive: true }).test(baseBranch)) { + return true; + } + } + return false; +} + /** * Merges the required fallback label with any workflow-configured labels, * deduplicating and filtering empty values. @@ -250,6 +295,7 @@ async function main(config = {}) { const maxCount = config.max || 1; // PRs are typically limited to 1 const maxSizeKb = config.max_patch_size ? parseInt(String(config.max_patch_size), 10) : 1024; const { defaultTargetRepo, allowedRepos } = resolveTargetRepoConfig(config); + const allowedBaseBranches = parseAllowedBaseBranches(config.allowed_base_branches); const githubClient = await createAuthenticatedGitHubClient(config); // Check if copilot assignment is enabled for fallback issues @@ -350,6 +396,9 @@ async function main(config = {}) { if (allowedRepos.size > 0) { core.info(`Allowed repos: ${Array.from(allowedRepos).join(", ")}`); } + if (allowedBaseBranches.size > 0) { + core.info(`Allowed base branches: ${Array.from(allowedBaseBranches).join(", ")}`); + } if (envLabels.length > 0) { core.info(`Default labels: ${envLabels.join(", ")}`); } @@ -444,6 +493,41 @@ async function main(config = {}) { // NOTE: Must be resolved before checkout so cross-repo checkout uses the correct branch let baseBranch = configBaseBranch || (await getBaseBranch(repoParts)); + // Optional agent-provided base branch override. + // This is only allowed when allowed_base_branches is configured. + if (typeof pullRequestItem.base === "string" && pullRequestItem.base.trim() !== "") { + if (allowedBaseBranches.size === 0) { + return { + success: false, + error: "Base branch override is not allowed. Configure safe-outputs.create-pull-request.allowed-base-branches to allow per-run base overrides.", + }; + } + + const requestedBaseBranchRaw = pullRequestItem.base.trim(); + const requestedBaseBranch = normalizeBranchName(requestedBaseBranchRaw); + if (!requestedBaseBranch) { + return { + success: false, + error: `Invalid base branch override: sanitization resulted in empty string (original: "${requestedBaseBranchRaw}")`, + }; + } + if (requestedBaseBranchRaw !== requestedBaseBranch) { + return { + success: false, + error: `Invalid base branch override: contains invalid characters (original: "${requestedBaseBranchRaw}", normalized: "${requestedBaseBranch}")`, + }; + } + if (!isBaseBranchAllowed(requestedBaseBranch, allowedBaseBranches)) { + return { + success: false, + error: `Base branch override '${requestedBaseBranch}' is not allowed. Allowed patterns: ${Array.from(allowedBaseBranches).join(", ")}`, + }; + } + + baseBranch = requestedBaseBranch; + core.info(`Using agent-provided base branch override: ${baseBranch}`); + } + // Multi-repo support: Switch checkout to target repo if different from current // This enables creating PRs in multiple repos from a single workflow run if (checkoutManager && itemRepo) { diff --git a/actions/setup/js/create_pull_request.test.cjs b/actions/setup/js/create_pull_request.test.cjs index e6840627545..d1c34dd3f86 100644 --- a/actions/setup/js/create_pull_request.test.cjs +++ b/actions/setup/js/create_pull_request.test.cjs @@ -1223,6 +1223,109 @@ describe("create_pull_request - wildcard target-repo", () => { }); }); +describe("create_pull_request - base branch override policy", () => { + let tempDir; + let originalEnv; + + beforeEach(() => { + originalEnv = { ...process.env }; + process.env.GH_AW_WORKFLOW_ID = "test-workflow"; + process.env.GITHUB_REPOSITORY = "test-owner/test-repo"; + process.env.GITHUB_BASE_REF = "main"; + tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "create-pr-base-override-test-")); + + global.core = { + info: vi.fn(), + warning: vi.fn(), + error: vi.fn(), + debug: vi.fn(), + setFailed: vi.fn(), + setOutput: vi.fn(), + startGroup: vi.fn(), + endGroup: vi.fn(), + summary: { + addRaw: vi.fn().mockReturnThis(), + write: vi.fn().mockResolvedValue(undefined), + }, + }; + global.github = { + rest: { + pulls: { + create: vi.fn().mockResolvedValue({ data: { number: 100, html_url: "https://github.com/test-owner/test-repo/pull/100", node_id: "PR_100" } }), + requestReviewers: vi.fn().mockResolvedValue({}), + }, + repos: { + get: vi.fn().mockResolvedValue({ data: { default_branch: "main" } }), + }, + issues: { + addLabels: vi.fn().mockResolvedValue({}), + }, + }, + graphql: vi.fn(), + }; + global.context = { + eventName: "workflow_dispatch", + repo: { owner: "test-owner", repo: "test-repo" }, + payload: {}, + }; + global.exec = { + exec: vi.fn().mockResolvedValue(0), + getExecOutput: vi.fn().mockResolvedValue({ exitCode: 0, stdout: "", stderr: "" }), + }; + + delete require.cache[require.resolve("./create_pull_request.cjs")]; + }); + + afterEach(() => { + for (const key of Object.keys(process.env)) { + if (!(key in originalEnv)) { + delete process.env[key]; + } + } + Object.assign(process.env, originalEnv); + + if (tempDir && fs.existsSync(tempDir)) { + fs.rmSync(tempDir, { recursive: true, force: true }); + } + + delete global.core; + delete global.github; + delete global.context; + delete global.exec; + vi.clearAllMocks(); + }); + + it("should reject base override when allowed-base-branches is not configured", async () => { + const { main } = require("./create_pull_request.cjs"); + const handler = await main({ allow_empty: true }); + + const result = await handler({ title: "Test PR", body: "Test body", base: "release/1.0" }, {}); + + expect(result.success).toBe(false); + expect(result.error).toContain("Base branch override is not allowed"); + }); + + it("should allow base override when it matches allowed-base-branches", async () => { + const { main } = require("./create_pull_request.cjs"); + const handler = await main({ allow_empty: true, allowed_base_branches: ["release/*", "main"] }); + + const result = await handler({ title: "Test PR", body: "Test body", base: "release/1.0" }, {}); + + expect(result.success).toBe(true); + expect(global.github.rest.pulls.create).toHaveBeenCalledWith(expect.objectContaining({ base: "release/1.0" })); + }); + + it("should reject base override when it does not match allowed-base-branches", async () => { + const { main } = require("./create_pull_request.cjs"); + const handler = await main({ allow_empty: true, allowed_base_branches: ["release/*"] }); + + const result = await handler({ title: "Test PR", body: "Test body", base: "main" }, {}); + + expect(result.success).toBe(false); + expect(result.error).toContain("Base branch override 'main' is not allowed"); + }); +}); + describe("create_pull_request - patch apply fallback to original base commit", () => { let tempDir; let originalEnv; diff --git a/actions/setup/js/safe_outputs_tools.json b/actions/setup/js/safe_outputs_tools.json index e914f7052b5..3d87db2ed1d 100644 --- a/actions/setup/js/safe_outputs_tools.json +++ b/actions/setup/js/safe_outputs_tools.json @@ -279,6 +279,10 @@ "type": "string", "description": "Source branch name containing the changes. If omitted, uses the current working branch." }, + "base": { + "type": "string", + "description": "Target base branch for the pull request. This override is only allowed when workflow configuration sets safe-outputs.create-pull-request.allowed-base-branches and the value matches one of those patterns." + }, "labels": { "type": "array", "items": { diff --git a/docs/src/content/docs/reference/safe-outputs-specification.md b/docs/src/content/docs/reference/safe-outputs-specification.md index fe623015ba5..9ce93b58a59 100644 --- a/docs/src/content/docs/reference/safe-outputs-specification.md +++ b/docs/src/content/docs/reference/safe-outputs-specification.md @@ -2148,6 +2148,7 @@ safe-outputs: "title": {"type": "string"}, "body": {"type": "string"}, "branch": {"type": "string", "description": "Source branch (defaults to current)"}, + "base": {"type": "string", "description": "Target base branch override (allowed only when configured by allowed-base-branches)"}, "labels": {"type": "array", "items": {"type": "string"}}, "draft": {"type": "boolean", "description": "Create as draft (default: true)"} }, @@ -2168,6 +2169,7 @@ safe-outputs: - `max`: Operation limit (default: 1) - `base-branch`: Target branch +- `allowed-base-branches`: Allowed base-branch override patterns for per-run `base` tool input - `draft`: Draft status - `commit-changes`: Auto-commit workspace - `reviewers`: Auto-request reviewers diff --git a/pkg/parser/schemas/main_workflow_schema.json b/pkg/parser/schemas/main_workflow_schema.json index 42abef8ec10..1c03ef1d411 100644 --- a/pkg/parser/schemas/main_workflow_schema.json +++ b/pkg/parser/schemas/main_workflow_schema.json @@ -5838,6 +5838,13 @@ "type": "string", "description": "Base branch for the pull request. Defaults to the workflow's branch (github.ref_name) if not specified. Useful for cross-repository PRs targeting non-default branches (e.g., 'vnext', 'release/v1.0')." }, + "allowed-base-branches": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional list of allowed base branch patterns (glob syntax, e.g. 'main', 'release/*'). When configured, the agent may provide a `base` field in create_pull_request output to override base-branch for a single run, but only if it matches one of these patterns." + }, "footer": { "type": "boolean", "description": "Controls whether AI-generated footer is added to the pull request. When false, the visible footer content is omitted but XML markers (workflow-id, tracker-id, metadata) are still included for searchability. Defaults to true.", diff --git a/pkg/workflow/compiler_safe_outputs_config_test.go b/pkg/workflow/compiler_safe_outputs_config_test.go index 6c59b462b6f..ad796125ee1 100644 --- a/pkg/workflow/compiler_safe_outputs_config_test.go +++ b/pkg/workflow/compiler_safe_outputs_config_test.go @@ -1384,10 +1384,13 @@ func TestAutoEnabledHandlers(t *testing.T) { // TestCreatePullRequestBaseBranch tests the base-branch field configuration func TestCreatePullRequestBaseBranch(t *testing.T) { tests := []struct { - name string - baseBranch string - expectedBaseBranch string - shouldHaveBaseBranchKey bool + name string + baseBranch string + allowedBaseBranches []string + expectedBaseBranch string + shouldHaveBaseBranchKey bool + expectedAllowedBaseBranches []string + shouldHaveAllowedBaseBranchesKey bool }{ { name: "custom base branch", @@ -1407,6 +1410,15 @@ func TestCreatePullRequestBaseBranch(t *testing.T) { expectedBaseBranch: "release/v1.0", shouldHaveBaseBranchKey: true, }, + { + name: "allowed base branches list", + baseBranch: "main", + allowedBaseBranches: []string{"release/*", "main"}, + expectedBaseBranch: "main", + shouldHaveBaseBranchKey: true, + expectedAllowedBaseBranches: []string{"release/*", "main"}, + shouldHaveAllowedBaseBranchesKey: true, + }, } for _, tt := range tests { @@ -1420,7 +1432,8 @@ func TestCreatePullRequestBaseBranch(t *testing.T) { BaseSafeOutputConfig: BaseSafeOutputConfig{ Max: strPtr("1"), }, - BaseBranch: tt.baseBranch, + BaseBranch: tt.baseBranch, + AllowedBaseBranches: tt.allowedBaseBranches, }, }, } @@ -1453,6 +1466,19 @@ func TestCreatePullRequestBaseBranch(t *testing.T) { } else { require.False(t, ok, "base_branch should NOT be in config when no custom value set") } + + allowedBaseBranches, ok := prConfig["allowed_base_branches"] + if tt.shouldHaveAllowedBaseBranchesKey { + require.True(t, ok, "allowed_base_branches should be in config") + allowedSlice, ok := allowedBaseBranches.([]any) + require.True(t, ok, "allowed_base_branches should be an array") + require.Len(t, allowedSlice, len(tt.expectedAllowedBaseBranches), "allowed_base_branches length should match") + for i, expected := range tt.expectedAllowedBaseBranches { + assert.Equal(t, expected, allowedSlice[i], "allowed_base_branches element should match") + } + } else { + require.False(t, ok, "allowed_base_branches should NOT be in config when no values set") + } } } } diff --git a/pkg/workflow/compiler_safe_outputs_handlers.go b/pkg/workflow/compiler_safe_outputs_handlers.go index a6ec04e4cb0..2b91e93edd1 100644 --- a/pkg/workflow/compiler_safe_outputs_handlers.go +++ b/pkg/workflow/compiler_safe_outputs_handlers.go @@ -376,6 +376,7 @@ var handlerRegistry = map[string]handlerBuilder{ AddIfPositive("expires", c.Expires). AddIfNotEmpty("target-repo", c.TargetRepoSlug). AddStringSlice("allowed_repos", c.AllowedRepos). + AddStringSlice("allowed_base_branches", c.AllowedBaseBranches). AddDefault("max_patch_size", maxPatchSize). AddIfNotEmpty("github-token", c.GitHubToken). AddTemplatableBool("footer", getEffectiveFooterForTemplatable(c.Footer, cfg.Footer)). diff --git a/pkg/workflow/create_pull_request.go b/pkg/workflow/create_pull_request.go index 270da2522b4..caf8b1371a0 100644 --- a/pkg/workflow/create_pull_request.go +++ b/pkg/workflow/create_pull_request.go @@ -27,6 +27,7 @@ type CreatePullRequestsConfig struct { AllowEmpty *string `yaml:"allow-empty,omitempty"` // Allow creating PR without patch file or with empty patch (useful for preparing feature branches) TargetRepoSlug string `yaml:"target-repo,omitempty"` // Target repository in format "owner/repo" for cross-repository pull requests AllowedRepos []string `yaml:"allowed-repos,omitempty"` // List of additional repositories that pull requests can be created in (additionally to the target-repo) + AllowedBaseBranches []string `yaml:"allowed-base-branches,omitempty"` // List of allowed base branch globs (e.g. "release/*"). Enables agent-provided `base` override when configured. Expires int `yaml:"expires,omitempty"` // Hours until the pull request expires and should be automatically closed (only for same-repo PRs) AutoMerge *string `yaml:"auto-merge,omitempty"` // Enable auto-merge for the pull request when all required checks pass BaseBranch string `yaml:"base-branch,omitempty"` // Base branch for the pull request (defaults to github.ref_name if not specified) diff --git a/pkg/workflow/js/safe_outputs_tools.json b/pkg/workflow/js/safe_outputs_tools.json index 02bb7c0b5a9..cfdcb698220 100644 --- a/pkg/workflow/js/safe_outputs_tools.json +++ b/pkg/workflow/js/safe_outputs_tools.json @@ -316,6 +316,10 @@ "type": "string", "description": "Source branch name containing the changes. If omitted, uses the current working branch." }, + "base": { + "type": "string", + "description": "Target base branch for the pull request. This override is only allowed when workflow configuration sets safe-outputs.create-pull-request.allowed-base-branches and the value matches one of those patterns." + }, "labels": { "type": "array", "items": { diff --git a/pkg/workflow/safe_outputs_validation_config.go b/pkg/workflow/safe_outputs_validation_config.go index e13a3871feb..fc9b36917ad 100644 --- a/pkg/workflow/safe_outputs_validation_config.go +++ b/pkg/workflow/safe_outputs_validation_config.go @@ -76,6 +76,7 @@ var ValidationConfig = map[string]TypeValidationConfig{ "title": {Required: true, Type: "string", Sanitize: true, MaxLength: 128}, "body": {Required: true, Type: "string", Sanitize: true, MaxLength: MaxBodyLength}, "branch": {Required: true, Type: "string", Sanitize: true, MaxLength: 256}, + "base": {Type: "string", Sanitize: true, MaxLength: 256}, "labels": {Type: "array", ItemType: "string", ItemSanitize: true, ItemMaxLength: 128}, "draft": {Type: "boolean"}, "repo": {Type: "string", MaxLength: 256}, // Optional: target repository in format "owner/repo" From 21d7434f229c1d964d23e12b3d5043f1aa6152ce Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Apr 2026 19:19:08 +0000 Subject: [PATCH 3/8] chore: plan follow-up for PR comment review Agent-Logs-Url: https://github.com/github/gh-aw/sessions/5dd09980-7032-4942-bd3e-8d3760aea2f3 Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/ci-coach.lock.yml | 5 +++++ .github/workflows/cloclo.lock.yml | 5 +++++ .github/workflows/code-scanning-fixer.lock.yml | 5 +++++ .github/workflows/code-simplifier.lock.yml | 5 +++++ .github/workflows/daily-architecture-diagram.lock.yml | 5 +++++ .github/workflows/daily-community-attribution.lock.yml | 5 +++++ .github/workflows/daily-doc-healer.lock.yml | 5 +++++ .github/workflows/daily-doc-updater.lock.yml | 5 +++++ .github/workflows/daily-rendering-scripts-verifier.lock.yml | 5 +++++ .github/workflows/daily-safe-output-integrator.lock.yml | 5 +++++ .github/workflows/daily-workflow-updater.lock.yml | 5 +++++ .github/workflows/dead-code-remover.lock.yml | 5 +++++ .github/workflows/developer-docs-consolidator.lock.yml | 5 +++++ .github/workflows/dictation-prompt.lock.yml | 5 +++++ .github/workflows/functional-pragmatist.lock.yml | 5 +++++ .github/workflows/github-mcp-tools-report.lock.yml | 5 +++++ .github/workflows/glossary-maintainer.lock.yml | 5 +++++ .github/workflows/go-logger.lock.yml | 5 +++++ .github/workflows/hourly-ci-cleaner.lock.yml | 5 +++++ .github/workflows/instructions-janitor.lock.yml | 5 +++++ .github/workflows/jsweep.lock.yml | 5 +++++ .github/workflows/layout-spec-maintainer.lock.yml | 5 +++++ .github/workflows/poem-bot.lock.yml | 5 +++++ .github/workflows/q.lock.yml | 5 +++++ .github/workflows/refiner.lock.yml | 5 +++++ .github/workflows/schema-feature-coverage.lock.yml | 5 +++++ .github/workflows/slide-deck-maintainer.lock.yml | 5 +++++ .github/workflows/smoke-create-cross-repo-pr.lock.yml | 5 +++++ .github/workflows/smoke-multi-pr.lock.yml | 5 +++++ .github/workflows/smoke-project.lock.yml | 5 +++++ .github/workflows/spec-enforcer.lock.yml | 5 +++++ .github/workflows/spec-extractor.lock.yml | 5 +++++ .github/workflows/technical-doc-writer.lock.yml | 5 +++++ .github/workflows/test-create-pr-error-handling.lock.yml | 5 +++++ .github/workflows/tidy.lock.yml | 5 +++++ .github/workflows/ubuntu-image-analyzer.lock.yml | 5 +++++ .github/workflows/unbloat-docs.lock.yml | 5 +++++ .github/workflows/update-astro.lock.yml | 5 +++++ .github/workflows/weekly-blog-post-writer.lock.yml | 5 +++++ .github/workflows/weekly-editors-health-check.lock.yml | 5 +++++ .github/workflows/weekly-safe-outputs-spec-review.lock.yml | 5 +++++ 41 files changed, 205 insertions(+) diff --git a/.github/workflows/ci-coach.lock.yml b/.github/workflows/ci-coach.lock.yml index 67a071ea5e9..000a1026310 100644 --- a/.github/workflows/ci-coach.lock.yml +++ b/.github/workflows/ci-coach.lock.yml @@ -496,6 +496,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/cloclo.lock.yml b/.github/workflows/cloclo.lock.yml index 6358255848c..27d370caba4 100644 --- a/.github/workflows/cloclo.lock.yml +++ b/.github/workflows/cloclo.lock.yml @@ -683,6 +683,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/code-scanning-fixer.lock.yml b/.github/workflows/code-scanning-fixer.lock.yml index fa8a5510cb3..f358a081b68 100644 --- a/.github/workflows/code-scanning-fixer.lock.yml +++ b/.github/workflows/code-scanning-fixer.lock.yml @@ -481,6 +481,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/code-simplifier.lock.yml b/.github/workflows/code-simplifier.lock.yml index 29f2bdbfaaf..195bfe4e904 100644 --- a/.github/workflows/code-simplifier.lock.yml +++ b/.github/workflows/code-simplifier.lock.yml @@ -435,6 +435,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-architecture-diagram.lock.yml b/.github/workflows/daily-architecture-diagram.lock.yml index 143b2e1c743..6f79b1ccd58 100644 --- a/.github/workflows/daily-architecture-diagram.lock.yml +++ b/.github/workflows/daily-architecture-diagram.lock.yml @@ -492,6 +492,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-community-attribution.lock.yml b/.github/workflows/daily-community-attribution.lock.yml index 085ba8bbcd0..e9d4e1a4cce 100644 --- a/.github/workflows/daily-community-attribution.lock.yml +++ b/.github/workflows/daily-community-attribution.lock.yml @@ -477,6 +477,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-doc-healer.lock.yml b/.github/workflows/daily-doc-healer.lock.yml index 753cabc75c1..25b3a36e472 100644 --- a/.github/workflows/daily-doc-healer.lock.yml +++ b/.github/workflows/daily-doc-healer.lock.yml @@ -500,6 +500,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-doc-updater.lock.yml b/.github/workflows/daily-doc-updater.lock.yml index 729b4851c93..8231d8e253a 100644 --- a/.github/workflows/daily-doc-updater.lock.yml +++ b/.github/workflows/daily-doc-updater.lock.yml @@ -461,6 +461,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-rendering-scripts-verifier.lock.yml b/.github/workflows/daily-rendering-scripts-verifier.lock.yml index 0aa2b543655..dbb5cae4f46 100644 --- a/.github/workflows/daily-rendering-scripts-verifier.lock.yml +++ b/.github/workflows/daily-rendering-scripts-verifier.lock.yml @@ -533,6 +533,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-safe-output-integrator.lock.yml b/.github/workflows/daily-safe-output-integrator.lock.yml index 8bbda77b49f..217d90f4f1f 100644 --- a/.github/workflows/daily-safe-output-integrator.lock.yml +++ b/.github/workflows/daily-safe-output-integrator.lock.yml @@ -436,6 +436,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-workflow-updater.lock.yml b/.github/workflows/daily-workflow-updater.lock.yml index 529fd4befbe..6a0e4f16d8b 100644 --- a/.github/workflows/daily-workflow-updater.lock.yml +++ b/.github/workflows/daily-workflow-updater.lock.yml @@ -430,6 +430,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/dead-code-remover.lock.yml b/.github/workflows/dead-code-remover.lock.yml index 4d06aa87122..9e4b3ff6304 100644 --- a/.github/workflows/dead-code-remover.lock.yml +++ b/.github/workflows/dead-code-remover.lock.yml @@ -466,6 +466,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/developer-docs-consolidator.lock.yml b/.github/workflows/developer-docs-consolidator.lock.yml index 35f8664df98..f6222ba902b 100644 --- a/.github/workflows/developer-docs-consolidator.lock.yml +++ b/.github/workflows/developer-docs-consolidator.lock.yml @@ -538,6 +538,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/dictation-prompt.lock.yml b/.github/workflows/dictation-prompt.lock.yml index 5506e22a74e..4159327d614 100644 --- a/.github/workflows/dictation-prompt.lock.yml +++ b/.github/workflows/dictation-prompt.lock.yml @@ -419,6 +419,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/functional-pragmatist.lock.yml b/.github/workflows/functional-pragmatist.lock.yml index 249733abe65..5ccef887e7d 100644 --- a/.github/workflows/functional-pragmatist.lock.yml +++ b/.github/workflows/functional-pragmatist.lock.yml @@ -426,6 +426,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/github-mcp-tools-report.lock.yml b/.github/workflows/github-mcp-tools-report.lock.yml index 40b85850fe1..c68eb6e9a12 100644 --- a/.github/workflows/github-mcp-tools-report.lock.yml +++ b/.github/workflows/github-mcp-tools-report.lock.yml @@ -480,6 +480,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/glossary-maintainer.lock.yml b/.github/workflows/glossary-maintainer.lock.yml index 69255e24fe3..97ab8cbaa6f 100644 --- a/.github/workflows/glossary-maintainer.lock.yml +++ b/.github/workflows/glossary-maintainer.lock.yml @@ -528,6 +528,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/go-logger.lock.yml b/.github/workflows/go-logger.lock.yml index 3dc5143c781..38049af915d 100644 --- a/.github/workflows/go-logger.lock.yml +++ b/.github/workflows/go-logger.lock.yml @@ -466,6 +466,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/hourly-ci-cleaner.lock.yml b/.github/workflows/hourly-ci-cleaner.lock.yml index f1eeecbe8d5..853cc2bff0b 100644 --- a/.github/workflows/hourly-ci-cleaner.lock.yml +++ b/.github/workflows/hourly-ci-cleaner.lock.yml @@ -473,6 +473,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/instructions-janitor.lock.yml b/.github/workflows/instructions-janitor.lock.yml index 1eed7cd93e7..3808476ef47 100644 --- a/.github/workflows/instructions-janitor.lock.yml +++ b/.github/workflows/instructions-janitor.lock.yml @@ -444,6 +444,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/jsweep.lock.yml b/.github/workflows/jsweep.lock.yml index a50920c40de..38a6c805d35 100644 --- a/.github/workflows/jsweep.lock.yml +++ b/.github/workflows/jsweep.lock.yml @@ -494,6 +494,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/layout-spec-maintainer.lock.yml b/.github/workflows/layout-spec-maintainer.lock.yml index 44314c019ed..7bd77197208 100644 --- a/.github/workflows/layout-spec-maintainer.lock.yml +++ b/.github/workflows/layout-spec-maintainer.lock.yml @@ -430,6 +430,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/poem-bot.lock.yml b/.github/workflows/poem-bot.lock.yml index 21a77e58c22..65781c25233 100644 --- a/.github/workflows/poem-bot.lock.yml +++ b/.github/workflows/poem-bot.lock.yml @@ -667,6 +667,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/q.lock.yml b/.github/workflows/q.lock.yml index 5e8ac12b3b0..29782e39232 100644 --- a/.github/workflows/q.lock.yml +++ b/.github/workflows/q.lock.yml @@ -670,6 +670,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/refiner.lock.yml b/.github/workflows/refiner.lock.yml index ece8c723e74..d430d6c22ec 100644 --- a/.github/workflows/refiner.lock.yml +++ b/.github/workflows/refiner.lock.yml @@ -478,6 +478,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/schema-feature-coverage.lock.yml b/.github/workflows/schema-feature-coverage.lock.yml index 17dcabc7048..3114712bf2b 100644 --- a/.github/workflows/schema-feature-coverage.lock.yml +++ b/.github/workflows/schema-feature-coverage.lock.yml @@ -429,6 +429,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/slide-deck-maintainer.lock.yml b/.github/workflows/slide-deck-maintainer.lock.yml index 9eecb763a5a..a041249110a 100644 --- a/.github/workflows/slide-deck-maintainer.lock.yml +++ b/.github/workflows/slide-deck-maintainer.lock.yml @@ -484,6 +484,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/smoke-create-cross-repo-pr.lock.yml b/.github/workflows/smoke-create-cross-repo-pr.lock.yml index 481c69995b3..474f047ee70 100644 --- a/.github/workflows/smoke-create-cross-repo-pr.lock.yml +++ b/.github/workflows/smoke-create-cross-repo-pr.lock.yml @@ -535,6 +535,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/smoke-multi-pr.lock.yml b/.github/workflows/smoke-multi-pr.lock.yml index c8effcf0864..ab384a48e95 100644 --- a/.github/workflows/smoke-multi-pr.lock.yml +++ b/.github/workflows/smoke-multi-pr.lock.yml @@ -508,6 +508,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/smoke-project.lock.yml b/.github/workflows/smoke-project.lock.yml index 1369cef3040..fbedac7eaf5 100644 --- a/.github/workflows/smoke-project.lock.yml +++ b/.github/workflows/smoke-project.lock.yml @@ -603,6 +603,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/spec-enforcer.lock.yml b/.github/workflows/spec-enforcer.lock.yml index dd47a0c34e9..b5b910ec3c2 100644 --- a/.github/workflows/spec-enforcer.lock.yml +++ b/.github/workflows/spec-enforcer.lock.yml @@ -446,6 +446,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/spec-extractor.lock.yml b/.github/workflows/spec-extractor.lock.yml index 590650c7664..3db54484298 100644 --- a/.github/workflows/spec-extractor.lock.yml +++ b/.github/workflows/spec-extractor.lock.yml @@ -483,6 +483,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/technical-doc-writer.lock.yml b/.github/workflows/technical-doc-writer.lock.yml index 9398b6a55bb..e3c21a14e21 100644 --- a/.github/workflows/technical-doc-writer.lock.yml +++ b/.github/workflows/technical-doc-writer.lock.yml @@ -525,6 +525,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/test-create-pr-error-handling.lock.yml b/.github/workflows/test-create-pr-error-handling.lock.yml index 8fd36552ae3..e694f8f30ff 100644 --- a/.github/workflows/test-create-pr-error-handling.lock.yml +++ b/.github/workflows/test-create-pr-error-handling.lock.yml @@ -439,6 +439,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/tidy.lock.yml b/.github/workflows/tidy.lock.yml index 4d6da127483..cbebed598d7 100644 --- a/.github/workflows/tidy.lock.yml +++ b/.github/workflows/tidy.lock.yml @@ -498,6 +498,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/ubuntu-image-analyzer.lock.yml b/.github/workflows/ubuntu-image-analyzer.lock.yml index 57d3f50e59d..07668dcd63f 100644 --- a/.github/workflows/ubuntu-image-analyzer.lock.yml +++ b/.github/workflows/ubuntu-image-analyzer.lock.yml @@ -428,6 +428,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/unbloat-docs.lock.yml b/.github/workflows/unbloat-docs.lock.yml index 5015965096c..c1000016672 100644 --- a/.github/workflows/unbloat-docs.lock.yml +++ b/.github/workflows/unbloat-docs.lock.yml @@ -545,6 +545,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/update-astro.lock.yml b/.github/workflows/update-astro.lock.yml index 6589db8626f..24151b627f9 100644 --- a/.github/workflows/update-astro.lock.yml +++ b/.github/workflows/update-astro.lock.yml @@ -441,6 +441,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/weekly-blog-post-writer.lock.yml b/.github/workflows/weekly-blog-post-writer.lock.yml index fc3e312e2ed..94c431cd41d 100644 --- a/.github/workflows/weekly-blog-post-writer.lock.yml +++ b/.github/workflows/weekly-blog-post-writer.lock.yml @@ -505,6 +505,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/weekly-editors-health-check.lock.yml b/.github/workflows/weekly-editors-health-check.lock.yml index 68ebad24432..0d389b6dced 100644 --- a/.github/workflows/weekly-editors-health-check.lock.yml +++ b/.github/workflows/weekly-editors-health-check.lock.yml @@ -428,6 +428,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/weekly-safe-outputs-spec-review.lock.yml b/.github/workflows/weekly-safe-outputs-spec-review.lock.yml index 5c4f21dcdd6..6f474cb0086 100644 --- a/.github/workflows/weekly-safe-outputs-spec-review.lock.yml +++ b/.github/workflows/weekly-safe-outputs-spec-review.lock.yml @@ -417,6 +417,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, "body": { "required": true, "type": "string", From 4bb9e9031cf37b7ea2ce5988ade6c5f131e196ab Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Apr 2026 19:33:29 +0000 Subject: [PATCH 4/8] fix: align create_pull_request base validation max length Agent-Logs-Url: https://github.com/github/gh-aw/sessions/5dd09980-7032-4942-bd3e-8d3760aea2f3 Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/ci-coach.lock.yml | 5 ----- .github/workflows/cloclo.lock.yml | 5 ----- .github/workflows/code-scanning-fixer.lock.yml | 5 ----- .github/workflows/code-simplifier.lock.yml | 5 ----- .../daily-architecture-diagram.lock.yml | 5 ----- .../daily-community-attribution.lock.yml | 5 ----- .github/workflows/daily-doc-healer.lock.yml | 5 ----- .github/workflows/daily-doc-updater.lock.yml | 5 ----- .../daily-rendering-scripts-verifier.lock.yml | 5 ----- .../daily-safe-output-integrator.lock.yml | 5 ----- .../workflows/daily-workflow-updater.lock.yml | 5 ----- .github/workflows/dead-code-remover.lock.yml | 5 ----- .../developer-docs-consolidator.lock.yml | 5 ----- .github/workflows/dictation-prompt.lock.yml | 5 ----- .github/workflows/functional-pragmatist.lock.yml | 5 ----- .../workflows/github-mcp-tools-report.lock.yml | 5 ----- .github/workflows/glossary-maintainer.lock.yml | 5 ----- .github/workflows/go-logger.lock.yml | 5 ----- .github/workflows/hourly-ci-cleaner.lock.yml | 5 ----- .github/workflows/instructions-janitor.lock.yml | 5 ----- .github/workflows/jsweep.lock.yml | 5 ----- .../workflows/layout-spec-maintainer.lock.yml | 5 ----- .github/workflows/poem-bot.lock.yml | 5 ----- .github/workflows/q.lock.yml | 5 ----- .github/workflows/refiner.lock.yml | 5 ----- .../workflows/schema-feature-coverage.lock.yml | 5 ----- .github/workflows/slide-deck-maintainer.lock.yml | 5 ----- .../smoke-create-cross-repo-pr.lock.yml | 5 ----- .github/workflows/smoke-multi-pr.lock.yml | 5 ----- .github/workflows/smoke-project.lock.yml | 5 ----- .github/workflows/spec-enforcer.lock.yml | 5 ----- .github/workflows/spec-extractor.lock.yml | 5 ----- .github/workflows/technical-doc-writer.lock.yml | 5 ----- .../test-create-pr-error-handling.lock.yml | 5 ----- .github/workflows/tidy.lock.yml | 5 ----- .github/workflows/ubuntu-image-analyzer.lock.yml | 5 ----- .github/workflows/unbloat-docs.lock.yml | 5 ----- .github/workflows/update-astro.lock.yml | 5 ----- .../workflows/weekly-blog-post-writer.lock.yml | 5 ----- .../weekly-editors-health-check.lock.yml | 5 ----- .../weekly-safe-outputs-spec-review.lock.yml | 5 ----- .../safe_output_validation_config_test.go | 16 ++++++++++++++++ pkg/workflow/safe_outputs_validation_config.go | 2 +- 43 files changed, 17 insertions(+), 206 deletions(-) diff --git a/.github/workflows/ci-coach.lock.yml b/.github/workflows/ci-coach.lock.yml index 000a1026310..67a071ea5e9 100644 --- a/.github/workflows/ci-coach.lock.yml +++ b/.github/workflows/ci-coach.lock.yml @@ -496,11 +496,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/cloclo.lock.yml b/.github/workflows/cloclo.lock.yml index 27d370caba4..6358255848c 100644 --- a/.github/workflows/cloclo.lock.yml +++ b/.github/workflows/cloclo.lock.yml @@ -683,11 +683,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/code-scanning-fixer.lock.yml b/.github/workflows/code-scanning-fixer.lock.yml index f358a081b68..fa8a5510cb3 100644 --- a/.github/workflows/code-scanning-fixer.lock.yml +++ b/.github/workflows/code-scanning-fixer.lock.yml @@ -481,11 +481,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/code-simplifier.lock.yml b/.github/workflows/code-simplifier.lock.yml index 195bfe4e904..29f2bdbfaaf 100644 --- a/.github/workflows/code-simplifier.lock.yml +++ b/.github/workflows/code-simplifier.lock.yml @@ -435,11 +435,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-architecture-diagram.lock.yml b/.github/workflows/daily-architecture-diagram.lock.yml index 6f79b1ccd58..143b2e1c743 100644 --- a/.github/workflows/daily-architecture-diagram.lock.yml +++ b/.github/workflows/daily-architecture-diagram.lock.yml @@ -492,11 +492,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-community-attribution.lock.yml b/.github/workflows/daily-community-attribution.lock.yml index e9d4e1a4cce..085ba8bbcd0 100644 --- a/.github/workflows/daily-community-attribution.lock.yml +++ b/.github/workflows/daily-community-attribution.lock.yml @@ -477,11 +477,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-doc-healer.lock.yml b/.github/workflows/daily-doc-healer.lock.yml index 25b3a36e472..753cabc75c1 100644 --- a/.github/workflows/daily-doc-healer.lock.yml +++ b/.github/workflows/daily-doc-healer.lock.yml @@ -500,11 +500,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-doc-updater.lock.yml b/.github/workflows/daily-doc-updater.lock.yml index 8231d8e253a..729b4851c93 100644 --- a/.github/workflows/daily-doc-updater.lock.yml +++ b/.github/workflows/daily-doc-updater.lock.yml @@ -461,11 +461,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-rendering-scripts-verifier.lock.yml b/.github/workflows/daily-rendering-scripts-verifier.lock.yml index dbb5cae4f46..0aa2b543655 100644 --- a/.github/workflows/daily-rendering-scripts-verifier.lock.yml +++ b/.github/workflows/daily-rendering-scripts-verifier.lock.yml @@ -533,11 +533,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-safe-output-integrator.lock.yml b/.github/workflows/daily-safe-output-integrator.lock.yml index 217d90f4f1f..8bbda77b49f 100644 --- a/.github/workflows/daily-safe-output-integrator.lock.yml +++ b/.github/workflows/daily-safe-output-integrator.lock.yml @@ -436,11 +436,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-workflow-updater.lock.yml b/.github/workflows/daily-workflow-updater.lock.yml index 6a0e4f16d8b..529fd4befbe 100644 --- a/.github/workflows/daily-workflow-updater.lock.yml +++ b/.github/workflows/daily-workflow-updater.lock.yml @@ -430,11 +430,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/dead-code-remover.lock.yml b/.github/workflows/dead-code-remover.lock.yml index 9e4b3ff6304..4d06aa87122 100644 --- a/.github/workflows/dead-code-remover.lock.yml +++ b/.github/workflows/dead-code-remover.lock.yml @@ -466,11 +466,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/developer-docs-consolidator.lock.yml b/.github/workflows/developer-docs-consolidator.lock.yml index f6222ba902b..35f8664df98 100644 --- a/.github/workflows/developer-docs-consolidator.lock.yml +++ b/.github/workflows/developer-docs-consolidator.lock.yml @@ -538,11 +538,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/dictation-prompt.lock.yml b/.github/workflows/dictation-prompt.lock.yml index 4159327d614..5506e22a74e 100644 --- a/.github/workflows/dictation-prompt.lock.yml +++ b/.github/workflows/dictation-prompt.lock.yml @@ -419,11 +419,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/functional-pragmatist.lock.yml b/.github/workflows/functional-pragmatist.lock.yml index 5ccef887e7d..249733abe65 100644 --- a/.github/workflows/functional-pragmatist.lock.yml +++ b/.github/workflows/functional-pragmatist.lock.yml @@ -426,11 +426,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/github-mcp-tools-report.lock.yml b/.github/workflows/github-mcp-tools-report.lock.yml index c68eb6e9a12..40b85850fe1 100644 --- a/.github/workflows/github-mcp-tools-report.lock.yml +++ b/.github/workflows/github-mcp-tools-report.lock.yml @@ -480,11 +480,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/glossary-maintainer.lock.yml b/.github/workflows/glossary-maintainer.lock.yml index 97ab8cbaa6f..69255e24fe3 100644 --- a/.github/workflows/glossary-maintainer.lock.yml +++ b/.github/workflows/glossary-maintainer.lock.yml @@ -528,11 +528,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/go-logger.lock.yml b/.github/workflows/go-logger.lock.yml index 38049af915d..3dc5143c781 100644 --- a/.github/workflows/go-logger.lock.yml +++ b/.github/workflows/go-logger.lock.yml @@ -466,11 +466,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/hourly-ci-cleaner.lock.yml b/.github/workflows/hourly-ci-cleaner.lock.yml index 853cc2bff0b..f1eeecbe8d5 100644 --- a/.github/workflows/hourly-ci-cleaner.lock.yml +++ b/.github/workflows/hourly-ci-cleaner.lock.yml @@ -473,11 +473,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/instructions-janitor.lock.yml b/.github/workflows/instructions-janitor.lock.yml index 3808476ef47..1eed7cd93e7 100644 --- a/.github/workflows/instructions-janitor.lock.yml +++ b/.github/workflows/instructions-janitor.lock.yml @@ -444,11 +444,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/jsweep.lock.yml b/.github/workflows/jsweep.lock.yml index 38a6c805d35..a50920c40de 100644 --- a/.github/workflows/jsweep.lock.yml +++ b/.github/workflows/jsweep.lock.yml @@ -494,11 +494,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/layout-spec-maintainer.lock.yml b/.github/workflows/layout-spec-maintainer.lock.yml index 7bd77197208..44314c019ed 100644 --- a/.github/workflows/layout-spec-maintainer.lock.yml +++ b/.github/workflows/layout-spec-maintainer.lock.yml @@ -430,11 +430,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/poem-bot.lock.yml b/.github/workflows/poem-bot.lock.yml index 65781c25233..21a77e58c22 100644 --- a/.github/workflows/poem-bot.lock.yml +++ b/.github/workflows/poem-bot.lock.yml @@ -667,11 +667,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/q.lock.yml b/.github/workflows/q.lock.yml index 29782e39232..5e8ac12b3b0 100644 --- a/.github/workflows/q.lock.yml +++ b/.github/workflows/q.lock.yml @@ -670,11 +670,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/refiner.lock.yml b/.github/workflows/refiner.lock.yml index d430d6c22ec..ece8c723e74 100644 --- a/.github/workflows/refiner.lock.yml +++ b/.github/workflows/refiner.lock.yml @@ -478,11 +478,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/schema-feature-coverage.lock.yml b/.github/workflows/schema-feature-coverage.lock.yml index 3114712bf2b..17dcabc7048 100644 --- a/.github/workflows/schema-feature-coverage.lock.yml +++ b/.github/workflows/schema-feature-coverage.lock.yml @@ -429,11 +429,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/slide-deck-maintainer.lock.yml b/.github/workflows/slide-deck-maintainer.lock.yml index a041249110a..9eecb763a5a 100644 --- a/.github/workflows/slide-deck-maintainer.lock.yml +++ b/.github/workflows/slide-deck-maintainer.lock.yml @@ -484,11 +484,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/smoke-create-cross-repo-pr.lock.yml b/.github/workflows/smoke-create-cross-repo-pr.lock.yml index 474f047ee70..481c69995b3 100644 --- a/.github/workflows/smoke-create-cross-repo-pr.lock.yml +++ b/.github/workflows/smoke-create-cross-repo-pr.lock.yml @@ -535,11 +535,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/smoke-multi-pr.lock.yml b/.github/workflows/smoke-multi-pr.lock.yml index ab384a48e95..c8effcf0864 100644 --- a/.github/workflows/smoke-multi-pr.lock.yml +++ b/.github/workflows/smoke-multi-pr.lock.yml @@ -508,11 +508,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/smoke-project.lock.yml b/.github/workflows/smoke-project.lock.yml index fbedac7eaf5..1369cef3040 100644 --- a/.github/workflows/smoke-project.lock.yml +++ b/.github/workflows/smoke-project.lock.yml @@ -603,11 +603,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/spec-enforcer.lock.yml b/.github/workflows/spec-enforcer.lock.yml index b5b910ec3c2..dd47a0c34e9 100644 --- a/.github/workflows/spec-enforcer.lock.yml +++ b/.github/workflows/spec-enforcer.lock.yml @@ -446,11 +446,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/spec-extractor.lock.yml b/.github/workflows/spec-extractor.lock.yml index 3db54484298..590650c7664 100644 --- a/.github/workflows/spec-extractor.lock.yml +++ b/.github/workflows/spec-extractor.lock.yml @@ -483,11 +483,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/technical-doc-writer.lock.yml b/.github/workflows/technical-doc-writer.lock.yml index e3c21a14e21..9398b6a55bb 100644 --- a/.github/workflows/technical-doc-writer.lock.yml +++ b/.github/workflows/technical-doc-writer.lock.yml @@ -525,11 +525,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/test-create-pr-error-handling.lock.yml b/.github/workflows/test-create-pr-error-handling.lock.yml index e694f8f30ff..8fd36552ae3 100644 --- a/.github/workflows/test-create-pr-error-handling.lock.yml +++ b/.github/workflows/test-create-pr-error-handling.lock.yml @@ -439,11 +439,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/tidy.lock.yml b/.github/workflows/tidy.lock.yml index cbebed598d7..4d6da127483 100644 --- a/.github/workflows/tidy.lock.yml +++ b/.github/workflows/tidy.lock.yml @@ -498,11 +498,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/ubuntu-image-analyzer.lock.yml b/.github/workflows/ubuntu-image-analyzer.lock.yml index 07668dcd63f..57d3f50e59d 100644 --- a/.github/workflows/ubuntu-image-analyzer.lock.yml +++ b/.github/workflows/ubuntu-image-analyzer.lock.yml @@ -428,11 +428,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/unbloat-docs.lock.yml b/.github/workflows/unbloat-docs.lock.yml index c1000016672..5015965096c 100644 --- a/.github/workflows/unbloat-docs.lock.yml +++ b/.github/workflows/unbloat-docs.lock.yml @@ -545,11 +545,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/update-astro.lock.yml b/.github/workflows/update-astro.lock.yml index 24151b627f9..6589db8626f 100644 --- a/.github/workflows/update-astro.lock.yml +++ b/.github/workflows/update-astro.lock.yml @@ -441,11 +441,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/weekly-blog-post-writer.lock.yml b/.github/workflows/weekly-blog-post-writer.lock.yml index 94c431cd41d..fc3e312e2ed 100644 --- a/.github/workflows/weekly-blog-post-writer.lock.yml +++ b/.github/workflows/weekly-blog-post-writer.lock.yml @@ -505,11 +505,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/weekly-editors-health-check.lock.yml b/.github/workflows/weekly-editors-health-check.lock.yml index 0d389b6dced..68ebad24432 100644 --- a/.github/workflows/weekly-editors-health-check.lock.yml +++ b/.github/workflows/weekly-editors-health-check.lock.yml @@ -428,11 +428,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/weekly-safe-outputs-spec-review.lock.yml b/.github/workflows/weekly-safe-outputs-spec-review.lock.yml index 6f474cb0086..5c4f21dcdd6 100644 --- a/.github/workflows/weekly-safe-outputs-spec-review.lock.yml +++ b/.github/workflows/weekly-safe-outputs-spec-review.lock.yml @@ -417,11 +417,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 256 - }, "body": { "required": true, "type": "string", diff --git a/pkg/workflow/safe_output_validation_config_test.go b/pkg/workflow/safe_output_validation_config_test.go index b0a0ca16aa2..6e08c8bf6a0 100644 --- a/pkg/workflow/safe_output_validation_config_test.go +++ b/pkg/workflow/safe_output_validation_config_test.go @@ -217,3 +217,19 @@ func TestValidationConfigConsistency(t *testing.T) { } } } + +func TestCreatePullRequestBaseValidationMaxLength(t *testing.T) { + config, ok := ValidationConfig["create_pull_request"] + if !ok { + t.Fatal("create_pull_request not found in ValidationConfig") + } + + baseField, ok := config.Fields["base"] + if !ok { + t.Fatal("base field not found in create_pull_request validation config") + } + + if baseField.MaxLength != 128 { + t.Errorf("base field MaxLength = %d, want 128", baseField.MaxLength) + } +} diff --git a/pkg/workflow/safe_outputs_validation_config.go b/pkg/workflow/safe_outputs_validation_config.go index fc9b36917ad..dfed0a7b1c4 100644 --- a/pkg/workflow/safe_outputs_validation_config.go +++ b/pkg/workflow/safe_outputs_validation_config.go @@ -76,7 +76,7 @@ var ValidationConfig = map[string]TypeValidationConfig{ "title": {Required: true, Type: "string", Sanitize: true, MaxLength: 128}, "body": {Required: true, Type: "string", Sanitize: true, MaxLength: MaxBodyLength}, "branch": {Required: true, Type: "string", Sanitize: true, MaxLength: 256}, - "base": {Type: "string", Sanitize: true, MaxLength: 256}, + "base": {Type: "string", Sanitize: true, MaxLength: 128}, "labels": {Type: "array", ItemType: "string", ItemSanitize: true, ItemMaxLength: 128}, "draft": {Type: "boolean"}, "repo": {Type: "string", MaxLength: 256}, // Optional: target repository in format "owner/repo" From cee923abed3bf5df36f3a045813993a8531823c1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Apr 2026 21:35:45 +0000 Subject: [PATCH 5/8] chore: plan logging follow-up from PR comment Agent-Logs-Url: https://github.com/github/gh-aw/sessions/c3ab854b-7c14-4fee-9ac9-dce311ccf04d Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/ci-coach.lock.yml | 5 +++++ .github/workflows/cloclo.lock.yml | 5 +++++ .github/workflows/code-scanning-fixer.lock.yml | 5 +++++ .github/workflows/code-simplifier.lock.yml | 5 +++++ .github/workflows/daily-architecture-diagram.lock.yml | 5 +++++ .github/workflows/daily-community-attribution.lock.yml | 5 +++++ .github/workflows/daily-doc-healer.lock.yml | 5 +++++ .github/workflows/daily-doc-updater.lock.yml | 5 +++++ .github/workflows/daily-rendering-scripts-verifier.lock.yml | 5 +++++ .github/workflows/daily-safe-output-integrator.lock.yml | 5 +++++ .github/workflows/daily-workflow-updater.lock.yml | 5 +++++ .github/workflows/dead-code-remover.lock.yml | 5 +++++ .github/workflows/developer-docs-consolidator.lock.yml | 5 +++++ .github/workflows/dictation-prompt.lock.yml | 5 +++++ .github/workflows/functional-pragmatist.lock.yml | 5 +++++ .github/workflows/github-mcp-tools-report.lock.yml | 5 +++++ .github/workflows/glossary-maintainer.lock.yml | 5 +++++ .github/workflows/go-logger.lock.yml | 5 +++++ .github/workflows/hourly-ci-cleaner.lock.yml | 5 +++++ .github/workflows/instructions-janitor.lock.yml | 5 +++++ .github/workflows/jsweep.lock.yml | 5 +++++ .github/workflows/layout-spec-maintainer.lock.yml | 5 +++++ .github/workflows/poem-bot.lock.yml | 5 +++++ .github/workflows/q.lock.yml | 5 +++++ .github/workflows/refiner.lock.yml | 5 +++++ .github/workflows/schema-feature-coverage.lock.yml | 5 +++++ .github/workflows/slide-deck-maintainer.lock.yml | 5 +++++ .github/workflows/smoke-create-cross-repo-pr.lock.yml | 5 +++++ .github/workflows/smoke-multi-pr.lock.yml | 5 +++++ .github/workflows/smoke-project.lock.yml | 5 +++++ .github/workflows/spec-enforcer.lock.yml | 5 +++++ .github/workflows/spec-extractor.lock.yml | 5 +++++ .github/workflows/technical-doc-writer.lock.yml | 5 +++++ .github/workflows/test-create-pr-error-handling.lock.yml | 5 +++++ .github/workflows/tidy.lock.yml | 5 +++++ .github/workflows/ubuntu-image-analyzer.lock.yml | 5 +++++ .github/workflows/unbloat-docs.lock.yml | 5 +++++ .github/workflows/update-astro.lock.yml | 5 +++++ .github/workflows/weekly-blog-post-writer.lock.yml | 5 +++++ .github/workflows/weekly-editors-health-check.lock.yml | 5 +++++ .github/workflows/weekly-safe-outputs-spec-review.lock.yml | 5 +++++ 41 files changed, 205 insertions(+) diff --git a/.github/workflows/ci-coach.lock.yml b/.github/workflows/ci-coach.lock.yml index 67a071ea5e9..45a4a41ce7e 100644 --- a/.github/workflows/ci-coach.lock.yml +++ b/.github/workflows/ci-coach.lock.yml @@ -496,6 +496,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/cloclo.lock.yml b/.github/workflows/cloclo.lock.yml index 6358255848c..4ec1d5f925b 100644 --- a/.github/workflows/cloclo.lock.yml +++ b/.github/workflows/cloclo.lock.yml @@ -683,6 +683,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/code-scanning-fixer.lock.yml b/.github/workflows/code-scanning-fixer.lock.yml index fa8a5510cb3..1f5be471433 100644 --- a/.github/workflows/code-scanning-fixer.lock.yml +++ b/.github/workflows/code-scanning-fixer.lock.yml @@ -481,6 +481,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/code-simplifier.lock.yml b/.github/workflows/code-simplifier.lock.yml index 29f2bdbfaaf..88f28dd807b 100644 --- a/.github/workflows/code-simplifier.lock.yml +++ b/.github/workflows/code-simplifier.lock.yml @@ -435,6 +435,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-architecture-diagram.lock.yml b/.github/workflows/daily-architecture-diagram.lock.yml index 143b2e1c743..3e5a1582630 100644 --- a/.github/workflows/daily-architecture-diagram.lock.yml +++ b/.github/workflows/daily-architecture-diagram.lock.yml @@ -492,6 +492,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-community-attribution.lock.yml b/.github/workflows/daily-community-attribution.lock.yml index 085ba8bbcd0..84961ebcc66 100644 --- a/.github/workflows/daily-community-attribution.lock.yml +++ b/.github/workflows/daily-community-attribution.lock.yml @@ -477,6 +477,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-doc-healer.lock.yml b/.github/workflows/daily-doc-healer.lock.yml index 753cabc75c1..79e2f594a9a 100644 --- a/.github/workflows/daily-doc-healer.lock.yml +++ b/.github/workflows/daily-doc-healer.lock.yml @@ -500,6 +500,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-doc-updater.lock.yml b/.github/workflows/daily-doc-updater.lock.yml index 729b4851c93..c75398c5e84 100644 --- a/.github/workflows/daily-doc-updater.lock.yml +++ b/.github/workflows/daily-doc-updater.lock.yml @@ -461,6 +461,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-rendering-scripts-verifier.lock.yml b/.github/workflows/daily-rendering-scripts-verifier.lock.yml index 0aa2b543655..462ac5f2ac0 100644 --- a/.github/workflows/daily-rendering-scripts-verifier.lock.yml +++ b/.github/workflows/daily-rendering-scripts-verifier.lock.yml @@ -533,6 +533,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-safe-output-integrator.lock.yml b/.github/workflows/daily-safe-output-integrator.lock.yml index 8bbda77b49f..f38f0fbff0a 100644 --- a/.github/workflows/daily-safe-output-integrator.lock.yml +++ b/.github/workflows/daily-safe-output-integrator.lock.yml @@ -436,6 +436,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-workflow-updater.lock.yml b/.github/workflows/daily-workflow-updater.lock.yml index 529fd4befbe..79320522362 100644 --- a/.github/workflows/daily-workflow-updater.lock.yml +++ b/.github/workflows/daily-workflow-updater.lock.yml @@ -430,6 +430,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/dead-code-remover.lock.yml b/.github/workflows/dead-code-remover.lock.yml index 4d06aa87122..c4f178c5dd9 100644 --- a/.github/workflows/dead-code-remover.lock.yml +++ b/.github/workflows/dead-code-remover.lock.yml @@ -466,6 +466,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/developer-docs-consolidator.lock.yml b/.github/workflows/developer-docs-consolidator.lock.yml index 35f8664df98..ad69d7baef4 100644 --- a/.github/workflows/developer-docs-consolidator.lock.yml +++ b/.github/workflows/developer-docs-consolidator.lock.yml @@ -538,6 +538,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/dictation-prompt.lock.yml b/.github/workflows/dictation-prompt.lock.yml index 5506e22a74e..fffe51a5ff2 100644 --- a/.github/workflows/dictation-prompt.lock.yml +++ b/.github/workflows/dictation-prompt.lock.yml @@ -419,6 +419,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/functional-pragmatist.lock.yml b/.github/workflows/functional-pragmatist.lock.yml index 249733abe65..aee27471ea8 100644 --- a/.github/workflows/functional-pragmatist.lock.yml +++ b/.github/workflows/functional-pragmatist.lock.yml @@ -426,6 +426,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/github-mcp-tools-report.lock.yml b/.github/workflows/github-mcp-tools-report.lock.yml index 40b85850fe1..1b5d386fd2c 100644 --- a/.github/workflows/github-mcp-tools-report.lock.yml +++ b/.github/workflows/github-mcp-tools-report.lock.yml @@ -480,6 +480,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/glossary-maintainer.lock.yml b/.github/workflows/glossary-maintainer.lock.yml index 69255e24fe3..a8a7e3d2242 100644 --- a/.github/workflows/glossary-maintainer.lock.yml +++ b/.github/workflows/glossary-maintainer.lock.yml @@ -528,6 +528,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/go-logger.lock.yml b/.github/workflows/go-logger.lock.yml index 3dc5143c781..b026bbfbbb1 100644 --- a/.github/workflows/go-logger.lock.yml +++ b/.github/workflows/go-logger.lock.yml @@ -466,6 +466,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/hourly-ci-cleaner.lock.yml b/.github/workflows/hourly-ci-cleaner.lock.yml index f1eeecbe8d5..d0e4492dbee 100644 --- a/.github/workflows/hourly-ci-cleaner.lock.yml +++ b/.github/workflows/hourly-ci-cleaner.lock.yml @@ -473,6 +473,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/instructions-janitor.lock.yml b/.github/workflows/instructions-janitor.lock.yml index 1eed7cd93e7..d8f572c1c4e 100644 --- a/.github/workflows/instructions-janitor.lock.yml +++ b/.github/workflows/instructions-janitor.lock.yml @@ -444,6 +444,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/jsweep.lock.yml b/.github/workflows/jsweep.lock.yml index a50920c40de..3a8ccf26846 100644 --- a/.github/workflows/jsweep.lock.yml +++ b/.github/workflows/jsweep.lock.yml @@ -494,6 +494,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/layout-spec-maintainer.lock.yml b/.github/workflows/layout-spec-maintainer.lock.yml index 44314c019ed..702c76e4416 100644 --- a/.github/workflows/layout-spec-maintainer.lock.yml +++ b/.github/workflows/layout-spec-maintainer.lock.yml @@ -430,6 +430,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/poem-bot.lock.yml b/.github/workflows/poem-bot.lock.yml index 21a77e58c22..97c63218330 100644 --- a/.github/workflows/poem-bot.lock.yml +++ b/.github/workflows/poem-bot.lock.yml @@ -667,6 +667,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/q.lock.yml b/.github/workflows/q.lock.yml index 5e8ac12b3b0..5207d52a25a 100644 --- a/.github/workflows/q.lock.yml +++ b/.github/workflows/q.lock.yml @@ -670,6 +670,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/refiner.lock.yml b/.github/workflows/refiner.lock.yml index ece8c723e74..35c3d049cd0 100644 --- a/.github/workflows/refiner.lock.yml +++ b/.github/workflows/refiner.lock.yml @@ -478,6 +478,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/schema-feature-coverage.lock.yml b/.github/workflows/schema-feature-coverage.lock.yml index 17dcabc7048..1c58796a563 100644 --- a/.github/workflows/schema-feature-coverage.lock.yml +++ b/.github/workflows/schema-feature-coverage.lock.yml @@ -429,6 +429,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/slide-deck-maintainer.lock.yml b/.github/workflows/slide-deck-maintainer.lock.yml index 9eecb763a5a..ef8c9a52288 100644 --- a/.github/workflows/slide-deck-maintainer.lock.yml +++ b/.github/workflows/slide-deck-maintainer.lock.yml @@ -484,6 +484,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/smoke-create-cross-repo-pr.lock.yml b/.github/workflows/smoke-create-cross-repo-pr.lock.yml index 481c69995b3..0a30120e5bf 100644 --- a/.github/workflows/smoke-create-cross-repo-pr.lock.yml +++ b/.github/workflows/smoke-create-cross-repo-pr.lock.yml @@ -535,6 +535,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/smoke-multi-pr.lock.yml b/.github/workflows/smoke-multi-pr.lock.yml index c8effcf0864..0e6c690b248 100644 --- a/.github/workflows/smoke-multi-pr.lock.yml +++ b/.github/workflows/smoke-multi-pr.lock.yml @@ -508,6 +508,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/smoke-project.lock.yml b/.github/workflows/smoke-project.lock.yml index 1369cef3040..f4c9eb731dd 100644 --- a/.github/workflows/smoke-project.lock.yml +++ b/.github/workflows/smoke-project.lock.yml @@ -603,6 +603,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/spec-enforcer.lock.yml b/.github/workflows/spec-enforcer.lock.yml index dd47a0c34e9..68b458e438c 100644 --- a/.github/workflows/spec-enforcer.lock.yml +++ b/.github/workflows/spec-enforcer.lock.yml @@ -446,6 +446,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/spec-extractor.lock.yml b/.github/workflows/spec-extractor.lock.yml index 590650c7664..ee641af905e 100644 --- a/.github/workflows/spec-extractor.lock.yml +++ b/.github/workflows/spec-extractor.lock.yml @@ -483,6 +483,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/technical-doc-writer.lock.yml b/.github/workflows/technical-doc-writer.lock.yml index 9398b6a55bb..25da79eee4e 100644 --- a/.github/workflows/technical-doc-writer.lock.yml +++ b/.github/workflows/technical-doc-writer.lock.yml @@ -525,6 +525,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/test-create-pr-error-handling.lock.yml b/.github/workflows/test-create-pr-error-handling.lock.yml index 8fd36552ae3..bc33ef88b32 100644 --- a/.github/workflows/test-create-pr-error-handling.lock.yml +++ b/.github/workflows/test-create-pr-error-handling.lock.yml @@ -439,6 +439,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/tidy.lock.yml b/.github/workflows/tidy.lock.yml index 4d6da127483..cb4819d8dba 100644 --- a/.github/workflows/tidy.lock.yml +++ b/.github/workflows/tidy.lock.yml @@ -498,6 +498,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/ubuntu-image-analyzer.lock.yml b/.github/workflows/ubuntu-image-analyzer.lock.yml index 57d3f50e59d..7034ccd99ca 100644 --- a/.github/workflows/ubuntu-image-analyzer.lock.yml +++ b/.github/workflows/ubuntu-image-analyzer.lock.yml @@ -428,6 +428,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/unbloat-docs.lock.yml b/.github/workflows/unbloat-docs.lock.yml index 5015965096c..48784451ae3 100644 --- a/.github/workflows/unbloat-docs.lock.yml +++ b/.github/workflows/unbloat-docs.lock.yml @@ -545,6 +545,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/update-astro.lock.yml b/.github/workflows/update-astro.lock.yml index 6589db8626f..259f0b857df 100644 --- a/.github/workflows/update-astro.lock.yml +++ b/.github/workflows/update-astro.lock.yml @@ -441,6 +441,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/weekly-blog-post-writer.lock.yml b/.github/workflows/weekly-blog-post-writer.lock.yml index fc3e312e2ed..19c54bd0f29 100644 --- a/.github/workflows/weekly-blog-post-writer.lock.yml +++ b/.github/workflows/weekly-blog-post-writer.lock.yml @@ -505,6 +505,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/weekly-editors-health-check.lock.yml b/.github/workflows/weekly-editors-health-check.lock.yml index 68ebad24432..684e6109902 100644 --- a/.github/workflows/weekly-editors-health-check.lock.yml +++ b/.github/workflows/weekly-editors-health-check.lock.yml @@ -428,6 +428,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/weekly-safe-outputs-spec-review.lock.yml b/.github/workflows/weekly-safe-outputs-spec-review.lock.yml index 5c4f21dcdd6..a221da88dec 100644 --- a/.github/workflows/weekly-safe-outputs-spec-review.lock.yml +++ b/.github/workflows/weekly-safe-outputs-spec-review.lock.yml @@ -417,6 +417,11 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { + "base": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, "body": { "required": true, "type": "string", From 58a830b5d87419c9c6fa7e91dbd5ea5a57c1f7b0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Apr 2026 21:49:52 +0000 Subject: [PATCH 6/8] chore: add base override logging and clean lockfile churn Agent-Logs-Url: https://github.com/github/gh-aw/sessions/c3ab854b-7c14-4fee-9ac9-dce311ccf04d Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/ci-coach.lock.yml | 5 ----- .github/workflows/cloclo.lock.yml | 5 ----- .github/workflows/code-scanning-fixer.lock.yml | 5 ----- .github/workflows/code-simplifier.lock.yml | 5 ----- .github/workflows/daily-architecture-diagram.lock.yml | 5 ----- .github/workflows/daily-community-attribution.lock.yml | 5 ----- .github/workflows/daily-doc-healer.lock.yml | 5 ----- .github/workflows/daily-doc-updater.lock.yml | 5 ----- .../workflows/daily-rendering-scripts-verifier.lock.yml | 5 ----- .github/workflows/daily-safe-output-integrator.lock.yml | 5 ----- .github/workflows/daily-workflow-updater.lock.yml | 5 ----- .github/workflows/dead-code-remover.lock.yml | 5 ----- .github/workflows/developer-docs-consolidator.lock.yml | 5 ----- .github/workflows/dictation-prompt.lock.yml | 5 ----- .github/workflows/functional-pragmatist.lock.yml | 5 ----- .github/workflows/github-mcp-tools-report.lock.yml | 5 ----- .github/workflows/glossary-maintainer.lock.yml | 5 ----- .github/workflows/go-logger.lock.yml | 5 ----- .github/workflows/hourly-ci-cleaner.lock.yml | 5 ----- .github/workflows/instructions-janitor.lock.yml | 5 ----- .github/workflows/jsweep.lock.yml | 5 ----- .github/workflows/layout-spec-maintainer.lock.yml | 5 ----- .github/workflows/poem-bot.lock.yml | 5 ----- .github/workflows/q.lock.yml | 5 ----- .github/workflows/refiner.lock.yml | 5 ----- .github/workflows/schema-feature-coverage.lock.yml | 5 ----- .github/workflows/slide-deck-maintainer.lock.yml | 5 ----- .github/workflows/smoke-create-cross-repo-pr.lock.yml | 5 ----- .github/workflows/smoke-multi-pr.lock.yml | 5 ----- .github/workflows/smoke-project.lock.yml | 5 ----- .github/workflows/spec-enforcer.lock.yml | 5 ----- .github/workflows/spec-extractor.lock.yml | 5 ----- .github/workflows/technical-doc-writer.lock.yml | 5 ----- .github/workflows/test-create-pr-error-handling.lock.yml | 5 ----- .github/workflows/tidy.lock.yml | 5 ----- .github/workflows/ubuntu-image-analyzer.lock.yml | 5 ----- .github/workflows/unbloat-docs.lock.yml | 5 ----- .github/workflows/update-astro.lock.yml | 5 ----- .github/workflows/weekly-blog-post-writer.lock.yml | 5 ----- .github/workflows/weekly-editors-health-check.lock.yml | 5 ----- .github/workflows/weekly-safe-outputs-spec-review.lock.yml | 5 ----- actions/setup/js/create_pull_request.cjs | 7 ++++++- actions/setup/js/create_pull_request.test.cjs | 4 ++++ 43 files changed, 10 insertions(+), 206 deletions(-) diff --git a/.github/workflows/ci-coach.lock.yml b/.github/workflows/ci-coach.lock.yml index 45a4a41ce7e..67a071ea5e9 100644 --- a/.github/workflows/ci-coach.lock.yml +++ b/.github/workflows/ci-coach.lock.yml @@ -496,11 +496,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/cloclo.lock.yml b/.github/workflows/cloclo.lock.yml index 4ec1d5f925b..6358255848c 100644 --- a/.github/workflows/cloclo.lock.yml +++ b/.github/workflows/cloclo.lock.yml @@ -683,11 +683,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/code-scanning-fixer.lock.yml b/.github/workflows/code-scanning-fixer.lock.yml index 1f5be471433..fa8a5510cb3 100644 --- a/.github/workflows/code-scanning-fixer.lock.yml +++ b/.github/workflows/code-scanning-fixer.lock.yml @@ -481,11 +481,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/code-simplifier.lock.yml b/.github/workflows/code-simplifier.lock.yml index 88f28dd807b..29f2bdbfaaf 100644 --- a/.github/workflows/code-simplifier.lock.yml +++ b/.github/workflows/code-simplifier.lock.yml @@ -435,11 +435,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-architecture-diagram.lock.yml b/.github/workflows/daily-architecture-diagram.lock.yml index 3e5a1582630..143b2e1c743 100644 --- a/.github/workflows/daily-architecture-diagram.lock.yml +++ b/.github/workflows/daily-architecture-diagram.lock.yml @@ -492,11 +492,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-community-attribution.lock.yml b/.github/workflows/daily-community-attribution.lock.yml index 84961ebcc66..085ba8bbcd0 100644 --- a/.github/workflows/daily-community-attribution.lock.yml +++ b/.github/workflows/daily-community-attribution.lock.yml @@ -477,11 +477,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-doc-healer.lock.yml b/.github/workflows/daily-doc-healer.lock.yml index 79e2f594a9a..753cabc75c1 100644 --- a/.github/workflows/daily-doc-healer.lock.yml +++ b/.github/workflows/daily-doc-healer.lock.yml @@ -500,11 +500,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-doc-updater.lock.yml b/.github/workflows/daily-doc-updater.lock.yml index c75398c5e84..729b4851c93 100644 --- a/.github/workflows/daily-doc-updater.lock.yml +++ b/.github/workflows/daily-doc-updater.lock.yml @@ -461,11 +461,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-rendering-scripts-verifier.lock.yml b/.github/workflows/daily-rendering-scripts-verifier.lock.yml index 462ac5f2ac0..0aa2b543655 100644 --- a/.github/workflows/daily-rendering-scripts-verifier.lock.yml +++ b/.github/workflows/daily-rendering-scripts-verifier.lock.yml @@ -533,11 +533,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-safe-output-integrator.lock.yml b/.github/workflows/daily-safe-output-integrator.lock.yml index f38f0fbff0a..8bbda77b49f 100644 --- a/.github/workflows/daily-safe-output-integrator.lock.yml +++ b/.github/workflows/daily-safe-output-integrator.lock.yml @@ -436,11 +436,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/daily-workflow-updater.lock.yml b/.github/workflows/daily-workflow-updater.lock.yml index 79320522362..529fd4befbe 100644 --- a/.github/workflows/daily-workflow-updater.lock.yml +++ b/.github/workflows/daily-workflow-updater.lock.yml @@ -430,11 +430,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/dead-code-remover.lock.yml b/.github/workflows/dead-code-remover.lock.yml index c4f178c5dd9..4d06aa87122 100644 --- a/.github/workflows/dead-code-remover.lock.yml +++ b/.github/workflows/dead-code-remover.lock.yml @@ -466,11 +466,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/developer-docs-consolidator.lock.yml b/.github/workflows/developer-docs-consolidator.lock.yml index ad69d7baef4..35f8664df98 100644 --- a/.github/workflows/developer-docs-consolidator.lock.yml +++ b/.github/workflows/developer-docs-consolidator.lock.yml @@ -538,11 +538,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/dictation-prompt.lock.yml b/.github/workflows/dictation-prompt.lock.yml index fffe51a5ff2..5506e22a74e 100644 --- a/.github/workflows/dictation-prompt.lock.yml +++ b/.github/workflows/dictation-prompt.lock.yml @@ -419,11 +419,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/functional-pragmatist.lock.yml b/.github/workflows/functional-pragmatist.lock.yml index aee27471ea8..249733abe65 100644 --- a/.github/workflows/functional-pragmatist.lock.yml +++ b/.github/workflows/functional-pragmatist.lock.yml @@ -426,11 +426,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/github-mcp-tools-report.lock.yml b/.github/workflows/github-mcp-tools-report.lock.yml index 1b5d386fd2c..40b85850fe1 100644 --- a/.github/workflows/github-mcp-tools-report.lock.yml +++ b/.github/workflows/github-mcp-tools-report.lock.yml @@ -480,11 +480,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/glossary-maintainer.lock.yml b/.github/workflows/glossary-maintainer.lock.yml index a8a7e3d2242..69255e24fe3 100644 --- a/.github/workflows/glossary-maintainer.lock.yml +++ b/.github/workflows/glossary-maintainer.lock.yml @@ -528,11 +528,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/go-logger.lock.yml b/.github/workflows/go-logger.lock.yml index b026bbfbbb1..3dc5143c781 100644 --- a/.github/workflows/go-logger.lock.yml +++ b/.github/workflows/go-logger.lock.yml @@ -466,11 +466,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/hourly-ci-cleaner.lock.yml b/.github/workflows/hourly-ci-cleaner.lock.yml index d0e4492dbee..f1eeecbe8d5 100644 --- a/.github/workflows/hourly-ci-cleaner.lock.yml +++ b/.github/workflows/hourly-ci-cleaner.lock.yml @@ -473,11 +473,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/instructions-janitor.lock.yml b/.github/workflows/instructions-janitor.lock.yml index d8f572c1c4e..1eed7cd93e7 100644 --- a/.github/workflows/instructions-janitor.lock.yml +++ b/.github/workflows/instructions-janitor.lock.yml @@ -444,11 +444,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/jsweep.lock.yml b/.github/workflows/jsweep.lock.yml index 3a8ccf26846..a50920c40de 100644 --- a/.github/workflows/jsweep.lock.yml +++ b/.github/workflows/jsweep.lock.yml @@ -494,11 +494,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/layout-spec-maintainer.lock.yml b/.github/workflows/layout-spec-maintainer.lock.yml index 702c76e4416..44314c019ed 100644 --- a/.github/workflows/layout-spec-maintainer.lock.yml +++ b/.github/workflows/layout-spec-maintainer.lock.yml @@ -430,11 +430,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/poem-bot.lock.yml b/.github/workflows/poem-bot.lock.yml index 97c63218330..21a77e58c22 100644 --- a/.github/workflows/poem-bot.lock.yml +++ b/.github/workflows/poem-bot.lock.yml @@ -667,11 +667,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/q.lock.yml b/.github/workflows/q.lock.yml index 5207d52a25a..5e8ac12b3b0 100644 --- a/.github/workflows/q.lock.yml +++ b/.github/workflows/q.lock.yml @@ -670,11 +670,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/refiner.lock.yml b/.github/workflows/refiner.lock.yml index 35c3d049cd0..ece8c723e74 100644 --- a/.github/workflows/refiner.lock.yml +++ b/.github/workflows/refiner.lock.yml @@ -478,11 +478,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/schema-feature-coverage.lock.yml b/.github/workflows/schema-feature-coverage.lock.yml index 1c58796a563..17dcabc7048 100644 --- a/.github/workflows/schema-feature-coverage.lock.yml +++ b/.github/workflows/schema-feature-coverage.lock.yml @@ -429,11 +429,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/slide-deck-maintainer.lock.yml b/.github/workflows/slide-deck-maintainer.lock.yml index ef8c9a52288..9eecb763a5a 100644 --- a/.github/workflows/slide-deck-maintainer.lock.yml +++ b/.github/workflows/slide-deck-maintainer.lock.yml @@ -484,11 +484,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/smoke-create-cross-repo-pr.lock.yml b/.github/workflows/smoke-create-cross-repo-pr.lock.yml index 0a30120e5bf..481c69995b3 100644 --- a/.github/workflows/smoke-create-cross-repo-pr.lock.yml +++ b/.github/workflows/smoke-create-cross-repo-pr.lock.yml @@ -535,11 +535,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/smoke-multi-pr.lock.yml b/.github/workflows/smoke-multi-pr.lock.yml index 0e6c690b248..c8effcf0864 100644 --- a/.github/workflows/smoke-multi-pr.lock.yml +++ b/.github/workflows/smoke-multi-pr.lock.yml @@ -508,11 +508,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/smoke-project.lock.yml b/.github/workflows/smoke-project.lock.yml index f4c9eb731dd..1369cef3040 100644 --- a/.github/workflows/smoke-project.lock.yml +++ b/.github/workflows/smoke-project.lock.yml @@ -603,11 +603,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/spec-enforcer.lock.yml b/.github/workflows/spec-enforcer.lock.yml index 68b458e438c..dd47a0c34e9 100644 --- a/.github/workflows/spec-enforcer.lock.yml +++ b/.github/workflows/spec-enforcer.lock.yml @@ -446,11 +446,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/spec-extractor.lock.yml b/.github/workflows/spec-extractor.lock.yml index ee641af905e..590650c7664 100644 --- a/.github/workflows/spec-extractor.lock.yml +++ b/.github/workflows/spec-extractor.lock.yml @@ -483,11 +483,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/technical-doc-writer.lock.yml b/.github/workflows/technical-doc-writer.lock.yml index 25da79eee4e..9398b6a55bb 100644 --- a/.github/workflows/technical-doc-writer.lock.yml +++ b/.github/workflows/technical-doc-writer.lock.yml @@ -525,11 +525,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/test-create-pr-error-handling.lock.yml b/.github/workflows/test-create-pr-error-handling.lock.yml index bc33ef88b32..8fd36552ae3 100644 --- a/.github/workflows/test-create-pr-error-handling.lock.yml +++ b/.github/workflows/test-create-pr-error-handling.lock.yml @@ -439,11 +439,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/tidy.lock.yml b/.github/workflows/tidy.lock.yml index cb4819d8dba..4d6da127483 100644 --- a/.github/workflows/tidy.lock.yml +++ b/.github/workflows/tidy.lock.yml @@ -498,11 +498,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/ubuntu-image-analyzer.lock.yml b/.github/workflows/ubuntu-image-analyzer.lock.yml index 7034ccd99ca..57d3f50e59d 100644 --- a/.github/workflows/ubuntu-image-analyzer.lock.yml +++ b/.github/workflows/ubuntu-image-analyzer.lock.yml @@ -428,11 +428,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/unbloat-docs.lock.yml b/.github/workflows/unbloat-docs.lock.yml index 48784451ae3..5015965096c 100644 --- a/.github/workflows/unbloat-docs.lock.yml +++ b/.github/workflows/unbloat-docs.lock.yml @@ -545,11 +545,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/update-astro.lock.yml b/.github/workflows/update-astro.lock.yml index 259f0b857df..6589db8626f 100644 --- a/.github/workflows/update-astro.lock.yml +++ b/.github/workflows/update-astro.lock.yml @@ -441,11 +441,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/weekly-blog-post-writer.lock.yml b/.github/workflows/weekly-blog-post-writer.lock.yml index 19c54bd0f29..fc3e312e2ed 100644 --- a/.github/workflows/weekly-blog-post-writer.lock.yml +++ b/.github/workflows/weekly-blog-post-writer.lock.yml @@ -505,11 +505,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/weekly-editors-health-check.lock.yml b/.github/workflows/weekly-editors-health-check.lock.yml index 684e6109902..68ebad24432 100644 --- a/.github/workflows/weekly-editors-health-check.lock.yml +++ b/.github/workflows/weekly-editors-health-check.lock.yml @@ -428,11 +428,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/.github/workflows/weekly-safe-outputs-spec-review.lock.yml b/.github/workflows/weekly-safe-outputs-spec-review.lock.yml index a221da88dec..5c4f21dcdd6 100644 --- a/.github/workflows/weekly-safe-outputs-spec-review.lock.yml +++ b/.github/workflows/weekly-safe-outputs-spec-review.lock.yml @@ -417,11 +417,6 @@ jobs: "create_pull_request": { "defaultMax": 1, "fields": { - "base": { - "type": "string", - "sanitize": true, - "maxLength": 128 - }, "body": { "required": true, "type": "string", diff --git a/actions/setup/js/create_pull_request.cjs b/actions/setup/js/create_pull_request.cjs index 3cb4798a88f..246f10bf41d 100644 --- a/actions/setup/js/create_pull_request.cjs +++ b/actions/setup/js/create_pull_request.cjs @@ -496,28 +496,33 @@ async function main(config = {}) { // Optional agent-provided base branch override. // This is only allowed when allowed_base_branches is configured. if (typeof pullRequestItem.base === "string" && pullRequestItem.base.trim() !== "") { + const requestedBaseBranchRaw = pullRequestItem.base.trim(); + core.info(`Base branch override requested: ${requestedBaseBranchRaw}`); if (allowedBaseBranches.size === 0) { + core.warning(`Rejecting base branch override '${requestedBaseBranchRaw}': allowed-base-branches is not configured`); return { success: false, error: "Base branch override is not allowed. Configure safe-outputs.create-pull-request.allowed-base-branches to allow per-run base overrides.", }; } - const requestedBaseBranchRaw = pullRequestItem.base.trim(); const requestedBaseBranch = normalizeBranchName(requestedBaseBranchRaw); if (!requestedBaseBranch) { + core.warning(`Rejecting base branch override '${requestedBaseBranchRaw}': sanitization resulted in empty branch name`); return { success: false, error: `Invalid base branch override: sanitization resulted in empty string (original: "${requestedBaseBranchRaw}")`, }; } if (requestedBaseBranchRaw !== requestedBaseBranch) { + core.warning(`Rejecting base branch override '${requestedBaseBranchRaw}': sanitized value '${requestedBaseBranch}' does not match original`); return { success: false, error: `Invalid base branch override: contains invalid characters (original: "${requestedBaseBranchRaw}", normalized: "${requestedBaseBranch}")`, }; } if (!isBaseBranchAllowed(requestedBaseBranch, allowedBaseBranches)) { + core.warning(`Rejecting base branch override '${requestedBaseBranch}': does not match allowed patterns (${Array.from(allowedBaseBranches).join(", ")})`); return { success: false, error: `Base branch override '${requestedBaseBranch}' is not allowed. Allowed patterns: ${Array.from(allowedBaseBranches).join(", ")}`, diff --git a/actions/setup/js/create_pull_request.test.cjs b/actions/setup/js/create_pull_request.test.cjs index d1c34dd3f86..a2b2d033e3b 100644 --- a/actions/setup/js/create_pull_request.test.cjs +++ b/actions/setup/js/create_pull_request.test.cjs @@ -1303,6 +1303,7 @@ describe("create_pull_request - base branch override policy", () => { expect(result.success).toBe(false); expect(result.error).toContain("Base branch override is not allowed"); + expect(global.core.warning).toHaveBeenCalledWith(expect.stringContaining("allowed-base-branches is not configured")); }); it("should allow base override when it matches allowed-base-branches", async () => { @@ -1313,6 +1314,8 @@ describe("create_pull_request - base branch override policy", () => { expect(result.success).toBe(true); expect(global.github.rest.pulls.create).toHaveBeenCalledWith(expect.objectContaining({ base: "release/1.0" })); + expect(global.core.info).toHaveBeenCalledWith(expect.stringContaining("Base branch override requested: release/1.0")); + expect(global.core.info).toHaveBeenCalledWith(expect.stringContaining("Using agent-provided base branch override: release/1.0")); }); it("should reject base override when it does not match allowed-base-branches", async () => { @@ -1323,6 +1326,7 @@ describe("create_pull_request - base branch override policy", () => { expect(result.success).toBe(false); expect(result.error).toContain("Base branch override 'main' is not allowed"); + expect(global.core.warning).toHaveBeenCalledWith(expect.stringContaining("does not match allowed patterns")); }); }); From d13a8ce18616307bbbe46605b5b8dd130fa577d4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Apr 2026 22:02:19 +0000 Subject: [PATCH 7/8] chore: add safe base-override logging Agent-Logs-Url: https://github.com/github/gh-aw/sessions/c3ab854b-7c14-4fee-9ac9-dce311ccf04d Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- actions/setup/js/create_pull_request.cjs | 10 ++++++---- actions/setup/js/create_pull_request.test.cjs | 3 ++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/actions/setup/js/create_pull_request.cjs b/actions/setup/js/create_pull_request.cjs index 246f10bf41d..778a191c4f1 100644 --- a/actions/setup/js/create_pull_request.cjs +++ b/actions/setup/js/create_pull_request.cjs @@ -497,9 +497,10 @@ async function main(config = {}) { // This is only allowed when allowed_base_branches is configured. if (typeof pullRequestItem.base === "string" && pullRequestItem.base.trim() !== "") { const requestedBaseBranchRaw = pullRequestItem.base.trim(); - core.info(`Base branch override requested: ${requestedBaseBranchRaw}`); + const requestedBaseBranchForLog = JSON.stringify(requestedBaseBranchRaw); + core.info(`Base branch override requested: ${requestedBaseBranchForLog}`); if (allowedBaseBranches.size === 0) { - core.warning(`Rejecting base branch override '${requestedBaseBranchRaw}': allowed-base-branches is not configured`); + core.warning(`Rejecting base branch override ${requestedBaseBranchForLog}: allowed-base-branches is not configured`); return { success: false, error: "Base branch override is not allowed. Configure safe-outputs.create-pull-request.allowed-base-branches to allow per-run base overrides.", @@ -508,14 +509,14 @@ async function main(config = {}) { const requestedBaseBranch = normalizeBranchName(requestedBaseBranchRaw); if (!requestedBaseBranch) { - core.warning(`Rejecting base branch override '${requestedBaseBranchRaw}': sanitization resulted in empty branch name`); + core.warning(`Rejecting base branch override ${requestedBaseBranchForLog}: sanitization resulted in empty branch name`); return { success: false, error: `Invalid base branch override: sanitization resulted in empty string (original: "${requestedBaseBranchRaw}")`, }; } if (requestedBaseBranchRaw !== requestedBaseBranch) { - core.warning(`Rejecting base branch override '${requestedBaseBranchRaw}': sanitized value '${requestedBaseBranch}' does not match original`); + core.warning(`Rejecting base branch override ${requestedBaseBranchForLog}: sanitized value '${requestedBaseBranch}' does not match original`); return { success: false, error: `Invalid base branch override: contains invalid characters (original: "${requestedBaseBranchRaw}", normalized: "${requestedBaseBranch}")`, @@ -529,6 +530,7 @@ async function main(config = {}) { }; } + core.info(`Base branch override accepted: ${requestedBaseBranch}`); baseBranch = requestedBaseBranch; core.info(`Using agent-provided base branch override: ${baseBranch}`); } diff --git a/actions/setup/js/create_pull_request.test.cjs b/actions/setup/js/create_pull_request.test.cjs index a2b2d033e3b..6087b0d2841 100644 --- a/actions/setup/js/create_pull_request.test.cjs +++ b/actions/setup/js/create_pull_request.test.cjs @@ -1314,7 +1314,8 @@ describe("create_pull_request - base branch override policy", () => { expect(result.success).toBe(true); expect(global.github.rest.pulls.create).toHaveBeenCalledWith(expect.objectContaining({ base: "release/1.0" })); - expect(global.core.info).toHaveBeenCalledWith(expect.stringContaining("Base branch override requested: release/1.0")); + expect(global.core.info).toHaveBeenCalledWith(expect.stringContaining('Base branch override requested: "release/1.0"')); + expect(global.core.info).toHaveBeenCalledWith(expect.stringContaining("Base branch override accepted: release/1.0")); expect(global.core.info).toHaveBeenCalledWith(expect.stringContaining("Using agent-provided base branch override: release/1.0")); }); From 48f5aa207dfa20d9d2ffcc17a0bc8467cf6f006e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Apr 2026 22:14:30 +0000 Subject: [PATCH 8/8] chore: sanitize base override values in logs Agent-Logs-Url: https://github.com/github/gh-aw/sessions/c3ab854b-7c14-4fee-9ac9-dce311ccf04d Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- actions/setup/js/create_pull_request.cjs | 5 +++-- actions/setup/js/create_pull_request.test.cjs | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/actions/setup/js/create_pull_request.cjs b/actions/setup/js/create_pull_request.cjs index 778a191c4f1..1e505b9d450 100644 --- a/actions/setup/js/create_pull_request.cjs +++ b/actions/setup/js/create_pull_request.cjs @@ -522,15 +522,16 @@ async function main(config = {}) { error: `Invalid base branch override: contains invalid characters (original: "${requestedBaseBranchRaw}", normalized: "${requestedBaseBranch}")`, }; } + const requestedBaseBranchSafeForLog = JSON.stringify(requestedBaseBranch); if (!isBaseBranchAllowed(requestedBaseBranch, allowedBaseBranches)) { - core.warning(`Rejecting base branch override '${requestedBaseBranch}': does not match allowed patterns (${Array.from(allowedBaseBranches).join(", ")})`); + core.warning(`Rejecting base branch override ${requestedBaseBranchSafeForLog}: does not match allowed patterns (${Array.from(allowedBaseBranches).join(", ")})`); return { success: false, error: `Base branch override '${requestedBaseBranch}' is not allowed. Allowed patterns: ${Array.from(allowedBaseBranches).join(", ")}`, }; } - core.info(`Base branch override accepted: ${requestedBaseBranch}`); + core.info(`Base branch override accepted: ${requestedBaseBranchSafeForLog}`); baseBranch = requestedBaseBranch; core.info(`Using agent-provided base branch override: ${baseBranch}`); } diff --git a/actions/setup/js/create_pull_request.test.cjs b/actions/setup/js/create_pull_request.test.cjs index 6087b0d2841..54e9f634b95 100644 --- a/actions/setup/js/create_pull_request.test.cjs +++ b/actions/setup/js/create_pull_request.test.cjs @@ -1315,7 +1315,7 @@ describe("create_pull_request - base branch override policy", () => { expect(result.success).toBe(true); expect(global.github.rest.pulls.create).toHaveBeenCalledWith(expect.objectContaining({ base: "release/1.0" })); expect(global.core.info).toHaveBeenCalledWith(expect.stringContaining('Base branch override requested: "release/1.0"')); - expect(global.core.info).toHaveBeenCalledWith(expect.stringContaining("Base branch override accepted: release/1.0")); + expect(global.core.info).toHaveBeenCalledWith(expect.stringContaining('Base branch override accepted: "release/1.0"')); expect(global.core.info).toHaveBeenCalledWith(expect.stringContaining("Using agent-provided base branch override: release/1.0")); });