From 051408a115ea469137840096916458a2f1662f83 Mon Sep 17 00:00:00 2001 From: thossullivan Date: Mon, 17 Aug 2026 21:25:08 -0500 Subject: [PATCH 1/2] Revert "Isolate npm exec for self-hosted UAT (#72)" This reverts commit aa306606910ba0f52c55b60f51aa94c986278e13. --- .github/workflows/model-eol-consumer-live-uat.yml | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/.github/workflows/model-eol-consumer-live-uat.yml b/.github/workflows/model-eol-consumer-live-uat.yml index a5d40dc..dcad222 100644 --- a/.github/workflows/model-eol-consumer-live-uat.yml +++ b/.github/workflows/model-eol-consumer-live-uat.yml @@ -27,15 +27,14 @@ jobs: node-version: 20 - name: Build the versioned plan run: | - mkdir -p "$RUNNER_TEMP/model-eol-plan" "$RUNNER_TEMP/model-eol-npx" + mkdir -p "$RUNNER_TEMP/model-eol-plan" MODEL_EOL_VERSION="$(npm view "$MODEL_EOL_PACKAGE" version --json | node -e 'let s="";process.stdin.on("data",c=>s+=c).on("end",()=>{const v=JSON.parse(s);const r=Array.isArray(v)?v.at(-1):v;if(typeof r!=="string")process.exit(1);process.stdout.write(r)})')" if [[ ! "$MODEL_EOL_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then echo "refusing invalid resolved model-eol version: $MODEL_EOL_VERSION" >&2 exit 1 fi printf '%s\n' "$MODEL_EOL_VERSION" > "$RUNNER_TEMP/model-eol-plan/model-eol-version" - npm exec --yes --prefix "$RUNNER_TEMP/model-eol-npx" \ - --package="model-eol@$MODEL_EOL_VERSION" -- model-eol plan . \ + npx --yes --package="model-eol@$MODEL_EOL_VERSION" model-eol plan . \ --config "$MODEL_EOL_CONFIG" \ > "$RUNNER_TEMP/model-eol-plan/model-eol-plan.json" - name: Upload plan @@ -68,14 +67,13 @@ jobs: path: ${{ runner.temp }}/model-eol-plan - name: Apply and evaluate the migration run: | - mkdir -p "$RUNNER_TEMP/model-eol-eval" "$RUNNER_TEMP/model-eol-npx" + mkdir -p "$RUNNER_TEMP/model-eol-eval" MODEL_EOL_VERSION="$(cat "$RUNNER_TEMP/model-eol-plan/model-eol-version")" if [[ ! "$MODEL_EOL_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then echo "refusing invalid resolved model-eol version: $MODEL_EOL_VERSION" >&2 exit 1 fi - npm exec --yes --prefix "$RUNNER_TEMP/model-eol-npx" \ - --package="model-eol@$MODEL_EOL_VERSION" -- model-eol-bot evaluate \ + npx --yes --package="model-eol@$MODEL_EOL_VERSION" model-eol-bot evaluate \ --target-dir . \ --config "$MODEL_EOL_CONFIG" \ --plan-file "$RUNNER_TEMP/model-eol-plan/model-eol-plan.json" \ @@ -120,14 +118,12 @@ jobs: MODEL_EOL_EVAL_RESULTS_FILE: ${{ runner.temp }}/model-eol-eval/model-eol-eval-results.json MODEL_EOL_TOKEN_KIND: github-token run: | - mkdir -p "$RUNNER_TEMP/model-eol-npx" MODEL_EOL_VERSION="$(cat "$RUNNER_TEMP/model-eol-plan/model-eol-version")" if [[ ! "$MODEL_EOL_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then echo "refusing invalid resolved model-eol version: $MODEL_EOL_VERSION" >&2 exit 1 fi - npm exec --yes --prefix "$RUNNER_TEMP/model-eol-npx" \ - --package="model-eol@$MODEL_EOL_VERSION" -- model-eol-bot \ + npx --yes --package="model-eol@$MODEL_EOL_VERSION" model-eol-bot \ --repo "${{ github.repository }}" \ --target-dir . \ --config "$MODEL_EOL_CONFIG" From cbbd13387f36e3d8f62f6a78d74a16e3e918a076 Mon Sep 17 00:00:00 2001 From: thossullivan Date: Mon, 17 Aug 2026 21:25:08 -0500 Subject: [PATCH 2/2] Revert "Add hosted consumer UAT fixture (#71)" This reverts commit 2eba0f44e6febdebdf34b63052035e8ece8c1920. --- .../workflows/model-eol-consumer-live-uat.yml | 129 ------------------ model-eol-uat.json | 31 ----- uat/live-consumer/client.mjs | 4 - uat/live-consumer/eval.mjs | 32 ----- 4 files changed, 196 deletions(-) delete mode 100644 .github/workflows/model-eol-consumer-live-uat.yml delete mode 100644 model-eol-uat.json delete mode 100644 uat/live-consumer/client.mjs delete mode 100644 uat/live-consumer/eval.mjs diff --git a/.github/workflows/model-eol-consumer-live-uat.yml b/.github/workflows/model-eol-consumer-live-uat.yml deleted file mode 100644 index dcad222..0000000 --- a/.github/workflows/model-eol-consumer-live-uat.yml +++ /dev/null @@ -1,129 +0,0 @@ -name: model-eol consumer live UAT - -on: - workflow_dispatch: - -concurrency: - group: model-eol-consumer-live-uat - cancel-in-progress: false - -env: - MODEL_EOL_PACKAGE: model-eol@0.4.0 - MODEL_EOL_CONFIG: model-eol-uat.json - -jobs: - plan: - name: build trusted plan - runs-on: ubuntu-latest - timeout-minutes: 10 - permissions: - contents: read - steps: - - uses: actions/checkout@v4 - with: - persist-credentials: false - - uses: actions/setup-node@v4 - with: - node-version: 20 - - name: Build the versioned plan - run: | - mkdir -p "$RUNNER_TEMP/model-eol-plan" - MODEL_EOL_VERSION="$(npm view "$MODEL_EOL_PACKAGE" version --json | node -e 'let s="";process.stdin.on("data",c=>s+=c).on("end",()=>{const v=JSON.parse(s);const r=Array.isArray(v)?v.at(-1):v;if(typeof r!=="string")process.exit(1);process.stdout.write(r)})')" - if [[ ! "$MODEL_EOL_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - echo "refusing invalid resolved model-eol version: $MODEL_EOL_VERSION" >&2 - exit 1 - fi - printf '%s\n' "$MODEL_EOL_VERSION" > "$RUNNER_TEMP/model-eol-plan/model-eol-version" - npx --yes --package="model-eol@$MODEL_EOL_VERSION" model-eol plan . \ - --config "$MODEL_EOL_CONFIG" \ - > "$RUNNER_TEMP/model-eol-plan/model-eol-plan.json" - - name: Upload plan - uses: actions/upload-artifact@v4 - with: - name: model-eol-plan - path: | - ${{ runner.temp }}/model-eol-plan/model-eol-plan.json - ${{ runner.temp }}/model-eol-plan/model-eol-version - if-no-files-found: error - - evaluate: - name: evaluate isolated migration - needs: plan - runs-on: ubuntu-latest - timeout-minutes: 10 - permissions: - contents: read - steps: - - uses: actions/checkout@v4 - with: - persist-credentials: false - - uses: actions/setup-node@v4 - with: - node-version: 20 - - name: Download trusted plan - uses: actions/download-artifact@v4 - with: - name: model-eol-plan - path: ${{ runner.temp }}/model-eol-plan - - name: Apply and evaluate the migration - run: | - mkdir -p "$RUNNER_TEMP/model-eol-eval" - MODEL_EOL_VERSION="$(cat "$RUNNER_TEMP/model-eol-plan/model-eol-version")" - if [[ ! "$MODEL_EOL_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - echo "refusing invalid resolved model-eol version: $MODEL_EOL_VERSION" >&2 - exit 1 - fi - npx --yes --package="model-eol@$MODEL_EOL_VERSION" model-eol-bot evaluate \ - --target-dir . \ - --config "$MODEL_EOL_CONFIG" \ - --plan-file "$RUNNER_TEMP/model-eol-plan/model-eol-plan.json" \ - --output-file "$RUNNER_TEMP/model-eol-eval/model-eol-eval-results.json" - - name: Upload bounded eval results - uses: actions/upload-artifact@v4 - with: - name: model-eol-eval-results - path: ${{ runner.temp }}/model-eol-eval/model-eol-eval-results.json - if-no-files-found: error - - publish: - name: reconcile migration work - needs: [plan, evaluate] - runs-on: ubuntu-latest - timeout-minutes: 10 - permissions: - contents: write - pull-requests: write - issues: write - steps: - - uses: actions/checkout@v4 - with: - persist-credentials: false - - uses: actions/setup-node@v4 - with: - node-version: 20 - - name: Download trusted plan - uses: actions/download-artifact@v4 - with: - name: model-eol-plan - path: ${{ runner.temp }}/model-eol-plan - - name: Download eval results - uses: actions/download-artifact@v4 - with: - name: model-eol-eval-results - path: ${{ runner.temp }}/model-eol-eval - - name: Publish and reconcile model-eol work - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - MODEL_EOL_PLAN_FILE: ${{ runner.temp }}/model-eol-plan/model-eol-plan.json - MODEL_EOL_EVAL_RESULTS_FILE: ${{ runner.temp }}/model-eol-eval/model-eol-eval-results.json - MODEL_EOL_TOKEN_KIND: github-token - run: | - MODEL_EOL_VERSION="$(cat "$RUNNER_TEMP/model-eol-plan/model-eol-version")" - if [[ ! "$MODEL_EOL_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - echo "refusing invalid resolved model-eol version: $MODEL_EOL_VERSION" >&2 - exit 1 - fi - npx --yes --package="model-eol@$MODEL_EOL_VERSION" model-eol-bot \ - --repo "${{ github.repository }}" \ - --target-dir . \ - --config "$MODEL_EOL_CONFIG" diff --git a/model-eol-uat.json b/model-eol-uat.json deleted file mode 100644 index 898d345..0000000 --- a/model-eol-uat.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "days": 90, - "scope": "direct", - "ignore": { - "paths": [ - ".claude/**", - ".github/**", - "bot/**", - "docs/**", - "examples/**", - "feeds/**", - "lib/**", - "refresh/**", - "schema/**", - "scripts/**", - "test/**", - "*.example", - "*.json", - "*.md", - "*.mjs", - "*.yaml", - "*.yml", - "LICENSE" - ] - }, - "eval": { - "command": "node uat/live-consumer/eval.mjs", - "timeout_ms": 30000, - "pass_env": [] - } -} diff --git a/uat/live-consumer/client.mjs b/uat/live-consumer/client.mjs deleted file mode 100644 index 473a3d1..0000000 --- a/uat/live-consumer/client.mjs +++ /dev/null @@ -1,4 +0,0 @@ -export const anthropicClient = { - apiKey: process.env.ANTHROPIC_API_KEY, - model: 'claude-3-5-sonnet-20241022', -} diff --git a/uat/live-consumer/eval.mjs b/uat/live-consumer/eval.mjs deleted file mode 100644 index 0652a60..0000000 --- a/uat/live-consumer/eval.mjs +++ /dev/null @@ -1,32 +0,0 @@ -import fs from 'node:fs' - -const expectedOldModel = ['claude', '3', '5', 'sonnet', '20241022'].join('-') -const expectedNewModel = ['claude', 'sonnet', '4', '6'].join('-') -const expectedFile = 'uat/live-consumer/client.mjs' - -if (process.env.MODEL_EOL_OLD_ID !== expectedOldModel || process.env.MODEL_EOL_NEW_ID !== expectedNewModel) { - throw new Error('migration identity environment did not match the selected model') -} - -if (!process.env.MODEL_EOL_PLAN || !process.env.MODEL_EOL_REPORT) { - throw new Error('migration plan and report paths are required') -} - -const selectedPlan = JSON.parse(fs.readFileSync(process.env.MODEL_EOL_PLAN, 'utf8')) -if ( - selectedPlan.items?.length !== 1 || - selectedPlan.items[0].file !== expectedFile || - selectedPlan.items[0].replacement !== expectedNewModel -) { - throw new Error('expected one isolated migration item') -} - -const clientSource = fs.readFileSync(new URL('./client.mjs', import.meta.url), 'utf8') -if (clientSource.includes(expectedOldModel) || !clientSource.includes(expectedNewModel)) { - throw new Error('isolated checkout does not contain the expected migration') -} - -fs.writeFileSync( - process.env.MODEL_EOL_REPORT, - `Verified isolated migration from ${expectedOldModel} to ${expectedNewModel}.\n`, -)