Skip to content

fix(html2md): retain complex tables and referenced fragments - #1336

Open
lanyue-llk wants to merge 32 commits into
mainfrom
codex/content-tables-fragments
Open

lanyue-llk wants to merge 32 commits into
mainfrom
codex/content-tables-fragments

Conversation

@lanyue-llk

@lanyue-llk lanyue-llk commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

问题

Markdown 管道表格无法表达合并单元格、嵌套关系和单元格中的块内容;丢弃文内链接目标也会破坏导航。代码转 HTML 后备路径时,交互控件的排除规则还曾与普通代码路径不一致。有锚点的呈现表会错误退回数据表 HTML。

一图看懂

复杂表格与文内链接的修复机制

修改

  • 简单表格输出 GFM。复杂表格有表头、标题、数据角色、表头关系或真实跨度时保留作者结构;只有嵌套布局和块内容的包装表展开为普通块。role=presentation/none 同样展开,包括带锚点的情况。

  • 仅保留实际被引用的片段目标,保证每个目标只出现一次;覆盖表格、标题及 pre/code 根节点。按 ID 优先、精确匹配后再解码的顺序处理。无需默认禁用文内导航。

  • 普通转换与 HTML 后备复用媒体、表单、数学和代码控件的语义判断;格式化与转义由各自输出路径完成。

  • 修正后备路径的 Copy 按钮污染。带链接的预格式化代码保留 HTML 链接、语言和物理换行;普通包装中的标题仍输出 Markdown 标题。

  • 按 HTML 非负整数规则判断单元格实际跨度:非法值与默认跨度继续使用 GFM;rowspan=0 和真实合并单元格保留结构。

  • 空 poster 不生成空图片;已经有块级标签的元素不再增加重复 div,CSS 引入的块边界仍保留。

  • 列表、表格和选项节点自行管理结构边界,CSS 补充边界不再重复分段;适配器请求的行内边界在两条输出路径中都用空格分隔。

  • HTML 后备共享全局目标去重;图片保留被引用的 ID 与 title,别名放在链接开始标签之前。重新解析输出验证链接文字仍属于原链接。

  • 原生 DOM 与浏览器 CLI 使用同一完整 HN 快照;CLI 实际输出严格比较,仅去除期望文件的末尾换行。

代码元素自身可以有补充 CSS 边界,其源码后代不应用这些边界。普通媒体名称优先使用 aria-label,再使用 title。列表的作者结构与计算盒分开处理:单个 CSS 块不改变列表松紧;角色匹配使用 HTML 空白,col/colgroup 不生成额外块。

列表先完成待输出正文,再判断松紧。嵌套列表位于末尾时保持紧凑;其后还有被空行分开的正文时,整个外层列表按松列表输出。

验证

  • cargo test -p moli-html2md --locked:398 项通过;Clippy 通过。非法跨度和空 poster 的反例均先失败后通过;另有 CSS 块边界与实时 textarea 的两种输出路径验证。
  • 普通代码、带链接代码和复杂表格中的同一组控件场景均通过;旧实现的后备路径会泄漏 Copy。
  • 呈现表锚点反例在旧实现中生成 table,修复后保留标题、内容和可达目标,不生成数据表。
  • 深层有锚点表格、嵌套标题的节点访问和文本复制量随输入线性增长;复杂布局表不逐层捕获整张表。没有片段链接时不建立 ID 清单。
  • 验收覆盖行列、合并关系、内容归属和完整输出。没有表头也可能是合法的合并单元格表,因此保留其关系;不根据站点名称猜测用途。
  • HTML 源码后备路径保留源字符、默认语言和开头空行,并通过重新解析核对实际代码文本。

复现

本 PR 的转换库测试可独立运行:cargo test -p moli-html2md --locked。浏览器接入在 #1337,以下 CLI 与冻结页复现使用完整 stack。

最小用例

跨两列的表头保持 colspan;文内链接与目标锚点同时保留。

