Commit Graph
100 Commits
Author SHA1 Message Date
weichenandCursor ae1e2475f3 feat(web): restore TaskRunCard from phase snapshot on refresh
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 08:15:10 +00:00
weichenandCursor 32209c5e1b feat(taskrun): persist phase snapshot into assistant message metadata
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 08:15:10 +00:00
weichenandCursor 194e410822 feat(web): wire TaskRunCard into message stream and capture duration
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 08:15:10 +00:00
weichenandCursor 22314ff9b0 feat(web): add TaskRunCard vertical timeline for task runs
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 08:15:10 +00:00
weichen b376fd8383 docs(ops): claim taskrun status card feature branch 2026-09-21 08:15:10 +00:00
weichenandCursor e0665ca446 merge: fix/intent-workflow-scoping-2026-09-21
Scope intent slot filling and document matching to the active workflow;
cross-workflow mentions are blocked with switch guidance.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 08:11:27 +00:00
weichenandCursor d0b9ac4247 docs(ops): hold the integration slot for intent workflow scoping
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 08:10:15 +00:00
weichenandCursor 0b1040ca7e feat(web): scope template matching to the active workflow
- Document list returns workflow_key per item and active_workflow_key
- DeliverableItem keeps workflowKey through server sync
- resolveTaskTemplateForMessage filters the match pool and blocks
  cross-workflow mentions with switch guidance

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 08:09:36 +00:00
weichen 83e22a701f merge: adopt agent worktree governance (adoption) 2026-09-21 08:09:13 +00:00
weichen 048bbe4a5e docs(workflow): require isolated worktrees for all new agent changes
Adopt the approved workflow with explicit dev baselines, serialized candidate integration, scoped validation and safe cleanup. Keep automation work tracked separately from the active policy.
2026-09-21 08:08:14 +00:00
weichenandCursor 0912efdbd9 feat(coordinator+server): narrow document match pool to active workflow
- ActiveWorkflowScope resolves live instance task keys for the project
- chat document reader matches inside the active pool; cross-flow hits
  return ErrWrongWorkflow with switch guidance
- enrichSessionWorkflowStage injects ActiveWorkflowKey into UserCtx
- TRIGGER_TASK (coordinator + task-run API) blocks out-of-scope task keys

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 08:05:44 +00:00
weichen 6e28c57245 docs(workflow): plan isolated agent development and serialized integration 2026-09-21 07:59:40 +00:00
weichenandCursor 5c6b4f7719 feat(intent): scope slot filling to the active workflow
- ContextSnapshot gains ActiveWorkflowKey; ToSnapshot passes it downstream
- manifest-backed doc-title -> workflow index (main/pm/tm/rdev/sw)
- TRIGGER_TASK and DOCGOV write actions blocked with switch guidance when
  the named document belongs to another active workflow
