From 8eaf7d876209998de70f18b7ec47c400ffe870e8 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Sun, 1 Nov 2026 02:59:52 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=AD=E4=BB=A346=E6=94=B6=E5=B0=BE=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E5=8D=A1C(=E5=AE=9E=E7=8E=B0=E6=8A=A5=E5=91=8A+?= =?UTF-8?q?=E5=8F=8D=E5=93=BA=E7=82=B9):=20T0=E6=94=B9=E5=89=8D=E5=9F=BA?= =?UTF-8?q?=E7=BA=BF=E5=9B=9B=E8=AF=BB=E6=95=B0(gdstyle=E9=9B=B6=E6=81=B6?= =?UTF-8?q?=E5=8C=96/=E5=8D=95=E6=B5=8B62checks/=E6=8E=A2=E9=92=88?= =?UTF-8?q?=E4=B8=A4=E6=A1=A3/=E5=8F=96=E6=A1=A3=E5=AF=B9=E8=B4=A610-12-13?= =?UTF-8?q?-14)=E4=B8=8E=E6=94=B9=E5=90=8E=E5=AF=B9=E6=8B=8D=E5=85=A8?= =?UTF-8?q?=E5=BD=95=C2=B7=E5=AE=9E=E9=99=85=E5=AF=B9=E7=85=A7=E8=A1=A8?= =?UTF-8?q?=E4=BA=94=E8=A1=8C=E5=85=A8=E7=BB=BF(=E7=AD=89=E4=BB=B7?= =?UTF-8?q?=E6=96=AD=E8=A8=80V1/=E7=AE=97=E5=BC=8F=E5=8D=95=E7=82=B9V2/?= =?UTF-8?q?=E5=9B=9B=E6=A1=A3=E5=86=92=E7=83=9FV3/=E6=8E=A8=E5=AE=9A?= =?UTF-8?q?=E7=95=99=E7=97=95V4/=E6=89=B9=E6=9C=AB=E9=97=B8V5=E2=80=94?= =?UTF-8?q?=E2=80=94all=5Fgreen=3Dtrue=E4=B8=83=E9=97=B8receipt=E5=9C=A8?= =?UTF-8?q?=E6=A1=88)=C2=B7=E9=94=9A=E7=82=B9=E8=AF=BB=E6=95=B0=E7=95=99?= =?UTF-8?q?=E6=A1=A3=E4=B8=A4=E6=A1=A3=E5=9B=9B=E6=9D=BF=E5=9E=8B(40/33/30?= =?UTF-8?q?/28=C2=B746/46/46/46=E9=80=90=E5=80=BC=E5=90=88=E5=8D=A1=C2=A72?= =?UTF-8?q?.7)=C2=B7=E7=9B=AE=E6=A3=80=E4=B8=80=E9=A1=B9=E7=99=BB=E8=AE=B0?= =?UTF-8?q?=E4=B8=8D=E9=98=BB=E5=A1=9E(14x14=E6=A0=BC=E9=9D=A2=E6=95=B0?= =?UTF-8?q?=E5=AD=97=E5=8F=AF=E8=BE=A8=C2=B7=E7=94=A8=E6=88=B7=E5=B7=B2?= =?UTF-8?q?=E8=83=8C=E4=B9=A6)=C2=B7=E5=AE=9E=E7=8E=B0=E5=86=B3=E5=AE=9A?= =?UTF-8?q?=E4=B8=89=E6=9D=A1=E5=A4=87=E6=A1=88(=5Fboard=20null=E5=89=8D?= =?UTF-8?q?=E7=BD=AE/=E6=8E=A2=E9=92=88=E4=B8=A4=E6=88=90=E5=91=98/?= =?UTF-8?q?=E9=94=9A=E7=82=B9=E5=85=A8=E8=A1=A8=E8=AF=BB=E6=95=B0=E4=BB=B6?= =?UTF-8?q?)=C2=B7=E5=8F=8D=E5=93=BA=E7=82=B9=E4=B8=A4=E6=9D=A1(battle.md:?= =?UTF-8?q?144=E4=B8=8B=E9=99=90=E5=8F=A5=E9=80=80=E5=BD=B9+10-31=E6=B8=85?= =?UTF-8?q?=E5=8D=95=E7=AC=AC8=E6=9D=A1=E4=BD=9C=E5=BA=9F=E5=A3=B0?= =?UTF-8?q?=E6=98=8E)=C2=B7=E5=AE=A1=E8=AE=A1=E7=BB=93=E8=AE=BA=E8=8A=82?= =?UTF-8?q?=E5=BE=85=E5=AE=A1=E8=AE=A1=E8=90=BD=E7=AC=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- reports/iter46-反哺点-卡C-2026-11-01.md | 12 ++++ reports/iter46-实现报告-卡C-2026-11-01.md | 70 +++++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 reports/iter46-反哺点-卡C-2026-11-01.md create mode 100644 reports/iter46-实现报告-卡C-2026-11-01.md diff --git a/reports/iter46-反哺点-卡C-2026-11-01.md b/reports/iter46-反哺点-卡C-2026-11-01.md new file mode 100644 index 00000000..aa32f109 --- /dev/null +++ b/reports/iter46-反哺点-卡C-2026-11-01.md @@ -0,0 +1,12 @@ +# 迭代 46 GDD 反哺点清单——卡C(2026-11-01) + +> 接收方:待办清单「反哺点专条」通道——用户会话逐条裁决后由文档批写入 `design/`,写入后本清单条目清掉(吸收即死)。 +> 卡A/卡B 反哺条见同目录 `iter46-反哺点-2026-10-31.md`;本文件只收卡C v2.0。 + +1. **[battle.md §棋盘格尺寸公式 :144]** 「可读下限 30px——与结构钳制分开:钳制管算式不越界,下限管玩家能否看清」整句**退役**:整句删除,或改写为「格边长可读性以用户验收的现行画面为基准;结构钳制 [26,46] 管算式不越界」(措辞由文档批裁)。依据=2026-11-01 用户三项裁定(锚点=用户验收的现行渲染值,基座档 14×14=28px 达标;30 无实测背书)+停机呈报读数链(`reports/停机呈报-棋盘格边长口径收口批-2026-10-31.md`)+实现报告 §四锚点留档(`iter46-实现报告-卡C-2026-11-01.md`)。随句建议同节载明判据现行形态:全域禁人造格边长可读阈值,接线守卫=生产写入值与单点算式严格相等,最大板推定读数留痕不作判红。 + +2. **作废声明**:`iter46-反哺点-2026-10-31.md` 第 8 条(battle.md 算例表改数——随「30px 下限适用域」读法甲/乙裁决落文)**作废**——`:148-152` 算例表已随布局几何单点化批(1cdef6ba)退役,无落点;读法甲/乙之争已被 2026-11-01 用户三项裁定取代(下限句退役,不再有适用域问题)。文档批落文时以本条为准,10-31 清单第 8 条不再执行。 + +## 术语表 + +零新增术语——本批新名 `_cell_for` 属代码标识符,不入术语表(登记口径=概念规范名)。 diff --git a/reports/iter46-实现报告-卡C-2026-11-01.md b/reports/iter46-实现报告-卡C-2026-11-01.md new file mode 100644 index 00000000..35fb4a73 --- /dev/null +++ b/reports/iter46-实现报告-卡C-2026-11-01.md @@ -0,0 +1,70 @@ +# 迭代 46 实现报告——卡C 棋盘格边长口径收口批 v2.0(2026-11-01) + +> 批次:迭代 46 卡C(v2.0 重立回编——2026-11-01 用户三项裁定后写卡批重立,合并提交 e7090bc9)。卡A/卡B 已于 2026-10-31 收口合回,见同目录 `iter46-实现报告-2026-10-31.md`。 +> 工作区:`D:\code\g-plan2-iter46`(分支 iter46,卡C 段基点=master 5269ed40,WIP 三件按 v2 卡 §12 判定复用两件返工一件)。 +> 需求卡片:`reports/需求卡片-棋盘格边长口径收口批-2026-10-30.md`(v2.0 定稿,零待裁点)。 + +## 一、卡C 状态 + +**收口**(T0–T4 全落)。游戏行为零变化:算式逐位同式、`set_cell_area` 副作用尾链零动、两条生产调用路径不改、画面像素零变化。本批改动全部落在守卫面=**人造阈值退役+算式单点+13/14 两档入卫**。 + +## 二、T0 改前基线读数(2026-11-01,master 5269ed40 态实测) + +| 读数 | 结果 | +|---|---| +| `python tools/gdstyle_gate.py` | 扫描面 142 件、命中 5 条全在基线、基线外新违规 0、较登记值恶化 0(board_view.gd `max-public-methods=27`/`max-class-variables=31` 持平) | +| 单件跑 `board_gen_reward_test` | all green(**62 checks**——改前基线值) | +| 单件跑 `layout_probe` | 2 档 PASS(旧阈值形态「≥36px」消息,即本批退役对象) | +| 四档取档对账(`resolve_row(1,0)/(2,0)/(3,0)/(3,9)`,临时对账件跑后即删) | 10×10/12×12/13×13/14×14,与卡 §2 第 6 条全符 | +| `battle_layout.tres` 五字段 | stage_h=252/ap_bar_h=44/info_panel_w=240/log_band_h_dig=24/log_band_h_settle=84,与卡 §2 第 8 条全符 | + +行号重锚:卡 §2 行号在 5269ed40 上逐一核实(`layout_probe.gd:15` MIN_CELL/`board_view.gd:206-215` 内联算式/`board_zone_view.gd:91-92` 生产调用路径+`board_view.rebuild` 末尾调用/`board_gen_reward_test.gd:53-69` 冒烟)——卡成文时点(3499638d)至 T0 时点间零漂移。`tools/gdstyle_baseline.txt` 两键登记值与卡 §2 第 5 条一致(:11=31、:22=27)。 + +## 三、实际对照表(改动—验收) + +| # | 需求点 | 改动 | 验收测试(名称+实际落点+尾缀) | 层级 | 真实入口 | 判据绑定面 | 结果 | +|---|---|---|---|---|---|---|---| +| 1 | 探针阈值退役+格边长接线守卫 | `layout_probe.gd` MIN_CELL 常量整行删除;阈值断言换等价断言(:106-109) | 「两档几何不变量+格边长等价」`layout_probe.gd:_ready`(PASS 行 :45 尾缀〔格边长 V1〕;失败路径 :107) | 探针 | `godot --headless --path game res://probe/layout_probe.tscn` | 实读 `cell_size`(生产经 `set_cell_area` 真实写入)与 `_cell_for(n, bv.size)` 同输入严格相等——生产停止调单点算式即红;`grep -rn "MIN_CELL\|可读门槛\|可读下限" game/` 零命中(已跑,exit=1 零命中) | 绿(两档全过,基座实读 40px) | +| 2 | 算式单点(`_cell_for`) | `board_view.gd:210` 改调 `static _cell_for`(:226,逐位同式);:206 注释补唯一落点句 | 「算式单点等价」`board_gen_reward_test.gd:75-76`(尾缀〔格边长 V2〕) | 单元 | `godot --headless --path game --script res://tests/unit/core/board_gen_reward_test.gd` | `set_cell_area` 写入的 `_cell` 与 `BoardView._cell_for(n, avail)` 返回值逐档严格相等(同一事实两路读取,分叉即红) | 绿(四档 4 断言全过;既有四套断言全绿=等价性证明,62→74 checks) | +| 3 | 13×13/14×14 进入冒烟 | `board_gen_reward_test.gd:58` 循环集改四档取样表 [(1,0,10),(2,0,12),(3,0,13),(3,9,14)];:69-74 板型一致+既有两断言(前缀 L%d D%d) | 「格边长冒烟四档板型」同函数(尾缀〔格边长 V3〕) | 单元 | 同上 | 13/14 两档首次被断言:取档尺寸与实表一致、网格高 ≤ 可用高−24、格边 ∈ [26,46](既有断言逐字保留) | 绿(四档 12 断言全过,10/12/13/14 实测 41/33/31/28px) | +| 4 | 最大板推定守卫(留痕型) | `layout_probe.gd:_check_one` 零尺寸前置(:112-114 记红)+13/14 推定留痕(:116-119 采集,:47-50 PASS 后打印) | 「最大板推定留痕」同探针(尾缀〔格边长 V4〕) | 探针 | 同行 1 | ①零尺寸前置(size ≤ 0 记红);②推定读数打印并与本报告 §四留档锚点读数逐值对拍,不一致=卡 §9 L3 #2 呈报(禁实现侧改锚) | 绿(基座 30/28、全屏 46/46——与锚点逐值一致,零对拍偏差) | +| 5 | 批末收口 | 全批 | 代码域闸 `tools/run_all_gates.sh --code` | 全量闸 | `tools/run_all_gates.sh --code` | 所选域全绿回执(`game/tests/.gates/receipt.json`) | 绿(`all_green=true`,七闸 00/01/02/03/05/09/10,commit e3e206d0,域=code·scope=related[presentation],`changed_vs_baseline=[]`) | + +**测试削弱申报核对**(卡 §8 申报全集四条,实际执行逐条对上):①探针阈值断言删除=申报 1 的执行面,补偿三件全落(等价断言/四档结构钳制/推定留痕对拍);②PASS 消息改写=申报 2;③循环集 2→4 档纯增量、样本值 (1036,460) 未改、既有两断言逐字保留=申报 3;④未发生恢复阈值、删旧断言、放宽区间、换读取入口任一项=申报 4 成立。另:既有几何不变量(三区非零/不越视口/互不重叠/view 含于 D 区)与视口档位表零改动(卡 §14.1 核对通过)。 + +## 四、锚点读数留档(两档视口 × 四板型——未来批次对照基准) + +锚点=用户验收的现行渲染值(2026-11-01 用户裁,卡 §2 第 7 条)。本批探针实跑复核: + +| 视口 | board_view.size(实读) | 10 板 | 12 板 | 13 板 | 14 板 | +|---|---|---|---|---|---| +| 基座 1280×800 | (1022.0, 454.0) | **40px(实读)** | 33px(单点算式读) | **30px(推定打印)** | **28px(推定打印)** | +| 16:9 全屏 1920×1080 | (1662.0, 734.0) | 46px(实读·钳制顶格) | 46px(单点算式读) | **46px(推定打印)** | **46px(推定打印)** | + +基座档 10 板实读经等价断言与 `_cell_for(10, (1022,454))` 严格相等(V1 守卫当轮执行);13/14 推定由探针 V4 打印(当轮留痕);12 板与全屏 10/12 三格由单点算式读数件在两档真实可用面积上读出(一次性临时件,当轮跑批留痕后即删):基座 12 板=33px、全屏 10/12=46px。全表与卡 §2 第 7 条锚点逐值一致,零对拍偏差。 + +## 五、实机目检总清单(登记不阻塞) + +1. **第三关 14×14 板格面数字清楚可辨**——2026-11-01 用户已实际背书现行画面(锚点裁定),登记照留(卡 T4)。 + +## 六、实现决定记录 + +代拍板白名单 6 项全部按卡执行(`_cell_for` 局部变量名与注释措辞/四档取样表用字典数组/探针消息文案与 PASS 措辞/尾缀〔格边长 V1–V4〕编排/`BoardViewScript` 常量名/`bv.get("_board")` 取值形态),零超范围裁决。超白名单备案三件(均属测量面承载,判据零扩张): + +1. **探针 `_board == null` 前置**(`layout_probe.gd:104-105`)——卡片明列判据只有零尺寸前置与等价断言;null 前置防「内部直查遇 null 即脚本错误静默跳过剩余断言」(test-conventions §7 失败模式),属测量面防御。撤销方式=删该分支(等价断言改回无条件求值)。 +2. **探针新增两成员 `_cell_reads`/`_est_reads`**(`layout_probe.gd:17-18`)——PASS 行基座实读与推定留痕打印的承载面;探针不在 S13 扫描面,无预算约束。撤销方式=删成员与两处打印(PASS 行退回无读数形态)。 +3. **单点算式锚点全表读数件**(本报告 §四 12 板与全屏 10/12 三格补读)——卡 §2 第 7 条锚点表含四板型,探针打印只覆盖 13/14(卡定死),全表留档用一次性临时脚本对两档实读可用面积逐板型读 `_cell_for`(当轮跑批留痕后即删)。撤销方式=无(纯读数,不落码)。 + +## 七、遗留读数义务 + +零。本批无数值改动,MC/verifier 零跑(卡 §4 范围边界 6)。§四全表读数已当轮留痕,无待补。 + +## 八、S13 结构预算与批末闸对账 + +- `board_view.gd`:`max-public-methods` **27→27**(`_cell_for` 私有名不计数)、`max-class-variables` **31→31**(零新增成员——钳制界未外提)、无 NEW 键;gdstyle 全批「基线外新违规 0、较登记值恶化 0」。 +- 探针与测试件不在 S13 扫描面(扫描面=产品码,测量面直构为既有惯例)。 +- 批末代码域闸:`tools/run_all_gates.sh --code` 全绿(回执落 `game/tests/.gates/receipt.json`,T4 当轮执行)。 + +## 九、独立验收审计结论 + +独立验收审计由未参与实现的子代理执行,报告=`reports/iter46-验收审计-卡C-2026-11-01.md`。结论:**待审计落笔**(本节在审计报告落位后回填结论行;未过不得合并)。