一份自造的季度预算工作簿(4 张表、121 个对象、124 条依赖关系)。下面的判据、依赖树和过期传播全部由你的浏览器当场重算——没有后端,不上传任何东西,也不是截图。素材是教学卷,不是真实客户数据。
数据来源:cases/xlsx-budget-model-audit.origin/graph/ 里的 objects.jsonl / relations.jsonl / constraints.json / limits.json 原样打包(demo-xlsx/data.js),判据、追踪、传播逻辑在 demo-xlsx/engine.js 里按 Node 原件重写。页面底部有「浏览器重算 vs 案例包记录」的逐字比对。
本象不重算公式(边界 xlsx-no-recalc)。它做的是另一件事:顺着依赖图正向传播,把「缓存值已经不可信」的公式格全部点名。
下面看到的 假设!B3 当前值 0.06 已经是案例包定稿状态——案例历史记录着它由 0.05 改到 0.06 那一次(README 里描述的正是这次改动),本页不重演那一次,而是让你现在再模拟一次新的改动,看传播会怎么发生。
案例包里由 Node 命令行生成的三份产物(projections/diagnose.txt、stale-after-tx.json、trace-汇总-B3.txt)也被原样打包进了 data.js。页面加载时把浏览器算出的文本与它们逐字比对,任何一处不一致都会在这里显示出来——不一致就说明本页实现有错,不是案例包有错。
formula-column-purity / formula-column-consistency / aggregate-covers-data)未在真实财务模型上验证过假阳性率——已跑过的 51 份真表全是物流/报价/清单类,不含多层引用与情景假设的财务模型。limits.json 的已知边界,不是「以后会修」的承诺。graph/limits.json 原文)复核命令(仓库根目录):node compiler/cli.mjs diagnose cases/xlsx-budget-model-audit.origin · node adapters/xlsx/trace.mjs cases/xlsx-budget-model-audit.origin "汇总!B3" --depth 8 · node website/zh/demo-xlsx/verify.mjs(本页引擎与案例包记录的逐字比对)。完整案例包 ↗