Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
149 changes: 13 additions & 136 deletions .github/workflows/agent-task-contracts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,109 +2,21 @@ name: Agent Task Contracts

on:
pull_request:
paths:
- ".github/scripts/run-agent-task/**"
- ".github/workflows/agent-task-contracts.yml"
- ".github/workflows/build-php-wasm-mysqli-poll-overlay.yml"
- ".github/workflows/run-agent-task.yml"
- "contracts/agent-task-workflow-request.fixture.json"
- "contracts/run-agent-task-reusable-workflow-interface.v1.json"
- "docs/agent-task-reusable-workflow.md"
- "fixtures/agent-task-reusable-workflow-consumer*.yml"
- "fixtures/agent-task-runtime-sources-run-29299109269.json"
- "fixtures/agent-task-runtime-paths-run-29305012941.json"
- "npm-shrinkwrap.json"
- "package.json"
- "scripts/process-marker.mjs"
- "packages/runtime-playground/src/**"
- "tests/browser-*.test.ts"
- "tests/editor-*.test.ts"
- "tests/agent-task-*.test.ts"
- "tests/runtime-sources-materialization.test.ts"
- "tests/runtime-sources-playground-integration.test.ts"
- "tests/execute-native-agent-task-playground-e2e.test.ts"
- "tests/execute-native-agent-task-interruption.test.mjs"
- "tests/trusted-apply-artifact-channel.integration.test.ts"
- "tests/redaction.test.ts"
- "tests/production-boundary-enforcement.test.ts"
- "tests/runtime-tool-policy.test.ts"
- "tests/browser-canonical-preview-origin.test.ts"
- "tests/browser-adaptive-exploration.test.ts"
- "packages/runtime-core/src/browser-adaptive-exploration.ts"
- "packages/runtime-playground/src/browser-actions-runner.ts"
- "packages/runtime-playground/src/browser-adaptive-explorer.ts"
- "packages/runtime-playground/src/browser-artifacts.ts"
- "packages/runtime-playground/src/browser-multi-actor-scenario-runner.ts"
- "packages/runtime-playground/src/browser-preview-routing.ts"
- "packages/runtime-playground/src/browser-probe-runner.ts"
- "packages/runtime-playground/src/editor-command-runners.ts"
- "packages/runtime-playground/src/preview-server.ts"
- "packages/runtime-playground/src/phpunit-command-handlers.ts"
- "packages/runtime-playground/src/playground-cli-runner.ts"
- "packages/runtime-playground/src/playground-wordpress-archive-cache.ts"
- "tests/playground-custom-archive-cache*.test.ts"
- "tests/fixtures/playground-cache-lease-child.ts"
- "tests/playground-phpunit-readonly-cache.integration.test.ts"
- "tests/fixtures/phpunit-playground-harness/**"
- "packages/cli/src/bounded-recipe-plan.ts"
- "packages/runtime-core/src/bounded-runtime-plan.ts"
- "tests/bounded-*.test.ts"
- "tests/disposable-mysql-mysqli.integration.test.ts"
- "tests/mysqli-poll.integration.test.ts"
push:
paths:
- ".github/scripts/run-agent-task/**"
- ".github/workflows/agent-task-contracts.yml"
- ".github/workflows/build-php-wasm-mysqli-poll-overlay.yml"
- ".github/workflows/run-agent-task.yml"
- "contracts/agent-task-workflow-request.fixture.json"
- "contracts/run-agent-task-reusable-workflow-interface.v1.json"
- "docs/agent-task-reusable-workflow.md"
- "fixtures/agent-task-reusable-workflow-consumer*.yml"
- "fixtures/agent-task-runtime-sources-run-29299109269.json"
- "fixtures/agent-task-runtime-paths-run-29305012941.json"
- "npm-shrinkwrap.json"
- "package.json"
- "scripts/process-marker.mjs"
- "packages/runtime-playground/src/**"
- "tests/browser-*.test.ts"
- "tests/editor-*.test.ts"
- "tests/agent-task-*.test.ts"
- "tests/runtime-sources-materialization.test.ts"
- "tests/runtime-sources-playground-integration.test.ts"
- "tests/execute-native-agent-task-playground-e2e.test.ts"
- "tests/execute-native-agent-task-interruption.test.mjs"
- "tests/trusted-apply-artifact-channel.integration.test.ts"
- "tests/redaction.test.ts"
- "tests/production-boundary-enforcement.test.ts"
- "tests/runtime-tool-policy.test.ts"
- "tests/browser-canonical-preview-origin.test.ts"
- "tests/browser-adaptive-exploration.test.ts"
- "packages/runtime-core/src/browser-adaptive-exploration.ts"
- "packages/runtime-playground/src/browser-actions-runner.ts"
- "packages/runtime-playground/src/browser-adaptive-explorer.ts"
- "packages/runtime-playground/src/browser-artifacts.ts"
- "packages/runtime-playground/src/browser-multi-actor-scenario-runner.ts"
- "packages/runtime-playground/src/browser-preview-routing.ts"
- "packages/runtime-playground/src/browser-probe-runner.ts"
- "packages/runtime-playground/src/editor-command-runners.ts"
- "packages/runtime-playground/src/preview-server.ts"
- "packages/runtime-playground/src/phpunit-command-handlers.ts"
- "packages/runtime-playground/src/playground-cli-runner.ts"
- "packages/runtime-playground/src/playground-wordpress-archive-cache.ts"
- "tests/playground-custom-archive-cache*.test.ts"
- "tests/fixtures/playground-cache-lease-child.ts"
- "tests/playground-phpunit-readonly-cache.integration.test.ts"
- "tests/fixtures/phpunit-playground-harness/**"
- "packages/cli/src/bounded-recipe-plan.ts"
- "packages/runtime-core/src/bounded-runtime-plan.ts"
- "tests/bounded-*.test.ts"
- "tests/disposable-mysql-mysqli.integration.test.ts"
- "tests/mysqli-poll.integration.test.ts"
branches:
- main

