Repository navigation
release: backend reorganization and verified development changes #286
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
571088f
e9923c5
094ecb3
54fca9c
c62368e
8f3173c
f62b5ee
6f02507
e3fed9c
bd6c383
4bcb9ab
b8cc56a
edf7528
be31efe
17771cd
d24fcb9
2e490e6
567bdeb
3d9be63
12f0ea0
f29bef2
586becb
68edf85
5aa9a81
e76b337
2ce09a4
271c0f8
db3a1ce
f1e3e45
dba6102
a57b526
722b493
a26c641
8f02304
bfd030f
fec6822
6757175
cb959b1
dbde16e
4b5c0e5
b251786
774623f
62e6754
8dabac8
057edb9
4228597
1dcbacb
26a6fec
067fe82
0081b66
1ed6409
3127d8e
e289b4e
ecf9661
d36711a
882d137
5290261
d29344d
ba1280c
6d49db0
7f5753d
6e2bfe5
1bb0b46
210f975
71f23a3
fd8df54
b7f58f9
bea6231
16ed5e1
64e3700
e1e5e36
7501aa5
70146f0
58860dc
bee34d8
92be932
ab19ae1
9ad780b
ceac917
5676f5e
cf70130
d688796
ddca8e6
b64df6c
7c8b15c
23012e9
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -12,7 +12,7 @@ name: ci | |
| on: | ||
| workflow_call: | ||
| pull_request: | ||
| branches: [main, development] | ||
| branches: [main, development, 'codex/backend-reorg-*'] | ||
| push: | ||
| branches: [main, development] | ||
|
|
||
|
|
@@ -70,7 +70,7 @@ jobs: | |
| # Pinned: "latest" is a moving target and older releases can't parse | ||
| # Go 1.27 export data. Bump deliberately alongside the Go toolchain. | ||
| # The enabled linters live in .golangci.yml (repo source of truth). | ||
| version: v2.13.1 | ||
| version: v2.14.0 | ||
|
|
||
| - name: go mod tidy is a no-op | ||
| run: | | ||
|
|
@@ -177,6 +177,10 @@ jobs: | |
| cache: true | ||
| - name: Daemon lifecycle and socket ownership | ||
| run: go test -race ./internal/daemon -run '^(TestRuntimeAcceptance.*|TestRuntimePathsAndOwnerLock|TestOwnerOnlySocketRefusesUnsafeState)$' | ||
| - name: Shared native connection and command presentation | ||
| run: go test -race ./internal/daemonconn ./internal/commandpresentation ./internal/client | ||
| - name: TUI startup and automatic title over both transports | ||
| run: go test -race -tags=integration ./internal/tui -run '^TestInteractiveSessionOverTrustedProtocol$' | ||
| - name: Compact agent receipts and grant retrieval | ||
| run: go test -race -tags=integration ./internal/daemon -run '^TestRecursiveAgent(ReceiptsWithLargeMCPGrants|GrantInspectionAccess)$' | ||
| - name: RLM worker containment | ||
|
|
@@ -192,12 +196,16 @@ jobs: | |
| with: | ||
| go-version-file: go.mod | ||
| cache: true | ||
| - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 | ||
| - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7 | ||
| with: | ||
| node-version: 24 | ||
| cache: npm | ||
| - run: npm ci | ||
| - run: npm audit --omit=dev --audit-level=high | ||
| - name: Initialize protocol artifacts and SDK | ||
| run: | | ||
| npm run generate | ||
| npm run build | ||
| - run: npm run audit:production | ||
| - run: npm run check | ||
| - name: Web application and component checks | ||
| run: | | ||
|
|
@@ -217,12 +225,20 @@ jobs: | |
| - run: node packages/ui/tests/csp.mjs | ||
| - run: npm run test:packed -w @whip/ui | ||
| - run: WHIP_WEB_BROWSERS=chromium,firefox node apps/web/scripts/browser.mjs | ||
| - name: Renderer release acceptance | ||
| run: | | ||
| node apps/web/scripts/repl-viewer.mjs | ||
| node apps/web/scripts/settings.mjs | ||
| WHIP_CHAT_AGENTS_ONLY=1 WHIP_CHAT_ACTIVITY_RESULTS=/tmp/whip-chat-activity-results/agents node apps/web/scripts/chat-activity.mjs | ||
| WHIP_CHAT_ACTIVITY_RESULTS=/tmp/whip-chat-activity-results/activity node apps/web/scripts/chat-activity.mjs | ||
| WHIP_CHAT_HISTORY_ONLY=1 WHIP_CHAT_ACTIVITY_RESULTS=/tmp/whip-chat-activity-results/history node apps/web/scripts/chat-activity.mjs | ||
| - run: node apps/web/scripts/model-picker.mjs | ||
| - run: node apps/web/scripts/snapshot-refresh.mjs | ||
| - run: node --test apps/web/scripts/performance-probes.test.mjs | ||
| - run: node apps/web/scripts/performance.mjs | ||
| - run: npm run test:example | ||
| - name: Shared verified renderer for desktop and release consumers | ||
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 | ||
| uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7 | ||
| with: | ||
| name: ci-renderer | ||
| if-no-files-found: error | ||
|
|
@@ -231,13 +247,16 @@ jobs: | |
| apps/web/renderer-manifest.json | ||
| - name: Browser acceptance evidence | ||
| if: always() | ||
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 | ||
| uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7 | ||
| with: | ||
| name: web-browser-evidence | ||
| if-no-files-found: ignore | ||
| path: | | ||
| /tmp/whip-web-browser-results | ||
| /tmp/whip-web-snapshot-refresh | ||
| /tmp/whip-repl-viewer-results | ||
| /tmp/whip-settings-browser-results | ||
| /tmp/whip-chat-activity-results | ||
| packages/ui/ui-test-results | ||
|
|
||
| docs: | ||
|
|
@@ -246,13 +265,21 @@ jobs: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 | ||
| with: | ||
| ref: ${{ github.sha }} | ||
| - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 | ||
| - uses: actions/setup-go@v5 | ||
| with: | ||
| go-version-file: go.mod | ||
| cache: true | ||
| - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7 | ||
| with: | ||
| node-version: '24' | ||
| cache: npm | ||
| - run: npm ci | ||
| env: | ||
| ELECTRON_SKIP_BINARY_DOWNLOAD: '1' | ||
| - name: Initialize protocol artifacts and SDK | ||
| run: | | ||
| npm run generate | ||
| npm run build | ||
| - run: npm run check:docs | ||
| - run: npm run test:docs | ||
| - run: npm run test:docs:dev | ||
|
|
@@ -261,7 +288,7 @@ jobs: | |
| - run: npm run test:docs:browser | ||
| - run: npm run build:storybook:docs | ||
| - name: Static docs artifact | ||
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 | ||
| uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7 | ||
| with: | ||
| name: docs-static | ||
| if-no-files-found: error | ||
|
|
@@ -276,9 +303,51 @@ jobs: | |
| mobile: | ||
| uses: ./.github/workflows/mobile.yml | ||
|
|
||
| # Fixed SDK from the accepted development revision against explicit binaries. | ||
| # This complements every existing gate; it does not replace product acceptance. | ||
| compatibility: | ||
| runs-on: ${{ matrix.os }} | ||
| timeout-minutes: 30 | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| os: [ubuntu-latest, macos-15] | ||
| steps: | ||
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 | ||
| with: | ||
| ref: ${{ github.sha }} | ||
| fetch-depth: 0 | ||
| - uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7 | ||
| with: | ||
| go-version-file: go.mod | ||
| cache: true | ||
| - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7 | ||
| with: | ||
| node-version: 24 | ||
| cache: npm | ||
| - name: Contract freeze, differential SDK and data rollback | ||
| env: | ||
| COMPATIBILITY_BASE: ${{ github.event.pull_request.base.sha || github.event.before || github.sha }} | ||
| run: | | ||
| # PRs use their immediate parent branch; initial push/reusable runs | ||
| # without a previous commit use the current commit for attribution. | ||
| if [ "$COMPATIBILITY_BASE" = 0000000000000000000000000000000000000000 ]; then COMPATIBILITY_BASE="$GITHUB_SHA"; fi | ||
| node scripts/backend-compat/run.mjs --candidate "$GITHUB_WORKSPACE" --base "$COMPATIBILITY_BASE" --output "$RUNNER_TEMP/backend-compat" | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Compat job may miss required SHAsMedium Severity The new required Additional Locations (1)Reviewed by Cursor Bugbot for commit 58860dc. Configure here. |
||
| - name: Compatibility evidence | ||
| if: always() | ||
| uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7 | ||
| with: | ||
| name: backend-compat-${{ runner.os }} | ||
| path: | | ||
| ${{ runner.temp }}/backend-compat/evidence.json | ||
| ${{ runner.temp }}/backend-compat/command-*.log | ||
| ${{ runner.temp }}/backend-compat/runs-*/**/*.json | ||
| ${{ runner.temp }}/backend-compat/runs-*/**/*.log | ||
| retention-days: 14 | ||
|
|
||
| # Required aggregate: failed or skipped dependencies must fail, never go green. | ||
| go: | ||
| needs: [lint, test, build, runtime, driver, sdk, docs, distribution, desktop, mobile] | ||
| needs: [lint, test, build, runtime, driver, sdk, docs, distribution, desktop, mobile, compatibility] | ||
| if: always() | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
|
|
@@ -290,6 +359,7 @@ jobs: | |
| echo "runtime=${{ needs.runtime.result }}" | ||
| echo "driver=${{ needs.driver.result }}" | ||
| echo "sdk=${{ needs.sdk.result }}" | ||
| echo "compatibility=${{ needs.compatibility.result }}" | ||
| echo "docs=${{ needs.docs.result }}" | ||
| echo "distribution=${{ needs.distribution.result }}" | ||
| echo "desktop=${{ needs.desktop.result }}" | ||
|
|
@@ -300,6 +370,7 @@ jobs: | |
| [ "${{ needs.runtime.result }}" = success ] || exit 1 | ||
| [ "${{ needs.driver.result }}" = success ] || exit 1 | ||
| [ "${{ needs.sdk.result }}" = success ] || exit 1 | ||
| [ "${{ needs.compatibility.result }}" = success ] || exit 1 | ||
| [ "${{ needs.docs.result }}" = success ] || exit 1 | ||
| [ "${{ needs.distribution.result }}" = success ] || exit 1 | ||
| [ "${{ needs.desktop.result }}" = success ] || exit 1 | ||
|
|
@@ -343,14 +414,18 @@ jobs: | |
| with: | ||
| go-version-file: go.mod | ||
| cache: true | ||
| - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 | ||
| - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7 | ||
| with: | ||
| node-version: '24' | ||
| cache: npm | ||
| - run: npm ci | ||
| env: | ||
| ELECTRON_SKIP_BINARY_DOWNLOAD: '1' | ||
| - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8 | ||
| - name: Initialize protocol artifacts and SDK | ||
| run: | | ||
| npm run generate | ||
| npm run build | ||
| - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8 | ||
| with: | ||
| name: ci-renderer | ||
| path: apps/web | ||
|
|
||


There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Docs CI uses unpinned old setup-go
Low Severity
The new docs
generatepath installs Go with floatingactions/setup-go@v5. Other jobs in this change pinsetup-gov7 by commit SHA, so this job can pick up an unreviewed v5 revision and drift from the Go toolchain the rest of CI uses.Reviewed by Cursor Bugbot for commit 5aa9a81. Configure here.