Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
f789861
Add fixed-batch release promotion controller with guarded qualificati…
SaladDay Sep 28, 2026
6521aed
Document fresh-only node program installation policy
SaladDay Sep 28, 2026
2474ed4
Supervise reviewed private qualification packages and wait for batch …
SaladDay Sep 28, 2026
2064a17
docs: establish component decoupling principle (#190)
SaladDay Sep 28, 2026
180da4a
Keep qualification children supervised across SSH disconnects
SaladDay Sep 28, 2026
049e21f
Own foreground groups through every qualification exit
SaladDay Sep 28, 2026
6ad8ac9
Merge shared component documentation from main
SaladDay Sep 28, 2026
f987147
Limit release qualification to requested real smoke coverage
SaladDay Sep 28, 2026
77f5767
Align operator docs with current installation and Runtime boundaries
SaladDay Sep 28, 2026
5f43a1a
Retain Session executors behind a shared Harness contract
SaladDay Sep 28, 2026
cd6a32c
Remove remaining historical upgrade instructions from contracts
SaladDay Sep 28, 2026
db57eb1
Pin generated guides to the corrected canonical documentation
SaladDay Sep 28, 2026
ea1591a
Settle executor cleanup and terminal handoff independently
SaladDay Sep 28, 2026
f1d4132
Distinguish delivered metrics from remaining aggregation proposals
SaladDay Sep 28, 2026
5b5c10f
Preserve native settlement evidence through executor cleanup
SaladDay Sep 28, 2026
f57e434
Merge pull request #192 from MiniMax-AI/codex/docs-current-standards-…
SaladDay Sep 28, 2026
2f4bca6
Deliver cancellation before joining pending native receipts
SaladDay Sep 28, 2026
1f38e3b
Merge commit '5b5c10fc4afeb20a1f5ac52207a9810ece85dbed' into codex/ru…
SaladDay Sep 28, 2026
13c22c3
Retry queued Turns after Runtime preparation capacity rejection
SaladDay Sep 28, 2026
a5ff479
Settle unanswered Claude functions after confirmed cancellation
SaladDay Sep 28, 2026
541499b
Confirm native Codex terminal cleanup before cancellation settles
SaladDay Sep 28, 2026
fecf58d
Bound Codex terminal cleanup control writes
SaladDay Sep 28, 2026
b1fdd0d
Unify Runtime capability preparation across environment origins
SaladDay Sep 28, 2026
2c3de02
Deliver cancellation before joining pending native receipts
SaladDay Sep 28, 2026
f9c4633
Retry queued Turns after Runtime preparation capacity rejection
SaladDay Sep 28, 2026
996512a
Regenerate guides and API reference for Runtime preparation
SaladDay Sep 28, 2026
8f64eb5
Route all Runtime initialization through the common daemon protocol
SaladDay Sep 28, 2026
a7d3934
Regenerate guides for the common Runtime preparation contract
SaladDay Sep 28, 2026
e35d3c9
Integrate validated Session executor cancellation settlement
SaladDay Sep 28, 2026
108513b
Pin generated guides to integrated Runtime source
SaladDay Sep 28, 2026
da39b9e
Document retained Session identity in the name guard
SaladDay Sep 28, 2026
06f9c71
Expose custom Runtime capability roots to isolated initialization
SaladDay Sep 28, 2026
f75045a
Allow read-only Runtime snapshots within protected MiniMax directories
codex Sep 28, 2026
4608619
Align Codex preparation fixture with frozen Runtime configuration
SaladDay Sep 28, 2026
9815511
Exercise node initialization isolation through the Runtime peer
SaladDay Sep 28, 2026
19943a3
Merge pull request #195 from MiniMax-AI/codex/runtime-capability-unif…
SaladDay Sep 28, 2026
ed43316
Define the SandboxProvider onboarding contract and shared failure tests
SaladDay Sep 28, 2026
85b7eb1
Define the Core Runtime communication contract and reject incompatibl…
SaladDay Sep 28, 2026
1b272f8
Allow the existing Session key in Runtime contract fixtures
SaladDay Sep 28, 2026
21d67b9
feat(runtime): add native daemon platforms and unify bypass execution
SaladDay Sep 28, 2026
f441745
Measure allocation creation before background admission
SaladDay Sep 28, 2026
507124f
Measure allocation creation before background admission
SaladDay Sep 28, 2026
f0589bf
Merge pull request #199 from MiniMax-AI/codex/core-runtime-contract-2…
SaladDay Sep 28, 2026
0d894cb
Merge the reviewed Runtime protocol contract and preserve both integr…
SaladDay Sep 28, 2026
521d98f
Merge pull request #198 from MiniMax-AI/codex/sandbox-provider-contra…
SaladDay Sep 28, 2026
f2c89fc
refactor(runtime): share user-level preparation and remove system ins…
SaladDay Sep 28, 2026
281f243
Merge remote-tracking branch 'origin/codex/qualified-release-promotio…
SaladDay Sep 28, 2026
214068c
Fail reset reconciliation reads only after mutation acceptance
SaladDay Sep 28, 2026
0e84eda
docs(runtime): align native support and dependency preparation
SaladDay Sep 28, 2026
5c2cd42
fix(runtime): align native smoke names with name guard
SaladDay Sep 28, 2026
cb0e656
build: package pinned native installer distributions
SaladDay Sep 28, 2026
67c8c03
refactor(install): retire user-managed Docker installer
SaladDay Sep 28, 2026
71b025c
feat(installer): install verified native Harnesses with additive reco…
SaladDay Sep 28, 2026
138a1f1
Merge commit '0e84edaa' into codex/unified-harness-installer-20260929
SaladDay Sep 28, 2026
d9df2e1
build: reuse verified MiniMax tool archive cache
SaladDay Sep 28, 2026
b3a2aec
Merge pull request #201 from MiniMax-AI/codex/web-reset-read-timing-2…
SaladDay Sep 28, 2026
29dabf1
refactor(installer): keep native activation and checks in Harness ada…
SaladDay Sep 28, 2026
b549d02
Use native Runtime installation in Connect a host
SaladDay Sep 28, 2026
5ac1311
fix: resolve native bundle output aliases before containment checks
SaladDay Sep 28, 2026
ae13b0a
fix(runtime): own Codex descendants and remove retired file helpers
SaladDay Sep 28, 2026
9c06008
Merge remote-tracking branch 'origin/codex/qualified-release-promotio…
SaladDay Sep 28, 2026
42a9571
fix: archive Windows installer without drive-letter tar ambiguity
SaladDay Sep 28, 2026
8f43257
docs: define unified native installation and retire container setup g…
SaladDay Sep 28, 2026
5476f6e
Merge commit '9c060081d9d0bd6760d1b6d12772bec8290e5735' into codex/un…
SaladDay Sep 28, 2026
bcdfc60
docs: publish current native installation guide and README entry
SaladDay Sep 28, 2026
1bdd143
fix(runtime): validate native package launch and Claude bundle contract
SaladDay Sep 28, 2026
3e4951c
fix(installer): activate MiniMax MCP bridge rather than worker launcher
SaladDay Sep 28, 2026
98546d2
Merge commit '1bdd1433' into codex/unified-harness-installer-20260929
SaladDay Sep 28, 2026
fc23bd2
fix(installer): reject Claude bundles with retired preparation contracts
SaladDay Sep 28, 2026
430740f
fix(runtime): preserve completion clocks and official package responses
SaladDay Sep 28, 2026
221b48a
build: ship MiniMax in native Unix installer bundles
SaladDay Sep 28, 2026
f51f9e3
fix: resolve bundled ripgrep through its package API
SaladDay Sep 28, 2026
eae849b
fix(claude): load prepared MCP tools and resolve Skill aliases
SaladDay Sep 28, 2026
eab6b20
fix(installer): cancel native probes on installation interruption
SaladDay Sep 28, 2026
785f5de
Merge commit 'eae849bb' into codex/unified-harness-installer-20260929
SaladDay Sep 28, 2026
0c37059
Require stop before replacing native host credentials
SaladDay Sep 28, 2026
23f893e
docs: specify installer cancellation and system package boundaries
SaladDay Sep 28, 2026
7bcf828
fix: preserve runnable npm entrypoints in native bundles
SaladDay Sep 28, 2026
16a0342
fix(mcode): settle native tools before cancellation completes
SaladDay Sep 28, 2026
bcfd1df
fix(installer): propagate startup cancellation through enrollment and…
SaladDay Sep 28, 2026
16e1b74
Pair enrollment expiry checks with confirmed node data
SaladDay Sep 28, 2026
d902623
Merge commit '16a03428' into codex/unified-harness-installer-20260929
SaladDay Sep 28, 2026
af1e40e
Pair enrollment expiry checks with confirmed node data
SaladDay Sep 28, 2026
19ac80f
fix(installer): validate MiniMax companion readiness before installat…
SaladDay Sep 28, 2026
eee762f
docs: align getting-started host connection with native installation
SaladDay Sep 28, 2026
781a4dc
fix(runtime): honor required tool configuration and native MCP enviro…
SaladDay Sep 28, 2026
54d4f11
Merge commit '781a4dcd' into codex/unified-harness-installer-20260929
SaladDay Sep 28, 2026
fe21767
Merge pull request #200 from MiniMax-AI/codex/self-hosted-platforms-2…
SaladDay Sep 28, 2026
032ddc2
fix(installer): restrict startup to verified installed Harnesses
SaladDay Sep 28, 2026
326eaa1
fix(installer): reject direct connect for installed Runtimes
SaladDay Sep 28, 2026
eae2200
docs: align credential recovery and connection status guidance
SaladDay Sep 28, 2026
f7f1dba
Merge pull request #202 from MiniMax-AI/codex/unified-harness-install…
SaladDay Sep 28, 2026
014338c
refactor: remove dead adapter paths and consolidate English documenta…
SaladDay Sep 28, 2026
f51e432
merge current native installer and remove retired node update path
SaladDay Sep 28, 2026
5dc7c58
docs: fix pinned SDK setup and clarify current-only support
SaladDay Sep 28, 2026
d149e2a
docs: pin generated source links to reviewed content
SaladDay Sep 28, 2026
0f61211
test: handle process exit while checking child cleanup
SaladDay Sep 28, 2026
d79ce60
docs: remove duplicate Chinese web guides
SaladDay Sep 28, 2026
842f2a5
Merge pull request #203 from MiniMax-AI/codex/core-simplify-docs-2026…
SaladDay Sep 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
49 changes: 0 additions & 49 deletions .github/workflows/agents-executor.yml

This file was deleted.

11 changes: 0 additions & 11 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,6 @@ jobs:
--health-interval 5s
--health-timeout 5s
--health-retries 10
env:
CARGO_HOME: /home/runner/.oac/cache/executor-cargo
CARGO_TARGET_DIR: /home/runner/.oac/cache/executor-target
CARGO_BUILD_JOBS: 4
steps:
- uses: actions/checkout@v7
- uses: actions/setup-go@v7
Expand All @@ -47,13 +43,6 @@ jobs:
npm install --global pnpm@10.30.3
sudo apt-get update
sudo apt-get install -y build-essential pkg-config libssl-dev
rustup toolchain install 1.95.0 --profile minimal --component rustfmt --component clippy
- uses: actions/cache@v6
with:
path: |
~/.oac/cache/executor-cargo
~/.oac/cache/executor-target
key: core-executor-${{ runner.os }}-${{ hashFiles('packages/codex-executor/Cargo.lock') }}
- name: Install Web acceptance browser
run: |
pnpm install --frozen-lockfile
Expand Down
79 changes: 79 additions & 0 deletions .github/workflows/native-daemon.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
name: native-daemon

on:
pull_request:
workflow_dispatch:

permissions:
contents: read

jobs:
native:
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, macos-14, windows-2022]
runs-on: ${{ matrix.os }}
timeout-minutes: 30
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v7
- uses: actions/setup-go@v7
with:
go-version-file: go.mod
- name: Build the native daemon
run: go build -o "$RUNNER_TEMP/oac-daemon${{ runner.os == 'Windows' && '.exe' || '' }}" ./apps/parsar-daemon/cmd/parsar-daemon
- name: Native filesystem, authentication and process lifecycle
run: >-
go test -race -count=1
./internal/runtimefs
./apps/parsar-daemon/internal/auth
./apps/parsar-daemon/internal/paths
./apps/parsar-daemon/internal/daemonize
./apps/parsar-daemon/internal/agent/clirunner
- name: Native Harness ownership and environment identity
run: >-
go test -race -count=1
./apps/parsar-daemon/internal/agent/codex
./apps/parsar-daemon/internal/agent/claudesdk
./apps/parsar-daemon/internal/agent/mcode
-run 'TestJSONRPCClientOwnsToolDescendants|TestSelfHostedToolEnvironment'
- name: Native capability snapshots, files and installation
run: >-
go test -race -count=1
./apps/parsar-daemon/internal/localworkspace
./apps/parsar-daemon/internal/cli
-run 'TestNative|TestRuntimeInit|TestRuntimePreparationRejects|TestPreparationFreezesLocalContentsAcrossReconnect|TestSnapshotMarker'
- uses: actions/setup-node@v6
with:
node-version: '22'
- name: Windows npm and npx stdio launchers without network
if: runner.os == 'Windows'
run: >-
go test -race -count=1 -timeout=2m
./apps/parsar-daemon/internal/localworkspace
./apps/parsar-daemon/internal/cli
-run 'TestWindowsPackageManager|TestWindowsRuntimeMCP'
- name: Install pinned native Harness dependencies
run: |
npm install --global pnpm@10.30.3
pnpm install --frozen-lockfile --filter @parsar/claude-sdk-adapter...
pnpm --filter @parsar/claude-sdk-adapter build
npm install --prefix "$RUNNER_TEMP/native-tools" --no-save @openai/codex@0.153.4
mkdir -p "$RUNNER_TEMP/claude-runtime"
cp packages/claude-sdk-adapter/package.json "$RUNNER_TEMP/claude-runtime/"
cp -R packages/claude-sdk-adapter/dist "$RUNNER_TEMP/claude-runtime/"
npm install --prefix "$RUNNER_TEMP/claude-runtime" --omit=dev --ignore-scripts --package-lock=false
- name: Verify native Harness startup without model requests
run: |
if [[ "$RUNNER_OS" == Windows ]]; then
export CLAUDE_CODE_GIT_BASH_PATH='C:\Program Files\Git\bin\bash.exe'
fi
node scripts/native-harness-smoke.mjs --codex-package "$RUNNER_TEMP/native-tools/node_modules/@openai/codex" --claude-runtime "$RUNNER_TEMP/claude-runtime"
- uses: actions/upload-artifact@v6
with:
name: oac-daemon-${{ runner.os }}-${{ runner.arch }}
path: ${{ runner.temp }}/oac-daemon*
if-no-files-found: error
81 changes: 81 additions & 0 deletions .github/workflows/native-installer.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: native-installer