- legacy projects without an active workflow key keep the old behavior

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 07:38:49 +00:00
weichenandCursor fc432d8726 docs(ops): claim intent workflow scoping on a fix branch
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 06:52:30 +00:00
weichen 15b8a4a87d merge: docs for workflow document key unification 2026-09-21 06:48:58 +00:00
weichenandCursor 954da76c0a docs(test): record workflow document key unification on dev
项目 6579 已收成 7 条 bd_*,旧 intake 行进了归档表。管理员复测不再出现作用域 409。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 06:48:37 +00:00
weichenandCursor 5f14931e7b merge: fix/workflow-doc-key-unification-2026-09-21
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 06:38:25 +00:00
weichenandCursor 2ec5856284 docs(ops): hold the dev integration slot for document key unification
合入 dev 和容器重建期间占住集成槽,避免并行改同一套 dev 容器。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 06:37:43 +00:00
weichenandCursor 50c19aaee9 test(docgov): cover canonical task key collapse for project documents
锁定「7 份旧键本地克隆加 8 行服务端」收成 7 条 bd_*,以及列表与物化不再留下 intake 兄弟行。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 06:37:10 +00:00
weichenandCursor 51d4390bd6 fix(docgov): collapse legacy and published task keys in the document list
列表只返回发布键那一行;物化时若旧键行已在,就不再插入兄弟行,避免撞上唯一索引。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 06:37:10 +00:00
weichenandCursor baca45ab9c fix(web): merge workflow documents by canonical task key
本地旧键模板与服务端 bd_* 行按同一发布键合并,未认领的旧键克隆在服务端已覆盖时丢掉。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 06:37:10 +00:00
weichenandCursor 7bb46d9ec8 fix(db): archive coexisting legacy document task keys
正式台账 doc_proj* 上,旧键与发布键不能再并存。孤立旧键和 doc_test_db 测试残留不动,项目 143 无重复行所以不会被改写。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 06:37:10 +00:00
weichenandCursor 493c03c449 docs(ops): claim workflow document key unification
项目 6579 的旧键与发布键被重复计数。先登记任务与 mutex,再改迁移和列表合并。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 06:37:10 +00:00
weichen 9e96a66646 merge: fix/dev-deep-test-four-issues-2026-09-21 2026-09-21 06:31:33 +00:00
weichenandCursor 0a5a8455b5 docs(test): record the four dev deep-test fixes
The dev container was rebuilt and the health check, task-run errors, and new UI strings are filed with the report.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 06:31:27 +00:00
weichenandCursor 11d6bc1511 fix(web): type the history lookup used by task resume
The chat window hook only exposed refresh helpers, so the continue path did not type-check after it started reading history bubbles.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 06:29:10 +00:00
weichenandCursor bdd4b970d4 fix(web): label unfinished template documents as preview
Template bodies were read-only, but the status chip said 编制中 and the lock banner said the document was already controlled.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 06:26:05 +00:00
weichenandCursor 70ceb03652 fix(web): resume interrupted tasks from history bubbles
Continue looked up only the in-memory message list, so a refreshed card did nothing, and the stream path also dropped the stored workspace.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 06:24:56 +00:00
weichenandCursor 9daf3b7a10 fix(web): replay task phases after refresh and keep interrupted resumable
Progress lived only in the open SSE stream, and interrupted history was shown as completed so the card could not be continued.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 06:21:09 +00:00
weichenandCursor cb1c378c5a fix(server): close task event streams when the client only wants a replay
Interrupted runs often have no done event, so a refresh replay would otherwise hold the SSE connection open.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 06:21:09 +00:00
weichenandCursor a236ddc0fa fix(intent): accept 编写/编制/起草 and keep intake markers on intake
The chat fallback only treated 生成/做/跑/出 as task verbs, and the shorter RDev alias 用户需求 stole 初始用户需求表.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 06:12:15 +00:00
weichenandCursor ddb1e542b6 fix(web): prefer intake markers over the shorter URS title
「初始用户需求表」contains「用户需求表」, so title matching sent V0.1 wording to the V0.5 task and the stage gate rejected it.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 06:12:15 +00:00
weichenandCursor 247e549397 docs(ops): claim the four dev deep-test fixes
Record the intent-routing, task-card resume, and template-badge work before code changes so the mutex is visible.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 06:07:51 +00:00
weichenandCursor 8b9c2a91f0 merge: fix/dev-multiuser-four-issues-2026-09-21
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 05:34:30 +00:00
weichenandCursor b9eb9460c0 docs(test): record the multi-user workflow fix and dev smoke
The report keeps the 6579 document backfill, the live-edit switch rejection, and the rebuilt dev health check.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 05:31:02 +00:00
weichen ef2f67d73c merge: feature/trace-panel-to-chat-2026-09-21 2026-09-21 05:24:16 +00:00
weichenandCursor 14d1c7d0f7 docs(test): record trace panel retirement on dev
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 05:24:16 +00:00
weichenandCursor 87c6068da7 test(web): expect a specific message when task scope cannot be resolved
The scope error now has its own copy, so the 4xx case should assert that text instead of the generic request-failed fallback.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 05:22:50 +00:00
weichenandCursor f85b861a18 docs(ops): claim the trace-to-chat change and the dev smoke slot
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 05:20:30 +00:00
weichenandCursor 3a0f7a1033 fix(web): route prefixed task keys and keep live settings editable
Message routing follows the project's real task key, account switches clear local workbench state, and the duty matrix writes the reassignment API instead of a local drill.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 05:20:01 +00:00
weichenandCursor f168e44ce7 feat(projectinstance): allow live workflow config edits except switching
Activated projects can update duties, approval policy, and document enablement. Changing the workflow definition stays rejected, and project 143 remains frozen.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 05:20:01 +00:00
weichenandCursor b74441fb4f fix(docgov): materialize enabled workflow docs as template records
Activation and list healing need a server-side document row per enabled task, without overwriting documents that already have content.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 05:20:01 +00:00
weichenandCursor d865342ae2 feat(web): replace the standing trace panel with a chat card
The requirements and impact summary no longer occupies the chat column. Open recheck marks arrive as an assistant card with a no-change action.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 05:19:43 +00:00
weichenandCursor 687f930f40 feat(trace): deliver recheck and impact notices in chat
A new recheck mark is posted into the actor's existing project session, and a downstream-impact event does the same. Asking about what a change affects still resolves to impact analysis.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 05:19:43 +00:00
weichen 2167bf4327 merge: fix/taskrun-scope-persist-2026-09-21 2026-09-21 05:09:39 +00:00
weichenandCursor 7ff0fb5cdd docs(test): record task scope alias acceptance on dev
Chen Wei's intake request against a bd_intake snapshot now creates a run, and the chat window still returns the turn after refresh.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 05:09:39 +00:00
weichenandCursor f529458c28 docs(ops): claim task-scope persist fix and the dev smoke slot
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 05:07:04 +00:00
weichenandCursor a60bba6fbf fix(server): persist chat when a document task scope cannot be resolved
A 409 used to return before any message was written, so a refresh showed an empty conversation. Record the user turn and a failed assistant reply before rejecting the run.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 05:03:08 +00:00
weichenandCursor 8d22fa3827 fix(projectinstance): resolve legacy task keys against namespaced snapshots
New workflow instances store bd_* task keys, but chat still sends the old keys. Scope and document access now treat those aliases as the same task so a live instance no longer fails closed on an exact string miss.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 05:03:08 +00:00
weichen e91ffbca1d merge: fix/taskrun-error-transparency-2026-09-21 slot release 2026-09-21 03:14:29 +00:00
weichenandCursor 5ed0fc7e01 docs(ops): restore created date on the task run error task
Keep the short-term frontmatter complete after marking the task done.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 03:14:29 +00:00
weichenandCursor 0600804e6d docs(test): record task run error transparency acceptance
Dev rebuild serves snake_case task run JSON and the real pi-agent backend, so failed runs are no longer labeled as network errors.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 03:14:19 +00:00
weichen 5380cc1606 merge: fix/taskrun-error-transparency-2026-09-21 2026-09-21 03:09:59 +00:00
weichenandCursor 776c3aeb75 merge: dev into fix/taskrun-error-transparency-2026-09-21
Take the released integration slot and keep the trace-panel acceptance notes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 03:09:42 +00:00
weichenandCursor 943a07b2a4 fix(web): surface real task failure reason instead of NETWORK_ERROR fallback
Show error_message for failed runs, a distinct cancelled state, and business 4xx codes instead of a generic network message.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 03:05:49 +00:00
weichenandCursor fbcb78cf92 test(server): assert snake_case task run response
Lock GET /api/v1/tasks/runs/{id} to run_id, status, and error_message so PascalCase cannot regress.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 03:05:49 +00:00
weichenandCursor c10206512d fix(taskrun): serialize RunRecord with snake_case json tags
The task run API was emitting PascalCase fields, so the client never saw status or error_message and treated every disconnect as a network error.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 03:05:49 +00:00
weichen ea6f822c18 merge: fix/trace-panel-null-crash-2026-09-21 slot release 2026-09-21 02:59:18 +00:00
weichenandCursor 437b6ef59e docs(test): record the trace panel null-crash acceptance
Release the integration slot after the dev rebuild and browser check.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 02:58:23 +00:00
weichenandCursor f46ab4672e docs(ops): claim task run error transparency fix
Record the NETWORK_ERROR misreport and defer HTTP access logs so the failure reason is no longer hidden behind a network fallback.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 02:47:59 +00:00
weichen e1bc95cd88 merge: fix/trace-panel-null-crash-2026-09-21 2026-09-21 02:41:21 +00:00
weichenandCursor 726ab7560c docs(ops): occupy the integration slot for the trace panel crash fix
The previous slot line claimed an already-merged docs branch; dev itself is idle.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 02:39:42 +00:00
weichenandCursor 1f7f3d2271 test(trace): guard empty trace lists against JSON null
Cover the service nil-slice contract and the client normalization of a null payload.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 02:38:08 +00:00
weichenandCursor 26d8f4381d fix(web): normalize null trace arrays before render
ProjectTracePanel reads index.length; a cached or older payload of null must not crash the page.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 02:35:26 +00:00
weichenandCursor 00df3d7cb8 fix(traceimpact): return empty slices instead of nil lists
Empty trace indexes were serialized as JSON null and crashed the project page.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 02:33:51 +00:00
weichenandCursor 17fcd3ff69 docs(ops): 占用集成槽位合入 lazy-doc-verification
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 02:31:38 +00:00
weichenandCursor c64b46a745 docs(ops): 认领 ProjectTracePanel 空追踪崩溃修复
登录后项目页因 trace 接口把空切片序列化成 null 而触发 ErrorBoundary。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 02:31:28 +00:00
weichen bfc77076f6 merge: docs/lazy-doc-verification-2026-09-21 2026-09-21 02:26:56 +00:00
weichenandCursor 86f8a0b548 docs(ops): CURRENT 登记 lazy-doc-verification 认领 done
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 02:21:44 +00:00
weichenandCursor bbbaf40bfd docs(test): test 环境受控文档懒创建端到端验证报告
- 验证「激活后 0 受控文档」为懒创建设计预期:激活只建实例,文档在任务运行时由 bizdev service CreateOrGetDocument 落库
- 真实 PI Agent(MiniMax-M2.7-highspeed)跑通 bd_intake 小队任务 3m45s completed
- 三重证据:document_records 0→1 行、documents API 计数翻转、正文 7729 字符 SHA-256 与账本一致
- short-term 任务与 CURRENT 认领登记;证据资产归档 assets/

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 02:21:07 +00:00
weichen 33943fd46e merge: feature/stage-backtrack-impl slot release 2026-09-20 15:37:55 +00:00
weichenandCursor 9551bcbb25 docs(ops): release the integration slot after the dev schema 59 smoke
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 15:37:55 +00:00
weichen 5430742b00 merge: feature/stage-backtrack-impl 2026-09-20 15:35:32 +00:00
weichenandCursor b7197607e9 docs(ops): occupy the integration slot for the stage backtrack implementation
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 15:35:32 +00:00
weichenandCursor ae86b47f6f docs(ops): record the stage backtrack implementation slices
The slices share feature/stage-backtrack-impl. Migration 00059 is not applied to the running environments yet.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 15:35:22 +00:00
weichenandCursor 3a4c00a1ba feat(web): show the trace panel and the recheck acknowledgement
The acknowledgement stays visible on the advance bar and does not clear the mark.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 15:35:07 +00:00
weichenandCursor e4b4e0dde8 feat(api): expose the trace index, reopen, and recheck routes
Use the record tables when migration 00059 is present, and hide statements from documents the caller cannot see.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 15:35:07 +00:00
weichenandCursor 5e05d966b4 feat(intent): bridge chat into impact analysis and revision proposals
Analysis stays read-only, and a revoked project member cannot confirm an old proposal.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 15:35:07 +00:00
weichenandCursor 4a7b8cc26f feat(workflow): reopen a completed stage without pausing the later one
Selected documents return to drafting, and advance asks the creator to acknowledge an open recheck mark.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 15:35:07 +00:00
weichenandCursor 432884911f feat(docrevision): attach coverage status to formal human revisions
Unknown, partial, and failed coverage stay distinct from no known dependencies.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 15:35:07 +00:00
weichenandCursor 33ee59641f feat(trace): add the project trace ledger and bounded impact walk
Keep item revisions and edge decisions as records, and refuse to treat a missing index as no impact.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 15:35:07 +00:00
weichen e3a5b2851e merge: feature/stage-backtrack-design 2026-09-20 15:09:31 +00:00
weichenandCursor c825bbb13f docs(ops): release integration slot after stage backtrack design smoke
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 15:09:31 +00:00
weichenandCursor 0155ac62db docs(ops): occupy integration slot for stage backtrack design
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 15:09:15 +00:00
weichenandCursor 54c8a3d107 docs(design): specify stage backtrack and impact loop
Record how later materials can affect earlier stages without hard gates, and split the implementation into planned slices.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 15:09:06 +00:00
weichen d43ac2d893 merge: fix/workflow-seed-bootstrap-2026-09-20 closeout 2026-09-20 14:06:15 +00:00
weichenandCursor cc95b8445c docs(test): archive rdev seed hotfix verification
dev 与 test 目录已含研发设计控制流程,test 晋升 rc-v1.0.0-beta.7 后 schema 为 58。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 14:06:15 +00:00
weichen 950f881968 merge: fix/workflow-seed-bootstrap-2026-09-20 2026-09-20 14:03:42 +00:00
weichenandCursor 7da2c1fdef docs(ops): occupy integration slot for rdev seed hotfix
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 14:03:42 +00:00
weichenandCursor 079225495e fix(workflowdef): heal retired seeds and fall back published_by
启动种子不再依赖固定用户 id=1,并把白名单工作流的 retired 状态恢复为 active。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 14:03:30 +00:00
weichenandCursor badfc19812 docs(ops): claim rdev workflow seed hotfix
dev 库 rdev 停在 retired,test 库因 publishedBy 外键失败未发布研发工作流。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 14:03:30 +00:00
weichen e83de73fd0 merge: docs/module-decoupling-spec-2026-09-20 slot release 2026-09-20 13:25:44 +00:00
weichenandCursor a3d382c6d9 docs(ops): release integration slot after docs-only smoke
Record that go vet passed and the two short-test failures are docker registry EOF, not this documentation change.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 13:25:44 +00:00
weichen 133ceb454c merge: docs/module-decoupling-spec-2026-09-20 2026-09-20 13:23:54 +00:00
weichenandCursor a94745370d docs(status): record module standards and planned decoupling batches
Mark the documentation task done and hold the integration slot while the docs merge into dev.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 13:23:41 +00:00
weichenandCursor 22cac8dcbe docs(remediation): plan module decoupling batches A through G
Keep each hotspot on its own branch and mutex so a later code fix cannot spread across modules.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 13:22:59 +00:00
weichenandCursor fe46705b67 docs(system-design): list the module standards file in the design index
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 13:22:21 +00:00
weichenandCursor e71db3dce6 docs(system-design): add module communication and isolation standards
Give implementers one entry for narrow ports, the event bus, and the rule that a fault stays inside its module.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 13:22:11 +00:00
weichenandCursor 0504884e04 docs(audit): record remaining module coupling hotspots
Keep the modular-monolith baseline and name the seven places where a fault still crosses a module boundary.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 13:21:36 +00:00
weichenandCursor 6b43007d7a docs(ops): claim module decoupling spec and coupling audit
Register the docs-only audit so later batches do not collide with the architecture-docs mutex.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 13:21:03 +00:00