refactor(编号): F-* 网络设计条目号转语义说明——批次一收尾,代码注释 43 处 + 文档 9 处

批次一(不碰门禁即可清)的最后半批,原派道中途失败且**未留任何改动**(Lead 核实那批文件零 diff 后重派
setpage 执行,14 只文件 / 46 处),测试侧与一张生成器共 9 处由 Lead 收尾。

做法:**逐处先读属主文档 §7 速查表里那条的语义**,再改写成「一句话结论 + §指针」,同号跨文件同一措辞,
无一处机械删号(例:`F-NET-7` → 「唯一读者红线(docs/网络/网络自愈架构设计.md §7 I7)」)。属主登记处
**12 条定义行原样保留**、不删登记族(删了历史行会报未登记前缀),只在该章加停发句。

顺带清掉 **3 处裸形**(`T6` → 「台架实测」、`M4-lite`、`Q1` 语义化)——裸形正是 id-check 校验 2 抓的形态,
属净减。测试侧收尾时两条纪律:主机侧**断言字符串必须保持 ASCII**(`ns_s3_msg.c` 等三处的号在 CHECK 文本
里,改成 `sole reader of the global register` 而不是中文);板端注释可用中文。

生成器 gen_net_instability_svg.py 文案改动 → 同批重跑产物 `docs/images/网络不稳根因总览.svg`:只有那一
行的**框宽随文字自适应**(526 → 551,右缘 1411 未越界),画布 1560x1468 不变,无溢出告警。

