René's URL Explorer Experiment


Title: Refactor offline bits out of `Features` class and use for CCR by mbg · Pull Request #3477 · github/codeql-action · GitHub

Open Graph Title: Refactor offline bits out of `Features` class and use for CCR by mbg · Pull Request #3477 · github/codeql-action

X Title: Refactor offline bits out of `Features` class and use for CCR by mbg · Pull Request #3477 · github/codeql-action

Description: This PR accomplishes two things: A refactoring of Features into OfflineFeatures and Features: OfflineFeatures implements the FeatureEnablement interface and handles all feature checking that does not involve the GitHub API. Features extends OfflineFeatures and combines the logic from OfflineFeatures with a GitHubFeatureFlags instance to query the GitHub API. Abstracting over the concrete FeatureEnablement implementation with initFeatures: OfflineFeatures and Features are no longer exported and instead initFeatures must be used. By default, initFeatures instantiates a Features instance. For GHES and CCR, it instantiates an OfflineFeatures instance instead. Risk assessment For internal use only. Please select the risk level of this change: High risk: Changes are not fully under feature flags, have limited visibility and/or cannot be tested outside of production. Which use cases does this change impact? Workflow types: Advanced setup - Impacts users who have custom CodeQL workflows. Managed - Impacts users with dynamic workflows (Default Setup, CCR, ...). Products: Code Scanning - The changes impact analyses when analysis-kinds: code-scanning. Code Quality - The changes impact analyses when analysis-kinds: code-quality. CCR - The changes impact analyses for Copilot Code Reviews. Third-party analyses - The changes affect the upload-sarif action. Environments: Dotcom - Impacts CodeQL workflows on github.com and/or GitHub Enterprise Cloud with Data Residency. GHES How did/will you validate this change? Test repository - This change will be tested on a test repository before merging. Unit tests - I am depending on unit test coverage (i.e. tests in .test.ts files). End-to-end tests - I am depending on PR checks (i.e. tests in pr-checks). If something goes wrong after this change is released, what are the mitigation and rollback strategies? Rollback - Change can only be disabled by rolling back the release or releasing a new version with a fix. How will you know if something goes wrong after this change is released? Telemetry - I rely on existing telemetry or have made changes to the telemetry. Dashboards - I will watch relevant dashboards for issues after the release. Consider whether this requires this change to be released at a particular time rather than as part of a regular release. Alerts - New or existing monitors will trip if something goes wrong with this change. Are there any special considerations for merging or releasing this change? No special considerations - This change can be merged at any time. Merge / deployment checklist Confirm this change is backwards compatible with existing workflows. Consider adding a changelog entry for this change. Confirm the readme and docs have been updated if necessary.

Open Graph Description: This PR accomplishes two things: A refactoring of Features into OfflineFeatures and Features: OfflineFeatures implements the FeatureEnablement interface and handles all feature checking that does...

X Description: This PR accomplishes two things: A refactoring of Features into OfflineFeatures and Features: OfflineFeatures implements the FeatureEnablement interface and handles all feature checking that does...

