pomaster 0.1.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +34 -10
  2. package/TRADEMARKS.md +2 -2
  3. package/catalog/archetypes/archetype.api.error.json +55 -0
  4. package/catalog/archetypes/archetype.api.pagination.json +68 -0
  5. package/catalog/archetypes/archetype.api.resource.json +45 -0
  6. package/catalog/archetypes/archetype.backend.approval_workflow.json +63 -0
  7. package/catalog/archetypes/archetype.backend.audit.json +44 -0
  8. package/catalog/archetypes/archetype.backend.crud_resource.json +56 -0
  9. package/catalog/archetypes/archetype.backend.export.json +40 -0
  10. package/catalog/archetypes/archetype.backend.external_integration.json +89 -0
  11. package/catalog/archetypes/archetype.backend.idempotent_command.json +65 -0
  12. package/catalog/archetypes/archetype.backend.import.json +47 -0
  13. package/catalog/archetypes/archetype.backend.master_data.json +45 -0
  14. package/catalog/archetypes/archetype.backend.outbox_event.json +80 -0
  15. package/catalog/archetypes/archetype.backend.query_resource.json +40 -0
  16. package/catalog/archetypes/archetype.backend.scheduled_job.json +69 -0
  17. package/catalog/archetypes/archetype.backend.transactional_write.json +79 -0
  18. package/catalog/archetypes/archetype.component.button.json +53 -0
  19. package/catalog/archetypes/archetype.component.data_grid.json +78 -0
  20. package/catalog/archetypes/archetype.component.dialog.json +52 -0
  21. package/catalog/archetypes/archetype.component.search_input.json +34 -0
  22. package/catalog/archetypes/archetype.component.search_select.json +77 -0
  23. package/catalog/archetypes/archetype.data.hierarchy.json +71 -0
  24. package/catalog/archetypes/archetype.data.ledger.json +40 -0
  25. package/catalog/archetypes/archetype.data.master_data.json +43 -0
  26. package/catalog/archetypes/archetype.data.transaction.json +42 -0
  27. package/catalog/archetypes/archetype.data.versioned.json +43 -0
  28. package/catalog/archetypes/archetype.frontend.error_taxonomy.json +99 -0
  29. package/catalog/archetypes/archetype.frontend.feature_oriented.json +59 -0
  30. package/catalog/archetypes/archetype.frontend.modular.json +37 -0
  31. package/catalog/archetypes/archetype.frontend.spa_layered.json +48 -0
  32. package/catalog/archetypes/archetype.page.analysis.json +39 -0
  33. package/catalog/archetypes/archetype.page.master_data.json +63 -0
  34. package/catalog/archetypes/archetype.runtime.environment_parity.json +178 -0
  35. package/catalog/archetypes/archetype.runtime.observability_binding.json +93 -0
  36. package/catalog/archetypes/archetype.state.async_command.json +63 -0
  37. package/catalog/archetypes/archetype.state.background_refresh.json +45 -0
  38. package/catalog/archetypes/archetype.state.form_edit.json +45 -0
  39. package/catalog/archetypes/archetype.state.optimistic_mutation.json +48 -0
  40. package/catalog/archetypes/archetype.state.selection.json +35 -0
  41. package/catalog/archetypes/archetype.state.server_query.json +60 -0
  42. package/catalog/archetypes/archetype.state.url_filter.json +47 -0
  43. package/catalog/archetypes/archetype.state.wizard.json +46 -0
  44. package/catalog/catalog-lock.draft.json +349 -5
  45. package/catalog/gates/gate.new-entity.checks.json +106 -0
  46. package/catalog/knowledge/knowledge.web.browser.mcp_eyes.json +99 -0
  47. package/catalog/sensors/sensor.browser.deterministic.json +17 -6
  48. package/catalog/sensors/sensor.browser.interactive.json +16 -6
  49. package/catalog/tools/materialize_v06_relock.py +218 -0
  50. package/catalog/tools/seed_v06_archetypes.py +283 -0
  51. package/catalog/tools/seed_v06_batch2_materials.py +504 -0
  52. package/catalog/tools/seed_v06_batch3_materials.py +756 -0
  53. package/catalog/tools/seed_v06_batch4_materials.py +353 -0
  54. package/dist/bin.js +18697 -15106
  55. package/package.json +1 -1