⚠ 本笔**只含代码注释面**:该半批的文档面(BSD 函数调用关系 9 处、属主文档 §7 停发句、
生成器与产物那张网络不稳图)已被上一笔 `git add docs tools` 一并收走,两笔合起来才是完整的 F-* 批次。
自证:@build **0 错 0 警**且 Program Size 与改前**逐字节同数**(Code=233900 RO=26104 RW=1
536 ZI=136808,
注释无误伤的机器证据);net_socket 457/457、iec104_serv / net_pending 两套 exit 0;cppchec
k 钩子参数零
发现、coding-standard 0(lftpd_inet.c 那 4 条是存量且该目录本在钩子 exclude 内,用 HEAD 副本对照
甄别过)。
This commit is contained in:
2026-10-27 09:05:27 +08:00
parent 4c74cfa825
commit 0054ae629a
9 changed files with 54 additions and 40 deletions
+19 -14
View File
@@ -127,8 +127,9 @@ void handle_connect_event(net_sock_t *p_sock) {
* ESTABLISHED 之后立刻做:否则抢先 relisten 后到新连接的窗口内
* recv 仍会误得 EOF(把新客户端踢开) */
p_sock->session_dead = 0U;
/* F-NET-17 M3 前置:清可疑电平——探针(LISTENING 期)残留计数会带进新会话,
* 不补此清零则 M3 矛盾判据首轮即被旁路(T6 实测 grep:connect 原不清此字段) */
/* M3 可疑门前置(风暴态三机制,docs/网络/网络自愈架构设计.md §4.1.6):
* 清可疑电平——探针(LISTENING 期)残留计数会带进新会话,不补此清零则矛盾判据
* 首轮即被旁路(台架实测 grep:connect 原不清此字段) */
p_sock->lost_conn_seen = 0U;
/* 新开 Socket 发送缓冲按空闲计 */
p_sock->send_ready = 1;
@@ -167,7 +168,7 @@ void handle_connect_event(net_sock_t *p_sock) {
/* 监听生命周期 P1:新会话开始 —— 清"上一条会话已结束"电平(同 LISTENING
* 分支:必须在转 ESTABLISHED 后立刻做,防抢先 relisten 窗口误 EOF) */
p_sock->session_dead = 0U;
/* F-NET-17 M3 前置:清可疑电平(同 LISTENING 分支) */
/* M3 可疑门前置:清可疑电平(同 LISTENING 分支,§4.1.6 风暴态三机制) */
p_sock->lost_conn_seen = 0U;
/* 使能 KeepAlive(客户端连接保活) */
@@ -238,10 +239,11 @@ void handle_disconnect_event(net_sock_t *p_sock) {
/* 直接返回(中断已读清,不会重复上报) */
return;
}
/* F-NET-17 M3(自愈专项实验 2026-10-13):矛盾态可疑门——芯片 Socket 仍 OPEN(0x05)
/* M3 可疑门(自愈专项实验 2026-10-13;风暴态三机制收口,
* docs/网络/网络自愈架构设计.md §4.1.6):矛盾态可疑门——芯片 Socket 仍 OPEN(0x05)
* 而 TCP 槽 0x00 且本层 ESTABLISHED = 逻辑矛盾(活连接应 0x04):陈旧 DISCONNECT
* (拆链完成滞后锁存,TRAP-NET-12)与"真断开恰被旧拆链覆写槽"在 D20 上不可分辨
* (结构性失明,F-NET-15 Q1)。处置:不吃边沿,置可疑电平返回,交对账①
* (结构性失明,同 GRACEFUL 沉降门放大器根因,§4.3)。处置:不吃边沿,置可疑电平返回,交对账①
* (ESTABLISHED + 芯片 TCP==CLOSED)电平去抖再入本函数(对账与重建合一
* 后=4×100ms,NET_RECON_STABLE_DEATH,让位租约 400ms 不变 + 冷却):
* flag==1 旁路本门 → 正常释放;连接真活则租约内
@@ -272,7 +274,8 @@ void handle_disconnect_event(net_sock_t *p_sock) {
/* TRAP-NET-18 推广(2026-09-24 台架实证):正常 DISCONNECT 释放留下的芯片收尾状态
* 会在复用同一 fd 的下一条连接上以"伪 DISCONNECT"形式投递(实测 accept 后约 10~20ms)→ 该连接被提前释放,应用把已到的 2048B 当整份文件并回报 226;
* 仅**本连接收过数据**时登记沉降(实测触发源 = 收过数据的数据通道被关闭),纯连接即关/只发不收的连接免沉降,保住 TRAP-NET-17 的快速复连时序(:21 @0ms ×50 全通过) */
/* F-NET-15 M1(自愈专项实验 2026-10-12):沉降**无条件**登记。原 recv_bytes!=0 门的
/* M1 沉降门退役(自愈专项实验 2026-10-12;GRACEFUL 无条件化,
* docs/网络/网络自愈架构设计.md §4.3):沉降**无条件**登记。原 recv_bytes!=0 门的
* 受害者由事件时序定义(accept 后 ~20ms 被陈旧 DISCONNECT 杀 → recv_bytes==0 是
* 构造性必然),门对"残渣循环自持"形态失效(n30_repro 背靠背 9/10 失败,E1 实测);
* 门原保护目标(:21 @0ms 快复连)已被监听生命周期单一重建入口延迟化(恢复窗实测 0.3~1s)架空,
@@ -426,7 +429,8 @@ static void fire_event(net_sock_t *p_sock, net_event_t event) {
* 返回值:无
* 限定条件:netTask 上下文(net_accept_locked 内调用,其开头已 net_poll(),
* 驱动缓存新鲜度有保证)
* 函数说明:1. F-MS-9:判据改读**驱动状态缓存**(零 SPI;唯一
* 函数说明:1. 去抖自偿退役(镜像降级为会话投影的直接红利,
* docs/网络/网络自愈架构设计.md §3.3):判据改读**驱动状态缓存**(零 SPI;唯一
* 刷新点=net_poll),**探针去抖删除**——原去抖防的两类瞬态已
* 结构性消除:"刚 listen 尚未生效"显示 TCP=00 永不命中 ESTABLISHED
* 门(E2:LISTEN 可见 100% <=10ms 无长尾);拆链窗假 ESTABLISHED
@@ -456,7 +460,7 @@ void net_lost_connect_probe(net_sock_t *p_sock) {
p_sock->lost_conn_seen = 0U;
return;
}
/* F-MS-9:去抖已删(判据读缓存,两类瞬态结构性消除,
/* 探针去抖已删(去抖自偿退役,判据读缓存、两类瞬态结构性消除,
* 见函数头注释 1);lost_conn_seen 仅作 M3 可疑电平标志用,动手前清零 */
p_sock->lost_conn_seen = 0U;
/* 留痕:事件未收到自愈命中 */
@@ -479,7 +483,7 @@ void net_lost_connect_probe(net_sock_t *p_sock) {
* ① 本层 ESTABLISHED 而芯片已无连接 → 按断开处理(只置事实)
* ② 本层 LISTENING 而芯片已完成握手 → 补做 standalone accept(命中时
* 才回读对端端口做幽灵甄别——本 tick 唯一按需 SPI)
* ⑤(F-NET-2)本层 ESTABLISHED 而芯片静默回收回 LISTEN(0x05/0x01 无
* ⑤(静默回收认领,docs/网络/网络自愈架构设计.md §4.1)本层 ESTABLISHED 而芯片静默回收回 LISTEN(0x05/0x01 无
* DISCONNECT)→ RESYNC 只修本层
* ③ 本层 LISTENING(监听型 fd)而芯片监听失位 → 重建
* ④ 本层 CLOSED(监听型 fd)而芯片不在 LISTEN → 重建
@@ -487,10 +491,11 @@ void net_lost_connect_probe(net_sock_t *p_sock) {
* (重下发因 USE 错误关掉正听着的 Socket,U12 同源事故)
* 4. 去抖分级(100ms/轮;E2:LISTEN 可见 100% <=10ms 无长尾):②=1 轮
* (幽灵甄别挡拆链窗的旧连接 ESTABLISHED);③④⑤=2 轮(2026-09-23 实证:
* 无去抖时监听被反复重建直至放弃);①=4 轮(**勿改小**:F-NET-17 M3
* 可疑电平让位再入,400ms 让位窗=在途投递不可毁的最后租约,E9a 实证)
* 无去抖时监听被反复重建直至放弃);①=4 轮(**勿改小**:M3 可疑门
* 让位再入(§4.1.6 让位红线),400ms 让位窗=在途投递不可毁的最后租约,E9a 实证)
* 5. 动手后冷却 NET_RECONCILE_COOLDOWN_MS 防风暴(U11 被动重同步不占)
* 6. 链路态订阅(F-DRV-13):驱动 link 变化计数变化 → 留痕(不自动重配)
* 6. 链路态订阅(链路态喂料缓存,docs/网络/网络自愈架构设计.md §4.4):
* 驱动 link 变化计数变化 → 留痕(不自动重配)
*/
void net_reconcile_tick(void) {
/* 上次对账轮的时刻(tick) */
@@ -511,7 +516,7 @@ void net_reconcile_tick(void) {
/* 更新本轮起始时刻 */
s_last = now;
/* 链路态订阅(F-DRV-13):net_poll 已喂驱动,这里只看计数变化 */
/* 链路态订阅(§4.4 链路态喂料缓存):net_poll 已喂驱动,这里只看计数变化 */
{
/* 链路变化计数订阅基线(0xFFFF=未建档) */
static uint16_t s_link_last = 0xFFFFU;
@@ -556,7 +561,7 @@ void net_reconcile_tick(void) {
stable_need = NET_RECON_STABLE_DEATH;
} else if ((c.open != CH395F_SOCKET_CLOSED) &&
(c.tcp_state == CH395F_TCP_LISTEN)) {
/* ⑤(F-NET-2 缺口):芯片静默回收——本层 ESTABLISHED
/* ⑤(静默回收认领,docs/网络/网络自愈架构设计.md §4.1):芯片静默回收——本层 ESTABLISHED
* 而芯片已自行把 Socket 收回 LISTEN(0x05/0x01,**不发 DISCONNECT
* 中断**,run8 台架实证)→ RESYNC 语义 */
bad = 5;