mirror of
https://github.com/tradecatlabs/vibe-coding-cn.git
synced 2026-11-02 12:06:14 +00:00
docs: gongfa - register input-state-transform-output framework (#240)
* docs: gongfa - add cross-domain framework source * docs: gongfa - register cross-domain input-state-transform-output framework
This commit is contained in:
@@ -20,7 +20,8 @@
|
||||
- 载荷`documents`以历史路径为身份。保存原字节、文件模式、SHA、ID、版本、选择器、来源修订、原分类、历史意见及排除项;不得全局改写历史路径。
|
||||
- `locations`、`live_sources`、`projections`分别描述当前位置、当前实现摘要与现有引用;`retired_submodules`明确标出仍保留冻结原文和初审、但已从当前树移除的固定子模块。当前实现绑定不替代原SHA、固定来源、选区或原初审,不自动表示新实现已受审。
|
||||
- 原始登记仍按载荷内Schema和检查器维护。修改原文后须更新其真实摘要;历史来源、人工初评和正式评级分开,不自动合并语义身份、恢复排除或赋级。2026-10-19按用户指令将来源快照中的331条记录逐条登记;用户曾确认该批次当时的说明正式通过审阅。此确认只对当时版本成立,后续修改不自动继承;条目当前状态须按实际修订记录标明。该确认不改写历史来源,也不推导书目/许可、实际效果或正式评级状态;新增条目仍须逐条登记。
|
||||
- 当前411条均为登记对象,其中331条是上述来源迁入;总表411条,409条保留前瞻初评、2条保留“暂不可判”,正式评级与效果记录均为0。历史的80条既有登记与331条来源快照记录分布,以及79/410迁移基线只表示当时状态。用户新增Lambda演算并指定天级上品,对应`tian-advanced`;总表及首页学习入口将其列在拼好码之前,原始文档、原文文集与既有初评不变。
|
||||
- 当前412条均为登记对象,其中331条是上述来源迁入;总表412条,410条保留前瞻初评、2条保留“暂不可判”,正式评级与效果记录均为0。历史的80条既有登记与331条来源快照记录分布,以及79/410迁移基线只表示当时状态。用户新增Lambda演算并指定天级上品,对应`tian-advanced`;总表及首页学习入口将其列在拼好码之前,原始文档、原文文集与既有初评不变。
|
||||
- 新增`gongfa-input-state-transform-output-cross-domain`独立登记,按用户要求暂拟天阶初级;`gongfa-input-state-transform-separation`另追加天阶中级暂定意见并保留玄阶历史批次;`gongfa-state-classification`身份与玄阶中级意见不变。三者主题相邻但身份及范围不合并;正式评级和效果记录仍为0。
|
||||
- 新整理正文可以直接加入JSON载荷的逻辑文档,不重新创建旧物理目录。先提交首发正文,再以该真实Git修订及JSON载荷选区冻结来源;不能用一个尚不存在正文的基线冒充来源版本。
|
||||
- 法器73个来源选区、10项来源限定实现、13条本地记录、9条排除、12项依赖对象、8类依赖、158条关联资源和30项重要性赋级各有分母,不能相加为独立产品数。
|
||||
- 用户确认的说明审阅不替代原著/HTML来源核验、书目/许可、运行、效果与正式评级;这些状态各自维护,后续修订也不自动继承旧确认。
|
||||
|
||||
@@ -3,18 +3,18 @@
|
||||
|
||||
## 字多不看
|
||||
|
||||
- 共**411条内容记录**;已登记411条,待登记0条,未登记来源条目0条。不是独立功法去重后的总数。
|
||||
- 原前瞻初评409条,暂不可判2条;不是正式效果评级,亦不把缺测默认补成黄阶。
|
||||
- 共**412条内容记录**;已登记412条,待登记0条,未登记来源条目0条。不是独立功法去重后的总数。
|
||||
- 原前瞻初评410条,暂不可判2条;不是正式效果评级,亦不把缺测默认补成黄阶。
|
||||
- 331条来源迁入说明曾由用户确认正式通过审阅;后续内容更新不自动继承该确认。历史来源快照保留原样,书目/许可核验、实际效果与正式评级仍分别维护。
|
||||
- [data.json](data.json)是唯一原始数据源,原始文档、历史来源选区、意见、来源和附件均保留其中。
|
||||
|
||||
输入绑定:`6aab15530d4ceac9d1df29cbb235318eeb549726dab7c6c123c4dc3912c07bdd`。
|
||||
输入绑定:`fbdb41c7aeb69ea1e378ffa1e47c18695f901228b2cf2d4299b4bc7ad619540c`。
|
||||
|
||||
## 快速导航
|
||||
|
||||
- [天阶(2条)](tian.md)
|
||||
- [天阶(4条)](tian.md)
|
||||
- [地阶(76条)](di.md)
|
||||
- [玄阶(310条)](xuan.md)
|
||||
- [玄阶(309条)](xuan.md)
|
||||
- [黄阶(21条)](huang.md)
|
||||
- [未明确品级(2条;不归属任何阶)](huang.md#未明确品级不归属黄阶)
|
||||
- [全部记录导航](#全部记录)
|
||||
@@ -1906,6 +1906,9 @@
|
||||
- [可信度](#doc-geo-seo-checklist-可信度)
|
||||
- [内容工程](#doc-geo-seo-checklist-内容工程)
|
||||
- [推荐回答](#doc-geo-seo-checklist-推荐回答)
|
||||
- [cross-domain-input-state-transform-output](#doc-cross-domain-input-state-transform-output)
|
||||
- [cross-domain-input-state-transform-output](#doc-cross-domain-input-state-transform-output-cross-domain-input-state-transform-output)
|
||||
- [输入状态变换输出跨领域框架](#doc-cross-domain-input-state-transform-output-输入状态变换输出跨领域框架)
|
||||
|
||||
</details>
|
||||
|
||||
@@ -1923,6 +1926,10 @@
|
||||
- [Lambda 演算](tian.md#v0-registry-gongfa-lambda-calculus-r1-093b4490) — 天阶高级
|
||||
<a id="v0-registry-gongfa-glue-coding-r1-22977803"></a>
|
||||
- [拼好码](tian.md#v0-registry-gongfa-glue-coding-r1-22977803) — 天阶高级
|
||||
<a id="v0-registry-gongfa-input-state-transform-separation-r1-2443d5c8"></a>
|
||||
- [输入输出与状态变换分离](tian.md#v0-registry-gongfa-input-state-transform-separation-r1-2443d5c8) — 天阶中级
|
||||
<a id="v0-registry-gongfa-input-state-transform-output-cross-domain-r1-4b6a54ec"></a>
|
||||
- [输入—状态—变换—输出跨领域框架](tian.md#v0-registry-gongfa-input-state-transform-output-cross-domain-r1-4b6a54ec) — 天阶初级
|
||||
|
||||
### 地阶
|
||||
|
||||
@@ -2421,8 +2428,6 @@
|
||||
- [最小惊讶原则(registry:gongfa-least-surprise@r1)](xuan.md#v0-registry-gongfa-least-surprise-r1-fd734c68) — 玄阶中级
|
||||
<a id="v0-registry-gongfa-decision-rationale-documentation-r1-8188a83c"></a>
|
||||
- [文档记录设计理由](xuan.md#v0-registry-gongfa-decision-rationale-documentation-r1-8188a83c) — 玄阶中级
|
||||
<a id="v0-registry-gongfa-input-state-transform-separation-r1-2443d5c8"></a>
|
||||
- [输入输出与状态变换分离](xuan.md#v0-registry-gongfa-input-state-transform-separation-r1-2443d5c8) — 玄阶中级
|
||||
<a id="v0-registry-gongfa-dry-reuse-r1-5af5b36d"></a>
|
||||
- [DRY 逻辑复用准则](xuan.md#v0-registry-gongfa-dry-reuse-r1-5af5b36d) — 玄阶中级
|
||||
<a id="v0-registry-gongfa-candidate-html211-a001-8e7d97a738-r1-e931f6bf"></a>
|
||||
@@ -2836,6 +2841,8 @@
|
||||
- `.github/docs/gongfa/development-experience.md`:原始字节与摘要见[data.json](data.json)
|
||||
<a id="doc-geo-seo-checklist"></a>
|
||||
- `.github/docs/gongfa/geo-seo-checklist.md`:原始字节与摘要见[data.json](data.json)
|
||||
<a id="doc-cross-domain-input-state-transform-output"></a>
|
||||
- `.github/docs/gongfa/cross-domain-input-state-transform-output.md`:原始字节与摘要见[data.json](data.json)
|
||||
|
||||
<!-- 兼容已发布阅读视图中的章节锚点 -->
|
||||
<a id="doc-cultivation-ontology-taxonomy-修仙领域统一本体与分类设计v4-bfo-草案"></a>
|
||||
@@ -4679,6 +4686,8 @@
|
||||
<a id="doc-geo-seo-checklist-可信度"></a>
|
||||
<a id="doc-geo-seo-checklist-内容工程"></a>
|
||||
<a id="doc-geo-seo-checklist-推荐回答"></a>
|
||||
<a id="doc-cross-domain-input-state-transform-output-cross-domain-input-state-transform-output"></a>
|
||||
<a id="doc-cross-domain-input-state-transform-output-输入状态变换输出跨领域框架"></a>
|
||||
## 品级词表
|
||||
|
||||
| 值标识 | 名称 | 大阶 | 细级 | 次序 |
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,13 +1,15 @@
|
||||
<!-- generated: sync-gongfa-catalog.py -->
|
||||
# 功法总表:天阶
|
||||
|
||||
本页包含2条天阶记录。品级沿用已有前瞻初评,不是正式效果评级。
|
||||
本页包含4条天阶记录。品级沿用已有前瞻初评,不是正式效果评级。
|
||||
- [返回总索引](README.md);其他阶:[天阶](tian.md)、[地阶](di.md)、[玄阶](xuan.md)、[黄阶](huang.md)。
|
||||
|
||||
## 天阶记录
|
||||
|
||||
- [Lambda 演算](#v0-registry-gongfa-lambda-calculus-r1-093b4490)
|
||||
- [拼好码](#v0-registry-gongfa-glue-coding-r1-22977803)
|
||||
- [输入输出与状态变换分离](#v0-registry-gongfa-input-state-transform-separation-r1-2443d5c8)
|
||||
- [输入—状态—变换—输出跨领域框架](#v0-registry-gongfa-input-state-transform-output-cross-domain-r1-4b6a54ec)
|
||||
|
||||
<a id="v0-registry-gongfa-lambda-calculus-r1-093b4490"></a>
|
||||
### Lambda 演算
|
||||
@@ -56,3 +58,51 @@
|
||||
| 16 | 结论 | 结论(限第15项条件):编辑归纳:先确认需求与约束,再选择可验证、可隔离的能力;让自研集中在不可替代的业务差异,并保留验证、替换和回滚路径。遇到成熟方案不满足关键约束时,复用优先规则允许有理由地偏离。<br>非效果、许可或正式评级证明。 |
|
||||
| 17 | 连接规则 | 推理桥梁:证据命题:冻结来源将拼好码描述为需求→能力评估→边界适配/编排→测试与替换/回滚,并明确关键约束可能使复用失效;定位见第18项。推理根据:通用能力若经评估满足关键约束,可由成熟组件承担;薄适配层只处理项目差异。若约束不满足,复用的前提消失,不能推出应继续复用。由于第14项的选择规则正以需求和约束为筛选条件,并把验证、替换与偏离协议作为决策的一部分,因此第16项所述复用优先、差异局部化且保留回滚的条件性结论。成立边界:第15项限定为“来源的默认选择以成熟方案能可靠满足关键约束,且成本、风险、复杂度可接受为前提;成熟度需看维护、文档、测试、安全更新、真实使用、兼容、观测及替换能力。供应链不可观测、约束不满足或集成代价过高时不得盲目复用”;不据此外推未观察效果、许可或正式评级。 |
|
||||
| 18 | 依据 | 依据:来源ID `tradecatlabs-vibe-coding-methodology-page`;路径 `.github/docs/gongfa/glue-coding.md`;SHA-256 `3c537bbdb5dc4027d3c03b487193aa5f896e645ad57c734e108a677393cbb105`;第7项载完整出处;对应第11项,边界按第15项。快照/静态仅支持记录,不代表独立核验或效果/许可/评级证据。 |
|
||||
|
||||
<a id="v0-registry-gongfa-input-state-transform-separation-r1-2443d5c8"></a>
|
||||
### 输入输出与状态变换分离
|
||||
|
||||
| 序号 | 说明项 | 内容 |
|
||||
|:---:|:---|:---|
|
||||
| 1 | 工具的名称 | 输入输出与状态变换分离 |
|
||||
| 2 | 是什么 | 现有登记摘要:区分消费端、生产端、状态和变换,独立管理输入处理输出环节。 |
|
||||
| 3 | 为什么 | 采用理由(编辑用途归纳):面对“系统行为怎样按输入、输出、状态和处理逻辑划分”,本条以“区分消费端、生产端、状态和变换,独立管理输入处理输出环节”提供理解或分析视角,可服务于围绕登记摘要所述主题形成分析依据。登记未记录作者历史采用动机;这里不声称效果已验证。 |
|
||||
| 4 | 怎么做 | 登记机制摘要(编辑归纳)给出的操作要点是“消费端接收外部数据,生产端生成结果,状态存储系统信息,变换处理状态;输入、处理、输出独立管理”;固定选区未列成可逐步复现的完整流程,不能据此补造未记录步骤或效果。 |
|
||||
| 5 | 扩展 | 固定登记来源选区的核心内容是“区分消费端、生产端、状态和变换,独立管理输入处理输出环节”;未提出可独立确认的变体、推导或组合契约。关联线索不自动构成本条扩展,本说明不补造新内容。 |
|
||||
| 6 | 关联信息 | 稳定ID:gongfa-input-state-transform-separation;内容版本:r1;本体类型:method-specification;身份状态:已登记。<br>历史意见保留:批次`gongfa-author-repo-expansion-20261007`曾列玄阶中级、provisional、置信度medium,时间2026-10-07T09:20:36.251520Z;历史正文、来源和理由不改写。<br>当前暂定意见:批次`gongfa-user-input-state-transform-separation-tian-20261024`将其拟列天阶中级、provisional;用户明确指定输入、状态、变换与输出相关功法按天阶处理,细级沿用原中级。该条不扩展原限定范围,也不是正式效果评级。<br>与新登记的`gongfa-input-state-transform-output-cross-domain`主题相邻但身份不同;与`gongfa-state-classification`的有限状态演化分类也不合并。 |
|
||||
| 7 | 出处 | 固定来源记录与原文定位(正文仍保存在对应唯一登记源或冻结原始载荷中;此处列源记录、选择器与SHA,不改写原文):<br>{<br> "source_record": {<br> "id": "repo-development-experience-81fc7ae",<br> "kind": "repository_document",<br> "path": ".github/docs/gongfa/development-experience.md",<br> "git_revision": "81fc7ae599da7b7b0ce02ea0b069a2c88d288a4e",<br> "captured_at": "2026-10-07T09:20:36.247888Z",<br> "snapshot_path": ".github/metadata/gongfa/source-development-experience-81fc7ae.txt",<br> "snapshot_sha256": "d1437549b3232085d678b74793c6430903ba72913679c0712cd1b9773b2994f0",<br> "text_normalization": "markdown-section-trim-v1",<br> "included_anchors": [<br> "reference-engineering-practice-1-变量名维护方案",<br> "reference-engineering-practice-33-消费端-生产端-状态变量-变换函数",<br> "reference-engineering-practice-34-并发concurrency",<br> "reference-engineering-practice-54-dry-原则不要重复"<br> ]<br> },<br> "selection": {<br> "source_id": "repo-development-experience-81fc7ae",<br> "heading_id": "reference-engineering-practice-33-消费端-生产端-状态变量-变换函数",<br> "selection": "markdown-section",<br> "stop_before": null<br> },<br> "text_sha256": "5ecabc148817ed14ae49cafac8bfda07428578a9c95dd4262971b8bb3ee9a7cb",<br> "source_note": "下列原文按当前登记载荷保留;路径、版本与选区是登记记录,不等于独立书目或原著核验。",<br> "original_text_sha256": "5ecabc148817ed14ae49cafac8bfda07428578a9c95dd4262971b8bb3ee9a7cb",<br> "original_text_storage": ".github/metadata/gongfa/registry.json中的对应稳定ID与内容版本"<br>} |
|
||||
| 8 | 相关图书 | 本条绑定的来源记录为“repo-development-experience-81fc7ae”(类型:repository_document;定位:.github/docs/gongfa/development-experience.md#reference-engineering-practice-33-消费端-生产端-状态变量-变换函数)。登记未提供与本条直接对应、可核对作者/版本/章节的图书书目;不把项目文档或方法名称冒充图书。 |
|
||||
| 9 | 它要解决什么问题? | 系统行为怎样按输入、输出、状态和处理逻辑划分。 |
|
||||
| 10 | 为什么这样设计? | 固定来源选区未单列作者历史设计动机。登记选区说明限定为“只收此独立限定节,不借同篇其他内容补字段;来源要求不成为本次执行或发布授权”;可见结构以“消费端接收外部数据,生产端生成结果,状态存储系统信息,变换处理状态;输入、处理、输出独立管理”说明主题“区分消费端、生产端、状态和变换,独立管理输入处理输出环节”与问题“系统行为怎样按输入、输出、状态和处理逻辑划分”的关系;这是编辑解释,不是作者意图陈述。 |
|
||||
| 11 | 内部如何实现? | 消费端接收外部数据,生产端生成结果,状态存储系统信息,变换处理状态;输入、处理、输出独立管理。 |
|
||||
| 12 | 付出了什么代价? | 定性应用代价(编辑推断):按固定选区的“消费端接收外部数据,生产端生成结果,状态存储系统信息,变换处理状态;输入、处理、输出独立管理”操作,会增加分析、记录或复核工作;应用范围改变时还须重核前提。固定选区及登记未提供量化成本或运行测量。现有材料没有时间、资源或效能数值,不据此声称成本高低。 |
|
||||
| 13 | 比较不同技术与方法。 | 固定来源与登记摘要未提供针对“系统行为怎样按输入、输出、状态和处理逻辑划分”的同目标替代方案及可比结果。现阶段只能说明本条关注“区分消费端、生产端、状态和变换,独立管理输入处理输出环节”;不编造比较对象,也不作效果或成本排名。 |
|
||||
| 14 | 提炼共同规律。 | 单条来源不足以证明跨对象共同规律。由本条可作的编辑性局部归纳是:把登记摘要“区分消费端、生产端、状态和变换,独立管理输入处理输出环节”仅用于其所述主题“系统行为怎样按输入、输出、状态和处理逻辑划分”,不外推到未记录场景;这不是跨方法定律或效果保证。 |
|
||||
| 15 | 明确这些规律成立的前提与适用条件。 | 适用条件:登记及固定选区未明确列出“输入输出与状态变换分离”的进一步适用条件。边界:登记及固定选区未记录“输入输出与状态变换分离”的具体限制或反例。选区说明另限定:“只收此独立限定节,不借同篇其他内容补字段;来源要求不成为本次执行或发布授权”(登记编者说明,非原文)。材料未提供该条的独立效果验证。以上仅界定当前单条结论的适用范围,不证明跨场景普遍性、性能提升或业务正确性。 |
|
||||
| 16 | 结论 | 结论(限第15项条件):单条来源不足以证明跨对象共同规律。由本条可作的编辑性局部归纳是:把登记摘要“区分消费端、生产端、状态和变换,独立管理输入处理输出环节”仅用于其所述主题“系统行为怎样按输入、输出、状态和处理逻辑划分”,不外推到未记录场景;这不是跨方法定律或效果保证。<br>非效果、许可或正式评级证明。 |
|
||||
| 17 | 连接规则 | 推理桥梁:证据命题:第18项所定位的单一来源记载了第11项中的步骤/机制“消费端接收外部数据,生产端生成结果,状态存储系统信息,变换处理状态;输入、处理、输出独立管理”。推理根据:同一来源内对步骤的忠实概括可以支持本条的局部编辑性归纳;但单一来源或个案不提供跨对象普遍性的比较样本。由于第14项把归纳明确限定在该来源描述的步骤与情境,而没有主张跨对象共性,因此第16项中“把登记摘要“区分消费端、生产端、状态和变换,独立管理输入处理输出环节”仅用于其所述主题“系统行为怎样按输入、输出、状态和处理逻辑划分”,不外推到未记录场景”这一来源内局部归纳。成立边界:以第15项列出的适用条件、限制及其待核状态为准;不据此外推未观察效果、许可或正式评级。 |
|
||||
| 18 | 依据 | 依据:来源ID `repo-development-experience-81fc7ae`;路径 `.github/docs/gongfa/development-experience.md`;快照SHA-256 `d1437549b3232085d678b74793c6430903ba72913679c0712cd1b9773b2994f0`;修订 `81fc7ae599da7b7b0ce02ea0b069a2c88d288a4e`;第7项载完整出处;对应第11项,边界按第15项。快照/静态仅支持记录,不代表独立核验或效果/许可/评级证据。 |
|
||||
|
||||
<a id="v0-registry-gongfa-input-state-transform-output-cross-domain-r1-4b6a54ec"></a>
|
||||
### 输入—状态—变换—输出跨领域框架
|
||||
|
||||
| 序号 | 说明项 | 内容 |
|
||||
|:---:|:---|:---|
|
||||
| 1 | 工具的名称 | 输入—状态—变换—输出跨领域框架 |
|
||||
| 2 | 是什么 | 用输入、相关状态、变换和输出四种功能角色描述有边界的问题、系统或过程,并显式记录真实的连接关系;它是分析框架,不是执行器。 |
|
||||
| 3 | 为什么 | 跨领域内容的术语和局部模型不同,输入来源、持续状态、改变状态的动作及可观察产物容易混合;分开标出这些位置可为讨论提供共同的结构化表述。此为设计理由,不是已测效果。 |
|
||||
| 4 | 怎么做 | 先限定分析单元和边界;列出输入来源、相关状态、变换及输出;记录实际的数据、控制或时间关系及可观察证据;未知项标待核。只有关系真实相接时才连接输出与下一单元输入。允许反馈、循环和并发,不按固定流水线执行。 |
|
||||
| 5 | 扩展 | 可在软件、数据处理、业务流程或协作过程等场景中试作角色映射;这些是可能的使用情境,不代表迁移效果已验证。状态所有权、事务、并发、时序、权限等仍须用相应领域模型补充。 |
|
||||
| 6 | 关联信息 | 稳定ID:gongfa-input-state-transform-output-cross-domain;内容版本:r1;本体类型:method-specification;身份状态:已登记。<br>与`gongfa-input-state-transform-separation`相关但不合并:该条依据既有单节划分消费端、生产端、状态、变换及输入处理输出;本条为独立整理的跨领域结构描述。<br>与`gongfa-state-classification`不同:后者分类始态、暂态、终态并分析状态转移;本条描述输入、状态、变换和输出的功能角色。<br>初评:用户明确指定天阶方向,细级未指定,按最低子级暂拟天阶初级(tian-initial);意见状态provisional,置信度low,不是正式效果评级。 |
|
||||
| 7 | 出处 | 来源ID:repo-cross-domain-framework-20261024;逻辑路径:.github/docs/gongfa/cross-domain-input-state-transform-output.md;来源修订:3df273795b6a0c0d395d4da05cb0029e59878dc9;冻结快照SHA-256:9c061a02fc6646f2dae3ac15c104173d7eae4a970c1780af0c9c31e85da55c1f;定位:cross-domain-input-state-transform-output,独立Markdown章节。该来源是本项目根据用户提出方向整理的定义,不是外部原著或实证报告。 |
|
||||
| 8 | 相关图书 | 待核:本条为本项目整理的定义性框架,没有在此登记具体图书;不据此推定外部书目或许可。 |
|
||||
| 9 | 它要解决什么问题? | 如何在不同领域的描述中显式分开分析单元的输入、相关状态、变换和输出,并指出它们之间真实存在的依赖,而不把未知关系补成事实。 |
|
||||
| 10 | 为什么这样设计? | 按功能角色建立可复述的共同结构,同时保留各领域自己的术语和约束;加入边界、关系和待核标记,避免把名称相似误当成语义相同。该理由是本项目的编辑性设计说明,不冒充用户原话或外部作者动机。 |
|
||||
| 11 | 内部如何实现? | 依次确定边界、识别四类角色、记录真实的数据/控制/时间边、绑定可观察依据;下游连接仅在实际依赖存在时建立。该过程生成描述,不执行变换或替代领域内运行机制。 |
|
||||
| 12 | 付出了什么代价? | 增加边界澄清和角色映射的记录成本;多角色重叠、不可观察状态和时间关系可能需要领域特定的细化。本条没有成本或效果测量。 |
|
||||
| 13 | 比较不同技术与方法。 | 既有“输入输出与状态变换分离”按固定来源限定消费端、生产端、状态和变换,范围较窄;本框架另行提出跨领域的角色及关系描述,不改写该来源。`状态分类工具`分析始态/暂态/终态及状态转移,回答的问题不同。它们有主题交集,不是同一身份,也没有可比效果数据。 |
|
||||
| 14 | 提炼共同规律。 | 当前依据是本项目单篇定义,不足以推出跨对象的共同规律或实际收益;只能概括本框架本身要求显式标边界、角色和真实关系。 |
|
||||
| 15 | 明确这些规律成立的前提与适用条件。 | 适用前提:分析单元边界可表达,关键角色可观察或能标待核。边界:四类角色不保证互斥、完备或一一映射;不假设纯函数、确定性或线性执行;不解决状态所有权、事务、并发、时序、因果、权限和正确性。与状态分类工具分立;跨领域迁移效果待核。 |
|
||||
| 16 | 结论 | 当前依据是本项目单篇定义,不足以推出跨对象的共同规律或实际收益;只能概括本框架本身要求显式标边界、角色和真实关系。在分析边界可表达且关键角色可识别或明确标为待核时,本条提供一种将分析单元描述为输入、相关状态、变换和输出并标注真实依赖的框架;本结论只描述该项目定义,不主张效果或普遍迁移已验证。 |
|
||||
| 17 | 连接规则 | 推理桥梁:证据命题:第7项记录的冻结章节明确将该框架定义为输入、状态、变换、输出四类功能角色,并要求限定边界、记录真实关系、只在关系实际相接时连接下游输入。主张:第16项所述本条定义了这套结构化描述框架。推理根据:由于第18项定位的是本项目的定义性正文而非外部应用样本,它能够支持项目确实提出了这些角色及关系规则这一局部主张;因此,该章节可支持对框架定义本身的说明,但不能证明跨领域效果。成立边界:适用前提:分析单元边界可表达,关键角色可观察或能标待核。边界:四类角色不保证互斥、完备或一一映射;不假设纯函数、确定性或线性执行;不解决状态所有权、事务、并发、时序、因果、权限和正确性。与状态分类工具分立;跨领域迁移效果待核。不据此外推未观察效果、许可或正式评级。 |
|
||||
| 18 | 依据 | 依据:第7项来源记录与第11项机制共同定位该定义:来源ID`repo-cross-domain-framework-20261024`;逻辑路径`.github/docs/gongfa/cross-domain-input-state-transform-output.md`;Git修订`3df273795b6a0c0d395d4da05cb0029e59878dc9`;冻结字节SHA-256`9c061a02fc6646f2dae3ac15c104173d7eae4a970c1780af0c9c31e85da55c1f`;独立章节锚点`cross-domain-input-state-transform-output`。第7项可定位段落定义角色、边界、连接规则与限制;这是本项目整理的定义,不是外部独立证据、效果验证或正式评级依据。 |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<!-- generated: sync-gongfa-catalog.py -->
|
||||
# 功法总表:玄阶
|
||||
|
||||
本页包含310条玄阶记录。品级沿用已有前瞻初评,不是正式效果评级。
|
||||
本页包含309条玄阶记录。品级沿用已有前瞻初评,不是正式效果评级。
|
||||
- [返回总索引](README.md);其他阶:[天阶](tian.md)、[地阶](di.md)、[玄阶](xuan.md)、[黄阶](huang.md)。
|
||||
|
||||
## 玄阶记录
|
||||
@@ -176,7 +176,6 @@
|
||||
- [可推理性优先](#v0-registry-gongfa-reasonable-code-r1-9913a87a)
|
||||
- [最小惊讶原则(registry:gongfa-least-surprise@r1)](#v0-registry-gongfa-least-surprise-r1-fd734c68)
|
||||
- [文档记录设计理由](#v0-registry-gongfa-decision-rationale-documentation-r1-8188a83c)
|
||||
- [输入输出与状态变换分离](#v0-registry-gongfa-input-state-transform-separation-r1-2443d5c8)
|
||||
- [DRY 逻辑复用准则](#v0-registry-gongfa-dry-reuse-r1-5af5b36d)
|
||||
- [编程没有银弹](#v0-registry-gongfa-candidate-html211-a001-8e7d97a738-r1-e931f6bf)
|
||||
- [代码即设计文档](#v0-registry-gongfa-candidate-html211-a002-4d2dd6d6ba-r1-303bb5ba)
|
||||
@@ -4397,30 +4396,6 @@
|
||||
| 17 | 连接规则 | 推理桥梁:证据命题:第18项所定位的单一来源记载了第11项中的步骤/机制“文档解释选择理由,代码说明系统当前怎样运行,二者承担不同说明功能”。推理根据:同一来源内对步骤的忠实概括可以支持本条的局部编辑性归纳;但单一来源或个案不提供跨对象普遍性的比较样本。由于第14项把归纳明确限定在该来源描述的步骤与情境,而没有主张跨对象共性,因此第16项中“把登记摘要“文档不是装饰,尤其应解释当时为什么这样选择”仅用于其所述主题“怎样减少他人对设计背景的猜测”,不外推到未记录场景”这一来源内局部归纳。成立边界:以第15项列出的适用条件、限制及其待核状态为准;不据此外推未观察效果、许可或正式评级。 |
|
||||
| 18 | 依据 | 依据:来源ID `repo-software-engineering-truths-81fc7ae`;路径 `.github/docs/gongfa/software-engineering-truths.md`;快照SHA-256 `e08b9a728825dc175a0bc68d22e2d90cb43ef9f368cd373368ca6d456ff329f3`;修订 `81fc7ae599da7b7b0ce02ea0b069a2c88d288a4e`;第7项载完整出处;对应第11项,边界按第15项。快照/静态仅支持记录,不代表独立核验或效果/许可/评级证据。 |
|
||||
|
||||
<a id="v0-registry-gongfa-input-state-transform-separation-r1-2443d5c8"></a>
|
||||
### 输入输出与状态变换分离
|
||||
|
||||
| 序号 | 说明项 | 内容 |
|
||||
|:---:|:---|:---|
|
||||
| 1 | 工具的名称 | 输入输出与状态变换分离 |
|
||||
| 2 | 是什么 | 现有登记摘要:区分消费端、生产端、状态和变换,独立管理输入处理输出环节。 |
|
||||
| 3 | 为什么 | 采用理由(编辑用途归纳):面对“系统行为怎样按输入、输出、状态和处理逻辑划分”,本条以“区分消费端、生产端、状态和变换,独立管理输入处理输出环节”提供理解或分析视角,可服务于围绕登记摘要所述主题形成分析依据。登记未记录作者历史采用动机;这里不声称效果已验证。 |
|
||||
| 4 | 怎么做 | 登记机制摘要(编辑归纳)给出的操作要点是“消费端接收外部数据,生产端生成结果,状态存储系统信息,变换处理状态;输入、处理、输出独立管理”;固定选区未列成可逐步复现的完整流程,不能据此补造未记录步骤或效果。 |
|
||||
| 5 | 扩展 | 固定登记来源选区的核心内容是“区分消费端、生产端、状态和变换,独立管理输入处理输出环节”;未提出可独立确认的变体、推导或组合契约。关联线索不自动构成本条扩展,本说明不补造新内容。 |
|
||||
| 6 | 关联信息 | 稳定ID:gongfa-input-state-transform-separation;内容版本:r1;本体类型:method-specification;身份状态:已登记。<br>既有品级与初评记录:品级意见:玄阶中级;意见状态:provisional;任务族:系统输入、状态、变换与输出的职责划分;初评/上下文理由:预计对数据流职责混杂的任务有增益,但未规定状态所有权、事务或时序的一般处理,不能借既有状态时间追踪条目补成完整方法。;反证条件:若划分后仍无法识别实际输入/输出和状态变换,或边界拆分破坏事务一致性且未降低认知负担,则本建议应下调。;置信标签:medium;意见时间:2026-10-07T09:20:36.251520Z。此处为既有初评,不是正式效果评级。<br>关联候选/既有关系列表:未记录逐条关系。<br>关系登记不等于身份合并、比较结论或本体继承。 |
|
||||
| 7 | 出处 | 固定来源记录与原文定位(正文仍保存在对应唯一登记源或冻结原始载荷中;此处列源记录、选择器与SHA,不改写原文):<br>{<br> "source_record": {<br> "id": "repo-development-experience-81fc7ae",<br> "kind": "repository_document",<br> "path": ".github/docs/gongfa/development-experience.md",<br> "git_revision": "81fc7ae599da7b7b0ce02ea0b069a2c88d288a4e",<br> "captured_at": "2026-10-07T09:20:36.247888Z",<br> "snapshot_path": ".github/metadata/gongfa/source-development-experience-81fc7ae.txt",<br> "snapshot_sha256": "d1437549b3232085d678b74793c6430903ba72913679c0712cd1b9773b2994f0",<br> "text_normalization": "markdown-section-trim-v1",<br> "included_anchors": [<br> "reference-engineering-practice-1-变量名维护方案",<br> "reference-engineering-practice-33-消费端-生产端-状态变量-变换函数",<br> "reference-engineering-practice-34-并发concurrency",<br> "reference-engineering-practice-54-dry-原则不要重复"<br> ]<br> },<br> "selection": {<br> "source_id": "repo-development-experience-81fc7ae",<br> "heading_id": "reference-engineering-practice-33-消费端-生产端-状态变量-变换函数",<br> "selection": "markdown-section",<br> "stop_before": null<br> },<br> "text_sha256": "5ecabc148817ed14ae49cafac8bfda07428578a9c95dd4262971b8bb3ee9a7cb",<br> "source_note": "下列原文按当前登记载荷保留;路径、版本与选区是登记记录,不等于独立书目或原著核验。",<br> "original_text_sha256": "5ecabc148817ed14ae49cafac8bfda07428578a9c95dd4262971b8bb3ee9a7cb",<br> "original_text_storage": ".github/metadata/gongfa/registry.json中的对应稳定ID与内容版本"<br>} |
|
||||
| 8 | 相关图书 | 本条绑定的来源记录为“repo-development-experience-81fc7ae”(类型:repository_document;定位:.github/docs/gongfa/development-experience.md#reference-engineering-practice-33-消费端-生产端-状态变量-变换函数)。登记未提供与本条直接对应、可核对作者/版本/章节的图书书目;不把项目文档或方法名称冒充图书。 |
|
||||
| 9 | 它要解决什么问题? | 系统行为怎样按输入、输出、状态和处理逻辑划分。 |
|
||||
| 10 | 为什么这样设计? | 固定来源选区未单列作者历史设计动机。登记选区说明限定为“只收此独立限定节,不借同篇其他内容补字段;来源要求不成为本次执行或发布授权”;可见结构以“消费端接收外部数据,生产端生成结果,状态存储系统信息,变换处理状态;输入、处理、输出独立管理”说明主题“区分消费端、生产端、状态和变换,独立管理输入处理输出环节”与问题“系统行为怎样按输入、输出、状态和处理逻辑划分”的关系;这是编辑解释,不是作者意图陈述。 |
|
||||
| 11 | 内部如何实现? | 消费端接收外部数据,生产端生成结果,状态存储系统信息,变换处理状态;输入、处理、输出独立管理。 |
|
||||
| 12 | 付出了什么代价? | 定性应用代价(编辑推断):按固定选区的“消费端接收外部数据,生产端生成结果,状态存储系统信息,变换处理状态;输入、处理、输出独立管理”操作,会增加分析、记录或复核工作;应用范围改变时还须重核前提。固定选区及登记未提供量化成本或运行测量。现有材料没有时间、资源或效能数值,不据此声称成本高低。 |
|
||||
| 13 | 比较不同技术与方法。 | 固定来源与登记摘要未提供针对“系统行为怎样按输入、输出、状态和处理逻辑划分”的同目标替代方案及可比结果。现阶段只能说明本条关注“区分消费端、生产端、状态和变换,独立管理输入处理输出环节”;不编造比较对象,也不作效果或成本排名。 |
|
||||
| 14 | 提炼共同规律。 | 单条来源不足以证明跨对象共同规律。由本条可作的编辑性局部归纳是:把登记摘要“区分消费端、生产端、状态和变换,独立管理输入处理输出环节”仅用于其所述主题“系统行为怎样按输入、输出、状态和处理逻辑划分”,不外推到未记录场景;这不是跨方法定律或效果保证。 |
|
||||
| 15 | 明确这些规律成立的前提与适用条件。 | 适用条件:登记及固定选区未明确列出“输入输出与状态变换分离”的进一步适用条件。边界:登记及固定选区未记录“输入输出与状态变换分离”的具体限制或反例。选区说明另限定:“只收此独立限定节,不借同篇其他内容补字段;来源要求不成为本次执行或发布授权”(登记编者说明,非原文)。材料未提供该条的独立效果验证。以上仅界定当前单条结论的适用范围,不证明跨场景普遍性、性能提升或业务正确性。 |
|
||||
| 16 | 结论 | 结论(限第15项条件):单条来源不足以证明跨对象共同规律。由本条可作的编辑性局部归纳是:把登记摘要“区分消费端、生产端、状态和变换,独立管理输入处理输出环节”仅用于其所述主题“系统行为怎样按输入、输出、状态和处理逻辑划分”,不外推到未记录场景;这不是跨方法定律或效果保证。<br>非效果、许可或正式评级证明。 |
|
||||
| 17 | 连接规则 | 推理桥梁:证据命题:第18项所定位的单一来源记载了第11项中的步骤/机制“消费端接收外部数据,生产端生成结果,状态存储系统信息,变换处理状态;输入、处理、输出独立管理”。推理根据:同一来源内对步骤的忠实概括可以支持本条的局部编辑性归纳;但单一来源或个案不提供跨对象普遍性的比较样本。由于第14项把归纳明确限定在该来源描述的步骤与情境,而没有主张跨对象共性,因此第16项中“把登记摘要“区分消费端、生产端、状态和变换,独立管理输入处理输出环节”仅用于其所述主题“系统行为怎样按输入、输出、状态和处理逻辑划分”,不外推到未记录场景”这一来源内局部归纳。成立边界:以第15项列出的适用条件、限制及其待核状态为准;不据此外推未观察效果、许可或正式评级。 |
|
||||
| 18 | 依据 | 依据:来源ID `repo-development-experience-81fc7ae`;路径 `.github/docs/gongfa/development-experience.md`;快照SHA-256 `d1437549b3232085d678b74793c6430903ba72913679c0712cd1b9773b2994f0`;修订 `81fc7ae599da7b7b0ce02ea0b069a2c88d288a4e`;第7项载完整出处;对应第11项,边界按第15项。快照/静态仅支持记录,不代表独立核验或效果/许可/评级证据。 |
|
||||
|
||||
<a id="v0-registry-gongfa-dry-reuse-r1-5af5b36d"></a>
|
||||
### DRY 逻辑复用准则
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ vibe-coding-cn是以Pi Agent与已授权OpenAI GPT为主体底座的Vibe Coding
|
||||
|
||||
本文件只维护项目摘要与导航;方法论、哲学、模型、准则和流程的冻结原文保存在 `.github/context/gongfa/data.json` 的 `documents` 中。`.github/context/gongfa/README.md#原文文集`只提供原文索引与历史锚点,逐对象说明见天、地、玄、黄分阶页。核心命题见 `.github/context/gongfa/README.md#doc-ai-core-propositions`:固定目标基线,允许策略变化,以有界尝试、验证和显式授权控制闭环。摘要不保证自动收敛或效果。
|
||||
|
||||
37 篇是归档的原文文集条目,不是37门已登记、已验证或已评级功法。身份、内容版本、来源与意见的唯一维护源是 `.github/context/gongfa/data.json`;当前总表411条均已登记,其中331条于2026-10-19按用户指令自来源快照登记,用户已确认其说明全部正式通过审阅;409条保留前瞻初评、2条为“暂不可判”,正式评级为0。说明审阅不改写书目/许可、实际效果或正式评级状态。新增Lambda演算按用户指定为天级上品(tian-advanced),列在拼好码之前;旧内容版本、历史来源和旧意见保留。
|
||||
37 篇是归档的原文文集条目,不是37门已登记、已验证或已评级功法。身份、内容版本、来源与意见的唯一维护源是 `.github/context/gongfa/data.json`;当前总表412条均已登记,其中331条于2026-10-19按用户指令自来源快照登记,用户已确认其说明全部正式通过审阅;410条保留前瞻初评、2条为“暂不可判”,正式评级为0。说明审阅不改写书目/许可、实际效果或正式评级状态。新增Lambda演算按用户指定为天级上品(tian-advanced),列在拼好码之前;旧内容版本、历史来源和旧意见保留。
|
||||
|
||||
工具选用按问题、设计、实现、代价展开,再比较替代、共性与适用前提;Lambda记号只表达接口组合,不实现解释器或证明程序性质。功法、法器以各自`data.json`维护原始资料,`README.md`提供轻量导航,天、地、玄、黄四阶页承载对象说明;历史Excel保留原字节,不再生成第二视图。
|
||||
|
||||
|
||||
@@ -94,11 +94,50 @@ class CatalogMaintenanceTest(unittest.TestCase):
|
||||
stream.write(text)
|
||||
return result
|
||||
|
||||
def test_user_requested_framework_and_input_output_tiers_are_separate_provisional_opinions(self):
|
||||
rows = catalog.merge_rows(deepcopy(self.documents))
|
||||
by_id = {(row['namespace'], row['original_id']): row for row in rows}
|
||||
framework = by_id['registry', 'gongfa-input-state-transform-output-cross-domain']
|
||||
input_output = by_id['registry', 'gongfa-input-state-transform-separation']
|
||||
state_classification = by_id['registry', 'gongfa-state-classification']
|
||||
|
||||
self.assertEqual(framework['grade_id'], 'tian-initial')
|
||||
self.assertEqual(framework['grading_status'], 'provisional')
|
||||
self.assertEqual(input_output['grade_id'], 'tian-intermediate')
|
||||
self.assertEqual(input_output['grading_status'], 'provisional')
|
||||
self.assertEqual(state_classification['grade_id'], 'xuan-intermediate')
|
||||
self.assertEqual(self.documents['registry']['assessments'], [])
|
||||
previous = next(batch for batch in self.documents['registry']['grade_proposals']
|
||||
if batch['id'] == 'gongfa-author-repo-expansion-20261007')
|
||||
successor = next(batch for batch in self.documents['registry']['grade_proposals']
|
||||
if batch['id'] == 'gongfa-user-input-state-transform-separation-tian-20261024')
|
||||
framework_batch = next(batch for batch in self.documents['registry']['grade_proposals']
|
||||
if batch['id'] == 'gongfa-user-cross-domain-framework-tian-20261024')
|
||||
self.assertEqual(successor['supersedes'], previous['id'])
|
||||
self.assertIsNone(framework_batch['supersedes'])
|
||||
previous_items = {(item['gongfa_id'], item['content_version']): item for item in previous['items']}
|
||||
successor_items = {(item['gongfa_id'], item['content_version']): item for item in successor['items']}
|
||||
framework_items = {(item['gongfa_id'], item['content_version']): item for item in framework_batch['items']}
|
||||
self.assertEqual(set(successor_items), set(previous_items))
|
||||
self.assertEqual(set(framework_items), {(framework['original_id'], 'r1')})
|
||||
for key, item in previous_items.items():
|
||||
if key[0] != 'gongfa-input-state-transform-separation':
|
||||
self.assertEqual(successor_items[key], item)
|
||||
self.assertEqual(previous_items['gongfa-input-state-transform-separation', 'r1']['grade_id'],
|
||||
'xuan-intermediate')
|
||||
self.assertEqual(successor_items['gongfa-input-state-transform-separation', 'r1']['grade_id'],
|
||||
'tian-intermediate')
|
||||
self.assertEqual(framework_items[framework['original_id'], 'r1']['grade_id'], 'tian-initial')
|
||||
self.assertIn('用户明确指定', framework['explanation_fields'][5]['content'])
|
||||
self.assertIn('天阶初级', framework['explanation_fields'][5]['content'])
|
||||
self.assertIn('用户明确指定', input_output['explanation_fields'][5]['content'])
|
||||
self.assertIn('天阶中级', input_output['explanation_fields'][5]['content'])
|
||||
|
||||
def test_current_all_classified_content_and_two_bad_summaries_keep_original_opinions(self):
|
||||
rows = catalog.merge_rows(deepcopy(self.documents))
|
||||
self.assertEqual(Counter(row['namespace'] for row in rows), {'registry': 411})
|
||||
self.assertEqual(len(rows), 411)
|
||||
self.assertEqual(len({(r['namespace'], r['original_id'], r['content_version']) for r in rows}), 411)
|
||||
self.assertEqual(Counter(row['namespace'] for row in rows), {'registry': 412})
|
||||
self.assertEqual(len(rows), 412)
|
||||
self.assertEqual(len({(r['namespace'], r['original_id'], r['content_version']) for r in rows}), 412)
|
||||
undetermined = {r['original_id'] for r in rows if r['grading_status'] == 'undetermined'}
|
||||
self.assertEqual(undetermined, {
|
||||
'gongfa-candidate-html211-e001-a663456869',
|
||||
@@ -114,7 +153,7 @@ class CatalogMaintenanceTest(unittest.TestCase):
|
||||
self.assertEqual(by_id['registry', 'gongfa-candidate-html211-e001-a663456869']['grading_status'], 'undetermined')
|
||||
self.assertIn('失去50%容量时剩余单位需要承担2倍总流量。',
|
||||
by_id['registry', 'gongfa-candidate-html211-e001-a663456869']['original_text'])
|
||||
self.assertEqual(sum(r['entry_status'] == '已登记' for r in rows), 411)
|
||||
self.assertEqual(sum(r['entry_status'] == '已登记' for r in rows), 412)
|
||||
lambda_index = next(index for index, row in enumerate(rows) if row['original_id'] == 'gongfa-lambda-calculus')
|
||||
glue_index = next(index for index, row in enumerate(rows) if row['original_id'] == 'gongfa-glue-coding')
|
||||
self.assertEqual(lambda_index + 1, glue_index)
|
||||
@@ -126,7 +165,7 @@ class CatalogMaintenanceTest(unittest.TestCase):
|
||||
self.assertEqual(chapters[chapters.index('## 拼好码') + 1], '## Lambda 演算')
|
||||
self.assertEqual(sum(r['entry_status'] == '登记库候选' for r in rows), 0)
|
||||
self.assertEqual(self.documents['registry']['assessments'], [])
|
||||
self.assertEqual(len(self.documents['registry']['gongfa']), 411)
|
||||
self.assertEqual(len(self.documents['registry']['gongfa']), 412)
|
||||
self.assertTrue(all(item['entry_status'] == 'registered' for item in self.documents['registry']['gongfa']))
|
||||
registry_item = next(item for item in self.documents['registry']['gongfa'] if item['id'] == 'gongfa-first-principles')
|
||||
profile = registry_item['content']['profile']
|
||||
@@ -181,12 +220,12 @@ class CatalogMaintenanceTest(unittest.TestCase):
|
||||
self.assertEqual(self.documents['html211_candidates']['registry_updated'], False)
|
||||
self.assertEqual(self.documents['html96_candidates']['registry_updated'], False)
|
||||
self.assertEqual(self.documents['explanations_v1']['template_sha256'], catalog.tool_explanations.template_sha256(ROOT))
|
||||
self.assertEqual(len(self.documents['explanations_v1']['items']), 411)
|
||||
self.assertEqual(len(self.documents['explanations_v1']['items']), 412)
|
||||
self.assertTrue(all(item['object_key'].startswith('registry:')
|
||||
for item in self.documents['explanations_v1']['items']))
|
||||
views = catalog.render_views(ROOT, rows, self.binding)
|
||||
markdown = views['README.md']
|
||||
self.assertIn('- 共**411条内容记录**;已登记411条,待登记0条,未登记来源条目0条。', markdown)
|
||||
self.assertIn('- 共**412条内容记录**;已登记412条,待登记0条,未登记来源条目0条。', markdown)
|
||||
self.assertNotIn('[控制论与科学方法论](#控制论与科学方法论)', markdown)
|
||||
self.assertIn('同名条目在导航中附稳定对象ID,不表示身份合并。', markdown)
|
||||
self.assertFalse('catalog.xlsx' in markdown, '活动阅读视图只有Markdown,历史Excel仅作原始载荷保存')
|
||||
@@ -475,8 +514,8 @@ class CatalogMaintenanceTest(unittest.TestCase):
|
||||
for phrase in phrases:
|
||||
self.assertNotIn(phrase, fields[field_name], f'{candidate_id}:{field_name}')
|
||||
|
||||
def test_stale_status_scan_covers_all_441_explanation_items_without_rewriting_them(self):
|
||||
expected_counts = {'gongfa': 411, 'faqi': 30}
|
||||
def test_stale_status_scan_covers_all_442_explanation_items_without_rewriting_them(self):
|
||||
expected_counts = {'gongfa': 412, 'faqi': 30}
|
||||
bundles = source_archive.bundles(ROOT)
|
||||
self.assertEqual(set(expected_counts), set(bundles))
|
||||
hits = []
|
||||
@@ -492,7 +531,7 @@ class CatalogMaintenanceTest(unittest.TestCase):
|
||||
for label in STALE_EXPLANATION_LABELS:
|
||||
if label in field['content']:
|
||||
hits.append(f"{kind}:{item['object_key']}:{field['name']}:{label}")
|
||||
self.assertEqual(441, total)
|
||||
self.assertEqual(442, total)
|
||||
self.assertEqual([], hits, '仅报告过时状态词候选,不自动改写说明:' + chr(10) + chr(10).join(hits))
|
||||
|
||||
def test_v1_template_appends_the_three_argument_fields_without_changing_v0(self):
|
||||
@@ -530,8 +569,8 @@ class CatalogMaintenanceTest(unittest.TestCase):
|
||||
findings.append(f"{item['object_key']}:{name}")
|
||||
self.assertEqual([], findings, '主张不能把同一摘要同时当作方法和问题:' + ', '.join(findings))
|
||||
|
||||
def test_active_v1_payload_migrates_all_441_records_with_toulmin_warrants(self):
|
||||
expected_counts = {'gongfa': 411, 'faqi': 30}
|
||||
def test_active_v1_payload_migrates_all_442_records_with_toulmin_warrants(self):
|
||||
expected_counts = {'gongfa': 412, 'faqi': 30}
|
||||
expected_names = v0_field_names() + ['结论', '连接规则', '依据']
|
||||
bundles = source_archive.bundles(ROOT)
|
||||
total = 0
|
||||
@@ -562,7 +601,7 @@ class CatalogMaintenanceTest(unittest.TestCase):
|
||||
self.assertNotIn('仅当第18项支持第11项机制适用于第9项问题', warrant, item['object_key'])
|
||||
self.assertIn('第7项', fields['依据'], item['object_key'])
|
||||
self.assertIn('第11项', fields['依据'], item['object_key'])
|
||||
self.assertEqual(441, total)
|
||||
self.assertEqual(442, total)
|
||||
gongfa_items = {
|
||||
item['object_key']: {field['name']: field['content'] for field in item['fields']}
|
||||
for item in bundles['gongfa']['data']['explanations_v1']['items']
|
||||
@@ -631,8 +670,8 @@ class CatalogMaintenanceTest(unittest.TestCase):
|
||||
documents['registry']['gongfa'].append(candidate)
|
||||
rows = catalog.merge_rows(documents)
|
||||
self.assertEqual(sum(row['entry_status'] == '登记库候选' for row in rows), 1)
|
||||
self.assertEqual(412, len(rows))
|
||||
self.assertIn('合计412条', '\n'.join(catalog.notes(rows, self.binding)))
|
||||
self.assertEqual(413, len(rows))
|
||||
self.assertIn('合计413条', '\n'.join(catalog.notes(rows, self.binding)))
|
||||
|
||||
def test_registry_updates_follow_explicit_correction_and_never_inherit_a_new_version(self):
|
||||
documents = deepcopy(self.documents)
|
||||
|
||||
@@ -163,7 +163,13 @@ class GongfaProtocolTest(unittest.TestCase):
|
||||
targets = {(entry['id'], entry['content_version']) for entry in entries}
|
||||
self.assertEqual({(item['gongfa_id'], item['content_version'])
|
||||
for batch in proposals for item in batch['items']}, targets)
|
||||
self.assertEqual(summary['proposed_grades'], len(entries))
|
||||
superseded_ids = {batch['supersedes'] for batch in proposals if batch['supersedes'] is not None}
|
||||
active_targets = [(item['gongfa_id'], item['content_version'])
|
||||
for batch in proposals if batch['id'] not in superseded_ids
|
||||
for item in batch['items']]
|
||||
self.assertEqual(set(active_targets), targets)
|
||||
self.assertEqual(len(active_targets), len(targets))
|
||||
self.assertEqual(summary['proposed_grades'], sum(len(batch['items']) for batch in proposals))
|
||||
for batch in proposals:
|
||||
if batch['policy_id'] is None:
|
||||
self.assertIsNone(batch['policy_version'])
|
||||
|
||||
Reference in New Issue
Block a user