Skip to content

Conversation

@catalinradoiu
Copy link
Contributor

@catalinradoiu catalinradoiu commented Dec 3, 2025

Asana Task/Github Issue: https://app.asana.com/1/137249556945/project/1211724162604201/task/1211982480566593?focus=true

Description

Create Github workflow to automate creating an Asana task when adding a new Android feature flag. The workflow will be triggered automatically then a PR with a new feature flag is merged and will create an Asana task, assigned to the PR author, for clearing the feature flag.

Feature change process:

  • I have added a schema to validate this feature change.
  • I have tested this change locally in all supported browsers.
  • This code for the config change is ready to merge.
  • This feature was covered by a tech design.

Site breakage mitigation process:

Brief explanation

  • Reported URL:
  • Problems experienced:
  • Platforms affected:
    • iOS
    • Android
    • Windows
    • MacOS
    • Extensions
  • Tracker(s) being unblocked:
  • Feature being disabled/modified:
  • This change is a speculative mitigation to fix reported breakage.

Note

Adds a GitHub Actions workflow that creates Asana cleanup tasks when new Android feature flags are introduced, updates CODEOWNERS, and introduces a new androidBrowserConfig.features.test flag.

  • CI / GitHub Actions:
    • Add /.github/workflows/feature-flag-cleanup-tracker.yml to detect new flags in overrides/android-override.json by diffing base/head, then create Asana tasks (auto on PRs touching the file or via workflow_dispatch; assigns to PR author).
  • Android config:
    • Add androidBrowserConfig.features.test (state: enabled, minSupportedVersion: 52590000) in overrides/android-override.json.
  • Repo metadata:
    • Update CODEOWNERS to include .github/workflows/feature-flag-cleanup-tracker.yml owned by @duckduckgo/config-aor and @duckduckgo/android-devs.

Written by Cursor Bugbot for commit 71b7e60. This will update automatically on new commits. Configure here.

@catalinradoiu catalinradoiu requested review from a team as code owners December 3, 2025 14:14
github-actions bot pushed a commit that referenced this pull request Dec 3, 2025
github-actions bot pushed a commit that referenced this pull request Dec 3, 2025
@github-actions
Copy link

github-actions bot commented Dec 3, 2025

👋 Don't forget to add an individual reviewer (in addition to those auto-added), as this will create a task for them in Asana.

👉 Please mark this as DRAFT unless there's an intention to merge this immediately.
👉 Click "Merge when ready" if you're happy for this to be automatically merged once reviewed. (If not available, ensure you've signed in to DuckDuckGo oauth.)
👉 Don't forget to add schema changes to validate if you're adding/changing a feature.

@github-actions
Copy link

github-actions bot commented Dec 3, 2025

Generated file outputs:

Time updated: Tue, 09 Dec 2025 11:40:40 GMT

legacy
27 files identical
  • trackers-unprotected-temporary.txt
  • v3/extension-brave-config.json
  • v3/extension-bravemv3-config.json
  • v3/extension-chrome-config.json
  • v3/extension-chromemv3-config.json
  • v3/extension-config.json
  • v3/extension-edg-config.json
  • v3/extension-edge-config.json
  • v3/extension-edgmv3-config.json
  • v3/extension-firefox-config.json
  • v3/extension-safarimv3-config.json
  • v3/ios-config.json
  • v3/macos-config.json
  • v3/windows-config.json
  • v4/extension-brave-config.json
  • v4/extension-bravemv3-config.json
  • v4/extension-chrome-config.json
  • v4/extension-chromemv3-config.json
  • v4/extension-config.json
  • v4/extension-edg-config.json
  • v4/extension-edge-config.json
  • v4/extension-edgmv3-config.json
  • v4/extension-firefox-config.json
  • v4/extension-safarimv3-config.json
  • v4/ios-config.json
  • v4/macos-config.json
  • v4/windows-config.json

⚠️ File is identical

2 files changed
  • v3/android-config.json
  • v4/android-config.json
