Skip to content

spec: 实施架构深化五项决策 D1-D5 - #217

Open
DavidHLP wants to merge 20 commits into
mainfrom
spec/deep-module-decisions
Open

DavidHLP wants to merge 20 commits into
mainfrom
spec/deep-module-decisions

Conversation

@DavidHLP

Copy link
Copy Markdown
Owner

Summary

一次性实施架构深化决策方案的全部五项决策(Closes #216):

  • D1 Profile RPC adapter 复用既有 CommandReceiptExecutor,删除手写 receipt 协议,App receipt adapter 内部增加仅限 Profile 两种 command 的 legacy fingerprint matcher。
  • D2 建立 concrete Profile mutation module(update(ProfilePatch) / replaceAvatar),集中行锁、null-skip、cleanup intent、Search publication 与事务;删除 AvatarProfileMutationService 与两个 adapter 的重复实现。
  • D3 深化 createCollectionSlice 为 Collection request lifecycle 唯一 owner,interface 只新增 cancel();useRemoteTable 删除 sequence/controller/pending count/signal 转发。
  • D4 moderationStore 归位为 decision module(terminal 规则移入 store),moderationWorkflow 改名 moderationPresentation,删除无 caller 的虚假 runDecision 文档与 exports。
  • D5 建立 concrete BackupObjectLifecycle(start/delete/sweep),吸收 planned-key、状态迁移、tombstone、settle-window 决策;单一 executor submission path 与唯一 scheduled sweep。

依赖顺序:D1→D2、D3→D4、D5 独立且单独提交。

不变量

  • Owner ownership、HTTP/Dubbo contract、Result/RpcResult envelope、schema/migration 不变。
  • fail-closed 语义(receipt payload、Profile directory、Backup ambiguous completion)不弱化。
  • 不新增假想 interface、command bus、workflow engine、通用 cleanup framework。

Verification

  • 实施中:各决策按决策文档对应节迁移测试;并发/持久规则用真实 MySQL IT 写好,待 remote-dev 执行。
  • 合并后在 remote-dev 执行验证矩阵(决策文档第 10 节)并在此更新实际结果。

Closes #216

@DavidHLP
DavidHLP marked this pull request as ready for review September 22, 2026 10:06
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 22, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-22T16:49:50.125024Z 9450857 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 736dfbd864

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 94508574f7

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

} = {},
): Promise<void> | void {
abortActiveRequests()
store.cancel()

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Do not clear unrelated mutation loading on table transitions

When a search, filter, or page changes during another store operation, this unconditional cancellation clears that operation's loading state because several stores reuse collection.isLoading outside collection fetches: comments.ts uses it for flag/delete/bulk actions, notifications.ts for create/update/delete, and audit.ts for exports. createCollectionSlice.cancel() immediately assigns isLoading = false even when it has no active collection controller, so an enabled toolbar can report completion and permit overlapping actions while the original mutation or export is still running. Keep mutation loading separate from collection request state, or make cancellation affect loading only when it actually owns the active load.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

spec: 架构深化五项决策实施 (D1-D5)

1 participant