Skip to content

Scope graph queries by symbol identity (#5187) (#5205) #1420

Scope graph queries by symbol identity (#5187) (#5205)

Scope graph queries by symbol identity (#5187) (#5205) #1420

name: License Policy
on:
push:
branches:
- main
paths:
- 'LICENSE'
- 'LICENSES/**'
- 'COMMERCIAL_LICENSE.md'
- 'INTEGRATION_POLICY.md'
- 'TRADEMARKS.md'
- 'README.md'
- 'USER_GUIDE.md'
- 'DISTRIBUTION.md'
- 'docs/NUGET_README.md'
- 'src/CodeIndex/CodeIndex.csproj'
- 'src/CodeIndex/Cli/ConsoleUi.cs'
- 'install_modules/20-installer.sh'
- 'install_modules/40-uninstall.sh'
- '.github/workflows/release.yml'
- '.github/workflows/license-policy.yml'
- 'tests/CodeIndex.Tests/LicensePolicyTests.cs'
pull_request:
branches:
- main
paths:
- 'LICENSE'
- 'LICENSES/**'
- 'COMMERCIAL_LICENSE.md'
- 'INTEGRATION_POLICY.md'
- 'TRADEMARKS.md'
- 'README.md'
- 'USER_GUIDE.md'
- 'DISTRIBUTION.md'
- 'docs/NUGET_README.md'
- 'src/CodeIndex/CodeIndex.csproj'
- 'src/CodeIndex/Cli/ConsoleUi.cs'
- 'install_modules/20-installer.sh'
- 'install_modules/40-uninstall.sh'
- '.github/workflows/release.yml'
- '.github/workflows/license-policy.yml'
- 'tests/CodeIndex.Tests/LicensePolicyTests.cs'
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
permissions:
contents: read
jobs:
policy:
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Validate license and distribution policy metadata
shell: bash
run: |
set -euo pipefail
grep -F "FSL-1.1-ALv2" LICENSE >/dev/null
grep -F "Copyright 2026 Widthdom" LICENSE >/dev/null
grep -F "LICENSES/FSL-1.1-ALv2.txt" LICENSE >/dev/null
grep -F "LICENSES/Apache-2.0.txt" LICENSE >/dev/null
test -f LICENSES/FSL-1.1-ALv2.txt
test -f LICENSES/Apache-2.0.txt
test -f INTEGRATION_POLICY.md
grep -F "Functional Source License, Version 1.1, ALv2 Future License" LICENSES/FSL-1.1-ALv2.txt >/dev/null
grep -F "Apache License" LICENSES/Apache-2.0.txt >/dev/null
grep -F "Allowed Without a Separate Agreement" COMMERCIAL_LICENSE.md >/dev/null
grep -F "AI Agent, IDE, Editor, CI, and MCP Integration Policy" INTEGRATION_POLICY.md >/dev/null
grep -F "compatible with CodeIndex" TRADEMARKS.md >/dev/null
grep -F "License-FSL--1.1--ALv2-orange" README.md >/dev/null
grep -F "source-available / Fair Source-style" README.md >/dev/null
grep -F "<PackageLicenseFile>LICENSE</PackageLicenseFile>" src/CodeIndex/CodeIndex.csproj >/dev/null
grep -F "<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>" src/CodeIndex/CodeIndex.csproj >/dev/null
grep -F 'Include="..\..\LICENSE" Pack="true"' src/CodeIndex/CodeIndex.csproj >/dev/null
grep -F 'Include="..\..\COMMERCIAL_LICENSE.md" Pack="true"' src/CodeIndex/CodeIndex.csproj >/dev/null
grep -F 'Include="..\..\INTEGRATION_POLICY.md" Pack="true"' src/CodeIndex/CodeIndex.csproj >/dev/null
grep -F 'Include="..\..\TRADEMARKS.md" Pack="true"' src/CodeIndex/CodeIndex.csproj >/dev/null
grep -F 'Include="..\..\LICENSES\FSL-1.1-ALv2.txt" Pack="true"' src/CodeIndex/CodeIndex.csproj >/dev/null
grep -F 'Include="..\..\LICENSES\Apache-2.0.txt" Pack="true"' src/CodeIndex/CodeIndex.csproj >/dev/null
grep -F 'CopyToPublishDirectory="PreserveNewest"' src/CodeIndex/CodeIndex.csproj >/dev/null
if grep -R -n -E 'License-PolyForm|Licensed under PolyForm|PolyForm Perimeter License 1.0.0' \
LICENSE README.md COMMERCIAL_LICENSE.md TRADEMARKS.md src/CodeIndex/CodeIndex.csproj; then
echo "Stale PolyForm licensing metadata found in active policy files." >&2
exit 1
fi
if grep -R -n -E 'License-MIT|PackageLicenseExpression>MIT|MIT License|sublicense, and/or sell' \
LICENSE README.md src/CodeIndex/CodeIndex.csproj; then
echo "Stale MIT licensing metadata found." >&2
exit 1
fi
grep -F "if: github.repository == 'Widthdom/CodeIndex'" .github/workflows/release.yml >/dev/null
grep -F "LICENSE LICENSES/FSL-1.1-ALv2.txt LICENSES/Apache-2.0.txt COMMERCIAL_LICENSE.md INTEGRATION_POLICY.md TRADEMARKS.md" .github/workflows/release.yml >/dev/null
- name: Set up .NET
uses: actions/setup-dotnet@9a946fdbd5fb07b82b2f5a4466058b876ab72bb2 # v5.3.0
with:
dotnet-version: |
8.0.413
9.0.301
cache: true
cache-dependency-path: |
src/CodeIndex/packages.lock.json
tests/CodeIndex.HookIsolationFixture/packages.lock.json
tests/CodeIndex.PostExtractionHookFixture/packages.lock.json
tests/CodeIndex.PluginIsolationFixture/packages.lock.json
tests/CodeIndex.Tests/packages.lock.json
tools/CodeIndex.Changelog/packages.lock.json
tools/CodeIndex.PackageNormalize/packages.lock.json
tools/CodeIndex.TestTelemetry/packages.lock.json
- name: Restore license policy test dependencies
run: dotnet restore tests/CodeIndex.Tests/CodeIndex.Tests.csproj -p:RestoreTargetFrameworks=net8.0 --locked-mode
- name: Run license policy contract tests
run: dotnet test tests/CodeIndex.Tests/CodeIndex.Tests.csproj --configuration Release --framework net8.0 --filter FullyQualifiedName~LicensePolicyTests --no-restore --nologo