--- v4/android-config.json (and 1 other files)
+++ v4/android-config.json
@@ -457,8 +457,12 @@
                 },
                 "newCustomTab": {
                     "state": "enabled",
                     "minSupportedVersion": 52590000
+                },
+                "test": {
+                    "state": "enabled",
+                    "minSupportedVersion": 52590000
                 }
             }
         },
         "androidNewStateKillSwitch": {
latest
v5/android-config.json
--- v5/android-config.json
+++ v5/android-config.json
@@ -457,8 +457,12 @@
                 },
                 "newCustomTab": {
                     "state": "enabled",
                     "minSupportedVersion": 52590000
+                },
+                "test": {
+                    "state": "enabled",
+                    "minSupportedVersion": 52590000
                 }
             }
         },
         "androidNewStateKillSwitch": {
13 files identical
  • v5/extension-brave-config.json
  • v5/extension-bravemv3-config.json
  • v5/extension-chrome-config.json
  • v5/extension-chromemv3-config.json
  • v5/extension-config.json
  • v5/extension-edg-config.json
  • v5/extension-edge-config.json
  • v5/extension-edgmv3-config.json
  • v5/extension-firefox-config.json
  • v5/extension-safarimv3-config.json
  • v5/ios-config.json
  • v5/macos-config.json
  • v5/windows-config.json

⚠️ File is identical

@github-actions
Copy link

github-actions bot commented Dec 3, 2025

JSON approval analysis:

Time updated: Tue, 09 Dec 2025 11:40:45 GMT

legacy

❌ Manual Review Required

  • v3/android-config.json (1 total changes)
    Disallowed paths that require review:
    • /features/androidBrowserConfig/features/test (add)
  • v4/android-config.json (1 total changes)
    Disallowed paths that require review:
    • /features/androidBrowserConfig/features/test (add)
latest

❌ Manual Review Required

  • v5/android-config.json (1 total changes)
    Disallowed paths that require review:
    • /features/androidBrowserConfig/features/test (add)

🎯 OVERALL APPROVAL STATUS

❌ MANUAL REVIEW REQUIRED


on:
pull_request:
types: [opened, synchronize]
Copy link

Choose a reason for hiding this comment

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

Bug: Workflow triggers on PR open, not merge

The feature flag cleanup workflow triggers on pull_request opened and synchronize events. This creates Asana tasks when a PR is opened or updated, instead of only after it's merged as intended. This can lead to premature or unnecessary cleanup tasks for unmerged PRs.

Fix in Cursor Fix in Web

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This will be changed after testing, for now I want to test that it works as expected, then I will update it and trigger this workflow only when the PR is merged

anikiki
anikiki previously approved these changes Dec 3, 2025
Copy link
Contributor

@anikiki anikiki left a comment

Choose a reason for hiding this comment

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

We can merge this to test and update later 👍

github-actions bot pushed a commit that referenced this pull request Dec 3, 2025
github-actions bot pushed a commit that referenced this pull request Dec 3, 2025
github-actions bot pushed a commit that referenced this pull request Dec 3, 2025
github-actions bot pushed a commit that referenced this pull request Dec 3, 2025
github-actions bot pushed a commit that referenced this pull request Dec 3, 2025
github-actions bot pushed a commit that referenced this pull request Dec 3, 2025
id: get-author-asana-id
with:
github-pat: ${{ secrets.GH_RO_PAT }}
action: 'get-asana-user-id'
Copy link

Choose a reason for hiding this comment

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

Bug: Asana user lookup runs without conditional check

The "Get PR author Asana ID" step runs unconditionally regardless of whether new feature flags were detected. It lacks the if: steps.detect_flags.outputs.has_new_flags == 'true' condition that the subsequent "Prepare Asana task content" step has. This causes unnecessary API calls to fetch Asana user IDs even when there are no new flags and no task will be created.


Please tell me if this was useful or not with a 👍 or 👎.

Fix in Cursor Fix in Web

id: get-author-asana-id
with:
github-pat: ${{ secrets.GH_RO_PAT }}
action: 'get-asana-user-id'
Copy link

Choose a reason for hiding this comment

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

Bug: PR author not passed for workflow_dispatch Asana lookup

When triggered via workflow_dispatch, the get-asana-user-id action has no way to determine which GitHub user to look up. The author field is fetched from the PR at line 34 but is never output to $GITHUB_OUTPUT or passed to the Asana action. The action likely relies on github.event.pull_request.user context which doesn't exist for workflow_dispatch events. This will cause the task assignment to fail or assign to the wrong user when the workflow is manually triggered.


Please tell me if this was useful or not with a 👍 or 👎.

Additional Locations (1)

Fix in Cursor Fix in Web

done
fi
fi
done
Copy link

Choose a reason for hiding this comment

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

Bug: Sub-features of new top-level features not detected

The sub-feature detection loop iterates over BASE_FEATURES only, meaning it only checks for new sub-features within features that already existed before the PR. If someone adds a brand new top-level feature that contains sub-features, those nested sub-features won't be individually tracked in the Asana task - only the parent feature name will be listed. This could result in incomplete cleanup tracking when complex feature hierarchies are added.


Please tell me if this was useful or not with a 👍 or 👎.

Fix in Cursor Fix in Web

github-actions bot pushed a commit that referenced this pull request Dec 3, 2025
id: get-author-asana-id
with:
github-pat: ${{ secrets.GH_RO_PAT }}
github-username: 'catalinradoiu'
Copy link

Choose a reason for hiding this comment

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

Bug: Hardcoded username prevents dynamic PR author assignment

The github-username is hardcoded to 'catalinradoiu' instead of dynamically retrieving the actual PR author. This causes all Asana tasks to be assigned to the same user regardless of who authored the PR. The workflow should use ${{ github.event.pull_request.author.login }} (for pull_request events) or extract the author from the PR data (for workflow_dispatch).


Please tell me if this was useful or not with a 👍 or 👎.

Fix in Cursor Fix in Web

github-actions bot pushed a commit that referenced this pull request Dec 3, 2025
github-actions bot pushed a commit that referenced this pull request Dec 3, 2025

- name: Debug Asana User ID
run: |
echo "Asana User ID: ${{ steps.get-author-asana-id.outputs.asanaUserId }}"
Copy link

Choose a reason for hiding this comment

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

Bug: Debug step exposes internal data in workflow logs

The "Debug Asana User ID" step echoes the Asana user ID to the workflow logs. This appears to be temporary debugging code that was left in during development. While the Asana user ID itself may not be sensitive, leaving debug statements in production workflows is not ideal practice.


Please tell me if this was useful or not with a 👍 or 👎.

Fix in Cursor Fix in Web

github-actions bot pushed a commit that referenced this pull request Dec 4, 2025
github-actions bot pushed a commit that referenced this pull request Dec 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants