Skip to content

docs(llmdoc): record Lua VM pool bounded-overflow divergence as accepted (#91) - #141

Merged
Liam0205 merged 1 commit into
masterfrom
docs/lua-pool-bounded-overflow-accepted-divergence
Jun 24, 2026
Merged

docs(llmdoc): record Lua VM pool bounded-overflow divergence as accepted (#91)#141
Liam0205 merged 1 commit into
masterfrom
docs/lua-pool-bounded-overflow-accepted-divergence

Conversation

@Liam0205

Copy link
Copy Markdown
Owner

Closes #91.

Summary

把 issue #91("Lua VM pool: bounded overflow + GC reachability not parity across Go/Java/C++")记为接受的设计差异,而非工程对齐。决策依据 2026-06-24 端到端复测 + 实现层状态确认。

决策依据(详见 #91 评论 + 归档段)

检查项 结论
实现层 三引擎自 issue 创建以来无变化(pine-go 双层 / pine-java 无上限 CLQ / pine-cpp 无上限 vector)
指标层对等 5 元组(borrow/return/create/reuse/active)H6/M10 cross-validate 字节级一致
端到端表现 2026-06-24 calibrated 三 fixture × 三引擎复测:Java(无上限) 123-127 QPS、Go(双层) 121-122、cpp(无上限) 225-234;无上限 pool 未被惩罚
跨语言对齐成本 Go 的 "sync.Pool STW 清空" 在 Java(SoftReference)/ cpp(jthread + idle TTL)只能近似不能等价
生产数据 无 Java/cpp pool 致内存压力 / OOM 的报告

落地

  • llmdoc/architecture/dag-engine.md 在「已知运行时操作风险」之后新增「接受的跨引擎设计差异」小节,把 Lua VM pool: bounded overflow + GC reachability not parity across Go/Java/C++ #91 三引擎实现差异 + 接受理由 + 重启触发条件归档。这与 audit-extensibility-blindspot.md 的教训一致——文档化让下游审计直接命中归档而非反复独立发现
  • llmdoc/reference/lua-backend.md 在双层 warm/sync.Pool 节末尾加一行 cross-reference,明确该模型是 pine-go 专属、其他引擎差异见 dag-engine.md
  • llmdoc/index.md 更新 dag-engine.md 索引描述,把"接受的跨引擎设计差异归档"列入

重启触发条件

issue 不真正关闭设计层——只是当前数据不支持立项。归档段已写明:当生产出现 Java/cpp pool 长时间运行 RSS 单调爬升 / OOM 数据时,走 issue #91 方案 C(warm/cold + idle TTL)路径重启。届时 baseline 比现在清晰。

Test plan

…ted (#91)

Issue #91 flagged that pine-go (warm + sync.Pool with STW reclaim),
pine-java (unbounded ConcurrentLinkedQueue), and pine-cpp (unbounded
vector + unique_ptr) have materially non-equivalent pool overflow / GC
reachability semantics. Decision after fresh end-to-end measurement on
2026-06-24: accept the divergence rather than build cross-language
near-equivalents.

Rationale, archived in dag-engine.md alongside the other "known runtime
ops risks" so future audits hit the archive directly:

- Metric layer (5-tuple borrow/return/create/reuse/active) is already
  byte-equal across runtimes, locked by H6/M10 cross-validate
- Calibrated end-to-end three-fixture × three-runtime rerun shows Java
  and C++ are not penalised by their unbounded pools (Java 123-127 QPS,
  Go 121-122, cpp 225-234)
- No portable approximation of Go's "sync.Pool cleared on STW" exists in
  Java (SoftReference triggers differently and is JVM-only) or C++ (no
  GC; would need a jthread + idle-TTL background shrink). Issue #91
  Option C falls in the same "isolated win, end-to-end invisible"
  bucket as #119 outputPool — perf-evolution-roadmap calibration fact 2
- Production has no data-driven OOM report tying back to either pool

Re-open trigger documented inline: production data showing Java/cpp pool
RSS growing monotonically over long-lived runs.

Cross-references:
- lua-backend.md gets a one-line pointer at the warm/sync.Pool section
  noting the divergence is pine-go specific and pointing to the archive
- index.md description for dag-engine.md mentions the accepted-divergence
  archive so the index is still a discoverable map
@Liam0205
Liam0205 merged commit e10dda8 into master Jun 24, 2026
20 checks passed
@Liam0205
Liam0205 deleted the docs/lua-pool-bounded-overflow-accepted-divergence branch June 24, 2026 03:55
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.

Lua VM pool: bounded overflow + GC reachability not parity across Go/Java/C++

1 participant