Opengraph URL: https://github.com/github/codeql-action/pull/3477

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:73763fde-e340-d514-a362-9db37f887d27
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idD616:951F5:1F69ED3:2D8AD04:6A4D0694
html-safe-nonced8d878af30ae707eaea87c300d795e9244682309eb8174c1afb5695b2b97eb92
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJENjE2Ojk1MUY1OjFGNjlFRDM6MkQ4QUQwNDo2QTREMDY5NCIsInZpc2l0b3JfaWQiOiI0MzYzNTAxOTc0OTYxNTg3ODYwIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=
visitor-hmac42b1047b8c35b8e041c1d062b4473fdb11c249adb92c3fc3ffd277bd2825764e
hovercard-subject-tagpull_request:3277481129
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/github/codeql-action/pull/3477/files
twitter:imagehttps://avatars.githubusercontent.com/u/278086?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/278086?s=400&v=4
og:image:altThis PR accomplishes two things: A refactoring of Features into OfflineFeatures and Features: OfflineFeatures implements the FeatureEnablement interface and handles all feature checking that does...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None31e4db13a9e20081f2fac78f441659a6576e582bbb15e153f9c7fb6473aa29f5
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/github/codeql-action git https://github.com/github/codeql-action.git
octolytics-dimension-user_id9919
octolytics-dimension-user_logingithub
octolytics-dimension-repository_id259445878
octolytics-dimension-repository_nwogithub/codeql-action
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id259445878
octolytics-dimension-repository_network_root_nwogithub/codeql-action
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
releasefb70bd3c4b2bec429781b65419e912c66e2d5581
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/github/codeql-action/pull/3477/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fgithub%2Fcodeql-action%2Fpull%2F3477%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fgithub%2Fcodeql-action%2Fpull%2F3477%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=github%2Fcodeql-action
Reloadhttps://github.com/github/codeql-action/pull/3477/files
Reloadhttps://github.com/github/codeql-action/pull/3477/files
Reloadhttps://github.com/github/codeql-action/pull/3477/files
Please reload this pagehttps://github.com/github/codeql-action/pull/3477/files
github https://github.com/github
codeql-actionhttps://github.com/github/codeql-action
Notifications https://github.com/login?return_to=%2Fgithub%2Fcodeql-action
Fork 470 https://github.com/login?return_to=%2Fgithub%2Fcodeql-action
Star 1.6k https://github.com/login?return_to=%2Fgithub%2Fcodeql-action
Code https://github.com/github/codeql-action
Issues 156 https://github.com/github/codeql-action/issues
Pull requests 27 https://github.com/github/codeql-action/pulls
Actions https://github.com/github/codeql-action/actions
Models https://github.com/github/codeql-action/models
Security and quality 2 https://github.com/github/codeql-action/security
Insights https://github.com/github/codeql-action/pulse
Code https://github.com/github/codeql-action
Issues https://github.com/github/codeql-action/issues
Pull requests https://github.com/github/codeql-action/pulls
Actions https://github.com/github/codeql-action/actions
Models https://github.com/github/codeql-action/models
Security and quality https://github.com/github/codeql-action/security
Insights https://github.com/github/codeql-action/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fgithub%2Fcodeql-action%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fgithub%2Fcodeql-action%2Fissues%2Fnew%2Fchoose
mbghttps://github.com/mbg
mainhttps://github.com/github/codeql-action/tree/main
mbg/features/offline-featureshttps://github.com/github/codeql-action/tree/mbg/features/offline-features
Conversation 9 https://github.com/github/codeql-action/pull/3477
Findings https://github.com/github/codeql-action/pull/3477/findings
Commits 15 https://github.com/github/codeql-action/pull/3477/commits
Checks 253 https://github.com/github/codeql-action/pull/3477/checks
Files changed https://github.com/github/codeql-action/pull/3477/files
Please reload this pagehttps://github.com/github/codeql-action/pull/3477/files
Refactor offline bits out of Features class and use for CCR https://github.com/github/codeql-action/pull/3477/files#top
Show all changes 15 commits https://github.com/github/codeql-action/pull/3477/files
ea1a400 Revert "Merge pull request #3476 from github/henrymercer/retry-auth-e… mbg Feb 15, 2026 https://github.com/github/codeql-action/pull/3477/commits/ea1a400e13809854fb5b93c8aa90b4a7da87b788
5283c3b Move `getDefaultCliVersion` out of `GitHubFeatureFlags` mbg Feb 12, 2026 https://github.com/github/codeql-action/pull/3477/commits/5283c3ba5a235eaef87458fb9c44576f6ddf65f8
368f322 Add `OfflineFeatures` class mbg Feb 12, 2026 https://github.com/github/codeql-action/pull/3477/commits/368f322a0919b4d86ca94485b654131d3bd32cf9
2c9bc45 Abstract over `FeatureEnablement` implementations with `initFeatures` mbg Feb 12, 2026 https://github.com/github/codeql-action/pull/3477/commits/2c9bc45d4654f21e39a4b0ea16bdd4f667749c93
9dcfdf2 Return `OfflineFeatures` for CCR mbg Feb 12, 2026 https://github.com/github/codeql-action/pull/3477/commits/9dcfdf2c9c3c11ebc9cae441f0002aea80350e9f
ee8360d Move FF test utils out of main file mbg Feb 12, 2026 https://github.com/github/codeql-action/pull/3477/commits/ee8360df595193d273b2137710d0962b5a5a9447
377300b Add `mockCCR` helper to `testing-utils` mbg Feb 12, 2026 https://github.com/github/codeql-action/pull/3477/commits/377300bcda1ad44012e0b0799b3ccc68652da4dc
bc76cea Add test to check that OfflineFeatures doesn't use the API client mbg Feb 12, 2026 https://github.com/github/codeql-action/pull/3477/commits/bc76ceafafa5c2d0ae4d01fe72514904a2467842
0874cf9 Change FFs not supported log message mbg Feb 15, 2026 https://github.com/github/codeql-action/pull/3477/commits/0874cf9f8b8d56bb4ba51c0c84179400003a27bd
60dee3d Log when using `OfflineFeatures` for CCR mbg Feb 15, 2026 https://github.com/github/codeql-action/pull/3477/commits/60dee3dbd320faa4ae279d3039f3b7121a412982
7af50a4 Restore test improvements from previous PR mbg Feb 15, 2026 https://github.com/github/codeql-action/pull/3477/commits/7af50a43c1e6c04a1713406a47d0a3aa83465654
db834c9 Use `OfflineFeatures` when `!supportsFeatureFlags` as well mbg Feb 15, 2026 https://github.com/github/codeql-action/pull/3477/commits/db834c9e1daefd2c4ad756dcc3f454c7c42660cc
ab25800 Merge remote-tracking branch 'origin/main' into mbg/features/offline-… mbg Feb 17, 2026 https://github.com/github/codeql-action/pull/3477/commits/ab2580041c19e8f45c05028386b55a552e02d19a
b927a69 Merge remote-tracking branch 'origin/main' into mbg/features/offline-… mbg Feb 17, 2026 https://github.com/github/codeql-action/pull/3477/commits/b927a69f96a3c1513e9f6d70a4123a3bbbc6541d
09bd46d Fix typos in comments mbg Feb 17, 2026 https://github.com/github/codeql-action/pull/3477/commits/09bd46dda582965e35f7cf2e7eada380cb45939b
Clear filters https://github.com/github/codeql-action/pull/3477/files
Please reload this pagehttps://github.com/github/codeql-action/pull/3477/files
Please reload this pagehttps://github.com/github/codeql-action/pull/3477/files
analyze-action.js https://github.com/github/codeql-action/pull/3477/files#diff-4926d6bcb92a4de805ceb8d280f31c24cffa2445b3a36cc658e5032a0910ed15
autobuild-action.js https://github.com/github/codeql-action/pull/3477/files#diff-850bbbd46e929f29c34c186fb38aebfc228803ab6191e6a668027042620c4f30
init-action-post.js https://github.com/github/codeql-action/pull/3477/files#diff-08750c194e36e3925a63362bbc1a7207690bd44add665b7c357e9d8b1861a4e6
init-action.js https://github.com/github/codeql-action/pull/3477/files#diff-bd9b22d62f144e71ae32a07c7c5151e30b31cd76d22303745df64c9886d81342
setup-codeql-action.js https://github.com/github/codeql-action/pull/3477/files#diff-48a1e0d5f2fd249f221a7fcf67cd08518a435c0710722fa28b51fa40703e39ea
start-proxy-action.js https://github.com/github/codeql-action/pull/3477/files#diff-9ef3265f6cc827943cc3edade4225dacb911ccb9d6891b38d0e744208d0dbe99
upload-sarif-action.js https://github.com/github/codeql-action/pull/3477/files#diff-5d3767541163ba07f1a1928ef585f505845a68d6a46a26fb68fa41e19786111b
actions-util.test.ts https://github.com/github/codeql-action/pull/3477/files#diff-a776af20f7684e62a6a0c9686d6bd1872666b510a10d33bce0e892b4bc7b48e7
analyze-action.ts https://github.com/github/codeql-action/pull/3477/files#diff-c659460f1608e167fc5bef89e07b4c7db2d8cdf80e542ec788c969a6ed987d34
autobuild.ts https://github.com/github/codeql-action/pull/3477/files#diff-e8e280e07642ac43bae0f81a751fcf1841a78a5a34db8977b4e540690d36ecf5
diff-informed-analysis-utils.test.ts https://github.com/github/codeql-action/pull/3477/files#diff-91a6dc82e562c079131b57769330bf8d07116dc612e63e2594738b8184648a3f
feature-flags.test.ts https://github.com/github/codeql-action/pull/3477/files#diff-714fb39b92cfca39c5172ce2172ccdec4da9a62d6bad13392e4209f1b6097063
feature-flags.ts https://github.com/github/codeql-action/pull/3477/files#diff-d6ca7464724b1fe6094ce0912d338e79983058d9acda8717c0469d40f1ae3dbd
offline-features.test.ts https://github.com/github/codeql-action/pull/3477/files#diff-34f7d6822e04c2266fa591fbee713d72758179549b7fe1123985660c1fcab410
testing-util.ts https://github.com/github/codeql-action/pull/3477/files#diff-7384de31b278935e99efe215627161827edb94ef7a566b2339bb65c42ffbb245
init-action-post.ts https://github.com/github/codeql-action/pull/3477/files#diff-b20d2e5b98b2b7bb62f615d46b97c30d07e8c1f12e2f263a3a323d5ecf8b5ca6
init-action.ts https://github.com/github/codeql-action/pull/3477/files#diff-87bf9e0a2a9244ba1f26eb01d404deaccbc9580479d2e2530a4ff2fd5bd91565
setup-codeql-action.ts https://github.com/github/codeql-action/pull/3477/files#diff-03d2b2bd0e1c4d4ed0fd6ddac8033710b48fb01370983c27b17b3cab5ea0a8ba
start-proxy-action.ts https://github.com/github/codeql-action/pull/3477/files#diff-cd9fa9ce5ae4ab6ca00904ff3fe18f012544499a88d8d55659b17632b8da7d8a
testing-utils.ts https://github.com/github/codeql-action/pull/3477/files#diff-b5e75f890eca9e7fbfff472427b39ce0f5628833109b50e7b2d165729bd8c124
upload-sarif-action.ts https://github.com/github/codeql-action/pull/3477/files#diff-8f3f1d0ae3f1ff6da6f40febfbdbdb1ee0a734bcd42dee83d7d5909a2b712aed
https://github.com/github/codeql-action/blob/main/CODEOWNERS#L1
lib/analyze-action.jshttps://github.com/github/codeql-action/pull/3477/files#diff-4926d6bcb92a4de805ceb8d280f31c24cffa2445b3a36cc658e5032a0910ed15
View file https://github.com/github/codeql-action/blob/09bd46dda582965e35f7cf2e7eada380cb45939b/lib/analyze-action.js
Open in desktop https://desktop.github.com
how customized files appear on GitHubhttps://docs.github.com/github/administering-a-repository/customizing-how-changed-files-appear-on-github
Please reload this pagehttps://github.com/github/codeql-action/pull/3477/files
Please reload this pagehttps://github.com/github/codeql-action/pull/3477/files
Please reload this pagehttps://github.com/github/codeql-action/pull/3477/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.