on:
pull_request:
workflow_dispatch:

permissions:
contents: read

jobs:
bundle:
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, macos-14, windows-2022]
runs-on: ${{ matrix.os }}
timeout-minutes: 30
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v7
- uses: actions/setup-go@v7
with:
go-version-file: go.mod
- uses: actions/setup-node@v6
with:
node-version: '22.22.0'
- name: Build the native daemon and test bundle boundaries
run: |
go build -ldflags "-X github.com/MiniMax-AI-Dev/parsar/apps/parsar-daemon/internal/cli.Version=$GITHUB_SHA" -o "$RUNNER_TEMP/oac-daemon${{ runner.os == 'Windows' && '.exe' || '' }}" ./apps/parsar-daemon/cmd/parsar-daemon
node --test scripts/build-native-installer.test.mjs
- name: Build pinned native components
run: |
npm install --global pnpm@10.30.3
pnpm install --frozen-lockfile --filter @parsar/claude-sdk-adapter...
pnpm --filter @parsar/claude-sdk-adapter build --outDir "$RUNNER_TEMP/claude-compiled"
pnpm --config.inject-workspace-packages=true --config.extend-node-path=false --filter @parsar/claude-sdk-adapter deploy --prod "$RUNNER_TEMP/claude-runtime"
rm -rf "$RUNNER_TEMP/claude-runtime/dist"
mv "$RUNNER_TEMP/claude-compiled" "$RUNNER_TEMP/claude-runtime/dist"
# Reify the dedicated frozen export lock without pnpm's symlink layout.
# Flattening isolated package links changes Node dependency resolution.
rm -rf "$RUNNER_TEMP/claude-runtime/node_modules"
pnpm --dir "$RUNNER_TEMP/claude-runtime" install --prod --frozen-lockfile --config.node-linker=hoisted --ignore-scripts
npm install --prefix "$RUNNER_TEMP/native-tools" --no-save @openai/codex@0.153.4
- name: Build the pinned MiniMax companion on Unix
if: runner.os != 'Windows'
run: |
source_repository="$(node -p 'require("./packages/mcode-harness/source.json").repository')"
source_revision="$(node -p 'require("./packages/mcode-harness/source.json").revision')"
source_version="$(node -p 'require("./packages/mcode-harness/source.json").version')"
git init --quiet "$RUNNER_TEMP/mcode-source"
git -C "$RUNNER_TEMP/mcode-source" remote add origin "$source_repository"
git -C "$RUNNER_TEMP/mcode-source" fetch --depth 1 origin "$source_revision"
git -C "$RUNNER_TEMP/mcode-source" checkout --detach FETCH_HEAD
npm install --prefix "$RUNNER_TEMP/mcode-native" --no-audit --no-fund --include=optional --install-strategy=nested "@minimax-ai/code@$source_version"
MCODE_NATIVE_SOURCE="$RUNNER_TEMP/mcode-source" \
MCODE_CLI_DIR="$RUNNER_TEMP/mcode-native/node_modules/@minimax-ai/code" \
MCODE_HARNESS_BUILD_DIR="$RUNNER_TEMP/minimax-runtime" \
bash scripts/build-mcode-harness.sh
- name: Package and exercise CLI-only installation, additions and reuse
run: |
if [[ "$RUNNER_OS" == Windows ]]; then
export CLAUDE_CODE_GIT_BASH_PATH='C:\Program Files\Git\bin\bash.exe'
fi
node scripts/build-native-installer-ci.mjs
- name: Verify native Harness protocols without model requests
run: |
if [[ "$RUNNER_OS" == Windows ]]; then
export CLAUDE_CODE_GIT_BASH_PATH='C:\Program Files\Git\bin\bash.exe'
fi
node scripts/native-harness-smoke.mjs --codex-binary "$RUNNER_TEMP/native-installer/components/codex/bin/codex${{ runner.os == 'Windows' && '.exe' || '' }}" --claude-runtime "$RUNNER_TEMP/native-installer/components/claude"
- name: Archive the native distribution
run: |
cd "$RUNNER_TEMP"
tar -C native-installer -czf "oac-native-installer-${{ runner.os }}-${{ runner.arch }}.tar.gz" .
- uses: actions/upload-artifact@v6
with:
name: oac-native-installer-${{ runner.os }}-${{ runner.arch }}
path: ${{ runner.temp }}/oac-native-installer-*.tar.gz
if-no-files-found: error
9 changes: 3 additions & 6 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ on:
type: string
offline:
description: Also create the full offline archive
default: false
default: true
type: boolean
draft_release:
description: Upload files to a new draft release; never publish
Expand Down Expand Up @@ -70,15 +70,12 @@ jobs:
npm install --global pnpm@10.30.3
sudo apt-get update
sudo apt-get install -y build-essential pkg-config libssl-dev
rustup toolchain install 1.95.0 --profile minimal
- uses: actions/cache@v6
with:
path: |
~/.oac/cache/go-build
~/.oac/cache/go-mod
~/.oac/cache/executor-cargo
~/.oac/cache/executor-target
key: core-release-${{ runner.os }}-${{ hashFiles('go.sum', 'packages/codex-executor/Cargo.lock') }}
key: core-release-${{ runner.os }}-${{ hashFiles('go.sum') }}
- name: Check release metadata and prepare pinned harnesses
run: |
PYTHONDONTWRITEBYTECODE=1 python3 scripts/core-distribution-manifest.test.py
Expand All @@ -88,7 +85,7 @@ jobs:
RELEASE_REVISION: ${{ steps.source.outputs.revision }}
RELEASE_TAG: ${{ steps.source.outputs.release_tag }}
RELEASE_REPOSITORY: ${{ github.repository }}
CORE_DISTRIBUTION_OFFLINE: ${{ inputs.offline && '1' || '0' }}
CORE_DISTRIBUTION_OFFLINE: ${{ (github.event_name == 'push' || inputs.offline) && '1' || '0' }}
run: |
inputs="$HOME/.oac/build/release-inputs/inputs.json"
AGENTS_RUNTIME_CODEX_PACKAGE="$(python3 -c 'import json,sys; print(json.load(open(sys.argv[1]))["codex"])' "$inputs")"
Expand Down
59 changes: 9 additions & 50 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,55 +1,14 @@
# OpenAgentCore development

