Skip to content

Release 0.96.4: bound recent coordination receipt reads #2176

Release 0.96.4: bound recent coordination receipt reads

Release 0.96.4: bound recent coordination receipt reads #2176

name: Owned integration checks
on:
pull_request:
workflow_dispatch:
inputs:
default_installed:
description: Run only the manual installed-default owner (no automatic matrix)
type: boolean
default: false
desktop_safety:
description: With default_installed, run only the separate 22+3 desktop safety proof
type: boolean
default: false
root_guest:
description: Run only the manual isolated-root guest owner
type: boolean
default: false
installed_pwa:
description: Run only the manual headed installed-PWA owner
type: boolean
default: false
workflow_call:
inputs:
revision:
type: string
required: true
secrets:
LOOP_LIVE_CI_READ_KEY:
required: true
permissions:
contents: read
jobs:
default-installed:
if: github.event_name == 'workflow_dispatch' && (inputs.default_installed || inputs.root_guest || inputs.installed_pwa)
uses: ./.github/workflows/default-installed.yml
with:
desktop_safety: ${{ inputs.desktop_safety }}
root_guest: ${{ inputs.root_guest }}
installed_pwa: ${{ inputs.installed_pwa }}
secrets:
LOOP_LIVE_CI_READ_KEY: ${{ secrets.LOOP_LIVE_CI_READ_KEY }}
plan:
if: github.event_name != 'workflow_dispatch' || !(inputs.default_installed || inputs.root_guest || inputs.installed_pwa)
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.plan.outputs.matrix }}
selected: ${{ steps.plan.outputs.selected }}
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
ref: ${{ inputs.revision || github.sha }}
fetch-depth: 0
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
with:
python-version: '3.13'
- name: Select affected owners or the full nightly/manual matrix
id: plan
env:
EVENT: ${{ github.event_name }}
BASE: ${{ github.event.pull_request.base.sha }}
HEAD: ${{ github.event.pull_request.head.sha }}
run: |
python - <<'PY'
import json, os, subprocess
args = ['python', 'scripts/integration_checks.py', 'plan']
if os.environ['EVENT'] == 'pull_request':
args += ['--base', os.environ['BASE'], '--head', os.environ['HEAD']]
matrix = json.loads(subprocess.check_output(args, text=True))
with open(os.environ['GITHUB_OUTPUT'], 'a') as output:
output.write('matrix=' + json.dumps(matrix) + '\n')
output.write('selected=' + str(len(matrix['include'])) + '\n')
PY
integration:
needs: plan
if: needs.plan.outputs.selected != '0'
strategy:
fail-fast: false
matrix: ${{ fromJSON(needs.plan.outputs.matrix) }}
runs-on: ${{ matrix.os }}
timeout-minutes: 20
services:
neo4j:
image: ${{ matrix.lane == 'context-intelligence' && 'neo4j:5.26.0-community' || '' }}
env:
NEO4J_AUTH: none
NEO4J_server_memory_heap_initial__size: 256m
NEO4J_server_memory_heap_max__size: 512m
NEO4J_server_memory_pagecache_size: 128m
ports:
- 127.0.0.1:17687:7687
options: --health-cmd "cypher-shell 'RETURN 1'" --health-interval 5s --health-timeout 5s --health-retries 30
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
ref: ${{ inputs.revision || github.sha }}
persist-credentials: false
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
with:
python-version: '3.13'
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: '22'
- name: Prepare selected client source for host checks
run: |
if test -f tests/web/package.json; then
python scripts/web_client_build.py prepare
else
# Historical selected checkout keeps its authored web layout.
if test -f scripts/web_client_development.py; then
python scripts/web_client_development.py prepare-view
fi
fi
- uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6
- name: Resolve the declared runtime revision
id: runtime
if: contains(fromJSON('["native","cli-interop"]'), matrix.lane)
run: |
python -c 'import tomllib; p=tomllib.load(open("amplifier_web/runtime_deps/pyproject.toml", "rb")); print("revision=" + p["tool"]["uv"]["sources"]["amplifier-module-loop-live"]["rev"])' >> "$GITHUB_OUTPUT"
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
if: contains(fromJSON('["native","cli-interop"]'), matrix.lane)
with:
repository: microsoft/amplifier-module-loop-live
ref: ${{ steps.runtime.outputs.revision }}
path: .ci/loop-live
ssh-key: ${{ secrets.LOOP_LIVE_CI_READ_KEY }}
persist-credentials: false
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
if: matrix.lane == 'cli-interop'
with:
repository: microsoft/amplifier-app-cli
path: .ci/cli
persist-credentials: false
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
if: matrix.lane == 'context-intelligence'
with:
repository: microsoft/amplifier-context-intelligence
ref: c4fd590e04ebcf9c7db13704dbf273d6049598e6
path: .ci/ci-server
persist-credentials: false
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
if: matrix.lane == 'filesystem-aliases'
with:
repository: microsoft/amplifier-module-tool-filesystem
ref: 38e48db57bd9091d4ad439c137240212855d07c8
path: .ci/tool-filesystem
persist-credentials: false
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
if: matrix.lane == 'filesystem-aliases'
with:
repository: microsoft/amplifier-bundle-filesystem
ref: d71bb9522c6983c18e803aa43a96bd37dec75d32
path: .ci/filesystem-bundle
persist-credentials: false
- name: Prepare actual search backend
if: matrix.lane == 'native'
run: sudo apt-get update && sudo apt-get install -y ripgrep
- name: Execute owned cases; missing prerequisites or skips fail
env:
LANE: ${{ matrix.lane }}
run: python scripts/run_owned_integration.py --lane "$LANE" --work "$RUNNER_TEMP/integration" --output "$GITHUB_WORKSPACE/output/integration"
- name: Retain results and source identities, never private state
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: integration-${{ matrix.lane }}
path: output/integration/
if-no-files-found: warn