feat(claws): apply schema-v1 profile requirements (#115962)

* test(claws): model provenance columns in CLI state mock

* fix(claws): normalize owned upgrade preflight

* fix(claws): normalize owned upgrade preflight

* fix(claws): normalize owned upgrade preflight

* fix(claws): satisfy current validation gates
This commit is contained in:
Gio Della-Libera
2026-08-07 18:51:45 -07:00
committed by GitHub
parent 67f1baea58
commit 7774f9a36c
64 changed files with 4807 additions and 625 deletions
+58 -18
View File
@@ -63,12 +63,17 @@ concise handoff with evidence.
```
OpenClaw automatically discovers the optional `profiles/openclaw.yml` file.
There is no manifest pointer. Other harnesses may discover their own
No manifest pointer is required. Other harnesses may discover their own
conventional profile, such as `profiles/codex.yml`, without changing the
portable manifest.
Experimental packages that used `metadata.openclaw.config` must move that file
to `profiles/openclaw.yml` and remove the metadata entry.
The older `metadata.openclaw.config` pointer is deprecated but still read, so
packages published against it keep working. Reading one reports a
`deprecated_openclaw_profile_pointer` warning; move that file to
`profiles/openclaw.yml` and remove the metadata entry. A pointer that is not a
package-relative `.yml`/`.yaml` path is rejected, and a pointer that references
a different file while `profiles/openclaw.yml` also exists is rejected as a
conflict.
```yaml
schemaVersion: 1
@@ -110,6 +115,35 @@ The conventional profile is limited to 256 KiB, must be JSON-compatible YAML, ma
not use aliases, anchors, tags, or merge keys, and must be a regular,
non-symlinked, non-hardlinked file inside the package.
An OpenClaw profile may also declare harness-specific extension requirements:
```yaml
schemaVersion: 1
agent: {}
extensions:
- id: incident-tools
kind: plugin
format: claude
source: clawhub
ref: "@acme/incident-tools"
version: 2.0.0
```
`format` asserts the artifact format that OpenClaw must detect (`openclaw`,
`claude`, `codex`, or `cursor`). The canonical plugin preflight resolves the
exact artifact and reports which components the current OpenClaw adapter maps
and which remain unavailable. Missing identity, integrity, format detection, or
adapter identity blocks apply. Extension-backed plugins use the existing
plugin installer and ownership model; they are shared host requirements, not
Claw-owned members or a second package system.
OpenClaw ignores foreign harness profiles during apply. Package integrity still
covers every published package byte, while a development snapshot binds the
portable manifest, bootstrap and workspace sources, and the selected OpenClaw
profile. Status and doctor report adapter mapping drift or unavailable
inspection. Export writes extension-backed plugins to `profiles/openclaw.yml`
and does not duplicate them in the portable `packages` list.
Package and workspace paths must remain inside the package root. Manifests are
limited to 1 MiB, package metadata to 256 KiB, and workspace sources enforce
separate per-file and aggregate limits. Workspace sources also reject symlinked
@@ -174,10 +208,13 @@ Skills and plugins use exact ClawHub versions:
The dry run uses the existing skill and plugin preflight paths to resolve the
exact artifact, integrity, and any ClawHub trust warning before consent. The
warning remains visible in the integrity-bound plan. Apply installs missing artifacts
or reuses matching ones and records whether the Claw introduced or referenced
each resource. Plugins remain process-wide OpenClaw capabilities rather than
per-agent installations.
warning remains visible in the integrity-bound plan. Each requirement is shown
as satisfied, missing-installable, conflicting, or setup-required. The exact
plan consent approves missing installs; OpenClaw completes those canonical
plugin actions before creating the agent or workspace. Apply reuses matching
artifacts and records whether the Claw introduced or referenced each resource.
Plugins remain process-wide OpenClaw capabilities rather than per-agent
installations.
Cron jobs declare scheduled work for the new agent:
@@ -222,7 +259,9 @@ removal follow the same ownership policy as other Claw resources.
## Inspect and preview
Validate the source without planning local changes:
Validate the source without planning local changes. For OpenClaw profile
extensions, inspect also performs the canonical read-only artifact probe and
reports mapped and unavailable components:
```bash
openclaw claws inspect ./incident-triage.claw.json
@@ -252,11 +291,11 @@ defaults collide with local state. For disposable profiles and parallel validati
pass an explicit `--workspace`; `OPENCLAW_STATE_DIR` relocates runtime state but
does not change the default workspace location.
Adding a Claw creates the new agent and workspace configuration, seeds optional
first-run instructions, writes declared workspace assets, installs or reuses
declared skill and plugin artifacts, and records package, MCP, and cron
provenance. Existing files are not overwritten, and retries fail closed when
owned content drifted.
Adding a Claw first realizes consented shared plugin requirements, then creates
the new agent and workspace configuration, seeds optional first-run
instructions, writes declared workspace assets, realizes workspace skills, and
records package, MCP, and cron provenance. Existing files are not overwritten,
and retries fail closed when owned content drifted.
## Inspect installed state
@@ -300,9 +339,9 @@ The plan compares current provenance and live state with the target manifest.
It reports agent, workspace, package, MCP, cron, and ownership changes,
including capability escalations and blockers. Capability escalations have
separate machine-readable records and `!` lines with exact redacted effects in
human output. Resolved package integrity, install identity, and any trust
warning are included. Removing a package declaration releases this Claw's edge
without uninstalling the artifact during update. The eventual
human output. Resolved package integrity, install identity, trust warnings, and
remaining local setup prerequisites are included. Removing a package declaration
releases this Claw's edge without uninstalling the artifact during update. The eventual
exact `planIntegrity` confirmation binds that disclosed set as well as ordinary
content changes. Hosts may use the same records for a separate dialog or an
aggregate multi-agent review. Apply the exact reviewed plan with explicit
@@ -339,8 +378,9 @@ The default removes eligible managed state and releases referenced state.
Modified files and resources with another current owner are retained or
blocked. Cleanup choices are part of the plan digest; `--yes` never broadens
them. Globally installed plugins are retained while this Claw's reference is
released; use the ordinary plugin lifecycle separately when you intend to
uninstall a process-wide plugin.
released. Removal reports which retained requirements Claw add introduced; use
the ordinary plugin lifecycle separately when you intend to uninstall a
process-wide plugin.
To remove unchanged Claw-introduced references that have no other current
owner, include `--remove-unused` in both preview and apply. To select exact