permissions:
contents: read

concurrency:
group: integration-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
contracts:
integration:
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
with:
Expand All @@ -118,47 +30,12 @@ jobs:
php-version: '8.2'
tools: composer:v2
- run: npm ci
- name: Cache Playwright Chromium
uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: ${{ runner.os }}-playwright-chromium-${{ hashFiles('npm-shrinkwrap.json') }}
- name: Install Playwright Chromium
run: npx playwright install --with-deps chromium
- run: npm run build
- run: npm run test:browser-accessibility-oracles
- run: npm run test:browser-visual-compare-url-capture
- run: npm run test:browser-visual-compare-animated-media
- run: npm run test:browser-visual-compare-capture-reliability
- run: npm run test:browser-visual-compare-layout-drift
- run: npm run test:agent-task-contracts
- run: npm run test:browser-canonical-preview-origin
- run: npm run test:bounded-runtime-plan
- run: npm run test:bounded-recipe-plan
- run: npm run test:bounded-recipe-plan-integration
- run: npm run test:recipe-step-continuation
- run: npm run test:phpunit-runtime-rejection
- run: npm run test:php-wasm-runtime-rejection-any-command
- run: npm run test:disposable-mysql-mysqli-e2e
- run: npm run test:mysqli-poll-integration
- run: npm run test:runtime-sources-playground-integration
- run: npm run test:playground-phpunit-readonly-cache-integration
- run: npm run test:playground-custom-archive-cache
- run: npm run test:native-agent-task-playground-e2e
- run: npm run test:native-agent-task-interruption
- run: npm run test:trusted-apply-artifact-channel
- run: npm run test:runtime-command-artifact-bounds
- run: npm run test:recipe-declared-artifacts
- run: npm run test:redaction
- run: npm run test:browser-preview-routing
- run: npm run test:browser-routed-command-security
- run: npm run test:production-boundary-enforcement
- run: npm run test:runtime-tool-policy
- run: npm run test:integration

workflow-lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: docker://rhysd/actionlint:1.7.7
with:
args: .github/workflows/agent-task-contracts.yml .github/workflows/build-php-wasm-mysqli-poll-overlay.yml .github/workflows/run-agent-task.yml
args: .github/workflows/agent-task-contracts.yml .github/workflows/browser.yml .github/workflows/build-php-wasm-mysqli-poll-overlay.yml .github/workflows/run-agent-task.yml
40 changes: 40 additions & 0 deletions .github/workflows/browser.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Browser

on:
pull_request:
push:
branches:
- main

permissions:
contents: read

concurrency:
group: browser-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
browser:
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
tools: composer:v2
- run: npm ci
- name: Cache Playwright Chromium
uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: ${{ runner.os }}-playwright-chromium-${{ hashFiles('npm-shrinkwrap.json') }}
- name: Install Playwright Chromium
run: npx playwright install --with-deps chromium
- run: npm run test:browser
17 changes: 4 additions & 13 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
name: Check

# Deliberately unfiltered. The smoke aggregate is the canonical test surface, so
# every pull request runs all of it. A hand-curated `paths:` list is what let
# packages/wordpress-plugin and packages/runtime-cloudflare go uncovered, and it
# rots silently when a glob stops matching.
# Deliberately unfiltered. This fast lane owns build, type, and contract coverage;
# integration and browser workflows own tests that provision external runtimes.
on:
pull_request:
push:
Expand All @@ -19,9 +17,9 @@ concurrency:

