仓库 README.md 整体重写:介绍功能与用法,删除更新机制与过期说法 #37

Closed
opened 2026-10-28 12:19:33 +00:00 by laoyang · 3 comments
Owner

现象

用户要求「readme 需要全部重写。主要介绍功能,用法等,不要写什么更新机制啥的」。

我在 #36 里理解错了对象 —— 改成了线上后台详情页那份 readme.html
(details_url 指向的),而用户指的是代码库根目录的 README.md。
本单是纠正后的真实需求。

当前 README.md 的问题

读完 128 行原文,问题不只是"写了更新机制",还有好几处说法已经和代码不符:

一、整章内容是发布流程,不该出现在面向使用者的文档里

  • # 主题自动更新(update.json 格式、发布目录)
  • ## 发布新版本的顺序(打包 → 传 zip → 改 update.json)
  • ## 换域名 / 退役旧域名
  • ## ⚠️ 自动升级会覆盖主题目录(WP 升级机制原理)

二、"主要修改的地方"七条已严重过期

逐条对着代码核过:

原文 实际
3. 删除了配置页面中的关于主题 ✅ 成立(关于主题 全库 0 处)
4. 删除了资源托管/媒体托管选项 ⚠️ 选项删了,但 inc/theme-dogecloud.php 还在被 require(靠 g_cos 恒假变死代码)
5. 删除了文章版权信息、网易云音乐 网易云 ✅;版权信息 仍在(页脚版权,另一回事)
6. 删除了社交相关配置选项 ✅ 成立
7. 增加了在页脚显示国旗的选项 ✅ 成立(g_flag)
1. 移动端增加侧边栏(文章页仍没有) ❌ 错:index.php:41 和 single.php:122 都有 dynamic_sidebar('sidebar_tool')
2. 文章聚合 widget 最新文章优先 ❌ 已反转:现名「小工具文章聚合 —— 热点文章」,内部换成 yang_hot_posts()

七条里只有三条半还成立。 而且这种"相对上游做了啥"的写法本身就不可持续。

三、"代码同步"那句是假的(实测)

原文:「这些代码库都和源库保持一致和同步,在任何平台上关注都可以。」

实测各镜像 style.css 的 Version::

源库 code.yangyq.net   4.2.0   ✅
gitlab.com/dryangyq    3.2.0   ❌ 落后 124 个小版本
raw.githubusercontent    取不到(需鉴权/路径不同)
gitee                  取不到
code.aliyun.com        已停服(HTTP 000)

⇒ 阿里云 Code 那条是死链(平台早已下线);"保持一致和同步"不成立。

四、缺失

主题现有 24 个 inc 模块、后台 16 个设置分组、2 个短代码、4 个自建挂件,
README 一条都没介绍。新人打开仓库页看不到这主题能干什么。

要求

以功能介绍 + 用法为主体重写 README.md:

  • 写:这主题是什么、装完先做什么、每项功能怎么开、短代码怎么写、
    后台 16 个分组都有什么、已知冲突与注意事项。
  • 不写:更新机制(update.json / 打包 / 发布顺序 / PUC)、逐版变更日志。
  • 过期说法一律按代码实况改掉,不照抄原文。
  • 版本号不写死数字(刚在 #35 立了"版本号只留一份真源"的规矩,
    README 再写死 4.2.0 等于自打脸)—— 指向 style.css 头部。

验收标准

  1. 全文不出现 update.json / download_url / md5 / PUC / theme-update / 打包发布顺序。
  2. 后台 16 个设置分组全覆盖,且每组附近有"怎么开"的操作描述。
  3. [TOC] 与 [Archives] 两个短代码的用法与实际参数一致。
  4. 不出现已证伪的说法:「文章页没有侧边栏」「最新文章优先」「阿里云Code」
    「各库保持一致和同步」。
  5. 不写死版本号数字([0-9]+\.[0-9]+\.[0-9]+ 出现次数 ≤ 1,且只允许在"见 style.css"这类指引语境)。
  6. Markdown 格式规范(能在 Gitea / GitHub 仓库首页正常渲染)。

关于 #36 那份 readme.html

