Commit Graph
29 Commits
Author SHA1 Message Date
agent-exec-transport 9df02f1400 agent-exec transport f2398d00a4b0fd3baf25f9c079c1dd37/1847776fbc8c 2026-10-19 07:42:07 +00:00
agent-exec-transport 37c619ecc7 agent-exec transport a6410084d06dab307808de69b1d29c7c/25fde07da168 2026-10-19 05:36:09 +00:00
agent-exec-transport a731ef54a3 agent-exec transport 51708f296381a61509ea5f53aa51269b/b4647884f68f 2026-10-19 04:46:49 +00:00
agent-exec-transport 81fa4280c6 agent-exec transport 52cabbe74db290b075d0439050b33d68/2a2480ceef3d 2026-10-19 01:10:40 +00:00
agent-exec-transport bbb92380c7 agent-exec transport 07766a247a517f1f0231fe241083b456/c332221e1735
ci / svc-realcombo (pull_request) Successful in 2m35s
ci / test (pull_request) Failing after 5m21s
ci / test-pg (pull_request) Successful in 8m24s
2026-10-18 15:09:57 +00:00
agent-exec-transport e186983577 agent-exec transport 45fa6a1e5d496e8adf604119c65951e6/ba2407d4714c 2026-10-18 15:08:53 +00:00
agent-exec-transport 76c514b9c1 agent-exec transport 9e9255c1a5d63cb004c963f5c112b634/1574b796b404 2026-10-18 15:07:15 +00:00
weichen d5d6f7023e Merge authoritative main into the task branch 2026-10-18 12:31:36 +00:00
agent-exec-transport 4764cb4811 agent-exec transport 41538d22ba2a4e9bf86b9719a1257461/4985036a61a6 2026-10-18 11:53:53 +00:00
agent-exec-transport 05a60f750f agent-exec transport 54fb3271bcec24c48fa8696f95200638/616960aa035d 2026-10-18 11:49:07 +00:00
agent-exec-transport 327c897ae8 agent-exec transport 0f3c662d6428a0f068c29ae79dabd50b/36f4cce9d23f 2026-10-18 10:51:02 +00:00
weichen d7f43acf31 Align multi-instance bootstrap with the U3 account contract
ci / svc-realcombo (pull_request) Successful in 1m58s
ci / test (pull_request) Successful in 5m18s
ci / test-pg (pull_request) Successful in 7m28s
Why: The multi-instance acceptance test still created alice with a literal
password; backend U3 replaced local password-bearing creation with trusted
pending-account activation, so the first pin bump past U3 failed test-pg
with RECOVERY_CONTRACT_REPLACED. The seam was left pending by the U3 task
and this PR is the first to cross it.

Evidence: Full TestTwoInstancesOverSharedPG passes against a disposable
PostgreSQL 16 container (identity ensure -> bootstrap-admin -> pending
create with activation key -> key redemption -> grant-setup password ->
api key -> all cross-instance scenarios, 15s).

Impact: Test-only bootstrap rewrite (deployment-level identity ensured once
per pair, admin bootstrapped first, alice activated through the key
redemption and grant-setup password flow); no product code changes.

