Why: v0.2.0 must carry the DOCX tracked-change fix and the exec hard
switch (Backend #110) and the release record (Documents #50); RDM shared
work is blocked until v0.2.0 is tagged.
Evidence: SELF - make test exits 0 on this tree; Backend #110 CI success
on the merge commit; the composite CI on this PR is the GATE source.
Impact: modules/backend 92ede3b -> f1c9cc0, modules/documents 9995552 ->
d3c9b45. core/frontend/ui pins unchanged (a253a40/84b73ab/76d6633).
Refs: Backend #110; Documents #50; docs/records/2026-10-09-base-v0.2.0-release.md
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-base-v020-release.md; R0=007247f1e7a423fe900f6ab1638b51369e4e7497.
Impact: task metadata only; the feature workspace starts at 007247f1e7.
Refs: .task/feature-base-v020-release.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-ext8-remaining-shared-reads.md(PR#273) — 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: CI on PR HEAD is the authoritative gate before merge.
Evidence: Backend#109 success; Dev#273 success.
Impact: Task card only.
Refs: AGENTS.md evidence gate.
Why: The Dev combination must pin the closure commit; make test validates the fixed combination.
Evidence: modules/backend -> 92ede3b970dd8bc0a40b3359a04a6e35b812a9d1 (Backend PR #109).
Impact: Gitlink only.
Refs: Backend PR #109; task card.
Why: EXT-8 closure needs vector-channel sharing, the hostapi face, and citation-ref consistency; scope and non-goals (no base graph endpoint exists - RDM trace net is downstream) must be recorded first.
Evidence: rag Retrieve/rrfMerge and hostapi search shapes verified at source.
Impact: Task card only.
Refs: EXT-8 proposal; slice-1/2 cards.
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-ext8-remaining-shared-reads.md; R0=28a4dbcbf4d61d44b1e0300993962da419e98666.
Impact: task metadata only; the feature workspace starts at 28a4dbcbf4.
Refs: .task/feature-ext8-remaining-shared-reads.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-ext-11-scoped-host-factory.md(PR#271) — 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: CI on PR HEAD is the authoritative gate before merge.
Evidence: Backend#108 success; Dev#271 success.
Impact: Task card only.
Refs: AGENTS.md evidence gate.
Why: The Dev combination must pin the EXT-11 commit; make test validates the fixed combination.
Evidence: modules/backend -> bbe39b475fc79d4e1fbf211d3d6d55dcad9fac4a (Backend PR #108).
Impact: Gitlink only.
Refs: Backend PR #108; task card.
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-ext-11-scoped-host-factory.md; R0=c637d9516d93ab5674bac38e58238e2453c5ce87.
Impact: task metadata only; the feature workspace starts at c637d9516d.
Refs: .task/feature-ext-11-scoped-host-factory.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-ext8-slice2-shared-retrieval.md(PR#269) — 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: CI on PR HEAD is the authoritative gate before merge.
Evidence: Backend#107 success; Dev#269 success.
Impact: Task card only.
Refs: AGENTS.md evidence gate.
Why: The Dev combination must pin the slice-2 commit; make test validates the fixed combination.
Evidence: modules/backend -> 1de663a8d3302eddbd35d8a1906e4234e17c28e8 (Backend PR #107).
Impact: Gitlink only.
Refs: Backend PR #107; task card.
Why: Slice 2 closes the knowledge-retrieval half of EXT-8 and lands the minimal EXT-12 mirror switch; scope and limits must be recorded before code.
Evidence: Search paths (sqlite/like/PG) verified to share the knowledgeVisible predicate; cardsvc.emitCard mirrors unconditionally.
Impact: Task card only.
Refs: EXT-8/EXT-12 proposals; prior task cards' deferred-items registry.
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-ext8-slice2-shared-retrieval.md; R0=749f327986f30a953fb6723b6970c42738a572af.
Impact: task metadata only; the feature workspace starts at 749f327986.
Refs: .task/feature-ext8-slice2-shared-retrieval.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-ext-9-index-publish.md(PR#267) — 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: CI on PR HEAD is the authoritative gate before merge.
Evidence: Backend#106 success; Dev#267 success.
Impact: Task card only.
Refs: AGENTS.md evidence gate.
Why: The Dev combination must pin the EXT-9 commit; make test validates the fixed combination.
Evidence: modules/backend -> fbc924c24045f8a9e22fc4047982c23d09bcebf3 (Backend PR #106).
Impact: Gitlink only.
Refs: Backend PR #106; task card.
Why: EXT-9 is accepted (Documents #49) as the other step-4 hard prerequisite; the publish/revoke surface and the upload pre-index switch must be scoped before implementation.
Evidence: Knowledge store shapes verified (owner column, DeleteKnowledgeByRef, vectors-by-ref cleanup precedent).
Impact: Task card only.
Refs: EXT-9 proposal; U0 section 5 C5 / section 10 step 4.
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-ext-9-index-publish.md; R0=7b73dd19b8566446c137a6e3a46fed17bfa548d4.
Impact: task metadata only; the feature workspace starts at 7b73dd19b8.
Refs: .task/feature-ext-9-index-publish.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-ext-8-resource-authorizer.md(PR#265) — 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: CI on PR HEAD is the authoritative gate before merge.
Evidence: Backend#105 success; Dev#265 success (polled pending->success).
Impact: Task card only.
Refs: AGENTS.md evidence gate.
Why: The Dev combination must pin the EXT-8 commit; make test validates the fixed combination (which also carries the audit fix via stacking).
Evidence: modules/backend -> a4783d18e7156e4f48188e6816be865ed82380f6 (Backend PR #105, stacked on #104).
Impact: Gitlink only; other pins unchanged.
Refs: Backend PR #105; task card.
Why: Red run must be tool-pinned to the backend commit before the consultation lands.
Evidence: Row exit=1 at backend tip (shared read 404 with adapter set).
Impact: Task card only.
Refs: Task card.
Why: EXT-8 is accepted (Documents #49) and is the U0 step-4 critical path; the backend branch stacks on the audit-fix head (parent PR #104) to avoid a second gitlink conflict.
Evidence: Documents #49 and Dev #263 merged this session; parent head e0b1c27 pushed.
Impact: Task card only.
Refs: EXT proposal EXT-8; U0 section 5 C4 / section 10 step 4.
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-ext-8-resource-authorizer.md; R0=27885ceb3e6c774495b61e07f560efa1a51855fc.
Impact: task metadata only; the feature workspace starts at 27885ceb3e.
Refs: .task/feature-ext-8-resource-authorizer.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-ext-c1-c7-applications.md(PR#263) — 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: CI on PR HEAD is the authoritative gate; Documents has no CI runner (docs-only repo, 0 statuses) which must be stated, not implied.
Evidence: Documents#49 no statuses; Dev#263 ci/test success.
Impact: Task card only.
Refs: AGENTS.md evidence gate.
Why: Closing outputs plus honest SELF/GATE boundary on the card.
Evidence: task-sync exit=0; make test exit=0 at tip 9bdec04.
Impact: Task card only.
Refs: Task card.
Why: Composition validation at the new documents pin is the Dev-side gate.
Evidence: make test exit=0 (governance + pins + module suites at documents 9995552).
Impact: Task card only.
Refs: Task card.
Why: The Dev combination must pin the proposal commit; make test validates the fixed combination (adopting Documents main 4e57196 plus the new proposal and INDEX row).
Evidence: modules/documents -> 9995552152616bfaf6473cd9249e55a28a1685b4 (Documents PR #49); make test row follows.
Impact: Gitlink only; other pins unchanged.
Refs: Documents PR #49; task card.
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-ext-c1-c7-applications.md; R0=34a2bbe15793f7cf91ffd907123deb4113230794.
Impact: task metadata only; the feature workspace starts at 34a2bbe157.
Refs: .task/feature-ext-c1-c7-applications.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-architecture-guides.md(already-complete) — 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: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-rdm-status-review.md(PR#259) — 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 planning index registered the stale RDM snapshot as an open
reconciliation item; the review re-verdicts the baseline and audits the
seven MS1 acceptance clauses so P1 scheduling rests on evidence.
Evidence: Documents PR #47 merged as 9505c7e (plan SS2.3 review, MS1
audit, six registered gaps, index sync, seven SELF receipts under
docs/records); replays run in an isolated clone at RDM 4feb2f0 with
pins=v0.1.0; the private minutes receipt stays local by decision.
Impact: documents gitlink -> 9505c7e; task card records authorization,
requirements R1-R5, increments, and next-task candidates; no code
changes; review is not milestone acceptance.
Refs: Documents #47; task feature/rdm-status-review.
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-rdm-status-review.md; R0=218fc4b1ba00b0a03b5bb79f292b3eba6c987a58.
Impact: task metadata only; the feature workspace starts at 218fc4b1ba.
Refs: .task/feature-rdm-status-review.md
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-architecture-guides.md; R0=218fc4b1ba00b0a03b5bb79f292b3eba6c987a58.
Impact: task metadata only; the feature workspace starts at 218fc4b1ba.
Refs: .task/feature-architecture-guides.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-agent-stack-stage-records.md(PR#257) — 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 planning index named stage-record reconciliation as the
preferred next task; N1 WP6b/6c, the Q1 platform-task boundary, I1
reserved command consumption, and the I2 dangling reference all feed
N2/Q3 and RDM dependency judgments.
Evidence: Documents PR #46 merged as d630a04 (backfill sections in the
N1/Q1/I1 plan, stack completion plan I2 note, INDEX navigation); Dev
merge SHAs #230/#231/#234/#235/#237/#240 verified via git log --merges
on 2026-10-08; PR #242 body checked (0 wrong references, fixes confined
to the archived card).
Impact: modules/documents gitlink -> d630a04; archived I2 card now
points at stack completion plan SS5 I2 with a dated correction note;
task card records authorization, requirements, and increments.
Refs: Documents #46; task feature/agent-stack-stage-records.
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-agent-stack-stage-records.md; R0=17e5c92238b2a33f9884f97b6d912b708ec5f256.
Impact: task metadata only; the feature workspace starts at 17e5c92238.
Refs: .task/feature-agent-stack-stage-records.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: .task/feature-planning-index.md(PR#255) — merge d25d1fad0d is on origin/main. The merge subject does not match the automatic from-branch detector, so this closure follows the same backfill as task.sh close.
Impact: .task/feature-planning-index.md moved to .task/archive/ with status backfilled; no code or submodule change.
Refs: task.sh close (card-autoclose-r1); PR #255
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: a documents gitlink move needs a combination test before the Dev pull request.
Evidence: CMD=\"make test\" make evidence exited 0 on 4ebdc4ec4a.
Impact: task card evidence only.
Refs: .task/feature-planning-index.md
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: the user asked to finish this worktree, merge it after a clean sync, and remove the worktree.
Evidence: documents main c39efdc contains the index; Dev origin/main 7f1d87d is an ancestor of this branch.
Impact: task metadata only.
Refs: .task/feature-planning-index.md; Documents #45
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: include the current integration baseline before verification.
Evidence: origin/main=7f1d87dbb976ebe02ceb632d5a657a416ffb50bc. The documents gitlink is resolved to documents main c39efdc5015c57b18e18cc99ecf7f4c4f2e499ee, which contains the planning index.
Impact: integrate upstream changes and point documents at the merged index.
Refs: task-sync; Documents #45
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-agent-stack-q3.md(PR#253) — 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: check-pins requires nested and Dev-level pins to agree; squad main
advanced to 819b0c5 (nested agent-native pin #48) and backend main to
fe7c245 (nested agent-squad pin #103) after the Q3 WP1-WP5 merges.
Evidence: both component PRs CI green (GATE); make test recorded via
make evidence in the follow-up commit on this branch.
Impact: deps/agent-squad 663e89e -> 819b0c5; modules/backend 4791b2e ->
fe7c245; deps/agent-native stays 37c5e6f.
Refs: Q3 plan WP6; task card .task/feature-agent-stack-q3.md
Why: Q3 WP1/WP2 moved workflow execution out of runtime (workflow_script.go
deleted, so runtime no longer imports internal/tools) into the new
internal/wfcompile package, which legitimately depends on internal/tools
(script host) and internal/workflow (render/validate/Launch data layer).
Evidence: make test-boundaries green after the baseline update (77 edges,
negative test ok); the lint itself flagged both the stale edge and the new
ones (SELF).
Impact: baseline -1 edge (backend/runtime backend/tools), +3 edges
(backend/runtime backend/wfcompile, backend/wfcompile backend/tools,
backend/wfcompile backend/workflow).
Refs: Q3 plan WP1/WP2; task card .task/feature-agent-stack-q3.md
Why: Q3 (convergence and interop) completed across agent-native (#40),
agent-squad (#46/#47) and backend (#99-#102); Dev gitlinks must track the
merged component mains and the task card records the outcome before the
completion declaration.
Evidence: card increment table rows WP1a-WP6 with merged PR/SHA references;
component CI statuses recorded as GATE in the card verification section;
three-segment outputs (precheck/task-sync/test) appended via make evidence
in follow-up commits on this branch.
Impact: deps/agent-squad bcc8d08 -> 663e89e, deps/agent-native 1ac21c6 ->
37c5e6f, modules/backend 06934bc -> 4791b2e; task card filled.
Refs: .task/feature-agent-stack-q3.md; Q3 plan 2026-10-07-agent-stack-q2q3-plans.md
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-agent-stack-q3.md; R0=78409a9ceacacf8a152b811d94c7195c4f084664.
Impact: task metadata only; the feature workspace starts at 78409a9cea.
Refs: .task/feature-agent-stack-q3.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-agent-stack-q2.md(PR#251) — 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: include the current integration baseline before verification.
Evidence: fetched origin/main=1e85198578d8052c063c06c33fe0632ab01c213f.
Impact: integrate upstream changes without rewriting task history.
Refs: task-sync
Why: Q2 (topology library) completed in Agent-Squad across WP1-4 (PRs
#42-#45, main bcc8d08) and the backend nested pin followed (PR #98, main
06934bc); Dev gitlinks must track the merged component mains and the task
card records the outcome before the completion declaration.
Evidence: card increment table rows WP1-4 with merged PR/SHA references;
component CI statuses recorded as GATE in the card's verification section;
three-segment outputs (precheck/task-sync/test) appended via make evidence
in follow-up commits on this branch.
Impact: deps/agent-squad c462bc4 -> bcc8d08, modules/backend 6e02a1f ->
06934bc; task card filled (results/verification/increments).
Refs: .task/feature-agent-stack-q2.md; Q2 plan 2026-10-07-agent-stack-q2q3-plans.md
Why: Documents #44 merged the Q2/Q3 plans; the Dev documents pin
follows and the Q2 card opens with its requirement rows (Q3 gets its
own task after Q2 closes).
Evidence: R1-R4 map to the plan's Q2-WP1..WP4 with verified gap citations.
Impact: documentation pin + task card.
Refs: Agent-System-Documents#44
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-agent-stack-q2.md; R0=a30c55425a30c5f023b311e9f822f39b796bcbc8.
Impact: task metadata only; the feature workspace starts at a30c55425a.
Refs: .task/feature-agent-stack-q2.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-agent-stack-n3.md(PR#248) — 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: backend main carries the nested core pin at a253a40b plus the
rewind-test settle-window fix; the combination check now passes across
all nested copies.
Evidence: check-pins pins ok; backend CI green on 26bd9286 (GATE).
Impact: none beyond the pin.
Refs: Agent-System-Backend#97
Why: the TypeScript contract authority gained the usage split fields
(Core a253a40b) and the ui mirror was regenerated (UI 76d66337); the
Dev build step regenerates contracts.ts from the authority, so the
pins must carry this combination for the worktree check to pass.
Evidence: make contracts on this combination produces byte-identical
files (verified locally).
Impact: none beyond the pins.
Refs: Agent-System-Core#24, Agent-System-UI#39
Why: completion-declaration test segment per AGENTS.md (CI remains the
authoritative test source on the PR).
Evidence: row exit=0 in the card evidence table.
Impact: none.
Refs: N3 closure
Why: closure requires the results section with the acceptance evidence
map across all six work packages.
Evidence: three acceptance clauses map to named tests and GATE heads.
Impact: none.
Refs: N3 closure
Why: Backend#96 merged the usage split and default retry; the core
Usage fields, Frontend#48, and the native/squad cascades landed; Dev
pins and the increment record follow.
Evidence: check-pins pins ok; WP6 chain CI green on every merge head;
audit N20 closes (split flows into run records on every path).
Impact: usage accounting is uniform end to end; stream retry is a
library default.
Refs: Agent-Native#35-#39, Agent-Squad#41, Agent-System-Backend#96,
Agent-System-Frontend#48
Why: Backend#95 merged the memory port wiring; Native#34 and Squad#38
carried the port; Dev pins and the increment record follow.
Evidence: check-pins pins ok; WP5 chain CI green on every merge head;
the migration parity test GATE on backend 766a96e8.
Impact: the memory port exists end to end with write-back.
Refs: Agent-Native#34, Agent-Squad#38, Agent-System-Backend#95
Why: Backend#94 merged the checkpoint closure wiring; Native#33 and
Squad#37 carried the library work; Dev pins and the increment record
follow.
Evidence: check-pins pins ok; WP3 chain CI green on every merge head;
acceptance clause 2's tests GATE across layers.
Impact: rollback evidence complete (eligibility, symlink guard,
partial restore, retention, HTTP).
Refs: Agent-Native#33, Agent-Squad#37, Agent-System-Backend#94
Why: Backend#93 merged the GenAI telemetry wiring; Native#32 and
Squad#36 carried the convention work; Dev pins and the increment
record follow.
Evidence: check-pins pins ok; WP4 chain CI green on every merge head;
acceptance clause 3's tests GATE on native fe0c4a9f.
Impact: spans follow the OTel GenAI convention end to end.
Refs: Agent-Native#32, Agent-Squad#36, Agent-System-Backend#93
Why: Backend#92 merged the JournalOnly conversation wiring; Native#31
and Squad#35 carried the library mode; Dev pins and the increment
record follow, including the design adjustment (journal-only instead
of transcript-authoritative, with the freeze rationale).
Evidence: check-pins pins ok; WP2 chain CI green on every merge head;
acceptance clause 1's product tests GATE on backend 9f3fdb26.
Impact: conversation runs are durable mid-turn without freezing the
context pipeline.
Refs: Agent-Native#31, Agent-Squad#35, Agent-System-Backend#92
Why: Backend#91 merged the graceful-resume split; Native#30 and
Squad#34 carried the tail repair and N6 fix; Dev pins and the
increment record follow.
Evidence: check-pins pins ok; WP1 chain CI green on every merge head;
acceptance clause 1's library tests GATE on native cb21ec4e.
Impact: every Run now pairs orphan tails before the first request;
gracefully-interrupted subagents resume exactly once.
Refs: Agent-Native#30, Agent-Squad#34, Agent-System-Backend#91
Why: Documents #43 merged the N3 plan; the Dev documents pin follows
and the card opens with its requirement rows.
Evidence: R1-R6 map to the plan's WP1-WP6 with verified gap citations.
Impact: documentation pin + task card.
Refs: Agent-System-Documents#43
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-agent-stack-n3.md; R0=0e12b73e66d47c94a398648822d4928ecd43575c.
Impact: task metadata only; the feature workspace starts at 0e12b73e66.
Refs: .task/feature-agent-stack-n3.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-agent-stack-n2.md(PR#244) — 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: completion-declaration test segment per AGENTS.md (CI remains the
authoritative test source on the PR).
Evidence: row exit=0 in the card evidence table.
Impact: none.
Refs: N2 closure
Why: closure requires the results section with the acceptance evidence
map and the WP6 assembly review (no new settings; behavior changes
enumerated as intentional).
Evidence: R1-R6 rows and the three acceptance clauses map to named
tests and GATE heads.
Impact: none.
Refs: N2 WP6
Why: include the current integration baseline before verification.
Evidence: fetched origin/main=eb0d4b5a499322a23155c8d89a024247f6e7830d.
Impact: integrate upstream changes without rewriting task history.
Refs: task-sync
Why: Backend#90 merged the subagent transcript/resume/notice work;
Native#29 and Squad#33 carried the Background field; Dev pins and the
increment record follow.
Evidence: check-pins pins ok; WP5 chain CI green on every merge head;
the three WP5 acceptance tests are GATE on backend main 7980a8a2.
Impact: subagents are resumable with per-run transcripts and durable
notices.
Refs: Agent-Native#29, Agent-Squad#33, Agent-System-Backend#90
Why: preserve the synchronized candidate and its checked navigation before user review.
Evidence: current task-sync and document coverage/source-integrity checks succeeded; original receipts are unchanged.
Impact: task evidence only; no publication or business plan approval.
Refs: .task/feature-planning-index.md
Why: present a complete local index candidate without inferring missing plan owners.
Evidence: source facts, independent review and follow-up, all 19 source blobs, links and final make test output are preserved as SELF records.
Impact: Documents candidate and task metadata only; original plans and other tasks remain unchanged.
Refs: .task/feature-planning-index.md; Documents f8cc211
Why: Backend#89 merged the plugin/bundled skill validation; Native#28
and Squad#32 carried the validator; Dev pins, the plugins→skills edge,
and the increment record follow.
Evidence: check-pins pins ok; WP4 chain CI green on every merge head;
TestV2InvalidSkillRejected GATE on backend main b44f78b0.
Impact: skills now validated against the open Agent Skills spec.
Refs: Agent-Native#28, Agent-Squad#32, Agent-System-Backend#89
Why: preserve the required synchronization checkpoint for the local documentation candidate.
Evidence: task-sync confirms current main and the exact Documents candidate; full combination checks are recorded in the task card.
Impact: task evidence only; remote publication and plan approval remain pending.
Refs: .task/feature-planning-index.md
Why: make existing directions, milestones and tasks discoverable with their evidence boundaries.
Evidence: all 19 proposals are covered, 55 PR records were checked, and make test passed on the staged combination; original SELF receipts are preserved.
Impact: local documentation candidate only; the Documents candidate includes the N2 proposal already on Documents main, with Dev PR 244 coordination still recorded.
Refs: .task/feature-planning-index.md; Documents b87b929; PROJECT.md
Why: Native#27 merged the MCP 2026-07-28 alignment; Squad#31 and
Backend#88 carried the cascade; Dev pins and the increment record follow.
Evidence: check-pins pins ok; WP3 chain CI green on every merge head;
TestStdioSlowCancelThenEcho (acceptance 3) passes unchanged.
Impact: MCP client negotiates versions and recognizes resultType.
Refs: Agent-Native#27, Agent-Squad#31, Agent-System-Backend#88
Why: Native#26 merged the native Anthropic client (acceptance clause 1,
audit N4 closed); Squad#30 and Backend#87 carried the cascade; Dev pins
and the increment record follow.
Evidence: check-pins pins ok; WP2 chain CI green on every merge head;
TestAnthropicPresetToolRound GATE on native main d6053baf.
Impact: acceptance clause 1 is closed.
Refs: Agent-Native#26, Agent-Squad#30, Agent-System-Backend#87
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-planning-index.md; R0=eb0d4b5a499322a23155c8d89a024247f6e7830d.
Impact: task metadata only; the feature workspace starts at eb0d4b5a49.
Refs: .task/feature-planning-index.md
Why: Backend #86 merged the tool-group-aligned trimming; native #25 and
squad #29 carry the spill and cache contract work; the Dev pins and the
increment record follow.
Evidence: check-pins pins ok; WP1 chain CI green on every merge head.
Impact: acceptance clause 2's product side is closed
(TestTrimOldestKeepsToolPairs GATE).
Refs: Agent-Native#25, Agent-Squad#29, Agent-System-Backend#86
Why: close the approved task with actual integration outcomes and preserved original evidence.
Evidence: PR 245 CI run 1157 passed; merge-tree comparison and task-finish succeeded; all original receipt blocks are unchanged.
Impact: archived task metadata only; next-task advice remains unapproved.
Refs: PR #245; .task/archive/feature-goal-continuity.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-goal-continuity.md(PR#245) — 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: keep the task record and PR description tied to the same candidate.
Evidence: original PR creation receipt and sealed receipt digests remain intact.
Impact: task header and evidence only; no code changes.
Refs: PR #245; .task/feature-goal-continuity.md
Why: bind delivery to the refreshed component combination and preserve applicable review evidence.
Evidence: full make test and make build passed; the six reviewed files remain byte-identical after main synchronization.
Impact: task metadata only; CI and final integration remain separate gates.
Refs: .task/feature-goal-continuity.md; .task/reviews/goal-continuity-delivery.json
Why: the card was a skeleton; the plan is merged (Documents #42) and
the increments need their requirement rows.
Evidence: R1-R6 map to the plan's WP1-WP6 with verified gap citations.
Impact: none.
Refs: Agent-System-Documents#42
Why: Documents #42 merged the N2 plan (six work packages with the
current-state survey); the Dev pin follows.
Evidence: plan cites pinned baselines agent-native ead690b, backend
68addfd; implementation proceeds per its WP order.
Impact: documentation pin only.
Refs: Agent-System-Documents#42
Why: deliver the user-approved candidate against the latest authoritative main.
Evidence: preserved failed resume precheck, successful task-sync, and fresh READY receipt; approved policy and template files are byte-identical after synchronization.
Impact: task evidence and authorization only; no new business scope.
Refs: .task/feature-goal-continuity.md
Why: include the current integration baseline before verification.
Evidence: fetched origin/main=878e0e7ceba3bb6b78c36c5113eacc846a7f017b.
Impact: integrate upstream changes without rewriting task history.
Refs: task-sync
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-agent-stack-n2.md; R0=878e0e7ceba3bb6b78c36c5113eacc846a7f017b.
Impact: task metadata only; the feature workspace starts at 878e0e7ceb.
Refs: .task/feature-agent-stack-n2.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-agent-stack-i2.md(PR#242) — 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: native ead690be (Agent-Native#24) stops workspace-less requests
from writing session state into the process CWD; squad 029edc08
(Agent-Squad#28) and backend 68addfda (Backend#85) carry it. Without
this the CI build step fails the worktree check after make test.
Evidence: check-pins pins ok; combination re-verified by make test
before push (see card).
Impact: none beyond pins; the I2 slow-lane stack is unchanged.
Refs: Agent-Native#24, Agent-Squad#28, Agent-System-Backend#85, Dev#242
Why: completion-declaration test segment per AGENTS.md (CI remains the
authoritative test source on the PR).
Evidence: row exit=0 in the card evidence table.
Impact: none.
Refs: I2 closure
Why: evidence discipline records attempts as-is; the follow-up commit
preserves the .agentx transcripts and re-runs sync.
Evidence: row exit=2 in the card evidence table.
Impact: none.
Refs: I2 closure
Why: closure requires the results section filled with the acceptance
evidence map.
Evidence: R1-R4 rows reference the merged PRs and named tests.
Impact: none.
Refs: I2 closure
Why: the card was still the skeleton; increments 1-3 are merged and
need their record before closure.
Evidence: agent-intent #9/#10, Backend #83/#84, Native #23, Squad #27.
Impact: none.
Refs: I2 increments 1-3
Why: backend #83 merged the slow-lane wiring (intentsem scorer/
generator, gate SetSemantic/SetGenerator, settings flags default off);
the Dev pins and boundary rules must move with it.
Evidence: backend CI green on 9d29371; check-pins consistent
(agent-intent 343b1e6 across Dev and the backend nested copy);
lint-boundaries registers intentsem as an agent-intent adapter and the
architecture baseline gains backend/app->backend/intentsem.
Impact: product behavior unchanged by default; the two
runtime.intent* flags opt into the slow lane.
Refs: Agent-System-Backend#83, I2 increment 3
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-agent-stack-i2.md; R0=11eea9530d89adaffb426196f17f57069d045974.
Impact: task metadata only; the feature workspace starts at 11eea9530d.
Refs: .task/feature-agent-stack-i2.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-agent-stack-q1.md(PR#240) — 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: All seven work packages are merged and all three acceptance
clauses are verified; the close scan only folds completed cards.
Evidence: ten PRs merged across the chain; make test exit=0 at
516cdf62; all module suites green.
Impact: Task card only.
Why: All seven work packages landed; the card carries the three
acceptance clauses' evidence and the follow-ups.
Evidence: CI success on the two PRs of this increment; make test
exit=0 at 516cdf62; all module suites green.
Impact: Task card only.
Why: Agent-Squad PR #26 and Backend PR #82 landed; Dev pins must
point at those merged component main heads.
Evidence: check-pins exit=0.
Impact: Two gitlinks.
Refs: Agent-Squad PR #26; Agent-System-Backend PR #82
Why: WP4/WP6/WP7 landed with the three closing-out items; the
record carries the acceptance mapping.
Evidence: Agent-Squad #25 and Backend #81 merged; make test exit=0
at cc6970c7.
Impact: Task card only.
Why: Agent-Squad PR #25 and Backend PR #81 landed; Dev pins must
point at those merged component main heads.
Evidence: check-pins exit=0.
Impact: Two gitlinks.
Refs: Agent-Squad PR #25; Agent-System-Backend PR #81
Why: WP3 landed; the acceptance test form belongs to the record.
Evidence: Agent-Squad #24 and Backend #80 merged; make test exit=0
at 9c0fc6ae.
Impact: Task card only.
Why: Agent-Squad PR #24 and Backend PR #80 landed; Dev pins must
point at those merged component main heads.
Evidence: check-pins exit=0.
Impact: Two gitlinks.
Refs: Agent-Squad PR #24; Agent-System-Backend PR #80
Why: The card carries the authorized scope and the increment record.
Evidence: Agent-Squad #23 and Backend #79 merged; make test exit=0
at 2e4dacf9.
Impact: Task card only.
Why: Agent-Squad PR #23 and Backend PR #79 landed; Dev pins must
point at those merged component main heads.
Evidence: check-pins exit=0.
Impact: Two gitlinks.
Refs: Agent-Squad PR #23; Agent-System-Backend PR #79
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-agent-stack-q1.md; R0=3c3533450930660ea22c66b9d9d0f3cd1836499f.
Impact: task metadata only; the feature workspace starts at 3c35334509.
Refs: .task/feature-agent-stack-q1.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-agent-stack-i1.md(PR#235) — 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: All six work packages are merged and all four acceptance
clauses are verified; the close scan only folds completed cards.
Evidence: sixteen PRs merged across the chain; make test exit=0 at
8865beb9; both eval suites green.
Impact: Task card only.
Why: Branch protection required main in head; the synced
combination was retested.
Evidence: make test exit=0 at the synced head.
Impact: Task card only.
Why: include the current integration baseline before verification.
Evidence: fetched origin/main=1f7217f5bb2657418845d6bec6ae28c56920ddc8.
Impact: integrate upstream changes without rewriting task history.
Refs: task-sync
Why: All six work packages landed; the card carries the acceptance
evidence and the recorded boundaries.
Evidence: CI success on the five PRs of this increment; make test
exit=0 at 037c678f; both eval suites green.
Impact: Task card only.
Why: The I1 eval increments landed across the chain (intent #8,
squad #21/#22, native #22, backend #77/#78); Dev pins must point at
those merged component main heads.
Evidence: check-pins exit=0 after full matrix propagation.
Impact: Four gitlinks.
Refs: Agent-Intent PR #8; Agent-Squad PR #21/#22; Agent-Native PR #22; Agent-System-Backend PR #77/#78
Why: WP2/WP3/WP4 landed through the chain; scope rulings and the
boundary fix belong to the record.
Evidence: CI success on the seven PRs; make test exit=0 at 612b51bd.
Impact: Task card only.
Why: lint-boundaries and lint-architecture both pass now; the
receipt belongs to the card.
Evidence: make test exit=0 at the amended head.
Impact: Task card only.
Why: The dependency ratchet blocks new edges by default; the unique
router's four edges (route->intentgate, runmgr->intentgate,
runmgr->route, server->route) are the I1 router's intended shape.
Evidence: lint-architecture.sh ok (73 edges) and negative probe ok.
Impact: Policy baseline only.
Why: Backend PR #76 fixed the boundary violation by projecting the
command types through intentgate; the Dev pin must carry it for
lint-boundaries to pass.
Evidence: backend CI success on #76; check-pins ok.
Impact: One gitlink plus the card receipt.
Why: The failed run's receipt belongs to the card; nested chains
are normalized now.
Evidence: all nested checkouts normalized; check-pins ok.
Impact: Task card only.
Why: The I1 intent/router increments landed across the chain (intent
#6/#7, squad #19/#20, native #21, backend #74/#75); Dev pins must
point at those merged component main heads.
Evidence: check-pins exit=0 after the full cascade.
Impact: Four gitlinks.
Refs: Agent-Intent PR #6/#7; Agent-Squad PR #19/#20; Agent-Native PR #21; Agent-System-Backend PR #74/#75
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-agent-stack-i1.md; R0=3e8d2d3ba3e45589c93857f0cc6997ee3a9676d7.
Impact: task metadata only; the feature workspace starts at 3e8d2d3ba3.
Refs: .task/feature-agent-stack-i1.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-agent-stack-n1.md(PR#232) — 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: All six work packages are merged and the acceptance clauses are
verified; the close scan only folds completed cards.
Evidence: twelve PRs merged across the chain; make test exit=0 at
d464d0a9; A/B and plugin-validation tests green.
Impact: Task card only.
Why: Branch protection required the main merge commit in head; the
synced combination was retested.
Evidence: make test exit=0 at d78692c9 after syncing to b6974fa.
Impact: Task card only.
Why: include the current integration baseline before verification.
Evidence: fetched origin/main=b6974fa0d6fba0d28984fcfcb4418c541b83f915.
Impact: integrate upstream changes without rewriting task history.
Refs: task-sync
Why: The first task-sync attempt failed on a dirty tree; its receipt
is part of the record.
Evidence: transcript fixtures restored; tree clean.
Impact: Task card only.
Why: All six work packages landed; the card carries the acceptance
evidence and the deferred follow-ups (WP6b/WP6c).
Evidence: CI success on the five PRs of this increment; make test
exit=0 at f9d51b3f; A/B tests green.
Impact: Task card only.
Why: Increment four landed across the chain (native #19/#20, backend
#72, squad #18, backend #73); Dev pins must point at those merged
component main heads.
Evidence: check-pins exit=0; native c9c2f23, squad 7ecc04e and
backend 303983bd are direct merge commits on their component mains.
Impact: Three gitlinks.
Refs: Agent-Native PR #19/#20; Agent-Squad PR #18; Agent-System-Backend PR #72/#73
Why: present the completed local change with review evidence for human approval.
Evidence: independent replay passed 104 governance tests and static checks; original SELF receipts and report are preserved.
Impact: task metadata only; no push, PR, merge or cleanup has occurred.
Refs: .task/feature-goal-continuity.md; .task/reviews/goal-continuity.json
Why: give the reviewer a fixed candidate that includes the latest main baseline.
Evidence: original task-sync output confirms the baseline and exact component checkout.
Impact: task evidence only; policy and template remain the tested version.
Refs: .task/feature-goal-continuity.md
Why: make the approved supplement reviewable with exact local evidence and an explicit next-task recommendation.
Evidence: 104 governance tests and documentation/receipt checks passed; read-only Dev and Documents PR inventory is recorded as SELF.
Impact: task metadata only; remote delivery and human acceptance remain pending.
Refs: .task/feature-goal-continuity.md
Why: validate the approved policy supplement on the current authoritative baseline.
Evidence: task-sync completed and its original SELF receipt is in the task card.
Impact: task metadata only.
Refs: .task/feature-goal-continuity.md
Why: preserve project direction across tasks and require grounded next-task recommendations.
Evidence: the generated task-card regression fails before the template update and passes afterward; original SELF receipts are in the task card.
Impact: document the planning entrypoint and extend task records without granting new-task execution rights.
Refs: .task/feature-goal-continuity.md; policy/delivery.md
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-goal-continuity.md; R0=b6974fa0d6fba0d28984fcfcb4418c541b83f915.
Impact: task metadata only; the feature workspace starts at b6974fa0d6.
Refs: .task/feature-goal-continuity.md
Why: Branch protection requires main in head; the synced combination
was retested and the receipt belongs to the card.
Evidence: make test exit=0 at c2e5de0d after syncing to main 42f5ac4.
Impact: Task card only.
Why: include the current integration baseline before verification.
Evidence: fetched origin/main=42f5ac4b763fcbfaf9490bb8943c970cb0f4d293.
Impact: integrate upstream changes without rewriting task history.
Refs: task-sync
Why: WP1/WP4 landed through the native/squad/backend chain; the card
records scope rulings and evidence.
Evidence: CI success on #18/#17/#71; make test exit=0 at fa0e30bd.
Impact: Task card only.
Why: Increment three landed across the chain (native #18, squad #17,
backend #71); Dev pins must point at those merged component main
heads so the tested combination is the released one.
Evidence: check-pins exit=0; native c5b9dca, squad fc9620e and
backend f0b0db9 are direct merge commits on their component mains.
Impact: Three gitlinks.
Refs: Agent-Native PR #18; Agent-Squad PR #17; Agent-System-Backend PR #71
Why: The pin cascade (#17, #69, #16, #70, #230) is part of the
delivery record; the card reflects the current merged pins.
Evidence: all five PRs merged; Dev pins at native c2befaf, squad
a75d359, backend d34c2e8; make test exit=0 at 3f824790.
Impact: Task card only.
Why: The Dev-level pin combination (native c2befaf, squad a75d359,
backend d34c2e8) passed make test; the receipt belongs to the card.
Evidence: make test exit=0 at 3f824790; check-pins exit=0.
Impact: Task card only.
Why: Squad PR #16 and Backend PR #70 completed the pin cascade;
Dev's squad and backend pins must point at those merged heads for
check-pins to verify the tested combination.
Evidence: a75d359 is the #16 merge on squad main; backend main head
is the #70 merge; backend CI passed before each merge.
Impact: Two gitlinks.
Refs: Agent-Squad PR #16; Agent-System-Backend PR #70
Why: include the current integration baseline before verification.
Evidence: fetched origin/main=9c9483ac54ff5355c86824ac94097e65e59dcb5d.
Impact: integrate upstream changes without rewriting task history.
Refs: task-sync
Why: Library PR #17 and Backend PR #69 are merged; the Dev pins must
point at the merged component main heads (native c2befaf, backend
fe0c5a4) so the tested combination is the released one.
Evidence: both pins are direct merge commits on their component
mains; backend CI passed at 4075cc6 before its merge.
Impact: Two gitlinks plus the task card evidence records.
Refs: Agent-Native PR #17; Agent-System-Backend PR #69
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-rdm-phase-plan.md(already-complete) — 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 close scan only folds completed cards; the plan PRs are
approved for merge.
Evidence: Documents PR #41 and Dev PR #229 open at b8eaa16/2b1d949.
Impact: Task card only.
Why: The card and the PR description are the same document; links and
the sync record belong to the delivery record.
Evidence: Documents PR #41 and Dev PR #229 open; task-sync already up
to date at bc3f74f8.
Impact: Task card only.
Why: The evidence gate writes command output through make evidence;
commit it before the next capture so sync sees a clean tree.
Evidence: make test exit=0 at e698c646 (receipt in the card).
Impact: Task card only.
Why: Register the docs-only planning task and point the documents
gitlink at the phase-plan commit on its feature branch.
Evidence: task card carries the precheck receipt; documents commit
b8eaa16 holds the proposal.
Impact: Task card plus documents gitlink; no code changes.
Refs: docs/proposals/2026-10-07-rdm-phase-plan.md
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-rdm-phase-plan.md; R0=df2b72b4803a17ef1b725c3125a31529f15f3272.
Impact: task metadata only; the feature workspace starts at df2b72b480.
Refs: .task/feature-rdm-phase-plan.md
Why: Backend PR #69 and its test receipt join the delivery record.
Evidence: backend go vet + full go test ok at the backend branch head.
Impact: Task card only.
Why: preserve the independent audit of archived receipts and completed workspace disposal.
Evidence: SELF review verifies 29 receipt digests, unchanged failed-test originals and current Git cleanup state.
Impact: task records only; no code or component changes.
Refs: PR #227; .task/reviews/iterative-delivery-closure.json
Why: close the task with actual CI, merge and cleanup records and restore receipt integrity from preserved originals.
Evidence: original SELF receipt digests validate; the recorded red-green integrity check traces and repairs three metadata-substituted outputs.
Impact: archived task record only; code and component pointers are unchanged.
Refs: PR #227; .task/archive/feature-iterative-delivery.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-iterative-delivery.md(PR#227) — 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: keep the task card and PR body on the same authoritative record.
Evidence: the PR creation receipt records PR 227 and its exact source/base commits.
Impact: task metadata only; CI will verify this final PR head.
Refs: .task/feature-iterative-delivery.md; PR #227
Why: preserve the required current-base check before publishing the reviewed candidate.
Evidence: task-sync refreshed origin/main and materialized the pinned combination.
Impact: task evidence only; the resolved review fix is unchanged.
Refs: .task/feature-iterative-delivery.md
Why: archived task cards change directory and must retain an unambiguous policy reference.
Evidence: review finding 1, focused red-green proof and 104 passing governance tests are preserved in the task card.
Impact: use a repository-root text reference; record the completed review and its resolved finding.
Refs: .task/feature-iterative-delivery.md; .task/reviews/iterative-delivery.json
Why: The card tracks the WP increments; library PR #17 and its test
receipt belong in the record.
Evidence: agent-native go vet + 24-package go test ok at 9758a8d.
Impact: Task card only.
Why: present a fixed candidate with current test evidence and explicit remaining gates.
Evidence: task-sync confirmed origin/main and local full tests passed; receipts are retained in the task card.
Impact: task metadata only; implementation is unchanged from the tested candidate.
Refs: .task/feature-iterative-delivery.md
Why: preserve test and build evidence before the required clean-tree review synchronization.
Evidence: make test and make build completed on 9454819; the recorded sync refusal preserves the uncommitted-evidence check.
Impact: task evidence only.
Refs: .task/feature-iterative-delivery.md
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-agent-stack-n1.md; R0=2147d5cb6566c301eaea3c65448bdda873093aea.
Impact: task metadata only; the feature workspace starts at 2147d5cb65.
Refs: .task/feature-agent-stack-n1.md
Why: validate iterative delivery against the latest authoritative component combination.
Evidence: task-sync receipt in the task card records the actual merge and component materialization.
Impact: task evidence only; tests will run on this fixed candidate.
Refs: .task/feature-iterative-delivery.md
Why: include the current integration baseline before verification.
Evidence: fetched origin/main=2147d5cb6566c301eaea3c65448bdda873093aea.
Impact: integrate upstream changes without rewriting task history.
Refs: task-sync
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-agent-stack-n1q1i1-plans.md(already-complete) — 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 close scan only folds completed cards; the plans PRs are open
and the results section is filled.
Evidence: Documents PR #40 and Dev PR #226 open at e935713/46904b5.
Impact: Task card only.
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-iterative-delivery.md; R0=f394bcd93bc813433203c5281c79de6865c40944.
Impact: task metadata only; the feature workspace starts at f394bcd93b.
Refs: .task/feature-iterative-delivery.md
Why: The card is the same document as the PR description; PR links
and the results section belong to the delivery record.
Evidence: Documents PR #40 and Dev PR #226 are open.
Impact: Task card only.
Why: Capture mode wrote the receipt only; import appends it to the
card so the completion declaration has its test section.
Evidence: receipt_sha256 recorded in the card evidence block.
Impact: Task card only.
Why: Register the docs-only planning task and point the documents
gitlink at the proposal commit on its feature branch.
Evidence: task card carries the precheck receipt; documents commit
e935713 holds the proposal.
Impact: Task card plus documents gitlink; no code changes.
Refs: docs/proposals/2026-10-07-agent-stack-n1q1i1-plans.md
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-agent-stack-n1q1i1-plans.md; R0=f394bcd93bc813433203c5281c79de6865c40944.
Impact: task metadata only; the feature workspace starts at f394bcd93b.
Refs: .task/feature-agent-stack-n1q1i1-plans.md
Why: the results fill was pushed after PR #224 merged; carry it on the close branch instead.
Evidence: same text as branch commit 767744a; GATE runs cited within.
Impact: task metadata only.
Refs: .task/archive/fix-ext-5-wide-cols.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: fix-ext-5-wide-cols.md(PR#224) — 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: backend e7fb276 fixes the EXT-5 review findings; pin it and keep the verification row with it.
Evidence: SELF receipt exit=0 (full make test green); backend PR #68 CI pending as GATE.
Impact: modules/backend gitlink 727f370 -> e7fb276; task card row.
Refs: .task/fix-ext-5-wide-cols.md
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/fix-ext-5-wide-cols.md; R0=c06da5735904e63db4cbcdb75b3b10b48aeffc32.
Impact: task metadata only; the feature workspace starts at c06da57359.
Refs: .task/fix-ext-5-wide-cols.md
Why: the task card is the primary record; the merged card had an empty results section.
Evidence: summaries reference the SELF rows above and GATE CI runs (backend #67, Dev run 975).
Impact: task metadata only, on the close branch.
Refs: .task/archive/feature-ext-5-host-parse.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-ext-5-host-parse.md(PR#222) — 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: make test does not compile examples/; the EXT-5 Host method requires the example fake to keep compiling.
Evidence: SELF receipt; example.com/agent-system-plugin-rdm ok.
Impact: task metadata only.
Refs: .task/feature-ext-5-host-parse.md
Why: documents has no CI; the diff-check is its verification gate.
Evidence: SELF receipt; diff --check clean, two documents commits and one backend commit listed.
Impact: task metadata only.
Refs: .task/feature-ext-5-host-parse.md
Why: completion claims require tool-written evidence (AGENTS.md).
Evidence: SELF receipt appended by make evidence; full suite green incl. ui 103 tests and agent-command.
Impact: task metadata only.
Refs: .task/feature-ext-5-host-parse.md
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-ext-5-host-parse.md; R0=840f8f96d184b8ecd6c3e84951ee408aa654a25b.
Impact: task metadata only; the feature workspace starts at 840f8f96d1.
Refs: .task/feature-ext-5-host-parse.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-ui-pin-align.md(PR#220) — 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 umbrella pinned 2cb1496, a commit on ui's feature/governance-docs
branch rather than main history, so the material-12 check (Dev gitlink equals
the ui tag commit) would fail the moment the owner tags v0.1.0.
Evidence: make test on the re-pinned combination (recorded via make evidence
on the task card).
Impact: modules/ui gitlink 2cb1496 -> 27d5adb (ui main tip, an ancestor);
all four sub-repo pins now sit on their repos' main history.
Refs: .task/feature-ui-pin-align.md
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-ui-pin-align.md; R0=e2eee6f514a376aae87b79586a95b8bfd3d944a3.
Impact: task metadata only; the feature workspace starts at e2eee6f514.
Refs: .task/feature-ui-pin-align.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-finish-guard-fixes.md(PR#217) — 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: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-finish-guard-fixes.md; R0=4edec763fff1b8239e203dc9106f16a241ca343d.
Impact: task metadata only; the feature workspace starts at 4edec763ff.
Refs: .task/feature-finish-guard-fixes.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-governance-reliability.md(PR#213) — 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 owner authorized conflict-free integration and safe worktree cleanup after verification.
Evidence: final fixed combination passes make test and make build; full outputs and review replay records are in the task card.
Impact: authorization and evidence metadata only; no source or component change.
Refs: .task/feature-governance-reliability.md
Why: bind the reviewable governance repair to the synchronized candidate and related component PRs.
Evidence: tool-generated SELF make test and make build output plus independent repair REPLAY records in the task card.
Impact: task metadata only; platform protection and deployment remain owner-controlled.
Refs: .task/feature-governance-reliability.md
Why: main advanced with merged-task-name and legacy evidence guards during this task.
Evidence: SELF 44 lifecycle regressions pass after resolving both hunks; independent review repairs are recorded in the task card.
Impact: retains both task-start protections and the stronger JSON/legacy receipt reader, without rewriting either branch history.
Refs: Dev PR #211 and #212; .task/feature-governance-reliability.md
Why: independent review found shared submodule metadata risk, quoted header leakage, stale JSON receipt blindness and missing abandon coverage.
Evidence: SELF 92 governance regressions pass; the original review receipt and replay output are recorded in the task card.
Impact: preserves external component worktrees, handles both evidence formats and adds targeted failure-path coverage; no product behavior changes.
Refs: .task/feature-governance-reliability.md; .task/reviews/governance-reliability.json
Why: retain complete tool-generated local verification for the governance repair candidate.
Evidence: SELF task-sync, 75 governance tests, full make test, make build and syntax checks are recorded in the task card.
Impact: evidence metadata only; product and gate implementations are unchanged.
Refs: .task/feature-governance-reliability.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-task-start-merged-guard.md(PR#211) — 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: 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
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-ext-1-inproc-handler.md(PR#209) — 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 completion claim needs a make test evidence row whose tested HEAD is this branch, not the discarded template commit.
Evidence: make evidence captured make test exit 0.
Impact: task card only.
Refs: PR #207
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: the recreated branch needs its own evidence rows for the checks that already passed on the merged implementation.
Evidence: precheck, cmdbus/rag/app/extension tests, downstream example, and boundary lint, written by make evidence.
Impact: task card only.
Refs: PR #207
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: task-start recreated feature/ext-1-inproc-handler on main and replaced the card already merged in PR #207 with an empty template.
Evidence: restored content matches 63a62a79ac; no product code change.
Impact: this branch tip keeps the merged card instead of deleting it.
Refs: PR #207
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-evidence-driven-gates.md(PR#205) — 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: evidence rows are written before their containing card commit, so a naive
HEAD-diff would flag every task's evidence as stale and train people to ignore
the warning.
Evidence: bash -n clean; the live task-sync for this task exercises the new
path (warning fires only when a non-.task diff follows an evidence row's HEAD).
Impact: scripts/task.sh cmd_sync now excludes .task from the staleness diff;
AGENTS.md wording aligned (three-output evidence via make evidence).
Refs: task card evidence table; guidelines verification.md tool-written rule.
Why: facts-verify failed closed on first run — the real token file stores keys
as markdown bullets ("- ACCESS_TOKEN=..."), so the ^-anchored sed match in the
registry never fired; the earlier manual probe had used grep (anywhere-in-line)
and passed, which is exactly the drift the registry re-verification exists to
surface.
Evidence: re-run recorded in the task card — [facts-verify] total=4 pass=4
fail=0 (sha256 919401b838d77909), after fixing the sed pattern to
"^[ -]*ACCESS_TOKEN=".
Impact: policy/facts.md F2 command now matches the actual file shape and the
fact text documents the file format; no behavior change elsewhere.
Refs: task card evidence table (failed run sha256 6c61e644395042fa, then pass).
Why: the make-variable pass-through re-quoted CMD and broke any command
containing quotes (caught by the redaction self-test before it could run).
Evidence: redaction self-test now records 'token <redacted> hello' with quoting
intact (row sha256 aae6a895); negative 'false' case earlier recorded exit=1
row and propagated rc — both in the task card evidence table.
Impact: CMD now travels via environment (CMD="..." make evidence); SRC/TAIL
stay make variables; usage strings updated in Makefile/AGENTS.md/task.sh
template comment.
Refs: task card evidence table; guidelines draft.10 tool-written-evidence rule.
Why: declarations were passing as capability; hand-transcribed outputs flowed
through cards and PR bodies as if they were execution evidence, and stale
external facts (e.g. the dead git-panel host) kept being trusted until burned.
Evidence: guidelines draft.10 (PR Development-Guidelines#4, merged af199ee)
pinned here; policy/facts.md F1-F4 each re-verified on 2026-10-05 before
registration (endpoint version, token HTTP 200 via header only, SSH ls-remote,
dead-host negative probe); scripts syntax-checked (bash -n); tool self-tests
and make test recorded in the task card via the new make evidence.
Impact: new AGENTS.md section (SELF/REPLAY/GATE, tool-written evidence,
replay-on-review, zero-trust facts, honest-empty); make evidence/facts-verify;
precheck gains [hooks]/[facts], task-sync gains stale-evidence-HEAD warning;
task-start cards now embed the evidence table; gitlink advances to draft.10.
Refs: task card .task/feature-evidence-driven-gates.md; guidelines CHANGELOG
0.1.0-draft.10.
Why: task-sync asks for the formal acceptance evidence on the task card before the Dev PR is reviewed.
Evidence: make test passed in the task worktree, including frontend vitest 17 files / 82 tests and ui 103 tests.
Impact: task card only.
Refs: .task/fix-preview-expanded-hidden.md
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: task-sync appends the checkpoint row at end of file, and the results section sat after the table, so the row rendered outside it.
Evidence: the row values are unchanged from the sync commit ce46543.
Impact: task card markdown only.
Refs: .task/fix-preview-expanded-hidden.md
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Expanding the preview left the conversation column in the row because .main { display: flex } overrode the UA [hidden] rule. Frontend PR #47 restores that hide and centers a wide docx page.
Evidence: Frontend vitest previewfit + design-guard 10 passed. Headless Chromium 1512x900 shows expanded .main display:none, preview slot 1184px, page center delta 0; at 420px and 640px the wrapper stays column-width and the page stays left-aligned.
Impact: modules/frontend 0a0b556 -> 50c7244. Narrow-column fit scaling is unchanged. previewfit still returns 1 when available width is <= 0.
Refs: .task/fix-preview-expanded-hidden.md; https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Frontend/pulls/47
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: fix-pg-boolean-columns.md(PR#185) — 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: Backend PR #62 dependency is now merged and the Dev branch is
synced with main; the card needs the closing evidence trail.
Evidence: backend 29 packages ok; make test all green at 8a91cded.
Impact: task card only.
Refs: PR #185
Why: Backend PR #62 merged as 3f438b9 (superseded by #64/#65); task card
requires re-pinning the gitlink to the backend merge commit before the
Dev PR can merge.
Evidence: backend go vet + go test ./... -count=1 all ok (29 packages);
merged tree content-identical to backend main.
Impact: modules/backend 685bd0d -> 3f438b9.
Refs: .task/fix-pg-boolean-columns.md
Why: The archive commit moved the card before the status and PR link were written into the file.
Evidence: The working tree now records status 已完成 and PR #200 against merge 795bff20f3.
Impact: archived task card text only. No code or submodule change.
Refs: Agent-System-Dev#200
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: PR #200 merged with a title that does not contain "from feature/preview-scroll-consolidate into main", so task-close could not see the card.
Evidence: merge 795bff20f3 is origin/main and the card is now archived with status backfilled.
Impact: .task card moved to .task/archive/. No code or submodule change.
Refs: Agent-System-Dev#200
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: task-sync appended the checkpoint outside the sync table, and the card still described the pre-sync test run.
Evidence: make test passed after the origin/main merge (frontend 82 tests, ui 103 tests, backend and library tests).
Impact: task card only. No code or gitlink change.
Refs: feature/preview-scroll-consolidate
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The right-hand preview clipped docx instead of scrolling, and a second overlay viewer duplicated FilePreview. Both fixes are already on the module mains.
Evidence: make test passed in the task worktree (boundaries, pins, libs, core, backend, frontend 82 tests, ui 103 tests, agent-command).
Impact: modules/ui moves to 27d5adb (icons #36 and contrast #37). modules/frontend moves to 0a0b556 (preview scroll #46, including contrast #45).
Refs: Agent-System-UI#36, Agent-System-Frontend#46, Agent-System-Dev#196
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-contrast-typography.md(PR#198) — 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 is the review record, and it still had empty result fields after make test passed.
Evidence: make test exited 0. Frontend 81 tests and UI 103 tests, including contrast-guard. Browser computed styles on the Vite preview confirmed the molv new-task button and the 18px font ramp.
Impact: .task/feature-contrast-typography.md now states the result, the evidence, and the items left out (rem, prefers-contrast, focus ring).
Refs: feature/contrast-typography
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: DESIGN.md and tokens.css have to change in the same pull request, and the host has to consume the new UI and frontend commits for the sidebar button and font-size setting to exist.
Evidence: contrast-guard and both package test suites passed in the linked commits (UI 103 tests, frontend 81 tests). Dev make test follows before review.
Impact: Text floors, text-grade semantic colors, molv sidebar tokens, xs at 11px, and the local font-size setting are now the written rules. §12.1 records the before/after values. Gitlinks move to the contrast-typography commits.
Refs: feature/contrast-typography
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-docx-paper-preview.md(PR#196) — 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 appends the checkpoint after the results section, so the row rendered as a loose line.
Evidence: the checkpoint values are unchanged and now sit under the sync table header.
Impact: Task record formatting only.
Refs: feature/docx-paper-preview
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The card named the UI and frontend commits but not the pull requests that carry them.
Evidence: UI pull request 35 and frontend pull request 44 are open.
Impact: Task record only. No code or gitlink change.
Refs: feature/docx-paper-preview
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The task card is the main record and still had a placeholder where the pull request link belongs.
Evidence: Dev pull request 196, UI pull request 35, frontend pull request 44.
Impact: Task record only. No code or gitlink change.
Refs: feature/docx-paper-preview
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The card still said browser checks and the combined test were pending after both had passed.
Evidence: make test exited 0 in this worktree. The harness measured white paper, black ink, preserved document colors, scale 0.496 at 420px, and transform none at 998px.
Impact: Task record only. No code or gitlink change.
Refs: feature/docx-paper-preview
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The card still named the frontend commit from before the tsbuildinfo follow-ups.
Evidence: modules/frontend HEAD is 9badbb1.
Impact: Task record only. No code or gitlink change.
Refs: feature/docx-paper-preview
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The frontend branch gained two follow-up commits that stop a typecheck artifact from dirtying the submodule.
Evidence: modules/frontend HEAD is 9badbb1 and git status in that repo is clean.
Impact: The Dev branch records the frontend tip that includes page scaling and the tsbuildinfo ignore. No other gitlinks move.
Refs: feature/docx-paper-preview
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The preview painted docx pages with the theme background, so black document text was unreadable in dark mode and the page overflowed the narrow column.
Evidence: UI vitest 84 passed and tsc clean at b14c9c0; frontend vitest 81 passed and tsc -b clean at cf6f24e.
Impact: DESIGN.md documents --paper and --paper-ink. Gitlinks pick up the UI and frontend paper-preview commits. Mammoth and fake-docx text fallbacks stay theme-styled.
Refs: feature/docx-paper-preview
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-store-pg-archived-literal.md(PR#194) — 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 is the main record and needs the Dev PR link
alongside the backend PR.
Evidence: Dev PR #194 is open; make test already passed after task-sync.
Impact: task card text only.
Refs: Agent-System-Dev#194, Agent-System-Backend#65
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: the default unarchived task list still compared a BOOLEAN column
to the integer literal 0, so GET /api/conversations returned 500 on
the postgres tier after the previous dialect fix.
Evidence: backend PR #65 (8d82408). Before the fix, TestConversationFlagsAndTaskList
on pg1 failed with SQLSTATE 42883; after, go test ./internal/store -count=1
passed on pg1. Dev make test passed on this pin.
Impact: modules/backend gitlink moves to 8d82408. No other surface changes.
Refs: Agent-System-Backend#65
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-store-pg-bool-dialect.md(PR#192) — 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 backend fix unblocks account management, login and conversation
flags on the postgres tier (1/0 literals and int scans rejected with 42804).
Evidence: backend PR #64 merged; live pg1 CLI verified (reset-password +
user list OK); combined make test green.
Impact: dev pins move to the fixed backend; no other surface changes.
Refs: Agent-System-Backend#64
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-svc-adjust-warn-fix.md(PR#189) — 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: adjust_args_for_bin strips the leading space of its return while the
rebuilt args keep it, so every rebuild carrying --dsn/--auth compared
unequal and warned that the legacy binary had the flags dropped even when
nothing was dropped — misleading during incident triage.
Evidence: bash -n clean; against the real dev binary the normalized
comparison reports no drop and the flags survive intact; make test green.
Impact: warning now fires only when flags are actually filtered; no
behavioral change to start/deploy.
Refs: PR #188
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-svc-start-keep-db-binding.md(PR#188) — 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 2026-10-05 dev outage — a restart with an explicit --addr rebuilt
the start args, and the rebuild branch dropped the persisted --dsn for the
dev env, so the binary resolved auth=auto to off on 0.0.0.0 and the new
listen guard refused to spawn; record_state then persisted the broken exec=
before the health probe, so bare starts kept failing.
Evidence: bash -n clean; sandbox registry with stub binaries — dbref DSN is
re-derived on rebuild (priority CLI > env > dbref), the pre-flight blocks
non-loopback without auth with actionable remedies, immediate-death starts
leave the previous exec= intact, and DSN masking covers all start-path log
lines; make test green.
Impact: dev/prod agent starts keep their DB binding across explicit-arg
rebuilds; failed starts no longer corrupt the registry; static/pg paths get
the same persist-after-probe ordering (pg already had it); no change to
deploy materialization or the binary guard semantics.
Refs: backend 8eda35f (listen guard), runtime/dev history.jsonl 01:23 fail
Why: The feature branch is on main, and the open task card would stay as bookkeeping debt.
Evidence: Dev pull request 186 merged as 090be2404e. The merge subject does not contain the from-branch line, so the automatic scan skipped it.
Impact: The card moves to .task/archive with status filled in. No product code changes.
Refs: .task/archive/feature-sillytavern-review.md
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The task card is the pull request description, and it has to name the child merges and the checks that already passed.
Evidence: Documents 37, UI 34, Core 21, Frontend 43, Native 16, Squad 15, and Backend 63 are merged. Dev is still open.
Impact: The card stays in progress until the Dev pull request merges.
Refs: .task/feature-sillytavern-review.md
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The task card has to name the commits and the gates that already passed before sync.
Evidence: make test and make build exited 0. config explain refuses 0.0.0.0:8788. serve on 0.0.0.0:18799 exited 1 and left no database directory.
Impact: The card still says the work is in progress until the pull requests merge.
Refs: .task/feature-sillytavern-review.md
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The incremental build info commit has to be the gitlink Dev records.
Evidence: modules/frontend is eb6502f. make build produced bin/agent-system.
Impact: The parent branch names the same frontend commit the worktree built.
Refs: .task/feature-sillytavern-review.md
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The shared types dropped a spare export so the knip ratchet stays at its baseline, and every container must name those commits.
Evidence: core 0b5c774, ui 6b2589c, frontend 13a1c63, backend c05832d. UI knip 55 and frontend knip 43.
Impact: Gitlinks move together. JSON field names are unchanged.
Refs: .task/feature-sillytavern-review.md
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The listen guard reads auth and host policy from config before the database opens, so app depending on config is a real edge.
Evidence: make test stopped in lint-boundaries on backend/app backend/config. The edge is now in the baseline.
Impact: New imports still fail the ratchet. This one records the startup guard's dependency.
Refs: .task/feature-sillytavern-review.md
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Dev's agent-native moved for message shaping, so squad and backend have to follow or check-pins fails.
Evidence: Squad 5a57636 and backend include that pin. make test previously stopped at test-pins on this mismatch.
Impact: The parent, backend, and squad all resolve agent-native 3a110a7.
Refs: .task/feature-sillytavern-review.md
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Empty innerHTML clears were flagged because the space matcher could backtrack past the quotes. The child tests now keep that whitespace inside the lookahead.
Evidence: Frontend vitest 78 passed. UI html-sinks passed. Child commits are ui 5f8308a and frontend 02cebc0.
Impact: The parent pins match the ratchet that allows clearing a node before appending sanitized children.
Refs: .task/feature-sillytavern-review.md
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The card still had placeholders for authorization, scope, and the compatibility note that reverse proxies need allowedHosts.
Evidence: The card names the new message and observation fields and the items that stay out of this task.
Impact: Reviewers can use the card as the PR description without reconstructing the scope.
Refs: docs/records/2026-10-04-sillytavern-review.md
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The research record, HTML cleaning, listen guard, secret store, and context controls land together, and the parent pointers have to name those commits.
Evidence: Child commits are core bd63223, agent-native 3a110a7, ui d76a8e6, frontend 36b92ed, documents f3f823e, backend 42cca8f. svc.sh forwards the listen switches and info prints them.
Impact: A reverse proxy or a LAN hostname needs allowedHosts or an unauthenticated host check returns 403. Startup moves raw API keys into the secret table after a settings snapshot.
Refs: .task/feature-sillytavern-review.md
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: advance the backend gitlink to the boolean-column fix so the dev
runtime's PostgreSQL tier stops failing every conversations endpoint.
Evidence: backend branch pushed (685bd0d); make test run recorded in
the task card.
Impact: gitlink-only change in Dev; combined verification via make test.
Refs: .task/fix-pg-boolean-columns.md
Why:
The dev runtime switched to the PostgreSQL tier today and every
conversation endpoint started returning 500. Migrations define
conversations.pinned/archived/allow_cross_read/cross_private and
users.must_change_password/is_admin as BOOLEAN on PostgreSQL but
INTEGER on SQLite, while the store layer compared them with 0/1
literals, scanned them into int, and wrote them via boolInt().
Under pgx these fail with 42883 (operator does not exist: boolean =
integer), bool encode errors, or 42804 (column is of type boolean but
expression is of type integer).
Evidence:
- main 4fd03ee with AGENT_PG_TEST_DSN: TestConversationFlagsAndTaskList
and TestAdminAccountsAndSessions fail with the errors above; live
GET /api/conversations returned "operator does not exist: boolean =
integer (SQLSTATE 42883)".
- this branch: full ./internal/store suite green on the PostgreSQL tier
(AGENT_PG_TEST_DSN against a scratch database), pgbus green,
make test-backend green on the SQLite tier.
- scan into *bool and Go bool parameters are cross-dialect: pgx encodes
bool natively; database/sql converts bool<->0/1 for SQLite.
- pre-existing and out of scope: ./internal/runmgr PG integration tests
fail on main too (gin_trgm_ops invisible inside the search_path
isolation schema, 42704).
Impact:
Conversations list/detail/flags and user auth-state reads/writes now
work identically on both storage tiers; SQLite behavior is unchanged
(same tests green). Boolean columns that are INTEGER in both dialects
(hitl_cards.resolved, profiles.builtin, activity_cards.pinned) keep
boolInt().
Refs: task card .task/fix-pg-boolean-columns.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: fix-settings-dotted-keys.md(PR#181) — 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 must show that Backend #61 is on main and the Dev branch was retested after syncing.
Evidence: make test exited 0 at 2026-10-04T13:45:06Z on the pin of fd17011.
Impact: documentation only.
Refs: fix/settings-dotted-keys
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: the Dev branch must record the Backend main commit that contains the settings fix, not the unmerged feature tip.
Evidence: Backend #61 merged as fd17011.
Impact: modules/backend gitlink moves from d90b9c0 to fd17011. Behavior is the merged fix.
Refs: fix/settings-dotted-keys
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-svc-db-bind.md(PR#182) — 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: completion statement carries precheck/task-sync/test evidence.
Evidence: make test exit 0 at head ecfed7b; functional evidence in the card.
Impact: card-only; PR description mirrors this card.
Refs: .task/feature-svc-db-bind.md
Why: beyond database binding, services needed a way to switch the JSON config
file they run with and have the new config take effect promptly; hand-editing
exec= risks restarting a service into an invalid config.
Evidence: in the task worktree with a real agent binary -- a config with an
unknown key is rejected by the binary's strict schema check before any state
change; a valid file binds via --config in exec= + conffile= (survives
record_state rewrites), restarts the running service, and the config's dsn
verifiably drives the process (wrong-password variant failed PG auth in the
log; correct variant connected and created 21 tables); editing the file and
re-running 'config <same file>' re-validates and restarts (pid changes);
'--clear' removes both the flag and conffile; db and config coexist in exec=;
view mode shows masked JSON content plus 'config explain' effective values
with masked dsn; list DB column also resolves dsns that live only inside the
config file. Full log in the task card.
Impact: new service-level action 'svc.sh <name> config [file | --clear]
[--no-restart]' for agent services; config-file content snapshots (masked,
--reveal to show) in info; a config-file line in status; conffile persisted
in svc.env. No agent binary changes.
Refs: task card .task/feature-svc-db-bind.md (same doc as PR #182);
docs/svc.md sections 2/4.5/4.6/6/10.1
Why: acceptance of the settings fix is the deploy log and the live key checks, and that evidence belongs on the task card.
Evidence: dev@8b63e2b logged normalized 4 dotted keys in 2 scopes and registered 1 Tavily key. The web_search probe returned ok.
Impact: documentation only. The backend pin is unchanged. Merging stays with the owner.
Refs: fix/settings-dotted-keys
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: info showed services and postgres instances but no service-to-database
correspondence, and switching an agent service to another database required
redeploying with a hand-built DSN. While wiring this up, adjust_args_for_bin
was found matching Go flag help with '--dsn' although Go prints '-dsn', so
deploy-built --dsn/--auth args were silently dropped on current binaries.
Evidence: full E2E in the task worktree with a real agent binary and a real
PostgreSQL 18 instance -- 't-app db bpg' persisted exec=/dbref, auto-restarted
(dbref survives record_state rewrites), and the agent created 21 tables in the
bound database; 'db bpg --db t2' auto-created and switched databases (21
tables in t2); '--clear' returned the service to embedded SQLite; --no-restart
and error paths behave; list gains a DB column, status a database line, info a
reverse bound-services line; legacy deployments without dbref resolve by DSN
host:port; single-dash detection proven with positive and negative cases;
regressions list/db dsn/db ls/info/history/--help pass; make test exit 0.
Full log in the task card.
Impact: new service-level action 'svc.sh <name> db [pg [--db X] | --clear]
[--no-restart]' for agent services (bind/switch/unbind/view), DB column in
list, binding lines in status/info, dbref persisted in svc.env, auto database
creation when the instance runs, and the adjust_args_for_bin fix restoring
deploy --dsn/--auth on current binaries. No agent binary changes.
Refs: task card .task/feature-svc-db-bind.md (same doc as the PR); docs/svc.md
sections 4.5/6.1/6.2/10.1
Why: the task card is the review record and needs the Dev and Backend PR links.
Evidence: Dev #181 and Backend #61 exist.
Impact: documentation only.
Refs: fix/settings-dotted-keys
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: the acceptance sync needs the verification result on the task card before review.
Evidence: make test exited 0 after task-sync onto 3836ea88e3.
Impact: documentation only. The backend pin is unchanged.
Refs: fix/settings-dotted-keys
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: dotted setting writes were stored as unread keys, and secret pools were returned in clear text.
Evidence: Backend go test ./... at d90b9c0. Dev make test follows this pin.
Impact: the dev branch tracks Backend fix/settings-dotted-keys until that PR merges, then the pin moves to main.
Refs: fix/settings-dotted-keys
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: the final task-sync before merging PR #179 committed its checkpoint row
locally (43a1514) but was not pushed before the merge, so the row never
reached the archived card.
Evidence: row | 同步前验收 | 1263e7f7d1 | bfc2208cbd | 2026-10-04T12:49:36Z |
appended next to the 12:42:58Z row in .task/archive/feature-svc-info.md.
Impact: card-archive-only change on this close branch; no code.
Refs: PR #179; .task/archive/feature-svc-info.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-svc-info.md(PR#179) — 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 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>
Why: Acceptance needs the pin SHAs and the test evidence on the same card that will be archived.
Evidence: make test and make build passed on 658c2fa.
Impact: No code change.
Refs: feature/context-engineering
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Tool-result clearing, folded reminders, and character truncation land in the native loop and the product path together.
Evidence: agent-native 6fd1d44, agent-squad 4d53450, backend b2dc9a7.
Impact: Default context window stays 32000 characters. Empty tool selection still exposes the profile's tools.
Refs: feature/context-engineering
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-architecture-baseline.md(PR#167) — 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 evidence has to live on the card before review and merge.
Evidence: make test and make build both exited 0. An injected architecture edge fails.
Impact: Task card only.
Refs: feature/architecture-baseline
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: New cross-layer imports and unused exports could land unnoticed, and confirm-waiting reused the success color.
Evidence: bash scripts/lint-boundaries.sh passed, including a probe that a new edge fails. Both design-guard tests passed. Knip counts stay at the baselines.
Impact: make test-boundaries now checks architecture edges. Frontend and ui test targets also run the knip ratchet.
Refs: feature/architecture-baseline
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-llm-robustness.md(PR#165) — 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 evidence has to live on the card before review and merge.
Evidence: make test and make build both exited 0 after pinning native 9f5751c.
Impact: Task card only.
Refs: feature/llm-robustness
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The direct path's default retry only works once every repo builds the same model stream.
Evidence: native 9f5751c, squad 9efce79, backend 93adb93.
Impact: Three gitlinks move. No product UI change.
Refs: feature/llm-robustness
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The card has to state the authorized scope before the pins move.
Evidence: Precheck READY at 8078a3582c.
Impact: Task card only.
Refs: feature/llm-robustness
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-pi-zcode-second-pass.md(PR#163) — 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 evidence has to live on the card before review and merge.
Evidence: make test and make build both exited 0 after pinning documents 847f681.
Impact: Task card only.
Refs: feature/pi-zcode-second-pass
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The stack proposal and the durable note need the v1.0.1 correction before later batches change code.
Evidence: Documents 847f681 adds the second-pass record, the durable correction, and proposal section 2.4.
Impact: Only the documents gitlink moves. No library or product code.
Refs: feature/pi-zcode-second-pass
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: fix-live-run-visibility.md(PR#161) — 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 submodule pull requests landed as merge commits, and the parent pin must include those tips so the composed tree keeps both this fix and the commits that arrived on submodule main.
Evidence: Frontend main is 8be98b4 (contains e4ca2ac); Backend main is 28ccb74 (contains 51b1ff6).
Impact: Dev #161 now pins the commits that are already on each submodule main.
Refs: Frontend #38, Backend #54, Dev #161
Why: The task card is the review record, and it needed the three pull request links once they existed.
Evidence: Frontend #38, Backend #54, and Dev #161 are open.
Impact: Task card only.
Refs: Dev #161
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Sending a message left the composer on 发送 and hid the live process, because the user message now carries the run id and a refresh had no cursor to replay an open run.
Evidence: make test passed in the worktree. A mock server showed the stop and queue buttons within 250ms, the reply growing before it settled, and the in-progress turn restored after switching away and after reload.
Impact: Frontend and backend gitlinks only, plus this task card. No core contract change.
Refs: Frontend fix/live-run-visibility, Backend fix/live-run-visibility
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-pi-durable-borrow.md(PR#159) — 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 is the same document as the review request, and the pull request links belong on it once they exist.
Evidence: Documents #35, Backend #53, Frontend #37, Dev #159.
Impact: Task card only. Status stays in progress until the owner merges.
Refs: feature/pi-durable-borrow
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: task-sync appends the checkpoint after the card body, which leaves the sync record outside the table.
Evidence: The review checkpoint is sync_base a5c9fd3385, tested_head e8acda76ef, checked_at 2026-10-03T14:39:41Z.
Impact: Task card formatting only.
Refs: feature/pi-durable-borrow
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The task card has to carry the precheck, task-sync, and test evidence before review.
Evidence: make test and make build exited 0 on 9e46605. task-sync reported sync_base a5c9fd3385 and tested_head 9e466059b9.
Impact: Task card only.
Refs: feature/pi-durable-borrow
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The review and the four recovery fixes live in the documents, backend, and frontend repositories. The Dev pin is what the combined test runs.
Evidence: Documents 6340900, backend 44aa764, frontend 763c4b4. Each submodule branch is feature/pi-durable-borrow, based on that repository's origin/main.
Impact: Gitlinks only. The pins also move documents, backend, and frontend forward to the main commits that landed after the previous Dev pin.
Refs: feature/pi-durable-borrow
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The generated card had empty authorization and scope. The task covers a research record plus four backend recovery fixes, and those limits have to be on the card before implementation.
Evidence: make precheck verdict READY at a5c9fd3385; required reading core/baseline.md and workflows/delivery.md §1 completed.
Impact: Task card only. No product code.
Refs: feature/pi-durable-borrow
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-agent-stack-blueprint.md(PR#151) — 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 proposal branch has to contain current main before it can land. The owner asked for the open proposal pull requests to be merged.
Evidence: origin/main is 508d216. Documents #34 is merged as 76044b5, same tree as 233dfb54, which this branch already pins.
Impact: the blueprint task card and the documents pin stay. Archived cards follow main.
Refs: Dev #151, Documents #34
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-agent-stack-d1.md(PR#156) — 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 name the heads that CI will merge.
Evidence: make test exited 0 on bbffa42. make build version string contains native=d84a67c squad=02c0d6a intent=65aaebc backend=0a9a977.
Impact: task card only.
Refs: D1
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Dev has to record the native head that treats a cancelled stream as aborted, and the squad and backend checkouts that point at it.
Evidence: GOWORK=off go test -count=50 -race ./runtime/llm/ passed on d84a67c.
Impact: gitlinks only. The earlier make test covered the previous pin.
Refs: D1
Why: the acceptance record has to name the heads and the make test result before review.
Evidence: make test exited 0 on e760579. make build version string contains native=33573d0 squad=5e414ff intent=65aaebc backend=5d0097d.
Impact: task card only.
Refs: D1
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Dev has to test the split modules and refuse a core import of a sibling library.
Evidence: bash scripts/lint-boundaries.sh printed boundaries ok. Full make test follows on this pin.
Impact: test-libs runs the intent, native, sqlite, and command modules. The sibling allowlist is empty.
Refs: D1
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-agent-stack-r2.md(PR#154) — merge 0a047db verified on origin/main. The merge subject did not match the from-branch pattern, so task.sh close skipped it.
Impact: .task/feature-agent-stack-r2.md moved to .task/archive/ with status backfilled; no code or submodule change.
Refs: task.sh close (card-autoclose-r1)
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: the task card has to carry the make test and make build results before the batch is merged.
Evidence: make test exited 0 and make build wrote bin/agent-system on 8c0dc8d.
Impact: documentation only.
Refs: R2 pin
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: native 855fe41 is the first head whose go.sum covers intent's NFKC import, so the later pins have to move with it.
Evidence: native go test of runtime, adapters, and exec passed; squad and backend vet passed on 855fe41 and 31ee395.
Impact: three gitlinks and the task card move. Product code in Dev is unchanged.
Refs: I4
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Dev must record the intent, native, squad, and backend commits that close this batch so check-pins sees one tree.
Evidence: agent-intent 05e74d8, agent-native 11d1a76, agent-squad 1bb0c3a, and backend a494375 are the feature/agent-stack-r2 heads.
Impact: four gitlinks move and the task card records the batch scope.
Refs: R2 pin
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-agent-stack-r0-r1.md(PR#unknown) — 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: 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>
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>
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>
Why: The acceptance note would otherwise claim the workflows were only pending, while the intent run already failed cloning the checkout action.
Evidence: Agent-Intent actions run 661 failed after 30s with dial tcp 20.205.243.166:443 i/o timeout.
Impact: Documentation only. No proxy change and no branch-protection change.
Refs: feature/agent-stack-r0-r1
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-duplication-lesson-records.md(PR#13) — 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 close branch was behind main, so branch protection would reject it, and both sides had edited the same task card.
Evidence: The archived card keeps main's later sync rows and the close record for PR #126. git diff against origin/main is only that archive move.
Impact: This branch still archives only feature-agent-professional-deliverables.md. Merge stays with the owner.
Refs: feature/card-close-20261001-082349Z
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The task card still named the previous library commits, and acceptance needs the sync, test, and build evidence on this card.
Evidence: make task-sync at 2026-10-03T10:22:12Z, make test exit 0, make build version 789a6f4 with backend ef0a1be, native 91c1556, squad e928ea3, intent 7f7879b.
Impact: Documentation only. The gitlinks were already committed.
Refs: feature/agent-stack-r0-r1
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Dev must record the commits that contain the hold fixes, the offline pin check, and the CI checkout change.
Evidence: intent 7f7879b06b053f0a62746309b79e0e1b9a00f42d, native 91c155618487e21edeb4f1d3cc27e985aae2b0d2, squad e928ea3c0fa649cbbbad22a93a1bc0a12dee5f7d, backend ef0a1bef0f7bee626e59f160be51fb0e5f6aa692.
Impact: The four gitlinks match the open pull request heads. Other pins are unchanged.
Refs: feature/agent-stack-r0-r1
Co-authored-by: Cursor <cursoragent@cursor.com>
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>
Why: Merge commits share a tree with the pinned feature commit, the import ratchet downloaded modules during CI, and task sync wrote the checkpoint onto the wrong card.
Evidence: check-pins accepts 6c0f1e8 (same tree as Backend squad 8e987bf) and rejects empty-tree 8db069d; both objects stayed local. An empty GOMODCACHE run of lint-boundaries matches the cached go list, 14 pairs. bash -n scripts/task.sh.
Impact: make pin no longer checks out Backend nested core or agent-command, and a failing pin check does not fail the target. task sync writes the branch card or warns. precheck reports completed-but-unarchived cards and card-close branches older than 24 hours.
Refs: feature/agent-stack-r0-r1
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: the task card is the record of where review happens, and the links did not exist until the pull requests were opened.
Evidence: Gitea returned Intent #3, Native #8, Squad #7, Backend #50, and Dev #152. None were merged.
Impact: task card only.
Refs: R0 R1
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: task-sync appended this branch's checkpoint to another open card, and the acceptance evidence belongs on this task.
Evidence: make test and make build exited 0; check-pins failed on the temporary squad pin 5cbac00 and passed after restore.
Impact: task cards only. The other card loses the misplaced sync row.
Refs: R0 R1
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Dev could ship a combination whose nested gitlinks differed from the top-level pins, and make test never ran the three agent libraries.
Evidence: A go.work was measured and not adopted: workspace MVS selected newer golang.org/x crypto, exp, net, term, and text than backend with GOWORK=off. check-pins passes on the new pins and fails when backend's squad pin is 5cbac00.
Impact: make test adds pin checks and GOWORK=off vet/test for intent, native, and squad. make build still compiles inside backend; the pin check requires those gitlinks to match Dev.
Refs: R0
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: the task card must state the allowed endpoint before library edits begin.
Evidence: plan authorizes five unmerged PRs and forbids merge, release, and history rewrite.
Impact: task card only; no code or gitlink change.
Refs: .task/feature-agent-stack-r0-r1.md
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The task card is the record of this delivery, and both pull requests now exist.
Evidence: Documents PR 34 and Dev PR 151 are open and not merged.
Impact: Task card text only.
Refs: feature/agent-stack-blueprint
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The completion claim needs the precheck, sync, and combination test evidence on the task card.
Evidence: make test exited 0 after sync_base f4aa0348d7 and tested_head 2237c79b3a.
Impact: Task card text only. No code or gitlink change.
Refs: feature/agent-stack-blueprint
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The three agent libraries need one reviewed design for defects, external practice, and decoupling before any further code lands.
Evidence: Documents 233dfb54ea1cd8e8085769832eef18fb3eaa04b7 adds the proposal and the audit record; PR https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Documents/pulls/34
Impact: Gitlink only. No library code, no runtime change. Later stages stay separate tasks and are not merged here.
Refs: feature/agent-stack-blueprint
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-final-reply-compose.md(PR#149) — 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 appends the checkpoint to the first card by filename.
Evidence: make task-sync printed tested_head 5072554b09
Impact: The checkpoint stays on feature-final-reply-compose. The other card is unchanged.
Refs: feature/final-reply-compose
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The task card still said the meeting-minutes replay was pending.
Evidence: make test; browser run_102f0c09ff32
Impact: Documents the final reply, the check row, and the card appearing after the reply.
Refs: feature/final-reply-compose
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The final reply still printed the artifact id and byte count.
Evidence: go test ./internal/runtime/ -run TestComposeReplyDropsInternalRefs
Impact: Backend gitlink moves to 46d5f7b.
Refs: feature/final-reply-compose
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The first composed reply still included the model's think block and the internal quality score.
Evidence: go test ./internal/runtime/ -run TestCompose
Impact: Backend gitlink moves to 1512ae5. No other module changes.
Refs: feature/final-reply-compose
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: task-sync appends the checkpoint to the first card in .task, which belonged to another task.
Evidence: make test at tested_head c7932dd
Impact: The sync row and the test note sit on feature-final-reply-compose. The other card is unchanged from before this sync.
Refs: feature/final-reply-compose
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The work timeline was being shown as the answer, and file cards appeared before the run had a finished reply.
Evidence: make test
Impact: Gitlinks move to the final-reply branches. The timeline spec now includes the finalizing phase and delays deliverable cards until the reply is done.
Refs: feature/final-reply-compose
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-stream-display-overhaul.md(PR#147) — 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 is the review record, and it still pointed at a placeholder after the pull request existed.
Evidence: Dev pull request 147 is open.
Impact: The card status stays in progress until merge.
Refs: feature/stream-display-overhaul
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Tool calls stayed invisible while arguments streamed, and a failed run hid the only reply inside the collapsed process block.
Evidence: make test in the worktree passed: boundaries, core, backend, frontend vitest 66, ui vitest 79, agent-command. Mock browser check showed the Chinese process summary, the reply outside the fold, a humanized error with 继续执行, and the back-to-bottom button.
Impact: Dev gitlinks move to the feature commits for core, agent-native, backend, ui, and frontend. DESIGN.md §9.6 describes individual tool blocks for exec, write, and delegate.
Refs: feature/stream-display-overhaul
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-agent-harness-p4.md(PR#144) feature-s4-shell-overhaul.md(PR#145) — 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: P4 is on main, and the shell pull request has to record UI and frontend commits that contain both the workflow contracts and the shell.
Evidence: submodule trees match the merged mains for core, backend, documents, ui, and frontend.
Impact: the shell branch now contains P4's example workflows and the combined pins.
Refs: feature/s4-shell-overhaul
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The confirm card only folds after the client refetches the decision, so the parent pin has to include that frontend commit.
Evidence: make test passed; mock browser checked the shell, the pending filter, the blocked card, the folded row, and the molv theme.
Impact: task card records the result; modules/frontend moves to the refetch commit.
Refs: feature/s4-shell-overhaul
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The molv theme and the rebuilt shell land together, so the design doc and the submodule pins stay in one change.
Evidence: UI npm test 79 passed; frontend tsc -b and npm test 61 passed.
Impact: DESIGN.md records the molv token table; modules/ui and modules/frontend point at the shell branches.
Refs: feature/s4-shell-overhaul
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Acceptance needs the precheck, task-sync, and make test evidence on the card, plus what the three live conversations actually did.
Evidence: make test passed at 5f872f3. The sync row is in the table. The p4 service produced the slot question, one critic rejection, a confirmed plan, and the plugin script artifact.
Impact: Documentation only. The six pull requests stay unmerged.
Refs: feature/agent-harness-p4
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Dev should record the backend commit that runs a registered script from the launch of that call.
Evidence: go test ./internal/runtime/ -run TestRegisteredWorkflowUsesItsOwnScriptCopy passed.
Impact: Only the backend pointer moves.
Refs: feature/agent-harness-p4
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Dev should record the backend commit that makes planning return JSON and makes the critic reject a missing line.
Evidence: go test ./internal/runtime/ ./internal/prompts/ passed on that commit.
Impact: Only the backend pointer moves.
Refs: feature/agent-harness-p4
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The step critic has to call the configured model, and Dev should record that backend commit.
Evidence: go test ./internal/runtime/ -run TestJudgeUsesConfiguredModel passed in the backend repo.
Impact: Only the backend pointer moves.
Refs: feature/agent-harness-p4
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The live check needs the first draft to miss a line the critic can name, then the retry can add it.
Evidence: The prompt does not mention the marker. maxRetries stays 1.
Impact: demo.brief drafts are rejected until they contain 核对标记:P4.
Refs: feature/agent-harness-p4
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Dev has to record the Core, Backend, Frontend, UI, and Documents commits that implement intent-to-workflow.
Evidence: make test passed, including boundary lint, core, backend, frontend vitest, UI tsc and vitest, and agent-command.
Impact: agent-native stays at a34689c. The example plugin is already on this branch.
Refs: feature/agent-harness-p4
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The example plugin needs a bound intent and a plugin-shipped script so the three P4 paths can be checked against a real plugin.
Evidence: TestRepoExamplePluginLoads accepts the plugin, asks 主题是什么?, and keeps the topic slot.
Impact: demo.brief starts the five-step workflow. demo.script stays unbound and needs runtime.workflowScripts.
Refs: feature/agent-harness-p4
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The task card is the authorization record for intent-to-workflow work, and the routing, retry, and script rulings have to be fixed before code changes.
Evidence: precheck READY at 959179f88f; core/baseline.md and workflows/delivery.md section 1 were read.
Impact: No product code. Six pull requests are the delivery end, and merging them is not authorized.
Refs: feature/agent-harness-p4
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-agent-harness-p3b.md(PR#142) — 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 appends the checkpoint after the results section, and the card keeps those rows in the sync table.
Evidence: The row is the 2026-10-01T15:51:28Z checkpoint for d05a73872c.
Impact: No code change.
Refs: feature/agent-harness-p3b
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The card and the Dev pull request should name the five open requests and state that none are merged.
Evidence: Core #15, Backend #46, Frontend #32, UI #26, Dev #142.
Impact: No code change. Main is unchanged.
Refs: feature/agent-harness-p3b
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: task-sync appends the checkpoint after the results section, and the card keeps those rows in the sync table.
Evidence: The row is the 2026-10-01T15:39:25Z checkpoint for 1bc9954e40.
Impact: No code change.
Refs: feature/agent-harness-p3b
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The task card has to show the combination test and the two live conversations before the pull requests open.
Evidence: make test passed at 6430738. p3b on 127.0.0.1:8841 showed a queued notice turn and a review pipeline.
Impact: No code change.
Refs: feature/agent-harness-p3b
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The combination has to move together so background subagents, review, and the notice row are the same build.
Evidence: Each module's own tests passed on its feature branch. agent-native stays at a34689c.
Impact: Dev does not merge this pin. The four module pull requests stay open until review.
Refs: feature/agent-harness-p3b
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Background subagents, review, squad role mapping, and prompt overrides need an explicit write scope and the three rulings before code edits.
Evidence: make precheck verdict READY at fdd311c8c0. Required reading baseline.md and delivery.md section 1.
Impact: No code change. Kernel and squad contracts stay as on main.
Refs: feature/agent-harness-p3b
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-agent-harness-p3.md(PR#140) — 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 after the test block. The card keeps sync rows in one table.
Evidence: sync_base bc8fef76bb, tested_head 53f8a05, checked_at 2026-10-01T14:50:18Z.
Impact: Task card only.
Refs: feature/agent-harness-p3
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The confirm card on a child run and the history split were only covered by tests. A real conversation had to show they hold before merge.
Evidence: p3a at dev@f823118. explore hid tool names from the next turn, writer pinned artifacts, the inbox showed the child confirm card, and the squad leader wrote output.md.
Impact: Task card only. No code change.
Refs: feature/agent-harness-p3
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The card is the pull request body, so it has to name the open Backend and Dev requests.
Evidence: Backend pull 45 and Dev pull 140 are open and unmerged.
Impact: Task card only. Neither request is merged.
Refs: feature/agent-harness-p3
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Acceptance needs the precheck, task-sync, and test evidence on the same card that will become the pull request.
Evidence: make task-sync at 5ed3649; make test exited 0 (boundaries, core, backend, frontend 51, ui 71, agent-command).
Impact: Task card only. No code or submodule change.
Refs: feature/agent-harness-p3
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Subagents now run a profile-scoped tool loop and stay out of the parent history. The Dev checkout has to build that backend.
Evidence: Backend 5051a06; go test ./... and make test passed in this checkout. The three agent-native gitlinks stay a34689c.
Impact: Only modules/backend moves. Squad, core, and the three agent-native pins stay put.
Refs: feature/agent-harness-p3
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The subagent runtime task needs an explicit write scope and the two rulings before backend edits.
Evidence: make precheck verdict READY at bc8fef76bb. Required reading baseline.md and delivery.md section 1.
Impact: No code change. Kernel, squad, and core contracts stay as on main.
Refs: feature/agent-harness-p3
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-agent-harness-p2.md(PR#138) — 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 is the PR description, and it needs the Backend and Dev pull request links.
Evidence: Backend pull request 44 and Dev pull request 138 are open. Neither is merged.
Impact: Documentation only.
Refs: feature/agent-harness-p2
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Acceptance needs the precheck, task-sync, and make test output on the task card before the pull requests.
Evidence: task-sync sync_base=d02fa9c20a tested_head=f9d7bbe9f2. make test exited 0.
Impact: Documentation only. No further code change.
Refs: feature/agent-harness-p2
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Direct runs now check artifacts and run a fail-closed verifier before they stop. The Dev checkout has to build that backend.
Evidence: Backend a3ae1b9; go test ./... passed in that checkout. agent-native gitlinks stay a34689c.
Impact: Only modules/backend moves. Squad and the three agent-native pins stay put.
Refs: feature/agent-harness-p2
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The harness P2 task needs an explicit write scope before backend edits: direct-path checks and a fail-closed verifier, with PRs as the endpoint.
Evidence: make precheck verdict READY at d02fa9c20a; required reading baseline.md and delivery.md section 1.
Impact: No code change. Backend, squad, and kernel behavior stay as on main until the implementation commits.
Refs: feature/agent-harness-p2
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-agent-harness-p1.md(PR#136) — 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 is the main record, and review needs the Dev pull request link.
Evidence: Dev pull request 136 is open against main.
Impact: task card only.
Refs: feature/agent-harness-p1
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: acceptance needs the precheck, task-sync, and test evidence on the task card before review.
Evidence: task-sync reported already up to date at 701d4ab1e3; make test had already passed on b7631c7.
Impact: task card only.
Refs: feature/agent-harness-p1
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: the direct chat path and both consumers must compile the same agent-native commit, or the new loop fields exist in only one replace target.
Evidence: make test passed (boundaries, core, backend, frontend 51, ui 71, agent-command). The three agent-native gitlinks are a34689c.
Impact: Dev pins deps/agent-native, deps/agent-squad, and modules/backend. Squad behavior stays on the zero-value kernel switches.
Refs: feature/agent-harness-p1
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-agent-harness-p0.md(PR#134) — 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 is the main record, and it still said the Dev pull request was pending after the request was opened.
Evidence: Dev pull request 134 is open against main.
Impact: Task card text only. No code or gitlink change.
Refs: feature/agent-harness-p0
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The model imitated flattened tool-call text and invented artifact ids. P0 stops that replay, and the proposal records the harness work that still sits in later phases.
Evidence: Documents PR 32 and Backend PR 42. Backend go test ./... passed. Dev make test passed (boundaries, core, backend, frontend 51, ui 71, agent-command).
Impact: Gitlinks move to feature/agent-harness-p0 on documents (a3f0b80) and backend (188c633). No other submodule changes. P1-P4 are not implemented.
Refs: feature/agent-harness-p0
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Downstream products need a published extension surface, contract checks, and a sample plugin that does not modify the base.
Evidence: Boundary lint passed. examples/downstream-rdm go test passed. Submodule pointers record the core, documents, backend, ui, and frontend commits.
Impact: Merge order is Core, Documents, UI, and Frontend, then Backend, then this PR. Do not squash the submodule PRs. make test runs the boundary lint first. Version tags and the remote downstream repository are not created.
Refs: .task/feature-base-extension-roadmap.md
Why: The task card needs the Dev PR and the submodule merge order once the branches are published.
Evidence: Pull requests Core 14, Documents 31, UI 25, Frontend 31, Backend 41, and Dev 132 are open.
Impact: Submodule pulls must be merged without squash before Dev, so the gitlinks stay reachable.
Refs: .task/feature-base-extension-roadmap.md
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: task-sync appends its checkpoint to the first file in .task, which was another task's card.
Evidence: The 2026-10-01T10:39:24Z row now sits in feature-base-extension-roadmap.md. The other card matches its previous content.
Impact: The recorded sync base is origin/main 26dfea7ed6 and the tested head is the merge 6d496139b4.
Refs: .task/feature-base-extension-roadmap.md
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Downstream products need a published extension surface, contract checks, and a sample plugin that does not modify the base.
Evidence: scripts/lint-boundaries.sh printed boundaries ok. examples/downstream-rdm go test passed. Submodule pointers record the core, documents, backend, ui, and frontend commits for this roadmap.
Impact: make test runs the boundary lint first. make plugin-new scaffolds a declaration plugin. Version tags and remote downstream repositories are not created.
Refs: .task/feature-base-extension-roadmap.md
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The merge subject did not match the auto-close pattern, so the card stayed open after the work landed.
Evidence: PR 130 merge 26dfea7ed6 is on origin/main
Impact: The card moves to .task/archive and is marked complete.
Refs: feature/card-close-native-squad-full-upgrade
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Dev has to record the library commits the product now builds against.
Evidence: make test
Impact: runtime.entry stays direct. This commit only moves gitlinks.
Refs: feature/native-squad-full-upgrade
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The branch is already on main, and the card still said the work was in progress.
Evidence: PR 128 merged as f8fefa0f88.
Impact: The card is archived as completed. No product behavior changes.
Refs: deliverable-quality-system
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The product needs the new content rules and the optional squad entry, while the library pins must match the kernel and router those paths compile against.
Evidence: Backend go test ./... -count=1 passed on 268f4a9. runtime.entry stays direct because no paired live scores exist.
Impact: Dev now points at the quality and squad-entry backend, agent-native cfc840c, and agent-squad d38f838. make eval-deliverables runs the scorecard tests.
Refs: deliverable-quality-system
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-agent-professional-deliverables.md(PR#126) — 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 named only the backend pull request after the Dev
pin PR was opened.
Evidence: Dev PR #126 and backend PR #38 are both linked from the card.
Impact: Bookkeeping only.
Refs: feature/agent-professional-deliverables
https: //git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/126
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The deliverable standards landed in Agent-System-Backend and were
merged, so the Dev pin has to move to that commit before this branch
can be reviewed.
Evidence: Backend PR #38 merged as 2079b2dfa851bd4cbe8f399a015126c842c441ec.
make test passed on this worktree before the pin move; the pin itself
does not change Dev source.
Impact: modules/backend now points at the merged standards. No other
submodule moved.
Refs: feature/agent-professional-deliverables
https: //git-home.u1680832.nyat.app:30319/weichen/Agent-System-Backend/pulls/38
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The task card still had empty goal and evidence fields after the
backend implementation landed in its own pull request.
Evidence: Backend PR #38 is open. go test ./... and the house-style
lint of the sample minutes are recorded on the card.
Impact: Bookkeeping only. The Dev gitlink stays on the previous backend
commit until that pull request merges.
Refs: feature/agent-professional-deliverables
https: //git-home.u1680832.nyat.app:30319/weichen/Agent-System-Backend/pulls/38
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-chat-timeline-preview.md(PR#122) — 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: Main moved the backend pin to the B10 assembly after this branch
was opened, so the Dev pin has to follow the merged backend branch.
Evidence: modules/backend is b1fa89b, which contains origin/main and
the timeline changes. No other path conflicted.
Impact: This branch contains current main. The backend gitlink is the
merged feature tip.
Refs: feature/chat-timeline-preview
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The acceptance run now has a result, and the task card is the
place that result has to live.
Evidence: make test after sync; dev@5192a53 browser check of the
timeline, file card, preview tabs, docx pages, and the false-claim guard.
Impact: Records the five pull requests and the remaining merge step.
No code change.
Refs: feature/chat-timeline-preview
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-full-agent-b10-r2.md(PR#123) — 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: Backend PR #36 closes the three open B10 sub-items (MCP config
injection, subagent bridge, explicit roles, skill-borne recipes); the
parent repo pins the new backend head.
Evidence: backend go vet + go test 21 packages ok; Dev make test all
green (core + backend 21 + frontend 42 + ui 68 + agent-command);
task card filled with per-item evidence.
Impact: modules/backend gitlink bump only; task card updated.
Refs: .task/feature-full-agent-b10-r2.md; Backend PR #36.
Why: Acceptance starts from a branch that already contains origin/main.
Evidence: merge-base confirms origin/main is an ancestor of HEAD.
Impact: The task card records sync_base and tested_head before the
acceptance run.
Refs: feature/chat-timeline-preview
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: Acceptance has to include the latest main, including the
agent-native kernel pin that landed in backend.
Evidence: Backend merge ca8aa5d contains both parents. go test passed
for runtime, tools, and squadadapter.
Impact: This branch now contains origin/main. The backend feature
branch includes that kernel pin.
Refs: feature/chat-timeline-preview
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The design system still described preview as a right-rail tab,
while the implementation now keeps a timeline in the transcript and
opens files in a closable pane beside the chat.
Evidence: make test passed (core, backend, frontend 51, ui 71, agent-command).
Impact: Dev pins core d437530, backend dab8f31, ui 8bfe8a8, frontend 0ed8ad3.
DESIGN.md §6, §9.3, and §9.6 match that layout.
Refs: feature/chat-timeline-preview
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-full-agent-r1.md(PR#120) — 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 settled direction requires a complete agent kernel (web
search, code tooling, system tools, external tool calls, skills,
prompts) fused with squad orchestration; the three sub-repos landed
their batches and this bumps the gitlinks and records the task card.
Evidence: Agent-Native PR #3 (go vet + go test 15 pkgs ok), Agent-Squad
PR #3 (6 pkgs ok), Backend PR #35 (19 pkgs ok after rebasing onto the
concurrently merged #34); Dev make test all green (core + backend 19 +
frontend vitest 40 + ui vitest 68 + agent-command).
Impact: deps/agent-native -> f9ab2ef, deps/agent-squad -> 9a402e4,
modules/backend -> 87a3d0d; task card filled with per-PR evidence and
remaining-item notes (sandbox honesty, injection surfaces,
progressive enablement, deployment validation pending).
Refs: .task/feature-full-agent-r1.md batches B1-B10.
Why: The task card still had placeholders after task-start, so the authorized scope and non-goals were not on the branch.
Evidence: Card now names the approved timeline, artifact card, preview pane, and false-deliverable guard, and excludes merge, production deploy, and history rewrite.
Impact: Documentation only; no runtime change.
Refs: feature/chat-timeline-preview
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-binary-doc-index.md(PR#114) feature-input-queue.md(PR#115) feature-preview-sniff-fallback.md(PR#96) fix-empty-create-task.md(PR#116) fix-mimosa-triage.md(PR#117) svc-remote-source.md(PR#102) — 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 empty-create branch was synced onto frontend main after the input queue landed, so the parent gitlink must follow that tip.
Evidence: The synced tip 0cc0f40 is on frontend main, and vitest reported 42 passed with the default-project path still present.
Impact: Dev gitlink only.
Refs: https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Frontend/pulls/29
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The input-queue branch was synced onto frontend main after the preview fallback landed, so the parent gitlink must follow that tip.
Evidence: Frontend main ba52fad contains aad5871, and vitest reported 42 passed on that tip.
Impact: Dev gitlink only. The queue and files tab stay, and the preview sniff changes remain in the pinned tree.
Refs: https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Frontend/pulls/28
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The index branch was synced onto backend main after the interpreter merge, so the parent gitlink must follow that tip.
Evidence: Backend main 42fe619 contains 34be855, and go test of tools and runmgr passed on that tip.
Impact: Dev gitlink only. The write guard and text index stay, and the interpreter files remain in the pinned tree.
Refs: https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Backend/pulls/34
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-exec-interpreters.md(PR#113) — 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 local scan ledger needed an explicit keep-or-drop decision before this batch closed.
Evidence: Twelve local reports dedupe to command-injection gate events with an empty file field, plus two caret-range notes on @types/node. Neither has a local fix that is both clear and narrow.
Impact: Task card only. No product code and no dependency pin.
Refs: Backend #33, Dev #113, Dev #96
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The first click on 新建任务 did nothing useful when the workspace had no project.
Evidence: Frontend 288d3ac; tsc -b passed and vitest reported 40 passed. A browser check on the dev server created 默认项目 and a conversation on the first click, and a second click added a conversation without a second project.
Impact: Dev gitlink only. Backend is unchanged.
Refs: modules/frontend fix/empty-create-task
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: follow-up messages were rejected while a run was in flight, and
the file list was only available from the workspace overlay.
Evidence: frontend 3c81525; tsc clean; vitest 42 tests.
Impact: gitlink only. Backend conversation serialization is unchanged.
Refs: task feature/input-queue
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: the task card is the review record and still had a placeholder.
Evidence: Backend pulls/34 and Dev pulls/114 are open. make test passed
before the sync checkpoint.
Impact: task card only.
Refs: task feature/binary-doc-index
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: pseudo-binary Office writes and unsearchable generated documents
were the two pieces of the closed docx PR that main still needs.
Evidence: backend 3e5699c; go test ./... 19 packages ok. Dev #99 and
Backend #27 are closed as superseded.
Impact: gitlink only. Merge after Dev #113 so the refusal text names
tools that are already on main.
Refs: task feature/binary-doc-index
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: the isolated-source deploy change was finished but never merged, and
the task card had no PR link.
Evidence: the only content conflict was the shared sync-log card; both
rows kept. scripts/svc.sh merged cleanly. PR link recorded as Dev #102.
Impact: branch now contains origin/main. Deploy semantics unchanged.
Refs: https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/102
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: the task card still described xlsx/pptx sniff as out of scope, and
the combo test had not been written down after the merge.
Evidence: make test passed on a11fed4 (frontend 40, ui 68).
Impact: task card only.
Refs: Dev PR #96
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: the preview sniff branch predated the shell redesign and could not
merge. Module gitlinks now include current main plus ZIP fallback for
docx, xlsx, and pptx.
Evidence: conflict was only the shared sync-log card; both sides' rows
kept. UI and Frontend tests passed on the updated module SHAs.
Impact: parent branch contains origin/main. .mimosa/ ignore stays.
Refs: task feature/preview-sniff-fallback, Dev PR #96
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: the open preview-sniff PRs were cut before the shell redesign, so
they could not merge. UI and Frontend now contain origin/main plus the
ZIP sniff, including xlsx and pptx text fallback.
Evidence: UI vitest 68 and tsc clean; Frontend vitest 40 and tsc clean.
UI pulls/21 and Frontend pulls/22 updated.
Impact: gitlinks only. Dev still needs to merge origin/main before the
parent PR can land.
Refs: task feature/preview-sniff-fallback
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: the task card is the review record and still had a placeholder for the PR.
Evidence: Backend pulls/33 and Dev pulls/113 are open.
Impact: task card only.
Refs: task feature/exec-interpreters
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: the sync helper appended its checkpoint to a different card, and the
combo test evidence still needed to live on this task's record.
Evidence: make test passed after backend 2880b58 (core, backend, frontend
40 tests, ui 68 tests, agent-command).
Impact: task card only.
Refs: task feature/exec-interpreters
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: the deliverable workflow prompts call run_shell and run_python, but
those tools were not in the registered binary, so generation fell back
to text-only write_artifact.
Evidence: backend feature/exec-interpreters 2880b58; go test ./... 19
packages ok in modules/backend.
Impact: Dev gitlink moves to the interpreter commit. Merge the backend
PR before this one so the recorded SHA is on backend main.
Refs: task feature/exec-interpreters
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: the card was folded into PR #109 already marked complete, so
task-close skipped it; archive it manually per the no-open-cards rule
and advance the frontend gitlink past the mimosa-ignore chore (#26).
Evidence: .task has no deliverable-docx-r1.md left; precheck [cards]
to be re-run after merge; frontend -> de38791 (chore #26 merged).
Impact: housekeeping only; no code paths touched.
Refs: task feature/deliverable-docx-r1 (PR #109), frontend PR #26
Why: users received plain-text .docx files and had to dig through the
process collapse or workspace panel to find deliverables; deliverables
must appear directly in the conversation and open with real formatting.
Evidence: module PRs merged — Agent-System-Backend#31 (docgen Markdown
to styled OOXML, write_docx tool, artifact_ref pinned as content after
final text, prompt routing, mock #doc dogfood) and
Agent-System-Frontend#25 (deliverable card renderer, live projection
pinned tail). Combination `make test` green in this worktree: backend
go test 19 pkgs, frontend vitest 40/40 + tsc clean, ui tsc + vitest
68/68 incl design-guard, agent-command ok. Task card records scope,
sync nodes and leftovers.
Impact: gitlinks backend -> 8550bb0, frontend -> b048d90; core/ui
unchanged.
Refs: task feature/deliverable-docx-r1
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-ui-tokens-v3.md(PR#107) — 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 requires the PR link as its master record once the
PR exists (delivery workflow); sub-PR numbers recorded for merge order.
Evidence: PRs created via Gitea API — UI #23, Frontend #24, Dev #107.
Impact: task card only.
Refs: task feature/ui-tokens-v3.
Why: Submodule branches merged their origin/main (CF3) and were pushed;
record the new heads so the parent sync merges cleanly.
Evidence: submodules green post-merge (ui 68 / frontend 39 tests, tsc
clean); parent task-sync re-run follows this commit.
Impact: gitlinks only.
Refs: task feature/ui-tokens-v3.
Why: Land phase 4 of the UI redesign in the parent repo: ToolBlock chat
contract, Collapsible migration of all folds, live sweep with worked-time,
and the honest in-progress input hint. Completes the four-phase plan on
this branch (deviation recorded in the task card).
Evidence: combined make test -> go core/backend/agent-command ok, frontend
39 vitest passed, ui 66 vitest passed; tsc clean in both submodules.
Impact: modules/ui and modules/frontend gitlinks move to their
feature/ui-tokens-v3 heads; task card records results and remaining items.
Refs: task feature/ui-tokens-v3.
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-project-inbox-r1.md(PR#105) — 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: Land phase 3 of the UI redesign in the parent repo.
Evidence: frontend submodule commit on feature/ui-tokens-v3; tsc -b and
38 vitest tests pass; task card records the runs.
Impact: modules/frontend gitlink moves; no API changes.
Refs: task feature/ui-tokens-v3.
Why: Land phase 2 of the UI redesign in the parent repo: admin-only
full-screen system management, conversation-first sidebar, role-aware
workspace shortcuts.
Evidence: frontend submodule commit on feature/ui-tokens-v3; tsc -b and
38 vitest tests pass in the submodule; combined make test re-run recorded
at phase boundaries in the task card.
Impact: modules/frontend gitlink moves; no API or contract changes.
Refs: task feature/ui-tokens-v3.
Why: The approved frontend redesign requires a durable design constitution
so future UI work stays consistent (user directive: make this project's
standing design guidance, four principles: beautiful/modern/concise/usable).
DESIGN.md encodes the Zai-calibrated rules (surface ladder, type scale,
radius nesting, MotionKit recipes, ToolBlock contract, IA principles) and
AGENTS.md adds a mandatory UI gate; submodules land phase 1 (tokens v3,
MotionKit, Collapsible, panel layout, mono primary buttons).
Evidence: make test in this worktree -> frontend 38 passed (incl. new
host design-guard ratchet), ui 61 passed (incl. collapsible + design-guard),
go core/backend/agent-command ok. precheck READY at R0 0be23f9a4d.
Impact: gitlinks advance to Agent-System-UI/Agent-System-Frontend
feature/ui-tokens-v3 heads; AGENTS.md gains a UI section; no backend or
contract changes.
Refs: session-approved redesign plan v2 (8 decisions recorded in task card).
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-artifact-unify-r1.md(PR#103) — 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: CF-A lands in backend (ctxasm backfill + facade cards) and documents.
Evidence: backend commit recorded in module log; combination make test in
task card.
Impact: gitlink-only.
Why: svc.sh update skipped services with a local@<sha> source whenever the
main checkout was dirty, and bare deploy built the current workspace. The
owner requires updates/deploys to be independent of the working tree
state, defaulting to the latest remote commit built outside the checkout.
Evidence: bash -n passes; commits dev lists from the source clone; bare
deploy --dry-run plans dev@<origin/main>; end-to-end "svc.sh update
svc-selftest" with a dirty tree updated a local@d64742c service to
dev@0be23f9 (built in runtime/.worktrees from
~/.cache/agent-system-svc/src, started healthy), then stopped and purged.
Full make test output recorded on the task card.
Impact: deploy now defaults to dev@<origin/main> resolved in the
script-owned clone (SVC_SRC_DIR, default ~/.cache/agent-system-svc/src);
--from local stays the only workspace-dependent source; update no longer
pulls the main checkout - local@/dev@ services redeploy from remote
latest, ahead/diverged/missing-on-remote still decline to act.
docs/svc.md and in-script help updated to match.
Refs: .task/svc-remote-source.md
Why: branches merged into main had left their task cards open; backfill status and archive to prevent bookkeeping debt.
Evidence: feature-card-stream-r1.md(PR#100) — 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: module PRs #28 merged (backend a067d08, documents f5aa687); final
combination make test exit 0 on f96c55df.
Evidence: task-sync rows in card.
Impact: card-only.
Why: CF-S (D44/D45) implementation lands in backend and documents; Dev
tracks the tested combination.
Evidence: backend 24a2873 (tools+cardsvc+runmgr+mock+tests), documents
3d2da4e (usage guide); combination make test recorded in task card.
Impact: gitlink-only on Dev.
Refs: documents 2026-09-30-card-stream-artifact-unify-project-inbox.md (D44/D45).
Why: track 2 of the fake-docx remediation — read-only preview fallback for
stock text-masquerading docx artifacts; also ignore the Mimosa plugin's
per-session .mimosa state dir that kept dirtying the tree and blocking precheck.
Evidence: modules/ui 83367f7 (doc->binary dispatch + readable Office error),
modules/frontend cd77340 (PK magic sniff + markdown fallback); make test-ui
49/49, make test-frontend 33/33, frontend tsc --noEmit clean.
Impact: parent pins move to the two submodule branches; .gitignore gains
.mimosa/; no code outside those modules.
Refs: .task/feature-preview-sniff-fallback.md
-`make task-sync`:`Already up to date.``[synced] sync_base=f4aa0348d7 tested_head=978bf8bdae checked_at=2026-10-03T02:10:29Z`。脚本按文件名把这一行写进了另一张任务卡,本提交已改回本卡。
- 各库在钉住后的头上另跑了 `scripts/submodule-consistency.sh`(intent、native、squad 均为 ok)以及 vet、test、race。Backend 跑了 `GOWORK=off go vet ./... && GOWORK=off go test -count=1 ./...`,退出码 0。
- Squad `73b8d09545a8c479344aded2227de5fc520ef769`。并行组第二步 `TestParallelGroupSecondStepApprovalHolds`、`TestParallelGroupSecondStepPermissionHolds`;自由文本 `TestFreeTextKeepsChoiceHold`;失败后挂起仍在 `TestFailedDecisionRestoresPending`。`GOWORK=off go vet ./...`、`go test -count=1 ./squad/ ./cli/`、`go test -race -count=1 ./squad/` 均通过。
- 同 tree 正例:Backend 所记 squad `8e987bf535efbbbf317147542e858217f2bb3504` 的 tree `0fe06ce3ceea5cfa32476e2f0eed7f86cebc44a0`,`commit-tree` 得本地 `6c0f1e8bf1be85f10163eb0c6eebb5a6aa8f8798` 并临时写入 Dev 索引。`check-pins` 输出 `ok modules/backend agent-squad (same tree)`,退出码 0。
- 负例:空 tree 的本地提交 `8db069d7352d` 写入同一索引后,`check-pins` 退出码 1,`pin: modules/backend deps/agent-squad is 8e987bf535ef, Dev deps/agent-squad is 8db069d7352d`。索引已 `git reset` 恢复,再次 `pins ok`。两个临时对象都没有推送。
- 验证:`cd modules/core && go test ./...`;`cd modules/backend && go test ./...`;`bash scripts/lint-boundaries.sh`;`cd examples/downstream-rdm && go test .`;UI `tsc`+vitest 71;frontend vitest。
- 影响与剩余项:apiVersion `2.0-experimental`。版本 tag 与 npm 发布命令留在兼容提案,由用户确认后执行。下游远程仓由用户另建。Playwright 对拍文件在 `modules/frontend/e2e/`,未安装 `@playwright/test`,不进 vitest。合入顺序:Core #14、Documents #31、UI #25、Frontend #31,然后 Backend #41,最后 Dev #132。子仓不要 squash,否则 Backend / Dev 的 gitlink 会指向不存在的提交。
- 误重启事故:PR #207 合入后 `make task-start` 再次以同名分支建卡(task-start 只校验本地分支可建,不查该名是否刚合入),空卡覆盖了 main 上的原卡;`3718f6c` 已恢复原卡,本轮复核证据行(被测 HEAD `c371815`:backend 四包 go test / examples / test-boundaries / make test 全 exit 0)追加于后,`make task-sync` 基线 63a62a7(tested `e37e0cd`)。
- 本轮性质:**仅复核,不改公开面**——产品代码相对 origin/main 零差异(见证据行 no product diff)。
[exit 0 | HEAD 786f852def | sha256:fe92462ce20f1fe9] 输出尾部 25 行:
at recursivelyTraversePassiveMountEffects (/home/weichen/projects/Agent-System-Dev-wt-feature-ext-1-inproc-handler/modules/ui/node_modules/react-dom/cjs/react-dom-client.development.js:16851:13)
at commitPassiveMountOnFiber (/home/weichen/projects/Agent-System-Dev-wt-feature-ext-1-inproc-handler/modules/ui/node_modules/react-dom/cjs/react-dom-client.development.js:17183:11)
at recursivelyTraversePassiveMountEffects (/home/weichen/projects/Agent-System-Dev-wt-feature-ext-1-inproc-handler/modules/ui/node_modules/react-dom/cjs/react-dom-client.development.js:16851:13)
[exit 0 | HEAD 517b89760a | sha256:b55eef9dea426887] 输出尾部 25 行:
at runWithFiberInDEV (/home/weichen/projects/Agent-System-Dev-wt-feature-ext-1-inproc-handler/modules/ui/node_modules/react-dom/cjs/react-dom-client.development.js:1048:13)
at commitHookEffectListMount (/home/weichen/projects/Agent-System-Dev-wt-feature-ext-1-inproc-handler/modules/ui/node_modules/react-dom/cjs/react-dom-client.development.js:13748:29)
at commitHookPassiveMountEffects (/home/weichen/projects/Agent-System-Dev-wt-feature-ext-1-inproc-handler/modules/ui/node_modules/react-dom/cjs/react-dom-client.development.js:13835:11)
at commitPassiveMountOnFiber (/home/weichen/projects/Agent-System-Dev-wt-feature-ext-1-inproc-handler/modules/ui/node_modules/react-dom/cjs/react-dom-client.development.js:16906:13)
at recursivelyTraversePassiveMountEffects (/home/weichen/projects/Agent-System-Dev-wt-feature-ext-1-inproc-handler/modules/ui/node_modules/react-dom/cjs/react-dom-client.development.js:16851:13)
at commitPassiveMountOnFiber (/home/weichen/projects/Agent-System-Dev-wt-feature-ext-1-inproc-handler/modules/ui/node_modules/react-dom/cjs/react-dom-client.development.js:17183:11)
at recursivelyTraversePassiveMountEffects (/home/weichen/projects/Agent-System-Dev-wt-feature-ext-1-inproc-handler/modules/ui/node_modules/react-dom/cjs/react-dom-client.development.js:16851:13)
- 合并主题:Merge pull request 'Restore and complete the EXT-1 task card after branch recreation (verification round)' (#209) from feature/ext-1-inproc-handler into main
- 合并主题:Merge pull request 'Point backend at the completed B10 assembly (MCP, subagent bridge, roles, skills)' (#123) from feature/full-agent-b10-r2 into main
- 合并主题:Merge pull request 'Land the full-agent capability batch (B1-B10) across agent-native, agent-squad, and backend' (#120) from feature/full-agent-r1 into main
- 目标:把 pi Pico5(packages/durable)的评估写成调研记录;按“只观察已提交状态、输入先准入、终态一次提交、重开时对账”修四个已核实缺陷。复用现有词汇(`run.failed` 码 `run.interrupted`、HITL `cancelled`),requestId 只在 store 层。
- Backend:`GOWORK=off go vet ./... && GOWORK=off go test -count=1 ./...` 通过。未设置 `AGENT_PG_TEST_DSN`,PostgreSQL 专属用例跳过;SQLite 档跑了启动对账、requestId、SettleRun 回滚和 SSE 重放。
- 验证:bash -n PASS;功能负例 PASS(exit≠0 断言,无副作用);sync 修复验证 PASS(exit 0);make test 全链 PASS(修复前 94f8d47 与最终 HEAD 两轮,exit 0);权威源为 CI 在 PR HEAD 的 make test+make build(GATE)。
[exit 0 | HEAD 94f8d4760b | sha256:937f2c0a1987b4f7] 输出尾部 15 行:
ERROR: branch feature/ext-1-inproc-handler already merged into origin/main — reuse the original branch or pick a new slug (task-start must not recreate merged cards)
- 合并主题:Merge pull request 'Guard task-start against merged branch names; harden sync evidence scan' (#211) from feature/task-start-merged-guard into main
- 根因:迁移在 PG 档把 `conversations.{pinned,archived,allow_cross_read,cross_private}` 与 `users.{must_change_password,is_admin}` 建为 BOOLEAN(SQLite 档为 INTEGER),store 层沿 SQLite 习惯用 0/1 字面量比较、int 扫描与 boolInt() 写入,pgx 驱动下分别报 `operator does not exist: boolean = integer`(42883)/ 扫描编码失败 / `column ... is of type boolean but expression is of type integer`(42804)。
任务主记录:https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/203 ;Frontend https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Frontend/pulls/47(已合入 main `50c7244`);状态:已完成(回填);owner:weichen
- 合并主题:Merge pull request 'svc.sh: deploy/update from an isolated remote source clone (dirty-tree independent)' (#102) from feature/svc-remote-source into main
"issue":"The fixed candidate still says the product awaits user review, while lines 10-13 already record the user approval and authorized delivery phase.",
"impact":"Task handoff status is internally inconsistent; this does not invalidate the unchanged implementation review.",
"recommendation":"Refresh these historical status summaries during the already planned delivery-result update before final handoff."
}
]
},
"reusable_evidence":{
"scope":[
"PROJECT.md",
"policy/delivery.md",
"policy/adoption.md",
"policy/tool-adaptation-matrix.md",
"scripts/task.sh",
"tests/test_task.py"
],
"conclusion":"Original content-review conclusions remain applicable to the six byte-identical files, and their exact patch against the new main base is also unchanged.",
"historical_test_limit":"Original 104-test result retains its original tested HEAD; it is not relabeled as a new-head or new-combination test result.",
"original_report":".task/reviews/goal-continuity.json at 6e078ed3d15da0eaee8d993ee74499951ed7e6bf",
"source_limit":"Local analysis and captured command results remain SELF; no promotion to authenticated GATE or REPLAY."
},
"combination_verification_required":{
"changed_component_paths_since_old_review":[
"deps/agent-intent",
"deps/agent-native",
"deps/agent-squad",
"modules/backend"
],
"boundary":"These pointers came from synchronization with the new main base and are absent from the final task diff. Their combined behavior requires the currently running full make test/build and subsequent matching CI; this review does not judge or predict those results."
},
"not_run_or_judged":[
"Tests, full build, CI and platform approval",
"Business/component implementation introduced by upstream",
"Current remote branch freshness beyond the supplied fixed base",
"Final task-card evidence completeness after ongoing tests"
],
"technical_conclusion":"Review applicability confirmed for the approved unchanged implementation. No content-review blocker; metadata status should be refreshed during delivery. New combination checks and actual merge gates remain separate.",
"side_effects":"Only this /tmp JSON report was written; repository access used git show and git diff against fixed refs."
"assessment":"Adds literal template fields only; unresolved planning and next-task authorization default to pending/unapproved; existing lifecycle logic and card header remain unchanged."
},
{
"location":"tests/test_task.py:596",
"assessment":"Extends a real disposable Git lifecycle test to inspect generated fields and pending/unapproved defaults while retaining existing authorization/review checks."
},
{
"location":"policy/tool-adaptation-matrix.md:18",
"assessment":"Documents manual capability without claiming effective planning validation, automatic scheduling or execution controls."
},
{
"location":"scripts/task.sh:325",
"assessment":"Existing close/backfill parsing uses unchanged branch/status/header patterns; new fields do not intercept them, and planning references are explicitly rooted at repository root for archive compatibility."
}
],
"findings":{
"Critical":[],
"Important":[],
"Minor":[]
},
"considered_but_declined_to_judge":[
{
"behavior":"Completeness and approval of historical business plans in proposals",
"reason":"Scope adds a policy and directory entrypoint; no authorization to inventory, migrate, approve or rewrite business plans."
},
{
"behavior":"Truth and current freshness of remote open-PR inventory and platform branch protection",
"reason":"Remote/API verification was excluded; author receipt remains SELF and its own next-step note requires a fresh pre-start check."
},
{
"behavior":"Formal human stage approval and merge readiness",
"reason":"This is a local pre-review with user approval, remote CI and merge explicitly pending; subagent review cannot supply human approval or platform gate identity."
},
{
"behavior":"Automatic enforcement of plan validity, recommendation quality and new-task scheduling",
"reason":"Requested capability is documented as manual; template text is not represented as execution-end enforcement."
}
],
"not_reviewed":[
"Full make test/build and product/browser acceptance",
"Remote CI/platform approval identity",
"Business code and component behavior outside changed files",
"Entire task-card evidence body line-by-line; first 90 lines and targeted receipt integrity/metadata were inspected"
],
"recommendations":[],
"technical_conclusion":"No material defect found in the fixed diff. Ready for user review of the local change; does not declare remote merge readiness or confer execution authorization.",
"preserved_state":"HEAD, index/worktree visible state, and component snapshot unchanged; review artifacts are under /tmp only.",
"memory_use":"MEMORY.md:34 used only to retain SELF/GATE/REPLAY distinction; current evidence rules verified from repository."
"verdict_reason":"Resolve the P1 cleanup-preservation verification gate (#1), then validate the quoted-credential redaction fix (#3), stale-receipt detection (#2), and abandon lifecycle coverage (#4). Finding #1 remains a blocker despite being excluded from the actionable queue. This verdict covers only c0abfb0, not the root's subsequent repairs.",
"intent":"Implement approved development-governance audit repairs: safe task cleanup and recursive pinned component validation; trustworthy SELF evidence and startup receipt flow; path-specific write guards and bounded CI checkout credentials. Preserve dirty/ignored/unique child history and fail closed without claiming live platform controls.",
"intent_confidence":"explicit",
"reviewers":[
"correctness",
"project-standards",
"testing",
"maintainability",
"agent-native",
"security",
"reliability"
],
"findings":[
{
"#":1,
"autofix_class":"advisory",
"confidence":100,
"evidence":[
"c0abfb0 scripts/task.sh:438-445 rechecks finish safety, adds --force for gitlinks, and removes the parent worktree; scripts/check-worktree.py:51-69 checks the current child checkout and reachable commits but not its additional linked worktrees.",
"SELF scratch reproduction: initialize the pinned component; add an external linked component worktree at HEAD; modify its content; finish returns 0; git status in the external worktree then exits 128 because its common metadata under the removed parent registration is gone.",
"Verified provenance: 43d33aa scripts/task.sh:381-386 already used remove || rm -rf plus prune; source artifact also records originating fdf63e3 and a failing BASE reproduction. The reviewed diff rewrites that removal around new preservation checks."
"suggested_fix":"Before allowing parent removal, recursively inspect each component's worktree registrations/common Git directory. Refuse cleanup when a component owns any additional registered linked worktree whose metadata would be removed, and require the owner to preserve or relocate it explicitly. Add a regression with an external linked component worktree at the same pinned SHA, including staged or uncommitted content, and assert cleanup refuses and the external worktree remains usable.",
"title":"Preserve submodule metadata used by other registered worktrees",
"why_it_matters":"The rewritten forced-removal path trusts finish checks that inspect only each component's current checkout and reachable commits. An initialized submodule can own another linked worktree at the same pinned commit, so all checks pass even when that separate worktree contains staged or uncommitted work. Removing the parent task deletes its embedded submodule common directory and the other worktree's Git index/config/object database. Reproduced: task finish returned 0, while git status in the surviving external component worktree then failed with exit 128. This is secondary to the new guard-dependent deletion path; the older removal implementation also exhibited the defect.",
"protected_subject":"data-loss",
"validation_status":"unresolved",
"validation_reason":"Protected-subject rejection reclassified as unresolved. Base 43d33aa scripts/task.sh:381-386 confirms older destructive behavior, but does not establish unrelatedness or refute the failure at reviewed c0abfb0: task.sh:438-445 expressly makes the new preservation checks the basis for forced removal, while check-worktree.py:51-69 omits linked component worktree ownership. Resolve this gate with a discriminating cleanup regression that preserves an external component worktree and its staged/uncommitted content, or inspected evidence disproving this interaction. Root accepts the remediation scope and reports repairs in progress; those repairs are outside this reviewed commit."
},
{
"#":2,
"autofix_class":"gated_auto",
"confidence":100,
"evidence":[
"c0abfb0 scripts/evidence.py:227-239 appends fenced JSON receipts; scripts/task.sh:242-251 only scans timestamp-leading Markdown table rows for stale tested HEADs.",
"SELF scratch reproduction: capture a receipt, commit it, advance origin/main with a non-card change, and sync. The recorded before HEAD differs in implementation content, but output contains no [evidence] WARN."
"suggested_fix":"Update task-sync's stale-evidence reader to parse the fenced JSON receipts produced by evidence.py and inspect their recorded object SHA/state when deciding whether non-card changes invalidate a check. Retain legacy-table support if historical cards remain supported. Add a regression recording a JSON receipt, advancing main with a non-card change, and checking the stale-evidence warning.",
"title":"Teach stale-evidence checking to read the new receipt format",
"why_it_matters":"Evidence now appends fenced JSON, but task-sync still finds old evidence only by matching timestamped Markdown table rows. Consequently every newly recorded receipt is invisible to the existing stale-object warning. A normal sequence of recording a check, merging changed implementation from main, and syncing now silently retains stale evidence without the warning that previously requested reruns.",
"protected_subject":null,
"validation_status":"confirmed",
"validation_reason":"The reviewed diff adds JSON receipt append_card output in scripts/evidence.py:228-239, while scripts/task.sh:250 still scans only timestamp-leading Markdown table rows, so a recorded JSON receipt is unreachable by the stale-evidence warning after a non-card sync change."
},
{
"#":3,
"autofix_class":"gated_auto",
"confidence":100,
"evidence":[
"c0abfb0 scripts/evidence.py:44 requires an unquoted Authorization header; lines 117-125 sanitize before receipt construction, lines 193-194 reuse the sanitizer during import, and lines 227-239 append to the task card.",
"SELF synthetic capture/import reproduction at c0abfb0250980af7f1b18c785eb4b55240a8d855: quoted JSON Authorization remains in both receipt and task card; import exits 0; receipt source is SELF. No real credential was used.",
"Reviewer-reported SELF targeted suites: test_ci_credentials.py 7 tests, test_evidence.py 28 tests, and test_write_guard.py 12 tests passed. These suites do not refute the synthetic bypass."
],
"file":"scripts/evidence.py",
"first_evidence":"scripts/evidence.py:44: value = re.sub(r\"(?i)(\\bAuthorization[ \\t]*:[ \\t]*(?:Bearer|token|Basic)[ \\t]+)[^\\s'\\\";]+\",",
"independent_reviewers":[
"security"
],
"line":44,
"owner":"downstream-resolver",
"pre_existing":false,
"requires_verification":true,
"reviewers":[
"security"
],
"severity":"P2",
"suggested_fix":"Extend Authorization redaction to recognize optionally quoted header keys and quoted values used by JSON and Python dictionary dumps while retaining plain-header support. Add capture-and-import regression cases for double-quoted JSON and single-quoted dictionary headers, using a synthetic credential absent from the recorder environment, and assert that command, output, receipt, console, and task card contain no credential.",
"title":"CWE-532: Redact quoted Authorization headers before storing evidence",
"why_it_matters":"A command that logs request headers as JSON or a Python dictionary can persist its bearer/token credential into the receipt and tracked task card. For example, {\"Authorization\": \"Bearer synthetic-json-header-secret\"} bypasses sanitize() because the regex requires an unquoted header name immediately followed by a colon and an unquoted scheme. Known-environment-value replacement cannot help when the credential was read from a protected file or created inside the child command. Import accepts the same unredacted receipt, so subsequent publication of the task card exposes the credential.",
"protected_subject":"secrets-exposure",
"validation_status":"confirmed",
"validation_reason":"At the reviewed revision, sanitize('{\"Authorization\": \"Bearer synthetic-json-header-secret\"}') returned that value unchanged, and the new evidence.py stores sanitize_tree output in receipts and task cards, so a quoted JSON Authorization value can be persisted when such command output occurs."
},
{
"#":4,
"autofix_class":"gated_auto",
"confidence":75,
"evidence":[
"c0abfb0 scripts/task.sh:420-424 records the abandon reason; lines 449-450 retain the branch and skip remote deletion.",
"Validator AST inspection and report-leaf pinned-source text inspection found no --abandon invocation in reviewed tests/test_task.py."
],
"file":"scripts/task.sh",
"first_evidence":"scripts/task.sh:420: if [ \"$abandon\" = \"--abandon\" ]; then",
"independent_reviewers":[
"testing"
],
"line":420,
"owner":"downstream-resolver",
"pre_existing":false,
"requires_verification":true,
"reviewers":[
"testing"
],
"severity":"P2",
"suggested_fix":"Add a disposable-repository lifecycle test that creates unmerged local and remote task work, runs `finish --abandon <reason>` with `TASK_WRITERS_STOPPED=1`, then asserts the worktree is removed, the local and remote branch tips remain reachable, and `refs/notes/task-abandon` records the reason. Add a companion missing-reason assertion that preserves the worktree.",
"title":"Test the abandon cleanup path",
"why_it_matters":"The new explicit-abandon path removes a worktree while deliberately retaining the local branch and skipping remote deletion. No regression test exercises that lifecycle contract, so a future change can silently recycle unmerged work incorrectly or delete the retained ref without the governance suite detecting it.",
"protected_subject":null,
"validation_status":"confirmed",
"validation_reason":"The reviewed diff's finish --abandon branch records a note and retains the branch, but AST inspection of tests/test_task.py found no invocation with --abandon, leaving that lifecycle contract without regression coverage."
}
],
"actionable_findings":[
{
"#":2,
"autofix_class":"gated_auto",
"confidence":100,
"evidence":[
"c0abfb0 scripts/evidence.py:227-239 appends fenced JSON receipts; scripts/task.sh:242-251 only scans timestamp-leading Markdown table rows for stale tested HEADs.",
"SELF scratch reproduction: capture a receipt, commit it, advance origin/main with a non-card change, and sync. The recorded before HEAD differs in implementation content, but output contains no [evidence] WARN."
"suggested_fix":"Update task-sync's stale-evidence reader to parse the fenced JSON receipts produced by evidence.py and inspect their recorded object SHA/state when deciding whether non-card changes invalidate a check. Retain legacy-table support if historical cards remain supported. Add a regression recording a JSON receipt, advancing main with a non-card change, and checking the stale-evidence warning.",
"title":"Teach stale-evidence checking to read the new receipt format",
"why_it_matters":"Evidence now appends fenced JSON, but task-sync still finds old evidence only by matching timestamped Markdown table rows. Consequently every newly recorded receipt is invisible to the existing stale-object warning. A normal sequence of recording a check, merging changed implementation from main, and syncing now silently retains stale evidence without the warning that previously requested reruns.",
"protected_subject":null,
"validation_status":"confirmed",
"validation_reason":"The reviewed diff adds JSON receipt append_card output in scripts/evidence.py:228-239, while scripts/task.sh:250 still scans only timestamp-leading Markdown table rows, so a recorded JSON receipt is unreachable by the stale-evidence warning after a non-card sync change."
},
{
"#":3,
"autofix_class":"gated_auto",
"confidence":100,
"evidence":[
"c0abfb0 scripts/evidence.py:44 requires an unquoted Authorization header; lines 117-125 sanitize before receipt construction, lines 193-194 reuse the sanitizer during import, and lines 227-239 append to the task card.",
"SELF synthetic capture/import reproduction at c0abfb0250980af7f1b18c785eb4b55240a8d855: quoted JSON Authorization remains in both receipt and task card; import exits 0; receipt source is SELF. No real credential was used.",
"Reviewer-reported SELF targeted suites: test_ci_credentials.py 7 tests, test_evidence.py 28 tests, and test_write_guard.py 12 tests passed. These suites do not refute the synthetic bypass."
],
"file":"scripts/evidence.py",
"first_evidence":"scripts/evidence.py:44: value = re.sub(r\"(?i)(\\bAuthorization[ \\t]*:[ \\t]*(?:Bearer|token|Basic)[ \\t]+)[^\\s'\\\";]+\",",
"independent_reviewers":[
"security"
],
"line":44,
"owner":"downstream-resolver",
"pre_existing":false,
"requires_verification":true,
"reviewers":[
"security"
],
"severity":"P2",
"suggested_fix":"Extend Authorization redaction to recognize optionally quoted header keys and quoted values used by JSON and Python dictionary dumps while retaining plain-header support. Add capture-and-import regression cases for double-quoted JSON and single-quoted dictionary headers, using a synthetic credential absent from the recorder environment, and assert that command, output, receipt, console, and task card contain no credential.",
"title":"CWE-532: Redact quoted Authorization headers before storing evidence",
"why_it_matters":"A command that logs request headers as JSON or a Python dictionary can persist its bearer/token credential into the receipt and tracked task card. For example, {\"Authorization\": \"Bearer synthetic-json-header-secret\"} bypasses sanitize() because the regex requires an unquoted header name immediately followed by a colon and an unquoted scheme. Known-environment-value replacement cannot help when the credential was read from a protected file or created inside the child command. Import accepts the same unredacted receipt, so subsequent publication of the task card exposes the credential.",
"protected_subject":"secrets-exposure",
"validation_status":"confirmed",
"validation_reason":"At the reviewed revision, sanitize('{\"Authorization\": \"Bearer synthetic-json-header-secret\"}') returned that value unchanged, and the new evidence.py stores sanitize_tree output in receipts and task cards, so a quoted JSON Authorization value can be persisted when such command output occurs."
},
{
"#":4,
"autofix_class":"gated_auto",
"confidence":75,
"evidence":[
"c0abfb0 scripts/task.sh:420-424 records the abandon reason; lines 449-450 retain the branch and skip remote deletion.",
"Validator AST inspection and report-leaf pinned-source text inspection found no --abandon invocation in reviewed tests/test_task.py."
],
"file":"scripts/task.sh",
"first_evidence":"scripts/task.sh:420: if [ \"$abandon\" = \"--abandon\" ]; then",
"independent_reviewers":[
"testing"
],
"line":420,
"owner":"downstream-resolver",
"pre_existing":false,
"requires_verification":true,
"reviewers":[
"testing"
],
"severity":"P2",
"suggested_fix":"Add a disposable-repository lifecycle test that creates unmerged local and remote task work, runs `finish --abandon <reason>` with `TASK_WRITERS_STOPPED=1`, then asserts the worktree is removed, the local and remote branch tips remain reachable, and `refs/notes/task-abandon` records the reason. Add a companion missing-reason assertion that preserves the worktree.",
"title":"Test the abandon cleanup path",
"why_it_matters":"The new explicit-abandon path removes a worktree while deliberately retaining the local branch and skipping remote deletion. No regression test exercises that lifecycle contract, so a future change can silently recycle unmerged work incorrectly or delete the retained ref without the governance suite detecting it.",
"protected_subject":null,
"validation_status":"confirmed",
"validation_reason":"The reviewed diff's finish --abandon branch records a note and retains the branch, but AST inspection of tests/test_task.py found no invocation with --abandon, leaving that lifecycle contract without regression coverage."
}
],
"triage_groups":[
{
"title":"Task cleanup preservation",
"findings":[
1,
4
],
"context":"Task disposal must preserve component metadata and abandoned branch history.",
"preferred_resolution":"Decision-gate: resolve the cleanup-preservation verification gate (#1) before cleanup acceptance; add the independent abandon-retention regression (#4). Only #4 is in the actionable queue.",
"why":"Both concern irreversible checkout disposal and can share disposable Git lifecycle fixtures."
},
{
"title":"Evidence receipt integrity",
"findings":[
2,
3
],
"context":"JSON receipts are newly consumed as tracked evidence and must stay current and sanitized.",
"preferred_resolution":"Apply-queue: close quoted credential redaction (#3), then update stale-receipt detection (#2), each with its discriminating regression.",
"why":"The receipt producer and consumer need to preserve the same confidentiality and tested-object contract."
}
],
"pre_existing_findings":[],
"requirements_completeness":null,
"learnings":[],
"agent_native_gaps":[],
"deployment_notes":[],
"residual_risks":[
"Live runner isolation, workflow provenance and checkout-token scope were not replayed; policy/platform-admission.md explicitly leaves those controls to platform validation."
],
"testing_gaps":[
"Live CI, runner isolation, workflow provenance, and production incidence of the synthetic Authorization-header exposure were not measured."
],
"coverage":{
"notes":[
"Review is pinned to c0abfb0250980af7f1b18c785eb4b55240a8d855 against 43d33aa4921078bc202393b99cba017d7f731b98. Report-stage source reads used git show; ongoing root repairs were not reviewed.",
"All seven selected local reviewers completed. Project standards used the AGENTS.md fallback because no CODING_STANDARDS.md was found.",
"No applicable plan was discovered; requirements completeness and settlement suppression were not evaluated.",
"All local command and reproduction claims remain SELF. Author-reported make test/build results were not promoted to GATE or REPLAY.",
"Synthesis checked all four anchors and surrounding code, merged no semantic duplicates, and omitted the editorial make-help observation under the scope constraint.",
"No repository edits, commits, pushes, branch changes, or local fixes were performed by this review."
],
"reviewer_selection":[
{
"reviewer":"correctness",
"tier":"session",
"reason":"logic and state changes in lifecycle and evidence"
},
{
"reviewer":"project-standards",
"tier":"gpt-5.6-terra",
"reason":"AGENTS.md explicitly governs changed commands and safety contracts"
},
{
"reviewer":"testing",
"tier":"gpt-5.6-terra",
"reason":"new Git fixture suites and silent-pass test gates"
},
{
"reviewer":"maintainability",
"tier":"gpt-5.6-terra",
"reason":"1573 executable changed lines and new Python modules"
},
{
"reviewer":"agent-native",
"tier":"gpt-5.6-terra",
"reason":"agent instructions and tool write authorization changed"
},
{
"reviewer":"security",
"tier":"session",
"reason":"credentials, evidence redaction and path authorization"
},
{
"reviewer":"reliability",
"tier":"gpt-5.6-terra",
"reason":"failure propagation and partially completed cleanup/sync"
}
],
"lite":false,
"suppressed_by_confidence":{},
"suppressed_findings":0,
"malformed_findings":0,
"malformed_returns":0,
"first_evidence_backfilled":0,
"quote_demotions":0,
"mode_aware_demotions":0,
"semantic_duplicates_merged":0,
"settlement_suppression_evaluated":false,
"settlement_suppressed":0,
"failed_reviewers":[],
"bound_exceeded":[],
"cross_model":"Cross-model adversarial peer: timeout, reaped on caller request to bound review latency before completion; no usable artifact. Route=claude; requested model=claude-opus-5; requested effort=high; receipt_supported=unverified; model_actual=unverified; effort_actual=unverified; independence_verified=false. Adversarial lens degraded; no cross-model confidence promotion. No detached job remains.",
"compound_packs":{
"roots":[],
"warnings":[],
"errors":[]
},
"validation":{
"batch_outcome":"verdicts",
"selected":[
1,
2,
3,
4
],
"bound_exceeded":false,
"confirmed":3,
"rejected":0,
"unresolved":1,
"malformed":0,
"failed":0,
"shortcut_skipped":0,
"shortcut_basis":"No finding had verified cross-model corroboration; every selected finding entered the single validator batch.",
"raw_verdicts":[
{
"#":1,
"status":"rejected",
"protected_subject":"data-loss",
"reason":"Although a scratch fixture reproduced the loss when a clean pinned component has another linked worktree with uncommitted content, base 43d33aa's scripts/task.sh:381-386 already removed the parent with rm -rf plus worktree prune, so this destructive behavior predates rather than being introduced by the reviewed diff."
},
{
"#":2,
"status":"confirmed",
"protected_subject":null,
"reason":"The reviewed diff adds JSON receipt append_card output in scripts/evidence.py:228-239, while scripts/task.sh:250 still scans only timestamp-leading Markdown table rows, so a recorded JSON receipt is unreachable by the stale-evidence warning after a non-card sync change."
},
{
"#":3,
"status":"confirmed",
"protected_subject":"secrets-exposure",
"reason":"At the reviewed revision, sanitize('{\"Authorization\": \"Bearer synthetic-json-header-secret\"}') returned that value unchanged, and the new evidence.py stores sanitize_tree output in receipts and task cards, so a quoted JSON Authorization value can be persisted when such command output occurs."
},
{
"#":4,
"status":"confirmed",
"protected_subject":null,
"reason":"The reviewed diff's finish --abandon branch records a note and retains the branch, but AST inspection of tests/test_task.py found no invocation with --abandon, leaving that lifecycle contract without regression coverage."
}
],
"protected_subject_reclassifications":[
{
"#":1,
"from":"rejected",
"to":"unresolved",
"reason":"Protected-subject rejection reclassified as unresolved. Base 43d33aa scripts/task.sh:381-386 confirms older destructive behavior, but does not establish unrelatedness or refute the failure at reviewed c0abfb0: task.sh:438-445 expressly makes the new preservation checks the basis for forced removal, while check-worktree.py:51-69 omits linked component worktree ownership. Resolve this gate with a discriminating cleanup regression that preserves an external component worktree and its staged/uncommitted content, or inspected evidence disproving this interaction. Root accepts the remediation scope and reports repairs in progress; those repairs are outside this reviewed commit."
"summary":"Finish refuses parent removal when recursively inspected component common metadata belongs to the removal roots and serves another registered worktree. Clean, staged, unstaged, and nested linked component cases preserve Git usability and content; normal clean component cleanup passes.",
"summary":"Sync detects stale JSON and legacy receipts, warns for malformed or missing fields and unresolved recorded commits, and treats non-card before/after dirt as unverified. Card-only changes remain fresh. Recorded command is not executed.",
"summary":"Thirty Authorization syntax/scheme combinations cover JSON, dictionary, plain, assignment, case, and whitespace forms. Capture command/output/receipt/card/console and import contain no synthetic credential. Imported unredacted receipts are rejected even with valid checksums.",
"summary":"Explicit abandon removes the clean worktree while keeping local and file-remote branch tips and the abandonment reason note; missing reason refuses removal and preserves checkout and refs without writing a note.",
"Canonical working directory had scripts/task.sh merge conflict at initial inspection; the tested exported snapshot is byte-equal to b84667a. This verdict does not validate subsequent source changes or merge resolutions.",
"No real remote or service used; Git allowed protocol file only. No canonical source or task-state mutations performed.",
"No full make test/build, CI, broad review, or cross-model pipeline executed."
"No full governance, make test or make build rerun; this audit does not replace the earlier code review.",
"CI run/job data checked against captured original JSON and Git commit identity, not a new authenticated CI API query.",
"Checksums and available originals establish consistency, not authorship or trusted executor identity; this report remains SELF.",
"Other task worktree currently remains registered; this audit cannot prove every historical action in another session.",
"Report applies to the fixed reviewed HEAD and card SHA; later added receipts require their own integrity check.",
"One valid make task-sync receipt is appended after reviewed HEAD 8a80263 and is uncommitted; archive card SHA identifies the audited worktree content."
"verdict_reason":"R1-R10 are addressed. One confirmed P3 needs a localized template/reference fix; there are no P0-P2 findings. This source review does not establish platform merge readiness: no GATE was verified.",
"intent":"Make Dev delivery iterative with ten stages and a requirements/fit table; default to stage-by-stage human review while honoring explicit scoped continuous authorization. Align generated task cards, entrypoint docs, and capability matrix; remove implicit task closure writes from post-merge without weakening safe cleanup or claiming manual approvals are machine verified.",
"suggested_fix":"Use a plain-text repository-root reference, such as 流程依据:仓库根目录 policy/delivery.md, in the generated card and update its template assertion. This keeps the reference meaningful in both active and archived cards without modifying the generic archive mechanism.",
"title":"Keep the delivery reference valid after task archival",
"why_it_matters":"Every newly generated card has a working link while stored in .task/, but normal task-close moves it into .task/archive/ and leaves the link unchanged. The link then resolves to the nonexistent .task/policy/delivery.md, so historical task cards lose their clickable policy reference. A plain-text repository-root reference avoids dependence on the card directory.",
"validation_status":"confirmed",
"validation_reason":"The diff newly adds scripts/task.sh:184's ../policy/delivery.md link, while scripts/task.sh:391 and :401 move every closed card from .task/ to .task/archive/ without rewriting it, so it resolves to the absent .task/policy/delivery.md at reviewed head (the root policy/delivery.md exists); this occurs whenever a new task card is closed, and tests/test_task.py:605 only checks the pre-archive form.",
"suggested_fix":"Use a plain-text repository-root reference, such as 流程依据:仓库根目录 policy/delivery.md, in the generated card and update its template assertion. This keeps the reference meaningful in both active and archived cards without modifying the generic archive mechanism.",
"title":"Keep the delivery reference valid after task archival",
"why_it_matters":"Every newly generated card has a working link while stored in .task/, but normal task-close moves it into .task/archive/ and leaves the link unchanged. The link then resolves to the nonexistent .task/policy/delivery.md, so historical task cards lose their clickable policy reference. A plain-text repository-root reference avoids dependence on the card directory.",
"validation_status":"confirmed",
"validation_reason":"The diff newly adds scripts/task.sh:184's ../policy/delivery.md link, while scripts/task.sh:391 and :401 move every closed card from .task/ to .task/archive/ without rewriting it, so it resolves to the absent .task/policy/delivery.md at reviewed head (the root policy/delivery.md exists); this occurs whenever a new task card is closed, and tests/test_task.py:605 only checks the pre-archive form.",
"protected_subject":null
}
],
"triage_groups":[],
"pre_existing_findings":[],
"requirements_completeness":{
"plan_source":"explicit",
"plan":".task/feature-iterative-delivery.md",
"requirements":[
{
"id":"R1",
"status":"met",
"assessment":"Ten stages name their artifacts and exits.",
"evidence":"policy/delivery.md: stages and exits"
},
{
"id":"R2",
"status":"met",
"assessment":"Generated cards include stable requirement IDs, fit evidence, acceptance criteria and disposition.",
"evidence":"scripts/task.sh: requirement table"
},
{
"id":"R3",
"status":"met",
"assessment":"Manual review defaults and scoped continuous authorization are explicit; templates start unreviewed.",
"assessment":"Incremental work records discoveries, adjustments, renewed review/tests, decisions, outcomes and stopping conditions.",
"evidence":"policy/delivery.md: feedback loops; scripts/task.sh: exploration and iteration table"
}
],
"implementation_units":[]
},
"learnings":[],
"agent_native_gaps":[],
"deployment_notes":[],
"residual_risks":[],
"testing_gaps":[
"Full application suite and build were not rerun at the reviewed head; the reported earlier author run is not independently verified.",
"Remote PR CI and GATE identity/SHA were not verified.",
"The later uncommitted archival-reference fix and assertion were not reviewed or verified."
],
"coverage":{
"notes":[
"Reviewed only the nine-file diff between fixed base and head; main checkout source was not used for changed files. Full roster selected because instruction prose and changed tests rule out lite coverage.",
"Project standards used root AGENTS.md as instruction fallback; no CODING_STANDARDS.md applies. No matching solutions corpus or declared local pack was selected.",
"Independent replay by /root/delivery_review at fixed head 125e159924d90954c3bafc8572cc260e1e12eadc: make test-governance && git diff --check; exit 0, 104 tests passed. Receipt /tmp/iterative-delivery-review-replay-20261007.json remains source SELF; local evidence does not authenticate CI or reviewer identity.",
"Full application suite and build were not rerun by this review. Author reported they passed on 9454819 with only task metadata changed afterward; remote PR CI is not yet available and is not validated by this review.",
"Supplemental scope-audit is a non-independent source inspection; the five dispatched specialist reviewers returned no findings.",
"The root caller is preparing the minimal archival-reference fix outside the fixed review head. Review does not claim that uncommitted fix verified."
],
"reviewer_selection":[
{
"reviewer":"correctness",
"tier":"session",
"reason":"always-on"
},
{
"reviewer":"project-standards",
"tier":"mid",
"reason":"AGENTS.md governs all changed files"
},
{
"reviewer":"testing",
"tier":"mid",
"reason":"real-Git hook tests and generated task-card assertions changed"
},
{
"reviewer":"agent-native",
"tier":"mid",
"reason":"agent instructions, commands and task-card context changed"
},
{
"reviewer":"adversarial",
"tier":"session",
"reason":"post-merge persistence side effects and command composition changed"
}
],
"lite":false,
"cross_model":{
"outcome":"in-process-fallback",
"note":"Independent external cross-model pass not run: branch-remote scope uses the local adversarial reviewer against fixed refs. No code sent externally."
"reason":"The diff newly adds scripts/task.sh:184's ../policy/delivery.md link, while scripts/task.sh:391 and :401 move every closed card from .task/ to .task/archive/ without rewriting it, so it resolves to the absent .task/policy/delivery.md at reviewed head (the root policy/delivery.md exists); this occurs whenever a new task card is closed, and tests/test_task.py:605 only checks the pre-archive form."
}
],
"protected_subject_reclassifications":0,
"degraded_blockers":[]
},
"suppressed_by_confidence":{},
"malformed_findings":0,
"malformed_returns":0,
"mode_aware_demotions":0,
"missing_first_evidence_demotions":0,
"first_evidence_backfilled":0,
"settlement_evaluated":true,
"settlement_suppressed":0,
"non_independent_attributed_sources":[
"scope-audit"
],
"confidence_basis":"Direct fixed-head source evidence; no confidence promotion from scope-audit attribution or validator agreement.",
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
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.