details_url 指向的线上 readme.html 我已改成 17 节功能说明(#36 已关)。
用户表示没要过它。待用户定:保留 / 回滚成旧的 57 节日志(旧版备份在
readme.html.keep-202610281821*)。


为什么单独建单

#33 是百度统计面板(后台功能开发),本单是仓库 README.md 文档重写,两者可独立验收、无代码交集。且本单是对 #36 对象理解错误的纠正:#36 改的是线上 details_url 指向的 readme.html,用户真正要的是代码库根目录 README.md。

## 现象 用户要求「readme 需要全部重写。主要介绍功能,用法等,不要写什么更新机制啥的」。 **我在 #36 里理解错了对象** —— 改成了线上后台详情页那份 `readme.html` (`details_url` 指向的),而用户指的是**代码库根目录的 `README.md`**。 本单是纠正后的真实需求。 ## 当前 README.md 的问题 读完 128 行原文,问题不只是"写了更新机制",还有**好几处说法已经和代码不符**: ### 一、整章内容是发布流程,不该出现在面向使用者的文档里 - `# 主题自动更新`(update.json 格式、发布目录) - `## 发布新版本的顺序`(打包 → 传 zip → 改 update.json) - `## 换域名 / 退役旧域名` - `## ⚠️ 自动升级会覆盖主题目录`(WP 升级机制原理) ### 二、"主要修改的地方"七条已严重过期 逐条对着代码核过: | 原文 | 实际 | |---|---| | 3. 删除了配置页面中的关于主题 | ✅ 成立(`关于主题` 全库 0 处) | | 4. 删除了资源托管/媒体托管选项 | ⚠️ 选项删了,但 `inc/theme-dogecloud.php` 还在被 require(靠 `g_cos` 恒假变死代码) | | 5. 删除了文章版权信息、网易云音乐 | 网易云 ✅;`版权信息` 仍在(页脚版权,另一回事) | | 6. 删除了社交相关配置选项 | ✅ 成立 | | 7. 增加了在页脚显示国旗的选项 | ✅ 成立(`g_flag`) | | 1. 移动端增加侧边栏(文章页仍没有) | ❌ **错**:`index.php:41` 和 `single.php:122` 都有 `dynamic_sidebar('sidebar_tool')` | | 2. 文章聚合 widget 最新文章优先 | ❌ **已反转**:现名「小工具文章聚合 —— 热点文章」,内部换成 `yang_hot_posts()` | **七条里只有三条半还成立。** 而且这种"相对上游做了啥"的写法本身就不可持续。 ### 三、"代码同步"那句是假的(实测) 原文:「这些代码库都和源库保持一致和同步,在任何平台上关注都可以。」 实测各镜像 `style.css` 的 `Version:`: ``` 源库 code.yangyq.net 4.2.0 ✅ gitlab.com/dryangyq 3.2.0 ❌ 落后 124 个小版本 raw.githubusercontent 取不到(需鉴权/路径不同) gitee 取不到 code.aliyun.com 已停服(HTTP 000) ``` ⇒ 阿里云 Code 那条是**死链**(平台早已下线);"保持一致和同步"不成立。 ### 四、缺失 主题现有 **24 个 inc 模块、后台 16 个设置分组、2 个短代码、4 个自建挂件**, README 一条都没介绍。新人打开仓库页看不到这主题能干什么。 ## 要求 以**功能介绍 + 用法**为主体重写 `README.md`: - 写:这主题是什么、装完先做什么、每项功能怎么开、短代码怎么写、 后台 16 个分组都有什么、已知冲突与注意事项。 - **不写**:更新机制(update.json / 打包 / 发布顺序 / PUC)、逐版变更日志。 - 过期说法一律按代码实况改掉,不照抄原文。 - **版本号不写死数字**(刚在 #35 立了"版本号只留一份真源"的规矩, README 再写死 4.2.0 等于自打脸)—— 指向 `style.css` 头部。 ## 验收标准 1. 全文不出现 `update.json` / `download_url` / `md5` / `PUC` / `theme-update` / 打包发布顺序。 2. 后台 16 个设置分组全覆盖,且每组附近有"怎么开"的操作描述。 3. `[TOC]` 与 `[Archives]` 两个短代码的用法与实际参数一致。 4. 不出现已证伪的说法:「文章页没有侧边栏」「最新文章优先」「阿里云Code」 「各库保持一致和同步」。 5. 不写死版本号数字(`[0-9]+\.[0-9]+\.[0-9]+` 出现次数 ≤ 1,且只允许在"见 style.css"这类指引语境)。 6. Markdown 格式规范(能在 Gitea / GitHub 仓库首页正常渲染)。 ## 关于 #36 那份 readme.html `details_url` 指向的线上 `readme.html` 我已改成 17 节功能说明(#36 已关)。 用户表示没要过它。**待用户定**:保留 / 回滚成旧的 57 节日志(旧版备份在 `readme.html.keep-202610281821*`)。 --- ### 为什么单独建单 #33 是百度统计面板(后台功能开发),本单是仓库 README.md 文档重写,两者可独立验收、无代码交集。且本单是对 #36 对象理解错误的纠正:#36 改的是线上 details_url 指向的 readme.html,用户真正要的是代码库根目录 README.md。
Author
Owner

已交付(commit ba12451,已推 main)

README.md 从 127 行「fork 说明 + 相对上游改了啥 + 发布流程」重写成 499 行「功能与用法」。

关于我在这个单子的正文里写错的一条(必须先纠正)

正文「二、七条已严重过期」里我把
「移动端增加侧边栏……在文章页面仍然没有侧边栏」列为 ❌ 已证伪。

那个判断是我自己错的。 我当时只 grep 了 PHP 里有没有 dynamic_sidebar(),
看到 single.php:122 有,就下结论说旧 README 过期了。实际真相是两层:

  • single.php:121 侧栏容器的 class 是 d-none d-lg-block ⇒ 小屏(<992px)CSS 隐藏
  • index.php:40 是 d-lg-block ⇒ 小屏仍显示

所以「移动端只有首页有侧栏、文章页没有」到今天依然成立,旧 README 那条没错。

而且我还漏了一层:文章页侧栏另受「文章配置 → 页面布局」g_article_widgets
控制,选单栏时整段 HTML 直接不输出。

⇒ 新 README 按实况写清了这两层,没有把它当成过期说法删掉。
这条错判记进 pitfalls:只看代码里"有没有输出"就断言旧文档过期,
不看控制可见性的 class 与条件 —— 会把正确的旧文档改错。

另外几处确实过期,已按代码改掉

原说法 实况(有代码依据)
文章聚合 widget「最新文章优先显示」 已反转成热点文章(widget_posts 内部换成 yang_hot_posts())
这些代码库都和源库保持一致和同步 实测不成立:gitlab 镜像 style.css 还是 3.2.0,源库 4.2.0
阿里云 Code 镜像 该平台已下线,死链,删掉
pages/ 四个文件(原文未提,我差点写错) 它们没有 Template Name 头,不是可选页面模板,而是 get_template_part() / require 引入的片段

「主要修改的地方」七条整段删除——逐条核完只有三条半成立,而且"相对上游做了啥"这种写法本身不可持续。

更新机制:按要求全删

主题自动更新 / update.json 格式 / 发布新版本的顺序 / 自动升级会覆盖主题目录 / 换域名·退役旧域名 五章删除。判据实测这些词 0 次。

顺带查清一件事:PUC 的 details_url 是必填字段(Theme/Update.php:63
$required = array('version','details_url'))。用户点「查看版本详情」弹出的是
远程那份,不是包内 README.md。所以 #36 那份 readme.html 不是多余的东西,
它撑起了那个按钮。

新增主体:后台 16 个分组逐项对照代码

真实键名 + 真实默认值(读 std)+ 几处方向容易记反的开关:

  • g_gutenberg 默认关,勾选才是启用区块编辑器(不是"关掉 Gutenberg")
  • toc_float、a_highlight_line_numbers、g_animate、g_gravatar 默认关
  • a_lightbox_enable、a_highlight_enable、stat_track_enable、toc_inline、g_thumbnail 默认开

另外纠正了两处流传的误解:

  1. 「Gravatar 加速」不是开/关替换——主题默认就把 Gravatar 域名换成
    cn.gravatar.com(无条件),勾选后换成 gravatar.loli.net。是"换哪个镜像"。
  2. 自动头像是 PHP 服务端生成,不是浏览器本地生成。主题自实现 PRNG
    (xorshift + hashSeed,逐步截断到 int32)以与 DiceBear 官方预览页逐字节一致。

版本号不写死

#35 刚立了「版本号只留一份真源」,README 再抄一份 4.2.0 等于自打脸。
改成指向 style.css 的 Version:。判据里有一条专门盯这个,注入 4.2.0 会变红。

验证:判据三层

层 脚本 结果
正向 _readme37_check.py 45 / 0
双向区分力 同一套跑旧 README 命中 15 条 ⇒ 不是恒绿
反证 _readme37_falsify.py 13/13 抓到
反证的反证 _readme37_meta.py 10/10 抓到

README 里全部 7 个外链逐个 curl 验证可达(上游我原本写的 kratos.design 连不通,已改成实测 200 的 github.com/seatonjiang/kratos)。

写反证时暴露出判据自身三次「没牙齿」

三处根因同一个:判「某个词出现过」冒充「判结构」。

注入 第一版判据 根因 改成
E 删 [TOC] 参数表一行 漏 示例行 [TOC ... toggle="0" ...] 自带所有参数名,窗口搜索恒命中 判 ^\| \toggle` \|` 表格那一行在不在
I 把「20 套配色」改成 18 漏 后文还有一句「20 套全加在一起」,'20 套' in src 仍为真 收集全文所有套数声明,要求集合 == 代码实测值
K ### 三、顶部导航 降级 #### 漏 原判「不跳级」用 b-a>1,差 1 不算跳;反向 4→3 还合法 判 16 个分组小节 # 数全相同 + 名称顺序逐个对齐

同时删掉两条我自己写的恒真判据(... or True、if False else)——
恒真的判据等于没有判据,还长得像验证过了。

本轮最危险的一次事故(已进 pitfalls)

反证脚本崩溃时把注入留在了 README 里,而我没发现:

  1. 第一版反证的还原写在所有 case 之后(不在 finally)。
  2. 脚本在 A 组就因 TypeError: not enough arguments for format string 崩了
    —— 但 write(注入版) 已经执行,write(ORIG) 没执行。
  3. 第二次重跑时 ORIG = open(README).read() 读到的就是被污染的文件。
    后果不是"少跑一组"这么轻:
    • 污染内容被当成"正确的原文"
    • "还原"还原的是污染版
    • 判据基线整体错位
    • 我甚至把带 update.json /「打包」字样的污染版备份成了"全绿基线"
  4. 差点就这么提交上去。靠「反证结尾断言还原后判据全绿」这条自查才发现——
    它报了 rc=1,才追出污染。

⇒ 现在反证脚本的还原在 finally 里,且结尾硬断言「文件字节级回到起点」
+「判据仍全绿」,两者任一不成立就非零退出。meta 里也加了结构检查盯这件事。

另外两个小坑:反证脚本硬编码 TOTAL = 14 而实际只有 13 组,
输出「注入 14 组,抓到 14」看着完美、其实是虚报;
meta 脚本里用字面量匹配含反斜杠的锚点,多写一层就 0 命中,
而 0 命中会让那组"看起来跑过了"——改成按行前缀定位整行。

部署决定:不重新发包

README.md 在发布包内(4.2.0 的包里是旧版)。但这是纯文档改动,
重新发版会逼所有装了 4.2.0 的站点强制升级一次,只为换个 README——
不值当,下次有代码改动时自然带上。线上主题目录里那份旧 README 不影响任何功能
(「查看版本详情」走的是远程 details_url,见上)。

工单先不关,等用户看过 README 内容确认。

## 已交付(commit `ba12451`,已推 main) `README.md` 从 127 行「fork 说明 + 相对上游改了啥 + 发布流程」重写成 499 行「功能与用法」。 ### 关于我在这个单子的正文里写错的一条(必须先纠正) 正文「二、七条已严重过期」里我把 **「移动端增加侧边栏……在文章页面仍然没有侧边栏」列为 ❌ 已证伪**。 **那个判断是我自己错的。** 我当时只 grep 了 PHP 里有没有 `dynamic_sidebar()`, 看到 `single.php:122` 有,就下结论说旧 README 过期了。实际真相是两层: - `single.php:121` 侧栏容器的 class 是 **`d-none d-lg-block`** ⇒ 小屏(<992px)CSS 隐藏 - `index.php:40` 是 **`d-lg-block`** ⇒ 小屏仍显示 所以「移动端只有首页有侧栏、文章页没有」**到今天依然成立**,旧 README 那条没错。 而且我还漏了一层:文章页侧栏另受「文章配置 → 页面布局」`g_article_widgets` 控制,选单栏时整段 HTML 直接不输出。 ⇒ 新 README 按实况写清了这两层,**没有**把它当成过期说法删掉。 这条错判记进 pitfalls:**只看代码里"有没有输出"就断言旧文档过期, 不看控制可见性的 class 与条件 —— 会把正确的旧文档改错。** ### 另外几处确实过期,已按代码改掉 | 原说法 | 实况(有代码依据) | |---|---| | 文章聚合 widget「最新文章优先显示」 | 已反转成热点文章(`widget_posts` 内部换成 `yang_hot_posts()`) | | 这些代码库都和源库**保持一致和同步** | 实测不成立:gitlab 镜像 `style.css` 还是 **3.2.0**,源库 4.2.0 | | 阿里云 Code 镜像 | 该平台已下线,死链,删掉 | | `pages/` 四个文件(原文未提,我差点写错) | 它们**没有** `Template Name` 头,不是可选页面模板,而是 `get_template_part()` / `require` 引入的片段 | 「主要修改的地方」七条整段删除——逐条核完只有三条半成立,而且"相对上游做了啥"这种写法本身不可持续。 ### 更新机制:按要求全删 `主题自动更新` / `update.json 格式` / `发布新版本的顺序` / `自动升级会覆盖主题目录` / `换域名·退役旧域名` 五章删除。判据实测这些词 **0 次**。 顺带查清一件事:**PUC 的 `details_url` 是必填字段**(`Theme/Update.php:63` `$required = array('version','details_url')`)。用户点「查看版本详情」弹出的是 **远程那份**,不是包内 README.md。所以 #36 那份 `readme.html` 不是多余的东西, 它撑起了那个按钮。 ### 新增主体:后台 16 个分组逐项对照代码 真实键名 + 真实默认值(读 `std`)+ 几处方向容易记反的开关: - `g_gutenberg` **默认关**,勾选才是**启用**区块编辑器(不是"关掉 Gutenberg") - `toc_float`、`a_highlight_line_numbers`、`g_animate`、`g_gravatar` 默认关 - `a_lightbox_enable`、`a_highlight_enable`、`stat_track_enable`、`toc_inline`、`g_thumbnail` 默认**开** 另外纠正了两处流传的误解: 1. **「Gravatar 加速」不是开/关替换**——主题默认就把 Gravatar 域名换成 `cn.gravatar.com`(无条件),勾选后换成 `gravatar.loli.net`。是"换哪个镜像"。 2. **自动头像是 PHP 服务端生成**,不是浏览器本地生成。主题自实现 PRNG (xorshift + hashSeed,逐步截断到 int32)以与 DiceBear 官方预览页**逐字节一致**。 ### 版本号不写死 #35 刚立了「版本号只留一份真源」,README 再抄一份 `4.2.0` 等于自打脸。 改成指向 `style.css` 的 `Version:`。判据里有一条专门盯这个,注入 `4.2.0` 会变红。 ## 验证:判据三层 | 层 | 脚本 | 结果 | |---|---|---| | 正向 | `_readme37_check.py` | **45 / 0** | | 双向区分力 | 同一套跑**旧 README** | 命中 **15 条** ⇒ 不是恒绿 | | 反证 | `_readme37_falsify.py` | **13/13 抓到** | | 反证的反证 | `_readme37_meta.py` | **10/10 抓到** | README 里全部 7 个外链逐个 `curl` 验证可达(上游我原本写的 `kratos.design` 连不通,已改成实测 200 的 `github.com/seatonjiang/kratos`)。 ### 写反证时暴露出判据自身三次「没牙齿」 三处根因**同一个**:判「某个词出现过」冒充「判结构」。 | 注入 | 第一版判据 | 根因 | 改成 | |---|---|---|---| | E 删 `[TOC]` 参数表一行 | **漏** | 示例行 `[TOC ... toggle="0" ...]` 自带所有参数名,窗口搜索恒命中 | 判 `^\\| \`toggle\` \\|` **表格那一行**在不在 | | I 把「20 套配色」改成 18 | **漏** | 后文还有一句「20 套全加在一起」,`'20 套' in src` 仍为真 | 收集全文**所有**套数声明,要求集合 == 代码实测值 | | K `### 三、顶部导航` 降级 `####` | **漏** | 原判「不跳级」用 `b-a>1`,差 1 不算跳;反向 4→3 还合法 | 判 16 个分组小节 **# 数全相同** + 名称顺序逐个对齐 | 同时删掉两条我自己写的**恒真判据**(`... or True`、`if False else`)—— 恒真的判据等于没有判据,还长得像验证过了。 ### 本轮最危险的一次事故(已进 pitfalls) 反证脚本**崩溃时把注入留在了 README 里**,而我没发现: 1. 第一版反证的还原写在所有 case **之后**(不在 `finally`)。 2. 脚本在 A 组就因 `TypeError: not enough arguments for format string` 崩了 —— 但 `write(注入版)` 已经执行,`write(ORIG)` 没执行。 3. **第二次重跑时 `ORIG = open(README).read()` 读到的就是被污染的文件。** 后果不是"少跑一组"这么轻: - 污染内容被当成"正确的原文" - "还原"还原的是污染版 - 判据基线整体错位 - 我甚至把带 `update.json` /「打包」字样的污染版**备份成了"全绿基线"** 4. 差点就这么提交上去。靠「反证结尾断言还原后判据全绿」这条自查才发现—— 它报了 `rc=1`,才追出污染。 ⇒ 现在反证脚本的还原在 `finally` 里,且结尾硬断言「文件字节级回到起点」 +「判据仍全绿」,两者任一不成立就非零退出。meta 里也加了结构检查盯这件事。 另外两个小坑:反证脚本硬编码 `TOTAL = 14` 而实际只有 13 组, 输出「注入 14 组,抓到 14」看着完美、其实是**虚报**; meta 脚本里用字面量匹配含反斜杠的锚点,多写一层就 0 命中, 而 0 命中会让那组"看起来跑过了"——改成按行前缀定位整行。 ## 部署决定:不重新发包 README.md 在发布包内(4.2.0 的包里是旧版)。但这是**纯文档改动**, 重新发版会逼所有装了 4.2.0 的站点强制升级一次,只为换个 README—— 不值当,下次有代码改动时自然带上。线上主题目录里那份旧 README 不影响任何功能 (「查看版本详情」走的是远程 `details_url`,见上)。 工单先不关,等用户看过 README 内容确认。
Author
Owner

补充:判据脚本归位时发现「对照靶子」绑错了,顺手修掉

三层判据已归位到 _tooling/yang_theme_test/(_readme37_check.py / _readme37_falsify.py / _readme37_meta.py)。

归位后第一次复跑,正向判据从 45/0 变成 44/1,红的是双向对照那条:

[FAIL] 旧 README 至少被判出 5 条问题(实测 0)

不是 README 出了问题,是判据自己把参照物绑在了会移动的东西上:
原来写 git show HEAD:README.md 取"旧版靶子"。
我一提交 ba12451,HEAD 就变成新版了 ⇒ 拿新版当旧版对照,必然"命中 0 条"。

这条判据从"有区分力"当场变成恒红,而且红得像是"真抓到了问题" ——
踩的是 pitfalls #433(判据恒红比恒绿危险)。

修法:参照物钉死,不指向任何会被我自己的提交改动的东西。

BASELINE_OLD = .../_readme37_baseline_old.md     # 重写前的旧版,从 ba12451^ 导出后固定存放
def old_text():
    if os.path.isfile(BASELINE_OLD): return io.open(BASELINE_OLD).read()
    return git show ba12451^:README.md          # 退回也按固定 commit,不跟 HEAD 走

改后从 _tooling 复跑:45/0,旧版命中 15 条,反证 13/13,meta 10/10 全绿。

⇒ 通用一条:任何"和上一版对比"的判据,靶子必须是钉死的快照或固定 commit,
绝不能用 HEAD / 当前工作树
——否则判据的命运取决于我什么时候提交。

## 补充:判据脚本归位时发现「对照靶子」绑错了,顺手修掉 三层判据已归位到 `_tooling/yang_theme_test/`(`_readme37_check.py` / `_readme37_falsify.py` / `_readme37_meta.py`)。 **归位后第一次复跑,正向判据从 45/0 变成 44/1**,红的是双向对照那条: ``` [FAIL] 旧 README 至少被判出 5 条问题(实测 0) ``` 不是 README 出了问题,是**判据自己把参照物绑在了会移动的东西上**: 原来写 `git show HEAD:README.md` 取"旧版靶子"。 我一提交 `ba12451`,HEAD 就变成新版了 ⇒ 拿新版当旧版对照,必然"命中 0 条"。 这条判据从"有区分力"**当场变成恒红**,而且红得像是"真抓到了问题" —— 踩的是 pitfalls #433(判据恒红比恒绿危险)。 **修法**:参照物钉死,不指向任何会被我自己的提交改动的东西。 ```python BASELINE_OLD = .../_readme37_baseline_old.md # 重写前的旧版,从 ba12451^ 导出后固定存放 def old_text(): if os.path.isfile(BASELINE_OLD): return io.open(BASELINE_OLD).read() return git show ba12451^:README.md # 退回也按固定 commit,不跟 HEAD 走 ``` 改后从 `_tooling` 复跑:**45/0,旧版命中 15 条,反证 13/13,meta 10/10** 全绿。 ⇒ 通用一条:**任何"和上一版对比"的判据,靶子必须是钉死的快照或固定 commit, 绝不能用 HEAD / 当前工作树**——否则判据的命运取决于我什么时候提交。
Author
Owner

用户确认可以关闭。

交付内容:README.md 从 127 行(fork 说明 + 相对上游改了啥 + 发布流程)重写为 499 行功能与用法说明,commit ba12451 已推 main。

更新机制五章按要求删除;旧的「主要修改」七条逐条核对,只有三条半成立,整段废弃;实测纠正了「最新文章优先」(实为热点文章)、「各库保持同步」(gitlab 镜像停在 3.2.0)、阿里云 Code 死链三处过期说法。主体是后台 16 个分组逐项对照代码写的真实键名与默认值。版本号不写死,指向 style.css。

判据三层:正向 45/0(同一套跑旧 README 命中 15 条,有区分力)· 反证 13/13 · 反证的反证 10/10。

遗留项由 #38 接手(自动标签算法效果不佳)。线上 readme.html 是否回滚待用户另行决定。

用户确认可以关闭。 交付内容:README.md 从 127 行(fork 说明 + 相对上游改了啥 + 发布流程)重写为 499 行功能与用法说明,commit `ba12451` 已推 main。 更新机制五章按要求删除;旧的「主要修改」七条逐条核对,只有三条半成立,整段废弃;实测纠正了「最新文章优先」(实为热点文章)、「各库保持同步」(gitlab 镜像停在 3.2.0)、阿里云 Code 死链三处过期说法。主体是后台 16 个分组逐项对照代码写的真实键名与默认值。版本号不写死,指向 style.css。 判据三层:正向 45/0(同一套跑旧 README 命中 15 条,有区分力)· 反证 13/13 · 反证的反证 10/10。 遗留项由 #38 接手(自动标签算法效果不佳)。线上 readme.html 是否回滚待用户另行决定。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: laoyang/wordpress-kratos-yang#37