jobs:
check:
name: smoke aggregate
name: fast contracts
runs-on: ubuntu-latest
timeout-minutes: 30
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
with:
Expand All @@ -35,12 +33,5 @@ jobs:
php-version: '8.2'
tools: composer:v2
- run: npm ci
- name: Cache Playwright Chromium
uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: ${{ runner.os }}-playwright-chromium-${{ hashFiles('npm-shrinkwrap.json') }}
- name: Install Playwright Chromium
run: npx playwright install --with-deps chromium
- name: npm run check
run: npm run check
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,10 @@ npm run build
npm run check
```

`npm run check` runs the full smoke manifest aggregate. Use `npm run smoke -- --list` to see focused smoke groups and commands.
`npm run check` runs the fast build and contract lane. `npm run test:integration`
owns Playground and Docker coverage, `npm run test:browser` owns serial Chromium
coverage, and `npm run test:all` composes every root-package lane for release gates.
Use `npm run smoke -- --list` to see focused smoke groups and commands.

## Distribution Artifacts

Expand Down
10 changes: 6 additions & 4 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,11 @@ unless this index says otherwise.
`packages/runtime-core/src/runtime-boundary-contracts.ts` and
`packages/runtime-core/src/runtime-profile-compiler.ts`.
- JSON Schema factory: `packages/runtime-core/src/recipe-schema.ts`.
- Default check coverage: `npm run check` includes
`npm run test:generic-primitives` through the smoke manifest `core` group.
- Disposable MySQL integration coverage runs through
`npm run test:disposable-mysql-mysqli-e2e`. The test detects Docker with
- Default check coverage: `npm run check` includes build, type, and generic
primitive contracts through the smoke manifest `declared` group.
- Playground and disposable MySQL integration coverage runs through
`npm run test:integration`. The MySQL test detects Docker with
`docker info`; Docker-capable CI/Lab runs the public recipe path and PHP-WASM
`mysqli` assertion, while hosts without a Docker daemon report an explicit skip.
- Serial Chromium coverage runs through `npm run test:browser`. Release gates
compose all root-package lanes with `npm run test:all`.
2 changes: 1 addition & 1 deletion homeboy.json
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@
"npm run build"
],
"test": [
"npm run check",
"npm run test:all",
"npm run test:release-target",
"npm run test:sharp-release-runtime",
"npm run test:prepare-declaration-rebuild",
Expand Down
8 changes: 5 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@
"test:native-agent-task-playground-e2e": "tsx tests/execute-native-agent-task-playground-e2e.test.ts",
"test:bench-command-step-behavior": "tsx tests/bench-command-step-behavior.test.ts",
"test:external-http-load-integration": "npm run build && tsx tests/external-http-load.integration.test.ts",
"test:generic-primitives": "npm run test:artifact-path-primitives && npm run test:browser-callback-materialization-contracts && npm run test:browser-canonical-preview-origin && npm run test:source-package-compiler-primitives && npm run test:bench-command-step-behavior && npm run test:generic-ability-runtime-run",
"test:generic-primitives": "npm run test:artifact-path-primitives && npm run test:browser-callback-materialization-contracts && npm run test:source-package-compiler-primitives && npm run test:bench-command-step-behavior && npm run test:generic-ability-runtime-run",
"test:temp-runtime-cleanup": "tsx tests/temp-runtime-cleanup.test.ts",
"smoke:cli-version": "tsx scripts/cli-version-smoke.ts",
"test:php-runner-workspace-tools": "php scripts/php-runner-workspace-tools-smoke.php",
Expand All @@ -170,11 +170,13 @@
"test:mysqli-poll-integration": "tsx tests/mysqli-poll.integration.test.ts",
"test:disposable-mysql-mysqli-e2e": "tsx tests/disposable-mysql-mysqli.integration.test.ts",
"test:wordpress-runtime-discovery-coverage-plan": "tsx tests/wordpress-runtime-discovery-coverage-plan.test.ts",
"test:docs-boundary-language": "tsx tests/docs-boundary-language.test.ts",
"test:production-boundary-enforcement": "tsx tests/production-boundary-enforcement.test.ts",
"test:browser-viewport-replay": "node ./node_modules/typescript/bin/tsc -b packages/runtime-core --force && node ./node_modules/typescript/bin/tsc -b packages/runtime-playground packages/cli --force && node scripts/ensure-cli-bin-executable.mjs && tsx tests/browser-viewport-replay.test.ts",
"test:integration": "npm run build && npm run smoke -- --group=integration --concurrency=2",
"test:browser": "npm run build && npm run smoke -- --group=browser",
"test:all": "npm run smoke -- --all",
"check": "npm run smoke -- --group=check",
"check:all": "npm run check && npm run cloudflare:check"
"check:all": "npm run test:all && npm run cloudflare:check"
},
"workspaces": [
"packages/cli",
Expand Down
Loading
Loading