31 Commits
Author SHA1 Message Date
agent-exec-transport 340543549e agent-exec transport af819d334d76f62e9dec6b105da6ca49/8751322a8e74
ci / svc-realcombo (pull_request) Successful in 3m32s
ci / test (pull_request) Successful in 9m30s
ci / test-pg (pull_request) Successful in 12m5s
2026-10-21 15:27:08 +00:00
agent-exec-transport 21001916dd agent-exec transport 0f2ac58c6d2962a3305e89c5357e60a2/a2b1e61bfed3
ci / test-pg (pull_request) Failing after 1m54s
ci / svc-realcombo (pull_request) Successful in 2m17s
ci / test (pull_request) Failing after 5m26s
2026-10-18 14:42:40 +00:00
agent-exec-transport fb4c89d9dc agent-exec transport 92d779408cc72a3fdf9fdf6f005e9b5e/09f250401f29 2026-10-18 02:37:50 +00:00
agent-exec-transport 271d95ff68 agent-exec transport 10744e242fc07c8b53c17e7ad7a55cf4/cb4ae8cd1607 2026-10-17 09:05:56 +00:00
agent-exec-transport 501b685f02 agent-exec transport cf117cc8acfd51c9b3a894e92ce8027f/c2dce0e31099 2026-10-17 05:57:11 +00:00
agent-exec-transport 09a3bdfb40 agent-exec transport db893a08b5594e8086689933bcd883a5/3bc5f8142666 2026-10-16 16:49:23 +00:00
weichenandCursor c78c237dc7 Fetch pinned RDM history deep enough for ancestry
Why: depth 1 makes prev_sha and sha unrelated shallow roots, so update reports a fork instead of an upgrade.
Evidence: SELF the pin-fetch credential test; CI run 2829 showed the fork message.
Impact: test-pg fetches 200 commits from each pin, not the full history.
Refs: .task/feature-svc-d3-real-scenarios.md
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-13 04:14:03 +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
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 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 b10406a58f Merge origin/main into feature/svc-d1-identity-flow
ci / svc-realcombo (pull_request) Failing after 1m55s
ci / test (pull_request) Failing after 2m49s
ci / test-pg (pull_request) Failing after 4m9s
Why: main gained the real-combination CI gate after the previous sync, and this branch still has to carry that gate with the isolated identity calls.
Evidence: SELF python3 -m unittest recovery/identity/u2/deploy/pin/isolation — 100 tests OK (2 skipped); bash -n scripts/svc.sh.
Impact: identity ensure/verify still pass DSN only through the environment; stop waits for the port and can keep the desired state. CI keeps the lifecycle pin step and the svc-realcombo job.
Refs: #485
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-12 15:26:57 +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
weichen 139fda0fe3 Route realcombo git subprocesses through the trusted base in CI
ci / svc-realcombo (pull_request) Failing after 1m58s
ci / test-pg (pull_request) Successful in 2m28s
ci / test (pull_request) Successful in 4m15s
Why: on keyless runners the RDM cache clone and pins materialization
inside svc.sh fetched nested pins over raw SSH URLs (run 2608: host key
verification failed); the suite now injects the same URL-scoped token
header and insteadOf rewrite via environment when SVC_CI_GIT_* is set.
Evidence: local rerun stays green (env unset locally); CI run applies it.
Impact: tests + ci.yaml only; token travels via environment only.
2026-10-12 14:40:14 +00:00
weichen fbe76cc014 Resolve realcombo paths inside CI run scripts
ci / svc-realcombo (pull_request) Failing after 1m29s
ci / test-pg (pull_request) Failing after 2m21s
ci / test (pull_request) Successful in 3m53s
Why: YAML env: values do not shell-expand, so $PWD-based binary paths
reached the suite as literal strings (run 2606: SVC_REAL_BIN not
executable).
Evidence: job log run 2606; paths now exported in the run script.
Impact: ci.yaml only.
2026-10-12 14:32:48 +00:00
weichen 802904646c Keep clone credentials through nested RDM pins fetch in CI
ci / svc-realcombo (pull_request) Failing after 1m20s
ci / test (pull_request) Failing after 2m24s
ci / test-pg (pull_request) Failing after 2m29s
Why: the realcombo steps unset the URL-scoped token env before
'submodule update', so nested pins fell back to raw SSH URLs and failed
host-key verification on the runner (first svc-realcombo run 2605).
Evidence: job log run 2605 shows ssh clone failures; reordered steps
keep insteadOf + token header active through the pins fetch.
Impact: ci.yaml ordering only.
2026-10-12 14:30:13 +00:00
weichen 99bbbc089e Gate svc lifecycles on real Dev and RDM artifacts in CI
Why: stub suites proved the script logic but not real artifact
behavior (the 2026-10-12 incidents passed all stub tests); the report's
U3 requires real-combination gates, and realcombo dry-runs exposed two
real gaps: fresh deploys closed identity governance one lifecycle late,
and pg-bound identity calls put the DSN on the command line.
Evidence: make test exit 0; local realcombo dry-run 16 OK (rows in the
task card); CI adds svc-realcombo (SQLite, both real binaries, full RDM
track) and a real-PG identity step on test-pg with env-delivered DSN.
Impact: tests/test_svc_realcombo.py (SVC_TEST_REAL gate, explicit
NOT_RUN otherwise); ci.yaml new job + test-pg step (RDM clone via
trusted-base URL-scoped token header, allowlist addition reviewed in
this PR); svc.sh delivers identity DSN via AGENT_SYSTEM_DSN and runs
manifest adoption in the same deploy that first registers svc.env;
modules/backend pinned to main (env fallback, backend #182).
Refs: .task/feature-svc-u3-realcombo.md; user goal directive 2026-10-12
(U3); backend #182; RDM #285.
2026-10-12 14:27:59 +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
weichen 7134f83fde Install house-style Python deps in the test-pg job too
ci / test (pull_request) Successful in 2m15s
ci / test-pg (pull_request) Successful in 53s
Why: the job runs the full backend suite against real services; internal/runtime lint tests require python-docx (job 2290: ModuleNotFoundError 'docx') which the plain test job already installs.

Evidence: job 2290 log; all PG/Redis-dependent packages green in the same run (store 2.6s, pgbus, runmgr, ratelimit, server).

Impact: test-pg job setup only.

Refs: Dev PR #325.
2026-10-11 03:48:15 +00:00
weichen 53defb4bb4 Fix the CI test-pg setup: single bracket test and the vector extension name
ci / test-pg (pull_request) Failing after 53s
ci / test (pull_request) Successful in 2m22s
Why: the runner-container guard had a doubled '[[' from a string replacement (exit '[: too many arguments'), and pgvector's extension is named 'vector' (control file vector.control) - CREATE EXTENSION pgvector failed with 'extension not available' (jobs 2285/2286 logs).

Evidence: job 2286 log 'ERROR: extension pgvector is not available ... pgvector.control: No such file'; package postgresql-16-pgvector 0.6.0 installed fine.

Impact: test-pg job only; repins backend to the #138 merge (30s SQLite busy timeout for serialized migrators).

Refs: backend PR #138; Dev PR #325.
2026-10-11 03:43:06 +00:00
weichen b41b136607 Run the CI PG setup as postgres via runuser/su (root container, no sudo)
ci / test-pg (pull_request) Failing after 32s
ci / test (pull_request) Failing after 1m41s
Why: the runner container executes as root without sudo; the previous $SUDO -u postgres expanded to a bare '-u' and failed with exit 127 on the first test-pg run (job 2280 log).

Evidence: job 2280 log lines '/var/run/act/workflow/3: line 6: -u: command not found', exitcode 127; postgresql service itself started fine as root.

Impact: test-pg job setup steps only; also prints pinned pgvector/pg_trgm extension versions for acceptance records.

Refs: PR #325; docs/guides/team-storage.md section 5.
2026-10-11 03:34:41 +00:00
weichen 227c2a120e Add the real PostgreSQL and Redis CI gate (make test-backend-pg, test-pg job)
Why: the approved collaboration plan U2 requires CI to run the backend suite against real PostgreSQL+pgvector and Redis and fail when the services are missing, instead of silently skipping the tier.

Evidence: local gate green twice against PostgreSQL 18.6+pgvector and Redis 8.10.2 (isolated svc.sh instance); the target fails fast when AGENT_PG_TEST_DSN/AGENT_REDIS_TEST_ADDR are unset.

Impact: new make target test-backend-pg (env-guarded) and a required test-pg job (apt postgresql-16-pgvector + redis-server, ephemeral per-run services); existing test job unchanged.

Refs: proposals/2026-10-11-collaboration-storage-and-distribution.md U2; docs/guides/team-storage.md section 5.
2026-10-11 03:14:22 +00:00
weichen 89468bba4c Allow the platform-injected internal http server URL in CI checkout
ci / test (pull_request) Successful in 2m11s
Why: 运行器注入 GITHUB_SERVER_URL='http://172.17.0.1:3000'(docker 网关直连宿主 Gitea,
run 950 诊断实测);https 限定与硬编码常量比对都会拒绝合法检出,GATE 无法变绿。
Evidence: 校验收宽为 http(s)+netloc;凭据仍仅附着于注入基址+仓库白名单 URL,固定 SHA/
路径/递归深度 fail-closed 语义不变。
Impact: 仅 ci.yaml checkout 一处。
2026-10-05 13:37:12 +00:00
weichen 017502f4cc Diagnose the runner-injected server URL in CI checkout
ci / test (pull_request) Failing after 1s
2026-10-05 13:35:42 +00:00
weichen a1fb67c569 Derive CI checkout server from the runner-injected URL
ci / test (pull_request) Failing after 1s
Why: 加固 checkout 把 GITHUB_SERVER_URL 与硬编码常量严格比对,运行器注入值与公网拼写
不一致时合法检出被拒(PR #213 run 948/job 1333:Checkout server is outside the
reviewed allowlist),GATE 无法变绿。
Evidence: 本地同树 make test exit 0(REPLAY 行已入卡);修复后凭据仍只附着于
「平台注入基址 + 仓库白名单」URL,路径/固定 SHA/递归深度校验全部保留。
Impact: 仅 ci.yaml checkout 脚本一处;仓库白名单与 fail-closed 语义不变。
Refs: .task/feature-governance-reliability.md 授权记录(2026-10-05 安全收尾授权)。
2026-10-05 13:34:22 +00:00
weichen 8af945a1d5 Make development gates preserve work and verifiable evidence
Why: cleanup, component synchronization, receipt recording and credential handling could contradict the documented development boundaries.

Evidence: SELF 75 isolated governance tests and source checks are captured in .task/feature-governance-reliability.md; combination and CI verification follow.

Impact: hardens local task and CI tooling, aligns policy and component documentation, and adds continuous regression tests without changing product behavior.

Refs: .task/feature-governance-reliability.md; policy/governance.md; policy/platform-admission.md
2026-10-05 12:36:02 +00:00
weichenandCursor 2e43703838 Install the house-style Python packages in CI
ci / test (pull_request) Successful in 1m51s
Why: lint.py imports python-pptx and openpyxl at import time, so installing only python-docx still skipped the layout finding.
Evidence: actions run 680 failed TestLintErrorContinues with lint reason missing after python-docx was present.
Impact: CI installs python-docx, python-pptx, and openpyxl from the Tsinghua index.
Refs: feature/agent-stack-r0-r1
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-03 10:40:38 +00:00
weichenandCursor a25e79f4ef Install python-docx before the CI backend tests
ci / test (pull_request) Failing after 1m23s
Why: The runner image has Python but not python-docx, so TestLintErrorContinues failed after checkout succeeded.
Evidence: Agent-System-Dev actions job 1012 reported ModuleNotFoundError: No module named docx.
Impact: The package comes from the Tsinghua PyPI mirror. Library CI still stops until SUBMODULE_TOKEN is set.
Refs: feature/agent-stack-r0-r1
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-03 10:38:40 +00:00
weichenandCursor 00c047533e Clone the repo in CI without GitHub-hosted actions
ci / test (pull_request) Failing after 1m36s
Why: The runner cannot reach github.com, so actions/checkout and setup-node would time out before make test.
Evidence: Go 1.27.1 comes from mirrors.aliyun.com and Node 22.23.3 from npmmirror. Checkout uses the job token and GITHUB_SHA.
Impact: Submodule checkout still requires SUBMODULE_TOKEN. A missing secret fails the job with that message.
Refs: feature/agent-stack-r0-r1
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-03 10:31:44 +00:00
weichenandCursor 42a92c9312 Set the CI module proxy and name the make test step
ci / test (pull_request) Failing after 30s
Why: make test downloads Go modules, and the runner cannot reach proxy.golang.org.
Evidence: The test job sets GOPROXY=https://goproxy.cn,direct. The step name lists boundaries, pins, libs, core, backend, frontend, ui, and agent-command.
Impact: npm still uses the default registry; add the npmmirror only if npm ci times out.
Refs: feature/agent-stack-r0-r1
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-03 10:19:57 +00:00
weichen 4bd0803c51 Use a repo-scoped PAT secret for private submodule clones in CI
ci / test (pull_request) Successful in 1m17s
Why: the job token only authorizes the event repository; sibling private
submodules (Development-Guidelines et al.) returned 404 on the first run.
Evidence: run 194 log — clone of deps/development-guidelines failed with
repository not found despite the insteadOf rewrite.
Impact: ci.yaml reads secrets.SUBMODULE_TOKEN (stored via API, never in
tree or chat); no other change.
Refs: run 194; PR#11
2026-09-30 04:07:22 +00:00
weichen 8252363c04 Add CI, version stamping, and the high-consequence two-key rule
Why: PR test evidence depended on the agent's word (single point); the
running binary could not answer what combination it was built from; and
irreversible operations lacked an explicit agent-stops-here boundary.
Evidence: Gitea runner online (home-runner, ubuntu-latest+docker); make
version prints describe+component SHAs; two-key line maps to baseline hard
boundary 1. CI first run observed on this PR before merge (see Actions tab).
Impact: .gitea/workflows/ci.yaml runs make test + make build on PR/push;
Makefile injects main.version (make version / agent-system version);
AGENTS.md and adoption register the two-key rule. No product code change.
Refs: policy/adoption.md; release-operations requirements
2026-09-30 04:05:42 +00:00