docs(llmdoc): record Lua VM pool bounded-overflow divergence as accepted (#91) - #141
Merged
Liam0205 merged 1 commit intoJun 24, 2026
Merged
Conversation
…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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #91.
Summary
把 issue #91("Lua VM pool: bounded overflow + GC reachability not parity across Go/Java/C++")记为接受的设计差异,而非工程对齐。决策依据 2026-06-24 端到端复测 + 实现层状态确认。
决策依据(详见 #91 评论 + 归档段)
落地
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.mdllmdoc/index.md更新 dag-engine.md 索引描述,把"接受的跨引擎设计差异归档"列入重启触发条件
issue 不真正关闭设计层——只是当前数据不支持立项。归档段已写明:当生产出现 Java/cpp pool 长时间运行 RSS 单调爬升 / OOM 数据时,走 issue #91 方案 C(warm/cold + idle TTL)路径重启。届时 baseline 比现在清晰。
Test plan
git diff --stat= 3 files, 20 insertions, 1 deletion