Skip to content

fix: GSC submit_sitemap — scope and Content-Length bugs#656

Merged
chubes4 merged 1 commit intomainfrom
fix/gsc-submit-sitemap-scope
Mar 7, 2026
Merged

fix: GSC submit_sitemap — scope and Content-Length bugs#656
chubes4 merged 1 commit intomainfrom
fix/gsc-submit-sitemap-scope

Conversation

@chubes4
Copy link
Member

@chubes4 chubes4 commented Mar 6, 2026

Summary

Fixes two bugs that prevented the submit_sitemap action from working in the Google Search Console ability:

  • OAuth scope too restrictive — The JWT was requesting webmasters.readonly, which blocks write operations (HTTP 403 "insufficient authentication scopes"). Changed to webmasters (read-write), which is a superset that still covers all existing read operations.
  • Missing Content-Length header — The PUT request sent an empty body ('') without a Content-Length: 0 header, causing the GSC API to return HTTP 411 "Length Required". Added the header.

Also deleted the cached datamachine_gsc_access_token transient on the live site so the next request will fetch a new token with the correct scope.

Changes

inc/Abilities/Analytics/GoogleSearchConsoleAbilities.php:

  • Line 609: webmasters.readonlywebmasters
  • Line 557-560: Added 'Content-Length' => '0' to the PUT request headers

…ontent-Length header

Two bugs prevented submit_sitemap from working:

1. OAuth scope was webmasters.readonly which blocks write operations
   with HTTP 403. Changed to webmasters (read-write), which still
   covers all existing read operations.

2. The PUT request sent an empty body without a Content-Length: 0
   header, causing the GSC API to return HTTP 411 Length Required.
   Added the missing header.
@github-actions
Copy link

github-actions bot commented Mar 6, 2026

Homeboy Results — data-machine

Build

Tooling versions

  • Homeboy CLI: homeboy 0.66.0
  • Extension: wordpress from https://github.com/Extra-Chill/homeboy-extensions
  • Extension revision: unknown
  • Action: Extra-Chill/homeboy-action@v1

⚡ PR test scope resolved to changed

lint (changed files only)

  • PHPCS: LINT SUMMARY: 0 errors, 1 warnings
  • Fixable: 0 | Files with issues: 1 of 1
  • PHPStan: PHPSTAN SUMMARY: 133 errors at level 5

test

Audit

Failure Digest

Tooling versions

  • Homeboy CLI: homeboy 0.66.0
  • Extension: wordpress from https://github.com/Extra-Chill/homeboy-extensions
  • Extension revision: unknown
  • Action: Extra-Chill/homeboy-action@v1

Audit Failure Digest

  • Alignment score: 0.695
  • Severity counts: unknown: 71, warning: 3
  • Outliers in current run: 71
  • Parsed outlier entries: 71
  • Drift increased: no
  • Top actionable findings:
    1. inc/Abilities/Analytics/GoogleSearchConsoleAbilities.php — duplicate_function — Duplicate function __construct — also in inc/Abilities/AgentMemoryAbilities.php, inc/Abilities/Analytics/BingWebmasterAbilities.php, inc/Abilities/Analytics/GoogleAnalyticsAbilities.php, inc/Abilities/Analytics/PageSpeedAbilities.php, inc/Abilities/DailyMemoryAbilities.php, inc/Abilities/Fetch/FetchFilesAbility.php, inc/Abilities/Fetch/FetchRssAbility.php, inc/Abilities/Fetch/FetchWordPressApiAbility.php, inc/Abilities/Fetch/FetchWordPressMediaAbility.php, inc/Abilities/Fetch/GetWordPressPostAbility.php, inc/Abilities/Fetch/GitHubAbilities.php, inc/Abilities/Fetch/QueryWordPressPostsAbility.php, inc/Abilities/HandlerAbilities.php, inc/Abilities/InternalLinkingAbilities.php, inc/Abilities/LogAbilities.php, inc/Abilities/Media/ImageGenerationAbilities.php, inc/Abilities/Media/ImageTemplateAbilities.php, inc/Abilities/SEO/MetaDescriptionAbilities.php, inc/Abilities/SettingsAbilities.php, inc/Abilities/StepTypeAbilities.php, inc/Abilities/WorkspaceAbilities.php
    2. inc/Abilities/Analytics/GoogleSearchConsoleAbilities.php — duplicate_function — Duplicate function base64url_encode — also in inc/Abilities/Analytics/GoogleAnalyticsAbilities.php
    3. inc/Abilities/Analytics/GoogleSearchConsoleAbilities.php — duplicate_function — Duplicate function get_config — also in inc/Abilities/Analytics/BingWebmasterAbilities.php, inc/Abilities/Analytics/GoogleAnalyticsAbilities.php, inc/Abilities/Analytics/PageSpeedAbilities.php, inc/Abilities/Media/ImageGenerationAbilities.php, inc/Engine/AI/Tools/Global/AmazonAffiliateLink.php
    4. inc/Abilities/AgentPingAbilities.php — outlier — (outlier)
    5. inc/Abilities/EngineAbilities.php — outlier — (outlier)
