Files
16gagent/COMPATIBILITY-STRATEGY.md
2026-06-06 10:40:48 +08:00

17 KiB
Raw Permalink Blame History

COMPATIBILITY-STRATEGY.md — OpenClaw Compatibility & Upgrade Strategy

Generated: 2026-06-06 05:20 GMT+8 Scope: AGENTS.md · GOVERNANCE.md · PORTFOLIO.md · Audit Scripts · Templates · OpenClaw Core Integration


A. Compatibility Surface Map

A1. Classification

Layer                   │ Path                             │ Type         │ OpenClaw Dep
════════════════════════╪═══════════════════════════════════╪══════════════╪══════════════
                        │                                   │              │
Protocol Layer          │ AGENTS.md                         │ Config       │ TOOL NAME
                        │ GOVERNANCE.md                     │ Config       │ NONE
                        │ PORTFOLIO.md                      │ Config       │ NONE
                        │                                   │              │
Configuration Layer     │ MEMORY.md                         │ Config       │ NONE
                        │ HEARTBEAT.md                      │ Config       │ NONE
                        │ SOUL.md / IDENTITY.md / USER.md   │ Config       │ NONE
                        │                                   │              │
Template Layer          │ scripts/templates/*               │ Config       │ NONE
                        │                                   │              │
Audit Engine            │ scripts/audit-agents.mjs          │ Script       │ NONE
                        │ scripts/audit-governance.mjs      │ Script       │ NONE
                        │ scripts/audit-portfolio.mjs       │ Script       │ NONE
                        │ scripts/audit-all.mjs             │ Script       │ NONE
                        │                                   │              │
Runtime                 │ scripts/runtime.mjs               │ Script       │ src/agent-runtime/*
                        │ scripts/guard-*.mjs               │ Script       │ NONE (tool name check only)
                        │                                   │              │
Orchestration           │ .openclaw/cron/jobs.json          │ OpenClaw     │ HIGH (cron format)
                        │ scripts/dream-cycle.sh            │ Script       │ OpenClaw cron trigger
                        │                                   │              │
Memory Integration      │ memory_search / memory_get        │ OpenClaw API │ HIGH (LLM tool)
                        │ ctx_search / ctx_index            │ OpenClaw API │ HIGH (LLM tool)

A2. Integration Points Detail

# Integration File OpenClaw Dependency Risk
IP1 ctx_search tool reference AGENTS.md §3b (Learning Context) Tool name in protocol doc LOW
IP2 memory_search tool reference AGENTS.md §3b (Learning Context) Tool name in protocol doc LOW
IP3 ctx_index tool reference AGENTS.md §Over-budget Tool name in protocol doc LOW
IP4 cron scheduling .openclaw/cron/ (Dream Cycle) OpenClaw cron format MEDIUM
IP5 memory_search tool name check scripts/guard-memory-backend.mjs String in code LOW
IP6 memory_get tool name check scripts/guard-memory-backend.mjs String in code LOW
IP7 Runtime pipeline imports scripts/runtime.mjs src/agent-runtime/* MEDIUM
IP8 Session context injection (injected by OpenClaw at runtime) Implicit MEDIUM
IP9 fs.readFileSync (stdin) scripts/runtime.mjs Node.js built-in NONE
IP10 Task execution cwd audit-all.mjs runs in workspace Agent workspace context LOW

A3. Surface Map Summary

OpenClaw Core                               Custom Workspace
─────────────                               ───────────────
Tool Runtime ───── tool name ref ──────────► AGENTS.md (§3b, §budget)
                                              
Cron Engine ───── cron config ─────────────► .openclaw/cron/jobs.json
               ───── cron trigger ─────────► scripts/dream-cycle.sh

Memory API  ───── memory_search ──────────► AGENTS.md (§3b)
               ───── memory_get ───────────► (used at runtime by agent)
               ───── ctx_search ───────────► AGENTS.md (§3b)
               ───── ctx_index ────────────► AGENTS.md (budget resolution)

Session API ───── context injection ──────► (runtime prompt context)
               ───── tool listing ─────────► guard-*.mjs (string checks)

Node.js fs  ◄──── fs.readFileSync ────────► audit-*.mjs (pure Node.js)
Node.js path◄──── path.resolve ───────────► audit-*.mjs (pure Node.js)

BEST PRACTICE: audit scripts have ZERO OpenClaw dependency.
              Protocol files have MINIMAL (5 tool name refs total).

B. Upgrade Risk Matrix

B1. Risk Classification

Risk Level Criteria Examples
LOW Only depends on public/stable interfaces Tool names (ctx_search, memory_search), markdown config formats
MEDIUM Depends on configuration format or structural assumptions Cron job format, session context structure, pipeline import paths
HIGH Modifies core runtime or depends on internal APIs None found in current workspace

B2. Risk Matrix

┌──────────────────────────────────────────────────────────────────┐
│ INTEGRATION              │ RISK  │ MIGRATION EFFORT  │ BREAKAGE  │
├──────────────────────────────────────────────────────────────────┤
│ AGENTS.md tool refs       │ LOW   │ None (name stable)│ UNLIKELY  │
│ GOVERNANCE.md             │ NONE  │ N/A               │ NONE      │
│ PORTFOLIO.md              │ NONE  │ N/A               │ NONE      │
│ audit-*.mjs               │ NONE  │ N/A               │ NONE      │
│ Templates (7 files)       │ NONE  │ N/A               │ NONE      │
│                           │       │                   │           │
│ cron/jobs.json            │ MEDIUM│ Re-export +        │ POSSIBLE  │
│                           │       │ re-register        │ (format   │
│                           │       │                    │ change)   │
│ dream-cycle.sh            │ MEDIUM│ Update cron        │ POSSIBLE  │
│                           │       │ registration       │           │
│                           │       │                    │           │
│ runtime.mjs (src/*)       │ MEDIUM│ Port to new        │ POSSIBLE  │
│                           │       │ runtime API        │           │
│                           │       │                    │           │
│ guard-memory-backend.mjs  │ LOW   │ Update string      │ UNLIKELY  │
│                           │       │ comparison         │           │
│                           │       │                    │           │
│ TASK EXECUTION            │ LOW   │ Standard exec      │ UNLIKELY  │
│ (fs/path/child_process)   │       │                    │           │
└──────────────────────────────────────────────────────────────────┘

B3. Upgrade Scenario Impact

Upgrade Type Impact Auto-Migration User Action
OpenClaw patch (x.y.Z) MINIMAL Run upgrade-test, expect 0 FAIL
OpenClaw minor (x.Y.0) LOW Partial Re-register cron jobs, verify tool names
OpenClaw major (X.0.0) MEDIUM Guided Run upgrade-playbook, possibly update compatibility layer
OpenClaw deprecation HIGH None Self-hosting mode (see §G)

C. Compatibility Architecture

C1. Layer Structure

┌─────────────────────────────────────────────────────────────┐
│                    CUSTOM PROTOCOL LAYER                     │
│  AGENTS.md · GOVERNANCE.md · PORTFOLIO.md                   │
│  (Protocol definitions — no OpenClaw direct refs)           │
└───────────────────────────┬─────────────────────────────────┘
                            │ references abstract interfaces
                            ▼
┌─────────────────────────────────────────────────────────────┐
│                  COMPATIBILITY LAYER (abstract)               │
│                                                              │
│  Interface               │ OpenClaw Binding                  │
│ ─────────────────────────┼────────────────────────────────── │
│  knowledge_base_search() │ ctx_search()                      │
│  memory_query()          │ memory_search() / memory_get()    │
│  knowledge_index()       │ ctx_index()                       │
│  schedule_job()          │ cron()                            │
│  agent_plan()            │ sessions_spawn()                  │
│  tool_exec()             │ exec()                            │
│  file_read()             │ read()                            │
│  web_fetch_raw()         │ web_fetch()                       │
│                                                              │
│  ALL abstract → concrete mapping in ONE place.               │
└───────────────────────────┬─────────────────────────────────┘
                            │ calls through
                            ▼
┌─────────────────────────────────────────────────────────────┐
│                    OPENCLAW CORE                             │
│  Tool Runtime · Cron Engine · Memory API · Session API      │
└─────────────────────────────────────────────────────────────┘

C2. Key Design Decision

DO NOT create a physical compatibility layer file.

Why:

  • Current integration surface is MINIMAL (5 tool name refs in one file)
  • Adding a physical layer adds ~2KB of code and maintenance
  • The tool names (ctx_search, memory_search) are STABLE — OpenClaw has not renamed them
  • A 5-entry mapping is trivially updateable inline

IF a rename happens, the change is:

AGENTS.md: s/ctx_search/knowledge_search/g  (2 occurrences)
AGENTS.md: s/memory_search/memory_query/g    (2 occurrences)
AGENTS.md: s/ctx_index/knowledge_index/g     (1 occurrence)
guard-memory-backend.mjs: update string comparison (1 occurrence)

That's 5 lines changed across 2 files. A physical compatibility layer would be over-engineering at this scale.

C3. Watch Points

Monitor these OpenClaw interfaces for breaking changes:

Interface Stability Check Frequency
Tool names (ctx_search, memory_search, etc.) Stable Per major upgrade
Cron job format Stable Per major upgrade
Session context structure Internal Not relied upon
src/agent-runtime/ (custom) Custom code Per local change

D. Version Contract

See version-contract.md for the full contract.

D1. Summary

Field Value
Supported OpenClaw v0.9.x, v0.10.x
Required Interfaces Tool names, cron format, exec, file I/O
Forbidden Interfaces None currently used

E. Upgrade Test Suite

See scripts/upgrade-test.mjs.

E1. Test Coverage

Test What It Checks
AGENTS compatibility All sections present, no syntax errors
GOVERNANCE compatibility All sections present, state machine valid
PORTFOLIO compatibility All sections present, project states valid
Audit compatibility All 4 audit scripts run without crash
Template compatibility All 7 templates are valid markdown
Cross-ref integrity No broken references between docs

F. Migration Strategy

See upgrade-playbook.md for the full playbook.

F1. Strategy Summary

Upgrade Pre-check Migration Verification Rollback
Minor Run upgrade-test Update cron, verify tools Re-run audit-all Revert cron config
Major Read changelog Update compatibility mappings Full audit + manual review git revert
Patch Run upgrade-test No action Re-run audit-all N/A

G. Self-Hosting Readiness

G1. Assessment

Scored across 5 dimensions, 020 points each.

Dimension Score Rationale
Protocol Files 20/20 Pure markdown. Zero runtime dependency.
Audit Scripts 20/20 Pure Node.js fs/path. Zero OpenClaw dependency.
Templates 20/20 Pure markdown templates.
Runtime 10/20 runtime.mjs depends on src/agent-runtime/* (custom code, but needs an engine)
Orchestration 10/20 Dream Cycle depends on OpenClaw cron. Can be replaced with system cron.
Total 80/100

G2. Self-Hosting Mode Architecture

Without OpenClaw Core:

Protocol Files ──► Manual reading (no automation loss)
                   
Audit Scripts  ──► node scripts/audit-all.mjs  (STILL WORKS)
                   
Templates      ──► Manual filling (no automation loss)
                   
Runtime        ──► Would need: express or CLI wrapper for src/agent-runtime/*
                   
Orchestration  ──► systemd/crontab instead of OpenClaw cron
                   
Memory         ──► JSON files + grep instead of memory_search (reduced capability)

G3. Critical Path

The ONLY non-replaceable dependency is:

  1. LLM model access — without an LLM, the protocol is a static document
  2. Tool execution — without OpenClaw tools, the agent can't execute tool calls

Everything else can be replaced with standard POSIX tools + Node.js.

G4. Self-Hosting Readiness Score: 80/100

Top 20% gap is LLM-dependent features (memory_search, ctx_search at runtime). Protocol layer (documents + scripts) is fully portable.


H. Final Recommendation

H1. Current Status

Compatibility:  ✅ PASS  — 0 conflicts, 0 internal API deps
Self-Hosting:   ✅ 80/100 — All documents + scripts portable
Upgrade Risk:   ✅ LOW   — 5 tool name refs in 2 files
Audit Safety:   ✅ PASS  — 0 OpenClaw deps in audit scripts
Maintenance:    ✅ LOW   — Patch upgrades require 0 changes

H2. Do NOT

  • Do NOT create a physical compatibility layer (over-engineering for 5 refs)
  • Do NOT abstract tool names in protocol files (increases complexity, reduces clarity)
  • Do NOT modify protocol files to "future-proof" — the current codebase is already future-proof

H3. Do

  • Run scripts/upgrade-test.mjs after each OpenClaw upgrade
  • Monitor the 5 tool name refs during major upgrades
  • Keep version-contract.md up to date with tested OpenClaw versions
  • Follow upgrade-playbook.md for major upgrades

H4. OpenClaw Upgrade Cost Estimate

Patch upgrade (v0.9.1 → v0.9.2):    0 min, no changes needed
Minor upgrade (v0.9 → v0.10):       5 min, re-register cron, verify tool names
Major upgrade (v1.0):                15 min, run upgrade-test, update 5 refs if renamed
OpenClaw deprecation:                2h, configure alternate LLM + crontab

H5. Summary

The three-layer protocol architecture (AGENTS + GOVERNANCE + PORTFOLIO) is designed for portability — it's pure markdown with zero framework lock-in. The audit scripts are pure Node.js with zero OpenClaw dependency. The only integration points are 5 tool name references in AGENTS.md, which are trivially updateable.

No action required for current version. Upgrade cost: near-zero. Self-hosting readiness: excellent.