Refs: Dev task feature/pptx-gate-reference-integrity; backend U3 #198
2026-10-15 03:11:08 +00:00
weichen 252d9d4af1 Complete scenario-2 name-filter assertion and refresh the harness for v0.4.0
Why: with the four-repo v0.4.0 release live, the account.list query/name
passthrough (RDM #356) enables the deferred full assertion of scenario 2; the
harness also needed v0.4.0 adaptations discovered on the combo instance.

Evidence: tool-written rows on the card - full ten-scenario run on a disposable
rdm@84ca64f combo instance (25/25 PASS incl. 2b name-substring, 2c
case-insensitive owner filter, 2d limit truncation), and dev service status
(rdm@84ca64f running against the live dev database, auth gate 401).

Harness fixes: rdm.project.member.setRole renamed to set-role (RDM #350);
command envelope parsed via payload; re-login after the password gate (base
#195 revokes sessions on password change); RDM world provisioning via
rdm.project.create + bind with the domain admin self-removing so owner2 is the
sole owner (creator is seeded as owner); scenario 8b asserts allow:true in the
current response shape; scenario 10b now meaningful (base #195 admits member
conversations through RDM project membership).

Impact: integration script and task card only; no product code.

Refs: task feature/rdm-increment-settings-duties; RDM #356; base v0.4.0 tags.
2026-10-13 14:51:25 +00:00
weichen 6bf1bbfb47 Add ten-scenario acceptance script and dual-key release plan
ci / svc-realcombo (pull_request) Successful in 2m9s
ci / test (pull_request) Successful in 5m8s
ci / test-pg (pull_request) Successful in 7m32s
Why: P8 执行准备——十场景验收脚本(多账号多角色走真实 dev HTTP:受管拒写/目录/成员保护/职责校验/批量整批拒/矩阵同源/系统动作拒覆盖/共享一致与私域)与四仓 v0.4.0 发版方案(双钥匙,用户执行)。
Evidence: bash -n 通过;命令端点对齐前端 rdmCommand(/api/commands/<id>)。
Impact: 新增验收脚本与任务卡发版方案段;无产品代码。
Refs: 提案 r1 §8/P8
2026-10-13 10:23:41 +00:00
weichen c4a1bb6cfc Merge origin/main into the follow-up branch
ci / test-pg (pull_request) Successful in 8m11s
ci / svc-realcombo (pull_request) Successful in 1m53s
ci / test (pull_request) Successful in 4m55s
2026-10-13 04:58:17 +00:00
weichen ecf310fcf1 Fix multi-instance seeding for system-managed settings and repin backend
ci / svc-realcombo (pull_request) Successful in 2m22s
ci / test-pg (pull_request) Successful in 3m16s
ci / test (pull_request) Failing after 3m49s
Why: The follow-up CI exposed that backend #188 broke the Dev
multi-instance suite: serve --mock seeded runtime.mock at the user
scope, which system-managed settings now reject, so instances never
became healthy. Backend #190 seeds the startup flag into the system
scope; this PR repins and drops the now-invalid alice user-scope write.

Evidence: Backend #190 CI success at head 0af1ebc (GATE); this PR's
composite CI re-runs make test-multi-instance (GATE for the fix).

Impact: backend pin 741da4a; multi-instance test comments updated to
the system-managed regime.

Refs: Backend #188, #190.
2026-10-13 04:47:23 +00:00
weichenandCursor 7331323df4 Give pin materialize the CI git channel and a private database
Why: test-pg has no SSH known_hosts, and the shared agent_test database already holds another instance identity.
Evidence: SELF python3 -m unittest tests.test_ci_credentials.CheckoutTests.test_rdm_pin_fetch_is_three_shas_on_the_allowlist tests.integration.lifecycle.test_lifecycle_real (1 pass, 24 skip).
Impact: lifecycle children forward GIT_CONFIG_* only; serve stays env -i. Login and rdm.ping stay NOT_RUN.
Refs: .task/feature-svc-d3-real-scenarios.md
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-13 04:03:55 +00:00
weichen c1e82872ff Merge authoritative main into the task branch
Why: include the current integration baseline before verification.

Evidence: fetched origin/main=3fb8210f6495a78e70a67af3661bdfe9c00fb9de.

Impact: integrate upstream changes without rewriting task history.

Refs: task-sync
2026-10-13 03:04:15 +00:00
weichenandCursor 8dda121c0d Fetch and build the three pinned RDM SHAs in CI
Why: test-pg only cloned the default branch, so prev_sha and legacy_sha were never built or attested.
Evidence: SELF python3 -m unittest tests.test_ci_credentials tests.test_lifecycle_pin (11 tests, exit 0).
Impact: the lifecycle suite prints the combination inventory and keeps login and rdm.ping as NOT_RUN.
Refs: .task/feature-svc-d3-real-scenarios.md
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-13 02:59:44 +00:00
weichenandCursor 4bd8d2a340 Add credential scan and bootstrap retention tests
Why: A real process must not keep the caller DSN in its command line, environment, log, history, or svc.env. Domain events written by -bootstrap have to survive a later pin deploy.
Evidence: SELF unittest of the two new LifecycleRealTests methods exited 0.
Impact: The scan uses a sentinel that is not a live database password. Login and rdm.ping stay NOT_RUN.
Refs: tests/integration/lifecycle/test_lifecycle_real.py
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-13 02:56:12 +00:00
weichenandCursor f0e1e3f254 Add real mixed-batch, manifest-loss, and PG cross-bind tests
Why: A static dev deploy deleted the worktree before copying dist, so a mixed batch could not update the workbench. Missing manifests and a second instance on the same Postgres database must fail closed the same way on real artifacts.
Evidence: SELF unittest of the mixed batch, the three-entry manifest-loss case, and the PG cross-instance case exited 0. The PG case used a temporary cluster.
Impact: static dev deploys copy dist before recycling the worktree. Login and rdm.ping stay NOT_RUN.
Refs: tests/integration/lifecycle/test_lifecycle_real.py
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-13 02:54:05 +00:00
weichenandCursor 1bcdfe8779 Add real artifact rollback and phase reconciliation tests
Why: Stub journals do not prove that a real RDM binary rolls back after a switched fault, a failed build, or a candidate that exits on serve.
Evidence: SELF unittest of the three new LifecycleRealTests methods exited 0. Staging leaves the old pid and release in place; the next start clears that journal. Switched and an immediate serve exit both restore the previous real binary.
Impact: The crash candidate delegates version and identity to the real binary so the gate still sees a capable artifact. Login and rdm.ping stay NOT_RUN.
Refs: tests/integration/lifecycle/test_lifecycle_real.py
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-13 02:14:30 +00:00
weichenandCursor bf347c1dbc Add real pin tests for refuse and version switch
Why: The lifecycle gate only ran four realcombo cases. A legacy candidate and a missing or mismatched identity row must be refused before the old process stops, and the prev/sha pins must switch without changing the identity row.
Evidence: SELF unittest of the four LifecycleRealTests methods exited 0 against a private RDM clone. The pin moved to the identity merge and a later commit on the same backend pin, because the previous card-close SHAs build a binary with no ensure/verify.
Impact: make test still skips this class unless SVC_TEST_REAL, SVC_RDM_SRC_DIR and SVC_REAL_RDM_BIN are set. make test-lifecycle now runs the module. Login and rdm.ping stay NOT_RUN.
Refs: tests/integration/lifecycle/rdm.pin
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-13 02:05:05 +00:00
weichen d480b2d058 Merge authoritative main into the task branch
Why: include the current integration baseline before verification.

Evidence: fetched origin/main=5aebedebeb963b5c01f39fd9122ec60dbe6d34d3.

Impact: integrate upstream changes without rewriting task history.

Refs: task-sync
2026-10-13 01:46:04 +00:00
weichenandCursor ca0ab46d5b Pin the blobstore fallback and cover cross-instance uploads
Why: an unset object store must keep artifact bytes available to the other process, which the store-level test does not execute.
Evidence: cross_artifact_roundtrip failed with EOF on backend c6fb130 and passed on 46073d30 (SELF, isolated u7drill-k4).
Impact: Dev now builds the fixed backend. Second-instance write traffic stays closed.
Refs: modules/backend tests/integration/multi-instance/multi_instance_test.go
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-13 01:26:29 +00:00
weichenandCursor 67d6fd81cd Require the real lifecycle gate and fault rollback
ci / svc-realcombo (pull_request) Successful in 1m45s
ci / test-pg (pull_request) Successful in 2m53s
ci / test (pull_request) Successful in 4m45s
Why: The live deploy journal never called fault injection, and test-lifecycle failed closed on login so CI could not require the real combination cases.
Evidence: SELF python3 -m unittest tests.test_svc_u2.U2ReleaseTests -q exit 0 (35 ok, 1 skipped) on 3602a87; receipt sha256 9b5785577751e8e9e7947cf9700fb8854b1c80142f34273ae25f3097ee4c9aa8.
Impact: test-pg builds the Dev binary and runs make test-lifecycle. Login and full-track deploy without SVC_RDM_ORIGIN stay NOT_RUN. No live data move and no account CLI.
Refs: recovery plan D2/D3; Dev #485
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-13 01:14:27 +00:00
weichenandCursor e8f84b8cf1 Add a reversible release switch and a lifecycle pin
Why: an update that stops the old process and overwrites the binary cannot
get the previous version back, and a migration the old binary cannot read
must be refused before that stop. CI also had no fixed RDM SHA to build from.
Evidence: python3 -m unittest tests.test_svc_identity tests.test_svc_recover tests.test_svc_deploy_txn tests.test_lifecycle_pin passed. make test-lifecycle exits 2 when AGENT_PG_TEST_DSN is unset.
Impact: installs land in releases/<rid> and current switches with mv -T.
Deploy keeps the desired state and rolls back a non-terminal journal.
Schema compatFloor above the installed target is refused unless
--migrate-schema --confirm is paired with a backup. test-lifecycle fails
closed without PostgreSQL and an RDM checkout. Login stays NOT_RUN.
Refs: recovery plan r3.1 D2 and D3; Backend feature/d1-identity-open

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-12 14:43:27 +00:00
weichenandCursor a5d44df505 Clear must_change before API-key use in multi-instance U7
ci / test-pg (pull_request) Successful in 1m28s
ci / test (pull_request) Successful in 3m7s
Why: Backend login_keys gate blocks Key traffic while
must_change_password is set; U7 failed on PUT settings/user 403.
Evidence: go test -c multi-instance compiles; CI test-pg will GATE.
Impact: loginAlice does session password change alicePass0→alicePass.
Refs: Dev PR #426; Backend #170 pin e7b70c2

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-12 05:24:02 +00:00
weichen f705f99b8f Add U7 two-process acceptance, k6 load harness and release checklist
Why: collaboration storage U7 (proposal sections 3/5/7) requires two-process
HTTP-level acceptance over shared PG, a reproducible load-test entry honoring
the load contract, and an auditable pre-release checklist; capacity windows and
dual-host runs need user-scheduled resources, so the deliverable here is the
verifiable entry, not capacity claims.
Evidence: make test green (composite); make test-multi-instance green locally
against an isolated PG (five scenarios incl. crash-takeover and restart
invariants); run_load.sh --profile smoke end-to-end green (SSE probe p95~18ms,
zero seq duplicates, stack auto-recycled); backend pinned to feature branch
with the three cross-instance fixes.
Impact: new tests/integration/multi-instance (CI test-pg job step), new
tests/load/collaboration (k6 + SSE probe + run_load.sh), release checklist at
docs/release-multi-instance.md; no runtime behavior change in Dev repo itself.
Refs: backend PR #164; task card feature/u7-load-fault-release.
2026-10-12 02:31:35 +00:00