fixture_html=$(cat <<'HTML'
<table><tr><th colspan="2">Total</th></tr><tr><td>A</td><td>B</td></tr></table><p><a href="#note">Note</a></p><p id="note">Details</p>
HTML
)
"$MOLI_BINARY" fetch "data:text/html;base64,$(printf '%s' "$fixture_html" | base64 | tr -d '\n')" --dump markdown

实际输出:

<table>
<tbody>
<tr>
<th colspan="2">Total</th>
</tr>
<tr>
<td>A</td>
<td>B</td>
</tr>
</tbody>
</table>

[Note](#note)

<a id="note"></a>

Details

真实 WebMainBench 页面

34b822a2… LinuxFocus 文章:保留嵌套表格内容与 colspan 关系。

七个相关页面通过 browser-eval 的现有 runner 共用一次定向运行,7/7 正常导出,并核对上述内容;不是 545 页质量重测。查看冻结输入、实际输出与核对结果。

  • Moli:19bfc785;二进制 SHA-256:1c17bba8cb6b0a532144697411d13ec6a3872d1abad96d5872da0ded93d7b8b4。
  • browser-eval:345ea093。
  • 原始数据集 SHA-256:0efaa4b49a45e320a27fe6e5a0b6aad5b57259fc3321ac3448519cacc74c537e,runner 会校验。保留原网址,代理返回冻结 HTML,外部资源禁止访问,无点击或 DOM 改写。
环境准备与可复制命令
# Moli 仓库:构建完整 stack,供下面的 CLI 复现使用。
git fetch origin refs/pull/1337/head
git switch --detach 19bfc785f2e0114d7d88e17457de7c108a54069d
cargo build -p moli --bin moli --locked
export MOLI_BINARY="$PWD/target/debug/moli"

# 在单独目录准备 browser-eval。
git clone https://github.com/lexmount/browser-eval.git
cd browser-eval
git checkout 345ea09370a633e871670fde2de4ec25b53a4d05
uv sync --frozen
mkdir -p "$HOME/.browser-eval/public-benchmarks/webmainbench-545"
curl --fail --location \
  https://huggingface.co/datasets/opendatalab/WebMainBench/resolve/main/WebMainBench_545.jsonl \
  --output "$HOME/.browser-eval/public-benchmarks/webmainbench-545/WebMainBench_545.jsonl"

# 在 browser-eval 仓库运行;使用 macOS 的 loopback-only 沙箱。
# MOLI_BINARY 为上面构建的 Moli 的绝对路径。
export MOLI_BINARY
repro_root=$(mktemp -d)
cat > "$repro_root/cases.txt" <<'CASES'
75b0c1e9-d112-46d0-adc8-d1d09aa48731
bfaf0844-440c-466b-b55a-f82c88a54a4e
34b822a2-f7d6-4b69-b6af-133a1ca21326
8798f93a-240c-46d7-a8d1-a5fb011279fc
d80cf991-ba87-4068-80b4-3e9bd49ac8fd
72dd5ff7-8cb5-4660-8941-c1846a43a15d
ccb6033c-0a12-4f9c-8c68-794f26129841
CASES
uv run --frozen python scripts/run_webmainbench_benchmark.py \
  --provider moli --case-ids-file "$repro_root/cases.txt" \
  --preserve-original-origin --expected-version 1.1.19 \
  --timeout 90 --max-failure-retries 0 \
  --output "$repro_root/results"
printf '结果目录:%s\n' "$repro_root/results"

results.jsonl 记录成功状态、错误和输入/输出哈希,execution.json 记录二进制身份,artifacts/moli/ 保存实际 Markdown。定向运行只用于定位和回归,不进入正式榜单;报告中的历史成绩仍绑定原测量版本。

依赖

直接基于 #1335。#1334 → #1335 → #1336 → #1337 → #1380

@github-actions

github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Spider Bench A/B

✅ All benchmark browser service runs completed; results are informational.

Public HEAD: 184 / 240 rows; 38 / 48 sites produced rows; 10 unexpected empty sites.

✅ Deterministic fixture contract is clean.

Common ancestor 9fc264a72080 → HEAD 803de4b5a824; benchmark order: head-first; workflow: success.

Public 48-site run · informational

Metric Base HEAD Δ
Run status success success —
Extracted rows / contract 184 / 240 184 / 240 0 (0.00%)
Contract fill 76.67% 76.67% 0.00 pp (0.00%)
Sites with rows 38 / 48 38 / 48 0 (0.00%)
Sites meeting row contract 36 / 48 36 / 48 0 (0.00%)
Unexpected empty sites 10 10 0 (0.00%)
Partial-row sites 2 2 0 (0.00%)
Site outcomes extracted: 37; HTTP error + rows: 1; empty: 7; HTTP error + empty: 1; snapshot error + empty: 2 extracted: 36; HTTP error + rows: 2; empty: 8; HTTP error + empty: 1; snapshot error + empty: 1 —
Observed duration 46.54 s 42.84 s -3.70 s (-7.95%)
Estimated CPU 40.57 s 36.92 s -3.65 s (-8.99%)
Peak PSS 240.35 MiB 209.67 MiB -30.69 MiB (-12.77%)
Peak RSS 243.99 MiB 213.26 MiB -30.73 MiB (-12.59%)
Peak threads 26 27 +1 (+3.85%)
Mismatched sites 0 0 0
Timeout with items 0 0 0
Category rows Base HEAD Δ
news 35 / 40 35 / 40 0
stocks 20 / 40 20 / 40 0
tech 35 / 40 35 / 40 0
sports 27 / 40 27 / 40 0
games 37 / 40 37 / 40 0
life 30 / 40 30 / 40 0

Public-site content, timing, and memory are noisy. This single A/B run reports evidence only; site outcome counts explain missing rows without treating them as a deterministic regression.

CPU and memory timelines

These are bounded 40-point views of the same complete process-tree samples used by the HTML report. CPU uses 100% per occupied logical core; memory lines are RSS first and PSS second when complete PSS samples are available.

Base

xychart-beta
    title "Base CPU"
    x-axis "Elapsed seconds" [1.036, 1.537, 2.538, 4.039, 5.04, 6.541, 8.043, 9.044, 10.547, 11.549, 13.052, 14.054, 15.556, 16.558, 17.058, 18.06, 19.561, 20.562, 22.066, 23.569, 24.57, 26.072, 27.073, 28.575, 29.576, 31.078, 32.58, 33.581, 34.583, 35.083, 36.086, 37.588, 39.088, 40.089, 41.59, 42.591, 44.094, 45.094]
    y-axis "CPU percent" 0 --> 200
    line [23.98, 131.89, 119.88, 141.96, 133.96, 109.98, 89.91, 117.77, 123.73, 103.87, 93.85, 75.82, 37.94, 0, 4, 4, 2, 35.94, 73.85, 125.66, 99.99, 101.86, 113.86, 131.91, 109.93, 99.93, 111.94, 5.99, 145.92, 79.95, 29.95, 91.78, 99.9, 100.01, 101.89, 121.77, 79.79, 105.97]
Loading
xychart-beta
    title "Base memory: RSS then PSS"
    x-axis "Elapsed seconds" [0.036, 1.036, 1.537, 2.538, 4.039, 5.04, 6.541, 8.043, 9.044, 10.547, 11.549, 13.052, 14.054, 15.556, 16.558, 17.058, 18.06, 19.561, 20.562, 22.066, 23.569, 24.57, 26.072, 27.073, 28.575, 29.576, 31.078, 32.58, 33.581, 34.583, 35.083, 36.086, 37.588, 39.088, 40.089, 41.59, 42.591, 44.094, 45.094, 46.538]
    y-axis "Memory MiB" 0 --> 500
    line [13.07, 81.93, 99.28, 103.37, 137.92, 152.79, 161.22, 128.25, 150.24, 163.59, 144.41, 135.17, 148.13, 125.74, 121.86, 120.74, 120.76, 120.39, 128.62, 120.38, 145.16, 243.99, 183.54, 208.8, 136.61, 168.27, 132.58, 148.04, 147.27, 153.18, 140.94, 140.68, 142.68, 161.92, 161.92, 161.93, 164.42, 140.66, 149.04, 0]
    line [9.62, 78.42, 95.66, 99.74, 134.3, 149.21, 157.6, 124.62, 146.61, 159.94, 140.76, 131.53, 144.9, 122.09, 118.21, 117.09, 117.11, 116.76, 124.92, 116.76, 140.78, 240.35, 180.17, 205.13, 131.68, 164.53, 128.8, 144.37, 138.79, 149.51, 137.33, 137.03, 139.03, 158.28, 158.28, 158.29, 160.78, 137.02, 145.63, 0]
Loading

HEAD

xychart-beta
    title "HEAD CPU"
    x-axis "Elapsed seconds" [1.035, 2.036, 2.537, 3.538, 4.539, 5.039, 5.539, 6.039, 7.04, 8.541, 9.543, 11.046, 12.046, 13.048, 14.551, 15.552, 16.554, 18.057, 19.059, 20.561, 21.563, 22.564, 24.066, 25.066, 26.568, 27.568, 28.568, 30.07, 31.071, 32.571, 33.573, 34.573, 36.075, 37.076, 38.078, 39.58, 40.582, 42.082]
    y-axis "CPU percent" 0 --> 200
    line [31.99, 95.89, 127.93, 93.94, 149.91, 122.03, 131.94, 124, 143.78, 63.97, 49.89, 111.97, 0, 31.95, 107.75, 87.96, 0, 125.76, 63.87, 93.79, 97.93, 123.86, 105.87, 132.01, 133.89, 110.06, 57.93, 27.92, 89.99, 19.99, 47.96, 123.9, 61.96, 5.99, 99.89, 147.85, 59.97, 135.85]
Loading
xychart-beta
    title "HEAD memory: RSS then PSS"
    x-axis "Elapsed seconds" [0.035, 1.035, 2.036, 2.537, 3.538, 4.539, 5.039, 5.539, 6.039, 7.04, 8.541, 9.543, 11.046, 12.046, 13.048, 14.551, 15.552, 16.554, 18.057, 19.059, 20.561, 21.563, 22.564, 24.066, 25.066, 26.568, 27.568, 28.568, 30.07, 31.071, 32.571, 33.573, 34.573, 36.075, 37.076, 38.078, 39.58, 40.582, 42.082, 42.837]
    y-axis "Memory MiB" 0 --> 500
    line [13.13, 84.43, 118.09, 114.46, 112.16, 131.06, 145.91, 147.95, 153.27, 144.38, 127.58, 137.21, 138.15, 111.17, 119.99, 152.31, 136.47, 127.55, 149.8, 118.35, 156.1, 167.92, 161.78, 213.26, 162.51, 147.89, 140.64, 128.52, 132.61, 138.43, 134.37, 142.11, 183.42, 138.56, 124.17, 146.55, 132.47, 126.68, 158.07, 0]
    line [9.76, 80.84, 114.52, 110.87, 108.57, 127.32, 142.76, 144.39, 149.66, 140.81, 124.07, 133.62, 134.31, 107.54, 116.36, 148.5, 132.89, 123.92, 146.9, 114.72, 150.35, 164.48, 158.13, 209.67, 158.87, 144.27, 136.07, 124.9, 128.96, 134.83, 130.73, 138.47, 179.23, 134.9, 120.5, 144.32, 128.81, 123.02, 154.48, 0]
Loading

Deterministic fixture · required contract

The fixture exercises 15 routes: 8 are expected to emit rows and 7 intentionally exercise empty, loading, or timeout behavior.

Metric Base HEAD Δ
Run status success success —
Extracted rows / contract 40 / 40 40 / 40 0 (0.00%)
Contract fill 100.00% 100.00% 0.00 pp (0.00%)
Sites with rows 8 / 15 8 / 15 0 (0.00%)
Sites meeting row contract 15 / 15 15 / 15 0 (0.00%)
Unexpected empty sites 0 0 0
Partial-row sites 0 0 0
Site outcomes extracted: 7; HTTP error + rows: 1; empty: 3; timeout + empty: 4 extracted: 7; HTTP error + rows: 1; empty: 3; timeout + empty: 4 —
Observed duration 19.86 s 19.85 s -0.00 s (0.00%)
Estimated CPU 0.42 s 0.42 s 0.00 s (0.00%)
Peak PSS 66.46 MiB 66.50 MiB +0.04 MiB (+0.06%)
Peak RSS 69.89 MiB 70.14 MiB +0.25 MiB (+0.36%)
Peak threads 18 18 0 (0.00%)
Mismatched sites 0 0 0
Timeout with items 0 0 0

Full HTML, JSON, CSV, logs, and page snapshots: workflow run and full spider-bench-results artifact.

The public-web A/B is informational. The exact HEAD fixture contract runs as a separate required CI check; timing and public-site content deltas remain non-blocking.

@github-actions

github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

CI Regression Report

Source CI run · source state at render: in_progress · artifacts: 6/6

Check Status Signal
Release regression ✅ HEAD/base failures 0/0; raw binary +0.022795%
Frontend differential ✅ 1,020/1,020 cases matched; 0 issues
Agent episodes ✅ 8/8 Moli episodes passed; 0 failures
Runtime/CDP contracts ✅ 26 contract cases; 0 failures
CDP smoke ✅ 53/53 groups passed; 625 scenarios
WebMainBench ✅ 545/545 completed; 0 unexpected failures
Release regression — ✅ HEAD/base failures 0/0; raw binary +0.022795%

Package and image size

Metric Base HEAD Delta Delta %
Raw binary 150.25 MiB 150.28 MiB +35.07 KiB +0.022795%
Stripped binary 103.32 MiB 103.35 MiB +32.00 KiB +0.030246%
gzip binary 51.60 MiB 51.62 MiB +19.76 KiB +0.037397%
Rootfs 157.15 MiB 157.18 MiB +30.00 KiB +0.018643%
gzip rootfs 60.51 MiB 60.53 MiB +19.97 KiB +0.032233%

Startup latency and PSS

Case Base p50 HEAD p50 Delta Base PSS HEAD PSS Delta
Serve ready 26.79 ms 27.58 ms +0.79 ms 5.31 MiB 4.54 MiB −786.50 KiB
CDP first page 49.12 ms 51.87 ms +2.74 ms 4.69 MiB 4.61 MiB −78.50 KiB
CDP warm page 12.03 ms 13.52 ms +1.48 ms 50.81 MiB 50.03 MiB −799.00 KiB
CLI about:blank 15.60 ms 17.08 ms +1.48 ms 4.70 MiB 3.40 MiB −1.30 MiB
CLI local JS 24.65 ms 18.58 ms −6.06 ms 4.40 MiB 4.92 MiB +534.50 KiB

Concurrency matrix

Concurrency Base p50 HEAD p50 Delta Base PSS HEAD PSS Delta HEAD failures Unstable B/H
1 17.46 ms 17.37 ms −0.09 ms 898.00 KiB 777.00 KiB −121.00 KiB 0 0/0
5 20.68 ms 20.30 ms −0.38 ms 28.18 MiB 14.09 MiB −14.09 MiB 0 0/0
10 20.84 ms 21.09 ms +0.25 ms 28.17 MiB 29.31 MiB +1.14 MiB 0 0/0
25 20.28 ms 20.39 ms +0.11 ms 13.85 MiB 28.33 MiB +14.49 MiB 0 0/0
100 20.92 ms 19.72 ms −1.21 ms 12.81 MiB 27.74 MiB +14.93 MiB 0 0/0
Frontend differential — ✅ 1,020/1,020 cases matched; 0 issues
Match DOM mismatch Diagnostic mismatch Moli error Reference error Infrastructure error Mismatched frames Duration
1,020 0 0 0 0 0 0 6m 32.20s
Agent episodes · Moli vs Chromium — ✅ 8/8 Moli episodes passed; 0 failures
Fast contract Episodes Passed Assertions Ready p50 Episode p50
Moli 8 8 47/47 2.76 ms 25.82 ms
Chromium 8 8 47/47 261.70 ms 84.94 ms
Operation p50 Chromium Moli Delta Delta %
navigate 41.05 ms 9.02 ms −32.03 ms −78.02%
observe 0.91 ms 1.08 ms +0.17 ms +19.25%
fill 3.64 ms 3.39 ms −0.26 ms −7.01%
click 4.28 ms 4.07 ms −0.21 ms −4.85%
Idle-resource episode Peak RSS Peak PSS Average CPU Peak CPU Peak processes Sampler
Moli 66.18 MiB 63.58 MiB 0.71% 8.03% 1 ✅
Chromium 1280.59 MiB 327.37 MiB 0.51% 8.04% 13 ⚠️ PSS partial
Runtime and CDP session contracts — ✅ 26 contract cases; 0 failures
Suite Cases Failures Median case p50 Median case p95 Median peak PSS p50
Synthetic fetch 13 0 17.81 ms 18.49 ms 837.00 KiB
Long-lived CDP session 13 0 18.01 ms 18.43 ms —
CDP smoke — ✅ 53/53 groups passed; 625 scenarios

Workers: 4 · cumulative group time: 201.90 s · failed groups: 0

Slowest group Scenarios Duration Status
scrollbar-visibility 22 29.10 s ✅
target-lifecycle 24 17.44 s ✅
dom-input 27 13.41 s ✅
multi-page 45 12.22 s ✅
chromium-cdp 56 11.26 s ✅
WebMainBench · 545 pages — ✅ 545/545 completed; 0 unexpected failures
Completed Successful Expected DNS failure Unexpected failures Panics Crashes Timeouts Empty output
545/545 544 1 0 0 0 0 0

Frozen HTML · Linux · --wait done · 45 seconds per page · no retries. Content quality is evaluated separately.

Diagnostics: webmainbench-results — every page's Markdown, stderr, and exit status. Source run and artifacts

All artifact fields are parsed by the trusted default-branch renderer; missing or invalid inputs remain visible as unavailable.

@lanyue-llk
lanyue-llk force-pushed the codex/content-tables-fragments branch from fd2db36 to 6ed184d Compare October 9, 2026 11:44
@github-actions

github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Sequential Navigation Soak A/B

✅ HEAD completed the 200-navigation resilience and memory observation.

One browser process, one target, and one CDP session navigate CSDN → SegmentFault → Huaban → example.com repeatedly. This run issued 200 Page.navigate commands per binary.

Common ancestor 9fc264a720 → HEAD 803de4b5a8; benchmark order: head-first; workflow: success.

Session resilience

Metric Base HEAD
Attempted / planned 200 / 200 200 / 200
Direct observable pass 195 / 200 197 / 200
Failures / recovered 5 / 5 3 / 3
Recovery failures 0 0
Lifecycle order violations 0 0
Network order violations 0 0
Wall time 612.0 s 578.2 s

A public-page failure is reported separately from an unrecoverable session. The soak requires all navigation attempts, zero failed recovery, zero lifecycle/network ordering violations, and complete resource evidence.

Process-tree memory

Metric Base HEAD Δ
Boundary samples 200 200 0
Boundary RSS samples 200 200 0
Boundary PSS samples 200 200 0
Periodic peak RSS 267.6 MiB 261.9 MiB -5.7 MiB
Periodic peak PSS 264.7 MiB 258.6 MiB -6.1 MiB
RSS · first 10 avg 185.0 MiB 186.8 MiB +1.9 MiB
RSS · last 10 avg 201.0 MiB 188.0 MiB -13.0 MiB
RSS · last − first window +16.1 MiB +1.2 MiB -14.9 MiB
RSS · warm slope / 100 nav +5.7 MiB +7.7 MiB +2.0 MiB
PSS · first 10 avg 181.3 MiB 183.3 MiB +2.0 MiB
PSS · last 10 avg 197.6 MiB 184.3 MiB -13.4 MiB
PSS · last − first window +16.4 MiB +1.0 MiB -15.4 MiB
PSS · warm slope / 100 nav +5.6 MiB +7.4 MiB +1.9 MiB
Peak file descriptors 57 57 0
Peak threads 29 29 0

HEAD memory by 50-navigation quarter

HEAD range Avg RSS Final RSS Peak RSS Avg PSS Final PSS Peak FD
1–50 180.1 MiB 163.4 MiB 230.7 MiB 176.7 MiB 160.2 MiB 52
51–100 182.5 MiB 194.6 MiB 227.1 MiB 179.2 MiB 191.2 MiB 53
101–150 190.9 MiB 165.2 MiB 225.3 MiB 187.4 MiB 161.7 MiB 52
151–200 187.8 MiB 130.6 MiB 226.6 MiB 184.1 MiB 127.0 MiB 53

Raw reports and per-navigation boundary samples: workflow run and full sequential-navigation-soak-results artifact.

Public-site timing and memory are observational. Use the A/B deltas and trend shape as evidence, not as a deterministic performance threshold.

@lanyue-llk
lanyue-llk changed the base branch from codex/content-math-formatting to codex/content-conversion-prerequisites October 9, 2026 12:19
@lanyue-llk
lanyue-llk force-pushed the codex/content-tables-fragments branch from 6ed184d to 22760a4 Compare October 9, 2026 12:19
@lanyue-llk
lanyue-llk force-pushed the codex/content-tables-fragments branch from 13a8b62 to da9b680 Compare October 9, 2026 13:27
@lanyue-llk
lanyue-llk added this pull request to stack #1381 October 10, 2026 08:55
@lanyue-llk
lanyue-llk removed this pull request from stack #1381 October 10, 2026 09:01
@lanyue-llk
lanyue-llk force-pushed the codex/content-tables-fragments branch from ba33592 to a863725 Compare October 10, 2026 09:04
@lanyue-llk
lanyue-llk changed the base branch from codex/content-conversion-prerequisites to codex/content-math-formatting October 10, 2026 09:04
@lanyue-llk
lanyue-llk added this pull request to stack #1382 October 10, 2026 09:05
@lanyue-llk
lanyue-llk force-pushed the codex/content-tables-fragments branch from a863725 to eb8ccd8 Compare October 12, 2026 03:01
@lanyue-llk
lanyue-llk force-pushed the codex/content-tables-fragments branch from eb8ccd8 to 59c3c4d Compare October 12, 2026 07:36
@lanyue-llk

Copy link
Copy Markdown
Contributor Author

Closing after the consolidation audit. This belongs to an earlier experimental Markdown stack and was not part of the measured fixed build. Current failure evidence does not justify carrying its broad table and fragment expansion into #1501, so it is intentionally not merged.

@lanyue-llk lanyue-llk closed this Oct 13, 2026
@lanyue-llk
lanyue-llk force-pushed the codex/content-tables-fragments branch from 5df2dd7 to 803de4b Compare October 22, 2026 11:48
Base automatically changed from codex/content-math-formatting to main October 25, 2026 09:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant