Why: the completion statement must carry precheck / task-sync / test evidence.
Evidence: make test exit 0 on tested_head=106ef07ef0 (full suite incl. ui 79
tests and agentcmd); functional evidence logged in the card.
Impact: card-only change; PR description mirrors this card.
Refs: .task/feature-svc-info.md
Why: svc.sh could show a service table (list), per-instance DB names one at a
time (db ls), and per-service status, but had no single view answering "what
is running, which databases exist, and what is configured" -- the questions
asked when inspecting or handing over a machine.
Evidence: exercised in the task worktree runtime -- empty-state report; fake
agent/static/postgres registrations proving masking (exec DSN password,
password=, SVC_TAVILY_KEYS -> ***, non-secret values verbatim; --reveal shows
plaintext); a real postgres instance (db create r-pg --port 18901, start,
extra orders db, one backup) whose info section lists inner databases with
sizes, pgdata size and backup stats; regressions list/history/--help/help
lifecycle/make svc-info; info stdout carries the full report (stderr 0 bytes)
so it can be redirected as a snapshot. Full log in the task card.
Impact: new read-only `scripts/svc.sh info [name] [--tag T] [--reveal]`
command (also `make svc-info`): service table + running summary, postgres
instances incl. inner databases, per-service svc.env content snapshots plus
global .svc.env / --config / exported SVC_* vars, and recent events. Secrets
are masked by default. No deploy/lifecycle/db-ops behavior changes; `info`
becomes a reserved service name; docs/svc.md gains section 6.2 (former
6.2-6.4 shifted to 6.3-6.5).
Refs: task card .task/feature-svc-info.md (same doc as the PR); docs/svc.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-code-orchestration.md(PR#177) — merges verified via git log --merges against origin/main.
Impact: .task/*.md moved to .task/archive/ with status backfilled; no code or submodule change.
Refs: task.sh close (card-autoclose-r1)
Why: task-sync appended the checkpoint rows after the results section, so the card no longer read as one table.
Evidence: the three sync rows now sit under the existing header.
Impact: documentation only.
Refs: feature/code-orchestration
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: the pin commit predates the full suite, and the card should name the commands that actually passed.
Evidence: make test and make build exited 0 in the feature worktree.
Impact: documentation only.
Refs: feature/code-orchestration
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: the shared Python host and the MCP connect change landed in the libraries the product already calls.
Evidence: native, squad, and backend feature commits are recorded on the task card.
Impact: gitlinks move to those commits. Code orchestration stays off unless the setting is turned on.
Refs: feature/code-orchestration
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The batch needs an explicit authorization, the default-off switch, and the host limits before the libraries change.
Evidence: The card names the caps, the forbidden tools, and the MCP behaviors that stay out of scope.
Impact: Reviewers can match the later commits to this card. No code change.
Refs: feature/code-orchestration
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-durable-rewind.md(PR#175) — merges verified via git log --merges against origin/main.
Impact: .task/*.md moved to .task/archive/ with status backfilled; no code or submodule change.
Refs: task.sh close (card-autoclose-r1)
Why: The card still said combined verification was pending after make test, make build, and the mock rewind check.
Evidence: Dialog listed notes.txt to restore and note.txt to skip; confirm removed notes.txt and appended the system note.
Impact: Reviewers see the browser check on the same card that becomes the PR body.
Refs: feature/durable-rewind
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: tool intent, file checkpoints, fallback, and span names landed in the libraries and the product shell.
Evidence: native, squad, core, backend, frontend, and ui feature commits are recorded in the task card.
Impact: gitlinks move to those commits. Default fallback stays empty and replay stays never.
Refs: feature/durable-rewind
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-permission-hooks.md(PR#173) — merges verified via git log --merges against origin/main.
Impact: .task/*.md moved to .task/archive/ with status backfilled; no code or submodule change.
Refs: task.sh close (card-autoclose-r1)
Why: The task card has to point at the Dev pull request before the sync checkpoints.
Evidence: Dev pull request 173 is open.
Impact: No code change.
Refs: feature/permission-hooks
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Session mode, confirmation detail, and the shared tool gate now exist in the libraries the product builds.
Evidence: make test passed. Plan mode rejects write_artifact while the default mode still runs it. Hook adapters match the old stop, reminder, and deny counts.
Impact: Empty permission mode keeps today's profile policy. There is no mode that skips every confirmation.
Refs: feature/permission-hooks
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-runstate-shell.md(PR#171) — merges verified via git log --merges against origin/main.
Impact: .task/*.md moved to .task/archive/ with status backfilled; no code or submodule change.
Refs: task.sh close (card-autoclose-r1)
Why: Acceptance needs the pin SHAs, the test evidence, and the mock composer check on the card.
Evidence: make test and make build passed on c0b8cf2. The mock composer switched to 排队 and back to 发送.
Impact: No code change.
Refs: feature/runstate-shell
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The conversation screen has to import the phase type so the unused-export ratchet stays at the baseline.
Evidence: frontend 5961b6e, knip 43.
Impact: No other pin moves.
Refs: feature/runstate-shell
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The composer phase and the SSE retry interval have to land together so a reconnect shows 重连中 and still receives the missed events.
Evidence: frontend dcf9b6b, backend 7bef7a4.
Impact: No change to permissions, models, or the already merged live-bubble fix.
Refs: feature/runstate-shell
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-context-engineering.md(PR#169) — merges verified via git log --merges against origin/main.
Impact: .task/*.md moved to .task/archive/ with status backfilled; no code or submodule change.
Refs: task.sh close (card-autoclose-r1)
Why: The review checkpoint should sit in the sync table with the acceptance row.
Evidence: tested_head 656016a at 2026-10-03T16:25:02Z.
Impact: No code change.
Refs: feature/context-engineering
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: task-sync appends the checkpoint after the card body, where it is not part of the table.
Evidence: The row records sync_base 02b5cb8286 and tested_head b6dba58.
Impact: No code change.
Refs: feature/context-engineering
Co-authored-by: Cursor <cursoragent@cursor.com>