Simulacrum

PoE2 crafting statistics engine — operations dashboard
v1 COMPLETE · v2 UNDERWAYGATES 14/14 GREEN · 2026-07-10patch 0.5.4 · Runes of Aldur140 commits · Jul 3 – Jul 10ruleset 0.5.0-runes-of-aldur

Generated from commit 525a948 (2026-07-10) by pipelines/build_dashboard.py — regenerates on every push. STATUS.md stays the single source of truth.

0
Research & data acquisition
COMPLETE
1
Item & mod model, Rust engine
COMPLETE
2a–c
Core orbs · essences/omens/fracturing/sanctify · runes/caps/distribution()
COMPLETE
3a–b
Plan DSL · MC runner · exact solver · sensitivity · prices
COMPLETE
4
MCP server · knowledge pack · NL→plan
COMPLETE
5a
Features into v1 (desecration · catalysts · implicits · property tests)
COMPLETE
5b
Performance
CLOSED
5c
Patch-upgrade playbook
BLOCKED (0.6 not released)
5d
Hardening — engine-review landings (§9d)
COMPLETE

NOW

Live dashboard build DONE 2026-07-10 — generator + GitHub Action + day-notes protocol landed; the site goes live on one owner browser step

(§10 decision 31 — ninth session of 07-10; handover docs/handover/2026-07-10-live-dashboard.md). Shape: pipelines/build_dashboard.py deterministically renders STATUS.md / ruleset / check_gates.sh / OUTBOX / git log / the curated docs/dashboard/day_notes.md into self-contained HTML; .github/workflows/dashboard.yml regenerates on every push to main and force-pushes site/index.html to the orphan dashboard branch; Cloudflare Pages serves that branch with no build step. The dashboard is now generated, never hand-edited — the old artifact hand-edit protocol is replaced (docs/dashboard/README.md), and the legacy artifact refreshes from the same generator (--fragment) until the owner confirms the Cloudflare site. Engine untouched.

Next session: profit-craft build-out (BACKLOG 8) — BACKLOG 6 (5c drill) stays blocked on the 0.6 release, so the owner-queued-last item is now the front of the queue. First piece needs the one-time owner browser grab of the trade2 static indexes (/api/trade2/data/stats + /data/items); the demand-snapshot script (decision-28 footprint) is buildable without it.

Standing watch item: any mid-league 0.5.x patch triggers the incremental structural refresh per §10 decision 19.2, and the 0.6 release unblocks BACKLOG 6 (5c drill) — either outranks the v2 queue the moment it fires. PL-Discord pipeline context (owner-driven, parallel): §10 decision 24 + handover docs/handover/2026-07-09-pl-discord-research-pipeline.md.

Backlog — ordered queue

Rebuilt 2026-07-10 from §10 decision 25 (the v2 roadmap); the drained v1 queue (engine-review landings, Artificer's Orb, weight re-ingest, blind-review sessions A/B — all DONE 2026-07-09) is preserved in git history and the 07-09 handovers.

  1. Idiomatic-review landings DONE 2026-07-10 (§10 decision 25.1 fully landed: L1 + C2 + L2 all 2026-07-10, see NOW). Deferred remnants (I7 → next report-shape re-bless; I10 remainder + tempfile → opportunistic) never gate anything. Findings: docs/review/idiomatic-rust-review-2026-07-10.md.
  2. Quality-constants re-fit landing DONE 2026-07-10 (§10 decision 26 LANDED, see NOW; handover docs/handover/2026-07-10-quality-refit-landing.md). Every pinned number in the repo is now born against the corrected constants.
  3. Mechanics coverage matrix DONE 2026-07-10 (§10 decision 25.2 LANDED, see NOW; handover docs/handover/2026-07-10-coverage-matrix.md). The gap list + owner-sweep questions now live in COVERAGE_MATRIX.md / VERIFY_QUEUE; modeling any gap row is its own future §10 decision.
  4. Profit-craft feasibility spike DONE 2026-07-10 (§10 decision 25.3 spike complete, see NOW; verdict docs/research/profit-craft-feasibility.md). Graduated same day (§10 decision 29) → BACKLOG 8.
  5. Gap-semantics research pass over the matrix gap rows DONE 2026-07-10 (§10 decision 30, see NOW; canonical detail docs/research/gap-row-semantics.md). All seven families confirmed circulating; matrix rule text re-sourced; owner sweep re-scoped to semantics; graduation candidates ranked (infusers → fluxes → liquids → …), each gated on its VERIFY_QUEUE answers + its own §10 decision.
  6. Patch-upgrade playbook — the §11 Phase-5 gate: simulated 0.5→0.6 drill (re-run pipelines, diff structural data, re-audit action semantics vs patch notes, bump ruleset version, re-run goldens; automate the diffing; re-audit the knowledge pack per §10 decision 18; plus review P6(b): a live NL re-translation drill — fresh session, same NL prompts, authored plans compared against stored intent — so translation re-proves on the same cadence as the pack re-audit). 0.6 not yet released — but per §10 decision 19.2, structural refresh does NOT wait for it: any mid-league 0.5.x patch triggers an incremental structural refresh/diff/re-audit immediately.
  7. Live dashboard DONE 2026-07-10 (§10 decision 31, see NOW; handover docs/handover/2026-07-10-live-dashboard.md). Generator + Action + protocol landed; the one-time owner browser step (Cloudflare Pages connect) is queued in OWNER TASK and never blocks anything.
  8. Profit-craft build-out (§10 decision 29 — GRADUATED 2026-07-10, owner-queued to the back): the four-piece centaur workflow from the revised verdict (docs/research/profit-craft-feasibility.md) — (1) on-demand data/demand/ snapshot script (poe.ninja per-slot mod/base-usage, decision-28 footprint: anonymous tool UA, human-like pacing, snapshot-keyed); (2) trade-URL generator (catalog-mod-id → trade2 stat-id join as a per-patch structural asset + report/MCP surface emitting bracketed trade2 ?q= URLs per success archetype; needs a one-time owner browser grab of /api/trade2/data/stats + /data/items); (3) owner-entered data/values/ comparables snapshot (§10.8 pattern); (4) profit report E[value] − E[cost] over the existing cost ledger. No live trade calls from the engine, ever.

Standing streams — law, not queue

Standing streams (law, not queue items): weight refresh per decision 19.1; PL-Discord research per decision 24 (owner-driven); PL-golden ingestion per decision 25.5; knowledge-pack/trick growth per decisions 18 + 25.4.

Changelog — 140 commits, Jul 3–10

13
22
11
13
0
26
26
29
Jul 1029 commits

v2 roadmap set (decision 25) and its first four axes all landed same-day: idiomatic-Rust review + landings (25.1, C2 discharged), quality-constants re-fit (26 — PL data falsified the PoE1 constants; goldens re-blessed), mechanics coverage matrix + gate (25.2 — 783 entities triaged), profit-craft feasibility verdict (25.3 — twice revised on owner pushback; build-out graduated per decisions 28/29), and the gap-semantics pass (30 — all seven not-modeled families confirmed live, graduation candidates ranked, anvil = base swap). Plus GAP REGISTER (27), flat-provenance directive, dashboard + private-remote push, and the live-dashboard build (generator + Action + Cloudflare Pages).

Jul 926 commits

Landings 5–7 close the 9d hardening track. Blind-review sessions A/B (CoE golden re-armed, weights snapshot, join-health + schema gates). Artificer's Orb socket-add. Weight re-ingest with join fix. 10 data-file JSON Schemas. PL-Discord research pipeline (decision 24). Fresh price snapshot.

Jul 826 commits

Verify-queue ingest (16 assumptions owner-confirmed). Blind-scenario cold run 10/10. Engine review → landings 1–4 (skeleton-key fix, validator parity, actions split, wall-clock gate). Desecrated-exclusive reveals. Generality rule into CLAUDE.md.

Jul 613 commits

Performance sprint: profiling infra, mod arena, per-base weight table, pool-borrow, string interning — then decision 13 closes 9b with accepted shortfall. Doc restructure: one canonical home per fact.

Jul 511 commits

Catalysts into v1 (5cat a–c: jewellery quality, tag multipliers, Omen of Catalysing Exaltation, DSL + cost ledger). Property-based invariant tests. STATUS.md introduced as the single forward pointer; one-command gate runner.

Jul 422 commits

Phases 2a–4 in one day: core orbs, essences/omens/fracturing/sanctification, runes + crafted caps + distribution(), plan DSL + MC runner, exact solver, prices + sensitivity, MCP server + knowledge pack. Phase 3 and 4 gates passed.

Jul 313 commits

Phases 0–1: sources audited, RePoE structural ingest, CoE weight ingest, Rust engine with item model + affix pools. Gates: poe2db cross-check clean (881/881 mods), pools match for all 1,782 v1 bases.

Full commit log (140)
525a9482026-07-10§10 decision 31: live dashboard (BACKLOG 7) — deterministic generator + GitHub Action + Cloudflare Pages
6db4d7b2026-07-10gap-row-semantics: Hinekora's Lock price owner-corrected — a few thousand Div, not 0.68
2f1db652026-07-10dashboard: end-of-session refresh (138 commits, decision 30, NOW = live dashboard build)
2952c2c2026-07-10§10 decision 30: gap-semantics pass over the matrix not-modeled rows (BACKLOG 5)
3c7904a2026-07-10dashboard: end-of-session refresh (135 commits, decision 29, BACKLOG 8, graduation call decided)
006feca2026-07-10§10 decision 29: profit-craft build-out GRADUATED, queued as BACKLOG 8 (owner-directed to back of queue); session close-out
5a23d7d2026-07-10§10.28(a): browser-mimicking UAs rejected (owner-confirmed) — honest anonymous tool label, no personal info
5105c132026-07-10dashboard: sync to decision 28 amendment (131 commits)
4cc70c42026-07-10§10 decision 28 amended (owner, round 3): no personal info in requests — anonymous tool UA (refresh_prices.py precedent) + explicit human-like volume/pacing rule
3cf56b22026-07-10dashboard: sync to decision 28 (130 commits, four-piece graduation shape)
531a39f2026-07-10§10 decision 28 (owner directive): technically-open community endpoints are used at a disciplined footprint — poe.ninja builds demand reads now automatable
d22edd92026-07-10dashboard: sync to revised profit-craft verdict (owner pushback; 128 commits)
8de900a2026-07-10Profit-craft verdict REVISED (owner pushback falsified both blocking claims): poe.ninja HAS per-slot rare-mod aggregation; trade2 valuation needs no API (searches ride the URL)
4b250502026-07-10dashboard: refresh snapshot to profit-craft-spike session (14 gates, 126 commits, NOW = gap-semantics pass)
8a1022a2026-07-10§10 decision 25.3 spike DONE: profit-craft feasibility verdict — centaur workflow feasible, automated pipeline is not
2054e4b2026-07-10§10 decision 27: GAP REGISTER in STATUS.md + promotion-on-unblock in the checklist
ffb88fe2026-07-10Land §10 decision 25.2: top-down mechanics coverage matrix + gate
e6d831c2026-07-10Land §10 decision 26: quality constants re-fit to PL data — Q(ilvl) = clamp(5.5·e^(−ilvl/64) − 0.32, 1, 5)
6c93ce82026-07-10docs: provenance-register directive (owner, 2026-07-10) — flat who/what/when, no discovery narratives; conflict language reserved for tested-source disagreements. Stale alchemy comment updated to owner-verified provenance. Docs/comment only, engine logic untouched.
d0dbf782026-07-10End-of-session: dashboard/remote session handover, STATUS pointers, checklist step 4 now commit-and-push
df49a3e2026-07-10STATUS: live-dashboard queued as BACKLOG 6 (owner request; owner-paced) — generator + Actions + Cloudflare Pages plan, GitHub Pages rejected; repo now pushed private to github.com/keainen/simulacrum
ec8561b2026-07-10docs: project dashboard source + refresh protocol (docs/dashboard)
d3529842026-07-10PL findings carried forward (§10 decision 26 recorded, landing deferred): quality re-fit owner-approved, VERIFY_QUEUE item 2 trigger fired, F1 ROUTED, OUTBOX PL-11 drafted, STATUS/handover updated — docs only, engine untouched
399dc0d2026-07-10PL findings F1/F2 (krakenbul infuser sheet): Q(ilvl) constants falsified (re-fit 5.5/64/0.32 max5), Vaal Infuser overqual corruption = init_overqual x 5% — logged + PL-6 answered, routing pending owner
a5991212026-07-10Idiomatic landing L2 (§10 decision 25.1 complete): I2 Ctx/Sink + I3 shared gates
85772b62026-07-10docs: plain-English post-Phase-5 recap (Jul 9–10 sessions; owner-requested narrative, not canon)
2f770ec2026-07-10Idiomatic-review landing L1 (§10 decision 25.1) + C2 discharge
df96dbb2026-07-10Idiomatic-Rust blind review (§10 decision 25.1): 11 ranked findings, docs-only
0c39d0e2026-07-10v2 roadmap (§10 decision 25): five axes triaged, BACKLOG rebuilt (docs-only)
a1b44632026-07-09Data-file JSON Schemas: 10 new schemas, schema gate to 11 document classes
5555f032026-07-09Reconcile parallel-session collision on decision 24 (5177191 vs 4f7fd5a)
4f7fd5a2026-07-09PL-Discord research pipeline (§10 decision 24): disclosed-only engagement, OUTBOX/FINDINGS triage, corpus search tool, knowledge-layer ladder
51771912026-07-09PL Discord research loop: scaffolding + §10 decision 24 (docs-only)
7ebfa492026-07-09Second-weight-source recon: re-scope per §10 decision 23 (docs-only)
840ef042026-07-09prices: fresh 2026-07-09 snapshot (closes the stale-uncommitted loose end)
6d6f6402026-07-09handover: record post-handover doc commits (a3814dd, b48335b) in session-B addendum
b48335b2026-07-09docs: redirect banner on PROJECT_PLAN + §10 decision 22 (doc geography re-affirmed)
a3814dd2026-07-09docs: carry the weights/structural/ruleset-schema follow-up in §10.2
34219bf2026-07-09Blind-review session B: schema-validation gate (P3) — plan+prices schemas now self-policing
5da73ff2026-07-09handover: record post-handover s4/s9 stale-wording cleanup (127bc77)
127bc772026-07-09docs: mark stale s4 'OPEN' capture note superseded; correct s9 row in phase3 gate doc
0839ee52026-07-09Blind-review session A: re-arm CoE golden (P1), Report.weights_snapshot (P2), join-health gate (P5)
4c2283e2026-07-09Blind-review checklist completion: §10 decision 21 + handover; STATUS pointer updated
f5597532026-07-09Blind review: 6 findings triaged into BACKLOG (docs/review/blind-review-2026-07-09.md)
7dab86c2026-07-09docs: plain-English Phase 5 recap (owner-requested narrative, not canon)
2425eb22026-07-09Weight re-ingest: no CoE drift; fix PREFERRED_STEMS join hijack (s9 in tolerance)
06290e72026-07-09Artificer's Orb socket-add action (§10 decision 20; Still-open 6 resolved)
b7fbc202026-07-09§10 decision 19: split data-refresh cadences — weights are patch-independent
367c7ac2026-07-09Landing 7 (D1+D3): interaction-coverage matrix + gate; CoE golden 7->11 — closes §9d
00ff1052026-07-09Landing 6 (E2): search_mods enumeration mode; backlog-3 batch tool resolved not-built
7ea1f922026-07-09§10 Still-open 2: strike the live-firing item — the blind-scenario cold run was it
c2d19fc2026-07-09De-stale PROJECT_PLAN §9/§11: add 9d hardening track, strike two falsified §9 claims
86a9f372026-07-09Landing 5: close out — STATUS to session 6 (E2), handover, review row 5 LANDED
4de3b402026-07-09Landing 5b (D2): NL golden corpus 12->18 + harness comparison/refusal shapes
deacc562026-07-09Landing 5a (E1): all_mods + at_least plan conditions
3cb3dad2026-07-08Landing 4: close out — STATUS to session 5, handover, review row 4 LANDED
cddf40b2026-07-08Landing 4e: gate artifacts for D5/B3 — allocs re-bless + coverage regen
28735352026-07-08Landing 4d (G1/decision 17): wall-clock smoke gate
0eca0e12026-07-08Landing 4c (C4): optional sensitivity_seed on MCP simulate
63eeb9f2026-07-08Landing 4b (B3): render MCP quality notes from ruleset data
a7723202026-07-08Landing 4a (D5): report per-repeat budget exits in the MC runner
ed0fc842026-07-08Landing 3: close out — STATUS to session 4, handover, review row 3 LANDED
61469ef2026-07-08Landing 3c (B1-structural): shared static-legality predicates
65777862026-07-08Landing 3b (C1): split actions.rs into an actions/ module directory
16e081d2026-07-08Landing 3a (C3): delete dead PoolOptions.caps_override
056b9852026-07-08Decision 18: knowledge-layer policy — option spaces in prose, rankings computed
d413dc12026-07-08Landing 2: B1 parity matrix, B2 eligibility equivalence, C5 bone-ilvl error, A4 declared-item errors
3f2f85a2026-07-08Landing 1: A1 skeleton_key gains quality_tag+mirrored, D4 catalyst cross-checks, A3 u32 quality arithmetic
94a64232026-07-08Decision 17: engine-review triage — landing order approved, A4 errors, F1 deferred, G1 = drop iai-callgrind + 4x wall-clock smoke gate
60e01682026-07-08Engine review (read-only): ranked findings doc — headline A1 CONFIRMED skeleton_key omits quality_tag (exact 0.169 vs MC 0.990)
dc391492026-07-08Decision 16: desecrated-exclusive reveals wired with zero new data
bc097b82026-07-08Round 4: triple-natural-flats path re-targets the reveal to the suffix side - s9 final p=98.16%, zero finish-loop bricks
a15d1db2026-07-08Decision 15: Whittling + Sinistral/Dextral Erasure verified stacking (owner-confirmed in-game); s9 re-runs at p=97.6%
eb4208b2026-07-08Owner Q&A round 2 on the blind run: s1b exact (446), s5 decomposed, s8 1-mod default, s9 62% root-caused to a refused omen stack (F7)
150a1042026-07-08Owner resolves blind-run F1/F1b same day: model confirmed on both; s9 re-run at p=36.3%
04b99462026-07-08Blind-scenario cold run: 10/10 simulated, findings F1-F6 ranked for engine review
98220ee2026-07-08Doc hygiene: annotate decision 11's superseded claims; de-enumerate the CLAUDE.md gate list
f564b6f2026-07-08Generality rule into CLAUDE.md; generality sweep seeded into the engine review
075284f2026-07-08Implicit-granted capacity is item state, not per-base tables (owner correction)
69ba8d72026-07-08Verify-queue ingest (§10 decision 14): quality per-use is an ilvl formula; socket caps land; 16 assumptions owner-confirmed
e9338742026-07-08V1 coverage checklist (generated + gated), assumption sweep -> verify queue, blind scenarios landed
bf06e882026-07-06Test-audit plan: owner blind scenario set, assumption sweep into V1_COVERAGE, review-session seed findings
532ff8e2026-07-06§10 decision 13: close 9b (accepted shortfall); resequence — coverage checklist is NOW, engine review queued
35ddc582026-07-06Phase-5 perf: string interning kills per-build String hashing (1.90x s01, 1.22x s03, byte-identical)
b9351f92026-07-06Doc restructure: one canonical home per fact; §9 sub-tracks; perf objective is §10 law
a10d51f2026-07-06Phase-5 perf: borrow PoolWeight in PoolRef kills per-candidate clone (1.54x s03, 1.29x s01, byte-identical)
b5960692026-07-06Phase-5 perf: per-base weight table kills per-candidate weight hash (1.80x s03, 1.36x s01, byte-identical)
e1f45782026-07-06Phase-5 perf: remove per-build pool sort (1.66x s01, 2.09x s03, byte-identical)
7203b7f2026-07-06Phase-5 perf: two-axis objective function + allocation-regression gate
32d05002026-07-06Phase-5 perf: profiling infra + full-corpus coverage; sort is next lever
9df25ba2026-07-06Phase-5 perf: reprioritise NEXT step to profiling infra + coverage
36f8da62026-07-06Phase-5 perf: Arc<str> weight provenance kills per-candidate clone (1.58x)
f24d61d2026-07-06Phase-5 perf: mod arena kills lookup #1 (per-candidate mod-id hash)
7dbfd832026-07-06Phase-5 perf: hoist constant base resolution out of per-candidate weight lookup
e2e743f2026-07-05Phase-5 perf: eliminate PoolEntry String clones from MC hot path
0fe0d432026-07-05Backlog: mark Artificer's Orb (socket-adding) as needing implementing
8f388622026-07-05Phase-5: property-based invariant tests (STATUS BACKLOG 1)
8f1e7512026-07-05Phase-5: carry implicits in ItemState (§10 item 5, resolved)
0bb5e2c2026-07-05Process: introduce STATUS.md as single "what's next" pointer; slim CLAUDE.md
7fed6022026-07-05Record implicits-in-item-state as deferred design item; owner-confirmed breach cap stacking
c11ef222026-07-055-cat-c: catalyst DSL, per-catalyst cost ledger, MCP/knowledge surfaces
7e85b712026-07-055-cat-b: pool tag-multiplier + Omen of Catalysing Exaltation into v1
6c44c522026-07-055-cat-a: jewellery quality + catalyst currency into v1
797d86f2026-07-05Process guardrails: one-command gate runner, handover template, decision rule
043d7c42026-07-05Catalysts into v1: research + spec + phase plan (no code)
7d924ce2026-07-04Phase 5: desecration into v1 — bone/reveal actions, desecrated mod state
7a1db872026-07-04Desecration into v1: spec + §10 decision 10 (owner directive)
c09b6b82026-07-04Annulment works on Magic items — owner confirmed in-game (0.5.4)
682d0192026-07-04Phase 4 COMPLETE: handover doc, status update
fa44cb52026-07-04Phase 4: knowledge pack + §11 gate — 10 NL prompts round-trip, GATE PASSED
cc00fc92026-07-04Phase 4: §8 MCP server — simulacrum mcp (stdio JSON-RPC, 6 tools)
85c54832026-07-04Phase 3 COMPLETE: §11 gate PASSED — s4 root-caused via owner confirmation
fd559b32026-07-04§11 gate: CoE reference values captured via headless browser — 6/7 resolved
ba880212026-07-04Phase 3b: §11 gate harness — CoE golden scenarios, our numbers, capture protocol
82a57fe2026-07-04Phase 3b: --sensitivity — probability intervals under §4.3 weight uncertainty
c6aebf92026-07-04Phase 3b: price snapshots + refresh-prices (§10.8) — cost lines in reports
5a229162026-07-04Phase 3b: §10.7 exact solver — repeat-until loops as absorbing Markov chains
9874b092026-07-04Phase 3a COMPLETE: handover doc, status update
9085f402026-07-04Phase 3a: plan schema file, DSL docs, pool candidate cache (5.6x MC speedup)
f9ee67d2026-07-04Phase 3a: plan DSL model+validator, Monte Carlo runner, apply confidence badge
f89539a2026-07-04Owner in-game answers: essence removal rule confirmed, sanctify rounding flipped to half-up
4b312fd2026-07-04Crafted-cap semantics confirmed in-game (owner report): provenance high, removal-of-crafted pinned
1aff5f52026-07-04Phase 2c COMPLETE: handover doc, status update
e6ce1832026-07-04Phase 2c: augment runes, crafted-mod cap, distribution() — catalog, engine, tests
9aa232d2026-07-04Phase 2c research: crafted-modifier system, meta-rune client ids, Q3/Q5/Q6 resolved
998cf762026-07-04Phase 2b COMPLETE: handover doc, status update
941e2e42026-07-04Phase 2b: essences, omens as wrappers, Fracturing Orb, Sanctification
7ec898b2026-07-03Phase 2b: essence structural table — CoE essences table joined to RePoE mod ids
35acab42026-07-03Phase 2a: core-orb actions — mechanics catalog, ruleset action catalog, pure transitions + fixture tests
0ad9a8a2026-07-03Phase 1 COMPLETE: handover doc, status update, validation-plan layer-1 extension
632b7302026-07-03Phase 1 gate PASSED: engine pools match poe2db for all 1782 v1 bases
a224d982026-07-03Phase 1: Rust engine — item model, affix pool, ruleset skeleton, weight index
335a3b52026-07-03Phase 0 COMPLETE: poe2db weightings confirmed same estimate set as CoE; handover + docs
639e8462026-07-03Ingest Craft of Exile weights: fetch pipeline + §4.3 transform joined to RePoE
88dd3352026-07-03Phase 0: gate PASSED — poe2db cross-check clean (881/881 mods, 5 bases); handover + status
1a806e72026-07-03Phase 0: SOURCES.md — weight-source independence verdicts and CoE ingestion details
60b41ce2026-07-03Phase 0: research — essences/omens/fracturing, runes/desecration/corruption, weight-source audit, value-roll study
aedfb0a2026-07-03Phase 0: core-orb semantics research (0.5.0/0.5.4), mechanics catalog format
c60b8882026-07-03Phase 0: structural data (RePoE poe2 0.5.4), fetch pipeline, affix-pool cross-check, SOURCES, validation plan
290ebb62026-07-03Initial commit: project plan, CLAUDE.md scaffold, gitignore

Owner tasks — parallel, no code

Triage DONE 2026-07-08 (§10 decision 17). Remaining owner items:

NEW 2026-07-10: Cloudflare Pages one-time setup (~5 min, browser) — makes the live dashboard public-to-you: Cloudflare dashboard → Workers & Pages → Create → Pages → *Connect to Git* → authorize the GitHub app for keainen/simulacrum; production branch = dashboard, build command *none*, output dir /; optionally gate the *.pages.dev host with Cloudflare Access (recommended — the page aggregates the private repo). Steps: docs/dashboard/README.md. The Action already keeps the dashboard branch fresh, so this works whenever done; tell Claude once it's live so the legacy artifact stops being refreshed.

PL spreadsheets (§10 decisions 23+24; owner JOINED 2026-07-09): work docs/research/pl-discord/OUTBOX.md PL-1 — pins/resources recon for the canonical weight spreadsheet(s) + license, then the drafted method question to Krakenbul (per-mod sample sizes → real per-record error bars, data/weights/coe/sensitivity.json open question). Also fill the CORPUS_MANIFEST channel-recon table while there. Recon: docs/research/weight-sources.md §5.

Blind-review P4: close the value-roll mandated-vs-assumed contradiction — NEW cheapest first step: post OUTBOX PL-2 (PL may already have the histogram); else the in-game sample (one wide-range mod, ~100–200 Divines; engine-side KS-test) or a §10 decision accepting the uniform directive as final. Divine/Sanctify EVs rest on it. Details: docs/review/blind-review-2026-07-09.md P4.

NEW 2026-07-10: OUTBOX PL-11 (to krakenbul, contribute-first) — his +1/+2 splits confirm our fractional-carry model; tell him, and ask for catalyst per-use data (the one gap his sample leaves). Natural to post alongside crediting his sheet for the F1 re-fit. PL-6 is ANSWERED by that same sheet — don't post it.

Profit-craft graduation call DECIDED 2026-07-10 (§10 decision 29): graduated, queued as BACKLOG 8. One owner step waits inside that item when it starts: a one-time browser grab of the trade2 static indexes (/api/trade2/data/stats + /data/items).

Coverage-matrix owner sweep — RE-SCOPED 2026-07-10 (§10 decision 30): the obtainability questions are answered (all seven gap families show live poe2db economy data); what remains is per-family semantics, cheapest and highest-value first: (1) Vaal Infusers — does a corrupting use still apply quality? does overquality keep the catalyst type? (unblocks graduation candidate 1); (2) elemental flux roll handling (preserve vs reroll; one ≈20 Ex flux answers it); (3) mushrune-liquid removal rule on jewels; plus refined-catalyst per-use amount, anvil swap preservation, talismans, benches. Full list: VERIFY_QUEUE 2026-07-10 section (re-scoped) + docs/research/gap-row-semantics.md. The inherited-PoE1 stash-tab glance stands unchanged.

LOW priority, opportunistic: the remaining OUTBOX drafts (PL-4, PL-5, PL-7…PL-10 cover the VERIFY_QUEUE open questions: Vaal +1-socket rate; local_has_X_sockets absolute reading; crystallisation refusal) — post when a natural thread appears, or in a centaur session (protocol: docs/research/pl-discord/README.md).

PL-Discord outbox — owner posting queue

DRAFTPL-1 · Weight spreadsheets, method, per-mod sample sizes (THE owner task)

DRAFT

DRAFTPL-2 · Within-tier value-roll distribution (blind-review P4)

DRAFT

DRAFTPL-3 · Catalysing-omen bias curve (contribute-first opener)

DRAFT

DRAFTPL-4 · Sanctification multiplier envelope

DRAFT

DRAFTPL-5 · Vaal Orb +1-socket outcome

DRAFT

ANSWEREDPL-6 · Quality per-use amounts at known ilvls

ANSWERED 2026-07-10 (unsolicited, before posting) — krakenbul's

DRAFTPL-7 · Kalguuran Forgehammer socket count reading

DRAFT

DRAFTPL-8 · Crafted mods as fracture-lock / desecration-replace targets

DRAFT — low priority

DRAFTPL-9 · Crystallisation illegal-force refusal

DRAFT — low priority (§10.2 carried item; needs an in-game test

DRAFTPL-11 · To krakenbul: fractional-carry confirmation + catalyst-data ask

DRAFT (contribute-first follow-up to his infuser sheet —

DRAFTPL-10 · Essence "one per item" claim (falsify in passing)

DRAFT — dormant; don't post standalone, just keep eyes open

docs/research/pl-discord/OUTBOX.md — drafts are substance, rephrase in your own words (decision 24).

Standing gates

build (release)cargo testcargo clippycheck-mods-by-baseschema validationcoe goldenjoin healthcatalyst goldennl-roundtripmechanics coveragecoverage matrixinteraction matrixallocs regressionwall-clock smoke

All green at the last full run (2026-07-10). pipelines/check_gates.sh — one command, canonical list. Red gates are root-caused, never loosened.

Gap register — blocked & unscheduled

Blocked on owner in-game data

  • Value-roll distribution (uniform mandated-vs-assumed; Divine + Sanctify EVs rest on it) — home docs/review/blind-review-2026-07-09.md P4; unblock: OUTBOX PL-2 answer, or the ~100–200-Divine sample, or a §10 decision accepting the directive as final.
  • m(quality) catalysing-omen curve shape (20%/40% pinned) — home docs/research/catalysing-omen.md; unblock: ≥1 more quality level of owner omen data.
  • VERIFY_QUEUE opens: Vaal +1-socket rate; local_has_X_sockets absolute reading; crystallisation illegal-force refusal; crafted mods as fracture-lock/desecration-replace targets; the 2026-07-10 coverage-matrix sweep (re-scoped to semantics by §10 decision 30).
  • Gap-family graduations (§10 decision 30 readiness order: Vaal Infusers → elemental fluxes → mushrune liquids → refined jewel catalysts) — home docs/research/gap-row-semantics.md; unblock: each family's VERIFY_QUEUE semantics answers, then its own §10 decision. Infusers need only two one-look tests (formulas already PL-tested).

Blocked on PL/community data

  • Per-record weight error bars (data/weights/coe/sensitivity.json open question) — unblock: PL-1 (spreadsheets + per-mod sample sizes).
  • Catalyst per-use validation at a second ilvl (decision 26's known caveat: krakenbul's sample had no catalysts) — unblock: PL-11 answer.

Blocked on an external release

  • 5c patch-upgrade drill + P6(b) live NL re-translation (BACKLOG 6) — unblock: 0.6 release; a mid-league 0.5.x patch fires the incremental structural refresh immediately (decision 19.2).

Blocked on an explicit revisit trigger (deliberate)

  • Strategy-search optimizer (§10 Still-open 1) — trigger: option spaces routinely exceed ~5 candidates (decisions 21/25.4).
  • Desecration corner semantics (Whittling vs unrevealed; Sanctify/ Divine with an unrevealed mod) — trigger: a real plan needs them (docs/mechanics/desecration.md).
  • Omen pairs beyond the documented stacking list — trigger: a plan wants a specific pair; one in-game attempt is the test (docs/mechanics/omens.md).

Unscheduled (no blocker — bundle or promote)

  • Datamined-semantics pass over the matrix gap rowspromoted to BACKLOG 5 and DONE 2026-07-10 (§10 decision 30).
  • 88 CoE-unlisted bases (weights-coverage question) — home §10.2; bundle with the next weight refresh (decision 19.1).
  • Verisium alloy prices — poe.ninja's type=Verisium exchange overview prices the 24 alloys we model, but refresh_prices.py doesn't query that type (alloys sit in unpriced unnecessarily); Catalysts/Omens types exist but return 0 lines this league — home docs/research/profit-craft-feasibility.md side-findings; bundle with the next price refresh (add "Verisium" to NINJA_TYPES, re-probe the empty types).
  • Idiom remnants I7 (bundle with the next report-shape re-bless), I10 remainder + tempfile (bundle with any engine session) — home docs/review/idiomatic-rust-review-2026-07-10.md.
  • pathofcrafting Wayback cross-check (deliberately low, decision 23 — republication-noise bound only) — home docs/research/weight-sources.md §5.
  • Data-provenance caveat 5-cat-b (annotation-only, not an engine issue) — home docs/research/catalyst omen data/PROVENANCE.md.

Pointers only — content stays in each item's canonical home (§10 decision 27). Items whose blocker clears get promoted into BACKLOG.

Doc map

  • STATUS.mdSingle forward pointer — NOW + BACKLOG; read first
  • PROJECT_PLAN.md §9–11Spec, scope, decided law (§10), phase gates
  • docs/handover/2026-07-10-live-dashboard.mdLatest handover — deep context for the next session (path auto-substituted)
  • docs/mechanics/COVERAGE_MATRIX.mdTop-down triage of all action-shaped client entities (generated + gated)
  • docs/research/gap-row-semantics.mdGap-family semantics + graduation readiness order (§10 decision 30)
  • docs/research/profit-craft-feasibility.mdProfit-craft spike verdict — graduated, BACKLOG 8 (decision 29)
  • docs/research/pl-discord/OUTBOX.mdDrafted community questions + FINDINGS.md triaged replies
  • docs/mechanics/VERIFY_QUEUE.mdAssumption ledger — owner-confirmed vs open
  • docs/review/Engine (07-08), blind (07-09), idiomatic-Rust (07-10) review docs + row status
  • docs/perf/PERF.mdPerf measurements, levers, objective function — canonical home