# LDA **Repository Path**: i4hub/LDA ## Basic Information - **Project Name**: LDA - **Description**: LDA · Agent-native 光子芯片(PDA)+量子芯片(QEDA)设计软件:AI agent 递归自举核心求解器 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-19 - **Last Updated**: 2026-09-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LDA · Agent-native 光子/量子芯片设计软件 > LDA(Lightwave Design Agent)= 光子芯片(PDA) + 量子芯片(QEDA) 的开源、主权、Agent-native 设计软件。 > 核心主张:**底层核心求解器由 AI agent 递归自举开发**,人类做架构与验证,AI 不进入判决路径。 > **📦 v0.9.0 完整发布说明:`docs/RELEASE_v0.9.0.md`**(15 commit 全量变更 · 商务闭环四要素 · 安全审计 · 已知限制) > > 当前版本:**v0.9.69**(2026-09-11 · **P0 沙箱隔离护栏正式注册进 CI core · CI core 158→159**:把 `run_solver_writer_sandbox_smoke.py`(四判据:①隔离等级可报告 strong/weak ②weak 红线 allow_weak_isolation 不为真即拒、strong 默认可构造 ③轻量闭环 v0 FAIL→v1 PASS 行为等价 ④strong 真隔离降权 nobody 读 /etc/shadow 被拒 + 网络命名空间禁外网)纳入 core 门禁;Windows CI 走 weak(④自动跳过)、强隔离仅生产 Linux 验证;零新物理、零回归、上生产前必有的真隔离门禁从「文档声称」升级为「CI 真在跑」。红线守住:solver_writer 候选执行已从伪沙箱升级真沙箱,本护栏固化该事实防回潮。) > 上一版:**v0.9.68**(2026-09-11 · **P1① 自证桩升级:B11 升严格独立 · 三分类 28→29 / 24→23 · CI core 157→158**:①**B11 真·升严格独立(环形谐振器 drop 端口谱形匹配)**:独立候选 = ring_fsr_peakfit_b11(数值扫 add-drop 环 drop 口传递函数、峰周期拟合 FSR、再算 |FSR−target|/target 与 golden 闭式 FSR 同一标量;B4 同族谱拟合族,方法学独立于闭式 FSR)。基线残差 4.35e-9、tol=0.03(余量 ~6900×)、判据 D 真数值(跨网格残差跨度 605×、恒 >>1e-12 非代数恒等)、反向 n_g+10% 信号 0.0905 ≫ tol 必 FAIL。②**B16 如实留自证桩**:rib-MMI 严格求解器缺失(symmetric-slab EME 非同物理对象,差 ~13%、余量仅 ~1.3×),沿用 B21 教训不硬接,不在本次升级范围。③**全量计数守卫同步**:maturity M5 (29,1,23)、webui ledger 29/1/23、低置信自写闭式 14→13、three_class_consistency 三分类守恒;新增 run_b11_fsr_peakfit_smoke.py(四判据入 core)。**红线守住**:纯数值峰周期拟合 + 闭式同标量、零新物理、零回归。) > 上一版:**v0.9.67**(2026-09-10 · **A 档有源扩展 #1:B33 探测器 RC 带宽锚 · 三分类 27→28 / 24→23 / 题数 52→53 · CI core 157 条**:①**B33 真·新增严格独立锚(A 档有源首锚)**:pin/APD 探测器 3dB 带宽 `f_3dB=1/(2π·R·C)`、`C=ε·A/d`(反偏结电容闭式·design_rule_anchor);独立候选 = RC 暂态梯形法数值积分 + 最小二乘拟合 τ(与解析闭式 1/(2π·R·C) 方法学独立,判据 D 真数值收敛,n_time 加密残差单调下降);基线残差 1.66e3 Hz、tol=4e3(≈2.4× 余量)、反向 R±10% 信号 ~2.9e8 Hz ≫ tol 必 FAIL。②**B35≡B15 去重**:原计划「B33+B35 两道低风险锚」经核查 B35(布拉格波长 λ_B=2·n_eff·Λ)与已有 B15(Bragg 光栅中心波长,已是严格独立锚)物理同源、候选同 TMM 族 → **不新建 B35,复用 B15**(避免重复投入,符合铁律);有源严格锚计数 = B15+B28+B29+B30 = **4 道**。③**全量计数守卫同步**:falsifiability `MIN_INDEPENDENT` 25→26、`d_criterion` `indep_ids` 22→23、`webui ledger` 28/1/23、`maturity` M5 (28,1,23)、`three_class_consistency` 三分类守恒;B33 进 `BENCHMARK_ORDER`(总题 52→53)。④**B33 候选 + 判据 D 全绿**,CI core 维持 **157 条**(B33 接入既有 4 道护栏 smoke,未新增被判,零回归)。**红线守住**:纯电路闭式 + 数值 ODE 拟合,零载流子求解器/零增益动力学/零 TCAD/零 A 级工具,不破三不做/主权/验证纪律任何一条。) > 上一版:**v0.9.66**(2026-09-10 · **VMM harness/API 集成 + B16 修正 · CI core 157 条**:①**VMM 落地 harness**:`benchmarks.py` 注入每锚 `maturity_tier`/`provenance`/`upgrade_path` 三字段(VMM 分类与 routes/harness 权威三分类同源,杜绝标签≠行为);②**B16 真 bug 修正**:MMI 1×2 自映像 golden 因子 `3 → 9/4`(标准 Soldano&Pennings 抛物线色散,W=2.8µm 真实器件 27.3µm≈实测 27µm<1%;旧因子给 ~36µm 高估 33%),`golden.py` + `device_library.py` 数值核同步修正,零新物理;③**`/api/verification_ledger` 对外暴露 VMM**:每锚 tier/provenance/upgrade_path + 三分类/来源聚合(vmm 块);④**VMM 底线护栏补建文件**:`run_maturity_baseline_smoke.py`(M1–M5:字段齐备/层级不谎报/低置信可见;此前已在 CORE_SMOKES 登记、本轮补建文件并实跑 PASS,CI core 维持 157 条);⑤**两文档入库**:`docs/verification_maturity_model.md` + `docs/self_certified_anchor_inventory.md`。⑥**B2 升严格独立(VMM 终审锁)**:SOI strip 波导 TE 基模 n_eff 由自证桩经 FV-FDM 全矢量(2.644)+PWE 平面波(2.614) 双方法学独立全波数值终审(golden=EIM 2.651 居二者间,判据 C5 成立),升 Tier-3 严格独立;三分类 26/1/25→27/1/24、低置信自写闭式 15→14,打永久终审锁(`benchmarks._VMM_FINAL_VERDICT["B2"]`)防反复审议。红队锚面 fuzz 护栏已于 v0.9.64 入 core,本轮仅补 VMM 基线护栏。**CI core 157 条**) > 上一版:**v0.9.65**(2026-09-10 · **T3 设计侧虚拟制造 2.0 可封装性链 bootstrap · 虚拟制造 1.0 正式标注就位 · CI core 156→157**:①**虚拟制造 1.0 已就位(此前已实现、本轮正式点名)**:工艺波动链路 = `tapeout_pipeline.py` S1 PDK 加载 / S2 DRC / S3 工艺角扫描(SS·TT·FF,公开文献典型 w_scale 0.95/1.0/1.05) / S3.5 几何寄生 / S4 LVS / S5 实测回流 + `yield_anchor.py` S13 良率锚(解析 Φ 闭式 ↔ 固定种子 Monte-Carlo 互证),已在 CI core 长期实跑(run_tapeout_smoke PASS),本轮仅在文档/看板正式标注「虚拟制造 1.0 已就位」,零新物理、零回归。②**2.0 可封装性链 bootstrap(借公开数据与方法,与 LDA 设计方法论一致)**:新建 `lda_pdk/packaging_tolerance.py`——耦合容差 `η=η0·exp(−2(dx²+dy²)/MFD²)·exp(−(π·MFD·θ/2λ)²)`、横向容差 `dx=MFD/2·√(−2ln(η_target))`、封装良率 Rayleigh CDF `Y=1−exp(−R²/2σ²)`(复用 S13 闭式族),接 P-CPO 间距几何下界(`cpo_engines.PITCH_FLOOR_UM`)做合规判定;设计改动→封装良率预测同向变化且可复现(T3 验收)。provenance 诚实标 `self_authored_with_check`:σ_align / MFD 为**公开假设值**(ITU-T G.652 MFD=10.3µm、公开文献工艺角),**不宣称 MPW 实测验证**,待 T2 实测回填。新增护栏 `run_packaging_tolerance_smoke.py`(含 7 类反向判据入 core:σ_align↑→良率↓、MFD↑→良率↑、固定种子可复现、解析↔MC 互证 Δ≤1e-2、η 随偏移单调下降、pitch<下界→pitch_compliant=False 不假绿、provenance 诚实标注)。**CI core 157 条**) > 上一版:**v0.9.63**(2026-09-09 · **WebUI 权限管理审计补漏(四关)· CI core 139→141**:杜先生指令「再审计权限管理」→ 抓出并修掉四类问题——①**P1 `POST /api/admin/config` 未授权返 HTTP 200**(`store.set_config` 拒绝分支漏带 `code:401`,监控按状态码统计漏记全部未授权尝试)→ 补 `code:401`;②**P2 六个重计算端点游离登录闸门**(`agent_loop` 直调 34.9s / `band_loop` 19.9s 匿名可触发且无并发护栏,与 `ring_fdtd/design_loop` 同类漏网)→ 并入 `HEAVY_POST_PATHS` 登录闸门;③**P2.5 新护栏启发扫出第 7 个漏网点 `/api/verify`**(跑全 48 锚判决回路,`candidate=perturb/l3_ai` 触发真求解器)——审计 grep 全部 smoke 发现**无任何判据守护「重计算端点须入闸门」纪律**,补 `run_heavy_post_gate_smoke.py`(5 判据纯静态 ast:HEAVY 成员⊆POST_ROUTES 注册 / run_* 内核端点全部入闸门 / 与 PUBLIC_RATE_PATHS 互斥 / 剔除 agent_loop·verify 双反向必须 FAIL);④**P3 公开写端点无限流**(`opinion/submit` 30 连打全 200,垃圾可无限堆后台)→ 4 个获客/生态投稿端点(opinion/purchase/ecosystem.submit/store/guide)加 IP 限流 10 次/10 分钟(`store.public_write_guard`,复用登录限流桶;`_dispatch` 加 PUBLIC_RATE_PATHS 分支),补 `run_public_write_limit_smoke.py`(9 判据含反向 limit=1、端到端 10×200+第11×429+换IP恢复、**先隔离 STORE_PATH 临时目录再 import 全程不碰 dev 库**)。agent/chat 经读码+实测判轻量 FAQ 豁免留公开。审计实测教训:改 routes/store 后**必须先重启被测实例**再实测(旧实例 import 期加载旧代码,曾误判「修复未生效」,重启后全 401——「标签≠行为」第 8 次血案入铁律)。四条相关回归全绿(api_v1 19/19 · admin_token 7/7 · store_auth_gate 10/10 · webui_api 90实跑+78静态)。**CI core 149 条**) > 上一版:**v0.9.62**(2026-09-08 · **⑮ WebUI 消费 tapeout / geometry_drc 接口(遗留③收口)· CI core 138→139**:把 v0.9.60 已做好的主权几何内核(`lda_pdk.tapeout_pipeline.run_tapeout_pipeline` 流片管道全链路 + `lda_l2.gds_drc.check_geometry` 几何 DRC)从「仅 API 层」接到 WebUI——新增 `/api/tapeout` 与 `/api/geometry_drc` 两个 HTTP 端点,后端自动从器件几何生成版图 GDS 喂入 S3.5 寄生 / S3.6 几何 DRC;前端 index.html 新增「⑮ 流片签核 Tapeout + 几何 DRC 快查」面板,输入器件字典 JSON 即展示 DRC/工艺角/LVS/寄生/几何 DRC 全流程与诚实边界。新护栏 `run_webui_tapeout_drc_smoke.py`(14 判据,含反向:极细波导 width=0.01µm 必触发 drc_passed=False + 几何违规,证端点接真实内核非假绿;不存在的器件 kind 诚实拒绝而非 500)。**CI core 139 条**) > 历史版本:**v0.9.61**(2026-09-08 · **BraggMirror GDS 导出收口 + E5 语料几何补全 · CI core 137→138**:BraggMirror 此前在 layout_elements 抛「暂不支持导出」⇒ 无 GDS ⇒ 进不了几何 DRC 与寄生估算(v0.9.60 审计遗留①);改用**侧壁调制布拉格光栅波导**几何(段长由 LDA 自有 slab 求解器按 λ0/(4·n_eff) 导出),几何 DRC 不假红(同层相接连通域豁免)、寄生可跑、诚实边界守住(n_eff 来自平面波导求解器 < 体材料 3.48,≠ 器件库一维 TMM 锚,两者只共享「四分之一波长堆叠」构造);新护栏 run_bragg_gds_smoke.py(含反向 A/B)。另把 E5 语料 geometry 缺的 W_mmi_um=2.8 / L_mmi_um=27.0 补上(原文 2.8×27 µm² footprint,v0.9.58 多源确认),并在实证锚 smoke ⑧ 加防回潮断言锁死。**CI core 138 条**) > > 历史版本:**v0.9.60**(2026-09-08 · **④ DRC 全链路收口确认(盘点式)** · 抓出并修掉几何级 DRC 三处失真:细分步长当线宽(假红)/ min_width_ok·min_spacing_ok 两标志恒 True(假绿)/ 间距剪枝致真违规漏检 · 补 S3.6 几何级 DRC 与 S3b 性能角进流片链 · 2 条新 smoke(26 判据)· **CI core 138 条**) > 历史版本:**v0.9.59**(2026-09-08 · **治理⑤ 收尾:torch/numba/cupy 可选后端残留硬依赖清零 · 顶层 GPU 脚本缺后端时由 ImportError 裸崩改为「打印安装指引 + 退出码 2」 · 新增全包静态护栏 · CI core 134→135 条**):**v0.9.53 已把核心导入链(`fdtd3d_torch` / `fdtd3d_numba`)改成 try/except 优雅降级,但 4 个顶层 GPU 脚本仍是模块级裸 `import torch`,另有 2 个同类脚本缺入口守卫 ⇒ 环境无 torch/numba 时**直接 ImportError 裸崩**,而不是「打印安装指引后退出」。本轮改 **5 个文件**:`activate_gpu_fdtd3d.py` / `run_fdtd3d_torch_selfcheck.py` / `run_large_grid.py` / `verify_gpu_focused.py` 加 `_HAVE_TORCH` 守卫 + 入口 `return 2`(附清华 TUNA CUDA 轮安装指引);`benchmark_fdtd3d_torch.py` 缺 torch 时**自动剔除 torch-cpu/torch-cuda 后端、照常跑 numpy/numba-cpu 基准**(而非崩);`run_fdtd3d_numba_selfcheck.py` 加 `_HAVE_NUMBA` 入口守卫。**有后端时行为逐字不变**(守卫不触发,零回归)。**护栏**新增 `run_optional_import_guard_smoke.py`(**16 判据**):① **ast 全包静态扫描**(`lda/` 下 **393 个 .py**)在模块级(非 try / 非函数类体内)不得裸 import torch/numba/cupy —— 范围是**全包**而非硬编码清单,新增文件自动纳入,杜绝「清单会增长 ⇒ 断言静默漂移」(v0.9.41 铁律);② 文件名含 torch/numba/cupy 的模块必须有 `HAVE_*` 守卫标志(兼容 `_HAVE_TORCH` 与 `HAVE_NUMBA` 两种历史命名);③ **屏蔽 torch/numba/cupy 的子进程**里 runpy 实跑 4 个顶层 GPU 脚本,断言「打印指引 + 退出码 2」而非裸崩。🔴 **反向测试**:R1 扫描器**双向标定**(顶层裸 import 坏样本必被抓 / try 内与函数内延迟导入必放行 / 缺守卫源码必判缺守卫);R2 顶层裸 import 的**坏脚本实跑必须裸崩退出码 −999**,证明步骤③真能区分「优雅降级」与「硬依赖」。**过程中自己踩并修掉两坑**:① 自动发现条件若只按「源码含 torch + 有 `__main__`」,会把求解核模块(`fdtd2d_ring.py` 等,其 demo 型 `__main__` 会真启动 >300s FDTD)也拉进来 ⇒ 收窄为「`run_`/`activate_`/`verify_` 前缀 + 有 `_HAVE_TORCH` 守卫」;② `runpy` 只改 `sys.argv[0]`,残留的 `argv[1]` 会被带 argparse 的脚本当成未知位置参数 ⇒ 引导脚本内显式 `sys.argv=[script]`。未改动:52 锚计数 / 三分类 26/1/25 / 任何物理判据 / golden。**核心求解链对 torch/numba 的硬依赖至此为零。**) > 历史版本:**v0.9.57**(2026-09-07 · **② E5 第二条独立求解路线:2D FDTD 重建并与 EME 对账 · 负结果钉成断言 · CI core 134 条**):**给 E5(MMI 1×2 过量损耗,golden=0.05 dB / tol=0.1 dB)补上方法学独立的第二条求解路线,两法都把它判在 ~4 dB,且两法分歧本身即超 tol**。⚠️ **先订正 v0.9.56**:上一版记「2D FDTD 直波导控制失败、实现删除不入库」——**该结论已被推翻**,失败源于两处**实现缺陷**(scipy `eig_banded` 对称三对角应为 `(2,N)` 却用 `(3,N)` ⇒ n_eff 解成 16.18;入射监测面落在初始波包内部 ⇒ 下游 27% 能量根本不穿过该面),非方法之病。路线① **2D TEz 全场时域 FDTD**(`lda_solver/fdtd2d_mmi.py`,重建入库):控制实验**直波导 10 µm 上 −0.00001 dB**(求解核可信);MMI 实测 dl=0.05→**4.18 dB**、dl=0.04→**3.29 dB**。其自身二阶数值色散**经实测验证**(直测离散轴向波数 β̃ 与解析式差 6e-5):拍长相对误差 ≈1721·dl²,dl=0.05 ⇒ 4.30% ⇒ excess 不确定度 **0.86 dB**;要压到 0.03 dB 需 dl≈0.0093 µm ⇒ ~5e11 网格点步 ≈2.6 h/次 ⇒ **不可用作门禁**。路线② **2D-EIM 本征模展开 EME**(`lda_solver/mmi_eme.py`,v0.9.56 入库):本征分解本身**正确**(与解析超越方程交叉校验 max|Δn_eff|=4.4e-3),但建模层不合格——**自成像保真度只有 0.8746(理论上限 0.9898)**,且**对拍长 L_π 病态敏感**:L_π 仅 **±1%** 误差即让 excess 摆动 **0.199 dB = 2×tol**,±5% 达 **2.82 dB = 28×tol**(而本模型 dl 从 0.04 细化到 0.005,L_π 就从 21.05 漂到 21.48,即 2%)。锚题 L=27 µm 处实测 excess=**4.33 dB**;即使放开 (L, y_split) 全平面寻优,模型自身最优也只有 **0.436 dB**(T=0.90),仍超 tol 4.4 倍 ⇒ **换几何解释也救不回来**。这是 roadmap 已判 E5 违反 **C2+C5** 的**实测确认**(此前只是论证)。🔴 **诚实边界**:**不挂 E5 candidate 字段**(挂上必红或被迫放宽容差,两者都违反纪律);E5 保持自证桩。新增 `run_fdtd2d_mmi_smoke.py`(**13 判据**,含 C1 保幅、模式交叉校验、时域收敛、方向性通量、**两法分歧 > tol**、判据 D 宽度扰动 2.41 dB、色散预算与 O(dl²) 收敛、已知缺口锁)+ v0.9.56 的 `run_mmi_eme_smoke.py`(11 判据)。🔴 **v0.9.57 新教训(同类第 6 次「标签≠行为」)**:**横向网格偶数 ⇒ 无 y=0 节点 ⇒ 整个结构被平移 dl/2、MMI 有效宽度少 dl**(0.9% 偏差)。这曾在 dl=0.05 上伪造出「两法差 0.03 dB」的**假对账**,换到 dl=0.025 立刻暴露为 1.18 dB。**对账前必须先校验两侧栅格严格同一**(EME 用 `Ny|1`,FDTD 必须同)。另:输出幅度若只取 |Σφ·Ẽ|² **不区分传播方向**,回程光会被相干叠加,实测可让远端监测面比近端"少 0.3 dB 损耗"(物理上不可能)⇒ 改用方向性 Poynting 通量。CI core 133→134。) > 历史版本:**v0.9.55**(2026-09-07 · **① IR 逆设计扩面 · IR→D-38 注册表四类器件闭环 · CI core 132 条**):**把 L0 IR 桥接层从「仅 Waveguide+RingResonator」扩到 D-38 声明式逆设计注册表四类已验证器件**——`lda_ir/bridge.py` 新增 `ir_to_inverse_design`/`ir_to_multifoundry_inverse`,IR kind 与注册表 kind 命名一致(RingResonator/BraggMirror/RingAddDrop/Transmon),foundry 工艺窗口注入 extra 与 `_inject_process_params` 同源;`lda_ir/photon.py` 补 BraggMirror/RingAddDrop 工厂并加入 KNOWN_KINDS(Transmon 已在 quantum.py)。四类经桥接真跑通并 accepted(Bragg 3D FDTD vs TMM 方法误差 0.0013,C 级自主),多 foundry 对称派发正常。新增 `run_ir_inverse_design_smoke.py` 反向可测护栏(未知 kind→NotImplementedError、篡改注册表删 kind→闭环不通过,证明路由到真实注册表非副本)。🔴 **铁律守住**:判据 D 满足、测生产代码非副本、纯接线扩面零新物理、CI core 131→132(新增 IR 逆设计护栏 smoke 入 core)。) > 历史版本:**v0.9.54**(2026-09-07 · **治理① 覆盖矩阵 K 证据收尾 · E8/E9 登记为 GratingEff/YbranchLoss 真宿主 · 三分类 26/1/25 不变 · CI core 131→132**):**把 v0.9.51 升格进 52 题集的 E8/E9 两道真·引擎级判决锚正式登记进覆盖矩阵宿主表**——原矩阵只列 B5◐/B6◐ 名义守则桩、E8/E9 悬为「零宿主」,构成 K 证据口径失真(真判决锚在集内却不在矩阵内)。本版 `run_anchor_coverage_matrix.py` 三处修:①`ANCHOR_HOSTS` 增 E8→engine_gratingeff(严格独立●)、E9→engine_ybranchloss(降级量级参考△,诚实边界 c1 未标定真实 PDK 不进死标量判决列);②覆盖分类由 2 路(严格/自证桩)升 3 路 `trichotomy()`,**镜像 `harness.candidate_class()` 判序**(先查 `candidate_status==degraded_ordinal` 再查 `candidate ∈ BENCHMARK_CANDIDATES`)杜绝 E9 被误计为严格;③全文档「50 集/48 集」陈旧字面扫清为「52 集」。矩阵 §1 现同时展示真判决锚(E8●/E9△)与名义桩(B6◐/B5◐),K 证据失真闭合。🔴 **铁律守住**:判据 D 满足、规模结论实测、测生产代码非副本、纯披露修正零回归。新增 `run_coverage_deadzone_closure_smoke.py` ⑥段 **E8/E9 反向护栏**(撤 E8/E9 后 GratingEff/YbranchLoss 必落回零进集锚宿主)⇒ 护栏会响。CI core **131→132**(扩的是既有 smoke 断言,未新增脚本;v0.9.55 起并入 IR 逆设计护栏)。) > 历史版本:**v0.9.53**(2026-09-07 · **torch/numba 残留硬 import 清除 · B5/B7 回退下限护栏 · CI core 129→131**):**根除 T-8 去 GPU 后残留的模块级硬 import**——`fdtd3d_numba.py` 的 `from numba import njit, prange` 与 `fdtd3d_torch.py` 的 `import torch` 原为模块顶层硬导入,缺失库时模块导入即崩溃(与同包 `fdtd3d_waveguide_numba.py`/`adjoint_fdtd3d.py` 的优雅降级范式不一致)。改为 try/except 优雅降级(`_HAVE_NUMBA`/`_HAVE_TORCH` 标志 + 无 numba 时 no-op `njit`+`prange=range` 退纯 python + torch 缺失时入口明确抛 ImportError 指引装 `[torch]` extra),核心导入链(lda_solver / lda_webui.app)**不再硬依赖 torch/numba**。新增反向护栏 `run_torch_numba_optional_smoke.py`(3 判据入 core):[A] 在场环境两后端 `_HAVE_*=True`;[B] 子进程屏蔽 `import torch`/`numba` 后 `fdtd3d_*` 优雅降级 + `lda_solver`+`lda_webui.app` 仍可导入 + 入口抛清晰 ImportError。新增回退下限护栏 `run_b5b7_rollback_floor_smoke.py`(10 判据入 core):[A] 离线近似主路径可用(B5 numpy-overlap >3.0 几何相关、B7 numpy-fdtd 有限负 dB);[B] ORACLE 全不可用时回退下限精确持有(B5=3.0dB / B7=-40.0dB)+ 诚实标注 source=design-anchor;[C] 反向护栏 ORACLE 在场须绕开下限(sentinel 99.9 验非恒定常量)。🔴 **铁律守住**:pyproject `dependencies` 仅 numpy/scipy/jsonschema,torch/numba 仅为 `[torch]`/`[numba]` extras;护栏反向测试会响(旧硬 import 必使 [B] 红)。CI core 129→131。) > 历史版本:**v0.9.52**(2026-09-06 · **P1 全量自动布线器重写 · 空间索引+局部窗口 A*+增量占位 · 根除旧 router O(N³·⁵⁷) 增量瓶颈 · 实测 O(N²·⁵⁹)→O(N¹·¹⁶) · 正确性零回归 · CI core 128→129**):**纯性能收益、正确性零回归**——旧 `router.py` 每次 `astar_route` 把**全部**障碍重栅格化进 `blocked`、`route_net` 每候选遍历**全部**障碍、每条 net 追加进障碍集 ⇒ 增量布线端到端 ~O(N³·⁵⁷),~50 网即失工程可用性。重写三件套:①`spatial_index.py` 均匀网格哈希 `ObstacleIndex`(局部查询 O(局部));②`router_p1.py` 局部窗口 A*(每网仅栅格化附近障碍)+ 增量占位(`insert_path` 回填已布路径供后续避让)+ **全局 A* 兜底**(任何局部失败退回旧精确行为,永不假无解/假碰撞);③生产接线 `route_sim.py` 链路级布线改走 `route_net_p1`。正确性护栏 `run_router_p1_smoke.py`(20 判据,入 core):与旧 `route_net` 逐位一致(默认全 extent 窗口)5 场景 + `astar_route_p1`==`astar_route` 5 场景;Router 合法最优(等长/无碰撞/未假封死)+ 无分歧封装;无解诚实退化;网-网避让;性能反向护栏(N=40 旧 8.8s vs 新 0.08s ≈116×,N=320/160 增长 2.7×<4 证明未静默退回全局,共享索引 vs 逐网无索引 459×)。🔴 **铁律守住**:判据 D 满足、规模结论实测、测生产代码非内嵌副本、纯性能收益正确性零回归。CI core 128→129。) > 历史版本:**v0.9.51**(2026-09-06 · **corpus 失真区升格 · E8/E9 实证锚进 52 题集 · K 证据失真消除 · 可被外部验货比例 25/50 → 26/52 · CI core 128 不变**):**把覆盖矩阵里的 corpus 失真死角补进 48 题集(不伪造新锚、不接新求解器)**——E-YBRANCH-LOSS / E-GRATING-EFF 两道公开实测锚,早已是真·严格独立判决锚(golden=公开文献实测死标量、candidate=引擎解析模型、死标量比对),仅没正式升格进计数口径,导致 B5/B6 被判「corpus 证据、在 48 集外」造成 K 证据口径失真。本版升格登记:①`benchmarks.py` 新增 **E8**(光栅耦合器峰值耦合效率 0.5·sin²(π·ff)·exp(−θ²/2σ²) 解析模型 vs 实测 E-GRATING-EFF 0.42±0.05,rel≤3.3% 干净 → **严格独立**);②新增 **E9**(Y-branch 过量损耗 c1·θ² 唯象模型 vs 实测 E-YBRANCH-LOSS 0.28±0.02,rel≈43% 模型粗糙度、c1 未标定 → **降级量级参考 `degraded_ordinal`,不进死标量判决列、不拟合回算**);③`verification_adapters.py` 注册两引擎候选 `engine_grating_eff` / `engine_ybranch_split`(取自 `lda_design.loss_engines`)。三分类刷新:**严格独立 25 → 26 · 降级 0 → 1 · 自证桩 25 → 25(和=52)**;题库 50 → **52 题(B1-B30 + E1-E9 + S1-S13)**;可被外部验货比例 **25/50 → 26/52**。🔴 **诚实边界**:E9 的 c1=0.004 dB/deg² 工艺标定唯象系数(未用实测回算),θ=10°→0.4dB vs 实测 0.28dB 偏离 ~43%,按纪律不拟合回算、诚实降级;待真实 PDK 标定 c1 后再升 strict。④同步十处定时炸弹修复(IRONLAW:等价断言+会增长集合=定时炸弹一律改包含式/动态计数):`run_empirical_anchor_smoke`/`run_count_consistency_smoke`/`routes.py`(empirical 动态计数)/`run_l1_agent_smoke`/`run_lvs_smoke`/`run_scale_smoke`/`run_system_budget_smoke`/`run_statistical_anchor_smoke`/`run_three_class_consistency_smoke`(C4 反向动态)/`run_empirical_d62_report` 共 10 文件含 6 个 CORE smoke 全部去硬编码 `50/E1-E7`;`run_anchor_coverage_matrix.py` B5/B6 去 K 失真。CI core **128 条不变**(未新增 smoke)。 > 历史版本:**v0.9.50**(2026-09-06 · **覆盖死角闭合(B29/B30 登记 + 3 复合包 covered-by-composition)· CI core 127→128**):**T-9 锚题覆盖矩阵死角收口(不伪造新锚)**:T-9 矩阵(2026-09-04 生成)**早于 v0.9.39(Sep 5)**,而 B29/B30 两道原「零覆盖死角」锚其实已在 v0.9.39 作为**严格独立候选完整落地**(B29 candidate=thermal_phase_fdm / B30 candidate=readout_fidelity_quad,注册·候选·smoke 全在位)——故真实死角是「**矩阵未登记 B29/B30**」+「**3 复合包(mixed_system/wdm_coupler/splitter_readout)被误判为零覆盖**」,而非缺锚。决定**不伪造新锚**:①更新 `run_anchor_coverage_matrix.py`——`ANCHOR_HOSTS` 登记 B29→engine_phaseshifter、B30→readout_fidelity,删除两处原零覆盖分支,3 复合包重分类为 covered-by-composition(组成严格锚 B4/B14/B22/B26 在宿主品类接严格独立候选 + S 层系统锚 + GC-* 整芯片对标);重生成 `docs/lda_anchor_coverage_matrix_2026-09-06.md`(PhaseShifter 行现 B29●T、readout_fidelity 行 B30●T,§3.1 仅 3 复合包零覆盖)。②新增**机器可验证闭合护栏** `run_coverage_deadzone_closure_smoke.py`(27 判据含反向):B29/B30 在 `BENCHMARK_ORDER` 且 strict + 已登记宿主;3 复合包组成严格锚 B4/B14/B22/B26 在位 + S1-S13 在位;GC-* 覆盖 system_type=link 与 quantum_fidelity;零覆盖集恰为 3 复合包;🔴 **反向:撤 B29 后 phaseshifter 必重新落入零覆盖**(复刻 build_kind_anchors 轻量分组验证,护栏会响)。三分类不变:严格独立 25 / 降级 0 / 自证桩 25(和=50)。CI core 127→128。) > 历史版本:**v0.9.49**(2026-09-06 · **N-5 导购二期(无 LLM 可降级版)正式上线 · CI core 126→127**):按 D-2=A 拍板落地「锚定导购」——自然语言需求 → `POST /api/store/guide` → 对 75 货架 facets **实跑匹配**(赛道/应用域/价档/关键词/预算上限多因子打分排序),结果含命中解释 `reason` 且**所有数字(价格/规格)一律来自货架真实数据**(`price_cny` / `item.specs`),严禁模板或 LLM 杜撰规格数字;LLM 仅预留「解析+解释润色」扩展点(当前未启用,v1 纯确定性零密钥)。超市页新增「🧭 智能导购」卡片(输入框 + 示例 + 命中卡可点击跳转对应货架并高亮)。护栏 `run_store_guide_smoke.py`(10 判据含 4 道反向)守护:源码数字必来自数据、UI 已接线、真跑往返、价格与 `/api/shelf` 实付价一致、乱码/空文本优雅返回 count=0、清空赛道别名后命中失准、中文「预算N以内」解析出 price_max 且超预算项标红一致。N-3/N-4 见 v0.9.48。):①**N-3 dev token 漏洞封堵**——`app.py:_admin_token()` 移除硬编码默认串 `LDA-ADMIN-DEV-TOKEN-CHANGE-ME`,未设 `LDA_ADMIN_TOKEN` 时返回空串(**fail-closed**),任何令牌(含历史 dev 默认串)都无法通过管理员鉴权,杜绝「部署漏设环境变量即用公开弱令牌登录」的 fail-open 漏洞;生产经 systemd drop-in(admin-token.conf)注入强令牌,不受影响。护栏 `run_admin_token_smoke.py`(7 判据含反向:源码静态查 + 未设 env 子进程行为 + 起服务登录真跑 + 掺回默认串必 FAIL)。②**N-4 三分类对外一致性**——README 账本补实时三分类陈述(严格独立 25 / 降级 0 / 自证桩 25 / 和 50);新增 `run_three_class_consistency_smoke.py`(4 判据含反向)守护 **README 账本 ≡ 本机 harness 推导 ≡ `/api/verification_ledger` 端点**三分类任一漂移即红,堵死「静态陈述悄悄失真」的同类缺口。CI core 124→126。) > 历史版本:**v0.9.47**(2026-09-06 · **stats.html 数据看板接线挂回导航 + 智能体客服「选择后能真正回复」修复 · CI core 122→124**):①杜先生报「首页/能力展示/验证实力/创新超市/我的/管理后台背景是两种风格」——取证确认:index/insights 暗色固定、store/mine 亮色固定、public/stats 跟随系统、admin 双套覆盖,同站跳变。统一为首页暗色家族(#0b1020),硬编码颜色全部改语义变量(tint/ok/warn/err 各配 tint+ink 对),仅保留按钮白字与二维码白底两类必要例外;nav.js 部件 chip 同步。**验证=playwright 真浏览器:六页 body 背景 rgb(11,16,32) 完全一致 + 逐页截图人工复核**。②「对公收款说明」从能力展示页顶部迁至「我的」概览面板(弹窗含复制行与转账流程),能力展示购买弹窗内保留文字链入口(上下文可达不丢功能),行为验证 17/17。③N-2 豁免表复测:18 条逐条重跑(rc 全 0、全部零重依赖、无人低于 5s 准入线 ⇒ 无人该捞回 core),但抓到**两条理由失真**——sparams_3d 旧注「>60s 超时」实为 47.2s 完成、sparams_loop 实为 64.3s 完成(numba 由依赖链运行时间接载入,仓库无显式 import),另有 4 处数字漂移已全部回填复测值。新护栏 `run_noncore_reason_smoke.py`(8 判据含 3 道反向,入 core):理由必须含机器可查的「实测 Ns」、耗时 ∈[5,330]、禁「超时」式搪塞、禁 core/豁免双登记、禁 ghost 条目——豁免理由从此有判据守护,不再凭良心。④🔴 **智能体客服「选择后不回复」修复**:杜先生报「服务智能体选择后还不能真正回复」。根因=`cs_widget.js` 的 `addMsg()` **漏写 `return m;`**——它把消息节点 m 加进对话区却没返回,导致 `var wait = addMsg("bot","…")` 拿到 undefined,随后 `body.removeChild(wait)` 抛 `parameter 1 is not of type 'Node'`,回复占位符「…」永远删不掉、真实 reply 永远加不进去(点击建议/输入发送均走同一死路 → 客服完全不可用)。这是「改造留半截」类缺陷(与 D-78 同源)。修法:补 `return m;` + 三处 `removeChild(wait)` 加 `if (wait && wait.parentNode)` 守卫(双保险)。证据:playwright 真浏览器复现「点击建议→卡在…+页面报错」,修复后同路径拿到真实 reply、报错消失;后端 `cs_agent.chat` 单独验证各输入均正常返回(问题纯在前端返回链)。护栏 `run_cs_agent_chat_smoke.py`(7 判据含 2 道反向,入 core):真跑 `/api/agent/chat` 发问→真实 reply、留资→lead_captured、引导→guide 结构;静态守卫 `addMsg` 必须 `return m` + `removeChild(wait)` 不得裸调用;反向污染删 return/去守卫必须 FAIL。) > 历史版本:**v0.9.45**(2026-09-06 · **补丁:v0.9.44 已上线但 `/api/shelf` 真没带 `listed_at` · 护栏漏层修复**):v0.9.44 发布并部署后生产实测 —— **75 条 rows 的 `listed_at` 全为 None**,而当时 CI 121 条全绿、新护栏 11 判据全绿、前端文件与本地逐字节一致,**一切检查都通过了,数据就是没出去**。根因:`app.py: shelf_status()` 是**手工组装 rows 字典**的,**根本不调 `to_public()`**;我把字段加在 `to_public()`、判据也打在 `to_public()` ⇒ **在 A 处加东西,却在 B 处验证它**。这是本项目**第 4 次**「标签 ≠ 行为」(前三次:D-78 门禁变量、v0.9.15 独立候选标签、v0.9.42 前端硬编码目录)。修复:端点 rows 补字段 + 🔴 **护栏新增判据 ⑤b:真跑 `app.shelf_status()` 逐条比对**(原则同 taxonomy 判据 ⑦——调生产代码,不在 smoke 里另写同式复算,否则只是自我比对)+ 反向 ⑪(注入删掉 listed_at 的 rows ⇒ 判据必须报)。护栏 11 → **13 判据含 5 道反向**。教训(写给所有"加了字段"的任务):**契约必须打到数据出口(端点),不能只打在数据类上**——字段链路每一跳(数据类 → 端点 → 前端渲染)都要有判据,否则中间断一跳,其余全绿,用户拿到的是空的。) > 历史版本:**v0.9.44**(2026-09-06 · **创新超市上架日期:可溯源、可排序、不可伪造** · CI core 120→121):每条货架新增 `listed_at`,口径 = 该货架 id **首次进入本仓库的提交日期**(`git log --follow` 逐提交复算)。**刻意不采用「统一填当天」**——货架是分批扩的(08-27 首批 5 → 08-28 批量 43 → 08-29 商品化 10 → 09-06 三轮新增 17),统一填今天就是**伪造新鲜度**:格式合法、字段非空、前端渲染正常,**一切看起来都对,但数字脱离了它的来源**——这是 LDA 最不能容忍的一类失真。故 `run_shelf_listing_smoke.py`(11 判据含 4 道反向,入 core)逐条与 git 历史复算比对,**错一天即红**;git 不可用时判 FAIL 而非跳过。前端:卡片显示「上架 YYYY-MM-DD」+ 30 天内 NEW 标记 + 「最新/最早上架」双排序,缺日期项在两个方向都沉底(不冒充最新、也不冒充最老)。取证据用 git 历史还原 75 条真实日期,同步派生表 `innovation_market.json`。) > > 历史版本:**v0.9.43**(2026-09-06 · **修复「已登录却被要求二次登录 + 输完密码不进画面」(D-78)· CI core 119→120**:杜先生实测报障——登录进系统后点「🛠 提交定制需求」又弹一次登录框要求输邮箱密码;输完之后什么也没发生,不进入定制画面。根因**不是逻辑错,是改造留半截**:P2-5 把会话令牌由 JS 可读字符串改为 HttpOnly Cookie(防 XSS,方向正确),改造时废用了 `var store_token = ""`(注释已写明「前端不再持有令牌字符串」),却**忘了同步改 4 处 `if(!store_token){ showLogin(); return; }`门禁**(openCustom / openBuy / openConsult / loadOrders)⇒ 该变量恒为空串 ⇒ 门禁恒真 ⇒ **已登录用户一律被判成未登录**。后端契约完全正确(逐行核验:登录走 `_set_cookie(..., HttpOnly)`、`/api/store/me` 凭 Cookie 探活如期返回 user)——脏的纯粹是前端门禁。第二症状同源:登录成功后只关框+刷状态,**没有重放用户原本想做的动作**。修法:登录态真值改由 `STORE_USER`(探活结果)承担,新增 `requireAuth(action)` 统一门禁(自带一次探活——页面加载时探活是异步的,用户在返回前点按钮仍会误判),未登录则弹框并记 `PENDING_ACTION`,登录成功后自动重放;登出改清真值,会话请求统一带 credentials。验证:把 `store.html` 真实 `