OpenAgentCore is the independent execution service behind Parsar. Product business
code, its database and migrations stay in the Parsar repository. Read
[CONTRIBUTING.md](CONTRIBUTING.md) before changing code.
Read [CONTRIBUTING.md](CONTRIBUTING.md) before changing code. It owns repository
boundaries, architecture, workflow, required checks and independent blind review.
Use [docs/development.md](docs/development.md) for checkout and component guidance.

## Interfaces and credentials

Core serves three namespaces. Each has one kind of caller and its own credential;
no credential works in another namespace.

| Namespace | Caller | Credential | Contents |
| --- | --- | --- | --- |
| `/v1` | Applications | Project API key | Exactly the pinned OpenAI Agents API route set ([upstream.json](contracts/agents-api/upstream.json): SDK 3.13.0, `agents=v1`). Fields the official types lack live only in `x_agents_core` on Agents and Sessions (`harness`, `model_provider`). Nothing about deployment belongs here. |
| `/core/v1` | Core Web's server and operator scripts | Core key; Core stores its digest | Everything about operating the deployment: Projects and keys, resource reads and deletion, Session archive, credential issuance (node enrollment tokens, executor credentials), observability, audit, sandbox deployment and nodes. |
| `/api/v1` | Nodes, Runtime daemons, self-hosted executors | Machine credentials: enrollment tokens and executor credentials issued through `/core/v1`; nodes register their own credential with an enrollment token; Core writes daemon credentials into hosted sandboxes | Machine connections only; each credential works only on its own routes. |

