Sync agent state from PC at 2026-05-15 16:32:18
This commit is contained in:
@@ -19,7 +19,6 @@ Bring the Windows 11 always-on PC, Tencent Cloud VPS OpenClaw Gateway, phone Con
|
||||
- Frozen website policy: strict freeze during ICP/public-security filing review. Agents must not change the `smartmotor.cloud` homepage, content reachable from homepage links, static assets, Nginx routing, bind mounts, container images, or `/opt/services/docker-composite.yml` entries that could alter public website output.
|
||||
- Communication MVP: use Git-backed polling sync scripts under `sync/` plus task files under `tasks/`. This reduces manual pull/push but is not the final async-notification design.
|
||||
- Sync-health monitoring: CORRECTION monitors tracked heartbeat and error files under `sync-state/`; no separate sync monitor agent is used at this stage.
|
||||
- User-facing status entry: `USER_STATUS.md`. Users should not need to read internal task, handoff, evidence, or sync-state files for routine status.
|
||||
- Future communication target: when the baseline path is stable, design an event-driven coordinator using Gitea webhooks, Gitea Issues, OpenClaw events, or Cursor SDK agent orchestration.
|
||||
|
||||
## Agent Roles
|
||||
@@ -37,9 +36,8 @@ Bring the Windows 11 always-on PC, Tencent Cloud VPS OpenClaw Gateway, phone Con
|
||||
|
||||
| Gate | Required Evidence | Owner | Status |
|
||||
|---|---|---|---|
|
||||
| G0A Collaboration mechanism aligned | User-approved agent roles, Git polling MVP, sync-health handling, status entry, and hard safety boundaries | ORCHESTRATOR | Done |
|
||||
| G0B OpenClaw system requirements aligned | User-approved final system effect, component responsibilities, PC execution permissions, Tailscale role, phone Control UI path, later channels, and G2/G3/G4 acceptance criteria | ORCHESTRATOR | Pending |
|
||||
| G1 Baseline discovered | PC and VPS read-only status snapshots accepted by independent verifiers | PC_EXECUTOR, VPS_EXECUTOR, verifiers | Done |
|
||||
| G0 Requirements aligned | User-approved mission, roles, and acceptance criteria | ORCHESTRATOR | Pending |
|
||||
| G1 Baseline discovered | PC and VPS read-only status snapshots | PC_EXECUTOR, VPS_EXECUTOR, verifiers | Pending |
|
||||
| G2 Gateway/node pairing ready | PC `node run` evidence and VPS approval evidence | PC_EXECUTOR, VPS_EXECUTOR | Pending |
|
||||
| G3 Execution smoke test | Harmless command result proves execution came from the PC node | PC_VERIFIER | Pending |
|
||||
| G4 Persistent service verified | `node install/start/status` and reboot survival evidence | PC_VERIFIER, CORRECTION | Pending |
|
||||
@@ -53,26 +51,12 @@ Bring the Windows 11 always-on PC, Tencent Cloud VPS OpenClaw Gateway, phone Con
|
||||
| T1 | Create standalone Gitea repo for this control plane | User + ORCHESTRATOR | T0 | Done |
|
||||
| T2 | Sync this scaffold to Gitea and open on PC/VPS Cursor | ORCHESTRATOR + VPS_EXECUTOR | T1 | Done |
|
||||
| T2.1 | Add polling sync and task-file communication MVP | ORCHESTRATOR | T2 | In Progress |
|
||||
| T3 | Run read-only PC baseline discovery | PC_EXECUTOR | T2.1 | Accepted |
|
||||
| T4 | Run read-only VPS baseline discovery | VPS_EXECUTOR | T2.1 | Accepted |
|
||||
| T5 | Verify PC baseline before any PC change | PC_VERIFIER | T3 | Accepted |
|
||||
| T6 | Verify VPS baseline before any VPS change | VPS_VERIFIER | T4 | Accepted |
|
||||
| T7 | Monitor drift, sync-health failures, conflicts, unsafe changes, and missing evidence | CORRECTION | G0A | Claimed |
|
||||
| T3 | Run read-only PC baseline discovery | PC_EXECUTOR | T2.1 | Ready |
|
||||
| T4 | Run read-only VPS baseline discovery | VPS_EXECUTOR | T2.1 | Ready |
|
||||
| T5 | Verify both baselines before any config change | PC_VERIFIER + VPS_VERIFIER | T3, T4 | Pending |
|
||||
|
||||
## Acceptance Criteria Draft
|
||||
|
||||
G0B is still pending. Before G2 can open, ORCHESTRATOR must discuss and freeze:
|
||||
|
||||
- Final effect: how phone, PC, and VPS should collaborate through OpenClaw.
|
||||
- Responsibility boundaries for the VPS Gateway, DeepSeek, and the Docker stack.
|
||||
- Windows PC execution-node allowed capabilities and forbidden capabilities.
|
||||
- Whether Tailscale is an optional enhancement or a required prerequisite.
|
||||
- Phone Control UI access path and acceptance method.
|
||||
- Whether QQ or later channels are included in the current stage or deferred.
|
||||
- Concrete acceptance criteria for G2 Gateway/node pairing, G3 execution smoke test, and G4 persistent service verification.
|
||||
|
||||
Existing draft outcomes:
|
||||
|
||||
- The PC can act as an OpenClaw execution node connected to the existing Gateway.
|
||||
- The Gateway continues to coexist with Nginx, Gitea, Confluence, and Postgres on the VPS.
|
||||
- The existing `smartmotor.cloud` website content remains unchanged during filing review, including homepage content and linked content reachable from the homepage.
|
||||
@@ -89,7 +73,6 @@ Existing draft outcomes:
|
||||
- VPS-related agents must treat the `smartmotor.cloud` website defined by `/opt/services/docker-composite.yml` as frozen: no edits to homepage content, linked page content, routing, static assets, bind mounts, container images, or Nginx rules that could alter what public visitors see.
|
||||
- Polling sync scripts are convenience automation only. If they report conflict, authentication failure, or unexpected files, stop and let CORRECTION review.
|
||||
- Sync scripts must publish non-secret heartbeat/error status under `sync-state/`. Heartbeat older than 2 minutes is warning; older than 5 minutes is blocked.
|
||||
- Keep `USER_STATUS.md` updated as the concise user-facing status page; `AGENT_BOARD.md` and `tasks/*.md` remain internal agent ledgers.
|
||||
- Task files under `tasks/` are the agent-to-agent work contract. Chat messages are not the source of truth.
|
||||
- Any system-level change requires a rollback note before execution.
|
||||
- Any blocking issue must be recorded in the relevant handoff file and surfaced to ORCHESTRATOR.
|
||||
|
||||
@@ -38,9 +38,4 @@ Detect drift, unsafe assumptions, missing evidence, sync-health failures, confli
|
||||
|
||||
## Last Update
|
||||
|
||||
2026-05-15 16:03 UTC+8 sync-health check completed after `git pull`.
|
||||
|
||||
- `sync-state/heartbeat-pc.json`: present, status `clean`, age about 41 seconds at check time.
|
||||
- `sync-state/heartbeat-vps.json`: present, status `clean`, age about 52 seconds at check time.
|
||||
- `sync-state/error-*.md`: none present.
|
||||
- Decision: sync-health is not blocked; any prior sync-health blocked state is cleared. T7 remains `claimed` for ongoing CORRECTION monitoring.
|
||||
Template created during control-plane bootstrap.
|
||||
|
||||
@@ -21,23 +21,17 @@ Bootstrap the shared Gitea-backed control plane, then coordinate read-only basel
|
||||
- VPS target path: `/home/ubuntu/openclaw-control-plane`.
|
||||
- Access mode: HTTPS.
|
||||
- Default branch: `main`.
|
||||
- G0A collaboration mechanism is complete: the user confirmed agent roles, Git polling MVP, sync-health handling, `USER_STATUS.md` as user entry, and non-mutation/freeze boundaries.
|
||||
- G0B OpenClaw system requirements are pending: final system effect, component responsibilities, PC execution permissions, Tailscale role, phone Control UI path, later channels, and G2/G3/G4 acceptance criteria must be discussed and frozen with the user.
|
||||
- G1 baseline is complete: PC_VERIFIER accepted T5 and VPS_VERIFIER accepted T6.
|
||||
- Strict `smartmotor.cloud` website freeze is a hard requirement during filing review.
|
||||
- Communication MVP uses polling Git sync scripts in `sync/` and task files in `tasks/`.
|
||||
- Sync-health recovered; T7 is no longer blocked and remains claimed for ongoing CORRECTION monitoring.
|
||||
- Mutation-stage work and G2 are not authorized while G0B is pending.
|
||||
- `USER_STATUS.md` is the user-facing status entry; internal agent ledgers should not be required reading for the user.
|
||||
- The polling sync is intentionally temporary; design an async notification/coordinator layer when PC/VPS baseline work is stable.
|
||||
|
||||
## Next Actions
|
||||
|
||||
1. Complete G0B with the user before opening G2.
|
||||
2. Keep T7 active for CORRECTION monitoring of sync-health, drift, missing evidence, and freeze-policy risk.
|
||||
3. Keep `USER_STATUS.md` current when gate, blocker, heartbeat, or required user decision changes.
|
||||
4. Track the VPS verifier follow-up observations before any future mutation task: service path naming drift and Nginx route/config anomaly.
|
||||
5. Do not open G2 or any mutation-stage task until G0B is accepted and the user explicitly authorizes the next stage.
|
||||
1. Commit and push the communication MVP files to Gitea.
|
||||
2. Ask the user to start or approve starting one sync script on PC and one on VPS.
|
||||
3. Run G0 requirements and acceptance review with the user.
|
||||
4. Assign PC and VPS read-only baseline tasks in their respective Cursor windows.
|
||||
5. Require verifier review before any mutation.
|
||||
|
||||
## Open Questions
|
||||
|
||||
@@ -47,4 +41,4 @@ Bootstrap the shared Gitea-backed control plane, then coordinate read-only basel
|
||||
|
||||
## Last Update
|
||||
|
||||
Corrected gate model: G0A is complete, G0B is pending, and G1 baseline remains complete. G2 and mutation-stage work remain unauthorized until OpenClaw system requirements and acceptance criteria are confirmed with the user.
|
||||
Control-plane repository scaffold prepared locally.
|
||||
|
||||
@@ -13,24 +13,14 @@ Independently validate PC-side execution results. Prefer read-only checks and ev
|
||||
|
||||
## Current State
|
||||
|
||||
- PC baseline evidence `evidence/pc-baseline-20260515.md` reviewed and accepted for the PC half of G1.
|
||||
- Review scope was limited to independent read-only validation of T3 PC baseline evidence.
|
||||
|
||||
## Review Result - 2026-05-15
|
||||
|
||||
- `git pull` completed before review; repository was already up to date.
|
||||
- PC_EXECUTOR baseline evidence includes required `openclaw --version`, `openclaw node --help`, Tailscale executable/status summary, outbound Gateway TCP 443 test, and public port exposure check.
|
||||
- PC_EXECUTOR did not mark its own work accepted; the evidence says it is ready for PC_VERIFIER review.
|
||||
- No token was set, printed, or written in the reviewed evidence.
|
||||
- No executed `openclaw node run`, `install`, `start`, `stop`, `restart`, or `uninstall` command was found. Those words only appear in `openclaw node --help` output/examples.
|
||||
- No evidence of PC service, scheduled task, firewall rule, environment variable, OpenClaw config, or public port exposure mutation was found.
|
||||
- Verdict: accepted.
|
||||
- Waiting for PC_EXECUTOR baseline evidence.
|
||||
|
||||
## Next Actions
|
||||
|
||||
1. Wait for ORCHESTRATOR to count the PC half of G1 as accepted.
|
||||
2. Do not mutate PC configuration unless explicitly reassigned as an executor.
|
||||
1. Review `evidence/pc-*` after PC_EXECUTOR completes baseline discovery.
|
||||
2. Record pass/fail findings in this file and, if needed, `evidence/verify-pc-*`.
|
||||
3. Do not mutate PC configuration unless explicitly reassigned as an executor.
|
||||
|
||||
## Last Update
|
||||
|
||||
2026-05-15: PC baseline independent review accepted. No PC configuration was changed by PC_VERIFIER.
|
||||
Template created during control-plane bootstrap.
|
||||
|
||||
@@ -14,21 +14,14 @@ Independently validate VPS-side execution results. Prefer read-only checks and e
|
||||
|
||||
## Current State
|
||||
|
||||
- VPS baseline evidence reviewed on 2026-05-15.
|
||||
- Verdict: accepted for G1/T6 with follow-up observations; no VPS configuration changes are approved by verifier evidence.
|
||||
- Verification evidence: `evidence/verify-vps-baseline-20260515.md`.
|
||||
- Confirmed observations:
|
||||
- Gateway, Docker, Nginx, Gitea, Confluence, and Postgres were observed healthy/running as applicable.
|
||||
- OpenClaw approval-related CLI commands were verified with `--help` only; no approval, restart, reload, token rotation, or config mutation was performed.
|
||||
- `/opt/service` and `/opt/services/docker-composite.yml` were absent; `/opt/services` and `/opt/services/docker-compose.openclaw.yml` were present.
|
||||
- `nginx-proxy` had an empty mounted `/etc/nginx/conf.d`, and `nginx -T` showed no `openclaw.smartmotor.cloud`, `proxy_pass`, or `server_name` matches, while public endpoints still returned expected statuses.
|
||||
- No reviewed evidence secret value was identified.
|
||||
- Waiting for VPS_EXECUTOR baseline evidence.
|
||||
|
||||
## Next Actions
|
||||
|
||||
1. Ask ORCHESTRATOR/CORRECTION to track the service-path and Nginx-route anomalies before any future mutation task.
|
||||
2. Do not mutate VPS configuration unless explicitly reassigned as an executor.
|
||||
1. Review `evidence/vps-*` after VPS_EXECUTOR completes baseline discovery.
|
||||
2. Record pass/fail findings in this file and, if needed, `evidence/verify-vps-*`.
|
||||
3. Do not mutate VPS configuration unless explicitly reassigned as an executor.
|
||||
|
||||
## Last Update
|
||||
|
||||
2026-05-15: VPS baseline independently verified and accepted with follow-up observations.
|
||||
Template created during control-plane bootstrap.
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"host": "pc",
|
||||
"time": "2026-05-15T16:25:55+08:00",
|
||||
"time": "2026-05-15T16:32:17+08:00",
|
||||
"branch": "main",
|
||||
"head": "9ad0008",
|
||||
"head": "8e12d01",
|
||||
"status": "dirty",
|
||||
"intervalSeconds": 30,
|
||||
"heartbeatEverySeconds": 60
|
||||
|
||||
@@ -13,7 +13,6 @@ $HeartbeatFile = Join-Path $PublicStateDir "heartbeat-pc.json"
|
||||
$ErrorFile = Join-Path $PublicStateDir "error-pc.md"
|
||||
$AllowedPaths = @(
|
||||
"AGENT_BOARD.md",
|
||||
"USER_STATUS.md",
|
||||
"README.md",
|
||||
".cursor/rules",
|
||||
"handoff",
|
||||
@@ -67,6 +66,26 @@ function Invoke-Git {
|
||||
}
|
||||
}
|
||||
|
||||
function Remove-StaleSyncError {
|
||||
if (Test-Path $ErrorFile) {
|
||||
Remove-Item $ErrorFile -Force
|
||||
}
|
||||
}
|
||||
|
||||
function Push-WithRetry {
|
||||
& git push
|
||||
if ($LASTEXITCODE -eq 0) {
|
||||
return
|
||||
}
|
||||
|
||||
# Another agent may have pushed between our pull and push. Rebase once and retry.
|
||||
Invoke-Git @("pull", "--rebase", "--autostash")
|
||||
if (Test-ConflictMarkers) {
|
||||
throw "merge or rebase conflicts detected after push retry"
|
||||
}
|
||||
Invoke-Git @("push")
|
||||
}
|
||||
|
||||
function Get-AllowedChanges {
|
||||
$changes = & git -C $RepoRoot status --porcelain
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
@@ -148,6 +167,7 @@ function Sync-Once {
|
||||
throw "merge or rebase conflicts detected"
|
||||
}
|
||||
|
||||
Remove-StaleSyncError
|
||||
Write-Heartbeat
|
||||
|
||||
$allowedChanges = @(Get-AllowedChanges)
|
||||
@@ -171,15 +191,12 @@ function Sync-Once {
|
||||
|
||||
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
|
||||
Invoke-Git @("commit", "-m", "Sync agent state from PC at $timestamp")
|
||||
Invoke-Git @("push")
|
||||
Push-WithRetry
|
||||
}
|
||||
|
||||
do {
|
||||
try {
|
||||
Sync-Once
|
||||
if (Test-Path $ErrorFile) {
|
||||
Remove-Item $ErrorFile -Force
|
||||
}
|
||||
}
|
||||
catch {
|
||||
Write-SyncError $_.Exception.Message
|
||||
|
||||
@@ -14,7 +14,6 @@ ERROR_FILE="$PUBLIC_STATE_DIR/error-vps.md"
|
||||
|
||||
ALLOWED_PATHS=(
|
||||
"AGENT_BOARD.md"
|
||||
"USER_STATUS.md"
|
||||
"README.md"
|
||||
".cursor/rules"
|
||||
"handoff"
|
||||
@@ -110,6 +109,23 @@ has_conflicts() {
|
||||
[[ -n "$(git diff --name-only --diff-filter=U)" ]]
|
||||
}
|
||||
|
||||
remove_stale_sync_error() {
|
||||
rm -f "$ERROR_FILE"
|
||||
}
|
||||
|
||||
push_with_retry() {
|
||||
if git push; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Another agent may have pushed between our pull and push. Rebase once and retry.
|
||||
git pull --rebase --autostash
|
||||
if has_conflicts; then
|
||||
return 20
|
||||
fi
|
||||
git push
|
||||
}
|
||||
|
||||
sync_once() {
|
||||
cd "$REPO_ROOT"
|
||||
ensure_state_dir
|
||||
@@ -120,6 +136,7 @@ sync_once() {
|
||||
return 20
|
||||
fi
|
||||
|
||||
remove_stale_sync_error
|
||||
write_heartbeat
|
||||
|
||||
if ! has_allowed_changes; then
|
||||
@@ -138,13 +155,11 @@ sync_once() {
|
||||
fi
|
||||
|
||||
git commit -m "Sync agent state from VPS at $(date '+%Y-%m-%d %H:%M:%S')"
|
||||
git push
|
||||
push_with_retry
|
||||
}
|
||||
|
||||
while true; do
|
||||
if sync_once; then
|
||||
rm -f "$ERROR_FILE"
|
||||
else
|
||||
if ! sync_once; then
|
||||
exit_code="$?"
|
||||
write_sync_error "sync failed with exit code $exit_code"
|
||||
echo "sync failed with exit code $exit_code" >&2
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
## Status
|
||||
|
||||
accepted
|
||||
ready
|
||||
|
||||
## Owner
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
## Status
|
||||
|
||||
accepted
|
||||
ready
|
||||
|
||||
## Owner
|
||||
|
||||
|
||||
@@ -28,13 +28,11 @@ This task does not authorize PC or VPS configuration mutation. CORRECTION may bl
|
||||
|
||||
## Monitoring Findings
|
||||
|
||||
- 2026-05-15 16:03 UTC+8: Re-ran sync-health after `git pull`. `sync-state/heartbeat-pc.json` and `sync-state/heartbeat-vps.json` both exist, both report `clean`, and both were under 5 minutes old at check time. No `sync-state/error-*.md` files were present. Sync-health blocked state is cleared; T7 remains `claimed` for ongoing CORRECTION monitoring.
|
||||
- 2026-05-15 16:14 UTC+8: ORCHESTRATOR refreshed after `git pull`; repository was already up to date. `sync-state/heartbeat-pc.json` and `sync-state/heartbeat-vps.json` both report `clean`, and no `sync-state/error-*.md` files are present. PC baseline and VPS baseline have both been accepted by independent verifiers, so G1 can be treated as complete. Mutation-stage work remains unauthorized in this session.
|
||||
- 2026-05-15 11:42 UTC+8: Read `AGENT_BOARD.md`, `README.md`, `.cursor/rules/agent-orchestration.mdc`, this task, and all relevant PC/VPS handoffs and baseline tasks.
|
||||
- Current state: T3/T4/T5/T6 are `accepted`; T7 remains `claimed`.
|
||||
- Evidence state: PC baseline, VPS baseline, and VPS verifier evidence are present. PC verifier acceptance is recorded in `tasks/T5-PC-baseline-verify.md` and `handoff/PC_VERIFIER.md`.
|
||||
- Current state: T3/T4 are `ready`, T5/T6 are `draft`, and G1 remains pending.
|
||||
- Evidence state: only `evidence/README.md` exists; no PC/VPS baseline or verifier evidence exists yet.
|
||||
- No executor overreach, frozen `smartmotor.cloud` website mutation, pre-G1 configuration mutation, rollback-note gap, sync conflict, or secret-bearing evidence was detected in tracked repository contents.
|
||||
- Correction decision: no task is blocked in this pass, but no PC/VPS mutation-stage work is authorized until ORCHESTRATOR explicitly opens a later gate.
|
||||
- Correction decision: no task is blocked in this pass, but no PC/VPS mutation-stage work is authorized until G1 is independently verified and accepted.
|
||||
|
||||
## Stop Conditions
|
||||
|
||||
|
||||
Reference in New Issue
Block a user