All parsed audit findings (74)
1. **inc/Abilities/Analytics/GoogleSearchConsoleAbilities.php** — duplicate_function — Duplicate function `__construct` — also in inc/Abilities/AgentMemoryAbilities.php, inc/Abilities/Analytics/BingWebmasterAbilities.php, inc/Abilities/Analytics/GoogleAnalyticsAbilities.php, inc/Abilities/Analytics/PageSpeedAbilities.php, inc/Abilities/DailyMemoryAbilities.php, inc/Abilities/Fetch/FetchFilesAbility.php, inc/Abilities/Fetch/FetchRssAbility.php, inc/Abilities/Fetch/FetchWordPressApiAbility.php, inc/Abilities/Fetch/FetchWordPressMediaAbility.php, inc/Abilities/Fetch/GetWordPressPostAbility.php, inc/Abilities/Fetch/GitHubAbilities.php, inc/Abilities/Fetch/QueryWordPressPostsAbility.php, inc/Abilities/HandlerAbilities.php, inc/Abilities/InternalLinkingAbilities.php, inc/Abilities/LogAbilities.php, inc/Abilities/Media/ImageGenerationAbilities.php, inc/Abilities/Media/ImageTemplateAbilities.php, inc/Abilities/SEO/MetaDescriptionAbilities.php, inc/Abilities/SettingsAbilities.php, inc/Abilities/StepTypeAbilities.php, inc/Abilities/WorkspaceAbilities.php
2. **inc/Abilities/Analytics/GoogleSearchConsoleAbilities.php** — duplicate_function — Duplicate function `base64url_encode` — also in inc/Abilities/Analytics/GoogleAnalyticsAbilities.php
3. **inc/Abilities/Analytics/GoogleSearchConsoleAbilities.php** — duplicate_function — Duplicate function `get_config` — also in inc/Abilities/Analytics/BingWebmasterAbilities.php, inc/Abilities/Analytics/GoogleAnalyticsAbilities.php, inc/Abilities/Analytics/PageSpeedAbilities.php, inc/Abilities/Media/ImageGenerationAbilities.php, inc/Engine/AI/Tools/Global/AmazonAffiliateLink.php
4. **inc/Abilities/AgentPingAbilities.php** — outlier — (outlier)
5. **inc/Abilities/EngineAbilities.php** — outlier — (outlier)
6. **inc/Abilities/ChatAbilities.php** — outlier — (outlier)
7. **inc/Abilities/JobAbilities.php** — outlier — (outlier)
8. **inc/Abilities/PermissionHelper.php** — outlier — (outlier)
9. **inc/Abilities/PipelineAbilities.php** — outlier — (outlier)
10. **inc/Abilities/FlowStepAbilities.php** — outlier — (outlier)
11. **inc/Abilities/FlowAbilities.php** — outlier — (outlier)
12. **inc/Abilities/TaxonomyAbilities.php** — outlier — (outlier)
13. **tests/Unit/Abilities/SystemAbilitiesTest.php** — outlier — (outlier)
14. **tests/Unit/Abilities/PermissionHelperTest.php** — outlier — (outlier)
15. **tests/Unit/Abilities/ImageGenerationPromptRefinementTest.php** — outlier — (outlier)
16. **tests/Unit/Abilities/ImageGenerationAbilitiesTest.php** — outlier — (outlier)
17. **tests/Unit/Abilities/HandlerAbilitiesTest.php** — outlier — (outlier)
18. **tests/Unit/Abilities/MultiAgentScopingTest.php** — outlier — (outlier)
19. **tests/Unit/Abilities/AllAbilitiesRegisteredTest.php** — outlier — (outlier)
20. **tests/Unit/Abilities/LogAbilitiesTest.php** — outlier — (outlier)
21. **inc/Abilities/Analytics/PageSpeedAbilities.php** — outlier — (outlier)
22. **inc/Api/StepTypes.php** — outlier — (outlier)
23. **inc/Api/Handlers.php** — outlier — (outlier)
24. **inc/Api/Tools.php** — outlier — (outlier)
25. **inc/Api/Execute.php** — outlier — (outlier)
26. **inc/Api/Providers.php** — outlier — (outlier)
27. **inc/Api/AgentPing.php** — outlier — (outlier)
28. **inc/Api/WebhookTrigger.php** — outlier — (outlier)
29. **inc/Api/Users.php** — outlier — (outlier)
30. **inc/Abilities/Chat/ChatSessionHelpers.php** — outlier — (outlier)
31. **tests/Unit/Cli/UserResolverTest.php** — outlier — (outlier)
32. **inc/Abilities/Content/BlockSanitizer.php** — outlier — (outlier)
33. **inc/Abilities/Engine/EngineHelpers.php** — outlier — (outlier)
34. **inc/Abilities/Engine/PipelineBatchScheduler.php** — outlier — (outlier)
35. **inc/Core/FilesRepository/DirectoryManager.php** — outlier — (outlier)
36. **inc/Core/FilesRepository/ImageValidator.php** — outlier — (outlier)
37. **inc/Core/FilesRepository/FilesystemHelper.php** — outlier — (outlier)
38. **inc/Core/FilesRepository/WorkspaceWriter.php** — outlier — (outlier)
39. **inc/Core/FilesRepository/DailyMemory.php** — outlier — (outlier)
40. **inc/Core/FilesRepository/AgentMemory.php** — outlier — (outlier)
41. **inc/Core/FilesRepository/WorkspaceReader.php** — outlier — (outlier)
42. **inc/Abilities/Flow/WebhookTriggerAbility.php** — outlier — (outlier)
43. **inc/Abilities/Flow/FlowHelpers.php** — outlier — (outlier)
44. **inc/Abilities/Flow/QueueAbility.php** — outlier — (outlier)
45. **inc/Abilities/FlowStep/FlowStepHelpers.php** — outlier — (outlier)
46. **inc/Abilities/FlowStep/FlowStepNormalizer.php** — outlier — (outlier)
47. **inc/Cli/Commands/Flows/FlowsCommand.php** — outlier — (outlier)
48. **inc/Api/Flows/FlowScheduling.php** — outlier — (outlier)
49. **inc/Engine/Actions/Handlers/LogHandler.php** — outlier — (outlier)
50. **inc/Engine/Actions/Handlers/JobCompleteHandler.php** — outlier — (outlier)
51. **inc/Engine/Actions/Handlers/LogManageHandler.php** — outlier — (outlier)
52. **inc/Abilities/Job/JobHelpers.php** — outlier — (outlier)
53. **inc/Core/Database/Jobs/JobsOperations.php** — outlier — (outlier)
54. **inc/Core/Database/Jobs/JobsStatus.php** — outlier — (outlier)
55. **inc/Core/Database/Jobs/Jobs.php** — outlier — (outlier)
56. **inc/Core/OAuth/OAuth1Handler.php** — outlier — (outlier)
57. **inc/Core/OAuth/BaseAuthProvider.php** — outlier — (outlier)
58. **inc/Core/OAuth/OAuth2Handler.php** — outlier — (outlier)
59. **inc/Abilities/Pipeline/PipelineHelpers.php** — outlier — (outlier)
60. **inc/Abilities/Pipeline/ImportExportAbility.php** — outlier — (outlier)
61. **inc/Engine/AI/System/Tasks/GitHubIssueTask.php** — outlier — (outlier)
62. **inc/Engine/AI/System/Tasks/DailyMemoryTask.php** — outlier — (outlier)
63. **inc/Api/Chat/Tools/CreateFlow.php** — outlier — (outlier)
64. **inc/Api/Chat/Tools/SetHandlerDefaults.php** — outlier — (outlier)
65. **inc/Api/Chat/Tools/SchedulingDocumentation.php** — outlier — (outlier)
66. **inc/Api/Chat/Tools/GetProblemFlows.php** — outlier — (outlier)
67. **inc/Api/Chat/Tools/HandlerDocumentation.php** — outlier — (outlier)
68. **inc/Api/Chat/Tools/MergeTaxonomyTerms.php** — outlier — (outlier)
69. **inc/Api/Chat/Tools/AddPipelineStep.php** — outlier — (outlier)
70. **inc/Api/Chat/Tools/CreatePipeline.php** — outlier — (outlier)
71. **inc/Api/Chat/Tools/CreateTaxonomyTerm.php** — outlier — (outlier)
72. **inc/Api/Chat/Tools/AssignTaxonomyTerm.php** — outlier — (outlier)
73. **inc/Api/Chat/Tools/SearchTaxonomyTerms.php** — outlier — (outlier)
74. **inc/Api/Chat/Tools/UpdateTaxonomyTerm.php** — outlier — (outlier)
Raw audit failure excerpt
    ],
    "findings": [
      {
        "convention": "duplication",
        "description": "Duplicate function `__construct` — also in inc/Abilities/AgentMemoryAbilities.php, inc/Abilities/Analytics/BingWebmasterAbilities.php, inc/Abilities/Analytics/GoogleAnalyticsAbilities.php, inc/Abilities/Analytics/PageSpeedAbilities.php, inc/Abilities/DailyMemoryAbilities.php, inc/Abilities/Fetch/FetchFilesAbility.php, inc/Abilities/Fetch/FetchRssAbility.php, inc/Abilities/Fetch/FetchWordPressApiAbility.php, inc/Abilities/Fetch/FetchWordPressMediaAbility.php, inc/Abilities/Fetch/GetWordPressPostAbility.php, inc/Abilities/Fetch/GitHubAbilities.php, inc/Abilities/Fetch/QueryWordPressPostsAbility.php, inc/Abilities/HandlerAbilities.php, inc/Abilities/InternalLinkingAbilities.php, inc/Abilities/LogAbilities.php, inc/Abilities/Media/ImageGenerationAbilities.php, inc/Abilities/Media/ImageTemplateAbilities.php, inc/Abilities/SEO/MetaDescriptionAbilities.php, inc/Abilities/SettingsAbilities.php, inc/Abilities/StepTypeAbilities.php, inc/Abilities/WorkspaceAbilities.php",
        "file": "inc/Abilities/Analytics/GoogleSearchConsoleAbilities.php",
        "kind": "duplicate_function",
        "severity": "warning",
        "suggestion": "Function `__construct` has identical body in 22 files. Extract to a shared module and import it."
      },
      {
        "convention": "duplication",
        "description": "Duplicate function `base64url_encode` — also in inc/Abilities/Analytics/GoogleAnalyticsAbilities.php",
        "file": "inc/Abilities/Analytics/GoogleSearchConsoleAbilities.php",
        "kind": "duplicate_function",
        "severity": "warning",
        "suggestion": "Function `base64url_encode` has identical body in 2 files. Extract to a shared module and import it."
      },
      {
        "convention": "duplication",
        "description": "Duplicate function `get_config` — also in inc/Abilities/Analytics/BingWebmasterAbilities.php, inc/Abilities/Analytics/GoogleAnalyticsAbilities.php, inc/Abilities/Analytics/PageSpeedAbilities.php, inc/Abilities/Media/ImageGenerationAbilities.php, inc/Engine/AI/Tools/Global/AmazonAffiliateLink.php",
        "file": "inc/Abilities/Analytics/GoogleSearchConsoleAbilities.php",
        "kind": "duplicate_function",
        "severity": "warning",
        "suggestion": "Function `get_config` has identical body in 6 files. Extract to a shared module and import it."
      }
    ],
    "source_path": "/home/runner/work/data-machine/data-machine",
    "summary": {
      "alignment_score": 0.6952789425849915,
      "conventions_detected": 31,
      "files_scanned": 504,
- Full audit log: https://github.com/Extra-Chill/data-machine/actions/runs/22769185265

Autofixability classification

  • Overall: human_needed
  • Autofix enabled: no
  • Autofix attempted this run: no
  • Human-needed failed commands:
    • audit
  • Potentially auto-fixable failed commands (if autofix enabled):
    • audit
  • Autofix is currently disabled. Commands with autofix support in this run: audit

Machine-readable artifacts

  • homeboy-test-failures.json
  • homeboy-audit-summary.json
  • homeboy-autofixability.json

ℹ️ PR test scope resolved to full for compatibility with installed Homeboy CLI

audit (changed files only)

  • Actionable audit summary:
  • Alignment score: 0.695
  • Severity counts: unknown: 71, warning: 3
  • Drift increased: no
  • Outliers in current run: 71
  • Top actionable findings:
    1. inc/Abilities/Analytics/GoogleSearchConsoleAbilities.php — duplicate_function — Duplicate function __construct — also in inc/Abilities/AgentMemoryAbilities.php, inc/Abilities/Analytics/BingWebmasterAbilities.php, inc/Abilities/Analytics/GoogleAnalyticsAbilities.php, inc/Abilities/Analytics/PageSpeedAbilities.php, inc/Abilities/DailyMemoryAbilities.php, inc/Abilities/Fetch/FetchFilesAbility.php, inc/Abilities/Fetch/FetchRssAbility.php, inc/Abilities/Fetch/FetchWordPressApiAbility.php, inc/Abilities/Fetch/FetchWordPressMediaAbility.php, inc/Abilities/Fetch/GetWordPressPostAbility.php, inc/Abilities/Fetch/GitHubAbilities.php, inc/Abilities/Fetch/QueryWordPressPostsAbility.php, inc/Abilities/HandlerAbilities.php, inc/Abilities/InternalLinkingAbilities.php, inc/Abilities/LogAbilities.php, inc/Abilities/Media/ImageGenerationAbilities.php, inc/Abilities/Media/ImageTemplateAbilities.php, inc/Abilities/SEO/MetaDescriptionAbilities.php, inc/Abilities/SettingsAbilities.php, inc/Abilities/StepTypeAbilities.php, inc/Abilities/WorkspaceAbilities.php
    2. inc/Abilities/Analytics/GoogleSearchConsoleAbilities.php — duplicate_function — Duplicate function base64url_encode — also in inc/Abilities/Analytics/GoogleAnalyticsAbilities.php
    3. inc/Abilities/Analytics/GoogleSearchConsoleAbilities.php — duplicate_function — Duplicate function get_config — also in inc/Abilities/Analytics/BingWebmasterAbilities.php, inc/Abilities/Analytics/GoogleAnalyticsAbilities.php, inc/Abilities/Analytics/PageSpeedAbilities.php, inc/Abilities/Media/ImageGenerationAbilities.php, inc/Engine/AI/Tools/Global/AmazonAffiliateLink.php
    4. inc/Abilities/AgentPingAbilities.php — outlier — (outlier)
    5. inc/Abilities/EngineAbilities.php — outlier — (outlier)

Homeboy Action v1

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Homeboy Failure Digest

Failure Digest

Tooling versions

  • Homeboy CLI: homeboy 0.58.1
  • Extension: wordpress from https://github.com/Extra-Chill/homeboy-extensions
  • Extension revision: unknown
  • Action: Extra-Chill/homeboy-action@v1

Autofixability classification

  • Overall: none
  • Autofix enabled: no
  • Autofix attempted this run: no
  • No failed commands to classify.
  • Autofix is currently disabled. Commands with autofix support in this run: audit

Machine-readable artifacts

  • homeboy-test-failures.json
  • homeboy-audit-summary.json
  • homeboy-autofixability.json

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Homeboy Failure Digest

Failure Digest

Tooling versions

  • Homeboy CLI: homeboy 0.58.1
  • Extension: wordpress from https://github.com/Extra-Chill/homeboy-extensions
  • Extension revision: unknown
  • Action: Extra-Chill/homeboy-action@v1

Autofixability classification

  • Overall: none
  • Autofix enabled: no
  • Autofix attempted this run: no
  • No failed commands to classify.
  • Autofix is currently disabled. Commands with autofix support in this run: lint, test

Machine-readable artifacts

  • homeboy-test-failures.json
  • homeboy-audit-summary.json
  • homeboy-autofixability.json

@chubes4 chubes4 merged commit 1b69e42 into main Mar 7, 2026
1 of 4 checks passed
@chubes4 chubes4 deleted the fix/gsc-submit-sitemap-scope branch March 7, 2026 16:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant