PathOfBuildingCommunity / PathOfBuildingCommunity/PathOfBuilding-PoE2

mainOutput is nil after weapon-set reconciliation (#2498 regression)

Open
#2,529 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Lua
Stars
1.9k
Forks
451
Avg merge
21h 16m
Merged PRs (30d)
68

Description

Symptom

Loading certain public builds and running a calculation fails with:

mainOutput is nil

Scale (measured 2026-09-15 at pin ce566eac4)

We ran a corpus of 1438 complete public PoE2 site builds (leagues forbiddenrites + runesofaldur) through the engine at ce566eac45ea8a86477f513c7ee65a1ebe60014e, one build per worker, with restart-and-retry-once so worker deaths do not count as build failures:

  • 1338/1438 computed, 100 engine failures (7.0%), 0 conversion errors
  • All 100 fail with the single error mainOutput is nil
  • 61 forbiddenrites / 39 runesofaldur; 61 distinct characters (some characters carry multiple failing snapshots)
  • The failure is intrinsic to the build data against the engine, not an artifact of our JSON->XML conversion: two of the failing builds (Forbidden_VangVaa, Mi_Mo_AT) fail identically when loaded directly from cached .pob files

Attribution

Introducing commit: da7ae16823289a68a958c65c22e708a2cda56077 — "Add individual skill weapon set handling (#2498)" (2026-09-10).

Mechanism: SkillsTabClass:ReconcileSocketGroupWeaponSets (src/Classes/SkillsTab.lua:1472 at the pin) invalidates or switches a socket group's weapon set, after which self.mainOutput = self.mainEnv.player.output (src/Classes/CalcsTab.lua:511) reads nil.

Parent/child proof (deterministic, not flaky): three of the failing builds (in the linked gist) all compute cleanly at the parent 49e93925d ("Export 0.5.5 data and update trade data (#2505)") and all fail at da7ae1682. The remaining 97 failures share the identical error signature and mechanism; per-build parent/child was not re-run for them (we hold cached .pob files only for the three).

Minimal repro

Public gist with the three .pob files — load each and run the calculation:

https://gist.github.com/alsh0083/20b259caec08bd37780b9a61661a0225

All three fail at ce566eac4 with mainOutput is nil; all three compute at 49e93925d.

The 100 failing builds

league/character <blob-sha10> (sha of the build_json payload; list for cross-checking, all fail with mainOutput is nil at ce566eac4):

forbiddenrites/BabyAvocadooo 2cc854e872
forbiddenrites/BunasLegionnaire 2b42052305
forbiddenrites/CzerBlink ef0188599d
forbiddenrites/FLAMEBUH a6d1092944
forbiddenrites/FLAMEBUH cbe7b8014c
forbiddenrites/FanDoGambalho fcf667f22f
forbiddenrites/Forbidden_VangVaa 012e1163db
forbiddenrites/Gwalala c082ebdf75
forbiddenrites/JokerBD 45ca6d4a48
forbiddenrites/JokerBD 71449b336c
forbiddenrites/JokerBD da659cb8a2
forbiddenrites/Kardemon 7647accbba
forbiddenrites/Kkp_spark 56a251155d
forbiddenrites/Kkp_spark d61c29fcb2
forbiddenrites/LetsGetDoryaniTonight ea38d444e2
forbiddenrites/LetsGetDoryaniTonightFR 30a3ea4a54
forbiddenrites/LetsGetDoryaniTonightFR 3bbba526eb
forbiddenrites/LetsGetDoryaniTonightFR d96e9a6629
forbiddenrites/NextGenAilment 1e7eb278db
forbiddenrites/NextGenAilment 221cbeb759
forbiddenrites/NextGenAilment 4572d2fdab
forbiddenrites/NextGenAilment fcf2b34d90
forbiddenrites/Nimis 919e7377f1
forbiddenrites/PoopWhisperer 19b7ffa540
forbiddenrites/PoopWhisperer ad692d2a58
forbiddenrites/Predatoล่ากระเทย ea823195c3
forbiddenrites/SSSavingnnnn 5599588ee3
forbiddenrites/Schandrina 73bbba35a6
forbiddenrites/Sorlok_master 22fcfc0fa4
forbiddenrites/Tunier_FR_Sor 408e7b4378
forbiddenrites/Tunier_FR_Sor 722c0ba1f2
forbiddenrites/Vei 1ee6c3248a
forbiddenrites/Vei 31a454b95f
forbiddenrites/WrynnONE a8b46b6fd0
forbiddenrites/Xpernia_IX 2eead29ac5
forbiddenrites/Xpernia_IX 603a022b8c
forbiddenrites/Xpernia_IX d740cb0cd9
forbiddenrites/bkdfsjjfdksdf 883592dc89
forbiddenrites/govnoglazii 3316d8b465
forbiddenrites/nckonii 1b9875f244
forbiddenrites/nrv_gll 81728cebe0
forbiddenrites/nrv_gll becd02ba03
forbiddenrites/peggalpog 144ee2be7c
forbiddenrites/peggalpog dcd38c0502
forbiddenrites/peggalpog f123e37fb8
forbiddenrites/peggalpog fc6bf7846e
forbiddenrites/sorsires 9ba90d9575
forbiddenrites/sparkiaction 1b9cb9bf6b
forbiddenrites/sparkiaction c0cbb018ba
forbiddenrites/sparkiaction c92a807ddd
forbiddenrites/sparkiaction d76a54b31b
forbiddenrites/xxTsukuyomixx f4a4310794
forbiddenrites/сорканожка 28fb937942
forbiddenrites/сорканожка 51fba36257
forbiddenrites/сорканожка f56f341d8a
forbiddenrites/不良人 05d0a57784
forbiddenrites/不良人 6c99f9e362
forbiddenrites/不良人 f51756aaf6
forbiddenrites/撒大大大奋发 784b65c946
forbiddenrites/黑鸟在天际的万蓝大法师一一一一一一一一哔哩哔哩 698b6a93fc
forbiddenrites/黑鸟在天际的万蓝大法师一一一一一一一一哔哩哔哩 98bc4c8b30
runesofaldur/Ancients_yoyo 379dad6951
runesofaldur/Ashimar_DoNotCopyBuild abd9b7e714
runesofaldur/FERNANDO_MENDOZA_GOAT a03ba89d2f
runesofaldur/GWaterrr cfbb528f19
runesofaldur/Gay_ROTA 1273dc053a
runesofaldur/Gay_ROTA c588ce4c65
runesofaldur/HemlockPH_RotA 38ff4441ca
runesofaldur/HiredHA bc4a9cc8de
runesofaldur/HiredHA f278a94c09
runesofaldur/LetsGetDoryaniTonightPH 092602e873
runesofaldur/LetsGetDoryaniTonightPH 7b05442581
runesofaldur/Lichmaiballs 25527f2207
runesofaldur/Mi_Mo_AT 00e1041eab
runesofaldur/Mi_Mo_AT 11a8f58291
runesofaldur/SkwitSorc_RotA 03c6990e9a
runesofaldur/SkwitSorc_RotA 0a8ebcc0ac
runesofaldur/eldrinoo a6bd1348f2
runesofaldur/morph_kok 7af4ec9738
runesofaldur/morph_kok e08220276d
runesofaldur/上山的虎八号 2b81b155d4
runesofaldur/二一飞行员 f5ace6030f
runesofaldur/佐德小汽車賽季五 7996b01b1e
runesofaldur/佐德小汽車賽季五 b8d2fa3cf1
runesofaldur/佐德小汽車賽季五 c91b390ea5
runesofaldur/床前明月光_疑是地上霜_举头望明月_低头思故乡 ea1867ea5a
runesofaldur/搬山道到达 f792b81266
runesofaldur/欸欸獵魔人王朝了 2074899f16
runesofaldur/王俊凯肘击马嘉祺 12129b2c21
runesofaldur/王俊凯肘击马嘉祺 46bc007efb
runesofaldur/王俊凯肘击马嘉祺 4e8982e485
runesofaldur/瓦爾克拉斯動物園園長 6781277484
runesofaldur/重生之精品旋風 53ded50bd9
runesofaldur/重生之精品旋風 a38e6aca63
runesofaldur/신문을보지보다가자지 15323b55e7
runesofaldur/야행성너리 650165cef9
runesofaldur/야행성너리 a68abfb007
runesofaldur/야행성너리 df36f6ffd7
runesofaldur/캐찹놈 e2d6b621ae
runesofaldur/퍼렁임 9fb416d6c7

Notes

  • Reported from alsh0083/poe2-mcp (private) — the full measurement record with methodology lives in that repo's issues #143/#144; the gist above is the self-contained repro.
  • We are not carrying a vendored patch for this. A fix upstream is the preferred outcome; if the nil output is intended for these builds, guidance on how to detect/skip them gracefully would also unblock us.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with SkillsTabClass:ReconcileSocketGroupWeaponSets in src/Classes/SkillsTab.lua:1472 and the mainOutput assignment in src/Classes/CalcsTab.lua:511. Load the three .pob files from the linked gist and compare calculations at commits 49e93925d and ce566eac4. Done means affected builds no longer fail with mainOutput is nil, or the engine provides the agreed graceful handling and a regression test covers it.

Written by the indexing model from the issue text.

Assessment

Tech stack
lua
Domain
backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.