package/README.md CHANGED
@@ -15,9 +15,10 @@ POMaster = State + Context + Transition + Evidence,在 Authority 与 Adaptive
15
15
  POMaster 的全部能力收敛在一条 CLI(`pomaster`)——八拍 Change Loop 的每一拍都有对应命令面。先给一张**命令全景**(机器钉版,与 `pomaster --help` 零漂移;`#` 分节注释仅人读)。第一次使用?直接看下面 [install → init → 第一个 Change](#1-安装) 的全流程。
16
16
 
17
17
  ```text
18
- # 0 BOOTSTRAP —— 建基线 / 速览 / 装眼睛 / 可移植性 / 自更新
18
+ # 0 BOOTSTRAP —— 建基线 / 速览 / 可行动项 / 装眼睛 / 可移植性 / 自更新
19
19
  pomaster init
20
20
  pomaster status
21
+ pomaster alerts
21
22
  pomaster doctor
22
23
  pomaster portability bootstrap/check
23
24
  pomaster update --check/--yes
@@ -53,12 +54,14 @@ pomaster memory capture/inspect/harvest/review/promote/audit
53
54
  # ⑧ CARRY —— DoD 判卷收口
54
55
  pomaster closeout <task-id>
55
56
 
56
- # 横切 —— 对象检视 / Discovery / Research / Eval / Catalog / 迁移 / 生产反馈 / 多 Agent / 执行身份
57
+ # 横切 —— 对象检视 / 图视图 / Discovery / Research / Eval / Catalog / 迁移 / 生产反馈 / 多 Agent / 执行身份
58
+ pomaster resolve "<need>" [--hints ...]
57
59
  pomaster inspect <governed-id>
60
+ pomaster graph <governed-id> [--view impact]
58
61
  pomaster brainstorm start/status/promote
59
62
  pomaster research list/inspect
60
63
  pomaster eval --suite behavioral
61
- pomaster catalog status/explain
64
+ pomaster catalog status/explain/relock
62
65
  pomaster migrate trellis-spec --analyze --spec-root <dir>
63
66
  pomaster production band/evaluate/challenge/diagnose/metrics/self-improvement
64
67
  pomaster agents status
@@ -68,6 +71,8 @@ pomaster session attach/refresh/list
68
71
  pomaster lock acquire/heartbeat/release/steal/list
69
72
  pomaster execution begin/end/list
70
73
  pomaster trace show/list
74
+ # pomaster session(不带子命令)= 治理速览投影(SessionStart 注入源;≤10k 字符,恒 exit 0)
75
+ # pomaster alerts(重入口轻提醒源)= 可行动项过滤器(干净=空输出,恒 exit 0)
71
76
  ```
72
77
 
73
78
  ### 1. 安装
@@ -93,12 +98,24 @@ pomaster init
93
98
 
94
99
  | 产物 | 作用 | 会被覆盖吗 |
95
100
  |---|---|---|
96
- | `.pomaster/state/truth-index.json` | Canonical State 唯一事实源(空账本起点) | 否(存在即跳过;损坏显式报错,绝不静默重建) |
101
+ | `.pomaster/state/truth-index.json` | Canonical State 的唯一 root index(空账本起点;受其引用的 `truth/objects/**` 是 Canonical Truth 正文) | 否(存在即跳过;损坏显式报错,绝不静默重建) |
97
102
  | `.pomaster/state/authority.json` | Authority Map 骨架(默认登记 `BOOTSTRAP_OWNER`) | 否(人类加注的 owner 一律不动) |
98
103
  | `.pomaster/config.yaml` | 治理配置(人类可编辑) | 否(只在缺失时创建) |
99
- | `AGENTS.md` / `CLAUDE.md` | Agent 轻入口(profile + 状态速览 + 常用命令) | 仅带生成标记的(`CLAUDE.md` 通过 `@AGENTS.md` 导入共享) |
104
+ | `AGENTS.md` / `CLAUDE.md` | Agent 重入口(profile + 状态速览 + 常用命令 + 重入口安装物锚点) | 仅带生成标记的(`CLAUDE.md` 通过 `@AGENTS.md` 导入共享) |
100
105
 
101
- **多平台适配器**:`AGENTS.md` 恒为唯一事实源;`--platforms claude,codex,cursor,qoder` 追加各平台的细指针适配器(`CLAUDE.md` / 根 `AGENTS.md` 即 codex 原生入口 / `.cursor/rules/pomaster.mdc` / `.qoder/rules/pomaster.md`,已存在一律不覆盖);`--platforms none` 只建 AGENTS.md + 状态骨架。TTY 交互终端直接 `pomaster init` 会出编号清单供选择;`--json` 恒走确定性缺省(claude)。
106
+ **目录宪法全树预铺**(Owner 裁定 2026-09-04,不分模式):init 一次性建出 `.pomaster/` 目录宪法 §2 全树(state / truth/objects / evidence 三区 / executions / traces / runtime 四区 / discovery/scratchpads / memory/inbox / production 六区,25 目录 × 各带 README)+ `.pomaster/layout.json` 机器清单(全目录 status=wired + activation_hint——什么样的项目/需求激活该平面由 AI 按项目复杂度自行判断,目录存在 ≠ 已激活)。`--mode light` 与 heavy 的 `.pomaster/` 目录树**完全相同**(mode 只影响 skills/hooks 注入层);canonical 正文层为 `.pomaster/truth/objects/`,legacy `.pomaster/objects/` 在场会被显式告警(禁静默 merge/覆盖/迁移)。完整规范见 `.pomaster/layout.json` 与目录宪法文档。
107
+
108
+ **重入口默认**(D13 修订,2026-09-03):init 缺省生成重入口全套,让 Agent 一开会话就自动看到治理状态、按需自动触发命令卡——
109
+
110
+ - **skills 命令卡库**:`/pomaster` 路由全景 + `pomaster-bootstrap` … `pomaster-runtime` 等 15 份命令卡,双镜像安装到 `.agents/skills/`(通用层——Codex / Cursor / Gemini CLI / GitHub Copilot / VS Code / Amp / Warp / OpenCode / Droid 等原生读取)与 `.claude/skills/`(Claude Code 必需位),两份逐字节一致、同指 `pomaster --help` 单一事实源;
111
+ - **hooks 注入(claude)**:`.claude/settings.json` 合并式注册 SessionStart → `pomaster session`(治理速览投影,≤10,000 字符硬上限)与 UserPromptSubmit → `pomaster alerts`(可行动项过滤器,干净=空输出恒 exit 0);既有 hooks(人类/Trellis 条目)一律保留,坏 JSON fail-closed 不覆盖;
112
+ - **cursor/qoder**:加厚版 rules(命令卡 + Browser Eyes 展开进 `.cursor/rules/pomaster.mdc` / `.qoder/rules/pomaster.md`)。
113
+
114
+ **显式退回**:`pomaster init --mode light` 保留轻入口形态(细指针适配器,静态、无运行时依赖、无 hook 注入);对已重入口项目执行时按平台清单移除上述安装物并重写入口文件回轻形态——重→轻可逆,不动人类文件。
115
+
116
+ **多平台适配器**:`AGENTS.md` 恒为唯一事实源;`--platforms claude,codex,cursor,qoder` 追加各平台的适配器(`CLAUDE.md` / 根 `AGENTS.md` 即 codex 原生入口 / `.cursor/rules/pomaster.mdc` / `.qoder/rules/pomaster.md`,本包产物形态升级自动重写,人类异形内容一律不覆盖);`--platforms none` 只建 AGENTS.md + 状态骨架。TTY 交互终端直接 `pomaster init` 会出复选清单(◉/◯ 空格勾选 / ↑↓ 移动 / 回车确认;raw 模式不可用时降级为编号输入);`--json` 恒走确定性缺省(claude,重入口)。
117
+
118
+ 装好后 `pomaster session`(无子命令)就是 hook 看到的治理速览;`pomaster doctor` 会用 `heavy_entry_hooks` / `heavy_entry_skills` 探针核对重入口安装物(hooks 注册态 + 双镜像逐字节一致;light 退回形态报告 READY-符合预期)。
102
119
 
103
120
  ### 3. init 之后该配置什么(config.yaml)
104
121
 
@@ -137,6 +154,8 @@ pomaster doctor # 工具/MCP 探测:缺什么提示装什么
137
154
 
138
155
  doctor 探针覆盖:内核 / BUILD(tsc·eslint)/ CONTRACT(oasdiff·schemathesis)/ ARCHITECTURE(depcruise·import-linter)/ COVERAGE(c8·pytest-cov)/ MUTATION(mutmut·StrykerJS)/ SECURITY(gitleaks·pip-audit·semgrep)/ BROWSER(playwright·chrome-devtools MCP)/ PERFORMANCE(lighthouse·web-vitals)/ portability。**工具缺席=显式 NOT_RUN(非绿非红),绝不假绿**。
139
156
 
157
+ **浏览器双眼(Browser Eyes)**:`chrome-devtools` MCP 是观测诊断面——页面慢/报错/卡住时直接读真实浏览器(性能 trace / 网络瀑布 / console),禁只看代码推断;`playwright` MCP 是确定性 E2E smoke 与交互验证面。两边产物都是证据链输入(perception receipt / BROWSER gate GRN)。`pomaster doctor` 对两个 MCP 各自出四态探针(未配置 → MISSING_CONFIGURATION + 一键安装路标);`init` 生成的 AGENTS.md 已内置该分工引导。
158
+
140
159
  ---
141
160
 
142
161
  ## 为什么存在(三行读完的来历)
@@ -159,9 +178,11 @@ flowchart TB
159
178
  end
160
179
  subgraph CAT["Engineering Catalog(随包分发)"]
161
180
  POL["policies 79"]:::cat
162
- KN["knowledge 10"]:::cat
163
- GT["gates 5"]:::cat
181
+ KN["knowledge 11"]:::cat
182
+ GT["gates 6"]:::cat
164
183
  SEN["sensors 6"]:::cat
184
+ ARC["archetypes 41"]:::cat
185
+ TOO["tools 8"]:::cat
165
186
  end
166
187
  AGENT["Agent Harness<br/>(Claude Code / Codex / …)"]:::ext
167
188
  HUMAN["Human Authority<br/>(Owner)"]:::ext
@@ -181,11 +202,12 @@ flowchart TB
181
202
  - **Canonical State 是唯一事实源**:一切对象(PAGE/CAPABILITY/CHANGE/TASK…)带四轴状态(lifecycle/confidence/evidence/change)+ Authority + 完整生命周期。Markdown 文档只是它的投影。
182
203
  - **Agent 不直接写状态**:一切写经 `maintain <id> --ops <tx>` 显式事务 → kernel `applyTransaction` 判卷(写路径机器执行点 `exec-guard` 判卷器非写入器)。
183
204
  - **证据先于结论**:gate 运行结果走 `record gate-run` 产 GRN 收据入 evidence 平面;claim 必须显式绑定 GRN 分母——「证据缺失伪装完成」会被 closeout 硬阻断。
205
+ - **先画靶子,再射箭(v0.6)**:随包分发 41 份 archetype 标准件(页面/组件/后端/数据/运行时,语义全部锚定官方文档实抓)——`pomaster resolve` 先在标准件与已有对象里选/配/组(EXACT/CONFIGURABLE/COMPOSABLE/EXTENSIBLE 确定性分类),真没有才设计新的,且新建必过 New Entity Gate 五否机判;`pomaster graph` 把对象图(采纳边/依赖/影响闭包)变成人看得见的投影。
184
206
 
185
207
  ## SOP 编排:项目生命周期五段式
186
208
 
187
209
  ```text
188
- 0 BOOTSTRAP ──── init 扫描 / Authority Map / catalog-lock / 轻入口生成
210
+ 0 BOOTSTRAP ──── init 扫描 / Authority Map / catalog-lock / 重入口生成(skills/hooks)
189
211
  (有原型→活体走查提五件套;存量项目→纳管已有 registry/spec/记忆)
190
212
  1 主循环 ─────── N 次 Change,每次跑下面的八拍 Loop(项目的日常形态)
191
213
  2 周期事件 ────── 全量对账 / 紧缩 / 经验入库 / catalog 升级 diff / 自托管基准
@@ -348,6 +370,7 @@ Spec、Task、Gate、Knowledge、Brainstorm……全部是这五个原语的派
348
370
  ## 哲学宪法(违者即是 bug)
349
371
 
350
372
  - Small Constitution:硬约束极少而精——不伪造事实、不越权、不静默冲突、不无证据宣称完成
373
+ - Heavy Entry by Default(D13 修订,2026-09-03):入口即治理——init 默认安装 skills 库 + hooks 注入,Agent 开会话即见状态;轻入口是显式退回(`--mode light`),不是默认;hook 注入内容永远是 Canonical State 的投影,不是第二事实源
351
374
  - No-op is elegant:没有必要的治理动作,零变化就是成功
352
375
  - Framework as Review Surface:框架约束好了的人,不需要读 AI 写的每一行代码——但前提是判卷器诚实,所以我们用对抗性用例持续攻击自己的 gate
353
376
  - Minimum Sufficient Governance:治理开销必须与变更风险成比例;小改动的体验是"几乎感觉不到 POMaster"
@@ -357,7 +380,8 @@ Spec、Task、Gate、Knowledge、Brainstorm……全部是这五个原语的派
357
380
 
358
381
  ```text
359
382
  packages/ kernel(状态与判卷权威)· cli(命令面)· gauntlet-lite(确定性 gate 腿)· schemas(FROZEN 词表 schema)
360
- catalog/ policies · knowledge · gates · sensors——随包分发的工程策展物料(catalog-lock 逐字节对账)
383
+ catalog/ policies · knowledge · gates · sensors · archetypes · tools——随包分发的工程策展物料(catalog-lock 逐字节对账;手补物料后 `pomaster catalog relock` 一键重锁)
384
+ references/ concept-ledger(治理概念账本)· external-sites-index(外部参照站点索引)
361
385
  tests/ 单元 / 集成 / Golden / 对抗 / 行为 / 自托管基准(数量下限进 CI 棘轮,只升不降)
362
386
  benchmarks/ mutation-kill · constitutional · run-all
363
387
  legal/ THIRD_PARTY_NOTICES · PROVENANCE
package/TRADEMARKS.md CHANGED
@@ -3,10 +3,10 @@
3
3
  **POMaster** 名称、POMaster logo 及其他项目标识(合称「项目标识」)归项目版权所有者所有。
4
4
 
5
5
  - 版权与许可主体署名见根目录 [`LICENSE`](./LICENSE) 的 Required Notice 行:Copyright (c) 2026 River-Singer。
6
- - Owner 署名主体占位:TODO(Owner): 如以法人/其他主体持有商标,在此补全法定主体名称。
6
+ - Owner 署名主体占位:Xu Jianyang: 如以法人/其他主体持有商标,在此补全法定主体名称。
7
7
 
8
8
  项目标识**不在** PolyForm Noncommercial 1.0.0 或商业授权协议的授权范围内;上述许可仅覆盖代码与文档等版权客体,不授予任何商标权。
9
9
 
10
10
  未经事先书面许可,不得在可能引起来源混淆的方式下使用项目标识。对 POMaster 原始代码的如实、指明来源的分发与描述性提及(nominative fair use)不在此限。
11
11
 
12
- **商标授权联系**:TODO(Owner): 填联系邮箱/渠道
12
+ **商标授权联系**:allenxujianyang@outlook.com
@@ -0,0 +1,55 @@
1
+ {
2
+ "id": "ARCHETYPE.API.ERROR",
3
+ "kind": "archetype",
4
+ "layer": "ARCHETYPE",
5
+ "title_zh": "API 错误契约原型",
6
+ "summary_zh": "问题细节标准错误信封原型(PRD §44):五个标准成员逐字(type/title/status/detail/instance);业务码/链路追踪/字段级错误如实定位为扩展成员(客户端必须忽略未识别扩展——RFC 9457 §3.2 语义),以 application/problem+json 承载。",
7
+ "semantic": {
8
+ "responsibility": "错误响应的形状与语义单点:五个标准成员承载问题类型/概要/状态/详情/实例定位,扩展成员承载机器码与字段级错误——机器可判卷与人可读分层",
9
+ "when_to_use": "所有 HTTP 错误响应的信封(与 API 资源原型 error 绑定位配对);前后端错误分型映射的契约源(前端错误目录的消费面对齐本原型)",
10
+ "when_not_to_use": "成功响应的包装信封(本原型只管错误面);前端错误呈现分型本身(前端错误目录承载)"
11
+ },
12
+ "composition": {
13
+ "requires": [],
14
+ "optional": [],
15
+ "incompatible": []
16
+ },
17
+ "standard_members": {
18
+ "type": "URI 引用标识问题类型;建议绝对 URI;缺省 about:blank(注册类型:无超出 HTTP 状态码的额外语义)",
19
+ "title": "问题类型的简短人读概要——不应随出现次数变化(本地化除外)",
20
+ "status": "JSON 数字,仅建议性;必须与真实 HTTP 状态码一致(规范 MUST:Generators MUST use the same status code in the actual HTTP response)",
21
+ "detail": "本次出现的人读解释——消费者不应解析 detail 提取信息(扩展成员更适合机器消费)",
22
+ "instance": "标识本次问题具体发生处的 URI 引用;不可解引用时作不透明唯一标识"
23
+ },
24
+ "extensions": {
25
+ "members": [
26
+ "code",
27
+ "trace_id",
28
+ "field_errors"
29
+ ],
30
+ "positioning": "扩展成员(非标准成员)——规范 §3.2:问题类型定义可扩展附加成员,客户端 MUST ignore 未识别扩展",
31
+ "field_errors_note": "字段级错误建议对齐官方校验示例的 errors[] 数组形态(每条含 detail 与位置指针)"
32
+ },
33
+ "constraints": [
34
+ "status 必须与真实 HTTP 状态码一致(MUST)",
35
+ "media type 用 application/problem+json(canonical 形态)",
36
+ "引用现行规范 RFC 9457(已取代 RFC 7807——Appendix D 自述相对 7807 的变更)"
37
+ ],
38
+ "x-research-anchors": {
39
+ "note": "【研究纠偏·差异表 §44 行】PRD 把 code/trace_id/field_errors 与五成员并列列出,但三者不是标准成员而是扩展成员(客户端 MUST ignore 未识别扩展语义如实落位);五成员逐字定义与 about:blank 注册类型为 RFC 9457 官方文本 2026-09-03 实抓",
40
+ "sources": [
41
+ {
42
+ "url": "https://www.rfc-editor.org/rfc/rfc9457.html",
43
+ "fetched": "2026-09-03"
44
+ },
45
+ {
46
+ "url": "doc/POMaster-vNext-PRD-v0.6.1-Engineering-Substrate-Archetype-Catalog.md §44",
47
+ "fetched": "2026-09-03"
48
+ },
49
+ {
50
+ "url": ".trellis/tasks/09-02-vnext-prd-v06-governed-substrate/research/backend-references.md 题 4",
51
+ "fetched": "2026-09-03"
52
+ }
53
+ ]
54
+ }
55
+ }
@@ -0,0 +1,68 @@
1
+ {
2
+ "id": "ARCHETYPE.API.PAGINATION",
3
+ "kind": "archetype",
4
+ "layer": "ARCHETYPE",
5
+ "title_zh": "API 分页原型",
6
+ "summary_zh": "分页三批准模式原型(PRD §45 逐字闭包):OFFSET/CURSOR/KEYSET 三选一;业界现行对照锚——Azure 服务端分页 value[]+nextLink、Stripe 对象 ID 游标、Relay Connections 不透明游标;Microsoft 原单一 REST 指南已废弃分拆(差异注记在场)。",
7
+ "semantic": {
8
+ "responsibility": "集合读取的分页契约单点:模式从批准闭包内选择、页大小有界、排序稳定、续页位形(has_more 或 next_link 二选一)固定",
9
+ "when_to_use": "任何列表/检索面的分页契约(与查询面原型配对);深分页代价需要预先声明时(OFFSET 深翻页代价、KEYSET 需稳定排序键、CURSOR 需不透明令牌语义)",
10
+ "when_not_to_use": "一次性全量小数据(可不分页但须显式声明上界);单体读取(API 资源原型 GET item 承载)"
11
+ },
12
+ "composition": {
13
+ "requires": [],
14
+ "optional": [],
15
+ "incompatible": []
16
+ },
17
+ "approved_modes": [
18
+ "OFFSET",
19
+ "CURSOR",
20
+ "KEYSET"
21
+ ],
22
+ "defaults": {
23
+ "page_size_bounded": true,
24
+ "stable_sort_required": true,
25
+ "continuation_field": "has_more 或 next_link 二选一的约定位",
26
+ "total_count": "不默认返回全量计数(Azure SHOULD NOT——全量计数可能代价高昂)"
27
+ },
28
+ "industry_anchors": {
29
+ "azure": "服务端分页:顶层 value[] + nextLink(绝对 URL、不透明续页令牌);最后一页不返回 nextLink 字段(禁 null 值形态);文档必须声明跨页可能跳过或重复;未支持查询参数必须报错",
30
+ "stripe": "cursor=对象 ID(按稳定序的 KEYSET——keyset-by-id 形态);响应形 data[]+has_more;参数 limit/starting_after/ending_before;默认新→旧排序",
31
+ "relay": "GraphQL Relay Connections:Connection 必含 edges 与 pageInfo;Edge 必含 node 与 cursor;前向 first/after、后向 last/before;cursor 是不透明字符串"
32
+ },
33
+ "deprecation_note": "Microsoft 原单一 REST Guidelines 已废弃分拆(2026-09-03 实抓:原文档头部声明 deprecated,分拆为 Azure 与 Graph 两份现行指南)——引用时改引 Azure REST API Guidelines 并注明原文档已废弃",
34
+ "mode_note": "nextLink = CURSOR 的不透明服务端形态(opaque continuation token)——三批准模式闭包容纳业界现行形态(Azure/Stripe/Relay 对照均落回三模式之一)",
35
+ "constraints": [
36
+ "模式只能从三批准模式闭包内选择(PRD §45:项目只能选择批准模式)",
37
+ "最后一页禁返回 null 值 nextLink(Azure DO NOT 逐字)"
38
+ ],
39
+ "x-research-anchors": {
40
+ "note": "【差异注记·差异表 §45 行】三模式与业界现行实践兼容;Microsoft 现行形态是 opaque nextLink(CURSOR 的服务端形态),且原单一 REST Guidelines 已 deprecated 分拆为 Azure/Graph 两份——注记随物料在场。Azure/Stripe/Relay 三处词形为官方文档 2026-09-03 实抓",
41
+ "sources": [
42
+ {
43
+ "url": "https://github.com/microsoft/api-guidelines/blob/vNext/Guidelines.md",
44
+ "fetched": "2026-09-03"
45
+ },
46
+ {
47
+ "url": "https://raw.githubusercontent.com/microsoft/api-guidelines/vNext/azure/Guidelines.md",
48
+ "fetched": "2026-09-03"
49
+ },
50
+ {
51
+ "url": "https://docs.stripe.com/pagination",
52
+ "fetched": "2026-09-03"
53
+ },
54
+ {
55
+ "url": "https://relay.dev/graphql/connections.htm",
56
+ "fetched": "2026-09-03"
57
+ },
58
+ {
59
+ "url": "doc/POMaster-vNext-PRD-v0.6.1-Engineering-Substrate-Archetype-Catalog.md §45",
60
+ "fetched": "2026-09-03"
61
+ },
62
+ {
63
+ "url": ".trellis/tasks/09-02-vnext-prd-v06-governed-substrate/research/backend-references.md 题 4",
64
+ "fetched": "2026-09-03"
65
+ }
66
+ ]
67
+ }
68
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "id": "ARCHETYPE.API.RESOURCE",
3
+ "kind": "archetype",
4
+ "layer": "ARCHETYPE",
5
+ "title_zh": "API 资源原型",
6
+ "summary_zh": "REST 风格标准端点五操作原型(PRD §43 逐字):集合读取/单体读取/新建/单体修改/移除;授权/错误/分页/校验/兼容性五绑定必须配置——绑定缺失即契约不完整。",
7
+ "semantic": {
8
+ "responsibility": "单体实体的 HTTP 面形状基线:五操作闭包 + 五项强制绑定(authorization/error/pagination/validation/compatibility)——绑定面显式声明而非隐式约定",
9
+ "when_to_use": "实体需要标准 HTTP 面时(与后端标准写读面原型配对:操作闭包与其五操作一一对应)",
10
+ "when_not_to_use": "动词语义的业务命令面(配幂等命令原型);事件订阅面(走发件箱事件原型的通道侧)"
11
+ },
12
+ "composition": {
13
+ "requires": [],
14
+ "optional": [],
15
+ "incompatible": []
16
+ },
17
+ "operations": [
18
+ "GET collection",
19
+ "GET item",
20
+ "POST item",
21
+ "PUT/PATCH item",
22
+ "DELETE item"
23
+ ],
24
+ "bindings": [
25
+ "authorization",
26
+ "error",
27
+ "pagination",
28
+ "validation",
29
+ "compatibility"
30
+ ],
31
+ "bindings_source": "PRD §43 逐字:必须绑定 authorization / error / pagination / validation / compatibility。",
32
+ "x-research-anchors": {
33
+ "note": "五操作与五绑定为 PRD §43 逐字(2026-09-03 对照 backend-references.md 题 4/差异表 §44-§45 行核实链);error 绑定与 API 错误契约原型互链、pagination 绑定与分页原型互链",
34
+ "sources": [
35
+ {
36
+ "url": "doc/POMaster-vNext-PRD-v0.6.1-Engineering-Substrate-Archetype-Catalog.md §43",
37
+ "fetched": "2026-09-03"
38
+ },
39
+ {
40
+ "url": ".trellis/tasks/09-02-vnext-prd-v06-governed-substrate/research/backend-references.md 题 4",
41
+ "fetched": "2026-09-03"
42
+ }
43
+ ]
44
+ }
45
+ }
@@ -0,0 +1,63 @@
1
+ {
2
+ "id": "ARCHETYPE.BACKEND.APPROVAL_WORKFLOW",
3
+ "kind": "archetype",
4
+ "layer": "ARCHETYPE",
5
+ "title_zh": "审批流原型",
6
+ "summary_zh": "标准审批状态机原型(PRD §31 逐字链):草稿经递交事件进入已递交态,审批通过转通过、驳回转驳回;可选撤回/重开转移与多级会签变体。",
7
+ "semantic": {
8
+ "responsibility": "审批单生命周期与合法转移的单点声明:四态两事件为标准链,扩展转移(撤回/重开)与多级会签变体为可选档——合法转移之外无隐式状态",
9
+ "when_to_use": "需要人审的单据类写流程(请假/报销/变更单等)——状态闭包显式登记,审批动作留痕进审计",
10
+ "when_not_to_use": "无审批环节的直写流程(走事务性写原型);自由流程编排诉求(本原型是闭包状态机,非流程引擎)"
11
+ },
12
+ "composition": {
13
+ "requires": [],
14
+ "optional": [],
15
+ "incompatible": []
16
+ },
17
+ "states": [
18
+ "DRAFT",
19
+ "SUBMITTED",
20
+ "APPROVED",
21
+ "REJECTED"
22
+ ],
23
+ "transitions": [
24
+ {
25
+ "from": "DRAFT",
26
+ "event": "SUBMIT",
27
+ "to": "SUBMITTED"
28
+ },
29
+ {
30
+ "from": "SUBMITTED",
31
+ "event": "APPROVE",
32
+ "to": "APPROVED"
33
+ },
34
+ {
35
+ "from": "SUBMITTED",
36
+ "event": "REJECT",
37
+ "to": "REJECTED"
38
+ }
39
+ ],
40
+ "optional": {
41
+ "transitions": [
42
+ "WITHDRAW",
43
+ "REOPEN"
44
+ ],
45
+ "variants": [
46
+ "MULTI_STAGE"
47
+ ],
48
+ "source": "PRD §31 逐字:可选:WITHDRAW / REOPEN / MULTI_STAGE。"
49
+ },
50
+ "x-research-anchors": {
51
+ "note": "四态两事件链与三可选位为 PRD §31 逐字(2026-09-03 对照 backend-references.md 差异表无冲突确认);状态机闭包词形与前端状态机原型(STATE_ARCHETYPE 族)同构,本原型是后端单据域实例化",
52
+ "sources": [
53
+ {
54
+ "url": "doc/POMaster-vNext-PRD-v0.6.1-Engineering-Substrate-Archetype-Catalog.md §31",
55
+ "fetched": "2026-09-03"
56
+ },
57
+ {
58
+ "url": ".trellis/tasks/09-02-vnext-prd-v06-governed-substrate/research/backend-references.md",
59
+ "fetched": "2026-09-03"
60
+ }
61
+ ]
62
+ }
63
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "id": "ARCHETYPE.BACKEND.AUDIT",
3
+ "kind": "archetype",
4
+ "layer": "ARCHETYPE",
5
+ "title_zh": "审计原型",
6
+ "summary_zh": "审计两档原型(PRD §41 逐字):基础档四字段(创建/更新的时间与操作人);严格档六要素(变更前后值/操作类型/理由/操作者/链路追踪)——档位由数据分级决定而非默认全量。",
7
+ "semantic": {
8
+ "responsibility": "『谁在何时对什么做了什么改动』的可回答性:基础档回答元数据层,严格档回答逐字段前后值与理由链——两档显式分档,禁默认全量严格审计",
9
+ "when_to_use": "任何标准写面的默认基础档(对应后端标准写读面物料的审计默认档);台账/财务/权限类数据升级严格档",
10
+ "when_not_to_use": "外部系统调用的遥测(走外部集成原型可观测位);只读检索面"
11
+ },
12
+ "composition": {
13
+ "requires": [],
14
+ "optional": [],
15
+ "incompatible": []
16
+ },
17
+ "basic_fields": [
18
+ "created_at",
19
+ "created_by",
20
+ "updated_at",
21
+ "updated_by"
22
+ ],
23
+ "strict_fields": [
24
+ "before",
25
+ "after",
26
+ "action",
27
+ "reason",
28
+ "actor",
29
+ "trace"
30
+ ],
31
+ "x-research-anchors": {
32
+ "note": "基础四字段与严格六要素为 PRD §41 逐字(2026-09-03 对照 backend-references.md 差异表无冲突确认);与主数据表原型的审计四字段(批次 1 recommended_fields)同源",
33
+ "sources": [
34
+ {
35
+ "url": "doc/POMaster-vNext-PRD-v0.6.1-Engineering-Substrate-Archetype-Catalog.md §41",
36
+ "fetched": "2026-09-03"
37
+ },
38
+ {
39
+ "url": ".trellis/tasks/09-02-vnext-prd-v06-governed-substrate/research/backend-references.md",
40
+ "fetched": "2026-09-03"
41
+ }
42
+ ]
43
+ }
44
+ }
@@ -0,0 +1,56 @@
1
+ {
2
+ "id": "ARCHETYPE.BACKEND.CRUD_RESOURCE",
3
+ "kind": "archetype",
4
+ "layer": "ARCHETYPE",
5
+ "title_zh": "标准企业 CRUD 资源",
6
+ "summary_zh": "Create/Read/Update/Delete/List 五操作的标准资源原型:分页/校验/审计/乐观锁为默认档,软删/批量/导入/导出为可选档;错误契约与授权为强制约束。",
7
+ "semantic": {
8
+ "responsibility": "单实体的标准写面与单点读面(get)",
9
+ "when_to_use": "实体需要标准维护 API 时;业务决定字段/权限/删除策略(v0.6.1 §70)",
10
+ "when_not_to_use": "纯查询报表资源(配 QUERY_RESOURCE);事件驱动写路径"
11
+ },
12
+ "composition": {
13
+ "requires": [],
14
+ "optional": [
15
+ "ARCHETYPE.BACKEND.QUERY_RESOURCE",
16
+ "DATA_ARCHETYPE.MASTER_DATA"
17
+ ],
18
+ "incompatible": []
19
+ },
20
+ "operations": [
21
+ "create",
22
+ "get",
23
+ "list",
24
+ "update",
25
+ "delete"
26
+ ],
27
+ "defaults": {
28
+ "pagination": true,
29
+ "validation": true,
30
+ "audit": true,
31
+ "optimistic_lock": true
32
+ },
33
+ "optional_capabilities": {
34
+ "soft_delete": null,
35
+ "batch": null,
36
+ "import": null,
37
+ "export": null
38
+ },
39
+ "constraints": [
40
+ "api_error_contract",
41
+ "authorization_required"
42
+ ],
43
+ "verification": [
44
+ "unit",
45
+ "contract",
46
+ "persistence"
47
+ ],
48
+ "x-research-anchors": {
49
+ "sources": [
50
+ {
51
+ "url": "doc/POMaster-vNext-PRD-v0.6.1-Engineering-Substrate-Archetype-Catalog.md §26-§27/§83",
52
+ "fetched": "2026-09-02"
53
+ }
54
+ ]
55
+ }
56
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "id": "ARCHETYPE.BACKEND.EXPORT",
3
+ "kind": "archetype",
4
+ "layer": "ARCHETYPE",
5
+ "title_zh": "导出原型",
6
+ "summary_zh": "数据导出双档原型(PRD §33 逐字):小量同步直出(SYNC_SMALL);大量异步三段(ASYNC_LARGE)——请求立任务、产物落对象存储、下载凭据交付。",
7
+ "semantic": {
8
+ "responsibility": "导出的量级分档与产物生命周期单点化:异步档把长耗时产物移出请求生命周期,凭据化下载替代大文件直传",
9
+ "when_to_use": "列表/报表数据导出文件——按量级选档(小量同步、大量异步),异步档任务态可查询可重试",
10
+ "when_not_to_use": "系统间数据同步(走外部集成/发件箱事件原型);实时流式取数(走查询面)"
11
+ },
12
+ "composition": {
13
+ "requires": [],
14
+ "optional": [],
15
+ "incompatible": []
16
+ },
17
+ "modes": [
18
+ "SYNC_SMALL",
19
+ "ASYNC_LARGE"
20
+ ],
21
+ "async_chain": [
22
+ "Request",
23
+ "Job",
24
+ "Object Storage",
25
+ "Download Token"
26
+ ],
27
+ "x-research-anchors": {
28
+ "note": "双档词形与异步四段链为 PRD §33 逐字(2026-09-03 对照 backend-references.md 差异表无冲突确认);产物落对象存储与文件二进制不入关系库字段同向(§40 File Resource 原型边界)",
29
+ "sources": [
30
+ {
31
+ "url": "doc/POMaster-vNext-PRD-v0.6.1-Engineering-Substrate-Archetype-Catalog.md §33",
32
+ "fetched": "2026-09-03"
33
+ },
34
+ {
35
+ "url": ".trellis/tasks/09-02-vnext-prd-v06-governed-substrate/research/backend-references.md",
36
+ "fetched": "2026-09-03"
37
+ }
38
+ ]
39
+ }
40
+ }
@@ -0,0 +1,89 @@
1
+ {
2
+ "id": "ARCHETYPE.BACKEND.EXTERNAL_INTEGRATION",
3
+ "kind": "archetype",
4
+ "layer": "ARCHETYPE",
5
+ "title_zh": "外部集成原型",
6
+ "summary_zh": "外部系统调用八要素原型(PRD §38 逐字):超时/重试/断路器/限流感知/鉴权/错误映射/可观测/回退;韧性默认档锚 Resilience4j 2.4.0 六模块现行文档——限流以『周期时长+每周期许可数』二元组显式给定(库默认周期是纳秒级形参,禁照抄)。",
7
+ "semantic": {
8
+ "responsibility": "把对外部系统每次调用的失效模式显式化:超时有时限、重试有上界、故障有熔断、过载有限流、失败有映射与回退——每一项都是显式配置而非默认假设",
9
+ "when_to_use": "同步/异步调用外部系统(第三方服务/跨域内部服务)的集成点——每个远端被调方一个独立韧性实例(官方 Golden Rule:MUST NOT share)",
10
+ "when_not_to_use": "进程内函数调用;库与事件最终一致的可靠外发(走发件箱事件原型);用户交互内的本域写路径(走事务性写原型)"
11
+ },
12
+ "composition": {
13
+ "requires": [],
14
+ "optional": [],
15
+ "incompatible": []
16
+ },
17
+ "eight_elements": {
18
+ "timeout": {
19
+ "timeout_duration": "1s",
20
+ "cancel_running_future": true
21
+ },
22
+ "retry": {
23
+ "max_attempts": 3,
24
+ "wait_duration": "500ms",
25
+ "backoff": "fixed(指数退避为可选位,需显式启用退避与抖动配置)"
26
+ },
27
+ "circuit_breaker": {
28
+ "failure_rate_threshold": "50%",
29
+ "sliding_window": "COUNT_BASED 100 次",
30
+ "minimum_number_of_calls": 100,
31
+ "wait_duration_in_open_state": "60s",
32
+ "permitted_number_of_calls_in_half_open_state": 10
33
+ },
34
+ "bulkhead": {
35
+ "max_concurrent_calls": 25,
36
+ "max_wait_duration": "0(快失败默认)"
37
+ },
38
+ "rate_limit_awareness": {
39
+ "form": "period_and_permits_pair——『周期时长 + 每周期许可数』二元组必须显式给定",
40
+ "note": "库默认周期是纳秒级形参(词形误导),禁照抄默认值;且此限流是客户端本侧限速(许可桶),不是对端服务保护"
41
+ },
42
+ "auth": "凭据注入与刷新单点",
43
+ "error_mapping": "外部错误到本域错误分型的单点映射链",
44
+ "observability": "每次调用埋点(时延/结果/重试次数/熔断态)",
45
+ "fallback": "降级回退(recover 语义承接)"
46
+ },
47
+ "constraints": [
48
+ "每个远端服务一个独立韧性实例(官方 Golden Rule 逐字:\"Create a unique instance (with a unique ID) for each protected remote service or backend you communicate with.\"——CircuitBreaker 属实例感知模式 MUST NOT share)",
49
+ "限流语义是客户端本侧限速,非对端服务保护"
50
+ ],
51
+ "module_map_note": "Resilience4j 2.4.0 六核心模块对照:circuitbreaker/ratelimiter/bulkhead/retry/timelimiter/cache(另有 hedge 与 spring-boot3/spring-boot4 等适配模块);2.4.0(2026-03-14)起基线 JDK 17→21",
52
+ "x-research-anchors": {
53
+ "note": "六模块清单与五模块全部默认值为官方 README/docs 2026-09-03 逐字实抓;RateLimiter 默认值按研究裁定不照抄(纳秒级周期形参误导)——改写为显式二元组要求;版本 2.4.0 与 JDK 21 基线取自 repo1.maven.org 官方 metadata 与 release notes",
54
+ "sources": [
55
+ {
56
+ "url": "https://github.com/resilience4j/resilience4j",
57
+ "fetched": "2026-09-03"
58
+ },
59
+ {
60
+ "url": "https://resilience4j.readme.io/docs/circuitbreaker",
61
+ "fetched": "2026-09-03"
62
+ },
63
+ {
64
+ "url": "https://resilience4j.readme.io/docs/retry",
65
+ "fetched": "2026-09-03"
66
+ },
67
+ {
68
+ "url": "https://resilience4j.readme.io/docs/ratelimiter",
69
+ "fetched": "2026-09-03"
70
+ },
71
+ {
72
+ "url": "https://resilience4j.readme.io/docs/bulkhead",
73
+ "fetched": "2026-09-03"
74
+ },
75
+ {
76
+ "url": "https://resilience4j.readme.io/docs/timeout",
77
+ "fetched": "2026-09-03"
78
+ },
79
+ {
80
+ "url": "https://repo1.maven.org/maven2/io/github/resilience4j/resilience4j-bom/maven-metadata.xml",
81
+ "fetched": "2026-09-03"
82
+ },
83
+ {
84
+ "url": ".trellis/tasks/09-02-vnext-prd-v06-governed-substrate/research/backend-references.md 题 6a",
85
+ "fetched": "2026-09-03"
86
+ }
87
+ ]
88
+ }
89
+ }