Same-SQLite single active service (R11) and verifiable durability on the app connection (R12), approved 2026-10-12 as recovery plan r3 U8. The original Dev PR #482 / Backend #183 fell 1000+ commits behind main with conflicts (migration number, main.go, PROJECT.md, architecture-baseline.json, gitlink); per governance the host does not hand-resolve them, so U8 was re-ported onto current main by fresh agent-exec workers. Supersedes #482.
While pinning, two pre-existing composite gaps blocked a correct Backend pin and were fixed minimally:
Dev main pinned Backend b00e192 (admin password management + interpreter path fix, deployed) which never reached Backend main; with user authorization it landed via Backend #211 (merge a670d2b) so this pin does not roll it back.
Backend #208 pinned deps/development-manager at bd3a7de while Dev is at 67784f4 (descendant); make test-pins failed. Backend #210 now aligns it (276dd73).
What
modules/backend → 276dd73824116fb55064eefef17f069ee1545ada (head of Backend #210: Backend main incl. #211 + U8 + development-manager alignment; #210 merges fast-forward so Backend main will equal this SHA).
docs/recovery/u8-sqlite-instance-guard.md: U8 spec (instance_guard is migration v36).
Backend #210 CI success on 7b379d2 and d7be3fd (GATE; 276dd73 running); Backend #211 CI success on 78ae397 (GATE).
Host local (SELF): combined Backend tree main+#211+U8 go build/vet/test ./... ok; make test-boundaries test-pins pass (evidence in task card).
Agent receipts per unit in .task/feature-u8-sqlite-instance-guard-r2.md.
Authoritative: this PR's CI (make test incl. test-backend-pg real PostgreSQL readback + make build).
Impact
New Backend table v36; SQLite service refuses a second active process on the same data file; PG connections refuse fsync/full_page_writes/synchronous_commit off. No HTTP contract, frontend or scripts/svc.sh change; no live instance or shared PG touched; not deployed.
Refs
Supersedes Dev #482; Backend #210, #211 (Backend #183 closed as superseded)
## Why
Same-SQLite single active service (R11) and verifiable durability on the app connection (R12), approved 2026-10-12 as recovery plan r3 U8. The original Dev PR #482 / Backend #183 fell 1000+ commits behind main with conflicts (migration number, `main.go`, `PROJECT.md`, `architecture-baseline.json`, gitlink); per governance the host does not hand-resolve them, so U8 was re-ported onto current main by fresh agent-exec workers. Supersedes #482.
While pinning, two pre-existing composite gaps blocked a correct Backend pin and were fixed minimally:
- Dev main pinned Backend `b00e192` (admin password management + interpreter path fix, deployed) which never reached Backend main; with user authorization it landed via Backend #211 (merge `a670d2b`) so this pin does not roll it back.
- Backend #208 pinned `deps/development-manager` at `bd3a7de` while Dev is at `67784f4` (descendant); `make test-pins` failed. Backend #210 now aligns it (`276dd73`).
## What
- `modules/backend` → `276dd73824116fb55064eefef17f069ee1545ada` (head of Backend #210: Backend main incl. #211 + U8 + development-manager alignment; #210 merges fast-forward so Backend main will equal this SHA).
- `docs/recovery/u8-sqlite-instance-guard.md`: U8 spec (instance_guard is migration v36).
- `docs/svc.md`: lock file, `migrate` subcommand, `--adopt-instance-guard`, refusal messages.
- `PROJECT.md`: two sentences recording the U8 approval/implementation status and spec link (NOT_RUN for fault injection, deployment, runtime acceptance).
- `policy/architecture-baseline.json`: `backend/app → backend/instanceguard`, `backend/instanceguard → backend/store`.
## Evidence
- Backend #210 CI success on `7b379d2` and `d7be3fd` (GATE; `276dd73` running); Backend #211 CI success on `78ae397` (GATE).
- Host local (SELF): combined Backend tree main+#211+U8 `go build/vet/test ./...` ok; `make test-boundaries test-pins` pass (evidence in task card).
- Agent receipts per unit in `.task/feature-u8-sqlite-instance-guard-r2.md`.
- Authoritative: this PR's CI (`make test` incl. `test-backend-pg` real PostgreSQL readback + `make build`).
## Impact
New Backend table v36; SQLite service refuses a second active process on the same data file; PG connections refuse fsync/full_page_writes/synchronous_commit off. No HTTP contract, frontend or `scripts/svc.sh` change; no live instance or shared PG touched; not deployed.
## Refs
- Supersedes Dev #482; Backend #210, #211 (Backend #183 closed as superseded)
- Task card: `.task/feature-u8-sqlite-instance-guard-r2.md`
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-u8-sqlite-instance-guard-r2.md; R0=b5e23daed2f0ea46261979de1d62e4de0cfa88f9.
Impact: task metadata only; the feature workspace starts at b5e23daed2.
Refs: .task/feature-u8-sqlite-instance-guard-r2.md
Why: PR #482 and Backend #183 conflict with current main; r2 re-ports the approved U8 change.
Evidence: Backend transport 7b379d28 applied; Backend PR #210 CI success on that SHA.
Impact: Task card only.
Refs: Backend PR #210; supersedes Dev PR #482
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Dev main pinned an unmerged Backend commit; #211 landed it before re-pinning to U8.
Evidence: transports b829de2 and 6d9bd7c applied; Backend #211 HEAD 78ae397 and #210 HEAD d7be3fd CI success.
Impact: Task card only.
Refs: Backend PR #210, #211
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: complete the task card before closing.
Evidence: Dev CI runs/3775 on 3e32999; Backend #210 fast-forwarded to 276dd73, #211 merged as a670d2b.
Impact: Task card only.
Refs: Dev PR #615; Backend PR #210, #211
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: complete merge-readiness records before closing the card.
Evidence: Backend main 276dd73 equals the Dev pin; Dev CI runs/3775 success.
Impact: Task card only.
Refs: Dev PR #615
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: close the task card inside its own PR so landing it needs no post-merge backfill or separate close PR.
Evidence: .task/feature-u8-sqlite-instance-guard-r2.md -> .task/archive/feature-u8-sqlite-instance-guard-r2.md; status 已完成(合入前闭合); PR #615https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/615.
Impact: task metadata only; the card is archived within PR #615 and lands with its merge commit.
Refs: task.sh close --self
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Why
Same-SQLite single active service (R11) and verifiable durability on the app connection (R12), approved 2026-10-12 as recovery plan r3 U8. The original Dev PR #482 / Backend #183 fell 1000+ commits behind main with conflicts (migration number,
main.go,PROJECT.md,architecture-baseline.json, gitlink); per governance the host does not hand-resolve them, so U8 was re-ported onto current main by fresh agent-exec workers. Supersedes #482.While pinning, two pre-existing composite gaps blocked a correct Backend pin and were fixed minimally:
b00e192(admin password management + interpreter path fix, deployed) which never reached Backend main; with user authorization it landed via Backend #211 (mergea670d2b) so this pin does not roll it back.deps/development-manageratbd3a7dewhile Dev is at67784f4(descendant);make test-pinsfailed. Backend #210 now aligns it (276dd73).What
modules/backend→276dd73824116fb55064eefef17f069ee1545ada(head of Backend #210: Backend main incl. #211 + U8 + development-manager alignment; #210 merges fast-forward so Backend main will equal this SHA).docs/recovery/u8-sqlite-instance-guard.md: U8 spec (instance_guard is migration v36).docs/svc.md: lock file,migratesubcommand,--adopt-instance-guard, refusal messages.PROJECT.md: two sentences recording the U8 approval/implementation status and spec link (NOT_RUN for fault injection, deployment, runtime acceptance).policy/architecture-baseline.json:backend/app → backend/instanceguard,backend/instanceguard → backend/store.Evidence
7b379d2andd7be3fd(GATE;276dd73running); Backend #211 CI success on78ae397(GATE).go build/vet/test ./...ok;make test-boundaries test-pinspass (evidence in task card)..task/feature-u8-sqlite-instance-guard-r2.md.make testincl.test-backend-pgreal PostgreSQL readback +make build).Impact
New Backend table v36; SQLite service refuses a second active process on the same data file; PG connections refuse fsync/full_page_writes/synchronous_commit off. No HTTP contract, frontend or
scripts/svc.shchange; no live instance or shared PG touched; not deployed.Refs
.task/feature-u8-sqlite-instance-guard-r2.md