Port the U8 SQLite active-service guard onto current main #210

Merged
weichen merged 3 commits from feature/u8-sqlite-instance-guard-r2 into main 2026-10-18 09:55:14 +00:00
Owner

Port the U8 SQLite active-service guard onto current main (supersedes #183, which was 40+ commits behind with migration-number and main.go conflicts).

Why:

  • 同一 SQLite 数据文件只允许一个活动服务运行时(R11);应用连接的耐久档可核验(R12)。规格见 Dev 仓 docs/recovery/u8-sqlite-instance-guard.md(Dev PR 随后更新 gitlink)。
  • #183 基于旧主干,迁移号 v28 已被占用、cmd/agent-system/main.go 与 capabilities/env/extension 改动冲突;按治理规则不在 host 侧手解冲突,改由外部 worker 在当前主干上重新移植。

What:

  • internal/instanceguard:活动服务锁(flock,SIGKILL 后由 OS 释放)、路径规范化(相对路径/符号链接归一,硬链接别名拒绝)、DB 替换与锁文件重建检测,--adopt-instance-guard 显式接管。
  • 迁移 v36 instance_guard(v1–v35 不变);compat 表加 36: false;storage-migrate 表清单加 instance_guard。
  • internal/app/service_store.go:openServiceStore 统一 serve 与 migrate 的打开路径;SQLite 档先取锁再打开再绑定守卫。PG 档保留主干行为:S3 共享工件、team 档 PG 失败拒绝就绪(不回落 SQLite)、AGENT_SYSTEM_INSTANCE_ID/AGENT_SYSTEM_DBREF 系统身份核验。
  • cmd/agent-system:新增 migrate 子命令与 --adopt-instance-guard;账户类 CLI 不持锁。
  • internal/store:SQLite DSN 加 synchronous(FULL) 并读回核验 WAL+FULL;PG 拒绝 fsync/full_page_writes/synchronous_commit 为 off。

Evidence:

  • 实施:agent-exec unit backend-u8-sqlite-instance-guard-port-r2,Cursor 第 1 次尝试 completed,transport 7b379d28e74fc695dcda4750ad64f223d41ec5af(parent cac60c08),经 scripts/agent-exec apply 快进集成。
  • host 本地验证(SELF):gofmt 无差异;go build ./...;go vet;go test -count=1 ./internal/instanceguard/... ./internal/store/... ./internal/app/... ./cmd/... 全部 ok;scripts/agent-exec validate 与 scripts/dm governance check 通过。
  • 权威:本 PR HEAD 的 CI(ci + governance)。

Impact:

  • 新增一张表(v36);旧制品不读取。不改 HTTP 契约、前端、scripts/svc.sh;不触及 live 实例与共享 PG。

Refs:

Port the U8 SQLite active-service guard onto current main (supersedes #183, which was 40+ commits behind with migration-number and `main.go` conflicts). Why: - 同一 SQLite 数据文件只允许一个活动服务运行时(R11);应用连接的耐久档可核验(R12)。规格见 Dev 仓 `docs/recovery/u8-sqlite-instance-guard.md`(Dev PR 随后更新 gitlink)。 - #183 基于旧主干,迁移号 v28 已被占用、`cmd/agent-system/main.go` 与 capabilities/env/extension 改动冲突;按治理规则不在 host 侧手解冲突,改由外部 worker 在当前主干上重新移植。 What: - `internal/instanceguard`:活动服务锁(flock,SIGKILL 后由 OS 释放)、路径规范化(相对路径/符号链接归一,硬链接别名拒绝)、DB 替换与锁文件重建检测,`--adopt-instance-guard` 显式接管。 - 迁移 v36 `instance_guard`(v1–v35 不变);compat 表加 `36: false`;`storage-migrate` 表清单加 `instance_guard`。 - `internal/app/service_store.go`:`openServiceStore` 统一 serve 与 `migrate` 的打开路径;SQLite 档先取锁再打开再绑定守卫。PG 档保留主干行为:S3 共享工件、team 档 PG 失败拒绝就绪(不回落 SQLite)、`AGENT_SYSTEM_INSTANCE_ID`/`AGENT_SYSTEM_DBREF` 系统身份核验。 - `cmd/agent-system`:新增 `migrate` 子命令与 `--adopt-instance-guard`;账户类 CLI 不持锁。 - `internal/store`:SQLite DSN 加 `synchronous(FULL)` 并读回核验 WAL+FULL;PG 拒绝 `fsync`/`full_page_writes`/`synchronous_commit` 为 off。 Evidence: - 实施:`agent-exec` unit `backend-u8-sqlite-instance-guard-port-r2`,Cursor 第 1 次尝试 `completed`,transport `7b379d28e74fc695dcda4750ad64f223d41ec5af`(parent `cac60c08`),经 `scripts/agent-exec apply` 快进集成。 - host 本地验证(SELF):gofmt 无差异;`go build ./...`;`go vet`;`go test -count=1 ./internal/instanceguard/... ./internal/store/... ./internal/app/... ./cmd/...` 全部 ok;`scripts/agent-exec validate` 与 `scripts/dm governance check` 通过。 - 权威:本 PR HEAD 的 CI(ci + governance)。 Impact: - 新增一张表(v36);旧制品不读取。不改 HTTP 契约、前端、`scripts/svc.sh`;不触及 live 实例与共享 PG。 Refs: - Supersedes #183 - Dev 任务:feature/u8-sqlite-instance-guard(Dev PR #482 将由 r2 取代)
weichen added 1 commit 2026-10-18 09:21:16 +00:00
agent-exec transport d2c63b4a83821a5716997a28174233b1/d6e403e1e778
governance / governance (pull_request) Successful in 17s
ci / vet-and-test (pull_request) Successful in 1m6s
7b379d28e7
weichen added 1 commit 2026-10-18 09:37:03 +00:00
Merge branch 'main' into feature/u8-sqlite-instance-guard-r2
governance / governance (pull_request) Successful in 14s
ci / vet-and-test (pull_request) Successful in 1m9s
d7be3fde5c
weichen added 1 commit 2026-10-18 09:44:39 +00:00
agent-exec transport 473a7db9497fd0ab028ed664d4e26aec/87e91bc00054
governance / governance (pull_request) Successful in 15s
ci / vet-and-test (pull_request) Successful in 1m0s
governance / governance (push) Successful in 14s
ci / vet-and-test (push) Successful in 1m0s
276dd73824
weichen merged commit 276dd73824 into main 2026-10-18 09:55:14 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: weichen/Agent-System-Backend#210