- Core Web calls only `/core/v1`, through the Core clients in
`packages/agents-client` (`AdminClient`, `SandboxAdminClient`,
`CoreMetricsClient`). It never calls `/v1` or `/api/v1`, never uses
`OpenAIAgentsClient` and never forwards machine transport.
- Users sign in to Web with the Core key. Web's server forwards signed-in,
same-origin `/core/v1` requests with that key and never sends it to a browser.
The Core key cannot call `/v1`; a Project API key cannot call `/core/v1`.
- A new console need becomes a `/core/v1` route. Never add console or operations
features to `/v1`, or application features to `/core/v1`.
- List every route with its caller and credential in [docs/api/README.md](docs/api/README.md).

## Ownership

Backend: Core, `contracts/`, `packages/agents-client`, `services/core-console`,
the daemon, adapters, node service and installer. Frontend: `apps/web` and
`docs/web`. Agree on API shapes across the boundary; do not edit the other side's
code to make a test pass.

## Making changes

- Work in an isolated Git worktree on a feature branch and submit a PR.
- Keep Core, Runtime, Harness and Sandbox Provider ownership separate through the
shared protocols; see [decoupling](CONTRIBUTING.md#decoupling-principle).
- Identify every API route's caller and credential in [the API index](docs/api/README.md).
- Run `make sqlc-generate` after query changes and `make openapi` after handler
annotation changes; review the generated diffs. `make openapi` writes
`openapi.yaml` (`/v1`), `core.openapi.yaml` (`/core/v1`) and
`runtime.openapi.yaml` (`/api/v1`) in `contracts/agents-api/`. Update the
matching contract there and the API index in the same change.
- Do not add product database dependencies, bypass Core execution ownership, or
reproduce execution truth in a client.
changes; review and commit the generated contracts with their source changes.
- Run `make check` before reporting completion.

## Review

Choose independent blind review by risk: security, shared lifecycle ownership or
cross-package behavior. Give the reviewer only requirements, acceptance criteria,
boundaries, the repository path and the comparison baseline. Small verified fixes
may use self-review. Never use `codex exec` as a reviewer.

Documentation and code comments are English; user-facing copy may be bilingual.
- Update the canonical documentation in the same branch when changing a rule,
boundary, workflow or generated contract. Keep this file a short index.
Loading
Loading