Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d54112aa47 | ||
|
|
3cf9958cb9 |
@@ -0,0 +1,172 @@
|
||||
---
|
||||
authorization_id: TASK-V2R1-RUNTIME-INTEGRATION-P1-20260714
|
||||
task_id: TASK-V2R1-RUNTIME-INTEGRATION-P1-20260714
|
||||
executor: GPT_CODEX
|
||||
status: PASS
|
||||
started_at: 2026-07-14T02:24:00+08:00
|
||||
finished_at: 2026-07-14T02:27:46+08:00
|
||||
repository: /data/aios-gitops/workspace
|
||||
review_branch: review/codex/v2r1-runtime-integration-discovery-20260714
|
||||
review_worktree: /data/aios-gitops/worktrees/v2r1-runtime-integration-discovery-20260714
|
||||
result_commit: SELF
|
||||
result_commit_resolution: The containing commit is resolved by Git from the review branch because embedding its object ID would change the commit identity.
|
||||
parent_commit: 3cf9958cb94614449e093639cbf902216d73447f
|
||||
source_commit: 502ef30642597fb0b70b90ae2e8a0b6af217d80e
|
||||
gate1_commit: 7f5d5d90b3111c35fb00044f385358f528e3344e
|
||||
merge_base: 1a9cb9095e6e76c548c967e03cb7a3e47b85134b
|
||||
main_graph_commits: 21
|
||||
source_graph_commits: 44
|
||||
main_changed_paths: 16
|
||||
source_changed_paths: 42
|
||||
approved_replay_paths: 38
|
||||
excluded_source_paths: 4
|
||||
changed_path_overlap: 0
|
||||
workspace_clean_after_commit: true
|
||||
rollback_target: 3cf9958cb94614449e093639cbf902216d73447f
|
||||
runtime_modified: false
|
||||
tests_modified: false
|
||||
main_modified: false
|
||||
tag_created: false
|
||||
baseline_modified: false
|
||||
service_modified: false
|
||||
deployment_performed: false
|
||||
force_push_used: false
|
||||
risk: HIGH
|
||||
recommendation: Proceed to a separately authorized P2 allowlist replay from exact main; keep tag, baseline, staging and deployment blocked until P4/P5 close every listed blocker.
|
||||
---
|
||||
|
||||
# V2R1 Runtime Integration P1 Discovery Result
|
||||
|
||||
## Decision
|
||||
|
||||
**PASS for discovery only.** The repository graph, path classifications, preservation boundary, exclusion boundary, and safe integration strategy are now explicit. This result does not authorize runtime integration or release activity.
|
||||
|
||||
## Authoritative identities
|
||||
|
||||
| Item | Verified value |
|
||||
|---|---|
|
||||
| Current main | `3cf9958cb94614449e093639cbf902216d73447f` |
|
||||
| V2R1 source | `502ef30642597fb0b70b90ae2e8a0b6af217d80e` |
|
||||
| Gate1 PASS commit | `7f5d5d90b3111c35fb00044f385358f528e3344e` |
|
||||
| Merge base | `1a9cb9095e6e76c548c967e03cb7a3e47b85134b` |
|
||||
| Main graph | `21` commits / `16` changed paths |
|
||||
| Source graph | `44` commits / `42` changed paths |
|
||||
| Changed-path overlap | `0` |
|
||||
|
||||
Gate1 commit is a direct child of source and adds one OpenClaw report. Main already contains the identical accepted report blob `ff31f7ab603d7a7cd07319e6f8422ae464916179`. The Gate1 commit must not be merged again.
|
||||
|
||||
## Exact classification
|
||||
|
||||
### Preserve from main — 16 paths
|
||||
|
||||
```text
|
||||
.agent/results/openclaw/RESULT-V2R1-G1-OPENCLAW-FINAL-EVIDENCE-20260714.md
|
||||
deployments/V1R4C6/backup-result.md
|
||||
deployments/V1R4C6/deployment-result.md
|
||||
deployments/V1R4C6/preflight-result.md
|
||||
deployments/V1R4C6/rollback-result.md
|
||||
deployments/V1R4C6/verification-result.md
|
||||
docs/incidents/WEIXIN_TEXT_IMAGE_CACHE_ISOLATION_20260711.md
|
||||
docs/superpowers/plans/2026-07-12-weixin-quoted-text-failclosed.md
|
||||
docs/superpowers/specs/2026-07-12-weixin-quoted-text-failclosed-design.md
|
||||
fixes/patch_openclaw_weixin_bigint.py
|
||||
fixes/patch_openclaw_weixin_hermes.py
|
||||
fixes/patch_openclaw_weixin_outbound_quotes.py
|
||||
patches/deploy_v1r4c6-production-20260711.branch.json
|
||||
tests/test_weixin_bigint_parser.py
|
||||
tests/test_weixin_image_followup_intent.py
|
||||
tests/test_weixin_outbound_quote_timestamp.py
|
||||
```
|
||||
|
||||
### Replay from source — 38 paths
|
||||
|
||||
```text
|
||||
.gitignore
|
||||
active-runtime/app/aios_v2r1/audit.py
|
||||
active-runtime/app/aios_v2r1/cell_manager.py
|
||||
active-runtime/app/aios_v2r1/channel_adapter.py
|
||||
active-runtime/app/aios_v2r1/cli.py
|
||||
active-runtime/app/aios_v2r1/fleet.py
|
||||
active-runtime/app/aios_v2r1/hermes_fabric.py
|
||||
active-runtime/app/aios_v2r1/hermes_profile.py
|
||||
active-runtime/app/aios_v2r1/identity.py
|
||||
active-runtime/app/aios_v2r1/memory_scope.py
|
||||
active-runtime/app/aios_v2r1/message_ledger.py
|
||||
active-runtime/app/aios_v2r1/router.py
|
||||
active-runtime/app/aios_v2r1/runtime.py
|
||||
active-runtime/app/aios_v2r1/secret_scope.py
|
||||
active-runtime/app/aios_v2r1/session_pool.py
|
||||
active-runtime/app/aios_v2r1/tenant_context.py
|
||||
agents/registry.yaml
|
||||
data/webops.sqlite3 [delete]
|
||||
deploy/v2r1/healthcheck.sh
|
||||
deploy/v2r1/install.sh
|
||||
deploy/v2r1/validate.sh
|
||||
docs/architecture/AIOS_AGENT_AUDIT_PLANE.md
|
||||
docs/architecture/AIOS_V1R5_to_V2R1_Migration_Plan.md
|
||||
docs/architecture/AIOS_V2R1_OpenClaw_Tenant_Cell_Hermes_Shared_Agent_Fabric_Architecture.md
|
||||
openclaw/plugins/aios-tenant-boundary/dist/index.js
|
||||
openclaw/plugins/aios-tenant-boundary/dist/policy.js
|
||||
openclaw/plugins/aios-tenant-boundary/openclaw.plugin.json
|
||||
openclaw/plugins/aios-tenant-boundary/package.json
|
||||
release/v2r1c0-rc1/RELEASE.md
|
||||
tests/integration/test_runtime_ingress_flow.py
|
||||
tests/v2r1/test_acceptance_manifest.md
|
||||
tests/v2r1/test_hermes_contract.md
|
||||
tests/v2r1/test_hermes_fabric.py
|
||||
tests/v2r1/test_message_ledger_append.py
|
||||
tests/v2r1/test_router_isolation.py
|
||||
tests/v2r1/test_runtime_identity_binding.py
|
||||
tests/v2r1/test_runtime_wiring.py
|
||||
tests/v2r1/test_tenant_context.py
|
||||
```
|
||||
|
||||
### Exclude from source — 4 paths
|
||||
|
||||
```text
|
||||
.agent/results/codex/RESULT-V2R1-202607132000-CODEX.md
|
||||
.agent/results/codex/RESULT-V2R1-G1-CODEX-CLEANUP-20260713.md
|
||||
patches/release_v2r1c0-tenant-cell-fabric-20260712.branch.json
|
||||
release/v2r1c0-rc1/STATUS.md
|
||||
```
|
||||
|
||||
The task record contains the category-level counts, exact commit exclusions, and reason for every excluded class.
|
||||
|
||||
## Strategy and invariants
|
||||
|
||||
The approved future strategy is allowlist final-blob replay from source onto exact main. It intentionally avoids merging or cherry-picking historical evidence ancestry. Thirty-seven present paths are restored from source and the tracked `data/webops.sqlite3` path is explicitly deleted.
|
||||
|
||||
The future integration must preserve:
|
||||
|
||||
- exact first parent and rollback target `3cf9958cb94614449e093639cbf902216d73447f`;
|
||||
- all 16 main-only paths above;
|
||||
- Gate1 evidence blob `ff31f7ab603d7a7cd07319e6f8422ae464916179`;
|
||||
- `VERSION` blob `dd4988511ee5957d599098408c89de0c8b758df9` (`V1R4C6`);
|
||||
- baseline registry blob `81b5bbe59397e01d7fff048a5a91c9636ee85696`;
|
||||
- no tag, baseline, service, deployment, or force-push mutation.
|
||||
|
||||
## Baseline and tag evidence
|
||||
|
||||
`V1R4C6` is annotated tag object `356a8a8c1860b94b7d61a456c29228c88e57d963`, peeled release commit `d8cf6058e99f5c7f2dfd2b45a406c0a7edf955b2`. The baseline registry pointer is `e204a90398bf646d46245b3088226749fa056edd`, while the current registry-containing commit is `031215916826f1f0700147242a77878b8514b719`. They are distinct identities. No `V2*` tag exists and P1 creates none.
|
||||
|
||||
## Conflict and workspace evidence
|
||||
|
||||
Current main contains six tracked conflict-marker lines in two files. Source contains zero, and the two corrected source blobs are in the replay allowlist. Final verification must still prove zero markers.
|
||||
|
||||
The canonical workspace had two unrelated untracked controller audit records during discovery. They were not cleaned or included. The P1 review branch uses a separate worktree created from exact main.
|
||||
|
||||
## Blockers
|
||||
|
||||
- Attachment-composition regression is not closed by candidate-bound evidence.
|
||||
- Node plugin tests are missing even though `npm test` references `test/*.test.js`.
|
||||
- Plugin versions differ: `2.1.0-rc.1` and `2.1.0-rc1`.
|
||||
- V2R1 install tooling hardcodes an old release branch.
|
||||
- RC1 `STATUS.md` is stale and excluded.
|
||||
- Static scripts do not prove a real OpenClaw runtime probe or rollback recovery.
|
||||
- Existing release automation masks failures and does not safely update the current baseline schema.
|
||||
|
||||
These blockers prevent release, tagging, baseline promotion, staging, and deployment. They do not invalidate the P1 discovery result.
|
||||
|
||||
## Disposition
|
||||
|
||||
P1 produces evidence only. A separately authorized P2 may implement the exact allowlist replay. P4/P5 must bind tests, security scans, attachment regression, Node plugin verification, real runtime inspection, and rollback evidence to the resulting immutable integration commit before any release action.
|
||||
-86
@@ -1,86 +0,0 @@
|
||||
---
|
||||
task_id: TASK-AIOS-OPENCLAW-P6-MAIN-FASTFORWARD-20260714T014500+0800
|
||||
executor: OPENCLAW
|
||||
status: PASS
|
||||
owner_approved: true
|
||||
main_before: 6b70a3308031e3ef8e04a89ca02fd3bdcab1ebcc
|
||||
integration_commit: 3cf9958cb94614449e093639cbf902216d73447f
|
||||
integration_parent: 6b70a3308031e3ef8e04a89ca02fd3bdcab1ebcc
|
||||
main_after: 3cf9958cb94614449e093639cbf902216d73447f
|
||||
changed_files: 1
|
||||
accepted_blob: ff31f7ab603d7a7cd07319e6f8422ae464916179
|
||||
push_mode: fast-forward-only
|
||||
force_push_used: false
|
||||
merge_commit_created: false
|
||||
tag_created: false
|
||||
baseline_changed: false
|
||||
deployment_performed: false
|
||||
---
|
||||
|
||||
# P6 Main Fast-Forward Report
|
||||
|
||||
## Summary
|
||||
|
||||
| Field | Value |
|
||||
|-------|-------|
|
||||
| Task ID | `TASK-AIOS-OPENCLAW-P6-MAIN-FASTFORWARD-20260714T014500+0800` |
|
||||
| Executor | OPENCLAW |
|
||||
| Status | **PASS** |
|
||||
| Owner approved | true |
|
||||
|
||||
## Git State
|
||||
|
||||
| Attribute | Before | After |
|
||||
|-----------|--------|-------|
|
||||
| `origin/main` | `6b70a3308031e3ef8e04a89ca02fd3bdcab1ebcc` | `3cf9958cb94614449e093639cbf902216d73447f` |
|
||||
| Integration branch | — | `integration/v2r1-g1-evidence-main-20260714` |
|
||||
| Integration commit | — | `3cf9958cb94614449e093639cbf902216d73447f` |
|
||||
| Integration parent | — | `6b70a3308031e3ef8e04a89ca02fd3bdcab1ebcc` |
|
||||
|
||||
## Pre-push Verification
|
||||
|
||||
| Check | Command | Exit | Result |
|
||||
|-------|---------|------|--------|
|
||||
| Current main unchanged | `git rev-parse origin/main^{commit}` = `6b70a33...` | 0 | ✅ |
|
||||
| Integration exists remotely | `git rev-parse origin/integration/v2r1-g1-evidence-main-20260714^{commit}` = `3cf9958...` | 0 | ✅ |
|
||||
| Integration is direct child of main | `git rev-parse 3cf9958...^` = `6b70a33...` | 0 | ✅ |
|
||||
| Accepted blob matches | `git rev-parse 3cf9958...:.agent/results/openclaw/RESULT-V2R1-G1-OPENCLAW-FINAL-EVIDENCE-20260714.md` = `ff31f7a...` | 0 | ✅ |
|
||||
| Prefix `3cf9958` matches | `test "${TARGET#3cf9958}" != "$TARGET"` | 0 | ✅ |
|
||||
| Exactly 1 commit in range | `git rev-list --count 6b70a33... 3cf9958...` = `1` | 0 | ✅ |
|
||||
| Main is ancestor of integration | `git merge-base --is-ancestor 6b70a33... 3cf9958...` | 0 | ✅ |
|
||||
| Diff is exactly 1 file | `git diff --name-only 6b70a33... 3cf9958...` → 1 file | 0 | ✅ |
|
||||
| Changed file is accepted evidence | path = `.agent/results/openclaw/RESULT-V2R1-G1-OPENCLAW-FINAL-EVIDENCE-20260714.md` | 0 | ✅ |
|
||||
|
||||
## Push
|
||||
|
||||
```bash
|
||||
git push --porcelain origin 3cf9958...:refs/heads/main
|
||||
```
|
||||
Output:
|
||||
```
|
||||
3cf9958...:refs/heads/main 6b70a33..3cf9958 Done
|
||||
```
|
||||
Exit code: **0**
|
||||
|
||||
## Post-push Verification
|
||||
|
||||
| Check | Command | Exit | Result |
|
||||
|-------|---------|------|--------|
|
||||
| origin/main updated | `git rev-parse origin/main^{commit}` = `3cf9958...` | 0 | ✅ |
|
||||
| origin/main == integration commit | `test "$NEW_MAIN" = "$TARGET"` | 0 | ✅ |
|
||||
| Post-push diff is 1 file | `git diff --name-only 6b70a33... 3cf9958...` → 1 file | 0 | ✅ |
|
||||
| Diff file is accepted evidence | path = `.agent/results/openclaw/RESULT-V2R1-G1-OPENCLAW-FINAL-EVIDENCE-20260714.md` | 0 | ✅ |
|
||||
|
||||
## Constraints
|
||||
|
||||
| Operation | Performed |
|
||||
|-----------|-----------|
|
||||
| Force push | false |
|
||||
| Merge commit | false |
|
||||
| Tag created | false |
|
||||
| Baseline changed | false |
|
||||
| Deployment | false |
|
||||
|
||||
## Recommendation
|
||||
|
||||
**PASS** — `origin/main` fast-forwarded from `6b70a33...` to `3cf9958...` with a single evidence-only commit containing the accepted Gate 1 clean-room final evidence blob `ff31f7a...`. No force push, merge, baseline change, or deployment performed.
|
||||
@@ -0,0 +1,156 @@
|
||||
# V2R1 Gate 1 — Clean-Room Final Evidence
|
||||
|
||||
## Summary
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Date | 2026-07-14 |
|
||||
| Source commit | `502ef30642597fb0b70b90ae2e8a0b6af217d80e` |
|
||||
| Source branch | `origin/work/v2r1-integration-quality-2000` |
|
||||
| Result branch | `fix/v2r1-g1-cleanroom-final-evidence-r2-20260714` |
|
||||
| Result commit reference | `HEAD` |
|
||||
| Gate | `G1` |
|
||||
| Variant | `openclaw-cleanroom` |
|
||||
| Status | `PASS` |
|
||||
|
||||
The immutable report uses `HEAD` for post-commit verification. The resolved commit object ID is recorded by the external acceptance result after this file is committed; a Git commit cannot reliably embed its own object ID because changing the file changes the tree and commit identity.
|
||||
|
||||
## Machine-Readable Result
|
||||
|
||||
```yaml
|
||||
gate: G1
|
||||
variant: openclaw-cleanroom
|
||||
date: 2026-07-14
|
||||
status: PASS
|
||||
source_commit: 502ef30642597fb0b70b90ae2e8a0b6af217d80e
|
||||
source_branch: origin/work/v2r1-integration-quality-2000
|
||||
result_branch: fix/v2r1-g1-cleanroom-final-evidence-r2-20260714
|
||||
result_commit_ref: HEAD
|
||||
tests_total: 32
|
||||
tests_passed: 32
|
||||
tests_failed: 0
|
||||
cleanup_scan: PASS
|
||||
secret_scan: PASS
|
||||
rollback_status: PASS
|
||||
recovery_verified: true
|
||||
workspace_clean_at_test_completion: true
|
||||
merge_performed: false
|
||||
tag_created: false
|
||||
baseline_promoted: false
|
||||
deployment_performed: false
|
||||
```
|
||||
|
||||
## Evidence Provenance
|
||||
|
||||
The test, cleanup, secret-scan, rollback, and recovery results below are execution evidence supplied by OpenClaw for the Gate 1 run. This correction commit changes only the evidence report and does not claim that the GitOps API reran the suites.
|
||||
|
||||
## HMAC Test-Key Length Verification
|
||||
|
||||
| Test file | Variable | Test-only value | Length |
|
||||
|---|---|---|---:|
|
||||
| `tests/v2r1/test_runtime_wiring.py:24` | `internal_key` | `b"runtime-internal-context-key-is-32bytes"` | 39 bytes |
|
||||
| `tests/v2r1/test_runtime_wiring.py:25` | `ingress_key` | `b"runtime-external-ingress-key-is-32bytes"` | 39 bytes |
|
||||
|
||||
Both values are test fixtures. The supplied evidence reports that no production secret was introduced.
|
||||
|
||||
## Test Results Supplied by OpenClaw
|
||||
|
||||
### V2R1 suite — 29 of 29 passed
|
||||
|
||||
```shell
|
||||
PYTHONPATH=active-runtime/app python3 -m pytest \
|
||||
tests/v2r1/test_hermes_fabric.py \
|
||||
tests/v2r1/test_message_ledger_append.py \
|
||||
tests/v2r1/test_router_isolation.py \
|
||||
tests/v2r1/test_runtime_identity_binding.py \
|
||||
tests/v2r1/test_runtime_wiring.py \
|
||||
tests/v2r1/test_tenant_context.py -v
|
||||
# Reported result: 29 passed, exit code 0
|
||||
```
|
||||
|
||||
### Integration suite — 3 of 3 passed
|
||||
|
||||
```shell
|
||||
PYTHONPATH=active-runtime/app python3 -m pytest tests/integration/test_runtime_ingress_flow.py -v
|
||||
# Reported result: 3 passed, exit code 0
|
||||
```
|
||||
|
||||
**Reported total: 32 of 32 passed.**
|
||||
|
||||
## Cleanup, Security, and Recovery Evidence
|
||||
|
||||
| Check | Supplied result |
|
||||
|---|---|
|
||||
| Conflict-marker scan | PASS |
|
||||
| Cleanup scan | PASS |
|
||||
| Secret scan | PASS |
|
||||
| Legitimate hardcoded test keys | Two 39-byte fixtures in `test_runtime_wiring.py` |
|
||||
| Rollback rehearsal | PASS; 13 of 13 core tests reported after rollback to `6077331` |
|
||||
| Recovery verification | PASS |
|
||||
|
||||
## Deployment State
|
||||
|
||||
| Operation | Performed |
|
||||
|---|---|
|
||||
| Merge | No |
|
||||
| Tag creation | No |
|
||||
| Baseline promotion | No |
|
||||
| Staging deployment | No |
|
||||
| Production deployment | No |
|
||||
|
||||
## Post-Commit Verification
|
||||
|
||||
Run from the repository root after the commit is created:
|
||||
|
||||
```shell
|
||||
set -eu
|
||||
|
||||
SOURCE=502ef30642597fb0b70b90ae2e8a0b6af217d80e
|
||||
RESULT_FILE=.agent/results/openclaw/RESULT-V2R1-G1-OPENCLAW-FINAL-EVIDENCE-20260714.md
|
||||
|
||||
git rev-parse HEAD
|
||||
|
||||
test "$(git diff --name-only "$SOURCE" HEAD | wc -l | tr -d ' ')" = "1"
|
||||
test "$(git diff --name-only "$SOURCE" HEAD)" = "$RESULT_FILE"
|
||||
|
||||
git ls-tree -r HEAD -- "$RESULT_FILE"
|
||||
|
||||
python3 - "$RESULT_FILE" <<'PY'
|
||||
from pathlib import Path
|
||||
import re
|
||||
import sys
|
||||
|
||||
path = Path(sys.argv[1])
|
||||
text = path.read_text(encoding="utf-8")
|
||||
|
||||
encoded_tokens = [
|
||||
[84, 66, 68],
|
||||
[80, 69, 78, 68, 73, 78, 71],
|
||||
[84, 79, 68, 79],
|
||||
[70, 73, 88, 77, 69],
|
||||
[91, 123, 99, 111, 109, 109, 105, 116, 125, 93],
|
||||
]
|
||||
tokens = ["".join(chr(value) for value in item) for item in encoded_tokens]
|
||||
angle_token = re.compile(chr(60) + r"[^>\n]+" + chr(62))
|
||||
|
||||
hits = [token for token in tokens if token in text]
|
||||
if angle_token.search(text):
|
||||
hits.append("angle-delimited-token")
|
||||
|
||||
if hits:
|
||||
print("TOKEN_SCAN=FAIL", hits)
|
||||
raise SystemExit(1)
|
||||
|
||||
print("TOKEN_SCAN=PASS")
|
||||
PY
|
||||
```
|
||||
|
||||
## Acceptance Conditions
|
||||
|
||||
Gate 1 is eligible to proceed only when the external acceptance record confirms all of the following against the resolved `HEAD` commit:
|
||||
|
||||
- the commit exists and has source commit `502ef30642597fb0b70b90ae2e8a0b6af217d80e` as its parent;
|
||||
- exactly this one report file changed;
|
||||
- the committed report contains no unresolved legacy token;
|
||||
- the result tree is not identical to rejected commit `71239b4d187e683e05fd22fc9d5df8ae324e3390`;
|
||||
- no merge, tag, baseline promotion, or deployment occurred.
|
||||
@@ -0,0 +1,185 @@
|
||||
---
|
||||
authorization_id: TASK-V2R1-RUNTIME-INTEGRATION-P1-20260714
|
||||
task_id: TASK-V2R1-RUNTIME-INTEGRATION-P1-20260714
|
||||
executor: GPT_CODEX
|
||||
status: DISCOVERY_COMPLETE
|
||||
started_at: 2026-07-14T02:24:00+08:00
|
||||
finished_at: 2026-07-14T02:27:46+08:00
|
||||
repository: /data/aios-gitops/workspace
|
||||
review_branch: review/codex/v2r1-runtime-integration-discovery-20260714
|
||||
review_worktree: /data/aios-gitops/worktrees/v2r1-runtime-integration-discovery-20260714
|
||||
main_commit: 3cf9958cb94614449e093639cbf902216d73447f
|
||||
source_commit: 502ef30642597fb0b70b90ae2e8a0b6af217d80e
|
||||
gate1_commit: 7f5d5d90b3111c35fb00044f385358f528e3344e
|
||||
merge_base: 1a9cb9095e6e76c548c967e03cb7a3e47b85134b
|
||||
result_path: .agent/results/codex/RESULT-V2R1-RUNTIME-INTEGRATION-P1-20260714.md
|
||||
write_scope:
|
||||
- .agent/tasks/codex/TASK-V2R1-RUNTIME-INTEGRATION-P1-20260714.md
|
||||
- .agent/results/codex/RESULT-V2R1-RUNTIME-INTEGRATION-P1-20260714.md
|
||||
forbidden_actions:
|
||||
- modify_runtime_or_tests
|
||||
- merge_or_push_main
|
||||
- create_or_move_tag
|
||||
- update_baseline
|
||||
- change_service_or_deploy
|
||||
---
|
||||
|
||||
# V2R1 Runtime Integration P1 Discovery Task
|
||||
|
||||
## Objective
|
||||
|
||||
Produce a reproducible, evidence-only discovery record for integrating the approved V2R1 source tree onto current main without importing divergent historical evidence ancestry. P1 does not implement the integration.
|
||||
|
||||
## Locked graph
|
||||
|
||||
- Authoritative main: `3cf9958cb94614449e093639cbf902216d73447f`.
|
||||
- Approved V2R1 source: `502ef30642597fb0b70b90ae2e8a0b6af217d80e`.
|
||||
- Accepted Gate1 evidence commit: `7f5d5d90b3111c35fb00044f385358f528e3344e`.
|
||||
- Merge base: `1a9cb9095e6e76c548c967e03cb7a3e47b85134b`.
|
||||
- Main-only graph: `21` commits and `16` changed paths.
|
||||
- Source-only graph: `44` commits and `42` changed paths.
|
||||
- Main/source changed-path overlap: `0` paths.
|
||||
|
||||
## Main paths that must be preserved exactly — 16
|
||||
|
||||
1. `.agent/results/openclaw/RESULT-V2R1-G1-OPENCLAW-FINAL-EVIDENCE-20260714.md`
|
||||
2. `deployments/V1R4C6/backup-result.md`
|
||||
3. `deployments/V1R4C6/deployment-result.md`
|
||||
4. `deployments/V1R4C6/preflight-result.md`
|
||||
5. `deployments/V1R4C6/rollback-result.md`
|
||||
6. `deployments/V1R4C6/verification-result.md`
|
||||
7. `docs/incidents/WEIXIN_TEXT_IMAGE_CACHE_ISOLATION_20260711.md`
|
||||
8. `docs/superpowers/plans/2026-07-12-weixin-quoted-text-failclosed.md`
|
||||
9. `docs/superpowers/specs/2026-07-12-weixin-quoted-text-failclosed-design.md`
|
||||
10. `fixes/patch_openclaw_weixin_bigint.py`
|
||||
11. `fixes/patch_openclaw_weixin_hermes.py`
|
||||
12. `fixes/patch_openclaw_weixin_outbound_quotes.py`
|
||||
13. `patches/deploy_v1r4c6-production-20260711.branch.json`
|
||||
14. `tests/test_weixin_bigint_parser.py`
|
||||
15. `tests/test_weixin_image_followup_intent.py`
|
||||
16. `tests/test_weixin_outbound_quote_timestamp.py`
|
||||
|
||||
Additional immutable main invariants:
|
||||
|
||||
- `VERSION` remains `V1R4C6`, blob `dd4988511ee5957d599098408c89de0c8b758df9`.
|
||||
- `baseline/current.json` remains blob `81b5bbe59397e01d7fff048a5a91c9636ee85696`.
|
||||
- Accepted Gate1 evidence remains blob `ff31f7ab603d7a7cd07319e6f8422ae464916179`.
|
||||
- The future integration commit must have `3cf9958cb94614449e093639cbf902216d73447f` as its first-parent/rollback target.
|
||||
|
||||
## Approved source-tree allowlist — 38 paths
|
||||
|
||||
### Python V2R1 runtime — 15
|
||||
|
||||
1. `active-runtime/app/aios_v2r1/audit.py`
|
||||
2. `active-runtime/app/aios_v2r1/cell_manager.py`
|
||||
3. `active-runtime/app/aios_v2r1/channel_adapter.py`
|
||||
4. `active-runtime/app/aios_v2r1/cli.py`
|
||||
5. `active-runtime/app/aios_v2r1/fleet.py`
|
||||
6. `active-runtime/app/aios_v2r1/hermes_fabric.py`
|
||||
7. `active-runtime/app/aios_v2r1/hermes_profile.py`
|
||||
8. `active-runtime/app/aios_v2r1/identity.py`
|
||||
9. `active-runtime/app/aios_v2r1/memory_scope.py`
|
||||
10. `active-runtime/app/aios_v2r1/message_ledger.py`
|
||||
11. `active-runtime/app/aios_v2r1/router.py`
|
||||
12. `active-runtime/app/aios_v2r1/runtime.py`
|
||||
13. `active-runtime/app/aios_v2r1/secret_scope.py`
|
||||
14. `active-runtime/app/aios_v2r1/session_pool.py`
|
||||
15. `active-runtime/app/aios_v2r1/tenant_context.py`
|
||||
|
||||
### OpenClaw plugin — 4
|
||||
|
||||
1. `openclaw/plugins/aios-tenant-boundary/dist/index.js`
|
||||
2. `openclaw/plugins/aios-tenant-boundary/dist/policy.js`
|
||||
3. `openclaw/plugins/aios-tenant-boundary/openclaw.plugin.json`
|
||||
4. `openclaw/plugins/aios-tenant-boundary/package.json`
|
||||
|
||||
### Tests and contracts — 9
|
||||
|
||||
1. `tests/integration/test_runtime_ingress_flow.py`
|
||||
2. `tests/v2r1/test_acceptance_manifest.md`
|
||||
3. `tests/v2r1/test_hermes_contract.md`
|
||||
4. `tests/v2r1/test_hermes_fabric.py`
|
||||
5. `tests/v2r1/test_message_ledger_append.py`
|
||||
6. `tests/v2r1/test_router_isolation.py`
|
||||
7. `tests/v2r1/test_runtime_identity_binding.py`
|
||||
8. `tests/v2r1/test_runtime_wiring.py`
|
||||
9. `tests/v2r1/test_tenant_context.py`
|
||||
|
||||
### Static deployment tooling — 3
|
||||
|
||||
1. `deploy/v2r1/healthcheck.sh`
|
||||
2. `deploy/v2r1/install.sh`
|
||||
3. `deploy/v2r1/validate.sh`
|
||||
|
||||
### Architecture and release documents — 4
|
||||
|
||||
1. `docs/architecture/AIOS_AGENT_AUDIT_PLANE.md`
|
||||
2. `docs/architecture/AIOS_V1R5_to_V2R1_Migration_Plan.md`
|
||||
3. `docs/architecture/AIOS_V2R1_OpenClaw_Tenant_Cell_Hermes_Shared_Agent_Fabric_Architecture.md`
|
||||
4. `release/v2r1c0-rc1/RELEASE.md`
|
||||
|
||||
### Cleanup and governance — 3
|
||||
|
||||
1. `.gitignore`
|
||||
2. `agents/registry.yaml`
|
||||
3. `data/webops.sqlite3` — explicit tracked-file deletion, not a restore operation.
|
||||
|
||||
The replay operation restores the `37` present paths from source and explicitly removes `data/webops.sqlite3`. No directory-wide restore is allowed outside this list.
|
||||
|
||||
## Excluded source paths — 4
|
||||
|
||||
1. `.agent/results/codex/RESULT-V2R1-202607132000-CODEX.md` — historical branch evidence.
|
||||
2. `.agent/results/codex/RESULT-V2R1-G1-CODEX-CLEANUP-20260713.md` — historical branch evidence.
|
||||
3. `patches/release_v2r1c0-tenant-cell-fabric-20260712.branch.json` — stale branch-specific patch metadata.
|
||||
4. `release/v2r1c0-rc1/STATUS.md` — stale status: references tree `6569065` and contradicts later test/rollback evidence.
|
||||
|
||||
## Excluded commit ancestry
|
||||
|
||||
- Do not merge source commit ancestry and do not cherry-pick any of its `44` source-only commits. Replay only the approved final blobs.
|
||||
- Do not merge Gate1 commit `7f5d5d90b3111c35fb00044f385358f528e3344e`; main already contains its accepted evidence blob.
|
||||
- Do not replay result-only source commits `d6ba7e8fa859407ec55acf49b5468bba5eac96da`, `b9e1f9db66eb08282b7b690199e56461d28dd76d`, or `502ef30642597fb0b70b90ae2e8a0b6af217d80e` as commits.
|
||||
- Explicitly exclude rejected OpenClaw candidates `7a2f16ee72e944737a9f6995e511ef176413ae6b`, `b1d3439ee9e66b5eed1c94595a22bc630d893b6e`, `38320044b54c172c28877a81f291478267dd7b9e`, `7fd63b55f27b23658ea26e2a39d949c7b1e91dda`, and `71239b4d187e683e05fd22fc9d5df8ae324e3390`.
|
||||
- Prior Codex final-verification commit `0eebcf0b72f06c02205fdb6e300ceb5b3a5647a7` is not an integration input.
|
||||
|
||||
## Strategy decision
|
||||
|
||||
Use allowlist file replay from the immutable source tree, not a historical merge or commit-range cherry-pick. The two branches diverged for `21` and `44` commits after the merge base. Historical ancestry includes obsolete result reports and branch metadata, while main contains V1R4C6 incident fixes and the already accepted Gate1 evidence. Final-blob replay makes the intended runtime delta explicit and keeps those histories out of the future integration commit.
|
||||
|
||||
P2 must start from exact main, revalidate all refs, restore only the 37 present allowlist paths from source, remove the one tracked SQLite path, and stop if any additional path appears.
|
||||
|
||||
## Conflict preview
|
||||
|
||||
- Current main has `6` tracked conflict-marker lines across `agents/registry.yaml` and `docs/architecture/AIOS_AGENT_AUDIT_PLANE.md`.
|
||||
- Source has `0` tracked conflict-marker lines.
|
||||
- Both corrected source blobs are in the allowlist; the final tree must scan to zero markers.
|
||||
- The changed-path overlap between main and source deltas is zero, but this does not waive blob-preservation checks.
|
||||
|
||||
## Baseline and tag distinction
|
||||
|
||||
- Annotated tag object `356a8a8c1860b94b7d61a456c29228c88e57d963` is `V1R4C6` and peels to release commit `d8cf6058e99f5c7f2dfd2b45a406c0a7edf955b2`.
|
||||
- `baseline/current.json` records baseline registry pointer `e204a90398bf646d46245b3088226749fa056edd`; its latest modifying commit is `031215916826f1f0700147242a77878b8514b719`.
|
||||
- The tag object, peeled release commit, registry pointer, and registry-containing commit are separate audit identities.
|
||||
- No V2 tag exists. Future approved namespace is `refs/tags/V2R1C0`; P1 does not create it.
|
||||
|
||||
## Current workspace pollution
|
||||
|
||||
At discovery time, canonical workspace `/data/aios-gitops/workspace` contained two unrelated untracked controller records:
|
||||
|
||||
- `audit/controller-runs/c-1783966122.json`
|
||||
- `audit/controller-runs/c-1783966722.json`
|
||||
|
||||
They are excluded. All P1 writes occur in the isolated worktree, and no canonical workspace cleanup is authorized.
|
||||
|
||||
## Known blockers
|
||||
|
||||
1. Attachment-composition regression lacks a closed, candidate-bound regression result.
|
||||
2. Plugin `npm test` targets `test/*.test.js`, but source tracks no Node test files.
|
||||
3. Plugin package version `2.1.0-rc.1` differs from manifest version `2.1.0-rc1`.
|
||||
4. `deploy/v2r1/install.sh` hardcodes release branch `release/v2r1c0-tenant-cell-fabric-20260712`.
|
||||
5. `release/v2r1c0-rc1/STATUS.md` is stale and is excluded rather than silently rewritten.
|
||||
6. `validate.sh --install/--rollback` and `healthcheck.sh` do not prove a real OpenClaw runtime or rollback path.
|
||||
7. `scripts/release_version.sh` masks failures and does not match the active baseline registry schema; it must not be used.
|
||||
|
||||
## Exit criteria
|
||||
|
||||
P1 passes when the two evidence files are the only commit delta, the commit parent is exact main, the isolated worktree is clean after commit, and the review branch is pushed without force. Runtime integration, main update, tag, baseline promotion, and deployment remain separate blocked phases.
|
||||
@@ -1,135 +0,0 @@
|
||||
---
|
||||
task_id: TASK-AIOS-OPENCLAW-P6-MAIN-FASTFORWARD-20260714T014500+0800
|
||||
created_at: 2026-07-14T01:45:00+08:00
|
||||
timezone: Asia/Shanghai
|
||||
project: AIOS
|
||||
version: V2R1 Gate 1
|
||||
executor: OPENCLAW
|
||||
status: READY
|
||||
objective: Update origin/main by fast-forward only to the reviewed evidence-only integration commit.
|
||||
repository: /data/aios-gitops/workspace
|
||||
owner_approved: true
|
||||
owner_approval_context: The owner explicitly authorized proceeding to the next step after P6 integration review PASS.
|
||||
expected_main_commit: 6b70a3308031e3ef8e04a89ca02fd3bdcab1ebcc
|
||||
integration_branch: integration/v2r1-g1-evidence-main-20260714
|
||||
integration_commit_expected_prefix: 3cf9958
|
||||
accepted_file: .agent/results/openclaw/RESULT-V2R1-G1-OPENCLAW-FINAL-EVIDENCE-20260714.md
|
||||
accepted_blob: ff31f7ab603d7a7cd07319e6f8422ae464916179
|
||||
review_result_commit: 86a32e4
|
||||
work_branch: task/openclaw/p6-main-fastforward-20260714-014500
|
||||
scope:
|
||||
- Re-read remote main and integration refs.
|
||||
- Enforce direct-child and exact single-file conditions.
|
||||
- Push integration commit to refs/heads/main without force.
|
||||
- Verify remote main after push.
|
||||
- Record the execution result on the task branch.
|
||||
out_of_scope:
|
||||
- Merge commit
|
||||
- Squash or rebase
|
||||
- Force push or force-with-lease
|
||||
- Tag creation
|
||||
- Baseline promotion
|
||||
- Deployment
|
||||
- Business-code or test changes
|
||||
risk_level: MEDIUM
|
||||
production_authorized: false
|
||||
result_file: .agent/results/openclaw/RESULT-TASK-AIOS-OPENCLAW-P6-MAIN-FASTFORWARD-20260714T014500+0800.md
|
||||
---
|
||||
|
||||
# Owner-authorized P6 main fast-forward
|
||||
|
||||
## Mandatory preconditions
|
||||
|
||||
Execute from the authoritative repository, without switching the shared workspace to `main`:
|
||||
|
||||
```bash
|
||||
set -euo pipefail
|
||||
|
||||
REPO=/data/aios-gitops/workspace
|
||||
EXPECTED_MAIN=6b70a3308031e3ef8e04a89ca02fd3bdcab1ebcc
|
||||
INTEGRATION_BRANCH=integration/v2r1-g1-evidence-main-20260714
|
||||
ACCEPTED_FILE=.agent/results/openclaw/RESULT-V2R1-G1-OPENCLAW-FINAL-EVIDENCE-20260714.md
|
||||
ACCEPTED_BLOB=ff31f7ab603d7a7cd07319e6f8422ae464916179
|
||||
|
||||
cd "$REPO"
|
||||
git fetch --prune origin
|
||||
|
||||
CURRENT_MAIN=$(git rev-parse origin/main^{commit})
|
||||
TARGET=$(git rev-parse "origin/$INTEGRATION_BRANCH"^{commit})
|
||||
TARGET_PARENT=$(git rev-parse "$TARGET^" )
|
||||
TARGET_BLOB=$(git rev-parse "$TARGET:$ACCEPTED_FILE")
|
||||
|
||||
printf 'CURRENT_MAIN=%s\nTARGET=%s\nTARGET_PARENT=%s\nTARGET_BLOB=%s\n' \
|
||||
"$CURRENT_MAIN" "$TARGET" "$TARGET_PARENT" "$TARGET_BLOB"
|
||||
|
||||
test "$CURRENT_MAIN" = "$EXPECTED_MAIN"
|
||||
test "$TARGET_PARENT" = "$EXPECTED_MAIN"
|
||||
test "$TARGET_BLOB" = "$ACCEPTED_BLOB"
|
||||
test "${TARGET#3cf9958}" != "$TARGET"
|
||||
test "$(git rev-list --count "$EXPECTED_MAIN..$TARGET")" = "1"
|
||||
git merge-base --is-ancestor "$EXPECTED_MAIN" "$TARGET"
|
||||
|
||||
mapfile -t CHANGED < <(git diff --name-only "$EXPECTED_MAIN" "$TARGET")
|
||||
test "${#CHANGED[@]}" = "1"
|
||||
test "${CHANGED[0]}" = "$ACCEPTED_FILE"
|
||||
|
||||
# This is a normal non-force push. It must fail if remote main has moved incompatibly.
|
||||
git push --porcelain origin "$TARGET:refs/heads/main"
|
||||
|
||||
git fetch origin main
|
||||
NEW_MAIN=$(git rev-parse origin/main^{commit})
|
||||
test "$NEW_MAIN" = "$TARGET"
|
||||
|
||||
mapfile -t POST_CHANGED < <(git diff --name-only "$EXPECTED_MAIN" "$NEW_MAIN")
|
||||
test "${#POST_CHANGED[@]}" = "1"
|
||||
test "${POST_CHANGED[0]}" = "$ACCEPTED_FILE"
|
||||
|
||||
echo MAIN_FAST_FORWARD=PASS
|
||||
```
|
||||
|
||||
## Abort conditions
|
||||
|
||||
Return `BLOCKED` and do not push if any condition differs:
|
||||
|
||||
- `origin/main` is no longer `6b70a3308031e3ef8e04a89ca02fd3bdcab1ebcc`;
|
||||
- the integration commit is not a direct child of that commit;
|
||||
- the integration range contains more than one commit;
|
||||
- the diff contains anything other than the accepted evidence file;
|
||||
- the file blob differs from `ff31f7ab603d7a7cd07319e6f8422ae464916179`;
|
||||
- the push would require force, merge, squash or rebase.
|
||||
|
||||
## Required result
|
||||
|
||||
Use an isolated worktree for the task branch. Commit and push the result file with:
|
||||
|
||||
```text
|
||||
result(TASK-AIOS-OPENCLAW-P6-MAIN-FASTFORWARD-20260714T014500+0800): record main fast-forward
|
||||
```
|
||||
|
||||
The result must contain:
|
||||
|
||||
```yaml
|
||||
task_id: TASK-AIOS-OPENCLAW-P6-MAIN-FASTFORWARD-20260714T014500+0800
|
||||
executor: OPENCLAW
|
||||
status: PASS | BLOCKED | FAILED
|
||||
owner_approved: true
|
||||
main_before:
|
||||
integration_commit:
|
||||
integration_parent:
|
||||
main_after:
|
||||
changed_files:
|
||||
accepted_blob:
|
||||
push_mode: fast-forward-only
|
||||
force_push_used: false
|
||||
merge_commit_created: false
|
||||
tag_created: false
|
||||
baseline_changed: false
|
||||
deployment_performed: false
|
||||
commands:
|
||||
exit_codes:
|
||||
blockers:
|
||||
remaining_risks:
|
||||
recommendation:
|
||||
```
|
||||
|
||||
Do not create a tag, change the baseline, or deploy after the push. Return the complete result commit ID.
|
||||
Reference in New Issue
Block a user