Enable proof-aware binary search indexes for compiled data #3206
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| pull_request: | |
| workflow_dispatch: | |
| jobs: | |
| build-test-artifact: | |
| name: ${{ matrix.os }} | |
| runs-on: ${{ matrix.os }} | |
| env: | |
| # `runner.*` is not available in job-level `env`; using the workspace | |
| # keeps the path valid during workflow parsing and the final step removes it. | |
| OCT_TEST_TEMP_ROOT: ${{ github.workspace }}/.oct-test-artifacts | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: ubuntu-latest | |
| goos: linux | |
| goarch: amd64 | |
| binary_name: oct | |
| mcp_binary_name: oct-mcp | |
| - os: windows-latest | |
| goos: windows | |
| goarch: amd64 | |
| binary_name: oct.exe | |
| mcp_binary_name: oct-mcp.exe | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version-file: go.mod | |
| cache: true | |
| - name: Setup MinGW (Windows) | |
| if: matrix.os == 'windows-latest' | |
| uses: msys2/setup-msys2@v2 | |
| with: | |
| msystem: UCRT64 | |
| release: false | |
| path-type: inherit | |
| - name: Check repository path case uniqueness | |
| if: matrix.os == 'ubuntu-latest' | |
| run: go run ./tools/check_case_collisions | |
| - name: Build judge binaries | |
| shell: pwsh | |
| env: | |
| GOOS: ${{ matrix.goos }} | |
| GOARCH: ${{ matrix.goarch }} | |
| CGO_ENABLED: "1" | |
| run: | | |
| New-Item -ItemType Directory -Force -Path dist | Out-Null | |
| go build -o dist/${{ matrix.binary_name }} ./cmd/oct | |
| go build -o dist/${{ matrix.mcp_binary_name }} ./cmd/oct-mcp | |
| - name: Run fast tests | |
| run: go test -count=1 -parallel 8 ./... | |
| - name: Run compiler and CLI integration tests | |
| # T3: Suite/file harnesses share compilation while preserving --case isolation. | |
| run: go test -count=1 -parallel 8 -tags=integration ./... | |
| - name: Run external-tool tests | |
| run: go test -count=1 -parallel 8 -tags=toolchain ./... | |
| - name: Build octxiliary sidecars | |
| run: go run ./tools/build_sidecars --out dist/sidecars | |
| - name: Run slow octxiliary wrapper tests | |
| env: | |
| OCT_WRAPPER_PATH: ${{ github.workspace }}/dist/sidecars | |
| OCT_SLOW_TESTS: "1" | |
| run: go test -count=1 -parallel 8 -tags=toolchain ./cmd/oct -run 'Wrapper|Octxiliary|IO|Csv|Json|Xlsx|Pdf|Image|Plot|Compiled' | |
| - name: Upload retained compiled-test artifacts on failure | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: oct-test-artifacts-${{ matrix.goos }}-${{ matrix.goarch }} | |
| path: ${{ github.workspace }}/.oct-test-artifacts | |
| if-no-files-found: ignore | |
| retention-days: 7 | |
| - name: Clean compiled-test temp root | |
| # Failure uploads happen first; successful and failed jobs then remove the owned root. | |
| if: always() | |
| shell: pwsh | |
| run: | | |
| if (Test-Path -LiteralPath $env:OCT_TEST_TEMP_ROOT) { | |
| Remove-Item -LiteralPath $env:OCT_TEST_TEMP_ROOT -Recurse -Force | |
| } | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: oct-build-week-${{ matrix.goos }}-${{ matrix.goarch }} | |
| path: | | |
| dist/${{ matrix.binary_name }} | |
| dist/${{ matrix.mcp_binary_name }} | |
| plugins/oct | |
| if-no-files-found: error | |
| retention-days: 14 | |
| # Note: native WebView shell smoke is intentionally not in normal CI as of M116. | |
| # Machina deterministic core lanes remain untagged/headless; run WebView manually: | |
| # MACHINA_WEBVIEW_SMOKE=1 go test -tags machina_desktop_webview ./internal/machina/desktophost -run TestWebviewDriverFactoryConstructsAndInitializesNativeBinding -count=1 |